OBF_BINARY_NAME="wg-obfuscator" OBF_CONF_NAME="wg-obfuscator.conf" OBF_INIT_NAME="S49wg-obfuscator" OBF_SERVICE_NAME="phobos-obfuscator" OBF_WG_IFACE="phobos" resolve_install_names() { local binary_dir local binary_path if [ "$ROUTER_PLATFORM" = "openwrt" ]; then binary_dir="/usr/bin" elif [ "$ROUTER_PLATFORM" = "linux" ]; then binary_dir="/usr/local/bin" else binary_dir="/opt/bin" fi binary_path="${binary_dir}/wg-obfuscator" if [ ! -f "$binary_path" ] && [ ! -f "$PHOBOS_DIR/wg-obfuscator.conf" ]; then return fi if [ -f "$binary_path" ] && [ -f "$PHOBOS_DIR/${CLIENT_NAME}.conf" ]; then return fi local idx=1 while [ -f "${binary_dir}/wg-obfuscator${idx}" ]; do idx=$((idx + 1)) done local init_num=50 while [ -f "/opt/etc/init.d/S${init_num}wg-obfuscator" ]; do init_num=$((init_num + 1)) done OBF_BINARY_NAME="wg-obfuscator${idx}" OBF_CONF_NAME="wg-obfuscator${idx}.conf" OBF_INIT_NAME="S${init_num}wg-obfuscator" OBF_SERVICE_NAME="phobos-obfuscator${idx}" OBF_WG_IFACE="phobos${idx}" } install_obfuscator() { local arch=$1 log "Установка wg-obfuscator для архитектуры $arch..." if [ "$OBF_BINARY_NAME" = "wg-obfuscator" ]; then if [ -f /opt/etc/init.d/S49wg-obfuscator ]; then log "Остановка текущего процесса wg-obfuscator..." /opt/etc/init.d/S49wg-obfuscator stop >/dev/null 2>&1 || true fi if [ -f /etc/init.d/phobos-obfuscator ]; then log "Остановка текущего процесса wg-obfuscator..." /etc/init.d/phobos-obfuscator stop >/dev/null 2>&1 || true fi fi local binary_name="wg-obfuscator-$arch" if [ ! -f "bin/$binary_name" ]; then log "Ошибка: бинарник $binary_name не найден в архиве" log "Доступные бинарники:" ls -1 bin/ exit 1 fi local target_path="/opt/bin/${OBF_BINARY_NAME}" if [ "$ROUTER_PLATFORM" = "openwrt" ]; then target_path="/usr/bin/${OBF_BINARY_NAME}" fi if [ -f "$target_path" ]; then rm "$target_path" fi if [ "$ROUTER_PLATFORM" = "openwrt" ]; then mkdir -p /usr/bin else mkdir -p /opt/bin fi cp "bin/$binary_name" "$target_path" chmod +x "$target_path" log "Бинарник wg-obfuscator установлен в $target_path" } create_init_script() { log "Создание init-скрипта для obfuscator..." cat > /opt/etc/init.d/${OBF_INIT_NAME} </dev/null 2>&1 && pidof ${OBF_BINARY_NAME} >/dev/null 2>&1; then process_found=1 elif command -v pgrep >/dev/null 2>&1 && pgrep -f wg-obfuscator >/dev/null 2>&1; then process_found=1 elif ps w 2>/dev/null | grep -v grep | grep -q "wg-obfuscator\|/opt/bin/wg-obfuscator\|/usr/bin/wg-obfuscator"; then process_found=1 elif ps 2>/dev/null | grep -v grep | grep -q "wg-obfuscator"; then process_found=1 fi if [ $process_found -eq 0 ]; then if [ "$ROUTER_PLATFORM" = "keenetic" ] && [ -f /opt/etc/init.d/${OBF_INIT_NAME} ]; then local status_output=$(/opt/etc/init.d/${OBF_INIT_NAME} status 2>&1 || echo "") if echo "$status_output" | grep -q "alive"; then process_found=1 fi elif [ "$ROUTER_PLATFORM" = "openwrt" ] && [ -f /etc/init.d/${OBF_SERVICE_NAME} ]; then if /etc/init.d/${OBF_SERVICE_NAME} status >/dev/null 2>&1; then process_found=1 fi fi fi if [ $process_found -eq 1 ]; then log "✓ wg-obfuscator успешно запущен" else log "✗ wg-obfuscator не запущен. Проверьте логи." fi } create_procd_init_script() { log "Создание procd init-скрипта для obfuscator..." cat > /etc/init.d/${OBF_SERVICE_NAME} < /etc/systemd/system/${OBF_SERVICE_NAME}.service <