diff --git a/data/conf/nginx/server_name.active b/data/conf/nginx/server_name.active
index ce429200..7309d8f6 100644
--- a/data/conf/nginx/server_name.active
+++ b/data/conf/nginx/server_name.active
@@ -1 +1 @@
-server_name logs.servercow.de autodiscover.* autoconfig.*;
+server_name mail.develcow.de autodiscover.* autoconfig.*;
diff --git a/data/web/inc/functions.inc.php b/data/web/inc/functions.inc.php
index 9c2bdbc1..c37e39ab 100644
--- a/data/web/inc/functions.inc.php
+++ b/data/web/inc/functions.inc.php
@@ -4422,7 +4422,7 @@ function mailbox_get_resource_details($resource) {
$resourcedata['name'] = $row['username'];
$resourcedata['kind'] = $row['kind'];
$resourcedata['multiple_bookings'] = $row['multiple_bookings'];
- $resourcedata['multiple_bookings_int'] = $row['multiple_bookings'];
+ $resourcedata['multiple_bookings_int'] = $row['multiple_bookings_int'];
$resourcedata['description'] = $row['name'];
$resourcedata['active'] = $row['active'];
$resourcedata['active_int'] = $row['active_int'];
diff --git a/data/web/inc/header.inc.php b/data/web/inc/header.inc.php
index a128df88..ceacaf8e 100644
--- a/data/web/inc/header.inc.php
+++ b/data/web/inc/header.inc.php
@@ -15,6 +15,7 @@
+
diff --git a/data/web/js/mailbox.js b/data/web/js/mailbox.js
index 3a12b610..55e21c32 100644
--- a/data/web/js/mailbox.js
+++ b/data/web/js/mailbox.js
@@ -28,22 +28,23 @@ $(document).ready(function() {
item.quota = humanFileSize(item.quota_used_in_domain) + " / " + humanFileSize(item.max_quota_for_domain);
item.max_quota_for_mbox = humanFileSize(item.max_quota_for_mbox);
item.action = '
' +
'
';
+ });
+ $('#resources_table').footable({
+ "columns": [
+ {"sorted": true,"name":"description","title":lang.description,"style":{"width":"250px"}},
+ {"name":"kind","title":lang.kind,"breakpoints":"xs sm"},
+ {"name":"domain","title":lang.domain},
+ {"name":"multiple_bookings","title":lang.multiple_bookings},
+ {"name":"domain","title":lang.domain},
+ {"name":"active","style":{"maxWidth":"50px","width":"70px"},"title":lang.active},
+ {"name":"action","sortable": false,"style":{"text-align":"right","maxWidth":"180px","width":"180px"},"type":"html","title":lang.action,"breakpoints":"xs sm"}
+ ],
+ "empty": lang.empty,
+ "rows": data,
+ "paging": {
+ "enabled": true,
+ "limit": 5,
+ "size": 25
+ },
+ "filtering": {
+ "enabled": true,
+ "position": "left",
+ "placeholder": lang.search
+ },
+ "sorting": {
+ "enabled": true
+ }
+ });
+ }
+ });
+
+ $.ajax({
+ dataType: 'json',
+ url: '/json_api.php?action=domain_alias_table_data',
+ jsonp: false,
+ error: function () {
+ alert('Cannot receive history');
+ },
+ success: function (data) {
+ $.each(data, function (i, item) {
+ item.action = '
';
+ });
+ $('#aliasdomain_table').footable({
+ "columns": [
+ {"sorted": true,"name":"alias_domain","title":lang.alias,"style":{"width":"250px"}},
+ {"name":"target_domain","title":lang.target_domain,"breakpoints":"xs sm"},
+ {"name":"active","style":{"maxWidth":"50px","width":"70px"},"title":lang.active},
+ {"name":"action","sortable": false,"style":{"text-align":"right","maxWidth":"180px","width":"180px"},"type":"html","title":lang.action,"breakpoints":"xs sm"}
+ ],
+ "empty": lang.empty,
+ "rows": data,
+ "paging": {
+ "enabled": true,
+ "limit": 5,
+ "size": 25
+ },
+ "filtering": {
+ "enabled": true,
+ "position": "left",
+ "placeholder": lang.search
+ },
+ "sorting": {
+ "enabled": true
+ }
+ });
+ }
+ });
+
+ $.ajax({
+ dataType: 'json',
+ url: '/json_api.php?action=alias_table_data',
+ jsonp: false,
+ error: function () {
+ alert('Cannot receive history');
+ },
+ success: function (data) {
+ $.each(data, function (i, item) {
+ if (item.is_catch_all == 1) {
+ item.address = '
Catch-All
' + item.address;
+ }
+ item.action = '
';
+ });
+ $('#alias_table').footable({
+ "columns": [
+ {"sorted": true,"name":"address","title":lang.alias,"style":{"width":"250px"}},
+ {"name":"goto","title":lang.target_address},
+ {"name":"domain","title":lang.domain},
+ {"name":"active","style":{"maxWidth":"50px","width":"70px"},"title":lang.active},
+ {"name":"action","sortable": false,"style":{"text-align":"right","maxWidth":"180px","width":"180px"},"type":"html","title":lang.action,"breakpoints":"xs sm"}
+ ],
+ "empty": lang.empty,
+ "rows": data,
+ "paging": {
+ "enabled": true,
+ "limit": 5,
+ "size": 5
+ },
+ "filtering": {
+ "enabled": true,
+ "position": "left",
+ "placeholder": lang.search
+ },
+ "sorting": {
+ "enabled": true
+ }
+ });
+ }
+ });
});
diff --git a/data/web/json_api.php b/data/web/json_api.php
index d404b0bd..89ed85a0 100644
--- a/data/web/json_api.php
+++ b/data/web/json_api.php
@@ -2,13 +2,104 @@
require_once 'inc/prerequisites.inc.php';
error_reporting(E_ALL);
if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_username'])) {
- if ($_GET['action'] && $_GET['object']) {
+ if (isset($_GET['action'])) {
$action = $_GET['action'];
- $object = $_GET['object'];
switch ($action) {
+ case "domain_table_data":
+ $domains = mailbox_get_domains();
+ if (!empty($domains)) {
+ foreach ($domains as $domain) {
+ $data[] = mailbox_get_domain_details($domain);
+ }
+ if (!isset($data) || empty($data)) {
+ echo '{}';
+ }
+ else {
+ echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ }
+ }
+ break;
+ case "mailbox_table_data":
+ $domains = mailbox_get_domains();
+ if (!empty($domains)) {
+ foreach ($domains as $domain) {
+ $mailboxes = mailbox_get_mailboxes($domain);
+ if (!empty($mailboxes)) {
+ foreach ($mailboxes as $mailbox) {
+ $data[] = mailbox_get_mailbox_details($mailbox);
+ }
+ }
+ }
+ if (!isset($data) || empty($data)) {
+ echo '{}';
+ }
+ else {
+ echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ }
+ }
+ break;
+ case "resource_table_data":
+ $domains = mailbox_get_domains();
+ if (!empty($domains)) {
+ foreach ($domains as $domain) {
+ $resources = mailbox_get_resources($domain);
+ if (!empty($resources)) {
+ foreach ($resources as $resource) {
+ $data[] = mailbox_get_resource_details($resource);
+ }
+ }
+ }
+ if (!isset($data) || empty($data)) {
+ echo '{}';
+ }
+ else {
+ echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ }
+ }
+ break;
+ case "domain_alias_table_data":
+ $domains = mailbox_get_domains();
+ if (!empty($domains)) {
+ foreach ($domains as $domain) {
+ $alias_domains = mailbox_get_alias_domains($domain);
+ if (!empty($alias_domains)) {
+ foreach ($alias_domains as $alias_domain) {
+ $data[] = mailbox_get_alias_domain_details($alias_domain);
+ }
+ }
+ }
+ if (!isset($data) || empty($data)) {
+ echo '{}';
+ }
+ else {
+ echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ }
+ }
+ break;
+ case "alias_table_data":
+ $domains = array_merge(mailbox_get_domains(), mailbox_get_alias_domains());
+ if (!empty($domains)) {
+ foreach ($domains as $domain) {
+ $aliases = mailbox_get_aliases($domain);
+ if (!empty($aliases)) {
+ foreach ($aliases as $alias) {
+ $data[] = mailbox_get_alias_details($alias);
+ }
+ }
+ }
+ if (!isset($data) || empty($data)) {
+ echo '{}';
+ }
+ else {
+ echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+ }
+ }
+ break;
case "get_mailbox_details":
+ if (!isset($_GET['object'])) { return false; }
+ $object = $_GET['object'];
$data = mailbox_get_mailbox_details($object);
- if (!$data || empty($data)) {
+ if (!isset($data) || empty($data)) {
echo '{}';
}
else {
@@ -16,8 +107,10 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
}
break;
case "get_domain_details":
+ if (!isset($_GET['object'])) { return false; }
+ $object = $_GET['object'];
$data = mailbox_get_domain_details($object);
- if (!$data || empty($data)) {
+ if (!isset($data) || empty($data)) {
echo '{}';
}
else {
@@ -25,6 +118,8 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
}
break;
case "get_u2f_reg_challenge":
+ if (!isset($_GET['object'])) { return false; }
+ $object = $_GET['object'];
if (
($_SESSION["mailcow_cc_role"] == "admin" || $_SESSION["mailcow_cc_role"] == "domainadmin")
&&
@@ -40,6 +135,8 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
}
break;
case "get_u2f_auth_challenge":
+ if (!isset($_GET['object'])) { return false; }
+ $object = $_GET['object'];
if (isset($_SESSION['pending_mailcow_cc_username']) && $_SESSION['pending_mailcow_cc_username'] == $object) {
$reqs = json_encode($u2f->getAuthenticateData(get_u2f_registrations($object)));
$_SESSION['authReq'] = $reqs;
diff --git a/data/web/mailbox.php b/data/web/mailbox.php
index 5f2187c0..8873859a 100644
--- a/data/web/mailbox.php
+++ b/data/web/mailbox.php
@@ -5,6 +5,15 @@ if (isset($_SESSION['mailcow_cc_role']) && ($_SESSION['mailcow_cc_role'] == "adm
require_once "inc/header.inc.php";
$_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
?>
+
@@ -36,9 +45,9 @@ $_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
-
+
@@ -51,11 +60,9 @@ $_SESSION['return_to'] = $_SERVER['REQUEST_URI'];