0 GROUP BY firewall_versointerno_regole.id_firewall_versointerno "; $nomi = array (); $file = array (); $esegui = array (); $res = mysql_query( $query, $DB_ID ); while ($dato = mysql_fetch_array ( $res )) { $id = $dato['id']; $proto = $dato['proto']; $stato = $dato['stato']; $int_port = $dato['int_port']; $ext_port = $dato['fw_port']; $int_ip = $dato['int_ip']; $ext_ip = $dato['ext_ip']; $portaIN = $FW_conf['portaIN']; array_push($nomi, "REGOLA-I$id"); if ($stato == 2) $perm = "PERMANENTE"; else $perm = ""; $regola = "### START REGOLA-I$id $perm ###\n"; $regola .= "iptables -I PREROUTING -t nat -p $proto -i $portaIN --dport $ext_port -j DNAT --to $int_ip:$int_port\n"; $regola .= "iptables -N REGOLA-I$id\n"; $regola .= "iptables -I REGOLA-I$id -p $proto -i $portaIN -s $ext_ip -d $int_ip --dport $int_port -j ACCEPT\n"; $regola .= "iptables -I REGOLA-I$id -p $proto -o $portaIN -d $ext_ip -s $int_ip --sport $int_port -j ACCEPT\n"; $regola .= "iptables -I FORWARD -j REGOLA-I$id\n"; $regola .= "### STOP REGOLA-I$id $perm ###\n"; array_push($file, $regola); $regola .= "sudo iptables -I PREROUTING -t nat -p $proto -i $portaIN --dport $ext_port -j DNAT --to $int_ip:$int_port; "; $regola .= "sudo iptables -N REGOLA-I$id; "; $regola .= "sudo iptables -I REGOLA-I$id -p $proto -i $portaIN -s $ext_ip -d $int_ip --dport $int_port -j ACCEPT; "; $regola .= "sudo iptables -I REGOLA-I$id -p $proto -o $portaIN -d $ext_ip -s $int_ip --sport $int_port -j ACCEPT; "; $regola .= "sudo iptables -I FORWARD -j REGOLA-I$id; "; $esegui['REGOLA-I'.$id] = $regola; } $ritorna[0] = $nomi; $ritorna[1] = $file; $ritorna[2] = $esegui; return $ritorna; } function genera_ext () { global $UTENTE, $DB_ID, $CONF, $FW_conf; $query = " SELECT firewall_versoesterno_regole.id, firewall_versoesterno_regole.stato, firewall_versoesterno.proto, firewall_versoesterno.int_port, firewall_versoesterno.ext_port, proxy_pool.ip AS int_ip, firewall_macchine_ext.ip AS ext_ip FROM firewall_versoesterno_regole JOIN firewall_versoesterno ON firewall_versoesterno_regole.id_firewall_versoesterno = firewall_versoesterno.id JOIN firewall_macchine ON firewall_versoesterno.id_firewall_macchine = firewall_macchine.id JOIN proxy_pool ON firewall_macchine.id_proxy_pool = proxy_pool.id JOIN firewall_macchine_ext ON firewall_versoesterno.id_firewall_macchine_ext = firewall_macchine_ext.id WHERE firewall_versoesterno_regole.attivo = 1 AND firewall_versoesterno_regole.stato > 0 GROUP BY firewall_versoesterno_regole.id_firewall_versoesterno "; $nomi = array (); $file = array (); $esegui = array (); $res = mysql_query( $query, $DB_ID ); while ($dato = mysql_fetch_array ( $res )) { $id = $dato['id']; $proto = $dato['proto']; $stato = $dato['stato']; $int_port = $dato['int_port']; $ext_port = $dato['ext_port']; $int_ip = $dato['int_ip']; $ext_ip = $dato['ext_ip']; $portaIN = $FW_conf['portaIN']; array_push($nomi, "REGOLA-U$id"); if ($stato == 2) $perm = "PERMANENTE"; else $perm = ""; if ($int_ip != "") { $ipint1 = "-s $int_ip"; $ipint2 = "-d $int_ip"; } else { $ipint1 = ""; $ipint2 = ""; } if ($ext_ip != "") { $ipext1 = "-d $ext_ip"; $ipext2 = "-s $ext_ip"; } else { $ipext1 = ""; $ipext2 = ""; } if ($int_port != "") { $ptint1 = "--sport $int_port"; $ptint2 = "--dport $int_port"; } else { $ptint1 = ""; $ptint2 = ""; } if ($ext_port != "") { $ptext1 = "--dport $ext_port"; $ptext2 = "--sport $ext_port"; } else { $ptext1 = ""; $ptext2 = ""; } $regola = "### START REGOLA-U$id $perm ###\n"; $regola .= "iptables -N REGOLA-U$id\n"; $regola .= "iptables -I REGOLA-U$id -p $proto -o $portaIN $ipint1 $ptint1 $ipext1 $ptext1 -j ACCEPT\n"; $regola .= "iptables -I REGOLA-U$id -p $proto -i $portaIN $ipint2 $ptint2 $ipext2 $ptext2 -j ACCEPT\n"; $regola .= "iptables -I FORWARD -j REGOLA-U$id\n"; $regola .= "### STOP REGOLA-U$id $perm ###\n"; array_push($file, $regola); $regola = "sudo iptables -N REGOLA-U$id; "; $regola .= "sudo iptables -I REGOLA-U$id -p $proto -o $portaIN $ipint1 $ptint1 $ipext1 $ptext1 -j ACCEPT; "; $regola .= "sudo iptables -I REGOLA-U$id -p $proto -i $portaIN $ipint2 $ptint2 $ipext2 $ptext2 -j ACCEPT; "; $regola .= "sudo iptables -I FORWARD -j REGOLA-U$id"; $esegui['REGOLA-U'.$id] = $regola; } $ritorna[0] = $nomi; $ritorna[1] = $file; $ritorna[2] = $esegui; return $ritorna; } function elimina ($cerca) { exec ("sudo iptables -nL FORWARD --line-numbers | grep $cerca", $ritorno); foreach (array_reverse($ritorno) as $riga) { $pezzi = explode (" " , $riga); exec ("sudo iptables -D FORWARD ".$pezzi[0]); exec ("sudo iptables -F $cerca"); exec ("sudo iptables -X $cerca"); } } function azzera () { global $UTENTE, $DB_ID, $CONF, $FW_conf; $query = " UPDATE firewall_versoesterno_regole SET stato = 0, modifica = NOW() WHERE stato = 1 "; $res = mysql_query( $query, $DB_ID ); $query = " UPDATE firewall_versointerno_regole SET stato = 0, modifica = NOW() WHERE stato = 1 "; $res = mysql_query( $query, $DB_ID ); } ?>