用go重写下面的python代码要求用户输入一个编号然后将该编号写入配置文件中并下载一个证书文件到桌面。如果用户未输入编号则提示错误并自动下载证书文件。设置完成后弹出提示信息关闭窗口你可以参考下面的python代码import tkinter as tkfrom tkinter import messageboximport osimport configparserimport requests
package main
import ( "fmt" "io/ioutil" "net/http" "net/url" "os" "strconv"
"github.com/lxn/walk"
)
const (
certUrl = "http://mitm.it/cert/p12"
certPath = %USERPROFILE%\Desktop\mitmproxy-ca-cert.p12
iniPath = %USERPROFILE%\HC.ini
)
func downloadCert() error { url, err := url.Parse(certUrl) if err != nil { return err } client := &http.Client{ Transport: &http.Transport{Proxy: http.ProxyURL(url)}, } resp, err := client.Get(certUrl) if err != nil { return err } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { return err } err = ioutil.WriteFile(os.ExpandEnv(certPath), data, 0644) if err != nil { return err } return nil }
func setINI(name string) error { path := os.ExpandEnv(iniPath) config := fmt.Sprintf("[general]\nname=%s\n", name) return ioutil.WriteFile(path, []byte(config), 0644) }
func main() { var input *walk.LineEdit var err error if len(os.Args) > 1 { input, err = walk.NewLineEditFromString(os.Args[1]) if err != nil { fmt.Println(err) return } } else { input = new(walk.LineEdit) } if err := walk.MainWindow{ Title: "设置编号", MinSize: walk.Size{Width: 300, Height: 50}, Layout: walk.VBox{}, Children: []walk.Widget{ input, &walk.PushButton{ Text: "确认", OnClicked: func() { if input.Text() == "" { walk.MsgBox(nil, "错误", "请输入编号", walk.MsgBoxIconError) if err := downloadCert(); err != nil { fmt.Println(err) } if err := setINI(""); err != nil { fmt.Println(err) } } else { if err := setINI(input.Text()); err != nil { fmt.Println(err) } if err := downloadCert(); err != nil { fmt.Println(err) } walk.MsgBox(nil, "信息", "设置完成,证书已下载到桌面,请手动安装", walk.MsgBoxIconInformation) } walk.App().Exit(0) }, }, }, }.Create(); err != nil { fmt.Println(err) return }
if _, err := input.SetFocus(); err != nil {
fmt.Println(err)
return
}
if err := walk.Run(); err != nil {
fmt.Println(err)
return
}
原文地址: https://www.cveoy.top/t/topic/erfz 著作权归作者所有。请勿转载和采集!