Go 语言图形界面:证书下载和配置工具代码
package main
import ( "fmt" "github.com/gen2brain/dlgs" "github.com/lxn/walk" . "github.com/lxn/walk/declarative" "io" "net/http" "os" "path/filepath" )
func downloadFile(url string, filepath string) error { // 创建文件 out, err := os.Create(filepath) if err != nil { return err } defer out.Close()
// 发送请求并下载文件
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
// 写入文件
_, err = io.Copy(out, resp.Body)
if err != nil {
return err
}
return nil
}
func writeIni(name string) error { // 获取用户目录 userDir, err := os.UserHomeDir() if err != nil { return err }
// 获取配置文件路径
iniPath := filepath.Join(userDir, 'HC.ini')
// 创建配置文件
f, err := os.Create(iniPath)
if err != nil {
return err
}
defer f.Close()
// 写入配置
_, err = f.WriteString('[general]
') if err != nil { return err }
return nil
}
func main() { var ( entry *walk.LineEdit mainWindow *walk.MainWindow )
// 创建GUI界面
MainWindow{
AssignTo: &mainWindow,
Title: '证书下载和配置',
MinSize: Size{Width: 300, Height: 100},
Layout: VBox{},
Children: []Widget{
LineEdit{
AssignTo: &entry,
},
PushButton{
Text: '下载证书并写入配置',
OnClicked: func() {
// 获取编辑框内容
entryText := entry.Text()
// 如果编辑框内容为空,则提示错误信息
if entryText == '' {
dlgs.Error(mainWindow, '错误', '请输入编号')
return
}
// 下载证书
filepath := filepath.Join(os.Getenv('USERPROFILE'), 'Desktop', 'mitmproxy-ca-cert.p12')
err := downloadFile('http://mitm.it/cert/p12', filepath)
if err != nil {
dlgs.Error(mainWindow, '错误', fmt.Sprintf('下载证书失败: %v', err))
return
}
// 写入配置文件
err = writeIni(entryText)
if err != nil {
dlgs.Error(mainWindow, '错误', fmt.Sprintf('写入配置文件失败: %v', err))
return
}
// 提示设置完成信息
dlgs.Info(mainWindow, '信息', '设置完成,证书已下载到桌面请手动安装')
},
},
},
OnSizeChanged: func() {
if mainWindow.Visible() {
mainWindow.Hide()
}
},
}.Run()
}
原文地址: https://www.cveoy.top/t/topic/nRR4 著作权归作者所有。请勿转载和采集!