summaryrefslogtreecommitdiff
path: root/cmd/bitmaskd/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/bitmaskd/main.go')
-rw-r--r--cmd/bitmaskd/main.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/cmd/bitmaskd/main.go b/cmd/bitmaskd/main.go
new file mode 100644
index 0000000..12887a8
--- /dev/null
+++ b/cmd/bitmaskd/main.go
@@ -0,0 +1,64 @@
+package main
+
+import (
+ "errors"
+ "flag"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "runtime"
+
+ "0xacab.org/leap/bitmask-vpn/pkg/backend"
+)
+
+func main() {
+ var c string
+ var installHelpers bool
+
+ flag.StringVar(&c, "c", "", "Config file")
+ flag.BoolVar(&installHelpers, "i", false, "Install helpers (asks for sudo)")
+ flag.Parse()
+
+ if installHelpers {
+ backend.InstallHelpers()
+ os.Exit(0)
+ }
+
+ if len(c) == 0 {
+ fmt.Println("Please setup a config file with -c")
+ os.Exit(1)
+ }
+
+ if _, err := os.Stat(c); err == nil {
+ log.Println("Loading config file from", c)
+ // all good. we could validate the json.
+ } else if errors.Is(err, os.ErrNotExist) {
+ fmt.Println("Cannot find file:", c)
+ os.Exit(1)
+ } else {
+ // Schrodinger: file may or may not exist.
+ log.Println("Error:", err)
+ }
+
+ providerDefinitionJSON, err := ioutil.ReadFile(c)
+ if err != nil {
+ fmt.Println("Error reading config file")
+ os.Exit(1)
+ }
+
+ // TODO daemonize, or run in foreground to debug.
+ log.Println("Starting bitmaskd...")
+
+ opts := backend.InitOptsFromJSON("riseup", string(providerDefinitionJSON))
+ opts.DisableAutostart = true
+ opts.Obfs4 = false
+ opts.StartVPN = "off"
+ backend.EnableWebAPI("8000")
+ backend.InitializeBitmaskContext(opts)
+
+ log.Println("Backend initialized")
+
+ runtime.Goexit()
+ fmt.Println("Exit")
+}