LicenseManger/start.ps1

123 lines
3.2 KiB
PowerShell
Raw Normal View History

2024-11-14 14:55:43 +00:00
# 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 {
2024-11-14 15:32:08 +00:00
go env -w GOPROXY=https://goproxy.cn,direct
go mod tidy
2024-11-14 14:55:43 +00:00
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
}
}