├── install.sh └── readme.md /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #add color for text 4 | RED='\033[0;31m' 5 | GREEN='\033[0;32m' 6 | YELLOW='\033[0;33m' 7 | plain='\033[0m' 8 | NC='\033[0m' # No Color 9 | 10 | 11 | cur_dir=$(pwd) 12 | # check root 13 | [[ $EUID -ne 0 ]] && echo -e "${RED}Fatal error: ${plain} Please run this script with root privilege \n " && exit 1 14 | 15 | install_jq() { 16 | if ! command -v jq &> /dev/null; then 17 | # Check if the system is using apt package manager 18 | if command -v apt-get &> /dev/null; then 19 | echo -e "${RED}jq is not installed. Installing...${NC}" 20 | sleep 1 21 | sudo apt-get update 22 | sudo apt-get install -y jq 23 | else 24 | echo -e "${RED}Error: Unsupported package manager. Please install jq manually.${NC}\n" 25 | read -p "Press any key to continue..." 26 | exit 1 27 | fi 28 | fi 29 | } 30 | 31 | init(){ 32 | install_jq 33 | # apt update && apt upgrade -y 34 | sudo apt-get install iproute2 35 | run_screen 36 | } 37 | 38 | loader(){ 39 | 40 | gv_menu "| 1 - Config Tunnel \n| 2 - Unistall\n| 0 - Exit" 41 | 42 | read -p "Enter option number: " choice 43 | case $choice in 44 | 1) 45 | install_tunnel 46 | ;; 47 | 2) 48 | unistall 49 | ;; 50 | 0) 51 | echo -e "${GREEN}Exiting program...${NC}" 52 | exit 0 53 | ;; 54 | *) 55 | echo "Not valid" 56 | ;; 57 | esac 58 | 59 | } 60 | 61 | gv_menu(){ 62 | init 63 | clear 64 | 65 | # Get server IP 66 | SERVER_IP=$(hostname -I | awk '{print $1}') 67 | 68 | # Fetch server country using ip-api.com 69 | SERVER_COUNTRY=$(curl -sS "http://ip-api.com/json/$SERVER_IP" | jq -r '.country') 70 | 71 | # Fetch server isp using ip-api.com 72 | SERVER_ISP=$(curl -sS "http://ip-api.com/json/$SERVER_IP" | jq -r '.isp') 73 | 74 | GV_CORE=$(check_core_status) 75 | 76 | echo "+-------------------------------------------------------------------------------+" 77 | echo "| |" 78 | echo "| _____ __ __ _______ _ _ _ _ _ _ ______ _ |" 79 | echo "| / ____|\ \ / /|__ __|| | | || \ | || \ | || ____|| | |" 80 | echo "| | | __ \ \ / / | | | | | || \| || \| || |__ | | |" 81 | echo "| | | |_ | \ \/ / | | | | | || || || __| | | |" 82 | echo "| | |__| | \ / | | | |__| || |\ || |\ || |____ | |____ ( V2.3 ) |" 83 | echo "| \_____| \/ |_| \____/ |_| \_||_| \_||______||______| |" 84 | echo "| |" 85 | echo "+-------------------------------------------------------------------------------+" 86 | echo -e "|${GREEN}Server Country |${NC} $SERVER_COUNTRY" 87 | echo -e "|${GREEN}Server IP |${NC} $SERVER_IP" 88 | echo -e "|${GREEN}Server ISP |${NC} $SERVER_ISP" 89 | echo -e "|${GREEN}Server Tunnel |${NC} $GV_CORE" 90 | echo "+--------------------------------------------------------------------------------+" 91 | echo -e "|${YELLOW}Please choose an option:${NC}" 92 | echo "+--------------------------------------------------------------------------------+" 93 | echo -e $1 94 | echo "+---------------------------------------------------------------------------------+" 95 | echo -e "\033[0m" 96 | } 97 | 98 | 99 | 100 | install_tunnel(){ 101 | gv_menu "| 1 - IRAN \n| 2 - Kharej \n| 0 - Exit" 102 | 103 | read -p "Enter option number: " setup 104 | 105 | case $setup in 106 | 1) 107 | iran_setup 108 | ;; 109 | 2) 110 | kharej_setup 111 | ;; 112 | 0) 113 | echo -e "${GREEN}Exiting program...${NC}" 114 | exit 0 115 | ;; 116 | *) 117 | echo "Not valid" 118 | ;; 119 | esac 120 | 121 | } 122 | 123 | 124 | iran_setup(){ 125 | 126 | read -p "Enter IRAN IP : " iran_ip 127 | read -p "Enter Kharej IP : " kharej_ip 128 | read -p "Enter IPv6 Local : " ipv6_local 129 | 130 | # read -p "Enter Kharej Ports ( comma seperate ) : " kharej_port 131 | 132 | cat < /etc/netplan/dev-ir.yaml 133 | network: 134 | version: 2 135 | tunnels: 136 | tunnel0858: 137 | mode: sit 138 | local: $iran_ip 139 | remote: $kharej_ip 140 | addresses: 141 | - $ipv6_local::1/64 142 | EOL 143 | netplan_setup 144 | sudo netplan apply 145 | 146 | cat < /root/connector.sh 147 | ping $ipv6_local::2 148 | EOL 149 | 150 | chmod +x /root/connector.sh 151 | 152 | screen -dmS connector_session bash -c '/root/connector.sh' 153 | 154 | echo "Your job is greate..." 155 | 156 | echo -e "####################################" 157 | echo -e "# Your IPv6 : #" 158 | echo -e "# $ipv6_local::1 #" 159 | echo -e "####################################" 160 | 161 | 162 | } 163 | 164 | kharej_setup(){ 165 | 166 | read -p "Enter IRAN IP : " iran_ip 167 | read -p "Enter Kharej IP : " kharej_ip 168 | read -p "Enter IPv6 Local : " ipv6_local 169 | 170 | # read -p "Enter Kharej Ports ( comma seperate ) : " kharej_port 171 | 172 | cat < /etc/netplan/dev-ir.yaml 173 | network: 174 | version: 2 175 | tunnels: 176 | tunnel0858: 177 | mode: sit 178 | local: $kharej_ip 179 | remote: $iran_ip 180 | addresses: 181 | - $ipv6_local::2/64 182 | EOL 183 | netplan_setup 184 | sudo netplan apply 185 | 186 | cat < /root/connector.sh 187 | ping $ipv6_local::1 188 | EOL 189 | 190 | chmod +x /root/connector.sh 191 | screen -dmS connector_session bash -c '/root/connector.sh' 192 | 193 | echo "Your job is greate..." 194 | 195 | echo -e "####################################" 196 | echo -e "# Your IPv6 : #" 197 | echo -e "# $ipv6_local::2 #" 198 | echo -e "####################################" 199 | 200 | } 201 | 202 | run_screen(){ 203 | #!/bin/bash 204 | 205 | # Check if screen is installed 206 | if ! command -v screen &> /dev/null 207 | then 208 | echo "Screen is not installed. Installing..." 209 | 210 | # Check the Linux distribution to use the correct package manager 211 | if [ -f /etc/redhat-release ]; then 212 | # CentOS/RHEL 213 | sudo yum install screen -y 214 | elif [ -f /etc/debian_version ]; then 215 | # Debian/Ubuntu 216 | sudo apt-get update 217 | sudo apt-get install screen -y 218 | else 219 | echo "Unsupported Linux distribution. Please install screen manually." 220 | exit 1 221 | fi 222 | 223 | # Verify installation 224 | if ! command -v screen &> /dev/null 225 | then 226 | echo "Failed to install screen. Please install manually." 227 | exit 1 228 | else 229 | echo "Screen has been successfully installed." 230 | fi 231 | else 232 | echo "Screen is already installed." 233 | fi 234 | 235 | } 236 | 237 | 238 | check_core_status() { 239 | local file_path="/etc/netplan/dev-ir.yaml" 240 | local status 241 | 242 | if [ -f "$file_path" ]; then 243 | status="${GREEN}Installed"${NC} 244 | else 245 | status=${RED}"Not installed"${NC} 246 | fi 247 | 248 | echo "$status" 249 | } 250 | 251 | netplan_setup(){ 252 | 253 | command -v netplan &> /dev/null || { 254 | sudo apt update && sudo apt install -y netplan.io && echo "netplan با موفقیت نصب شد." || echo "نصب netplan با خطا مواجه شد."; 255 | } 256 | 257 | } 258 | 259 | 260 | unistall(){ 261 | 262 | echo $'\e[32mUninstalling GVTUNNEL in 3 seconds... \e[0m' && sleep 1 && echo $'\e[32m2... \e[0m' && sleep 1 && echo $'\e[32m1... \e[0m' && sleep 1 && { 263 | rm /etc/netplan/dev-ir.yaml 264 | rm /root/connector.sh 265 | pkill screen 266 | clear 267 | echo 'GVTUNNEL Unistalled :('; 268 | } 269 | loader 270 | } 271 | 272 | loader -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 |

⚡️ Welcome to GVTunnel ⚡️

2 | 3 | **GV Tunnel • Built on GOST AND DIFFRENTv6 Core** 4 | 5 | > **Disclaimer:** GVTUNNEL is a A tunnel has been configured locally based on IPv6 definition and using Ghost Tunnel version 3.. 6 | 7 | **We don't need financial support, only Star (⭐) is enough, thank you.** 8 | 9 | 10 | ## Install & Upgrade 11 | 12 | ``` 13 | bash <(curl -Ls https://raw.githubusercontent.com/dev-ir/GVTunnel/master/install.sh) 14 | ``` 15 | 16 | ## Languages 17 | 18 | - English 19 | 20 | ## 🪚 Preview 21 |

22 | Image 23 |

24 | 25 | ## 🙏 Support with Crypto 26 | - USDT (TRC20): `TVUqVMoCEe5DVUoxmPg8MwmgcHvZLqLjr4` 27 | 28 | ## 📧 Join Telegram Channel 29 | 30 | TG : https://t.me/+EpErnDsDPhw3ZThk 31 | --------------------------------------------------------------------------------