summaryrefslogtreecommitdiff
path: root/pkg/systray/run.go
diff options
context:
space:
mode:
authorkali kaneko (leap communications) <kali@leap.se>2020-05-29 22:09:15 +0200
committerkali kaneko (leap communications) <kali@leap.se>2020-06-12 20:02:30 +0200
commit719413cad922e1d34f2ea495bae0165cae53b22f (patch)
tree2018091e2263b4bd69611a4f284e4d2febf36ec9 /pkg/systray/run.go
parent42593eb08464ace7be4d5dd088a48720591575c3 (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.go123
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
-}