Project

General

Profile

Download (9.7 KB) Statistics
| Branch: | Tag: | Revision:
1 ce9abebd Ermal Luci
<?php
2
/* $Id$ */
3
/*
4
	services_igmpproxy_edit_edit.php
5 8ec0b9d0 Ermal Luci
6
	Copyright (C) 2009 Ermal Lu?i
7 ce9abebd Ermal Luci
	Copyright (C) 2004 Scott Ullrich
8
	All rights reserved.
9
10
	originially part of m0n0wall (http://m0n0.ch/wall)
11
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
12
	All rights reserved.
13
14
	Redistribution and use in source and binary forms, with or without
15
	modification, are permitted provided that the following conditions are met:
16
17
	1. Redistributions of source code must retain the above copyright notice,
18
	   this list of conditions and the following disclaimer.
19
20
	2. Redistributions in binary form must reproduce the above copyright
21
	   notice, this list of conditions and the following disclaimer in the
22
	   documentation and/or other materials provided with the distribution.
23
24
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
25
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
26
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
28
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
	POSSIBILITY OF SUCH DAMAGE.
34
*/
35 1d333258 Scott Ullrich
/*
36
	pfSense_MODULE:	igmpproxy
37
*/
38 ce9abebd Ermal Luci
39
##|+PRIV
40
##|*IDENT=page-services-igmpproxy
41
##|*NAME=Firewall: Igmpproxy: Edit page
42
##|*DESCR=Allow access to the 'Firewall: Igmpproxy' page.
43
##|*MATCH=services_igmpproxy_edit.php*
44
##|-PRIV
45
46 12a489b3 Rafael Lucas
$pgtitle = array(gettext("Firewall"),gettext("IGMP Proxy"), gettext("Edit"));
47 ce9abebd Ermal Luci
48
require("guiconfig.inc");
49
50
if (!is_array($config['igmpproxy']['igmpentry']))
51
	$config['igmpproxy']['igmpentry'] = array();
52
53
//igmpproxy_sort();
54
$a_igmpproxy = &$config['igmpproxy']['igmpentry'];
55
56
$id = $_GET['id'];
57
if (isset($_POST['id']))
58
	$id = $_POST['id'];
59
60
if (isset($id) && $a_igmpproxy[$id]) {
61
	$pconfig['ifname'] = $a_igmpproxy[$id]['ifname'];
62
	$pconfig['threshold'] = $a_igmpproxy[$id]['threshold'];
63
	$pconfig['type'] = $a_igmpproxy[$id]['type'];
64
	$pconfig['address'] = $a_igmpproxy[$id]['address'];
65
	$pconfig['descr'] = html_entity_decode($a_igmpproxy[$id]['descr']);
66
67
}
68
69
if ($_POST) {
70
71
	unset($input_errors);
72
	$pconfig = $_POST;
73
74 20989f5a Ermal Lu?i
	if ($_POST['type'] == "upstream") {
75
		foreach ($a_igmpproxy as $pid => $proxyentry) {
76
			if (isset($id) && $id == $pid)
77
				continue;
78 ce9abebd Ermal Luci
			if ($proxyentry['type'] == "upstream" && $proxyentry['ifname'] != $_POST['interface'])
79 12a489b3 Rafael Lucas
				$input_errors[] = gettext("Only one 'upstream' interface can be configured.");
80 20989f5a Ermal Lu?i
		}
81
	}
82 ce9abebd Ermal Luci
	$igmpentry = array();
83
	$igmpentry['ifname'] = $_POST['ifname'];
84
	$igmpentry['threshold'] = $_POST['threshold'];
85
	$igmpentry['type'] = $_POST['type'];
86
	$address = "";
87
	$isfirst = 0;
88
	/* item is a normal igmpentry type */
89
	for($x=0; $x<4999; $x++) {
90
		if($_POST["address{$x}"] <> "") {
91
			if ($isfirst > 0)
92
				$address .= " ";
93
			$address .= $_POST["address{$x}"];
94
			$address .= "/" . $_POST["address_subnet{$x}"];
95
			$isfirst++;
96
		}
97
	}
98
99
	if (!$input_errors) {
100
		$igmpentry['address'] = $address;
101 d865241e jim-p
		$igmpentry['descr'] = $_POST['descr'];
102 ce9abebd Ermal Luci
103
		if (isset($id) && $a_igmpproxy[$id])
104
			$a_igmpproxy[$id] = $igmpentry;
105
		else
106
			$a_igmpproxy[] = $igmpentry;
107
108
		write_config();
109
110 b211666f Ermal
		mark_subsystem_dirty('igmpproxy');
111 ce9abebd Ermal Luci
		header("Location: services_igmpproxy.php");
112
		exit;		
113
	}
114
	//we received input errors, copy data to prevent retype
115
	else
116
	{
117 d865241e jim-p
		$pconfig['descr'] = $_POST['descr'];
118 ce9abebd Ermal Luci
		$pconfig['address'] = $address;
119
		$pconfig['type'] = $_POST['type'];
120
	}
121
}
122
123
include("head.inc");
124
125
?>
126
127
<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onload="<?= $jsevents["body"]["onload"] ?>">
128
<?php
129
	include("fbegin.inc");
