Guest User

Untitled

a guest
Apr 19th, 2017
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | None | 0 0
  1. CODE CHANGE:
  2. add following code to sock.c starting at line 113
  3.  
  4. mark=3;
  5. if ( setsockopt(sockfd, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)) ){
  6. int ver=errno;
  7. log_message(LOG_INFO, "could not mark with %d because: %s", mark, strerror(ver) );
  8. }
  9.  
  10.  
  11. UNIT FILES AND SCRIPTS
  12.  
  13. /lib/systemd/system/[email protected]
  14.  
  15. [Unit]
  16. Description=OpenVPN connection to %i
  17. PartOf=openvpn.service
  18. ReloadPropagatedFrom=openvpn.service
  19.  
  20. [Service]
  21. Type=forking
  22. ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.ovpn --tls-exit --down "/etc/openvpn/down.sh %i" --up "/etc/openvpn/up.sh %i" --script-security 2 --route-noexec
  23. ExecReload=/bin/kill -HUP $MAINPID
  24. WorkingDirectory=/etc/openvpn
  25. Restart=no
  26.  
  27. [Install]
  28. WantedBy=multi-user.target
  29.  
  30.  
  31. ---------------
  32.  
  33. /etc/openvpn/up.sh
  34.  
  35. #!/bin/sh
  36. #up sh
  37. NAME=$1
  38. DEV=$2
  39. LOCALIP=$5
  40. GATEWAY=$route_vpn_gateway
  41. AC=$(echo $DEV | sed 's/tun//')
  42. PT=$(($AC+3129))
  43. TB=$(($AC+100))
  44. FWM=$((AC+3))
  45.  
  46.  
  47.  
  48. cat <<EOF > /tmp/tinyproxy-$1.conf
  49. DisableViaHeader Yes
  50. User nobody
  51. Group nogroup
  52. Port $PT
  53. PidFile "/tmp/tinyproxy-$1.pid"
  54. Logfile "/tmp/tinyproxy-$1.log"
  55. ConnectPort 443
  56. ConnectPort 563
  57. ConnectPort 80
  58. StartServers 10
  59. LogLevel Info
  60. Timeout 600
  61. Allow 127.0.0.1
  62. Anonymous "Host"
  63. Anonymous "Authorization"
  64. Anonymous "Cookie"
  65. MaxClients 10
  66. Bind $LOCALIP
  67. LogLevel Info
  68.  
  69. EOF
  70.  
  71. touch /tmp/tinyproxy-$1.pid
  72. touch /tmp/tinyproxy-$1.log
  73. touch /tmp/tinyproxy-$1-test.sh
  74. chown nobody:nogroup /tmp/tinyproxy-$1.pid
  75. chown nobody:nogroup /tmp/tinyproxy-$1.log
  76. chown nobody:nogroup /tmp/tinyproxy-$1.conf
  77. chown nobody:nogroup /tmp/tinyproxy-$1-test.sh
  78. chmod 777 /tmp/tinyproxy-$1-test.sh
  79.  
  80. cat <<EOF > /tmp/tinyproxy-$1-test.sh
  81. #!/bin/sh
  82. logger "var is $DEV"
  83. ip route add $GATEWAY dev $DEV
  84. while ! fping -c 1 -q -t 1000 $GATEWAY ; do
  85. ip route add $GATEWAY dev $DEV
  86. sleep 1
  87. logger "waiting... $GATEWAY"
  88. done
  89.  
  90. iptables -A OUTPUT -o $DEV -j ACCEPT
  91. ip rule add from $LOCALIP fwmark $FWM table $TB
  92. ip route add default via $GATEWAY dev $DEV table $TB
  93. ip route flush cache
  94. echo $?
  95. EOF
  96.  
  97.  
  98. ---------------
  99.  
  100. /etc/openvpn/down.sh
  101.  
  102. #!/bin/sh
  103. NAME=$1
  104. DEV=$2
  105. LOCALIP=$5
  106. GATEWAY=$6
  107. AC=$(echo $DEV | sed 's/tun//')
  108. PT=$(($AC+3129))
  109. TB=$(($AC+100))
  110. FWM=$((AC+3))
  111. systemctl stop tinyproxy@$NAME
  112. rm -f /tmp/tinyproxy-$1.conf
  113. rm -f /tmp/tinyproxy-$1.pid
  114. rm -f /tmp/tinyproxy-$1.log
  115. rm -f /tmp/tinyproxy-$1-test.sh
  116. iptables -D OUTPUT -o $DEV -j ACCEPT
  117. ip rule del from $LOCALIP fwmark $FWM table $TB
  118. ip route flush table $TB
  119. ip route flush cache
  120. echo $?
  121.  
  122.  
  123. ---------------
  124.  
  125. /lib/systemd/system/[email protected]
  126.  
  127. [Unit]
  128. Description=TinyProxy Daemon for %i
  129. PartOf=tinyproxy.service
  130. ReloadPropagatedFrom=tinyproxy.service
  131. Wants=openvpn@%i.service
  132. After=openvpn@%i.service
  133.  
  134. [Service]
  135. Type=forking
  136. ExecStart=/etc/openvpn/tinyproxy.sh %i
  137. ExecReload=/bin/kill -HUP $MAINPID
  138. WorkingDirectory=/etc/tinyproxy
  139. Restart=no
  140.  
  141. [Install]
  142. WantedBy=multi-user.target
  143.  
  144. ----------------
  145.  
  146. /etc/openvpn/tinyproxy.sh
  147.  
  148. #!/bin/sh
  149. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  150. CONFIG=/tmp/tinyproxy-$1.conf
  151. DAEMON=/usr/sbin/tinyproxy
  152. DESC=tinyproxy
  153. FLAGS="-c $CONFIG"
  154. NAME=tinyproxy-$1
  155.  
  156. test -f $DAEMON || exit 0
  157. set -e
  158.  
  159.  
  160. if [ -f "$CONFIG" ]; then
  161. USER=$(grep -i '^User[[:space:]]' "$CONFIG" | awk '{print $2}')
  162. GROUP=$(grep -i '^Group[[:space:]]' "$CONFIG" | awk '{print $2}')
  163. PIDFILE=$(grep -i '^PidFile[[:space:]]' "$CONFIG" | awk '{print $2}' |\
  164. sed -e 's/"//g')
  165. PIDDIR=`dirname "$PIDFILE"`
  166. if [ -n "$PIDDIR" -a "$PIDDIR" != "/var/run" ]; then
  167. if [ ! -d "$PIDDIR" ]; then
  168. mkdir "$PIDDIR"
  169. fi
  170. if [ "$USER" ]; then
  171. chown "$USER" "$PIDDIR"
  172. fi
  173. if [ "$GROUP" ]; then
  174. chgrp "$GROUP" "$PIDDIR"
  175. fi
  176. fi
  177. fi
  178.  
  179. setcap cap_net_bind_service,cap_net_admin+pe /usr/sbin/tinyproxy
  180. bash /tmp/$NAME-test.sh
  181. start-stop-daemon --start --chuid $USER:$GROUP --pidfile $PIDFILE -o --exec $DAEMON -- $FLAGS
  182.  
  183. echo $?
Advertisement
Add Comment
Please, Sign In to add comment