commit 8acc4eb820339102181e628ac6f41ecf3c29b146
Author: Jan RÄ™korajski <[email protected]>
Date:   Sun Feb 1 16:07:05 2015 +0100

    - added updates for openconnect 7.x
    - rel 3

 kde4-knetworkmanager.spec |   8 +-
 openconnect7.patch        | 190 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 195 insertions(+), 3 deletions(-)
---
diff --git a/kde4-knetworkmanager.spec b/kde4-knetworkmanager.spec
index b91c4f3..0dd72cb 100644
--- a/kde4-knetworkmanager.spec
+++ b/kde4-knetworkmanager.spec
@@ -8,7 +8,7 @@
 Summary:       Plasma applet that controls network via NetworkManager backend
 Name:          kde4-knetworkmanager
 Version:       0.9.0.11
-Release:       2
+Release:       3
 Epoch:         1
 License:       GPL v2
 Group:         X11/Applications
@@ -16,8 +16,9 @@ Group:                X11/Applications
 # git checkout nm09 (until is merged to master)
 Source0:       
ftp://ftp.kde.org/pub/kde/unstable/networkmanagement/%{version}/src/%{origname}-%{version}.tar.xz
 # Source0-md5: f1b5d6ae1cfd869ca2c377f3d4647cbf
-Patch0:        %{origname}-kill_rest_sr.patch
-Patch1:        %{name}-solid.patch
+Patch0:                %{origname}-kill_rest_sr.patch
+Patch1:                %{name}-solid.patch
+Patch2:                openconnect7.patch
 URL:           http://en.opensuse.org/Projects/KNetworkManager
 BuildRequires: NetworkManager-devel >= 2:0.9.8
 BuildRequires: Qt3Support-devel >= %{qtver}
@@ -47,6 +48,7 @@ Plasma applet that controls network via NetworkManager 
backend.
 %setup -q -n %{origname}-%{version}
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 %build
 install -d build
