Project

General

Profile

Download (69.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 791bcfd4 Bill Marquette
708
		$config['sysctl']['item'][19]['tunable'] = "hw.bce.tso_enable";
709 15864861 jim-p
		$config['sysctl']['item'][19]['descr'] =    "TCP Offload engine - BCE";
710 908c4eea sullrich
		$config['sysctl']['item'][19]['value'] =   "default";
711 06702ef7 Chris Buechler
		
712
		$config['sysctl']['item'][20]['tunable'] = "net.inet.ip.portrange.first";
713 15864861 jim-p
		$config['sysctl']['item'][20]['descr'] =    "Set the ephemeral port range starting port";
714 908c4eea sullrich
		$config['sysctl']['item'][20]['value'] =   "default";
715
716
		$config['sysctl']['item'][21]['tunable'] = "hw.syscons.kbd_reboot ";
717 15864861 jim-p
		$config['sysctl']['item'][21]['descr'] =    "Enables ctrl+alt+delete";
718 908c4eea sullrich
		$config['sysctl']['item'][21]['value'] =   "default";
719 06702ef7 Chris Buechler
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 da74e673 Seth Mos
		foreach ($config['vlans']['vlan'] as $id => $vlan) {
824
			$vlan['vlanif'] = "{$vlan['if']}_vlan{$vlan['tag']}";
825
			$config['vlans']['vlan'][$id] = $vlan;
826
			/* Make sure to update the interfaces section with the right name */
827
			foreach($iflist as $ifname) {
828
				if($config['interfaces'][$ifname]['if'] == "vlan{$id}") {
829
					$config['interfaces'][$ifname]['if'] = $vlan['vlanif'];
830
				}
831
			}
832
			
833
		}
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
				$ph1ent['interface'] = $tunnel['interface'];
922
				$ph1ent['remote-gateway'] = $tunnel['remote-gateway'];
923
				$ph1ent['descr'] = $tunnel['descr'];
924
925
				$ph1ent['mode'] = $tunnel['p1']['mode'];
926
927
				if (isset($tunnel['p1']['myident']['myaddress']))
928
					$ph1ent['myid_type'] = "myaddress";
929
				if (isset($tunnel['p1']['myident']['address'])) {
930
					$ph1ent['myid_type'] = "address";
931
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['address'];
932
				}
933
				if (isset($tunnel['p1']['myident']['fqdn'])) {
934
					$ph1ent['myid_type'] = "fqdn";
935
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['fqdn'];
936
				}
937 dfa11031 jim-p
				if (isset($tunnel['p1']['myident']['ufqdn'])) {
938 791bcfd4 Bill Marquette
					$ph1ent['myid_type'] = "user_fqdn";
939 dfa11031 jim-p
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['ufqdn'];
940 791bcfd4 Bill Marquette
				}
941
				if (isset($tunnel['p1']['myident']['asn1dn'])) {
942
					$ph1ent['myid_type'] = "asn1dn";
943
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['asn1dn'];
944
				}
945
				if (isset($tunnel['p1']['myident']['dyn_dns'])) {
946
					$ph1ent['myid_type'] = "dyn_dns";
947
					$ph1ent['myid_data'] = $tunnel['p1']['myident']['dyn_dns'];
948
				}
949
950
				$ph1ent['peerid_type'] = "peeraddress";
951
952
				switch ($tunnel['p1']['encryption-algorithm']) {
953
					case "des":
954
					$ph1alg = array( 'name' => 'des' );
955
					break;
956
					case "3des":
957
					$ph1alg = array( 'name' => '3des' );
958
					break;
959
					case "blowfish":
960
					$ph1alg = array( 'name' => 'blowfish', 'keylen' => '128'  );
961
					break;
962
					case "cast128":
963
					$ph1alg = array( 'name' => 'cast128' );
964
					break;
965
					case "rijndael":
966
					$ph1alg = array( 'name' => 'aes', 'keylen' => '128' );
967
					break;
968
					case "rijndael 256":
969
					$ph1alg = array( 'name' => 'aes', 'keylen' => '256' );
970
					break;
971
				}
972
973
				$ph1ent['encryption-algorithm'] = $ph1alg;
974
				$ph1ent['hash-algorithm'] = $tunnel['p1']['hash-algorithm'];
975
				$ph1ent['dhgroup'] = $tunnel['p1']['dhgroup'];
976
				$ph1ent['lifetime'] = $tunnel['p1']['lifetime'];
977
				$ph1ent['authentication_method'] = $tunnel['p1']['authentication_method'];
978
979
				if (isset($tunnel['p1']['pre-shared-key']))
980
					$ph1ent['pre-shared-key'] = $tunnel['p1']['pre-shared-key'];
981
				if (isset($tunnel['p1']['cert']))
982
					$ph1ent['cert'] = $tunnel['p1']['cert'];
983
				if (isset($tunnel['p1']['peercert']))
984
					$ph1ent['peercert'] = $tunnel['p1']['peercert'];
985
				if (isset($tunnel['p1']['private-key']))
986
					$ph1ent['private-key'] = $tunnel['p1']['private-key'];
987
988
				$ph1ent['nat_traversal'] = "on";
989
				$ph1ent['dpd_enable'] = 1;
990
				$ph1ent['dpd_delay'] = 10;
991
				$ph1ent['dpd_maxfail'] = 5;
992
993
				$a_phase1[] = $ph1ent;
994
			}
995
996
			/* build new phase2 entry */
997
998
			$ph2ent = array();
999
1000
			$ph2ent['ikeid'] = $ph1ent['ikeid'];
1001
1002
			if (isset($tunnel['disabled']))
1003
				$ph1ent['disabled'] = $tunnel['disabled'];
1004
1005
			$ph2ent['descr'] = "phase2 for ".$tunnel['descr'];
1006
1007
			$type = "lan";
1008
			if ($tunnel['local-subnet']['network'])
1009
				$type = $tunnel['local-subnet']['network'];
1010
			if ($tunnel['local-subnet']['address']) {
1011
				list($address,$netbits) = explode("/",$tunnel['local-subnet']['address']);
1012
				if (is_null($netbits))
1013
					$type = "address";
1014
				else
1015
					$type = "network";
1016
			}
1017
1018
			switch ($type) {
1019
				case "address":
1020
				$ph2ent['localid'] = array('type' => $type,'address' => $address);
1021
				break;
1022
				case "network":
1023
				$ph2ent['localid'] = array('type' => $type,'address' => $address,'netbits' => $netbits);
1024
				break;
1025
				default:
1026
				$ph2ent['localid'] = array('type' => $type);
1027
				break;
1028
			}
1029
1030
			list($address,$netbits) = explode("/",$tunnel['remote-subnet']);
1031
			$ph2ent['remoteid'] = array('type' => 'network','address' => $address,'netbits' => $netbits);
1032
1033
			$ph2ent['protocol'] = $tunnel['p2']['protocol'];
1034
1035
			$aes_count = 0;
1036
			foreach( $tunnel['p2']['encryption-algorithm-option'] as $tunalg ) {
1037
				$aes_found = false;
1038
				switch ($tunalg) {
1039
					case "des":
1040
					$ph2alg = array( 'name' => 'des' );
1041
					break;
1042
					case "3des":
1043
					$ph2alg = array( 'name' => '3des' );
1044
					break;
1045
					case "blowfish":
1046
					$ph2alg = array( 'name' => 'blowfish', 'keylen' => 'auto'  );
1047
					break;
1048
					case "cast128":
1049
					$ph2alg = array( 'name' => 'cast128' );
1050
					break;
1051
					case "rijndael":
1052
					case "rijndael 256":
1053
					$ph2alg = array( 'name' => 'aes', 'keylen' => 'auto' );
1054
					$aes_found = true;
1055
					$aes_count++;
1056
					break;
1057
				}
1058
1059
				if( !$aes_found || ($aes_count < 2))
1060
					$ph2ent['encryption-algorithm-option'][] = $ph2alg;
1061
			}
1062
1063
			$ph2ent['hash-algorithm-option'] = $tunnel['p2']['hash-algorithm-option'];
1064
			$ph2ent['pfsgroup'] = $tunnel['p2']['pfsgroup'];
1065
			$ph2ent['lifetime'] = $tunnel['p2']['lifetime'];
