#!/usr/bin/tclsh
####################################################################
#Programme écrit par V. Verdon
#Network-in est un simulateur de réseau
#placé sous licence GNU GPL (consulter le fichier joint intitulé "licence.txt"
# commande iptables modifiée pour conserver la connexion par eth99
####################################################################
# Version 20240102

# nom de l'interface
set interf_supp eth99

# lecture du resultat de la commande iptables
set a [catch {set res [eval exec /sbin/iptables $argv]} err]
if {$a == {1}} {
  puts $err
  exit
}

# prise en compte des regles necessaires pour le fonctionnement de Xwindow
if {![regexp -- {-L} $argv]} {
#on efface les regles pour X car on va les réécrire
catch {exec /sbin/iptables -D INPUT -i $interf_supp -p tcp --sport 6000 -j ACCEPT}
catch {exec /sbin/iptables -D OUTPUT  -o $interf_supp -p tcp --dport 6000 -j ACCEPT}
#On réécrit les règles pour X pour maintenir la connexion
exec /sbin/iptables -I INPUT 1 -i $interf_supp -p tcp --sport 6000 -j ACCEPT
exec /sbin/iptables -I OUTPUT 1 -o $interf_supp -p tcp --dport 6000 -j ACCEPT
}

# traitement de l'affichage de la sortie de iptables
set res [split $res \n]
set long [llength $res]
for {set i 0} {$i < $long} {incr i} {
  set ligne [lindex $res $i]
  if {![regexp "($interf_supp)|(ACCEPT.*(s|d)pt:(x11|6000))" $ligne]} {
    puts $ligne
  }
}
