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