mirror of
https://gitee.com/konyshe/goodlink.git
synced 2025-09-26 20:51:22 +08:00
198 lines
4.6 KiB
Go
198 lines
4.6 KiB
Go
//go:build windows
|
|
|
|
package ui2
|
|
|
|
import (
|
|
"encoding/json"
|
|
"gogo"
|
|
"log"
|
|
"sync"
|
|
"time"
|
|
|
|
"goodlink/config"
|
|
"goodlink/pro"
|
|
_ "goodlink/pro"
|
|
|
|
_ "embed"
|
|
_ "net/http/pprof"
|
|
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
var (
|
|
m_mg_start sync.WaitGroup
|
|
m_lock_start sync.Mutex
|
|
m_button_start *widget.Button
|
|
m_activity_start_button *widget.Activity
|
|
m_stats_start_button int
|
|
)
|
|
|
|
func disable_other(content string) {
|
|
m_radio_work_type.Disable()
|
|
m_validated_key.Disable()
|
|
m_ui_local.Disable()
|
|
m_ui_remote.Disable()
|
|
m_button_key_create.Disable()
|
|
m_button_key_paste.Disable()
|
|
m_activity_start_button.Start()
|
|
m_activity_start_button.Show()
|
|
UILogPrintF(content)
|
|
m_stats_start_button = 1
|
|
}
|
|
|
|
func enable_other() {
|
|
m_radio_work_type.Enable()
|
|
m_validated_key.Enable()
|
|
m_ui_local.Enable()
|
|
m_ui_remote.Enable()
|
|
m_button_key_create.Enable()
|
|
m_button_key_paste.Enable()
|
|
m_activity_start_button.Stop()
|
|
m_activity_start_button.Hide()
|
|
}
|
|
|
|
func start_button_click() {
|
|
m_lock_start.Lock()
|
|
defer m_lock_start.Unlock()
|
|
|
|
//先对需要填写的数据进行校验
|
|
switch m_stats_start_button {
|
|
case 0:
|
|
if len(m_validated_key.Text) < 16 {
|
|
SetLogLabel("请输入或点击生成连接密钥!")
|
|
return
|
|
}
|
|
switch m_radio_work_type.Selected {
|
|
case "Local":
|
|
if m_ui_local.GetLocalPort() == "" {
|
|
//SetLogLabel("请填写访问端口号")
|
|
//return
|
|
}
|
|
case "Remote":
|
|
switch m_ui_remote.GetRemoteType() {
|
|
case "代理模式":
|
|
case "转发模式":
|
|
}
|
|
}
|
|
|
|
// 保存配置文件, 下次启动加载
|
|
configByte, _ := json.Marshal(&config.ConfigInfo{
|
|
WorkType: m_radio_work_type.Selected,
|
|
TunKey: m_validated_key.Text,
|
|
ConnType: m_ui_local.GetConnType2(),
|
|
LocalIP: m_ui_local.GetLocalIP(),
|
|
LocalPort: m_ui_local.GetLocalPort(),
|
|
RemoteType: m_ui_remote.GetRemoteType(),
|
|
RemoteIP: m_ui_remote.GetRemoteIP(),
|
|
RemotePort: m_ui_remote.GetRemotePort(),
|
|
})
|
|
log.Println(string(configByte))
|
|
gogo.Utils().FileDel("goodlink.json")
|
|
gogo.Utils().FileAppend("goodlink.json", configByte)
|
|
}
|
|
|
|
switch m_stats_start_button {
|
|
case 0:
|
|
m_button_start.Disable()
|
|
disable_other("正在启动...")
|
|
|
|
switch m_radio_work_type.Selected {
|
|
case "Local":
|
|
m_mg_start.Add(1)
|
|
go func() {
|
|
defer func() {
|
|
m_activity_start_button.Stop()
|
|
m_activity_start_button.Hide()
|
|
m_mg_start.Done()
|
|
}()
|
|
|
|
time.Sleep(time.Second * 1)
|
|
if m_stats_start_button != 1 {
|
|
return
|
|
}
|
|
m_button_start.Enable()
|
|
m_button_start.Importance = widget.WarningImportance
|
|
m_button_start.SetText("关闭连接")
|
|
|
|
for m_stats_start_button == 1 {
|
|
switch pro.GetLocalStats() {
|
|
case 1:
|
|
m_activity_start_button.Start()
|
|
m_activity_start_button.Show()
|
|
m_button_start.Importance = widget.WarningImportance
|
|
m_button_start.Refresh()
|
|
case 2:
|
|
m_activity_start_button.Stop()
|
|
m_activity_start_button.Hide()
|
|
m_button_start.Importance = widget.SuccessImportance
|
|
m_button_start.Refresh()
|
|
}
|
|
time.Sleep(time.Second * 1)
|
|
}
|
|
}()
|
|
|
|
m_mg_start.Add(1)
|
|
go func() {
|
|
defer m_mg_start.Done()
|
|
if err := pro.RunLocal(m_validated_key.Text); err != nil {
|
|
SetLogLabel(err.Error())
|
|
}
|
|
m_stats_start_button = 0
|
|
m_button_start.Importance = widget.HighImportance
|
|
m_button_start.SetText("点击启动")
|
|
m_button_start.Enable()
|
|
enable_other()
|
|
}()
|
|
|
|
case "Remote":
|
|
m_mg_start.Add(1)
|
|
go func() {
|
|
defer m_mg_start.Done()
|
|
time.Sleep(time.Second * 1)
|
|
m_log_label.SetText("启动成功")
|
|
m_button_start.Importance = widget.SuccessImportance
|
|
m_button_start.SetText("点击停止")
|
|
m_activity_start_button.Stop()
|
|
m_activity_start_button.Hide()
|
|
m_button_start.Enable()
|
|
}()
|
|
|
|
m_mg_start.Add(1)
|
|
go func() {
|
|
defer m_mg_start.Done()
|
|
if err := pro.RunRemote(m_validated_key.Text); err != nil {
|
|
SetLogLabel(err.Error())
|
|
}
|
|
m_stats_start_button = 0
|
|
m_button_start.Importance = widget.HighImportance
|
|
m_button_start.SetText("点击启动")
|
|
enable_other()
|
|
}()
|
|
}
|
|
|
|
case 1:
|
|
m_button_start.Disable()
|
|
UILogPrintF("正在停止...")
|
|
m_stats_start_button = 0
|
|
|
|
switch m_radio_work_type.Selected {
|
|
case "Local":
|
|
go func() {
|
|
pro.StopLocal()
|
|
}()
|
|
|
|
case "Remote":
|
|
go func() {
|
|
pro.StopRemote()
|
|
}()
|
|
}
|
|
|
|
m_mg_start.Wait()
|
|
enable_other()
|
|
UILogPrintF("等待启动")
|
|
m_button_start.Importance = widget.HighImportance
|
|
m_button_start.SetText("点击启动")
|
|
m_button_start.Enable()
|
|
}
|
|
}
|