mirror of
				https://github.com/yuezk/GlobalProtect-openconnect.git
				synced 2025-05-20 07:26:58 -04:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
			3daad748ae
			...
			18d4e1ea28
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 18d4e1ea28 | ||
|  | 8ec07c0486 | ||
|  | 09e4a5c227 | ||
|  | bd29c20f4c | ||
|  | 016e1a4494 | ||
|  | a55616b66a | ||
|  | 9db62448d9 | ||
|  | c20ab0f393 | ||
|  | e1af1da764 | ||
|  | 3d3d7038db | ||
|  | d1ec358b8a | ||
|  | 354f50b671 | ||
|  | e8a64539aa | 
							
								
								
									
										433
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										433
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -33,9 +33,11 @@ jobs: | |||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-tarball |         name: artifact-tarball | ||||||
|  |         if-no-files-found: error | ||||||
|         path: | |         path: | | ||||||
|           globalprotect-openconnect-*.tar.gz |           gp/.build/tarball/*.tar.gz | ||||||
|   deb: |  | ||||||
|  |   build-deb: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     needs: [tarball] |     needs: [tarball] | ||||||
|     container: |     container: | ||||||
| @@ -50,12 +52,14 @@ jobs: | |||||||
|         name: artifact-tarball |         name: artifact-tarball | ||||||
|     - name: Build DEB package |     - name: Build DEB package | ||||||
|       run: | |       run: | | ||||||
|         tar -xzf globalprotect-openconnect-*.tar.gz |         tar -xzf *.tar.gz | ||||||
|         cd globalprotect-openconnect-* |         cd globalprotect-openconnect-* | ||||||
|         make deb |  | ||||||
|  |         make deb BUILD_FE=0 | ||||||
|     - name: Install DEB package |     - name: Install DEB package | ||||||
|       run: | |       run: | | ||||||
|         sudo dpkg -i globalprotect-openconnect_*.deb |         cd globalprotect-openconnect-*/ | ||||||
|  |         sudo dpkg -i .build/deb/*.deb | ||||||
|  |  | ||||||
|         gpclient --version |         gpclient --version | ||||||
|         gpservice --version |         gpservice --version | ||||||
| @@ -65,10 +69,11 @@ jobs: | |||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-deb |         name: artifact-deb | ||||||
|  |         if-no-files-found: error | ||||||
|         path: | |         path: | | ||||||
|           globalprotect-openconnect_*.deb |           globalprotect-openconnect-*/.build/deb/*.deb | ||||||
|  |  | ||||||
|   rpm: |   build-rpm: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     needs: [tarball] |     needs: [tarball] | ||||||
|     container: |     container: | ||||||
| @@ -85,7 +90,8 @@ jobs: | |||||||
|       run: | |       run: | | ||||||
|         tar -xzf globalprotect-openconnect-*.tar.gz |         tar -xzf globalprotect-openconnect-*.tar.gz | ||||||
|         cd globalprotect-openconnect-*/ |         cd globalprotect-openconnect-*/ | ||||||
|         make rpm |  | ||||||
|  |         make rpm BUILD_FE=0 | ||||||
|     - name: Install RPM package |     - name: Install RPM package | ||||||
|       run: | |       run: | | ||||||
|         cd globalprotect-openconnect-*/ |         cd globalprotect-openconnect-*/ | ||||||
| @@ -101,300 +107,147 @@ jobs: | |||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-rpm |         name: artifact-rpm | ||||||
|  |         if-no-files-found: error | ||||||
|         path: | |         path: | | ||||||
|           globalprotect-openconnect-*/.build/rpm/*.rpm |           globalprotect-openconnect-*/.build/rpm/*.rpm | ||||||
|  |  | ||||||
|   # Include arm64 if ref is a tag |   build-pkgbuild: | ||||||
|   # setup-matrix: |     runs-on: ubuntu-latest | ||||||
|   #   runs-on: ubuntu-latest |     needs: [tarball] | ||||||
|   #   outputs: |     container: | ||||||
|   #     matrix: ${{ steps.set-matrix.outputs.matrix }} |       image: yuezk/gpdev:pkgbuild | ||||||
|   #   steps: |       credentials: | ||||||
|   #     - name: Set up matrix |         username: ${{ secrets.DOCKER_HUB_USERNAME }} | ||||||
|   #       id: set-matrix |         password: ${{ secrets.DOCKER_HUB_TOKEN }} | ||||||
|   #       run: | |     steps: | ||||||
|   #         if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then |     - name: Download tarball | ||||||
|   #           echo "matrix=[\"amd64\", \"arm64\"]" >> $GITHUB_OUTPUT |       uses: actions/download-artifact@v3 | ||||||
|   #         else |       with: | ||||||
|   #           echo "matrix=[\"amd64\"]" >> $GITHUB_OUTPUT |         name: artifact-tarball | ||||||
|   #         fi |     - name: Build PKGBUILD package | ||||||
|  |       run: | | ||||||
|  |         tar -xzf globalprotect-openconnect-*.tar.gz | ||||||
|  |         cd globalprotect-openconnect-*/ | ||||||
|  |  | ||||||
|   # build-fe: |         make pkgbuild BUILD_FE=0 | ||||||
|   #   runs-on: ubuntu-latest |     - name: Install PKGBUILD package | ||||||
|   #   steps: |       run: | | ||||||
|   #     - name: Checkout gpgui repo |         cd globalprotect-openconnect-*/ | ||||||
|   #       uses: actions/checkout@v3 |         sudo pacman -U --noconfirm .build/pkgbuild/*.pkg.tar.zst | ||||||
|   #       with: |  | ||||||
|   #         token: ${{ secrets.GH_PAT }} |  | ||||||
|   #         repository: yuezk/gpgui |  | ||||||
|  |  | ||||||
|   #     - name: Install Node.js |         gpclient --version | ||||||
|   #       uses: actions/setup-node@v4 |         gpservice --version | ||||||
|   #       with: |         gpauth --version | ||||||
|   #         node-version: 18 |         gpgui-helper --version | ||||||
|  |     - name: Upload PKGBUILD package | ||||||
|  |       uses: actions/upload-artifact@v3 | ||||||
|  |       with: | ||||||
|  |         name: artifact-pkgbuild | ||||||
|  |         if-no-files-found: error | ||||||
|  |         path: | | ||||||
|  |           globalprotect-openconnect-*/.build/pkgbuild/*.pkg.tar.zst | ||||||
|  |  | ||||||
|   #     - uses: pnpm/action-setup@v2 |   build-binary: | ||||||
|   #       with: |     runs-on: ubuntu-latest | ||||||
|   #         version: 8 |     needs: [tarball] | ||||||
|  |     container: | ||||||
|  |       image: yuezk/gpdev:main | ||||||
|  |       credentials: | ||||||
|  |         username: ${{ secrets.DOCKER_HUB_USERNAME }} | ||||||
|  |         password: ${{ secrets.DOCKER_HUB_TOKEN }} | ||||||
|  |     steps: | ||||||
|  |       - name: Download tarball | ||||||
|  |         uses: actions/download-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: artifact-tarball | ||||||
|  |       - name: Build binary using OFFLINE mode | ||||||
|  |         run: | | ||||||
|  |           tar -xzf globalprotect-openconnect-*.tar.gz | ||||||
|  |           cd globalprotect-openconnect-*/ | ||||||
|  |  | ||||||
|   #     - name: Install dependencies |           make binary OFFLINE=1 | ||||||
|   #       run: | |       - name: Install binary | ||||||
|   #         cd app |         run: | | ||||||
|   #         pnpm install |           cd globalprotect-openconnect-*/ | ||||||
|   #     - name: Build |           cd .build/binary/globalprotect-openconnect_*_$(uname -m) | ||||||
|   #       run: | |  | ||||||
|   #         cd app |  | ||||||
|   #         pnpm run build |  | ||||||
|  |  | ||||||
|   #     - name: Upload artifacts |           sudo make install | ||||||
|   #       uses: actions/upload-artifact@v3 |           gpclient --version | ||||||
|   #       with: |           gpservice --version | ||||||
|   #         name: gpgui-fe |           gpauth --version | ||||||
|   #         path: app/dist |           gpgui-helper --version | ||||||
|  |       - name: Upload binary | ||||||
|  |         uses: actions/upload-artifact@v3 | ||||||
|  |         with: | ||||||
|  |           name: artifact-binary | ||||||
|  |           if-no-files-found: error | ||||||
|  |           path: | | ||||||
|  |             globalprotect-openconnect-*/.build/binary/*.bin.tar.xz* | ||||||
|  |  | ||||||
|   # build-tauri-amd64: |   build-gpgui: | ||||||
|   #   needs: [build-fe] |     runs-on: ubuntu-latest | ||||||
|   #   runs-on: ubuntu-latest |     container: | ||||||
|   #   steps: |       image: yuezk/gpdev:main | ||||||
|   #     - name: Checkout gpgui repo |       credentials: | ||||||
|   #       uses: actions/checkout@v3 |         username: ${{ secrets.DOCKER_HUB_USERNAME }} | ||||||
|   #       with: |         password: ${{ secrets.DOCKER_HUB_TOKEN }} | ||||||
|   #         token: ${{ secrets.GH_PAT }} |     steps: | ||||||
|   #         repository: yuezk/gpgui |     - uses: pnpm/action-setup@v2 | ||||||
|   #         path: gpgui |       with: | ||||||
|  |         version: 8 | ||||||
|  |     - name: Checkout GlobalProtect-openconnect | ||||||
|  |       uses: actions/checkout@v3 | ||||||
|  |       with: | ||||||
|  |         token: ${{ secrets.GH_PAT }} | ||||||
|  |         repository: yuezk/GlobalProtect-openconnect | ||||||
|  |         path: gp | ||||||
|  |     - name: Checkout gpgui | ||||||
|  |       uses: actions/checkout@v3 | ||||||
|  |       with: | ||||||
|  |         token: ${{ secrets.GH_PAT }} | ||||||
|  |         repository: yuezk/gpgui | ||||||
|  |         path: gpgui | ||||||
|  |     - name: Build gpgui | ||||||
|  |       run: | | ||||||
|  |         cd gpgui | ||||||
|  |         make package | ||||||
|  |  | ||||||
|   #     - name: Checkout gp repo |         ./target/release/gpgui --version | ||||||
|   #       uses: actions/checkout@v3 |     - name: Upload gpgui | ||||||
|   #       with: |       uses: actions/upload-artifact@v3 | ||||||
|   #         token: ${{ secrets.GH_PAT }} |       with: | ||||||
|   #         repository: yuezk/GlobalProtect-openconnect |         name: artifact-gpgui | ||||||
|   #         path: gp |         if-no-files-found: error | ||||||
|  |         path: | | ||||||
|  |           gpgui/.build/package/*.tar.xz* | ||||||
|  |  | ||||||
|   #     - name: Download gpgui-fe artifact |   gh-release: | ||||||
|   #       uses: actions/download-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: gpgui-fe |  | ||||||
|   #         path: gpgui/app/dist |  | ||||||
|  |  | ||||||
|   #     - name: Login to Docker Hub |  | ||||||
|   #       uses: docker/login-action@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         username: ${{ secrets.DOCKER_HUB_USERNAME }} |  | ||||||
|   #         password: ${{ secrets.DOCKER_HUB_TOKEN }} |  | ||||||
|  |  | ||||||
|   #     - name: Build Tauri in Docker |  | ||||||
|   #       run: | |  | ||||||
|   #         docker run \ |  | ||||||
|   #           --rm \ |  | ||||||
|   #           -v $(pwd):/${{ github.workspace }} \ |  | ||||||
|   #           -w ${{ github.workspace }} \ |  | ||||||
|   #           -e CI=true \ |  | ||||||
|   #           yuezk/gpdev:main \ |  | ||||||
|   #           "./gpgui/scripts/build.sh" |  | ||||||
|  |  | ||||||
|   #     - name: Upload artifacts |  | ||||||
|   #       uses: actions/upload-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-amd64-tauri |  | ||||||
|   #         path: | |  | ||||||
|   #           gpgui/.tmp/artifact |  | ||||||
|  |  | ||||||
|   # build-tauri-arm64: |  | ||||||
|     # if: startsWith(github.ref, 'refs/tags/') |     # if: startsWith(github.ref, 'refs/tags/') | ||||||
|   #   needs: [build-fe] |     runs-on: ubuntu-latest | ||||||
|   #   runs-on: self-hosted |     needs: | ||||||
|   #   steps: |       - build-deb | ||||||
|   #     - name: Checkout gpgui repo |       - build-rpm | ||||||
|   #       uses: actions/checkout@v3 |       - build-pkgbuild | ||||||
|   #       with: |       - build-binary | ||||||
|   #         token: ${{ secrets.GH_PAT }} |       - build-gpgui | ||||||
|   #         repository: yuezk/gpgui |  | ||||||
|   #         path: gpgui |  | ||||||
|  |  | ||||||
|   #     - name: Checkout gp repo |     steps: | ||||||
|   #       uses: actions/checkout@v3 |       - name: Download all artifacts | ||||||
|   #       with: |         uses: actions/download-artifact@v3 | ||||||
|   #         token: ${{ secrets.GH_PAT }} |         with: | ||||||
|   #         repository: yuezk/GlobalProtect-openconnect |           path: artifact | ||||||
|   #         path: gp |  | ||||||
|  |  | ||||||
|   #     - name: Download gpgui-fe artifact |       - name: Create GH release | ||||||
|   #       uses: actions/download-artifact@v3 |         uses: softprops/action-gh-release@v1 | ||||||
|   #       with: |         with: | ||||||
|   #         name: gpgui-fe |           token: ${{ secrets.GH_PAT }} | ||||||
|   #         path: gpgui/app/dist |  | ||||||
|   #     - name: Build Tauri |  | ||||||
|   #       run: | |  | ||||||
|   #         ./gpgui/scripts/build.sh |  | ||||||
|  |  | ||||||
|   #     - name: Upload artifacts |  | ||||||
|   #       uses: actions/upload-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-arm64-tauri |  | ||||||
|   #         path: | |  | ||||||
|   #           gpgui/.tmp/artifact |  | ||||||
|  |  | ||||||
|   # package-tarball: |  | ||||||
|   #   needs: [build-tauri-amd64, build-tauri-arm64] |  | ||||||
|   #   runs-on: ubuntu-latest |  | ||||||
|   #   steps: |  | ||||||
|   #     - name: Checkout gpgui repo |  | ||||||
|   #       uses: actions/checkout@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         token: ${{ secrets.GH_PAT }} |  | ||||||
|   #         repository: yuezk/gpgui |  | ||||||
|   #         path: gpgui |  | ||||||
|  |  | ||||||
|   #     - name: Download artifact-amd64-tauri |  | ||||||
|   #       uses: actions/download-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-amd64-tauri |  | ||||||
|   #         path: gpgui/.tmp/artifact |  | ||||||
|  |  | ||||||
|   #     - name: Download artifact-arm64-tauri |  | ||||||
|   #       uses: actions/download-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-arm64-tauri |  | ||||||
|   #         path: gpgui/.tmp/artifact |  | ||||||
|  |  | ||||||
|   #     - name: Create tarball |  | ||||||
|   #       run: | |  | ||||||
|   #         ./gpgui/scripts/build-tarball.sh |  | ||||||
|  |  | ||||||
|   #     - name: Upload tarball |  | ||||||
|   #       uses: actions/upload-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-tarball |  | ||||||
|   #         path: | |  | ||||||
|   #           gpgui/.tmp/tarball/*.tar.gz |  | ||||||
|  |  | ||||||
|   # package-rpm: |  | ||||||
|   #   needs: [setup-matrix, package-tarball] |  | ||||||
|   #   runs-on: ubuntu-latest |  | ||||||
|   #   strategy: |  | ||||||
|   #     matrix: |  | ||||||
|   #       arch: ${{ fromJson(needs.setup-matrix.outputs.matrix) }} |  | ||||||
|   #   steps: |  | ||||||
|   #     - name: Checkout gpgui repo |  | ||||||
|   #       uses: actions/checkout@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         token: ${{ secrets.GH_PAT }} |  | ||||||
|   #         repository: yuezk/gpgui |  | ||||||
|   #         path: gpgui |  | ||||||
|  |  | ||||||
|   #     - name: Download package tarball |  | ||||||
|   #       uses: actions/download-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-tarball |  | ||||||
|   #         path: gpgui/.tmp/artifact |  | ||||||
|  |  | ||||||
|   #     - name: Set up QEMU |  | ||||||
|   #       uses: docker/setup-qemu-action@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         platforms: ${{ matrix.arch }} |  | ||||||
|  |  | ||||||
|   #     - name: Login to Docker Hub |  | ||||||
|   #       uses: docker/login-action@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         username: ${{ secrets.DOCKER_HUB_USERNAME }} |  | ||||||
|   #         password: ${{ secrets.DOCKER_HUB_TOKEN }} |  | ||||||
|  |  | ||||||
|   #     - name: Create RPM package |  | ||||||
|   #       run: | |  | ||||||
|   #         docker run \ |  | ||||||
|   #           --rm \ |  | ||||||
|   #           -v $(pwd):/${{ github.workspace }} \ |  | ||||||
|   #           -w ${{ github.workspace }} \ |  | ||||||
|   #           --platform linux/${{ matrix.arch }} \ |  | ||||||
|   #           yuezk/gpdev:rpm-builder \ |  | ||||||
|   #           "./gpgui/scripts/build-rpm.sh" |  | ||||||
|  |  | ||||||
|   #     - name: Upload rpm artifacts |  | ||||||
|   #       uses: actions/upload-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-${{ matrix.arch }}-rpm |  | ||||||
|   #         path: | |  | ||||||
|   #           gpgui/.tmp/artifact/*.rpm |  | ||||||
|  |  | ||||||
|   # package-pkgbuild: |  | ||||||
|   #   needs: [setup-matrix, build-tauri-amd64, build-tauri-arm64] |  | ||||||
|   #   runs-on: ubuntu-latest |  | ||||||
|   #   strategy: |  | ||||||
|   #     matrix: |  | ||||||
|   #       arch: ${{ fromJson(needs.setup-matrix.outputs.matrix) }} |  | ||||||
|   #   steps: |  | ||||||
|   #     - name: Checkout gpgui repo |  | ||||||
|   #       uses: actions/checkout@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         token: ${{ secrets.GH_PAT }} |  | ||||||
|   #         repository: yuezk/gpgui |  | ||||||
|   #         path: gpgui |  | ||||||
|  |  | ||||||
|   #     - name: Download artifact-${{ matrix.arch }} |  | ||||||
|   #       uses: actions/download-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-${{ matrix.arch }}-tauri |  | ||||||
|   #         path: gpgui/.tmp/artifact |  | ||||||
|  |  | ||||||
|   #     - name: Set up QEMU |  | ||||||
|   #       uses: docker/setup-qemu-action@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         platforms: ${{ matrix.arch }} |  | ||||||
|  |  | ||||||
|   #     - name: Login to Docker Hub |  | ||||||
|   #       uses: docker/login-action@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         username: ${{ secrets.DOCKER_HUB_USERNAME }} |  | ||||||
|   #         password: ${{ secrets.DOCKER_HUB_TOKEN }} |  | ||||||
|  |  | ||||||
|   #     - name: Generate PKGBUILD |  | ||||||
|   #       run: | |  | ||||||
|   #         export CI_ARCH=${{ matrix.arch }} |  | ||||||
|   #         ./gpgui/scripts/generate-pkgbuild.sh |  | ||||||
|  |  | ||||||
|   #     - name: Build PKGBUILD package |  | ||||||
|   #       run: | |  | ||||||
|   #         # Build package |  | ||||||
|   #         docker run \ |  | ||||||
|   #           --rm \ |  | ||||||
|   #           -v $(pwd)/gpgui/.tmp/pkgbuild:/pkgbuild \ |  | ||||||
|   #           --platform linux/${{ matrix.arch }} \ |  | ||||||
|   #           yuezk/gpdev:pkgbuild |  | ||||||
|  |  | ||||||
|   #     - name: Upload pkgbuild artifacts |  | ||||||
|   #       uses: actions/upload-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         name: artifact-${{ matrix.arch }}-pkgbuild |  | ||||||
|   #         path: | |  | ||||||
|   #           gpgui/.tmp/pkgbuild/*.pkg.tar.zst |  | ||||||
|  |  | ||||||
|   # gh-release: |  | ||||||
|   #   if: startsWith(github.ref, 'refs/tags/') |  | ||||||
|   #   runs-on: ubuntu-latest |  | ||||||
|   #   needs: |  | ||||||
|   #     - package-rpm |  | ||||||
|   #     - package-pkgbuild |  | ||||||
|  |  | ||||||
|   #   steps: |  | ||||||
|   #     - name: Download artifact |  | ||||||
|   #       uses: actions/download-artifact@v3 |  | ||||||
|   #       with: |  | ||||||
|   #         path: artifact |  | ||||||
|   #         # pattern: artifact-* |  | ||||||
|   #         # merge-multiple: true |  | ||||||
|  |  | ||||||
|   #     # - name: Generate checksum |  | ||||||
|   #     #   uses: jmgilman/actions-generate-checksum@v1 |  | ||||||
|   #     #   with: |  | ||||||
|   #     #     output: checksums.txt |  | ||||||
|   #     #     patterns: | |  | ||||||
|   #     #       artifact/* |  | ||||||
|  |  | ||||||
|   #     - name: Create GH release |  | ||||||
|   #       uses: softprops/action-gh-release@v1 |  | ||||||
|   #       with: |  | ||||||
|   #         token: ${{ secrets.GH_PAT }} |  | ||||||
|           # prerelease: ${{ contains(github.ref, 'latest') }} |           # prerelease: ${{ contains(github.ref, 'latest') }} | ||||||
|   #         fail_on_unmatched_files: true |           prerelease: true | ||||||
|   #         files: | |           fail_on_unmatched_files: true | ||||||
|   #           artifact/artifact-*/* |           files: | | ||||||
|  |             artifact/**/*.deb | ||||||
|  |             artifact/**/*.rpm | ||||||
|  |             artifact/**/*.pkg.tar.zst | ||||||
|  |             artifact/**/*.bin.tar.xz | ||||||
|  |             artifact/**/*.tar.gz | ||||||
|  |             artifact/**/*.sha256 | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @@ -1527,8 +1527,10 @@ dependencies = [ | |||||||
|  "openconnect", |  "openconnect", | ||||||
|  "serde", |  "serde", | ||||||
|  "serde_json", |  "serde_json", | ||||||
|  |  "tar", | ||||||
|  "tokio", |  "tokio", | ||||||
|  "tokio-util", |  "tokio-util", | ||||||
|  |  "xz2", | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @@ -2198,6 +2200,17 @@ dependencies = [ | |||||||
|  "tracing-subscriber", |  "tracing-subscriber", | ||||||
| ] | ] | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "lzma-sys" | ||||||
|  | version = "0.1.20" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" | ||||||
|  | dependencies = [ | ||||||
|  |  "cc", | ||||||
|  |  "libc", | ||||||
|  |  "pkg-config", | ||||||
|  | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "mac" | name = "mac" | ||||||
| version = "0.1.1" | version = "0.1.1" | ||||||
| @@ -5124,6 +5137,15 @@ version = "0.13.6" | |||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" | checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" | ||||||
|  |  | ||||||
|  | [[package]] | ||||||
|  | name = "xz2" | ||||||
|  | version = "0.1.7" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" | ||||||
|  | dependencies = [ | ||||||
|  |  "lzma-sys", | ||||||
|  | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "zeroize" | name = "zeroize" | ||||||
| version = "1.7.0" | version = "1.7.0" | ||||||
|   | |||||||
							
								
								
									
										157
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										157
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,4 +1,5 @@ | |||||||
| OFFLINE ?= 0 | OFFLINE ?= 0 | ||||||
|  | BUILD_FE ?= 1 | ||||||
| CARGO ?= cargo | CARGO ?= cargo | ||||||
|  |  | ||||||
| VERSION = $(shell $(CARGO) metadata --no-deps --format-version 1 | jq -r '.packages[0].version') | VERSION = $(shell $(CARGO) metadata --no-deps --format-version 1 | jq -r '.packages[0].version') | ||||||
| @@ -7,6 +8,7 @@ PPA_REVISION ?= 1 | |||||||
| PKG_NAME = globalprotect-openconnect | PKG_NAME = globalprotect-openconnect | ||||||
| PKG = $(PKG_NAME)-$(VERSION) | PKG = $(PKG_NAME)-$(VERSION) | ||||||
| SERIES ?= $(shell lsb_release -cs) | SERIES ?= $(shell lsb_release -cs) | ||||||
|  | PUBLISH ?= 0 | ||||||
|  |  | ||||||
| export DEBEMAIL = k3vinyue@gmail.com | export DEBEMAIL = k3vinyue@gmail.com | ||||||
| export DEBFULLNAME = Kevin Yue | export DEBFULLNAME = Kevin Yue | ||||||
| @@ -22,28 +24,40 @@ default: build | |||||||
| version: | version: | ||||||
| 	@echo $(VERSION) | 	@echo $(VERSION) | ||||||
|  |  | ||||||
| # Generate a vendor tarball and a .cargo/config.toml file | clean-tarball: | ||||||
| cargo-vendor: | 	rm -rf .build/tarball | ||||||
| 	mkdir -p .cargo | 	rm -rf .vendor | ||||||
|  | 	rm -rf vendor.tar.xz | ||||||
|  | 	rm -rf .cargo | ||||||
|  |  | ||||||
| 	$(CARGO) vendor .vendor > .cargo/config.toml | # Create a tarball, include the cargo dependencies if OFFLINE is set to 1 | ||||||
| 	tar -cJf vendor.tar.xz .vendor | tarball: clean-tarball | ||||||
|  | 	if [ $(BUILD_FE) -eq 1 ]; then \ | ||||||
|  | 		cd apps/gpgui-helper && pnpm install && pnpm build; \ | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| tarball: clean clean-tarball build-fe cargo-vendor | 	# Remove node_modules to reduce the tarball size | ||||||
| 	rm -rf apps/gpgui-helper/node_modules | 	rm -rf apps/gpgui-helper/node_modules | ||||||
|  |  | ||||||
| 	tar --transform 's,^,${PKG}/,' -czf ../${PKG}.tar.gz * .cargo | 	mkdir -p .cargo | ||||||
|  | 	mkdir -p .build/tarball | ||||||
|  |  | ||||||
| # Extract the vendor tarball to the .vendor directory if it exists | 	# If OFFLINE is set to 1, vendor all cargo dependencies | ||||||
| extract-vendor: | 	if [ $(OFFLINE) -eq 1 ]; then \ | ||||||
| 	if [ -f vendor.tar.xz ]; then tar -xJf vendor.tar.xz; fi | 		$(CARGO) vendor .vendor > .cargo/config.toml; \ | ||||||
|  | 		tar -cJf vendor.tar.xz .vendor; \ | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	tar --exclude .vendor --exclude target --transform 's,^,${PKG}/,' -czf .build/tarball/${PKG}.tar.gz * .cargo | ||||||
|  |  | ||||||
| build: build-fe build-rs | build: build-fe build-rs | ||||||
|  |  | ||||||
| # Install and build the frontend | # Install and build the frontend | ||||||
| # If OFFLINE is set to 1, skip it | # If OFFLINE is set to 1, skip it | ||||||
| build-fe: | build-fe: | ||||||
| 	if [ $(OFFLINE) -eq 0 ]; then \ | 	if [ $(OFFLINE) -eq 1 ] || [ $(BUILD_FE) -eq 0 ]; then \ | ||||||
|  | 		echo "Skipping frontend build (OFFLINE=1 or BUILD_FE=0)"; \ | ||||||
|  | 	else \ | ||||||
| 		cd apps/gpgui-helper && pnpm install && pnpm build; \ | 		cd apps/gpgui-helper && pnpm install && pnpm build; \ | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| @@ -52,9 +66,13 @@ build-fe: | |||||||
| 		exit 1; \ | 		exit 1; \ | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| build-rs: extract-vendor | build-rs: | ||||||
| 	$(CARGO) build $(CARGO_BUILD_ARGS) -p gpauth | 	if [ $(OFFLINE) -eq 1 ]; then \ | ||||||
| 	# $(CARGO) build $(CARGO_BUILD_ARGS) -p gpgui-helper --features "tauri/custom-protocol" | 		tar -xJf vendor.tar.xz; \ | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	$(CARGO) build $(CARGO_BUILD_ARGS) -p gpclient -p gpservice -p gpauth | ||||||
|  | 	$(CARGO) build $(CARGO_BUILD_ARGS) -p gpgui-helper --features "tauri/custom-protocol" | ||||||
|  |  | ||||||
| clean: | clean: | ||||||
| 	$(CARGO) clean | 	$(CARGO) clean | ||||||
| @@ -62,11 +80,9 @@ clean: | |||||||
| 	rm -rf .vendor | 	rm -rf .vendor | ||||||
| 	rm -rf apps/gpgui-helper/node_modules | 	rm -rf apps/gpgui-helper/node_modules | ||||||
|  |  | ||||||
| clean-tarball: |  | ||||||
| 	rm -rf vendor.tar.xz |  | ||||||
| 	rm -rf ../$(PKG).tar.gz |  | ||||||
|  |  | ||||||
| install: | install: | ||||||
|  | 	@echo "Installing $(PKG_NAME)..." | ||||||
|  |  | ||||||
| 	install -Dm755 target/release/gpclient $(DESTDIR)/usr/bin/gpclient | 	install -Dm755 target/release/gpclient $(DESTDIR)/usr/bin/gpclient | ||||||
| 	install -Dm755 target/release/gpauth $(DESTDIR)/usr/bin/gpauth | 	install -Dm755 target/release/gpauth $(DESTDIR)/usr/bin/gpauth | ||||||
| 	install -Dm755 target/release/gpservice $(DESTDIR)/usr/bin/gpservice | 	install -Dm755 target/release/gpservice $(DESTDIR)/usr/bin/gpservice | ||||||
| @@ -80,10 +96,13 @@ install: | |||||||
| 	install -Dm644 packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy | 	install -Dm644 packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy | ||||||
|  |  | ||||||
| uninstall: | uninstall: | ||||||
|  | 	@echo "Uninstalling $(PKG_NAME)..." | ||||||
|  |  | ||||||
| 	rm -f $(DESTDIR)/usr/bin/gpclient | 	rm -f $(DESTDIR)/usr/bin/gpclient | ||||||
| 	rm -f $(DESTDIR)/usr/bin/gpauth | 	rm -f $(DESTDIR)/usr/bin/gpauth | ||||||
| 	rm -f $(DESTDIR)/usr/bin/gpservice | 	rm -f $(DESTDIR)/usr/bin/gpservice | ||||||
| 	rm -f $(DESTDIR)/usr/bin/gpgui-helper | 	rm -f $(DESTDIR)/usr/bin/gpgui-helper | ||||||
|  | 	rm -f $(DESTDIR)/usr/bin/gpgui | ||||||
|  |  | ||||||
| 	rm -f $(DESTDIR)/usr/share/applications/gpgui.desktop | 	rm -f $(DESTDIR)/usr/share/applications/gpgui.desktop | ||||||
| 	rm -f $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/gpgui.svg | 	rm -f $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/gpgui.svg | ||||||
| @@ -92,25 +111,41 @@ uninstall: | |||||||
| 	rm -f $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png | 	rm -f $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png | ||||||
| 	rm -f $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy | 	rm -f $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy | ||||||
|  |  | ||||||
| init-debian: | clean-debian: | ||||||
| 	rm -rf .vendor | 	rm -rf .build/deb | ||||||
| 	rm -rf debian |  | ||||||
|  |  | ||||||
| 	debmake | # Generate the debian package structure, without the changelog | ||||||
|  | init-debian: clean-debian tarball | ||||||
|  | 	mkdir -p .build/deb | ||||||
|  | 	cp .build/tarball/${PKG}.tar.gz .build/deb | ||||||
|  |  | ||||||
| 	cp -f packaging/deb/control.in debian/control | 	tar -xzf .build/deb/${PKG}.tar.gz -C .build/deb | ||||||
| 	cp -f packaging/deb/rules debian/rules | 	cd .build/deb/${PKG} && debmake | ||||||
| 	rm -f debian/changelog |  | ||||||
|  | 	cp -f packaging/deb/control.in .build/deb/$(PKG)/debian/control | ||||||
|  | 	cp -f packaging/deb/rules .build/deb/$(PKG)/debian/rules | ||||||
|  |  | ||||||
|  | 	sed -i "s/@OFFLINE@/$(OFFLINE)/g" .build/deb/$(PKG)/debian/rules | ||||||
|  |  | ||||||
|  | 	rm -f .build/deb/$(PKG)/debian/changelog | ||||||
|  |  | ||||||
| deb: init-debian | deb: init-debian | ||||||
| 	sed -i "s/@RUST@//g" debian/control | 	# Remove the rust build depdency from the control file | ||||||
|  | 	sed -i "s/@RUST@//g" .build/deb/$(PKG)/debian/control | ||||||
|  |  | ||||||
| 	dch --create --distribution unstable --package $(PKG_NAME) --newversion $(VERSION)-$(REVISION) "Bugfix and improvements." | 	cd .build/deb/$(PKG) && dch --create --distribution unstable --package $(PKG_NAME) --newversion $(VERSION)-$(REVISION) "Bugfix and improvements." | ||||||
|  |  | ||||||
| 	debuild --preserve-env -e PATH -us -uc -b | 	cd .build/deb/$(PKG) && debuild --preserve-env -e PATH -us -uc -b | ||||||
|  |  | ||||||
|  | check-ppa: | ||||||
|  | 	if [ $(OFFLINE) -eq 0 ]; then \ | ||||||
|  | 		echo "Error: ppa build requires offline mode (OFFLINE=1)"; \ | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | # Usage: make ppa SERIES=focal OFFLINE=1 PUBLISH=1 | ||||||
|  | ppa: check-ppa init-debian | ||||||
|  | 	cd .build/deb/${PKG} | ||||||
|  |  | ||||||
| # Usage: make ppa SERIES=focal |  | ||||||
| ppa: init-debian |  | ||||||
| 	sed -i "s/@RUST@/rust-all(>=1.70)/g" debian/control | 	sed -i "s/@RUST@/rust-all(>=1.70)/g" debian/control | ||||||
|  |  | ||||||
| 	$(eval SERIES_VER = $(shell distro-info --series $(SERIES) -r | cut -d' ' -f1)) | 	$(eval SERIES_VER = $(shell distro-info --series $(SERIES) -r | cut -d' ' -f1)) | ||||||
| @@ -120,12 +155,17 @@ ppa: init-debian | |||||||
|  |  | ||||||
| 	echo "y" | debuild -e PATH -S -sa -k"$(GPG_KEY_ID)" -p"gpg --batch --passphrase $(GPG_KEY_PASS) --pinentry-mode loopback" | 	echo "y" | debuild -e PATH -S -sa -k"$(GPG_KEY_ID)" -p"gpg --batch --passphrase $(GPG_KEY_PASS) --pinentry-mode loopback" | ||||||
|  |  | ||||||
| publish-ppa: ppa | 	if [ $(PUBLISH) -eq 1 ]; then \ | ||||||
| 	dput ppa:yuezk/globalprotect-openconnect ../*.changes | 		dput ppa:yuezk/globalprotect-openconnect ../*.changes; \ | ||||||
|  | 	else | ||||||
|  | 		echo "Skipping ppa publish (PUBLISH=0)" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | clean-rpm: | ||||||
|  | 	rm -rf .build/rpm | ||||||
|  |  | ||||||
| # Generate RPM sepc file | # Generate RPM sepc file | ||||||
| init-rpm: | init-rpm: clean-rpm | ||||||
| 	rm -rf .build/rpm |  | ||||||
| 	mkdir -p .build/rpm | 	mkdir -p .build/rpm | ||||||
|  |  | ||||||
| 	cp packaging/rpm/globalprotect-openconnect.spec.in .build/rpm/globalprotect-openconnect.spec | 	cp packaging/rpm/globalprotect-openconnect.spec.in .build/rpm/globalprotect-openconnect.spec | ||||||
| @@ -133,26 +173,20 @@ init-rpm: | |||||||
|  |  | ||||||
| 	sed -i "s/@VERSION@/$(VERSION)/g" .build/rpm/globalprotect-openconnect.spec | 	sed -i "s/@VERSION@/$(VERSION)/g" .build/rpm/globalprotect-openconnect.spec | ||||||
| 	sed -i "s/@REVISION@/$(REVISION)/g" .build/rpm/globalprotect-openconnect.spec | 	sed -i "s/@REVISION@/$(REVISION)/g" .build/rpm/globalprotect-openconnect.spec | ||||||
|  | 	sed -i "s/@OFFLINE@/$(OFFLINE)/g" .build/rpm/globalprotect-openconnect.spec | ||||||
| 	sed -i "s/@DATE@/$(shell date "+%a %b %d %Y")/g" .build/rpm/globalprotect-openconnect.spec | 	sed -i "s/@DATE@/$(shell date "+%a %b %d %Y")/g" .build/rpm/globalprotect-openconnect.spec | ||||||
|  |  | ||||||
| 	sed -i "s/@VERSION@/$(VERSION)/g" .build/rpm/globalprotect-openconnect.changes | 	sed -i "s/@VERSION@/$(VERSION)/g" .build/rpm/globalprotect-openconnect.changes | ||||||
| 	sed -i "s/@DATE@/$(shell LC_ALL=en.US date -u "+%a %b %e %T %Z %Y")/g" .build/rpm/globalprotect-openconnect.changes | 	sed -i "s/@DATE@/$(shell LC_ALL=en.US date -u "+%a %b %e %T %Z %Y")/g" .build/rpm/globalprotect-openconnect.changes | ||||||
|  |  | ||||||
| # Ensure ../globalprotect-openconnect-*.tar.gz exists. | rpm: init-rpm tarball | ||||||
| rpm: init-rpm |  | ||||||
| 	if [ ! -f ../$(PKG).tar.gz ]; then \ |  | ||||||
| 		echo "Missing ../$(PKG).tar.gz"; \ |  | ||||||
| 		exit 1; \ |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	rm -rf $(HOME)/rpmbuild | 	rm -rf $(HOME)/rpmbuild | ||||||
| 	rpmdev-setuptree | 	rpmdev-setuptree | ||||||
|  |  | ||||||
| 	cp ../$(PKG).tar.gz $(HOME)/rpmbuild/SOURCES/$(PKG_NAME).tar.gz | 	cp .build/tarball/${PKG}.tar.gz $(HOME)/rpmbuild/SOURCES/${PKG_NAME}.tar.gz | ||||||
|  |  | ||||||
| 	rpmbuild -ba .build/rpm/globalprotect-openconnect.spec | 	rpmbuild -ba .build/rpm/globalprotect-openconnect.spec | ||||||
|  |  | ||||||
| 	# Copy RPM package | 	# Copy RPM package from build directory | ||||||
| 	cp $(HOME)/rpmbuild/RPMS/$(shell uname -m)/$(PKG_NAME)*.rpm .build/rpm | 	cp $(HOME)/rpmbuild/RPMS/$(shell uname -m)/$(PKG_NAME)*.rpm .build/rpm | ||||||
|  |  | ||||||
| 	# Copy the SRPM only for x86_64. | 	# Copy the SRPM only for x86_64. | ||||||
| @@ -160,20 +194,41 @@ rpm: init-rpm | |||||||
| 		cp $(HOME)/rpmbuild/SRPMS/$(PKG_NAME)*.rpm .build/rpm; \ | 		cp $(HOME)/rpmbuild/SRPMS/$(PKG_NAME)*.rpm .build/rpm; \ | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| init-pkgbuild: | clean-pkgbuild: | ||||||
| 	rm -rf .build/pkgbuild | 	rm -rf .build/pkgbuild | ||||||
|  |  | ||||||
|  | init-pkgbuild: clean-pkgbuild tarball | ||||||
| 	mkdir -p .build/pkgbuild | 	mkdir -p .build/pkgbuild | ||||||
|  |  | ||||||
| 	if [ ! -f ../$(PKG).tar.gz ]; then \ | 	cp .build/tarball/${PKG}.tar.gz .build/pkgbuild | ||||||
| 		echo "Missing ../$(PKG).tar.gz"; \ |  | ||||||
| 		exit 1; \ |  | ||||||
| 	fi |  | ||||||
| 	cp ../$(PKG).tar.gz .build/pkgbuild |  | ||||||
|  |  | ||||||
| 	cp packaging/pkgbuild/PKGBUILD.in .build/pkgbuild/PKGBUILD | 	cp packaging/pkgbuild/PKGBUILD.in .build/pkgbuild/PKGBUILD | ||||||
|  |  | ||||||
| 	sed -i "s/@PKG_NAME@/$(PKG_NAME)/g" .build/pkgbuild/PKGBUILD | 	sed -i "s/@PKG_NAME@/$(PKG_NAME)/g" .build/pkgbuild/PKGBUILD | ||||||
| 	sed -i "s/@VERSION@/$(VERSION)/g" .build/pkgbuild/PKGBUILD | 	sed -i "s/@VERSION@/$(VERSION)/g" .build/pkgbuild/PKGBUILD | ||||||
| 	sed -i "s/@REVISION@/$(REVISION)/g" .build/pkgbuild/PKGBUILD | 	sed -i "s/@REVISION@/$(REVISION)/g" .build/pkgbuild/PKGBUILD | ||||||
|  | 	sed -i "s/@OFFLINE@/$(OFFLINE)/g" .build/pkgbuild/PKGBUILD | ||||||
|  |  | ||||||
| pkgbuild: init-pkgbuild | pkgbuild: init-pkgbuild | ||||||
| 	cd .build/pkgbuild && makepkg -s --noconfirm | 	cd .build/pkgbuild && makepkg -s --noconfirm | ||||||
|  |  | ||||||
|  | clean-binary: | ||||||
|  | 	rm -rf .build/binary | ||||||
|  |  | ||||||
|  | binary: clean-binary tarball | ||||||
|  | 	mkdir -p .build/binary | ||||||
|  |  | ||||||
|  | 	cp .build/tarball/${PKG}.tar.gz .build/binary | ||||||
|  | 	tar -xzf .build/binary/${PKG}.tar.gz -C .build/binary | ||||||
|  |  | ||||||
|  | 	mkdir -p .build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m)/artifacts | ||||||
|  |  | ||||||
|  | 	make -C .build/binary/${PKG} build OFFLINE=$(OFFLINE) | ||||||
|  | 	make -C .build/binary/${PKG} install DESTDIR=$(PWD)/.build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m)/artifacts | ||||||
|  |  | ||||||
|  | 	cp packaging/binary/Makefile.in .build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m)/Makefile | ||||||
|  |  | ||||||
|  | 	# Create a tarball for the binary package | ||||||
|  | 	tar -cJf .build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m).bin.tar.xz -C .build/binary $(PKG_NAME)_$(VERSION)_$(shell uname -m) | ||||||
|  |  | ||||||
|  | 	# Generate sha256sum | ||||||
|  | 	cd .build/binary && sha256sum $(PKG_NAME)_$(VERSION)_$(shell uname -m).bin.tar.xz | cut -d' ' -f1 > $(PKG_NAME)_$(VERSION)_$(shell uname -m).bin.tar.xz.sha256 | ||||||
|   | |||||||
| @@ -81,11 +81,14 @@ impl GuiUpdater { | |||||||
|     info!("Update GUI, version: {}", self.version); |     info!("Update GUI, version: {}", self.version); | ||||||
|  |  | ||||||
|     #[cfg(target_arch = "x86_64")] |     #[cfg(target_arch = "x86_64")] | ||||||
|     let arch = "amd64"; |     let arch = "x86_64"; | ||||||
|     #[cfg(target_arch = "aarch64")] |     #[cfg(target_arch = "aarch64")] | ||||||
|     let arch = "arm64"; |     let arch = "aarch64"; | ||||||
|  |  | ||||||
|     let file_url = format!("https://github.com/yuezk/GlobalProtect-openconnect/releases/download/v{}/gpgui-linux-{}", self.version, arch); |     let file_url = format!( | ||||||
|  |       "https://github.com/yuezk/GlobalProtect-openconnect/releases/download/v{}/gpgui_{}_{}.bin.tar.xz", | ||||||
|  |       self.version, self.version, arch | ||||||
|  |     ); | ||||||
|     let checksum_url = format!("{}.sha256", file_url); |     let checksum_url = format!("{}.sha256", file_url); | ||||||
|  |  | ||||||
|     info!("Downloading file: {}", file_url); |     info!("Downloading file: {}", file_url); | ||||||
|   | |||||||
| @@ -18,3 +18,5 @@ serde_json.workspace = true | |||||||
| env_logger.workspace = true | env_logger.workspace = true | ||||||
| log.workspace = true | log.workspace = true | ||||||
| compile-time.workspace = true | compile-time.workspace = true | ||||||
|  | xz2 = "0.1" | ||||||
|  | tar = "0.4" | ||||||
|   | |||||||
| @@ -1,4 +1,12 @@ | |||||||
| use std::{borrow::Cow, fs::Permissions, ops::ControlFlow, os::unix::fs::PermissionsExt, path::PathBuf, sync::Arc}; | use std::{ | ||||||
|  |   borrow::Cow, | ||||||
|  |   fs::{File, Permissions}, | ||||||
|  |   io::BufReader, | ||||||
|  |   ops::ControlFlow, | ||||||
|  |   os::unix::fs::PermissionsExt, | ||||||
|  |   path::PathBuf, | ||||||
|  |   sync::Arc, | ||||||
|  | }; | ||||||
|  |  | ||||||
| use anyhow::bail; | use anyhow::bail; | ||||||
| use axum::{ | use axum::{ | ||||||
| @@ -17,7 +25,9 @@ use gpapi::{ | |||||||
|   GP_GUI_BINARY, |   GP_GUI_BINARY, | ||||||
| }; | }; | ||||||
| use log::{info, warn}; | use log::{info, warn}; | ||||||
|  | use tar::Archive; | ||||||
| use tokio::fs; | use tokio::fs; | ||||||
|  | use xz2::read::XzDecoder; | ||||||
|  |  | ||||||
| use crate::ws_server::WsServerContext; | use crate::ws_server::WsServerContext; | ||||||
|  |  | ||||||
| @@ -60,6 +70,7 @@ pub async fn update_gui(State(ctx): State<Arc<WsServerContext>>, body: Bytes) -> | |||||||
|   Ok(()) |   Ok(()) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Unpack GPGUI archive, gpgui_2.0.0_{arch}.bin.tar.xz and install it | ||||||
| async fn install_gui(src: &str) -> anyhow::Result<()> { | async fn install_gui(src: &str) -> anyhow::Result<()> { | ||||||
|   let path = PathBuf::from(GP_GUI_BINARY); |   let path = PathBuf::from(GP_GUI_BINARY); | ||||||
|   let Some(dir) = path.parent() else { |   let Some(dir) = path.parent() else { | ||||||
| @@ -68,8 +79,27 @@ async fn install_gui(src: &str) -> anyhow::Result<()> { | |||||||
|  |  | ||||||
|   fs::create_dir_all(dir).await?; |   fs::create_dir_all(dir).await?; | ||||||
|  |  | ||||||
|   // Copy the file to the final location and make it executable |   // Unpack the archive | ||||||
|   fs::copy(src, GP_GUI_BINARY).await?; |   info!("Unpacking GUI archive"); | ||||||
|  |   let tar = XzDecoder::new(BufReader::new(File::open(src)?)); | ||||||
|  |   let mut ar = Archive::new(tar); | ||||||
|  |  | ||||||
|  |   for entry in ar.entries()? { | ||||||
|  |     let mut entry = entry?; | ||||||
|  |     let path = entry.path()?; | ||||||
|  |  | ||||||
|  |     if let Some(name) = path.file_name() { | ||||||
|  |       let name = name.to_string_lossy(); | ||||||
|  |  | ||||||
|  |       if name == "gpgui" { | ||||||
|  |         let mut file = File::create(GP_GUI_BINARY)?; | ||||||
|  |         std::io::copy(&mut entry, &mut file)?; | ||||||
|  |         break; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // Make the binary executable | ||||||
|   fs::set_permissions(GP_GUI_BINARY, Permissions::from_mode(0o755)).await?; |   fs::set_permissions(GP_GUI_BINARY, Permissions::from_mode(0o755)).await?; | ||||||
|  |  | ||||||
|   Ok(()) |   Ok(()) | ||||||
|   | |||||||
							
								
								
									
										30
									
								
								packaging/binary/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								packaging/binary/Makefile.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | install: | ||||||
|  | 	@echo "===> Installing..." | ||||||
|  |  | ||||||
|  | 	install -Dm755 artifacts/usr/bin/gpclient $(DESTDIR)/usr/bin/gpclient | ||||||
|  | 	install -Dm755 artifacts/usr/bin/gpservice $(DESTDIR)/usr/bin/gpservice | ||||||
|  | 	install -Dm755 artifacts/usr/bin/gpauth $(DESTDIR)/usr/bin/gpauth | ||||||
|  | 	install -Dm755 artifacts/usr/bin/gpgui-helper $(DESTDIR)/usr/bin/gpgui-helper | ||||||
|  |  | ||||||
|  | 	install -Dm644 artifacts/usr/share/applications/gpgui.desktop $(DESTDIR)/usr/share/applications/gpgui.desktop | ||||||
|  | 	install -Dm644 artifacts/usr/share/icons/hicolor/scalable/apps/gpgui.svg $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/gpgui.svg | ||||||
|  | 	install -Dm644 artifacts/usr/share/icons/hicolor/32x32/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/gpgui.png | ||||||
|  | 	install -Dm644 artifacts/usr/share/icons/hicolor/128x128/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/128x128/apps/gpgui.png | ||||||
|  | 	install -Dm644 artifacts/usr/share/icons/hicolor/256x256@2/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png | ||||||
|  | 	install -Dm644 artifacts/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy | ||||||
|  |  | ||||||
|  | uninstall: | ||||||
|  | 	@echo "===> Uninstalling from $(DESTDIR)..." | ||||||
|  |  | ||||||
|  | 	rm -f $(DESTDIR)/usr/bin/gpclient | ||||||
|  | 	rm -f $(DESTDIR)/usr/bin/gpservice | ||||||
|  | 	rm -f $(DESTDIR)/usr/bin/gpauth | ||||||
|  | 	rm -f $(DESTDIR)/usr/bin/gpgui-helper | ||||||
|  | 	rm -f $(DESTDIR)/usr/bin/gpgui | ||||||
|  |  | ||||||
|  | 	rm -f $(DESTDIR)/usr/share/applications/gpgui.desktop | ||||||
|  | 	rm -f $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/gpgui.svg | ||||||
|  | 	rm -f $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/gpgui.png | ||||||
|  | 	rm -f $(DESTDIR)/usr/share/icons/hicolor/128x128/apps/gpgui.png | ||||||
|  | 	rm -f $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png | ||||||
|  | 	rm -f $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| #!/usr/bin/make -f | #!/usr/bin/make -f | ||||||
|  |  | ||||||
| export OFFLINE = 1 | export OFFLINE = @OFFLINE@ | ||||||
|  |  | ||||||
| %: | %: | ||||||
| 	dh $@ | 	dh $@ | ||||||
|   | |||||||
| @@ -21,10 +21,15 @@ options=('!strip') | |||||||
|  |  | ||||||
| build() { | build() { | ||||||
|   cd "$pkgname-$pkgver" |   cd "$pkgname-$pkgver" | ||||||
|   make build OFFLINE=1 |  | ||||||
|  |   # Must unset the CFLAGS, otherwise the build fails | ||||||
|  |   unset CFLAGS | ||||||
|  |  | ||||||
|  |   make build OFFLINE=@OFFLINE@ | ||||||
| } | } | ||||||
|  |  | ||||||
| package() { | package() { | ||||||
|   cd "$pkgname-$pkgver" |   cd "$pkgname-$pkgver" | ||||||
|  |  | ||||||
|   make install DESTDIR="$pkgdir" |   make install DESTDIR="$pkgdir" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ A GUI for GlobalProtect VPN, based on OpenConnect, supports the SSO authenticati | |||||||
| %setup | %setup | ||||||
|  |  | ||||||
| %build | %build | ||||||
| make build OFFLINE=1 | make build OFFLINE=@OFFLINE@ | ||||||
|  |  | ||||||
| %install | %install | ||||||
| %make_install | %make_install | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user