diff --git a/config/config.go b/config/config.go deleted file mode 100644 index 05bffe7..0000000 --- a/config/config.go +++ /dev/null @@ -1,90 +0,0 @@ -package config - -import ( - "encoding/json" - "fmt" - "go2" - go2aes "go2/aes" - go2http "go2/http" - "log" - "os" -) - -type RedisInfo struct { - Addr string `bson:"addr" json:"addr"` - TlsAddr string `bson:"tls_addr" json:"tls_addr"` - Passwd string `bson:"passwd" json:"passwd"` - Id int `bson:"id" json:"id"` -} - -type ConfigInfo struct { - Redis RedisInfo `bson:"redis" json:"redis"` - WorkType string `bson:"work_type" json:"work_type"` - TunKey string `bson:"tun_key" json:"tun_key"` - ConnType string `bson:"conn_type" json:"conn_type"` - LocalIP string `bson:"local_ip" json:"local_ip"` - LocalPort string `bson:"local_port" json:"local_port"` - RemoteType string `bson:"remote_type" json:"remote_type"` - RemoteIP string `bson:"remote_ip" json:"remote_ip"` - RemotePort string `bson:"remote_port" json:"remote_port"` - StunList []string `bson:"stun_list" json:"stun_list"` - DingTalkUrl string `bson:"ding_talk_url" json:"ding_talk_url"` -} - -const ( - ConfigFileName = "config.json" -) - -var ( - configInfo ConfigInfo -) - -func DeleteLocalConfig() { - log.Println("删除本地配置") - os.Remove(ConfigFileName) -} - -func Init() error { - var res []byte - var err error - - if res = go2.FileReadAll(ConfigFileName); res == nil { - DeleteLocalConfig() - go2http.DownloadSimple(fmt.Sprintf("https://gitee.com/konyshe/goodlink_conf/raw/master/%s", ConfigFileName), ConfigFileName) - res = go2.FileReadAll(ConfigFileName) - } - - if err = json.Unmarshal(go2aes.Decrypt7(res, "goodlink"), &configInfo); err != nil { - DeleteLocalConfig() - return err - } - - return nil -} - -func GetConfig() ConfigInfo { - if len(configInfo.StunList) == 0 { - Init() - } - return configInfo -} - -func GetStunList() []string { - return GetConfig().StunList -} - -func GetAddr() string { - return GetConfig().Redis.TlsAddr -} - -func GetPasswd() string { - return GetConfig().Redis.Passwd -} - -func GetID() int { - return GetConfig().Redis.Id -} - -func GetDingTalkUrl() string { - return GetConfig().DingTalkUrl -} diff --git a/go.mod b/go.mod index b3b7b46..d171ff9 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,9 @@ module goodlink go 1.25.5 require ( + go2 v0.0.0 + proxy v0.0.0 + goodlink_config v0.0.0 fyne.io/fyne v1.4.3 fyne.io/fyne/v2 v2.7.2 github.com/BurntSushi/toml v1.6.0 @@ -12,12 +15,10 @@ require ( github.com/pkg/errors v0.9.1 github.com/quic-go/quic-go v0.59.0 github.com/sirupsen/logrus v1.9.3 - go2 v0.0.0 golang.org/x/sys v0.40.0 golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 golang.zx2c4.com/wireguard v0.0.0-20250521234502-f333402bd9cb gvisor.dev/gvisor v0.0.0-20260106215814-b2227fa9cfe0 - proxy v0.0.0-00010101000000-000000000000 ) require ( @@ -70,3 +71,5 @@ replace go2 => ../go2 replace proxy => ../proxy replace goroutine-pool => ../goroutine-pool + +replace goodlink_config => ../goodlink3 diff --git a/main_cmd.go b/main_cmd.go index 7fb71c7..28a9e84 100644 --- a/main_cmd.go +++ b/main_cmd.go @@ -11,6 +11,7 @@ import ( _ "goodlink/pro" "goodlink/stun2" "goodlink/utils" + goodlink_config "goodlink_config/config" "log" "net/http" _ "net/http/pprof" @@ -88,10 +89,10 @@ func main() { } if !*config.Arg_local_config { - config.DeleteLocalConfig() + goodlink_config.DeleteLocalConfig() } - config.Init() + goodlink_config.Init() if *config.Arg_stun_test { // 测试stun节点,开发使用选项 stun2.TestStun() diff --git a/main_ui.go b/main_ui.go index 7c58dcf..f56cecb 100644 --- a/main_ui.go +++ b/main_ui.go @@ -9,6 +9,7 @@ import ( "goodlink/theme" "goodlink/ui2" "goodlink/utils" + goodlink_config "goodlink_config/config" _ "net/http/pprof" @@ -35,7 +36,7 @@ func main() { // 启动前清理遗留的cmd进程 utils.CleanupOrphanedCmdProcesses() - config.DeleteLocalConfig() + goodlink_config.DeleteLocalConfig() config.SetVersion(GetVersionFromAppConfig()) diff --git a/pro/comm.go b/pro/comm.go index ac2b56c..c140f8a 100644 --- a/pro/comm.go +++ b/pro/comm.go @@ -12,6 +12,7 @@ import ( "goodlink/tun" _ "goodlink/tun" "goodlink/upnp" + goodlink_config "goodlink_config/config" "log" "net" "time" @@ -41,9 +42,9 @@ func Init(tun_key string) error { } if config.Arg_redis_addr == "" && config.Arg_redis_tls_addr == "" { - redis_addr = config.GetAddr() - redis_pass = config.GetPasswd() - redis_id = config.GetID() + redis_addr = goodlink_config.GetAddr() + redis_pass = goodlink_config.GetPasswd() + redis_id = goodlink_config.GetID() } else if config.Arg_redis_tls_addr != "" { redis_addr = config.Arg_redis_tls_addr diff --git a/stun2/cli.go b/stun2/cli.go index 3ee2da8..1431f37 100644 --- a/stun2/cli.go +++ b/stun2/cli.go @@ -5,12 +5,12 @@ import ( "crypto/rand" "encoding/binary" "fmt" - "goodlink/config" "log" "net" "time" go2pool "go2/pool" + goodlink_config "goodlink_config/config" ) // extraLogSink 可选:由 UI 设置后,STUN 相关日志会同时输出到该回调(如运行日志列表),cmd 不设置则为 nil @@ -234,7 +234,7 @@ func GetStunIpPort(conn *net.UDPConn) (wan_ip string, wan_port1, wan_port2, wan_ var err error for { - stun_svr_list := config.GetStunList() + stun_svr_list := goodlink_config.GetStunList() for _, stun_svr := range stun_svr_list { wan_ip, wan_port1, wan_port2, wan_port3, err = GetStunIpPort2(stun_svr, conn) if err != nil { diff --git a/ui2/start.go b/ui2/start.go index 95b6bff..6f2e655 100644 --- a/ui2/start.go +++ b/ui2/start.go @@ -17,9 +17,9 @@ import ( "syscall" "time" - "goodlink/config" "goodlink/pro" "goodlink/utils" + goodlink_config "goodlink_config/config" _ "embed" _ "net/http/pprof" @@ -315,7 +315,7 @@ func startCmdProcess() error { // 保存配置文件, 下次启动加载 func saveConfig() { //先对需要填写的数据进行校验 - configByte, _ := json.Marshal(&config.ConfigInfo{ + configByte, _ := json.Marshal(&goodlink_config.ConfigInfo{ WorkType: GetWorkType(), TunKey: m_validated_key.Text, }) diff --git a/ui2/ui.go b/ui2/ui.go index dea098c..c7c2d85 100644 --- a/ui2/ui.go +++ b/ui2/ui.go @@ -13,6 +13,7 @@ import ( "goodlink/config" "goodlink/stun2" + goodlink_config "goodlink_config/config" _ "embed" _ "net/http/pprof" @@ -121,7 +122,7 @@ func createButtonWithHighlight(btn *widget.Button, bg *canvas.Rectangle, border } // 创建工作模式选择器 -func createWorkTypeSelector(configInfo *config.ConfigInfo) fyne.CanvasObject { +func createWorkTypeSelector(configInfo *goodlink_config.ConfigInfo) fyne.CanvasObject { // 创建本地端按钮 m_btn_local = widget.NewButtonWithIcon(" Local端 ", theme.ComputerIcon(), nil) @@ -164,7 +165,7 @@ func createWorkTypeSelector(configInfo *config.ConfigInfo) fyne.CanvasObject { } // 创建连接密钥输入区域 -func createKeyInputSection(configInfo *config.ConfigInfo) fyne.CanvasObject { +func createKeyInputSection(configInfo *goodlink_config.ConfigInfo) fyne.CanvasObject { m_validated_key = widget.NewEntry() m_validated_key.SetPlaceHolder("自定义16-24字节长度") if len(configInfo.TunKey) > 0 { @@ -204,7 +205,7 @@ func createKeyButtons() fyne.CanvasObject { } func GetMainUI(myWindow *fyne.Window) *fyne.Container { - var configInfo config.ConfigInfo + var configInfo goodlink_config.ConfigInfo json.Unmarshal(go2.FileReadAll(goodlinkFileName), &configInfo) log.Println(configInfo)