diff options
author | Scott Ullrich <sullrich@pfsense.org> | 2006-04-02 01:35:51 +0000 |
---|---|---|
committer | Scott Ullrich <sullrich@pfsense.org> | 2006-04-02 01:35:51 +0000 |
commit | 2defff77511852b3fc506715a357014012b1441c (patch) | |
tree | ee57480acd7ae20b622cc15b8de9a44173660cf3 /usr | |
parent | f19dba118fda9c6640f6032297e4f2eaee9fc386 (diff) | |
download | pfsense-2defff77511852b3fc506715a357014012b1441c.zip pfsense-2defff77511852b3fc506715a357014012b1441c.tar.gz |
* Add new filter loading status page used after traffic shaper load screen
* Fix p2p queues
Diffstat (limited to 'usr')
-rw-r--r-- | usr/local/www/status_filter_reload.php | 145 | ||||
-rw-r--r-- | usr/local/www/wizards/traffic_shaper_wizard.xml | 63 |
2 files changed, 195 insertions, 13 deletions
diff --git a/usr/local/www/status_filter_reload.php b/usr/local/www/status_filter_reload.php new file mode 100644 index 0000000..53a2cf9 --- /dev/null +++ b/usr/local/www/status_filter_reload.php @@ -0,0 +1,145 @@ +<?php +/* $Id$ */ +/* + status_filter_reload.php + Copyright (C) 2006 Scott Ullrich + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require_once("guiconfig.inc"); +require_once("functions.inc"); + +$pgtitle = "Diagnostics: Filter Reload Status"; + +include("head.inc"); + +if(file_exists("{$g['varrun_path']}/filter_reload_status")) + $status = file_get_contents("{$g['varrun_path']}/filter_reload_status"); + +if($_GET['getstatus']) { + echo "|{$status}|"; + exit; +} + +?> + +<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> +<script src="/javascript/scriptaculous/prototype.js" type="text/javascript"></script> +<script src="/javascript/scriptaculous/scriptaculous.js" type="text/javascript"></script> + +<?php include("fbegin.inc"); ?> + +<p><span class="pgtitle"><?=$pgtitle;?></span></p> + +<div id="loadingicon" name="loadingicon"> + <img src="/themes/metallic/images/misc/loader.gif"> + <p/> +</div> + +<div id="status" name="status" style="padding:5px; border:1px dashed #990000; background-color: #ffffff; color: #000000;"> + <?php echo $status; ?> +</div> + +<div id="doneurl" name="doneurl"> +</div> + +<?php include("fend.inc"); ?> + +<script language="javascript"> +/* init update "thread */ +$('loadingicon').style.visibility="visible"; +function update_status_thread() { + $('loadingicon').style.visibility="visible"; + getURL('status_filter_reload.php?getstatus=true', update_data); +} +function update_data(obj) { + var result_text = obj.content; + var result_text_split = result_text.split("|"); + result_text = result_text_split[1]; + result_text = result_text.replace("\n",""); + result_text = result_text.replace("\r",""); + if (result_text) { + $('status').innerHTML = result_text + '...'; + } else { + $('status').innerHTML = 'Obtaining filter status...'; + } + if(result_text == "Done") { + $('status').innerHTML = 'Done.'; + $('loadingicon').style.visibility="hidden"; + $('doneurl').style.visibility="visible"; + $('doneurl').innerHTML = "<p/><a href='status_queues.php'>Queue Status</a>"; + } + window.setTimeout('update_status_thread()', 2500); +} +</script> + +<script language="javascript"> +/** + * getURL is a proprietary Adobe function, but it's simplicity has made it very + * popular. If getURL is undefined we spin our own by wrapping XMLHttpRequest. + */ +if (typeof getURL == 'undefined') { + getURL = function(url, callback) { + if (!url) + throw 'No URL for getURL'; + + try { + if (typeof callback.operationComplete == 'function') + callback = callback.operationComplete; + } catch (e) {} + if (typeof callback != 'function') + throw 'No callback function for getURL'; + + var http_request = null; + if (typeof XMLHttpRequest != 'undefined') { + http_request = new XMLHttpRequest(); + } + else if (typeof ActiveXObject != 'undefined') { + try { + http_request = new ActiveXObject('Msxml2.XMLHTTP'); + } catch (e) { + try { + http_request = new ActiveXObject('Microsoft.XMLHTTP'); + } catch (e) {} + } + } + if (!http_request) + throw 'Both getURL and XMLHttpRequest are undefined'; + + http_request.onreadystatechange = function() { + if (http_request.readyState == 4) { + callback( { success : true, + content : http_request.responseText, + contentType : http_request.getResponseHeader("Content-Type") } ); + } + } + http_request.open('GET', url, true); + http_request.send(null); + } +} +window.setTimeout('update_status_thread()', 2500); +</script> + +</body> +</html> diff --git a/usr/local/www/wizards/traffic_shaper_wizard.xml b/usr/local/www/wizards/traffic_shaper_wizard.xml index f7355f6..97b4b07 100644 --- a/usr/local/www/wizards/traffic_shaper_wizard.xml +++ b/usr/local/www/wizards/traffic_shaper_wizard.xml @@ -1982,15 +1982,6 @@ /* XXX: add some more protocols here! */ - - /* install default p2p catch all rule if user has enabled option (MUST BE LAST!) */ - if($config['ezshaper']['step4']['p2pcatchall'] == "on") { - $othersplist[] = array('p2pCatchAll', 'tcp', '', '', 'both', 'p2p'); - $othersplist[] = array('p2pCatchAll2','tcp', '', '', 'both', 'p2p'); - $othersplist[] = array('p2pCatchAll', 'udp', '', '', 'both', 'p2p'); - $othersplist[] = array('p2pCatchAll2','udp', '', '', 'both', 'p2p'); - } - /* Set up/down protocols as higher weight */ /* loop through othersplist[] */ @@ -2027,9 +2018,53 @@ $config['shaper']['rule'][] = $rule; } } - } + /* install default p2p catch all rule if user has enabled option (MUST BE LAST!) */ + if($config['ezshaper']['step4']['p2pcatchall'] == "on") { + $othersplist = array(); + $othersplist[] = array('p2pCatchAll', 'tcp', '', '', 'both', 'L'); + $othersplist[] = array('p2pCatchAll2', 'udp', '', '', 'both', 'L'); + } else { + $othersplist = array(); + } + + /* Set up/down protocols as p2p weight */ + /* loop through othersplist[] */ + foreach ($othersplist as $otherclient) { + foreach (array('source', 'destination') as $srcdest) { + $rule = array(); + $config['shaper']['itemsshaped']++; + if ($srcdest == 'source') { + $destsrc = 'destination'; + $rule['inqueue'] = 'qP2PDown' . $otherclient[5]; /* posted value H or L */ + $rule['outqueue'] = 'qP2PUp' . $otherclient[5]; /* posted value H or L */ + $rule['in-interface'] = $downint; + $rule['out-interface'] = $upint; + $rule['source']['network'] = $downint; + $rule['destination']['any'] = TRUE; + $rule['descr'] = "p2pCatchAll outbound"; + } else { + $destsrc = 'source'; + $rule['inqueue'] = 'qP2PUp' . $otherclient[5]; /* posted value H or L */ + $rule['outqueue'] = 'qP2PDown' . $otherclient[5]; /* posted value H or L */ + $rule['in-interface'] = $upint; + $rule['out-interface'] = $downint; + $rule['source']['any'] = TRUE; + $rule['destination']['network'] = $downint; + $rule['descr'] = "p2pCatchAll inbound"; + } + + if($otherclient[2] or $otherclient[3]) { + $rule['destination']['port'] = $otherclient[2]."-".$otherclient[3]; + if($otherclient[1] != '') + $rule['protocol'] = $otherclient[1]; + } + + $config['shaper']['rule'][] = $rule; + } + } + } </stepsubmitphpaction> </step> <step> @@ -2077,13 +2112,15 @@ unset($config['shaper']['itemsshaped']); /* Create new rules */ - filter_configure_sync(); + filter_configure(); /* And we're no longer dirty! */ unlink_if_exists($d_shaperconfdirty_path); + update_filter_reload_status("Initializing"); + /* Head over and check out the groovy queue stats */ - header("Location: /status_queues.php"); + header("Location: status_filter_reload.php"); </stepsubmitphpaction> </step> <step> @@ -2096,7 +2133,7 @@ </field> </fields> <stepsubmitphpaction> - header("Location: /"); + header("Location: status_filter_reload.php"); </stepsubmitphpaction> </step> </pfsensewizard> |