diff options
author | Ermal <eri@pfsense.org> | 2010-09-02 17:26:33 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2010-09-02 17:27:14 +0000 |
commit | 0e642c78b469f0de3fe9ab4479389d86d0a2bfd7 (patch) | |
tree | da7ba24ba2dc3205c3e5ef9b7e1d7e1e449c7ec5 /etc/inc/vpn.inc | |
parent | c73c126fdad559dbcb4f19cc16c9b05aef94cac8 (diff) | |
download | pfsense-0e642c78b469f0de3fe9ab4479389d86d0a2bfd7.zip pfsense-0e642c78b469f0de3fe9ab4479389d86d0a2bfd7.tar.gz |
Make possible to run multiple instances of pppoe server. Not yet switched to mpd4.
Diffstat (limited to 'etc/inc/vpn.inc')
-rw-r--r-- | etc/inc/vpn.inc | 83 |
1 files changed, 43 insertions, 40 deletions
diff --git a/etc/inc/vpn.inc b/etc/inc/vpn.inc index ce24b29..99d59e8 100644 --- a/etc/inc/vpn.inc +++ b/etc/inc/vpn.inc @@ -945,7 +945,7 @@ function vpn_setup() { vpn_pptpd_configure(); /* start pppoe server */ - vpn_pppoe_configure(); + vpn_pppoes_configure(); /* setup l2tp */ vpn_l2tp_configure(); @@ -1156,15 +1156,23 @@ EOD; return 0; } -function vpn_pppoe_configure() { +function vpn_pppoes_configure() { + global $config; + + if (is_array($config['pppoes']['pppoe'])) { + foreach ($config['pppoes']['pppoe'] as $pppoe) + vpn_pppoe_configure($pppoe); + } +} + +function vpn_pppoe_configure(&$pppoecfg) { global $config, $g; $syscfg = $config['system']; - $pppoecfg = $config['pppoe']; /* create directory if it does not exist */ - if (!is_dir("{$g['varetc_path']}/pppoe-vpn")) - mkdir("{$g['varetc_path']}/pppoe-vpn"); + if (!is_dir("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn")) + mkdir("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn"); if ($g['booting']) { if (!$pppoecfg['mode'] || ($pppoecfg['mode'] == "off")) @@ -1173,22 +1181,18 @@ function vpn_pppoe_configure() { echo "Configuring PPPoE VPN service... "; } else { /* kill mpd */ - killbypid("{$g['varrun_path']}/pppoe-vpn.pid"); + killbypid("{$g['varrun_path']}/pppoe{$pppoecfg['pppoeid']}-vpn.pid"); /* wait for process to die */ sleep(2); } - /* make sure pppoe-vpn directory exists */ - if (!file_exists("{$g['varetc_path']}/pppoe-vpn")) - mkdir("{$g['varetc_path']}/pppoe-vpn"); - switch ($pppoecfg['mode']) { case 'server' : - $pppoe_interface = interface_translate_type_to_real($pppoecfg['interface']); + $pppoe_interface = get_real_interface($pppoecfg['interface']); if ($pppoecfg['paporchap'] == "chap") $paporchap = "set link enable chap"; @@ -1196,19 +1200,16 @@ function vpn_pppoe_configure() { $paporchap = "set link enable pap"; /* write mpd.conf */ - $fd = fopen("{$g['varetc_path']}/pppoe-vpn/mpd.conf", "w"); + $fd = fopen("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.conf", "w"); if (!$fd) { printf("Error: cannot open mpd.conf in vpn_pppoe_configure().\n"); return 1; } $mpdconf = "\n\n"; - $mpdconf .=<<<EOD -pppoe: - -EOD; + $mpdconf .= "pppoe:\n"; for ($i = 0; $i < $pppoecfg['n_pppoe_units']; $i++) { - $mpdconf .= " load pppoe{$i}\n"; + $mpdconf .= " load poes{$pppoecfg['pppoeid']}{$i}\n"; } for ($i = 0; $i < $pppoecfg['n_pppoe_units']; $i++) { @@ -1223,8 +1224,8 @@ EOD; $mpdconf .=<<<EOD -pppoe{$i}: - new -i ppoed{$i} pppoe{$i} pppoe{$i} +poes{$pppoecfg['pppoeid']}{$i}: + new -i poes{$pppoecfg['pppoeid']}{$i} poes{$pppoecfg['pppoeid']}{$i} poes{$pppoecfg['pppoeid']}{$i} {$isssue_ip_type} load pppoe_standart @@ -1296,7 +1297,7 @@ EOD; fclose($fd); /* write mpd.links */ - $fd = fopen("{$g['varetc_path']}/pppoe-vpn/mpd.links", "w"); + $fd = fopen("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.links", "w"); if (!$fd) { printf("Error: cannot open mpd.links in vpn_pppoe_configure().\n"); return 1; @@ -1307,7 +1308,7 @@ EOD; for ($i = 0; $i < $pppoecfg['n_pppoe_units']; $i++) { $mpdlinks .=<<<EOD -pppoe{$i}: +poes{$pppoecfg['pppoeid']}{$i}: set phys type pppoe set pppoe iface {$pppoe_interface} set pppoe service "*" @@ -1320,31 +1321,33 @@ EOD; fwrite($fd, $mpdlinks); fclose($fd); - /* write mpd.secret */ - $fd = fopen("{$g['varetc_path']}/pppoe-vpn/mpd.secret", "w"); - if (!$fd) { - printf("Error: cannot open mpd.secret in vpn_pppoe_configure().\n"); - return 1; - } + if ($pppoecfg['username']) { + /* write mpd.secret */ + $fd = fopen("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.secret", "w"); + if (!$fd) { + printf("Error: cannot open mpd.secret in vpn_pppoe_configure().\n"); + return 1; + } - $mpdsecret = "\n\n"; + $mpdsecret = "\n\n"; - if (is_array($pppoecfg['user'])) { - foreach ($pppoecfg['user'] as $user) - $mpdsecret .= "{$user['name']} \"{$user['password']}\" {$user['ip']}\n"; - } + if (!empty($pppoecfg['username'])) { + $item = explode(" ", $pppoecfg['username']); + foreach($item as $userdata) { + $data = explode(":", $userdata); + $mpdsecret .= "{$data[0]} \"{$user[1]}\" {$user[2]}\n"; + } + } - fwrite($fd, $mpdsecret); - fclose($fd); - chmod("{$g['varetc_path']}/pppoe-vpn/mpd.secret", 0600); + fwrite($fd, $mpdsecret); + fclose($fd); + chmod("{$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn/mpd.secret", 0600); + } /* fire up mpd */ - mwexec("/usr/local/sbin/mpd4 -b -d {$g['varetc_path']}/pppoe-vpn -p {$g['varrun_path']}/pppoe-vpn.pid -s pppoe pppoe"); + mwexec("/usr/local/sbin/mpd4 -b -d {$g['varetc_path']}/pppoe{$pppoecfg['pppoeid']}-vpn -p {$g['varrun_path']}/pppoe{$pppoecfg['pppoeid']}-vpn.pid -s pppoe pppoe"); break; - - case 'redir' : - break; } if ($g['booting']) @@ -1708,4 +1711,4 @@ function reload_tunnel_spd_policy($phase1, $phase2, $old_phase1, $old_phase2) { return true; } -?>
\ No newline at end of file +?> |