sha256:a1acd364a3fda15ca38d5ee6bef866febe2e1eb7cd7e1b5d98e0d7ff89475cd5
Last pushed
9 days by sbx
Type
Sandbox Kit
Manifest digest
sha256:a1acd364a3fda15ca38d5ee6bef866febe2e1eb7cd7e1b5d98e0d7ff89475cd5
schemaVersion: "2"
kind: mixin
name: packages-through-sfw
displayName: Packages through SFW
description: Installs Socket Firewall Free and routes npm, pip, pip3, and python3 -m pip commands through sfw when resolved through PATH.
permissions:
network:
allow:
- github.com:443
- objects.githubusercontent.com:443
- release-assets.githubusercontent.com:443
- api.socket.dev:443
- socket.dev:443
- registry.npmjs.org:443
- pypi.org:443
- files.pythonhosted.org:443
- archive.ubuntu.com:80
- security.ubuntu.com:80
- ports.ubuntu.com:80
- download.docker.com:443
setup:
install:
- command: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl nodejs npm python3-pip && rm -rf /var/lib/apt/lists/*
user: "0"
description: Install package-manager prerequisites
- command: |
set -euo pipefail
SFW_VERSION=1.10.0
case "$(uname -m)" in
x86_64|amd64)
ASSET="sfw-free-linux-x86_64"
SHA256="1ea16f15f1217bde66ac9c7d0262c7126b7bb1b2d60e14e8fa0982456139ae6e"
;;
aarch64|arm64)
ASSET="sfw-free-linux-arm64"
SHA256="d7e969c17e6d23ac1cb0dea81ff87ef9bca2d83570270d91aab14b2a7fb66ad4"
;;
*)
echo "unsupported sandbox arch: $(uname -m) (expected amd64 or arm64)" >&2
exit 1
;;
esac
URL="https://github.com/SocketDev/sfw-free/releases/download/v${SFW_VERSION}/${ASSET}"
curl --proto '=https' --tlsv1.2 -fsSL -o /tmp/sfw "$URL"
echo "${SHA256} /tmp/sfw" | sha256sum -c -
install -m 0755 /tmp/sfw /usr/local/bin/sfw
rm -f /tmp/sfw
sfw --version
user: "0"
description: Install Socket Firewall Free v1.10.0, version+digest pinned
- command: |
set -euo pipefail
mkdir -p /usr/local/lib/packages-through-sfw/shims
cat > /usr/local/lib/packages-through-sfw/shims/npm <<'SCRIPT'
#!/bin/sh
PATH="/usr/sbin:/usr/bin:/sbin:/bin" exec /usr/local/bin/sfw npm "$@"
SCRIPT
cat > /usr/local/lib/packages-through-sfw/shims/pip <<'SCRIPT'
#!/bin/sh
exec env -u PIP_CERT -u REQUESTS_CA_BUNDLE -u SSL_CERT_FILE PATH="/usr/sbin:/usr/bin:/sbin:/bin" /usr/local/bin/sfw pip "$@"
SCRIPT
cat > /usr/local/lib/packages-through-sfw/shims/pip3 <<'SCRIPT'
#!/bin/sh
exec env -u PIP_CERT -u REQUESTS_CA_BUNDLE -u SSL_CERT_FILE PATH="/usr/sbin:/usr/bin:/sbin:/bin" /usr/local/bin/sfw pip3 "$@"
SCRIPT
cat > /usr/local/lib/packages-through-sfw/shims/python3 <<'SCRIPT'
#!/bin/sh
if [ "$1" = "-m" ] && [ "$2" = "pip" ]; then
shift 2
exec env -u PIP_CERT -u REQUESTS_CA_BUNDLE -u SSL_CERT_FILE PATH="/usr/sbin:/usr/bin:/sbin:/bin" /usr/local/bin/sfw pip "$@"
fi
PATH="/usr/sbin:/usr/bin:/sbin:/bin" exec python3 "$@"
SCRIPT
install -m 0755 /usr/local/lib/packages-through-sfw/shims/npm /usr/local/bin/npm
install -m 0755 /usr/local/lib/packages-through-sfw/shims/pip /usr/local/bin/pip
install -m 0755 /usr/local/lib/packages-through-sfw/shims/pip3 /usr/local/bin/pip3
install -m 0755 /usr/local/lib/packages-through-sfw/shims/python3 /usr/local/bin/python3
cat > /etc/profile.d/packages-through-sfw.sh <<'SCRIPT'
# Route package-manager installs through Socket Firewall Free.
if [ -x /usr/local/bin/npm ]; then
npm() { /usr/local/bin/npm "$@"; }
fi
if [ -x /usr/local/bin/pip ]; then
pip() { /usr/local/bin/pip "$@"; }
fi
if [ -x /usr/local/bin/pip3 ]; then
pip3() { /usr/local/bin/pip3 "$@"; }
fi
SCRIPT
chmod 0644 /etc/profile.d/packages-through-sfw.sh
user: "0"
description: Configure sfw PATH shims and shell wrappers
- command: |
set -euo pipefail
grep -qF '/etc/profile.d/packages-through-sfw.sh' ~/.bashrc 2>/dev/null || \
printf '\n# Packages through SFW wrappers (added by sbx-kits-contrib/packages-through-sfw)\n[ -f /etc/profile.d/packages-through-sfw.sh ] && . /etc/profile.d/packages-through-sfw.sh\n' >> ~/.bashrc
user: "1000"
description: Source sfw wrappers from ~/.bashrc for interactive Bash shells