echo $util->getFooter();
}
- function handleRequest($request, $ids) {
+ function handleRequest($util, $request, $ids) {
global $CFG;
$query = array();
if (is_object($mail) && true == $util->authorized($mail->recipient)) {
$secret_id = $mail->secret_id;
$recipient = $mail->recipient;
+ $sender = $mail->sender;
if ($request == 'release') {
$amavisserver = $CFG->amavisd_db_host;
$query[] = "UPDATE msgrcpt SET rs = 'R' WHERE mail_id = '$mail_id'";
} else if ($request == 'delete') {
$query[] = "UPDATE msgrcpt SET rs = 'D' WHERE mail_id = '$mail_id'";
+ } else if ($request == 'block') {
+ $query[] = $sender;
} else {
error("Unknown operation [$request]");
exit;
$request = isset($_GET['op']) ? $_GET['op'] : '';
if ($loggedIn && isset($_GET['id'])) {
$ids = explode(',', $_GET['id']);
- $query = handleRequest($request, $ids);
- $success = $DB->update($query);
+ if ($request == 'block') {
+ // /add/(whitelist|blacklist)/(.+)
+ $query = handleRequest($util, $request, $ids);
+ $data = json_encode($query);
+ if ($util->isAdmin()) {
+ $method = '/add/blacklist';
+ } else {
+ $method = '/add/blacklist/' . $util->getUser();
+ }
+ $success = $util->makeRestCall($method, $data);
+ } else {
+ $query = handleRequest($util, $request, $ids);
+ $success = $DB->update($query);
+ }
if (! $success) {
- error("Message not released, contact administrator [$query]");
+ if ($request == 'block') {
+ error("Could not blacklist sender");
+ } else {
+ error("Message not released, contact administrator [$query]");
+ }
exit;
}
- header('Location: index.php');
+ header('Location: qtadmin.php');
} else if ($loggedIn && $request == 'purge') {
$marked = unserialize($_SESSION['marked']);
unset($_SESSION['marked']);
$query = array();
$error = array();
foreach ($marked as $mail_id) {
- $mail = $DB->getMail($mail_id);
- if (is_object($mail) && true == $util->authorized($mail->recipient)) {
+ $recipient = $DB->getRecipient($mail_id);
+ if ($recipient && true == $util->authorized($recipient)) {
$query[] = "delete from msgs where mail_id = '$mail_id'";
$query[] = "delete from msgrcpt where mail_id = '$mail_id'";
$query[] = "delete from quarantine where mail_id = '$mail_id'";
error("The following messages was not purged [$str], contact administrator");
exit;
}
- header('Location: index.php');
+ header('Location: qtadmin.php');
} else if ($loggedIn) {
- header('Location: index.php');
+ header('Location: qtadmin.php');
} else {
header('Location: auth.php');
}