Project

General

Profile

Download (70.4 KB) Statistics
| Branch: | Tag: | Revision:
1 791bcfd4 Bill Marquette
<?php
2
/*
3 a1a4a22b Scott Ullrich
	Copyright (C) 2004-2009 Scott Ullrich <sullrich@gmail.com>
4 791bcfd4 Bill Marquette
	All rights reserved.
5
6
	originally part of m0n0wall (http://m0n0.ch/wall)
7 a1a4a22b Scott Ullrich
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
8 791bcfd4 Bill Marquette
	All rights reserved.
9
10
	Redistribution and use in source and binary forms, with or without
11
	modification, are permitted provided that the following conditions are met:
12
13
1. Redistributions of source code must retain the above copyright notice,
14
	this list of conditions and the following disclaimer.
15
16
	2. Redistributions in binary form must reproduce the above copyright
17
	notice, this list of conditions and the following disclaimer in the
18
	documentation and/or other materials provided with the distribution.
19
20
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
21
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
22
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
24
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
	POSSIBILITY OF SUCH DAMAGE.
30
	*/
31
32 523855b0 Scott Ullrich
/*
33
	pfSense_BUILDER_BINARIES:	/usr/bin/find	/bin/cd	/usr/local/bin/rrdtool	/usr/bin/nice
34
	pfSense_MODULE:	config
35
*/
36 791bcfd4 Bill Marquette
37 901aa044 Scott Ullrich
if(!function_exists("dump_rrd_to_xml")) 
38
	require("rrd.inc");
39
40 791bcfd4 Bill Marquette
/* Upgrade functions must be named:
41
*    upgrade_XXX_to_YYY
42
	* where XXX == previous version, zero padded, and YYY == next version, zero padded
43
	*/
