Initial commit: StreamFlow IPTV platform
This commit is contained in:
commit
73a8ae9ffd
1240 changed files with 278451 additions and 0 deletions
134
scripts/test-vpn.sh
Executable file
134
scripts/test-vpn.sh
Executable file
|
|
@ -0,0 +1,134 @@
|
|||
#!/bin/bash
|
||||
|
||||
# VPN Test Script - Quick verification that VPN is working properly
|
||||
# Run this inside the Docker container
|
||||
|
||||
echo "========================================="
|
||||
echo " VPN Connection Test"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Test 1: Check VPN Interface
|
||||
echo "1. Checking VPN Interface (tun0)..."
|
||||
if ip addr show tun0 &>/dev/null; then
|
||||
echo -e "${GREEN}✓${NC} VPN interface (tun0) is UP"
|
||||
ip addr show tun0 | grep "inet " | awk '{print " IP: " $2}'
|
||||
else
|
||||
echo -e "${RED}✗${NC} VPN interface (tun0) NOT FOUND"
|
||||
echo " VPN is not connected!"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Test 2: Check Routing
|
||||
echo "2. Checking Routing Table..."
|
||||
DEFAULT_ROUTE=$(ip route | grep default)
|
||||
echo " $DEFAULT_ROUTE"
|
||||
if echo "$DEFAULT_ROUTE" | grep -q "tun"; then
|
||||
echo -e "${GREEN}✓${NC} Traffic is routed through VPN"
|
||||
else
|
||||
echo -e "${RED}✗${NC} Traffic is NOT routed through VPN"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Test 3: Check DNS
|
||||
echo "3. Checking DNS Configuration..."
|
||||
DNS_SERVERS=$(grep "^nameserver" /etc/resolv.conf | awk '{print $2}')
|
||||
echo " DNS Servers: $DNS_SERVERS"
|
||||
if echo "$DNS_SERVERS" | grep -q "10.2.0"; then
|
||||
echo -e "${GREEN}✓${NC} Using VPN DNS servers"
|
||||
elif echo "$DNS_SERVERS" | grep -E "8.8.8.8|1.1.1.1|8.8.4.4|1.0.0.1" &>/dev/null; then
|
||||
echo -e "${RED}✗${NC} DNS LEAK: Using public DNS servers"
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} Using unknown DNS servers"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Test 4: Check Public IP
|
||||
echo "4. Checking Public IP Address..."
|
||||
PUBLIC_IP=$(curl -s --max-time 10 https://api.ipify.org 2>/dev/null)
|
||||
if [ -z "$PUBLIC_IP" ]; then
|
||||
echo -e "${RED}✗${NC} Could not determine public IP"
|
||||
else
|
||||
echo " Public IP: $PUBLIC_IP"
|
||||
|
||||
# Get IP info
|
||||
IP_INFO=$(curl -s --max-time 10 https://ipinfo.io/$PUBLIC_IP/json 2>/dev/null)
|
||||
if [ ! -z "$IP_INFO" ]; then
|
||||
COUNTRY=$(echo "$IP_INFO" | grep -o '"country": "[^"]*' | cut -d'"' -f4)
|
||||
CITY=$(echo "$IP_INFO" | grep -o '"city": "[^"]*' | cut -d'"' -f4)
|
||||
ORG=$(echo "$IP_INFO" | grep -o '"org": "[^"]*' | cut -d'"' -f4)
|
||||
|
||||
echo " Location: $CITY, $COUNTRY"
|
||||
echo " ISP: $ORG"
|
||||
|
||||
if echo "$ORG" | grep -iq "proton\|vpn"; then
|
||||
echo -e "${GREEN}✓${NC} IP appears to be from VPN provider"
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} IP may not be from VPN provider"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Test 5: Check OpenVPN Process
|
||||
echo "5. Checking OpenVPN Process..."
|
||||
if pgrep -f "openvpn.*config" &>/dev/null; then
|
||||
echo -e "${GREEN}✓${NC} OpenVPN process is running"
|
||||
ps aux | grep "[o]penvpn.*config" | awk '{print " PID: " $2}'
|
||||
else
|
||||
echo -e "${RED}✗${NC} OpenVPN process NOT found"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Test 6: Check iptables rules
|
||||
echo "6. Checking Firewall Rules..."
|
||||
VPN_RULES=$(iptables -L OUTPUT -n | grep -c "tun")
|
||||
if [ "$VPN_RULES" -gt 0 ]; then
|
||||
echo -e "${GREEN}✓${NC} VPN firewall rules are active ($VPN_RULES rules)"
|
||||
else
|
||||
echo -e "${YELLOW}⚠${NC} No VPN-specific firewall rules found"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Summary
|
||||
echo "========================================="
|
||||
echo " Summary"
|
||||
echo "========================================="
|
||||
|
||||
ISSUES=0
|
||||
|
||||
if ! ip addr show tun0 &>/dev/null; then
|
||||
echo -e "${RED}✗${NC} VPN interface not found"
|
||||
ISSUES=$((ISSUES + 1))
|
||||
fi
|
||||
|
||||
if ! ip route | grep default | grep -q "tun"; then
|
||||
echo -e "${RED}✗${NC} Traffic not routed through VPN"
|
||||
ISSUES=$((ISSUES + 1))
|
||||
fi
|
||||
|
||||
if ! grep "^nameserver" /etc/resolv.conf | grep -q "10.2.0"; then
|
||||
echo -e "${RED}✗${NC} Not using VPN DNS"
|
||||
ISSUES=$((ISSUES + 1))
|
||||
fi
|
||||
|
||||
if [ $ISSUES -eq 0 ]; then
|
||||
echo -e "${GREEN}✓ VPN appears to be working correctly!${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Found $ISSUES issue(s) with VPN connection${NC}"
|
||||
echo ""
|
||||
echo "Troubleshooting steps:"
|
||||
echo "1. Check if VPN is connected in the web UI"
|
||||
echo "2. Try disconnecting and reconnecting"
|
||||
echo "3. Check backend logs: docker logs streamflow"
|
||||
echo "4. Try a different VPN server/country"
|
||||
echo "5. See docs/VPN_TROUBLESHOOTING.md for detailed help"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
Loading…
Add table
Add a link
Reference in a new issue