Project

General

Profile

Download (9.59 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 625dcc40 Bill Marquette
<script type="text/javascript" src="/javascript/row_helper.js">
133 ce9abebd Ermal Luci
</script>
134
135 0abd5ad3 Carlos Eduardo Ramos
<input type='hidden' name='address_type' value='textbox' class="formfld unknown" />
136
<input type='hidden' name='address_subnet_type' value='select' />
137 ce9abebd Ermal Luci
138
<script type="text/javascript">
139
	rowname[0] = "address";
140
	rowtype[0] = "textbox";
141
	rowsize[0] = "30";
142
143
	rowname[1] = "address_subnet";
144
	rowtype[1] = "select";
145
	rowsize[1] = "1";
146
147
	rowname[2] = "detail";
148
	rowtype[2] = "textbox";
149
	rowsize[2] = "50";
150
</script>
151
152
<?php if ($input_errors) print_input_errors($input_errors); ?>
153
<div id="inputerrors"></div>
154
155
<form action="services_igmpproxy_edit.php" method="post" name="iform" id="iform">
156
<table width="100%" border="0" cellpadding="6" cellspacing="0">
157
  <tr>
158 12a489b3 Rafael Lucas
	<td colspan="2" valign="top" class="listtopic"><?=gettext("IGMP Proxy Edit");?></td>
159 ce9abebd Ermal Luci
  </tr>
160
  <tr>
161 12a489b3 Rafael Lucas
    <td valign="top" class="vncellreq"><?=gettext("Interface");?></td>
162 ce9abebd Ermal Luci
    <td class="vtable"> <select name="ifname" id="ifname" >
163
		<?php $iflist = get_configured_interface_with_descr();
164
			foreach ($iflist as $ifnam => $ifdescr) {
165
				echo "<option value={$ifnam}";
166
				if ($ifnam == $pconfig['ifname'])
167
					echo " selected";
168
				echo ">{$ifdescr}</option>";
169
			}		
170
		?>
171
			</select>
172
    </td>
173
  </tr>
174
  <tr>
175 12a489b3 Rafael Lucas
    <td width="22%" valign="top" class="vncell"><?=gettext("Description");?></td>
176 ce9abebd Ermal Luci
    <td width="78%" class="vtable">
177 dd5bf424 Scott Ullrich
      <input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>" />
178 ce9abebd Ermal Luci
      <br />
179
      <span class="vexpl">
180 12a489b3 Rafael Lucas
        <?=gettext("You may enter a description here for your reference (not parsed).");?>
181 ce9abebd Ermal Luci
      </span>
182
    </td>
183
  </tr>
184
  <tr>
185 12a489b3 Rafael Lucas
    <td valign="top" class="vncellreq"><?=gettext("Type");?></td>
186 ce9abebd Ermal Luci
    <td class="vtable">
187
      <select name="type" class="formselect" id="type" >
188 12a489b3 Rafael Lucas
        <option value="upstream" <?php if ($pconfig['type'] == "upstream") echo "selected"; ?>><?=gettext("Upstream Interface");?></option>
189
        <option value="downstream" <?php if ($pconfig['type'] == "downstream") echo "selected"; ?>><?=gettext("Downstream Interface");?></option>
190 ce9abebd Ermal Luci
      </select>
191
      <br />
192
      <span class="vexpl">
193 12a489b3 Rafael Lucas
        <?=gettext("The <b>upstream</b> network interface is the outgoing interface which is".
194
      " responsible for communicating to available multicast data sources.".
195
      " There can only be one upstream interface.");?>
196 ce9abebd Ermal Luci
	</span>
197
	<br />
198
	<span class="vexpl">
199 0abd5ad3 Carlos Eduardo Ramos
       <b><?=gettext("Downstream"); ?></b> <?=gettext("network interfaces are the distribution  interfaces  to  the".
200 12a489b3 Rafael Lucas
      " destination  networks,  where  multicast  clients  can  join groups and".
201
      " receive multicast data. One or more downstream interfaces must be configured.");?>
202 ce9abebd Ermal Luci
      </span>
203
    </td>
204
  </tr>
205
  <tr>
206 12a489b3 Rafael Lucas
    <td valign="top" class="vncell"><?=gettext("Threshold");?></td>
207 ce9abebd Ermal Luci
    <td class="vtable">
208 6327599d Bill Marquette
      <input name="threshold" class="formfld unknown" id="threshold" value="<?php echo $pconfig['threshold'];?>">
209 ce9abebd Ermal Luci
      <br />
210
      <span class="vexpl">
211 12a489b3 Rafael Lucas
	      <?=gettext("Defines the TTL threshold for  the  network  interface.  Packets".
212
             " with  a lower TTL than the threshols value will be ignored. This".
213
             " setting is optional, and by default the threshold is 1.");?>
214 ce9abebd Ermal Luci
      </span>
215
    </td>
216
  </tr>
217
  <tr>
218 12a489b3 Rafael Lucas
    <td width="22%" valign="top" class="vncellreq"><div id="addressnetworkport"><?=gettext("Network (s)");?></div></td>
219 ce9abebd Ermal Luci
    <td width="78%" class="vtable">
220
      <table id="maintable">
221
        <tbody>
222
          <tr>
223 12a489b3 Rafael Lucas
            <td><div id="onecolumn"><?=gettext("Network");?></div></td>
224
            <td><div id="twocolumn"><?=gettext("CIDR");?></div></td>
225 ce9abebd Ermal Luci
          </tr>
226
227
	<?php
228
	$counter = 0;
229
	$address = $pconfig['address'];
230
	if ($address <> "") {
231
		$item = explode(" ", $address);
232
		foreach($item as $ww) {
233
			$address = $item[$counter];
234
			$address_subnet = "";
235
			$item2 = explode("/", $address);
236
			foreach($item2 as $current) {
237
				if($item2[1] <> "") {
238
					$address = $item2[0];
239
					$address_subnet = $item2[1];
240
				}
241
			}
242
			$item4 = $item3[$counter];
243
			$tracker = $counter;
244
	?>
245
          <tr>
246
            <td>
247
              <input name="address<?php echo $tracker; ?>" type="text" class="formfld unknown" id="address<?php echo $tracker; ?>" size="30" value="<?=htmlspecialchars($address);?>" />
248
            </td>
249
            <td>
250
			        <select name="address_subnet<?php echo $tracker; ?>" class="formselect" id="address_subnet<?php echo $tracker; ?>">
251
			          <option></option>
252
			          <?php for ($i = 32; $i >= 1; $i--): ?>
253
			          <option value="<?=$i;?>" <?php if ($i == $address_subnet) echo "selected"; ?>><?=$i;?></option>
254
			          <?php endfor; ?>
255
			        </select>
256
			      </td>
257
            <td>
258 bddc8818 Erik Fonnesbeck
    		<a onclick="removeRow(this); return false;" href="#"><img border="0" src="/themes/<?echo $g['theme'];?>/images/icons/icon_x.gif" /></a>
259 ce9abebd Ermal Luci
	      </td>
260
          </tr>
261
<?php
262
        	$counter++;
263
264
       		} // end foreach
265
	} // end if
266
?>
267
        </tbody>
268
        <tfoot>
269
270
        </tfoot>
271
		  </table>
272
			<a onclick="javascript:addRowTo('maintable'); return false;" href="#">
273 12a489b3 Rafael Lucas
        <img border="0" src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="" title="<?=gettext("add another entry");?>" />
274 ce9abebd Ermal Luci
      </a>
275
		</td>
276
  </tr>
277
  <tr>
278
    <td width="22%" valign="top">&nbsp;</td>
279
    <td width="78%">
280 12a489b3 Rafael Lucas
      <input id="submit" name="submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" />
281
      <a href="services_igmpproxy.php"><input id="cancelbutton" name="cancelbutton" type="button" class="formbtn" value="<?=gettext("Cancel");?>" /></a>
282 ce9abebd Ermal Luci
      <?php if (isset($id) && $a_igmpproxy[$id]): ?>
283 225a2f0b Scott Ullrich
      <input name="id" type="hidden" value="<?=htmlspecialchars($id);?>" />
284 ce9abebd Ermal Luci
      <?php endif; ?>
285
    </td>
286
  </tr>
287
</table>
288
</form>
289
290
<script type="text/javascript">
291
	field_counter_js = 2;
292
	rows = 1;
293
	totalrows = <?php echo $counter; ?>;
294
	loaded = <?php echo $counter; ?>;
295
</script>
296
297
<?php include("fend.inc"); ?>
298
</body>
299
</html>