Project

General

Profile

Download (16.7 KB) Statistics
| Branch: | Tag: | Revision:
1 c63e3594 Darren Embry
#!/usr/local/bin/php -q
2 5b237745 Scott Ullrich
<?php
3 1b8df11b Bill Marquette
/* $Id$ */
4 5b237745 Scott Ullrich
/*
5
	rc.initial.setlanip
6
	part of m0n0wall (http://m0n0.ch/wall)
7 bbc3533f Scott Ullrich
8 5b237745 Scott Ullrich
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
9
	All rights reserved.
10 bbc3533f Scott Ullrich
11 5b237745 Scott Ullrich
	Redistribution and use in source and binary forms, with or without
12
	modification, are permitted provided that the following conditions are met:
13 bbc3533f Scott Ullrich
14 5b237745 Scott Ullrich
	1. Redistributions of source code must retain the above copyright notice,
15
	   this list of conditions and the following disclaimer.
16 bbc3533f Scott Ullrich
17 5b237745 Scott Ullrich
	2. Redistributions in binary form must reproduce the above copyright
18
	   notice, this list of conditions and the following disclaimer in the
19
	   documentation and/or other materials provided with the distribution.
20 bbc3533f Scott Ullrich
21 5b237745 Scott Ullrich
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
22
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
23
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
25
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
	POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33 c63e3594 Darren Embry
34
35
$options = getopt("hn", array("dry-run", "help"));
36
37
if (isset($options["h"]) || isset($options["help"])) {
38
	echo "usage: /etc/rc.initial.setlanip [option ...]\n";
39
	echo "  -h, --help       show this message\n";
40
	echo "  -n, --dry-run    do not make any configuration changes\n";
41
	exit(0);
42
}
43
44
$dry_run = isset($options["n"]) || isset($options["dry-run"]);
45
if ($dry_run) {
46
	echo "DRY RUN MODE IS ON\n";
47
}
48
49
50
51 416e1530 Darren Embry
/* parse the configuration and include all functions used below */
52
require_once("config.inc");
53
require_once("functions.inc");
54
require_once("filter.inc");
55
require_once("shaper.inc");
56
require_once("rrd.inc");
57 bbc3533f Scott Ullrich
58 416e1530 Darren Embry
function console_get_interface_from_ppp($realif) {
59
	global $config;
60 aab5f04c Ermal
61 416e1530 Darren Embry
	if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
62
		foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
63
			if ($realif == $ppp['if']) {
64
				$ifaces = explode(",", $ppp['ports']);
65
				return $ifaces[0];
66 aab5f04c Ermal
			}
67
		}
68
	}
69
70 416e1530 Darren Embry
	return "";
