diff options
Diffstat (limited to 'pkg/backend/bitmask.go')
-rw-r--r-- | pkg/backend/bitmask.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/pkg/backend/bitmask.go b/pkg/backend/bitmask.go new file mode 100644 index 0000000..07d27ea --- /dev/null +++ b/pkg/backend/bitmask.go @@ -0,0 +1,52 @@ +package backend + +import ( + "log" + "os" + + "0xacab.org/leap/bitmask-vpn/pkg/bitmask" +) + +func initializeBitmask() { + if ctx == nil { + log.Println("error: cannot initialize bitmask, ctx is nil") + os.Exit(1) + } + bitmask.InitializeLogger() + + b, err := bitmask.InitializeBitmask() + if err != nil { + log.Println("error: cannot initialize bitmask") + } + ctx.bm = b +} + +func startVPN() { + err := ctx.bm.StartVPN(ctx.Provider) + if err != nil { + log.Println(err) + os.Exit(1) + } +} + +func stopVPN() { + err := ctx.bm.StopVPN() + if err != nil { + log.Println(err) + } +} + +// initializeContext initializes an empty connStatus and assigns it to the +// global ctx holder. This is expected to be called only once, so the public +// api uses the sync.Once primitive to call this. +func initializeContext(provider, appName string) { + var st status = off + ctx = &connectionCtx{ + AppName: appName, + Provider: provider, + Donate: false, + Status: st, + } + go trigger(OnStatusChanged) + initializeBitmask() +} |