mirror of
https://github.com/yuezk/GlobalProtect-openconnect.git
synced 2025-05-20 07:26:58 -04:00
Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
f089996cdc | ||
|
260b557238 | ||
|
3495dbfe18 | ||
|
cdf193024c | ||
|
76de070d78 | ||
|
420ae27888 | ||
|
6a347746cc | ||
|
624babb380 | ||
|
511b20fdcd | ||
|
abe33c7407 | ||
|
99a82c8641 | ||
|
e5d0acad3c | ||
|
38a1eded19 | ||
|
3e23e7eaae | ||
|
cf46848e63 | ||
|
2e826201d2 | ||
|
adba408dc3 | ||
|
5d613369ee | ||
|
ebd3de6f63 | ||
|
266ab65892 | ||
|
ccaf93ec31 | ||
|
e08d7d7c4d |
30
.github/workflows/main.yml
vendored
Normal file
30
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
workflow_dispatch:
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: '5.15.2'
|
||||
modules: 'qtwebengine qtwebsockets'
|
||||
|
||||
# Checkout repository and submodules
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
qmake CONFIG+=release
|
||||
make
|
61
.github/workflows/publish.yml
vendored
Normal file
61
.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Publish
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: 5.15.2
|
||||
modules: 'qtwebengine qtwebsockets'
|
||||
|
||||
# Checkout repository and submodules
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
qmake CONFIG+=release
|
||||
make
|
||||
|
||||
aur-publish:
|
||||
needs:
|
||||
- build
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get latest version
|
||||
id: get-version
|
||||
run: |
|
||||
echo ::set-output name=VERSION::$(git tag --sort=-v:refname --list "v[0-9]*" | head -n 1 | cut -c 2-)
|
||||
|
||||
- name: Get the sha256sum
|
||||
id: get-sha256sum
|
||||
run: |
|
||||
echo ::set-output name=SHA::$(curl -L https://github.com/yuezk/GlobalProtect-openconnect/archive/refs/tags/v${{ steps.get-version.outputs.VERSION }}.tar.gz | sha256sum | cut -f1 -d" ")
|
||||
|
||||
- name: Generate PKGBUILD
|
||||
run: |
|
||||
sed "s/{PKG_VERSION}/${{ steps.get-version.outputs.VERSION }}/g;s/{SOURCE_SHA}/${{ steps.get-sha256sum.outputs.SHA }}/g" PKGBUILD.template > PKGBUILD
|
||||
|
||||
- name: Publish AUR package
|
||||
uses: KSXGitHub/github-actions-deploy-aur@v2.2.4
|
||||
with:
|
||||
pkgname: globalprotect-openconnect
|
||||
pkgbuild: ./PKGBUILD
|
||||
commit_username: ${{ secrets.AUR_USERNAME }}
|
||||
commit_email: ${{ secrets.AUR_EMAIL }}
|
||||
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
|
||||
commit_message: 'Release v${{ steps.get-version.outputs.VERSION }}'
|
||||
force_push: true
|
@@ -8,3 +8,4 @@ Exec=/usr/bin/gpclient
|
||||
Icon=com.yuezk.qt.GPClient
|
||||
Categories=Network;VPN;Utility;Qt;
|
||||
Keywords=GlobalProtect;Openconnect;SAML;connection;VPN;
|
||||
StartupWMClass=gpclient
|
||||
|
@@ -44,8 +44,9 @@ void GatewayAuthenticator::login(const LoginParams ¶ms)
|
||||
void GatewayAuthenticator::onLoginFinished()
|
||||
{
|
||||
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
|
||||
QByteArray response;
|
||||
|
||||
if (reply->error()) {
|
||||
if (reply->error() || (response = reply->readAll()).contains("Authentication failure")) {
|
||||
PLOGE << QString("Failed to login the gateway at %1, %2").arg(loginUrl).arg(reply->errorString());
|
||||
|
||||
if (normalLoginWindow) {
|
||||
@@ -61,7 +62,7 @@ void GatewayAuthenticator::onLoginFinished()
|
||||
normalLoginWindow->close();
|
||||
}
|
||||
|
||||
const QUrlQuery params = gpclient::helper::parseGatewayResponse(reply->readAll());
|
||||
const QUrlQuery params = gpclient::helper::parseGatewayResponse(response);
|
||||
emit success(params.toString());
|
||||
}
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
#include <plog/Log.h>
|
||||
#include <plog/Appenders/ColorConsoleAppender.h>
|
||||
|
||||
static const QString version = "v1.2.5";
|
||||
static const QString version = "v1.2.9";
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -28,6 +28,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
SingleApplication app(argc, argv);
|
||||
app.setQuitOnLastWindowClosed(false);
|
||||
|
||||
GPClient w;
|
||||
w.show();
|
||||
|
||||
|
39
PKGBUILD.template
Normal file
39
PKGBUILD.template
Normal file
@@ -0,0 +1,39 @@
|
||||
# Maintainer: Keinv Yue <yuezk001@gmail.com>
|
||||
|
||||
pkgname=globalprotect-openconnect
|
||||
_gitname=GlobalProtect-openconnect
|
||||
pkgver={PKG_VERSION}
|
||||
pkgrel=1
|
||||
pkgdesc="A GlobalProtect VPN client (GUI) for Linux based on Openconnect and built with Qt5, supports SAML auth mode."
|
||||
arch=(x86_64 aarch64)
|
||||
url="https://github.com/yuezk/${_gitname}"
|
||||
license=('GPL3')
|
||||
depends=('openconnect>=8.0.0' qt5-base qt5-webengine qt5-websockets)
|
||||
makedepends=()
|
||||
source=(
|
||||
"${_gitname}-${pkgver}.tar.gz::${url}/archive/v${pkgver}.tar.gz"
|
||||
"https://github.com/itay-grudev/SingleApplication/archive/v3.0.19.tar.gz"
|
||||
"https://github.com/SergiusTheBest/plog/archive/1.1.5.tar.gz"
|
||||
)
|
||||
|
||||
sha256sums=(
|
||||
'{SOURCE_SHA}'
|
||||
'9405fd259288b2a862e91e5135bccee936f0438e1b32c13603277132309d15e0'
|
||||
'6c80b4701183d2415bec927e1f5ca9b1761b3b5c65d3e09fb29c743e016d5609'
|
||||
);
|
||||
|
||||
prepare() {
|
||||
mv "$srcdir/SingleApplication-3.0.19" -T "$srcdir/${_gitname}-${pkgver}/singleapplication"
|
||||
mv "$srcdir/plog-1.1.5" -T "$srcdir/${_gitname}-${pkgver}/plog"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$srcdir/${_gitname}-${pkgver}"
|
||||
qmake CONFIG+=release "${srcdir}/${_gitname}-${pkgver}/GlobalProtect-openconnect.pro"
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$srcdir/${_gitname}-${pkgver}"
|
||||
make INSTALL_ROOT="$pkgdir/" install
|
||||
}
|
32
README.md
32
README.md
@@ -20,12 +20,27 @@ A GlobalProtect VPN client (GUI) for Linux based on Openconnect and built with Q
|
||||
### Ubuntu
|
||||
1. Install openconnect v8.x
|
||||
|
||||
```sh
|
||||
sudo apt install openconnect
|
||||
openconnect --version
|
||||
```
|
||||
|
||||
For Ubuntu 18.04 you might need to [build the latest openconnect from source code](https://gist.github.com/yuezk/ab9a4b87a9fa0182bdb2df41fab5f613).
|
||||
|
||||
2. Install the Qt dependencies
|
||||
|
||||
For Ubuntu 20, this should work.
|
||||
|
||||
```sh
|
||||
sudo apt install qt5-default libqt5websockets5-dev qtwebengine5-dev
|
||||
sudo apt install qtbase5-dev libqt5websockets5-dev qtwebengine5-dev qttools5-dev debhelper
|
||||
```
|
||||
|
||||
For Ubuntu 21, you need to install the base pieces separately as QT5 is the default.
|
||||
|
||||
```sh
|
||||
sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5websockets5-dev qtwebengine5-dev qttools5-dev debhelper
|
||||
```
|
||||
|
||||
### OpenSUSE
|
||||
Install the Qt dependencies
|
||||
|
||||
@@ -76,15 +91,28 @@ Relatively manual process for now:
|
||||
git-archive-all --force-submodules --prefix=globalprotect-openconnect-1.3.0/ ../globalprotect-openconnect_1.3.0.orig.tar.gz
|
||||
```
|
||||
|
||||
* Finally extract the source tree and build the debian package.
|
||||
* Finally extract the source tree, build the debian package, and install it.
|
||||
|
||||
```
|
||||
cd ..
|
||||
tar -xzvf globalprotect-openconnect_1.3.0.orig.tar.gz
|
||||
cd globalprotect-openconnect-1.3.0
|
||||
fakeroot dpkg-buildpackage -uc -us -sa 2>&1 | tee ../build.log
|
||||
sudo dpkg -i globalprotect-openconnect_1.3.0-1ppa1_amd64.deb
|
||||
```
|
||||
|
||||
### NixOS
|
||||
In `configuration.nix`:
|
||||
|
||||
```
|
||||
services.globalprotect = {
|
||||
enable = true;
|
||||
# if you need a Host Integrity Protection report
|
||||
csdWrapper = "${pkgs.openconnect}/libexec/openconnect/hipreport.sh";
|
||||
};
|
||||
|
||||
environment.systemPackages = [ globalprotect-openconnect ];
|
||||
```
|
||||
|
||||
|
||||
## [License](./LICENSE)
|
||||
|
2
debian/control
vendored
2
debian/control
vendored
@@ -2,7 +2,7 @@ Source: globalprotect-openconnect
|
||||
Section: net
|
||||
Priority: optional
|
||||
Maintainer: Kevin Yue <k3vinyue@gmail.com>
|
||||
Build-Depends: debhelper (>=11~), qt5-default (>=5.9), qttools5-dev (>=5.9), libqt5websockets5-dev (>=5.9), qtwebengine5-dev (>=5.9)
|
||||
Build-Depends: debhelper (>=11~), qtbase5-dev, qttools5-dev (>=5.9), libqt5websockets5-dev (>=5.9), qtwebengine5-dev (>=5.9)
|
||||
Standards-Version: 4.1.4
|
||||
Homepage: https://github.com/yuezk/GlobalProtect-openconnect
|
||||
|
||||
|
Reference in New Issue
Block a user