show email-only domains in customers list for potential dns entries information (if necessary)

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann 2024-07-19 22:16:41 +02:00
parent 9d47d670a1
commit bda24d7d63
No known key found for this signature in database
GPG Key ID: C121F97338D7A352
8 changed files with 34 additions and 16 deletions

View File

@ -983,9 +983,11 @@ class SubDomains extends ApiCommand implements ResourceEntity
'`d`.`letsencrypt`', '`d`.`letsencrypt`',
'`d`.`registration_date`', '`d`.`registration_date`',
'`d`.`termination_date`', '`d`.`termination_date`',
'`d`.`deactivated`' '`d`.`deactivated`',
'`d`.`email_only`',
]; ];
} }
$query_fields = []; $query_fields = [];
// prepare select statement // prepare select statement
@ -996,7 +998,6 @@ class SubDomains extends ApiCommand implements ResourceEntity
LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `da` ON `da`.`aliasdomain`=`d`.`id` LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `da` ON `da`.`aliasdomain`=`d`.`id`
LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON `pd`.`id`=`d`.`parentdomainid` LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON `pd`.`id`=`d`.`parentdomainid`
WHERE `d`.`customerid` IN (" . implode(', ', $customer_ids) . ") WHERE `d`.`customerid` IN (" . implode(', ', $customer_ids) . ")
AND `d`.`email_only` = '0'
" . $this->getSearchWhere($query_fields, true) . " GROUP BY `d`.`id` ORDER BY `parentdomainname` ASC, `d`.`parentdomainid` ASC " . $this->getOrderBy(true) . $this->getLimit()); " . $this->getSearchWhere($query_fields, true) . " GROUP BY `d`.`id` ORDER BY `parentdomainname` ASC, `d`.`parentdomainid` ASC " . $this->getOrderBy(true) . $this->getLimit());
$result = []; $result = [];
@ -1092,13 +1093,13 @@ class SubDomains extends ApiCommand implements ResourceEntity
$this->getUserDetail('customerid') $this->getUserDetail('customerid')
]; ];
} }
if (!empty($customer_ids)) { if (!empty($customer_ids)) {
// prepare select statement // prepare select statement
$domains_stmt = Database::prepare(" $domains_stmt = Database::prepare("
SELECT COUNT(*) as num_subdom SELECT COUNT(*) as num_subdom
FROM `" . TABLE_PANEL_DOMAINS . "` `d` FROM `" . TABLE_PANEL_DOMAINS . "` `d`
WHERE `d`.`customerid` IN (" . implode(', ', $customer_ids) . ") WHERE `d`.`customerid` IN (" . implode(', ', $customer_ids) . ")
AND `d`.`email_only` = '0'
"); ");
$result = Database::pexecute_first($domains_stmt, null, true, true); $result = Database::pexecute_first($domains_stmt, null, true, true);
if ($result) { if ($result) {

View File

@ -54,7 +54,7 @@ class Dns
$dom_data['uid'] = $userinfo['userid']; $dom_data['uid'] = $userinfo['userid'];
} }
} else { } else {
$where_clause = '`customerid` = :uid AND '; $where_clause = '`customerid` = :uid AND `email_only` = "0" AND ';
$dom_data['uid'] = $userinfo['userid']; $dom_data['uid'] = $userinfo['userid'];
} }

View File

