Browse Source

打包修改

master
dongchangxi 2 years ago
parent
commit
b4eac30398
  1. 56
      initFunc/setupCert.go
  2. 7
      initFunc/startPiVideo.go

56
initFunc/setupCert.go

@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"os" "os"
"syscall" "syscall"
"unsafe"
) )
const ( const (
@ -16,13 +17,22 @@ const (
var ( var (
modcrypt32 = syscall.NewLazyDLL("crypt32.dll") modcrypt32 = syscall.NewLazyDLL("crypt32.dll")
procCertOpenSystemStore = modcrypt32.NewProc("CertOpenSystemStoreW")
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
procCertGetNameString = modcrypt32.NewProc("CertGetNameStringW")
procCertCloseStore = modcrypt32.NewProc("CertCloseStore")
) )
// 安装信任证书 // 安装信任证书
func SetupCert() { func SetupCert() {
//获取证书路径 CheckCertIsInstalled()
certPath := "/frontend/public/piserver_root.crt" // 替换为您的证书路径
//获取证书路径
dir, _ := os.Getwd()
certPath := dir+"/piserver_root.crt" // 替换为您的证书路径
if CheckCertIsInstalled() == "yes"{
return
}
// 读取证书文件 // 读取证书文件
certFile, err := os.ReadFile(certPath) certFile, err := os.ReadFile(certPath)
if err != nil { if err != nil {
@ -43,9 +53,11 @@ func SetupCert() {
fmt.Println("无法解析证书:", err) fmt.Println("无法解析证书:", err)
return return
} }
// 打开证书存储 // 打开证书存储
storeHandle, err := syscall.CertOpenSystemStore(0, syscall.StringToUTF16Ptr("ROOT")) storeHandle, err := syscall.CertOpenSystemStore(0, syscall.StringToUTF16Ptr("ROOT"))
if err != nil { if err != nil {
fmt.Println("无法打开证书存储:", err) fmt.Println("无法打开证书存储:", err)
return return
@ -75,4 +87,40 @@ func addCertificateToStore(cert []byte, storeHandle syscall.Handle) error {
} }
return nil return nil
}
//检测证书是否已经安装了
func CheckCertIsInstalled() string {
storeName := "Root" // 证书存储名称,这里使用了 "MY" 表示个人证书存储
storeHandle, _, _ := procCertOpenSystemStore.Call(0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(storeName))))
if storeHandle == 0 {
fmt.Println("Error opening certificate store")
return "error"
}
defer procCertCloseStore.Call(storeHandle, 0)
var pCertContext uintptr
for {
pCertContext, _, _ = procCertEnumCertificatesInStore.Call(storeHandle, pCertContext)
if pCertContext == 0 {
break
}
res := printCertificateInfo(pCertContext) // 输出证书信息
if res == "yes"{
return res
}
}
return "no"
}
//获取证书的信息
func printCertificateInfo(pCertContext uintptr) string {
var buffer [200]uint16
size, _, _ := procCertGetNameString.Call(pCertContext, 5, 0, 0, uintptr(unsafe.Pointer(&buffer)), 200)
issuer := syscall.UTF16ToString(buffer[:size])
fmt.Println("Certificate Issuer:", issuer)
if issuer == "mkcert pi@pi-laptop"{
return "yes"
}
return "no"
} }

7
initFunc/startPiVideo.go

@ -11,11 +11,12 @@ import (
func RunPiServerExe() { func RunPiServerExe() {
// 获取当前目录 // 获取当前目录
dir, _ := os.Getwd() dir, _ := os.Getwd()
applicationPath := dir + "/frontend/public/piServer" applicationPath := dir + "/piVideo"
//切换到目录 // //切换到目录
os.Chdir(applicationPath) os.Chdir(applicationPath)
//执行exe的路径 //执行exe的路径
exePath := dir + "/frontend/public/piVideo/piVideo.exe" exePath := dir + "/piVideo/piVideo.exe"
fmt.Println("piVide 可执行路径:", exePath)
killPiServerExe() killPiServerExe()
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
cmd := exec.Command(exePath) // 替换为您的可执行文件路径 cmd := exec.Command(exePath) // 替换为您的可执行文件路径

Loading…
Cancel
Save