]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - html/cgi-bin/pppsetup.cgi
BUG 11786 - squid: Remove setting for filter processes the number of Squid processes
[ipfire-2.x.git] / html / cgi-bin / pppsetup.cgi
index 51693544832858cd1ce82806d7fbeec91bed3c5b..4b45ee50c18d3153a7ea87fb5193b2b1c686d38c 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2014  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        #
@@ -53,17 +53,15 @@ $pppsettings{'ACTION'} = '';
 &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'};
@@ -72,7 +70,10 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'refresh'})
 }
 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|ttyACM[0-9]|ttyUSB[0-9]|rfcomm0|rfcomm1|isdn1|isdn2)$/) {
+                $errormessage = $Lang::tr{'invalid input'};
+                goto ERROR; }
+        if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/ && $pppsettings{'MONPORT'} !~ /^(|ttyACM[0-9]|ttyUSB[0-9]|rfcomm0|rfcomm1)$/) {
                 $errormessage = $Lang::tr{'invalid input'};
                 goto ERROR; }
         if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/ && $pppsettings{'DTERATE'} !~ /^(9600|19200|38400|57600|115200|230400|460800|921600)$/) {
@@ -92,7 +93,7 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
                 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'};
@@ -100,12 +101,9 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
         }
         unless (($pppsettings{'PROTOCOL'} eq 'RFC1483' && $pppsettings{'METHOD'} =~ /^(STATIC|DHCP)$/)) {
                 if ($pppsettings{'USERNAME'} eq '') {
-                        $errormessage = $Lang::tr{'username not set'}; 
-                        goto ERROR; }
-                if ($pppsettings{'PASSWORD'} eq '') {
-                        $errormessage = $Lang::tr{'password not set'};
+                        $errormessage = $Lang::tr{'username not set'};
                         goto ERROR; }
-        }
+               }
 
         if ($pppsettings{'TIMEOUT'} eq '') {
                 $errormessage = $Lang::tr{'idle timeout not set'};
@@ -115,7 +113,7 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
                 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'})
@@ -142,20 +140,7 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
                 $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; }
@@ -165,11 +150,14 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
                 if (($pppsettings{'VPI'} eq '0') && ($pppsettings{'VCI'} eq '0')) {
                         $errormessage = $Lang::tr{'invalid vpi vpci'};
                         goto ERROR; }
+                if ($pppsettings{'ATM_DEV'} eq '') {
+                        $errormessage = $Lang::tr{'invalid input'};
+                        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'};
@@ -215,6 +203,16 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
         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'; }
@@ -240,7 +238,7 @@ if ($pppsettings{'ACTION'} eq $Lang::tr{'select'})
                 \%temppppsettings);
 
         # make link.
-        &updatesettings(); 
+        &updatesettings();
 
         # read in the new params "early" so we can write secrets.
         %pppsettings = ();
