]> git.proxmox.com Git - pmg-api.git/blobdiff - src/PMG/Service/pmgproxy.pm
pass TLS 1.3 ciphersuites if set
[pmg-api.git] / src / PMG / Service / pmgproxy.pm
index 6249c55bcbc3079bcc1ed96583597429e5e185d6..cde6d3c81665a72f3180cee9e96128d3a6fd9c3d 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,
     };
@@ -192,12 +198,12 @@ sub get_index {
                $lang = $newlang;
            }
        }
-       my $ticket = PVE::APIServer::Formatter::extract_auth_cookie($cookie, $server->{cookie_name});
+       my $ticket = PVE::APIServer::Formatter::extract_auth_value($cookie, $server->{cookie_name});
 
        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})) {
@@ -215,6 +221,21 @@ sub get_index {
        $langfile = 1;
     }
 
+    my $wtversionraw = PVE::Tools::file_read_firstline("$widgettoolkit_dir/proxmoxlib.js");
+    my $wtversion = '';
+    if ($wtversionraw =~ m|^// (.*)$|) {
+       $wtversion = $1;
+    };
+
+    my $versionraw = PVE::Tools::file_read_firstline("$gui_base_dir/js/pmgmanagerlib.js");
+    my $version = '';
+    if ($versionraw =~ m|^// (.*)$|) {
+       $version = $1;
+    };
+
+    my $cfg = PMG::Config->new();
+    my $quarantinelink = $cfg->get('spamquar', 'quarantinelink');
+
     $username = '' if !$username;
 
     my $page = '';
@@ -227,6 +248,9 @@ sub get_index {
        console => $args->{console},
        nodename => $nodename,
        debug => $args->{debug} || $server->{debug},
+       version => $version,
+       wtversion => $wtversion,
+       quarantinelink => $quarantinelink,
     };
 
     my $template_name;