diff --git a/.gitignore b/.gitignore index cb699f9..4515f48 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/ http-win-notice.exe -http-win-notice.exe~ \ No newline at end of file +http-win-notice.exe~ +dist/ \ No newline at end of file diff --git a/README.md b/README.md index 49a8744..dac8dee 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,57 @@ toast: +## 开启socket转发(dev) +- 开启socket转发需要有一台带公网ip的服务器 +- 配置并开启后可实现公网调用接口发送通知 +- socket转发还在测试阶段,需要稳定可先使用frp [开启frp内网穿透](#开启frp内网穿透) + +#### 服务端配置 +1. 下载对应的`forward-server` + - windows服务器下载`forward-server.exe` + - linux服务器下载`forward-server` +2. 在同级目录下创建`config.yml`配置文件,参考如下: + + ```yaml + server_port: 9919 + token: httpwinnotice123456 + api_port: 19009 + api_token: httpforward123456 + ``` + - server_port: 转发服务的socket端口号 + - token: 安全认证,与客户端配置保持一致,建议修改默认值 + - api_port: 转发api的端口号 + - api_token: 调用转发api的认证token + +3. 启动转发服务(Linux环境) + + ```bash + # 直接启动 + ./forward-server + + # 后台启动 + nohup ./forward-server >> nohup.out & + ``` +#### 客户端配置 +1. 右击托盘图标选择`配置文件`,修改配置文件内`forward`相关内容并保存。参考配置如下: + + ```yaml + forward: + enable: 1 + server_addr: 123.123.1.1 + server_port: 9919 + token: httpwinnotice123456 + ``` + - enable: 0-关闭 1-开启转发服务 + - server_addr: 转发服务器ip + - server_port: 转发服务端口号 + - token: 与服务器配置的token保持一致,建议修改默认值 + +配置好后重启程序 + +#### 测试 + +按示例的配置,浏览器请求`http://123.123.1.1:19009?msg=哈喽`,若本机出现弹窗证明成功 ## 开启frp内网穿透 @@ -206,4 +257,9 @@ frp: server_port: 7000 token: httpwinnotice123456 remote_port: 19001 +forward: + enable: 1 + server_addr: 123.123.1.1 + server_port: 9919 + token: httpwinnotice123456 ``` \ No newline at end of file diff --git a/build/build.bat b/build/build.bat index f701a41..85d14b7 100644 --- a/build/build.bat +++ b/build/build.bat @@ -1,3 +1,13 @@ windres -o resources.syso build/res.rc -go build -o http-win-notice.exe -ldflags="-extldflags -static -H windowsgui -s -w" -del resources.syso \ No newline at end of file +go env -w CGO_ENABLED=1 GOOS=windows GOARCH=amd64 +go build -o dist/http-win-notice.exe -ldflags="-extldflags -static -H windowsgui -s -w" +del resources.syso + +go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64 +cd forward/server +go build -o "../../dist/forward/forward-server" + +go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64 +go build -o "../../dist/forward/forward-server.exe" + +go env -w CGO_ENABLED=1 \ No newline at end of file diff --git a/forward/client/client.go b/forward/client/client.go new file mode 100644 index 0000000..17608d4 --- /dev/null +++ b/forward/client/client.go @@ -0,0 +1,17 @@ +package client + +import ( + "github.com/shanghaobo/go-http-forward/client" + "http-win-notice/utils/setting" + "strconv" +) + +func StartClient() { + if setting.Config.Forward.Enable != 1 { + return + } + go func() { + forward := setting.Config.Forward + client.Start(forward.ServerAddr, strconv.Itoa(forward.ServerPort), forward.Token, "http://127.0.0.1:"+strconv.Itoa(setting.Config.Port)+"/api/toast") + }() +} diff --git a/forward/server/config.go b/forward/server/config.go new file mode 100644 index 0000000..98a25d3 --- /dev/null +++ b/forward/server/config.go @@ -0,0 +1,8 @@ +package main + +type ConfigType struct { + ServerPort int `yaml:"server_port"` + Token string `yaml:"token"` + ApiToken string `yaml:"api_token"` + ApiPort int `yaml:"api_port"` +} diff --git a/forward/server/config.yml b/forward/server/config.yml new file mode 100644 index 0000000..3d5dece --- /dev/null +++ b/forward/server/config.yml @@ -0,0 +1,4 @@ +server_port: 9919 +token: httpwinnotice123456 +api_port: 19009 +api_token: httpforward123456 diff --git a/forward/server/main.go b/forward/server/main.go new file mode 100644 index 0000000..b280dc6 --- /dev/null +++ b/forward/server/main.go @@ -0,0 +1,35 @@ +package main + +import ( + "fmt" + "github.com/shanghaobo/go-http-forward/server" + "gopkg.in/yaml.v3" + "log" + "os" + "path" + "path/filepath" + "strconv" +) + +var Config ConfigType + +func init() { + Config = ConfigType{} + exePath, _ := os.Executable() + configPath := path.Join(filepath.Dir(exePath), "config.yml") + dataBytes, err := os.ReadFile(configPath) + if err != nil { + log.Fatalln("读取配置文件失败") + } + fmt.Println("yaml 文件的内容: \n", string(dataBytes)) + + err = yaml.Unmarshal(dataBytes, &Config) + if err != nil { + fmt.Println("解析config失败") + log.Fatalln("解析config失败") + } +} + +func main() { + server.Start(strconv.Itoa(Config.ServerPort), Config.Token, Config.ApiToken, strconv.Itoa(Config.ApiPort)) +} diff --git a/go.mod b/go.mod index d570774..d7b23fc 100644 --- a/go.mod +++ b/go.mod @@ -14,8 +14,9 @@ require ( ) require ( - github.com/bytedance/sonic v1.9.1 // indirect - github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/bytedance/sonic v1.10.0 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect + github.com/chenzhuoyu/iasm v0.9.0 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 // indirect github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 // indirect @@ -26,13 +27,14 @@ require ( github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.14.0 // indirect + github.com/go-playground/validator/v10 v10.15.3 // indirect github.com/go-stack/stack v1.8.0 // indirect github.com/goccy/go-json v0.10.2 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/leodido/go-urn v1.2.4 // indirect github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-sqlite3 v1.14.17 // indirect @@ -40,15 +42,16 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/shanghaobo/go-http-forward v1.0.2 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect - golang.org/x/arch v0.3.0 // indirect - golang.org/x/crypto v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect - google.golang.org/protobuf v1.30.0 // indirect + golang.org/x/arch v0.4.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect ) replace github.com/go-toast/toast => github.com/shanghaobo/toast v0.0.0-20230821024402-35c58724ffe1 diff --git a/go.sum b/go.sum index 9bff4c7..5691538 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,16 @@ github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM= +github.com/bytedance/sonic v1.10.0 h1:qtNZduETEIWJVIyDl01BeNxur2rW9OwTQ/yBqFRkKEk= +github.com/bytedance/sonic v1.10.0/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4= github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= +github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA= +github.com/chenzhuoyu/iasm v0.9.0 h1:9fhXjVzq5hUy2gkhhgHl95zG2cEAhw9OSGs8toWWAwo= +github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -37,6 +44,8 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-playground/validator/v10 v10.15.3 h1:S+sSpunYjNPDuXkWbK+x+bA7iXiW296KG4dL3X7xUZo= +github.com/go-playground/validator/v10 v10.15.3/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= @@ -45,6 +54,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= @@ -54,6 +65,9 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/lxn/walk v0.0.0-20210112085537-c389da54e794/go.mod h1:E23UucZGqpuUANJooIbHWCufXvOcT6E7Stq81gU+CSQ= @@ -73,8 +87,16 @@ github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgF github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/shanghaobo/go-http-forward v1.0.0 h1:X2OyaXuEXgv7JFyPDiAPBfWKyzWCg5rQNO1+snz7Yak= +github.com/shanghaobo/go-http-forward v1.0.0/go.mod h1:LQMTzGbVpRyCtLCsNfhTlvS0VJW9rOu69WVKtPGnKHQ= +github.com/shanghaobo/go-http-forward v1.0.1 h1:qsQ6u6GFG1IGtcsb1Pof2JmiHDtzQdn6V3EIHRDrd5k= +github.com/shanghaobo/go-http-forward v1.0.1/go.mod h1:LQMTzGbVpRyCtLCsNfhTlvS0VJW9rOu69WVKtPGnKHQ= +github.com/shanghaobo/go-http-forward v1.0.2 h1:1GBgma4VduPhF9csYYUmsInybrxj8QRZsfwreKyPHIM= +github.com/shanghaobo/go-http-forward v1.0.2/go.mod h1:LQMTzGbVpRyCtLCsNfhTlvS0VJW9rOu69WVKtPGnKHQ= github.com/shanghaobo/toast v0.0.0-20230821024402-35c58724ffe1 h1:obMyqpCX8oLFYGPslwsAR3X9SeZq3TetATjd4h/oNDo= github.com/shanghaobo/toast v0.0.0-20230821024402-35c58724ffe1/go.mod h1:UmYL/gFYmdaS0iIRmXnFRBJNC1TtK/wp4NcJeuYVU7Q= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= @@ -90,6 +112,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= @@ -97,24 +121,37 @@ github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZ golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.4.0 h1:A8WCeEWhLwPBKNbFi5Wv5UTCBx5zzubnXDlMOFAzFMc= +golang.org/x/arch v0.4.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -125,4 +162,5 @@ gorm.io/driver/sqlite v1.5.3 h1:7/0dUgX28KAcopdfbRWWl68Rflh6osa4rDh+m51KL2g= gorm.io/driver/sqlite v1.5.3/go.mod h1:qxAuCol+2r6PannQDpOP1FP6ag3mKi4esLnB/jHed+4= gorm.io/gorm v1.25.4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw= gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/main.go b/main.go index d50b72f..95dcc39 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/getlantern/systray" "github.com/skratchdot/open-golang/open" + "http-win-notice/forward/client" "http-win-notice/frp" "http-win-notice/makelnk" "http-win-notice/model" @@ -17,6 +18,7 @@ func init() { comm.InitLog() model.InitDb() makelnk.RegisterAppUserModeId() + client.StartClient() frp.StartFrp() } diff --git a/utils/setting/config.go b/utils/setting/config.go index fcff1c4..bbf9f25 100644 --- a/utils/setting/config.go +++ b/utils/setting/config.go @@ -20,9 +20,10 @@ var LogoPath string var ImagesDir string type ConfigType struct { - Port int `yaml:"port"` - Toast ToastType `yaml:"toast"` - Frp FrpType `yaml:"frp"` + Port int `yaml:"port"` + Toast ToastType `yaml:"toast"` + Frp FrpType `yaml:"frp"` + Forward ForwardType `yaml:"forward"` } type ToastType struct { @@ -37,6 +38,13 @@ type FrpType struct { RemotePort int `yaml:"remote_port"` } +type ForwardType struct { + Enable int `yaml:"enable"` + ServerAddr string `yaml:"server_addr"` + ServerPort int `yaml:"server_port"` + Token string `yaml:"token"` +} + func init() { ConfigPath = path.Join(utils.RootDir, constant.ConfigFile) if _, err := os.Stat(ConfigPath); os.IsNotExist(err) { @@ -79,6 +87,15 @@ func initConfigFile(ConfigPath string) { } Config.Toast = Toast + //默认转发配置 + Forward := ForwardType{ + Enable: 0, + ServerAddr: "127.0.0.1", + ServerPort: 9919, + Token: "httpwinnotice123456", + } + Config.Forward = Forward + updatedData, err := yaml.Marshal(Config) if err != nil { fmt.Println(err)