The Following User Says Thank You to oneguynick For This Useful Post: | ||
|
2010-03-18
, 21:08
|
Posts: 74 |
Thanked: 34 times |
Joined on Jan 2008
|
#2
|
#This script will run openvpn when away from home. so I can still # access my network. but will close openvpn at home. /etc/openvpn/dbus.openvpn * * com.nokia.icd status_changed *
#!/bin/sh # /etc/openvpn/dbus.openvpn # This script is invoked by dbus-scripts when connection changes # state. LOG=/var/log/dbus.openvpn.log STATUS_FILE=/var/log/dbus.openvpn-status DAEMON="/etc/init.d/openvpn" DHCP_CLIENT="/etc/init.d/udhcpc" NAME="dbusScriptsOpenvpn" DESC="Sipn openvpn daemon up and down by dbus-scripts" CONN_STATE="/tmp/openvpnConnected" # Connection serial in saved connection database CONN_ID=$5 #$6 is GPRS or WLAN_INFRA or WLAN_ADHOC TYPE=$6 STATUS=$7 HOME_ID='78967400-a235-4a4e-91d2-9ca80c250247 b4419dd9-5dca-4ca6-bba8-eaba34668e9a cb5d0bdf-a8e7-4bda-ad88-641e893580ef' args() { date >>$LOG Count=0 for arg in "$@*" ; do Count=$(( $Count + 1 )) echo -n "$Count : $arg" >>$LOG done } args $@ #current connection state is "connected" if test -f "$CONN_STATE" ; then case "$STATUS" in CONNECTED) flag=1 for id in $HOME_ID ; do if test "x$CONN_ID" = "x$id" ; then echo "Home lan sensed. killing openvpn" >>$LOG $DAEMON stop >>$LOG $DHCP_CLIENT stop >>$LOG rm -f $CONN_STATE flag=0 break fi done if test $flag == 1 ;then if ! grep -q $TYPE $CONN_STATE 2>/dev/null; then #leave openvpn figure out a NIC change $DAEMON restart >>$LOG echo $TYPE > $CONN_STATE #else see above $DAEMON restart >>$LOG fi fi ;; IDLE) echo "current state is connectd and I got Idle msg" >>$LOG echo "type is $TYPE" >>$LOG if grep -q $TYPE $CONN_STATE ; then echo "current connection went idle , killing openvpn" >>$LOG $DAEMON stop >>$LOG $DHCP_CLIENT stop >>$LOG rm -f $CONN_STATE fi ;; SCAN_START|SCAN_STOP|CONNECTING|DISCONNECTING) ;; *) echo "Error: got this status: $STATUS while being connected" >>$LOG esac #current connection state is "not connected" else case "$STATUS" in CONNECTED) #if connected to home access point dont run openvpn if test "x$CONN_ID" = "x$HOME_ID" ; then echo "Home lan sensed. leaving not connected" >>$LOG else echo "Starting $DESC:" >>$LOG $DAEMON start >>$LOG #if [ "$?" -ne 0 ];then echo $TYPE > $CONN_STATE #fi fi ;; SCAN_START|SCAN_STOP|CONNECTING|DISCONNECTING) ;; *) echo "Error in calling /etc/openvpn/dbus.openvpn" >>$LOG esac fi # wget http://www.whatismyip.com -T 10 -O - -o /dev/null # if [ "$?" -ne 0 ];then # $DAEMON stop >>$LOG # echo "failed to access inet" >>$LOG # fi exit 0
#!/bin/sh -e ### BEGIN INIT INFO # Provides: openvpn # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # X-Interactive: true # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Openvpn VPN service ### END INIT INFO # Original version by Robert Leslie # <rob@mars.org>, edited by iwj and cs # Modified for openvpn by Alberto Gonzalez Iniesta <agi@inittab.org> # Modified for restarting / starting / stopping single tunnels by Richard Mueller <mueller@teamix.net> . /lib/lsb/init-functions test $DEBIAN_SCRIPT_DEBUG && set -v -x DAEMON=/usr/sbin/openvpn DESC="virtual private network daemon" CONFIG_DIR=/etc/openvpn test -x $DAEMON || exit 0 test -d $CONFIG_DIR || exit 0 # Source defaults file; edit that file to configure this script. AUTOSTART="all" STATUSREFRESH=10 if test -e /etc/default/openvpn ; then . /etc/default/openvpn fi start_vpn () { if grep -q '^[ ]*daemon' $CONFIG_DIR/$NAME.conf ; then # daemon already given in config file DAEMONARG= else # need to daemonize DAEMONARG="--daemon ovpn-$NAME" fi if grep -q '^[ ]*status ' $CONFIG_DIR/$NAME.conf ; then # status file already given in config file STATUSARG="" elif test $STATUSREFRESH -eq 0 ; then # default status file disabled in /etc/default/openvpn STATUSARG="" else # prepare default status file STATUSARG="--status /var/run/openvpn.$NAME.status $STATUSREFRESH" fi log_progress_msg "$NAME" STATUS=0 #echo "running $DAEMON -- $OPTARGS --writepid /var/run/openvpn.$NAME.pid $DAEMONARG $STATUSARG --cd $CONFIG_DIR --up "/etc/init.d/udhcpc start" --down "/etc/init.d/udhcpc stop" --config $CONFIG_DIR/$NAME.conf --script-security 2 --up-delay" start-stop-daemon --start --quiet --oknodo \ --pidfile /var/run/openvpn.$NAME.pid \ --exec $DAEMON -- $OPTARGS --writepid /var/run/openvpn.$NAME.pid \ $DAEMONARG $STATUSARG --cd $CONFIG_DIR \ --config $CONFIG_DIR/$NAME.conf || STATUS=1 } # --script-security 2 --up-delay --up "/etc/init.d/udhcpc start" \ stop_vpn () { start-stop-daemon --stop --quiet \ --exec /usr/sbin/openvpn --pidfile $PIDFILE kill `cat $PIDFILE` || true rm -f $PIDFILE rm -f /var/run/openvpn.$NAME.status 2> /dev/null } case "$1" in start) log_daemon_msg "Starting $DESC" # autostart VPNs if test -z "$2" ; then # check if automatic startup is disabled by AUTOSTART=none if test "x$AUTOSTART" = "xnone" -o -z "$AUTOSTART" ; then log_warning_msg " Autostart disabled." exit 0 fi if test -z "$AUTOSTART" -o "x$AUTOSTART" = "xall" ; then # all VPNs shall be started automatically for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do NAME=${CONFIG%%.conf} start_vpn sleep 5 /etc/init.d/udhcpc start done else # start only specified VPNs for NAME in $AUTOSTART ; do if test -e $CONFIG_DIR/$NAME.conf ; then start_vpn else log_failure_msg "No such VPN: $NAME" STATUS=1 fi done fi #start VPNs from command line else while shift ; do [ -z "$1" ] && break if test -e $CONFIG_DIR/$1.conf ; then NAME=$1 start_vpn else log_failure_msg " No such VPN: $1" STATUS=1 fi done fi log_end_msg ${STATUS:-0} ;; stop) log_daemon_msg "Stopping $DESC" if test -z "$2" ; then for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do NAME=`echo $PIDFILE | cut -c18-` NAME=${NAME%%.pid} stop_vpn log_progress_msg "$NAME" done else while shift ; do [ -z "$1" ] && break if test -e /var/run/openvpn.$1.pid ; then PIDFILE=`ls /var/run/openvpn.$1.pid 2> /dev/null` NAME=`echo $PIDFILE | cut -c18-` NAME=${NAME%%.pid} stop_vpn log_progress_msg "$NAME" else log_failure_msg " (failure: No such VPN is running: $1)" fi done fi log_end_msg 0 ;; # Only 'reload' running VPNs. New ones will only start with 'start' or 'restart'. reload|force-reload) log_daemon_msg "Reloading $DESC" for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do NAME=`echo $PIDFILE | cut -c18-` NAME=${NAME%%.pid} # If openvpn if running under a different user than root we'll need to restart if egrep '^[[:blank:]]*user[[:blank:]]' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then stop_vpn sleep 1 start_vpn log_progress_msg "(restarted)" else kill -HUP `cat $PIDFILE` || true log_progress_msg "$NAME" fi done log_end_msg 0 ;; # Only 'soft-restart' running VPNs. New ones will only start with 'start' or 'restart'. soft-restart) log_daemon_msg "$DESC sending SIGUSR1" for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do NAME=`echo $PIDFILE | cut -c18-` NAME=${NAME%%.pid} kill -USR1 `cat $PIDFILE` || true log_progress_msg "$NAME" done log_end_msg 0 ;; restart) shift $0 stop ${@} sleep 1 $0 start ${@} ;; cond-restart) log_daemon_msg "Restarting $DESC." for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do NAME=`echo $PIDFILE | cut -c18-` NAME=${NAME%%.pid} stop_vpn sleep 1 start_vpn done log_end_msg 0 ;; status) GLOBAL_STATUS=0 if test -z "$2" ; then # We want status for all defined VPNs. # Returns success if all autostarted VPNs are defined and running if test "x$AUTOSTART" = "xnone" ; then # Consider it a failure if AUTOSTART=none log_warning_msg "No VPN autostarted" GLOBAL_STATUS=1 else if ! test -z "$AUTOSTART" -o "x$AUTOSTART" = "xall" ; then # Consider it a failure if one of the autostarted VPN is not defined for VPN in $AUTOSTART ; do if ! test -f $CONFIG_DIR/$VPN.conf ; then log_warning_msg "VPN '$VPN' is in AUTOSTART but is not defined" GLOBAL_STATUS=1 fi done fi fi for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do NAME=${CONFIG%%.conf} # Is it an autostarted VPN ? if test -z "$AUTOSTART" -o "x$AUTOSTART" = "xall" ; then AUTOVPN=1 else if test "x$AUTOSTART" = "xnone" ; then AUTOVPN=0 else AUTOVPN=0 for VPN in $AUTOSTART; do if test "x$VPN" = "x$NAME" ; then AUTOVPN=1 fi done fi fi if test "x$AUTOVPN" = "x1" ; then # If it is autostarted, then it contributes to global status status_of_proc -p /var/run/openvpn.${NAME}.pid openvpn "VPN '${NAME}'" || GLOBAL_STATUS=1 else status_of_proc -p /var/run/openvpn.${NAME}.pid openvpn "VPN '${NAME}' (non autostarted)" || true fi done else # We just want status for specified VPNs. # Returns success if all specified VPNs are defined and running while shift ; do [ -z "$1" ] && break NAME=$1 if test -e $CONFIG_DIR/$NAME.conf ; then # Config exists status_of_proc -p /var/run/openvpn.${NAME}.pid openvpn "VPN '${NAME}'" || GLOBAL_STATUS=1 else # Config does not exist log_warning_msg "VPN '$NAME': missing $CONFIG_DIR/$NAME.conf file !" GLOBAL_STATUS=1 fi done fi exit $GLOBAL_STATUS ;; *) echo "Usage: $0 {start|stop|reload|restart|force-reload|cond-restart|status}" >&2 exit 1 ;; esac exit 0 # vim:set ai sts=2 sw=2 tw=0:
#!/bin/sh # # openvpn custom dhcp cilient Start and stop # #PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/sbin/udhcpc NAME=udhcpc DESC="Openvpn dhcp client" # $2 is passed by openvpn with the device created ie tap0 if [ x == x"$2" ] ; then DEVICE=tap0 else DEVICE=$2 fi PIDFILE="/var/run/$NAME.$DEVICE.pid" SCRIPT="/etc/openvpn/udhcp.script" test -x $DAEMON || test -x $SCRIPT || exit 0 # --now Exit with failure if a lease cannot be obtained. if [ -z "$DAEMON_OPTS" ] ; then DAEMON_OPTS="--now --no-zeroconf -i $DEVICE -s $SCRIPT --pidfile=$PIDFILE" # DAEMON_OPTS="--no-zeroconf -i $DEVICE -s $SCRIPT --pidfile=$PIDFILE" fi #set -e exit if a simple command exits with non zero case "$1" in start) echo -n "Starting $DESC for $DEVICE: " echo " params: $DAEMON_OPTS " while [ ! -d /sys/class/net/$DEVICE ] ; do echo " $DEVICE missing so lets wait" sleep 1 done if ! test -f "$PIDFILE" ; then while true ; do start-stop-daemon --start \ --pidfile "$PIDFILE" \ --exec $DAEMON -- $DAEMON_OPTS if test $? -eq 0 ;then break fi sleep 1 done fi echo "$NAME." ;; stop) echo -n "Stopping $DESC: " if test -e "$PIDFILE" ; then start-stop-daemon --stop --quiet --pidfile "$PIDFILE" #kill `cat $PIDFILE` || true #rm -f $PIDFILE fi echo "$NAME." ;; reload|restart|force-reload) # # If the "reload" option is implemented, move the "force-reload" # option to the "reload" entry above. If not, "force-reload" is # just the same as "restart". # echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ "$PIDFILE" --exec $DAEMON sleep 1 start-stop-daemon --start --quiet \ --pidfile "$PIDFILE"\ --background --make-pidfile \ --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; *) N=/etc/init.d/$NAME # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
|
2010-05-12
, 14:55
|
Posts: 74 |
Thanked: 34 times |
Joined on Jan 2008
|
#3
|
#!/bin/sh # udhcpc script to use with OSSO ICd # this is ment to allow connection to a bridged vpn server # and to secure traffic only to the vpn subnet. # Other traffic like www.google.com , will travel out of gprs0 RESOLV_CONF="/var/run/resolv.conf.$interface" LEASE_PARAMS=/var/run/dhcp-params.openvpn.conf [ -n ${RESOLV_CONF} ] && touch ${RESOLV_CONF} case "$1" in static | bound | renew) [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" [ -n "$subnet" ] && NETMASK="netmask $subnet" if [ "$1" = renew ]; then if [ -f $LEASE_PARAMS ]; then head -1 $LEASE_PARAMS | grep "^${interface} ${ip} ${router} ${subnet} ${domain} ${dns}$" > /dev/null if [ $? -eq 0 ]; then exit 0 fi fi fi /sbin/ifconfig $interface $ip $BROADCAST $NETMASK if [ -n "$router" ] then if netstat -rn | egrep "^0.0.0.0 *${router} .*${interface}$" > /dev/null then : else while /sbin/route del default gw 0.0.0.0 dev $interface > /dev/null 2>&1 do : done echo -n "Removed default route for " >&2 echo "$interface: $ip/$subnet broadcast $broadcast" >&2 # dont route default via vpn /sbin/route add default gw $router dev $interface # route upnp via vpn /sbin/route add -net 239.0.0.0 netmask 255.0.0.0 dev $interface #if [ $? != 0 ]; then # echo -n "Failed to set up default route for " >&2 # echo "$interface: $ip/$subnet broadcast $broadcast" >&2 #fi fi fi for ns in $dns do if egrep "^nameserver[\t ]*${ns}" $RESOLV_CONF > /dev/null then continue else echo -n > $RESOLV_CONF.tmp [ -n "$domain" ] && echo domain $domain >> $RESOLV_CONF.tmp for i in $dns do echo nameserver $i >> $RESOLV_CONF.tmp done mv $RESOLV_CONF.tmp $RESOLV_CONF # Clear dnsmasq cache after getting new nameservers kill -SIGHUP `pidof dnsmasq` break fi done /usr/bin/dbus-send \ --system \ --dest=com.nokia.icd \ /com/nokia/icd/autoconf \ com.nokia.icd.autoconf.autoconf_changed \ string:$interface string:DHCP string:CONNECTED if [ "$1" = bound -o "$1" = renew ]; then echo "${interface} ${ip} ${router} ${subnet} ${domain} ${dns}" > $LEASE_PARAMS fi ;; deconfig) /sbin/ifconfig $interface 0.0.0.0 rm -f $LEASE_PARAMS > /dev/null /usr/bin/dbus-send \ --system \ --dest=com.nokia.icd \ /com/nokia/icd/autoconf \ com.nokia.icd.autoconf.autoconf_changed \ string:$interface string:DHCP string:DISCONNECTED ;; esac
|
2010-05-14
, 18:46
|
Posts: 10 |
Thanked: 1 time |
Joined on Feb 2007
|
#4
|
|
2010-05-19
, 20:47
|
Posts: 74 |
Thanked: 34 times |
Joined on Jan 2008
|
#5
|
|
2011-05-18
, 22:06
|
Posts: 306 |
Thanked: 106 times |
Joined on Feb 2010
|
#6
|
HOME_ID='d0b8bdcf-1ec0-4a5b-8880-f9d9058e1501 3'
http://geekyschmidt.com/2010/02/27/o...ll-ubuntu-9-10