Project

General

Profile

Download (8.67 KB) Statistics
| Branch: | Tag: | Revision:
1 5b237745 Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 5b237745 Scott Ullrich
/*
4
	firewall_shaper_queues.php
5 b49448ac Scott Ullrich
	Copyright (C) 2004, 2005 Scott Ullrich
6 197bfe96 Ermal Luçi
	Copyright (C) 2008 Ermal Lu?i
7 b49448ac Scott Ullrich
	All rights reserved.
8 5b237745 Scott Ullrich
9
	Redistribution and use in source and binary forms, with or without
10
	modification, are permitted provided that the following conditions are met:
11
12
	1. Redistributions of source code must retain the above copyright notice,
13
	   this list of conditions and the following disclaimer.
14
15
	2. Redistributions in binary form must reproduce the above copyright
16
	   notice, this list of conditions and the following disclaimer in the
17
	   documentation and/or other materials provided with the distribution.
18
19
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
21
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
23
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
	POSSIBILITY OF SUCH DAMAGE.
29
*/
30 7ac5a4cb Scott Ullrich
/*
31
	pfSense_BUILDER_BINARIES:	/usr/bin/killall
32
	pfSense_MODULE:	shaper
33
*/
34 5b237745 Scott Ullrich
35 6b07c15a Matthew Grooms
##|+PRIV
36
##|*IDENT=page-firewall-trafficshaper-queues
37
##|*NAME=Firewall: Traffic Shaper: Queues page
38
##|*DESCR=Allow access to the 'Firewall: Traffic Shaper: Queues' page.
39
##|*MATCH=firewall_shaper_queues.php*
40
##|-PRIV
41
42 5b237745 Scott Ullrich
require("guiconfig.inc");
43 7a927e67 Scott Ullrich
require_once("functions.inc");
44
require_once("filter.inc");
45
require_once("shaper.inc");
46 a5f07f09 Ermal Lu?i
require_once("rrd.inc");
47 5b237745 Scott Ullrich
48 4f335a1b Scott Ullrich
if($_GET['reset'] <> "") {
49
	mwexec("killall -9 pfctl php");
50 8f8a97c8 Ermal Luçi
	exit;
51 4f335a1b Scott Ullrich
}
52
53 9d5b21c6 Ermal Luçi
$shaperIFlist = get_configured_interface_with_descr();
54 197bfe96 Ermal Luçi
read_altq_config();
55 21a0464c Ermal Luçi
$qlist =& get_unique_queue_list();
56
57
if (!is_array($qlist)) 
58
	$qlist = array();
