Skill: qiangwang375-wq/v2rayn (version 1.0.0)

# V2RayN Skill Manage V2RayN proxy client on macOS with auto-failover. ## Overview V2RayN is a V2Ray client for macOS. This skill helps manage nodes, test connections, auto-check for failures, and update subscriptions. ## Quick Status Check ```bash # Check if V2RayN is running ps aux | grep -i v2rayN | grep -v grep # Check listening ports lsof -i :10808 -i :10809 -i :10810 -i :7890 -i :7891 2>/dev/null # Test connection curl -s --max-time 5 https://www.google.com -w "\nStatus: %{http_code}\n" ``` ## Auto-Check Node Health (Every 30 min) This skill automatically: 1. Check if current node is working 2. If failed, update subscription 3. Select a new working node ### Implementation Create a cron job: ``` */30 * * * * /path/to/check_v2rayn.sh ``` ### Check Script ```bash #!/bin/bash # check_v2rayn.sh - Auto-check and failover for V2RayN LOG_FILE="$HOME/.openclaw/logs/v2rayn_check.log" CONFIG_DIR="$HOME/Library/Application Support/v2rayN/guiConfigs" MAIN_CONFIG="$CONFIG_DIR/guiNConfig.json" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } # Test connection test_connection() { curl -s --max-time 5 -x socks5://127.0.0.1:10808 https://www.google.com -o /dev/null -w "%{http_code}" 2>/dev/null } # Get current node info get_current_node() { python3 -c " import json with open('$MAIN_CONFIG') as f: d = json.load(f) idx = d.get('currentServerIndex') if idx is not None: servers = d.get('vmess',[]) + d.get('vless',[]) + d.get('trojan',[]) if idx < len(servers): print(servers[idx].get('remarks', 'Unknown')) else: print('Invalid index') else: print('No server selected') " 2>/dev/null } # Main check log "=== Starting V2RayN health check ===" # Test current connection RESULT=$(test_connection) log "Connection test result: $RESULT" if [ "$RESULT" = "200" ]; then log "✅ Node is working: $(get_current_node)" exit 0 else log "❌ Node failed! Trying to recover..." # Try to update subscription log "Updating subscription..." # Note: V2RayN CLI is limited, manual or external script needed log "Please manually:" log "1. Open V2RayN" log "2. Update subscription" log "3. Select a new node" # Notify user echo "⚠️ V2RayN node failed! Please check manually." exit 1 fi ``` ## Manual Commands ### 1. Check Node Status ```bash # Test all common proxy ports for port in 10808 10809 10810 7890 7891; do result=$(curl -s --max-time 3 -x socks5://127.0.0.1:$port https://www.google.com -w "%{http_code}" 2>/dev/null) echo "Port $port: $result" done ``` ### 2. List All Nodes ```bash cat ~/Library/Application\ Support/v2rayN/guiConfigs/guiNConfig.json | python3 -c " import json,sys d=json.load(sys.stdin) servers = d.get('vmess',[]) + d.get('vless',[]) + d.get('trojan',[]) + d.get('shadowsocks',[]) print(f'Total nodes: {len(servers)}') for i, s in enumerate(servers): print(f'{i+1}. {s.get(\"remarks\", s.get(\"name\", \"Unnamed\"))}') " ``` ### 3. Get Current Node ```bash python3 -c " import json with open('$HOME/Library/Application Support/v2rayN/guiConfigs/guiNConfig.json') as f: d = json.load(f) idx = d.get('currentServerIndex') if idx: servers = d.get('vmess',[]) + d.get('vless',[]) + d.get('trojan',[]) if idx < len(servers): s = servers[idx] print(f'Current: {s.get(\"remarks\", \"Unknown\")}') print(f'Protocol: {s.get(\"protocol\", \"trojan\")}') " ``` ### 4. Test Specific Node ```bash # Test current node curl -s --max-time 5 -x socks5://127.0.0.1:10808 https://www.google.com # Test direct curl -s --max-time 5 https://www.google.com ``` ### 5. View Logs ```bash ls -la ~/Library/Application\ Support/v2rayN/guiLogs/ tail -50 ~/Library/Application\ Support/v2rayN/guiLogs/*.log 2>/dev/null | tail -30 ``` ### 6. Restart V2RayN ```bash # Kill and restart pkill -f v2rayN open /Applications/v2rayN.app ``` ### 7. Force Update Subscription Note: V2RayN doesn't have a CLI for subscription update. You'll need to: 1. Open V2RayN GUI 2. Click "Update" on your subscription ## Configuration Files | File | Description | |------|-------------| | `guiNConfig.json` | Main GUI config (nodes, settings) | | `config.json` | V2Ray/Xray runtime config | | `configPre.json` | Sing-box config (if using TUN mode) | ## Troubleshooting ### Node Not Working 1. Check logs: `tail -50 ~/Library/Application Support/v2rayN/guiLogs/*.log` 2. Test port: `lsof -i :10808` 3. Try different node in GUI 4. Update subscription ### All Nodes Invalid - Import new subscription - Or add nodes manually in GUI ### TUN Mode Not Working - Check if TUN interface exists: `ifconfig | grep -i tun` - Check configPre.json for TUN settings

path: _meta.json
content: slug: v2rayn
version: 1.0.0

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)