diff options
author | Ruben Pollan <meskio@sindominio.net> | 2021-03-23 17:10:45 +0100 |
---|---|---|
committer | kali kaneko (leap communications) <kali@leap.se> | 2021-05-04 14:58:39 +0200 |
commit | b14d048e6089233f5c698426652e85bfa1d89488 (patch) | |
tree | b1542d03377740f7335c9848a751ad16426632f0 | |
parent | 8c4edf29112a32f267d19717637bf2104c28b969 (diff) |
Don't expose the full gateway out of the vpn module
We just care about locations and fullness.
-rw-r--r-- | gui/qml/main.qml | 2 | ||||
-rw-r--r-- | pkg/backend/status.go | 38 | ||||
-rw-r--r-- | pkg/backend/webapi.go | 7 | ||||
-rw-r--r-- | pkg/bitmask/bitmask.go | 8 | ||||
-rw-r--r-- | pkg/vpn/bonafide/bonafide.go | 9 | ||||
-rw-r--r-- | pkg/vpn/bonafide/gateways.go | 10 | ||||
-rw-r--r-- | pkg/vpn/openvpn.go | 14 |
7 files changed, 30 insertions, 58 deletions
diff --git a/gui/qml/main.qml b/gui/qml/main.qml index 0851efa..dae5ee5 100644 --- a/gui/qml/main.qml +++ b/gui/qml/main.qml @@ -177,7 +177,7 @@ Window { ctx = JSON.parse(jsonModel.getJson()) // TODO pass QML_DEBUG variable to be hyper-verbose //console.debug(jsonModel.getJson()) - gwSelector.model = Object.keys(ctx.gateways) + gwSelector.model = Object.keys(ctx.locations) if (ctx.donateDialog == 'true') { console.debug(jsonModel.getJson()) diff --git a/pkg/backend/status.go b/pkg/backend/status.go index 3d78a0b..0e92253 100644 --- a/pkg/backend/status.go +++ b/pkg/backend/status.go @@ -8,7 +8,6 @@ import ( "0xacab.org/leap/bitmask-vpn/pkg/bitmask" "0xacab.org/leap/bitmask-vpn/pkg/config" - "0xacab.org/leap/bitmask-vpn/pkg/vpn/bonafide" ) const ( @@ -33,22 +32,21 @@ var updateMutex sync.Mutex // them. type connectionCtx struct { - AppName string `json:"appName"` - Provider string `json:"provider"` - TosURL string `json:"tosURL"` - HelpURL string `json:"helpURL"` - AskForDonations bool `json:"askForDonations"` - DonateDialog bool `json:"donateDialog"` - DonateURL string `json:"donateURL"` - LoginDialog bool `json:"loginDialog"` - LoginOk bool `json:"loginOk"` - Version string `json:"version"` - Errors string `json:"errors"` - Status status `json:"status"` - /* XXX perhaps rename to GatewaysByCity */ - Gateways map[string]bonafide.Gateway `json:"gateways"` - CurrentGateway string `json:"currentGateway"` - CurrentLocation string `json:"currentLocation"` + AppName string `json:"appName"` + Provider string `json:"provider"` + TosURL string `json:"tosURL"` + HelpURL string `json:"helpURL"` + AskForDonations bool `json:"askForDonations"` + DonateDialog bool `json:"donateDialog"` + DonateURL string `json:"donateURL"` + LoginDialog bool `json:"loginDialog"` + LoginOk bool `json:"loginOk"` + Version string `json:"version"` + Errors string `json:"errors"` + Status status `json:"status"` + Locations map[string]float64 `json:"locations"` + CurrentGateway string `json:"currentGateway"` + CurrentLocation string `json:"currentLocation"` bm bitmask.Bitmask autostart bitmask.Autostart cfg *config.Config @@ -57,11 +55,7 @@ type connectionCtx struct { func (c connectionCtx) toJson() ([]byte, error) { statusMutex.Lock() if c.bm != nil { - gws, err := c.bm.ListGatewaysByCity("openvpn") - if err != nil { - log.Println("error getting gateways for city") - } - c.Gateways = gws + c.Locations = c.bm.ListLocationFullness("openvpn") c.CurrentGateway = c.bm.GetCurrentGateway() c.CurrentLocation = c.bm.GetCurrentLocation() } diff --git a/pkg/backend/webapi.go b/pkg/backend/webapi.go index a19d933..3e4efd3 100644 --- a/pkg/backend/webapi.go +++ b/pkg/backend/webapi.go @@ -64,12 +64,11 @@ func webGatewaySet(w http.ResponseWriter, r *http.Request) { } func webGatewayList(w http.ResponseWriter, r *http.Request) { - gws, err := ctx.bm.ListGatewaysByCity(ctx.Provider) + locationJson, err := json.Marshal(ctx.bm.ListLocationFullness("openvpn")) if err != nil { - fmt.Fprintf(w, "ListGatewaysByCity() err: %v", err) + fmt.Fprintf(w, "Error converting json: %v", err) } - gwJson, _ := json.Marshal(gws) - fmt.Fprintf(w, string(gwJson)) + fmt.Fprintf(w, string(locationJson)) } // TODO diff --git a/pkg/bitmask/bitmask.go b/pkg/bitmask/bitmask.go index 156af58..cb7be29 100644 --- a/pkg/bitmask/bitmask.go +++ b/pkg/bitmask/bitmask.go @@ -15,10 +15,6 @@ package bitmask -import ( - "0xacab.org/leap/bitmask-vpn/pkg/vpn/bonafide" -) - type Bitmask interface { GetStatusCh() <-chan string Close() @@ -30,12 +26,10 @@ type Bitmask interface { GetStatus() (string, error) InstallHelpers() error VPNCheck() (helpers bool, priviledge bool, err error) - /* this is kind of breaking the abstract interface, maybe we don't need this anymore */ - ListGatewaysByCity(protocol string) (map[string]bonafide.Gateway, error) + ListLocationFullness(protocol string) map[string]float64 UseGateway(name string) error GetCurrentGateway() string GetCurrentLocation() string - GetGatewayDetails(label string) (interface{}, error) UseTransport(transport string) error NeedsCredentials() bool DoLogin(username, password string) (bool, error) diff --git a/pkg/vpn/bonafide/bonafide.go b/pkg/vpn/bonafide/bonafide.go index 321b47f..e0d9c9c 100644 --- a/pkg/vpn/bonafide/bonafide.go +++ b/pkg/vpn/bonafide/bonafide.go @@ -224,13 +224,8 @@ func (b *Bonafide) GetAllGateways(transport string) ([]Gateway, error) { return gws, err } -func (b *Bonafide) PickGatewayForCities(transport string) (map[string]Gateway, error) { - return b.gateways.pickGatewayForCities(transport), nil -} - -func (b *Bonafide) GetGatewayDetails(host string) (Gateway, error) { - gw, err := b.gateways.getGatewayByHost(host) - return gw, err +func (b *Bonafide) ListLocationFullness(transport string) map[string]float64 { + return b.gateways.listLocationFullness(transport) } func (b *Bonafide) SetManualGateway(label string) { diff --git a/pkg/vpn/bonafide/gateways.go b/pkg/vpn/bonafide/gateways.go index 2d94c63..5474a2f 100644 --- a/pkg/vpn/bonafide/gateways.go +++ b/pkg/vpn/bonafide/gateways.go @@ -34,7 +34,7 @@ type Gateway struct { Protocols []string Options map[string]string Transport string - Fullness float32 + Fullness float64 } /* gatewayDistance is used in the timezone distance fallback */ @@ -96,13 +96,13 @@ func (p *gatewayPool) isValidCity(city string) bool { return valid } -/* returns a map of city: gateway for the ui to use */ -func (p *gatewayPool) pickGatewayForCities(transport string) map[string]Gateway { +/* returns a map of location: fullness for the ui to use */ +func (p *gatewayPool) listLocationFullness(transport string) map[string]float64 { cities := p.getCities() - cm := make(map[string]Gateway) + cm := make(map[string]float64) for _, city := range cities { gw, _ := p.getRandomGatewayByCity(city, transport) - cm[city] = gw + cm[city] = gw.Fullness } return cm } diff --git a/pkg/vpn/openvpn.go b/pkg/vpn/openvpn.go index 298ea75..1447458 100644 --- a/pkg/vpn/openvpn.go +++ b/pkg/vpn/openvpn.go @@ -25,7 +25,6 @@ import ( "strconv" "strings" - "0xacab.org/leap/bitmask-vpn/pkg/vpn/bonafide" "0xacab.org/leap/shapeshifter" ) @@ -231,17 +230,8 @@ func (b *Bitmask) VPNCheck() (helpers bool, privilege bool, err error) { return b.launch.check() } -func (b *Bitmask) ListGatewaysByCity(transport string) (map[string]bonafide.Gateway, error) { - gwForCities, err := b.bonafide.PickGatewayForCities(transport) - return gwForCities, err -} - -func (b *Bitmask) GetGatewayDetails(host string) (interface{}, error) { - gw, err := b.bonafide.GetGatewayDetails(host) - if err != nil { - return bonafide.Gateway{}, err - } - return gw, nil +func (b *Bitmask) ListLocationFullness(transport string) map[string]float64 { + return b.bonafide.ListLocationFullness(transport) } // UseGateway selects a gateway, by label, as the default gateway |