59 845dc7ed Scott Ullrich
60 197bfe96 Ermal Luçi
$tree = "<ul class=\"tree\" >";
61 21a0464c Ermal Luçi
foreach ($qlist as $queue => $qkey) {
62 9d5b21c6 Ermal Luçi
	$tree .= "<li><a href=\"firewall_shaper_queues.php?queue={$queue}&action=show\" >";
63
	if (isset($shaperIFlist[$queue]))
64
		$tree .= $shaperIFlist[$queue] . "</a></li>";
65
	else	
66
		$tree .= $queue . "</a></li>";
67 e8731417 Scott Ullrich
}
68 197bfe96 Ermal Luçi
$tree .= "</ul>";
69
70
if ($_GET) {
71
	if ($_GET['queue'])
72
        	$qname = trim($_GET['queue']);
73
        if ($_GET['interface'])
74
                $interface = trim($_GET['interface']);
75
        if ($_GET['action'])
76
                $action = $_GET['action'];
77
78
	switch ($action) {
79
	case "delete":
80
			$altq =& $altq_list_queues[$interface];
81
			$qtmp =& $altq->find_queue("", $qname);
82
			if ($qtmp) {
83
				$qtmp->delete_queue(); 
84
				write_config();
85 a368a026 Ermal Lu?i
				mark_subsystem_dirty('shaper');
86 5b237745 Scott Ullrich
			}
87 197bfe96 Ermal Luçi
			header("Location: firewall_shaper_queues.php");
88
			exit;
89
		break;
90
	case "add":
91
			/* 
92
			 * XXX: WARNING: This returns the first it finds.
93
			 * Maybe the user expects something else?!
94
			 */
95 a843b04f Ermal Luçi
                        foreach ($altq_list_queues as $altq) {
96
                                $qtmp =& $altq->find_queue("", $qname);
97
                                if ($qtmp) {
98
                                        $copycfg = array();
99
                                        $qtmp->copy_queue($interface, &$copycfg);
100
                                        $aq =& $altq_list_queues[$interface];
101 63502467 Ermal Luçi
					if ($qname == $qtmp->GetInterface()) {
102
                                                $config['shaper']['queue'][] = $copycfg;
103
                                        } else if ($aq) {
104 a843b04f Ermal Luçi
                                                $tmp1 =& $qtmp->find_parentqueue($interface, $qname);
105 63502467 Ermal Luçi
                                                if ($tmp1) 
106 a843b04f Ermal Luçi
                                                        $tmp =& $aq->find_queue($interface, $tmp1->GetQname());
107
108
                                                if ($tmp)
109
                                                        $link =& get_reference_to_me_in_config($tmp->GetLink());
110
                                                else
111
                                                        $link =& get_reference_to_me_in_config($aq->GetLink());
112
                                                $link['queue'][] = $copycfg;
113
                                        } else {
114
                                                $newroot = array();
115
                                                $newroot['name'] = $interface;
116
                                                $newroot['interface'] = $interface;
117
                                                $newroot['scheduler'] = $altq->GetScheduler();
118
                                                $newroot['queue'] = array();
119
                                                $newroot['queue'][] = $copycfg;
120
                                                $config['shaper']['queue'][] = $newroot;
121
                                        }
122
                                        write_config();
123 a368a026 Ermal Lu?i
					mark_subsystem_dirty('shaper');
124 a843b04f Ermal Luçi
                                        break;
125
                                }
126
                        }
127
128 197bfe96 Ermal Luçi
			header("Location: firewall_shaper_queues.php?queue=".$qname."&action=show");
129 5b237745 Scott Ullrich
			exit;
130 197bfe96 Ermal Luçi
		break;
131
	case "show":
132 67aeb121 Ermal Luçi
                        foreach ($config['interfaces'] as $if => $ifdesc) {
133
                                $altq = $altq_list_queues[$if];
134
                                if ($altq) {
135
                                        $qtmp =& $altq->find_queue("", $qname);
136
                                        if ($qtmp)
137
                                                $output .= $qtmp->build_shortform();
138
                                        else
139
                                                $output .= build_iface_without_this_queue($if, $qname);
140
                                } else {
141
                                        if (!is_altq_capable($ifdesc['if']))
142
                                                continue;
143
                                        if (!isset($ifdesc['enable']) && $if != "lan" && $if != "wan")
144
                                                continue;
145
                                        $output .= build_iface_without_this_queue($if, $qname);
146
                                }
147
                        }
148 197bfe96 Ermal Luçi
		break;
149 5b237745 Scott Ullrich
	}
150
}
151 52380979 Scott Ullrich
152 197bfe96 Ermal Luçi
if ($_POST['apply']) {
153
          write_config();
154 b7ff5e40 Scott Ullrich
155 0027de0a Ermal Lu?i
	$retval = 0;
156 197bfe96 Ermal Luçi
        /* Setup pf rules since the user may have changed the optimization value */
157 0027de0a Ermal Lu?i
	$retval = filter_configure();
158
	$savemsg = get_std_save_message($retval);
159 197bfe96 Ermal Luçi
                        if (stristr($retval, "error") <> true)
160
                                $savemsg = get_std_save_message($retval);
161
                        else
162
                                $savemsg = $retval;
163 b7ff5e40 Scott Ullrich
164 96b777d6 Ermal Luçi
 		/* reset rrd queues */
165
                system("rm -f /var/db/rrd/*queuedrops.rrd");
166
                system("rm -f /var/db/rrd/*queues.rrd");
167 197bfe96 Ermal Luçi
			enable_rrd_graphing();
168 b7ff5e40 Scott Ullrich
169 a368a026 Ermal Lu?i
		clear_subsystem_dirty('shaper');
170 b7ff5e40 Scott Ullrich
}
171
172 197bfe96 Ermal Luçi
$pgtitle = "Firewall: Shaper: By Queues View";
173 b9b9b4d8 jim-p
$statusurl = "status_queues.php";
174 b7ff5e40 Scott Ullrich
175 52380979 Scott Ullrich
include("head.inc");
176 5b237745 Scott Ullrich
?>
177 197bfe96 Ermal Luçi
<link rel="stylesheet" type="text/css" media="all" href="./tree/tree.css" />
178
<script type="text/javascript" src="./tree/tree.js"></script>
179 5b237745 Scott Ullrich
180
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
181
<?php include("fbegin.inc"); ?>
182 197bfe96 Ermal Luçi
<div id="inputerrors"></div>
183 5b237745 Scott Ullrich
<?php if ($input_errors) print_input_errors($input_errors); ?>
184 197bfe96 Ermal Luçi
<form action="firewall_shaper_queues.php" method="post" name="iform" id="iform">
185 5b237745 Scott Ullrich
<?php if ($savemsg) print_info_box($savemsg); ?>
186 a368a026 Ermal Lu?i
<?php if (is_subsystem_dirty('shaper')): ?><p>
187 5b237745 Scott Ullrich
<?php print_info_box_np("The traffic shaper configuration has been changed.<br>You must apply the changes in order for them to take effect.");?><br>
188
<?php endif; ?>
189
<table width="100%" border="0" cellpadding="0" cellspacing="0">
190
  <tr><td>