71
}
72
73 c1361a9f Darren Embry
function prompt_for_enable_dhcp_server($version = 4) {
74 416e1530 Darren Embry
	global $config, $fp, $interface;
75
	if($interface == "wan") {
76
		if($config['interfaces']['lan']) 
77
			return "n";
78
	}
79
	/* only allow DHCP server to be enabled when static IP is
80
	   configured on this interface */
81 c1361a9f Darren Embry
	if ($version === 6) {
82
		$is_ipaddr = is_ipaddrv6($config['interfaces'][$interface]['ipaddrv6']);
83
	} else {
84
		$is_ipaddr = is_ipaddrv4($config['interfaces'][$interface]['ipaddr']);
85
	}
86
	if ($is_ipaddr) {
87
		$label_DHCP = ($version === 6) ? "DHCP6" : "DHCP";
88 416e1530 Darren Embry
		do {
89
			$good = false;
90
			$upperifname = strtoupper($interface);
91 005a7049 Darren Embry
			echo "\n" . sprintf(gettext("Do you want to enable the %s server on %s? [y|n]"),
92
			                    $label_DHCP, $upperifname) . "  ";
93 416e1530 Darren Embry
			$yn = strtolower(chop(fgets($fp)));
94
			if ($yn[0] == "y" or $yn[0] == "n")
95 e1454e42 Scott Ullrich
				$good = true;
96 416e1530 Darren Embry
		} while (!$good);
97 e1454e42 Scott Ullrich
	}
98 416e1530 Darren Embry
	return $yn;
99
}
100 e1454e42 Scott Ullrich
101 0098aa73 Darren Embry
function get_interface_config_description($iface) {
102
	global $config;
103
	$c = $config['interfaces'][$iface];
104
	if (!$c) { return null; }
105
	$if = $c['if'];
106
	$result = $if;
107
	$result2 = array();
108
	$ipaddr = $c['ipaddr'];
109
	$ipaddrv6 = $c['ipaddrv6'];
110
	if (is_ipaddr($ipaddr)) {
111
		$result2[] = "static";
112
	} else if ($ipaddr == "dhcp") {
113
		$result2[] = "dhcp";
114
	}
115
	if (is_ipaddr($ipaddrv6)) {
116
		$result2[] = "staticv6";
117
	} else if ($ipaddrv6 == "dhcp6") {
118
		$result2[] = "dhcp6";
119
	}
120
	if (count($result2)) {
121
		$result .= " - " . implode(", ", $result2);
122
	}
123
	return $result;
124
}
125
126 416e1530 Darren Embry
$fp = fopen('php://stdin', 'r');
127 bbc3533f Scott Ullrich
128 416e1530 Darren Embry
/* build an interface collection */
129
$ifdescrs = get_configured_interface_with_descr(false, true);
130 3f63e8e2 Darren Embry
$count = count($ifdescrs);
131 534334ba Scott Ullrich
	
132 416e1530 Darren Embry
/* grab interface that we will operate on, unless there is only one
133
   interface */
134 3f63e8e2 Darren Embry
if ($count > 1) {
135 416e1530 Darren Embry
	echo "Available interfaces:\n\n";
136
	$x=1;
137 6499a7d5 Darren Embry
	foreach($ifdescrs as $iface => $ifdescr) {
138 0098aa73 Darren Embry
		$config_descr = get_interface_config_description($iface);
139
		echo "{$x} - {$ifdescr} ({$config_descr})\n";
140 416e1530 Darren Embry
		$x++;
141 8dee794b Scott Ullrich
	}
142 416e1530 Darren Embry
	echo "\nEnter the number of the interface you wish to configure: ";
143
	$intnum = chop(fgets($fp));	
144
} else {
145 3f63e8e2 Darren Embry
	$intnum = $count;
146 416e1530 Darren Embry
}
147 d01ccca8 Chris Buechler
	
148 416e1530 Darren Embry
if($intnum < 1) 
149
	exit;
150 3f63e8e2 Darren Embry
if($intnum > $count)
151 416e1530 Darren Embry
	exit;
152 8dee794b Scott Ullrich
		
