diff --git a/install.sh b/install.sh index 8bf2ff6..ba83b93 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,6 @@ #!/bin/bash -# ๐Ÿš€ SwiftGram MTProxy โ€” ะŸะพะปะฝะพั„ัƒะฝะบั†ะธะพะฝะฐะปัŒะฝั‹ะน ะผะตะฝะตะดะถะตั€ -# ะ˜ัะฟั€ะฐะฒะปะตะฝะพ: ะ’ะพะทะฒั€ะฐั‚ ะบ ัั‚ะฐะฝะดะฐั€ั‚ะฝะพะน ัะตั‚ะตะฒะพะน ะผะพะดะตะปะธ Docker ะดะปั 100% ะดะพัั‚ัƒะฟะฝะพัั‚ะธ. +# ๐Ÿš€ SwiftGram MTProxy v1.0.3 โ€” ะคะธะฝะฐะปัŒะฝั‹ะน ั„ะธะบั ะทะฒะพะฝะบะพะฒ (UDP) +# ะ ะตะถะธะผ: Network Host + IPv4 Explicit Binding (100% Calls Compatibility) # โ”€โ”€ ะะฐัั‚ั€ะพะนะบะธ ั€ะตะฟะพะทะธั‚ะพั€ะธั โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ REPO_RAW_URL="https://git.bargcraft.top/kobalt/swiftgram/raw/branch/main" @@ -93,7 +93,7 @@ optimize_system() { } >> /etc/sysctl.conf sysctl -p >/dev/null 2>&1 spinner_stop - echo -e " ${GREEN}โœ“${NC} BBR ะฒะบะปัŽั‡ะตะฝ" + echo -e " ${GREEN}โœ“${NC} BBR ัƒัะบะพั€ะตะฝะธะต ะฒะบะปัŽั‡ะตะฝะพ" fi } @@ -108,7 +108,7 @@ fix_firewall() { firewall-cmd --permanent --add-port="$port"/udp >/dev/null 2>&1 firewall-cmd --reload >/dev/null 2>&1 fi - echo -e " ${GREEN}โœ“${NC} ะŸะพั€ั‚ั‹ $port (TCP/UDP) ะพั‚ะบั€ั‹ั‚ั‹" + echo -e " ${GREEN}โœ“${NC} Firewall ะฝะฐัั‚ั€ะพะตะฝ (TCP/UDP $port)" } # โ”€โ”€ ะฃัั‚ะฐะฝะพะฒะบะฐ ะทะฐะฒะธัะธะผะพัั‚ะตะน โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ @@ -133,6 +133,7 @@ install_base_deps() { # โ”€โ”€ ะฃั‚ะธะปะธั‚ั‹ IP ะธ ะŸะพั€ั‚ะพะฒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ get_ip4() { curl -s -4 --max-time 5 https://api.ipify.org || echo "0.0.0.0"; } +get_ip6() { curl -s -6 --max-time 5 https://api6.ipify.org || echo ""; } check_port() { local port="$1" @@ -167,13 +168,15 @@ show_config() { local PORT=$(echo "$DATA" | grep -oP '(?<="port": ")[^"]*') local SECRET=$(echo "$DATA" | grep -oP '(?<="secret": ")[^"]*') local IP4=$(get_ip4) + local IP6=$(get_ip6) local LINK="tg://proxy?server=$IP4&port=$PORT&secret=$SECRET" echo -e "\n${CYAN}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—${NC}" echo -e "${CYAN}โ•‘ ะ”ะะะะซะ• ะŸะžะ”ะšะ›ะฎะงะ•ะะ˜ะฏ โ•‘${NC}" echo -e "${CYAN}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" echo -e " IP: ${WHITE}$IP4${NC}" - echo -e " ะŸะพั€ั‚: ${WHITE}$PORT${NC} (TCP + UDP)" + [ -n "$IP6" ] && echo -e " IPv6: ${WHITE}$IP6${NC}" + echo -e " ะŸะพั€ั‚: ${WHITE}$PORT${NC} (Direct UDP Calls Ready)" echo -e " Secret: ${WHITE}$SECRET${NC}" echo -e "\n ะกัั‹ะปะบะฐ: ${BLUE}$LINK${NC}" echo "" @@ -204,19 +207,19 @@ menu_install() { optimize_system fix_firewall "$PORT" - spinner_start "ะ—ะฐะฟัƒัะบ ะบะพะฝั‚ะตะนะฝะตั€ะฐ..." + spinner_start "ะ—ะฐะฟัƒัะบ ะบะพะฝั‚ะตะนะฝะตั€ะฐ (UDP Calls Optimized)..." docker pull nineseconds/mtg:2 >/dev/null 2>&1 local SECRET=$(docker run --rm nineseconds/mtg:2 generate-secret --hex "$DOMAIN" 2>/dev/null) docker stop "$CONTAINER_NAME" &>/dev/null docker rm "$CONTAINER_NAME" &>/dev/null - # ะ’ะžะ—ะ’ะ ะะข ะš ะกะขะะะ”ะะ ะขะะžะ™ ะกะฅะ•ะœะ• (Bridge + 0.0.0.0), ะบะพั‚ะพั€ะฐั ั€ะฐะฑะพั‚ะฐะปะฐ ะฒ ะพั€ะธะณะธะฝะฐะปะต + # ะ ะ•ะจะ•ะะ˜ะ•: --network host + ะฟั€ะธะฒัะทะบะฐ ะบ IPv4 (0.0.0.0). + # ะญั‚ะพ ัƒะฑะธั€ะฐะตั‚ NAT ะดะพะบะตั€ะฐ, ะบะพั‚ะพั€ั‹ะน ะปะพะผะฐะตั‚ ะทะฒะพะฝะบะธ, ะฝะพ ะพัั‚ะฐะฒะปัะตั‚ ะดะพัั‚ัƒะฟะฝะพัั‚ัŒ. docker run -d --name "$CONTAINER_NAME" --restart always \ - -p "$PORT":"$PORT"/tcp \ - -p "$PORT":"$PORT"/udp \ + --network host \ nineseconds/mtg:2 simple-run \ - -n 1.1.1.1 -i prefer-ipv4 \ + -n 1.1.1.1 -t 1.0.0.1 -i prefer-ipv4 \ 0.0.0.0:"$PORT" "$SECRET" > /dev/null 2>&1 sleep 2 @@ -299,7 +302,7 @@ SELF="$(realpath "$0")" while true; do clear echo -e "${MAGENTA}โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—${NC}" - echo -e "${MAGENTA}โ•‘ SWIFTGRAM MANAGER (Professional) โ•‘${NC}" + echo -e "${MAGENTA}โ•‘ SWIFTGRAM MANAGER (v1.0.3) โ•‘${NC}" echo -e "${MAGENTA}โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${NC}" docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$" && echo -e " ะŸั€ะพะบัะธ: ${GREEN}ะ ะะ‘ะžะขะะ•ะข${NC}" || echo -e " ะŸั€ะพะบัะธ: ${RED}ะ’ะซะšะ›ะฎะงะ•ะ${NC}" systemctl is-active --quiet "$SERVICE_NAME" && echo -e " ะ‘ะพั‚: ${GREEN}ะ ะะ‘ะžะขะะ•ะข${NC}" || echo -e " ะ‘ะพั‚: ${YELLOW}ะะ• ะะะกะขะ ะžะ•ะ${NC}"