]> git.proxmox.com Git - pmg-api.git/blobdiff - src/PMG/Service/pmgproxy.pm
pass disable TLS 1.2/1.3 options
[pmg-api.git] / src / PMG / Service / pmgproxy.pm
index ea58b5082182ff679ee8e83902f4a01a975d16be..5334e6f31879442de8bc2af8aeda3b187ceaa67d 100755 (executable)
@@ -21,6 +21,7 @@ use PVE::APIServer::Utils;
 
 use PMG::HTTPServer;
 use PMG::API2;
+use PMG::Config;
 
 use Template;
 
@@ -63,8 +64,8 @@ sub init {
     my $lockfh = IO::File->new(">>${accept_lock_fn}") ||
        die "unable to open lock file '${accept_lock_fn}' - $!\n";
 
-    my $family = PVE::Tools::get_host_address_family($self->{nodename});
-    my $socket = $self->create_reusable_socket(8006, undef, $family);
+    my $listen_ip = $proxyconf->{LISTEN_IP};
+    my $socket = $self->create_reusable_socket(8006, $listen_ip);
 
     my $dirs = {};
 
@@ -82,6 +83,7 @@ sub init {
     add_dirs($dirs, '/pmg-docs/' => '/usr/share/pmg-docs/');
     add_dirs($dirs, '/pmg-docs/api-viewer/extjs/' => $extjs_dir);
     add_dirs($dirs, '/pwt/css/' => "$widgettoolkit_dir/css/");
+    add_dirs($dirs, '/pwt/images/' => "$widgettoolkit_dir/images/");
 
     $self->{server_config} = {
        title => 'Proxmox Mail Gateway API',
@@ -102,6 +104,7 @@ sub init {
            cert_file => '/etc/pmg/pmg-api.pem',
            dh => 'skip2048',
            cipher_list => $proxyconf->{CIPHERS},
+           ciphersuites => $proxyconf->{CIPHERSUITES},
            honor_cipher_order => $proxyconf->{HONOR_CIPHER_ORDER},
        },
        compression => $proxyconf->{COMPRESSION},
@@ -116,6 +119,9 @@ sub init {
            '/proxmoxlib.js' => {
                file => '/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js',
            },
+           '/qrcode.min.js' => {
+               file => '/usr/share/javascript/qrcodejs/qrcode.min.js',
+           },
        },
        dirs => $dirs,
     };
@@ -123,6 +129,12 @@ sub init {
     if (defined($proxyconf->{DHPARAMS})) {
        $self->{server_config}->{ssl}->{dh_file} = $proxyconf->{DHPARAMS};
     }
+    if (defined($proxyconf->{DISABLE_TLS_1_2})) {
+       $self->{server_config}->{ssl}->{tlsv1_2} = !$proxyconf->{DISABLE_TLS_1_2};
+    }
+    if (defined($proxyconf->{DISABLE_TLS_1_3})) {
+       $self->{server_config}->{ssl}->{tlsv1_3} = !$proxyconf->{DISABLE_TLS_1_3};
+    }
 }
 
 sub run {
@@ -197,7 +209,7 @@ sub get_index {
        if ($ticket =~ m/^PMGQUAR:/) {
            $username = PMG::Ticket::verify_quarantine_ticket($ticket, 1);
        } else {
-           $username = PMG::Ticket::verify_ticket($ticket, 1);
+           $username = PMG::Ticket::verify_ticket($ticket, undef, 1);
        }
     } else {
        if (defined($args->{ticket})) {
@@ -227,6 +239,8 @@ sub get_index {
        $version = $1;
     };
 
+    my $cfg = PMG::Config->new();
+    my $quarantinelink = $cfg->get('spamquar', 'quarantinelink');
 
     $username = '' if !$username;
 
@@ -242,6 +256,7 @@ sub get_index {
        debug => $args->{debug} || $server->{debug},
        version => $version,
        wtversion => $wtversion,
+       quarantinelink => $quarantinelink,
     };
 
     my $template_name;