44
function upgrade_010_to_011() {
45
	global $config;
46
	$opti = 1;
47
	$ifmap = array('lan' => 'lan', 'wan' => 'wan', 'pptp' => 'pptp');
48
49
	/* convert DMZ to optional, if necessary */
50
	if (isset($config['interfaces']['dmz'])) {
51
52
		$dmzcfg = &$config['interfaces']['dmz'];
53
54
		if ($dmzcfg['if']) {
55
			$config['interfaces']['opt' . $opti] = array();
56
			$optcfg = &$config['interfaces']['opt' . $opti];
57
58
			$optcfg['enable'] = $dmzcfg['enable'];
59
			$optcfg['descr'] = "DMZ";
60
			$optcfg['if'] = $dmzcfg['if'];
61
			$optcfg['ipaddr'] = $dmzcfg['ipaddr'];
62
			$optcfg['subnet'] = $dmzcfg['subnet'];
63
64
			$ifmap['dmz'] = "opt" . $opti;
65
			$opti++;
66
		}
67
68
		unset($config['interfaces']['dmz']);
69
	}
70
71
	/* convert WLAN1/2 to optional, if necessary */
72
	for ($i = 1; isset($config['interfaces']['wlan' . $i]); $i++) {
73
74
		if (!$config['interfaces']['wlan' . $i]['if']) {
75
			unset($config['interfaces']['wlan' . $i]);
76
			continue;
77
		}
78
79
		$wlancfg = &$config['interfaces']['wlan' . $i];
80
		$config['interfaces']['opt' . $opti] = array();
81
		$optcfg = &$config['interfaces']['opt' . $opti];
82
83
		$optcfg['enable'] = $wlancfg['enable'];
84
		$optcfg['descr'] = "WLAN" . $i;
85
		$optcfg['if'] = $wlancfg['if'];
86
		$optcfg['ipaddr'] = $wlancfg['ipaddr'];
87
		$optcfg['subnet'] = $wlancfg['subnet'];
88
		$optcfg['bridge'] = $wlancfg['bridge'];
89
90
		$optcfg['wireless'] = array();
91
		$optcfg['wireless']['mode'] = $wlancfg['mode'];
92
		$optcfg['wireless']['ssid'] = $wlancfg['ssid'];
93
		$optcfg['wireless']['channel'] = $wlancfg['channel'];
94
		$optcfg['wireless']['wep'] = $wlancfg['wep'];
95
96
		$ifmap['wlan' . $i] = "opt" . $opti;
97
98
		unset($config['interfaces']['wlan' . $i]);
99
		$opti++;
100
	}
101
102
	/* convert filter rules */
103
	$n = count($config['filter']['rule']);
104
	for ($i = 0; $i < $n; $i++) {
105
106
		$fr = &$config['filter']['rule'][$i];
107
108
		/* remap interface */
109
		if (array_key_exists($fr['interface'], $ifmap))
110
			$fr['interface'] = $ifmap[$fr['interface']];
111
		else {
112
			/* remove the rule */
113
			echo "\nWarning: filter rule removed " .
114
				"(interface '{$fr['interface']}' does not exist anymore).";
115
			unset($config['filter']['rule'][$i]);
116
			continue;
117
		}
118
119
		/* remap source network */
120
		if (isset($fr['source']['network'])) {
121
			if (array_key_exists($fr['source']['network'], $ifmap))
122
				$fr['source']['network'] = $ifmap[$fr['source']['network']];
123
			else {
124
				/* remove the rule */
125
				echo "\nWarning: filter rule removed " .
126
					"(source network '{$fr['source']['network']}' does not exist anymore).";
127
				unset($config['filter']['rule'][$i]);
128
				continue;
129
			}
130
		}
131
132
		/* remap destination network */
133
		if (isset($fr['destination']['network'])) {
134
			if (array_key_exists($fr['destination']['network'], $ifmap))
135
				$fr['destination']['network'] = $ifmap[$fr['destination']['network']];
136
			else {
137
				/* remove the rule */
138
				echo "\nWarning: filter rule removed " .
139
					"(destination network '{$fr['destination']['network']}' does not exist anymore).";
140
				unset($config['filter']['rule'][$i]);
141
				continue;
142
			}
143
		}
144
	}
145
146
	/* convert shaper rules */
147
	$n = count($config['pfqueueing']['rule']);
148
	if (is_array($config['pfqueueing']['rule']))
149
	for ($i = 0; $i < $n; $i++) {
150
151
		$fr = &$config['pfqueueing']['rule'][$i];
152
153
		/* remap interface */
154
		if (array_key_exists($fr['interface'], $ifmap))
155
			$fr['interface'] = $ifmap[$fr['interface']];
156
		else {
157
			/* remove the rule */
158
			echo "\nWarning: traffic shaper rule removed " .
159
				"(interface '{$fr['interface']}' does not exist anymore).";
160
			unset($config['pfqueueing']['rule'][$i]);
161
			continue;
162
		}
163
164
		/* remap source network */
165
		if (isset($fr['source']['network'])) {
166
			if (array_key_exists($fr['source']['network'], $ifmap))
167
				$fr['source']['network'] = $ifmap[$fr['source']['network']];
168
			else {
169
				/* remove the rule */
170
				echo "\nWarning: traffic shaper rule removed " .
171
					"(source network '{$fr['source']['network']}' does not exist anymore).";
172
				unset($config['pfqueueing']['rule'][$i]);
173
				continue;
174
			}
175
		}
176
177
		/* remap destination network */
178
		if (isset($fr['destination']['network'])) {
179
			if (array_key_exists($fr['destination']['network'], $ifmap))
180
				$fr['destination']['network'] = $ifmap[$fr['destination']['network']];
181
			else {
182
				/* remove the rule */
183
				echo "\nWarning: traffic shaper rule removed " .
184
					"(destination network '{$fr['destination']['network']}' does not exist anymore).";
185
				unset($config['pfqueueing']['rule'][$i]);
186
				continue;
187
			}
188
		}
189
	}
190
}
191
192
193
function upgrade_011_to_012() {
194
	global $config;
195
	/* move LAN DHCP server config */
196
	$tmp = $config['dhcpd'];
197
	$config['dhcpd'] = array();
198
	$config['dhcpd']['lan'] = $tmp;
199
200
	/* encrypt password */
201
	$config['system']['password'] = crypt($config['system']['password']);
202
}
203
204
205
function upgrade_012_to_013() {
206
	global $config;
207
	/* convert advanced outbound NAT config */
208
	for ($i = 0; isset($config['nat']['advancedoutbound']['rule'][$i]); $i++) {
209
		$curent = &$config['nat']['advancedoutbound']['rule'][$i];
210
		$src = $curent['source'];
211
		$curent['source'] = array();
212
		$curent['source']['network'] = $src;
213
		$curent['destination'] = array();
214
		$curent['destination']['any'] = true;
215
	}
216
217
	/* add an explicit type="pass" to all filter rules to make things consistent */
218
	for ($i = 0; isset($config['filter']['rule'][$i]); $i++) {
219
		$config['filter']['rule'][$i]['type'] = "pass";
220
	}
221
}
222
223
224
function upgrade_013_to_014() {
225
	global $config;
226
	/* convert shaper rules (make pipes) */
227
	if (is_array($config['pfqueueing']['rule'])) {
228
		$config['pfqueueing']['pipe'] = array();
229
230
		for ($i = 0; isset($config['pfqueueing']['rule'][$i]); $i++) {
231
			$curent = &$config['pfqueueing']['rule'][$i];
232
233
			/* make new pipe and associate with this rule */
234
			$newpipe = array();
235
			$newpipe['descr'] = $curent['descr'];
236
			$newpipe['bandwidth'] = $curent['bandwidth'];
237
			$newpipe['delay'] = $curent['delay'];
238
			$newpipe['mask'] = $curent['mask'];
239
			$config['pfqueueing']['pipe'][$i] = $newpipe;
240
241
			$curent['targetpipe'] = $i;
242
243
			unset($curent['bandwidth']);
244
			unset($curent['delay']);
245
			unset($curent['mask']);
246
		}
247
	}
248
}
249
250
251
function upgrade_014_to_015() {
252
	global $config;
253
	/* Default route moved */
254
	if (isset($config['interfaces']['wan']['gateway']))
255
		if ($config['interfaces']['wan']['gateway'] <> "")
256
		$config['interfaces']['wan']['gateway'] = $config['interfaces']['wan']['gateway'];
257
	unset($config['interfaces']['wan']['gateway']);
258
259
	/* Queues are no longer interface specific */
260
	if (isset($config['interfaces']['lan']['schedulertype']))
261
		unset($config['interfaces']['lan']['schedulertype']);
262
	if (isset($config['interfaces']['wan']['schedulertype']))
263
		unset($config['interfaces']['wan']['schedulertype']);
264
265
	for ($i = 1; isset($config['interfaces']['opt' . $i]); $i++) {
266
		if(isset($config['interfaces']['opt' . $i]['schedulertype']))
267
			unset($config['interfaces']['opt' . $i]['schedulertype']);
268
	}
269
}
270
271
272
function upgrade_015_to_016() {
273
	global $config;
274
	/* Alternate firmware URL moved */
275
	if (isset($config['system']['firmwareurl']) && isset($config['system']['firmwarename'])) { // Only convert if *both* are defined.
276
		$config['system']['alt_firmware_url'] = array();
277
		$config['system']['alt_firmware_url']['enabled'] = "";
278
		$config['system']['alt_firmware_url']['firmware_base_url'] = $config['system']['firmwareurl'];
279
		$config['system']['alt_firmware_url']['firmware_filename'] = $config['system']['firmwarename'];
280
		unset($config['system']['firmwareurl'], $config['system']['firmwarename']);
281
	} else {
282
		unset($config['system']['firmwareurl'], $config['system']['firmwarename']);
283
	}
284
}
285
286
287
function upgrade_016_to_017() {
288
	global $config;
289
	/* wipe previous shaper configuration */
290
	unset($config['shaper']['queue']);
291
	unset($config['shaper']['rule']);
292
	unset($config['interfaces']['wan']['bandwidth']);
293
	unset($config['interfaces']['wan']['bandwidthtype']);
294
	unset($config['interfaces']['lan']['bandwidth']);
295
	unset($config['interfaces']['lan']['bandwidthtype']);
296
	$config['shaper']['enable'] = FALSE;
297
}
298
299
300
function upgrade_017_to_018() {
301
	global $config;
302
	if(isset($config['proxyarp']) && is_array($config['proxyarp']['proxyarpnet'])) {
303
		$proxyarp = &$config['proxyarp']['proxyarpnet'];
304
		foreach($proxyarp as $arpent){
305
			$vip = array();
306
			$vip['mode'] = "proxyarp";
307
			$vip['interface'] = $arpent['interface'];
308
			$vip['descr'] = $arpent['descr'];
309
			if (isset($arpent['range'])) {
310
				$vip['range'] = $arpent['range'];
311
				$vip['type'] = "range";
312
			} else {
313
				$subnet = explode('/', $arpent['network']);
314
				$vip['subnet'] = $subnet[0];
315
				if (isset($subnet[1])) {
316
					$vip['subnet_bits'] = $subnet[1];
317
					$vip['type'] = "network";
318
				} else {
319
					$vip['subnet_bits'] = "32";
320
					$vip['type'] = "single";
321
				}
322
			}
323
			$config['virtualip']['vip'][] = $vip;
324
		}
325
		unset($config['proxyarp']);
326
	}
327
	if(isset($config['installedpackages']) && isset($config['installedpackages']['carp']) && is_array($config['installedpackages']['carp']['config'])) {
328
		$carp = &$config['installedpackages']['carp']['config'];
329
		foreach($carp as $carpent){
330
			$vip = array();
331
			$vip['mode'] = "carp";
332
			$vip['interface'] = "AUTO";
333
			$vip['descr'] = "CARP vhid {$carpent['vhid']}";
334
			$vip['type'] = "single";
335
			$vip['vhid'] = $carpent['vhid'];
336
			$vip['advskew'] = $carpent['advskew'];
337
			$vip['password'] = $carpent['password'];
338
			$vip['subnet'] = $carpent['ipaddress'];
339
			$vip['subnet_bits'] = $carpent['netmask'];
340
			$config['virtualip']['vip'][] = $vip;
341
		}
342
		unset($config['installedpackages']['carp']);
343
	}
344
	/* Server NAT is no longer needed */
345
	unset($config['nat']['servernat']);
346
347
	/* enable SSH */
348
	if ($config['version'] == "1.8") {
349
		$config['system']['sshenabled'] = true;
350
	}
351
}
352
353
354
function upgrade_018_to_019() {
355
	global $config;
356
	$config['theme']="metallic";
357
}
358
359
360
function upgrade_019_to_020() {
361
	global $config;
362
	if(is_array($config['ipsec']['tunnel'])) {
363
		reset($config['ipsec']['tunnel']);
364
		while (list($index, $tunnel) = each($config['ipsec']['tunnel'])) {
365
			/* Sanity check on required variables */
366
			/* This fixes bogus <tunnel> entries - remnant of bug #393 */
367
			if (!isset($tunnel['local-subnet']) && !isset($tunnel['remote-subnet'])) {
368
				unset($config['ipsec']['tunnel'][$tunnel]);
369
			}
370
		}
371
	}
372
}
373
374
function upgrade_020_to_021() {
375
	global $config;
376
	/* shaper scheduler moved */
377
	if(isset($config['system']['schedulertype'])) {
378
		$config['shaper']['schedulertype'] = $config['system']['schedulertype'];
379
		unset($config['system']['schedulertype']);
380
	}
381
}
382
383
384
function upgrade_021_to_022() {
385
	global $config;
386
	/* move gateway to wan interface */
387
	$config['interfaces']['wan']['gateway'] = $config['system']['gateway'];
388
}
389
390
function upgrade_022_to_023() {
391
	global $config;
392
	if(isset($config['shaper'])) {
393
		/* wipe previous shaper configuration */
394
		unset($config['shaper']);
395
	}
396
}
397
398
399
function upgrade_023_to_024() {
400
	global $config;
401
}
402
403
404
function upgrade_024_to_025() {
405
	global $config;
406
	$config['interfaces']['wan']['use_rrd_gateway'] = $config['system']['use_rrd_gateway'];
407
	unset($config['system']['use_rrd_gateway']);
408
}
409
410
411
function upgrade_025_to_026() {
412
	global $config;
413
	$cron_item = array();
414
	$cron_item['minute'] = "0";
415
	$cron_item['hour'] = "*";
416
	$cron_item['mday'] = "*";
417
	$cron_item['month'] = "*";
418
	$cron_item['wday'] = "*";
419
	$cron_item['who'] = "root";
420
	$cron_item['command'] = "/usr/bin/nice -n20 newsyslog";
421
422
	$config['cron']['item'][] = $cron_item;
423
424
	$cron_item = array();
425
	$cron_item['minute'] = "1,31";
426
	$cron_item['hour'] = "0-5";
427
	$cron_item['mday'] = "*";
428
	$cron_item['month'] = "*";
429
	$cron_item['wday'] = "*";
430
	$cron_item['who'] = "root";
431
	$cron_item['command'] = "/usr/bin/nice -n20 adjkerntz -a";
432
433
	$config['cron']['item'][] = $cron_item;
434
435
	$cron_item = array();
436
	$cron_item['minute'] = "1";
437
	$cron_item['hour'] = "*";
438
	$cron_item['mday'] = "1";
439
	$cron_item['month'] = "*";
440
	$cron_item['wday'] = "*";
441
	$cron_item['who'] = "root";
442
	$cron_item['command'] = "/usr/bin/nice -n20 /etc/rc.update_bogons.sh";
443
444
	$config['cron']['item'][] = $cron_item;
445
446
	$cron_item = array();
447
	$cron_item['minute'] = "*/60";
448
	$cron_item['hour'] = "*";
449
	$cron_item['mday'] = "*";
450
	$cron_item['month'] = "*";
451
	$cron_item['wday'] = "*";
452
	$cron_item['who'] = "root";
453
	$cron_item['command'] = "/usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 sshlockout";
454
455
	$config['cron']['item'][] = $cron_item;
456
457
	$cron_item = array();
458
	$cron_item['minute'] = "1";
459
	$cron_item['hour'] = "1";
460
	$cron_item['mday'] = "*";
461
	$cron_item['month'] = "*";
462
	$cron_item['wday'] = "*";
463
	$cron_item['who'] = "root";
464
	$cron_item['command'] = "/usr/bin/nice -n20 /etc/rc.dyndns.update";
465
466
	$config['cron']['item'][] = $cron_item;
467
468
	$cron_item = array();
469
	$cron_item['minute'] = "*/60";
470
	$cron_item['hour'] = "*";
471
	$cron_item['mday'] = "*";
472
	$cron_item['month'] = "*";
473
	$cron_item['wday'] = "*";
474
	$cron_item['who'] = "root";
475
	$cron_item['command'] = "/usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 virusprot";
476
477
	$config['cron']['item'][] = $cron_item;
478
479
	$cron_item = array();
480
	$cron_item['minute'] = "*/60";
481
	$cron_item['hour'] = "*";
482
	$cron_item['mday'] = "*";
483
	$cron_item['month'] = "*";
484
	$cron_item['wday'] = "*";
485
	$cron_item['who'] = "root";
486
	$cron_item['command'] = "/usr/bin/nice -n20 /usr/local/sbin/expiretable -t 1800 snort2c";
487
488
	$config['cron']['item'][] = $cron_item;
489
}
490
491
492
function upgrade_026_to_027() {
493
	global $config;
494
}
495
496
497
function upgrade_027_to_028() {
498
	global $config;
499
}
500
501
502
function upgrade_028_to_029() {
503
	global $config;
504
	$rule_item = array();
505
	$a_filter = &$config['filter']['rule'];
506
	$rule_item['interface'] = "enc0";
507
	$rule_item['type'] = "pass";
508
	$rule_item['source']['any'] = true;
509
	$rule_item['destination']['any'] = true;
510
	$rule_item['descr'] = "Permit IPsec traffic.";
511
	$rule_item['statetype'] = "keep state";
512
	$a_filter[] = $rule_item;
513
}
514
515
516
function upgrade_029_to_030() {
517
	global $config;
518
	/* enable the rrd config setting by default */
519
	$config['rrd']['enable'] = true;
520
}
521
522
523
function upgrade_030_to_031() {
524
	global $config;
525
	/* Insert upgrade code here */
526
}
527
528
529
function upgrade_031_to_032() {
530
	global $config;
531
	/* Insert upgrade code here */
532
}
533
534
535
function upgrade_032_to_033() {
536
	global $config;
537
	/* Insert upgrade code here */
538
}
539
540
541
function upgrade_033_to_034() {
542
	global $config;
543
	/* Insert upgrade code here */
544
}
545
546
547
function upgrade_034_to_035() {
548
	global $config;
549
	/* Insert upgrade code here */
550
}
551
552
553
function upgrade_035_to_036() {
554
	global $config;
555
	/* Insert upgrade code here */
556
}
557
558
559
function upgrade_036_to_037() {
560
	global $config;
561
	/* Insert upgrade code here */
562
}
563
564
565
function upgrade_037_to_038() {
566
	global $config;
567 db7f618b Seth Mos
	/* Insert upgrade code here */
568 791bcfd4 Bill Marquette
}
569
570
571
function upgrade_038_to_039() {
572
	global $config;
573 ef026950 Ermal Lu?i
	/* Insert upgrade code here */
574 791bcfd4 Bill Marquette
}
575
576
577
function upgrade_039_to_040() {
578
	global $config;
579
	$config['system']['webgui']['auth_method'] = "session";
580
	$config['system']['webgui']['backing_method'] = "htpasswd";
581
582
	if (isset ($config['system']['username'])) {
583
		$config['system']['group'] = array();
584
		$config['system']['group'][0]['name'] = "admins";
585
		$config['system']['group'][0]['description'] = "System Administrators";
586
		$config['system']['group'][0]['scope'] = "system";
587
		$config['system']['group'][0]['pages'] = "ANY";
588
		$config['system']['group'][0]['home'] = "index.php";
589
		$config['system']['group'][0]['gid'] = "110";
590
591
		$config['system']['user'] = array();
592
		$config['system']['user'][0]['name'] = "{$config['system']['username']}";
593 9ff73b79 jim-p
		$config['system']['user'][0]['descr'] = "System Administrator";
594 791bcfd4 Bill Marquette
		$config['system']['user'][0]['scope'] = "system";
595
		$config['system']['user'][0]['groupname'] = "admins";
596
		$config['system']['user'][0]['password'] = "{$config['system']['password']}";
597
		$config['system']['user'][0]['uid'] = "0";
598 6d8e6b22 jim-p
		/* Ensure that we follow what this new "admin" username should be in the session. */
599
		$_SESSION["Username"] = "{$config['system']['username']}";
600 791bcfd4 Bill Marquette
601
		$config['system']['user'][0]['priv'] = array();
602
		$config['system']['user'][0]['priv'][0]['id'] = "lockwc";
603
		$config['system']['user'][0]['priv'][0]['name'] = "Lock webConfigurator";
604
		$config['system']['user'][0]['priv'][0]['descr'] = "Indicates whether this user will lock access to the webConfigurator for other users.";
605
		$config['system']['user'][0]['priv'][1]['id'] = "lock-ipages";
606
		$config['system']['user'][0]['priv'][1]['name'] = "Lock individual pages";
607
		$config['system']['user'][0]['priv'][1]['descr'] = "Indicates whether this user will lock individual HTML pages after having accessed a particular page (the lock will be freed if the user leaves or saves the page form).";
608
		$config['system']['user'][0]['priv'][2]['id'] = "hasshell";
609
		$config['system']['user'][0]['priv'][2]['name'] = "Has shell access";
610
		$config['system']['user'][0]['priv'][2]['descr'] = "Indicates whether this user is able to login for example via SSH.";
611
		$config['system']['user'][0]['priv'][3]['id'] = "copyfiles";
612
		$config['system']['user'][0]['priv'][3]['name'] = "Is allowed to copy files";
613
		$config['system']['user'][0]['priv'][3]['descr'] = "Indicates whether this user is allowed to copy files onto the {$g['product_name']} appliance via SCP/SFTP. If you are going to use this privilege, you must install scponly on the appliance (Hint: pkg_add -r scponly).";
614
		$config['system']['user'][0]['priv'][4]['id'] = "isroot";
615
		$config['system']['user'][0]['priv'][4]['name'] = "Is root user";
616
		$config['system']['user'][0]['priv'][4]['descr'] = "This user is associated with the UNIX root user (you should associate this privilege only with one single user).";
617
618
		$config['system']['nextuid'] = "111";
619
		$config['system']['nextgid'] = "111";
620
621
		/* wipe previous auth configuration */
622
		unset ($config['system']['username']);
623
		unset ($config['system']['password']);
624
	}
625
}
626
627
function upgrade_040_to_041() {
628
	global $config;
629
	if(!$config['sysctl']) {
630
		$config['sysctl']['item'] = array();
631
632
		$config['sysctl']['item'][0]['tunable'] = "net.inet.tcp.blackhole";
633 15864861 jim-p
		$config['sysctl']['item'][0]['descr'] =    "Drop packets to closed TCP ports without returning a RST";
634 908c4eea sullrich
		$config['sysctl']['item'][0]['value'] =   "default";
635 791bcfd4 Bill Marquette
636
		$config['sysctl']['item'][1]['tunable'] = "net.inet.udp.blackhole";
637 15864861 jim-p
		$config['sysctl']['item'][1]['descr'] =    "Do not send ICMP port unreachable messages for closed UDP ports";
638 908c4eea sullrich
		$config['sysctl']['item'][1]['value'] =   "default";
639 791bcfd4 Bill Marquette
640
		$config['sysctl']['item'][2]['tunable'] = "net.inet.ip.random_id";
641 15864861 jim-p
		$config['sysctl']['item'][2]['descr'] =    "Randomize the ID field in IP packets (default is 0: sequential IP IDs)";
642 908c4eea sullrich
		$config['sysctl']['item'][2]['value'] =   "default";
643 791bcfd4 Bill Marquette
644
		$config['sysctl']['item'][3]['tunable'] = "net.inet.tcp.drop_synfin";
645 15864861 jim-p
		$config['sysctl']['item'][3]['descr'] =    "Drop SYN-FIN packets (breaks RFC1379, but nobody uses it anyway)";
646 908c4eea sullrich
		$config['sysctl']['item'][3]['value'] =   "default";
647 791bcfd4 Bill Marquette
648
		$config['sysctl']['item'][4]['tunable'] = "net.inet.ip.redirect";
649 15864861 jim-p
		$config['sysctl']['item'][4]['descr'] =    "Sending of IPv4 ICMP redirects";
650 908c4eea sullrich
		$config['sysctl']['item'][4]['value'] =   "default";
651 791bcfd4 Bill Marquette
652
		$config['sysctl']['item'][5]['tunable'] = "net.inet6.ip6.redirect";
653 15864861 jim-p
		$config['sysctl']['item'][5]['descr'] =    "Sending of IPv6 ICMP redirects";
654 908c4eea sullrich
		$config['sysctl']['item'][5]['value'] =   "default";
655 791bcfd4 Bill Marquette
656
		$config['sysctl']['item'][6]['tunable'] = "net.inet.tcp.syncookies";
657 15864861 jim-p
		$config['sysctl']['item'][6]['descr'] =    "Generate SYN cookies for outbound SYN-ACK packets";
658 908c4eea sullrich
		$config['sysctl']['item'][6]['value'] =   "default";
659 791bcfd4 Bill Marquette
660
		$config['sysctl']['item'][7]['tunable'] = "net.inet.tcp.recvspace";
661 15864861 jim-p
		$config['sysctl']['item'][7]['descr'] =    "Maximum incoming TCP datagram size";
662 908c4eea sullrich
		$config['sysctl']['item'][7]['value'] =   "default";
663 791bcfd4 Bill Marquette
664
		$config['sysctl']['item'][8]['tunable'] = "net.inet.tcp.sendspace";
665 15864861 jim-p
		$config['sysctl']['item'][8]['descr'] =    "Maximum outgoing TCP datagram size";
666 908c4eea sullrich
		$config['sysctl']['item'][8]['value'] =   "default";
667 791bcfd4 Bill Marquette
668
		$config['sysctl']['item'][9]['tunable'] = "net.inet.ip.fastforwarding";
669 15864861 jim-p
		$config['sysctl']['item'][9]['descr'] =    "Fastforwarding (see http://lists.freebsd.org/pipermail/freebsd-net/2004-January/002534.html)";
670 908c4eea sullrich
		$config['sysctl']['item'][9]['value'] =   "default";
671 791bcfd4 Bill Marquette
672
		$config['sysctl']['item'][10]['tunable'] = "net.inet.tcp.delayed_ack";
673 15864861 jim-p
		$config['sysctl']['item'][10]['descr'] =    "Do not delay ACK to try and piggyback it onto a data packet";
674 908c4eea sullrich
		$config['sysctl']['item'][10]['value'] =   "default";
675 791bcfd4 Bill Marquette
676
		$config['sysctl']['item'][11]['tunable'] = "net.inet.udp.maxdgram";
677 15864861 jim-p
		$config['sysctl']['item'][11]['descr'] =    "Maximum outgoing UDP datagram size";
678 908c4eea sullrich
		$config['sysctl']['item'][11]['value'] =   "default";
679 791bcfd4 Bill Marquette
680
		$config['sysctl']['item'][12]['tunable'] = "net.link.bridge.pfil_onlyip";
681 15864861 jim-p
		$config['sysctl']['item'][12]['descr'] =    "Handling of non-IP packets which are not passed to pfil (see if_bridge(4))";
682 908c4eea sullrich
		$config['sysctl']['item'][12]['value'] =   "default";
683 791bcfd4 Bill Marquette
684
		$config['sysctl']['item'][13]['tunable'] = "net.link.tap.user_open";
685 15864861 jim-p
		$config['sysctl']['item'][13]['descr'] =    "Allow unprivileged access to tap(4) device nodes";
686 908c4eea sullrich
		$config['sysctl']['item'][13]['value'] =   "default";
687 791bcfd4 Bill Marquette
688
		$config['sysctl']['item'][14]['tunable'] = "kern.rndtest.verbose";
689 15864861 jim-p
		$config['sysctl']['item'][14]['descr'] =    "Verbosity of the rndtest driver (0: do not display results on console)";
690 908c4eea sullrich
		$config['sysctl']['item'][14]['value'] =   "default";
691 791bcfd4 Bill Marquette
692
		$config['sysctl']['item'][15]['tunable'] = "kern.randompid";
693 15864861 jim-p
		$config['sysctl']['item'][15]['descr'] =    "Randomize PID's (see src/sys/kern/kern_fork.c: sysctl_kern_randompid())";
694 908c4eea sullrich
		$config['sysctl']['item'][15]['value'] =   "default";
695 791bcfd4 Bill Marquette
696
		$config['sysctl']['item'][16]['tunable'] = "net.inet.tcp.inflight.enable";
697 15864861 jim-p
		$config['sysctl']['item'][16]['descr'] =    "The system will attempt to calculate the bandwidth delay product for each connection and limit the amount of data queued to the network to just the amount required to maintain optimum throughput. ";
698 908c4eea sullrich
		$config['sysctl']['item'][16]['value'] =   "default";
699 791bcfd4 Bill Marquette
700
		$config['sysctl']['item'][17]['tunable'] = "net.inet.icmp.icmplim";
701 15864861 jim-p
		$config['sysctl']['item'][17]['descr'] =    "Set ICMP Limits";
702 908c4eea sullrich
		$config['sysctl']['item'][17]['value'] =   "default";
703 791bcfd4 Bill Marquette
704
		$config['sysctl']['item'][18]['tunable'] = "net.inet.tcp.tso";
705 15864861 jim-p
		$config['sysctl']['item'][18]['descr'] =    "TCP Offload engine";
706 908c4eea sullrich
		$config['sysctl']['item'][18]['value'] =   "default";
707 06702ef7 Chris Buechler
		
708 558dda01 Scott Ullrich
		$config['sysctl']['item'][19]['tunable'] = "net.inet.ip.portrange.first";
709
		$config['sysctl']['item'][19]['descr'] =    "Set the ephemeral port range starting port";
710
		$config['sysctl']['item'][19]['value'] =   "default";
711 908c4eea sullrich
712 64c86313 Warren Baker
		$config['sysctl']['item'][20]['tunable'] = "hw.syscons.kbd_reboot";
713 558dda01 Scott Ullrich
		$config['sysctl']['item'][20]['descr'] =    "Enables ctrl+alt+delete";
714
		$config['sysctl']['item'][20]['value'] =   "default";
715 06702ef7 Chris Buechler
716 99fbc94a Warren Baker
		$config['sysctl']['item'][21]['tunable'] = "kern.ipc.maxsockbuf";
717
		$config['sysctl']['item'][21]['descr'] =    "Maximum socket buffer size";
718
		$config['sysctl']['item'][21]['value'] =   "default";
719 64c86313 Warren Baker
720 791bcfd4 Bill Marquette
	}
721
}
722
723
724
function upgrade_041_to_042() {
725
	global $config;
726
	if (isset($config['shaper']))
727
		unset($config['shaper']);
728
	if (isset($config['ezshaper']))
729
		unset($config['ezshaper']);
730
}
731
732
733
function upgrade_042_to_043() {
734
	global $config;
735
	/* migrate old interface gateway to the new gateways config */
736 ab0eced7 Ermal
	$iflist = get_configured_interface_list(false, true);
737 791bcfd4 Bill Marquette
	$gateways = array();
738
	$i = 0;
739 fc85edaf Seth Mos
	foreach($iflist as $ifname => $interface) {
740
		if(! interface_has_gateway($ifname)) {
741
			continue;
742
		}
743 b314ab72 Ermal
		$config['gateways']['gateway_item'][$i] = array();
744 a63ab6b6 Seth Mos
		if(is_ipaddr($config['interfaces'][$ifname]['gateway'])) {
745 3240836a Seth Mos
			$config['gateways']['gateway_item'][$i]['gateway'] = $config['interfaces'][$ifname]['gateway'];
746 2328dcc5 Seth Mos
			$config['gateways']['gateway_item'][$i]['descr'] = "Interface $ifname Static Gateway";			
747
		} else {
748
			$config['gateways']['gateway_item'][$i]['gateway'] = "dynamic";
749
			$config['gateways']['gateway_item'][$i]['descr'] = "Interface $ifname Dynamic Gateway";			
750
		}
751
		$config['gateways']['gateway_item'][$i]['interface'] = $ifname;
752
		$config['gateways']['gateway_item'][$i]['name'] = "GW_" . strtoupper($ifname);
753
		/* add default gateway bit for wan on upgrade */
754
		if($ifname == "wan") {
755
			 $config['gateways']['gateway_item'][$i]['defaultgw'] = true;
756
		}
757
		if(is_ipaddr($config['interfaces'][$ifname]['use_rrd_gateway'])) {
758
			$config['gateways']['gateway_item'][$i]['monitor'] = $config['interfaces'][$ifname]['use_rrd_gateway'];
759
			unset($config['interfaces'][$ifname]['use_rrd_gateway']);
760
		}
761
		$config['interfaces'][$ifname]['gateway'] = $config['gateways']['gateway_item'][$i]['name'];
762 3240836a Seth Mos
763 2328dcc5 Seth Mos
		/* Update all filter rules which might reference this gateway */
764
		$j = 0;
765
		foreach($config['filter']['rule'] as $rule) {
766 6364b88b Ermal
			if(is_ipaddr($rule['gateway'])) {
767
				if ($rule['gateway'] == $config['gateways']['gateway_item'][$i]['gateway'])
768
					$config['filter']['rule'][$j]['gateway'] = $config['gateways']['gateway_item'][$i]['name'];
769
				else if ($rule['gateway'] == $ifname)
770
					$config['filter']['rule'][$j]['gateway'] = $config['gateways']['gateway_item'][$i]['name'];
771 3240836a Seth Mos
			}
772 2328dcc5 Seth Mos
			$j++;
773 791bcfd4 Bill Marquette
		}
774 c9ba2835 smos
775
		/* rename old Quality RRD files in the process */
776
		$rrddbpath = "/var/db/rrd";
777
		$gwname = "GW_" . strtoupper($ifname);
778
		if(is_readable("{$rrddbpath}/{$ifname}-quality.rrd")) {
779
			rename("{$rrddbpath}/{$ifname}-quality.rrd", "{$rrddbpath}/{$gwname}-quality.rrd");
780
		}
781 2328dcc5 Seth Mos
		$i++;
782 791bcfd4 Bill Marquette
	}
783
}
784
785
786
function upgrade_043_to_044() {
787
	global $config;
788 a842e988 Ermal
789
	/* migrate static routes to the new gateways config */
790
	$gateways = return_gateways_array(true);
791 6cae2c44 Ermal
	$i = 0;
792 a842e988 Ermal
	if (is_array($config['staticroutes']['route'])) {
793
		foreach ($config['staticroutes']['route'] as $idx => $sroute) {
794
			$found = false;
795
			foreach ($gateways as $gwname => $gw) {
796
				if ($gw['gateway'] == $sroute['gateway']) {
797
					$config['staticroutes']['route'][$idx]['gateway'] = $gwname;
798
					$found = true;
799
					break;
800
				}
801
			}
802
			if ($found == false) {
803
				$gateway = array();
804 6cae2c44 Ermal
				$gateway['name'] = "SROUTE{$i}";	
805 a842e988 Ermal
				$gateway['gateway'] = $sroute['gateway'];
806
				$gateway['interface'] = $sroute['interface'];
807
				$gateway['descr'] = "Upgraded static route for {$sroute['network']}";
808
				if (!is_array($config['gateways']['gateway_item']))
809
					$config['gateways']['gateway_item'] = array();
810
				$config['gateways']['gateway_item'][] = $gateway;
811
				$config['staticroutes']['route'][$idx]['gateway'] = $gateway['name'];
812 6cae2c44 Ermal
				$i++;
813 a842e988 Ermal
			}
814
		}
815
	}
816 791bcfd4 Bill Marquette
}
817
818
819
function upgrade_044_to_045() {
820
	global $config;
821 da74e673 Seth Mos
	$iflist = get_configured_interface_list(false, true);
822 791bcfd4 Bill Marquette
	if (is_array($config['vlans']['vlan']) && count($config['vlans']['vlan'])) {
823 3d039701 smos
		$i = 0;
824 da74e673 Seth Mos
		foreach ($config['vlans']['vlan'] as $id => $vlan) {
825 3d039701 smos
			$config['vlans']['vlan'][$i]['vlanif'] = "{$vlan['if']}_vlan{$vlan['tag']}";
826 da74e673 Seth Mos
			/* Make sure to update the interfaces section with the right name */
827
			foreach($iflist as $ifname) {
828 3d039701 smos
				if($config['interfaces'][$ifname]['if'] == "vlan{$i}") {
829 da74e673 Seth Mos
					$config['interfaces'][$ifname]['if'] = $vlan['vlanif'];
830
				}
831
			}
832 3d039701 smos
			$i++;			
833 da74e673 Seth Mos
		}
834 791bcfd4 Bill Marquette
	}
835
}
836
837
838
function upgrade_045_to_046() {
839
	global $config;
840
	/* Upgrade load balancer from slb to relayd */
841
	if (is_array($config['load_balancer']['virtual_server']) && count($config['load_balancer']['virtual_server'])) {
842
		$vs_a = &$config['load_balancer']['virtual_server'];
843
		$pool_a = &$config['load_balancer']['lbpool'];
844
		$pools = array();
845 25753b5b sullrich
		/* Index pools by name */
846 791bcfd4 Bill Marquette
		if(is_array($pool_a)) {
847
			for ($i = 0; isset($pool_a[$i]); $i++) {
848 cb945ced sullrich
				if($pool_a[$i]['type'] == "server") {
849 791bcfd4 Bill Marquette
					$pools[$pool_a[$i]['name']] = $pool_a[$i];
850
				}
851
			}
852
		}
853
		/* Convert sitedown entries to pools and re-attach */
854
		for ($i = 0; isset($vs_a[$i]); $i++) {
855
			if (isset($vs_a[$i]['sitedown'])) {
856
				$pool = array();
857
				$pool['type'] = 'server';
858
				$pool['behaviour'] = 'balance';
859
				$pool['name'] = "{$vs_a[$i]['name']}-sitedown";
860 e988813d jim-p
				$pool['descr'] = "Sitedown pool for VS: {$vs_a[$i]['name']}";
861 791bcfd4 Bill Marquette
				$pool['port'] = $pools[$vs_a[$i]['pool']]['port'];
862
				$pool['servers'] = array();
863
				$pool['servers'][] = $vs_a[$i]['sitedown'];
864
				$pool['monitor'] = $pools[$vs_a[$i]['pool']]['monitor'];
865
				$pool_a[] = $pool;
866
				$vs_a[$i]['sitedown'] = $pool['name'];
867
			}
868
		}
869
	}
870 0b5b4f32 Seth Mos
	if(count($config['load_balancer']) == 0) {
871
		unset($config['load_balancer']);
872
	}
873 791bcfd4 Bill Marquette
}
874
875
876
function upgrade_046_to_047() {
877
	global $config;
878
	/* Upgrade IPsec from tunnel to phase1/phase2 */
879
880
	if(is_array($config['ipsec']['tunnel'])) {
881
882
		$a_phase1 = array();
883
		$a_phase2 = array();
884
		$ikeid = 0;
885
886
		foreach ($config['ipsec']['tunnel'] as $tunnel) {
887
888
			unset($ph1ent);
889
			unset($ph2ent);
890
891
			/*
892
				*  attempt to locate an enabled phase1
893
				*  entry that matches the peer gateway
894
				*/
895
896
			if (!isset($tunnel['disabled'])) {
897
898
				$remote_gateway = $tunnel['remote-gateway'];
899
900
				foreach ($a_phase1 as $ph1tmp) {
901
					if ($ph1tmp['remote-gateway'] == $remote_gateway) {
902
						$ph1ent = $ph1tmp;
903
						break;
904
					}
905
				}
906
			}
907
908
			/* none found, create a new one */
909
910
			if (!isset( $ph1ent )) {
911
912
				/* build new phase1 entry */
913
914
				$ph1ent = array();
915
916
				$ph1ent['ikeid'] = ++$ikeid;
917
918
				if (isset($tunnel['disabled']))
919
					$ph1ent['disabled'] = $tunnel['disabled'];
920
921 443f2e6e smos
				/* convert to the new vip[$vhid] name */
922
				if(preg_match("/^carp/", $tunnel['interface'])) {
923
					$carpid = substr($tunnel['interface'], 5);
924
					$tunnel['interface'] = "vip" . $config['virtualip'][$carpid]['vhid'];
925
				}
926 791bcfd4 Bill Marquette
				$ph1ent['interface'] = $tunnel['interface'];
927
				$ph1ent['remote-gateway'] = $tunnel['remote-gateway'];
928
				$ph1ent['descr'] = $tunnel['descr'];
929
930
				$ph1ent['mode'] = $tunnel['p1']['mode'];
931
932
				if (isset($tunnel['p1']['myident']['myaddress']))
933
					$ph1ent['myid_type'] = "myaddress";
934
				if (isset($tunnel['p1']['myident']['address'])) {
935
					$ph1ent['myid_type'] = "address";
936
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['address'];
937
				}
938
				if (isset($tunnel['p1']['myident']['fqdn'])) {
939
					$ph1ent['myid_type'] = "fqdn";
940
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['fqdn'];
941
				}
942 dfa11031 jim-p
				if (isset($tunnel['p1']['myident']['ufqdn'])) {
943 791bcfd4 Bill Marquette
					$ph1ent['myid_type'] = "user_fqdn";
944 dfa11031 jim-p
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['ufqdn'];
945 791bcfd4 Bill Marquette
				}
946
				if (isset($tunnel['p1']['myident']['asn1dn'])) {
947
					$ph1ent['myid_type'] = "asn1dn";
948
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['asn1dn'];
949
				}
950
				if (isset($tunnel['p1']['myident']['dyn_dns'])) {
951
					$ph1ent['myid_type'] = "dyn_dns";
952
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['dyn_dns'];
953
				}
954
955
				$ph1ent['peerid_type'] = "peeraddress";
956
957
				switch ($tunnel['p1']['encryption-algorithm']) {
958
					case "des":
959
					$ph1alg = array( 'name' => 'des' );
960
					break;
961
					case "3des":
962
					$ph1alg = array( 'name' => '3des' );
963
					break;
964
					case "blowfish":
965
					$ph1alg = array( 'name' => 'blowfish', 'keylen' => '128'  );
966
					break;
967
					case "cast128":
968
					$ph1alg = array( 'name' => 'cast128' );
969
					break;
970
					case "rijndael":
971
					$ph1alg = array( 'name' => 'aes', 'keylen' => '128' );
972
					break;
973
					case "rijndael 256":
974
					$ph1alg = array( 'name' => 'aes', 'keylen' => '256' );
975
					break;
976
				}
977
978
				$ph1ent['encryption-algorithm'] = $ph1alg;
979
				$ph1ent['hash-algorithm'] = $tunnel['p1']['hash-algorithm'];
980
				$ph1ent['dhgroup'] = $tunnel['p1']['dhgroup'];
981
				$ph1ent['lifetime'] = $tunnel['p1']['lifetime'];
982
				$ph1ent['authentication_method'] = $tunnel['p1']['authentication_method'];
983
984
				if (isset($tunnel['p1']['pre-shared-key']))
985
					$ph1ent['pre-shared-key'] = $tunnel['p1']['pre-shared-key'];
986
				if (isset($tunnel['p1']['cert']))
987
					$ph1ent['cert'] = $tunnel['p1']['cert'];
988
				if (isset($tunnel['p1']['peercert']))
989
					$ph1ent['peercert'] = $tunnel['p1']['peercert'];
990
				if (isset($tunnel['p1']['private-key']))
991
					$ph1ent['private-key'] = $tunnel['p1']['private-key'];
992
993
				$ph1ent['nat_traversal'] = "on";
994
				$ph1ent['dpd_enable'] = 1;
995
				$ph1ent['dpd_delay'] = 10;
996
				$ph1ent['dpd_maxfail'] = 5;
997
998
				$a_phase1[] = $ph1ent;
999
			}
1000
1001
			/* build new phase2 entry */
1002
1003
			$ph2ent = array();
1004
1005
			$ph2ent['ikeid'] = $ph1ent['ikeid'];
1006
1007
			if (isset($tunnel['disabled']))
1008
				$ph1ent['disabled'] = $tunnel['disabled'];
1009
1010
			$ph2ent['descr'] = "phase2 for ".$tunnel['descr'];
1011
1012
			$type = "lan";
1013
			if ($tunnel['local-subnet']['network'])
1014
				$type = $tunnel['local-subnet']['network'];
1015
			if ($tunnel['local-subnet']['address']) {
1016
				list($address,$netbits) = explode("/",$tunnel['local-subnet']['address']);
1017
				if (is_null($netbits))
1018
					$type = "address";
1019
				else
1020
					$type = "network";
1021
			}
1022
1023
			switch ($type) {
1024
				case "address":
1025
				$ph2ent['localid'] = array('type' => $type,'address' => $address);
1026
				break;
1027
				case "network":
1028
				$ph2ent['localid'] = array('type' => $type,'address' => $address,'netbits' => $netbits);
1029
				break;
1030
				default:
1031
				$ph2ent['localid'] = array('type' => $type);
1032
				break;
1033
			}
1034
1035
			list($address,$netbits) = explode("/",$tunnel['remote-subnet']);
1036
			$ph2ent['remoteid'] = array('type' => 'network','address' => $address,'netbits' => $netbits);
1037
1038
			$ph2ent['protocol'] = $tunnel['p2']['protocol'];
1039
1040
			$aes_count = 0;
1041
			foreach( $tunnel['p2']['encryption-algorithm-option'] as $tunalg ) {
1042
				$aes_found = false;
1043
				switch ($tunalg) {
1044
					case "des":
1045
					$ph2alg = array( 'name' => 'des' );
1046
					break;
1047
					case "3des":
1048
					$ph2alg = array( 'name' => '3des' );
1049
					break;
1050
					case "blowfish":
1051
					$ph2alg = array( 'name' => 'blowfish', 'keylen' => 'auto'  );
1052
					break;
1053
					case "cast128":
1054
					$ph2alg = array( 'name' => 'cast128' );
1055
					break;
1056
					case "rijndael":
1057
					case "rijndael 256":
1058
					$ph2alg = array( 'name' => 'aes', 'keylen' => 'auto' );
1059
					$aes_found = true;
1060
					$aes_count++;
1061
					break;
1062
				}
1063
1064
				if( !$aes_found || ($aes_count < 2))
1065
					$ph2ent['encryption-algorithm-option'][] = $ph2alg;
1066
			}
1067
1068
			$ph2ent['hash-algorithm-option'] = $tunnel['p2']['hash-algorithm-option'];
1069
			$ph2ent['pfsgroup'] = $tunnel['p2']['pfsgroup'];
1070
			$ph2ent['lifetime'] = $tunnel['p2']['lifetime'];
1071
1072 87e07f52 mgrooms
			if (isset($tunnel['pinghost']['pinghost']))
1073
				$ph2ent['pinghost'] = $tunnel['pinghost'];
1074
1075 791bcfd4 Bill Marquette
			$a_phase2[] = $ph2ent;
1076
		}
1077
1078
		unset($config['ipsec']['tunnel']);
1079
		$config['ipsec']['phase1'] = $a_phase1;
1080
		$config['ipsec']['phase2'] = $a_phase2;
1081
	}
1082
}
1083
1084
1085
function upgrade_047_to_048() {
1086
	global $config;
1087 e31c90fc Ermal
	if (!empty($config['dyndns'])) {
1088
		$config['dyndnses'] = array();
1089
		$config['dyndnses']['dyndns'] = array();
1090 c9e13418 Ermal
		if(isset($config['dyndns'][0]['host'])) {
1091 246aceaa smos
			$tempdyn = array();
1092
			$tempdyn['enable'] = isset($config['dyndns'][0]['enable']);
1093
			$tempdyn['type'] = $config['dyndns'][0]['type'];
1094
			$tempdyn['wildcard'] = isset($config['dyndns'][0]['wildcard']);
1095 7d62c4c8 Ermal
			$tempdyn['username'] = $config['dyndns'][0]['username'];
1096
			$tempdyn['password'] = $config['dyndns'][0]['password'];
1097 246aceaa smos
			$tempdyn['host'] = $config['dyndns'][0]['host'];
1098
			$tempdyn['mx'] = $config['dyndns'][0]['mx'];		
1099
			$tempdyn['interface'] = "wan";
1100
			$tempdyn['descr'] = "Upgraded Dyndns {$tempdyn['type']}";
1101
			$config['dyndnses']['dyndns'][] = $tempdyn;
1102
		}
1103 791bcfd4 Bill Marquette
		unset($config['dyndns']);
1104
	}		
1105 e31c90fc Ermal
	if (!empty($config['dnsupdate'])) {
1106 2b1b78e6 jim-p
		$pconfig = $config['dnsupdate'][0];
1107
		if (!$pconfig['ttl'])
1108
			$pconfig['ttl'] = 60;
1109
		if (!$pconfig['keytype'])
1110
			$pconfig['keytype'] = "zone";
1111 e31c90fc Ermal
		$pconfig['interface'] = "wan";
1112 791bcfd4 Bill Marquette
		$config['dnsupdates']['dnsupdate'][] = $pconfig;
1113
		unset($config['dnsupdate']);
1114
	}
1115
1116
	if (is_array($config['pppoe'])) {
1117
		$pconfig = array();
1118
		$pconfig['username'] = $config['pppoe']['username'];
1119
		$pconfig['password'] = $config['pppoe']['password'];
1120
		$pconfig['provider'] = $config['pppoe']['provider'];
1121
		$pconfig['ondemand'] = isset($config['pppoe']['ondemand']);
1122
		$pconfig['timeout'] = $config['pppoe']['timeout'];
1123
		unset($config['pppoe']);
1124
		$config['interfaces']['wan']['pppoe_username'] = $pconfig['username'];
1125
		$config['interfaces']['wan']['pppoe_password'] = $pconfig['password'];
1126
		$config['interfaces']['wan']['provider'] = $pconfig['provider'];
1127
		$config['interfaces']['wan']['ondemand'] = isset($pconfig['ondemand']);
1128
		$config['interfaces']['wan']['timeout'] = $pconfig['timeout'];
1129
	}
1130
	if (is_array($config['pptp'])) {
1131
		$pconfig = array();
1132
		$pconfig['username'] = $config['pptp']['username'];
1133
		$pconfig['password'] = $config['pptp']['password'];
1134
		$pconfig['provider'] = $config['pptp']['provider'];
1135
		$pconfig['ondemand'] = isset($config['pptp']['ondemand']);
1136
		$pconfig['timeout'] = $config['pptp']['timeout'];
1137
		unset($config['pptp']);
1138
		$config['interfaces']['wan']['pptp_username'] = $pconfig['username'];
1139
		$config['interfaces']['wan']['pptp_password'] = $pconfig['password'];
1140
		$config['interfaces']['wan']['provider'] = $pconfig['provider'];
1141
		$config['interfaces']['wan']['ondemand'] = isset($pconfig['ondemand'] );
1142
		$config['interfaces']['wan']['timeout'] = $pconfig['timeout'];
1143
	}
1144
}
1145
1146
1147
function upgrade_048_to_049() {
1148
	global $config;
1149
	/* setup new all users group */
1150
	$all = array();
1151
	$all['name'] = "all";
1152
	$all['description'] = "All Users";
1153
	$all['scope'] = "system";
1154
	$all['gid'] = 1998;
1155
	$all['member'] = array();
1156
1157
	if (!is_array($config['system']['group']))
1158
		$config['system']['group'] = array();
1159
1160
	/* work around broken uid assignments */
1161
	$config['system']['nextuid'] = 2000;
1162
	foreach ($config['system']['user'] as & $user) {
1163
		if (isset($user['uid']) && !$user['uid'])
1164
			continue;
1165
		$user['uid'] = $config['system']['nextuid']++;
1166
	}
1167
1168
	/* work around broken gid assignments */
1169
	$config['system']['nextgid'] = 2000;
1170
	foreach ($config['system']['group'] as & $group) {
1171
		if ($group['name'] == $g['admin_group'])
1172
			$group['gid'] = 1999;
1173
		else
1174
			$group['gid'] = $config['system']['nextgid']++;
1175
	}
1176
1177
	/* build group membership information */
1178
	foreach ($config['system']['group'] as & $group) {
1179
		$group['member'] = array();
1180
		foreach ($config['system']['user'] as & $user) {
1181
			$groupnames = explode(",", $user['groupname']);
1182
			if (in_array($group['name'],$groupnames))
1183
				$group['member'][] = $user['uid'];
1184
		}
1185
	}
1186
1187
	/* reset user group information */
1188
	foreach ($config['system']['user'] as & $user) {
1189
		unset($user['groupname']);
1190
		$all['member'][] = $user['uid'];
1191
	}
1192
1193
	/* reset group scope information */
1194
	foreach ($config['system']['group'] as & $group)
1195
		if ($group['name'] != $g['admin_group'])
1196
		$group['scope'] = "user";
1197
1198
	/* insert new all group */
1199
	$groups = Array();
1200
	$groups[] = $all;
1201
	$groups = array_merge($config['system']['group'],$groups);
1202
	$config['system']['group'] = $groups;
1203
}
1204
1205
1206
function upgrade_049_to_050() {
1207
	global $config;
1208
	/* update user privileges */
1209
	foreach ($config['system']['user'] as & $user) {
1210
		$privs = array();
1211
		if (!is_array($user['priv'])) {
1212
			unset($user['priv']);
1213
			continue;
1214
		}
1215
		foreach ($user['priv'] as $priv) {
1216
			switch($priv['id']) {
1217
				case "hasshell":
1218
				$privs[] = "user-shell-access";
1219
				break;
1220
				case "copyfiles":
1221
				$privs[] = "user-copy-files";
1222
				break;
1223
			}
1224
		}
1225
		$user['priv'] = $privs;
1226
	}
1227
1228
	/* update group privileges */
1229
	foreach ($config['system']['group'] as & $group) {
1230
		$privs = array();
1231
		if (!is_array($group['pages'])) {
1232
			unset($group['pages']);
1233
			continue;
1234
		}
1235
		foreach ($group['pages'] as $page) {
1236
			$priv = map_page_privname($page);
1237
			if ($priv)
1238
				$privs[] = $priv;
1239
		}
1240
		unset($group['pages']);
1241
		$group['priv'] = $privs;
1242
	}
1243
1244
	/* sync all local account information */
1245
	local_sync_accounts();
1246
}
1247
1248
1249
function upgrade_050_to_051() {
1250
	global $config;
1251
	$pconfig = array();
1252 15864861 jim-p
	$pconfig['descr'] = "Set to 0 to disable filtering on the incoming and outgoing member interfaces.";
1253 791bcfd4 Bill Marquette
	$pconfig['tunable'] = "net.link.bridge.pfil_member";
1254
	$pconfig['value'] = "1";
1255
	$config['sysctl']['item'][] = $pconfig;
1256
	$pconfig = array();
1257 15864861 jim-p
	$pconfig['descr'] = "Set to 1 to enable filtering on the bridge interface";
1258 791bcfd4 Bill Marquette
	$pconfig['tunable'] = "net.link.bridge.pfil_bridge";
1259
	$pconfig['value'] = "0";
1260
	$config['sysctl']['item'][] = $pconfig;
1261
1262
	unset($config['bridge']);
1263
1264
	$convert_bridges = false;
1265
	foreach($config['interfaces'] as $intf) {
1266
		if (isset($intf['bridge']) && $intf['bridge'] <> "") {
1267
			$config['bridges'] = array();
1268
			$config['bridges']['bridged'] = array();
1269
			$convert_bridges = true;
1270
			break;
1271
		}
1272
	}
1273
	if ($convert_bridges == true) {
1274
		$i = 0;
1275
		foreach ($config['interfaces'] as $ifr => &$intf) {
1276
			if (isset($intf['bridge']) && $intf['bridge'] <> "") {
1277
				$nbridge = array();
1278
				$nbridge['members'] = "{$ifr},{$intf['bridge']}";
1279
				$nbridge['descr'] = "Converted bridged {$ifr}";
1280
				$nbridge['bridgeif'] = "bridge{$i}";
1281
				$config['bridges']['bridged'][] = $nbridge;
1282
				unset($intf['bridge']);
1283
				$i++;
1284
			}
1285
		}
1286
	}
1287
}
1288
1289
1290
function upgrade_051_to_052() {
1291
	global $config;
1292
	$config['openvpn'] = array();
1293 9ad72e5e jim-p
	if (!is_array($config['ca']))
1294
		$config['ca'] = array();
1295
	if (!is_array($config['cert']))
1296
		$config['cert'] = array();
1297 791bcfd4 Bill Marquette
1298
	$vpnid = 1;
1299
1300
	/* openvpn server configurations */
1301
	if (is_array($config['installedpackages']['openvpnserver'])) {
1302
		$config['openvpn']['openvpn-server'] = array();
1303
1304
		$index = 1;
1305
		foreach($config['installedpackages']['openvpnserver']['config'] as $server) {
1306
1307
			if (!is_array($server))
1308
				continue;
1309
1310
			if ($server['auth_method'] == "pki") {
1311
1312
				/* create ca entry */
1313
				$ca = array();
1314
				$ca['refid'] = uniqid();
1315 f2a86ca9 jim-p
				$ca['descr'] = "OpenVPN Server CA #{$index}";
1316 791bcfd4 Bill Marquette
				$ca['crt'] = $server['ca_cert'];
1317 9ad72e5e jim-p
				$config['ca'][] = $ca;
1318 791bcfd4 Bill Marquette
1319
				/* create ca reference */
1320
				unset($server['ca_cert']);
1321
				$server['caref'] = $ca['refid'];
1322
1323 47319bfb jim-p
				/* create a crl entry if needed */
1324
				if (!empty($server['crl'])) {
1325
					$crl = array();
1326
					$crl['refid'] = uniqid();
1327
					$crl['descr'] = "Imported OpenVPN CRL #{$index}";
1328
					$crl['caref'] = $ca['refid'];
1329
					$crl['text'] = $server['crl'];
1330 90e64fad Warren Baker
					if(!is_array($config['crl']))
1331
						$config['crl'] = array();
1332 fc3e88f1 jim-p
					$config['crl'][] = $crl;
1333 47319bfb jim-p
					$server['crlref'] = $crl['refid'];
1334
				}
1335
				unset($server['crl']);
1336
1337 791bcfd4 Bill Marquette
				/* create cert entry */
1338
				$cert = array();
1339
				$cert['refid'] = uniqid();
1340 f2a86ca9 jim-p
				$cert['descr'] = "OpenVPN Server Certificate #{$index}";
1341 791bcfd4 Bill Marquette
				$cert['crt'] = $server['server_cert'];
1342
				$cert['prv'] = $server['server_key'];
1343 9ad72e5e jim-p
				$config['cert'][] = $cert;
1344 791bcfd4 Bill Marquette
1345
				/* create cert reference */
1346
				unset($server['server_cert']);
1347
				unset($server['server_key']);
1348
				$server['certref'] = $cert['refid'];
1349
1350
				$index++;
1351
			}
1352
1353
			/* determine operational mode */
1354
			if ($server['auth_method'] == 'pki') {
1355
				if($server['nopool']) {
1356
					$server['mode'] = "p2p_tls";
1357
				} else {
1358
					$server['mode'] = "server_tls";
1359
				}
1360
			} else {
1361
				$server['mode'] = "p2p_shared_key";
1362
			}
1363
			unset($server['auth_method']);
1364
1365
			/* modify configuration values */
1366
			$server['dh_length'] = 1024;
1367
			unset($server['dh_params']);
1368
			if (!$server['interface'])
1369
				$server['interface'] = 'wan';
1370
			$server['tunnel_network'] = $server['addresspool'];
1371
			unset($server['addresspool']);
1372 da831323 Ermal Lu?i
			if (isset($server['use_lzo'])) {
1373 8b666514 jim-p
				$server['compression'] = "on";
1374 da831323 Ermal Lu?i
				unset($server['use_lzo']);
1375
			}
1376 791bcfd4 Bill Marquette
			if ($server['nopool'])
1377
				$server['pool_enable'] = false;
1378
			else
1379
				$server['pool_enable'] = "yes";
1380
			unset($server['nopool']);
1381
			$server['dns_domain'] = $server['dhcp_domainname'];
1382
			unset($server['dhcp_domainname']);
1383
			$server['dns_server1'] = $server['dhcp_dns'];
1384
			unset($server['dhcp_dns']);
1385
			$server['ntp_server1'] = $server['dhcp_ntp'];
1386
			unset($server['dhcp_ntp']);
1387
			if ($server['dhcp_nbtdisable'])
1388
				$server['netbios_enable'] = false;
1389
			else
1390
				$server['netbios_enable'] = "yes";
1391
			unset($server['dhcp_nbtdisable']);
1392
			$server['netbios_ntype'] = $server['dhcp_nbttype'];
1393
			unset($server['dhcp_nbttype']);
1394
			$server['netbios_scope'] = $server['dhcp_nbtscope'];
1395
			unset($server['dhcp_nbtscope']);
1396
			$server['nbdd_server1'] = $server['dhcp_nbdd'];
1397
			unset($server['dhcp_nbdd']);
1398
			$server['wins_server1'] = $server['dhcp_wins'];
1399
			unset($server['dhcp_wins']);
1400
1401 763a1b52 jim-p
			if (!empty($server['disable']))
1402
				$server['disable'] = true;
1403
			else
1404
				unset($server['disable']);
1405
1406 791bcfd4 Bill Marquette
			/* allocate vpnid */
1407
			$server['vpnid'] = $vpnid++;
1408
1409 4f1ebacb Ermal
			if (!empty($server['custom_options'])) {
1410
				$cstmopts = array();
1411
				$tmpcstmopts = explode(";", $server['custom_options']);
1412
				$assigned = false;
1413
				$tmpstr = "";
1414
				foreach ($tmpcstmopts as $tmpcstmopt) {
1415
					$tmpstr = str_replace(" ", "", $tmpcstmopt);
1416
					if (substr($tmpstr,0 ,6) == "devtun") {
1417
						$assigned = true;
1418
						continue;
1419 8fd0badd Ermal
					} else if (substr($tmpstr, 0, 5) == "local") {
1420
						$localip = substr($tmpstr, 6);
1421
						$server['ipaddr'] = str_replace("\n", "", $localip);
1422 4f1ebacb Ermal
					} else
1423
						$cstmopts[] = $tmpcstmopt;
1424
				}
1425
				$server['custom_options'] = implode(";", $cstmopts);
1426
				if ($assigned == true) {
1427
					$realif = substr($tmpstr, 3);
1428
					foreach ($config['interfaces'] as $iface => $cfgif) {
1429
						if ($cfgif['if'] == $realif) {
1430
							$config['interfaces'][$iface]['if'] = "ovpns{$server['vpnid']}";
1431
							break;
1432
						}
1433
					}
1434
				}
1435
			}
1436
1437 791bcfd4 Bill Marquette
			$config['openvpn']['openvpn-server'][] = $server;
1438
		}
1439
		unset($config['installedpackages']['openvpnserver']);
1440
	}
1441
1442
	/* openvpn client configurations */
1443
	if (is_array($config['installedpackages']['openvpnclient'])) {
1444
		$config['openvpn']['openvpn-client'] = array();
1445
1446
		$index = 1;
1447
		foreach($config['installedpackages']['openvpnclient']['config'] as $client) {
1448
1449
			if (!is_array($client))
1450
				continue;
1451
1452
			if ($client['auth_method'] == "pki") {
1453
1454
				/* create ca entry */
1455
				$ca = array();
1456
				$ca['refid'] = uniqid();
1457 f2a86ca9 jim-p
				$ca['descr'] = "OpenVPN Client CA #{$index}";
1458 791bcfd4 Bill Marquette
				$ca['crt'] = $client['ca_cert'];
1459
				$ca['crl'] = $client['crl'];
1460 9ad72e5e jim-p
				$config['ca'][] = $ca;
1461 791bcfd4 Bill Marquette
1462
				/* create ca reference */
1463
				unset($client['ca_cert']);
1464
				unset($client['crl']);
1465
				$client['caref'] = $ca['refid'];
1466
1467
				/* create cert entry */
1468
				$cert = array();
1469
				$cert['refid'] = uniqid();
1470 f2a86ca9 jim-p
				$cert['descr'] = "OpenVPN Client Certificate #{$index}";
1471 791bcfd4 Bill Marquette
				$cert['crt'] = $client['client_cert'];
1472
				$cert['prv'] = $client['client_key'];
1473 9ad72e5e jim-p
				$config['cert'][] = $cert;
1474 791bcfd4 Bill Marquette
1475
				/* create cert reference */
1476
				unset($client['client_cert']);
1477
				unset($client['client_key']);
1478
				$client['certref'] = $cert['refid'];
1479
1480
				$index++;
1481
			}
1482
1483
			/* determine operational mode */
1484
			if ($client['auth_method'] == 'pki')
1485
				$client['mode'] = "p2p_tls";
1486
			else
1487
				$client['mode'] = "p2p_shared_key";
1488
			unset($client['auth_method']);
1489
1490
			/* modify configuration values */
1491
			if (!$client['interface'])
1492
				$client['interface'] = 'wan';
1493
			$client['tunnel_network'] = $client['interface_ip'];
1494
			unset($client['interface_ip']);
1495
			$client['server_addr'] = $client['serveraddr'];
1496
			unset($client['serveraddr']);
1497
			$client['server_port'] = $client['serverport'];
1498
			unset($client['serverport']);
1499
			$client['proxy_addr'] = $client['poxy_hostname'];
1500
			unset($client['proxy_addr']);
1501 da831323 Ermal Lu?i
			if (isset($client['use_lzo'])) {
1502 8b666514 jim-p
				$client['compression'] = "on";
1503 da831323 Ermal Lu?i
				unset($client['use_lzo']);
1504
			}
1505 791bcfd4 Bill Marquette
			$client['resolve_retry'] = $client['infiniteresolvretry'];
1506
			unset($client['infiniteresolvretry']);
1507
1508
			/* allocate vpnid */
1509
			$client['vpnid'] = $vpnid++;
1510
1511 4f1ebacb Ermal
			if (!empty($client['custom_options'])) {
1512
				$cstmopts = array();
1513
				$tmpcstmopts = explode(";", $client['custom_options']);
1514
				$assigned = false;
1515
				$tmpstr = "";
1516
				foreach ($tmpcstmopts as $tmpcstmopt) {
1517
					$tmpstr = str_replace(" ", "", $tmpcstmopt);
1518
					if (substr($tmpstr,0 ,6) == "devtun") {
1519
						$assigned = true;
1520
						continue;
1521 8fd0badd Ermal
					} else if (substr($tmpstr, 0, 5) == "local") {
1522
                                                $localip = substr($tmpstr, 6);
1523
                                                $client['ipaddr'] = str_replace("\n", "", $localip);
1524 4f1ebacb Ermal
					} else
1525
						$cstmopts[] = $tmpcstmopt;
1526
				}
1527
				$client['custom_options'] = implode(";", $cstmopts);
1528
				if ($assigned == true) {
1529
					$realif = substr($tmpstr, 3);
1530
					foreach ($config['interfaces'] as $iface => $cfgif) {
1531
						if ($cfgif['if'] == $realif) {
1532
							$config['interfaces'][$iface]['if'] = "ovpnc{$client['vpnid']}";
1533
							break;
1534
						}
1535
					}
1536
				}
1537
			}
1538
1539 763a1b52 jim-p
			if (!empty($client['disable']))
1540
				$client['disable'] = true;
1541
			else
1542
				unset($client['disable']);
1543
1544 791bcfd4 Bill Marquette
			$config['openvpn']['openvpn-client'][] = $client;
1545
		}
1546
1547
		unset($config['installedpackages']['openvpnclient']);
1548
	}
1549
1550
	/* openvpn client specific configurations */
1551
	if (is_array($config['installedpackages']['openvpncsc'])) {
1552
		$config['openvpn']['openvpn-csc'] = array();
1553
1554
		foreach($config['installedpackages']['openvpncsc']['config'] as $csc) {
1555
1556
			if (!is_array($csc))
1557
				continue;
1558
1559
			/* modify configuration values */
1560
			$csc['common_name'] = $csc['commonname'];
1561
			unset($csc['commonname']);
1562
			$csc['tunnel_network'] = $csc['ifconfig_push'];
1563
			unset($csc['ifconfig_push']);
1564
			$csc['dns_domain'] = $csc['dhcp_domainname'];
1565
			unset($csc['dhcp_domainname']);
1566
			$csc['dns_server1'] = $csc['dhcp_dns'];
1567
			unset($csc['dhcp_dns']);
1568
			$csc['ntp_server1'] = $csc['dhcp_ntp'];
1569
			unset($csc['dhcp_ntp']);
1570
			if ($csc['dhcp_nbtdisable'])
1571
				$csc['netbios_enable'] = false;
1572
			else
1573
				$csc['netbios_enable'] = "yes";
1574
			unset($csc['dhcp_nbtdisable']);
1575
			$csc['netbios_ntype'] = $csc['dhcp_nbttype'];
1576
			unset($csc['dhcp_nbttype']);
1577
			$csc['netbios_scope'] = $csc['dhcp_nbtscope'];
1578
			unset($csc['dhcp_nbtscope']);
1579
			$csc['nbdd_server1'] = $csc['dhcp_nbdd'];
1580
			unset($csc['dhcp_nbdd']);
1581
			$csc['wins_server1'] = $csc['dhcp_wins'];
1582
			unset($csc['dhcp_wins']);
1583
1584 1e68a58b jim-p
			if (!empty($csc['disable']))
1585
				$csc['disable'] = true;
1586
			else
1587
				unset($csc['disable']);
1588
1589 791bcfd4 Bill Marquette
			$config['openvpn']['openvpn-csc'][] = $csc;
1590
		}
1591
1592
		unset($config['installedpackages']['openvpncsc']);
1593
	}
1594
1595 c73bd8f0 Ermal Lu?i
	if (count($config['openvpn']['openvpn-server']) > 0 ||
1596
		count($config['openvpn']['openvpn-client']) > 0) {
1597
		$ovpnrule = array();
1598
                $ovpnrule['type'] = "pass";
1599
                $ovpnrule['interface'] = "openvpn";
1600
                $ovpnrule['statetype'] = "keep state";
1601
                $ovpnrule['source'] = array();
1602
                $ovpnrule['destination'] = array();
1603
                $ovpnrule['source']['any'] = true;
1604
                $ovpnrule['destination']['any'] = true;
1605
                $ovpnrule['descr'] = "Auto added OpenVPN rule from config upgrade.";
1606
		$config['filter']['rule'][] = $ovpnrule;
1607
	}
1608
1609 791bcfd4 Bill Marquette
	/*
1610
		* FIXME: hack to keep things working with no installedpackages
1611
		* or carp array in the configuration data.
1612
		*/
1613
	if (!is_array($config['installedpackages']))
1614
		$config['installedpackages'] = array();
1615
	if (!is_array($config['installedpackages']['carp']))
1616
		$config['installedpackages']['carp'] = array();
1617
1618
}
1619
1620
1621
function upgrade_052_to_053() {
1622
	global $config;
1623 9ad72e5e jim-p
	if (!is_array($config['ca']))
1624
		$config['ca'] = array();
1625
	if (!is_array($config['cert']))
1626
		$config['cert'] = array();
1627 791bcfd4 Bill Marquette
1628
	/* migrate advanced admin page webui ssl to certifcate mngr */
1629
	if ($config['system']['webgui']['certificate'] &&
1630
	$config['system']['webgui']['private-key']) {
1631
1632
		/* create cert entry */
1633
		$cert = array();
1634
		$cert['refid'] = uniqid();
1635 f2a86ca9 jim-p
		$cert['descr'] = "webConfigurator SSL Certificate";
1636 791bcfd4 Bill Marquette
		$cert['crt'] = $config['system']['webgui']['certificate'];
1637
		$cert['prv'] = $config['system']['webgui']['private-key'];
1638 9ad72e5e jim-p
		$config['cert'][] = $cert;
1639 791bcfd4 Bill Marquette
1640
		/* create cert reference */
1641
		unset($config['system']['webgui']['certificate']);
1642
		unset($config['system']['webgui']['private-key']);
1643
		$config['system']['webgui']['ssl-certref'] = $cert['refid'];
1644
	}
1645
1646
	/* migrate advanced admin page ssh keys to user manager */
1647
	if ($config['system']['ssh']['authorizedkeys']) {
1648
		$admin_user =& getUserEntryByUID(0);
1649
		$admin_user['authorizedkeys'] = $config['system']['ssh']['authorizedkeys'];
1650
		unset($config['system']['ssh']['authorizedkeys']);
1651
	}
1652
}
1653
1654
1655
function upgrade_053_to_054() {
1656
	global $config;
1657 38b5beaf sullrich
	if(is_array($config['load_balancer']['lbpool'])) {
1658
		$lbpool_arr = $config['load_balancer']['lbpool'];
1659 791bcfd4 Bill Marquette
		$lbpool_srv_arr = array();
1660
		$gateway_group_arr = array();
1661 816a5aff Seth Mos
		$gateways = return_gateways_array();
1662 d827f9cc smos
		if (! is_array($config['gateways']['gateway_item']))
1663 bf02c784 Ermal
			$config['gateways']['gateway_item'] = array();
1664 d827f9cc smos
1665 bf02c784 Ermal
		$a_gateways =& $config['gateways']['gateway_item'];
1666 791bcfd4 Bill Marquette
		foreach($lbpool_arr as $lbpool) {
1667
			if($lbpool['type'] == "gateway") {
1668
				$gateway_group['name'] = $lbpool['name'];
1669 e988813d jim-p
				$gateway_group['descr'] = $lbpool['descr'];
1670 791bcfd4 Bill Marquette
				$gateway_group['trigger'] = "down";
1671
				$gateway_group['item'] = array();
1672 cb945ced sullrich
				$i = 0;
1673 791bcfd4 Bill Marquette
				foreach($lbpool['servers'] as $member) {
1674
					$split = split("\|", $member);
1675
					$interface = $split[0];
1676 d9d4c637 Seth Mos
					$monitor = $split[1];
1677 2328dcc5 Seth Mos
					/* on static upgraded configuration we automatically prepend GW_ */
1678
					$static_name = "GW_" . strtoupper($interface);
1679 d2b20ab6 jim-p
					if(is_ipaddr($monitor))
1680
						foreach ($a_gateways as & $gw)
1681
							if ($gw['name'] == $static_name)
1682
								$gw['monitor'] = $monitor;
1683
1684 6ee1b7eb Seth Mos
					/* on failover increment tier. Else always assign 1 */
1685
					if($lbpool['behaviour'] == "failover") {
1686
						$i++;
1687
					} else {
1688
						$i = 1;
1689
					}
1690 685a26fc smos
					$gateway_group['item'][] = "$static_name|$i";
1691 791bcfd4 Bill Marquette
				}
1692
				$gateway_group_arr[] = $gateway_group;
1693
			} else {
1694
				$lbpool_srv_arr[] = $lbpool;
1695
			}
1696
		}
1697 38b5beaf sullrich
		$config['load_balancer']['lbpool'] = $lbpool_srv_arr;
1698 791bcfd4 Bill Marquette
		$config['gateways']['gateway_group'] = $gateway_group_arr;
1699
	}
1700
	// Unset lbpool if we no longer have any server pools
1701
	if (count($lbpool_srv_arr) == 0) {
1702 416ae3d6 Seth Mos
		if(empty($config['load_balancer'])) {
1703 0b5b4f32 Seth Mos
			unset($config['load_balancer']);
1704 92a2ceae Seth Mos
		} else {
1705
			unset($config['load_balancer']['lbpool']);
1706 0b5b4f32 Seth Mos
		}
1707 791bcfd4 Bill Marquette
	} else {
1708
		$config['load_balancer']['lbpool'] = $lbpool_srv_arr;
1709
	}
1710
	// Only set the gateway group array if we converted any
1711
	if (count($gateway_group_arr) != 0) {
1712
		$config['gateways']['gateway_group'] = $gateway_group_arr;
1713
	}
1714
}
1715
1716
1717
function upgrade_054_to_055() {
1718
	global $config;
1719 54f8bad0 Seth Mos
	global $g;
1720
1721 791bcfd4 Bill Marquette
	/* RRD files changed for quality, traffic and packets graphs */
1722 59cfe65d Ermal
	//ini_set("max_execution_time", "1800");
1723 791bcfd4 Bill Marquette
	/* convert traffic RRD file */
1724
	global $parsedcfg, $listtags;
1725
	$listtags = array("ds", "v", "rra", "row");
1726
1727
	$rrddbpath = "/var/db/rrd/";
1728
	$rrdtool = "/usr/bin/nice -n20 /usr/local/bin/rrdtool";
1729
1730
	$rrdinterval = 60;
1731
	$valid = $rrdinterval * 2;
1732
1733
	/* Asume GigE for now */
1734
	$downstream = 125000000;
1735
	$upstream = 125000000;
1736
1737
	/* build a list of quality databases */
1738
	/* roundtrip has become delay */
1739
	function divide_delay($delayval) {
1740
		$delayval = floatval($delayval);
1741
		$delayval = ($delayval / 1000);
1742
		$delayval = " ". sprintf("%1.10e", $delayval) ." ";
1743
		return $delayval;
1744
	}
1745
	/* the roundtrip times need to be divided by 1000 to get seconds, really */
1746
	$databases = array();
1747 af0b07d3 jim-p
	if (!file_exists($rrddbpath))
1748
		@mkdir($rrddbpath);
1749 4cb9abc3 jim-p
	chdir($rrddbpath);
1750
	$databases = glob("*-quality.rrd");
1751 791bcfd4 Bill Marquette
	rsort($databases);
1752
	foreach($databases as $database) {
1753
		$xmldump = "{$database}.old.xml";
1754
		$xmldumpnew = "{$database}.new.xml";
1755
1756 34834e7e jim-p
		if ($g['booting'])
1757
			echo "Migrate RRD database {$database} to new format \n";
1758 791bcfd4 Bill Marquette
		mwexec("$rrdtool tune {$rrddbpath}{$database} -r roundtrip:delay 2>&1");
1759
1760
		dump_rrd_to_xml("{$rrddbpath}/{$database}", "{$g['tmp_path']}/{$xmldump}");
1761
		$rrdoldxml = file_get_contents("{$g['tmp_path']}/{$xmldump}");
1762
		$rrdold = xml2array($rrdoldxml, 1, "tag");
1763
		$rrdold = $rrdold['rrd'];
1764
1765
		$i = 0;
1766
		foreach($rrdold['rra'] as $rra) {
1767
			$l = 0;
1768
			foreach($rra['database']['row'] as $row) {
1769
				$vnew = divide_delay($row['v'][1]);
1770
				$rrdold['rra'][$i]['database']['row'][$l]['v'][1] = $vnew;
1771
				$l++;
1772
			}
1773
			$i++;
1774
		}
1775
1776
		$rrdxml = dump_xml_config_raw($rrdold, "rrd");
1777
		file_put_contents("{$g['tmp_path']}/{$xmldumpnew}", $rrdxml);
1778
		mwexec("$rrdtool restore -f {$g['tmp_path']}/{$xmldumpnew} {$rrddbpath}/{$database} 2>&1");
1779
1780
	}
1781
	/* let apinger recreate required files */
1782
	setup_gateways_monitor();
1783
1784
	/* build a list of traffic and packets databases */
1785
	$databases = array();
1786 a87afa7c Seth Mos
	exec("cd $rrddbpath;/usr/bin/find *-traffic.rrd *-packets.rrd", $databases);
1787 791bcfd4 Bill Marquette
	rsort($databases);
1788
	foreach($databases as $database) {
1789
		$databasetmp = "{$database}.tmp";
1790
		$xmldump = "{$database}.old.xml";
1791
		$xmldumptmp = "{$database}.tmp.xml";
1792
		$xmldumpnew = "{$database}.new.xml";
1793
1794 34834e7e jim-p
		if ($g['booting'])
1795
			echo "Migrate RRD database {$database} to new format \n";
1796 791bcfd4 Bill Marquette
		/* rename DS source */
1797
		mwexec("$rrdtool tune {$rrddbpath}/{$database} -r in:inpass 2>&1");
1798
		mwexec("$rrdtool tune {$rrddbpath}/{$database} -r out:outpass 2>71");
1799
1800
		/* dump contents to xml and move database out of the way */
1801
		dump_rrd_to_xml("{$rrddbpath}/{$database}", "{$g['tmp_path']}/{$xmldump}");
1802
1803
		/* create new rrd database file */
1804
		$rrdcreate = "$rrdtool create {$g['tmp_path']}/{$databasetmp} --step $rrdinterval ";
1805
		$rrdcreate .= "DS:inpass:COUNTER:$valid:0:$downstream ";
1806
		$rrdcreate .= "DS:outpass:COUNTER:$valid:0:$upstream ";
1807
		$rrdcreate .= "DS:inblock:COUNTER:$valid:0:$downstream ";
1808
		$rrdcreate .= "DS:outblock:COUNTER:$valid:0:$upstream ";
1809
		$rrdcreate .= "RRA:AVERAGE:0.5:1:1000 ";
1810
		$rrdcreate .= "RRA:AVERAGE:0.5:5:1000 ";
1811
		$rrdcreate .= "RRA:AVERAGE:0.5:60:1000 ";
1812
		$rrdcreate .= "RRA:AVERAGE:0.5:720:3000 ";
1813
1814
		create_new_rrd("$rrdcreate");
1815
		/* create temporary xml from new RRD */
1816
		dump_rrd_to_xml("{$g['tmp_path']}/{$databasetmp}", "{$g['tmp_path']}/{$xmldumptmp}");
1817
1818
		$rrdoldxml = file_get_contents("{$g['tmp_path']}/{$xmldump}");
1819
		$rrdold = xml2array($rrdoldxml, 1, "tag");
1820
		$rrdold = $rrdold['rrd'];
1821
1822
		$rrdnewxml = file_get_contents("{$g['tmp_path']}/{$xmldumptmp}");
1823
		$rrdnew = xml2array($rrdnewxml, 1, "tag");
1824
		$rrdnew = $rrdnew['rrd'];
1825
1826
		/* remove any MAX RRA's. Not needed for traffic. */
1827
		$i = 0;
1828
		foreach ($rrdold['rra'] as $rra) {
1829
			if(trim($rra['cf']) == "MAX") {
1830
				unset($rrdold['rra'][$i]);
1831
			}
1832
			$i++;
1833
		}
1834
1835
		$rrdxmlarray = migrate_rrd_format($rrdold, $rrdnew);
1836
		$rrdxml = dump_xml_config_raw($rrdxmlarray, "rrd");
1837
		file_put_contents("{$g['tmp_path']}/{$xmldumpnew}", $rrdxml);
1838
		mwexec("$rrdtool restore -f {$g['tmp_path']}/{$xmldumpnew} {$rrddbpath}/{$database} 2>&1");
1839
1840
	}
1841
	enable_rrd_graphing();
1842 34834e7e jim-p
	if ($g['booting'])
1843
		echo "Updating configuration...";
1844 791bcfd4 Bill Marquette
}
1845
1846
1847
function upgrade_055_to_056() {
1848
	global $config;
1849
1850 9ad72e5e jim-p
	if (!is_array($config['ca']))
1851
		$config['ca'] = array();
1852
	if (!is_array($config['cert']))
1853
		$config['cert'] = array();
1854 791bcfd4 Bill Marquette
1855
	/* migrate ipsec ca's to cert manager */
1856
	if (is_array($config['ipsec']['cacert'])) {
1857
		foreach($config['ipsec']['cacert'] as & $cacert) {
1858
			$ca = array();
1859
			$ca['refid'] = uniqid();
1860
			if (is_array($cacert['cert']))
1861
				$ca['crt'] = $cacert['cert'][0];
1862
			else
1863
				$ca['crt'] = $cacert['cert'];
1864 f2a86ca9 jim-p
			$ca['descr'] = $cacert['ident'];
1865 9ad72e5e jim-p
			$config['ca'][] = $ca;
1866 791bcfd4 Bill Marquette
		}
1867
		unset($config['ipsec']['cacert']);
1868
	}
1869
1870
	/* migrate phase1 certificates to cert manager */
1871
	if (is_array($config['ipsec']['phase1'])) {
1872
		foreach($config['ipsec']['phase1'] as & $ph1ent) {
1873
			$cert = array();
1874
			$cert['refid'] = uniqid();
1875 f2a86ca9 jim-p
			$cert['descr'] = "IPsec Peer {$ph1ent['remote-gateway']} Certificate";
1876 791bcfd4 Bill Marquette
			if (is_array($ph1ent['cert']))
1877
				$cert['crt'] = $ph1ent['cert'][0];
1878
			else
1879
				$cert['crt'] = $ph1ent['cert'];
1880
			$cert['prv'] = $ph1ent['private-key'];
1881 9ad72e5e jim-p
			$config['cert'][] = $cert;
1882 791bcfd4 Bill Marquette
			$ph1ent['certref'] = $cert['refid'];
1883
			if ($ph1ent['cert'])
1884
				unset($ph1ent['cert']);
1885
			if ($ph1ent['private-key'])
1886
				unset($ph1ent['private-key']);
1887
			if ($ph1ent['peercert'])
1888
				unset($ph1ent['peercert']);
1889
		}
1890
	}
1891
}
1892
1893
1894
function upgrade_056_to_057() {
1895
	global $config;
1896 4830e56a Erik Fonnesbeck
	if (!is_array($config['system']['user']))
1897
		$config['system']['user'] = array();
1898 791bcfd4 Bill Marquette
	/* migrate captivate portal to user manager */
1899
	if (is_array($config['captiveportal']['user'])) {
1900
		foreach($config['captiveportal']['user'] as $user) {
1901
			// avoid user conflicts
1902 4830e56a Erik Fonnesbeck
			$found = false;
1903
			foreach ($config['system']['user'] as $userent) {
1904
				if ($userent['name'] == $user['name']) {
1905
					$found = true;
1906
					break;
1907
				}
1908
			}
1909
			if ($found)
1910 791bcfd4 Bill Marquette
				continue;
1911
			$user['scope'] = "user";
1912
			if (isset($user['expirationdate'])) {
1913
				$user['expires'] = $user['expirationdate'];
1914
				unset($user['expirationdate']);
1915
			}
1916
			if (isset($user['password'])) {
1917
				$user['md5-hash'] = $user['password'];
1918
				unset($user['password']);
1919
			}
1920 4830e56a Erik Fonnesbeck
			$user['uid'] = $config['system']['nextuid']++;
1921 791bcfd4 Bill Marquette
			$config['system']['user'][] = $user;
1922
		}
1923
		unset($config['captiveportal']['user']);
1924
	}
1925
}
1926 4b96b367 mgrooms
1927
function upgrade_057_to_058() {
1928
	global $config;
1929
	/* set all phase2 entries to tunnel mode */
1930
	if (is_array($config['ipsec']['phase2']))
1931
		foreach($config['ipsec']['phase2'] as & $ph2ent)
1932
			$ph2ent['mode'] = 'tunnel';
1933
}
1934 60120e37 Ermal Lu?i
1935
function upgrade_058_to_059() {
1936
	global $config;
1937
1938
	if (is_array($config['schedules']['schedule'])) {
1939
		foreach ($config['schedules']['schedule'] as & $schedl)
1940
			$schedl['schedlabel'] = uniqid();
1941
	}
1942
}
1943 2523c923 Seth Mos
1944
function upgrade_059_to_060() {
1945 fcf5afa0 Seth Mos
	global $config;
1946 a0588fad Scott Ullrich
	require_once("/etc/inc/certs.inc");
1947 9ad72e5e jim-p
	if (is_array($config['ca'])) {
1948 2cf6ddcb Nigel Graham
		/* Locate issuer for all CAs */
1949 9ad72e5e jim-p
		foreach ($config['ca'] as & $ca) {
1950 2cf6ddcb Nigel Graham
			$subject = cert_get_subject($ca['crt']);
1951
			$issuer = cert_get_issuer($ca['crt']);
1952
			if($issuer <> $subject) {
1953
				$issuer_crt =& lookup_ca_by_subject($issuer);
1954
				if($issuer_crt)
1955
					$ca['caref'] = $issuer_crt['refid'];
1956
			}
1957
		}
1958
		
1959
		/* Locate issuer for all certificates */
1960 9ad72e5e jim-p
		if (is_array($config['cert'])) {
1961
			foreach ($config['cert'] as & $cert) {
1962 2cf6ddcb Nigel Graham
				$subject = cert_get_subject($cert['crt']);
1963
				$issuer = cert_get_issuer($cert['crt']);
1964
				if($issuer <> $subject) {
1965
					$issuer_crt =& lookup_ca_by_subject($issuer);
1966
					if($issuer_crt)
1967
						$cert['caref'] = $issuer_crt['refid'];
1968
				}
1969
			}
1970 9d3dab70 Scott Ullrich
		}
1971 2cf6ddcb Nigel Graham
	}
1972
}
1973 d43ad788 Scott Ullrich
1974 6a688547 Ermal
function upgrade_060_to_061() {
1975
	global $config;
1976 3cfa11c2 Scott Ullrich
1977 6a688547 Ermal
	if (is_array($config['interfaces']['wan']))
1978
		$config['interfaces']['wan']['enable'] = true;
1979
	if (is_array($config['interfaces']['lan']))
1980
		$config['interfaces']['lan']['enable'] = true;
1981
}
1982 3cfa11c2 Scott Ullrich
1983 59ecde49 Renato Botelho
function upgrade_061_to_062() {
1984
	global $config;
1985
1986
	/* Convert NAT port forwarding rules */
1987
	if (is_array($config['nat']['rule'])) {
1988
		$a_nat = &$config['nat']['rule'];
1989
1990
		foreach ($a_nat as &$natent) {
1991
			$natent['disabled'] = false;
1992
			$natent['nordr']    = false;
1993
1994
			$natent['source'] = array(
1995
				"not"     => false,
1996
				"any"     => true,
1997
				"port"    => ""
1998
			);
1999
2000
			$natent['destination'] = array(
2001
				"not"     => false,
2002
				"address" => $natent['external-address'],
2003
				"port"    => $natent['external-port']
2004
			);
2005
2006 743ce9f8 Erik Fonnesbeck
			if (empty($natent['destination']['address'])) {
2007 fcf4e8cd Erik Fonnesbeck
				unset($natent['destination']['address']);
2008
				$natent['destination']['network'] = $natent['interface'] . 'ip';
2009 743ce9f8 Erik Fonnesbeck
			} else if ($natent['destination']['address'] == 'any') {
2010
				unset($natent['destination']['address']);
2011
				$natent['destination']['any'] = true;
2012
			}
2013
2014 59ecde49 Renato Botelho
			unset($natent['external-address']);
2015
			unset($natent['external-port']);
2016
		}
2017
2018
		unset($natent);
2019
	}
2020
}
2021
2022 0f8266ed smos
function upgrade_062_to_063() {
2023 168a1e48 smos
	/* Upgrade legacy Themes to the new pfsense_ng */
2024
	global $config;
2025
2026
	switch($config['theme']) {
2027 1852fef0 smos
		case "nervecenter":
2028 168a1e48 smos
			$config['theme'] = "pfsense_ng";
2029
			break;
2030
	}
2031
	
2032
}
2033 c2b2b571 gnhb
2034
function upgrade_063_to_064() {
2035
	global $config;
2036 d09ca87e gnhb
	$j=0;
2037
	$ifcfg = &$config['interfaces'];
2038
	
2039 f7480829 gnhb
	if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {	
2040 c2b2b571 gnhb
		foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
2041 d09ca87e gnhb
			$config['ppps']['ppp'][$pppid]['if'] = "ppp".$j;
2042
			$config['ppps']['ppp'][$pppid]['ptpid'] = $j;
2043
			$j++;
2044 c2b2b571 gnhb
			if (isset($ppp['port'])){
2045
				$config['ppps']['ppp'][$pppid]['ports'] = $ppp['port'];
2046
				unset($config['ppps']['ppp'][$pppid]['port']);
2047
			}
2048
			if (!isset($ppp['type'])){
2049
				$config['ppps']['ppp'][$pppid]['type'] = "ppp";
2050
			}
2051 8256f324 gnhb
			if (isset($ppp['defaultgw']))
2052 6fdfa8fb gnhb
				unset($config['ppps']['ppp'][$pppid]['defaultgw']);
2053 c2b2b571 gnhb
		}
2054
	}