@ -74,6 +74,9 @@ class Domain
if ($attributes['fields']['deactivated']) { if ($attributes['fields']['deactivated']) {
return lng('admin.deactivated'); return lng('admin.deactivated');
} }
if ($attributes['fields']['email_only']) {
return lng('domains.email_only');
}
// path or redirect // path or redirect
if (preg_match('/^https?\:\/\//', $attributes['fields']['documentroot'])) { if (preg_match('/^https?\:\/\//', $attributes['fields']['documentroot'])) {
return [ return [
@ -127,7 +130,7 @@ class Domain
public static function canViewLogs(array $attributes): bool public static function canViewLogs(array $attributes): bool
{ {
if ((!CurrentUser::isAdmin() || (CurrentUser::isAdmin() && (int)$attributes['fields']['email_only'] == 0)) && !$attributes['fields']['deactivated']) { if ((int)$attributes['fields']['email_only'] == 0 && !$attributes['fields']['deactivated']) {
if ((int)UI::getCurrentUser()['adminsession'] == 0 && (bool)UI::getCurrentUser()['logviewenabled']) { if ((int)UI::getCurrentUser()['adminsession'] == 0 && (bool)UI::getCurrentUser()['logviewenabled']) {
return true; return true;
} elseif ((int)UI::getCurrentUser()['adminsession'] == 1) { } elseif ((int)UI::getCurrentUser()['adminsession'] == 1) {
@ -157,6 +160,7 @@ class Domain
&& $attributes['fields']['caneditdomain'] == '1' && $attributes['fields']['caneditdomain'] == '1'
&& Settings::Get('system.bind_enable') == '1' && Settings::Get('system.bind_enable') == '1'
&& Settings::Get('system.dnsenabled') == '1' && Settings::Get('system.dnsenabled') == '1'
&& !$attributes['fields']['email_only']
&& !$attributes['fields']['deactivated']; && !$attributes['fields']['deactivated'];
} }
@ -169,7 +173,7 @@ class Domain
public static function hasLetsEncryptActivated(array $attributes): bool public static function hasLetsEncryptActivated(array $attributes): bool
{ {
return ((bool)$attributes['fields']['letsencrypt'] && (!CurrentUser::isAdmin() || (CurrentUser::isAdmin() && (int)$attributes['fields']['email_only'] == 0))); return ((bool)$attributes['fields']['letsencrypt'] && (int)$attributes['fields']['email_only'] == 0);
} }
/** /**
@ -181,7 +185,7 @@ class Domain
&& DDomain::domainHasSslIpPort($attributes['fields']['id']) && DDomain::domainHasSslIpPort($attributes['fields']['id'])
&& (CurrentUser::isAdmin() || (!CurrentUser::isAdmin() && (int)$attributes['fields']['caneditdomain'] == 1)) && (CurrentUser::isAdmin() || (!CurrentUser::isAdmin() && (int)$attributes['fields']['caneditdomain'] == 1))
&& (int)$attributes['fields']['letsencrypt'] == 0 && (int)$attributes['fields']['letsencrypt'] == 0
&& (!CurrentUser::isAdmin() || (CurrentUser::isAdmin() && (int)$attributes['fields']['email_only'] == 0)) && !(int)$attributes['fields']['email_only']
&& !$attributes['fields']['deactivated'] && !$attributes['fields']['deactivated']
) { ) {
return true; return true;

View File

@ -47,13 +47,14 @@ return [
'values' => $domainips 'values' => $domainips
], ],
'alias' => [ 'alias' => [
'visible' => $alias_check == '0', 'visible' => $alias_check == '0' && (int)$result['email_only'] == 0,
'label' => lng('domains.aliasdomain'), 'label' => lng('domains.aliasdomain'),
'type' => 'select', 'type' => 'select',
'select_var' => $domains, 'select_var' => $domains,
'selected' => $result['aliasdomain'] 'selected' => $result['aliasdomain']
], ],
'path' => [ 'path' => [
'visible' => (int)$result['email_only'] == 0,
'label' => lng('panel.path'), 'label' => lng('panel.path'),
'desc' => (Settings::Get('panel.pathedit') != 'Dropdown' ? lng('panel.pathDescriptionSubdomain').(Settings::Get('system.documentroot_use_default_value') == 1 ? lng('panel.pathDescriptionEx') : '') : null), 'desc' => (Settings::Get('panel.pathedit') != 'Dropdown' ? lng('panel.pathDescriptionSubdomain').(Settings::Get('system.documentroot_use_default_value') == 1 ? lng('panel.pathDescriptionEx') : '') : null),
'type' => $pathSelect['type'], 'type' => $pathSelect['type'],
@ -63,13 +64,13 @@ return [
'note' => $pathSelect['note'] ?? '', 'note' => $pathSelect['note'] ?? '',
], ],
'url' => [ 'url' => [
'visible' => Settings::Get('panel.pathedit') == 'Dropdown', 'visible' => Settings::Get('panel.pathedit') == 'Dropdown' && (int)$result['email_only'] == 0,
'label' => lng('panel.urloverridespath'), 'label' => lng('panel.urloverridespath'),
'type' => 'text', 'type' => 'text',
'value' => $urlvalue 'value' => $urlvalue
], ],
'redirectcode' => [ 'redirectcode' => [
'visible' => Settings::Get('customredirect.enabled') == '1', 'visible' => Settings::Get('customredirect.enabled') == '1' && (int)$result['email_only'] == 0,
'label' => lng('domains.redirectifpathisurl'), 'label' => lng('domains.redirectifpathisurl'),
'desc' => lng('domains.redirectifpathisurlinfo'), 'desc' => lng('domains.redirectifpathisurlinfo'),
'type' => 'select', 'type' => 'select',
@ -77,7 +78,7 @@ return [
'selected' => $def_code 'selected' => $def_code
], ],
'selectserveralias' => [ 'selectserveralias' => [
'visible' => ($result['parentdomainid'] == '0' && $userinfo['subdomains'] != '0') || $result['parentdomainid'] != '0', 'visible' => (($result['parentdomainid'] == '0' && $userinfo['subdomains'] != '0') || $result['parentdomainid'] != '0') && (int)$result['email_only'] == 0,
'label' => lng('admin.selectserveralias'), 'label' => lng('admin.selectserveralias'),
'desc' => lng('admin.selectserveralias_desc'), 'desc' => lng('admin.selectserveralias_desc'),
'type' => 'select', 'type' => 'select',
@ -85,27 +86,28 @@ return [
'selected' => $serveraliasoptions_selected 'selected' => $serveraliasoptions_selected
], ],
'isemaildomain' => [ 'isemaildomain' => [
'visible' => ($result['subcanemaildomain'] == '1' || $result['subcanemaildomain'] == '2') && $result['parentdomainid'] != '0', 'visible' => (($result['subcanemaildomain'] == '1' || $result['subcanemaildomain'] == '2') && $result['parentdomainid'] != '0') && (int)$result['email_only'] == 0,
'label' => 'Emaildomain', 'label' => 'Emaildomain',
'type' => 'checkbox', 'type' => 'checkbox',
'value' => '1', 'value' => '1',
'checked' => $result['isemaildomain'] 'checked' => $result['isemaildomain']
], ],
'openbasedir_path' => [ 'openbasedir_path' => [
'visible' => $result['openbasedir'] == '1', 'visible' => $result['openbasedir'] == '1' && (int)$result['email_only'] == 0,
'label' => lng('domain.openbasedirpath'), 'label' => lng('domain.openbasedirpath'),
'type' => 'select', 'type' => 'select',
'select_var' => $openbasedir, 'select_var' => $openbasedir,
'selected' => $result['openbasedir_path'] 'selected' => $result['openbasedir_path']
], ],
'phpsettingid' => [ 'phpsettingid' => [
'visible' => ((int)Settings::Get('system.mod_fcgid') == 1 || (int)Settings::Get('phpfpm.enabled') == 1) && count($phpconfigs) > 0 && $userinfo['phpenabled'] == '1' && $result['phpenabled'] == '1', 'visible' => ((int)Settings::Get('system.mod_fcgid') == 1 || (int)Settings::Get('phpfpm.enabled') == 1) && count($phpconfigs) > 0 && $userinfo['phpenabled'] == '1' && $result['phpenabled'] == '1' && (int)$result['email_only'] == 0,
'label' => lng('admin.phpsettings.title'), 'label' => lng('admin.phpsettings.title'),
'type' => 'select', 'type' => 'select',
'select_var' => $phpconfigs, 'select_var' => $phpconfigs,
'selected' => $result['phpsettingid'] 'selected' => $result['phpsettingid']
], ],
'speciallogfile' => [ 'speciallogfile' => [
'visible' => (int)$result['email_only'] == 0,
'label' => lng('admin.speciallogfile.title'), 'label' => lng('admin.speciallogfile.title'),
'desc' => lng('admin.speciallogfile.description'), 'desc' => lng('admin.speciallogfile.description'),
'type' => 'checkbox', 'type' => 'checkbox',
@ -139,7 +141,7 @@ return [
'section_bssl' => [ 'section_bssl' => [
'title' => lng('admin.webserversettings_ssl'), 'title' => lng('admin.webserversettings_ssl'),
'image' => 'icons/domain_edit.png', 'image' => 'icons/domain_edit.png',
'visible' => Settings::Get('system.use_ssl') == '1' && $ssl_ipsandports && Domain::domainHasSslIpPort($result['id']), 'visible' => Settings::Get('system.use_ssl') == '1' && $ssl_ipsandports && Domain::domainHasSslIpPort($result['id']) && (int)$result['email_only'] == 0,
'fields' => [ 'fields' => [
'sslenabled' => [ 'sslenabled' => [
'label' => lng('admin.domain_sslenabled'), 'label' => lng('admin.domain_sslenabled'),
@ -194,6 +196,7 @@ return [
] ]
] ]
] ]
] ],
'buttons' => ((int)$result['email_only'] == 1) ? [] : null
] ]
]; ];

View File

@ -713,6 +713,7 @@ return [
'hsts' => 'HSTS aktiviert', 'hsts' => 'HSTS aktiviert',
'aliasdomainid' => 'ID der Alias-Domain', 'aliasdomainid' => 'ID der Alias-Domain',
'nodomainsassignedbyadmin' => 'Diesem Account wurde noch keine (aktive) Domain zugewiesen. Bitte kontaktiere deinen Administrator, wenn du der Meinung bist, das ist nicht korrekt.', 'nodomainsassignedbyadmin' => 'Diesem Account wurde noch keine (aktive) Domain zugewiesen. Bitte kontaktiere deinen Administrator, wenn du der Meinung bist, das ist nicht korrekt.',
'email_only' => 'Nur E-Mail',
], ],
'emails' => [ 'emails' => [
'description' => 'Hier können Sie Ihre E-Mail-Adressen einrichten.<br />Ein Konto ist wie Ihr Briefkasten vor der Haustür. Wenn jemand eine E-Mail an Sie schreibt, wird diese in dieses Konto gelegt.<br /><br />Die Zugangsdaten lauten wie folgt: (Die Angaben in <i>kursiver</i> Schrift sind durch die jeweiligen Einträge zu ersetzen)<br /><br />Hostname: <b><i>Domainname</i></b><br />Benutzername: <b><i>Kontoname / E-Mail-Adresse</i></b><br />Passwort: <b><i>das gewählte Passwort</i></b>', 'description' => 'Hier können Sie Ihre E-Mail-Adressen einrichten.<br />Ein Konto ist wie Ihr Briefkasten vor der Haustür. Wenn jemand eine E-Mail an Sie schreibt, wird diese in dieses Konto gelegt.<br /><br />Die Zugangsdaten lauten wie folgt: (Die Angaben in <i>kursiver</i> Schrift sind durch die jeweiligen Einträge zu ersetzen)<br /><br />Hostname: <b><i>Domainname</i></b><br />Benutzername: <b><i>Kontoname / E-Mail-Adresse</i></b><br />Passwort: <b><i>das gewählte Passwort</i></b>',

View File

@ -784,6 +784,7 @@ return [
'hsts' => 'HSTS enabled', 'hsts' => 'HSTS enabled',
'aliasdomainid' => 'ID of alias domain', 'aliasdomainid' => 'ID of alias domain',
'nodomainsassignedbyadmin' => 'Your account has currently no (active) domains assigned to it. Please contact your administrator if you think this is wrong.', 'nodomainsassignedbyadmin' => 'Your account has currently no (active) domains assigned to it. Please contact your administrator if you think this is wrong.',
'email_only' => 'Email only',
], ],
'emails' => [ 'emails' => [
'description' => 'Here you can create and change your email addresses.<br />An account is like your letterbox in front of your house. If someone sends you an email, it will be dropped into the account.<br /><br />To download your emails use the following settings in your mailprogram: (The data in <i>italics</i> has to be changed to the equivalents you typed in!)<br />Hostname: <b><i>domainname</i></b><br />Username: <b><i>account name / e-mail address</i></b><br />password: <b><i>the password you\'ve chosen</i></b>', 'description' => 'Here you can create and change your email addresses.<br />An account is like your letterbox in front of your house. If someone sends you an email, it will be dropped into the account.<br /><br />To download your emails use the following settings in your mailprogram: (The data in <i>italics</i> has to be changed to the equivalents you typed in!)<br />Hostname: <b><i>domainname</i></b><br />Username: <b><i>account name / e-mail address</i></b><br />password: <b><i>the password you\'ve chosen</i></b>',

View File

@ -61,6 +61,10 @@ if (function_exists('exec')) {
} }
$domain = json_decode($json_result, true)['data']; $domain = json_decode($json_result, true)['data'];
if ($domain['email_only']) {
Response::dynamicError("There are no webserver logfiles for email only domains.");
}
$speciallogfile = ''; $speciallogfile = '';
if ($domain['speciallogfile'] == '1') { if ($domain['speciallogfile'] == '1') {
if ($domain['parentdomainid'] == '0') { if ($domain['parentdomainid'] == '0') {

View File

@ -50,6 +50,10 @@ if ($action == '' || $action == 'view') {
} }
$result_domain = json_decode($json_result, true)['data']; $result_domain = json_decode($json_result, true)['data'];
if ($result_domain['email_only']) {
Response::dynamicError("There are no ssl-certificates for email only domains.");
}
if (Request::post('send') == 'send') { if (Request::post('send') == 'send') {
$do_insert = Request::post('do_insert', 0) == 1; $do_insert = Request::post('do_insert', 0) == 1;
try { try {