This commit is contained in:
kony
2024-12-30 13:32:09 +08:00
parent 7c948c8e21
commit bf5bf86ba5
6 changed files with 92 additions and 91 deletions

View File

@@ -5,4 +5,4 @@ Website = "https://goodlink.kony.vip"
Name = "goodlink-windows-amd64"
ID = "goodlink.kony.vip"
Version = "1.13.17"
Build = 0
Build = 2

View File

@@ -20,59 +20,59 @@ import (
)
var (
m_start_mg sync.WaitGroup
m_start_lock sync.Mutex
m_start_button *widget.Button
m_start_button_activity *widget.Activity
m_start_button_stats int
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 start_button_click_1(content string) {
m_start_button.Disable()
m_radio.Disable()
m_key_validated.Disable()
m_local_ui.Disable()
m_key_create_button.Disable()
m_key_paste_button.Disable()
m_start_button_activity.Start()
m_start_button_activity.Show()
m_log_view.SetText(content)
m_start_button_stats = 1
m_button_start.Disable()
m_radio_work_type.Disable()
m_validated_key.Disable()
m_ui_local.Disable()
m_button_key_create.Disable()
m_button_key_paste.Disable()
m_activity_start_button.Start()
m_activity_start_button.Show()
m_view_log.SetText(content)
m_stats_start_button = 1
}
func start_button_click_0() {
m_radio.Enable()
m_key_validated.Enable()
m_local_ui.Enable()
m_key_create_button.Enable()
m_key_paste_button.Enable()
m_start_button_activity.Stop()
m_start_button_activity.Hide()
m_radio_work_type.Enable()
m_validated_key.Enable()
m_ui_local.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_start_lock.Lock()
defer m_start_lock.Unlock()
m_lock_start.Lock()
defer m_lock_start.Unlock()
var err error
var remote_addr string
var local_addr string
//先对需要填写的数据进行校验
switch m_start_button_stats {
switch m_stats_start_button {
case 0:
if len(m_key_validated.Text) < 16 {
if len(m_validated_key.Text) < 16 {
SetLogLabel("请输入或点击生成连接密钥!")
return
}
switch m_radio.Selected {
switch m_radio_work_type.Selected {
case "Local":
if local_addr, err = m_local_ui.GetLocalAddr(); err != nil {
if local_addr, err = m_ui_local.GetLocalAddr(); err != nil {
SetLogLabel(err.Error())
return
}
case "Remote":
if remote_addr, err = m_remote_ui.GetRemoteAddr(); err != nil {
if remote_addr, err = m_ui_remote.GetRemoteAddr(); err != nil {
SetLogLabel(err.Error())
return
}
@@ -81,60 +81,61 @@ func start_button_click() {
log.Println(local_addr)
configByte, _ := json.Marshal(&config.ConfigInfo{
WorkType: m_radio.Selected,
TunKey: m_key_validated.Text,
ConnType: m_local_ui.GetConnType2(),
LocalIP: m_local_ui.GetLocalIP(),
LocalPort: m_local_ui.GetLocalPort(),
RemoteType: m_remote_ui.GetRemoteType(),
RemoteIP: m_remote_ui.GetRemoteIP(),
RemotePort: m_remote_ui.GetRemotePort(),
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_start_button_stats {
switch m_stats_start_button {
case 0:
start_button_click_1("正在启动...")
go func() {
time.Sleep(time.Second * 1)
m_start_button.Enable()
m_button_start.Enable()
for m_start_button_stats == 1 {
for m_stats_start_button == 1 {
if pro.GetLocalStats() == 2 {
m_log_view.SetText("连接成功")
m_view_log.SetText("连接成功")
break
}
time.Sleep(time.Millisecond * 200)
}
}()
switch m_radio.Selected {
switch m_radio_work_type.Selected {
case "Local":
m_start_mg.Add(1)
m_mg_start.Add(1)
go func() {
defer m_start_mg.Done()
if err := pro.RunLocal(m_local_ui.GetConnType(), remote_addr, m_key_validated.Text); err != nil {
defer m_mg_start.Done()
if err := pro.RunLocal(m_ui_local.GetConnType(), remote_addr, m_validated_key.Text); err != nil {
SetLogLabel(err.Error())
m_start_button_stats = 0
m_stats_start_button = 0
return
}
}()
}
case 1:
m_start_button.Disable()
m_log_view.SetText("正在停止...")
m_start_button_stats = 0
m_button_start.Disable()
m_view_log.SetText("正在停止...")
m_stats_start_button = 0
switch m_radio.Selected {
switch m_radio_work_type.Selected {
case "Local":
go func() {
log.Println("stop local")
pro.StopLocal()
m_start_mg.Wait()
m_mg_start.Wait()
start_button_click_0()
}()
}

View File

@@ -24,20 +24,20 @@ import (
)
var (
m_radio *widget.RadioGroup
m_key_validated *widget.Entry
m_local_ui *LocalUI
m_remote_ui *RemoteUI
m_key_create_button *widget.Button
m_key_paste_button *widget.Button
m_log_view *LogLabel
m_radio_work_type *widget.RadioGroup
m_validated_key *widget.Entry
m_ui_local *LocalUI
m_ui_remote *RemoteUI
m_button_key_create *widget.Button
m_button_key_paste *widget.Button
m_view_log *LogLabel
)
const (
M_APP_TITLE = "GoodLink"
)
func LogInit(m_log_view *LogLabel) {
func LogInit(m_view_log *LogLabel) {
gogo.Log().RegistInfo(func(content string) {
SetLogLabel(content)
log.Println(content)
@@ -56,33 +56,33 @@ func GetMainUI(myWindow *fyne.Window) *fyne.Container {
json.Unmarshal(gogo.Utils().FileReadAll("goodlink.json"), &configInfo)
log.Println(configInfo)
m_key_validated = widget.NewEntry()
m_key_validated.SetPlaceHolder("自定义16-24字节长度")
m_validated_key = widget.NewEntry()
m_validated_key.SetPlaceHolder("自定义16-24字节长度")
if len(configInfo.TunKey) > 0 {
m_key_validated.SetText(configInfo.TunKey)
m_validated_key.SetText(configInfo.TunKey)
}
m_key_create_button = widget.NewButton("生成密钥", func() {
m_key_validated.SetText(tools.RandomString(24))
m_button_key_create = widget.NewButton("生成密钥", func() {
m_validated_key.SetText(tools.RandomString(24))
})
key_copy_button := widget.NewButton("复制密钥", func() {
clipboard.WriteAll(m_key_validated.Text)
clipboard.WriteAll(m_validated_key.Text)
})
m_key_paste_button = widget.NewButton("粘贴密钥", func() {
m_button_key_paste = widget.NewButton("粘贴密钥", func() {
if s, err := clipboard.ReadAll(); err == nil {
m_key_validated.SetText(s)
m_validated_key.SetText(s)
}
})
m_local_ui = NewLocalUI(myWindow, &configInfo)
localUI_Container := m_local_ui.GetContainer()
m_ui_local = NewLocalUI(myWindow, &configInfo)
localUI_Container := m_ui_local.GetContainer()
m_remote_ui = NewRemoteUI(myWindow, &configInfo)
remoteUI_Container := m_remote_ui.GetContainer()
m_ui_remote = NewRemoteUI(myWindow, &configInfo)
remoteUI_Container := m_ui_remote.GetContainer()
m_radio = widget.NewRadioGroup([]string{"Remote", "Local"}, nil)
m_radio.Horizontal = true
m_radio.OnChanged = func(value string) {
m_radio_work_type = widget.NewRadioGroup([]string{"Remote", "Local"}, nil)
m_radio_work_type.Horizontal = true
m_radio_work_type.OnChanged = func(value string) {
switch value {
case "Remote":
localUI_Container.Hide()
@@ -91,30 +91,30 @@ func GetMainUI(myWindow *fyne.Window) *fyne.Container {
remoteUI_Container.Hide()
localUI_Container.Show()
default:
m_radio.SetSelected("Local")
m_radio_work_type.SetSelected("Local")
}
}
m_radio.SetSelected(configInfo.WorkType)
m_radio_work_type.SetSelected(configInfo.WorkType)
m_log_view = NewLogLabel("等待启动")
LogInit(m_log_view)
m_view_log = NewLogLabel("等待启动")
LogInit(m_view_log)
m_start_button_stats = 0
m_start_button_activity = widget.NewActivity()
m_start_button = widget.NewButton("点击启动", start_button_click)
m_start_button.Importance = widget.HighImportance
m_start_button.Resize(fyne.NewSize(100, 40))
m_start_button.Disable()
m_stats_start_button = 0
m_activity_start_button = widget.NewActivity()
m_button_start = widget.NewButton("点击启动", start_button_click)
m_button_start.Importance = widget.HighImportance
m_button_start.Resize(fyne.NewSize(100, 40))
m_button_start.Disable()
go func() {
pro.Init("", "", 0)
m_start_button.Enable()
m_button_start.Enable()
}()
return container.New(layout.NewVBoxLayout(),
container.New(layout.NewFormLayout(), widget.NewRichTextWithText("工作端侧: "), m_radio),
container.New(layout.NewFormLayout(), widget.NewRichTextWithText("连接密钥: "), m_key_validated),
container.NewGridWithColumns(3, m_key_create_button, key_copy_button, m_key_paste_button),
container.New(layout.NewFormLayout(), widget.NewRichTextWithText("工作端侧: "), m_radio_work_type),
container.New(layout.NewFormLayout(), widget.NewRichTextWithText("连接密钥: "), m_validated_key),
container.NewGridWithColumns(3, m_button_key_create, key_copy_button, m_button_key_paste),
localUI_Container, remoteUI_Container,
container.New(layout.NewFormLayout(), widget.NewRichTextWithText("当前状态: "), m_log_view),
container.NewStack(m_start_button, m_start_button_activity))
container.New(layout.NewFormLayout(), widget.NewRichTextWithText("当前状态: "), m_view_log),
container.NewStack(m_button_start, m_activity_start_button))
}