From 3848083d5279f4ef89abd758c9a065b2356a938c Mon Sep 17 00:00:00 2001 From: ospab Date: Fri, 15 May 2026 00:38:03 +0300 Subject: [PATCH] DevOps: Localize quick-start install.sh shell script to English for global platform parity. --- scripts/install.sh | 107 ++++++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 55 deletions(-) diff --git a/scripts/install.sh b/scripts/install.sh index fcbe5bd..4120908 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,25 +1,25 @@ #!/bin/bash set -e -# Официальный репозиторий +# Official repository settings GITHUB_REPO="ospab/ostp" INSTALL_DIR="/opt/ostp" echo "========================================================" -echo " Установка Ospab Stealth Transport Protocol (OSTP)" +echo " Installing Ospab Stealth Transport Protocol (OSTP)" echo "========================================================" -# Проверка прав суперпользователя +# Verify superuser privileges if [ "$EUID" -ne 0 ]; then - echo "[Ошибка] Данный скрипт должен быть запущен с правами root (sudo)." + echo "[Error] This script must be run with root privileges (sudo)." exit 1 fi -# Создание директории +# Create target directory mkdir -p "$INSTALL_DIR" # --------------------------------------------------------- -# Определение архитектуры системы +# System Architecture Detection # --------------------------------------------------------- ARCH=$(uname -m) case "$ARCH" in @@ -28,41 +28,41 @@ case "$ARCH" in i386|i686) ARCH="386" ;; armv7l) ARCH="armv7" ;; *) - echo "[Предупреждение] Неизвестная архитектура $ARCH, пробуем amd64 по умолчанию." + echo "[Warning] Unknown architecture $ARCH, falling back to amd64." ARCH="amd64" ;; esac -# Скачивание исполняемого файла -echo "Получение актуальной стабильной версии из репозитория..." +# Fetch execution binary +echo "Fetching the latest stable version from the repository..." LATEST_RELEASE=$(curl -s "https://api.github.com/repos/${GITHUB_REPO}/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') if [ -z "$LATEST_RELEASE" ] || [[ "$LATEST_RELEASE" == *"null"* ]]; then - echo "[Уведомление] Не удалось автоматически получить тег репозитория ${GITHUB_REPO}." - echo "Введите прямую ссылку (URL) на скомпилированный архив .tar.gz" - echo "или нажмите Enter, если файл уже находится в $INSTALL_DIR/ostp." + echo "[Notice] Failed to automatically retrieve release tag for ${GITHUB_REPO}." + echo "Enter a direct URL to the compiled .tar.gz archive" + echo "or press Enter if the binary is already in $INSTALL_DIR/ostp." read -p "URL: " DIRECT_URL if [ -n "$DIRECT_URL" ]; then TEMP_TAR="/tmp/ostp_temp.tar.gz" curl -L "$DIRECT_URL" -o "$TEMP_TAR" tar -xzf "$TEMP_TAR" -C "$INSTALL_DIR" ostp - rm "$TEMP_TAR" + rm -f "$TEMP_TAR" fi else ARCHIVE_NAME="ostp-linux-${ARCH}.tar.gz" DOWNLOAD_URL="https://github.com/${GITHUB_REPO}/releases/download/${LATEST_RELEASE}/${ARCHIVE_NAME}" - echo "Скачивание архива для архитектуры linux-$ARCH: $DOWNLOAD_URL ..." + echo "Downloading archive for linux-$ARCH: $DOWNLOAD_URL ..." TEMP_TAR="/tmp/ostp_temp.tar.gz" - # Скачиваем архив с обработкой ошибок + # Fetch archive with basic error handling HTTP_CODE=$(curl -sL -w "%{http_code}" "$DOWNLOAD_URL" -o "$TEMP_TAR") if [ "$HTTP_CODE" -eq 200 ]; then tar -xzf "$TEMP_TAR" -C "$INSTALL_DIR" ostp rm -f "$TEMP_TAR" else - echo "[Ошибка] Не удалось скачать файл (HTTP код $HTTP_CODE)." - echo "Убедитесь, что версия $LATEST_RELEASE уже опубликована и собрана на GitHub." + echo "[Error] Failed to download the file (HTTP status $HTTP_CODE)." + echo "Verify that the version $LATEST_RELEASE is published and fully compiled on GitHub." rm -f "$TEMP_TAR" exit 1 fi @@ -70,97 +70,94 @@ fi if [ -f "$INSTALL_DIR/ostp" ]; then chmod +x "$INSTALL_DIR/ostp" - echo "Исполняемый файл настроен в $INSTALL_DIR/ostp." + echo "Executable configured successfully at $INSTALL_DIR/ostp." else - echo "[Ошибка] Бинарный файл не обнаружен в $INSTALL_DIR/ostp. Прекращение настройки." + echo "[Error] Binary file not found in $INSTALL_DIR/ostp. Aborting setup." exit 1 fi # --------------------------------------------------------- -# Автоматическое обновление (если конфигурация уже существует) +# Automatic Update Detection (Preserves Settings) # --------------------------------------------------------- if [ -f "$INSTALL_DIR/config.json" ]; then echo "--------------------------------------------------------" - echo "[Обновление] Обнаружена существующая конфигурация в $INSTALL_DIR/config.json." - echo "[Обновление] Бинарный файл успешно обновлен до версии ${LATEST_RELEASE:-актуальной}." + echo "[Update] Existing configuration detected at $INSTALL_DIR/config.json." + echo "[Update] Binary successfully updated to version ${LATEST_RELEASE:-latest}." if systemctl is-active --quiet ostp.service 2>/dev/null; then - echo "[Обновление] Перезапуск службы ostp для применения новой версии..." + echo "[Update] Restarting service ostp to apply the new version..." systemctl restart ostp.service - echo "[Обновление] Служба ostp успешно перезапущена и работает." + echo "[Update] Service ostp restarted successfully." else - echo "[Обновление] Служба ostp установлена, но не запущена." - echo "Запустите службу вручную для применения изменений: systemctl start ostp" + echo "[Update] Service ostp is registered but not currently running." + echo "Start the service manually to apply changes: systemctl start ostp" fi echo "--------------------------------------------------------" - echo "Обновление успешно завершено!" + echo "Update completed successfully!" exit 0 fi -# Интерактивный выбор режима +# Interactive Setup Menu echo "--------------------------------------------------------" -echo "Выберите режим конфигурации:" -echo "1) Настройка Сервера" -echo "2) Настройка Клиента" +echo "Select configuration mode:" +echo "1) Configure Server" +echo "2) Configure Client" echo "--------------------------------------------------------" -read -p "Введите номер [1-2]: " NODE_MODE +read -p "Enter choice [1-2]: " NODE_MODE cd "$INSTALL_DIR" if [ "$NODE_MODE" == "1" ]; then - echo "Инициализация конфигурации сервера..." - # Используем внутренний инструмент --init для создания шаблона + echo "Initializing server configuration..." ./ostp --init server --config config.json - read -p "Укажите IP и порт для приема входящего трафика [по умолчанию 0.0.0.0:50000]: " LISTEN_ADDR + read -p "Enter IP and port to accept incoming traffic [default: 0.0.0.0:50000]: " LISTEN_ADDR if [ -n "$LISTEN_ADDR" ]; then sed -i "s/\"listen\": \"0.0.0.0:50000\"/\"listen\": \"$LISTEN_ADDR\"/g" config.json fi - read -p "Сколько ключей авторизации сгенерировать? [по умолчанию 1]: " KEYS_COUNT + read -p "How many access keys to generate? [default: 1]: " KEYS_COUNT KEYS_COUNT=${KEYS_COUNT:-1} if [ "$KEYS_COUNT" -gt 1 ]; then - echo "Генерация дополнительных ключей безопасности..." + echo "Generating additional security keys..." NEW_KEYS=$(./ostp -g -c "$KEYS_COUNT" | sed 's/^/ "/;s/$/",/' | sed '$ s/,$//') - # Заменяем весь блок access_keys в JSON sed -i '/"access_keys": \[/,/\]/c\ "access_keys": [\n'"$NEW_KEYS"'\n ],' config.json - echo "Сгенерировано и записано $KEYS_COUNT ключей." + echo "Successfully generated and wrote $KEYS_COUNT keys." fi - echo "Настройка сервера завершена. Файл: $INSTALL_DIR/config.json" + echo "Server configuration completed. Config file: $INSTALL_DIR/config.json" elif [ "$NODE_MODE" == "2" ]; then - echo "Инициализация конфигурации клиента..." + echo "Initializing client configuration..." ./ostp --init client --config config.json - read -p "Введите адрес внешнего сервера (IP:PORT): " REMOTE_SERVER + read -p "Enter remote server address (IP:PORT): " REMOTE_SERVER if [ -n "$REMOTE_SERVER" ]; then sed -i "s/\"server\": \"127.0.0.1:50000\"/\"server\": \"$REMOTE_SERVER\"/g" config.json else - echo "[Предупреждение] Адрес не указан, оставлено значение по умолчанию (127.0.0.1:50000)." + echo "[Warning] No remote address provided, keeping default (127.0.0.1:50000)." fi - read -p "Введите ключ авторизации (оставьте пустым для генерации нового через ostp -g): " ACCESS_KEY + read -p "Enter access key (leave blank to generate automatically via ostp -g): " ACCESS_KEY if [ -z "$ACCESS_KEY" ]; then ACCESS_KEY=$(./ostp -g) - echo "Автоматически сгенерирован ключ клиента: $ACCESS_KEY" + echo "Automatically generated client key: $ACCESS_KEY" fi - # Заменяем значение ключа в JSON sed -i "s/\"access_key\": \"[^\"]*\"/\"access_key\": \"$ACCESS_KEY\"/g" config.json - read -p "Укажите локальный SOCKS5 адрес прослушивания [по умолчанию 127.0.0.1:1088]: " SOCKS_BIND + read -p "Enter local SOCKS5 listening address [default: 127.0.0.1:1088]: " SOCKS_BIND if [ -n "$SOCKS_BIND" ]; then sed -i "s/\"socks5_bind\": \"127.0.0.1:1088\"/\"socks5_bind\": \"$SOCKS_BIND\"/g" config.json fi - echo "Настройка клиента завершена. Файл: $INSTALL_DIR/config.json" + echo "Client configuration completed. Config file: $INSTALL_DIR/config.json" else - echo "[Ошибка] Указан неверный вариант выбора." + echo "[Error] Invalid selection choice." exit 1 fi -# Регистрация Systemd службы -echo "Настройка системного сервиса..." +# Register Systemd daemon +echo "Registering system service..." cat < /etc/systemd/system/ostp.service [Unit] Description=Ospab Stealth Transport Protocol Service @@ -183,8 +180,8 @@ systemctl daemon-reload systemctl enable ostp.service >/dev/null 2>&1 echo "--------------------------------------------------------" -echo "Установка успешно завершена." -echo "Конфигурация сохранена в $INSTALL_DIR/config.json" -echo "Сервис ostp зарегистрирован, но не запущен." -echo "Запустите сервис вручную: systemctl start ostp" +echo "Installation completed successfully." +echo "Configuration file saved at $INSTALL_DIR/config.json" +echo "Service 'ostp' has been registered but not started." +echo "Start the service manually using: systemctl start ostp" echo "--------------------------------------------------------"