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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录