Release 4.0.0+1: rebrand Navis → EvilFox; centralized Remnawave auto-provisioning (panel credentials baked into binary); remove Remnawave API UI; Windows 4.0.0.1.
Keep dist/navis-release/ path and ship Navis.exe as a same-hash alias of EvilFox.exe so 3.x clients can still update from the Windows branch feed.
This commit is contained in:
@@ -71,7 +71,7 @@ func main() {
|
||||
log.Printf("open UI: %v — откройте вручную: %s", err, uiURL)
|
||||
fmt.Println(uiURL)
|
||||
} else {
|
||||
log.Printf("Navis UI: %s", uiURL)
|
||||
log.Printf("EvilFox UI: %s", uiURL)
|
||||
}
|
||||
|
||||
sig := make(chan os.Signal, 1)
|
||||
@@ -96,7 +96,7 @@ func openAppWindow(uiURL string) error {
|
||||
func fatalf(format string, args ...any) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
log.Println(msg)
|
||||
_ = exec.Command("osascript", "-e", fmt.Sprintf(`display alert "Navis" message %q`, msg)).Run()
|
||||
_ = exec.Command("osascript", "-e", fmt.Sprintf(`display alert "EvilFox" message %q`, msg)).Run()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Fprintln(os.Stderr, "Navis GUI supports Windows (WebView2) and macOS.")
|
||||
fmt.Fprintln(os.Stderr, "On this OS use the CLI: ./Navis connect | install-core | check-update")
|
||||
fmt.Fprintln(os.Stderr, "EvilFox GUI supports Windows (WebView2) and macOS.")
|
||||
fmt.Fprintln(os.Stderr, "On this OS use the CLI: ./evilfox-cli connect | install-core | check-update")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ func main() {
|
||||
AutoFocus: true,
|
||||
DataPath: dataPath,
|
||||
WindowOptions: webview2.WindowOptions{
|
||||
Title: "Navis 2",
|
||||
Title: "EvilFox",
|
||||
Width: 920,
|
||||
Height: 680,
|
||||
Center: true,
|
||||
@@ -160,12 +160,32 @@ func main() {
|
||||
mustBind(w, "getLogs", a.getLogs)
|
||||
|
||||
go a.autoCheckUpdate()
|
||||
go a.autoProvision()
|
||||
mgr.StartAutoRenew(6 * time.Hour)
|
||||
|
||||
w.SetHtml(appui.IndexHTML)
|
||||
w.Run()
|
||||
}
|
||||
|
||||
// autoProvision quietly issues a panel account + imports configs on first run
|
||||
// (NordVPN-style centralized provisioning — users never edit the panel).
|
||||
func (a *app) autoProvision() {
|
||||
if !a.mgr.ProvisionConfigured() {
|
||||
return
|
||||
}
|
||||
time.Sleep(2 * time.Second)
|
||||
out, err := a.mgr.EnsureAutoProvision()
|
||||
if err != nil {
|
||||
fmt.Fprintf(a.logBuf, "auto-provision: %v\n", err)
|
||||
return
|
||||
}
|
||||
if out.Created {
|
||||
fmt.Fprintf(a.logBuf, "auto-provision: создан %s · серверов %d\n", out.Username, out.Imported)
|
||||
} else if out.Imported > 0 {
|
||||
fmt.Fprintf(a.logBuf, "auto-provision: обновлены конфиги %s · серверов %d\n", out.Username, out.Imported)
|
||||
}
|
||||
}
|
||||
|
||||
func mustBind(w webview2.WebView, name string, fn interface{}) {
|
||||
if err := w.Bind(name, fn); err != nil {
|
||||
fatalDialog("bind %s: %v", name, err)
|
||||
@@ -503,12 +523,12 @@ func (a *app) applyUpdate() (string, error) {
|
||||
return "", err
|
||||
}
|
||||
_ = a.mgr.Disconnect()
|
||||
// Hard-exit so Windows unlocks Navis.exe; do not wait on webview.Terminate (can hang).
|
||||
// Hard-exit so Windows unlocks EvilFox.exe; do not wait on webview.Terminate (can hang).
|
||||
go func() {
|
||||
time.Sleep(300 * time.Millisecond)
|
||||
os.Exit(0)
|
||||
}()
|
||||
return "Устанавливается v" + latest + "… Navis перезапустится.", nil
|
||||
return "Устанавливается v" + latest + "… EvilFox перезапустится.", nil
|
||||
}
|
||||
|
||||
func (a *app) autoCheckUpdate() {
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
func messageBox(text string) {
|
||||
user32 := syscall.NewLazyDLL("user32.dll")
|
||||
proc := user32.NewProc("MessageBoxW")
|
||||
title, _ := syscall.UTF16PtrFromString("Navis")
|
||||
title, _ := syscall.UTF16PtrFromString("EvilFox")
|
||||
body, _ := syscall.UTF16PtrFromString(text)
|
||||
proc.Call(0, uintptr(unsafe.Pointer(body)), uintptr(unsafe.Pointer(title)), 0x10) // MB_ICONERROR
|
||||
}
|
||||
|
||||
@@ -59,16 +59,16 @@ func main() {
|
||||
}
|
||||
|
||||
func printUsage() {
|
||||
fmt.Fprintf(os.Stderr, `Navis VPN client (Naive / Hy2 / AWG / VLESS / VMess / Trojan) — Windows / macOS
|
||||
fmt.Fprintf(os.Stderr, `EvilFox VPN client (Naive / Hy2 / AWG / VLESS / VMess / Trojan) — Windows / macOS
|
||||
|
||||
Usage:
|
||||
navis init [-config configs/config.json]
|
||||
navis install-core [-config configs/config.json]
|
||||
navis set-proxy [-config configs/config.json] <share-or-proxy-uri>
|
||||
navis connect [-config configs/config.json] [-profile name] [-no-sysproxy] [-probe]
|
||||
navis probe [-config configs/config.json] [-profile name] [-url URL]
|
||||
navis check-update
|
||||
navis apply-update
|
||||
evilfox-cli init [-config configs/config.json]
|
||||
evilfox-cli install-core [-config configs/config.json]
|
||||
evilfox-cli set-proxy [-config configs/config.json] <share-or-proxy-uri>
|
||||
evilfox-cli connect [-config configs/config.json] [-profile name] [-no-sysproxy] [-probe]
|
||||
evilfox-cli probe [-config configs/config.json] [-profile name] [-url URL]
|
||||
evilfox-cli check-update
|
||||
evilfox-cli apply-update
|
||||
|
||||
Share links: naive+https://… hysteria2://… vless://… vmess://… trojan://… awg .conf
|
||||
|
||||
|
||||
Reference in New Issue
Block a user