###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# Copyright (C) 2007-2011 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
&Header::getcgihash(\%pppsettings);
if ($pppsettings{'ACTION'} ne '' &&
- (-e '/var/run/ppp-ipcop.pid' || -e "${General::swroot}/red/active"))
-{
+ ( -e "${General::swroot}/red/active")){
$errormessage = $Lang::tr{'unable to alter profiles while red is active'};
# read in the current vars
%pppsettings = ();
$pppsettings{'VALID'} = '';
- &General::readhash("${General::swroot}/ppp/settings", \%pppsettings);
-}
+ &General::readhash("${General::swroot}/ppp/settings", \%pppsettings);}
elsif ($pppsettings{'ACTION'} eq $Lang::tr{'refresh'})
{
- unless ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn|pppoe|pptp|pppoeatm)$/) {
+ unless ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn|pppoe|pptp|vdsl|pppoeatm|pptpatm)$/) {
$errormessage = $Lang::tr{'invalid input'};
goto ERROR; }
my $type = $pppsettings{'TYPE'};
}
elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
{
- if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/ && $pppsettings{'COMPORT'} !~ /^(ttyS0|ttyS1|ttyS2|ttyS3|ttyS4|ttyACM0|ttyACM1|ttyACM2|ttyACM3|isdn1|isdn2)$/) {
+ if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/ && $pppsettings{'COMPORT'} !~ /^(ttyS0|ttyS1|ttyS2|ttyS3|ttyS4|ttyACM0|ttyACM1|ttyACM2|ttyACM3|ttyUSB0|ttyUSB1|ttyUSB2|ttyUSB3|rfcomm0|rfcomm1|isdn1|isdn2)$/) {
$errormessage = $Lang::tr{'invalid input'};
goto ERROR; }
if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/ && $pppsettings{'DTERATE'} !~ /^(9600|19200|38400|57600|115200|230400|460800|921600)$/) {
goto ERROR; }
if ($pppsettings{'TYPE'} =~ /^(modem|isdn)$/) {
if ($pppsettings{'TELEPHONE'} eq '') {
- $errormessage = $Lang::tr{'telephone not set'};
+ $errormessage = $Lang::tr{'telephone not set'};
goto ERROR; }
if (!($pppsettings{'TELEPHONE'} =~ /^[\d\*\#\,]+$/)) {
$errormessage = $Lang::tr{'bad characters in the telephone number field'};
}
unless (($pppsettings{'PROTOCOL'} eq 'RFC1483' && $pppsettings{'METHOD'} =~ /^(STATIC|DHCP)$/)) {
if ($pppsettings{'USERNAME'} eq '') {
- $errormessage = $Lang::tr{'username not set'};
+ $errormessage = $Lang::tr{'username not set'};
goto ERROR; }
if ($pppsettings{'PASSWORD'} eq '') {
$errormessage = $Lang::tr{'password not set'};
goto ERROR; }
if ($pppsettings{'LOGINSCRIPT'} =~ /[.\/ ]/ ) {
- $errormessage = $Lang::tr{'bad characters in script field'};
+ $errormessage = $Lang::tr{'bad characters in script field'};
goto ERROR; }
if ($pppsettings{'DNS1'})
$errormessage = $Lang::tr{'only digits allowed in holdoff field'};
goto ERROR; }
- if ($pppsettings{'TYPE'} eq 'pptp') {
- $errormessage = '';
- if ($pppsettings{'METHOD'} eq 'STATIC') {
- if (! &General::validip($pppsettings{'ROUTERIP'})) {
- $errormessage = $Lang::tr{'router ip'}.' '.$Lang::tr{'invalid ip'};
- }
- } else {
- if (($pppsettings{'DHCP_HOSTNAME'} ne '') && (! &General::validfqdn($pppsettings{'DHCP_HOSTNAME'})) ) {
- $errormessage = $errormessage.' '.$Lang::tr{'hostname'}.' '.$Lang::tr{'invalid hostname'};
- }
- }
- if ($errormessage ne '') {goto ERROR; }
- }
- if ($pppsettings{'TYPE'} =~ /^(pppoeatm)$/) {
+ if ($pppsettings{'TYPE'} =~ /^(pppoeatm|pptpatm)$/) {
if ( ($pppsettings{'VPI'} eq '') || ($pppsettings{'VCI'} eq '') ) {
$errormessage = $Lang::tr{'invalid vpi vpci'};
goto ERROR; }
if ( $pppsettings{'PROTOCOL'} eq '' ) {
$errormessage = $Lang::tr{'invalid input'};
goto ERROR; }
- }
-
+ }
+
if ( ($pppsettings{'PROTOCOL'} eq 'RFC1483') && ($pppsettings{'METHOD'} eq '') && \
($pppsettings{'TYPE'} !~ /^(alcatelusb|fritzdsl)$/)) {
$errormessage = $Lang::tr{'invalid input'};
delete $pppsettings{'ENCAP_RFC1483'};
delete $pppsettings{'ENCAP_RFC2364'};
+ if ((!($pppsettings{'INET_VLAN'} =~ /^\d+$/)) ||
+ ($pppsettings{'INET_VLAN'} eq '') ||
+ ($pppsettings{'INET_VLAN'} > 4095) ) {
+ $errormessage = 'INET_VLAN - '.$Lang::tr{'invalid input'}; }
+
+ if ((!($pppsettings{'IPTV_VLAN'} =~ /^\d+$/)) ||
+ ($pppsettings{'IPTV_VLAN'} eq '') ||
+ ($pppsettings{'IPTV_VLAN'} > 4095) ) {
+ $errormessage = 'IPTV_VLAN - '.$Lang::tr{'invalid input'}; }
+
ERROR:
if ($errormessage) {
$pppsettings{'VALID'} = 'no'; }
\%temppppsettings);
# make link.
- &updatesettings();
+ &updatesettings();
# read in the new params "early" so we can write secrets.
%pppsettings = ();
&writesecrets();
- &General::log("$Lang::tr{'profile made current'} $pppsettings{'PROFILENAME'}");
+ &General::log("$Lang::tr{'profile made current'} $pppsettings{'PROFILENAME'}");
}
elsif ($pppsettings{'ACTION'} eq $Lang::tr{'delete'})
{
my $profile = $pppsettings{'PROFILE'};
truncate ("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", 0);
-
+
%temppppsettings = ();
$temppppsettings{'PROFILE'} = '';
&General::readhash("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}",
\%temppppsettings);
# make link.
- &updatesettings();
+ &updatesettings();
# read in the new params "early" so we can write secrets.
%pppsettings = ();
$selected{'TYPE'}{'serial'} = '';
$selected{'TYPE'}{'pppoe'} = '';
$selected{'TYPE'}{'pptp'} = '';
+$selected{'TYPE'}{'vdsl'} = '';
+$selected{'TYPE'}{'pppoeatm'} = '';
+$selected{'TYPE'}{'pptpatm'} = '';
$selected{'TYPE'}{$pppsettings{'TYPE'}} = "selected='selected'";
$checked{'DEBUG'}{'off'} = '';
$checked{'DEBUG'}{'on'} = '';
$selected{'COMPORT'}{'ttyS2'} = '';
$selected{'COMPORT'}{'ttyS3'} = '';
$selected{'COMPORT'}{'ttyS4'} = '';
-if ( $pppsettings{'TYPE'} ne '' ){
$selected{'COMPORT'}{'ttyACM0'} = '';
$selected{'COMPORT'}{'ttyACM1'} = '';
$selected{'COMPORT'}{'ttyACM2'} = '';
-$selected{'COMPORT'}{'ttyACM3'} = '';}
+$selected{'COMPORT'}{'ttyACM3'} = '';
+$selected{'COMPORT'}{'ttyUSB0'} = '';
+$selected{'COMPORT'}{'ttyUSB1'} = '';
+$selected{'COMPORT'}{'ttyUSB2'} = '';
+$selected{'COMPORT'}{'ttyUSB3'} = '';
+$selected{'COMPORT'}{'rfcomm0'} = '';
+$selected{'COMPORT'}{'rfcomm1'} = '';
$selected{'COMPORT'}{$pppsettings{'COMPORT'}} = "selected='selected'";
$selected{'DTERATE'}{'9600'} = '';
$checked{'DIALONDEMANDDNS'}{$pppsettings{'DIALONDEMANDDNS'}} = "checked='checked'";
$checked{'AUTOCONNECT'}{'off'} = '';
-$checked{'AUTOCONNECT'}{'on'} = '';
+$checked{'AUTOCONNECT'}{'on'} = '';
$checked{'AUTOCONNECT'}{$pppsettings{'AUTOCONNECT'}} = "checked='checked'";
$checked{'SENDCR'}{'off'} = '';
$checked{'METHOD'}{'STATIC'} = '';
$checked{'METHOD'}{'PPPOE'} = '';
-$checked{'METHOD'}{'PPPOE_PLUGIN'} = '';
$checked{'METHOD'}{'DHCP'} = '';
$checked{'METHOD'}{$pppsettings{'METHOD'}} = "checked='checked'";
$checked{'DNS'}{'Manual'} = '';
$checked{'DNS'}{$pppsettings{'DNS'}} = "checked='checked'";
+$checked{'IPTV'}{'enable'} = '';
+$checked{'IPTV'}{'disable'} = '';
+$checked{'IPTV'}{$pppsettings{'IPTV'}} = "checked='checked'";
+
+if ($pppsettings{'INET_VLAN'} eq '') { $pppsettings{'INET_VLAN'}='7'; }
+if ($pppsettings{'IPTV_VLAN'} eq '') { $pppsettings{'IPTV_VLAN'}='8'; }
+
&Header::openpage($Lang::tr{'ppp setup'}, 1, '');
&Header::openbigbox('100%', 'left', '', $errormessage);
if ($netsettings{'RED_TYPE'} ne 'PPPOE') {
+ $errormessage = $Lang::tr{'dialup red not ppp'};
&Header::openbox('100%', 'center', $Lang::tr{'error messages'});
- print "<CLASS name='base'>Einwahl nur funktioniert nur mit RED=PPPOE im Netzwerksetup";
+ print "<CLASS name='base'>$errormessage\n";
print " </CLASS>\n";
&Header::closebox();
&Header::closebigbox();
&Header::closepage();
exit(1);
}
-
+
if ($errormessage) {
&Header::openbox('100%', 'center', $Lang::tr{'error messages'});
print "<CLASS name='base'>$errormessage\n";
<select name='TYPE' style="width: 165px">
END
;
-if ($netsettings{'RED_TYPE'} eq 'PPPOE') {
+if ($netsettings{'RED_TYPE'} eq 'PPPOE' ) {
print <<END
- <option value='modem' $selected{'TYPE'}{'modem'}>$Lang::tr{'modem'}</option>
- <option value='serial' $selected{'TYPE'}{'serial'}>$Lang::tr{'serial'}</option>
- <option value='pppoe' $selected{'TYPE'}{'pppoe'}>PPPoE</option>
+ <option value='modem' $selected{'TYPE'}{'modem'}>$Lang::tr{'modem'}</option>
+ <option value='serial' $selected{'TYPE'}{'serial'}>$Lang::tr{'serial'}</option>
+ <option value='pppoe' $selected{'TYPE'}{'pppoe'}>PPPoE</option>
+ <option value='pptp' $selected{'TYPE'}{'pptp'}>PPTP</option>
+ <option value='vdsl' $selected{'TYPE'}{'vdsl'}>VDSL</option>
END
;
-my $atmdev=`cat /proc/net/atm/devices | grep 0`;
+my $atmdev=`cat /proc/net/atm/devices 2>/dev/null | grep 0`;
chomp ($atmdev);
if ($atmdev ne '') {
print <<END
<option value='pppoeatm' $selected{'TYPE'}{'pppoeatm'}>PPPoE over ATM-BRIDGE</option>
+ <option value='pptpatm' $selected{'TYPE'}{'pptpatm'}>PPTP over ATM-BRIDGE</option>
END
;
}
}
-#if ($netsettings{'RED_TYPE'} eq 'PPTP') {#
-# print "\t<option value='pptp' $selected{'TYPE'}{'pptp'}>PPTP</option>\n";
-#}
-#
#if (0) {
# print <<END
# <option value='eciadsl' $selected{'TYPE'}{'eciadsl'}>ECI USB ADSL</option>
<option value='ttyS2' $selected{'COMPORT'}{'ttyS2'}>COM3</option>
<option value='ttyS3' $selected{'COMPORT'}{'ttyS3'}>COM4</option>
<option value='ttyS4' $selected{'COMPORT'}{'ttyS4'}>COM5</option>
+ <option value='ttyUSB0' $selected{'COMPORT'}{'ttyUSB0'}>ttyUSB0</option>
+ <option value='ttyUSB1' $selected{'COMPORT'}{'ttyUSB1'}>ttyUSB1</option>
+ <option value='ttyUSB2' $selected{'COMPORT'}{'ttyUSB2'}>ttyUSB2</option>
+ <option value='ttyUSB3' $selected{'COMPORT'}{'ttyUSB3'}>ttyUSB3</option>
+ <option value='rfcomm0' $selected{'COMPORT'}{'rfcomm0'}>rfcomm0 (bluetooth)</option>
+ <option value='rfcomm1' $selected{'COMPORT'}{'rfcomm1'}>rfcomm1 (bluetooth)</option>
END
;
if ($pppsettings{'TYPE'} ne 'serial' ) {
</tr>
END
;
- }
+ }
if ($pppsettings{'TYPE'} =~ /^(modem)$/ ) {
print "<tr><td colspan='3' width='75%'>$Lang::tr{'number'}</td>\n";
print "<td width='25%'><input type='text' name='TELEPHONE' value='$pppsettings{'TELEPHONE'}'></td><tr>\n";
if ($pppsettings{'TYPE'} eq 'modem' ) {
print "<tr><td colspan='3' width='75%'>$Lang::tr{'modem speaker on'}</td>\n";
print "<td width='25%'><input type='checkbox' name='SPEAKER' $checked{'SPEAKER'}{'on'} /></td></tr>\n";
- }
+ }
}
}
if ($pppsettings{'TYPE'} eq 'modem') {
<option value='P' $selected{'DIALMODE'}{'P'}>$Lang::tr{'pulse'}</option>
</select></td>
</tr>
+<tr>
+ <td colspan='3' width='75%'>$Lang::tr{'optional at cmd'} 1 <img src='/blob.gif' alt='*' /></td>
+ <td width='25%'><input type='text' name='ADD_AT1' value='$pppsettings{'ADD_AT1'}'></td>
+</tr>
+<tr>
+ <td colspan='3' width='75%'>$Lang::tr{'optional at cmd'} 2 <img src='/blob.gif' alt='*' /></td>
+ <td width='25%'><input type='text' name='ADD_AT2' value='$pppsettings{'ADD_AT2'}'></td>
+</tr>
+<tr>
+ <td colspan='3' width='75%'>$Lang::tr{'optional at cmd'} 3 <img src='/blob.gif' alt='*' /></td>
+ <td width='25%'><input type='text' name='ADD_AT3' value='$pppsettings{'ADD_AT3'}'></td>
+</tr>
<tr>
<td colspan='3' width='75%'>$Lang::tr{'send cr'}</td>
<td width='50%'><input type='checkbox' name='SENDCR' $checked{'SENDCR'}{'on'} /></td>
</tr>
END
-;
+;
}
print <<END
if ($pppsettings{'TYPE'} eq 'pptp')
{
+
print <<END
<tr><td colspan='4' width='100%'><br></br></td></tr>
<tr>
<td colspan='4' width='100%' bgcolor='$color{'color20'}'><b>$Lang::tr{'pptp settings'}</b></td>
</tr>
<tr>
- <td width='25%'>$Lang::tr{'phonebook entry'}</td>
- <td colspan='2' width='50%'></td>
- <td width='25%'><input type='text' name='PHONEBOOK' value='$pppsettings{'PHONEBOOK'}' /></td>
+ <td width='25%'>Peer</td>
+ <td colspan='3'><input size=50 type='text' name='PPTP_PEER' value='$pppsettings{'PPTP_PEER'}' /></td>
</tr>
<tr>
- <td width='25%'><input type='radio' name='METHOD' value='STATIC' $checked{'METHOD'}{'STATIC'} />$Lang::tr{'static ip'}</td>
- <td colspan='2' width='50%'>$Lang::tr{'router ip'}</td>
- <td width='25%'><input type='text' name='ROUTERIP' value='$pppsettings{'ROUTERIP'}' /></td>
+ <td width='25%'>My Netconfig</td>
+ <td colspan='3'><input size=50 type='text' name='PPTP_NICCFG' value='$pppsettings{'PPTP_NICCFG'}' /></td>
</tr>
<tr>
- <td width='25%'><input type='radio' name='METHOD' value='DHCP' $checked{'METHOD'}{'DHCP'} />$Lang::tr{'dhcp mode'}</td>
- <td colspan='2' width='50%'>$Lang::tr{'hostname'}: <img src='/blob.gif' alt='*' /></td>
- <td width='25%'><input type='text' name='DHCP_HOSTNAME' value='$pppsettings{'DHCP_HOSTNAME'}' /></td>
+ <td width='25%'>PPTP Route <img src='/blob.gif' alt='*' /></td>
+ <td colspan='3'><input size=50 type='text' name='PPTP_ROUTE' value='$pppsettings{'PPTP_ROUTE'}' /></td>
</tr>
+
END
;
}
-if ($pppsettings{'TYPE'} =~ /^(pppoeatm)$/)
+
+if ($pppsettings{'TYPE'} =~ /^(pppoeatm|pptpatm)$/)
{
print <<END
</tr>
END
;
-}
+}
+ if ($pppsettings{'TYPE'} =~ /^(pppoe|vdsl|pppoeatm)$/) {
+print <<END
+<tr>
+ <td colspan='4' width='100%' bgcolor='$color{'color20'}'><b>IPTV/VLAN:</b></td>
+</tr>
+END
+;
+ if ( -e '/opt/pakfire/db/installed/meta-igmpproxy'){
+print <<END
+ <tr>
+ <td colspan='3' width='100%'><input type='radio' name='IPTV' value='enable' $checked{'IPTV'}{'enable'}>$Lang::tr{'on'}</td>
+ <td colspan='1' rowspan='2' width='100%'><textarea name='IPTVSERVERS' cols='16' wrap='off'>
+END
+;
+ print $pppsettings{'IPTVSERVERS'};
+print <<END
+</textarea></td>
+ </tr>
+ <tr>
+ <td colspan='3' width='100%'><input type='radio' name='IPTV' value='disable' $checked{'IPTV'}{'disable'}>$Lang::tr{'off'}</td>
+ </tr>
+ <tr>
+ <td>INET_VLAN</td>
+ <td><input size=5 type='number' name='INET_VLAN' value='$pppsettings{'INET_VLAN'}' /></td>
+ <td>IPTV_VLAN</td>
+ <td><input size=5 type='number' name='IPTV_VLAN' value='$pppsettings{'IPTV_VLAN'}' /></td>
+ </tr>
+
+END
+;
+ }
+ else {
+ print "<tr><td colspan='4' width='100%'>No IPTV possible install addon igmpproxy</td></tr>";
+ if ($pppsettings{'TYPE'} eq 'vdsl') {
+print <<END
+ <tr>
+ <td>INET_VLAN</td>
+ <td><input size=5 type='number' name='INET_VLAN' value='$pppsettings{'INET_VLAN'}' /></td>
+ </tr>
+END
+;
+ }
+ }
+}
-if ($pppsettings{'TYPE'} eq 'pppoe' || $pppsettings{'TYPE'} eq 'pppoeatm')
+if ($pppsettings{'TYPE'} eq 'pppoe' || $pppsettings{'TYPE'} eq 'pppoeatm' || $pppsettings{'TYPE'} eq 'vdsl')
{
print <<END
<tr><td colspan='4' width='100%'><br></br></td></tr>
<td colspan='4' width='100%' bgcolor='$color{'color20'}'><b>$Lang::tr{'pppoe settings'}</b></td>
</tr>
<tr>
- <td width='25%'><input type='radio' name='METHOD' value='PPPOE_PLUGIN' $checked{'METHOD'}{'PPPOE_PLUGIN'} />PPPoE plugin</td>
- <td colspan='2' width='50%'>$Lang::tr{'service name'} <img src='/blob.gif' alt='*' /></td>
+ <td width='25%'>$Lang::tr{'service name'} <img src='/blob.gif' alt='*' /></td>
+ <td colspan='2' width='50%'></td>
<td width='25%'><input type='text' name='SERVICENAME' value='$pppsettings{'SERVICENAME'}' /></td>
</tr>
<tr>
- <td width='25%'><input type='radio' name='METHOD' value='PPPOE' $checked{'METHOD'}{'PPPOE'} />$Lang::tr{'pppoe'}</td>
- <td colspan='2' width='50%'>$Lang::tr{'concentrator name'} <img src='/blob.gif' alt='*' /></td>
+ <td width='25%'>$Lang::tr{'concentrator name'} <img src='/blob.gif' alt='*' /></td>
+ <td colspan='2' width='50%'></td>
<td width='25%'><input type='text' name='CONCENTRATORNAME' value='$pppsettings{'CONCENTRATORNAME'}' /></td>
</tr>
+END
+;
+}
+
+print <<END
+<tr><td colspan='4' width='100%'><br></br></td></tr>
<tr>
- <td width='25%'>MTU</td>
- <td colspan='2' width='50%'></td>
+ <td bgcolor='$color{'color20'}' colspan='4' width='100%'><b>MTU/MRU</b></td>
+</tr>
+<tr>
+<tr>
+ <td width='25%'>MTU <img src='/blob.gif' alt='*' /></td>
<td width='25%'><input type='text' name='MTU' value='$pppsettings{'MTU'}' /></td>
</tr>
+<tr>
+ <td width='25%'>MRU <img src='/blob.gif' alt='*' /></td>
+ <td width='25%'><input type='text' name='MRU' value='$pppsettings{'MRU'}' /></td>
+</tr>
END
;
-}
print <<END
<tr><td colspan='4' width='100%'><br></br></td></tr>
$pppsettings{'ENCAP'} = '0';
$pppsettings{'VPI'} = '1';
$pppsettings{'VCI'} = '32';
- $pppsettings{'PHONEBOOK'} = 'RELAY_PPP1';
+ $pppsettings{'PPTP_PEER'} = '10.0.0.138';
+ $pppsettings{'PPTP_NICCFG'} = '10.0.0.140/24 broadcast 10.0.0.255';
+ $pppsettings{'PPTP_ROUTE'} = '';
$pppsettings{'PROTOCOL'} = 'RFC2364';
- $pppsettings{'METHOD'} = 'PPPOE_PLUGIN';
- if ( $pppsettings{'METHOD'} eq 'PPPOE_PLUGIN' ) {
- $pppsettings{'MTU'} = '1492';
- $pppsettings{'MRU'} = '1492';
- } else {
- $pppsettings{'MTU'} = '1452';
- $pppsettings{'MRU'} = '1452';
- }
+ $pppsettings{'MTU'} = '';
+ $pppsettings{'MRU'} = '';
$pppsettings{'DIALMODE'} = 'T';
$pppsettings{'MAXRETRIES'} = 5;
$pppsettings{'HOLDOFF'} = 30;
$pppsettings{'DNS'} = 'Automatic';
$pppsettings{'DEBUG'} = 'off';
$pppsettings{'BACKUPPROFILE'} = $pppsettings{'PROFILE'};
-
+ $pppsettings{'IPTVSERVERS'} = '192.168.2.51/32';
+ $pppsettings{'IPTV'} = 'disable';
+ $pppsettings{'INET_VLAN'} = '7';
+ $pppsettings{'IPTV_VLAN'} = '8';
+
+ if ( -e '/usr/local/bin/igmpproxy'){
+ $pppsettings{'IPTV'} = 'enable';
+ }
+
# Get PPPoE settings so we can see if PPPoE is enabled or not.
&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);