refactor: make logic to controller.maker
This commit is contained in:
104
internal/controller/maker/yosguard.go
Normal file
104
internal/controller/maker/yosguard.go
Normal file
@@ -0,0 +1,104 @@
|
||||
package maker
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"gitea.loveuer.com/yizhisec/pkg3/logger"
|
||||
"yizhisec.com/hsv2/forge/internal/opt"
|
||||
"yizhisec.com/hsv2/forge/pkg/downloader"
|
||||
"yizhisec.com/hsv2/forge/pkg/resource"
|
||||
)
|
||||
|
||||
type YosguardOpt func(*yosguardOpt)
|
||||
|
||||
type yosguardOpt struct{}
|
||||
|
||||
func (m *maker) Yosguard(ctx context.Context, opts ...YosguardOpt) error {
|
||||
const (
|
||||
configTemplate = `
|
||||
Web:
|
||||
# default listen in docker0
|
||||
Host: 172.17.0.1
|
||||
Port: 7788
|
||||
|
||||
UUIDFilePath: /etc/yosguard/uuid
|
||||
|
||||
# 心跳间隔: 单位秒,默认为5
|
||||
HeartbeatDuration: 5
|
||||
|
||||
# 控制器 yosguard 地址
|
||||
ControllerServer:
|
||||
Host: dasheng.zhsftech.debug
|
||||
Port: 443
|
||||
|
||||
# True: 作为控制器运行; False: 不作为控制器运行
|
||||
AsController: true
|
||||
|
||||
# True: 作为网关运行; False: 不作为网关运行
|
||||
AsGateway: false
|
||||
|
||||
Database:
|
||||
SQLite:
|
||||
DBPath: "/etc/yosguard/db/yosguard.db"
|
||||
SQLPath: "/etc/yosguard/db/create.sql"`
|
||||
|
||||
systemdService = `
|
||||
[Unit]
|
||||
Description=YiZhiSec YOSGuard
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
ExecStart=/usr/local/bin/yosguard web --host __host__
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
Nice=-20
|
||||
Restart=always
|
||||
RestartSec=15
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target`
|
||||
binURL = "https://artifactory.yizhisec.com:443/artifactory/filestore/hsv2/bin/yosguard"
|
||||
)
|
||||
|
||||
location := filepath.Join(opt.Cfg.Make.Dir, "dependency", "yosguard")
|
||||
|
||||
logger.Info("☑️ MakeYosguard: 开始构建 yosguard...")
|
||||
|
||||
if err := os.MkdirAll(location, 0755); err != nil {
|
||||
logger.Debug("❌ MakeYosguard: 创建 yosguard 目录失败: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := downloader.Download(
|
||||
ctx,
|
||||
binURL,
|
||||
filepath.Join(location, "yosguard"),
|
||||
downloader.WithInsecureSkipVerify(),
|
||||
downloader.WithFileMode(0755),
|
||||
); err != nil {
|
||||
logger.Debug("❌ MakeYosguard: 下载 yosguard 失败: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := os.WriteFile(filepath.Join(location, "config_template.yml"), []byte(configTemplate), 0644); err != nil {
|
||||
logger.Debug("❌ MakeYosguard: 生成 config_template.yml 失败: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := os.WriteFile(filepath.Join(location, "create.sql"), resource.SQLYosguard, 0644); err != nil {
|
||||
logger.Debug("❌ MakeYosguard: 生成 create.sql 失败: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := os.WriteFile(filepath.Join(location, "yosguard.service"), []byte(systemdService), 0644); err != nil {
|
||||
logger.Debug("❌ MakeYosguard: 生成 yosguard.service 失败: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
logger.Info("✅ MakeYosguard: 构建 yosguard成功!!!")
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user