Entwickler Treffen

Tim Niemeyer tim.niemeyer at mastersword.de
Mi Sep 30 22:11:46 CEST 2015


Hi zusammen

Ohne mir näher die Syntax angeschaut zu haben: Ich bin begeistert.

Sieht doch insgesamt nach sehr wenig Aufwand aus. Jetzt müssen wir das
nur noch aufsetzen. ;-)

Tim

Am Dienstag, den 29.09.2015, 21:08 +0200 schrieb mayosemmel:
> Hallo zusammen,
> 
> zum Thema fff-community hatten wir ja beim letzten Technik Treffen
> besprochen, das man ausschließlich primäre DNS Server aufsetzt und dann
> das Zone-File Synchronisiert.
> Damit habe ich mich dann nochmal ein bisschen auseinander gesetzt und
> zur Synchronisation ein Script geschrieben (siehe unten). Wenn ihr
> Verbesserungen habt, immer drauf los!
> Alles weitere können wir ja dann am Freitag besprechen.
> 
> Grüße Jan
> 
> 
> #!/bin/bash
> 
> #Server die abgefragt werden sollen (Alle DNS Peers)
> DnsPeers=(ns1.kraus.moe kraus.moe ns2.kraus.moe)
> #Name der Zone die verteilt werden soll
> DomainZone="kraus.moe"
> #Position und Name des Zone Files
> OwnZoneFile="/etc/bind/db.kraus.moe"
> #Temporäres Verzeichnis - muss pro Zone exclusiv sein!
> TempDir="/tmp/fff-dns"
> #Backup Verzeichnis
> BackupDir="/home/freifunk/DNS-Backup"
> #Wie viele Backups sollen aufgehoben werden? Nur Integer Werte!
> BackupsToStore=20
> 
> 
> function backup
> {
> 	datetime=$(date +"%Y-%m-%d_%H-%M-%S")
> 	mkdir -p $1/$datetime
> 	cp $OwnZoneFile $1/$datetime/.
> 	BackupFiles=( $(ls -t $1) )
> 	if [ -n ${BackupFiles[0]} ]  && [ ${#BackupFiles[@]} -gt 20 ]
> 	then
> 		rm -rf $1/${BackupFiles[$BackupsToStore]}
> 	fi
> }
> 
> function exit_script
> {
> 	rm -rf $TempDir
> 	exit $1
> }
> 
> mkdir -p $TempDir
> cd $TempDir
> OwnSerial=$(grep SOA $OwnZoneFile |awk 'NR==1{print $7}')
> HighestSerialSoFar=0
> for peer in "${DnsPeers[@]}"
> do
> 	#Zone File von Peering DNS Servern herunterladen
> 	dig @$peer $DomainZone axfr |grep -v ";"> $peer
> 	#Seriennummer des Zone Files einlesen
> 	PeerSerial=$(grep SOA $peer |awk 'NR==1{print $7}')
> 	#Falls keine Seriennummer vorhanden, ist das File invalid oder die
> Verbindung zum Peer ist nicht in Ordnung
> 	if [ -z $PeerSerial ]
> 	then
> 		rm -f $peer
> 		continue
> 		PeerSerial=1
> 	fi
> 	#Falls eigenes Zone File keine Seriennummer enthält und somit invalid
> ist, automatisch erstbestes valides nutzen
> 	if [ -z $OwnSerial ]
> 	then
> 		cp $peer $OwnZoneFile
> 		exit 0
> 	fi
> 	#Nur die Zone-Files mit dem höchsten Serial behalten - wenn dieser
> höher ist als der bereits vorhandene
> 	if [ $OwnSerial -ge $PeerSerial ]
> 	then
> 		rm -f $peer
> 		continue
> 	elif [ ${HighestSerialSoFar[0]} -gt $PeerSerial ]
> 	then
> 		rm -f $peer
> 		continue
> 	else
> 		HighestSerialSoFar=( $PeerSerial $peer )
> 	fi
> done
> 
> #Anzahl der verbliebenen Zone Files ermitteln
> PeerZoneFileCount=$(ls -l|wc -l)
> #Im Falle von einem Update vorher ein Backup machen
> if [ $PeerZoneFileCount -gt 1 ]
> then
> 	backup $BackupDir $BackupsToStore
> else
> 	exit_script 0
> fi
> 
> #Falls nur ein Zone File verblieben ist, direkt einspielen und
> neustarten
> if [ $PeerZoneFileCount -eq 2 ]
> then
> 	cp ${HighestSerialSoFar[1]} $OwnZoneFile
> 	/etc/init.d/bind9 restart
> 	exit_script 0
> #Im Fall von mehreren Zone Files, prüfen ob alle identisch sind. Falls
> nicht Abbruch. Ansonsten einspielen und neustart
> else
> 	md5=$(md5sum ${HighestSerialSoFar[1]} |awk '{print $1}')
> 	for ZoneFile in *
> 	do
> 		loopmd5=$(md5sum $ZoneFile |awk '{print $1}')
> 		if [ $md5 != $loopmd5 ]
> 		then
> 			echo $md5 $loopmd5
> 			exit_script 1
> 		fi
> 	done
> 	cp ${HighestSerialSoFar[1]} $OwnZoneFile
>         /etc/init.d/bind9 restart
>         exit_script 0
> fi
> 
> 
> Am Montag, den 28.09.2015, 03:32 +0200 schrieb Christian Dresel:
> > Guten Morgen
> > 
> > ich ebenso, außer die Mehrheit stammt von wo anders her, dann kann man
> > natürlich drüber reden ;)
> > 
> > mfg
> > 
> > Christian
> > 
> > Am 27.09.2015 um 22:18 schrieb mayosemmel:
> > 
> > > Hallo Tim,
> > > 
> > > Ich wäre auch fürs Lab. 
> > > 
> > > Grüße Jan
> > > 
> > > ____________________________________________________________________
> > > Von: Tim Niemeyer
> > > Gesendet: ‎27.‎09.‎2015 22:16
> > > An: franken-dev at freifunk.net
> > > Betreff: Re: Entwickler Treffen
> > > 
> > > 
> > > Am Sonntag, den 27.09.2015, 17:07 +0200 schrieb Tim Niemeyer:
> > > > Moin zusammen
> > > > 
> > > > Es wird mal wieder Zeit.
> > > > 
> > > > https://dudle.inf.tu-dresden.de/Dev_Meeting/
> > > > 
> > > > Ich denke wir nehmen dann den Termin, der heute Abend ~22 Uhr raus
> > > > kommt.
> > > 
> > > Yay, prima Sache. Das Dudle zeigt ganz deutlich auf Freitag 19:00
> > > Uhr.
> > > Ich hab mal wieder das Büro im Lab reserviert, aber wie gesagt
> > > können
> > > wir gern auch wo anders hin.
> > > 
> > > Tim
> > > 
> > > > 
> > > > Als Ort würde ich spontan das Nürnberger Lab vorschlagen, wir
> > > können das
> > > > aber auch woanders, z.B. in Bamberg oder so, machen.
> > > > 
> > > > Punkte:
> > > > * Dezentraler keyXchange
> > > > * VPN Server Refugee
> > > > * Netmon / Monitoring
> > > > * L3 Routing über Funkstrecken
> > > > * OLSRv2
> > > > * DNS: fff.community
> > > > 
> > > > Tim
> > > > -- 
> > > > franken-dev mailing list
> > > > franken-dev at freifunk.net
> > > >
> > > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
> > > 
> > > 
> > > -- 
> > > franken-dev mailing list
> > > franken-dev at freifunk.net
> > > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
> > > 
> > > 
> > 
> > -- 
> > franken-dev mailing list
> > franken-dev at freifunk.net
> > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
> 
> 





Mehr Informationen über die Mailingliste franken-dev