diff options
author | gnhb <gnoahb@gmail.com> | 2010-05-18 22:40:05 +0700 |
---|---|---|
committer | gnhb <gnoahb@gmail.com> | 2010-05-18 22:40:05 +0700 |
commit | c2b2b57131adbc2cb4b5870fb812963581a4d3ee (patch) | |
tree | 4ee96cee92fd68aad0999d9d8bbcfb9883282f2a | |
parent | 2666de59fed434671d6d869558f49dc89d126a67 (diff) | |
download | pfsense-c2b2b57131adbc2cb4b5870fb812963581a4d3ee.zip pfsense-c2b2b57131adbc2cb4b5870fb812963581a4d3ee.tar.gz |
PPPoE config upgrade code and bump config version in globals.inc
-rw-r--r-- | etc/inc/globals.inc | 2 | ||||
-rw-r--r-- | etc/inc/upgrade_config.inc | 95 |
2 files changed, 96 insertions, 1 deletions
diff --git a/etc/inc/globals.inc b/etc/inc/globals.inc index 782251a..6e2b1f6 100644 --- a/etc/inc/globals.inc +++ b/etc/inc/globals.inc @@ -88,7 +88,7 @@ $g = array( "disablehelpmenu" => false, "disablehelpicon" => false, "debug" => false, - "latest_config" => "6.3", + "latest_config" => "6.4", "nopkg_platforms" => array("cdrom"), "minimum_ram_warning" => "105", "minimum_ram_warning_text" => "128 MB", diff --git a/etc/inc/upgrade_config.inc b/etc/inc/upgrade_config.inc index cb690d6..25b7456 100644 --- a/etc/inc/upgrade_config.inc +++ b/etc/inc/upgrade_config.inc @@ -1965,4 +1965,99 @@ function upgrade_062_to_063() { } } + +function upgrade_063_to_064() { + global $config; + if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) { + foreach ($config['ppps']['ppp'] as $pppid => $ppp) { + if (isset($ppp['port'])){ + $config['ppps']['ppp'][$pppid]['ports'] = $ppp['port']; + unset($config['ppps']['ppp'][$pppid]['port']); + } + if (!isset($ppp['type'])){ + $config['ppps']['ppp'][$pppid]['type'] = "ppp"; + } + if (!isset($ppp['ptpid'])){ + $config['ppps']['ppp'][$pppid]['ptpid'] = uniqid('', true); + } + } + } + + $ifcfg = &$config['interfaces']; + + if (!is_array($config['ppps']['ppp'])) + $config['ppps']['ppp'] = array(); + $a_ppps = &$config['ppps']['ppp']; + + foreach ($ifcfg as $ifname => $ifinfo) { + $ppp = array(); + // For pppoe conversion + if ($ifinfo['ipaddr'] == "pppoe" || $ifinfo['ipaddr'] == "pptp"){ + if (isset($ifinfo['ptpid'])) + continue; + $ppp['ptpid'] = uniqid('', true); + $ppp['type'] = $ifinfo['ipaddr']; + $ppp['ports'] = $ifinfo['if']; + if ($ifinfo['ipaddr'] == "pppoe"){ + $ppp['username'] = $ifinfo['pppoe_username']; + $ppp['password'] = base64_encode($ifinfo['pppoe_password']); + } + if ($ifinfo['ipaddr'] == "pptp"){ + $ppp['username'] = $ifinfo['pptp_username']; + $ppp['password'] = base64_encode($ifinfo['pptp_password']); + } + foreach ($config['gateways']['gateway_item'] as $gateway){ + if ($gateway['name'] == $ifname && isset($gateway['defaultgw'])){ + $ppp['defaultgw'] = true; + } + } + + if (isset($ifinfo['provider'])) + $ppp['provider'] = $ifinfo['provider']; + if (isset($ifinfo['ondemand'])) + $ppp['ondemand'] = true; + if (isset($ifinfo['timeout'])) + $ppp['idletimeout'] = $ifinfo['timeout']; + if (isset($ifinfo['pppoe']['pppoe-reset-type'])){ + $ppp['pppoe-reset-type'] = $ifinfo['pppoe']['pppoe-reset-type']; + if (is_array($config['cron']['item'])) { + for ($i = 0; $i < count($config['cron']['item']); $i++) { + $item = $config['cron']['item'][$i]; + if (strpos($item['command'], "/conf/pppoe{$ifname}restart") !== false) + $config['cron']['item'][$i]['command'] = "/var/etc/pppoe_restart_" . $ppp['ptpid']; + } + } + } + if (isset($ifinfo['local'])) + $ppp['localip'] = $ifinfo['local']; + if (isset($ifinfo['subnet'])) + $ppp['subnet'] = $ifinfo['subnet']; + if (isset($ifinfo['remote'])) + $ppp['gateway'] = $ifinfo['remote']; + + $ifcfg[$ifname]['ptpid'] = $ppp['ptpid']; + if ($ifname == "wan") + $ifcfg[$ifname]['if'] = $ifinfo['ipaddr'] ."0"; + else + $ifcfg[$ifname]['if'] = $ifinfo['ipaddr'] . substr($ifname,3); + unset($ifcfg[$ifname]['pppoe_username']); + unset($ifcfg[$ifname]['pppoe_password']); + unset($ifcfg[$ifname]['provider']); + unset($ifcfg[$ifname]['ondemand']); + unset($ifcfg[$ifname]['timeout']); + unset($ifcfg[$ifname]['pppoe_reset']); + unset($ifcfg[$ifname]['pppoe_preset']); + unset($ifcfg[$ifname]['pppoe']); + unset($ifcfg[$ifname]['pptp_username']); + unset($ifcfg[$ifname]['pptp_password']); + unset($ifcfg[$ifname]['local']); + unset($ifcfg[$ifname]['subnet']); + unset($ifcfg[$ifname]['remote']); + + $a_ppps[] = $ppp; + + } + } +} + ?> |