Das Bash-Skript Skripte/IPTadmin, wie im Wiki beschrieben.
Es kann unter den Bedingungen der GNU General Public License (kurz GNU GPL oder GPL) in der Version 2.0 oder wahlweise einer neueren Version verwendet werden.
Es werden die Programme iptables und ip6tables verwendet, die nur für den Benutzer root
arbeiten. Das Skript verschafft sich deshalb zuerst per sudo die benötigte Identität, sofern es diese nicht bereits besitzt. Dabei wird eine ggf. gesetzte Umgebungsvariable IPT_DATA
in die neue Umgebung übernommen.
Die Funktionen minN
und Page
dienen nur zur Formatierung des Ausgabe indem durch Angabe einer mindestens vorhanden Zeilenanzahl leere Abschnitte unterdrückt bzw. mit Überschriften versehen werden.
Die Funktion IPT dient zur Verbesserung der Übersicht im Programm und ruft die Programme iptables und ip6tables entsprechend der im eigenen Kontext gefundenen Werte in der Variablen proto
für das IP-Protokoll und der Netfilter-Tabelle in der Variablen table
auf. Sie wird intensiv von der Funktion Rules
benutzt, welche die für Regelsätze benötigten Grundoperationen bereitstellt. Beachte die Bash-Besonderheit beim Trenner „;&“
im Case
-Befehl; dieser sorgt hier (und auch bei der Funktion Sets
) dafür, dass nach load
auch noch status
ausgeführt wird.
Die Funktion Sets
stellt die Grundoperationen für IP-Adressmengen bereit, sofern das benötigte Dienstprogramm ipset verfügbar ist und wird sonst als leere Dummy-Funktion definiert.
Die Funktion Files
realisiert die benötigten Grundoperationen für Dateisätze. Da das Programm nur Dateinamen ohne Leerzeichen und anderen problematischen Zeichen verwendet, wird auf Quotierung der Variablen zur Verbesserung der Lesbarkeit (hier und an anderen Stellen) weitgehend verzichtet.
Die Funktion Run
realisiert durch Rückgriff auf Rules
, Sets
und Files
die Kommandos. Indem dies nicht als Hauptprogramm, sondern als Funktion implementiert wird, eröffnet sich die einfache Möglichkeit, dass Bediener-Aktionen auch selbst andere Aktionen aufrufen können.
Info
ist die interaktive Hauptschleife des Programms. Die einstellbare Wiederholrate von 1-30 Sekunden wird über den Timeout (Variable TMOUT
) für den Bash-Befehl read
realisiert.
KEY
präsentiert dem Bediener einen Prompt und wartet auf einen Tastendruck.
Das Haupprogramm besteht nur aus 4 Befehlen:
Es wird zuerst in das Arbeitsverzeichnis gewechselt, welches ggf. erst erzeugt wird.
Wenn das Programm nicht von systemd gestartet wurde und somit einen menschlichen Bediener hat, wird das Arbeitsverzeichnis zur Bestätigung angezeigt.
Die als Programmargumente auf der Kommandozeile angegebenen Kommandos werden abgearbeitet. Als erstes wird automatisch die Protokollauswahl auf „beide“ (=64) eingestellt.
Wenn das letzte ausgeführte Kommando eine Protokollauswahl war, werden einmalig nur die Regeln ausgegeben.