153 416e1530 Darren Embry
$index = 1;
154
foreach ($ifdescrs as $ifname => $ifdesc) {
155
	if ($intnum == $index)  {
156
		$interface = $ifname;
157
		break;
158
	} else {
159
		$index++;
160 8dee794b Scott Ullrich
	}
161 416e1530 Darren Embry
}	
162
if(!$interface) {
163
	echo "Invalid interface!\n";
164
	exit;
165
}
166 aab5f04c Ermal
167 416e1530 Darren Embry
$ifaceassigned = "";
168 c1361a9f Darren Embry
169 d23b53eb Darren Embry
function next_unused_gateway_name($interface) {
170
	global $g, $config;
171
	$new_name = "GW_" . strtoupper($interface);
172
173
	if (!is_array($config['gateways']['gateway_item'])) { return $new_name; }
174
	$count = 1;
175
	do {
176
		$existing = false;
177
		foreach ($config['gateways']['gateway_item'] as $item) {
178
			if ($item['name'] === $new_name) {
179
				$existing = true;
180
				break;
181
			}
182
		}
183
		if ($existing) {
184
			$count += 1;
185
			$new_name = "GW_" . strtoupper($interface) . "_" . $count;
186
		}
187
	} while ($existing);
188
	return $new_name;
189
}
190
191
function add_gateway_to_config($interface, $gatewayip, $inet_type) {
192
	global $g, $config, $dry_run;
193
	if (!is_array($config['gateways']['gateway_item'])) {
194
		$config['gateways']['gateway_item'] = array();
195
	}
196
	$a_gateways = &$config['gateways']['gateway_item'];
197
	if ($dry_run) {
198
		print_r($a_gateways);
199
	}
200 9a15b8d2 Renato Botelho
	$new_name = '';
201 d23b53eb Darren Embry
	$is_default = true;
202
	foreach ($a_gateways as $item) {
203
		if ($item['ipprotocol'] === $inet_type) {
204 9a15b8d2 Renato Botelho
			if (isset($item['defaultgw']))
205
				$is_default = false;
206
			if (($item['interface'] === $interface) && ($item['gateway'] === $gatewayip))
207
				$new_name = $item['name'];
208 d23b53eb Darren Embry
		}
209
	}
210 9a15b8d2 Renato Botelho
	if ($new_name == '') {
211
		$new_name = next_unused_gateway_name($interface);
212
		$item = array(
213
			"interface" => $interface,
214
			"gateway" => $gatewayip,
215
			"name" => $new_name,
216
			"weight" => 1,
217
			"ipprotocol" => $inet_type,
218
			"interval" => true,
219
			"descr" => "Interface $interface Gateway",
220
			"defaultgw" => $is_default
221
		);
222
		if ($dry_run) {
223
			print_r($item);
224
		}
225
		$a_gateways[] = $item;
226 d23b53eb Darren Embry
	}
227 9a15b8d2 Renato Botelho
228
	return $new_name;
229 d23b53eb Darren Embry
}
230
231 c1361a9f Darren Embry
function console_configure_ip_address($version) {
232
	global $g, $config, $interface, $restart_dhcpd, $ifaceassigned, $fp;
233
234
	$label_IPvX = ($version === 6) ? "IPv6"   : "IPv4";
235
	$maxbits    = ($version === 6) ? 127      : 31;
236
	$label_DHCP = ($version === 6) ? "DHCP6"  : "DHCP";
237
238
	$upperifname = strtoupper($interface);
239
240 416e1530 Darren Embry
	if($interface == "wan") {
241 005a7049 Darren Embry
		echo sprintf(gettext("Configure %s address %s interface via %s?  [y|n]"),
242
		             $label_IPvX, $upperifname, $label_DHCP) . "\n> ";
243 416e1530 Darren Embry
		$intdhcp = chop(fgets($fp));
244
		if(strtolower($intdhcp) == "y" || strtolower($intdhcp) == "yes") {
245 aab5f04c Ermal
			$ifppp = console_get_interface_from_ppp(get_real_interface("wan"));
246
			if (!empty($ifppp))
247
				$ifaceassigned = $ifppp;
248 c1361a9f Darren Embry
			$intip = ($version === 6) ? "dhcp6" : "dhcp";
249 416e1530 Darren Embry
			$intbits = "";
250
			$isintdhcp = true;
251
			$restart_dhcpd = true;
252
		} 
253
	}
254
		
255
	if($isintdhcp == false or $interface <> "wan") {
256 bebf0fa8 Renato Botelho
		while(true) {
257 416e1530 Darren Embry
			do {
258 bebf0fa8 Renato Botelho
				echo "\n" . sprintf(gettext("Enter the new %s %s address.  Press <ENTER> for none:"),
259
						    $upperifname, $label_IPvX) . "\n> ";
260
				$intip = chop(fgets($fp));
261
				$is_ipaddr = ($version === 6) ? is_ipaddrv6($intip) : is_ipaddrv4($intip);
262
				if ($is_ipaddr && is_ipaddr_configured($intip, $interface, true)) {
263
					$ip_conflict = true;
264
					echo gettext("This IP address conflicts with another interface or a VIP") . "\n";
265
				} else
266
					$ip_conflict = false;
267
			} while (($ip_conflict === true) || !($is_ipaddr || $intip == ''));
268
			if ($intip != '') {
269
				echo "\n" . sprintf(gettext("Subnet masks are entered as bit counts (as in CIDR notation) in %s."),
270
						    $g['product_name']) . "\n";
271
				if ($version === 6) {
272
					echo "e.g. ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00 = 120\n";
273
					echo "     ffff:ffff:ffff:ffff:ffff:ffff:ffff:0    = 112\n";
274
					echo "     ffff:ffff:ffff:ffff:ffff:ffff:0:0       =  96\n";
275
					echo "     ffff:ffff:ffff:ffff:ffff:0:0:0          =  80\n";
276
					echo "     ffff:ffff:ffff:ffff:0:0:0:0             =  64\n";
277
				} else {
278
					echo "e.g. 255.255.255.0 = 24\n";
279
					echo "     255.255.0.0   = 16\n";
280
					echo "     255.0.0.0     = 8\n";
281
				}
282
				do {
283
					$upperifname = strtoupper($interface);
284
					echo "\n" . sprintf(gettext("Enter the new %s %s subnet bit count:"),
285
							    $upperifname, $label_IPvX) . "\n> ";
286
					$intbits = chop(fgets($fp));
287
					$intbits_ok = is_numeric($intbits) && (($intbits >= 1) || ($intbits <= $maxbits));
288
					$restart_dhcpd = true;
289
290
					if ($version === 4 && $intbits < $maxbits) {
291
						if ($intip == gen_subnet($intip, $intbits)) {
292
							echo gettext("You cannot set network address to an interface");
293
							continue 2;
294
							$intbits_ok = false;
295
						} else if ($intip == gen_subnet_max($intip, $intbits)) {
296
							echo gettext("You cannot set broadcast address to an interface");
297
							continue 2;
298
							$intbits_ok = false;
299
						}
300 20dda766 Renato Botelho
					}
301 bebf0fa8 Renato Botelho
				} while (!$intbits_ok);
302
303
				if ($version === 6) {
304
					$subnet = gen_subnetv6($intip, $intbits);
305
				} else {
306
					$subnet = gen_subnet($intip, $intbits);
307 20dda766 Renato Botelho
				}
308 bebf0fa8 Renato Botelho
				do {
309 974fb32c Phillip Davis
					echo "\n" . sprintf(gettext("For a WAN, enter the new %s %s upstream gateway address."), $upperifname, $label_IPvX) . "\n" .
310
								gettext("For a LAN, press <ENTER> for none:") . "\n> ";
311 bebf0fa8 Renato Botelho
					$gwip = chop(fgets($fp));
312
					$is_ipaddr = ($version === 6) ? is_ipaddrv6($gwip) : is_ipaddrv4($gwip);
313
					$is_in_subnet = $is_ipaddr && ip_in_subnet($gwip, $subnet . "/" . $intbits);
314
					if ($gwip != '') {
315
						if (!$is_ipaddr) {
316
							echo sprintf(gettext("not an %s IP address!"), $label_IPvX) . "\n";
317
						} else if (!$is_in_subnet) {
318
							echo gettext("not in subnet!") . "\n";
319
						}
320
					}
321
				} while (!($gwip == '' || ($is_ipaddr && $is_in_subnet)));
322 c63e3594 Darren Embry
323 005a7049 Darren Embry
				if ($gwip != '') {
324 bebf0fa8 Renato Botelho
					$inet_type = ($version === 6) ? "inet6" : "inet";
325
					$gwname = add_gateway_to_config($interface, $gwip, $inet_type);
326 c63e3594 Darren Embry
				}
327 d23b53eb Darren Embry
			}
328 bebf0fa8 Renato Botelho
			$ifppp = console_get_interface_from_ppp(get_real_interface($interface));
329
			if (!empty($ifppp))
330
				$ifaceassigned = $ifppp;
331
			break;
332 5b237745 Scott Ullrich
		}
333 416e1530 Darren Embry
	}
334 5b237745 Scott Ullrich
335 9a15b8d2 Renato Botelho
	return array($intip, $intbits, $gwname);
336 c1361a9f Darren Embry
}
337 bbc3533f Scott Ullrich
338 9a15b8d2 Renato Botelho
list($intip,  $intbits,  $gwname)  = console_configure_ip_address(4);
339
list($intip6, $intbits6, $gwname6) = console_configure_ip_address(6);
340 bbc3533f Scott Ullrich
341 416e1530 Darren Embry
if (!empty($ifaceassigned))
342
	$config['interfaces'][$interface]['if'] = $ifaceassigned;
