证书下载和配置工具 - 无需GUI界面
该代码实现了一个简单的证书下载和配置工具,无需GUI界面,用户只需输入证书编号,即可自动下载证书文件并将其路径写入一个配置文件中。
功能:
- 证书下载: 下载
mitmproxy-ca-cert.p12证书文件到用户桌面。 - 配置文件写入: 将证书文件路径写入
HC.ini配置文件,该文件保存在用户目录下。
使用说明:
- 运行程序。
- 在编辑框中输入证书编号。
- 点击'下载证书并写入配置'按钮。
程序流程:
- 获取用户输入的证书编号。
- 下载证书文件到用户桌面。
- 将证书文件路径写入配置文件。
- 提示用户设置完成,并提示手动安装证书。
代码说明:
- 使用
walk库简化代码编写,但程序本身不依赖任何GUI库。 downloadFile函数用于下载证书文件。writeIni函数用于写入配置文件。main函数负责处理用户输入和执行下载和写入操作。
注意:
- 该程序仅供学习参考,不建议在生产环境使用。
- 程序中的证书下载地址为
http://mitm.it/cert/p12,请确保该地址可用。 - 程序中使用了
USERPROFILE环境变量来获取用户桌面路径,请确保环境变量可用。
代码示例:
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
)
// 创建GUI界面
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('错误', '请输入编号')
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('错误', fmt.Sprintf('下载证书失败: %v', err))
return
}
// 写入配置文件
err = writeIni(entryText)
if err != nil {
dlgs.Error('错误', fmt.Sprintf('写入配置文件失败: %v', err))
return
}
// 提示设置完成信息
dlgs.Info('信息', '设置完成,证书已下载到桌面请手动安装')
// 关闭窗口
walk.App().Exit(0)
},
},
},
}.Run()
}
原文地址: https://www.cveoy.top/t/topic/nRO9 著作权归作者所有。请勿转载和采集!