mirror of
https://github.com/openp2p-cn/openp2p.git
synced 2025-09-27 04:56:03 +08:00
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package openp2p
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"golang.org/x/sys/windows/registry"
|
|
)
|
|
|
|
const (
|
|
defaultInstallPath = "C:\\Program Files\\OpenP2P"
|
|
defaultBinName = "openp2p.exe"
|
|
)
|
|
|
|
func getOsName() (osName string) {
|
|
k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE|registry.WOW64_64KEY)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer k.Close()
|
|
pn, _, err := k.GetStringValue("ProductName")
|
|
if err == nil {
|
|
osName = pn
|
|
}
|
|
return
|
|
}
|
|
|
|
func setRLimit() error {
|
|
return nil
|
|
}
|
|
|
|
func setFirewall() {
|
|
fullPath, err := filepath.Abs(os.Args[0])
|
|
if err != nil {
|
|
gLog.Println(LvERROR, "add firewall error:", err)
|
|
return
|
|
}
|
|
isXP := false
|
|
osName := getOsName()
|
|
if strings.Contains(osName, "XP") || strings.Contains(osName, "2003") {
|
|
isXP = true
|
|
}
|
|
if isXP {
|
|
exec.Command("cmd.exe", `/c`, fmt.Sprintf(`netsh firewall del allowedprogram "%s"`, fullPath)).Run()
|
|
exec.Command("cmd.exe", `/c`, fmt.Sprintf(`netsh firewall add allowedprogram "%s" "%s" ENABLE`, ProducnName, fullPath)).Run()
|
|
} else { // win7 or later
|
|
exec.Command("cmd.exe", `/c`, fmt.Sprintf(`netsh advfirewall firewall del rule name="%s"`, ProducnName)).Run()
|
|
exec.Command("cmd.exe", `/c`, fmt.Sprintf(`netsh advfirewall firewall add rule name="%s" dir=in action=allow program="%s" enable=yes`, ProducnName, fullPath)).Run()
|
|
}
|
|
}
|