mirror of
https://github.com/usestrix/firewall.git
synced 2026-11-09 18:08:49 -10:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5f4dd70ac |
No files matched your search
@@ -25,10 +25,10 @@ use std::sync::Arc;
|
|||||||
use tracing_subscriber::layer::SubscriberExt;
|
use tracing_subscriber::layer::SubscriberExt;
|
||||||
use tracing_subscriber::util::SubscriberInitExt;
|
use tracing_subscriber::util::SubscriberInitExt;
|
||||||
|
|
||||||
const BUNDLE_ID: &str = "ai.strix.firewall";
|
const BUNDLE_ID: &str = "com.usestrix.firewall";
|
||||||
const KEYCHAIN_SERVICE: &str = BUNDLE_ID;
|
const KEYCHAIN_SERVICE: &str = BUNDLE_ID;
|
||||||
const KEYCHAIN_ACCOUNT: &str = "ca";
|
const KEYCHAIN_ACCOUNT: &str = "ca";
|
||||||
/// Must match `macos/LaunchAgents/ai.strix.firewall.env.plist`, which points npm at it.
|
/// Must match `macos/LaunchAgents/com.usestrix.firewall.env.plist`, which points npm at it.
|
||||||
const CA_FILE: &str = "/Library/Application Support/Firewall/ca.pem";
|
const CA_FILE: &str = "/Library/Application Support/Firewall/ca.pem";
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
@@ -113,7 +113,7 @@ fn handler(exec: Executor) -> Result<Handler, BoxError> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// stderr is invisible in a system extension, so events go to the unified log:
|
/// stderr is invisible in a system extension, so events go to the unified log:
|
||||||
/// `log stream --predicate 'subsystem == "ai.strix.firewall"'`.
|
/// `log stream --predicate 'subsystem == "com.usestrix.firewall"'`.
|
||||||
fn init(_config: Option<&TransparentProxyInitConfig>) -> bool {
|
fn init(_config: Option<&TransparentProxyInitConfig>) -> bool {
|
||||||
// A panic crossing the FFI boundary aborts, and its message would go to stderr.
|
// A panic crossing the FFI boundary aborts, and its message would go to stderr.
|
||||||
std::panic::set_hook(Box::new(|panic| tracing::error!("{panic}")));
|
std::panic::set_hook(Box::new(|panic| tracing::error!("{panic}")));
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use std::io::ErrorKind;
|
|||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
|
||||||
/// Installed by the pkg.
|
/// Installed by the pkg.
|
||||||
const ENV_AGENT: &str = "/Library/LaunchAgents/ai.strix.firewall.env.plist";
|
const ENV_AGENT: &str = "/Library/LaunchAgents/com.usestrix.firewall.env.plist";
|
||||||
|
|
||||||
/// Removes what only root can: the CA, its enclave key and exported copy, and the env
|
/// Removes what only root can: the CA, its enclave key and exported copy, and the env
|
||||||
/// agent. Trust settings need an authorization dialog, so the installer drops those itself.
|
/// agent. Trust settings need an authorization dialog, so the installer drops those itself.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
enum FirewallIDs {
|
enum FirewallIDs {
|
||||||
static let appBundleID = "ai.strix.firewall"
|
static let appBundleID = "com.usestrix.firewall"
|
||||||
static let extensionBundleID = "ai.strix.firewall.extension"
|
static let extensionBundleID = "com.usestrix.firewall.extension"
|
||||||
static let caCommonName = "Strix Firewall"
|
static let caCommonName = "Strix Firewall"
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>Label</key>
|
<key>Label</key>
|
||||||
<string>ai.strix.firewall.env</string>
|
<string>com.usestrix.firewall.env</string>
|
||||||
<key>ProgramArguments</key>
|
<key>ProgramArguments</key>
|
||||||
<array>
|
<array>
|
||||||
<string>/bin/launchctl</string>
|
<string>/bin/launchctl</string>
|
||||||
+3
-3
@@ -10,8 +10,8 @@ cd "$(dirname "$0")"
|
|||||||
: "${TEAM:?set TEAM in macos/.env}"
|
: "${TEAM:?set TEAM in macos/.env}"
|
||||||
export TEAM
|
export TEAM
|
||||||
|
|
||||||
APP_ID=ai.strix.firewall
|
APP_ID=com.usestrix.firewall
|
||||||
EXT_ID=ai.strix.firewall.extension
|
EXT_ID=com.usestrix.firewall.extension
|
||||||
VERSION=0.1
|
VERSION=0.1
|
||||||
IDENTITY=${IDENTITY:-$(security find-identity -v -p codesigning | awk -F'"' '/Apple Development/ {print $2; exit}')}
|
IDENTITY=${IDENTITY:-$(security find-identity -v -p codesigning | awk -F'"' '/Apple Development/ {print $2; exit}')}
|
||||||
PROFILES="$HOME/Library/Developer/Xcode/UserData/Provisioning Profiles"
|
PROFILES="$HOME/Library/Developer/Xcode/UserData/Provisioning Profiles"
|
||||||
@@ -59,7 +59,7 @@ package() {
|
|||||||
rm -rf "$PKG_ROOT"
|
rm -rf "$PKG_ROOT"
|
||||||
mkdir -p "$PKG_ROOT/Applications" "$PKG_ROOT/Library/LaunchAgents"
|
mkdir -p "$PKG_ROOT/Applications" "$PKG_ROOT/Library/LaunchAgents"
|
||||||
cp -R "$APP" "$PKG_ROOT/Applications/Firewall.app"
|
cp -R "$APP" "$PKG_ROOT/Applications/Firewall.app"
|
||||||
cp LaunchAgents/ai.strix.firewall.env.plist "$PKG_ROOT/Library/LaunchAgents/"
|
cp LaunchAgents/com.usestrix.firewall.env.plist "$PKG_ROOT/Library/LaunchAgents/"
|
||||||
|
|
||||||
pkgbuild --analyze --root "$PKG_ROOT" build/components.plist >/dev/null
|
pkgbuild --analyze --root "$PKG_ROOT" build/components.plist >/dev/null
|
||||||
plutil -replace 0.BundleIsRelocatable -bool NO build/components.plist
|
plutil -replace 0.BundleIsRelocatable -bool NO build/components.plist
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
user=$(stat -f %Su /dev/console)
|
user=$(stat -f %Su /dev/console)
|
||||||
[ "$user" = root ] && exit 0
|
[ "$user" = root ] && exit 0
|
||||||
uid=$(id -u "$user")
|
uid=$(id -u "$user")
|
||||||
agent=/Library/LaunchAgents/ai.strix.firewall.env.plist
|
agent=/Library/LaunchAgents/com.usestrix.firewall.env.plist
|
||||||
launchctl bootout "gui/$uid" "$agent" 2>/dev/null
|
launchctl bootout "gui/$uid" "$agent" 2>/dev/null
|
||||||
launchctl bootstrap "gui/$uid" "$agent"
|
launchctl bootstrap "gui/$uid" "$agent"
|
||||||
launchctl asuser "$uid" sudo -u "$user" open -a /Applications/Firewall.app --args --install
|
launchctl asuser "$uid" sudo -u "$user" open -a /Applications/Firewall.app --args --install
|
||||||
|
|||||||
+8
-8
@@ -1,6 +1,6 @@
|
|||||||
name: Firewall
|
name: Firewall
|
||||||
options:
|
options:
|
||||||
bundleIdPrefix: ai.strix.firewall
|
bundleIdPrefix: com.usestrix.firewall
|
||||||
deploymentTarget: { macOS: "13.0" }
|
deploymentTarget: { macOS: "13.0" }
|
||||||
createIntermediateGroups: true
|
createIntermediateGroups: true
|
||||||
|
|
||||||
@@ -33,8 +33,8 @@ targets:
|
|||||||
sources: [Extension]
|
sources: [Extension]
|
||||||
settings:
|
settings:
|
||||||
base:
|
base:
|
||||||
PRODUCT_BUNDLE_IDENTIFIER: ai.strix.firewall.extension
|
PRODUCT_BUNDLE_IDENTIFIER: com.usestrix.firewall.extension
|
||||||
PRODUCT_NAME: ai.strix.firewall.extension
|
PRODUCT_NAME: com.usestrix.firewall.extension
|
||||||
PRODUCT_MODULE_NAME: Extension
|
PRODUCT_MODULE_NAME: Extension
|
||||||
OTHER_LDFLAGS: [-lfirewall, -framework, NetworkExtension, -lz]
|
OTHER_LDFLAGS: [-lfirewall, -framework, NetworkExtension, -lz]
|
||||||
info:
|
info:
|
||||||
@@ -44,7 +44,7 @@ targets:
|
|||||||
CFBundleShortVersionString: "0.1"
|
CFBundleShortVersionString: "0.1"
|
||||||
NSSystemExtensionUsageDescription: Firewall uses a network extension to screen package downloads before they install.
|
NSSystemExtensionUsageDescription: Firewall uses a network extension to screen package downloads before they install.
|
||||||
NetworkExtension:
|
NetworkExtension:
|
||||||
NEMachServiceName: ${TEAM}.ai.strix.firewall.extension
|
NEMachServiceName: ${TEAM}.com.usestrix.firewall.extension
|
||||||
NEProviderClasses:
|
NEProviderClasses:
|
||||||
com.apple.networkextension.app-proxy: RamaAppleNetworkExtension.RamaTransparentProxyProvider
|
com.apple.networkextension.app-proxy: RamaAppleNetworkExtension.RamaTransparentProxyProvider
|
||||||
entitlements:
|
entitlements:
|
||||||
@@ -52,13 +52,13 @@ targets:
|
|||||||
properties:
|
properties:
|
||||||
# Xcode injects these from the profile; we sign by hand, and NE's IPC
|
# Xcode injects these from the profile; we sign by hand, and NE's IPC
|
||||||
# check rejects a caller without them.
|
# check rejects a caller without them.
|
||||||
com.apple.application-identifier: ${TEAM}.ai.strix.firewall.extension
|
com.apple.application-identifier: ${TEAM}.com.usestrix.firewall.extension
|
||||||
com.apple.developer.team-identifier: ${TEAM}
|
com.apple.developer.team-identifier: ${TEAM}
|
||||||
com.apple.developer.networking.networkextension:
|
com.apple.developer.networking.networkextension:
|
||||||
- app-proxy-provider
|
- app-proxy-provider
|
||||||
# NE requires NEMachServiceName to start with one of these.
|
# NE requires NEMachServiceName to start with one of these.
|
||||||
com.apple.security.application-groups:
|
com.apple.security.application-groups:
|
||||||
- ${TEAM}.ai.strix.firewall
|
- ${TEAM}.com.usestrix.firewall
|
||||||
com.apple.security.network.client: true
|
com.apple.security.network.client: true
|
||||||
com.apple.security.network.server: true
|
com.apple.security.network.server: true
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -96,7 +96,7 @@ targets:
|
|||||||
buildPhase: resources
|
buildPhase: resources
|
||||||
settings:
|
settings:
|
||||||
base:
|
base:
|
||||||
PRODUCT_BUNDLE_IDENTIFIER: ai.strix.firewall
|
PRODUCT_BUNDLE_IDENTIFIER: com.usestrix.firewall
|
||||||
info:
|
info:
|
||||||
path: Installer/Info.plist
|
path: Installer/Info.plist
|
||||||
properties:
|
properties:
|
||||||
@@ -107,7 +107,7 @@ targets:
|
|||||||
entitlements:
|
entitlements:
|
||||||
path: Installer/Installer.entitlements
|
path: Installer/Installer.entitlements
|
||||||
properties:
|
properties:
|
||||||
com.apple.application-identifier: ${TEAM}.ai.strix.firewall
|
com.apple.application-identifier: ${TEAM}.com.usestrix.firewall
|
||||||
com.apple.developer.team-identifier: ${TEAM}
|
com.apple.developer.team-identifier: ${TEAM}
|
||||||
com.apple.developer.system-extension.install: true
|
com.apple.developer.system-extension.install: true
|
||||||
com.apple.developer.networking.networkextension:
|
com.apple.developer.networking.networkextension:
|
||||||
|
|||||||
Reference in new issue
Block a user