Restore server/agent compile fixes, wire remote actions end-to-end, harden run.bat, and document AetherForge with a severity-ranked audit in PROBLEMS.md.
253 lines
7.5 KiB
Batchfile
253 lines
7.5 KiB
Batchfile
@echo off
|
|
setlocal EnableExtensions
|
|
title Crypto Miner Control Server
|
|
cd /d "%~dp0"
|
|
|
|
echo.
|
|
echo ==================================================
|
|
echo Crypto Miner Control Server Builder
|
|
echo ==================================================
|
|
echo.
|
|
|
|
:: ============================================================
|
|
:: STEP 1: Auto-install Go if missing
|
|
:: ============================================================
|
|
echo [1/5] Checking dependencies...
|
|
|
|
where go >nul 2>nul
|
|
if errorlevel 1 goto install_go
|
|
echo Go found:
|
|
call go version
|
|
goto go_ready
|
|
|
|
:install_go
|
|
echo Go not found. Checking for existing installation...
|
|
|
|
if exist "C:\Program Files\Go\bin\go.exe" (
|
|
echo Found Go at C:\Program Files\Go\bin
|
|
set "PATH=C:\Program Files\Go\bin;%PATH%"
|
|
goto go_ready
|
|
)
|
|
|
|
echo Downloading and installing Go...
|
|
|
|
if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
|
|
set "GO_ARCH=amd64"
|
|
) else (
|
|
set "GO_ARCH=386"
|
|
)
|
|
|
|
set "GO_VERSION=1.22.2"
|
|
set "GO_URL=https://go.dev/dl/go%GO_VERSION%.windows-%GO_ARCH%.msi"
|
|
set "GO_MSI=%TEMP%\go-installer.msi"
|
|
|
|
echo Downloading Go %GO_VERSION% for Windows %GO_ARCH%...
|
|
echo This may take a moment...
|
|
|
|
powershell -NoProfile -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%GO_URL%' -OutFile '%GO_MSI%' }"
|
|
if errorlevel 1 (
|
|
echo ERROR: Failed to download Go installer.
|
|
echo Please manually download from: https://go.dev/dl/
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo Installing Go - administrator privileges may be required...
|
|
msiexec /i "%GO_MSI%" /quiet /norestart
|
|
if errorlevel 1 (
|
|
echo ERROR: Failed to install Go. Try running as Administrator.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
del "%GO_MSI%" 2>nul
|
|
set "PATH=C:\Program Files\Go\bin;%PATH%"
|
|
set "PATH=%USERPROFILE%\go\bin;%PATH%"
|
|
echo Go installed successfully!
|
|
|
|
:go_ready
|
|
|
|
:: ============================================================
|
|
:: STEP 1.5: Install Garble (Obfuscator) for Miner Builder
|
|
:: ============================================================
|
|
echo [1.5/5] Checking for Garble obfuscator...
|
|
where garble >nul 2>nul
|
|
if errorlevel 1 (
|
|
echo Garble not found. Installing via go install...
|
|
go install mvdan.cc/garble@latest
|
|
)
|
|
|
|
:: ============================================================
|
|
:: STEP 2: Auto-install Node.js if missing (for frontend)
|
|
:: ============================================================
|
|
where node >nul 2>nul
|
|
if errorlevel 1 goto install_node
|
|
echo Node.js found:
|
|
call node --version
|
|
goto node_ready
|
|
|
|
:install_node
|
|
echo Node.js not found. Checking for existing installation...
|
|
|
|
if exist "C:\Program Files\nodejs\node.exe" (
|
|
echo Found Node.js at C:\Program Files\nodejs
|
|
set "PATH=C:\Program Files\nodejs;%PATH%"
|
|
goto node_ready
|
|
)
|
|
|
|
echo Downloading and installing Node.js...
|
|
|
|
set "NODE_VERSION=20.12.2"
|
|
set "NODE_URL=https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-x64.msi"
|
|
set "NODE_MSI=%TEMP%\node-installer.msi"
|
|
|
|
echo Downloading Node.js v%NODE_VERSION%...
|
|
echo This may take a moment...
|
|
|
|
powershell -NoProfile -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%NODE_URL%' -OutFile '%NODE_MSI%' }"
|
|
if errorlevel 1 (
|
|
echo WARNING: Failed to download Node.js. Frontend will not be built.
|
|
echo You can manually download from: https://nodejs.org/
|
|
set "SKIP_FRONTEND=1"
|
|
goto node_ready
|
|
)
|
|
|
|
echo Installing Node.js - administrator privileges may be required...
|
|
msiexec /i "%NODE_MSI%" /quiet /norestart
|
|
if errorlevel 1 (
|
|
echo WARNING: Failed to install Node.js. Frontend will not be built.
|
|
set "SKIP_FRONTEND=1"
|
|
goto node_ready
|
|
)
|
|
|
|
set "PATH=C:\Program Files\nodejs;%PATH%"
|
|
del "%NODE_MSI%" 2>nul
|
|
echo Node.js installed successfully!
|
|
|
|
:node_ready
|
|
|
|
:: ============================================================
|
|
:: STEP 3: Create data directories
|
|
:: ============================================================
|
|
echo [2/5] Creating data directories...
|
|
if not exist "data\builds" mkdir "data\builds"
|
|
if not exist "data\logs" mkdir "data\logs"
|
|
if not exist "data\blueprints" mkdir "data\blueprints"
|
|
if not exist "data\preps" mkdir "data\preps"
|
|
if not exist "bin" mkdir "bin"
|
|
echo Created: data\builds, data\logs, data\blueprints, data\preps, bin
|
|
|
|
:: ============================================================
|
|
:: STEP 4: Build frontend
|
|
:: ============================================================
|
|
if defined SKIP_FRONTEND goto skip_frontend
|
|
echo [3/5] Building frontend dashboard...
|
|
echo Running npm install and npm run build in server\web\
|
|
cd server\web
|
|
if not exist "node_modules" (
|
|
echo Installing npm dependencies...
|
|
call npm install
|
|
if errorlevel 1 (
|
|
echo ERROR: npm install failed
|
|
cd ..\..
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo npm install completed successfully.
|
|
)
|
|
echo Building frontend with Vite...
|
|
call npm run build
|
|
if errorlevel 1 (
|
|
echo ERROR: Frontend build failed
|
|
cd ..\..
|
|
pause
|
|
exit /b 1
|
|
) else (
|
|
echo Frontend built successfully: server\web\dist
|
|
)
|
|
cd ..\..
|
|
goto frontend_done
|
|
|
|
:skip_frontend
|
|
echo [3/5] Skipping frontend build - Node.js not available
|
|
|
|
:frontend_done
|
|
|
|
:: Copy frontend to webroot for server
|
|
if exist "server\web\dist\index.html" (
|
|
if not exist "server\webroot" mkdir "server\webroot"
|
|
xcopy /E /I /Y "server\web\dist\*" "server\webroot\" >nul
|
|
echo Copied dashboard to server\webroot
|
|
)
|
|
|
|
:: ============================================================
|
|
:: STEP 5: Build server
|
|
:: ============================================================
|
|
echo [4/5] Building server...
|
|
echo Running go build in server\...
|
|
|
|
cd server
|
|
|
|
echo Downloading Go dependencies...
|
|
go mod download
|
|
if errorlevel 1 (
|
|
echo WARNING: go mod download failed, trying build anyway...
|
|
)
|
|
|
|
echo Compiling server binary...
|
|
go build -ldflags="-s -w" -o "..\bin\miner-server.exe" .
|
|
if errorlevel 1 (
|
|
echo ERROR: Build failed
|
|
cd ..
|
|
pause
|
|
exit /b 1
|
|
)
|
|
cd ..
|
|
echo Server built successfully: bin\miner-server.exe
|
|
|
|
:: ============================================================
|
|
:: LAUNCH
|
|
:: ============================================================
|
|
echo [5/5] Starting server on port 8989...
|
|
echo.
|
|
|
|
set "LAN_IP=localhost"
|
|
for /f "usebackq delims=" %%I in (`powershell -NoProfile -Command "(Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike '127.*' -and $_.PrefixOrigin -ne 'WellKnown' } | Select-Object -First 1 -ExpandProperty IPAddress)"`) do set "LAN_IP=%%I"
|
|
|
|
echo.
|
|
echo ==============================================================
|
|
echo SERVER IS NOW LIVE
|
|
echo ==============================================================
|
|
echo.
|
|
echo Dashboard URL: http://0.0.0.0:8989
|
|
echo LAN Access: http://%LAN_IP%:8989
|
|
echo Local: http://localhost:8989
|
|
echo.
|
|
echo WebSocket agents: ws://%LAN_IP%:8989/ws/agent
|
|
echo WebSocket dash: ws://%LAN_IP%:8989/ws/dashboard
|
|
echo.
|
|
echo Quick Start:
|
|
echo 1. Open Dashboard in your browser
|
|
echo 2. Go to Calibrate - configure pool and wallet
|
|
echo 3. Go to Forge - build your miner installer .exe
|
|
echo 4. Run that .exe on each Windows machine
|
|
echo.
|
|
echo Data Directory: %CD%\data\
|
|
echo Config File: %CD%\data\config.json
|
|
echo Blueprints: %CD%\data\blueprints\
|
|
echo.
|
|
echo Press Ctrl+C in this window to stop the server
|
|
echo ==============================================================
|
|
echo.
|
|
|
|
start http://localhost:8989
|
|
|
|
echo [Server] Starting miner-server.exe on 0.0.0.0:8989...
|
|
echo [Server] Log output below - Ctrl+C to stop:
|
|
echo.
|
|
.\bin\miner-server.exe -port 8989 -data ".\data"
|
|
|
|
echo.
|
|
echo [Server] Server stopped.
|
|
pause
|