]> git.proxmox.com Git - pmg-api.git/commitdiff
API2/Quarantine: refactor quarantine listing api
authorDominik Csapak <d.csapak@proxmox.com>
Thu, 10 Oct 2019 09:21:56 +0000 (11:21 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 17 Oct 2019 13:59:32 +0000 (15:59 +0200)
will be again used for the attachment quarantine

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-By: Stoiko Ivanov <s.ivanov@proxmox.com>
Tested-By: Stoiko Ivanov <s.ivanov@proxmox.com>
src/PMG/API2/Quarantine.pm

index 5b7170e3fc741fd1b3fca69193c1b9e9665fb5d7..ec93e802635eeeb1c935e07334c2b85878a1cb00 100644 (file)
@@ -524,6 +524,53 @@ __PACKAGE__->register_method ({
        return $res;
     }});
 
+my $quarantine_api = sub {
+    my ($param, $quartype, $check_pmail) = @_;
+
+    my $rpcenv = PMG::RESTEnvironment->get();
+    my $authuser = $rpcenv->get_user();
+
+    my $start = $param->{starttime} // (time - 86400);
+    my $end = $param->{endtime} // ($start + 86400);
+
+    my $select;
+    my $pmail;
+    if ($check_pmail) {
+       my $role = $rpcenv->get_role();
+       $pmail = $verify_optional_pmail->($authuser, $role, $param->{pmail});
+       $select = "SELECT * " .
+                 "FROM CMailStore, CMSReceivers WHERE " .
+                 "pmail = ? AND time >= $start AND time < $end AND " .
+                 "QType = '$quartype' AND CID = CMailStore_CID AND RID = CMailStore_RID " .
+                 "AND Status = 'N' ORDER BY pmail, time, receiver";
+    } else {
+       $select = "SELECT * " .
+                 "FROM CMailStore, CMSReceivers WHERE " .
+                 "time >= $start AND time < $end AND " .
+                 "QType = '$quartype' AND CID = CMailStore_CID AND RID = CMailStore_RID " .
+                 "AND Status = 'N' ORDER BY time, receiver";
+    }
+
+    my $res = [];
+
+    my $dbh = PMG::DBTools::open_ruledb();
+
+    my $sth = $dbh->prepare($select);
+
+    if ($check_pmail) {
+       $sth->execute($pmail);
+    } else {
+       $sth->execute();
+    }
+
+    while (my $ref = $sth->fetchrow_hashref()) {
+       my $data = $parse_header_info->($ref);
+       push @$res, $data;
+    }
+
+    return $res;
+};
+
 __PACKAGE__->register_method ({
     name => 'spam',
     path => 'spam',
@@ -585,35 +632,7 @@ __PACKAGE__->register_method ({
     },
     code => sub {
        my ($param) = @_;
-
-       my $rpcenv = PMG::RESTEnvironment->get();
-       my $authuser = $rpcenv->get_user();
-       my $role = $rpcenv->get_role();
-
-       my $pmail = $verify_optional_pmail->($authuser, $role, $param->{pmail});
-
-       my $res = [];
-
-       my $dbh = PMG::DBTools::open_ruledb();
-
-       my $start = $param->{starttime} // (time - 86400);
-       my $end = $param->{endtime} // ($start + 86400);
-
-       my $sth = $dbh->prepare(
-           "SELECT * " .
-           "FROM CMailStore, CMSReceivers WHERE " .
-           "pmail = ? AND time >= $start AND time < $end AND " .
-           "QType = 'S' AND CID = CMailStore_CID AND RID = CMailStore_RID " .
-           "AND Status = 'N' ORDER BY pmail, time, receiver");
-
-       $sth->execute($pmail);
-
-       while (my $ref = $sth->fetchrow_hashref()) {
-           my $data = $parse_header_info->($ref);
-           push @$res, $data;
-       }
-
-       return $res;
+       return $quarantine_api->($param, 'S', 1);
     }});
 
 __PACKAGE__->register_method ({
@@ -676,32 +695,7 @@ __PACKAGE__->register_method ({
     },
     code => sub {
        my ($param) = @_;
-
-       my $rpcenv = PMG::RESTEnvironment->get();
-       my $authuser = $rpcenv->get_user();
-
-       my $res = [];
-
-       my $dbh = PMG::DBTools::open_ruledb();
-
-       my $start = $param->{starttime} // (time - 86400);
-       my $end = $param->{endtime} // ($start + 86400);
-
-       my $sth = $dbh->prepare(
-           "SELECT * " .
-           "FROM CMailStore, CMSReceivers WHERE " .
-           "time >= $start AND time < $end AND " .
-           "QType = 'V' AND CID = CMailStore_CID AND RID = CMailStore_RID " .
-           "AND Status = 'N' ORDER BY time, receiver");
-
-       $sth->execute();
-
-       while (my $ref = $sth->fetchrow_hashref()) {
-           my $data = $parse_header_info->($ref);
-           push @$res, $data;
-       }
-
-       return $res;
+       return $quarantine_api->($param, 'V');
     }});
 
 __PACKAGE__->register_method ({