343 9a15b8d2 Renato Botelho
$config['interfaces'][$interface]['ipaddr']    = $intip;
344
$config['interfaces'][$interface]['subnet']    = $intbits;
345
$config['interfaces'][$interface]['gateway']   = $gwname;
346
$config['interfaces'][$interface]['ipaddrv6']  = $intip6;
347
$config['interfaces'][$interface]['subnetv6']  = $intbits6;
348
$config['interfaces'][$interface]['gatewayv6'] = $gwname6;
349
$config['interfaces'][$interface]['enable']    = true;
350 bbc3533f Scott Ullrich
351 c1361a9f Darren Embry
function console_configure_dhcpd($version = 4) {
352 5a997d96 Phil Davis
	global $g, $config, $restart_dhcpd, $fp, $interface, $dry_run, $intip, $intbits, $intip6, $intbits6;
353 c1361a9f Darren Embry
354 1f56ce58 Renato Botelho
	$label_IPvX = ($version === 6) ? "IPv6"    : "IPv4";
355
	$dhcpd      = ($version === 6) ? "dhcpdv6" : "dhcpd";
356 c1361a9f Darren Embry
357
	if($g['services_dhcp_server_enable'])
358
		$yn = prompt_for_enable_dhcp_server($version);
359
	if ($yn == "y") {
360 5a997d96 Phil Davis
		$subnet_start = ($version === 6) ? gen_subnetv6($intip6, $intbits6) : gen_subnet($intip, $intbits);
361
		$subnet_end = ($version === 6) ? gen_subnetv6_max($intip6, $intbits6) : gen_subnet_max($intip, $intbits);
362 c1361a9f Darren Embry
		do {
363 12f5a2d8 Phil Davis
			do {
364
				echo sprintf(gettext("Enter the start address of the %s client address range:"), $label_IPvX) . " ";
365
				$dhcpstartip = chop(fgets($fp));
366
				if ($dhcpstartip === "") {
367
					fclose($fp);
368
					exit(0);
369
				}
370
				$is_ipaddr = ($version === 6) ? is_ipaddrv6($dhcpstartip) : is_ipaddrv4($dhcpstartip);
371
				$is_inrange = is_inrange($dhcpstartip, $subnet_start, $subnet_end);
372
				if (!$is_inrange)
373
					echo gettext("This IP address must be in the interface's subnet") . "\n";
374
			} while (!$is_ipaddr || !$is_inrange);
375 c1361a9f Darren Embry
376 12f5a2d8 Phil Davis
			do {
377
				echo sprintf(gettext("Enter the end address of the %s client address range:"), $label_IPvX) . " ";
378
				$dhcpendip = chop(fgets($fp));
379
				if ($dhcpendip === "") {
380
					fclose($fp);
381
					exit(0);
382
				}
383
				$is_ipaddr = ($version === 6) ? is_ipaddrv6($dhcpendip) : is_ipaddrv4($dhcpendip);
384
				$is_inrange = is_inrange($dhcpendip, $subnet_start, $subnet_end);
385
				if (!$is_inrange)
386
					echo gettext("This IP address must be in the interface's subnet") . "\n";
387
				$not_inorder = ($version === 6) ? (inet_pton($dhcpendip) < inet_pton($dhcpstartip)) : ip_less_than($dhcpendip, $dhcpstartip);
388
				if ($not_inorder) {
389
					echo gettext("The end address of the DHCP range must be >= the start address") . "\n";
390
				}
391
			} while (!$is_ipaddr || !$is_inrange);
392
		} while ($not_inorder);
393 c1361a9f Darren Embry
		$restart_dhcpd = true;
394
		$config[$dhcpd][$interface]['enable'] = true;
395
		$config[$dhcpd][$interface]['range']['from'] = $dhcpstartip;
396
		$config[$dhcpd][$interface]['range']['to'] = $dhcpendip;
397
	} else {
398
		/* TODO - this line is causing a "Fatal error: Cannot unset
399
		   string offsets in /etc/rc.initial.setlanip" on below line
400
		   number */
401
		if($config[$dhcpd][$interface]) 
402
			unset($config[$dhcpd][$interface]['enable']);
403
		echo "Disabling DHCPD...";
404 c63e3594 Darren Embry
		if (!$dry_run) {
405
			services_dhcpd_configure();
406
		}
407 c1361a9f Darren Embry
		echo "Done!\n";
408
	}
409 416e1530 Darren Embry
}
410 bbc3533f Scott Ullrich
411 c1361a9f Darren Embry
console_configure_dhcpd(4);
412
console_configure_dhcpd(6);
413
	
