diff --git a/global/config.go b/global/config.go index 71ecaaf..e380e99 100644 --- a/global/config.go +++ b/global/config.go @@ -81,6 +81,7 @@ type GoCQReverseWebsocketConfig struct { type GoCqWebUi struct { Enabled bool `json:"enabled"` + Host string `json:"host"` WebUiPort uint64 `json:"web_ui_port"` WebInput bool `json:"web_input"` } @@ -130,6 +131,7 @@ func DefaultConfig() *JsonConfig { }, WebUi: &GoCqWebUi{ Enabled: true, + Host: "0.0.0.0", WebInput: false, WebUiPort: 9999, }, diff --git a/main.go b/main.go index 15f10ab..46ce32d 100644 --- a/main.go +++ b/main.go @@ -237,17 +237,21 @@ func main() { conf.WebUi = &global.GoCqWebUi{ Enabled: true, WebInput: false, + Host: "0.0.0.0", WebUiPort: 9999, } } if conf.WebUi.WebUiPort <= 0 { conf.WebUi.WebUiPort = 9999 } + if conf.WebUi.Host == "" { + conf.WebUi.Host = "0.0.0.0" + } confErr := conf.Save("config.json") if confErr != nil { log.Error("保存配置文件失败") } - b := server.WebServer.Run(fmt.Sprintf("%s:%d", "0.0.0.0", conf.WebUi.WebUiPort), cli) + b := server.WebServer.Run(fmt.Sprintf("%s:%d", conf.WebUi.Host, conf.WebUi.WebUiPort), cli) c := server.Console signal.Notify(c, os.Interrupt, os.Kill) <-c diff --git a/server/apiAdmin.go b/server/apiAdmin.go index ad83d97..6d44638 100644 --- a/server/apiAdmin.go +++ b/server/apiAdmin.go @@ -17,6 +17,7 @@ import ( "io/ioutil" "net/http" "os" + "os/signal" "strconv" "strings" "time" @@ -69,12 +70,21 @@ func (s *webServer) Run(addr string, cli *client.QQClient) *coolq.CQBot { s.engine.Any("/admin/:action", s.admin) go func() { - log.Infof("Admin API 服务器已启动: %v", addr) - err := s.engine.Run(addr) - if err != nil { - log.Error(err) - log.Infof("请检查端口是否被占用.") - time.Sleep(time.Second * 5) + //开启端口监听 + if s.Conf.WebUi.Enabled { + log.Infof("Admin API 服务器已启动: %v", addr) + err := s.engine.Run(addr) + if err != nil { + log.Error(err) + log.Infof("请检查端口是否被占用.") + time.Sleep(time.Second * 5) + os.Exit(1) + } + } else { + //关闭端口监听 + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, os.Kill) + <-c os.Exit(1) } }() @@ -99,7 +109,7 @@ func (s *webServer) Dologin() { img, _, _ := image.Decode(bytes.NewReader(rsp.CaptchaImage)) fmt.Println(asciiart.New("image", img).Art) if conf.WebUi.WebInput { - log.Warn("请输入验证码 (captcha.jpg): (http://127.0.0.1/admin/web_write 输入)") + log.Warnf("请输入验证码 (captcha.jpg): (http://%s:%d/admin/do_web_write 输入)", conf.WebUi.Host, conf.WebUi.WebUiPort) text = <-WebInput } else { log.Warn("请输入验证码 (captcha.jpg): (Enter 提交)") @@ -111,7 +121,7 @@ func (s *webServer) Dologin() { case client.UnsafeDeviceError: log.Warnf("账号已开启设备锁,请前往 -> %v <- 验证并重启Bot.", rsp.VerifyUrl) if conf.WebUi.WebInput { - log.Infof(" (http://127.0.0.1/admin/web_write 确认后继续)....") + log.Infof(" (http://%s:%d/admin/do_web_write 确认后继续)....", conf.WebUi.Host, conf.WebUi.WebUiPort) text = <-WebInput } else { log.Infof(" 按 Enter 继续....")