AppRun
1 #!/bin/bash 2 SELF_DIR="$(dirname "$(readlink -f "$0")")" 3 4 export CRAD_HOME="${CRAD_HOME:-$HOME/.cradicle}" 5 export RAD_HOME="${RAD_HOME:-$HOME/.radicle}" 6 export WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1 7 export PATH="$SELF_DIR/usr/bin:$PATH" 8 export TORSOCKS_LIBRARY="$SELF_DIR/usr/lib/torsocks/libtorsocks.so" 9 10 if [ -d /usr/share/glib-2.0/schemas ]; then 11 export GSETTINGS_SCHEMA_DIR="/usr/share/glib-2.0/schemas${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}" 12 fi 13 14 if ! command -v python3 >/dev/null 2>&1; then 15 echo "Error: python3 is required but not found on PATH" >&2 16 exit 1 17 fi 18 19 # Create CRAD_HOME directory structure 20 mkdir -p "$CRAD_HOME/bin" "$CRAD_HOME/lib" "$CRAD_HOME/log" "$CRAD_HOME/node" 21 for f in "$SELF_DIR/usr/share/cradicle/bin/"*; do 22 ln -sf "$f" "$CRAD_HOME/bin/$(basename "$f")" 23 done 24 25 # Symlink shared libraries into CRAD_HOME/lib 26 for f in "$SELF_DIR/usr/lib/"*.so*; do 27 ln -sf "$f" "$CRAD_HOME/lib/$(basename "$f")" 28 done 29 30 # Copy rad binaries into RAD_HOME/bin (not symlink — must work inside bwrap sandbox) 31 mkdir -p "$RAD_HOME/bin" "$RAD_HOME/lib" 32 for f in "$SELF_DIR/usr/share/cradicle/rad-bin/"*; do 33 cp -u "$f" "$RAD_HOME/bin/$(basename "$f")" 34 done 35 cp -u "$SELF_DIR/usr/bin/torsocks" "$RAD_HOME/bin/torsocks" 36 cp -uL "$SELF_DIR/usr/lib/torsocks/libtorsocks.so" "$RAD_HOME/lib/libtorsocks.so" 37 38 # Start Tor if not already running on port 9050 39 if ! (echo > /dev/tcp/127.0.0.1/9050) 2>/dev/null; then 40 mkdir -p "$CRAD_HOME/tor/data" 41 mkdir -p "$CRAD_HOME/tor/hidden_service" 42 chmod 700 "$CRAD_HOME/tor/hidden_service" 43 printf "SocksPort 9050\nDataDirectory %s/tor/data\nLog notice file %s/log/tor.log\n" \ 44 "$CRAD_HOME" "$CRAD_HOME" > "$CRAD_HOME/tor/torrc" 45 printf "HiddenServiceDir %s/tor/hidden_service\n" "$CRAD_HOME" >> "$CRAD_HOME/tor/torrc" 46 printf "HiddenServicePort 8776 127.0.0.1:8776\n" >> "$CRAD_HOME/tor/torrc" 47 printf "HiddenServicePort 8777 127.0.0.1:8777\n" >> "$CRAD_HOME/tor/torrc" 48 printf "HiddenServicePort 8778 127.0.0.1:8778\n" >> "$CRAD_HOME/tor/torrc" 49 "$SELF_DIR/usr/bin/tor" -f "$CRAD_HOME/tor/torrc" > /dev/null 2>&1 & 50 tor_pid=$! 51 fi 52 53 cleanup() { 54 [ -n "$tor_pid" ] && kill "$tor_pid" 2>/dev/null 55 } 56 trap cleanup EXIT 57 58 "$SELF_DIR/usr/bin/crad-gui" "$@"