| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | 
							- <?php
 
- function mailq($_action, $_data = null) {
 
-   if ($_SESSION['mailcow_cc_role'] != "admin") {
 
-     $_SESSION['return'][] = array(
 
-       'type' => 'danger',
 
-       'log' => array(__FUNCTION__, $_action, $_data),
 
-       'msg' => 'access_denied'
 
-     );
 
-     return false;
 
-   }
 
-   function process_mailq_output($returned_output, $_action, $_data) {
 
-     if ($returned_output !== NULL) {
 
-       if ($_action == 'cat') {
 
-         logger(array('return' => array(
 
-           array(
 
-             'type' => 'success',
 
-             'log' => array(__FUNCTION__, $_action, $_data),
 
-             'msg' => 'queue_cat_success'
 
-           )
 
-         )));
 
-         return $returned_output;
 
-       }
 
-       else {
 
-         if (isset($returned_output['type']) && $returned_output['type'] == 'danger') {
 
-           $_SESSION['return'][] = array(
 
-             'type' => 'danger',
 
-             'log' => array(__FUNCTION__, $_action, $_data),
 
-             'msg' => 'Error: ' . $returned_output['msg']
 
-           );
 
-         }
 
-         if (isset($returned_output['type']) && $returned_output['type'] == 'success') {
 
-           $_SESSION['return'][] = array(
 
-             'type' => 'success',
 
-             'log' => array(__FUNCTION__, $_action, $_data),
 
-             'msg' => 'queue_command_success'
 
-           );
 
-         }
 
-       }
 
-     }
 
-     else {
 
-       $_SESSION['return'][] = array(
 
-         'type' => 'danger',
 
-         'log' => array(__FUNCTION__, $_action, $_data),
 
-         'msg' => 'unknown'
 
-       );
 
-     }
 
-   }
 
-   if ($_action == 'get') {
 
-     $mailq_lines = docker('post', 'postfix-mailcow', 'exec', array('cmd' => 'mailq', 'task' => 'list'));
 
-     $lines = 0;
 
-     // Hard limit to 10000 items
 
-     foreach (preg_split("/((\r?\n)|(\r\n?))/", $mailq_lines) as $mailq_item) if ($lines++ < 10000) {
 
-       if (empty($mailq_item) || $mailq_item == '1') {
 
-         continue;
 
-       }
 
-       $mq_line = json_decode($mailq_item, true);
 
-       if ($mq_line !== NULL) {
 
-         $rcpts = array();
 
-         foreach ($mq_line['recipients'] as $rcpt) {
 
-           if (isset($rcpt['delay_reason'])) {
 
-             $rcpts[] = $rcpt['address'] . ' (' . $rcpt['delay_reason'] . ')';
 
-           }
 
-           else {
 
-             $rcpts[] = $rcpt['address'];
 
-           }
 
-         }
 
-         if (!empty($rcpts)) {
 
-           $mq_line['recipients'] = $rcpts;
 
-         }
 
-         $line[] = $mq_line;
 
-       }
 
-     }
 
-     if (!isset($line) || empty($line)) {
 
-       return '[]';
 
-     }
 
-     else {
 
-       return json_encode($line);
 
-     }
 
-   }
 
-   elseif ($_action == 'delete') {
 
-     if (!is_array($_data['qid'])) {
 
-       $qids = array();
 
-       $qids[] = $_data['qid'];
 
-     }
 
-     else {
 
-       $qids = $_data['qid'];
 
-     }
 
-     $docker_return = docker('post', 'postfix-mailcow', 'exec', array('cmd' => 'mailq', 'task' => 'delete', 'items' => $qids));
 
-     process_mailq_output(json_decode($docker_return, true), $_action, $_data);
 
-   }
 
-   elseif ($_action == 'cat') {
 
-     if (!is_array($_data['qid'])) {
 
-       $qids = array();
 
-       $qids[] = $_data['qid'];
 
-     }
 
-     else {
 
-       $qids = $_data['qid'];
 
-     }
 
-     $docker_return = docker('post', 'postfix-mailcow', 'exec', array('cmd' => 'mailq', 'task' => 'cat', 'items' => $qids));
 
-     return process_mailq_output($docker_return, $_action, $_data);
 
-   }
 
-   elseif ($_action == 'edit') {
 
-     if (in_array($_data['action'], array('hold', 'unhold', 'deliver'))) {
 
-       if (!is_array($_data['qid'])) {
 
-         $qids = array();
 
-         $qids[] = $_data['qid'];
 
-       }
 
-       else {
 
-         $qids = $_data['qid'];
 
-       }
 
-       if (!empty($qids)) {
 
-         $docker_return = docker('post', 'postfix-mailcow', 'exec', array('cmd' => 'mailq', 'task' => $_data['action'], 'items' => $qids));
 
-         process_mailq_output(json_decode($docker_return, true), $_action, $_data);
 
-       }
 
-     }
 
-     if (in_array($_data['action'], array('flush', 'super_delete'))) {
 
-       $docker_return = docker('post', 'postfix-mailcow', 'exec', array('cmd' => 'mailq', 'task' => $_data['action']));
 
-       process_mailq_output(json_decode($docker_return, true), $_action, $_data);
 
-     }
 
-   }
 
- }
 
 
  |