diff --git a/.editorconfig b/.editorconfig index 9d08a1a..b200914 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,3 +7,6 @@ indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true + +[Makefile] +indent_style = tab diff --git a/.gitignore b/.gitignore index 20282f4..29d6314 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /target .pnpm-store .env +vendor diff --git a/Cargo.lock b/Cargo.lock index f85ac8b..c5c2616 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -903,19 +903,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "downloader" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05213e96f184578b5f70105d4d0a644a168e99e12d7bea0b200c15d67b5c182" -dependencies = [ - "futures", - "rand 0.8.5", - "reqwest", - "thiserror", - "tokio", -] - [[package]] name = "dtoa" version = "1.0.9" @@ -1514,7 +1501,6 @@ dependencies = [ "anyhow", "clap", "compile-time", - "downloader", "env_logger", "futures-util", "gpapi", diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c84b7c2 --- /dev/null +++ b/Makefile @@ -0,0 +1,36 @@ +build: build-fe build-rs gpgui-helper + +build-fe: + cd apps/gpgui-helper && pnpm install && pnpm build + +build-rs: + cargo build --release --frozen -p gpclient -p gpauth -p gpservice + +gpgui-helper: + cargo build --release --frozen -p gpgui-helper --features "tauri/custom-protocol" + +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 + install -Dm755 target/release/gpgui-helper $(DESTDIR)/usr/bin/gpgui-helper + + install -Dm644 packaging/files/usr/share/applications/gpgui.desktop $(DESTDIR)/usr/share/applications/gpgui.desktop + install -Dm644 packaging/files/usr/share/icons/hicolor/scalable/apps/gpgui.svg $(DESTDIR)/usr/share/icons/hicolor/scalable/apps/gpgui.svg + install -Dm644 packaging/files/usr/share/icons/hicolor/32x32/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/gpgui.png + install -Dm644 packaging/files/usr/share/icons/hicolor/128x128/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/128x128/apps/gpgui.png + install -Dm644 packaging/files/usr/share/icons/hicolor/256x256@2/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png + install -Dm644 packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy + +uninstall: + 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/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 diff --git a/apps/gpgui-helper/.gitignore b/apps/gpgui-helper/.gitignore index a547bf3..f52de67 100644 --- a/apps/gpgui-helper/.gitignore +++ b/apps/gpgui-helper/.gitignore @@ -22,3 +22,4 @@ dist-ssr *.njsproj *.sln *.sw? +.vite diff --git a/apps/gpgui-helper/src-tauri/Cargo.toml b/apps/gpgui-helper/src-tauri/Cargo.toml index 839e1f6..51d972c 100644 --- a/apps/gpgui-helper/src-tauri/Cargo.toml +++ b/apps/gpgui-helper/src-tauri/Cargo.toml @@ -18,7 +18,6 @@ clap.workspace = true compile-time.workspace = true env_logger.workspace = true futures-util.workspace = true -downloader = "0.2" tempfile.workspace = true reqwest = { workspace = true, features = ["stream"] } diff --git a/packaging/files/usr/share/applications/gpgui.desktop b/packaging/files/usr/share/applications/gpgui.desktop new file mode 100644 index 0000000..8ad6418 --- /dev/null +++ b/packaging/files/usr/share/applications/gpgui.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] + +Type=Application +Name=GlobalProtect Openconnect VPN Client +Comment=A GUI for GlobalProtect VPN +GenericName=GlobalProtect VPN Client +Categories=Network;Dialup; +Exec=/usr/bin/gpclient launch-gui %u +MimeType=x-scheme-handler/globalprotectcallback; +Icon=gpgui +Keywords=GlobalProtect;Openconnect;SAML;connection;VPN; diff --git a/packaging/files/usr/share/icons/hicolor/128x128/apps/gpgui.png b/packaging/files/usr/share/icons/hicolor/128x128/apps/gpgui.png new file mode 100644 index 0000000..d7e9730 Binary files /dev/null and b/packaging/files/usr/share/icons/hicolor/128x128/apps/gpgui.png differ diff --git a/packaging/files/usr/share/icons/hicolor/256x256@2/apps/gpgui.png b/packaging/files/usr/share/icons/hicolor/256x256@2/apps/gpgui.png new file mode 100644 index 0000000..301c18a Binary files /dev/null and b/packaging/files/usr/share/icons/hicolor/256x256@2/apps/gpgui.png differ diff --git a/packaging/files/usr/share/icons/hicolor/32x32/apps/gpgui.png b/packaging/files/usr/share/icons/hicolor/32x32/apps/gpgui.png new file mode 100644 index 0000000..a29d98a Binary files /dev/null and b/packaging/files/usr/share/icons/hicolor/32x32/apps/gpgui.png differ diff --git a/packaging/files/usr/share/icons/hicolor/scalable/apps/gpgui.svg b/packaging/files/usr/share/icons/hicolor/scalable/apps/gpgui.svg new file mode 100644 index 0000000..bccc611 --- /dev/null +++ b/packaging/files/usr/share/icons/hicolor/scalable/apps/gpgui.svg @@ -0,0 +1,99 @@ + + + +image/svg+xml + + + + + + + + \ No newline at end of file diff --git a/packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy b/packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy new file mode 100644 index 0000000..8c8af09 --- /dev/null +++ b/packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy @@ -0,0 +1,18 @@ + + + + The GlobalProtect-openconnect Project + https://github.com/yuezk/GlobalProtect-openconnect + gpgui + + Run GPService as root + Authentication is required to run the GPService as root + + auth_admin + auth_admin + yes + + /usr/bin/gpservice + true + +