]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - html/cgi-bin/ovpnmain.cgi
Merge remote-tracking branch 'amarx/10538' into next
[people/teissler/ipfire-2.x.git] / html / cgi-bin / ovpnmain.cgi
index 8736260e8fadcc43a9111212a1fb64b435c98135..0cb41696fb58db26c1f61368ee5595c0d8ac52b7 100644 (file)
@@ -1023,7 +1023,6 @@ unless(-d "${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}"){mkdir "${General
 ### Save main settings
 ###
 
-
 if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cgiparams{'KEY'} eq '') {
     &General::readhash("${General::swroot}/ovpn/settings", \%vpnsettings);
     #DAN do we really need (to to check) this value? Besides if we listen on blue and orange too,
@@ -1034,8 +1033,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cg
        goto SETTINGS_ERROR;
        }
     }
-    if ($errormessage) { goto SETTINGS_ERROR; }
-    
+
     if (! &General::validipandmask($cgiparams{'DOVPN_SUBNET'})) {
             $errormessage = $Lang::tr{'ovpn subnet is invalid'};
                        goto SETTINGS_ERROR;
@@ -1520,6 +1518,18 @@ END
        print `/usr/bin/openssl x509 -in ${General::swroot}/ovpn/certs/servercert.pem`;
        exit(0);
     }
+
+###
+### Download tls-auth key
+###
+}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download tls-auth key'}) {
+    if ( -f "${General::swroot}/ovpn/certs/ta.key" ) {
+       print "Content-Type: application/octet-stream\r\n";
+       print "Content-Disposition: filename=ta.key\r\n\r\n";
+       print `/bin/cat ${General::swroot}/ovpn/certs/ta.key`;
+       exit(0);
+    }
+
 ###
 ### Form for generating a root certificate
 ###
@@ -2359,6 +2369,28 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
                exit(0);
     }
 