414
//*****************************************************************************
415
416 416e1530 Darren Embry
if ($config['system']['webgui']['protocol'] == "https") {
417 01d72b37 Scott Ullrich
418 416e1530 Darren Embry
	do {
419
		$good = false;
420
		echo "\n" . gettext("Do you want to revert to HTTP as the webConfigurator protocol? (y/n)") . " ";
421
		$yn = strtolower(chop(fgets($fp)));
422
		if ($yn[0] == "y" or $yn[0] == "n")
423
			$good = true;
424
	} while (!$good);
425 01d72b37 Scott Ullrich
426 416e1530 Darren Embry
	if ($yn == "y") {
427
		$config['system']['webgui']['protocol'] = "http";
428
		$restart_webgui = true;
429 01d72b37 Scott Ullrich
	}
430 416e1530 Darren Embry
}
431 bbc3533f Scott Ullrich
432 416e1530 Darren Embry
if (isset($config['system']['webgui']['noantilockout'])) {
433 005a7049 Darren Embry
	echo "\n" . sprintf(gettext("Note: the anti-lockout rule on %s has been re-enabled."), $interface) . "\n";
434 416e1530 Darren Embry
	unset($config['system']['webgui']['noantilockout']);
435
}
436 bbc3533f Scott Ullrich
437 416e1530 Darren Embry
if($config['interfaces']['lan']) {
438
	if($config['dhcpd'])
439
		if($config['dhcpd']['wan'])
440
			unset($config['dhcpd']['wan']);		
441 1f56ce58 Renato Botelho
	if($config['dhcpdv6'])
442
		if($config['dhcpdv6']['wan'])
443
			unset($config['dhcpdv6']['wan']);
444 416e1530 Darren Embry
}
445 68ad6d22 Scott Ullrich
446 416e1530 Darren Embry
if(!$config['interfaces']['lan']) {
447
	unset($config['interfaces']['lan']);
448
	if($config['dhcpd']['lan'])
449
		unset($config['dhcpd']['lan']);
450 1f56ce58 Renato Botelho
	if($config['dhcpdv6']['lan'])
451
		unset($config['dhcpdv6']['lan']);
452 416e1530 Darren Embry
	unset($config['shaper']);
453
	unset($config['ezshaper']);
454
	unset($config['nat']);
455 c63e3594 Darren Embry
	if (!$dry_run) {
456
		system("rm /var/dhcpd/var/db/* >/dev/null 2>/dev/null");
457
		services_dhcpd_configure();
458
	}
459 416e1530 Darren Embry
}
460 68ad6d22 Scott Ullrich
461 416e1530 Darren Embry
$upperifname = strtoupper($interface);
462 c63e3594 Darren Embry
if (!$dry_run) {
463
	echo "\nPlease wait while the changes are saved to {$upperifname}...";
464 1b8bf24d Darren Embry
	write_config(sprintf(gettext("%s IP configuration from console menu"), $interface));
465 c63e3594 Darren Embry
	interface_reconfigure(strtolower($upperifname));
466
	echo " Reloading filter...";
467
	filter_configure_sync();
468
	echo "\n";
469
	if($restart_dhcpd) {
470
		echo " DHCPD..."; 
471
		services_dhcpd_configure();
472
	}
473
	if($restart_webgui) {
474
		echo " restarting webConfigurator... ";
475
		mwexec("/etc/rc.restart_webgui");
476
	}
477 416e1530 Darren Embry
}
478 d1c46aef Scott Ullrich
	
