diff --git a/build_x64.bat b/build_x64.bat index 0c78c41..4552334 100644 --- a/build_x64.bat +++ b/build_x64.bat @@ -38,11 +38,41 @@ if "!FLAG_UPVERSION!"=="1" ( echo Version: !CURRENT_VERSION! ) -REM При -prod добавляем prod в имя архива -set PROD_SUFFIX= -if "!FLAG_PROD!"=="1" set PROD_SUFFIX=_prod +REM Канал обновлений и суффикс имени архива по флагу -prod +if "!FLAG_PROD!"=="1" ( + set CHANNEL=prod + set PROD_SUFFIX=_prod +) else ( + set CHANNEL=test + set PROD_SUFFIX= +) set ZIP_NAME=ARC_x64_!CURRENT_VERSION!!PROD_SUFFIX!.zip +REM Переключаем apiBase по флагу -prod: -prod → apiBaseProd, иначе apiBaseTest. +REM Значения берём из самого config.ini, переписываем строку apiBase= (не трогая +REM apiBaseTest=/apiBaseProd= и закомментированный #apiBase=). +for /f "tokens=2 delims==" %%V in ('findstr /b /i "apiBaseTest=" "%CONFIG_FILE%"') do set API_TEST=%%V +for /f "tokens=2 delims==" %%V in ('findstr /b /i "apiBaseProd=" "%CONFIG_FILE%"') do set API_PROD=%%V +if "!FLAG_PROD!"=="1" ( + set API_TARGET=!API_PROD! +) else ( + set API_TARGET=!API_TEST! +) +powershell -NoProfile -Command "(Get-Content '!CONFIG_FILE!') -replace '^apiBase=.*$', 'apiBase=!API_TARGET!' | Set-Content '!CONFIG_FILE!'" +echo apiBase set to: !API_TARGET! + +REM Переключаем manifestUrl по флагу -prod (канал обновлений). Значения берём из +REM config.ini, переписываем строку manifestUrl= (не трогая manifestUrlTest=/Prod=). +for /f "tokens=2 delims==" %%V in ('findstr /b /i "manifestUrlTest=" "%CONFIG_FILE%"') do set MAN_TEST=%%V +for /f "tokens=2 delims==" %%V in ('findstr /b /i "manifestUrlProd=" "%CONFIG_FILE%"') do set MAN_PROD=%%V +if "!FLAG_PROD!"=="1" ( + set MAN_TARGET=!MAN_PROD! +) else ( + set MAN_TARGET=!MAN_TEST! +) +powershell -NoProfile -Command "(Get-Content '!CONFIG_FILE!') -replace '^manifestUrl=.*$', 'manifestUrl=!MAN_TARGET!' | Set-Content '!CONFIG_FILE!'" +echo manifestUrl set to: !MAN_TARGET! + echo === [1/5] Configuring CMake for x64 Release === if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%" cd /d "%BUILD_DIR%" @@ -77,10 +107,12 @@ if %ERRORLEVEL% neq 0 ( echo === [5/5] Uploading to update server and sending link to Telegram === -REM Целевой сервер обновлений (нужен настроенный SSH-ключ для root@%UPDATE_HOST%). +REM Сервер обновлений: загрузка по HTTP PUT (WebDAV nginx) с Basic-Auth — без SSH. set UPDATE_HOST=142.93.102.40 -set UPDATE_DIR=/var/www/updates -set DOWNLOAD_URL=http://%UPDATE_HOST%/updates/%ZIP_NAME% +set UPDATE_USER=arcdeploy +set UPDATE_PASS=57d5f7098b9347ee36895f865596b9a39f75 +set UPDATE_BASE=http://%UPDATE_HOST%/updates/%CHANNEL% +set DOWNLOAD_URL=%UPDATE_BASE%/%ZIP_NAME% REM SHA256 архива — для проверки целостности на клиенте. for /f "delims=" %%H in ('powershell -NoProfile -Command "(Get-FileHash '%PROJECT_DIR%%ZIP_NAME%' -Algorithm SHA256).Hash.ToLower()"') do set ZIP_SHA256=%%H @@ -88,7 +120,7 @@ echo SHA256: !ZIP_SHA256! REM Сначала заливаем zip, потом манифест — чтобы клиент не увидел version.json REM на ещё не загруженный архив. -scp "%PROJECT_DIR%%ZIP_NAME%" root@%UPDATE_HOST%:%UPDATE_DIR%/%ZIP_NAME% +curl -f -s -S -T "%PROJECT_DIR%%ZIP_NAME%" -u "%UPDATE_USER%:%UPDATE_PASS%" "%UPDATE_BASE%/%ZIP_NAME%" if %ERRORLEVEL% neq 0 ( echo ERROR: Failed to upload archive to update server exit /b 1 @@ -97,7 +129,7 @@ if %ERRORLEVEL% neq 0 ( REM Генерируем version.json (UTF-8 без BOM — иначе QJsonDocument::fromJson падает) REM и заливаем последним. powershell -NoProfile -Command "$j = @{ latestVersion='!CURRENT_VERSION!'; zipUrl='!DOWNLOAD_URL!'; sha256='!ZIP_SHA256!'; minVersion='1.0.0'; notes='Обновление ARC'; mandatory=$false } | ConvertTo-Json; [System.IO.File]::WriteAllText('%PROJECT_DIR%version.json', $j, (New-Object System.Text.UTF8Encoding($false)))" -scp "%PROJECT_DIR%version.json" root@%UPDATE_HOST%:%UPDATE_DIR%/version.json +curl -f -s -S -T "%PROJECT_DIR%version.json" -u "%UPDATE_USER%:%UPDATE_PASS%" "%UPDATE_BASE%/version.json" if %ERRORLEVEL% neq 0 ( echo ERROR: Failed to upload version.json to update server exit /b 1 diff --git a/config.ini b/config.ini index 042eddf..66e2813 100644 --- a/config.ini +++ b/config.ini @@ -10,6 +10,8 @@ dbPath=./database/app_data.db [net] apiBase=http://93.183.75.134:8005 +apiBaseTest=http://93.183.75.134:8005 +apiBaseProd=http://78.140.243.128:8000 #apiBase=http://127.0.0.1:8888 pathAuthLogin=/api/v1/auth/login pathAuthRefresh=/api/v1/auth/refresh_token @@ -25,7 +27,9 @@ monitoringBase=http://142.93.102.40:8080 monitoringToken=509b91592749959b9ff56f9ed9189e5b3e91e1260003f63c477255e1c187298a [update] -manifestUrl=http://142.93.102.40/updates/version.json +manifestUrl=http://142.93.102.40/updates/test/version.json +manifestUrlTest=http://142.93.102.40/updates/test/version.json +manifestUrlProd=http://142.93.102.40/updates/prod/version.json [black] android_package_name=app.blackwallet.ar