@@ -251,7 +249,7 @@ if ($pppsettings{'ACTION'} eq $Lang::tr{'select'})
 
         &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'})
 {
@@ -259,14 +257,14 @@ 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 = ();
@@ -315,6 +313,9 @@ $selected{'TYPE'}{'modem'} = '';
 $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'} = '';
@@ -325,13 +326,55 @@ $selected{'COMPORT'}{'ttyS1'} = '';
 $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'}{'ttyACM4'} = '';
+$selected{'COMPORT'}{'ttyACM5'} = '';
+$selected{'COMPORT'}{'ttyACM6'} = '';
+$selected{'COMPORT'}{'ttyACM7'} = '';
+$selected{'COMPORT'}{'ttyACM8'} = '';
+$selected{'COMPORT'}{'ttyACM9'} = '';
+$selected{'COMPORT'}{'ttyUSB0'} = '';
+$selected{'COMPORT'}{'ttyUSB1'} = '';
+$selected{'COMPORT'}{'ttyUSB2'} = '';
+$selected{'COMPORT'}{'ttyUSB3'} = '';
+$selected{'COMPORT'}{'ttyUSB4'} = '';
+$selected{'COMPORT'}{'ttyUSB5'} = '';
+$selected{'COMPORT'}{'ttyUSB6'} = '';
+$selected{'COMPORT'}{'ttyUSB7'} = '';
+$selected{'COMPORT'}{'ttyUSB8'} = '';
+$selected{'COMPORT'}{'ttyUSB9'} = '';
+$selected{'COMPORT'}{'rfcomm0'} = '';
+$selected{'COMPORT'}{'rfcomm1'} = '';
 $selected{'COMPORT'}{$pppsettings{'COMPORT'}} = "selected='selected'";
 
+$selected{'MONPORT'}{''} = '';
+$selected{'MONPORT'}{'ttyACM0'} = '';
+$selected{'MONPORT'}{'ttyACM1'} = '';
+$selected{'MONPORT'}{'ttyACM2'} = '';
+$selected{'MONPORT'}{'ttyACM3'} = '';
+$selected{'MONPORT'}{'ttyACM4'} = '';
+$selected{'MONPORT'}{'ttyACM5'} = '';
+$selected{'MONPORT'}{'ttyACM6'} = '';
+$selected{'MONPORT'}{'ttyACM7'} = '';
+$selected{'MONPORT'}{'ttyACM8'} = '';
+$selected{'MONPORT'}{'ttyACM9'} = '';
+$selected{'MONPORT'}{'ttyUSB0'} = '';
+$selected{'MONPORT'}{'ttyUSB1'} = '';
+$selected{'MONPORT'}{'ttyUSB2'} = '';
+$selected{'MONPORT'}{'ttyUSB3'} = '';
+$selected{'MONPORT'}{'ttyUSB4'} = '';
+$selected{'MONPORT'}{'ttyUSB5'} = '';
+$selected{'MONPORT'}{'ttyUSB6'} = '';
+$selected{'MONPORT'}{'ttyUSB7'} = '';
+$selected{'MONPORT'}{'ttyUSB8'} = '';
+$selected{'MONPORT'}{'ttyUSB9'} = '';
+$selected{'MONPORT'}{'rfcomm0'} = '';
+$selected{'MONPORT'}{'rfcomm1'} = '';
+$selected{'MONPORT'}{$pppsettings{'MONPORT'}} = "selected='selected'";
+
 $selected{'DTERATE'}{'9600'} = '';
 $selected{'DTERATE'}{'19200'} = '';
 $selected{'DTERATE'}{'38400'} = '';
@@ -359,7 +402,7 @@ $checked{'DIALONDEMANDDNS'}{'on'} = '';
 $checked{'DIALONDEMANDDNS'}{$pppsettings{'DIALONDEMANDDNS'}} = "checked='checked'";
 
 $checked{'AUTOCONNECT'}{'off'} = '';
-$checked{'AUTOCONNECT'}{'on'} = ''; 
+$checked{'AUTOCONNECT'}{'on'} = '';
 $checked{'AUTOCONNECT'}{$pppsettings{'AUTOCONNECT'}} = "checked='checked'";
 
 $checked{'SENDCR'}{'off'} = '';
@@ -401,7 +444,6 @@ $selected{'ENCAP'}{$pppsettings{'ENCAP'}} = "selected='selected'";
 
 $checked{'METHOD'}{'STATIC'} = '';
 $checked{'METHOD'}{'PPPOE'} = '';
-$checked{'METHOD'}{'PPPOE_PLUGIN'} = '';
 $checked{'METHOD'}{'DHCP'} = '';
 $checked{'METHOD'}{$pppsettings{'METHOD'}} = "checked='checked'";
 
@@ -417,25 +459,32 @@ $checked{'DNS'}{'Automatic'} = '';
 $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'>$errormessage\n";
-        print "&nbsp;</CLASS>\n";
+        print "<class name='base'>$errormessage\n";
+        print "&nbsp;</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";
-        print "&nbsp;</CLASS>\n";
+        print "<class name='base'>$errormessage\n";
+        print "&nbsp;</class>\n";
         &Header::closebox();
 }
 
@@ -480,27 +529,26 @@ print <<END
         <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>
@@ -522,7 +570,7 @@ END
 ;
         if ($pppsettings{'TYPE'} =~ /^(modem)$/) {
         print <<END
-            <td colspan='1' width='25%'><A HREF=modem.cgi>$Lang::tr{'modem configuration'}</A></td>
+            <td colspan='1' width='25%'><a href='modem.cgi'>$Lang::tr{'modem configuration'}</a></td>
 END
 ;
 }
@@ -557,18 +605,72 @@ END
                 <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='ttyUSB4' $selected{'COMPORT'}{'ttyUSB4'}>ttyUSB4</option>