1066
1067 87e07f52 mgrooms
			if (isset($tunnel['pinghost']['pinghost']))
1068
				$ph2ent['pinghost'] = $tunnel['pinghost'];
1069
1070 791bcfd4 Bill Marquette
			$a_phase2[] = $ph2ent;
1071
		}
1072
1073
		unset($config['ipsec']['tunnel']);
1074
		$config['ipsec']['phase1'] = $a_phase1;
1075
		$config['ipsec']['phase2'] = $a_phase2;
1076
	}
1077
}
1078
1079
1080
function upgrade_047_to_048() {
1081
	global $config;
1082 e31c90fc Ermal
	if (!empty($config['dyndns'])) {
1083
		$config['dyndnses'] = array();
1084
		$config['dyndnses']['dyndns'] = array();
1085 246aceaa smos
		if(isset($config['dyndns'][0]['enable'])) {
1086
			$tempdyn = array();
1087
			$tempdyn['enable'] = isset($config['dyndns'][0]['enable']);
1088
			$tempdyn['type'] = $config['dyndns'][0]['type'];
1089
			$tempdyn['wildcard'] = isset($config['dyndns'][0]['wildcard']);
1090
			$tempdyn['usernamefld'] = $config['dyndns'][0]['username'];
1091
			$tempdyn['passwordfld'] = $config['dyndns'][0]['password'];
1092
			$tempdyn['host'] = $config['dyndns'][0]['host'];
1093
			$tempdyn['mx'] = $config['dyndns'][0]['mx'];		
1094
			$tempdyn['interface'] = "wan";
1095
			$tempdyn['descr'] = "Upgraded Dyndns {$tempdyn['type']}";
1096
			$config['dyndnses']['dyndns'][] = $tempdyn;
1097
		}
1098 791bcfd4 Bill Marquette
		unset($config['dyndns']);
1099
	}		
1100 e31c90fc Ermal
	if (!empty($config['dnsupdate'])) {
1101 2b1b78e6 jim-p
		$pconfig = $config['dnsupdate'][0];
1102
		if (!$pconfig['ttl'])
1103
			$pconfig['ttl'] = 60;
1104
		if (!$pconfig['keytype'])
1105
			$pconfig['keytype'] = "zone";
1106 e31c90fc Ermal
		$pconfig['interface'] = "wan";
1107 791bcfd4 Bill Marquette
		$config['dnsupdates']['dnsupdate'][] = $pconfig;
1108
		unset($config['dnsupdate']);
1109
	}
1110
1111
	if (is_array($config['pppoe'])) {
1112
		$pconfig = array();
1113
		$pconfig['username'] = $config['pppoe']['username'];
1114
		$pconfig['password'] = $config['pppoe']['password'];
1115
		$pconfig['provider'] = $config['pppoe']['provider'];
1116
		$pconfig['ondemand'] = isset($config['pppoe']['ondemand']);
1117
		$pconfig['timeout'] = $config['pppoe']['timeout'];
1118
		unset($config['pppoe']);
1119
		$config['interfaces']['wan']['pppoe_username'] = $pconfig['username'];
1120
		$config['interfaces']['wan']['pppoe_password'] = $pconfig['password'];
1121
		$config['interfaces']['wan']['provider'] = $pconfig['provider'];
1122
		$config['interfaces']['wan']['ondemand'] = isset($pconfig['ondemand']);
1123
		$config['interfaces']['wan']['timeout'] = $pconfig['timeout'];
1124
	}
1125
	if (is_array($config['pptp'])) {
1126
		$pconfig = array();
1127
		$pconfig['username'] = $config['pptp']['username'];
1128
		$pconfig['password'] = $config['pptp']['password'];
1129
		$pconfig['provider'] = $config['pptp']['provider'];
1130
		$pconfig['ondemand'] = isset($config['pptp']['ondemand']);
1131
		$pconfig['timeout'] = $config['pptp']['timeout'];
1132
		unset($config['pptp']);
1133
		$config['interfaces']['wan']['pptp_username'] = $pconfig['username'];
1134
		$config['interfaces']['wan']['pptp_password'] = $pconfig['password'];
1135
		$config['interfaces']['wan']['provider'] = $pconfig['provider'];
1136
		$config['interfaces']['wan']['ondemand'] = isset($pconfig['ondemand'] );
1137
		$config['interfaces']['wan']['timeout'] = $pconfig['timeout'];
1138
	}
1139
}
1140
1141
1142
function upgrade_048_to_049() {
1143
	global $config;
1144
	/* setup new all users group */
1145
	$all = array();
1146
	$all['name'] = "all";
1147
	$all['description'] = "All Users";
1148
	$all['scope'] = "system";
1149
	$all['gid'] = 1998;
1150
	$all['member'] = array();
1151
1152
	if (!is_array($config['system']['group']))
1153
		$config['system']['group'] = array();
1154
1155
	/* work around broken uid assignments */
1156
	$config['system']['nextuid'] = 2000;
1157
	foreach ($config['system']['user'] as & $user) {
1158
		if (isset($user['uid']) && !$user['uid'])
1159
			continue;
1160
		$user['uid'] = $config['system']['nextuid']++;
1161
	}
1162
1163
	/* work around broken gid assignments */
1164
	$config['system']['nextgid'] = 2000;
1165
	foreach ($config['system']['group'] as & $group) {
1166
		if ($group['name'] == $g['admin_group'])
1167
			$group['gid'] = 1999;
1168
		else
1169
			$group['gid'] = $config['system']['nextgid']++;
1170
	}
1171
1172
	/* build group membership information */
1173
	foreach ($config['system']['group'] as & $group) {
1174
		$group['member'] = array();
1175
		foreach ($config['system']['user'] as & $user) {
1176
			$groupnames = explode(",", $user['groupname']);
1177
			if (in_array($group['name'],$groupnames))
1178
				$group['member'][] = $user['uid'];
1179
		}
1180
	}
1181
1182
	/* reset user group information */
1183
	foreach ($config['system']['user'] as & $user) {
1184
		unset($user['groupname']);
1185
		$all['member'][] = $user['uid'];
1186
	}
1187
1188
	/* reset group scope information */
1189
	foreach ($config['system']['group'] as & $group)
1190
		if ($group['name'] != $g['admin_group'])
1191
		$group['scope'] = "user";
1192
1193
	/* insert new all group */
1194
	$groups = Array();
1195
	$groups[] = $all;
1196
	$groups = array_merge($config['system']['group'],$groups);
1197
	$config['system']['group'] = $groups;
1198
}
1199
1200
1201
function upgrade_049_to_050() {
1202
	global $config;
1203
	/* update user privileges */
1204
	foreach ($config['system']['user'] as & $user) {
1205
		$privs = array();
1206
		if (!is_array($user['priv'])) {
1207
			unset($user['priv']);
1208
			continue;
1209
		}
1210
		foreach ($user['priv'] as $priv) {
1211
			switch($priv['id']) {
1212
				case "hasshell":
1213
				$privs[] = "user-shell-access";
1214
				break;
1215
				case "copyfiles":
1216
				$privs[] = "user-copy-files";
1217
				break;
1218
			}
1219
		}
1220
		$user['priv'] = $privs;
1221
	}
1222
1223
	/* update group privileges */
1224
	foreach ($config['system']['group'] as & $group) {
1225
		$privs = array();
1226
		if (!is_array($group['pages'])) {
1227
			unset($group['pages']);
1228
			continue;
1229
		}
1230
		foreach ($group['pages'] as $page) {
1231
			$priv = map_page_privname($page);
1232
			if ($priv)
1233
				$privs[] = $priv;
1234
		}
1235
		unset($group['pages']);
1236
		$group['priv'] = $privs;
1237
	}
1238
1239
	/* sync all local account information */
1240
	local_sync_accounts();
1241
}
1242
1243
1244
function upgrade_050_to_051() {
1245
	global $config;
1246
	$pconfig = array();
1247 15864861 jim-p
	$pconfig['descr'] = "Set to 0 to disable filtering on the incoming and outgoing member interfaces.";
1248 791bcfd4 Bill Marquette
	$pconfig['tunable'] = "net.link.bridge.pfil_member";
1249
	$pconfig['value'] = "1";
1250
	$config['sysctl']['item'][] = $pconfig;
1251
	$pconfig = array();
1252 15864861 jim-p
	$pconfig['descr'] = "Set to 1 to enable filtering on the bridge interface";
1253 791bcfd4 Bill Marquette
	$pconfig['tunable'] = "net.link.bridge.pfil_bridge";
1254
	$pconfig['value'] = "0";
1255
	$config['sysctl']['item'][] = $pconfig;
1256
1257
	unset($config['bridge']);
1258
1259
	$convert_bridges = false;
1260
	foreach($config['interfaces'] as $intf) {
1261
		if (isset($intf['bridge']) && $intf['bridge'] <> "") {
1262
			$config['bridges'] = array();
1263
			$config['bridges']['bridged'] = array();
1264
			$convert_bridges = true;
1265
			break;
1266
		}
1267
	}
1268
	if ($convert_bridges == true) {
1269
		$i = 0;
1270
		foreach ($config['interfaces'] as $ifr => &$intf) {
1271
			if (isset($intf['bridge']) && $intf['bridge'] <> "") {
1272
				$nbridge = array();
1273
				$nbridge['members'] = "{$ifr},{$intf['bridge']}";
1274
				$nbridge['descr'] = "Converted bridged {$ifr}";
1275
				$nbridge['bridgeif'] = "bridge{$i}";
1276
				$config['bridges']['bridged'][] = $nbridge;
1277
				unset($intf['bridge']);
1278
				$i++;
1279
			}
1280
		}
1281
	}
1282
}
1283
1284
1285
function upgrade_051_to_052() {
1286
	global $config;
1287
	$config['openvpn'] = array();
1288 9ad72e5e jim-p
	if (!is_array($config['ca']))
1289
		$config['ca'] = array();
1290
	if (!is_array($config['cert']))
1291
		$config['cert'] = array();
1292 791bcfd4 Bill Marquette
1293
	$vpnid = 1;
1294
1295
	/* openvpn server configurations */
1296
	if (is_array($config['installedpackages']['openvpnserver'])) {
1297
		$config['openvpn']['openvpn-server'] = array();
1298
1299
		$index = 1;
1300
		foreach($config['installedpackages']['openvpnserver']['config'] as $server) {
1301
1302
			if (!is_array($server))
1303
				continue;
1304
1305
			if ($server['auth_method'] == "pki") {
1306
1307
				/* create ca entry */
1308
				$ca = array();
1309
				$ca['refid'] = uniqid();
1310 f2a86ca9 jim-p
				$ca['descr'] = "OpenVPN Server CA #{$index}";
1311 791bcfd4 Bill Marquette
				$ca['crt'] = $server['ca_cert'];
1312 9ad72e5e jim-p
				$config['ca'][] = $ca;
1313 791bcfd4 Bill Marquette
1314
				/* create ca reference */
1315
				unset($server['ca_cert']);
1316
				$server['caref'] = $ca['refid'];
1317
1318 47319bfb jim-p
				/* create a crl entry if needed */
1319
				if (!empty($server['crl'])) {
1320
					$crl = array();
1321
					$crl['refid'] = uniqid();
1322
					$crl['descr'] = "Imported OpenVPN CRL #{$index}";
1323
					$crl['caref'] = $ca['refid'];
1324
					$crl['text'] = $server['crl'];
1325 90e64fad Warren Baker
					if(!is_array($config['crl']))
1326
						$config['crl'] = array();
1327 fc3e88f1 jim-p
					$config['crl'][] = $crl;
1328 47319bfb jim-p
					$server['crlref'] = $crl['refid'];
1329
				}
1330
				unset($server['crl']);
1331
1332 791bcfd4 Bill Marquette
				/* create cert entry */
1333
				$cert = array();
1334
				$cert['refid'] = uniqid();
1335 f2a86ca9 jim-p
				$cert['descr'] = "OpenVPN Server Certificate #{$index}";
1336 791bcfd4 Bill Marquette
				$cert['crt'] = $server['server_cert'];
1337
				$cert['prv'] = $server['server_key'];
1338 9ad72e5e jim-p
				$config['cert'][] = $cert;
1339 791bcfd4 Bill Marquette
1340
				/* create cert reference */
1341
				unset($server['server_cert']);
1342
				unset($server['server_key']);
1343
				$server['certref'] = $cert['refid'];
1344
1345
				$index++;
1346
			}
1347
1348
			/* determine operational mode */
1349
			if ($server['auth_method'] == 'pki') {
1350
				if($server['nopool']) {
1351
					$server['mode'] = "p2p_tls";
1352
				} else {
1353
					$server['mode'] = "server_tls";
1354
				}
1355
			} else {
1356
				$server['mode'] = "p2p_shared_key";
1357
			}
1358
			unset($server['auth_method']);
1359
1360
			/* modify configuration values */
1361
			$server['dh_length'] = 1024;
1362
			unset($server['dh_params']);
1363
			if (!$server['interface'])
1364
				$server['interface'] = 'wan';
1365
			$server['tunnel_network'] = $server['addresspool'];
1366
			unset($server['addresspool']);
1367 da831323 Ermal Lu?i
			if (isset($server['use_lzo'])) {
1368 8b666514 jim-p
				$server['compression'] = "on";
1369 da831323 Ermal Lu?i
				unset($server['use_lzo']);
1370
			}
1371 791bcfd4 Bill Marquette
			if ($server['nopool'])
1372
				$server['pool_enable'] = false;
1373
			else
1374
				$server['pool_enable'] = "yes";
1375
			unset($server['nopool']);
1376
			$server['dns_domain'] = $server['dhcp_domainname'];
1377
			unset($server['dhcp_domainname']);
1378
			$server['dns_server1'] = $server['dhcp_dns'];
1379
			unset($server['dhcp_dns']);
1380
			$server['ntp_server1'] = $server['dhcp_ntp'];
1381
			unset($server['dhcp_ntp']);
1382
			if ($server['dhcp_nbtdisable'])
1383
				$server['netbios_enable'] = false;
1384
			else
1385
				$server['netbios_enable'] = "yes";
1386
			unset($server['dhcp_nbtdisable']);
1387
			$server['netbios_ntype'] = $server['dhcp_nbttype'];
1388
			unset($server['dhcp_nbttype']);
1389
			$server['netbios_scope'] = $server['dhcp_nbtscope'];
1390
			unset($server['dhcp_nbtscope']);
1391
			$server['nbdd_server1'] = $server['dhcp_nbdd'];
1392
			unset($server['dhcp_nbdd']);
1393
			$server['wins_server1'] = $server['dhcp_wins'];
1394
			unset($server['dhcp_wins']);
1395
1396 763a1b52 jim-p
			if (!empty($server['disable']))
1397
				$server['disable'] = true;
1398
			else
1399
				unset($server['disable']);
1400
1401 791bcfd4 Bill Marquette
			/* allocate vpnid */
1402
			$server['vpnid'] = $vpnid++;
1403
1404 4f1ebacb Ermal
			if (!empty($server['custom_options'])) {
1405
				$cstmopts = array();
1406
				$tmpcstmopts = explode(";", $server['custom_options']);
1407
				$assigned = false;
1408
				$tmpstr = "";
1409
				foreach ($tmpcstmopts as $tmpcstmopt) {
1410
					$tmpstr = str_replace(" ", "", $tmpcstmopt);
1411
					if (substr($tmpstr,0 ,6) == "devtun") {
1412
						$assigned = true;
1413
						continue;
1414 8fd0badd Ermal
					} else if (substr($tmpstr, 0, 5) == "local") {
1415
						$localip = substr($tmpstr, 6);
1416
						$server['ipaddr'] = str_replace("\n", "", $localip);
1417 4f1ebacb Ermal
					} else
1418
						$cstmopts[] = $tmpcstmopt;
1419
				}
1420
				$server['custom_options'] = implode(";", $cstmopts);
1421
				if ($assigned == true) {
1422
					$realif = substr($tmpstr, 3);
1423
					foreach ($config['interfaces'] as $iface => $cfgif) {
1424
						if ($cfgif['if'] == $realif) {
1425
							$config['interfaces'][$iface]['if'] = "ovpns{$server['vpnid']}";
1426
							break;
1427
						}
1428
					}
1429
				}
1430
			}
1431
1432 791bcfd4 Bill Marquette
			$config['openvpn']['openvpn-server'][] = $server;
1433
		}
1434
		unset($config['installedpackages']['openvpnserver']);
1435
	}
1436
1437
	/* openvpn client configurations */
1438
	if (is_array($config['installedpackages']['openvpnclient'])) {
1439
		$config['openvpn']['openvpn-client'] = array();
1440
1441
		$index = 1;
1442
		foreach($config['installedpackages']['openvpnclient']['config'] as $client) {
1443
1444
			if (!is_array($client))
1445
				continue;
1446
1447
			if ($client['auth_method'] == "pki") {
1448
1449
				/* create ca entry */
1450
				$ca = array();
1451
				$ca['refid'] = uniqid();
1452 f2a86ca9 jim-p
				$ca['descr'] = "OpenVPN Client CA #{$index}";
1453 791bcfd4 Bill Marquette
				$ca['crt'] = $client['ca_cert'];
1454
				$ca['crl'] = $client['crl'];
1455 9ad72e5e jim-p
				$config['ca'][] = $ca;
1456 791bcfd4 Bill Marquette
1457
				/* create ca reference */
1458
				unset($client['ca_cert']);
1459
				unset($client['crl']);
1460
				$client['caref'] = $ca['refid'];
1461
1462
				/* create cert entry */
1463
				$cert = array();
1464
				$cert['refid'] = uniqid();
1465 f2a86ca9 jim-p
				$cert['descr'] = "OpenVPN Client Certificate #{$index}";
1466 791bcfd4 Bill Marquette
				$cert['crt'] = $client['client_cert'];
1467
				$cert['prv'] = $client['client_key'];
1468 9ad72e5e jim-p
				$config['cert'][] = $cert;
1469 791bcfd4 Bill Marquette
1470
				/* create cert reference */
1471
				unset($client['client_cert']);
1472
				unset($client['client_key']);
1473
				$client['certref'] = $cert['refid'];
1474
1475
				$index++;
1476
			}
1477
1478
			/* determine operational mode */
1479
			if ($client['auth_method'] == 'pki')
1480
				$client['mode'] = "p2p_tls";
1481
			else
1482
				$client['mode'] = "p2p_shared_key";
1483
			unset($client['auth_method']);
1484
1485
			/* modify configuration values */
1486
			if (!$client['interface'])
1487
				$client['interface'] = 'wan';
1488
			$client['tunnel_network'] = $client['interface_ip'];
1489
			unset($client['interface_ip']);
1490
			$client['server_addr'] = $client['serveraddr'];
1491
			unset($client['serveraddr']);
1492
			$client['server_port'] = $client['serverport'];
1493
			unset($client['serverport']);
1494
			$client['proxy_addr'] = $client['poxy_hostname'];
1495
			unset($client['proxy_addr']);
1496 da831323 Ermal Lu?i
			if (isset($client['use_lzo'])) {
1497 8b666514 jim-p
				$client['compression'] = "on";
1498 da831323 Ermal Lu?i
				unset($client['use_lzo']);
1499
			}
1500 791bcfd4 Bill Marquette
			$client['resolve_retry'] = $client['infiniteresolvretry'];
1501
			unset($client['infiniteresolvretry']);
1502
1503
			/* allocate vpnid */
1504
			$client['vpnid'] = $vpnid++;
1505
1506 4f1ebacb Ermal
			if (!empty($client['custom_options'])) {
1507
				$cstmopts = array();
1508
				$tmpcstmopts = explode(";", $client['custom_options']);
1509
				$assigned = false;
1510
				$tmpstr = "";
1511
				foreach ($tmpcstmopts as $tmpcstmopt) {
1512
					$tmpstr = str_replace(" ", "", $tmpcstmopt);
1513
					if (substr($tmpstr,0 ,6) == "devtun") {
1514
						$assigned = true;
1515
						continue;
1516 8fd0badd Ermal
					} else if (substr($tmpstr, 0, 5) == "local") {
1517
                                                $localip = substr($tmpstr, 6);
1518
                                                $client['ipaddr'] = str_replace("\n", "", $localip);
1519 4f1ebacb Ermal
					} else
1520
						$cstmopts[] = $tmpcstmopt;
1521
				}
1522
				$client['custom_options'] = implode(";", $cstmopts);
1523
				if ($assigned == true) {
1524
					$realif = substr($tmpstr, 3);
1525
					foreach ($config['interfaces'] as $iface => $cfgif) {
1526
						if ($cfgif['if'] == $realif) {
1527
							$config['interfaces'][$iface]['if'] = "ovpnc{$client['vpnid']}";
1528
							break;
1529
						}
1530
					}
1531
				}
1532
			}
1533
1534 763a1b52 jim-p
			if (!empty($client['disable']))
1535
				$client['disable'] = true;
1536
			else
1537
				unset($client['disable']);
1538
1539 791bcfd4 Bill Marquette
			$config['openvpn']['openvpn-client'][] = $client;
1540
		}
1541
1542
		unset($config['installedpackages']['openvpnclient']);
1543
	}
1544
1545
	/* openvpn client specific configurations */
1546
	if (is_array($config['installedpackages']['openvpncsc'])) {
1547
		$config['openvpn']['openvpn-csc'] = array();
1548
1549
		foreach($config['installedpackages']['openvpncsc']['config'] as $csc) {
1550
1551
			if (!is_array($csc))
1552
				continue;
1553
1554
			/* modify configuration values */
1555
			$csc['common_name'] = $csc['commonname'];
1556
			unset($csc['commonname']);
1557
			$csc['tunnel_network'] = $csc['ifconfig_push'];
1558
			unset($csc['ifconfig_push']);
1559
			$csc['dns_domain'] = $csc['dhcp_domainname'];
1560
			unset($csc['dhcp_domainname']);
1561
			$csc['dns_server1'] = $csc['dhcp_dns'];
1562
			unset($csc['dhcp_dns']);
1563
			$csc['ntp_server1'] = $csc['dhcp_ntp'];
1564
			unset($csc['dhcp_ntp']);
1565
			if ($csc['dhcp_nbtdisable'])
1566
				$csc['netbios_enable'] = false;
1567
			else
1568
				$csc['netbios_enable'] = "yes";
1569
			unset($csc['dhcp_nbtdisable']);
1570
			$csc['netbios_ntype'] = $csc['dhcp_nbttype'];
1571
			unset($csc['dhcp_nbttype']);
1572
			$csc['netbios_scope'] = $csc['dhcp_nbtscope'];
1573
			unset($csc['dhcp_nbtscope']);
1574
			$csc['nbdd_server1'] = $csc['dhcp_nbdd'];
1575
			unset($csc['dhcp_nbdd']);
1576
			$csc['wins_server1'] = $csc['dhcp_wins'];
1577
			unset($csc['dhcp_wins']);
1578
1579 1e68a58b jim-p
			if (!empty($csc['disable']))
1580
				$csc['disable'] = true;
1581
			else
1582
				unset($csc['disable']);
1583
1584 791bcfd4 Bill Marquette
			$config['openvpn']['openvpn-csc'][] = $csc;
1585
		}
1586
1587
		unset($config['installedpackages']['openvpncsc']);
1588
	}
1589
1590 c73bd8f0 Ermal Lu?i
	if (count($config['openvpn']['openvpn-server']) > 0 ||
1591
		count($config['openvpn']['openvpn-client']) > 0) {
1592
		$ovpnrule = array();
1593
                $ovpnrule['type'] = "pass";
1594
                $ovpnrule['interface'] = "openvpn";
1595
                $ovpnrule['statetype'] = "keep state";
1596
                $ovpnrule['source'] = array();
1597
                $ovpnrule['destination'] = array();
1598
                $ovpnrule['source']['any'] = true;
1599
                $ovpnrule['destination']['any'] = true;
1600
                $ovpnrule['descr'] = "Auto added OpenVPN rule from config upgrade.";
1601
		$config['filter']['rule'][] = $ovpnrule;
1602
	}
1603
1604 791bcfd4 Bill Marquette
	/*
1605
		* FIXME: hack to keep things working with no installedpackages
1606
		* or carp array in the configuration data.
1607
		*/
1608
	if (!is_array($config['installedpackages']))
1609
		$config['installedpackages'] = array();
1610
	if (!is_array($config['installedpackages']['carp']))
1611
		$config['installedpackages']['carp'] = array();
1612
1613
}
1614
1615
1616
function upgrade_052_to_053() {
1617
	global $config;
1618 9ad72e5e jim-p
	if (!is_array($config['ca']))
1619
		$config['ca'] = array();
1620
	if (!is_array($config['cert']))
1621
		$config['cert'] = array();
1622 791bcfd4 Bill Marquette
1623
	/* migrate advanced admin page webui ssl to certifcate mngr */
1624
	if ($config['system']['webgui']['certificate'] &&
1625
	$config['system']['webgui']['private-key']) {
1626
1627
		/* create cert entry */
1628
		$cert = array();
1629
		$cert['refid'] = uniqid();
1630 f2a86ca9 jim-p
		$cert['descr'] = "webConfigurator SSL Certificate";
1631 791bcfd4 Bill Marquette
		$cert['crt'] = $config['system']['webgui']['certificate'];
1632
		$cert['prv'] = $config['system']['webgui']['private-key'];
1633 9ad72e5e jim-p
		$config['cert'][] = $cert;
1634 791bcfd4 Bill Marquette
1635
		/* create cert reference */
1636
		unset($config['system']['webgui']['certificate']);
1637
		unset($config['system']['webgui']['private-key']);
1638
		$config['system']['webgui']['ssl-certref'] = $cert['refid'];
1639
	}
1640
1641
	/* migrate advanced admin page ssh keys to user manager */
1642
	if ($config['system']['ssh']['authorizedkeys']) {
1643
		$admin_user =& getUserEntryByUID(0);
1644
		$admin_user['authorizedkeys'] = $config['system']['ssh']['authorizedkeys'];
1645
		unset($config['system']['ssh']['authorizedkeys']);
1646
	}
1647
}
1648
1649
1650
function upgrade_053_to_054() {
1651
	global $config;
1652 38b5beaf sullrich
	if(is_array($config['load_balancer']['lbpool'])) {
1653
		$lbpool_arr = $config['load_balancer']['lbpool'];
1654 791bcfd4 Bill Marquette
		$lbpool_srv_arr = array();
1655
		$gateway_group_arr = array();
1656 816a5aff Seth Mos
		$gateways = return_gateways_array();
1657 d827f9cc smos
		if (! is_array($config['gateways']['gateway_item']))
1658 bf02c784 Ermal
			$config['gateways']['gateway_item'] = array();
1659 d827f9cc smos
1660 bf02c784 Ermal
		$a_gateways =& $config['gateways']['gateway_item'];
1661 791bcfd4 Bill Marquette
		foreach($lbpool_arr as $lbpool) {
1662
			if($lbpool['type'] == "gateway") {
1663
				$gateway_group['name'] = $lbpool['name'];
1664 e988813d jim-p
				$gateway_group['descr'] = $lbpool['descr'];
1665 791bcfd4 Bill Marquette
				$gateway_group['trigger'] = "down";
1666
				$gateway_group['item'] = array();
1667 cb945ced sullrich
				$i = 0;
1668 791bcfd4 Bill Marquette
				foreach($lbpool['servers'] as $member) {
1669
					$split = split("\|", $member);
1670
					$interface = $split[0];
1671 d9d4c637 Seth Mos
					$monitor = $split[1];
1672 2328dcc5 Seth Mos
					/* on static upgraded configuration we automatically prepend GW_ */
1673
					$static_name = "GW_" . strtoupper($interface);
1674 bf02c784 Ermal
					if(is_ipaddr($monitor)) {
1675 d30bbdd7 Seth Mos
						$interface = $static_name;
1676 318c1505 smos
						$config['interfaces'][$interface]['monitorip'] = $monitor;
1677 816a5aff Seth Mos
					}
1678 6ee1b7eb Seth Mos
					/* on failover increment tier. Else always assign 1 */
1679
					if($lbpool['behaviour'] == "failover") {
1680
						$i++;
1681
					} else {
1682
						$i = 1;
1683
					}
1684 791bcfd4 Bill Marquette
					$gateway_group['item'][] = "$interface|$i";
1685
				}
1686
				$gateway_group_arr[] = $gateway_group;
1687
			} else {
1688
				$lbpool_srv_arr[] = $lbpool;
1689
			}
1690
		}
1691 38b5beaf sullrich
		$config['load_balancer']['lbpool'] = $lbpool_srv_arr;
1692 791bcfd4 Bill Marquette
		$config['gateways']['gateway_group'] = $gateway_group_arr;
1693
	}
1694
	// Unset lbpool if we no longer have any server pools
1695
	if (count($lbpool_srv_arr) == 0) {
1696 416ae3d6 Seth Mos
		if(empty($config['load_balancer'])) {
1697 0b5b4f32 Seth Mos
			unset($config['load_balancer']);
1698 92a2ceae Seth Mos
		} else {
1699
			unset($config['load_balancer']['lbpool']);
1700 0b5b4f32 Seth Mos
		}
1701 791bcfd4 Bill Marquette
	} else {
1702
		$config['load_balancer']['lbpool'] = $lbpool_srv_arr;
1703
	}
1704
	// Only set the gateway group array if we converted any
1705
	if (count($gateway_group_arr) != 0) {
1706
		$config['gateways']['gateway_group'] = $gateway_group_arr;
1707
	}
1708
}
1709
1710
1711
function upgrade_054_to_055() {
1712
	global $config;
1713 54f8bad0 Seth Mos
	global $g;
1714
1715 791bcfd4 Bill Marquette
	/* RRD files changed for quality, traffic and packets graphs */
1716 59cfe65d Ermal
	//ini_set("max_execution_time", "1800");
1717 791bcfd4 Bill Marquette
	/* convert traffic RRD file */
1718
	global $parsedcfg, $listtags;
1719
	$listtags = array("ds", "v", "rra", "row");
1720
1721
	$rrddbpath = "/var/db/rrd/";
1722
	$rrdtool = "/usr/bin/nice -n20 /usr/local/bin/rrdtool";
1723
1724
	$rrdinterval = 60;
1725
	$valid = $rrdinterval * 2;
1726
1727
	/* Asume GigE for now */
1728
	$downstream = 125000000;
1729
	$upstream = 125000000;
1730
1731
	/* build a list of quality databases */
1732
	/* roundtrip has become delay */
1733
	function divide_delay($delayval) {
1734
		$delayval = floatval($delayval);
1735
		$delayval = ($delayval / 1000);
1736
		$delayval = " ". sprintf("%1.10e", $delayval) ." ";
1737
		return $delayval;
1738
	}
1739
	/* the roundtrip times need to be divided by 1000 to get seconds, really */
1740
	$databases = array();
1741 4cb9abc3 jim-p
	chdir($rrddbpath);
1742
	$databases = glob("*-quality.rrd");
1743 791bcfd4 Bill Marquette
	rsort($databases);
1744
	foreach($databases as $database) {
1745
		$xmldump = "{$database}.old.xml";
1746
		$xmldumpnew = "{$database}.new.xml";
1747
1748 34834e7e jim-p
		if ($g['booting'])
1749
			echo "Migrate RRD database {$database} to new format \n";
1750 791bcfd4 Bill Marquette
		mwexec("$rrdtool tune {$rrddbpath}{$database} -r roundtrip:delay 2>&1");
1751
1752
		dump_rrd_to_xml("{$rrddbpath}/{$database}", "{$g['tmp_path']}/{$xmldump}");
1753
		$rrdoldxml = file_get_contents("{$g['tmp_path']}/{$xmldump}");
1754
		$rrdold = xml2array($rrdoldxml, 1, "tag");
1755
		$rrdold = $rrdold['rrd'];
1756
1757
		$i = 0;
1758
		foreach($rrdold['rra'] as $rra) {
1759
			$l = 0;
1760
			foreach($rra['database']['row'] as $row) {
1761
				$vnew = divide_delay($row['v'][1]);
1762
				$rrdold['rra'][$i]['database']['row'][$l]['v'][1] = $vnew;
1763
				$l++;
1764
			}
1765
			$i++;
1766
		}
1767
1768
		$rrdxml = dump_xml_config_raw($rrdold, "rrd");
1769
		file_put_contents("{$g['tmp_path']}/{$xmldumpnew}", $rrdxml);
1770
		mwexec("$rrdtool restore -f {$g['tmp_path']}/{$xmldumpnew} {$rrddbpath}/{$database} 2>&1");
1771
1772
	}
1773
	/* let apinger recreate required files */
1774
	setup_gateways_monitor();
1775
1776
	/* build a list of traffic and packets databases */
1777
	$databases = array();
1778 a87afa7c Seth Mos
	exec("cd $rrddbpath;/usr/bin/find *-traffic.rrd *-packets.rrd", $databases);
1779 791bcfd4 Bill Marquette
	rsort($databases);
1780
	foreach($databases as $database) {
1781
		$databasetmp = "{$database}.tmp";
1782
		$xmldump = "{$database}.old.xml";
1783
		$xmldumptmp = "{$database}.tmp.xml";
1784
		$xmldumpnew = "{$database}.new.xml";
1785
1786 34834e7e jim-p
		if ($g['booting'])
1787
			echo "Migrate RRD database {$database} to new format \n";
1788 791bcfd4 Bill Marquette
		/* rename DS source */
1789
		mwexec("$rrdtool tune {$rrddbpath}/{$database} -r in:inpass 2>&1");
1790
		mwexec("$rrdtool tune {$rrddbpath}/{$database} -r out:outpass 2>71");
1791
1792
		/* dump contents to xml and move database out of the way */
1793
		dump_rrd_to_xml("{$rrddbpath}/{$database}", "{$g['tmp_path']}/{$xmldump}");
1794
1795
		/* create new rrd database file */
1796
		$rrdcreate = "$rrdtool create {$g['tmp_path']}/{$databasetmp} --step $rrdinterval ";
1797
		$rrdcreate .= "DS:inpass:COUNTER:$valid:0:$downstream ";
1798
		$rrdcreate .= "DS:outpass:COUNTER:$valid:0:$upstream ";
1799
		$rrdcreate .= "DS:inblock:COUNTER:$valid:0:$downstream ";
1800
		$rrdcreate .= "DS:outblock:COUNTER:$valid:0:$upstream ";
1801
		$rrdcreate .= "RRA:AVERAGE:0.5:1:1000 ";
1802
		$rrdcreate .= "RRA:AVERAGE:0.5:5:1000 ";
1803
		$rrdcreate .= "RRA:AVERAGE:0.5:60:1000 ";
1804
		$rrdcreate .= "RRA:AVERAGE:0.5:720:3000 ";
1805
1806
		create_new_rrd("$rrdcreate");
1807
		/* create temporary xml from new RRD */
1808
		dump_rrd_to_xml("{$g['tmp_path']}/{$databasetmp}", "{$g['tmp_path']}/{$xmldumptmp}");
1809
1810
		$rrdoldxml = file_get_contents("{$g['tmp_path']}/{$xmldump}");
1811
		$rrdold = xml2array($rrdoldxml, 1, "tag");
1812
		$rrdold = $rrdold['rrd'];
1813
1814
		$rrdnewxml = file_get_contents("{$g['tmp_path']}/{$xmldumptmp}");
1815
		$rrdnew = xml2array($rrdnewxml, 1, "tag");
1816
		$rrdnew = $rrdnew['rrd'];
1817
1818
		/* remove any MAX RRA's. Not needed for traffic. */
1819
		$i = 0;
1820
		foreach ($rrdold['rra'] as $rra) {
1821
			if(trim($rra['cf']) == "MAX") {
1822
				unset($rrdold['rra'][$i]);
1823
			}
1824
			$i++;
1825
		}
1826
1827
		$rrdxmlarray = migrate_rrd_format($rrdold, $rrdnew);
1828
		$rrdxml = dump_xml_config_raw($rrdxmlarray, "rrd");
1829
		file_put_contents("{$g['tmp_path']}/{$xmldumpnew}", $rrdxml);
1830
		mwexec("$rrdtool restore -f {$g['tmp_path']}/{$xmldumpnew} {$rrddbpath}/{$database} 2>&1");
1831
1832
	}
1833
	enable_rrd_graphing();
1834 34834e7e jim-p
	if ($g['booting'])
1835
		echo "Updating configuration...";
1836 791bcfd4 Bill Marquette
}
1837
1838
1839
function upgrade_055_to_056() {
1840
	global $config;
1841
1842 9ad72e5e jim-p
	if (!is_array($config['ca']))
1843
		$config['ca'] = array();
1844
	if (!is_array($config['cert']))
1845
		$config['cert'] = array();
1846 791bcfd4 Bill Marquette
1847
	/* migrate ipsec ca's to cert manager */
1848
	if (is_array($config['ipsec']['cacert'])) {
1849
		foreach($config['ipsec']['cacert'] as & $cacert) {
1850
			$ca = array();
1851
			$ca['refid'] = uniqid();
1852
			if (is_array($cacert['cert']))
1853
				$ca['crt'] = $cacert['cert'][0];
1854
			else
1855
				$ca['crt'] = $cacert['cert'];
1856 f2a86ca9 jim-p
			$ca['descr'] = $cacert['ident'];
1857 9ad72e5e jim-p
			$config['ca'][] = $ca;
1858 791bcfd4 Bill Marquette
		}
1859
		unset($config['ipsec']['cacert']);
1860
	}
1861
1862
	/* migrate phase1 certificates to cert manager */
1863
	if (is_array($config['ipsec']['phase1'])) {
1864
		foreach($config['ipsec']['phase1'] as & $ph1ent) {
1865
			$cert = array();
1866
			$cert['refid'] = uniqid();
1867 f2a86ca9 jim-p
			$cert['descr'] = "IPsec Peer {$ph1ent['remote-gateway']} Certificate";
1868 791bcfd4 Bill Marquette
			if (is_array($ph1ent['cert']))
1869
				$cert['crt'] = $ph1ent['cert'][0];
1870
			else
1871
				$cert['crt'] = $ph1ent['cert'];
1872
			$cert['prv'] = $ph1ent['private-key'];
1873 9ad72e5e jim-p
			$config['cert'][] = $cert;
1874 791bcfd4 Bill Marquette
			$ph1ent['certref'] = $cert['refid'];
1875
			if ($ph1ent['cert'])
1876
				unset($ph1ent['cert']);
1877
			if ($ph1ent['private-key'])
1878
				unset($ph1ent['private-key']);
1879
			if ($ph1ent['peercert'])
1880
				unset($ph1ent['peercert']);
1881
		}
1882
	}
1883
}
1884
1885
1886
function upgrade_056_to_057() {
1887
	global $config;
1888
	/* migrate captivate portal to user manager */
1889
	if (is_array($config['captiveportal']['user'])) {
1890
		foreach($config['captiveportal']['user'] as $user) {
1891
			// avoid user conflicts
1892
			if ($config['system']['user'][$user['name']])
1893
				continue;
1894
			$user['scope'] = "user";
1895
			if (isset($user['expirationdate'])) {
1896
				$user['expires'] = $user['expirationdate'];
1897
				unset($user['expirationdate']);
1898
			}
1899
			if (isset($user['password'])) {
1900
				$user['md5-hash'] = $user['password'];
1901
				unset($user['password']);
1902
			}
1903
			$config['system']['user'][] = $user;
1904
		}
1905
		unset($config['captiveportal']['user']);
1906
	}
1907
}
1908 4b96b367 mgrooms
1909
function upgrade_057_to_058() {
1910
	global $config;
1911
	/* set all phase2 entries to tunnel mode */
1912
	if (is_array($config['ipsec']['phase2']))
1913
		foreach($config['ipsec']['phase2'] as & $ph2ent)
1914
			$ph2ent['mode'] = 'tunnel';
1915
}
1916 60120e37 Ermal Lu?i
1917
function upgrade_058_to_059() {
1918
	global $config;
1919
1920
	if (is_array($config['schedules']['schedule'])) {
1921
		foreach ($config['schedules']['schedule'] as & $schedl)
1922
			$schedl['schedlabel'] = uniqid();
1923
	}
1924
}
1925 2523c923 Seth Mos
1926
function upgrade_059_to_060() {
1927 fcf5afa0 Seth Mos
	global $config;
1928 a0588fad Scott Ullrich
	require_once("/etc/inc/certs.inc");
1929 9ad72e5e jim-p
	if (is_array($config['ca'])) {
1930 2cf6ddcb Nigel Graham
		/* Locate issuer for all CAs */
1931 9ad72e5e jim-p
		foreach ($config['ca'] as & $ca) {
1932 2cf6ddcb Nigel Graham
			$subject = cert_get_subject($ca['crt']);
1933
			$issuer = cert_get_issuer($ca['crt']);
1934
			if($issuer <> $subject) {
1935
				$issuer_crt =& lookup_ca_by_subject($issuer);
1936
				if($issuer_crt)
1937
					$ca['caref'] = $issuer_crt['refid'];
1938
			}
1939
		}
1940
		
1941
		/* Locate issuer for all certificates */
1942 9ad72e5e jim-p
		if (is_array($config['cert'])) {
1943
			foreach ($config['cert'] as & $cert) {
1944 2cf6ddcb Nigel Graham
				$subject = cert_get_subject($cert['crt']);
1945
				$issuer = cert_get_issuer($cert['crt']);
1946
				if($issuer <> $subject) {
1947
					$issuer_crt =& lookup_ca_by_subject($issuer);
1948
					if($issuer_crt)
1949
						$cert['caref'] = $issuer_crt['refid'];
1950
				}
1951
			}
1952 9d3dab70 Scott Ullrich
		}
1953 2cf6ddcb Nigel Graham
	}
1954
}
1955 d43ad788 Scott Ullrich
1956 6a688547 Ermal
function upgrade_060_to_061() {
1957
	global $config;
1958 3cfa11c2 Scott Ullrich
1959 6a688547 Ermal
	if (is_array($config['interfaces']['wan']))
1960
		$config['interfaces']['wan']['enable'] = true;
1961
	if (is_array($config['interfaces']['lan']))
1962
		$config['interfaces']['lan']['enable'] = true;
1963
}
1964 3cfa11c2 Scott Ullrich
1965 59ecde49 Renato Botelho
function upgrade_061_to_062() {
1966
	global $config;
1967
1968
	/* Convert NAT port forwarding rules */
1969
	if (is_array($config['nat']['rule'])) {
1970
		$a_nat = &$config['nat']['rule'];
1971
1972
		foreach ($a_nat as &$natent) {
1973
			$natent['disabled'] = false;
1974
			$natent['nordr']    = false;
1975
1976
			$natent['source'] = array(
1977
				"not"     => false,
1978
				"any"     => true,
1979
				"port"    => ""
1980
			);
1981
1982
			$natent['destination'] = array(
1983
				"not"     => false,
1984
				"address" => $natent['external-address'],
1985
				"port"    => $natent['external-port']
1986
			);
1987
1988 743ce9f8 Erik Fonnesbeck
			if (empty($natent['destination']['address'])) {
1989 fcf4e8cd Erik Fonnesbeck
				unset($natent['destination']['address']);
1990
				$natent['destination']['network'] = $natent['interface'] . 'ip';
1991 743ce9f8 Erik Fonnesbeck
			} else if ($natent['destination']['address'] == 'any') {
1992
				unset($natent['destination']['address']);
1993
				$natent['destination']['any'] = true;
1994
			}
1995
1996 59ecde49 Renato Botelho
			unset($natent['external-address']);
1997
			unset($natent['external-port']);
1998
		}
1999
2000
		unset($natent);
2001
	}
2002
}
2003
2004 0f8266ed smos
function upgrade_062_to_063() {
2005 168a1e48 smos
	/* Upgrade legacy Themes to the new pfsense_ng */
2006
	global $config;
2007
2008
	switch($config['theme']) {
2009 1852fef0 smos
		case "nervecenter":
2010 168a1e48 smos
			$config['theme'] = "pfsense_ng";
2011
			break;
2012
	}
2013
	
2014
}
2015 c2b2b571 gnhb
2016
function upgrade_063_to_064() {
2017
	global $config;
2018 d09ca87e gnhb
	$j=0;
2019
	$ifcfg = &$config['interfaces'];
2020
	
2021 f7480829 gnhb
	if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {	
2022 c2b2b571 gnhb
		foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
2023 d09ca87e gnhb
			$config['ppps']['ppp'][$pppid]['if'] = "ppp".$j;
2024
			$config['ppps']['ppp'][$pppid]['ptpid'] = $j;
2025
			$j++;
2026 c2b2b571 gnhb
			if (isset($ppp['port'])){
2027
				$config['ppps']['ppp'][$pppid]['ports'] = $ppp['port'];
2028
				unset($config['ppps']['ppp'][$pppid]['port']);
2029
			}
2030
			if (!isset($ppp['type'])){
2031
				$config['ppps']['ppp'][$pppid]['type'] = "ppp";
2032
			}
2033 8256f324 gnhb
			if (isset($ppp['defaultgw']))
2034 6fdfa8fb gnhb
				unset($config['ppps']['ppp'][$pppid]['defaultgw']);
2035 c2b2b571 gnhb
		}
2036
	}
