summaryrefslogtreecommitdiffstats
path: root/etc/inc/vpn.inc
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2010-09-02 17:26:33 +0000
committerErmal <eri@pfsense.org>2010-09-02 17:27:14 +0000
commit0e642c78b469f0de3fe9ab4479389d86d0a2bfd7 (patch)
treeda7ba24ba2dc3205c3e5ef9b7e1d7e1e449c7ec5 /etc/inc/vpn.inc
parentc73c126fdad559dbcb4f19cc16c9b05aef94cac8 (diff)
downloadpfsense-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.inc83
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
+?>
OpenPOWER on IntegriCloud