Guest User

Untitled

a guest
Apr 26th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. LOG_FILE=/var/log/vpn_boot.log
  4. DATE_STR=$(date +'%d/%m/%Y %H:%M:%S')
  5. WIFI_CONNECTION="wlp3s0"
  6. #feel in as you pleased
  7. VYPER_GATEWAYS=(fr1.vpn.goldenfrog.com eu1.vpn.goldenfrog.com dk1.vpn.goldenfrog.com se1.vpn.goldenfrog.com uk1.vpn.goldenfrog.com de1.vpn.goldenfrog.com ch1.vpn.goldenfrog.com lu1.vpn.goldenfrog.com ie1.vpn.goldenfrog.com it1.vpn.goldenfrog.com es1.vpn.goldenfrog.com no1.vpn.goldenfrog.com fi1.vpn.goldenfrog.com pt1.vpn.goldenfrog.com cz1.vpn.goldenfrog.com at1.vpn.goldenfrog.com be1.vpn.goldenfrog.com lt1.vpn.goldenfrog.com gr1.vpn.goldenfrog.com)
  8. VYPER_VPN_CONF=/etc/NetworkManager/system-connections/VyperVPN
  9.  
  10. #attempts limit
  11. LIMIT=3
  12. LIMIT_N=0
  13.  
  14. # by default, i assume there is table 200 is already here > /etc/iproute2/rt_tables
  15. IP_LOCAL='192.168.0.0/16'
  16. IP_EXTER='x.x.x.x' # external router ip
  17. IP_GATE='192.168.1.1'
  18.  
  19.  
  20. WIFI_STATUS=`nmcli con | grep "${WIFI_CONNECTION}"`
  21. if [ -z "${WIFI_STATUS}" ]; then
  22. echo "${DATE_STR} WIFI IS DEAD";
  23. exit 0;
  24. fi
  25.  
  26. STATUS=`nmcli con | grep "vpn" | grep -v "\-\-"`;
  27.  
  28. if [ ! -z "${STATUS}" ]; then
  29. echo "${DATE_STR} VPN_OK -> ${STATUS}";
  30. exit 0;
  31. fi
  32.  
  33. echo "${DATE_STR} VPN ISN'T OK"
  34.  
  35. SELECTED_GATEWAY="fr1.vpn.goldenfrog.com"
  36. gateway() {
  37. RANDOM=$$$(date +%s)
  38. SELECTED_GATEWAY=${VYPER_GATEWAYS[$RANDOM % ${#VYPER_GATEWAYS[@]} ]}
  39. }
  40.  
  41. reconnect_vpn() {
  42. ((LIMIT_N++))
  43. if [ $LIMIT_N -gt $LIMIT ]; then
  44. echo "EXCEEDED ATTEMPTS LIMIT ${LIMIT_N} > ${LIMIT}"
  45. sleep 1
  46. exit 5
  47. fi
  48.  
  49.  
  50. if nmcli con up id VyperVPN; then
  51. echo "VYPER CONNECTED";
  52. else
  53. echo "ERROR WHILE CONNECTING TO VYPER";
  54. gateway
  55. echo "REPLACING GATEWAY TO ${SELECTED_GATEWAY}"
  56. sed -i -E "s/gateway=.*$/gateway=${SELECTED_GATEWAY}/g" $VYPER_VPN_CONF
  57. sleep 2
  58. reconnect_vpn
  59. fi
  60. }
  61. reconnect_vpn
  62.  
  63.  
  64. add_rules() {
  65. STATUS=`ip rule | grep "${IP_LOCAL}"`
  66. if [ ! -z "${STATUS}" ]; then
  67. echo "rules are already there";
  68. return
  69. fi
  70.  
  71. ip rule add from $IP_LOCAL table 200
  72. ip rule add from $IP_EXTER table 200
  73. ip route add table 200 default via $IP_GATE
  74. echo "IP RULES ADDED:"
  75. ip rule
  76. echo "ROUTE:"
  77. ip route
  78. }
  79. add_rules
  80.  
  81. start_sockd(){
  82. STATUS=`/etc/init.d/sockd status | grep "Active:" | grep "running"`
  83. if [ ! -z "${STATUS}" ]; then
  84. echo "sockd is running";
  85. return
  86. fi
  87.  
  88. /etc/init.d/sockd start
  89. }
  90. start_sockd
Add Comment
Please, Sign In to add comment