summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkali kaneko (leap communications) <kali@leap.se>2021-07-09 20:29:45 +0200
committerkali kaneko (leap communications) <kali@leap.se>2021-07-12 19:47:49 +0200
commit26092db4ca2ad9972c5c275d1fcfb262ac7573ac (patch)
treea9b64d3b3c95f024ab27afbceebe1496615d1036
parent0d1d4116eb283a684b93bd432cb1f3b8331b2d4d (diff)
[ui] give feedback about gateway selection
-Resolves: #524
-rw-r--r--gui/providers/providers.json24
-rw-r--r--gui/qml/VPNSwitch.qml17
-rw-r--r--gui/qml/VpnState.qml17
-rw-r--r--gui/qml/main.qml40
-rw-r--r--pkg/vpn/openvpn.go5
5 files changed, 73 insertions, 30 deletions
diff --git a/gui/providers/providers.json b/gui/providers/providers.json
index 2401866..8592ba0 100644
--- a/gui/providers/providers.json
+++ b/gui/providers/providers.json
@@ -1,21 +1,21 @@
{
- "default": "floatdemo",
+ "default": "riseup",
"providers": [
{
- "name": "floatdemo",
- "applicationName": "FloatDemoVPN",
- "binaryName": "floatdemo-vpn",
+ "name": "Riseup",
+ "applicationName": "RiseupVPN",
+ "binaryName": "riseup-vpn",
"auth": "anon",
"authEmptyPass": false,
- "providerURL": "float.bitmask.net",
- "tosURL": "https://float.bitmask.net/",
- "helpURL": "https://float.bitmask.net/",
+ "providerURL": "riseup.net",
+ "tosURL": "https://riseup.net/tos",
+ "helpURL": "https://riseup.net/support",
"askForDonations": true,
- "donateURL": "",
- "apiURL": "https://api.float.bitmask.net:4430/",
- "geolocationAPI": "https://menshen.float.bitmask.net/json",
- "caCertString": "-----BEGIN CERTIFICATE-----\nMIIBQjCB6aADAgECAgEBMAoGCCqGSM49BAMCMBcxFTATBgNVBAMTDExFQVAgUm9v\ndCBDQTAeFw0yMTA0MDYxODIzMzVaFw0yNjA0MDYxODI4MzVaMBcxFTATBgNVBAMT\nDExFQVAgUm9vdCBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLiY2PRd7sct\n/d0qy0EHjP+MLA+bUOV2RjMErxZrQfok9bMAFFLza9dg0LTbsdLjved1f7ezraa1\nyTYD3i2NncWjJjAkMA4GA1UdDwEB/wQEAwICpDASBgNVHRMBAf8ECDAGAQH/AgEB\nMAoGCCqGSM49BAMCA0gAMEUCIEq2RG2egV566bOFzAL68qoOTVA3+58YYssn+Jrg\nadPSAiEAkYbYV5JLlA54lXy6XlZEmCCcVb7u/Domsk9smMQzWq4=\n-----END CERTIFICATE-----",
- "timeStamp": "2021-07-07 19:38:08"
+ "donateURL": "https://riseup.net/vpn/donate",
+ "apiURL": "https://api.black.riseup.net/",
+ "geolocationAPI": "https://api.black.riseup.net:9001/json",
+ "caCertString": "-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl\ndXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE\nAwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw\nNDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM\nEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv\nb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m\nTP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a\n7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE\nLliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY\niw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK\n5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx\nHUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58\nm/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF\nPM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q\nhzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj\nshczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k\nha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu\nf9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD\nVR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB\nAGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v\nqHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/\n3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ\n4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7\n3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch\nTd5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf\nXu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg\ntsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF\ntGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ\nUN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp\n0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO\n-----END CERTIFICATE-----",
+ "timeStamp": "2021-07-09 20:10:58"
}
]
} \ No newline at end of file
diff --git a/gui/qml/VPNSwitch.qml b/gui/qml/VPNSwitch.qml
index 14b3734..89c455f 100644
--- a/gui/qml/VPNSwitch.qml
+++ b/gui/qml/VPNSwitch.qml
@@ -5,27 +5,10 @@ import QtQuick.Controls 2.4
SwitchDelegate {
- //id: vpntoggle
-
text: qsTr("")
checked: false
anchors.horizontalCenter: parent.horizontalCenter
- /*
- Connections {
- function onCheckedChanged() {
- if (vpntoggle.checked == true
- && ctx.status == "off") {
- backend.switchOn()
- }
- if (vpntoggle.checked === false
- && ctx.status == "on") {
- backend.switchOff()
- }
- }
- }
- */
-
contentItem: Text {
rightPadding: vpntoggle.indicator.width + vpntoggle.spacing
text: vpntoggle.text
diff --git a/gui/qml/VpnState.qml b/gui/qml/VpnState.qml
index 86239e4..a4bb779 100644
--- a/gui/qml/VpnState.qml
+++ b/gui/qml/VpnState.qml
@@ -24,6 +24,7 @@ StateGroup {
PropertyChanges {
target: vpntoggle
checked: false
+ checkable: true
}
PropertyChanges {
target: statusItem
@@ -65,6 +66,7 @@ StateGroup {
PropertyChanges {
target: vpntoggle
checked: true
+ checkable: true
}
PropertyChanges {
target: statusItem
@@ -122,6 +124,11 @@ StateGroup {
target: mainCurrentGateway
text: ""
}
+ PropertyChanges {
+ target: vpntoggle
+ checked: true
+ checkable: false
+ }
},
State {
name: "stopping"
@@ -147,6 +154,11 @@ StateGroup {
target: mainCurrentGateway
text: ""
}
+ PropertyChanges {
+ target: vpntoggle
+ checked: false
+ checkable: false
+ }
},
State {
name: "failed"
@@ -172,6 +184,11 @@ StateGroup {
target: mainCurrentGateway
text: ""
}
+ PropertyChanges {
+ target: vpntoggle
+ checked: false
+ checkable: true
+ }
}
]
}
diff --git a/gui/qml/main.qml b/gui/qml/main.qml
index 1d67924..e166d65 100644
--- a/gui/qml/main.qml
+++ b/gui/qml/main.qml
@@ -88,10 +88,12 @@ ApplicationWindow {
if (vpntoggle.checked == true
&& ctx.status == "off") {
backend.switchOn()
+ vpntoggle.checkable = false
}
if (vpntoggle.checked === false
&& ctx.status == "on") {
backend.switchOff()
+ vpntoggle.checkable = false
}
}
}
@@ -114,6 +116,7 @@ ApplicationWindow {
anchors.centerIn: parent
spacing: 10
+ //width: parent.width
RadioButton {
id: autoSelectionButton
@@ -124,12 +127,14 @@ ApplicationWindow {
manualSelectionItem.checked = false
}
}
+
RadioButton {
id: manualSelectionButton
checked: isManualLocation()
text: qsTr("Manual")
onClicked: setGwSelection()
}
+
ComboBox {
id: gwSelector
editable: false
@@ -139,6 +144,12 @@ ApplicationWindow {
model: [qsTr("Recommended")]
onActivated: {
console.debug("Selected gateway:", currentText)
+ if (ctx.status == "off") {
+ gwNextConnectionText.visible = true
+ }
+ if (ctx.status == "on") {
+ gwReconnectText.visible = true
+ }
backend.useLocation(currentText.toString())
manualSelectionItem.checked = true
}
@@ -170,7 +181,31 @@ ApplicationWindow {
color: "#000000"
}
}
+
+ }
+
+ Text {
+ id: gwReconnectText
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: 180
+ font.pixelSize: 12
+ color: "green"
+ wrapMode: Text.WordWrap
+ text: qsTr("Reconnecting to the selected gateway…")
+ visible: false
+ }
+
+ Text {
+ id: gwNextConnectionText
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: 180
+ font.pixelSize: 12
+ color: "green"
+ wrapMode: Text.WordWrap
+ text: qsTr("This gateway will be used for next connection.")
+ visible: false
}
+
} // end column
} // end item
@@ -214,6 +249,11 @@ ApplicationWindow {
if (ctx.donateURL) {
donateItem.visible = true
}
+
+ if (ctx.status == "on") {
+ gwNextConnectionText.visible = false
+ gwReconnectText.visible = false
+ }
}
}
diff --git a/pkg/vpn/openvpn.go b/pkg/vpn/openvpn.go
index 6682094..3df5a23 100644
--- a/pkg/vpn/openvpn.go
+++ b/pkg/vpn/openvpn.go
@@ -121,6 +121,7 @@ func (b *Bitmask) listenShapeErr() {
func (b *Bitmask) startOpenVPN() error {
arg := []string{}
+ b.statusCh <- Starting
if b.GetTransport() == "obfs4" {
gateways, err := b.bonafide.GetGateways("obfs4")
if err != nil {
@@ -251,8 +252,9 @@ func (b *Bitmask) Reconnect() error {
if err != nil {
return err
}
- log.Println("reconnect")
+ log.Println("DEBUG Reconnecting")
if status != Off {
+ b.statusCh <- Stopping
if b.shapes != nil {
b.shapes.Close()
b.shapes = nil
@@ -264,6 +266,7 @@ func (b *Bitmask) Reconnect() error {
}
err = b.launch.firewallStop()
+ // FIXME - there's a window in which we might leak traffic here!
if err != nil {
return err
}