2055
	
2056
	if (!is_array($config['ppps']['ppp']))
2057
		$config['ppps']['ppp'] = array();
2058
	$a_ppps = &$config['ppps']['ppp'];
2059
2060
	foreach ($ifcfg as $ifname => $ifinfo) {
2061
		$ppp = array();
2062
		// For pppoe conversion
2063
		if ($ifinfo['ipaddr'] == "pppoe" || $ifinfo['ipaddr'] == "pptp"){
2064
			if (isset($ifinfo['ptpid']))
2065
				continue;
2066 d09ca87e gnhb
			$ppp['ptpid'] =  $j;
2067 c2b2b571 gnhb
			$ppp['type'] = $ifinfo['ipaddr'];
2068 d09ca87e gnhb
			$ppp['if'] = $ifinfo['ipaddr'].$j;
2069 c2b2b571 gnhb
			$ppp['ports'] = $ifinfo['if'];
2070
			if ($ifinfo['ipaddr'] == "pppoe"){
2071
				$ppp['username'] = $ifinfo['pppoe_username'];
2072
				$ppp['password'] = base64_encode($ifinfo['pppoe_password']);
2073
			}
2074
			if ($ifinfo['ipaddr'] == "pptp"){
2075
				$ppp['username'] = $ifinfo['pptp_username'];
2076
				$ppp['password'] = base64_encode($ifinfo['pptp_password']);
2077
			}
2078
			
2079
			if (isset($ifinfo['provider']))
2080
				$ppp['provider'] = $ifinfo['provider'];
2081
			if (isset($ifinfo['ondemand']))
2082
				$ppp['ondemand'] = true;
2083
			if (isset($ifinfo['timeout']))
2084
				$ppp['idletimeout'] = $ifinfo['timeout'];
2085
			if (isset($ifinfo['pppoe']['pppoe-reset-type'])){
2086
				$ppp['pppoe-reset-type'] = $ifinfo['pppoe']['pppoe-reset-type'];
2087
				if (is_array($config['cron']['item'])) {
2088
					for ($i = 0; $i < count($config['cron']['item']); $i++) {
2089
						$item = $config['cron']['item'][$i];
2090
						if (strpos($item['command'], "/conf/pppoe{$ifname}restart") !== false)
2091 f7480829 gnhb
							$config['cron']['item'][$i]['command'] = "/var/etc/pppoe_restart_" . $ppp['if'];
2092 c2b2b571 gnhb
					}
2093
				}
2094
			}
2095
			if (isset($ifinfo['local']))
2096
				$ppp['localip'] = $ifinfo['local'];
2097
			if (isset($ifinfo['subnet']))
2098
				$ppp['subnet'] = $ifinfo['subnet'];
2099
			if (isset($ifinfo['remote']))
2100
				$ppp['gateway'] = $ifinfo['remote'];
2101 f7480829 gnhb
2102 d09ca87e gnhb
			$ifcfg[$ifname]['if'] = $ifinfo['ipaddr'].$j;
2103
			$j++;
2104 f7480829 gnhb
			
2105 c2b2b571 gnhb
			unset($ifcfg[$ifname]['pppoe_username']);
2106
			unset($ifcfg[$ifname]['pppoe_password']);
2107
			unset($ifcfg[$ifname]['provider']);
2108
			unset($ifcfg[$ifname]['ondemand']);
2109
			unset($ifcfg[$ifname]['timeout']);
2110
			unset($ifcfg[$ifname]['pppoe_reset']);
2111
			unset($ifcfg[$ifname]['pppoe_preset']);
2112
			unset($ifcfg[$ifname]['pppoe']);
2113
			unset($ifcfg[$ifname]['pptp_username']);
2114
			unset($ifcfg[$ifname]['pptp_password']);
2115
			unset($ifcfg[$ifname]['local']);
2116
			unset($ifcfg[$ifname]['subnet']);
2117
			unset($ifcfg[$ifname]['remote']);
2118
			
2119
			$a_ppps[] = $ppp;
2120
			
2121
		}
2122
	}
