From d0703ec25f2625ffd61489da4e2f45a7bc1be29b Mon Sep 17 00:00:00 2001
From: Ruben Pollan <meskio@sindominio.net>
Date: Mon, 4 Feb 2019 23:36:37 +0100
Subject: [PATCH] [feat] Add -start-vpn flag

The -start-vpn flag can be set to on or off to turn the vpn on or off
just after launching bitmask-vpn. So it doesn't depend on the status of
the vpn of the last run.

- Resolves: #114
---
 cmd/bitmask-vpn/main.go | 8 ++++++++
 pkg/systray/config.go   | 6 ++----
 pkg/systray/run.go      | 2 +-
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/cmd/bitmask-vpn/main.go b/cmd/bitmask-vpn/main.go
index ad85b0ef..77ace31a 100644
--- a/cmd/bitmask-vpn/main.go
+++ b/cmd/bitmask-vpn/main.go
@@ -51,12 +51,20 @@ func main() {
 
 	selectGateway := flag.Bool("select-gateway", false, "Enable gateway selection")
 	disableAutostart := flag.Bool("disable-autostart", false, "Disable the autostart for the next run")
+	startVPN := flag.String("start-vpn", "", "Start the vpn in turned 'on' or 'off'")
 	versionFlag := flag.Bool("version", false, "Version of the bitmask-systray")
 	flag.Parse()
 	if *versionFlag {
 		fmt.Println(version)
 		os.Exit(0)
 	}
+	if *startVPN != "" {
+		if *startVPN != "on" && *startVPN != "off" {
+			fmt.Println("-start-vpn should be 'on' or 'off'")
+			os.Exit(1)
+		}
+		conf.StartVPN = *startVPN == "on"
+	}
 	if *selectGateway {
 		conf.SelectGateway = *selectGateway
 	}
diff --git a/pkg/systray/config.go b/pkg/systray/config.go
index 27558510..e53dea9a 100644
--- a/pkg/systray/config.go
+++ b/pkg/systray/config.go
@@ -45,6 +45,7 @@ type Config struct {
 	}
 	SelectGateway     bool
 	DisableAustostart bool
+	StartVPN          bool
 	Version           string
 	Printer           *message.Printer
 }
@@ -65,6 +66,7 @@ func ParseConfig() *Config {
 
 	conf.SelectGateway = conf.file.SelectGateway
 	conf.DisableAustostart = conf.file.DisableAustostart
+	conf.StartVPN = !conf.file.UserStoppedVPN
 	return &conf
 }
 
@@ -73,10 +75,6 @@ func (c *Config) setUserStoppedVPN(vpnStopped bool) error {
 	return c.save()
 }
 
-func (c *Config) wasUserStopped() bool {
-	return c.file.UserStoppedVPN
-}
-
 func (c *Config) hasDonated() bool {
 	return c.file.Donated.Add(oneMonth).After(time.Now())
 }
diff --git a/pkg/systray/run.go b/pkg/systray/run.go
index 28789287..172b9e85 100644
--- a/pkg/systray/run.go
+++ b/pkg/systray/run.go
@@ -98,7 +98,7 @@ func checkAndInstallHelpers(b bitmask.Bitmask, notify *notificator) error {
 }
 
 func maybeStartVPN(b bitmask.Bitmask, conf *Config) error {
-	if conf.wasUserStopped() {
+	if !conf.StartVPN {
 		return nil
 	}
 
-- 
GitLab