diff --git a/cnc-olcrtc.sh b/cnc-olcrtc.sh new file mode 100755 index 0000000..063a4c3 --- /dev/null +++ b/cnc-olcrtc.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +set -e + +CONTAINER_NAME="olcrtc-client" +IMAGE_NAME="golang:1.23-alpine" +REPO_URL="https://github.com/zarazaex69/olcrtc.git" +WORK_DIR="/tmp/olcrtc-client" +SOCKS_PORT="8808" + +echo "=== OlcRTC Client Deployment Script ===" +echo "" + +if command -v podman &> /dev/null; then + RUNTIME="podman" + echo "[+] Using Podman" +elif command -v docker &> /dev/null; then + RUNTIME="docker" + echo "[+] Using Docker" +else + echo "[!] Installing container runtime..." + + if command -v apt &> /dev/null; then + echo "[*] Detected apt (Debian/Ubuntu)" + sudo apt update + sudo apt install -y podman + RUNTIME="podman" + elif command -v dnf &> /dev/null; then + echo "[*] Detected dnf (Fedora/RHEL)" + sudo dnf install -y podman + RUNTIME="podman" + elif command -v yum &> /dev/null; then + echo "[*] Detected yum (CentOS/RHEL)" + sudo yum install -y podman + RUNTIME="podman" + elif command -v pacman &> /dev/null; then + echo "[*] Detected pacman (Arch)" + sudo pacman -Sy --noconfirm podman + RUNTIME="podman" + else + echo "[X] Unsupported package manager. Install podman or docker manually." + exit 1 + fi +fi + +echo "" +read -p "Enter Telemost Room ID: " ROOM_ID + +if [ -z "$ROOM_ID" ]; then + echo "[X] Room ID cannot be empty" + exit 1 +fi + +echo "" +read -p "Enter Encryption Key (hex): " KEY + +if [ -z "$KEY" ]; then + echo "[X] Encryption key cannot be empty" + exit 1 +fi + +echo "" +read -p "SOCKS5 port [default: 8808]: " PORT_INPUT +SOCKS_PORT=${PORT_INPUT:-8808} + +echo "" +echo "[*] Stopping old instance..." +$RUNTIME stop $CONTAINER_NAME 2>/dev/null || true +$RUNTIME rm $CONTAINER_NAME 2>/dev/null || true + +echo "[*] Cleaning workspace..." +rm -rf $WORK_DIR +mkdir -p $WORK_DIR + +echo "[*] Cloning repository..." +git clone --depth 1 $REPO_URL $WORK_DIR + +echo "[*] Pulling Go image..." +$RUNTIME pull $IMAGE_NAME + +echo "[*] Building OlcRTC..." +$RUNTIME run --rm \ + -v $WORK_DIR:/app:Z \ + -w /app \ + $IMAGE_NAME \ + sh -c "apk add --no-cache git && go build -o olcrtc cmd/olcrtc/main.go" + +if [ ! -f "$WORK_DIR/olcrtc" ]; then + echo "[X] Build failed" + exit 1 +fi + +echo "[*] Starting OlcRTC client..." +$RUNTIME run -d \ + --name $CONTAINER_NAME \ + --restart unless-stopped \ + -p 127.0.0.1:$SOCKS_PORT:$SOCKS_PORT \ + -v $WORK_DIR:/app:Z \ + -w /app \ + $IMAGE_NAME \ + ./olcrtc -mode cnc -id "$ROOM_ID" -key "$KEY" -socks-port $SOCKS_PORT + +sleep 2 + +echo "" +echo "[+] Client started successfully!" +echo "" +echo "Container name: $CONTAINER_NAME" +echo "Room ID: $ROOM_ID" +echo "SOCKS5 proxy: 127.0.0.1:$SOCKS_PORT" +echo "" +echo "View logs:" +echo " $RUNTIME logs -f $CONTAINER_NAME" +echo "" +echo "Stop client:" +echo " $RUNTIME stop $CONTAINER_NAME" +echo "" +echo "Test proxy:" +echo " export all_proxy=socks5h://127.0.0.1:$SOCKS_PORT" +echo " curl -fsSL https://ifconfig.me" +echo "" diff --git a/run-olcrtc.sh b/run-olcrtc.sh new file mode 100755 index 0000000..d495960 --- /dev/null +++ b/run-olcrtc.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +set -e + +CONTAINER_NAME="olcrtc-server" +IMAGE_NAME="golang:1.23-alpine" +REPO_URL="https://github.com/zarazaex69/olcrtc.git" +WORK_DIR="/tmp/olcrtc-deploy" + +echo "=== OlcRTC Server Deployment Script ===" +echo "" + +if command -v podman &> /dev/null; then + RUNTIME="podman" + echo "[+] Using Podman" +elif command -v docker &> /dev/null; then + RUNTIME="docker" + echo "[+] Using Docker" +else + echo "[!] Installing container runtime..." + + if command -v apt &> /dev/null; then + echo "[*] Detected apt (Debian/Ubuntu)" + sudo apt update + sudo apt install -y podman + RUNTIME="podman" + elif command -v dnf &> /dev/null; then + echo "[*] Detected dnf (Fedora/RHEL)" + sudo dnf install -y podman + RUNTIME="podman" + elif command -v yum &> /dev/null; then + echo "[*] Detected yum (CentOS/RHEL)" + sudo yum install -y podman + RUNTIME="podman" + elif command -v pacman &> /dev/null; then + echo "[*] Detected pacman (Arch)" + sudo pacman -Sy --noconfirm podman + RUNTIME="podman" + else + echo "[X] Unsupported package manager. Install podman or docker manually." + exit 1 + fi +fi + +echo "" +read -p "Enter Telemost Room ID: " ROOM_ID + +if [ -z "$ROOM_ID" ]; then + echo "[X] Room ID cannot be empty" + exit 1 +fi + +echo "" +echo "[*] Stopping old instance..." +$RUNTIME stop $CONTAINER_NAME 2>/dev/null || true +$RUNTIME rm $CONTAINER_NAME 2>/dev/null || true + +echo "[*] Cleaning workspace..." +rm -rf $WORK_DIR +mkdir -p $WORK_DIR + +echo "[*] Cloning repository..." +git clone --depth 1 $REPO_URL $WORK_DIR + +echo "[*] Pulling Go image..." +$RUNTIME pull $IMAGE_NAME + +echo "[*] Building OlcRTC..." +$RUNTIME run --rm \ + -v $WORK_DIR:/app:Z \ + -w /app \ + $IMAGE_NAME \ + sh -c "apk add --no-cache git && go build -o olcrtc cmd/olcrtc/main.go" + +if [ ! -f "$WORK_DIR/olcrtc" ]; then + echo "[X] Build failed" + exit 1 +fi + +echo "[*] Generating encryption key..." +KEY=$(openssl rand -hex 32) +echo "" +echo "==========================================" +echo "ENCRYPTION KEY (save this!):" +echo "$KEY" +echo "==========================================" +echo "" + +echo "[*] Starting OlcRTC server..." +$RUNTIME run -d \ + --name $CONTAINER_NAME \ + --restart unless-stopped \ + -v $WORK_DIR:/app:Z \ + -w /app \ + $IMAGE_NAME \ + ./olcrtc -mode srv -id "$ROOM_ID" -key "$KEY" + +sleep 2 + +echo "" +echo "[+] Server started successfully!" +echo "" +echo "Container name: $CONTAINER_NAME" +echo "Room ID: $ROOM_ID" +echo "Encryption key: $KEY" +echo "" +echo "View logs:" +echo " $RUNTIME logs -f $CONTAINER_NAME" +echo "" +echo "Stop server:" +echo " $RUNTIME stop $CONTAINER_NAME" +echo "" +echo "Client command:" +echo " ./olcrtc -mode cnc -id \"$ROOM_ID\" -key \"$KEY\" -socks-port 1080" +echo ""