130
?>
131
132 f51d5d57 Darren Embry
<script type="text/javascript" src="/javascript/jquery.ipv4v6ify.js">
133
</script>
134 625dcc40 Bill Marquette
<script type="text/javascript" src="/javascript/row_helper.js">
135 ce9abebd Ermal Luci
</script>
136
137 0abd5ad3 Carlos Eduardo Ramos
<input type='hidden' name='address_type' value='textbox' class="formfld unknown" />
138
<input type='hidden' name='address_subnet_type' value='select' />
139 ce9abebd Ermal Luci
140
<script type="text/javascript">
141
	rowname[0] = "address";
142 a8fe61f1 Darren Embry
	rowtype[0] = "textbox,ipv4v6";
143 ce9abebd Ermal Luci
	rowsize[0] = "30";
144
145
	rowname[1] = "address_subnet";
146 a8fe61f1 Darren Embry
	rowtype[1] = "select,ipv4v6";
147 ce9abebd Ermal Luci
	rowsize[1] = "1";
148
149
	rowname[2] = "detail";
150
	rowtype[2] = "textbox";
151
	rowsize[2] = "50";
152
</script>
153
154
<?php if ($input_errors) print_input_errors($input_errors); ?>
155
<div id="inputerrors"></div>
156
157
<form action="services_igmpproxy_edit.php" method="post" name="iform" id="iform">
158
<table width="100%" border="0" cellpadding="6" cellspacing="0">
159
  <tr>
160 12a489b3 Rafael Lucas
	<td colspan="2" valign="top" class="listtopic"><?=gettext("IGMP Proxy Edit");?></td>
161 ce9abebd Ermal Luci
  </tr>
162
  <tr>
163 12a489b3 Rafael Lucas
    <td valign="top" class="vncellreq"><?=gettext("Interface");?></td>
164 ce9abebd Ermal Luci
    <td class="vtable"> <select name="ifname" id="ifname" >
165
		<?php $iflist = get_configured_interface_with_descr();
166
			foreach ($iflist as $ifnam => $ifdescr) {
167
				echo "<option value={$ifnam}";
168
				if ($ifnam == $pconfig['ifname'])
169
					echo " selected";
170
				echo ">{$ifdescr}</option>";
171
			}		
172
		?>
173
			</select>
174
    </td>
175
  </tr>
176
  <tr>
177 12a489b3 Rafael Lucas
    <td width="22%" valign="top" class="vncell"><?=gettext("Description");?></td>
178 ce9abebd Ermal Luci
    <td width="78%" class="vtable">
179 dd5bf424 Scott Ullrich
      <input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>" />
180 ce9abebd Ermal Luci
      <br />
181
      <span class="vexpl">
182 12a489b3 Rafael Lucas
        <?=gettext("You may enter a description here for your reference (not parsed).");?>
183 ce9abebd Ermal Luci
      </span>
184
    </td>
185
  </tr>
186
  <tr>
187 12a489b3 Rafael Lucas
    <td valign="top" class="vncellreq"><?=gettext("Type");?></td>
188 ce9abebd Ermal Luci
    <td class="vtable">
189
      <select name="type" class="formselect" id="type" >
190 12a489b3 Rafael Lucas
        <option value="upstream" <?php if ($pconfig['type'] == "upstream") echo "selected"; ?>><?=gettext("Upstream Interface");?></option>
191
        <option value="downstream" <?php if ($pconfig['type'] == "downstream") echo "selected"; ?>><?=gettext("Downstream Interface");?></option>
192 ce9abebd Ermal Luci
      </select>
193
      <br />
194
      <span class="vexpl">
195 12a489b3 Rafael Lucas
        <?=gettext("The <b>upstream</b> network interface is the outgoing interface which is".
196
      " responsible for communicating to available multicast data sources.".
197
      " There can only be one upstream interface.");?>
198 ce9abebd Ermal Luci
	</span>
199
	<br />
200
	<span class="vexpl">
201 0abd5ad3 Carlos Eduardo Ramos
       <b><?=gettext("Downstream"); ?></b> <?=gettext("network interfaces are the distribution  interfaces  to  the".
202 12a489b3 Rafael Lucas
      " destination  networks,  where  multicast  clients  can  join groups and".
203
      " receive multicast data. One or more downstream interfaces must be configured.");?>
