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:
Navis
2026-08-01 20:06:25 +03:00
parent e76c0a0977
commit 1144fab54d
32 changed files with 280 additions and 243 deletions
+15 -1
View File
@@ -47,12 +47,26 @@ func AdminConfigPath(cfgPath string) string {
return filepath.Join(filepath.Dir(cfgPath), "remnawave-api.json")
}
// ResolveAdminConfig prefers the baked-in (embedded) panel credentials;
// falls back to configs/remnawave-api.json for local/developer builds.
func ResolveAdminConfig(cfgPath string) (*AdminConfig, error) {
if cfg := EmbeddedAdminConfig(); cfg != nil {
return cfg, nil
}
return LoadAdminConfig(AdminConfigPath(cfgPath))
}
// LoadAdminConfig reads and validates the admin API config file.
func LoadAdminConfig(path string) (*AdminConfig, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("нет файла %s (скопируйте remnawave-api.example.json и вставьте ключ)", filepath.Base(path))
}
return parseAdminConfig(data)
}
// parseAdminConfig validates raw remnawave-api.json bytes (file or embedded).
func parseAdminConfig(data []byte) (*AdminConfig, error) {
var cfg AdminConfig
if err := json.Unmarshal(bytes.TrimPrefix(data, []byte{0xEF, 0xBB, 0xBF}), &cfg); err != nil {
return nil, fmt.Errorf("remnawave-api.json: некорректный JSON: %w", err)
@@ -252,7 +266,7 @@ func adminDo(ctx context.Context, client *http.Client, cfg *AdminConfig, method,
if err != nil {
return 0, "", err
}
req.Header.Set("User-Agent", "Navis/3.10 (Remnawave provision)")
req.Header.Set("User-Agent", "EvilFox/4.0 (Remnawave provision)")
req.Header.Set("Accept", "application/json")
if body != nil {
req.Header.Set("Content-Type", "application/json")