p2p-action.sh 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/bin/sh
  2. IFNAME=$1
  3. CMD=$2
  4. kill_daemon() {
  5. NAME=$1
  6. PF=$2
  7. if [ ! -r $PF ]; then
  8. return
  9. fi
  10. PID=`cat $PF`
  11. if [ $PID -gt 0 ]; then
  12. if ps $PID | grep -q $NAME; then
  13. kill $PID
  14. fi
  15. fi
  16. rm $PF
  17. }
  18. if [ "$CMD" = "P2P-GROUP-STARTED" ]; then
  19. GIFNAME=$3
  20. if [ "$4" = "GO" ]; then
  21. kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid
  22. rm /var/run/dhclient.leases-$GIFNAME
  23. kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME
  24. ifconfig $GIFNAME 192.168.42.1 up
  25. if ! dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \
  26. -i $GIFNAME \
  27. -F192.168.42.11,192.168.42.99; then
  28. # another dnsmasq instance may be running and blocking us; try to
  29. # start with -z to avoid that
  30. dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \
  31. -i $GIFNAME \
  32. -F192.168.42.11,192.168.42.99 --listen-address 192.168.42.1 -z
  33. fi
  34. fi
  35. if [ "$4" = "client" ]; then
  36. kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid
  37. rm /var/run/dhclient.leases-$GIFNAME
  38. kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME
  39. dhclient -pf /var/run/dhclient-$GIFNAME.pid \
  40. -lf /var/run/dhclient.leases-$GIFNAME \
  41. -nw \
  42. $GIFNAME
  43. fi
  44. fi
  45. if [ "$CMD" = "P2P-GROUP-REMOVED" ]; then
  46. GIFNAME=$3
  47. if [ "$4" = "GO" ]; then
  48. kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME
  49. ifconfig $GIFNAME 0.0.0.0
  50. fi
  51. if [ "$4" = "client" ]; then
  52. kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid
  53. rm /var/run/dhclient.leases-$GIFNAME
  54. ifconfig $GIFNAME 0.0.0.0
  55. fi
  56. fi
  57. if [ "$CMD" = "P2P-CROSS-CONNECT-ENABLE" ]; then
  58. GIFNAME=$3
  59. UPLINK=$4
  60. # enable NAT/masquarade $GIFNAME -> $UPLINK
  61. iptables -P FORWARD DROP
  62. iptables -t nat -A POSTROUTING -o $UPLINK -j MASQUERADE
  63. iptables -A FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT
  64. iptables -A FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT
  65. sysctl net.ipv4.ip_forward=1
  66. fi
  67. if [ "$CMD" = "P2P-CROSS-CONNECT-DISABLE" ]; then
  68. GIFNAME=$3
  69. UPLINK=$4
  70. # disable NAT/masquarade $GIFNAME -> $UPLINK
  71. sysctl net.ipv4.ip_forward=0
  72. iptables -t nat -D POSTROUTING -o $UPLINK -j MASQUERADE
  73. iptables -D FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT
  74. iptables -D FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT
  75. fi