diff options
-rw-r--r-- | etc/inc/filter.inc | 49 | ||||
-rw-r--r-- | etc/inc/interfaces.inc | 12 | ||||
-rw-r--r-- | etc/inc/rrd.inc | 2 | ||||
-rwxr-xr-x | usr/local/www/diag_dump_states.php | 2 | ||||
-rwxr-xr-x | usr/local/www/firewall_nat_edit.php | 6 | ||||
-rwxr-xr-x | usr/local/www/firewall_rules_edit.php | 29 | ||||
-rwxr-xr-x | usr/local/www/guiconfig.inc | 2 | ||||
-rwxr-xr-x | usr/local/www/interfaces.php | 12 | ||||
-rw-r--r-- | usr/local/www/javascript/firewall_nat_edit/firewall_nat_edit.js | 6 | ||||
-rw-r--r-- | usr/local/www/themes/pfsense_ng_fs/rrdcolors.inc.php | 71 |
10 files changed, 129 insertions, 62 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index ba2dfa0..274d0bb 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -296,7 +296,7 @@ function filter_configure_sync($delete_states_if_needed = true) { $rules .= discover_pkg_rules("filter"); @file_put_contents("{$g['tmp_path']}/rules.limits", $limitrules); - mwexec("/sbin/pfctl -o basic -f {$g['tmp_path']}/rules.limits"); + mwexec("/sbin/pfctl -f {$g['tmp_path']}/rules.limits"); if (!@file_put_contents("{$g['tmp_path']}/rules.debug", $rules, LOCK_EX)) { log_error("WARNING: Could not write new rules!"); @@ -1180,11 +1180,12 @@ function filter_generate_reflection_proxy($rule, $nordr, $rdr_ifs, $srcaddr, $ds } $dstaddr = explode(" ", $dstaddr_port); - if($dstaddr[2]) - $rflctintrange = $dstaddr[2]; - else + if($dstaddr[2]) { + $rflctintrange = array_pop($dstaddr); + array_pop($dstaddr); + } else return ""; - $dstaddr = $dstaddr[0]; + $dstaddr = implode(" ", $dstaddr); if(empty($dstaddr) || trim($dstaddr) == "0.0.0.0" || strtolower(trim($dstaddr)) == "port") return ""; @@ -2328,7 +2329,7 @@ function filter_generate_user_rule($rule) { $aline['flags'] = "flags S/SA "; } } - if (($rule['protocol'] == "tcp") && ($type == "pass")) { + if (in_array($rule['protocol'], array("icmp","udp","tcp","tcp/udp")) && ($type == "pass")) { /* * # keep state * works with TCP, UDP, and ICMP. @@ -2343,7 +2344,7 @@ function filter_generate_user_rule($rule) { * queueing in certain situations. please check the faq. */ $noadvoptions = false; - if(isset($rule['statetype']) && $rule['statetype'] <> "") { + if (isset($rule['statetype']) && $rule['statetype'] <> "") { switch($rule['statetype']) { case "none": $noadvoptions = true; @@ -2351,7 +2352,7 @@ function filter_generate_user_rule($rule) { break; case "modulate state": case "synproxy state": - if($rule['protocol'] == "tcp") + if ($rule['protocol'] == "tcp") $aline['flags'] .= "{$rule['statetype']} "; break; case "sloppy state": @@ -2365,32 +2366,38 @@ function filter_generate_user_rule($rule) { } else $aline['flags'] .= "keep state "; - if($noadvoptions == false || $l7_present) - if( (isset($rule['source-track']) and $rule['source-track'] <> "") or + if ($noadvoptions == false || $l7_present) + if ((isset($rule['source-track']) and $rule['source-track'] <> "") or (isset($rule['max']) and $rule['max'] <> "") or (isset($rule['max-src-nodes']) and $rule['max-src-nodes'] <> "") or - (isset($rule['max-src-conn']) and $rule['max-src-conn'] <> "") or - (isset($rule['max-src-conn-rate']) and $rule['max-src-conn-rate'] <> "") or - (isset($rule['max-src-conn-rates']) and $rule['max-src-conn-rates'] <> "") or (isset($rule['max-src-states']) and $rule['max-src-states'] <> "") or - (isset($rule['statetimeout']) and $rule['statetimeout'] <> "") or + ((in_array($rule['protocol'], array("tcp","tcp/udp"))) and + ((isset($rule['statetimeout']) and $rule['statetimeout'] <> "") or + (isset($rule['max-src-conn']) and $rule['max-src-conn'] <> "") or + (isset($rule['max-src-conn-rate']) and $rule['max-src-conn-rate'] <> "") or + (isset($rule['max-src-conn-rates']) and $rule['max-src-conn-rates'] <> ""))) or isset($rule['sloppy']) or $l7_present) { $aline['flags'] .= "( "; if (isset($rule['sloppy'])) $aline['flags'] .= "sloppy "; - if(isset($rule['source-track']) and $rule['source-track'] <> "") + if (isset($rule['source-track']) and $rule['source-track'] <> "") $aline['flags'] .= "source-track rule "; - if(isset($rule['max']) and $rule['max'] <> "") + if (isset($rule['max']) and $rule['max'] <> "") $aline['flags'] .= "max " . $rule['max'] . " "; - if(isset($rule['max-src-nodes']) and $rule['max-src-nodes'] <> "") + if (isset($rule['max-src-nodes']) and $rule['max-src-nodes'] <> "") $aline['flags'] .= "max-src-nodes " . $rule['max-src-nodes'] . " "; - if(isset($rule['max-src-conn']) and $rule['max-src-conn'] <> "") + if ((in_array($rule['protocol'], array("tcp","tcp/udp"))) + and isset($rule['max-src-conn']) + and $rule['max-src-conn'] <> "") $aline['flags'] .= "max-src-conn " . $rule['max-src-conn'] . " "; - if(isset($rule['max-src-states']) and $rule['max-src-states'] <> "") + if (isset($rule['max-src-states']) and $rule['max-src-states'] <> "") $aline['flags'] .= "max-src-states " . $rule['max-src-states'] . " "; - if(isset($rule['statetimeout']) and $rule['statetimeout'] <> "") + if ((in_array($rule['protocol'], array("tcp","tcp/udp"))) + and isset($rule['statetimeout']) + and $rule['statetimeout'] <> "") $aline['flags'] .= "tcp.established " . $rule['statetimeout'] . " "; - if(isset($rule['max-src-conn-rate']) + if ((in_array($rule['protocol'], array("tcp","tcp/udp"))) + and isset($rule['max-src-conn-rate']) and $rule['max-src-conn-rate'] <> "" and isset($rule['max-src-conn-rates']) and $rule['max-src-conn-rates'] <> "") { diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index a8e272b..dce51cc 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -4216,11 +4216,15 @@ function get_real_interface($interface = "wan", $family = "all") { case 'ppp': case 'l2tp': case 'pptp': - $parents = get_parent_interface($interface); - if (!empty($parents[0])) - $wanif = $parents[0]; - else + if (isset($cfg['dhcp6usev4iface'])) $wanif = $cfg['if']; + else { + $parents = get_parent_interface($interface); + if (!empty($parents[0])) + $wanif = $parents[0]; + else + $wanif = $cfg['if']; + } break; default: if( is_array($cfg['wireless']) || preg_match($g['wireless_regex'], $cfg['if'])) diff --git a/etc/inc/rrd.inc b/etc/inc/rrd.inc index 65f4db4..af1908b 100644 --- a/etc/inc/rrd.inc +++ b/etc/inc/rrd.inc @@ -717,7 +717,7 @@ function enable_rrd_graphing() { /* enter UNKNOWN values in the RRD so it knows we rebooted. */ if($g['booting']) { - mwexec("$rrdtool update $rrddbpath$ifname$mbuf N:U:U:U:U:U"); + mwexec("$rrdtool update $rrddbpath$ifname$mbuf N:U:U:U:U"); } /* the mbuf stats gathering function. */ diff --git a/usr/local/www/diag_dump_states.php b/usr/local/www/diag_dump_states.php index ce48762..a282fdc 100755 --- a/usr/local/www/diag_dump_states.php +++ b/usr/local/www/diag_dump_states.php @@ -142,7 +142,7 @@ include("head.inc"); <?php if (is_ipaddr($_GET['filter']) || is_subnet($_GET['filter'])): ?> <input type="submit" class="formbtn" name="killfilter" value="<?=gettext("Kill");?>" /> <?php endif; ?> - <td> + </td> </tr> </table> </form> diff --git a/usr/local/www/firewall_nat_edit.php b/usr/local/www/firewall_nat_edit.php index a9399f8..42da1ba 100755 --- a/usr/local/www/firewall_nat_edit.php +++ b/usr/local/www/firewall_nat_edit.php @@ -718,7 +718,7 @@ include("fbegin.inc"); ?> <tr> <td><?=gettext("from:"); ?> </td> <td> - <select name="dstbeginport" class="formselect" onchange="dst_rep_change();ext_change()"> + <select name="dstbeginport" id="dstbeginport" class="formselect" onchange="dst_rep_change();ext_change()"> <option value="">(<?=gettext("other"); ?>)</option> <?php $bfound = 0; foreach ($wkports as $wkport => $wkportdesc): ?> @@ -731,7 +731,7 @@ include("fbegin.inc"); ?> <tr> <td><?=gettext("to:"); ?></td> <td> - <select name="dstendport" class="formselect" onchange="ext_change()"> + <select name="dstendport" id="dstendport" class="formselect" onchange="ext_change()"> <option value="">(<?=gettext("other"); ?>)</option> <?php $bfound = 0; foreach ($wkports as $wkport => $wkportdesc): ?> @@ -761,7 +761,7 @@ include("fbegin.inc"); ?> <tr name="lprtr" id="lprtr"> <td width="22%" valign="top" class="vncellreq"><?=gettext("Redirect target port"); ?></td> <td width="78%" class="vtable"> - <select name="localbeginport" class="formselect" onchange="ext_change();check_for_aliases();"> + <select name="localbeginport" id="localbeginport" class="formselect" onchange="ext_change();check_for_aliases();"> <option value="">(<?=gettext("other"); ?>)</option> <?php $bfound = 0; foreach ($wkports as $wkport => $wkportdesc): ?> <option value="<?=$wkport;?>" <?php if ($wkport == $pconfig['localbeginport']) { diff --git a/usr/local/www/firewall_rules_edit.php b/usr/local/www/firewall_rules_edit.php index 13e7b2a..d8c70e8 100755 --- a/usr/local/www/firewall_rules_edit.php +++ b/usr/local/www/firewall_rules_edit.php @@ -472,21 +472,24 @@ if ($_POST) { $input_errors[] = gettext("You can only select a layer7 container for Pass type rules."); } - if ($_POST['proto'] <> "tcp") { - if (!empty($_POST['max'])) - $input_errors[] = gettext("You can only specify the maximum state entries (advanced option) for TCP protocol."); - if (!empty($_POST['max-src-nodes'])) - $input_errors[] = gettext("You can only specify the maximum number of unique source hosts (advanced option) for TCP protocol."); + if (!in_array($_POST['proto'], array("tcp","tcp/udp"))) { if (!empty($_POST['max-src-conn'])) $input_errors[] = gettext("You can only specify the maximum number of established connections per host (advanced option) for TCP protocol."); - if (!empty($_POST['max-src-states'])) - $input_errors[] = gettext("You can only specify the maximum state entries per host (advanced option) for TCP protocol."); if (!empty($_POST['max-src-conn-rate']) || !empty($_POST['max-src-conn-rates'])) $input_errors[] = gettext("You can only specify the maximum new connections / per second(s) (advanced option) for TCP protocol."); if (!empty($_POST['statetimeout'])) $input_errors[] = gettext("You can only specify the state timeout (advanced option) for TCP protocol."); } + if (!in_array($_POST['proto'], array("icmp","udp","tcp","tcp/udp"))) { + if (!empty($_POST['max'])) + $input_errors[] = gettext("You can only specify the maximum state entries (advanced option) for ICMP/TCP/UDP protocols."); + if (!empty($_POST['max-src-nodes'])) + $input_errors[] = gettext("You can only specify the maximum number of unique source hosts (advanced option) for ICMP/TCP/UDP protocols."); + if (!empty($_POST['max-src-states'])) + $input_errors[] = gettext("You can only specify the maximum state entries per host (advanced option) for ICMP/TCP/UDP protocols."); + } + if ($_POST['type'] <> "pass") { if (!empty($_POST['max'])) $input_errors[] = gettext("You can only specify the maximum state entries (advanced option) for Pass type rules."); @@ -1252,10 +1255,10 @@ $i--): ?> <input name="tagged" id="tagged" value="<?=htmlspecialchars($pconfig['tagged']);?>" /> <br /><span class="vexpl"><?=gettext("You can match packet on a mark placed before on another rule.")?> </span></p><p> - <input name="max" id="max" value="<?php echo htmlspecialchars($pconfig['max']) ?>" /><br/><?=gettext(" Maximum state entries this rule can create");?></p><p> - <input name="max-src-nodes" id="max-src-nodes" value="<?php echo htmlspecialchars($pconfig['max-src-nodes']) ?>" /><br/><?=gettext(" Maximum number of unique source hosts");?></p><p> - <input name="max-src-conn" id="max-src-conn" value="<?php echo htmlspecialchars($pconfig['max-src-conn']) ?>" /><br/><?=gettext(" Maximum number of established connections per host");?></p><p> - <input name="max-src-states" id="max-src-states" value="<?php echo htmlspecialchars($pconfig['max-src-states']) ?>" /><br/><?=gettext(" Maximum state entries per host");?></p><p> + <input name="max" id="max" value="<?php echo htmlspecialchars($pconfig['max']) ?>" /><br/><?=gettext(" Maximum state entries this rule can create (TCP/UDP/ICMP)");?></p><p> + <input name="max-src-nodes" id="max-src-nodes" value="<?php echo htmlspecialchars($pconfig['max-src-nodes']) ?>" /><br/><?=gettext(" Maximum number of unique source hosts (TCP/UDP/ICMP)");?></p><p> + <input name="max-src-conn" id="max-src-conn" value="<?php echo htmlspecialchars($pconfig['max-src-conn']) ?>" /><br/><?=gettext(" Maximum number of established connections per host (TCP only)");?></p><p> + <input name="max-src-states" id="max-src-states" value="<?php echo htmlspecialchars($pconfig['max-src-states']) ?>" /><br/><?=gettext(" Maximum state entries per host (TCP/UDP/ICMP)");?></p><p> <input name="max-src-conn-rate" id="max-src-conn-rate" value="<?php echo htmlspecialchars($pconfig['max-src-conn-rate']) ?>" /> / <select name="max-src-conn-rates" id="max-src-conn-rates"> <option value=""<?php if(intval($pconfig['max-src-conn-rates']) < 1) echo " selected=\"selected\""; ?>></option> @@ -1264,10 +1267,10 @@ $i--): ?> echo "<option value=\"{$x}\"{$selected}>{$x}</option>\n"; } ?> </select><br /> - <?=gettext("Maximum new connections / per second(s)");?> + <?=gettext("Maximum new connections / per second(s) (TCP only)");?> </p><p> <input name="statetimeout" value="<?php echo htmlspecialchars($pconfig['statetimeout']) ?>" /><br/> - <?=gettext("State Timeout in seconds");?> + <?=gettext("State Timeout in seconds (TCP only)");?> </p> <p><strong><?=gettext("Note: Leave fields blank to disable that feature.");?></strong></p> </div> diff --git a/usr/local/www/guiconfig.inc b/usr/local/www/guiconfig.inc index f88572b..3579767 100755 --- a/usr/local/www/guiconfig.inc +++ b/usr/local/www/guiconfig.inc @@ -235,7 +235,7 @@ $wlan_modes = array("bss" => "Infrastructure (BSS)", "adhoc" => "Ad-hoc (IBSS)", /* platforms that support firmware updating */ $fwupplatforms = array('pfSense', 'net45xx', 'net48xx', 'generic-pc', 'embedded', 'wrap', 'nanobsd'); -function do_input_validation($postdata, $reqdfields, $reqdfieldsn, $input_errors) { +function do_input_validation($postdata, $reqdfields, $reqdfieldsn, &$input_errors) { /* check for bad control characters */ foreach ($postdata as $pn => $pd) { diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php index 3805c30..19ed709 100755 --- a/usr/local/www/interfaces.php +++ b/usr/local/www/interfaces.php @@ -274,6 +274,7 @@ switch($wancfg['ipaddrv6']) { $pconfig['dhcp6-ia-pd-len'] = $wancfg['dhcp6-ia-pd-len']; $pconfig['type6'] = "dhcp6"; $pconfig['dhcp6prefixonly'] = isset($wancfg['dhcp6prefixonly']); + $pconfig['dhcp6usev4iface'] = isset($wancfg['dhcp6usev4iface']); break; case "6to4": $pconfig['type6'] = "6to4"; @@ -802,6 +803,7 @@ if ($_POST['apply']) { unset($wancfg['dhcp6-duid']); unset($wancfg['dhcp6-ia-pd-len']); unset($wancfg['dhcp6prefixonly']); + unset($wancfg['dhcp6usev4iface']); unset($wancfg['track6-interface']); unset($wancfg['track6-prefix-id']); unset($wancfg['prefix-6rd']); @@ -1013,6 +1015,8 @@ if ($_POST['apply']) { $wancfg['dhcp6-ia-pd-len'] = $_POST['dhcp6-ia-pd-len']; if($_POST['dhcp6prefixonly'] == "yes") $wancfg['dhcp6prefixonly'] = true; + if($_POST['dhcp6usev4iface'] == "yes") + $wancfg['dhcp6usev4iface'] = true; $wancfg['adv_dhcp6_interface_statement_send_options'] = $_POST['adv_dhcp6_interface_statement_send_options']; $wancfg['adv_dhcp6_interface_statement_request_options'] = $_POST['adv_dhcp6_interface_statement_request_options']; @@ -2114,6 +2118,13 @@ $types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), </td> </tr> --> + <tr style='display:none' name="basicdhcp6_use_pppoeinterface" id="basicdhcp6_use_pppoeinterface"> + <td width="22%" valign="top" class="vncell"><?=gettext("Use IPv4 connectivity as parent interface"); ?></td> + <td width="78%" class="vtable"> + <input name="dhcp6usev4iface" type="checkbox" id="dhcp6usev4iface" value="yes" <?php if ($pconfig['dhcp6usev4iface'] == true) echo "checked=\"checked\""; ?> /> + <?=gettext("Request a IPv6 prefix/information through the IPv4 connectivity link"); ?> + </td> + </tr> <tr style='display:none' name="basicdhcp6_show_dhcp6_prefix_only" id="basicdhcp6_show_dhcp6_prefix_only"> <td width="22%" valign="top" class="vncell"><?=gettext("Request only a IPv6 prefix"); ?></td> <td width="78%" class="vtable"> @@ -2291,6 +2302,7 @@ $types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), function show_hide_adv_dhcp6(basic, advanced, override) { + document.getElementById("basicdhcp6_use_pppoeinterface").style.display = basic; document.getElementById("basicdhcp6_show_dhcp6_prefix_delegation_size").style.display = basic; document.getElementById("basicdhcp6_show_dhcp6_prefix_only").style.display = basic; diff --git a/usr/local/www/javascript/firewall_nat_edit/firewall_nat_edit.js b/usr/local/www/javascript/firewall_nat_edit/firewall_nat_edit.js index bd88145..501481d 100644 --- a/usr/local/www/javascript/firewall_nat_edit/firewall_nat_edit.js +++ b/usr/local/www/javascript/firewall_nat_edit/firewall_nat_edit.js @@ -138,6 +138,12 @@ function proto_change() { document.getElementById("sprtable").style.display = 'none'; document.getElementById("dprtr").style.display = 'none'; document.getElementById("lprtr").style.display = 'none'; + document.getElementById("dstbeginport").selectedIndex = 0; + document.getElementById("dstbeginport_cust").value = ""; + document.getElementById("dstendport").selectedIndex = 0; + document.getElementById("dstendport_cust").value = ""; + document.getElementById("localbeginport").selectedIndex = 0; + document.getElementById("localbeginport_cust").value = ""; } } diff --git a/usr/local/www/themes/pfsense_ng_fs/rrdcolors.inc.php b/usr/local/www/themes/pfsense_ng_fs/rrdcolors.inc.php index 1ed3027..52337b9 100644 --- a/usr/local/www/themes/pfsense_ng_fs/rrdcolors.inc.php +++ b/usr/local/www/themes/pfsense_ng_fs/rrdcolors.inc.php @@ -30,24 +30,59 @@ /* This file is included by the RRD graphing page and sets the colors */ -$colortrafficup = array("666666", "CCCCCC", "b36666", "bd9090"); -$colortrafficdown = array("990000", "CC0000", "b36666", "bd9090"); -$colorpacketsup = array("666666", "CCCCCC", "b36666", "bd9090"); -$colorpacketsdown = array("990000", "CC0000", "b36666", "bd9090"); -$colortraffic95 = array("660000", "FF0000"); -$colorstates = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); -$colorprocessor = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); -$colormemory = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); -$colorqueuesup = array('000000','7B0000','990000','BB0000','CC0000','D90000','EE0000','FF0000','CC0000'); -$colorqueuesdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC'); -$colorqueuesdropup = array('000000','7B0000','990000','BB0000','CC0000','D90000','EE0000','FF0000','CC0000'); -$colorqueuesdropdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC'); -$colorqualityrtt = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); -$colorqualityloss = "ee0000"; -$colorwireless = array('333333','a83c3c','999999'); -$colorspamdtime = array('DDDDFF', 'AAAAFF', 'DDDDFF', '000066'); -$colorspamdconn = array('00AA00BB', 'FFFFFFFF', '00660088', 'FFFFFF88', '006600'); -$colorvpnusers = array('990000'); +/* Traffic Outbound Out-P-4, Out-B-4, Out-P-6, Out-B-6 */ +$colortrafficup = array('666666', 'CCCCCC', '2217AA', '625AE7'); + +/* Traffic Inbound In-P-4, In-B-4, In-P-6, In-B-6 */ +$colortrafficdown = array('990000', 'CC0000', 'FFC875', 'FF9900'); + +/* Packets Outbound Out-P-4, Out-B-4, Out-P-6, Out-B-6 */ +$colorpacketsup = array('666666', 'CCCCCC', '2217AA', '625AE7'); + +/* Packets Inbound In-P-4, In-B-4, In-P-6, In-B-6 */ +$colorpacketsdown = array('990000', 'CC0000', 'FFC875', 'FF9900'); + +/* 95th Percentile Lines Out, In */ +$colortraffic95 = array('660000', 'FF0000'); + +/* State Table pfrate, pfstates, pfnat, srcip, dstip */ +$colorstates = array('00AA00','990000','0000FF','000000','DD9B00'); + +/* Processor Usage user, nice, system, int, processes */ +$colorprocessor = array('00AA00','990000','0000FF','DD9B00','000000'); + +/* Memory Usage active, inact, free, cache, wire */ +$colormemory = array('00AA00','990000','0000FF','666666','DD9B00'); + +/* MBUF Usage current, cache, total, max */ +$colormbuf = array('0080FF','00E344','FF0000','000000'); + +/* Traffic Shaper Queues q1, q2, q3, q4, q5, q6, q7, q8, q9 */ +$colorqueuesup = array('000000','7B0000','0080FF','00E344','FF0000','2217AA','FFC875','FF9900','CC0000'); +$colorqueuesdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC'); + +$colorqueuesdropup = array('000000','7B0000','0080FF','00E344','FF0000','2217AA','FFC875','FF9900','CC0000'); +$colorqueuesdropdown = array('000000','7B7B7B','999999','BBBBBB','CCCCCC','D9D9D9','EEEEEE','FFFFFF','CCCCCC'); + +/* Quality Graph Delay >420, 180-420, 60-180, 20-60, <20, Delay Avg */ +$colorqualityrtt = array('990000','a83c3c','b36666','bd9090','cccccc','000000'); +/* Quality Graph Loss */ +$colorqualityloss = 'ee0000'; + +/* Wireless Graph SNR, Rate, Channel*/ +/* Cellular Graph RSSI, */ +$colorwireless = array('333333','a83c3c','999999'); + +/* SPAMD Times min area, avg area, max area, Time line */ +$colorspamdtime = array('DDDDFF', 'AAAAFF', 'DDDDFF', '000066'); +/* SPAMD Connections max area, min area, min line, max line, avg line */ +$colorspamdconn = array('AA00BB', 'FFFFFF', '660088', 'FFFF88', '006600'); + +/* OpenVPN Users Online Users */ +$colorvpnusers = array('990000'); + +/* Captive Portal Total Users Total Users */ +/* Captive Portal Concurrent Concurrent Users */ $colorcaptiveportalusers = array('990000'); ?> |