add firewall notification and fix GPU mode in shellcode
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
//go:build windows && overlord_webrtc
|
||||
|
||||
package webrtcpub
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"syscall"
|
||||
|
||||
"golang.org/x/sys/windows"
|
||||
)
|
||||
|
||||
const createNoWindowFlag = 0x08000000
|
||||
|
||||
var firewallOnce sync.Once
|
||||
|
||||
func ensureFirewallRule() {
|
||||
firewallOnce.Do(func() {
|
||||
if !windows.GetCurrentProcessToken().IsElevated() {
|
||||
return
|
||||
}
|
||||
exe, err := os.Executable()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if resolved, err := filepath.EvalSymlinks(exe); err == nil {
|
||||
exe = resolved
|
||||
}
|
||||
|
||||
ruleName := filepath.Base(exe)
|
||||
hidden := &syscall.SysProcAttr{HideWindow: true, CreationFlags: createNoWindowFlag}
|
||||
|
||||
del := exec.Command("netsh", "advfirewall", "firewall", "delete", "rule",
|
||||
"name="+ruleName, "program="+exe)
|
||||
del.SysProcAttr = hidden
|
||||
_ = del.Run()
|
||||
|
||||
add := exec.Command("netsh", "advfirewall", "firewall", "add", "rule",
|
||||
"name="+ruleName, "dir=in", "action=allow", "program="+exe, "enable=yes")
|
||||
add.SysProcAttr = hidden
|
||||
if err := add.Run(); err != nil {
|
||||
log.Printf("webrtcpub: firewall rule add failed: %v", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user