[Web] Add smtp and header from to quarantine items, add more info to qhandler, allow to open qhandler links from qitem details

This commit is contained in:
andryyy
2020-06-06 13:25:32 +02:00
parent f9b8d386bc
commit b93371ca0a
19 changed files with 225 additions and 31 deletions

View File

@@ -16,7 +16,7 @@ function quarantine($_action, $_data = null) {
'msg' => 'access_denied'
)
)));
return;
return false;
}
$stmt = $pdo->prepare('SELECT `id` FROM `quarantine` LEFT OUTER JOIN `user_acl` ON `user_acl`.`username` = `rcpt`
WHERE SHA2(CONCAT(`id`, `qid`), 256) = :hash
@@ -32,7 +32,7 @@ function quarantine($_action, $_data = null) {
'msg' => 'access_denied'
)
)));
return;
return false;
}
else {
$stmt = $pdo->prepare("DELETE FROM `quarantine` WHERE id = :id");
@@ -59,7 +59,7 @@ function quarantine($_action, $_data = null) {
'msg' => 'access_denied'
)
)));
return;
return false;
}
$stmt = $pdo->prepare('SELECT `id` FROM `quarantine` LEFT OUTER JOIN `user_acl` ON `user_acl`.`username` = `rcpt`
WHERE SHA2(CONCAT(`id`, `qid`), 256) = :hash
@@ -75,7 +75,7 @@ function quarantine($_action, $_data = null) {
'msg' => 'access_denied'
)
)));
return;
return false;
}
else {
$stmt = $pdo->prepare('SELECT `msg`, `qid`, `sender`, `rcpt` FROM `quarantine` WHERE `id` = :id');
@@ -96,7 +96,7 @@ function quarantine($_action, $_data = null) {
'msg' => array('release_send_failed', 'Cannot determine Postfix host')
)
)));
return;
return false;
}
try {
$release_format = $redis->Get('Q_RELEASE_FORMAT');
@@ -109,7 +109,7 @@ function quarantine($_action, $_data = null) {
'msg' => array('redis_error', $e)
)
)));
return;
return false;
}
if ($release_format == 'attachment') {
try {
@@ -137,7 +137,7 @@ function quarantine($_action, $_data = null) {
'msg' => array('release_send_failed', 'Cannot determine Postfix host')
)
)));
return;
return false;
}
$mail->Host = $postfix;
$mail->Port = 590;
@@ -162,7 +162,7 @@ function quarantine($_action, $_data = null) {
'msg' => array('release_send_failed', $e->errorMessage())
)
)));
return;
return false;
}
}
elseif ($release_format == 'raw') {
@@ -199,7 +199,7 @@ function quarantine($_action, $_data = null) {
'msg' => 'Postfix returned SMTP code ' . $smtp_resource . ', expected ' . $postfix_talk[$i][0]
)
)));
return;
return false;
}
if ($postfix_talk[$i][1] !== '') {
fputs($smtp_connection, $postfix_talk[$i][1]);
@@ -809,13 +809,36 @@ function quarantine($_action, $_data = null) {
if (!is_numeric($_data) || empty($_data)) {
return false;
}
$stmt = $pdo->prepare('SELECT `rcpt`, `score`, `symbols`, `msg`, `domain` FROM `quarantine` WHERE `id`= :id');
$stmt = $pdo->prepare('SELECT * FROM `quarantine` WHERE `id`= :id');
$stmt->execute(array(':id' => $_data));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (hasMailboxObjectAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $row['rcpt'])) {
return $row;
}
logger(array('return' => array(
array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_data_log),
'msg' => 'access_denied'
)
)));
return false;
break;
case 'hash_details':
$hash = trim($_data);
if (preg_match("/^([a-f0-9]{64})$/", $hash) === false) {
logger(array('return' => array(
array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_data_log),
'msg' => 'access_denied'
)
)));
return false;
}
$stmt = $pdo->prepare('SELECT * FROM `quarantine` WHERE SHA2(CONCAT(`id`, `qid`), 256) = :hash');
$stmt->execute(array(':hash' => $hash));
return $stmt->fetch(PDO::FETCH_ASSOC);
break;
}
}