From 3234cdbd265a75182df1614c125707149d6c8e0b Mon Sep 17 00:00:00 2001 From: "kali kaneko (leap communications)" Date: Fri, 24 Sep 2021 20:58:30 +0200 Subject: [feat] persist obfs4 & udp prefs --- pkg/backend/actions.go | 7 ------- pkg/backend/api.go | 16 +++++++++++++++- pkg/backend/init.go | 4 ++-- pkg/backend/status.go | 2 ++ pkg/config/gui.go | 34 ++++++++++++++++++++++++---------- 5 files changed, 43 insertions(+), 20 deletions(-) (limited to 'pkg') diff --git a/pkg/backend/actions.go b/pkg/backend/actions.go index 9e0941b..805c5ad 100644 --- a/pkg/backend/actions.go +++ b/pkg/backend/actions.go @@ -23,10 +23,3 @@ func stopVPN() { func getGateway() string { return ctx.bm.GetCurrentGateway() } - -func setTransport(t string) { - err := ctx.bm.SetTransport(t) - if err != nil { - log.Println(err) - } -} diff --git a/pkg/backend/api.go b/pkg/backend/api.go index 96f3072..51fa377 100644 --- a/pkg/backend/api.go +++ b/pkg/backend/api.go @@ -80,7 +80,21 @@ func UseAutomaticGateway() { } func SetTransport(label string) { - ctx.bm.SetTransport(label) + err := ctx.bm.SetTransport(label) + if err != nil { + log.Println(err) + } + if label == "obfs4" { + ctx.cfg.SetUseObfs4(true) + } else { + ctx.cfg.SetUseObfs4(false) + } + go trigger(OnStatusChanged) +} + +func SetUDP(udp bool) { + log.Println("DEBUG setting UDP") + ctx.cfg.SetUseUDP(udp) go trigger(OnStatusChanged) } diff --git a/pkg/backend/init.go b/pkg/backend/init.go index fcde725..70a3582 100644 --- a/pkg/backend/init.go +++ b/pkg/backend/init.go @@ -103,13 +103,13 @@ func setConfigOpts(opts *InitOpts, conf *config.Config) { conf.Obfs4 = opts.Obfs4 } if opts.DisableAutostart { - conf.DisableAustostart = opts.DisableAutostart + conf.DisableAutostart = opts.DisableAutostart } } func initializeAutostart(conf *config.Config) bitmask.Autostart { autostart := bitmask.NewAutostart(config.ApplicationName, "") - if conf.SkipLaunch || conf.DisableAustostart { + if conf.SkipLaunch || conf.DisableAutostart { autostart.Disable() autostart = &bitmask.DummyAutostart{} } diff --git a/pkg/backend/status.go b/pkg/backend/status.go index c5f79d1..79b70ff 100644 --- a/pkg/backend/status.go +++ b/pkg/backend/status.go @@ -51,6 +51,7 @@ type connectionCtx struct { CurrentCountry string `json:"currentCountry"` BestLocation string `json:"bestLocation"` Transport string `json:"transport"` + UseUDP bool `json:"udp"` ManualLocation bool `json:"manualLocation"` IsReady bool `json:"isReady"` bm bitmask.Bitmask @@ -69,6 +70,7 @@ func (c *connectionCtx) toJson() ([]byte, error) { c.CurrentCountry = c.bm.GetCurrentCountry() c.BestLocation = c.bm.GetBestLocation(transport) c.Transport = transport + c.UseUDP = c.cfg.UDP // TODO initialize bitmask too c.ManualLocation = c.bm.IsManualLocation() } defer statusMutex.Unlock() diff --git a/pkg/config/gui.go b/pkg/config/gui.go index f5ae7a2..6004d20 100644 --- a/pkg/config/gui.go +++ b/pkg/config/gui.go @@ -36,16 +36,18 @@ var ( // Config holds the configuration of the systray type Config struct { file struct { - LastReminded time.Time - Donated time.Time - Obfs4 bool - UserStoppedVPN bool - DisableAustostart bool + LastReminded time.Time + Donated time.Time + Obfs4 bool + UserStoppedVPN bool + DisableAutostart bool + UDP bool } - Obfs4 bool - DisableAustostart bool - StartVPN bool - SkipLaunch bool + SkipLaunch bool + Obfs4 bool + DisableAutostart bool + StartVPN bool + UDP bool } // ParseConfig reads the configuration from the configuration file @@ -62,7 +64,7 @@ func ParseConfig() *Config { } conf.Obfs4 = conf.file.Obfs4 - conf.DisableAustostart = conf.file.DisableAustostart + conf.DisableAutostart = conf.file.DisableAutostart conf.StartVPN = !conf.file.UserStoppedVPN return &conf } @@ -90,6 +92,18 @@ func (c *Config) SetDonated() error { return c.save() } +func (c *Config) SetUseObfs4(val bool) error { + c.Obfs4 = val + c.file.Obfs4 = val + return c.save() +} + +func (c *Config) SetUseUDP(val bool) error { + c.UDP = val + c.file.UDP = val + return c.save() +} + func (c *Config) save() error { f, err := os.Create(configPath) if err != nil { -- cgit v1.2.3