Advertisement
Guest User

draft /jffs/scripts/x3mRouting/openvpn-event

a guest
Oct 20th, 2021
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #!/bin/sh
  2. set -x # uncomment/comment to enable/disable debug mode
  3.  
  4. PROJECT_REPO="/jffs/scripts/x3mRouting"
  5. scr_name="$(basename "$0")[$$]"
  6.  
  7. #Determine Caller
  8. case "$1" in
  9. "tun11")
  10. vpn_name="client1"
  11. ;;
  12. "tun12")
  13. vpn_name="client2"
  14. ;;
  15. "tun13")
  16. vpn_name="client3"
  17. ;;
  18. "tun14")
  19. vpn_name="client4"
  20. ;;
  21. "tun15")
  22. vpn_name="client5"
  23. ;;
  24. "tun21")
  25. vpn_name="server1"
  26. ;;
  27. "tun22")
  28. vpn_name="server2"
  29. ;;
  30. *)
  31. vpn_name=""
  32. ;;
  33. esac
  34.  
  35. # Call appropriate script based on script_type
  36. vpn_script_name="vpn$vpn_name-$script_type"
  37. vpn_script_log="/tmp/vpn${vpn_name}_state"
  38.  
  39. VPN_UNIT=$(echo "$dev" | awk '{ string=substr($0, 5, 5); print string; }')
  40. [ -s /jffs/addons/x3mRouting/updown-dns.sh ] && sh /jffs/addons/x3mRouting/updown-dns.sh "$VPN_UNIT" "$script_type"
  41. [ -s /jffs/addons/x3mRouting/x3mvpnrouting.sh ] && sh /jffs/addons/x3mRouting/x3mvpnrouting.sh "$VPN_UNIT" "$script_type"
  42.  
  43. # Check script state
  44. vpn_script_state=$(cat $vpn_script_log 2>/dev/null)
  45. if [ "$vpn_script_name" = "$vpn_script_state" ]; then
  46. echo "VPN script $vpn_script_name already run" | logger -t "$scr_name"
  47. exit 0
  48. fi
  49.  
  50. # Execute and log script state
  51. if [ -f "$PROJECT_REPO/$vpn_script_name" ]; then
  52. echo "$vpn_script_name" >"$vpn_script_log"
  53. sh "$PROJECT_REPO/$vpn_script_name" "$*" && logger -t "$scr_name" "Running $PROJECT_REPO/$vpn_script_name $*"
  54.  
  55. #####################################################################################
  56. # only relevant for routed (tun) openvpn server route-up event
  57. [[ "${dev:0:4}" == 'tun2' && "$script_type" == 'up' ]] || exit_0
  58.  
  59. # ensure every openvpn client's routing policy table ...
  60. for i in 1 2 3 4 5; do
  61. [ "$(ip route show table ovpnc${i})" ] || continue
  62.  
  63. # ... contains the server's ip network on the tunnel
  64. while read route; do
  65. ip route add $route table ovpnc${i} 2>/dev/null && routing_changed=
  66. done << EOR
  67. $(ip route | grep $dev)
  68. EOR
  69. done
  70.  
  71. # ensure every wireguardvpn client's routing policy table ...
  72. for i in 1 2 3 4 5; do
  73. [ "$(ip route show table 12${i})" ] || continue
  74.  
  75. # ... contains the server's ip network on the tunnel
  76. while read route; do
  77. ip route add $route table 12${i} 2>/dev/null && routing_changed=
  78. done << EOR
  79. $(ip route | grep $dev)
  80. EOR
  81. done
  82.  
  83. # force routing system to recognize any changes
  84. [ ${routing_changed+x} ] && ip route flush cache
  85. #####################################################################################
  86.  
  87. else
  88. logger -t "$scr_name" "No scripts found to run for openvpn-event: $vpn_script_name"
  89. echo "${vpn_script_name}-NOSCRIPT" >"$vpn_script_log" # (or nvram set vpn_script_state="${vpn_script_name}-NOSCRIPT"")
  90. exit 0
  91. fi
  92.  
  93. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement