Add first bunch of scripts
This commit is contained in:
		
							
								
								
									
										114
									
								
								nullroute
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										114
									
								
								nullroute
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,114 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # Copyright (c) 2015 Babak Farrokhi.  All rights reserved. | ||||
| # | ||||
| # Redistribution and use in source and binary forms, with or without | ||||
| # modification, are permitted provided that the following conditions | ||||
| # are met: | ||||
| # | ||||
| # 1. Redistributions of source code must retain the above copyright | ||||
| #    notice, this list of conditions and the following disclaimer. | ||||
| # 2. Redistributions in binary form must reproduce the above copyright | ||||
| #    notice, this list of conditions and the following disclaimer in the | ||||
| #    documentation and/or other materials provided with the distribution. | ||||
| # | ||||
| # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND | ||||
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||||
| # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||||
| # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||
| # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
| # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
| # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
| # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
| # SUCH DAMAGE. | ||||
| # | ||||
| # this script nullroutes a give CIDR | ||||
| # | ||||
| # | ||||
|  | ||||
| ROUTE="/sbin/route" | ||||
| NETSTAT="/usr/bin/netstat" | ||||
| GREP="/usr/bin/grep" | ||||
| AWK="/usr/bin/awk" | ||||
| CFG="/usr/local/etc/nullroute.conf" | ||||
|  | ||||
| nullroute() { | ||||
| 	local ADDR=${1}; shift; | ||||
|  | ||||
| 	${ROUTE} add -net ${ADDR} 127.0.0.1 -blackhole | ||||
| } | ||||
|  | ||||
| delroute() { | ||||
| 	local ADDR=${1}; shift; | ||||
| 	 | ||||
| 	${ROUTE} delete ${ADDR} | ||||
| } | ||||
|  | ||||
| showroute() { | ||||
| 	${NETSTAT} -rn | ${GREP} "SB " | ${AWK} '{print $1}' | ||||
| } | ||||
|  | ||||
| loadroutes() { | ||||
| 	if [ ! -f ${CFG} ]; then | ||||
| 		echo "Cannot open ${CFG}" | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 	 | ||||
| 	for R in `cat ${CFG} | ${GREP} -E -v '^[[:space:]]*$'`; do | ||||
| 		nullroute ${R}	 | ||||
| 	done | ||||
| } | ||||
|  | ||||
| saveroutes() { | ||||
| 	showroute > ${CFG} && echo "configuration saved to ${CFG}" | ||||
| } | ||||
|  | ||||
| flush() { | ||||
| 	for R in `${NETSTAT} -rn | ${GREP} "SB " | ${AWK} '{print $1}'`; do | ||||
| 		delroute ${R} | ||||
| 	done	 | ||||
| } | ||||
|  | ||||
| help() { | ||||
| 	echo "$0 [ add <host> | del <host> | show | load | save | flush ]" | ||||
| } | ||||
|  | ||||
| if [ $# -lt 1 ]; then | ||||
| 	help | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| case ${1} in | ||||
| 	add) | ||||
| 		if [ x${2} == x ]; then | ||||
| 			help | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		nullroute ${2} | ||||
| 		;; | ||||
| 	del) | ||||
| 		if [ x${2} == x ]; then | ||||
| 			help | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		delroute ${2} | ||||
| 		;; | ||||
| 	show) | ||||
| 		showroute | ||||
| 		;; | ||||
| 	load) | ||||
| 		loadroutes | ||||
| 		;; | ||||
| 	save) | ||||
| 		saveroutes | ||||
| 		;; | ||||
| 	flush) | ||||
| 		flush | ||||
| 		;; | ||||
| 	*) | ||||
| 		help | ||||
| 		;; | ||||
| esac		 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user