mirror of
https://github.com/usestrix/firewall.git
synced 2026-11-10 13:21:24 -10:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4fc0d64771 |
No files matched your search
@@ -32,6 +32,10 @@ path = "src/main.rs"
|
|||||||
name = "firewall-service"
|
name = "firewall-service"
|
||||||
path = "src/bin/firewall-service.rs"
|
path = "src/bin/firewall-service.rs"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "firewall-uninstall"
|
||||||
|
path = "src/bin/firewall-uninstall.rs"
|
||||||
|
|
||||||
[[example]]
|
[[example]]
|
||||||
name = "proxy-test"
|
name = "proxy-test"
|
||||||
path = "tests/proxy-test/main.rs"
|
path = "tests/proxy-test/main.rs"
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
//! Run as root by the macOS app's uninstall.
|
||||||
|
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
fn main() {
|
||||||
|
firewall::init_logging("info");
|
||||||
|
if let Err(e) = firewall::os::macos::uninstall() {
|
||||||
|
tracing::error!("could not uninstall: {e}");
|
||||||
|
firewall::telemetry::error("uninstall");
|
||||||
|
firewall::telemetry::flush();
|
||||||
|
std::process::exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Only macOS installs anything system-wide.
|
||||||
|
#[cfg(not(target_os = "macos"))]
|
||||||
|
fn main() {}
|
||||||
@@ -12,10 +12,6 @@ fn main() {
|
|||||||
firewall::init_logging("info");
|
firewall::init_logging("info");
|
||||||
serve()
|
serve()
|
||||||
}
|
}
|
||||||
if matches.subcommand_matches("uninstall").is_some() {
|
|
||||||
firewall::init_logging("info");
|
|
||||||
uninstall()
|
|
||||||
}
|
|
||||||
let mut command = matches.get_many::<String>("COMMAND").unwrap().cloned();
|
let mut command = matches.get_many::<String>("COMMAND").unwrap().cloned();
|
||||||
let program = command.next().unwrap();
|
let program = command.next().unwrap();
|
||||||
firewall::init_logging("warn");
|
firewall::init_logging("warn");
|
||||||
@@ -44,8 +40,6 @@ fn options() -> Command {
|
|||||||
Command::new("serve")
|
Command::new("serve")
|
||||||
.about("Serve a local registry for package managers configured to use it"),
|
.about("Serve a local registry for package managers configured to use it"),
|
||||||
)
|
)
|
||||||
// Run as root by the macOS app's uninstall.
|
|
||||||
.subcommand(Command::new("uninstall").hide(true))
|
|
||||||
.arg(
|
.arg(
|
||||||
Arg::new("COMMAND")
|
Arg::new("COMMAND")
|
||||||
.help("A command to run with its package downloads screened")
|
.help("A command to run with its package downloads screened")
|
||||||
@@ -76,13 +70,6 @@ fn serve() -> ! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn uninstall() -> ! {
|
|
||||||
match firewall::os::uninstall() {
|
|
||||||
Ok(()) => exit(0),
|
|
||||||
Err(e) => fail("uninstall", &format!("could not uninstall: {e}")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn run(invocation: Invocation) -> ! {
|
fn run(invocation: Invocation) -> ! {
|
||||||
telemetry::set_mode("wrapper");
|
telemetry::set_mode("wrapper");
|
||||||
let command = &invocation.program;
|
let command = &invocation.program;
|
||||||
|
|||||||
+1
-7
@@ -4,16 +4,10 @@ pub mod macos;
|
|||||||
pub mod windows;
|
pub mod windows;
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub use macos::{system_config, uninstall};
|
pub use macos::system_config;
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
pub use windows::system_config;
|
pub use windows::system_config;
|
||||||
|
|
||||||
/// Elsewhere nothing is installed system-wide.
|
|
||||||
#[cfg(not(target_os = "macos"))]
|
|
||||||
pub fn uninstall() -> Result<(), rama::error::BoxError> {
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "macos", windows)))]
|
#[cfg(not(any(target_os = "macos", windows)))]
|
||||||
pub fn system_config() -> Option<std::path::PathBuf> {
|
pub fn system_config() -> Option<std::path::PathBuf> {
|
||||||
None
|
None
|
||||||
|
|||||||
@@ -280,10 +280,10 @@ final class FirewallModel: NSObject, ObservableObject {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The extension wrote these as root, so the bundled CLI removes them behind an admin prompt; returns what to report if it failed.
|
/// The extension wrote these as root, so the bundled firewall-uninstall removes them behind an admin prompt; returns what to report if it failed.
|
||||||
private func removeStoredCA() -> String? {
|
private func removeStoredCA() -> String? {
|
||||||
let cli = Bundle.main.path(forAuxiliaryExecutable: "firewall") ?? ""
|
let uninstaller = Bundle.main.path(forAuxiliaryExecutable: "firewall-uninstall") ?? ""
|
||||||
let script = "do shell script quoted form of \"\(cli)\" & \" uninstall\" with administrator privileges"
|
let script = "do shell script quoted form of \"\(uninstaller)\" with administrator privileges"
|
||||||
var error: NSDictionary?
|
var error: NSDictionary?
|
||||||
NSAppleScript(source: script)?.executeAndReturnError(&error)
|
NSAppleScript(source: script)?.executeAndReturnError(&error)
|
||||||
if let error {
|
if let error {
|
||||||
|
|||||||
+1
-1
@@ -55,7 +55,7 @@ sign() {
|
|||||||
echo "==> Signing with $IDENTITY"
|
echo "==> Signing with $IDENTITY"
|
||||||
cp "$(profile_for $APP_ID)" "$APP/Contents/embedded.provisionprofile"
|
cp "$(profile_for $APP_ID)" "$APP/Contents/embedded.provisionprofile"
|
||||||
cp "$(profile_for $EXT_ID)" "$EXT/Contents/embedded.provisionprofile"
|
cp "$(profile_for $EXT_ID)" "$EXT/Contents/embedded.provisionprofile"
|
||||||
codesign --force --options runtime --timestamp -s "$IDENTITY" "$APP/Contents/MacOS/firewall"
|
codesign --force --options runtime --timestamp -s "$IDENTITY" "$APP/Contents/MacOS/firewall-uninstall"
|
||||||
codesign --force --options runtime --timestamp \
|
codesign --force --options runtime --timestamp \
|
||||||
--entitlements Extension/Extension.entitlements -s "$IDENTITY" "$EXT"
|
--entitlements Extension/Extension.entitlements -s "$IDENTITY" "$EXT"
|
||||||
codesign --force --options runtime --timestamp \
|
codesign --force --options runtime --timestamp \
|
||||||
|
|||||||
+4
-4
@@ -118,14 +118,14 @@ targets:
|
|||||||
- target: Extension
|
- target: Extension
|
||||||
embed: true
|
embed: true
|
||||||
codeSign: true
|
codeSign: true
|
||||||
# Uninstall runs the CLI as root to remove what the extension left.
|
# Uninstall runs this as root to remove what the extension left.
|
||||||
postBuildScripts:
|
postBuildScripts:
|
||||||
- name: Embed the CLI
|
- name: Embed firewall-uninstall
|
||||||
basedOnDependencyAnalysis: false
|
basedOnDependencyAnalysis: false
|
||||||
script: |
|
script: |
|
||||||
export PATH="$HOME/.cargo/bin:$PATH"
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
unset CC CXX CFLAGS CXXFLAGS
|
unset CC CXX CFLAGS CXXFLAGS
|
||||||
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
|
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
|
||||||
cd "$SRCROOT/../core"
|
cd "$SRCROOT/../core"
|
||||||
cargo build --bin firewall --target aarch64-apple-darwin $([ "$CONFIGURATION" = Debug ] || echo --release)
|
cargo build --bin firewall-uninstall --target aarch64-apple-darwin $([ "$CONFIGURATION" = Debug ] || echo --release)
|
||||||
cp "target/aarch64-apple-darwin/$CARGO_PROFILE/firewall" "$TARGET_BUILD_DIR/$EXECUTABLE_FOLDER_PATH/"
|
cp "target/aarch64-apple-darwin/$CARGO_PROFILE/firewall-uninstall" "$TARGET_BUILD_DIR/$EXECUTABLE_FOLDER_PATH/"
|
||||||
Reference in new issue
Block a user