1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 19:43:49 +08:00

Merge pull request #340 from scjtqs/adminApiDev

fix: 修复 无法关闭 web admin监听的问题
This commit is contained in:
Mrs4s 2020-10-04 00:23:02 +08:00 committed by GitHub
commit d4811d53e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 9 deletions

View File

@ -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,
},

View File

@ -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

View File

@ -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 继续....")