rewrite post-merge to auto-generate tinc config
This commit is contained in:
		
					parent
					
						
							
								c77eaf7eb7
							
						
					
				
			
			
				commit
				
					
						579794152f
					
				
			
		
					 1 changed files with 53 additions and 6 deletions
				
			
		|  | @ -1,10 +1,57 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| # post-merge hook für Debian um tinc zu reloaden | # post-merge hook for Debian systems | ||||||
|  | # | ||||||
|  | # 1. copy to .git/hooks | ||||||
|  | # 2. to test run "git pull -q" | ||||||
|  | # 3. create cronjob, which runs "git pull -q" in your ${icvpn} dir | ||||||
| # | # | ||||||
| # 1. nach .git/hooks kopieren |  | ||||||
| # 2. git pull -q ausführen zum testen |  | ||||||
| # 3. cronjob erstellen, der git pull -q im richtigen |  | ||||||
| #    Verzeichnis ausführt |  | ||||||
| 
 | 
 | ||||||
| /etc/init.d/tinc reload icvpn | icvpndir=/etc/tinc/icvpn/ | ||||||
|  | tinccfg=tinc.conf | ||||||
|  | export icvpndir tinccfg | ||||||
|  | 
 | ||||||
|  | PATH="/sbin:/bin:/usr/sbin:/usr/bin" | ||||||
|  | tmpfile=$(mktemp) | ||||||
|  | export PATH tmpfile | ||||||
|  | 
 | ||||||
|  | # get changed files | ||||||
|  | changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)" | ||||||
|  | 
 | ||||||
|  | # run $2 if $1 matches changed files | ||||||
|  | check_run() { | ||||||
|  | 	echo "$changed_files" | grep --quiet "$1" && eval "$2" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # generate ${tinccfg} | ||||||
|  | gen_conf() { | ||||||
|  | 	test -w ${icvpndir}/${tinccfg} || \ | ||||||
|  | 		{ echo "ERR: ${tinccfg} (${icvpndir}/${tinccfg}) is not writeable, exiting." >&2; exit 1; } | ||||||
|  | 
 | ||||||
|  | 	# remove all ConnectTo Statements | ||||||
|  | 	grep -v 'ConnectTo' ${icvpndir}/${tinccfg} > ${tmpfile} | ||||||
|  | 	# add ConnectTo Statements for all hosts | ||||||
|  | 	for host in ${icvpndir}/hosts/[a-zA-Z]*; do | ||||||
|  | 		echo "ConnectTo = ${host##*/}" >> ${tmpfile} | ||||||
|  | 	done | ||||||
|  | 
 | ||||||
|  | 	test -s ${tmpfile} || \ | ||||||
|  | 		{ echo "ERR: generated config was empty, zeh sky is falling, exiting." >&2; exit 2; } | ||||||
|  | 
 | ||||||
|  | 	num_connectto=$(grep -s ConnectTo ${tmpfile} | wc -l) | ||||||
|  | 	[ ${num_connectto} -gt 20 ] || \ | ||||||
|  | 		{ echo "ERR: generated config has ${num_connectto} <= 20 ConnectTo lines, safety 1st, exiting." >&2; exit 30; } | ||||||
|  | 	num_all=$(cat ${tmpfile} | wc -l) | ||||||
|  | 	[ ${num_all} -gt 25 ] || \ | ||||||
|  | 		{ echo "ERR: generated config has ${num_all} <= 25 lines, safety 1st, exiting." >&2; exit 31; } | ||||||
|  | 
 | ||||||
|  | 	cp -f ${icvpndir}/${tinccfg} ${icvpndir}/${tinccfg}.old | ||||||
|  | 	cat ${tmpfile} > ${icvpndir}/${tinccfg} | ||||||
|  | 
 | ||||||
|  | 	invoke-rc.d tinc reload icvpn | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | check_run hosts/[a-zA-Z] gen_conf | ||||||
|  | 
 | ||||||
|  | rm -f ${tmpfile} | ||||||
|  | exit 0 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ralf Heiringhoff
				Ralf Heiringhoff