function requireDomainAdmin() { $userId = requireLogin(); if (!isDomainAdmin()) { header('HTTP/1.1 403 Forbidden: Not a domain administrator'); exit; } return $userId; }
function getForwards() { if (!isDomainAdmin()) { return FALSE; } $sql = 'SELECT' . ' alias_id,' . ' (username || \'@\' || domain) AS email,' . ' domain,' . ' destination,' . ' active' . ' FROM virtual_aliases' . ' JOIN virtual_domains USING(domain_id)' . ' WHERE domain IN (' . quotedAdminDomainString() . ' )' . ' AND (username || \'@\' || domain) IN (' . quotedAdminUserString() . ' )' . ' AND (username || \'@\' || domain) != destination' . ' AND (username || \'@\' || domain || \'@autoreply.\' || domain) != destination' . ' ORDER BY domain, username, destination'; $rows = db_getrows($sql); $i = 0; foreach ($rows as $row) { if ($row['active'] == 't') { $rows[$i]['active'] = TRUE; } else { $rows[$i]['active'] = FALSE; } $i++; } return $rows; }
function modifyDomainPerm($domainId, $userId, $admin) { if (!$domainId || !$userId) { return FALSE; } if (!isDomainAdmin()) { return FALSE; } if ($userId == $_SESSION['user']['user_id']) { return FALSE; } if (!userIsActive($userId)) { return FALSE; } $user = getUserEmail($userId); if (!$user) { return FALSE; } $domain = getDomain($domainId); if (!$domain) { return FALSE; } $adminDomains = getAdminDomains(); if (!in_array($domain, $adminDomains)) { return FALSE; } $params = array('user_id' => $userId, 'domain_id' => $domainId); if ($admin) { return db_insert('domain_administrators', $params, 'admin_id'); } else { return db_delete('domain_administrators', $params); } }
if (!isSiteAdmin()) { $yourSettings[] = array('text' => 'Local Delivery', 'id' => 'local', 'leaf' => TRUE); } $tree[] = array('text' => 'Your Settings', 'id' => 'your-settings', 'children' => $yourSettings); $siteAdministration = array(); $domainAdministration = array(); $siteAdministration[] = array('text' => 'Domains', 'id' => 'manage-domains', 'leaf' => TRUE); $domainAdministration[] = array('text' => 'Users', 'id' => 'manage-users', 'leaf' => TRUE); $domainAdministration[] = array('text' => 'User Forwards', 'id' => 'manage-forwards', 'leaf' => TRUE); $domainAdministration[] = array('text' => 'Aliases', 'id' => 'manage-aliases', 'leaf' => TRUE); $domainAdministration[] = array('text' => 'Catch All Forwards', 'id' => 'catchall-addresses', 'leaf' => TRUE); $domainAdministration[] = array('text' => 'Domain Administrators', 'id' => 'manage-domain-permissions', 'leaf' => TRUE); $siteAdministration[] = array('text' => 'Site Administrators', 'id' => 'manage-site-administrators', 'leaf' => TRUE); $siteAdministration[] = array('text' => 'Virtual to Local Forwards', 'id' => 'manage-local-forwards', 'leaf' => TRUE); $siteAdministration[] = array('text' => 'Local Aliases', 'id' => 'manage-local-aliases', 'leaf' => TRUE); if (isDomainAdmin()) { $tree[] = array('text' => 'Domain Administration', 'id' => 'domain-administration', 'children' => $domainAdministration); } if (isSiteAdmin()) { $tree[] = array('text' => 'Site Administration', 'id' => 'site-administration', 'children' => $siteAdministration); $stats = array(); if ($config['stats']['pflogsumm']['enabled']) { $stats[] = array('text' => 'Log Summary', 'id' => 'log-summary', 'leaf' => TRUE); } if ($config['stats']['mailgraph']['enabled']) { $stats[] = array('text' => 'Graphs', 'id' => 'graphs', 'children' => array(array('text' => 'Last Day', 'id' => 'last-day-stats', 'leaf' => TRUE), array('text' => 'Last Week', 'id' => 'last-week-stats', 'leaf' => TRUE), array('text' => 'Last Month', 'id' => 'last-month-stats', 'leaf' => TRUE), array('text' => 'Last Year', 'id' => 'last-year-stats', 'leaf' => TRUE))); } if ($config['stats']['enabled']) { $tree[] = array('text' => 'Mail Server Stats', 'id' => 'server-stats', 'children' => $stats); } if ($config['logs']['enabled']) {
function removeAlias($aliasId) { if (!$aliasId) { return FALSE; } if (!isDomainAdmin()) { return FALSE; } $alias = loadAlias($aliasId); if (!$alias) { return FALSE; } $domain = $alias['domain']; $adminDomains = getAdminDomains(); if (!in_array($domain, $adminDomains)) { return FALSE; } $destinationParts = split('@', $alias['destination']); $destinationDomain = $destinationParts[1]; if (!in_array($destinationDomain, $adminDomains)) { return FALSE; } $conditions = array('alias_id' => $aliasId); return db_delete('virtual_aliases', $conditions); }