addwg.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #!/bin/bash
  2. # SL
  3. # ==========================================
  4. # Color
  5. RED='\033[0;31m'
  6. NC='\033[0m'
  7. GREEN='\033[0;32m'
  8. ORANGE='\033[0;33m'
  9. BLUE='\033[0;34m'
  10. PURPLE='\033[0;35m'
  11. CYAN='\033[0;36m'
  12. LIGHT='\033[0;37m'
  13. # ==========================================
  14. # Getting
  15. MYIP=$(wget -qO- ipinfo.io/ip);
  16. echo "Checking VPS"
  17. IZIN=$( curl ipinfo.io/ip | grep $MYIP )
  18. if [ $MYIP = $MYIP ]; then
  19. echo -e "${NC}${GREEN}Permission Accepted...${NC}"
  20. else
  21. echo -e "${NC}${RED}Permission Denied!${NC}";
  22. echo -e "${NC}${LIGHT}Fuck You!!"
  23. exit 0
  24. fi
  25. clear
  26. # Load params
  27. source /etc/wireguard/params
  28. source /var/lib/crot/ipvps.conf
  29. if [[ "$IP" = "" ]]; then
  30. SERVER_PUB_IP=$(wget -qO- ipinfo.io/ip);
  31. else
  32. SERVER_PUB_IP=$IP
  33. fi
  34. source /var/lib/crot/ipvps.conf
  35. if [[ "$IP2" = "" ]]; then
  36. domain=$(cat /etc/xray/domain)
  37. else
  38. domain=$IP2
  39. fi
  40. echo ""
  41. portwg="$(cat ~/log-install.txt | grep -w "Wireguard" | cut -d: -f2|sed 's/ //g')"
  42. until [[ ${CLIENT_NAME} =~ ^[a-zA-Z0-9_]+$ && ${CLIENT_EXISTS} == '0' ]]; do
  43. read -rp "Username : " -e CLIENT_NAME
  44. CLIENT_EXISTS=$(grep -w $CLIENT_NAME /etc/wireguard/wg0.conf | wc -l)
  45. if [[ ${CLIENT_EXISTS} == '1' ]]; then
  46. echo ""
  47. echo -e "Username ${RED}${CLIENT_NAME}${NC} Already On VPS Please Choose Another"
  48. exit 1
  49. fi
  50. done
  51. echo "IPv4 Detected"
  52. ENDPOINT="$SERVER_PUB_IP:$SERVER_PORT"
  53. WG_CONFIG="/etc/wireguard/wg0.conf"
  54. LASTIP=$( grep "/32" $WG_CONFIG | tail -n1 | awk '{print $3}' | cut -d "/" -f 1 | cut -d "." -f 4 )
  55. if [[ "$LASTIP" = "" ]]; then
  56. CLIENT_ADDRESS="10.66.66.2"
  57. else
  58. CLIENT_ADDRESS="10.66.66.$((LASTIP+1))"
  59. fi
  60. # Google DNS by default
  61. CLIENT_DNS_1="8.8.8.8"
  62. CLIENT_DNS_2="8.8.4.4"
  63. MYIP=$(wget -qO- ifconfig.co);
  64. read -p "Expired (Days) : " masaaktif
  65. hariini=`date -d "0 days" +"%Y-%m-%d"`
  66. exp=`date -d "$masaaktif days" +"%Y-%m-%d"`
  67. # Generate key pair for the client
  68. CLIENT_PRIV_KEY=$(wg genkey)
  69. CLIENT_PUB_KEY=$(echo "$CLIENT_PRIV_KEY" | wg pubkey)
  70. CLIENT_PRE_SHARED_KEY=$(wg genpsk)
  71. # Create client file and add the server as a peer
  72. echo "[Interface]
  73. PrivateKey = $CLIENT_PRIV_KEY
  74. Address = $CLIENT_ADDRESS/24
  75. DNS = $CLIENT_DNS_1,$CLIENT_DNS_2
  76. [Peer]
  77. PublicKey = $SERVER_PUB_KEY
  78. PresharedKey = $CLIENT_PRE_SHARED_KEY
  79. Endpoint = $ENDPOINT
  80. AllowedIPs = 0.0.0.0/0,::/0" >>"$HOME/$SERVER_WG_NIC-client-$CLIENT_NAME.conf"
  81. # Add the client as a peer to the server
  82. echo -e "### Client $CLIENT_NAME $exp
  83. [Peer]
  84. PublicKey = $CLIENT_PUB_KEY
  85. PresharedKey = $CLIENT_PRE_SHARED_KEY
  86. AllowedIPs = $CLIENT_ADDRESS/32" >>"/etc/wireguard/$SERVER_WG_NIC.conf"
  87. systemctl restart "wg-quick@$SERVER_WG_NIC"
  88. cp $HOME/$SERVER_WG_NIC-client-$CLIENT_NAME.conf /home/vps/public_html/$CLIENT_NAME.conf
  89. clear
  90. sleep 0.5
  91. echo Generate PrivateKey
  92. sleep 0.5
  93. echo Generate PublicKey
  94. sleep 0.5
  95. echo Generate PresharedKey
  96. clear
  97. echo -e ""
  98. echo -e "======-WIREGUARD-======"
  99. echo -e "Remarks : $CLIENT_NAME"
  100. echo -e "IP/Host : $MYIP"
  101. echo -e "Domain : $domain"
  102. echo -e "Port : $portwg"
  103. echo -e "Created : $hariini"
  104. echo -e "Expired : $exp"
  105. echo -e "======================="
  106. echo -e "Link WG : http://$MYIP:89/$CLIENT_NAME.conf"
  107. echo -e "======================="
  108. echo -e "Script Mod By SL"
  109. rm -f /root/wg0-client-$CLIENT_NAME.conf