+                <option value='ttyUSB5' $selected{'COMPORT'}{'ttyUSB5'}>ttyUSB5</option>
+                <option value='ttyUSB6' $selected{'COMPORT'}{'ttyUSB6'}>ttyUSB6</option>
+                <option value='ttyUSB7' $selected{'COMPORT'}{'ttyUSB7'}>ttyUSB7</option>
+                <option value='ttyUSB8' $selected{'COMPORT'}{'ttyUSB8'}>ttyUSB8</option>
+                <option value='ttyUSB9' $selected{'COMPORT'}{'ttyUSB9'}>ttyUSB9</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' ) {
                         print <<END
-                <option value='ttyACM0' $selected{'COMPORT'}{'ttyACM0'}>$Lang::tr{'usb modem on acm0'}</option>
-                <option value='ttyACM1' $selected{'COMPORT'}{'ttyACM1'}>$Lang::tr{'usb modem on acm1'}</option>
-                <option value='ttyACM2' $selected{'COMPORT'}{'ttyACM2'}>$Lang::tr{'usb modem on acm2'}</option>
-                <option value='ttyACM3' $selected{'COMPORT'}{'ttyACM3'}>$Lang::tr{'usb modem on acm3'}</option>
+                <option value='ttyACM0' $selected{'COMPORT'}{'ttyACM0'}>ttyACM0</option>
+                <option value='ttyACM1' $selected{'COMPORT'}{'ttyACM1'}>ttyACM1</option>
+                <option value='ttyACM2' $selected{'COMPORT'}{'ttyACM2'}>ttyACM2</option>
+                <option value='ttyACM3' $selected{'COMPORT'}{'ttyACM3'}>ttyACM3</option>
+                <option value='ttyACM4' $selected{'COMPORT'}{'ttyACM4'}>ttyACM4</option>
+                <option value='ttyACM5' $selected{'COMPORT'}{'ttyACM5'}>ttyACM5</option>
+                <option value='ttyACM6' $selected{'COMPORT'}{'ttyACM6'}>ttyACM6</option>
+                <option value='ttyACM7' $selected{'COMPORT'}{'ttyACM7'}>ttyACM7</option>
+                <option value='ttyACM8' $selected{'COMPORT'}{'ttyACM8'}>ttyACM8</option>
+                <option value='ttyACM9' $selected{'COMPORT'}{'ttyACM9'}>ttyACM9</option>
 END
 ;
                 }
     print "</select></td>       "}
+
+       if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/) {
+               print <<END;
+                       <tr>
+                               <td colspan='3' width='75%'>$Lang::tr{'monitor interface'}:</td>
+                               <td width='25%'>
+                                       <select name="MONPORT" style="width: 165px;">
+                                               <option value="" $selected{'MONPORT'}{''}>---</option>
+                                               <option value="ttyUSB0" $selected{'MONPORT'}{'ttyUSB0'}>ttyUSB0</option>
+                                               <option value="ttyUSB1" $selected{'MONPORT'}{'ttyUSB1'}>ttyUSB1</option>
+                                               <option value="ttyUSB2" $selected{'MONPORT'}{'ttyUSB2'}>ttyUSB2</option>
+                                               <option value="ttyUSB3" $selected{'MONPORT'}{'ttyUSB3'}>ttyUSB3</option>
+                                               <option value="ttyUSB4" $selected{'MONPORT'}{'ttyUSB4'}>ttyUSB4</option>
+                                               <option value="ttyUSB5" $selected{'MONPORT'}{'ttyUSB5'}>ttyUSB5</option>
+                                               <option value="ttyUSB6" $selected{'MONPORT'}{'ttyUSB6'}>ttyUSB6</option>
+                                               <option value="ttyUSB7" $selected{'MONPORT'}{'ttyUSB7'}>ttyUSB7</option>
+                                               <option value="ttyUSB8" $selected{'MONPORT'}{'ttyUSB8'}>ttyUSB8</option>
+                                               <option value="ttyUSB9" $selected{'MONPORT'}{'ttyUSB9'}>ttyUSB9</option>
+                                               <option value="rfcomm0" $selected{'COMPORT'}{'rfcomm0'}>rfcomm0 (bluetooth)</option>
+                                               <option value="rfcomm1" $selected{'COMPORT'}{'rfcomm1'}>rfcomm1 (bluetooth)</option>
+                                               <option value="ttyACM0" $selected{'COMPORT'}{'ttyACM0'}>ttyACM0</option>
+                                               <option value="ttyACM1" $selected{'COMPORT'}{'ttyACM1'}>ttyACM1</option>
+                                               <option value="ttyACM2" $selected{'COMPORT'}{'ttyACM2'}>ttyACM2</option>
+                                               <option value="ttyACM3" $selected{'COMPORT'}{'ttyACM3'}>ttyACM3</option>
+                                               <option value="ttyACM4" $selected{'COMPORT'}{'ttyACM4'}>ttyACM4</option>
+                                               <option value="ttyACM5" $selected{'COMPORT'}{'ttyACM5'}>ttyACM5</option>
+                                               <option value="ttyACM6" $selected{'COMPORT'}{'ttyACM6'}>ttyACM6</option>
+                                               <option value="ttyACM7" $selected{'COMPORT'}{'ttyACM7'}>ttyACM7</option>
+                                               <option value="ttyACM8" $selected{'COMPORT'}{'ttyACM8'}>ttyACM8</option>
+                                               <option value="ttyACM9" $selected{'COMPORT'}{'ttyACM9'}>ttyACM9</option>
+                                       </select>
+                               </td>
+                       </tr>
+END
+       }
+
                 if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/ ) {
                         print <<END
   <tr>
@@ -586,14 +688,14 @@ END
 </tr>
 END
 ;
-                } 
+                }
                 if ($pppsettings{'TYPE'} =~ /^(modem)$/ ) {
-                        print "<tr><td colspan='3' width='75%'>$Lang::tr{'number'}</td>\n";
+                        print "<tr><td colspan='3' width='75%'>$Lang::tr{'number'}&nbsp;<img src='/blob.gif' alt='*' /></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') {
@@ -605,17 +707,29 @@ END
                 <option value='P' $selected{'DIALMODE'}{'P'}>$Lang::tr{'pulse'}</option>
         </select></td>
 </tr>
+<tr>
+        <td colspan='3' width='75%'>$Lang::tr{'optional at cmd'}&nbsp;1</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'}&nbsp;2</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'}&nbsp;3</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
 <tr>