191 52380979 Scott Ullrich
<?php
192
	$tab_array = array();
193 e0405a4b Ermal Luçi
	$tab_array[0] = array("By Interface", false, "firewall_shaper.php");
194 a843b04f Ermal Luçi
	$tab_array[1] = array("By Queue", true, "firewall_shaper_queues.php");
195 6d0c07ea Ermal Luçi
	$tab_array[2] = array("Limiter", false, "firewall_shaper_vinterface.php");
196 f63d5b66 Helder Pereira
	$tab_array[3] = array("Layer7", false, "firewall_shaper_layer7.php");
197
	$tab_array[4] = array("Wizards", false, "firewall_shaper_wizards.php");
198 52380979 Scott Ullrich
	display_top_tabs($tab_array);
199
?>
200 5b237745 Scott Ullrich
  </td></tr>
201 92125c97 Ermal Luçi
  <tr> 
202
    <td valign="top">
203 d732f186 Bill Marquette
	<div id="mainarea">
204 e0405a4b Ermal Luçi
		<table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0">
205
		<tr>
206
		<td width="30%" valign="top" algin="left">
207
                <?      echo $tree; ?>
208
		</td>
209
		<td width="70%" valign="top" align="center">
210 197bfe96 Ermal Luçi
			<? 
211
				if ($qname)
212
        				echo "<pr class=\"pgtitle\">" . $qname . "</pr><br />";
213 e0405a4b Ermal Luçi
				echo "<table align=\"center\" class=\"tabcont\" width=\"80%\" border=\"0\" cellpadding=\"4\" cellspacing=\"0\">";
214 197bfe96 Ermal Luçi
				echo $output;
215
				echo "</table>";
216
			?>	
217
			</td></tr>
218
			</table>
219
220 d732f186 Bill Marquette
		      </td></tr>
221
		</div>
222
	  </td>
223 5b237745 Scott Ullrich
	</tr>
224
</table>
225
            </form>
226 197bfe96 Ermal Luçi
<?php include("fend.inc"); 
227
?>
228 5b237745 Scott Ullrich
</body>
229
</html>