diff --git a/script/cnc.bat b/script/cnc.bat new file mode 100644 index 0000000..565117c --- /dev/null +++ b/script/cnc.bat @@ -0,0 +1,105 @@ +@echo off +setlocal enabledelayedexpansion + +chcp 65001 + +echo ЕСЛИ У ВАС ЕСТЬ ПРОБЛЕМЫ - Я В КУРСЕ, ПРОЕКТ В БЕТЕ, ПО ПРОБЛЕМАМ В ЧАТ t.me/openlibrecommunity ИЛИ ВООБЩЕ НЕКУДА, ЖДИТЕ РЕЛИЗА +echo. + +set CONTAINER_NAME=olcrtc-client +set IMAGE_NAME=docker.io/library/golang:1.26-alpine +set REPO_URL=https://github.com/openlibrecommunity/olcrtc.git +set WORK_DIR=%TEMP%\olcrtc-client +set SOCKS_PORT=8808 + +echo === OlcRTC Client Deployment Script === +echo. + +where podman >nul 2>&1 +if %errorlevel% neq 0 ( + echo [!] podman not found. Install podman manually: + echo https://podman.io/getting-started/installation + pause + exit /b 1 +) + +echo [+] Using Podman +echo. + +set /p ROOM_ID=Enter Telemost Room ID: +if "%ROOM_ID%"=="" ( + echo [X] Room ID cannot be empty + pause + exit /b 1 +) + +echo. +set /p KEY=Enter Encryption Key (hex): +if "%KEY%"=="" ( + echo [X] Encryption key cannot be empty + pause + exit /b 1 +) + +echo. +set /p PORT_INPUT=SOCKS5 port [default: 8808]: +if not "%PORT_INPUT%"=="" set SOCKS_PORT=%PORT_INPUT% + +echo. +echo [*] Stopping old instance... +podman stop %CONTAINER_NAME% >nul 2>&1 +podman rm %CONTAINER_NAME% >nul 2>&1 + +echo [*] Cleaning workspace... +rmdir /s /q "%WORK_DIR%" >nul 2>&1 +mkdir "%WORK_DIR%" + +echo [*] Cloning repository... +git clone --depth 1 %REPO_URL% "%WORK_DIR%" + +echo [*] Pulling Go image... +podman pull %IMAGE_NAME% + +echo [*] Building OlcRTC... +podman run --rm ^ + -v "%WORK_DIR%":/app ^ + -w /app ^ + %IMAGE_NAME% ^ + sh -c "go mod tidy && go build -o olcrtc cmd/olcrtc/main.go" + +if not exist "%WORK_DIR%\olcrtc" ( + echo [X] Build failed + pause + exit /b 1 +) + +echo [*] Starting OlcRTC client... +podman run -d ^ + --name %CONTAINER_NAME% ^ + --restart unless-stopped ^ + -p 127.0.0.1:%SOCKS_PORT%:%SOCKS_PORT% ^ + -v "%WORK_DIR%:/app:Z" ^ + -w /app ^ + %IMAGE_NAME% ^ + ./olcrtc -mode cnc -id "%ROOM_ID%" -key "%KEY%" -socks-port %SOCKS_PORT% -socks-host 0.0.0.0 + +timeout /NOBREAK /t 2 >nul + +echo. +echo [+] Client started successfully! +echo. +echo Container name: %CONTAINER_NAME% +echo Room ID: %ROOM_ID% +echo SOCKS5 proxy: 127.0.0.1:%SOCKS_PORT% +echo. +echo View logs: +echo podman logs -f %CONTAINER_NAME% +echo. +echo Stop client: +echo podman stop %CONTAINER_NAME% +echo. +echo Test proxy: +echo curl -x socks5h://127.0.0.1:%SOCKS_PORT% -fsSL https://ifconfig.me +echo. + +pause \ No newline at end of file diff --git a/script/srv.bat b/script/srv.bat new file mode 100644 index 0000000..f61205c --- /dev/null +++ b/script/srv.bat @@ -0,0 +1,137 @@ +@echo off +setlocal enabledelayedexpansion + +chcp 65001 + +echo ЕСЛИ У ВАС ЕСТЬ ПРОБЛЕМЫ - Я В КУРСЕ, ПРОЕКТ В БЕТЕ, ПО ПРОБЛЕМАМ В ЧАТ t.me/openlibrecommunity ИЛИ ВООБЩЕ НЕКУДА, ЖДИТЕ РЕЛИЗА +echo. + +set CONTAINER_NAME=olcrtc-server +set IMAGE_NAME=docker.io/library/golang:1.26-alpine +set REPO_URL=https://github.com/openlibrecommunity/olcrtc.git +set WORK_DIR=%TEMP%\olcrtc-deploy + +echo === OlcRTC Server Deployment Script === +echo. + +where podman >nul 2>&1 +if %errorlevel% neq 0 ( + echo [!] podman not found. Install podman manually: + echo https://podman.io/getting-started/installation + pause + exit /b 1 +) + +echo [+] Using Podman +echo. + +set /p ROOM_ID=Enter Telemost Room ID: +if "%ROOM_ID%"=="" ( + echo [X] Room ID cannot be empty + pause + exit /b 1 +) + +echo. +set /p USE_PROXY=Use SOCKS5 proxy for egress? (y/N): + +set EXTRA_ARGS= + +if /I "%USE_PROXY%"=="Y" ( + set /p PROXY_ADDR_INPUT=Enter SOCKS5 proxy address [default: 127.0.0.1]: + if "!PROXY_ADDR_INPUT!"=="" ( + set SOCKS_PROXY_ADDR=127.0.0.1 + ) else ( + set SOCKS_PROXY_ADDR=!PROXY_ADDR_INPUT! + ) + + set /p PROXY_PORT_INPUT=Enter SOCKS5 proxy port [default: 1080]: + if "!PROXY_PORT_INPUT!"=="" ( + set SOCKS_PROXY_PORT=1080 + ) else ( + set SOCKS_PROXY_PORT=!PROXY_PORT_INPUT! + ) + + echo [*] Will use SOCKS5 proxy: !SOCKS_PROXY_ADDR!:!SOCKS_PROXY_PORT! + set EXTRA_ARGS=-socks-proxy !SOCKS_PROXY_ADDR! -socks-proxy-port !SOCKS_PROXY_PORT! +) + +echo. +echo [*] Stopping old instance... +podman stop %CONTAINER_NAME% >nul 2>&1 +podman rm %CONTAINER_NAME% >nul 2>&1 + +echo [*] Cleaning workspace... +rmdir /s /q "%WORK_DIR%" >nul 2>&1 +mkdir "%WORK_DIR%" + +echo [*] Cloning repository... +git clone --depth 1 %REPO_URL% "%WORK_DIR%" + +echo [*] Pulling Go image... +podman pull %IMAGE_NAME% + +echo [*] Building OlcRTC... +podman run --rm ^ + -v "%WORK_DIR%:/app:Z" ^ + -w /app ^ + %IMAGE_NAME% ^ + sh -c "go mod tidy && go build -o olcrtc cmd/olcrtc/main.go" + +if not exist "%WORK_DIR%\olcrtc" ( + echo [X] Build failed + pause + exit /b 1 +) + +set KEY_FILE=%USERPROFILE%\.olcrtc_key + +if exist "%KEY_FILE%" ( + echo [*] Loading existing encryption key... + set /p KEY=<"%KEY_FILE%" +) else ( + echo [*] Generating new encryption key... + for /f %%i in ('powershell -Command "$bytes = New-Object byte[] 32; [System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes); [System.BitConverter]::ToString($bytes) -replace '-'"') do set KEY=%%i + echo !KEY!> "%KEY_FILE%" + echo. + echo ========================================== + echo NEW ENCRYPTION KEY ^(saved to %KEY_FILE%^): + echo !KEY! + echo ========================================== + echo. +) + +echo [*] Starting OlcRTC server... +podman run -d ^ + --name %CONTAINER_NAME% ^ + --restart unless-stopped ^ + -v "%WORK_DIR%:/app:Z" ^ + -w /app ^ + %IMAGE_NAME% ^ + ./olcrtc -mode srv -id "%ROOM_ID%" -key "%KEY%" %EXTRA_ARGS% + +timeout /NOBREAK /t 2 >nul + +echo. +echo [+] Server started successfully! +echo. +echo Container name: %CONTAINER_NAME% +echo Room ID: %ROOM_ID% +echo Encryption key: %KEY% + +if defined EXTRA_ARGS ( + echo SOCKS5 proxy: %SOCKS_PROXY_ADDR%:%SOCKS_PROXY_PORT% +) + +echo. +echo View logs: +echo podman logs -f %CONTAINER_NAME% +echo. +echo Stop server: +echo podman stop %CONTAINER_NAME% +echo. +echo Client command: +echo ./olcrtc -mode cnc -id "%ROOM_ID%" -key "%KEY%" -socks-port 1080 +echo. + +pause \ No newline at end of file