-        <td colspan='3' width='75%'>$Lang::tr{'idle timeout'}</td>
+        <td colspan='3' width='75%'>$Lang::tr{'idle timeout'}&nbsp;<img src='/blob.gif' alt='*' /></td>
         <td width='25%'><input type='text' name='TIMEOUT' value='$pppsettings{'TIMEOUT'}' /></td>
 </tr>
  <tr>
@@ -657,11 +771,11 @@ print <<END
   <td width='25%'><input type='checkbox' name='DIALONDEMANDDNS' $checked{'DIALONDEMANDDNS'}{'on'} /></td>
 </tr>
 <tr>
-        <td colspan='3' width='75%'>$Lang::tr{'holdoff'}:</td>
+        <td colspan='3' width='75%'>$Lang::tr{'holdoff'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
         <td width='25%'><input type='text' name='HOLDOFF' value='$pppsettings{'HOLDOFF'}' /></td>
 </tr>
 <tr>
-        <td colspan='3' width='75%'>$Lang::tr{'maximum retries'}</td>
+        <td colspan='3' width='75%'>$Lang::tr{'maximum retries'}&nbsp;<img src='/blob.gif' alt='*' /></td>
         <td width='25%'><input type='text' name='MAXRETRIES' value='$pppsettings{'MAXRETRIES'}' /></td>
 </tr>
 END
@@ -669,39 +783,40 @@ 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%'>$Lang::tr{'pptp peer'}:&nbsp;<img src='/blob.gif' alt='*' /></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%'>$Lang::tr{'pptp netconfig'}:&nbsp;<img src='/blob.gif' alt='*' /></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'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
-        <td width='25%'><input type='text' name='DHCP_HOSTNAME' value='$pppsettings{'DHCP_HOSTNAME'}' /></td>
+        <td width='25%'>$Lang::tr{'pptp route'}:</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>
-        <td colspan='4' width='100%' bgcolor='$color{'color20'}'><b>$Lang::tr{'adsl settings'}:</b></td>
+        <td colspan='4' width='100%' bgcolor='$color{'color20'}'><b>$Lang::tr{'atm settings'}:</b></td>
 <tr>
-
+        <td nowrap='nowrap'>$Lang::tr{'atm device'}</td>
+        <td><input type='text' size='5' name='ATM_DEV' value='$pppsettings{'ATM_DEV'}' /></td>
         <td> $Lang::tr{'encapsulation'}:</td>
-        <td colspan='2' width='30%'>
+        <td>
                 <select name='ENCAP'>
                    <option value='0' $selected{'ENCAP'}{'0'}>LLC</option>
                    <option value='1' $selected{'ENCAP'}{'1'}>VCmux</option>
@@ -709,18 +824,61 @@ print <<END
         </td>
 </tr>
 <tr>
-
         <td nowrap='nowrap'>$Lang::tr{'vpi number'}</td>
         <td><input type='text' size='5' name='VPI' value='$pppsettings{'VPI'}' /></td>
-        <td align='right'>$Lang::tr{'vci number'}</td>
-        <td colspan='2'><input type='text' size='5' name='VCI' value='$pppsettings{'VCI'}' /></td>
+        <td$Lang::tr{'vci number'}</td>
+        <td><input type='text' size='5' name='VCI' value='$pppsettings{'VCI'}' /></td>
 </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>
@@ -728,23 +886,35 @@ print <<END
         <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'}&nbsp;<img src='/blob.gif' alt='*' /></td>
+        <td width='25%'>$Lang::tr{'service name'}</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'}&nbsp;<img src='/blob.gif' alt='*' /></td>
+        <td width='25%'>$Lang::tr{'concentrator name'}</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:</td>
         <td width='25%'><input type='text' name='MTU' value='$pppsettings{'MTU'}' /></td>
 </tr>
+<tr>
+        <td width='25%'>MRU:</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>
@@ -752,9 +922,9 @@ print <<END
         <td bgcolor='$color{'color20'}' colspan='4' width='100%'><b>$Lang::tr{'authentication'}</b></td>
 </tr>
 <tr>
-        <td width='25%'>$Lang::tr{'username'}</td>
+        <td width='25%'>$Lang::tr{'username'}&nbsp;<img src='/blob.gif' alt='*' /></td>
         <td width='25%'><input type='text' name='USERNAME' value='$pppsettings{'USERNAME'}' /></td>
-        <td width='25%'>$Lang::tr{'password'}</td>
+        <td width='25%'>$Lang::tr{'password'}&nbsp;</td>
         <td width='25%'><input type='password' name='PASSWORD' value='$pppsettings{'PASSWORD'}' /></td>
 </tr>
 <tr>
@@ -775,7 +945,7 @@ END
 }
 print <<END
         </select></td>
