|
@@ -3,7 +3,6 @@ package main
|
|
import (
|
|
import (
|
|
"flag"
|
|
"flag"
|
|
"fmt"
|
|
"fmt"
|
|
- "github.com/op/go-logging"
|
|
|
|
"log"
|
|
"log"
|
|
"os"
|
|
"os"
|
|
"os/signal"
|
|
"os/signal"
|
|
@@ -16,6 +15,8 @@ import (
|
|
"x-ui/web"
|
|
"x-ui/web"
|
|
"x-ui/web/global"
|
|
"x-ui/web/global"
|
|
"x-ui/web/service"
|
|
"x-ui/web/service"
|
|
|
|
+
|
|
|
|
+ "github.com/op/go-logging"
|
|
)
|
|
)
|
|
|
|
|
|
func runWebServer() {
|
|
func runWebServer() {
|
|
@@ -50,6 +51,7 @@ func runWebServer() {
|
|
}
|
|
}
|
|
|
|
|
|
sigCh := make(chan os.Signal, 1)
|
|
sigCh := make(chan os.Signal, 1)
|
|
|
|
+ //信号量捕获处理
|
|
signal.Notify(sigCh, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGKILL)
|
|
signal.Notify(sigCh, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGKILL)
|
|
for {
|
|
for {
|
|
sig := <-sigCh
|
|
sig := <-sigCh
|
|
@@ -90,6 +92,90 @@ func resetSetting() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func showSetting(show bool) {
|
|
|
|
+ if show {
|
|
|
|
+ settingService := service.SettingService{}
|
|
|
|
+ port, err := settingService.GetPort()
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println("get current port fialed,error info:", err)
|
|
|
|
+ }
|
|
|
|
+ userService := service.UserService{}
|
|
|
|
+ userModel, err := userService.GetFirstUser()
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println("get current user info failed,error info:", err)
|
|
|
|
+ }
|
|
|
|
+ username := userModel.Username
|
|
|
|
+ userpasswd := userModel.Password
|
|
|
|
+ if (username == "") || (userpasswd == "") {
|
|
|
|
+ fmt.Println("current username or password is empty")
|
|
|
|
+ }
|
|
|
|
+ fmt.Println("current pannel settings as follows:")
|
|
|
|
+ fmt.Println("username:", username)
|
|
|
|
+ fmt.Println("userpasswd:", userpasswd)
|
|
|
|
+ fmt.Println("port:", port)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func updateTgbotEnableSts(status bool) {
|
|
|
|
+ settingService := service.SettingService{}
|
|
|
|
+ currentTgSts, err := settingService.GetTgbotenabled()
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ logger.Infof("current enabletgbot status[%v],need update to status[%v]", currentTgSts, status)
|
|
|
|
+ if currentTgSts != status {
|
|
|
|
+ err := settingService.SetTgbotenabled(status)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ } else {
|
|
|
|
+ logger.Infof("SetTgbotenabled[%v] success", status)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func updateTgbotSetting(tgBotToken string, tgBotChatid int, tgBotRuntime string) {
|
|
|
|
+ err := database.InitDB(config.GetDBPath())
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ settingService := service.SettingService{}
|
|
|
|
+
|
|
|
|
+ if tgBotToken != "" {
|
|
|
|
+ err := settingService.SetTgBotToken(tgBotToken)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ } else {
|
|
|
|
+ logger.Info("updateTgbotSetting tgBotToken success")
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if tgBotRuntime != "" {
|
|
|
|
+ err := settingService.SetTgbotRuntime(tgBotRuntime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ } else {
|
|
|
|
+ logger.Infof("updateTgbotSetting tgBotRuntime[%s] success", tgBotRuntime)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if tgBotChatid != 0 {
|
|
|
|
+ err := settingService.SetTgBotChatId(tgBotChatid)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ } else {
|
|
|
|
+ logger.Info("updateTgbotSetting tgBotChatid success")
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
func updateSetting(port int, username string, password string) {
|
|
func updateSetting(port int, username string, password string) {
|
|
err := database.InitDB(config.GetDBPath())
|
|
err := database.InitDB(config.GetDBPath())
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -137,11 +223,21 @@ func main() {
|
|
var port int
|
|
var port int
|
|
var username string
|
|
var username string
|
|
var password string
|
|
var password string
|
|
|
|
+ var tgbottoken string
|
|
|
|
+ var tgbotchatid int
|
|
|
|
+ var enabletgbot bool
|
|
|
|
+ var tgbotRuntime string
|
|
var reset bool
|
|
var reset bool
|
|
- settingCmd.BoolVar(&reset, "reset", false, "reset all setting")
|
|
|
|
|
|
+ var show bool
|
|
|
|
+ settingCmd.BoolVar(&reset, "reset", false, "reset all settings")
|
|
|
|
+ settingCmd.BoolVar(&show, "show", false, "show current settings")
|
|
settingCmd.IntVar(&port, "port", 0, "set panel port")
|
|
settingCmd.IntVar(&port, "port", 0, "set panel port")
|
|
settingCmd.StringVar(&username, "username", "", "set login username")
|
|
settingCmd.StringVar(&username, "username", "", "set login username")
|
|
settingCmd.StringVar(&password, "password", "", "set login password")
|
|
settingCmd.StringVar(&password, "password", "", "set login password")
|
|
|
|
+ settingCmd.StringVar(&tgbottoken, "tgbottoken", "", "set telegrame bot token")
|
|
|
|
+ settingCmd.StringVar(&tgbotRuntime, "tgbotRuntime", "", "set telegrame bot cron time")
|
|
|
|
+ settingCmd.IntVar(&tgbotchatid, "tgbotchatid", 0, "set telegrame bot chat id")
|
|
|
|
+ settingCmd.BoolVar(&enabletgbot, "enabletgbot", false, "enable telegram bot notify")
|
|
|
|
|
|
oldUsage := flag.Usage
|
|
oldUsage := flag.Usage
|
|
flag.Usage = func() {
|
|
flag.Usage = func() {
|
|
@@ -188,6 +284,13 @@ func main() {
|
|
} else {
|
|
} else {
|
|
updateSetting(port, username, password)
|
|
updateSetting(port, username, password)
|
|
}
|
|
}
|
|
|
|
+ if show {
|
|
|
|
+ showSetting(show)
|
|
|
|
+ }
|
|
|
|
+ updateTgbotEnableSts(enabletgbot)
|
|
|
|
+ if (tgbottoken != "") || (tgbotchatid != 0) || (tgbotRuntime != "") {
|
|
|
|
+ updateTgbotSetting(tgbottoken, tgbotchatid, tgbotRuntime)
|
|
|
|
+ }
|
|
default:
|
|
default:
|
|
fmt.Println("except 'run' or 'v2-ui' or 'setting' subcommands")
|
|
fmt.Println("except 'run' or 'v2-ui' or 'setting' subcommands")
|
|
fmt.Println()
|
|
fmt.Println()
|