2037
	
2038
	if (!is_array($config['ppps']['ppp']))
2039
		$config['ppps']['ppp'] = array();
2040
	$a_ppps = &$config['ppps']['ppp'];
2041
2042
	foreach ($ifcfg as $ifname => $ifinfo) {
2043
		$ppp = array();
2044
		// For pppoe conversion
2045
		if ($ifinfo['ipaddr'] == "pppoe" || $ifinfo['ipaddr'] == "pptp"){
2046
			if (isset($ifinfo['ptpid']))
2047
				continue;
2048 d09ca87e gnhb
			$ppp['ptpid'] =  $j;
2049 c2b2b571 gnhb
			$ppp['type'] = $ifinfo['ipaddr'];
2050 d09ca87e gnhb
			$ppp['if'] = $ifinfo['ipaddr'].$j;
2051 c2b2b571 gnhb
			$ppp['ports'] = $ifinfo['if'];
2052
			if ($ifinfo['ipaddr'] == "pppoe"){
2053
				$ppp['username'] = $ifinfo['pppoe_username'];
2054
				$ppp['password'] = base64_encode($ifinfo['pppoe_password']);
2055
			}
2056
			if ($ifinfo['ipaddr'] == "pptp"){
2057
				$ppp['username'] = $ifinfo['pptp_username'];
2058
				$ppp['password'] = base64_encode($ifinfo['pptp_password']);
2059
			}
2060
			
2061
			if (isset($ifinfo['provider']))
2062
				$ppp['provider'] = $ifinfo['provider'];
2063
			if (isset($ifinfo['ondemand']))
2064
				$ppp['ondemand'] = true;
2065
			if (isset($ifinfo['timeout']))
2066
				$ppp['idletimeout'] = $ifinfo['timeout'];
2067
			if (isset($ifinfo['pppoe']['pppoe-reset-type'])){
2068
				$ppp['pppoe-reset-type'] = $ifinfo['pppoe']['pppoe-reset-type'];
2069
				if (is_array($config['cron']['item'])) {
2070
					for ($i = 0; $i < count($config['cron']['item']); $i++) {
2071
						$item = $config['cron']['item'][$i];
2072
						if (strpos($item['command'], "/conf/pppoe{$ifname}restart") !== false)
2073 f7480829 gnhb
							$config['cron']['item'][$i]['command'] = "/var/etc/pppoe_restart_" . $ppp['if'];
2074 c2b2b571 gnhb
					}
2075
				}
2076
			}
2077
			if (isset($ifinfo['local']))
2078
				$ppp['localip'] = $ifinfo['local'];
2079
			if (isset($ifinfo['subnet']))
2080
				$ppp['subnet'] = $ifinfo['subnet'];
2081
			if (isset($ifinfo['remote']))
2082
				$ppp['gateway'] = $ifinfo['remote'];
2083 f7480829 gnhb
2084 d09ca87e gnhb
			$ifcfg[$ifname]['if'] = $ifinfo['ipaddr'].$j;
2085
			$j++;
2086 f7480829 gnhb
			
2087 c2b2b571 gnhb
			unset($ifcfg[$ifname]['pppoe_username']);
2088
			unset($ifcfg[$ifname]['pppoe_password']);
2089
			unset($ifcfg[$ifname]['provider']);
2090
			unset($ifcfg[$ifname]['ondemand']);
2091
			unset($ifcfg[$ifname]['timeout']);
2092
			unset($ifcfg[$ifname]['pppoe_reset']);
2093
			unset($ifcfg[$ifname]['pppoe_preset']);
2094
			unset($ifcfg[$ifname]['pppoe']);
2095
			unset($ifcfg[$ifname]['pptp_username']);
2096
			unset($ifcfg[$ifname]['pptp_password']);
2097
			unset($ifcfg[$ifname]['local']);
2098
			unset($ifcfg[$ifname]['subnet']);
2099
			unset($ifcfg[$ifname]['remote']);
2100
			
2101
			$a_ppps[] = $ppp;
2102
			
2103
		}
2104
	}
