mirror of
				https://github.com/yuezk/GlobalProtect-openconnect.git
				synced 2025-05-20 07:26:58 -04:00 
			
		
		
		
	Compare commits
	
		
			19 Commits
		
	
	
		
			v2.1.0
			...
			3daad748ae
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 3daad748ae | ||
|  | 5bca84c9cf | ||
|  | 3a6eca2ed2 | ||
|  | 141d66cbde | ||
|  | f44cd85971 | ||
|  | 55b119d0f2 | ||
|  | df1bcd6571 | ||
|  | a19789f1e3 | ||
|  | a0891e9f04 | ||
|  | 5586daf9e5 | ||
|  | d2d45910cb | ||
|  | df4bbe0059 | ||
|  | aa0f6bf5bb | ||
|  | 48e22f4f78 | ||
|  | 480229b69f | ||
|  | c446763a05 | ||
|  | cfdba00a01 | ||
|  | 5404386972 | ||
|  | 4be877bf8c | 
							
								
								
									
										548
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										548
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -13,254 +13,388 @@ on: | |||||||
|       - latest |       - latest | ||||||
|       - v*.*.* |       - v*.*.* | ||||||
| jobs: | jobs: | ||||||
|   # Include arm64 if ref is a tag |  | ||||||
|   setup-matrix: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     outputs: |  | ||||||
|       matrix: ${{ steps.set-matrix.outputs.matrix }} |  | ||||||
|     steps: |  | ||||||
|       - name: Set up matrix |  | ||||||
|         id: set-matrix |  | ||||||
|         run: | |  | ||||||
|           if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then |  | ||||||
|             echo "matrix=[\"ubuntu-latest\", \"arm64\"]" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             echo "matrix=[\"ubuntu-latest\"]" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|   tarball: |   tarball: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     needs: [setup-matrix] |  | ||||||
|     steps: |     steps: | ||||||
|     - uses: pnpm/action-setup@v2 |     - uses: pnpm/action-setup@v2 | ||||||
|       with: |       with: | ||||||
|         version: 8 |         version: 8 | ||||||
|     - name: Prepare workspace |  | ||||||
|       run: rm -rf source && mkdir source |  | ||||||
|     - name: Checkout GlobalProtect-openconnect |     - name: Checkout GlobalProtect-openconnect | ||||||
|       uses: actions/checkout@v3 |       uses: actions/checkout@v3 | ||||||
|       with: |       with: | ||||||
|         token: ${{ secrets.GH_PAT }} |         token: ${{ secrets.GH_PAT }} | ||||||
|         repository: yuezk/GlobalProtect-openconnect |         repository: yuezk/GlobalProtect-openconnect | ||||||
|         path: source/gp |         path: gp | ||||||
|     - name: Create tarball |     - name: Create tarball | ||||||
|       run: | |       run: | | ||||||
|         cd source/gp |         cd gp | ||||||
|         make tarball |         make tarball | ||||||
|     - name: Upload tarball |     - name: Upload tarball | ||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-source |         name: artifact-tarball | ||||||
|         if-no-files-found: error |  | ||||||
|         path: | |         path: | | ||||||
|           source/gp/.build/tarball/*.tar.gz |           globalprotect-openconnect-*.tar.gz | ||||||
|  |   deb: | ||||||
|   build-deb: |     runs-on: ubuntu-latest | ||||||
|     needs: |     needs: [tarball] | ||||||
|     - setup-matrix |     container: | ||||||
|     - tarball |       image: yuezk/gpdev:main | ||||||
|     strategy: |       credentials: | ||||||
|       matrix: |         username: ${{ secrets.DOCKER_HUB_USERNAME }} | ||||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} |         password: ${{ secrets.DOCKER_HUB_TOKEN }} | ||||||
|     runs-on: ${{ matrix.os }} |  | ||||||
|     steps: |     steps: | ||||||
|     - name: Prepare workspace |  | ||||||
|       run: rm -rf build-deb && mkdir build-deb |  | ||||||
|     - name: Download tarball |     - name: Download tarball | ||||||
|       uses: actions/download-artifact@v3 |       uses: actions/download-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-source |         name: artifact-tarball | ||||||
|         path: build-deb |     - name: Build DEB package | ||||||
|     - name: Docker Login |  | ||||||
|       run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin |  | ||||||
|     - name: Build DEB package in Docker |  | ||||||
|       run: | |       run: | | ||||||
|         docker run --rm -v $(pwd)/build-deb:/deb yuezk/gpdev:deb-builder |         tar -xzf globalprotect-openconnect-*.tar.gz | ||||||
|     - name: Install DEB package in Docker |         cd globalprotect-openconnect-* | ||||||
|  |         make deb | ||||||
|  |     - name: Install DEB package | ||||||
|       run: | |       run: | | ||||||
|         docker run --rm -v $(pwd)/build-deb:/deb yuezk/gpdev:deb-builder \ |         sudo dpkg -i globalprotect-openconnect_*.deb | ||||||
|           bash -c "sudo dpkg -i /deb/*.deb; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;" |  | ||||||
|  |         gpclient --version | ||||||
|  |         gpservice --version | ||||||
|  |         gpauth --version | ||||||
|  |         gpgui-helper --version | ||||||
|     - name: Upload DEB package |     - name: Upload DEB package | ||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-deb-${{ matrix.os }} |         name: artifact-deb | ||||||
|         if-no-files-found: error |  | ||||||
|         path: | |         path: | | ||||||
|           build-deb/*.deb |           globalprotect-openconnect_*.deb | ||||||
|  |  | ||||||
|   build-rpm: |   rpm: | ||||||
|     needs: |     runs-on: ubuntu-latest | ||||||
|     - setup-matrix |     needs: [tarball] | ||||||
|     - tarball |     container: | ||||||
|     strategy: |       image: yuezk/gpdev:rpm-builder | ||||||
|       matrix: |       credentials: | ||||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} |         username: ${{ secrets.DOCKER_HUB_USERNAME }} | ||||||
|     runs-on: ${{ matrix.os }} |         password: ${{ secrets.DOCKER_HUB_TOKEN }} | ||||||
|     steps: |     steps: | ||||||
|     - name: Prepare workspace |  | ||||||
|       run: rm -rf build-rpm && mkdir build-rpm |  | ||||||
|     - name: Download tarball |     - name: Download tarball | ||||||
|       uses: actions/download-artifact@v3 |       uses: actions/download-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-source |         name: artifact-tarball | ||||||
|         path: build-rpm |     - name: Build RPM package | ||||||
|     - name: Docker Login |  | ||||||
|       run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin |  | ||||||
|     - name: Build RPM package in Docker |  | ||||||
|       run: | |       run: | | ||||||
|         docker run --rm -v $(pwd)/build-rpm:/rpm yuezk/gpdev:rpm-builder |         tar -xzf globalprotect-openconnect-*.tar.gz | ||||||
|     - name: Install RPM package in Docker |         cd globalprotect-openconnect-*/ | ||||||
|  |         make rpm | ||||||
|  |     - name: Install RPM package | ||||||
|       run: | |       run: | | ||||||
|         docker run --rm -v $(pwd)/build-rpm:/rpm yuezk/gpdev:rpm-builder \ |         cd globalprotect-openconnect-*/ | ||||||
|           bash -c "sudo rpm -i /rpm/*.$(uname -m).rpm; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;" |         ls -l .build/rpm | ||||||
|  |         sudo rpm -i ".build/rpm/globalprotect-openconnect*.$(uname -m).rpm" | ||||||
|  |  | ||||||
|  |         gpclient --version | ||||||
|  |         gpservice --version | ||||||
|  |         gpauth --version | ||||||
|  |         gpgui-helper --version | ||||||
|  |  | ||||||
|     - name: Upload RPM package |     - name: Upload RPM package | ||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v3 | ||||||
|       with: |       with: | ||||||
|         name: artifact-rpm-${{ matrix.os }} |         name: artifact-rpm | ||||||
|         if-no-files-found: error |  | ||||||
|         path: | |         path: | | ||||||
|           build-rpm/*.rpm |           globalprotect-openconnect-*/.build/rpm/*.rpm | ||||||
|  |  | ||||||
|   build-pkgbuild: |   # Include arm64 if ref is a tag | ||||||
|     needs: |   # setup-matrix: | ||||||
|     - setup-matrix |   #   runs-on: ubuntu-latest | ||||||
|     - tarball |   #   outputs: | ||||||
|     strategy: |   #     matrix: ${{ steps.set-matrix.outputs.matrix }} | ||||||
|       matrix: |   #   steps: | ||||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} |   #     - name: Set up matrix | ||||||
|     runs-on: ${{ matrix.os }} |   #       id: set-matrix | ||||||
|     steps: |   #       run: | | ||||||
|     - name: Prepare workspace |   #         if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then | ||||||
|       run: rm -rf build-pkgbuild && mkdir build-pkgbuild |   #           echo "matrix=[\"amd64\", \"arm64\"]" >> $GITHUB_OUTPUT | ||||||
|     - name: Download tarball |   #         else | ||||||
|       uses: actions/download-artifact@v3 |   #           echo "matrix=[\"amd64\"]" >> $GITHUB_OUTPUT | ||||||
|       with: |   #         fi | ||||||
|         name: artifact-source |  | ||||||
|         path: build-pkgbuild |  | ||||||
|     - name: Docker Login |  | ||||||
|       run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin |  | ||||||
|     - name: Build PKGBUILD package in Docker |  | ||||||
|       run: | |  | ||||||
|         docker run --rm -v $(pwd)/build-pkgbuild:/pkgbuild yuezk/gpdev:pkgbuild |  | ||||||
|     - name: Install PKGBUILD package in Docker |  | ||||||
|       run: | |  | ||||||
|         docker run --rm -v $(pwd)/build-pkgbuild:/pkgbuild yuezk/gpdev:pkgbuild \ |  | ||||||
|           bash -c "sudo pacman -U --noconfirm /pkgbuild/*.pkg.tar.zst; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;" |  | ||||||
|     - name: Upload PKGBUILD package |  | ||||||
|       uses: actions/upload-artifact@v3 |  | ||||||
|       with: |  | ||||||
|         name: artifact-pkgbuild-${{ matrix.os }} |  | ||||||
|         if-no-files-found: error |  | ||||||
|         path: | |  | ||||||
|           build-pkgbuild/*.pkg.tar.zst |  | ||||||
|  |  | ||||||
|   build-binary: |   # build-fe: | ||||||
|     needs: |   #   runs-on: ubuntu-latest | ||||||
|     - setup-matrix |   #   steps: | ||||||
|     - tarball |   #     - name: Checkout gpgui repo | ||||||
|     strategy: |   #       uses: actions/checkout@v3 | ||||||
|       matrix: |   #       with: | ||||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} |   #         token: ${{ secrets.GH_PAT }} | ||||||
|     runs-on: ${{ matrix.os }} |   #         repository: yuezk/gpgui | ||||||
|     steps: |  | ||||||
|     - name: Prepare workspace |  | ||||||
|       run: rm -rf build-binary && mkdir build-binary |  | ||||||
|     - name: Download tarball |  | ||||||
|       uses: actions/download-artifact@v3 |  | ||||||
|       with: |  | ||||||
|         name: artifact-source |  | ||||||
|         path: build-binary |  | ||||||
|     - name: Docker Login |  | ||||||
|       run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin |  | ||||||
|     - name: Build binary in Docker |  | ||||||
|       run: | |  | ||||||
|         docker run --rm -v $(pwd)/build-binary:/binary yuezk/gpdev:binary-builder |  | ||||||
|     - name: Install binary in Docker |  | ||||||
|       run: | |  | ||||||
|         cd build-binary |  | ||||||
|         tar -xJf ./*.bin.tar.xz |  | ||||||
|         docker run --rm -v $(pwd):/binary yuezk/gpdev:binary-builder \ |  | ||||||
|           bash -c "cd /binary/globalprotect-openconnect*/ && sudo make install && gpclient --version && gpservice --version && gpauth --version && gpgui-helper --version;" |  | ||||||
|     - name: Upload binary |  | ||||||
|       uses: actions/upload-artifact@v3 |  | ||||||
|       with: |  | ||||||
|         name: artifact-binary-${{ matrix.os }} |  | ||||||
|         if-no-files-found: error |  | ||||||
|         path: | |  | ||||||
|           build-binary/*.bin.tar.xz |  | ||||||
|           build-binary/*.bin.tar.xz.sha256 |  | ||||||
|  |  | ||||||
|   build-gpgui: |   #     - name: Install Node.js | ||||||
|     needs: |   #       uses: actions/setup-node@v4 | ||||||
|     - setup-matrix |   #       with: | ||||||
|     strategy: |   #         node-version: 18 | ||||||
|       matrix: |  | ||||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} |  | ||||||
|     runs-on: ${{ matrix.os }} |  | ||||||
|     steps: |  | ||||||
|     - uses: pnpm/action-setup@v2 |  | ||||||
|       with: |  | ||||||
|         version: 8 |  | ||||||
|     - name: Prepare workspace |  | ||||||
|       run: rm -rf gpgui-source && mkdir gpgui-source |  | ||||||
|     - name: Checkout GlobalProtect-openconnect |  | ||||||
|       uses: actions/checkout@v3 |  | ||||||
|       with: |  | ||||||
|         token: ${{ secrets.GH_PAT }} |  | ||||||
|         repository: yuezk/GlobalProtect-openconnect |  | ||||||
|         path: gpgui-source/gp |  | ||||||
|     - name: Checkout gpgui |  | ||||||
|       uses: actions/checkout@v3 |  | ||||||
|       with: |  | ||||||
|         token: ${{ secrets.GH_PAT }} |  | ||||||
|         repository: yuezk/gpgui |  | ||||||
|         path: gpgui-source/gpgui |  | ||||||
|     - name: Tarball |  | ||||||
|       run: | |  | ||||||
|         cd gpgui-source |  | ||||||
|         tar -czf gpgui.tar.gz gpgui gp |  | ||||||
|     - name: Docker Login |  | ||||||
|       run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin |  | ||||||
|     - name: Build gpgui in Docker |  | ||||||
|       run: | |  | ||||||
|         docker run --rm -v $(pwd)/gpgui-source:/gpgui yuezk/gpdev:gpgui-builder |  | ||||||
|     - name: Install gpgui in Docker |  | ||||||
|       run: | |  | ||||||
|         cd gpgui-source |  | ||||||
|         tar -xJf *.bin.tar.xz |  | ||||||
|         docker run --rm -v $(pwd):/gpgui yuezk/gpdev:gpgui-builder \ |  | ||||||
|           bash -c "cd /gpgui/gpgui_*/ && ./gpgui --version" |  | ||||||
|     - name: Upload gpgui |  | ||||||
|       uses: actions/upload-artifact@v3 |  | ||||||
|       with: |  | ||||||
|         name: artifact-gpgui-${{ matrix.os }} |  | ||||||
|         if-no-files-found: error |  | ||||||
|         path: | |  | ||||||
|           gpgui-source/*.bin.tar.xz |  | ||||||
|           gpgui-source/*.bin.tar.xz.sha256 |  | ||||||
|  |  | ||||||
|   gh-release: |   #     - uses: pnpm/action-setup@v2 | ||||||
|     if: startsWith(github.ref, 'refs/tags/') |   #       with: | ||||||
|     runs-on: ubuntu-latest |   #         version: 8 | ||||||
|     needs: |  | ||||||
|       - build-deb |  | ||||||
|       - build-rpm |  | ||||||
|       - build-pkgbuild |  | ||||||
|       - build-binary |  | ||||||
|       - build-gpgui |  | ||||||
|  |  | ||||||
|     steps: |   #     - name: Install dependencies | ||||||
|     - name: Prepare workspace |   #       run: | | ||||||
|       run: rm -rf build-artifact && mkdir build-artifact |   #         cd app | ||||||
|     - name: Download all artifacts |   #         pnpm install | ||||||
|       uses: actions/download-artifact@v3 |   #     - name: Build | ||||||
|       with: |   #       run: | | ||||||
|         path: build-artifact |   #         cd app | ||||||
|     - name: Create GH release |   #         pnpm run build | ||||||
|       uses: softprops/action-gh-release@v1 |  | ||||||
|       with: |   #     - name: Upload artifacts | ||||||
|         token: ${{ secrets.GH_PAT }} |   #       uses: actions/upload-artifact@v3 | ||||||
|         prerelease: ${{ contains(github.ref, 'latest') }} |   #       with: | ||||||
|         fail_on_unmatched_files: true |   #         name: gpgui-fe | ||||||
|         files: | |   #         path: app/dist | ||||||
|           build-artifact/artifact-*/* |  | ||||||
|  |   # build-tauri-amd64: | ||||||
|  |   #   needs: [build-fe] | ||||||
|  |   #   runs-on: ubuntu-latest | ||||||
|  |   #   steps: | ||||||
|  |   #     - name: Checkout gpgui repo | ||||||
|  |   #       uses: actions/checkout@v3 | ||||||
|  |   #       with: | ||||||
|  |   #         token: ${{ secrets.GH_PAT }} | ||||||
|  |   #         repository: yuezk/gpgui | ||||||
|  |   #         path: gpgui | ||||||
|  |  | ||||||
|  |   #     - name: Checkout gp repo | ||||||
|  |   #       uses: actions/checkout@v3 | ||||||
|  |   #       with: | ||||||
|  |   #         token: ${{ secrets.GH_PAT }} | ||||||
|  |   #         repository: yuezk/GlobalProtect-openconnect | ||||||
|  |   #         path: gp | ||||||
|  |  | ||||||
|  |   #     - name: Download gpgui-fe artifact | ||||||
|  |   #       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/') | ||||||
|  |   #   needs: [build-fe] | ||||||
|  |   #   runs-on: self-hosted | ||||||
|  |   #   steps: | ||||||
|  |   #     - name: Checkout gpgui repo | ||||||
|  |   #       uses: actions/checkout@v3 | ||||||
|  |   #       with: | ||||||
|  |   #         token: ${{ secrets.GH_PAT }} | ||||||
|  |   #         repository: yuezk/gpgui | ||||||
|  |   #         path: gpgui | ||||||
|  |  | ||||||
|  |   #     - name: Checkout gp repo | ||||||
|  |   #       uses: actions/checkout@v3 | ||||||
|  |   #       with: | ||||||
|  |   #         token: ${{ secrets.GH_PAT }} | ||||||
|  |   #         repository: yuezk/GlobalProtect-openconnect | ||||||
|  |   #         path: gp | ||||||
|  |  | ||||||
|  |   #     - name: Download gpgui-fe artifact | ||||||
|  |   #       uses: actions/download-artifact@v3 | ||||||
|  |   #       with: | ||||||
|  |   #         name: gpgui-fe | ||||||
|  |   #         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') }} | ||||||
|  |   #         fail_on_unmatched_files: true | ||||||
|  |   #         files: | | ||||||
|  |   #           artifact/artifact-*/* | ||||||
|   | |||||||
							
								
								
									
										34
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										34
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @@ -1423,7 +1423,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "gpapi" | name = "gpapi" | ||||||
| version = "2.1.0" | version = "2.0.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "base64 0.21.5", |  "base64 0.21.5", | ||||||
| @@ -1455,7 +1455,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "gpauth" | name = "gpauth" | ||||||
| version = "2.1.0" | version = "2.0.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "clap", |  "clap", | ||||||
| @@ -1475,7 +1475,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "gpclient" | name = "gpclient" | ||||||
| version = "2.1.0" | version = "2.0.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "clap", |  "clap", | ||||||
| @@ -1496,7 +1496,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "gpgui-helper" | name = "gpgui-helper" | ||||||
| version = "2.1.0" | version = "2.0.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "clap", |  "clap", | ||||||
| @@ -1514,7 +1514,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "gpservice" | name = "gpservice" | ||||||
| version = "2.1.0" | version = "2.0.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "axum", |  "axum", | ||||||
| @@ -1527,10 +1527,8 @@ dependencies = [ | |||||||
|  "openconnect", |  "openconnect", | ||||||
|  "serde", |  "serde", | ||||||
|  "serde_json", |  "serde_json", | ||||||
|  "tar", |  | ||||||
|  "tokio", |  "tokio", | ||||||
|  "tokio-util", |  "tokio-util", | ||||||
|  "xz2", |  | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| @@ -2200,17 +2198,6 @@ 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" | ||||||
| @@ -2519,7 +2506,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "openconnect" | name = "openconnect" | ||||||
| version = "2.1.0" | version = "2.0.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cc", |  "cc", | ||||||
|  "is_executable", |  "is_executable", | ||||||
| @@ -5137,15 +5124,6 @@ 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" | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ members = ["crates/*", "apps/gpclient", "apps/gpservice", "apps/gpauth", "apps/g | |||||||
|  |  | ||||||
| [workspace.package] | [workspace.package] | ||||||
| rust-version = "1.70" | rust-version = "1.70" | ||||||
| version = "2.1.0" | version = "2.0.0" | ||||||
| authors = ["Kevin Yue <k3vinyue@gmail.com>"] | authors = ["Kevin Yue <k3vinyue@gmail.com>"] | ||||||
| homepage = "https://github.com/yuezk/GlobalProtect-openconnect" | homepage = "https://github.com/yuezk/GlobalProtect-openconnect" | ||||||
| edition = "2021" | edition = "2021" | ||||||
|   | |||||||
							
								
								
									
										157
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										157
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,5 +1,4 @@ | |||||||
| 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') | ||||||
| @@ -8,7 +7,6 @@ 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 | ||||||
| @@ -24,40 +22,28 @@ default: build | |||||||
| version: | version: | ||||||
| 	@echo $(VERSION) | 	@echo $(VERSION) | ||||||
|  |  | ||||||
| clean-tarball: | # Generate a vendor tarball and a .cargo/config.toml file | ||||||
| 	rm -rf .build/tarball | cargo-vendor: | ||||||
| 	rm -rf .vendor | 	mkdir -p .cargo | ||||||
| 	rm -rf vendor.tar.xz |  | ||||||
| 	rm -rf .cargo |  | ||||||
|  |  | ||||||
| # Create a tarball, include the cargo dependencies if OFFLINE is set to 1 | 	$(CARGO) vendor .vendor > .cargo/config.toml | ||||||
| tarball: clean-tarball | 	tar -cJf vendor.tar.xz .vendor | ||||||
| 	if [ $(BUILD_FE) -eq 1 ]; then \ |  | ||||||
| 		cd apps/gpgui-helper && pnpm install && pnpm build; \ |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	# Remove node_modules to reduce the tarball size | tarball: clean clean-tarball build-fe cargo-vendor | ||||||
| 	rm -rf apps/gpgui-helper/node_modules | 	rm -rf apps/gpgui-helper/node_modules | ||||||
|  |  | ||||||
| 	mkdir -p .cargo | 	tar --transform 's,^,${PKG}/,' -czf ../${PKG}.tar.gz * .cargo | ||||||
| 	mkdir -p .build/tarball |  | ||||||
|  |  | ||||||
| 	# If OFFLINE is set to 1, vendor all cargo dependencies | # Extract the vendor tarball to the .vendor directory if it exists | ||||||
| 	if [ $(OFFLINE) -eq 1 ]; then \ | extract-vendor: | ||||||
| 		$(CARGO) vendor .vendor > .cargo/config.toml; \ | 	if [ -f vendor.tar.xz ]; then tar -xJf vendor.tar.xz; fi | ||||||
| 		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 1 ] || [ $(BUILD_FE) -eq 0 ]; then \ | 	if [ $(OFFLINE) -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 | ||||||
|  |  | ||||||
| @@ -66,13 +52,9 @@ build-fe: | |||||||
| 		exit 1; \ | 		exit 1; \ | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| build-rs: | build-rs: extract-vendor | ||||||
| 	if [ $(OFFLINE) -eq 1 ]; then \ | 	$(CARGO) build $(CARGO_BUILD_ARGS) -p gpauth | ||||||
| 		tar -xJf vendor.tar.xz; \ | 	# $(CARGO) build $(CARGO_BUILD_ARGS) -p gpgui-helper --features "tauri/custom-protocol" | ||||||
| 	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 | ||||||
| @@ -80,9 +62,11 @@ clean: | |||||||
| 	rm -rf .vendor | 	rm -rf .vendor | ||||||
| 	rm -rf apps/gpgui-helper/node_modules | 	rm -rf apps/gpgui-helper/node_modules | ||||||
|  |  | ||||||
| install: | clean-tarball: | ||||||
| 	@echo "Installing $(PKG_NAME)..." | 	rm -rf vendor.tar.xz | ||||||
|  | 	rm -rf ../$(PKG).tar.gz | ||||||
|  |  | ||||||
|  | install: | ||||||
| 	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 | ||||||
| @@ -96,13 +80,10 @@ 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 | ||||||
| @@ -111,41 +92,25 @@ 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 | ||||||
|  |  | ||||||
| clean-debian: | init-debian: | ||||||
| 	rm -rf .build/deb | 	rm -rf .vendor | ||||||
|  | 	rm -rf debian | ||||||
|  |  | ||||||
| # Generate the debian package structure, without the changelog | 	debmake | ||||||
| init-debian: clean-debian tarball |  | ||||||
| 	mkdir -p .build/deb |  | ||||||
| 	cp .build/tarball/${PKG}.tar.gz .build/deb |  | ||||||
|  |  | ||||||
| 	tar -xzf .build/deb/${PKG}.tar.gz -C .build/deb | 	cp -f packaging/deb/control.in debian/control | ||||||
| 	cd .build/deb/${PKG} && debmake | 	cp -f packaging/deb/rules debian/rules | ||||||
|  | 	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 | ||||||
| 	# Remove the rust build depdency from the control file | 	sed -i "s/@RUST@//g" debian/control | ||||||
| 	sed -i "s/@RUST@//g" .build/deb/$(PKG)/debian/control |  | ||||||
|  |  | ||||||
| 	cd .build/deb/$(PKG) && dch --create --distribution unstable --package $(PKG_NAME) --newversion $(VERSION)-$(REVISION) "Bugfix and improvements." | 	dch --create --distribution unstable --package $(PKG_NAME) --newversion $(VERSION)-$(REVISION) "Bugfix and improvements." | ||||||
|  |  | ||||||
| 	cd .build/deb/$(PKG) && debuild --preserve-env -e PATH -us -uc -b | 	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)) | ||||||
| @@ -155,17 +120,12 @@ ppa: check-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" | ||||||
|  |  | ||||||
| 	if [ $(PUBLISH) -eq 1 ]; then \ | publish-ppa: ppa | ||||||
| 		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: clean-rpm | init-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 | ||||||
| @@ -173,20 +133,26 @@ init-rpm: clean-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 | ||||||
|  |  | ||||||
| rpm: init-rpm tarball | # Ensure ../globalprotect-openconnect-*.tar.gz exists. | ||||||
|  | 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 .build/tarball/${PKG}.tar.gz $(HOME)/rpmbuild/SOURCES/${PKG_NAME}.tar.gz | 	cp ../$(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 from build directory | 	# Copy RPM package | ||||||
| 	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. | ||||||
| @@ -194,41 +160,20 @@ rpm: init-rpm tarball | |||||||
| 		cp $(HOME)/rpmbuild/SRPMS/$(PKG_NAME)*.rpm .build/rpm; \ | 		cp $(HOME)/rpmbuild/SRPMS/$(PKG_NAME)*.rpm .build/rpm; \ | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| clean-pkgbuild: | init-pkgbuild: | ||||||
| 	rm -rf .build/pkgbuild | 	rm -rf .build/pkgbuild | ||||||
|  |  | ||||||
| init-pkgbuild: clean-pkgbuild tarball |  | ||||||
| 	mkdir -p .build/pkgbuild | 	mkdir -p .build/pkgbuild | ||||||
|  |  | ||||||
| 	cp .build/tarball/${PKG}.tar.gz .build/pkgbuild | 	if [ ! -f ../$(PKG).tar.gz ]; then \ | ||||||
| 	cp packaging/pkgbuild/PKGBUILD.in .build/pkgbuild/PKGBUILD | 		echo "Missing ../$(PKG).tar.gz"; \ | ||||||
|  | 		exit 1; \ | ||||||
|  | 	fi | ||||||
|  | 	cp ../$(PKG).tar.gz .build/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)/artifacts |  | ||||||
|  |  | ||||||
| 	make -C .build/binary/${PKG} build OFFLINE=$(OFFLINE) BUILD_FE=0 |  | ||||||
| 	make -C .build/binary/${PKG} install DESTDIR=$(PWD)/.build/binary/$(PKG_NAME)_$(VERSION)/artifacts |  | ||||||
|  |  | ||||||
| 	cp packaging/binary/Makefile.in .build/binary/$(PKG_NAME)_$(VERSION)/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) |  | ||||||
|  |  | ||||||
| 	# 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 |  | ||||||
|   | |||||||
| @@ -80,20 +80,12 @@ impl GuiUpdater { | |||||||
|   pub async fn update(&self) { |   pub async fn update(&self) { | ||||||
|     info!("Update GUI, version: {}", self.version); |     info!("Update GUI, version: {}", self.version); | ||||||
|  |  | ||||||
|     #[cfg(debug_assertions)] |  | ||||||
|     let release_tag = "latest"; |  | ||||||
|     #[cfg(not(debug_assertions))] |  | ||||||
|     let release_tag = format!("v{}", self.version); |  | ||||||
|  |  | ||||||
|     #[cfg(target_arch = "x86_64")] |     #[cfg(target_arch = "x86_64")] | ||||||
|     let arch = "x86_64"; |     let arch = "amd64"; | ||||||
|     #[cfg(target_arch = "aarch64")] |     #[cfg(target_arch = "aarch64")] | ||||||
|     let arch = "aarch64"; |     let arch = "arm64"; | ||||||
|  |  | ||||||
|     let file_url = format!( |     let file_url = format!("https://github.com/yuezk/GlobalProtect-openconnect/releases/download/v{}/gpgui-linux-{}", self.version, arch); | ||||||
|       "https://github.com/yuezk/GlobalProtect-openconnect/releases/download/{}/gpgui_{}_{}.bin.tar.xz", |  | ||||||
|       release_tag, 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,5 +18,3 @@ 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,12 +1,4 @@ | |||||||
| use std::{ | use std::{borrow::Cow, fs::Permissions, ops::ControlFlow, os::unix::fs::PermissionsExt, path::PathBuf, sync::Arc}; | ||||||
|   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::{ | ||||||
| @@ -25,9 +17,7 @@ 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; | ||||||
|  |  | ||||||
| @@ -70,7 +60,6 @@ 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 { | ||||||
| @@ -79,27 +68,8 @@ async fn install_gui(src: &str) -> anyhow::Result<()> { | |||||||
|  |  | ||||||
|   fs::create_dir_all(dir).await?; |   fs::create_dir_all(dir).await?; | ||||||
|  |  | ||||||
|   // Unpack the archive |   // Copy the file to the final location and make it executable | ||||||
|   info!("Unpacking GUI archive"); |   fs::copy(src, GP_GUI_BINARY).await?; | ||||||
|   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(()) | ||||||
|   | |||||||
| @@ -1,11 +1,5 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
| ## 2.1.0 - 2024-02-27 |  | ||||||
|  |  | ||||||
| - Update distribution channel for `gpgui` to complaint with the GPL-3 license. |  | ||||||
| - Add `mtu` option. |  | ||||||
| - Retry auth if failed to obtain the auth cookie |  | ||||||
|  |  | ||||||
| ## 2.0.0 - 2024-02-05 | ## 2.0.0 - 2024-02-05 | ||||||
|  |  | ||||||
| - Refactor using Tauri | - Refactor using Tauri | ||||||
|   | |||||||
| @@ -1,30 +0,0 @@ | |||||||
| 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 = @OFFLINE@ BUILD_FE=0 | export OFFLINE = 1 | ||||||
|  |  | ||||||
| %: | %: | ||||||
| 	dh $@ | 	dh $@ | ||||||
|   | |||||||
| @@ -21,15 +21,10 @@ 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@ BUILD_FE=0 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| package() { | package() { | ||||||
|   cd "$pkgname-$pkgver" |   cd "$pkgname-$pkgver" | ||||||
|  |  | ||||||
|   make install DESTDIR="$pkgdir" |   make install DESTDIR="$pkgdir" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,9 +35,7 @@ A GUI for GlobalProtect VPN, based on OpenConnect, supports the SSO authenticati | |||||||
| %setup | %setup | ||||||
|  |  | ||||||
| %build | %build | ||||||
| # The injected RUSTFLAGS could fail the build | make build OFFLINE=1 | ||||||
| unset RUSTFLAGS |  | ||||||
| make build OFFLINE=@OFFLINE@ BUILD_FE=0 |  | ||||||
|  |  | ||||||
| %install | %install | ||||||
| %make_install | %make_install | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user