-        <td width='25%'>$Lang::tr{'script name'}&nbsp;<img src='/blob.gif' alt='*' /></td>
+        <td width='25%'>$Lang::tr{'script name'}</td>
         <td width='25%'><input type='text' name='LOGINSCRIPT' value='$pppsettings{'LOGINSCRIPT'}' /></td>
 </tr>
 <tr><td colspan='4' width='100%'><br></br></td></tr>
@@ -796,7 +966,7 @@ print <<END
 </tr>
 <tr><td colspan='4' width='100%'><br></br><hr></hr><br></br></td></tr>
 <tr>
-        <td width='25%'>$Lang::tr{'profile name'}</td>
+        <td width='25%'>$Lang::tr{'profile name'}&nbsp;<img src='/blob.gif' alt='*' /></td>
         <td width='25%'><input type='text' name='PROFILENAME' value='$pppsettings{'PROFILENAME'}'>
         <td colspan='2' width='50%'></td>
 </tr>
@@ -805,14 +975,16 @@ print <<END
 </tr>
 <tr>
         <td colspan='2' width='50%'>$Lang::tr{'legend'}:</td>
-        <td colspan='2' width='50%'><img src='/blob.gif' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td>
+        <td colspan='2' width='50%'><img src='/blob.gif' alt='*' />&nbsp;$Lang::tr{'required field'}</td>
 </tr>
-</table>
 END
 ;
-&Header::closebox();
 }
 
+print "</table>";
+
+&Header::closebox();
+
 print "</form>\n";
 
 &Header::closebigbox();
@@ -844,6 +1016,7 @@ sub initprofile
 {
         $pppsettings{'PROFILENAME'} = $Lang::tr{'unnamed'};
         $pppsettings{'COMPORT'} = 'ttyS0';
+        $pppsettings{'MONPORT'} = '';
         $pppsettings{'DTERATE'} = 115200;
         $pppsettings{'SPEAKER'} = 'off';
         $pppsettings{'RECONNECTION'} = 'persistent';
@@ -857,16 +1030,13 @@ sub initprofile
         $pppsettings{'ENCAP'} = '0';
         $pppsettings{'VPI'} = '1';
         $pppsettings{'VCI'} = '32';
-        $pppsettings{'PHONEBOOK'} = 'RELAY_PPP1';
+        $pppsettings{'ATM_DEV'} = '0';
+        $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;
@@ -876,7 +1046,15 @@ sub initprofile
         $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);