⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _realsetup.in

📁 This a good VPN source
💻 IN
字号:
#!/bin/sh# IPsec startup and shutdown command# Copyright (C) 1998, 1999, 2001  Henry Spencer.# # This program is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License as published by the# Free Software Foundation; either version 2 of the License, or (at your# option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.# # This program is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License# for more details.## RCSID $Id: _realsetup.in,v 1.38 2004/12/10 13:10:04 paul Exp $me='ipsec setup'		# for messages# Misc. paths (some of this should perhaps be overrideable from ipsec.conf).plutopid=/var/run/pluto.pidplutoctl=/var/run/pluto.ctlsubsyslock=/var/lock/subsys/ipseclock=/var/run/ipsec_setup.pidinfo=/var/run/ipsec.infosysflags=/proc/sys/net/ipsecmodules=/proc/modulesipforward=/proc/sys/net/ipv4/ip_forwardipsecversion=/proc/net/ipsec_versionkamepfkey=/proc/net/pfkey# make sure output of (e.g.) ifconfig is in Englishunset LANG LANGUAGE LC_ALL LC_MESSAGES# check we were called properlyif test " $IPSEC_confreadsection" != " setup"then	echo "$me: $0 must be called by ipsec_setup" >&2	exit 1fi# defaults for "config setup" itemsIPSECinterfaces=${IPSECinterfaces:-%defaultroute}	if test " $IPSECinterfaces" = " %none" ; then IPSECinterfaces= ; fi# IPSECforwardcontrol	"no"# IPSECsyslog	"daemon.error"# IPSECklipsdebug	"none"# IPSECplutodebug	"none"# IPSECdumpdir	"" (no dump)# IPSECmanualstart	""# IPSECpluto	"yes"IPSECplutowait=${IPSECplutowait:-no}# IPSECprepluto	""# IPSECpostpluto	""# IPSECfragicmp	"yes"# IPSEChidetos	"yes"IPSECrp_filter=${IPSECrp_filter:-0}IPSECuniqueids=${IPSECuniqueids:-yes}IPSECcrlcheckinterval=${IPSECcrlcheckinterval:-0}# IPSECoverridemtu	""# Shall we trace?execute="true"display="false"for i in $IPSEC_setupflagsdo	case "$i" in	"--showonly")	execute="false" ; display=true ;;	"--show")	display=true ;;	esacdoneif $displaythen	echo "	" PATH="$PATH"fiperform() {	if $display	then		echo "	" "$*"	fi	if $execute	then		eval "$*"	fi}# function to set up manually-keyed connectionsmanualconns() {	if test " $IPSECmanualstart" != " "	then		for tu in $IPSECmanualstart		do			perform ipsec manual --up $tu		done	fi	# search for things to "ipsec manual --up": auto == "manual"	eval `ipsec _confread --varprefix MANUALSTART --search auto manual`	if test " $MANUALSTART_confreadstatus" != " "	then		echo "auto=manual search: $MANUALSTART_confreadstatus"		echo "unable to determine what conns to manual --up; none done"	elif test " $MANUALSTART_confreadnames" != " "	then		for tu in $MANUALSTART_confreadnames		do			perform ipsec manual --up $tu		done	fi}# for no-stdout logging:LOGONLY="logger -p $IPSECsyslog -t ipsec_setup"# What an ugly string.# Must be a string, not a function, because it is nested# within another sequence (for plutorun).# Luckily there are NO substitutions in it.KILLKLIPS='ifl=` ifconfig | sed -n -e "/^ipsec/s/ .*//p" ` ;	test "X$ifl" != "X" &&	for i in  $ifl ;	do		ifconfig $i down ;		ipsec tncfg --detach --virtual $i ;	done ;	test -r /proc/net/ipsec_klipsdebug && ipsec klipsdebug --none ;	test -d /proc/net/ipsec/eroute && ipsec eroute --clear ;	test -d /proc/net/ipsec/spi && ipsec spi --clear ;	lsmod 2>&1 | grep "^ipsec" > /dev/null && rmmod ipsec'if test -f $kamepfkeythen	KILLKLIPS='if type setkey > /dev/null 2>&1 ;		then			setkey -F ;			setkey -FP ;		fi'fi# do itcase "$1" in  start|--start|_autostart)	# First, does it seem to be going already?	perform test ! -f $lock "||" "{" \		echo "\"Openswan IPsec apparently already running, start aborted\"" ";" \		exit 1 ";" \		"}"	# announcement	# (Warning, changes to this log message may affect barf.)	version="`ipsec --version | awk 'NR == 1 { print $(3) }' | sed -e 's/^U\(.*\)\/K(.*/\1/'`"	case "$1" in	start|--start)	perform echo "\"Starting Openswan IPsec $version...\""	;;	_autostart)	perform echo "\"Restarting Openswan IPsec $version...\""	;;	esac	# preliminaries	perform rm -f $lock	for f in /dev/random /dev/urandom	do		perform test -r $f "||" "{" \			echo "\"...unable to start Openswan IPsec, no $f!\"" ";" \			exit 1 ";" \			"}"	    done	# the meaning of $$ at a different runtime is questionable!	perform echo '$$' ">" $lock	perform test -s $lock "||" "{" \		echo "\"...unable to create $lock, aborting start!\"" ";" \		rm -f $lock ";" \		exit 1 ";" \		"}"	perform ">" $info	# overridemtu is ignored on 2.6, so warn the user.	if test -f $kamepfkey	then        	if test $IPSECoverridemtu        	then                	echo "WARNING: overridemtu= is ignored when using the NETKEY stack"        	fi	fi	# here we go	perform ipsec _startklips \			--info $info \			--debug "\"$IPSECklipsdebug\"" \			--omtu "\"$IPSECoverridemtu\"" \			--fragicmp "\"$IPSECfragicmp\"" \			--hidetos "\"$IPSEChidetos\"" \			--rpfilter "\"$IPSECrp_filter\"" \			--log "\"$IPSECsyslog\"" \			$IPSECinterfaces "||" \		"{" rm -f $lock ";" exit 1 ";" "}"	perform test -f $ipsecversion "||" \		test -f $kamepfkey "||" "{" \		echo "\"OOPS, should have aborted!  Broken shell!\"" ";" \		exit 1 ";" \		"}"	# misc pre-Pluto setup	perform test -d `dirname $subsyslock` "&&" touch $subsyslock	if test " $IPSECforwardcontrol" = " yes"	then		perform grep '"^0"' $ipforward ">" /dev/null "&&" "{" \			echo "\"enabling IP forwarding:\"" "|" $LOGONLY ";" \			echo "\"ipforwardingwas=$fw\"" ">>" $info ";" \			echo 1 ">" $ipforward ";" \			"}"	fi	manualconns	plutorestartoncrash=""	case "$IPSECplutorestartoncrash" in	    true|[yY]|yes|restart) plutorestartoncrash="--plutorestartoncrash true";;	    false|[nN]|no|die) plutorestartoncrash="--plutorestartoncrash false" ;;        esac	# Pluto	case "$1" in	start|--start)	re=	;;	_autostart)	re=--re	;;	esac	if test " $IPSECpluto" != " no"	then		perform ipsec _plutorun $re \			--debug "\"$IPSECplutodebug\"" \			--uniqueids "\"$IPSECuniqueids\"" \			--nocrsend "\"$IPSECnocrsend\"" \			--strictcrlpolicy "\"$IPSECstrictcrlpolicy\"" \			--nat_traversal "\"$IPSECnat_traversal\"" \			--keep_alive "\"$IPSECkeep_alive\"" \			--force_keepalive "\"$IPSECforce_keepalive\"" \			--disable_port_floating "\"$IPSECdisable_port_floating\"" \			--virtual_private "\"$IPSECvirtual_private\"" \			--crlcheckinterval "\"$IPSECcrlcheckinterval\"" \                        --ocspuri "\"$IPSECocspuri\"" \			--nhelpers "\"$IPSECnhelpers\"" \			--dump "\"$IPSECdumpdir\"" \			--opts "\"$IPSECplutoopts\"" \			--stderrlog "\"$IPSECplutostderrlog\"" \			--wait "\"$IPSECplutowait\"" \			--pre "\"$IPSECprepluto\"" \			--post "\"$IPSECpostpluto\"" \			--log "\"$IPSECsyslog\"" $plutorestartoncrash \			--pid "\"$plutopid\"" "||" "{" \		    $KILLKLIPS ";" \		    rm -f $lock ";" \		    exit 1 ";" \		    "}"	fi	# done!	perform echo "\"...Openswan IPsec started\"" "|" $LOGONLY	;;  stop|--stop|_autostop)		# _autostop is same as stop	# Shut things down.	perform echo "\"Stopping Openswan IPsec...\""	perform \		if test -r $lock ";" \		then \			status=0 ";" \			. $info ";" \		else \			echo "\"stop ordered, but IPsec does not appear to be running!\"" ";" \			echo "\"doing cleanup anyway...\"" ";" \			status=1 ";" \		fi	if test " $IPSECforwardcontrol" = " yes"	then		perform test "\"X\$ipforwardingwas\"" = "\"X0\"" "&&" "{" \			echo "\"disabling IP forwarding:\"" "|" $LOGONLY ";" \			echo 0 ">" $ipforward ";" \			"}"	fi	perform test -f $plutopid "&&" "{" \		if ps -p '`' cat $plutopid '`' ">" /dev/null ";" \		then \			ipsec whack --shutdown "|" grep -v "^002" ";" \			sleep 1 ";" \			if test -s $plutopid ";" \			then \				echo "\"Attempt to shut Pluto down failed!  Trying kill:\"" ";" \				kill '`' cat $plutopid '`' ";" \				sleep 5 ";" \			fi ";" \		else \			echo "\"Removing orphaned $plutopid:\"" ";" \		fi ";" \		rm -f $plutopid ";" \		"}"	perform $KILLKLIPS	# When we exit we clean up (remove) the modules we are using, even the kame'ish ones	if test -e ${kamepfkey}; then		lsmod 2>&1 | grep "^xfrm4_tunnel" > /dev/null && rmmod -s xfrm4_tunnel		lsmod 2>&1 | grep "^af_key" > /dev/null && rmmod -s af_key		# old name for xfrm4_tunnel		lsmod 2>&1 | grep "^xfrm_user" > /dev/null && rmmod -s xfrm_user	fi 	perform test -d `dirname $subsyslock` "&&" rm -f $subsyslock	perform rm -f $info $lock $plutopid	perform echo "...Openswan IPsec stopped" "|" $LOGONLY	perform exit \$status	;;  status|--status)	if test " $IPSEC_setupflags" != " "	then		echo "$me $1 does not support $IPSEC_setupflags"		exit 1	fi	if test -f $info	then		hasinfo=yes	fi	if test -f $lock	then		haslock=yes	fi	if test -f $subsyslock	then		hassublock=yes	fi	if test -s $plutopid	then		if ps -p `cat $plutopid` >/dev/null		then			plutokind=normal		elif ps -C pluto >/dev/null		then			plutokind=illicit		fi	elif ps -C pluto >/dev/null	then		plutokind=orphaned	else		plutokind=no	fi	if test -r /proc/net/ipsec_eroute	then		if test " `wc -l < /proc/net/ipsec_eroute 2> /dev/null `" -gt 0		then			eroutes=`wc -l < /proc/net/ipsec_eroute 2> /dev/null | sed s/\ //g`		fi	else		eroutes=`ipsec eroute 2> /dev/null | wc -l | sed s/\ //g`	fi	if test -r $ipsecversion	then		klips=yes	elif test -r $modules	then		klips=maybe	else		klips=none	fi			if test -r $kamepfkey	then		lk26sec=yes	fi	if test "$haslock"	then		echo "IPsec running"		# might not be a subsystem lock dir, ignore that issue		if test "$plutokind" = "normal" -a \( "$klips" = "yes" -o "$lk26sec" = "yes" \)  -a "$hasinfo"		then			echo "pluto pid `cat $plutopid`"                        case "$eroutes" in                        0)      echo "No tunnels up"    ;;                        *)      echo "$eroutes tunnels up"      ;;                        esac			exit 0		fi		echo "but..."		if test "$plutokind" != "normal"		then			echo "$plutokind Pluto running!"		fi		if test ! "$hasinfo"		then			echo "$info file missing!"		fi		case $klips in		maybe)	echo "KLIPS module is not loaded!"	;;		none)	echo "no KLIPS in kernel!"		;;		esac		if test "$eroutes"		then			if test "$eroutes" -gt 0			then				echo "some eroutes exist"			fi		fi		exit 1	else		echo "IPsec stopped"		if test ! "$hassublock" -a ! "$hasinfo" -a "$plutokind" = "no" -a "$eroutes" -eq 0		then			exit 0		fi		echo "but..."		if test "$hassublock"		then			echo "has subsystem lock ($subsyslock)!"		fi		if test "$hasinfo"		then			echo "has $info file!"		fi		if test "$plutokind" != "no"		then			echo "An ${plutokind} Pluto is running?"		fi		if test "$eroutes" -gt 0		then			echo "some (${eroutes}) eroutes exist!"		fi		exit 1	fi	;;  --version)	if test " $IPSEC_setupflags" != " "	then		echo "$me $1 does not support $IPSEC_setupflags"		exit 1	fi	echo "$me $IPSEC_VERSION"	exit 0	;;  --help)	if test " $IPSEC_setupflags" != " "	then		echo "$me $1 does not support $IPSEC_setupflags"		exit 1	fi	echo "Usage: $me {--start|--stop|--restart|--status}"	exit 0	;;  *)	echo "Usage: $me {--start|--stop|--restart|--status}" >&2	exit 2esacexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -