:new:新增接口控制服务端、命令控制服务端
This commit is contained in:
@@ -2,6 +2,9 @@ package component
|
||||
|
||||
import (
|
||||
"gitee.ltd/lxh/logger/log"
|
||||
"gopkg.in/fsnotify.v1"
|
||||
"wireguard-dashboard/command"
|
||||
"wireguard-dashboard/config"
|
||||
"wireguard-dashboard/utils"
|
||||
)
|
||||
|
||||
@@ -15,7 +18,7 @@ func Wireguard() wireguard {
|
||||
// @description: 应用配置
|
||||
// @receiver wireguard
|
||||
// @return err
|
||||
func (wireguard) Apply(templateFilePath, configFilePath string, data any) (err error) {
|
||||
func (w wireguard) Apply(templateFilePath, configFilePath string, data any) (err error) {
|
||||
|
||||
parseTemplate, err := utils.Template().Parse(templateFilePath)
|
||||
if err != nil {
|
||||
@@ -29,5 +32,56 @@ func (wireguard) Apply(templateFilePath, configFilePath string, data any) (err e
|
||||
return err
|
||||
}
|
||||
|
||||
// 判断服务端重启规则
|
||||
switch config.Config.Wireguard.ListenConfig {
|
||||
case "auto":
|
||||
w.watchListConfig(configFilePath)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// watchListConfig
|
||||
// @description: 监听配置文件变化
|
||||
// @receiver wireguard
|
||||
// @return err
|
||||
func (wireguard) watchListConfig(filePath string) {
|
||||
go func() {
|
||||
watcher, err := fsnotify.NewWatcher()
|
||||
if err != nil {
|
||||
log.Errorf("创建文件监控失败: %v", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
defer watcher.Close()
|
||||
done := make(chan bool)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case event, ok := <-watcher.Events:
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
if event.Op == fsnotify.Write {
|
||||
command.RestartWireguard(true)
|
||||
}
|
||||
|
||||
// 打印监听事件
|
||||
log.Errorf("监听事件是:%s", event.String())
|
||||
case _, ok := <-watcher.Errors:
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
if err = watcher.Add(filePath); err != nil {
|
||||
log.Errorf("添加[%s]监听失败: %v", filePath, err.Error())
|
||||
return
|
||||
}
|
||||
<-done
|
||||
}()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user