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