+###
+### Display tls-auth key
+###
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'show tls-auth key'}) {
+
+    if (! -e "${General::swroot}/ovpn/certs/ta.key") {
+       $errormessage = $Lang::tr{'not present'};
+       } else {
+               &Header::showhttpheaders();
+               &Header::openpage($Lang::tr{'ovpn'}, 1, '');
+               &Header::openbigbox('100%', 'LEFT', '', '');
+               &Header::openbox('100%', 'LEFT', "$Lang::tr{'ta key'}:");
+               my $output = `/bin/cat ${General::swroot}/ovpn/certs/ta.key`;
+               $output = &Header::cleanhtml($output,"y");
+               print "<pre>$output</pre>\n";
+               &Header::closebox();
+               print "<div align='center'><a href='/cgi-bin/ovpnmain.cgi'>$Lang::tr{'back'}</a></div>";
+               &Header::closebigbox();
+               &Header::closepage();
+               exit(0);
+    }
+
 ###
 ### Display Certificate Revoke List
 ###
@@ -3145,7 +3177,6 @@ my $complzoactive;
 my $mssfixactive;
 my $authactive;
 my $n2nfragment;
-my $authactive;
 my @n2nmtudisc = split(/ /, (grep { /^mtu-disc/ } @firen2nconf)[0]);
 my @n2nproto2 = split(/ /, (grep { /^proto/ } @firen2nconf)[0]);
 my @n2nproto = split(/-/, $n2nproto2[1]);
@@ -4470,7 +4501,7 @@ if ($cgiparams{'TYPE'} eq 'net') {
                                <option value='CAMELLIA-256-CBC'        $selected{'DCIPHER'}{'CAMELLIA-256-CBC'}>CAMELLIA-CBC (256 $Lang::tr{'bit'})</option>
                                <option value='CAMELLIA-192-CBC'        $selected{'DCIPHER'}{'CAMELLIA-192-CBC'}>CAMELLIA-CBC (192 $Lang::tr{'bit'})</option>
                                <option value='CAMELLIA-128-CBC'        $selected{'DCIPHER'}{'CAMELLIA-128-CBC'}>CAMELLIA-CBC (128 $Lang::tr{'bit'})</option>
-                               <option value='AES-256-CBC'             $selected{'DCIPHER'}{'AES-256-CBC'}>AES-CBC (256 $Lang::tr{'bit'})</option>
+                               <option value='AES-256-CBC'             $selected{'DCIPHER'}{'AES-256-CBC'}>AES-CBC (256 $Lang::tr{'bit'}, $Lang::tr{'default'})</option>
                                <option value='AES-192-CBC'             $selected{'DCIPHER'}{'AES-192-CBC'}>AES-CBC (192 $Lang::tr{'bit'})</option>
                                <option value='AES-128-CBC'             $selected{'DCIPHER'}{'AES-128-CBC'}>AES-CBC (128 $Lang::tr{'bit'})</option>
                                <option value='DES-EDE3-CBC'            $selected{'DCIPHER'}{'DES-EDE3-CBC'}>DES-EDE3-CBC (192 $Lang::tr{'bit'})</option>
@@ -5010,7 +5041,7 @@ END
        my $id = 0;
        my $gif;
        my $col1="";
-       foreach my $key (sort { ncmp ($confighash{$a}[1],$confighash{$b}[1]) } keys %confighash) {
+       foreach my $key (sort { ncmp ($confighash{$a}[3],$confighash{$b}[3]) } sort { ncmp ($confighash{$a}[1],$confighash{$b}[1]) } keys %confighash) {
        if ($confighash{$key}[0] eq 'on') { $gif = 'on.gif'; } else { $gif = 'off.gif'; }
        if ($id % 2) {
                print "<tr>";
@@ -5205,6 +5236,8 @@ END
     ;
        &Header::closebox();
        }
+
+    # CA/key listing
     &Header::openbox('100%', 'LEFT', "$Lang::tr{'certificate authorities'}");
     print <<END;
     <table width='100%' cellspacing='1' cellpadding='0' class='tbl'>
@@ -5216,7 +5249,12 @@ END
 END
     ;
     my $col1="bgcolor='$color{'color22'}'";
-       my $col2="bgcolor='$color{'color20'}'";
+    my $col2="bgcolor='$color{'color20'}'";
+    # DH parameter line
+    my $col3="bgcolor='$color{'color22'}'";
+    # ta.key line
+    my $col4="bgcolor='$color{'color20'}'";
+
     if (-f "${General::swroot}/ovpn/ca/cacert.pem") {
                my $casubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/ovpn/ca/cacert.pem`;
                $casubject    =~ /Subject: (.*)[\n]/;
@@ -5227,15 +5265,16 @@ END
                <tr>
                        <td class='base' $col1>$Lang::tr{'root certificate'}</td>
                        <td class='base' $col1>$casubject</td>
-               <form method='post' name='frmrootcrta'><td width='3%' align='center' $col1>
+                       <form method='post' name='frmrootcrta'><td width='3%' align='center' $col1>
                        <input type='hidden' name='ACTION' value='$Lang::tr{'show root certificate'}' />
                        <input type='image' name='$Lang::tr{'edit'}' src='/images/info.gif' alt='$Lang::tr{'show root certificate'}' title='$Lang::tr{'show root certificate'}' width='20' height='20' border='0' />
-               </td></form>
-               <form method='post' name='frmrootcrtb'><td width='3%' align='center' $col1>
+                       </form>
+                       <form method='post' name='frmrootcrtb'><td width='3%' align='center' $col1>
                        <input type='image' name='$Lang::tr{'download root certificate'}' src='/images/media-floppy.png' alt='$Lang::tr{'download root certificate'}' title='$Lang::tr{'download root certificate'}' border='0' />
                        <input type='hidden' name='ACTION' value='$Lang::tr{'download root certificate'}' />
-               </td></form>
-               <td width='4%' $col1>&nbsp;</td></tr>
+                       </form>
+                       <td width='4%' $col1>&nbsp;</td>
+               </tr>
 END
                ;
     } else {
@@ -5244,7 +5283,8 @@ END
                <tr>
                        <td class='base' $col1>$Lang::tr{'root certificate'}:</td>
                        <td class='base' $col1>$Lang::tr{'not present'}</td>
-                       <td colspan='3' $col1>&nbsp;</td></tr>
+                       <td colspan='3' $col1>&nbsp;</td>
+               </tr>
 END
                ;
     }
@@ -5260,15 +5300,16 @@ END
                <tr>
                        <td class='base' $col2>$Lang::tr{'host certificate'}</td>
                        <td class='base' $col2>$hostsubject</td>
-               <form method='post' name='frmhostcrta'><td width='3%' align='center' $col2>
+                       <form method='post' name='frmhostcrta'><td width='3%' align='center' $col2>
                        <input type='hidden' name='ACTION' value='$Lang::tr{'show host certificate'}' />
                        <input type='image' name='$Lang::tr{'show host certificate'}' src='/images/info.gif' alt='$Lang::tr{'show host certificate'}' title='$Lang::tr{'show host certificate'}' width='20' height='20' border='0' />
-               </td></form>
-               <form method='post' name='frmhostcrtb'><td width='3%' align='center' $col2>
+                       </form>
+                       <form method='post' name='frmhostcrtb'><td width='3%' align='center' $col2>
                        <input type='image' name="$Lang::tr{'download host certificate'}" src='/images/media-floppy.png' alt="$Lang::tr{'download host certificate'}" title="$Lang::tr{'download host certificate'}" border='0' />
                        <input type='hidden' name='ACTION' value="$Lang::tr{'download host certificate'}" />
-               </td></form>
-               <td width='4%' $col2>&nbsp;</td></tr>
+                       </td></form>
+                       <td width='4%' $col2>&nbsp;</td>
+               </tr>
 END
                ;
     } else {
@@ -5277,7 +5318,75 @@ END
                <tr>
                        <td width='25%' class='base' $col2>$Lang::tr{'host certificate'}:</td>
                        <td class='base' $col2>$Lang::tr{'not present'}</td>
-               </td><td colspan='3' $col2>&nbsp;</td></tr>
+                       </td><td colspan='3' $col2>&nbsp;</td>
+               </tr>
+END
+               ;
+    }
+
+    # Adding DH parameter to chart
+    if (-f "${General::swroot}/ovpn/ca/dh1024.pem") {
+               my $dhsubject = `/usr/bin/openssl dhparam -text -in ${General::swroot}/ovpn/ca/dh1024.pem`;
+               $dhsubject    =~ /    (.*)[\n]/;
+               $dhsubject    = $1;
+
+
+       print <<END;
+               <tr>
+                       <td class='base' $col3>$Lang::tr{'dh parameter'}</td>
+                       <td class='base' $col3>$dhsubject</td>
+                       <form method='post' name='frmdhparam'><td width='3%' align='center' $col3>
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'show dh'}' />
+                       <input type='image' name='$Lang::tr{'show dh'}' src='/images/info.gif' alt='$Lang::tr{'show dh'}' title='$Lang::tr{'show dh'}' width='20' height='20' border='0' />
+                       </form>
+                       <form method='post' name='frmdhparam'><td width='3%' align='center' $col3>
+                       </form>
+                       <td width='4%' $col3>&nbsp;</td>
+               </tr>
+END
+               ;
+    } else {
+               # Nothing
+               print <<END;
+               <tr>
+                       <td width='25%' class='base' $col3>$Lang::tr{'dh parameter'}:</td>
+                       <td class='base' $col3>$Lang::tr{'not present'}</td>
+                       </td><td colspan='3' $col3>&nbsp;</td>
+               </tr>
+END
+               ;
+    }
+
+    # Adding ta.key to chart
+    if (-f "${General::swroot}/ovpn/certs/ta.key") {
+               my $tasubject = `/bin/cat ${General::swroot}/ovpn/certs/ta.key`;
+               $tasubject    =~ /# (.*)[\n]/;
+               $tasubject    = $1;
+               print <<END;
+
+               <tr>
+                       <td class='base' $col4>$Lang::tr{'ta key'}</td>
+                       <td class='base' $col4>$tasubject</td>
+                       <form method='post' name='frmtakey'><td width='3%' align='center' $col4>
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'show tls-auth key'}' />
+                       <input type='image' name='$Lang::tr{'edit'}' src='/images/info.gif' alt='$Lang::tr{'show tls-auth key'}' title='$Lang::tr{'show tls-auth key'}' width='20' height='20' border='0' />
+                       </form>
+                       <form method='post' name='frmtakey'><td width='3%' align='center' $col4>
+                       <input type='image' name='$Lang::tr{'download tls-auth key'}' src='/images/media-floppy.png' alt='$Lang::tr{'download tls-auth key'}' title='$Lang::tr{'download tls-auth key'}' border='0' />
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'download tls-auth key'}' />
+                       </form>
+                       <td width='4%' $col4>&nbsp;</td>
+               </tr>
+END
+               ;
+    } else {
+               # Nothing
+               print <<END;
+               <tr>
+                       <td width='25%' class='base' $col4>$Lang::tr{'ta key'}:</td>
+                       <td class='base' $col4>$Lang::tr{'not present'}</td>
+                       <td colspan='3' $col4>&nbsp;</td>
+               </tr>
 END
                ;
     }
@@ -5340,6 +5449,9 @@ END
        <hr size='1'>
        <form method='post' enctype='multipart/form-data'>
        <table width='100%' border='0'cellspacing='1' cellpadding='0'>
+       <tr>
+               <td class'base'><b>$Lang::tr{'upload ca certificate'}</b></td>
+       </tr>
        <tr>
                <td class='base' nowrap='nowrap'>$Lang::tr{'ca name'}:</td>
                <td nowrap='nowrap'><input type='text' name='CA_NAME' value='$cgiparams{'CA_NAME'}' size='15' align='left'/></td>
@@ -5367,9 +5479,6 @@ END
                <td nowrap='nowrap'><size='15' align='left'/></td>
                <td nowrap='nowrap'><input type='submit' name='ACTION' value='$Lang::tr{'generate dh key'}' /></td>
        </tr>
-       <tr>
-               <td colspan='4' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'show dh'}' /></td>
-       </tr>
        </table>
        
        <tr><td colspan=4><hr /></td></tr><tr>