diff --git a/openconnect7.patch b/openconnect7.patch
new file mode 100644
index 0000000..dc42ad5
--- /dev/null
+++ b/openconnect7.patch
@@ -0,0 +1,190 @@
+diff -ur networkmanagement-0.9.0.11/vpnplugins/openconnect/CMakeLists.txt 
networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/CMakeLists.txt
+--- networkmanagement-0.9.0.11/vpnplugins/openconnect/CMakeLists.txt   
2014-04-23 17:01:42.000000000 +0200
++++ networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/CMakeLists.txt       
2015-02-01 15:58:22.782523792 +0100
+@@ -18,6 +18,7 @@
+         include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/ui)
+         include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../libs)
+         include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/internals)
++        include_directories(${OPENCONNECT_INCLUDE_DIRS})
+ 
+         set(openconnect_SRCS
+         openconnectui.cpp
+diff -ur networkmanagement-0.9.0.11/vpnplugins/openconnect/openconnectauth.cpp 
networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/openconnectauth.cpp
+--- networkmanagement-0.9.0.11/vpnplugins/openconnect/openconnectauth.cpp      
2014-04-23 17:01:42.000000000 +0200
++++ networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/openconnectauth.cpp  
2015-02-01 16:01:06.115855943 +0100
+@@ -149,7 +149,7 @@
+     }
+     if (!dataMap[NM_OPENCONNECT_KEY_CACERT].isEmpty()) {
+         QByteArray crt = dataMap[NM_OPENCONNECT_KEY_CACERT].toAscii();
+-        openconnect_set_cafile(d->vpninfo, strdup(crt.data()));
++        openconnect_set_cafile(d->vpninfo, OC3DUP(crt.data()));
+     }
+     if (dataMap[NM_OPENCONNECT_KEY_CSD_ENABLE] == "yes") {
+         char *wrapper;
+@@ -162,12 +162,12 @@
+     }
+     if (!dataMap[NM_OPENCONNECT_KEY_PROXY].isEmpty()) {
+         QByteArray proxy = dataMap[NM_OPENCONNECT_KEY_PROXY].toAscii();
+-        openconnect_set_http_proxy(d->vpninfo, strdup(proxy.data()));
++        openconnect_set_http_proxy(d->vpninfo, OC3DUP(proxy.data()));
+     }
+     if (!dataMap[NM_OPENCONNECT_KEY_USERCERT].isEmpty()) {
+         QByteArray crt = dataMap[NM_OPENCONNECT_KEY_USERCERT].toAscii();
+         QByteArray key = dataMap[NM_OPENCONNECT_KEY_PRIVKEY].toAscii();
+-        openconnect_set_client_cert (d->vpninfo, strdup(crt.data()), 
strdup(key.data()));
++        openconnect_set_client_cert (d->vpninfo, OC3DUP(crt.data()), 
OC3DUP(key.data()));
+ 
+         if (!crt.isEmpty() && dataMap[NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID] 
== "yes") {
+             openconnect_passphrase_from_fsid(d->vpninfo);
+@@ -261,10 +261,10 @@
+     const VPNHost &host = d->hosts.at(i);
+     if (openconnect_parse_url(d->vpninfo, host.address.toAscii().data())) {
+         kWarning() << "Failed to parse server URL" << host.address;
+-        openconnect_set_hostname(d->vpninfo, 
strdup(host.address.toAscii().data()));
++        openconnect_set_hostname(d->vpninfo, 
OC3DUP(host.address.toAscii().data()));
+     }
+     if (!openconnect_get_urlpath(d->vpninfo) && !host.group.isEmpty())
+-        openconnect_set_urlpath(d->vpninfo, 
strdup(host.group.toAscii().data()));
++        openconnect_set_urlpath(d->vpninfo, 
OC3DUP(host.group.toAscii().data()));
+     d->secrets["lasthost"] = host.name;
+     addFormInfo(QLatin1String("dialog-information"), i18n("Contacting host, 
please wait..."));
+     d->worker->start();
+@@ -284,9 +284,13 @@
+     secretData.insert(QLatin1String(NM_OPENCONNECT_KEY_COOKIE), 
QLatin1String(openconnect_get_cookie(d->vpninfo)));
+     openconnect_clear_cookie(d->vpninfo);
+ 
++#if OPENCONNECT_CHECK_VER(5,0)
++    const char *fingerprint = openconnect_get_peer_cert_hash(d->vpninfo);
++#else
+     OPENCONNECT_X509 *cert = openconnect_get_peer_cert(d->vpninfo);
+     char fingerprint[41];
+     openconnect_get_cert_sha1(d->vpninfo, cert, fingerprint);
++#endif
+     secretData.insert(QLatin1String(NM_OPENCONNECT_KEY_GWCERT), 
QLatin1String(fingerprint));
+     secretData.insert(QLatin1String("certsigs"), 
d->certificateFingerprints.join("\t"));
+     secretData.insert(QLatin1String("autoconnect"), 
d->ui.chkAutoconnect->isChecked() ? "yes" : "no");
+@@ -548,14 +552,14 @@
+             if (opt->type == OC_FORM_OPT_PASSWORD || opt->type == 
OC_FORM_OPT_TEXT) {
+                 KLineEdit *le = qobject_cast<KLineEdit*>(widget);
+                 QByteArray text = le->text().toAscii();
+-                opt->value = strdup(text.data());
++                openconnect_set_option_value(opt, text.data());
+                 if (opt->type == OC_FORM_OPT_TEXT) {
+                     d->secrets.insert(key,le->text());
+                 }
+             } else if (opt->type == OC_FORM_OPT_SELECT) {
+                 KComboBox *cbo = qobject_cast<KComboBox*>(widget);
+                 QByteArray text = 
cbo->itemData(cbo->currentIndex()).toString().toAscii();
+-                opt->value = strdup(text.data());
++                openconnect_set_option_value(opt, text.data());
+                 
d->secrets.insert(key,cbo->itemData(cbo->currentIndex()).toString());
+             }
+         }
+diff -ur 
networkmanagement-0.9.0.11/vpnplugins/openconnect/openconnectauthworkerthread.cpp
 
networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/openconnectauthworkerthread.cpp
+--- 
networkmanagement-0.9.0.11/vpnplugins/openconnect/openconnectauthworkerthread.cpp
  2014-04-23 17:01:42.000000000 +0200
++++ 
networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/openconnectauthworkerthread.cpp
      2015-02-01 16:03:13.169188356 +0100
+@@ -43,6 +43,20 @@
+ class OpenconnectAuthStaticWrapper
+ {
+ public:
++#if OPENCONNECT_CHECK_VER(5,0)
++    static int writeNewConfig(void *obj, const char *str, int num)
++    {
++        if (obj)
++            return 
static_cast<OpenconnectAuthWorkerThread*>(obj)->writeNewConfig(str, num);
++        return -1;
++    }
++    static int validatePeerCert(void *obj, const char *str)
++    {
++        if (obj)
++            return 
static_cast<OpenconnectAuthWorkerThread*>(obj)->validatePeerCert(NULL, str);
++        return -1;
++    }
++#else
+     static int writeNewConfig(void *obj, char *str, int num)
+     {
+         if (obj)
+@@ -55,6 +69,7 @@
+             return 
static_cast<OpenconnectAuthWorkerThread*>(obj)->validatePeerCert(cert, str);
+         return -1;
+     }
++#endif
+     static int processAuthForm(void *obj, struct oc_auth_form *form)
+     {
+         if (obj)
+@@ -108,7 +123,7 @@
+     return m_openconnectInfo;
+ }
+ 
+-int OpenconnectAuthWorkerThread::writeNewConfig(char *buf, int buflen)
++int OpenconnectAuthWorkerThread::writeNewConfig(const char *buf, int buflen)
+ {
+     Q_UNUSED(buflen)
+     if (*m_userDecidedToQuit)
+@@ -138,10 +153,16 @@
+ }
+ #endif
+ 
+-int OpenconnectAuthWorkerThread::validatePeerCert(OPENCONNECT_X509 *cert, 
const char *reason)
++int OpenconnectAuthWorkerThread::validatePeerCert(void *cert, const char 
*reason)
+ {
+     if (*m_userDecidedToQuit)
+         return -EINVAL;
++
++#if OPENCONNECT_CHECK_VER(5,0)
++    (void)cert;
++    const char *fingerprint = 
openconnect_get_peer_cert_hash(m_openconnectInfo);
++    char *details = openconnect_get_peer_cert_details(m_openconnectInfo);
++#else
+     char fingerprint[41];
+     int ret = 0;
+ 
+@@ -150,6 +171,7 @@
+         return ret;
+ 
+     char *details = openconnect_get_cert_details(m_openconnectInfo, cert);
++#endif
+ 
+     bool accepted = false;
+     m_mutex->lock();
+@@ -159,7 +181,7 @@
+     emit validatePeerCert(qFingerprint, qCertinfo, qReason, &accepted);
+     m_waitForUserInput->wait(m_mutex);
+     m_mutex->unlock();
+-    ::free(details);
++    openconnect_free_cert_info(m_openconnectInfo, details);
+     if (*m_userDecidedToQuit)
+         return -EINVAL;
+ 
+diff -ur 
networkmanagement-0.9.0.11/vpnplugins/openconnect/openconnectauthworkerthread.h 
networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/openconnectauthworkerthread.h
+--- 
networkmanagement-0.9.0.11/vpnplugins/openconnect/openconnectauthworkerthread.h 
   2014-04-23 17:01:42.000000000 +0200
++++ 
networkmanagement-0.9.0.11-oc7/vpnplugins/openconnect/openconnectauthworkerthread.h
        2015-02-01 16:04:02.022521336 +0100
+@@ -59,6 +59,17 @@
+ #define OC_FORM_RESULT_NEWGROUP 2
+ #endif
+ 
++#if OPENCONNECT_CHECK_VER(4,0)
++#define OC3DUP(x)                     (x)
++#else
++#define openconnect_set_option_value(opt, val) do { \
++              struct oc_form_opt *_o = (opt);                         \
++              free(_o->value); _o->value = strdup(val);               \
++      } while (0)
++#define openconnect_free_cert_info(v, x) ::free(x)
++#define OC3DUP(x)                     strdup(x)
++#endif
++
+ #include <QThread>
+ 
+ class QMutex;
+@@ -85,8 +96,8 @@
+     void run();
+ 
+ private:
+-    int writeNewConfig(char *, int);
+-    int validatePeerCert(OPENCONNECT_X509 *, const char *);
++    int writeNewConfig(const char *, int);
++    int validatePeerCert(void *, const char *);
+     int processAuthFormP(struct oc_auth_form *);
+     void writeProgress(int level, const char *, va_list);
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kde4-knetworkmanager.git/commitdiff/8acc4eb820339102181e628ac6f41ecf3c29b146

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to