<?php | |
function quota_notification($_action, $_data = null) { | |
global $redis; | |
$_data_log = $_data; | |
if ($_SESSION['mailcow_cc_role'] != "admin") { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => 'access_denied' | |
); | |
return false; | |
} | |
switch ($_action) { | |
case 'edit': | |
$retention_size = $_data['retention_size']; | |
if ($_data['release_format'] == 'attachment' || $_data['release_format'] == 'raw') { | |
$release_format = $_data['release_format']; | |
} | |
else { | |
$release_format = 'raw'; | |
} | |
$subject = $_data['subject']; | |
$sender = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $_data['sender']); | |
if (filter_var($sender, FILTER_VALIDATE_EMAIL) === false) { | |
$sender = ''; | |
} | |
$html = $_data['html_tmpl']; | |
try { | |
$redis->Set('QW_SENDER', $sender); | |
$redis->Set('QW_SUBJ', $subject); | |
$redis->Set('QW_HTML', $html); | |
} | |
catch (RedisException $e) { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => array('redis_error', $e) | |
); | |
return false; | |
} | |
$_SESSION['return'][] = array( | |
'type' => 'success', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => 'saved_settings' | |
); | |
break; | |
case 'get': | |
try { | |
$settings['subject'] = $redis->Get('QW_SUBJ'); | |
$settings['sender'] = $redis->Get('QW_SENDER'); | |
$settings['html_tmpl'] = htmlspecialchars($redis->Get('QW_HTML')); | |
if (empty($settings['html_tmpl'])) { | |
$settings['html_tmpl'] = htmlspecialchars(file_get_contents("/tpls/quota.tpl")); | |
} | |
} | |
catch (RedisException $e) { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => array('redis_error', $e) | |
); | |
return false; | |
} | |
return $settings; | |
break; | |
} | |
} | |
function quota_notification_bcc($_action, $_data = null) { | |
global $redis; | |
$_data_log = $_data; | |
if ($_SESSION['mailcow_cc_role'] != "admin" && $_SESSION['mailcow_cc_role'] != "domainadmin") { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => 'access_denied' | |
); | |
return false; | |
} | |
switch ($_action) { | |
case 'edit': | |
$domain = $_data['domain']; | |
if (!hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => 'access_denied' | |
); | |
return false; | |
} | |
$active = intval($_data['active']); | |
$bcc_rcpts = array_map('trim', preg_split( "/( |,|;|\n)/", $_data['bcc_rcpt'])); | |
foreach ($bcc_rcpts as $i => &$rcpt) { | |
$rcpt = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $rcpt); | |
if (!empty($rcpt) && filter_var($rcpt, FILTER_VALIDATE_EMAIL) === false) { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => array('goto_invalid', htmlspecialchars($rcpt)) | |
); | |
unset($bcc_rcpts[$i]); | |
continue; | |
} | |
} | |
$bcc_rcpts = array_unique($bcc_rcpts); | |
$bcc_rcpts = array_filter($bcc_rcpts); | |
if (empty($bcc_rcpts)) { | |
$active = 0; | |
} | |
try { | |
$redis->hSet('QW_BCC', $domain, json_encode(array('bcc_rcpts' => $bcc_rcpts, 'active' => $active))); | |
} | |
catch (RedisException $e) { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => array('redis_error', $e) | |
); | |
return false; | |
} | |
$_SESSION['return'][] = array( | |
'type' => 'success', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => 'saved_settings' | |
); | |
break; | |
case 'get': | |
$domain = $_data; | |
if (!hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => 'access_denied' | |
); | |
return false; | |
} | |
try { | |
return json_decode($redis->hGet('QW_BCC', $domain), true); | |
} | |
catch (RedisException $e) { | |
$_SESSION['return'][] = array( | |
'type' => 'danger', | |
'log' => array(__FUNCTION__, $_action, $_data_log), | |
'msg' => array('redis_error', $e) | |
); | |
return false; | |
} | |
break; | |
} | |
} |