function Bridges_list(){ $t=$_GET["t"]; $tpl=new templates(); $MyPage=CurrentPageName(); $q=new mysql(); $users=new usersMenus(); $sock=new sockets(); $xtime=$_GET["xtime"]; $table="iptables_bridge"; $search='%'; $database="artica_backup"; $page=1; $FORCE_FILTER=null; $tcp=new networking(); if(!$q->TABLE_EXISTS($table, $database)){json_error_show("`$table` doesn't exists...");} if($q->COUNT_ROWS($table, $database)==0){json_error_show("No rule");} if(isset($_POST["sortname"])){if($_POST["sortname"]<>null){$ORDER="ORDER BY {$_POST["sortname"]} {$_POST["sortorder"]}";}} if(isset($_POST['page'])) {$page = $_POST['page'];} $searchstring=string_to_flexquery(); if($searchstring<>null){ $sql="SELECT COUNT(*) as TCOUNT FROM $table WHERE 1 $FORCE_FILTER $searchstring"; $ligne=mysql_fetch_array($q->QUERY_SQL($sql,$database)); $total = $ligne["TCOUNT"]; }else{ $sql="SELECT COUNT(*) as TCOUNT FROM $table WHERE 1 $FORCE_FILTER"; $ligne=mysql_fetch_array($q->QUERY_SQL($sql,$database)); $total = $ligne["TCOUNT"]; } if (isset($_POST['rp'])) {$rp = $_POST['rp'];} $pageStart = ($page-1)*$rp; $limitSql = "LIMIT $pageStart, $rp"; $sql="SELECT * FROM $table WHERE 1 $searchstring $FORCE_FILTER $ORDER $limitSql"; writelogs($sql,__FUNCTION__,__FILE__,__LINE__); $results = $q->QUERY_SQL($sql,$database); $data = array(); $data['page'] = $page; $data['total'] = $total; $data['rows'] = array(); if(!$q->ok){json_error_show($q->mysql_error);} while ($ligne = mysql_fetch_assoc($results)) { $zmd5=md5(serialize($ligne)); $color="black"; $ipaddrinfos=VirtualNicInfosIPaddr($ligne["nics_virtuals_id"]); $nic_linked=$ligne["nic_linked"]; $infos=$tcp->GetNicInfos($nic_linked); $rulesIcon=imgsimple("script-32.png","{rules}","BridgeRules({$ligne["ID"]})"); $delete=imgsimple("delete-24.png","{delete}","BridgeDelete({$ligne["ID"]},'$zmd5')"); $data['rows'][] = array( 'id' => "$zmd5", 'cell' => array( "<span style='font-size:16px;color:$color'><img src='img/folder-network-32.png'></span>", "<span style='font-size:16px;color:$color'>{$ipaddrinfos["ETH"]} ({$ipaddrinfos["IPADDR"]})</span>", "<span style='font-size:16px;color:$color'><img src='img/arrow-right-32.png'></span>", "<span style='font-size:16px;color:$color'>$nic_linked ({$infos["IPADDR"]})</strong></span>", "<span style='font-size:16px;color:$color'>$rulesIcon</span>", "<span style='font-size:16px;color:$color'>$delete</span>", ) ); } echo json_encode($data); }
function bridges_build() { if (isset($GLOBALS["bridges_build_executed"])) { return; } $GLOBALS["bridges_build_executed"] = true; $unix = new unix(); $iptables = $unix->find_program("iptables"); $sysctl = $unix->find_program("sysctl"); $php5 = $unix->LOCATE_PHP5_BIN(); $iptables_rules = array(); $sql = "SELECT * FROM iptables_bridge ORDER BY ID DESC"; $q = new mysql(); $results = $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { return null; } $GLOBALS["SCRIPTS"][] = ""; $GLOBALS["SCRIPTS"][] = "# [" . __LINE__ . "]"; $GLOBALS["SCRIPTS"][] = "# [" . __LINE__ . "] *******************************"; $GLOBALS["SCRIPTS"][] = "# [" . __LINE__ . "] **** Iptables Bridges ****"; $GLOBALS["SCRIPTS"][] = "# [" . __LINE__ . "] *******************************"; $GLOBALS["SCRIPTS"][] = "# [" . __LINE__ . "]"; $GLOBALS["SCRIPTS"][] = "# [" . __LINE__ . "]:" . mysql_num_rows($results) . " rule(s)"; $GLOBALS["SCRIPTS"][] = "{$php5} " . __FILE__ . " --iptables-bridge-delete"; if (mysql_num_rows($results) == 0) { return; } $GLOBALS["SCRIPTS"][] = "{$sysctl} -w net.ipv4.ip_forward=1"; $NetBuilder = new system_nic(); $NetBuilder->LoadTools(); while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { if ($ligne["nics_virtuals_id"] > 0) { $array_virtual_infos = VirtualNicInfosIPaddr($ligne["nics_virtuals_id"]); $nicvirtual = $array_virtual_infos["IPADDR"]; if ($nicvirtual == null) { continue; } } if ($ligne["nic_inbound"] != null) { $nicvirtual = $ligne["nic_inbound"]; $nicvirtual = $NetBuilder->NicToOther($nicvirtual); } $nic_linked = trim($ligne["nic_linked"]); if (trim($nic_linked) == null) { continue; } if (trim($nicvirtual) == null) { continue; } if (preg_match("#(.+?):([0-9]+)#", $nic_linked, $re)) { $array_virtual_infos = VirtualNicInfosIPaddr($re[2]); $nic_linked = $array_virtual_infos["IPADDR"]; } $id = $ligne["ID"]; $nic_linked = $NetBuilder->NicToOther($nic_linked); $GLOBALS["SCRIPTS"][] = "# [" . __LINE__ . "]: [{$id}] Virtuals bridge {$nicvirtual} to {$nic_linked}"; $GLOBALS["SCRIPTS"][] = "{$iptables} -A FORWARD -i {$nicvirtual} -o {$nic_linked} -m state --state ESTABLISHED,RELATED -j ACCEPT -m comment --comment \"ArticaBridgesVirtual:{$id}\" 2>&1"; $GLOBALS["SCRIPTS"][] = "{$iptables} -A FORWARD -i {$nicvirtual} -o {$nic_linked} -j ACCEPT -m comment --comment \"ArticaBridgesVirtual:{$id}\" 2>&1"; $GLOBALS["SCRIPTS"][] = "{$iptables} -t nat -A POSTROUTING -o {$nic_linked} -j MASQUERADE\t-m comment --comment \"ArticaBridgesVirtual:{$id}\" 2>&1"; } }
function bridges_build() { $unix = new unix(); $iptables = $unix->find_program("iptables"); $sysctl = $unix->find_program("sysctl"); $sql = "SELECT * FROM iptables_bridge ORDER BY ID DESC"; $q = new mysql(); $results = $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { return null; } while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { $array_virtual_infos = VirtualNicInfosIPaddr($ligne["nics_virtuals_id"]); $nicvirtual = $array_virtual_infos["IPADDR"]; if ($nicvirtual == null) { continue; } $nic_linked = trim($ligne["nic_linked"]); if (trim($nic_linked) == null) { continue; } if (preg_match("#(.+?):([0-9]+)#", $nic_linked, $re)) { $array_virtual_infos = VirtualNicInfosIPaddr($re[2]); $nic_linked = $array_virtual_infos["IPADDR"]; } $id = $ligne["ID"]; echo "Starting......: Virtuals bridge {$nicvirtual} to {$nic_linked}\n"; $iptables_rules[] = "{$iptables} -A FORWARD -i {$nicvirtual} -o {$nic_linked} -m state --state ESTABLISHED,RELATED -j ACCEPT -m comment --comment \"ArticaBridgesVirtual:{$id}\" 2>&1"; $iptables_rules[] = "{$iptables} -A FORWARD -i {$nicvirtual} -o {$nic_linked} -j ACCEPT -m comment --comment \"ArticaBridgesVirtual:{$id}\" 2>&1"; $iptables_rules[] = "{$iptables} -t nat -A POSTROUTING -o {$nic_linked} -j MASQUERADE\t-m comment --comment \"ArticaBridgesVirtual:{$id}\" 2>&1"; } bridges_delete(); $rules = 0; if (count($iptables_rules) > 0) { while (list($index, $chain) = each($iptables_rules)) { unset($results); exec($chain, $results); if (count($results) > 0) { echo "Starting......: Virtuals bridge ERROR {$chain}\n"; while (list($num, $line) = each($results)) { echo "Starting......: Virtuals bridge ERROR {$line}\n"; } } else { $rules = $rules + 1; } } } if ($rules > 0) { shell_exec("{$sysctl} -w net.ipv4.ip_forward=1"); } echo "Starting......: Virtuals bridge adding iptables {$rules} rule(s)\n"; }
function Bridges_list() { $html = "<table cellspacing='0' cellpadding='0' border='0' class='tableView'>\n<thead class='thead'>\n\t<tr>\n\t<th colspan=2 nowrap>{from}</th>\n\t<th nowrap> </th>\n\t<th colspan=2 nowrap>{to}</th>\n\t<th>{rules}</th>\n\t<th nowrap>{delete}</th>\n\t</tr>\n</thead>"; $sql = "SELECT * FROM iptables_bridge ORDER BY ID DESC"; $q = new mysql(); $results = $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { if (preg_match("#doesn't exist#", $q->mysql_error)) { $q->BuildTables(); echo "<script>BridgeRefresh();</script>"; } echo "<H2>{$q->mysql_error}</H2>"; } $tcp = new networking(); while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { if ($classtr == "oddRow") { $classtr = null; } else { $classtr = "oddRow"; } $ipaddrinfos = VirtualNicInfosIPaddr($ligne["nics_virtuals_id"]); $nic_linked = $ligne["nic_linked"]; $infos = $tcp->GetNicInfos($nic_linked); $html = $html . "\n\t\t<tr class={$classtr}>\n\t\t\t<td width=1% style='padding:3px'><img src='img/folder-network-32.png'></td>\n\t\t\t<td width=33%><strong style='font-size:14px'>{$ipaddrinfos["ETH"]} ({$ipaddrinfos["IPADDR"]})</strong></td>\n\t\t\t<td width=33% style='padding:3px' align='center'><img src='img/arrow-right-32.png'></td>\n\t\t\t<td width=1% style='padding:3px'><img src='img/folder-network-32.png'></td>\n\t\t\t<td width=33% nowrap><strong style='font-size:14px'>{$nic_linked} ({$infos["IPADDR"]})</strong></td>\n\t\t\t<td width=1% align=center>" . imgtootltip("script-32.png", "{rules}", "BridgeRules({$ligne["ID"]})") . "</td>\n\t\t\t<td width=1% align=center>" . imgtootltip("delete-24.png", "{delete}", "BridgeDelete({$ligne["ID"]})") . "</td>\n\t\t\t\n\t\t</tr>"; } $html = $html . "</table>"; $tpl = new templates(); echo $tpl->_ENGINE_parse_body($html); }