Release 3.9.0+1: Remnawave API configs, Remnawave-style UI with flags, Windows build.

EOF

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Navis
2026-08-01 16:17:10 +03:00
co-authored by Cursor
parent 92cf707597
commit 015ded9bd5
24 changed files with 985 additions and 159 deletions
+23
View File
@@ -21,6 +21,7 @@ import (
"vpnclient/internal/protocols/hysteria2"
"vpnclient/internal/protocols/naive"
"vpnclient/internal/protocols/xray"
"vpnclient/internal/remnawave"
"vpnclient/internal/update"
)
@@ -53,6 +54,7 @@ type UIState struct {
Update update.Status `json:"update"`
Pings []netcheck.Result `json:"pings"`
Subscription string `json:"subscription_url"`
Remnawave remnawave.Settings `json:"remnawave"`
Hy2 core.Hy2Options `json:"hy2"`
StorePackaged bool `json:"store_packaged,omitempty"`
}
@@ -130,6 +132,7 @@ func (a *App) GetState() (UIState, error) {
Update: a.UpdateStatus,
Pings: append([]netcheck.Result(nil), a.Pings...),
Subscription: cfg.SubscriptionURL,
Remnawave: a.Mgr.RemnawaveSettings(),
Hy2: a.Mgr.ActiveHy2Options(),
StorePackaged: update.IsStorePackaged(),
}
@@ -240,6 +243,14 @@ func (a *App) ImportSubscription(rawURL string) (int, error) {
return a.Mgr.ImportSubscription(rawURL)
}
func (a *App) SaveRemnawave(s remnawave.Settings) error {
return a.Mgr.SaveRemnawaveSettings(s)
}
func (a *App) ImportRemnawave(s remnawave.Settings) (int, error) {
return a.Mgr.ImportRemnawave(s)
}
func (a *App) PingServers() ([]netcheck.Result, error) {
return a.runPings()
}
@@ -486,6 +497,18 @@ func (a *App) dispatch(name string, args []json.RawMessage) (any, error) {
return nil, a.SaveHy2(opts)
case "importSubscription":
return a.ImportSubscription(arg(args, 0, ""))
case "saveRemnawave":
var s remnawave.Settings
if len(args) > 0 {
_ = json.Unmarshal(args[0], &s)
}
return nil, a.SaveRemnawave(s)
case "importRemnawave":
var s remnawave.Settings
if len(args) > 0 {
_ = json.Unmarshal(args[0], &s)
}
return a.ImportRemnawave(s)
case "quit":
go func() {
time.Sleep(200 * time.Millisecond)