summaryrefslogtreecommitdiff
path: root/pkg/vpn
diff options
context:
space:
mode:
authorRuben Pollan <meskio@sindominio.net>2021-03-26 15:48:58 +0100
committerkali kaneko (leap communications) <kali@leap.se>2021-05-04 14:58:39 +0200
commit67a68be2290b3af6e7d2897e52b3cd19d1f4450d (patch)
tree60f477042a7764186e39db51f13a0733afd9bffd /pkg/vpn
parent4e1f3a4f88136e497962e4f976d5c7f216c31a15 (diff)
Location selection more responsive
Diffstat (limited to 'pkg/vpn')
-rw-r--r--pkg/vpn/bonafide/bonafide.go7
-rw-r--r--pkg/vpn/bonafide/gateways.go4
-rw-r--r--pkg/vpn/openvpn.go6
-rw-r--r--pkg/vpn/status.go8
4 files changed, 25 insertions, 0 deletions
diff --git a/pkg/vpn/bonafide/bonafide.go b/pkg/vpn/bonafide/bonafide.go
index e0d9c9c..8387873 100644
--- a/pkg/vpn/bonafide/bonafide.go
+++ b/pkg/vpn/bonafide/bonafide.go
@@ -236,6 +236,13 @@ func (b *Bonafide) SetAutomaticGateway() {
b.gateways.setAutomaticChoice()
}
+func (b *Bonafide) IsManualLocation() bool {
+ if b.gateways == nil {
+ return false
+ }
+ return b.gateways.isManualLocation()
+}
+
func (b *Bonafide) GetGatewayByIP(ip string) (Gateway, error) {
return b.gateways.getGatewayByIP(ip)
}
diff --git a/pkg/vpn/bonafide/gateways.go b/pkg/vpn/bonafide/gateways.go
index 5474a2f..c848d77 100644
--- a/pkg/vpn/bonafide/gateways.go
+++ b/pkg/vpn/bonafide/gateways.go
@@ -164,6 +164,10 @@ func (p *gatewayPool) setUserChoice(city []byte) error {
return nil
}
+func (p *gatewayPool) isManualLocation() bool {
+ return len(p.userChoice) != 0
+}
+
/* set the recommended field from an ordered array. needs to be modified if menshen passed an array of Loads */
func (p *gatewayPool) setRecommendedGateways(hostnames []string) {
hosts := make([]string, 0)
diff --git a/pkg/vpn/openvpn.go b/pkg/vpn/openvpn.go
index e4d2781..2304dbd 100644
--- a/pkg/vpn/openvpn.go
+++ b/pkg/vpn/openvpn.go
@@ -239,6 +239,12 @@ func (b *Bitmask) UseGateway(label string) {
b.bonafide.SetManualGateway(label)
}
+// UseAutomaticGateway sets the gateway to be selected automatically
+// best gateway will be used
+func (b *Bitmask) UseAutomaticGateway() {
+ b.bonafide.SetAutomaticGateway()
+}
+
// UseTransport selects an obfuscation transport to use
func (b *Bitmask) UseTransport(transport string) error {
if transport != "obfs4" {
diff --git a/pkg/vpn/status.go b/pkg/vpn/status.go
index c812a9a..647cf27 100644
--- a/pkg/vpn/status.go
+++ b/pkg/vpn/status.go
@@ -94,6 +94,14 @@ func (b *Bitmask) GetCurrentLocation() string {
return b.onGateway.LocationName
}
+func (b *Bitmask) GetCurrentCountry() string {
+ return b.onGateway.CountryCode
+}
+
+func (b *Bitmask) IsManualLocation() bool {
+ return b.bonafide.IsManualLocation()
+}
+
func (b *Bitmask) getOpenvpnState() (string, error) {
if b.managementClient == nil {
return "", fmt.Errorf("No management connected")