mirror of
https://github.com/PR0M3TH3AN/VoxVera.git
synced 2025-09-07 06:28:43 +00:00
update
This commit is contained in:
90
voxvera-install.sh
Normal file
90
voxvera-install.sh
Normal file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env bash
|
||||
# --------------------------------------------------------------------
|
||||
# VoxVera all-in-one installer (Linux) – run once as a normal user.
|
||||
# Installs system deps, Tor + OnionShare, npm helpers, and VoxVera itself.
|
||||
# --------------------------------------------------------------------
|
||||
set -euo pipefail
|
||||
|
||||
## -------- helper functions -----------------------------------------
|
||||
command_exists() { command -v "$1" &>/dev/null; }
|
||||
|
||||
msg() { printf "\e[32m%s\e[0m\n" "$*"; }
|
||||
warn() { printf "\e[33m%s\e[0m\n" "$*" >&2; }
|
||||
die() { printf "\e[31mERROR: %s\e[0m\n" "$*" >&2; exit 1; }
|
||||
|
||||
## -------- determine package manager --------------------------------
|
||||
if command_exists apt-get; then PM=apt ; UPDATE="sudo apt-get update" ; INSTALL="sudo apt-get install -y"
|
||||
elif command_exists dnf; then PM=dnf ; UPDATE="sudo dnf -y makecache" ; INSTALL="sudo dnf install -y"
|
||||
elif command_exists yum; then PM=yum ; UPDATE="sudo yum makecache" ; INSTALL="sudo yum install -y"
|
||||
elif command_exists pacman; then PM=pacman; UPDATE="sudo pacman -Sy" ; INSTALL="sudo pacman -S --noconfirm"
|
||||
elif command_exists apk; then PM=apk ; UPDATE="sudo apk update" ; INSTALL="sudo apk add --no-cache"
|
||||
else die "Unsupported distro – can’t find apt/yum/dnf/pacman/apk."
|
||||
fi
|
||||
|
||||
msg ">> Detected package manager: $PM"
|
||||
|
||||
## -------- install system packages ----------------------------------
|
||||
SYSTEM_PKGS=(torsocks tor jq qrencode imagemagick poppler-utils curl wget)
|
||||
# OnionShare package name differs per repo:
|
||||
[[ $PM =~ (apt|dnf|yum) ]] && SYSTEM_PKGS+=(onionshare-cli) || SYSTEM_PKGS+=(onionshare)
|
||||
|
||||
$UPDATE && $INSTALL "${SYSTEM_PKGS[@]}"
|
||||
|
||||
# node / npm
|
||||
if ! command_exists node || ! command_exists npm; then
|
||||
msg ">> Installing Node.js / npm"
|
||||
$INSTALL nodejs npm
|
||||
fi
|
||||
|
||||
# npm global helpers (obfuscator + minifier)
|
||||
for pkg in javascript-obfuscator html-minifier-terser; do
|
||||
if ! command_exists "$pkg"; then
|
||||
sudo npm install -g "$pkg"
|
||||
fi
|
||||
done
|
||||
|
||||
## -------- install VoxVera (prefers pipx, falls back) ---------------
|
||||
install_voxvera() {
|
||||
if command_exists pipx; then
|
||||
pipx install --force voxvera && return 0
|
||||
fi
|
||||
# fallback: binary
|
||||
local install_dir="$HOME/.local/bin"
|
||||
mkdir -p "$install_dir"
|
||||
local url latest dest="$install_dir/voxvera"
|
||||
url=$(curl -fsSLI -o /dev/null -w '%{url_effective}' \
|
||||
https://github.com/PR0M3TH3AN/VoxVera/releases/latest)
|
||||
latest="${url%/}" ; latest="${latest##*/}" # vX.Y.Z tag
|
||||
url="https://github.com/PR0M3TH3AN/VoxVera/releases/download/${latest/\/}/voxvera"
|
||||
if curl -fsSL "$url" -o "$dest"; then
|
||||
chmod +x "$dest"
|
||||
PATH="$install_dir:$PATH"
|
||||
return 0
|
||||
fi
|
||||
# fallback: pip
|
||||
pip install --user voxvera
|
||||
}
|
||||
|
||||
msg ">> Installing VoxVera"
|
||||
install_voxvera || die "VoxVera installation failed"
|
||||
|
||||
## -------- minimal Tor config ( socks 9050 / ctl 9051 ) --------------
|
||||
TOR_DIR="$HOME/.voxvera"
|
||||
mkdir -p "$TOR_DIR"
|
||||
cat > "$TOR_DIR/torrc" <<EOF
|
||||
SOCKSPort 9050
|
||||
ControlPort 9051
|
||||
CookieAuthentication 1
|
||||
EOF
|
||||
|
||||
# enable + start tor via systemctl if available
|
||||
if command_exists systemctl; then
|
||||
sudo systemctl enable tor || true
|
||||
sudo systemctl restart tor
|
||||
fi
|
||||
|
||||
msg "------------------------------------------------------------------"
|
||||
msg " VoxVera install finished!"
|
||||
msg " Tor rc file : $TOR_DIR/torrc"
|
||||
msg " Make sure \$HOME/.local/bin is in your PATH."
|
||||
msg "------------------------------------------------------------------"
|
42
voxvera-run.sh
Normal file
42
voxvera-run.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
# --------------------------------------------------------------------
|
||||
# VoxVera runtime launcher – check Tor, fire up OnionShare + VoxVera
|
||||
# --------------------------------------------------------------------
|
||||
set -euo pipefail
|
||||
TOR_SOCKS_PORT=${TOR_SOCKS_PORT:-9050}
|
||||
TOR_CONTROL_PORT=${TOR_CONTROL_PORT:-9051}
|
||||
TORRC="$HOME/.voxvera/torrc"
|
||||
|
||||
command_exists() { command -v "$1" &>/dev/null; }
|
||||
die() { printf "\e[31m%s\e[0m\n" "$*" >&2; exit 1; }
|
||||
|
||||
## -------- ensure tor is running ------------------------------------
|
||||
tor_ok() {
|
||||
# quick check: can we connect to socks port?
|
||||
(exec 3<>/dev/tcp/127.0.0.1/$TOR_SOCKS_PORT) 2>/dev/null
|
||||
}
|
||||
|
||||
if ! tor_ok; then
|
||||
echo ">> Tor isn’t running – attempting to start it..."
|
||||
if command_exists systemctl; then
|
||||
sudo systemctl start tor.service || true
|
||||
sleep 3
|
||||
fi
|
||||
if ! tor_ok; then
|
||||
# fallback: foreground tor (detached)
|
||||
tor -f "$TORRC" --hush &>/dev/null &
|
||||
sleep 5
|
||||
tor_ok || die "Tor failed to start – check $TORRC"
|
||||
fi
|
||||
fi
|
||||
echo ">> Tor OK on ports $TOR_SOCKS_PORT / $TOR_CONTROL_PORT"
|
||||
|
||||
export TOR_SOCKS_PORT TOR_CONTROL_PORT
|
||||
|
||||
## -------- launch VoxVera -------------------------------------------
|
||||
if ! command_exists voxvera; then
|
||||
die "voxvera not in PATH – did you complete the install?"
|
||||
fi
|
||||
|
||||
echo ">> Running VoxVera quickstart (non-interactive)"
|
||||
voxvera quickstart --non-interactive
|
Reference in New Issue
Block a user