From f6d98953b0f31614e708da4993204263dfd8eafe Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Tue, 23 Jan 2018 22:30:35 +0100 Subject: [feat] add gateway selection --- bitmask/vpn.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'bitmask/vpn.go') diff --git a/bitmask/vpn.go b/bitmask/vpn.go index 9d12f85..7922d6a 100644 --- a/bitmask/vpn.go +++ b/bitmask/vpn.go @@ -1,5 +1,9 @@ package bitmask +import ( + "errors" +) + // StartVPN for provider func (b *Bitmask) StartVPN(provider string) error { _, err := b.send("vpn", "start", provider) @@ -20,3 +24,28 @@ func (b *Bitmask) GetStatus() (string, error) { } return res["status"].(string), nil } + +// ListGateways return the names of the gateways +func (b *Bitmask) ListGateways(provider string) ([]string, error) { + res, err := b.send("vpn", "list") + if err != nil { + return nil, err + } + + names := []string{} + locations, ok := res[provider].([]interface{}) + if !ok { + return nil, errors.New("Can't read the locations for provider " + provider) + } + for i := range locations { + loc := locations[i].(map[string]interface{}) + names = append(names, loc["name"].(string)) + } + return names, nil +} + +// UseGateway selects name as the default gateway +func (b *Bitmask) UseGateway(name string) error { + _, err := b.send("vpn", "locations", name) + return err +} -- cgit v1.2.3