mirror of
https://gitee.com/konyshe/goodlink.git
synced 2025-09-26 20:51:22 +08:00
u
This commit is contained in:
@@ -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
|
||||
|
103
ui2/start.go
103
ui2/start.go
@@ -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()
|
||||
}()
|
||||
}
|
||||
|
78
ui2/ui.go
78
ui2/ui.go
@@ -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))
|
||||
}
|
||||
|
Reference in New Issue
Block a user