From 06d680b52cfc4c186b593c9cf2fe4be51732f10b Mon Sep 17 00:00:00 2001 From: Ain Ghazal Date: Mon, 8 May 2023 13:35:39 +0200 Subject: [PATCH] refactor: move entrypoint to cmd (#43) --- Makefile | 2 +- main.go => cmd/minivpn/main.go | 0 proxy.go => cmd/minivpn/proxy.go | 0 cmd/ndt7/README.md | 9 --- cmd/ndt7/main.go | 122 ------------------------------- cmd/obfs4vpn/main.go | 62 ---------------- cmd/vpnping/main.go | 2 + 7 files changed, 3 insertions(+), 194 deletions(-) rename main.go => cmd/minivpn/main.go (100%) rename proxy.go => cmd/minivpn/proxy.go (100%) delete mode 100644 cmd/ndt7/README.md delete mode 100644 cmd/ndt7/main.go delete mode 100644 cmd/obfs4vpn/main.go diff --git a/Makefile b/Makefile index f0122171..eaad788c 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ COVERAGE_THRESHOLD := 88 FLAGS=-ldflags="-w -s -buildid=none -linkmode=external" -buildmode=pie -buildvcs=false build: - @go build ${FLAGS} + @go build -o ./minivpn ${FLAGS} ./cmd/minivpn/ build-rel: @go build ${FLAGS} -o minivpn diff --git a/main.go b/cmd/minivpn/main.go similarity index 100% rename from main.go rename to cmd/minivpn/main.go diff --git a/proxy.go b/cmd/minivpn/proxy.go similarity index 100% rename from proxy.go rename to cmd/minivpn/proxy.go diff --git a/cmd/ndt7/README.md b/cmd/ndt7/README.md deleted file mode 100644 index a168fca4..00000000 --- a/cmd/ndt7/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# ndt7 client - -For testing purposes, you can build this ndt7 client. - -Be sure to pass the `TLS_NOVERIFY` flag if your test server has a self-signed certificate. - -``` -DEBUG=1 EXTRA_DEBUG=0 TLS_NOVERIFY=1 NDT7_SERVER=IP:PORT PROVIDER=calyx ./ndt7 --count 1 --type all -``` diff --git a/cmd/ndt7/main.go b/cmd/ndt7/main.go deleted file mode 100644 index b4a97cc1..00000000 --- a/cmd/ndt7/main.go +++ /dev/null @@ -1,122 +0,0 @@ -package main - -// Shows an example of how to pass the vpn Dialer to an ndt7 client to perform -// a download/upload measurement. - -import ( - "log" - "os" - "time" - - "github.com/pborman/getopt/v2" - - "github.com/ooni/minivpn/extras" - "github.com/ooni/minivpn/extras/memoryless" - "github.com/ooni/minivpn/obfs4" - "github.com/ooni/minivpn/vpn" -) - -func wait(c memoryless.Config) { - t, _ := memoryless.NewTimer(c) - <-t.C -} - -func main() { - ndt7Server := os.Getenv("NDT7_SERVER") - if ndt7Server == "" { - log.Fatal("Set NDT7_SERVER variable") - } - provider := os.Getenv("PROVIDER") - if provider == "" { - log.Fatal("Set PROVIDER variable") - } - - optExp := getopt.StringLong("type", 'e', "all", "Type of experiment (download, upload, [all])") - optCnt := getopt.IntLong("count", 'c', 1, "Repetitions count (default: 1)") - getopt.Parse() - - opts, err := vpn.NewOptionsFromFilePath("data/" + provider + "/config") - if err != nil { - panic(err) - } - - var c memoryless.Config - - // one needs to be careful choosing the clamping, - // but while debugging every second counts. - // see https://github.com/m-lab/go/blob/master/memoryless/memoryless.go#L102 - - if os.Getenv("DEBUG") == "1" { - c = memoryless.Config{ - Expected: 10 * time.Second, - Min: 5 * time.Second, - Max: 15 * time.Second, - } - } else { - c = memoryless.Config{ - Expected: 60 * time.Second, - Min: 10 * time.Second, - Max: 250 * time.Second, - } - } - if err := c.Check(); err != nil { - log.Fatal("error:", err.Error()) - } - - direct := false - base := os.Getenv("BASE") - if base == "1" { - direct = true - } - - wait(c) - for i := 1; i <= *optCnt; i++ { - log.Println() - log.Println("Run:", i) - log.Println() - if *optExp == "all" || *optExp == "download" { - dialer := vpn.StartNewTunDialerFromOptions(opts) - if opts.ProxyOBFS4 != "" { - if direct { - log.Fatal("Cannot use proxy-obfs4 and BASE=1 at the same time") - } - log.Println("Using obfs4 proxy") - node, err := obfs4.NewNodeFromURI(opts.ProxyOBFS4) - if err != nil { - log.Fatal(err) - } - err = obfs4.Obfs4ClientInit(node) - if err != nil { - log.Fatal(err) - } - - var od vpn.DialerContext = obfs4.NewDialer(node) - dialer.Dialer = od - } - extras.RunMeasurement(dialer, ndt7Server, "download", direct) - wait(c) // is the pasta ready? - - } - if *optExp == "all" || *optExp == "upload" { - dialer := vpn.StartNewTunDialerFromOptions(opts) - if opts.ProxyOBFS4 != "" { - if direct { - log.Fatal("Cannot use proxy-obfs4 and BASE=1 at the same time") - } - log.Println("Using obfs4 proxy") - node, err := obfs4.NewNodeFromURI(opts.ProxyOBFS4) - if err != nil { - log.Fatal(err) - } - err = obfs4.Obfs4ClientInit(node) - if err != nil { - log.Fatal(err) - } - var od vpn.DialerContext = obfs4.NewDialer(node) - dialer.Dialer = od - } - extras.RunMeasurement(dialer, ndt7Server, "upload", direct) - wait(c) // is the pasta ready? - } - } -} diff --git a/cmd/obfs4vpn/main.go b/cmd/obfs4vpn/main.go deleted file mode 100644 index 2f315178..00000000 --- a/cmd/obfs4vpn/main.go +++ /dev/null @@ -1,62 +0,0 @@ -package main - -// Shows an example of how to start a VPN Client over an obfuscated transport. - -import ( - "fmt" - "io" - "log" - "net/http" - "os" - - "github.com/ooni/minivpn/obfs4" - "github.com/ooni/minivpn/vpn" -) - -func main() { - provider := os.Getenv("PROVIDER") - if provider == "" { - log.Fatal("Export the PROVIDER variable") - } - opts, err := vpn.NewOptionsFromFilePath("data/" + provider + "/config") - if err != nil { - panic(err) - } - if opts.ProxyOBFS4 == "" { - log.Fatal("ERROR: missing proto-obfs4 entry in config") - } - - node, err := obfs4.NewNodeFromURI(opts.ProxyOBFS4) - if err != nil { - log.Fatal(err) - } - - err = obfs4.Obfs4ClientInit(node) - if err != nil { - log.Fatal(err) - } - dialer := vpn.StartNewTunDialerFromOptions(opts) - - var obfs4Dialer vpn.DialerContext = obfs4.NewDialer(node) - dialer.Dialer = obfs4Dialer - - client := http.Client{ - Transport: &http.Transport{ - DialContext: dialer.DialContext, - }, - } - if len(os.Args) != 2 { - log.Println("Usage: get ") - os.Exit(1) - } - uri := os.Args[1] - resp, err := client.Get(uri) - if err != nil { - log.Panic(err) - } - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Panic(err) - } - fmt.Println(string(body)) -} diff --git a/cmd/vpnping/main.go b/cmd/vpnping/main.go index b26178b5..686607da 100644 --- a/cmd/vpnping/main.go +++ b/cmd/vpnping/main.go @@ -8,6 +8,8 @@ import ( "github.com/ooni/minivpn/vpn" ) +// TODO(ainghazal): update and convert to an example + func main() { opts, err := vpn.NewOptionsFromFilePath("data/riseup/config") if err != nil {