mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-03 20:40:26 +08:00
改进编译脚本
This commit is contained in:
103
internal/nodes/admin_node.go
Normal file
103
internal/nodes/admin_node.go
Normal file
@@ -0,0 +1,103 @@
|
||||
package nodes
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/errors"
|
||||
"github.com/iwind/TeaGo"
|
||||
"github.com/iwind/TeaGo/Tea"
|
||||
"github.com/iwind/TeaGo/logs"
|
||||
"github.com/iwind/TeaGo/rands"
|
||||
"github.com/iwind/TeaGo/sessions"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
type AdminNode struct {
|
||||
}
|
||||
|
||||
func NewAdminNode() *AdminNode {
|
||||
return &AdminNode{}
|
||||
}
|
||||
|
||||
func (this *AdminNode) Run() {
|
||||
// 启动管理界面
|
||||
secret := rands.String(32)
|
||||
|
||||
// 测试环境下设置一个固定的key,方便我们调试
|
||||
if Tea.IsTesting() {
|
||||
secret = "8f983f4d69b83aaa0d74b21a212f6967"
|
||||
}
|
||||
|
||||
// 检查server配置
|
||||
err := this.checkServer()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 启动API节点
|
||||
this.startAPINode()
|
||||
|
||||
server := TeaGo.NewServer(false).
|
||||
AccessLog(false).
|
||||
EndAll().
|
||||
|
||||
Session(sessions.NewFileSessionManager(86400, secret))
|
||||
server.Start()
|
||||
}
|
||||
|
||||
// 检查Server配置
|
||||
func (this *AdminNode) checkServer() error {
|
||||
configFile := Tea.ConfigFile("server.yaml")
|
||||
_, err := os.Stat(configFile)
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if os.IsNotExist(err) {
|
||||
// 创建文件
|
||||
templateFile := Tea.ConfigFile("server.template.yaml")
|
||||
data, err := ioutil.ReadFile(templateFile)
|
||||
if err == nil {
|
||||
err = ioutil.WriteFile(configFile, data, 0666)
|
||||
if err != nil {
|
||||
return errors.New("create config file failed: " + err.Error())
|
||||
}
|
||||
} else {
|
||||
templateYAML := `# environment code
|
||||
env: prod
|
||||
|
||||
# http
|
||||
http:
|
||||
"on": true
|
||||
listen: [ "0.0.0.0:7788" ]
|
||||
|
||||
# https
|
||||
https:
|
||||
"on": false
|
||||
listen: [ "0.0.0.0:443"]
|
||||
cert: ""
|
||||
key: ""
|
||||
`
|
||||
err = ioutil.WriteFile(configFile, []byte(templateYAML), 0666)
|
||||
if err != nil {
|
||||
return errors.New("create config file failed: " + err.Error())
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return errors.New("can not read config from 'configs/server.yaml': " + err.Error())
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 启动API节点
|
||||
func (this AdminNode) startAPINode() {
|
||||
_, err := os.Stat(Tea.Root + "/edge-api/configs/api.yaml")
|
||||
if err == nil {
|
||||
logs.Println("start edge-api")
|
||||
err = exec.Command(Tea.Root + "/edge-api/bin/edge-api").Start()
|
||||
if err != nil {
|
||||
logs.Println("[ERROR]start edge-api failed: " + err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user