2123
}
2124
2125 56a5a0ab jim-p
function upgrade_064_to_065() {
2126
	/* Disable TSO and LRO in upgraded configs */
2127
	global $config;
2128
	$config['system']['disablesegmentationoffloading'] = true;
2129
	$config['system']['disablelargereceiveoffloading'] = true;
2130
}
2131
2132 2f06cc3f Ermal
function upgrade_065_to_066() {
2133
	global $config;
2134
2135
	$dhcrelaycfg =& $config['dhcrelay'];
2136
2137
        if (is_array($dhcrelaycfg)) {
2138
        	$dhcrelayifs = array();
2139
		$foundifs = false;
2140
        	/* DHCPRelay enabled on any interfaces? */
2141
                foreach ($dhcrelaycfg as $dhcrelayif => $dhcrelayifconf) {
2142
                        if (isset($dhcrelayifconf['enable'])) {
2143
				$dhcrelayifs[] = $dhcrelayif;
2144
				unset($dhcrelaycfg['dhcrelayif']);
2145
				$foundifs = true;
2146
			}
2147
                }
2148
		if ($foundifs == true)
2149
			$dhcrelaycfg['interface'] = implode(",", $dhcrelayifs);
2150
        }
2151
}
2152
2153 9ad72e5e jim-p
function upgrade_066_to_067() {
2154
	global $config;
2155
	if (isset($config['system']['ca'])) {
2156
		$config['ca'] = $config['system']['ca'];
2157
	}
2158
	if (isset($config['system']['cert'])) {
2159
		$config['cert'] = $config['system']['cert'];
2160
	}
2161
}
2162
2163 6ae9f9b7 Ermal
function upgrade_067_to_068() {
2164
	global $config;
2165
2166
	if (!empty($config['pppoe'])) {
2167
		$config['pppoes'] = array();
2168
		$config['pppoes']['pppoe'] = array();
2169
		$config['pppoes']['pppoe'][] = $config['pppoe'][0];
2170 ce968051 Ermal
2171
		if (is_array($config['pppoe']['user'])) {
2172
			$username = array(); 
2173
			foreach ($config['pppoe']['user'] as $user) {
2174 2fc29020 Ermal
				$usr = $user['name'] . ":" . base64_encode($user['password']);
2175 ce968051 Ermal
				if ($user['ip'])
2176
					$usr .= ":{$user['ip']}";
2177
				$username[] = $usr;
2178
			}
2179
			$config['pppoes']['pppoe'][0]['username'] = implode(" ", $username);
2180
		}
2181 6ae9f9b7 Ermal
		unset($config['pppoe']);
2182
	}
2183
}
2184
2185 18de0728 Ermal
function upgrade_068_to_069() {
2186 8fefb9dd jim-p
	global $config;
2187
	if (!is_array($config['system']['user']))
2188
		return;
2189
	foreach ($config['system']['user'] as & $user) {
2190
		if (!is_array($user['cert']))
2191
			continue;
2192
		$rids = array();
2193
		foreach ($user['cert'] as $id => $cert) {
2194 f2a86ca9 jim-p
			if (!isset($cert['descr']))
2195 8fefb9dd jim-p
				continue;
2196
			$tcert = $cert;
2197
			// Make sure each cert gets a refid
2198
			if (!isset($tcert['refid']))
2199
				$tcert['refid'] = uniqid();
2200
			// Keep the cert references for this user
2201
			$rids[] = $tcert['refid'];
2202
			$config['cert'][] = $tcert;
2203
		}
2204
		// Replace user certs with cert references instead.
2205
		if (count($rids) > 0)
2206
			$user['cert'] = $rids;
2207
	}
2208
}
2209
2210 4c5b8653 Erik Fonnesbeck
function upgrade_069_to_070() {
2211
	global $config;
2212
2213
	/* Convert NAT 1:1 rules */
2214
	if (is_array($config['nat']['onetoone'])) {
2215 a3bac4ce Ermal
		foreach ($config['nat']['onetoone'] as $nidx => $natent) {
2216 4c5b8653 Erik Fonnesbeck
			if ($natent['subnet'] == 32)
2217 a3bac4ce Ermal
				$config['nat']['onetoone'][$nidx]['source'] = array("address" => $natent['internal']);
2218 4c5b8653 Erik Fonnesbeck
			else
2219 a3bac4ce Ermal
				$config['nat']['onetoone'][$nidx]['source'] = array("address" => $natent['internal'] . "/" . $natent['subnet']);
2220 4c5b8653 Erik Fonnesbeck
2221 a3bac4ce Ermal
			$config['nat']['onetoone'][$nidx]['destination'] = array("any" => true);
2222 4c5b8653 Erik Fonnesbeck
2223 a3bac4ce Ermal
			unset($config['nat']['onetoone'][$nidx]['internal']);
2224
			unset($config['nat']['onetoone'][$nidx]['subnet']);
2225 4c5b8653 Erik Fonnesbeck
		}
2226
2227
		unset($natent);
2228
	}
2229
}
2230
2231 65167fcc Ermal
function upgrade_070_to_071() {
2232
	global $config;
2233
2234
	if (is_array($config['cron']['item'])) {
2235
		foreach($config['cron']['item'] as $idx => $cronitem) {
2236 f21c7979 Ermal
			if(stristr($cronitem['command'], "checkreload.sh")) {
2237 65167fcc Ermal
				unset($config['cron']['item'][$idx]);
2238
				break;
2239
			}
2240
		}
2241
	}
2242
}
2243 15864861 jim-p
2244 6751b3e7 jim-p
function rename_field(& $section, $oldname, $newname) {
2245 e988813d jim-p
	if (is_array($section)) {
2246
		foreach($section as & $item) {
2247 8784a3bb Erik Fonnesbeck
			if (!empty($item[$oldname]))
2248 6751b3e7 jim-p
				$item[$newname] = $item[$oldname];
2249 8784a3bb Erik Fonnesbeck
			if (isset($item[$oldname]))
2250 6751b3e7 jim-p
				unset($item[$oldname]);
2251 e988813d jim-p
		}
2252
	}
2253
}
2254
2255 6751b3e7 jim-p
function upgrade_071_to_072() {
2256
	global $config;
2257 6bef0554 jim-p
	if (is_array($config['sysctl']) && is_array($config['sysctl']['item']))
2258
		rename_field($config['sysctl']['item'], 'desc', 'descr');
2259 6751b3e7 jim-p
}
2260
2261 e988813d jim-p
function upgrade_072_to_073() {
2262
	global $config;
2263 6bef0554 jim-p
	if (!is_array($config['load_balancer']))
2264
		return;
2265
	if (is_array($config['load_balancer']['monitor_type']))
2266
		rename_field($config['load_balancer']['monitor_type'], 'desc', 'descr');
2267
	if (is_array($config['load_balancer']['lbpool']))
2268
		rename_field($config['load_balancer']['lbpool'], 'desc', 'descr');
2269
	if (is_array($config['load_balancer']['lbaction']))
2270
		rename_field($config['load_balancer']['lbaction'], 'desc', 'descr');
2271
	if (is_array($config['load_balancer']['lbprotocol']))
2272
		rename_field($config['load_balancer']['lbprotocol'], 'desc', 'descr');
2273
	if (is_array($config['load_balancer']['virtual_server']))
2274
		rename_field($config['load_balancer']['virtual_server'], 'desc', 'descr');
2275 e988813d jim-p
}
2276 9ff73b79 jim-p
2277
function upgrade_073_to_074() {
2278
	global $config;
2279 6751b3e7 jim-p
	rename_field($config['system']['user'], 'fullname', 'descr');
2280 9ff73b79 jim-p
}
2281 f2a86ca9 jim-p
2282
function upgrade_074_to_075() {
2283
	global $config;
2284 6bef0554 jim-p
	if (is_array($config['ca']))
2285
		rename_field($config['ca'], 'name', 'descr');
2286
	if (is_array($config['cert']))
2287
		rename_field($config['cert'], 'name', 'descr');
2288
	if (is_array($config['crl']))
2289
		rename_field($config['crl'], 'name', 'descr');
2290 f2a86ca9 jim-p
}
2291 9734b054 Scott Ullrich
2292 d0dc2fd1 jim-p
function upgrade_075_to_076() {
2293 7d9b3d5e jim-p
	global $config;
2294
	$cron_item = array();
2295
	$cron_item['minute'] = "30";
2296
	$cron_item['hour'] = "12";
2297
	$cron_item['mday'] = "*";
2298
	$cron_item['month'] = "*";
2299
	$cron_item['wday'] = "*";
2300
	$cron_item['who'] = "root";
2301
	$cron_item['command'] = "/usr/bin/nice -n20 /etc/rc.update_urltables";
2302
	$config['cron']['item'][] = $cron_item;
2303 d0dc2fd1 jim-p
}
2304
2305 1916d34a Ermal
?>