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 | ||||
|       - v*.*.* | ||||
| 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: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [setup-matrix] | ||||
|     steps: | ||||
|     - uses: pnpm/action-setup@v2 | ||||
|       with: | ||||
|         version: 8 | ||||
|     - name: Prepare workspace | ||||
|       run: rm -rf source && mkdir source | ||||
|     - name: Checkout GlobalProtect-openconnect | ||||
|       uses: actions/checkout@v3 | ||||
|       with: | ||||
|         token: ${{ secrets.GH_PAT }} | ||||
|         repository: yuezk/GlobalProtect-openconnect | ||||
|         path: source/gp | ||||
|         path: gp | ||||
|     - name: Create tarball | ||||
|       run: | | ||||
|         cd source/gp | ||||
|         cd gp | ||||
|         make tarball | ||||
|     - name: Upload tarball | ||||
|       uses: actions/upload-artifact@v3 | ||||
|       with: | ||||
|         name: artifact-source | ||||
|         if-no-files-found: error | ||||
|         name: artifact-tarball | ||||
|         path: | | ||||
|           source/gp/.build/tarball/*.tar.gz | ||||
|  | ||||
|   build-deb: | ||||
|     needs: | ||||
|     - setup-matrix | ||||
|     - tarball | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|           globalprotect-openconnect-*.tar.gz | ||||
|   deb: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [tarball] | ||||
|     container: | ||||
|       image: yuezk/gpdev:main | ||||
|       credentials: | ||||
|         username: ${{ secrets.DOCKER_HUB_USERNAME }} | ||||
|         password: ${{ secrets.DOCKER_HUB_TOKEN }} | ||||
|     steps: | ||||
|     - name: Prepare workspace | ||||
|       run: rm -rf build-deb && mkdir build-deb | ||||
|     - name: Download tarball | ||||
|       uses: actions/download-artifact@v3 | ||||
|       with: | ||||
|         name: artifact-source | ||||
|         path: build-deb | ||||
|     - name: Docker Login | ||||
|       run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin | ||||
|     - name: Build DEB package in Docker | ||||
|         name: artifact-tarball | ||||
|     - name: Build DEB package | ||||
|       run: | | ||||
|         docker run --rm -v $(pwd)/build-deb:/deb yuezk/gpdev:deb-builder | ||||
|     - name: Install DEB package in Docker | ||||
|         tar -xzf globalprotect-openconnect-*.tar.gz | ||||
|         cd globalprotect-openconnect-* | ||||
|         make deb | ||||
|     - name: Install DEB package | ||||
|       run: | | ||||
|         docker run --rm -v $(pwd)/build-deb:/deb yuezk/gpdev:deb-builder \ | ||||
|           bash -c "sudo dpkg -i /deb/*.deb; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;" | ||||
|         sudo dpkg -i globalprotect-openconnect_*.deb | ||||
|  | ||||
|         gpclient --version | ||||
|         gpservice --version | ||||
|         gpauth --version | ||||
|         gpgui-helper --version | ||||
|     - name: Upload DEB package | ||||
|       uses: actions/upload-artifact@v3 | ||||
|       with: | ||||
|         name: artifact-deb-${{ matrix.os }} | ||||
|         if-no-files-found: error | ||||
|         name: artifact-deb | ||||
|         path: | | ||||
|           build-deb/*.deb | ||||
|           globalprotect-openconnect_*.deb | ||||
|  | ||||
|   build-rpm: | ||||
|     needs: | ||||
|     - setup-matrix | ||||
|     - tarball | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|   rpm: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [tarball] | ||||
|     container: | ||||
|       image: yuezk/gpdev:rpm-builder | ||||
|       credentials: | ||||
|         username: ${{ secrets.DOCKER_HUB_USERNAME }} | ||||
|         password: ${{ secrets.DOCKER_HUB_TOKEN }} | ||||
|     steps: | ||||
|     - name: Prepare workspace | ||||
|       run: rm -rf build-rpm && mkdir build-rpm | ||||
|     - name: Download tarball | ||||
|       uses: actions/download-artifact@v3 | ||||
|       with: | ||||
|         name: artifact-source | ||||
|         path: build-rpm | ||||
|     - name: Docker Login | ||||
|       run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin | ||||
|     - name: Build RPM package in Docker | ||||
|         name: artifact-tarball | ||||
|     - name: Build RPM package | ||||
|       run: | | ||||
|         docker run --rm -v $(pwd)/build-rpm:/rpm yuezk/gpdev:rpm-builder | ||||
|     - name: Install RPM package in Docker | ||||
|         tar -xzf globalprotect-openconnect-*.tar.gz | ||||
|         cd globalprotect-openconnect-*/ | ||||
|         make rpm | ||||
|     - name: Install RPM package | ||||
|       run: | | ||||
|         docker run --rm -v $(pwd)/build-rpm:/rpm yuezk/gpdev:rpm-builder \ | ||||
|           bash -c "sudo rpm -i /rpm/*.$(uname -m).rpm; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;" | ||||
|         cd globalprotect-openconnect-*/ | ||||
|         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 | ||||
|       uses: actions/upload-artifact@v3 | ||||
|       with: | ||||
|         name: artifact-rpm-${{ matrix.os }} | ||||
|         if-no-files-found: error | ||||
|         name: artifact-rpm | ||||
|         path: | | ||||
|           build-rpm/*.rpm | ||||
|           globalprotect-openconnect-*/.build/rpm/*.rpm | ||||
|  | ||||
|   build-pkgbuild: | ||||
|     needs: | ||||
|     - setup-matrix | ||||
|     - tarball | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Prepare workspace | ||||
|       run: rm -rf build-pkgbuild && mkdir build-pkgbuild | ||||
|     - name: Download tarball | ||||
|       uses: actions/download-artifact@v3 | ||||
|       with: | ||||
|         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 | ||||
|   # 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=[\"amd64\", \"arm64\"]" >> $GITHUB_OUTPUT | ||||
|   #         else | ||||
|   #           echo "matrix=[\"amd64\"]" >> $GITHUB_OUTPUT | ||||
|   #         fi | ||||
|  | ||||
|   build-binary: | ||||
|     needs: | ||||
|     - setup-matrix | ||||
|     - tarball | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     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-fe: | ||||
|   #   runs-on: ubuntu-latest | ||||
|   #   steps: | ||||
|   #     - name: Checkout gpgui repo | ||||
|   #       uses: actions/checkout@v3 | ||||
|   #       with: | ||||
|   #         token: ${{ secrets.GH_PAT }} | ||||
|   #         repository: yuezk/gpgui | ||||
|  | ||||
|   build-gpgui: | ||||
|     needs: | ||||
|     - setup-matrix | ||||
|     strategy: | ||||
|       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 | ||||
|   #     - name: Install Node.js | ||||
|   #       uses: actions/setup-node@v4 | ||||
|   #       with: | ||||
|   #         node-version: 18 | ||||
|  | ||||
|   gh-release: | ||||
|     if: startsWith(github.ref, 'refs/tags/') | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: | ||||
|       - build-deb | ||||
|       - build-rpm | ||||
|       - build-pkgbuild | ||||
|       - build-binary | ||||
|       - build-gpgui | ||||
|   #     - uses: pnpm/action-setup@v2 | ||||
|   #       with: | ||||
|   #         version: 8 | ||||
|  | ||||
|     steps: | ||||
|     - name: Prepare workspace | ||||
|       run: rm -rf build-artifact && mkdir build-artifact | ||||
|     - name: Download all artifacts | ||||
|       uses: actions/download-artifact@v3 | ||||
|       with: | ||||
|         path: build-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: | | ||||
|           build-artifact/artifact-*/* | ||||
|   #     - name: Install dependencies | ||||
|   #       run: | | ||||
|   #         cd app | ||||
|   #         pnpm install | ||||
|   #     - name: Build | ||||
|   #       run: | | ||||
|   #         cd app | ||||
|   #         pnpm run build | ||||
|  | ||||
|   #     - name: Upload artifacts | ||||
|   #       uses: actions/upload-artifact@v3 | ||||
|   #       with: | ||||
|   #         name: gpgui-fe | ||||
|   #         path: app/dist | ||||
|  | ||||
|   # 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]] | ||||
| name = "gpapi" | ||||
| version = "2.1.0" | ||||
| version = "2.0.0" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "base64 0.21.5", | ||||
| @@ -1455,7 +1455,7 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "gpauth" | ||||
| version = "2.1.0" | ||||
| version = "2.0.0" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "clap", | ||||
| @@ -1475,7 +1475,7 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "gpclient" | ||||
| version = "2.1.0" | ||||
| version = "2.0.0" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "clap", | ||||
| @@ -1496,7 +1496,7 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "gpgui-helper" | ||||
| version = "2.1.0" | ||||
| version = "2.0.0" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "clap", | ||||
| @@ -1514,7 +1514,7 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "gpservice" | ||||
| version = "2.1.0" | ||||
| version = "2.0.0" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "axum", | ||||
| @@ -1527,10 +1527,8 @@ dependencies = [ | ||||
|  "openconnect", | ||||
|  "serde", | ||||
|  "serde_json", | ||||
|  "tar", | ||||
|  "tokio", | ||||
|  "tokio-util", | ||||
|  "xz2", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| @@ -2200,17 +2198,6 @@ dependencies = [ | ||||
|  "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]] | ||||
| name = "mac" | ||||
| version = "0.1.1" | ||||
| @@ -2519,7 +2506,7 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "openconnect" | ||||
| version = "2.1.0" | ||||
| version = "2.0.0" | ||||
| dependencies = [ | ||||
|  "cc", | ||||
|  "is_executable", | ||||
| @@ -5137,15 +5124,6 @@ version = "0.13.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 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]] | ||||
| name = "zeroize" | ||||
| version = "1.7.0" | ||||
|   | ||||
| @@ -5,7 +5,7 @@ members = ["crates/*", "apps/gpclient", "apps/gpservice", "apps/gpauth", "apps/g | ||||
|  | ||||
| [workspace.package] | ||||
| rust-version = "1.70" | ||||
| version = "2.1.0" | ||||
| version = "2.0.0" | ||||
| authors = ["Kevin Yue <k3vinyue@gmail.com>"] | ||||
| homepage = "https://github.com/yuezk/GlobalProtect-openconnect" | ||||
| edition = "2021" | ||||
|   | ||||
							
								
								
									
										157
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										157
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,5 +1,4 @@ | ||||
| OFFLINE ?= 0 | ||||
| BUILD_FE ?= 1 | ||||
| CARGO ?= cargo | ||||
|  | ||||
| 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 = $(PKG_NAME)-$(VERSION) | ||||
| SERIES ?= $(shell lsb_release -cs) | ||||
| PUBLISH ?= 0 | ||||
|  | ||||
| export DEBEMAIL = k3vinyue@gmail.com | ||||
| export DEBFULLNAME = Kevin Yue | ||||
| @@ -24,40 +22,28 @@ default: build | ||||
| version: | ||||
| 	@echo $(VERSION) | ||||
|  | ||||
| clean-tarball: | ||||
| 	rm -rf .build/tarball | ||||
| 	rm -rf .vendor | ||||
| 	rm -rf vendor.tar.xz | ||||
| 	rm -rf .cargo | ||||
| # Generate a vendor tarball and a .cargo/config.toml file | ||||
| cargo-vendor: | ||||
| 	mkdir -p .cargo | ||||
|  | ||||
| # Create a tarball, include the cargo dependencies if OFFLINE is set to 1 | ||||
| tarball: clean-tarball | ||||
| 	if [ $(BUILD_FE) -eq 1 ]; then \ | ||||
| 		cd apps/gpgui-helper && pnpm install && pnpm build; \ | ||||
| 	fi | ||||
| 	$(CARGO) vendor .vendor > .cargo/config.toml | ||||
| 	tar -cJf vendor.tar.xz .vendor | ||||
|  | ||||
| 	# Remove node_modules to reduce the tarball size | ||||
| tarball: clean clean-tarball build-fe cargo-vendor | ||||
| 	rm -rf apps/gpgui-helper/node_modules | ||||
|  | ||||
| 	mkdir -p .cargo | ||||
| 	mkdir -p .build/tarball | ||||
| 	tar --transform 's,^,${PKG}/,' -czf ../${PKG}.tar.gz * .cargo | ||||
|  | ||||
| 	# If OFFLINE is set to 1, vendor all cargo dependencies | ||||
| 	if [ $(OFFLINE) -eq 1 ]; then \ | ||||
| 		$(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 | ||||
| # Extract the vendor tarball to the .vendor directory if it exists | ||||
| extract-vendor: | ||||
| 	if [ -f vendor.tar.xz ]; then tar -xJf vendor.tar.xz; fi | ||||
|  | ||||
| build: build-fe build-rs | ||||
|  | ||||
| # Install and build the frontend | ||||
| # If OFFLINE is set to 1, skip it | ||||
| build-fe: | ||||
| 	if [ $(OFFLINE) -eq 1 ] || [ $(BUILD_FE) -eq 0 ]; then \ | ||||
| 		echo "Skipping frontend build (OFFLINE=1 or BUILD_FE=0)"; \ | ||||
| 	else \ | ||||
| 	if [ $(OFFLINE) -eq 0 ]; then \ | ||||
| 		cd apps/gpgui-helper && pnpm install && pnpm build; \ | ||||
| 	fi | ||||
|  | ||||
| @@ -66,13 +52,9 @@ build-fe: | ||||
| 		exit 1; \ | ||||
| 	fi | ||||
|  | ||||
| build-rs: | ||||
| 	if [ $(OFFLINE) -eq 1 ]; then \ | ||||
| 		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" | ||||
| build-rs: extract-vendor | ||||
| 	$(CARGO) build $(CARGO_BUILD_ARGS) -p gpauth | ||||
| 	# $(CARGO) build $(CARGO_BUILD_ARGS) -p gpgui-helper --features "tauri/custom-protocol" | ||||
|  | ||||
| clean: | ||||
| 	$(CARGO) clean | ||||
| @@ -80,9 +62,11 @@ clean: | ||||
| 	rm -rf .vendor | ||||
| 	rm -rf apps/gpgui-helper/node_modules | ||||
|  | ||||
| install: | ||||
| 	@echo "Installing $(PKG_NAME)..." | ||||
| clean-tarball: | ||||
| 	rm -rf vendor.tar.xz | ||||
| 	rm -rf ../$(PKG).tar.gz | ||||
|  | ||||
| install: | ||||
| 	install -Dm755 target/release/gpclient $(DESTDIR)/usr/bin/gpclient | ||||
| 	install -Dm755 target/release/gpauth $(DESTDIR)/usr/bin/gpauth | ||||
| 	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 | ||||
|  | ||||
| uninstall: | ||||
| 	@echo "Uninstalling $(PKG_NAME)..." | ||||
|  | ||||
| 	rm -f $(DESTDIR)/usr/bin/gpclient | ||||
| 	rm -f $(DESTDIR)/usr/bin/gpauth | ||||
| 	rm -f $(DESTDIR)/usr/bin/gpservice | ||||
| 	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 | ||||
| @@ -111,41 +92,25 @@ uninstall: | ||||
| 	rm -f $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png | ||||
| 	rm -f $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy | ||||
|  | ||||
| clean-debian: | ||||
| 	rm -rf .build/deb | ||||
| init-debian: | ||||
| 	rm -rf .vendor | ||||
| 	rm -rf debian | ||||
|  | ||||
| # 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 | ||||
| 	debmake | ||||
|  | ||||
| 	tar -xzf .build/deb/${PKG}.tar.gz -C .build/deb | ||||
| 	cd .build/deb/${PKG} && debmake | ||||
|  | ||||
| 	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 | ||||
| 	cp -f packaging/deb/control.in debian/control | ||||
| 	cp -f packaging/deb/rules debian/rules | ||||
| 	rm -f debian/changelog | ||||
|  | ||||
| deb: init-debian | ||||
| 	# Remove the rust build depdency from the control file | ||||
| 	sed -i "s/@RUST@//g" .build/deb/$(PKG)/debian/control | ||||
| 	sed -i "s/@RUST@//g" 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 | ||||
|  | ||||
| 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} | ||||
| 	debuild --preserve-env -e PATH -us -uc -b | ||||
|  | ||||
| # Usage: make ppa SERIES=focal | ||||
| ppa: init-debian | ||||
| 	sed -i "s/@RUST@/rust-all(>=1.70)/g" debian/control | ||||
|  | ||||
| 	$(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" | ||||
|  | ||||
| 	if [ $(PUBLISH) -eq 1 ]; then \ | ||||
| 		dput ppa:yuezk/globalprotect-openconnect ../*.changes; \ | ||||
| 	else | ||||
| 		echo "Skipping ppa publish (PUBLISH=0)" | ||||
| 	fi | ||||
|  | ||||
| clean-rpm: | ||||
| 	rm -rf .build/rpm | ||||
| publish-ppa: ppa | ||||
| 	dput ppa:yuezk/globalprotect-openconnect ../*.changes | ||||
|  | ||||
| # Generate RPM sepc file | ||||
| init-rpm: clean-rpm | ||||
| init-rpm: | ||||
| 	rm -rf .build/rpm | ||||
| 	mkdir -p .build/rpm | ||||
|  | ||||
| 	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/@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/@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 | ||||
|  | ||||
| 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 | ||||
| 	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 | ||||
|  | ||||
| 	# Copy RPM package from build directory | ||||
| 	# Copy RPM package | ||||
| 	cp $(HOME)/rpmbuild/RPMS/$(shell uname -m)/$(PKG_NAME)*.rpm .build/rpm | ||||
|  | ||||
| 	# Copy the SRPM only for x86_64. | ||||
| @@ -194,41 +160,20 @@ rpm: init-rpm tarball | ||||
| 		cp $(HOME)/rpmbuild/SRPMS/$(PKG_NAME)*.rpm .build/rpm; \ | ||||
| 	fi | ||||
|  | ||||
| clean-pkgbuild: | ||||
| init-pkgbuild: | ||||
| 	rm -rf .build/pkgbuild | ||||
|  | ||||
| init-pkgbuild: clean-pkgbuild tarball | ||||
| 	mkdir -p .build/pkgbuild | ||||
|  | ||||
| 	cp .build/tarball/${PKG}.tar.gz .build/pkgbuild | ||||
| 	cp packaging/pkgbuild/PKGBUILD.in .build/pkgbuild/PKGBUILD | ||||
| 	if [ ! -f ../$(PKG).tar.gz ]; then \ | ||||
| 		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/@VERSION@/$(VERSION)/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 | ||||
| 	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) { | ||||
|     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")] | ||||
|     let arch = "x86_64"; | ||||
|     let arch = "amd64"; | ||||
|     #[cfg(target_arch = "aarch64")] | ||||
|     let arch = "aarch64"; | ||||
|     let arch = "arm64"; | ||||
|  | ||||
|     let file_url = format!( | ||||
|       "https://github.com/yuezk/GlobalProtect-openconnect/releases/download/{}/gpgui_{}_{}.bin.tar.xz", | ||||
|       release_tag, self.version, arch | ||||
|     ); | ||||
|     let file_url = format!("https://github.com/yuezk/GlobalProtect-openconnect/releases/download/v{}/gpgui-linux-{}", self.version, arch); | ||||
|     let checksum_url = format!("{}.sha256", file_url); | ||||
|  | ||||
|     info!("Downloading file: {}", file_url); | ||||
|   | ||||
| @@ -18,5 +18,3 @@ serde_json.workspace = true | ||||
| env_logger.workspace = true | ||||
| log.workspace = true | ||||
| compile-time.workspace = true | ||||
| xz2 = "0.1" | ||||
| tar = "0.4" | ||||
|   | ||||
| @@ -1,12 +1,4 @@ | ||||
| use std::{ | ||||
|   borrow::Cow, | ||||
|   fs::{File, Permissions}, | ||||
|   io::BufReader, | ||||
|   ops::ControlFlow, | ||||
|   os::unix::fs::PermissionsExt, | ||||
|   path::PathBuf, | ||||
|   sync::Arc, | ||||
| }; | ||||
| use std::{borrow::Cow, fs::Permissions, ops::ControlFlow, os::unix::fs::PermissionsExt, path::PathBuf, sync::Arc}; | ||||
|  | ||||
| use anyhow::bail; | ||||
| use axum::{ | ||||
| @@ -25,9 +17,7 @@ use gpapi::{ | ||||
|   GP_GUI_BINARY, | ||||
| }; | ||||
| use log::{info, warn}; | ||||
| use tar::Archive; | ||||
| use tokio::fs; | ||||
| use xz2::read::XzDecoder; | ||||
|  | ||||
| use crate::ws_server::WsServerContext; | ||||
|  | ||||
| @@ -70,7 +60,6 @@ pub async fn update_gui(State(ctx): State<Arc<WsServerContext>>, body: Bytes) -> | ||||
|   Ok(()) | ||||
| } | ||||
|  | ||||
| // Unpack GPGUI archive, gpgui_2.0.0_{arch}.bin.tar.xz and install it | ||||
| async fn install_gui(src: &str) -> anyhow::Result<()> { | ||||
|   let path = PathBuf::from(GP_GUI_BINARY); | ||||
|   let Some(dir) = path.parent() else { | ||||
| @@ -79,27 +68,8 @@ async fn install_gui(src: &str) -> anyhow::Result<()> { | ||||
|  | ||||
|   fs::create_dir_all(dir).await?; | ||||
|  | ||||
|   // Unpack the archive | ||||
|   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 | ||||
|   // Copy the file to the final location and make it executable | ||||
|   fs::copy(src, GP_GUI_BINARY).await?; | ||||
|   fs::set_permissions(GP_GUI_BINARY, Permissions::from_mode(0o755)).await?; | ||||
|  | ||||
|   Ok(()) | ||||
|   | ||||
| @@ -1,11 +1,5 @@ | ||||
| # 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 | ||||
|  | ||||
| - 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 | ||||
|  | ||||
| export OFFLINE = @OFFLINE@ BUILD_FE=0 | ||||
| export OFFLINE = 1 | ||||
|  | ||||
| %: | ||||
| 	dh $@ | ||||
|   | ||||
| @@ -21,15 +21,10 @@ options=('!strip') | ||||
|  | ||||
| build() { | ||||
|   cd "$pkgname-$pkgver" | ||||
|  | ||||
|   # Must unset the CFLAGS, otherwise the build fails | ||||
|   unset CFLAGS | ||||
|  | ||||
|   make build OFFLINE=@OFFLINE@ BUILD_FE=0 | ||||
|   make build OFFLINE=1 | ||||
| } | ||||
|  | ||||
| package() { | ||||
|   cd "$pkgname-$pkgver" | ||||
|  | ||||
|   make install DESTDIR="$pkgdir" | ||||
| } | ||||
|   | ||||
| @@ -35,9 +35,7 @@ A GUI for GlobalProtect VPN, based on OpenConnect, supports the SSO authenticati | ||||
| %setup | ||||
|  | ||||
| %build | ||||
| # The injected RUSTFLAGS could fail the build | ||||
| unset RUSTFLAGS | ||||
| make build OFFLINE=@OFFLINE@ BUILD_FE=0 | ||||
| make build OFFLINE=1 | ||||
|  | ||||
| %install | ||||
| %make_install | ||||
|   | ||||
		Reference in New Issue
	
	Block a user