2105
}
2106
2107 56a5a0ab jim-p
function upgrade_064_to_065() {
2108
	/* Disable TSO and LRO in upgraded configs */
2109
	global $config;
2110
	$config['system']['disablesegmentationoffloading'] = true;
2111
	$config['system']['disablelargereceiveoffloading'] = true;
2112
}
2113
2114 2f06cc3f Ermal
function upgrade_065_to_066() {
2115
	global $config;
2116
2117
	$dhcrelaycfg =& $config['dhcrelay'];
2118
2119
        if (is_array($dhcrelaycfg)) {
2120
        	$dhcrelayifs = array();
2121
		$foundifs = false;
2122
        	/* DHCPRelay enabled on any interfaces? */
2123
                foreach ($dhcrelaycfg as $dhcrelayif => $dhcrelayifconf) {
2124
                        if (isset($dhcrelayifconf['enable'])) {
2125
				$dhcrelayifs[] = $dhcrelayif;
2126
				unset($dhcrelaycfg['dhcrelayif']);
2127
				$foundifs = true;
2128
			}
2129
                }
2130
		if ($foundifs == true)
2131
			$dhcrelaycfg['interface'] = implode(",", $dhcrelayifs);
2132
        }
2133
}
2134
2135 9ad72e5e jim-p
function upgrade_066_to_067() {
2136
	global $config;
2137
	if (isset($config['system']['ca'])) {
2138
		$config['ca'] = $config['system']['ca'];
2139
	}
2140
	if (isset($config['system']['cert'])) {
2141
		$config['cert'] = $config['system']['cert'];
2142
	}
2143
}
2144
2145 6ae9f9b7 Ermal
function upgrade_067_to_068() {
2146
	global $config;
2147
2148
	if (!empty($config['pppoe'])) {
2149
		$config['pppoes'] = array();
2150
		$config['pppoes']['pppoe'] = array();
2151
		$config['pppoes']['pppoe'][] = $config['pppoe'][0];
2152 ce968051 Ermal
2153
		if (is_array($config['pppoe']['user'])) {
2154
			$username = array(); 
2155
			foreach ($config['pppoe']['user'] as $user) {
2156 2fc29020 Ermal
				$usr = $user['name'] . ":" . base64_encode($user['password']);
2157 ce968051 Ermal
				if ($user['ip'])
2158
					$usr .= ":{$user['ip']}";
2159
				$username[] = $usr;
2160
			}
2161
			$config['pppoes']['pppoe'][0]['username'] = implode(" ", $username);
2162
		}
2163 6ae9f9b7 Ermal
		unset($config['pppoe']);
2164
	}
2165
}
2166
2167 18de0728 Ermal
function upgrade_068_to_069() {
2168 8fefb9dd jim-p
	global $config;
2169
	if (!is_array($config['system']['user']))
2170
		return;
2171
	foreach ($config['system']['user'] as & $user) {
2172
		if (!is_array($user['cert']))
2173
			continue;
2174
		$rids = array();
2175
		foreach ($user['cert'] as $id => $cert) {
2176 f2a86ca9 jim-p
			if (!isset($cert['descr']))
2177 8fefb9dd jim-p
				continue;
2178
			$tcert = $cert;
2179
			// Make sure each cert gets a refid
2180
			if (!isset($tcert['refid']))
2181
				$tcert['refid'] = uniqid();
2182
			// Keep the cert references for this user
2183
			$rids[] = $tcert['refid'];
2184
			$config['cert'][] = $tcert;
2185
		}
2186
		// Replace user certs with cert references instead.
2187
		if (count($rids) > 0)
2188
			$user['cert'] = $rids;
2189
	}
2190
}
2191
2192 4c5b8653 Erik Fonnesbeck
function upgrade_069_to_070() {
2193
	global $config;
2194
2195
	/* Convert NAT 1:1 rules */
2196
	if (is_array($config['nat']['onetoone'])) {
2197
		$a_nat = &$config['nat']['onetoone'];
2198
2199
		foreach ($a_nat as &$natent) {
2200
			if ($natent['subnet'] == 32)
2201
				$natent['source'] = array("address" => $natent['internal']);
2202
			else
2203
				$natent['source'] = array("address" => $natent['internal'] . "/" . $natent['subnet']);
2204
2205
			$natent['destination'] = array("any" => true);
2206
2207
			unset($natent['internal']);
2208
			unset($natent['subnet']);
2209
		}
2210
2211
		unset($natent);
2212
	}
2213
}
2214
2215 65167fcc Ermal
function upgrade_070_to_071() {
2216
	global $config;
2217
2218
	if (is_array($config['cron']['item'])) {
2219
		foreach($config['cron']['item'] as $idx => $cronitem) {
2220 f21c7979 Ermal
			if(stristr($cronitem['command'], "checkreload.sh")) {
2221 65167fcc Ermal
				unset($config['cron']['item'][$idx]);
2222
				break;
2223
			}
2224
		}
2225
	}
2226
}
2227 15864861 jim-p
2228 6751b3e7 jim-p
function rename_field(& $section, $oldname, $newname) {
2229 e988813d jim-p
	if (is_array($section)) {
2230
		foreach($section as & $item) {
2231 6751b3e7 jim-p
			if (!empty($item[$oldname])) {
2232
				$item[$newname] = $item[$oldname];
2233
				unset($item[$oldname]);
2234 e988813d jim-p
			}
2235
		}
2236
	}
2237
}
2238
2239 6751b3e7 jim-p
function upgrade_071_to_072() {
2240
	global $config;
2241 6bef0554 jim-p
	if (is_array($config['sysctl']) && is_array($config['sysctl']['item']))
2242
		rename_field($config['sysctl']['item'], 'desc', 'descr');
2243 6751b3e7 jim-p
}
2244
2245 e988813d jim-p
function upgrade_072_to_073() {
2246
	global $config;
2247 6bef0554 jim-p
	if (!is_array($config['load_balancer']))
2248
		return;
2249
	if (is_array($config['load_balancer']['monitor_type']))
2250
		rename_field($config['load_balancer']['monitor_type'], 'desc', 'descr');
2251
	if (is_array($config['load_balancer']['lbpool']))
2252
		rename_field($config['load_balancer']['lbpool'], 'desc', 'descr');
2253
	if (is_array($config['load_balancer']['lbaction']))
2254
		rename_field($config['load_balancer']['lbaction'], 'desc', 'descr');
2255
	if (is_array($config['load_balancer']['lbprotocol']))
2256
		rename_field($config['load_balancer']['lbprotocol'], 'desc', 'descr');
2257
	if (is_array($config['load_balancer']['virtual_server']))
2258
		rename_field($config['load_balancer']['virtual_server'], 'desc', 'descr');
2259 e988813d jim-p
}
2260 9ff73b79 jim-p
2261
function upgrade_073_to_074() {
2262
	global $config;
2263 6751b3e7 jim-p
	rename_field($config['system']['user'], 'fullname', 'descr');
2264 9ff73b79 jim-p
}
2265 f2a86ca9 jim-p
2266
function upgrade_074_to_075() {
2267
	global $config;
2268 6bef0554 jim-p
	if (is_array($config['ca']))
2269
		rename_field($config['ca'], 'name', 'descr');
2270
	if (is_array($config['cert']))
2271
		rename_field($config['cert'], 'name', 'descr');
2272
	if (is_array($config['crl']))
2273
		rename_field($config['crl'], 'name', 'descr');
2274 f2a86ca9 jim-p
}
2275 bf02c784 Ermal
?>