diff --git a/GPService/gpservice.cpp b/GPService/gpservice.cpp index 2d6f214..41e66e0 100644 --- a/GPService/gpservice.cpp +++ b/GPService/gpservice.cpp @@ -40,7 +40,7 @@ QString GPService::findBinary() } /* Port from https://github.com/qt/qtbase/blob/11d1dcc6e263c5059f34b44d531c9ccdf7c0b1d6/src/corelib/io/qprocess.cpp#L2115 */ -QStringList GPService::splitCommand(QStringView command) +QStringList GPService::splitCommand(QString command) { QStringList args; QString tmp; @@ -114,6 +114,7 @@ void GPService::connect(QString server, QString username, QString passwd, QStrin QStringList args; args << QCoreApplication::arguments().mid(1) << "--protocol=gp" + << "-s" << qgetenv("VPNC_SCRIPT") << splitCommand(extraArgs) << "-u" << username << "-C" << passwd diff --git a/GPService/gpservice.h b/GPService/gpservice.h index 8e75eac..7f547a3 100644 --- a/GPService/gpservice.h +++ b/GPService/gpservice.h @@ -3,7 +3,6 @@ #include #include -#include static const QString binaryPaths[] { "/usr/local/bin/openconnect", @@ -55,7 +54,7 @@ private: void log(QString msg); static QString findBinary(); - static QStringList splitCommand(QStringView command); + static QStringList splitCommand(QString command); }; #endif // GLOBALPROTECTSERVICE_H diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index c48c23a..6b4b3eb 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -8,11 +8,9 @@ description: | grade: devel confinement: devmode # use 'strict' once you have the right plugs and slots -package-repositories: - - type: apt - ppa: beineri/opt-qt-5.12.10-bionic - - type: apt - ppa: dominik-stadler/dsta-bionic-ppa +layout: + /usr/share/qt5: + bind: $SNAP/usr/share/qt5 slots: gpservice-slot: @@ -32,17 +30,21 @@ apps: command: usr/bin/gpservice environment: LANG: en_US.utf8 + VPNC_SCRIPT: $SNAP/usr/share/vpnc-scripts/vpnc-script plugs: - network - # slots: - # - gpservice-slot + slots: + - gpservice-slot gpclient: - common-id: com.yuezk.qt.gpclient.desktop + common-id: com.yuezk.qt.gpclient command: usr/bin/gpclient + extensions: + - kde-neon desktop: usr/share/applications/com.yuezk.qt.gpclient.desktop environment: - QT_PLUGIN_PATH: $SNAP/opt/qt512/plugins + # QT_PLUGIN_PATH: $SNAP/opt/qt512/plugins + QT_PLUGIN_PATH: $SNAP/usr/lib/x86_64-linux-gnu/qt5/plugins plugs: - desktop - desktop-legacy @@ -53,32 +55,162 @@ apps: - gpservice-plug parts: - application: - plugin: nil - source: . + gmplib: + plugin: autotools + source: https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz + nettle: + plugin: autotools + source: https://ftp.gnu.org/gnu/nettle/nettle-3.7.3.tar.gz + configflags: + - --disable-openssl + - --disable-documentation + after: + - gmplib + + tpm2-tss: + plugin: autotools + source: https://github.com/tpm2-software/tpm2-tss.git + source-depth: 1 + source-tag: 3.1.0 build-packages: - - g++ - - make - - libgl1-mesa-dev - - qt512base - - qt512websockets - - qt512webengine - + - autoconf-archive + - libcmocka-dev + - build-essential + - pkg-config + - libtool + - automake + - libssl-dev + - autoconf + - libjson-c-dev + - libini-config-dev + - libcurl4-openssl-dev + - acl stage-packages: - - qt512base - - qt512websockets - - qt512webengine + - libasn1-8-heimdal + - libcurl4 + - libgssapi3-heimdal + - libhcrypto4-heimdal + - libheimbase1-heimdal + - libheimntlm0-heimdal + - libhx509-5-heimdal + - libkrb5-26-heimdal + - libldap-2.4-2 + - libnghttp2-14 + - libpsl5 + - libroken18-heimdal + - librtmp1 + - libsasl2-2 + - libwind0-heimdal + configflags: + - --disable-doxygen-doc - override-build: | - QT_BASE_DIR=/opt/qt512 + gnutls: + plugin: autotools + source: http://mirrors.dotsrc.org/gcrypt/gnutls/v3.7/gnutls-3.7.2.tar.xz + build-packages: + - wget + - build-essential + - autoconf + - libtool + - gettext + - autopoint + - automake + - autogen + - libp11-kit-dev + - libtspi-dev + - libunistring-dev + - guile-2.2-dev + - libtasn1-6-dev + - libidn2-0-dev + - gperf + - libunbound-dev + - bison + stage-packages: + - guile-2.2-libs + - libgc1c2 + - libltdl7 + - libopts25 + - libunbound2 + configflags: + - --disable-doc + - --disable-full-test-suite + after: + - gmplib + - nettle + + libpskc: + plugin: autotools + source: https://download.savannah.nongnu.org/releases/oath-toolkit/oath-toolkit-2.6.7.tar.gz + source-subdir: libpskc + build-packages: + - build-essential + - autoconf + - automake + - libtool + - bison + - gengetopt + - libxmlsec1-dev + - libxml2-utils - export QTDIR=$QT_BASE_DIR - export PATH=$QT_BASE_DIR/bin:$PATH - export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib:$LD_LIBRARY_PATH - export PKG_CONFIG_PATH=$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH + openconnect: + plugin: autotools + source: https://github.com/openconnect/openconnect.git + source-depth: 1 + source-tag: v8.10 + build-packages: + - build-essential + - gettext + - autoconf + - automake + - libtool + - libxml2-dev + - zlib1g-dev + - pkg-config + - libp11-kit-dev + - libproxy-dev + - trousers + - libtasn1-6-dev + - libstoken-dev + - libpcsclite-dev + - vpnc-scripts + stage-packages: + - vpnc-scripts + - libp11-kit0 + - libproxy1v5 + - libstoken1 + - libpcsclite1 + - libxml2 + - zlib1g + after: + - gnutls + - tpm2-tss + - libpskc + + application: + plugin: qmake + build-attributes: + - keep-execstack + source: . + build-packages: + - qt5-default + - qtwebengine5-dev + - libqt5websockets5-dev + stage-packages: + - libqt5printsupport5 + - libqt5gui5 + - libqt5network5 + - libqt5svg5 + - libqt5webengine5 + - libqt5websockets5 + - libqt5quickwidgets5 + - libqt5webenginewidgets5 + - libqt5dbus5 + - libatm1 + - libtspi1 + - libxmlsec1 + - libxmlsec1-openssl + options: + - CONFIG+=release - qmake CONFIG+=release - make - make install INSTALL_ROOT="${SNAPCRAFT_PART_INSTALL}"