479 416e1530 Darren Embry
if ($intip != '') {
480
	if (is_ipaddr($intip)) {
481 1b8bf24d Darren Embry
		echo "\n\n" . sprintf(gettext("The IPv4 %s address has been set to %s"),
482
		                      $upperifname, "{$intip}/{$intbits}") . "\n";
483 416e1530 Darren Embry
	} else {
484 1b8bf24d Darren Embry
		echo "\n\n" . sprintf(gettext("The IPv4 %s address has been set to %s"),
485
		                      $upperifname, $intip) . "\n";
486 416e1530 Darren Embry
	}
487 c1361a9f Darren Embry
}
488
if ($intip6 != '') {
489
	if (is_ipaddr($intip6)) {
490 1b8bf24d Darren Embry
		echo "\n\n" . sprintf(gettext("The IPv6 %s address has been set to %s"),
491
		                      $upperifname, "${intip6}/${intbits6}") . "\n";
492 c1361a9f Darren Embry
	} else {
493 1b8bf24d Darren Embry
		echo "\n\n" . sprintf(gettext("The IPv6 %s address has been set to %s"),
494
		                      $upperifname, $intip6) . "\n";
495 c1361a9f Darren Embry
	}
496
}
497
498
if ($intip != '' || $intip6 != '') {
499 416e1530 Darren Embry
	if (count($ifdescrs) == "1" or $interface = "lan") {
500
		if ($debug) {
501
			echo "ifdescrs count is " . count($ifdescrs) . "\n";
502
			echo "interface is {$interface} \n";
503 db747fb1 Chris Buechler
		}
504 416e1530 Darren Embry
		echo gettext('You can now access the webConfigurator by opening the following URL in your web browser:') . "\n";
505
		if(!empty($config['system']['webgui']['port'])) {
506
			$webuiport = $config['system']['webgui']['port'];
507 b3cb233f Darren Embry
			if ($intip != '') {
508 d71371bc Darren Embry
				echo "		{$config['system']['webgui']['protocol']}://{$intip}:{$webuiport}/\n";
509 b3cb233f Darren Embry
			}
510
			if ($intip6 != '') {
511
				if (is_ipaddr($intip6)) {
512 d71371bc Darren Embry
					echo "		{$config['system']['webgui']['protocol']}://[{$intip6}]:{$webuiport}/\n";
513 b3cb233f Darren Embry
				} else {
514 d71371bc Darren Embry
					echo "		{$config['system']['webgui']['protocol']}://{$intip6}:{$webuiport}/\n";
515 b3cb233f Darren Embry
				}
516
			}
517 416e1530 Darren Embry
		} else {
518 b3cb233f Darren Embry
			if ($intip != '') {
519
				echo "		{$config['system']['webgui']['protocol']}://{$intip}/\n";
520
			}
521
			if ($intip6 != '') {
522
				if (is_ipaddr($intip6)) {
523
					echo "		{$config['system']['webgui']['protocol']}://[{$intip6}]/\n";
524
				} else {
525
					echo "		{$config['system']['webgui']['protocol']}://{$intip6}/\n";
526
				}
527
			}
528 35380504 Seth Mos
		}
529 8dee794b Scott Ullrich
	}
530 416e1530 Darren Embry
}
531 5b237745 Scott Ullrich
532 416e1530 Darren Embry
echo "\n" . gettext('Press <ENTER> to continue.');
533 5b237745 Scott Ullrich
534 416e1530 Darren Embry
fgets($fp);
535
fclose($fp);
536 68ad6d22 Scott Ullrich
		
537 9b2e42c9 Ermal
?>