204 ce9abebd Ermal Luci
      </span>
205
    </td>
206
  </tr>
207
  <tr>
208 12a489b3 Rafael Lucas
    <td valign="top" class="vncell"><?=gettext("Threshold");?></td>
209 ce9abebd Ermal Luci
    <td class="vtable">
210 ac4cbc15 jim-p
      <input name="threshold" class="formfld unknown" id="threshold" value="<?php echo htmlspecialchars($pconfig['threshold']);?>">
211 ce9abebd Ermal Luci
      <br />
212
      <span class="vexpl">
213 12a489b3 Rafael Lucas
	      <?=gettext("Defines the TTL threshold for  the  network  interface.  Packets".
214
             " with  a lower TTL than the threshols value will be ignored. This".
215
             " setting is optional, and by default the threshold is 1.");?>
216 ce9abebd Ermal Luci
      </span>
217
    </td>
218
  </tr>
219
  <tr>
220 12a489b3 Rafael Lucas
    <td width="22%" valign="top" class="vncellreq"><div id="addressnetworkport"><?=gettext("Network (s)");?></div></td>
221 ce9abebd Ermal Luci
    <td width="78%" class="vtable">
222
      <table id="maintable">
223
        <tbody>
224
          <tr>
225 12a489b3 Rafael Lucas
            <td><div id="onecolumn"><?=gettext("Network");?></div></td>
226
            <td><div id="twocolumn"><?=gettext("CIDR");?></div></td>
227 ce9abebd Ermal Luci
          </tr>
228
229
	<?php
230
	$counter = 0;
231
	$address = $pconfig['address'];
232
	if ($address <> "") {
233
		$item = explode(" ", $address);
234
		foreach($item as $ww) {
235
			$address = $item[$counter];
236
			$address_subnet = "";
237
			$item2 = explode("/", $address);
238
			foreach($item2 as $current) {
239
				if($item2[1] <> "") {
240
					$address = $item2[0];
241
					$address_subnet = $item2[1];
242
				}
243
			}
244
			$item4 = $item3[$counter];
245
			$tracker = $counter;
246
	?>
247
          <tr>
248
            <td>
249
              <input name="address<?php echo $tracker; ?>" type="text" class="formfld unknown" id="address<?php echo $tracker; ?>" size="30" value="<?=htmlspecialchars($address);?>" />
250
            </td>
251
            <td>
252
			        <select name="address_subnet<?php echo $tracker; ?>" class="formselect" id="address_subnet<?php echo $tracker; ?>">
253
			          <option></option>
254
			          <?php for ($i = 32; $i >= 1; $i--): ?>
255
			          <option value="<?=$i;?>" <?php if ($i == $address_subnet) echo "selected"; ?>><?=$i;?></option>
256
			          <?php endfor; ?>
257
			        </select>
258
			      </td>
259
            <td>
260 bddc8818 Erik Fonnesbeck
    		<a onclick="removeRow(this); return false;" href="#"><img border="0" src="/themes/<?echo $g['theme'];?>/images/icons/icon_x.gif" /></a>
261 ce9abebd Ermal Luci
	      </td>
262
          </tr>
263
<?php
264
        	$counter++;
265
266
       		} // end foreach
267
	} // end if
268
?>
269
        </tbody>
270
        <tfoot>
271
272
        </tfoot>
273
		  </table>
274
			<a onclick="javascript:addRowTo('maintable'); return false;" href="#">
275 12a489b3 Rafael Lucas
        <img border="0" src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="" title="<?=gettext("add another entry");?>" />
276 ce9abebd Ermal Luci
      </a>
277
		</td>
278
  </tr>
279
  <tr>
280
    <td width="22%" valign="top">&nbsp;</td>
281
    <td width="78%">
282 12a489b3 Rafael Lucas
      <input id="submit" name="submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" />
283
      <a href="services_igmpproxy.php"><input id="cancelbutton" name="cancelbutton" type="button" class="formbtn" value="<?=gettext("Cancel");?>" /></a>
284 ce9abebd Ermal Luci
      <?php if (isset($id) && $a_igmpproxy[$id]): ?>
285 225a2f0b Scott Ullrich
      <input name="id" type="hidden" value="<?=htmlspecialchars($id);?>" />
286 ce9abebd Ermal Luci
      <?php endif; ?>
287
    </td>
288
  </tr>
289
</table>
290
</form>
291
292
<script type="text/javascript">
293
	field_counter_js = 2;
294
	rows = 1;
295
	totalrows = <?php echo $counter; ?>;
296
	loaded = <?php echo $counter; ?>;
297
</script>
298
299
<?php include("fend.inc"); ?>
300
</body>
301
</html>