]> git.proxmox.com Git - pmg-api.git/commitdiff
pmgspamreport: create quarantine tickets
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 27 Apr 2017 07:42:46 +0000 (09:42 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 27 Apr 2017 07:42:46 +0000 (09:42 +0200)
PMG/CLI/pmgspamreport.pm
PMG/Ticket.pm

index 7f11eaac6bec5e53bb22a117590f46d3e98bf9a0..b387739c4a5da2fb55b20f443178777a14cf7fcb 100755 (executable)
@@ -17,6 +17,7 @@ use PVE::CLIHandler;
 
 use PMG::RESTEnvironment;
 use PMG::Utils;
+use PMG::Ticket;
 use PMG::DBTools;
 use PMG::RuleDB;
 use PMG::Config;
@@ -81,7 +82,6 @@ sub get_item_data {
     $data->{date} = strftime("%F", localtime($ref->{time}));
     $data->{time} = strftime("%H:%M:%S", localtime($ref->{time}));
  
-    # fixme: $data->{ticket} = Proxmox::Utils::create_ticket ($ref);
     $data->{bytes} = $ref->{bytes};
     $data->{spamlevel} = $ref->{spamlevel};
     $data->{spaminfo} = $ref->{info};
@@ -94,9 +94,10 @@ sub get_item_data {
     $title .= sprintf("Virus info: %s\n", encode_entities ($ref->{info})) if $ref->{qtype} eq 'V';
     $title .= sprintf("File: %s", encode_entities($ref->{file}));
 
-    # fixme: urlencode?
     $data->{title} = $title;
 
+    $data->{ticket} = PMG::Ticket::assemble_quarantine_ticket($ref);
+
     return $data;
 }
 
@@ -284,8 +285,7 @@ __PACKAGE__->register_method ({
                
            if ($template) {
                if (!$extern) {
-                   # fixme: my $ticket = Proxmox::Utils::create_ticket ($lastref);
-                   my $ticket = "TEST";
+                   my $ticket = PMG::Ticket::assemble_quarantine_ticket($lastref);
                    $data->{ticket} = $ticket;
                    $data->{managehref} = "https://$fqdn:$port?ticket=$ticket";
                    $data->{mailcount} = $mailcount;
index 917428ca6a56f2cf781d2b696ad3d98588a1b6c5..9f914e1c69975875f65847f0cdfb8297a846a878 100644 (file)
@@ -206,4 +206,28 @@ sub verify_vnc_ticket {
        $rsa_pub, 'PMGVNC', $ticket, $secret_data, -20, 40, $noerr);
 }
 
+sub assemble_quarantine_ticket {
+    my ($ref) = @_;
+
+    my $rsa_priv = PVE::INotify::read_file('auth_priv_key');
+
+    my $data = "$ref->{cid}:$ref->{rid}";
+
+    my $secret_data = "$ref->{cid}:$ref->{rid}:$ref->{time}:$ref->{ticketid}";
+
+    return PVE::Ticket::assemble_rsa_ticket(
+       $rsa_priv, 'PMGQUAR', $data, $secret_data);
+}
+
+sub verify_quarantine_ticket {
+    my ($ticket, $ref, $lifetime, $noerr) = @_;
+
+    my $rsa_pub = PVE::INotify::read_file('auth_pub_key');
+
+    my $secret_data = "$ref->{cid}:$ref->{rid}:$ref->{time}:$ref->{ticketid}";
+
+    return PVE::Ticket::verify_rsa_ticket(
+       $rsa_pub, 'PMGQUAR', $ticket, $secret_data, -20, $lifetime*60, $noerr);
+}
+
 1;