diff options
author | kali kaneko (leap communications) <kali@leap.se> | 2020-05-29 22:09:15 +0200 |
---|---|---|
committer | kali kaneko (leap communications) <kali@leap.se> | 2020-06-12 20:02:30 +0200 |
commit | 719413cad922e1d34f2ea495bae0165cae53b22f (patch) | |
tree | 2018091e2263b4bd69611a4f284e4d2febf36ec9 /pkg/systray/run.go | |
parent | 42593eb08464ace7be4d5dd088a48720591575c3 (diff) |
[refactor] copy over systray to new package
- delete gtk systray module
Diffstat (limited to 'pkg/systray/run.go')
-rw-r--r-- | pkg/systray/run.go | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/pkg/systray/run.go b/pkg/systray/run.go deleted file mode 100644 index 5764b36..0000000 --- a/pkg/systray/run.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright (C) 2018 LEAP -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -package systray - -import ( - "log" - "os" - - "0xacab.org/leap/bitmask-vpn/pkg/bitmask" - "0xacab.org/leap/bitmask-vpn/pkg/config" -) - -func Run(conf *Config) { - bt := bmTray{conf: conf, waitCh: make(chan bool)} - finishedCh := make(chan bool) - go initialize(conf, &bt, finishedCh) - go func() { - <-finishedCh - /* in osx, systray.Quit() halts the program */ - bt.quit() - os.Exit(0) - }() - bt.start() -} - -func initialize(conf *Config, bt *bmTray, finishedCh chan bool) { - defer func() { finishedCh <- true }() - if _, err := os.Stat(config.Path); os.IsNotExist(err) { - os.MkdirAll(config.Path, os.ModePerm) - } - - err := acquirePID() - if err != nil { - log.Fatal(err) - } - defer releasePID() - - notify := newNotificator(conf) - - b, err := bitmask.Init(conf.Printer) - if err != nil { - notify.initFailure(err) - return - } - defer b.Close() - go checkAndStartBitmask(b, notify, conf) - go listenSignals(b) - - var as bitmask.Autostart - if conf.DisableAustostart { - as = &bitmask.DummyAutostart{} - } else { - as = bitmask.NewAutostart(config.ApplicationName, getIconPath()) - } - err = as.Enable() - if err != nil { - log.Printf("Error enabling autostart: %v", err) - } - bt.loop(b, notify, as) -} - -func checkAndStartBitmask(b bitmask.Bitmask, notify *notificator, conf *Config) { - if conf.Obfs4 { - err := b.UseTransport("obfs4") - if err != nil { - log.Printf("Error setting transport: %v", err) - } - } - err := checkAndInstallHelpers(b, notify) - if err != nil { - log.Printf("Is bitmask running? %v", err) - os.Exit(1) - } - err = maybeStartVPN(b, conf) - if err != nil { - log.Println("Error starting VPN: ", err) - notify.errorStartingVPN(err) - } -} - -func checkAndInstallHelpers(b bitmask.Bitmask, notify *notificator) error { - helpers, priviledge, err := b.VPNCheck() - if (err != nil && err.Error() == "nopolkit") || (err == nil && !priviledge) { - log.Printf("No polkit found") - notify.authAgent() - os.Exit(1) - } else if err != nil { - log.Printf("Error checking vpn: %v", err) - notify.errorStartingVPN(err) - return err - } - - if !helpers { - err = b.InstallHelpers() - if err != nil { - log.Println("Error installing helpers: ", err) - } - } - return nil -} - -func maybeStartVPN(b bitmask.Bitmask, conf *Config) error { - if !conf.StartVPN { - return nil - } - - err := b.StartVPN(config.Provider) - conf.setUserStoppedVPN(false) - return err -} |