summaryrefslogtreecommitdiff
path: root/pkg/backend/api.go
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/backend/api.go
parent4e1f3a4f88136e497962e4f976d5c7f216c31a15 (diff)
Location selection more responsive
Diffstat (limited to 'pkg/backend/api.go')
-rw-r--r--pkg/backend/api.go25
1 files changed, 23 insertions, 2 deletions
diff --git a/pkg/backend/api.go b/pkg/backend/api.go
index f1fed57..d43751b 100644
--- a/pkg/backend/api.go
+++ b/pkg/backend/api.go
@@ -55,10 +55,31 @@ func SwitchOff() {
go stopVPN()
}
-// TODO implement Reconnect - do not tear whole fw down in between
-
func UseLocation(label string) {
+ if ctx.ManualLocation && label == ctx.CurrentLocation {
+ return
+ }
+
ctx.bm.UseGateway(label)
+ go trigger(OnStatusChanged)
+ if label != ctx.CurrentLocation {
+ reconnect()
+ }
+}
+
+func UseAutomaticGateway() {
+ if !ctx.ManualLocation {
+ return
+ }
+
+ ctx.bm.UseAutomaticGateway()
+ go trigger(OnStatusChanged)
+ reconnect()
+}
+
+// TODO implement Reconnect - do not tear whole fw down in between
+
+func reconnect() {
time.Sleep(200 * time.Millisecond)
SwitchOff()
time.Sleep(500 * time.Millisecond)