diff --git a/vpn/openconnect/CMakeLists.txt b/vpn/openconnect/CMakeLists.txt
--- a/vpn/openconnect/CMakeLists.txt
+++ b/vpn/openconnect/CMakeLists.txt
@@ -59,6 +59,7 @@
install(TARGETS plasmanetworkmanagement_openconnectui DESTINATION ${KDE_INSTALL_PLUGINDIR})
install(FILES plasmanetworkmanagement_openconnectui.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR})
install(FILES plasmanetworkmanagement_openconnect_juniperui.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR})
+ install(FILES plasmanetworkmanagement_openconnect_globalprotectui.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR})
else()
message("ERROR: OpenConnection version '${OPENCONNECT_VERSION}' does not match minimum required (${MINIMUM_OPENCONNECT_VERSION_REQUIRED})")
message("OpenConnect plugin will not be built")
diff --git a/vpn/openconnect/openconnectprop.ui b/vpn/openconnect/openconnectprop.ui
--- a/vpn/openconnect/openconnectprop.ui
+++ b/vpn/openconnect/openconnectprop.ui
@@ -123,6 +123,11 @@
Juniper/Pulse Network Connect
+ -
+
+ PAN Global Protect
+
+
diff --git a/vpn/openconnect/openconnectwidget.cpp b/vpn/openconnect/openconnectwidget.cpp
--- a/vpn/openconnect/openconnectwidget.cpp
+++ b/vpn/openconnect/openconnectwidget.cpp
@@ -183,7 +183,16 @@
// General settings
const NMStringMap dataMap = setting.staticCast()->data();
- d->ui.cmbProtocol->setCurrentIndex(dataMap[NM_OPENCONNECT_KEY_PROTOCOL] != QLatin1String("anyconnect"));
+ int cmbProtocolIndex;
+ if (dataMap[NM_OPENCONNECT_KEY_PROTOCOL] == QLatin1String("anyconnect")) {
+ cmbProtocolIndex = 0;
+ } else if (dataMap[NM_OPENCONNECT_KEY_PROTOCOL] == QLatin1String("nc")) {
+ cmbProtocolIndex = 1;
+ } else {
+ cmbProtocolIndex = 2; // paloAlto/GlobalProtect (gp)
+ }
+
+ d->ui.cmbProtocol->setCurrentIndex(cmbProtocolIndex);
d->ui.leGateway->setText(dataMap[NM_OPENCONNECT_KEY_GATEWAY]);
d->ui.leCaCertificate->setUrl(QUrl::fromLocalFile(dataMap[NM_OPENCONNECT_KEY_CACERT]));
d->ui.leProxy->setText(dataMap[NM_OPENCONNECT_KEY_PROXY]);
@@ -237,8 +246,19 @@
NMStringMap data;
NMStringMap secrets;
+ QString protocol;
+ switch (d->ui.cmbProtocol->currentIndex()) {
+ case 0:
+ protocol = QLatin1String("anyconnect");
+ break;
+ case 1:
+ protocol = QLatin1String("nc");
+ break;
+ default:
+ protocol = QLatin1String("gp");
+ }
- data.insert(NM_OPENCONNECT_KEY_PROTOCOL, d->ui.cmbProtocol->currentIndex() ? QLatin1String("nc") : QLatin1String("anyconnect"));
+ data.insert(NM_OPENCONNECT_KEY_PROTOCOL, protocol);
data.insert(QLatin1String(NM_OPENCONNECT_KEY_GATEWAY), d->ui.leGateway->text());
if (d->ui.leCaCertificate->url().isValid()) {
data.insert(QLatin1String(NM_OPENCONNECT_KEY_CACERT), d->ui.leCaCertificate->url().toLocalFile());
diff --git a/vpn/openconnect/plasmanetworkmanagement_openconnect_globalprotectui.desktop b/vpn/openconnect/plasmanetworkmanagement_openconnect_globalprotectui.desktop
new file mode 100644
--- /dev/null
+++ b/vpn/openconnect/plasmanetworkmanagement_openconnect_globalprotectui.desktop
@@ -0,0 +1,18 @@
+[Desktop Entry]
+Type=Service
+Icon=
+ServiceTypes=PlasmaNetworkManagement/VpnUiPlugin
+X-KDE-Library=plasmanetworkmanagement_openconnectui
+X-NetworkManager-Services=org.freedesktop.NetworkManager.openconnect
+X-NetworkManager-Services-Subtype=gp
+X-KDE-PluginInfo-Author=Jan Grulich
+X-KDE-PluginInfo-Email=jgrulich@redhat.com
+X-KDE-PluginInfo-Name=plasmanetworkmanagement_openconnectui
+X-KDE-PluginInfo-Version=0.1
+X-KDE-PluginInfo-Website=
+X-KDE-PluginInfo-Category=VPNService
+X-KDE-PluginInfo-Depends=
+X-KDE-PluginInfo-License=GPL
+X-KDE-PluginInfo-EnabledByDefault=false
+Name=PAN Global Protect (openconnect)
+Comment=Compatible with PAN GlobalProtect SSL VPN