123 lines
3.2 KiB
PowerShell
123 lines
3.2 KiB
PowerShell
# Set console encoding to UTF-8
|
|
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
|
|
# Set error action preference
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
# Define color output function
|
|
function Write-ColorOutput($ForegroundColor) {
|
|
$fc = $host.UI.RawUI.ForegroundColor
|
|
$host.UI.RawUI.ForegroundColor = $ForegroundColor
|
|
if ($args) {
|
|
Write-Output $args
|
|
}
|
|
$host.UI.RawUI.ForegroundColor = $fc
|
|
}
|
|
|
|
# Create necessary directories
|
|
Write-ColorOutput Green "Creating necessary directories..."
|
|
$directories = @("config", "data", "uploads")
|
|
foreach ($dir in $directories) {
|
|
if (-not (Test-Path $dir)) {
|
|
New-Item -ItemType Directory -Path $dir | Out-Null
|
|
Write-ColorOutput Yellow "Created directory: $dir"
|
|
}
|
|
}
|
|
|
|
# Check if config file exists
|
|
$configPath = "config/config.yaml"
|
|
if (-not (Test-Path $configPath)) {
|
|
Write-ColorOutput Green "Creating default configuration file..."
|
|
$configContent = @"
|
|
server:
|
|
port: 8081
|
|
mode: debug
|
|
|
|
database:
|
|
type: sqlite3
|
|
path: ./data/license.db
|
|
|
|
jwt:
|
|
secret: your-secret-key-change-this
|
|
expire: 24h
|
|
|
|
email:
|
|
host: smtp.example.com
|
|
port: 587
|
|
username: your-email@example.com
|
|
password: your-password
|
|
|
|
upload:
|
|
path: ./uploads
|
|
|
|
site:
|
|
title: "授权验证管理平台"
|
|
description: "专业的软件授权和设备管理平台"
|
|
base_url: "http://localhost:8080"
|
|
icp: "京ICP备XXXXXXXX号-1"
|
|
copyright: "© 2024 Your Company Name. All rights reserved."
|
|
logo: "/static/images/logo.png"
|
|
favicon: "/static/images/favicon.ico"
|
|
"@
|
|
$configContent | Out-File -FilePath $configPath -Encoding UTF8
|
|
Write-ColorOutput Yellow "Created default config file: $configPath"
|
|
}
|
|
|
|
# Compile program
|
|
Write-ColorOutput Green "Compiling program..."
|
|
try {
|
|
go env -w GOPROXY=https://goproxy.cn,direct
|
|
go mod tidy
|
|
go build -o licserver.exe cmd/main.go
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "Compilation failed"
|
|
}
|
|
Write-ColorOutput Yellow "Compilation successful"
|
|
}
|
|
catch {
|
|
Write-ColorOutput Red "Compilation failed: $_"
|
|
exit 1
|
|
}
|
|
|
|
# Start server
|
|
Write-ColorOutput Green "Starting server..."
|
|
try {
|
|
# Check if port is in use
|
|
$port = 8081
|
|
$portInUse = Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue
|
|
if ($portInUse) {
|
|
throw "Port $port is already in use"
|
|
}
|
|
|
|
# Start server
|
|
.\licserver.exe
|
|
|
|
# Capture Ctrl+C
|
|
$handler = {
|
|
Write-ColorOutput Yellow "`nShutting down server..."
|
|
Stop-Process -Name "licserver" -Force -ErrorAction SilentlyContinue
|
|
}
|
|
$null = Register-ObjectEvent -InputObject ([Console]) -EventName CancelKeyPress -Action $handler
|
|
}
|
|
catch {
|
|
Write-ColorOutput Red "Startup failed: $_"
|
|
exit 1
|
|
}
|
|
|
|
# 检查并下载 echarts
|
|
$echartsPath = "web/static/lib/echarts.min.js"
|
|
if (-not (Test-Path $echartsPath)) {
|
|
Write-ColorOutput Green "Downloading echarts..."
|
|
$echartsUrl = "https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"
|
|
|
|
try {
|
|
Invoke-WebRequest -Uri $echartsUrl -OutFile $echartsPath
|
|
Write-ColorOutput Yellow "Downloaded echarts successfully"
|
|
}
|
|
catch {
|
|
Write-ColorOutput Red "Failed to download echarts: $_"
|
|
exit 1
|
|
}
|
|
} |