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. = Erläuterungen zum Programmcode = * 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.