/ appimage / AppRun
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" "$@"