Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3ec02f258 | ||
|
|
f31ee2e360 | ||
|
|
57206b2f72 | ||
|
|
73906f252b | ||
|
|
7206f5fee2 | ||
|
|
55212607e0 | ||
|
|
e6bfe205c5 | ||
|
|
596075d141 | ||
|
|
a58a5fd972 | ||
|
|
bcbfcb34e8 | ||
|
|
56d8a565b4 | ||
|
|
a60c21218c | ||
|
|
cd2a08e731 | ||
|
|
5d2ce4ecfb | ||
|
|
869b01204a |
@@ -62,6 +62,7 @@ if ($action == '2fa_entercode') {
|
|||||||
// show template to enter code
|
// show template to enter code
|
||||||
UI::view('login/enter2fa.html.twig', [
|
UI::view('login/enter2fa.html.twig', [
|
||||||
'pagetitle' => lng('login.2fa'),
|
'pagetitle' => lng('login.2fa'),
|
||||||
|
'remember_me' => (Settings::Get('panel.db_version') >= 202407200) ? true : false,
|
||||||
'message' => $message
|
'message' => $message
|
||||||
]);
|
]);
|
||||||
} elseif ($action == '2fa_verify') {
|
} elseif ($action == '2fa_verify') {
|
||||||
@@ -84,7 +85,8 @@ if ($action == '2fa_entercode') {
|
|||||||
// verify code set to user's data_2fa field
|
// verify code set to user's data_2fa field
|
||||||
$sel_stmt = Database::prepare("SELECT `data_2fa` FROM " . $table . " WHERE `" . $field . "` = :uid");
|
$sel_stmt = Database::prepare("SELECT `data_2fa` FROM " . $table . " WHERE `" . $field . "` = :uid");
|
||||||
$userinfo_code = Database::pexecute_first($sel_stmt, ['uid' => $uid]);
|
$userinfo_code = Database::pexecute_first($sel_stmt, ['uid' => $uid]);
|
||||||
$result = $tfa->verifyCode($userinfo_code['data_2fa'], $code);
|
// 60sec discrepancy (possible slow email delivery)
|
||||||
|
$result = $tfa->verifyCode($userinfo_code['data_2fa'], $code, 60);
|
||||||
} else {
|
} else {
|
||||||
$result = $tfa->verifyCode($_SESSION['secret_2fa'], $code, 3);
|
$result = $tfa->verifyCode($_SESSION['secret_2fa'], $code, 3);
|
||||||
}
|
}
|
||||||
@@ -393,6 +395,9 @@ if ($action == '2fa_entercode') {
|
|||||||
}
|
}
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
// not found or invalid, this cookie is useless, get rid of it
|
||||||
|
unset($_COOKIE['frx_2fa_remember']);
|
||||||
|
setcookie('frx_2fa_remember', "", time()-3600);
|
||||||
}
|
}
|
||||||
|
|
||||||
// redirect to code-enter-page
|
// redirect to code-enter-page
|
||||||
|
|||||||
@@ -730,8 +730,8 @@ opcache.validate_timestamps'),
|
|||||||
('panel', 'logo_overridecustom', '0'),
|
('panel', 'logo_overridecustom', '0'),
|
||||||
('panel', 'settings_mode', '0'),
|
('panel', 'settings_mode', '0'),
|
||||||
('panel', 'menu_collapsed', '1'),
|
('panel', 'menu_collapsed', '1'),
|
||||||
('panel', 'version', '2.2.0-rc3'),
|
('panel', 'version', '2.2.1'),
|
||||||
('panel', 'db_version', '202407200');
|
('panel', 'db_version', '202408140');
|
||||||
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `panel_tasks`;
|
DROP TABLE IF EXISTS `panel_tasks`;
|
||||||
@@ -1054,7 +1054,7 @@ CREATE TABLE `panel_loginlinks` (
|
|||||||
DROP TABLE IF EXISTS `panel_2fa_tokens`;
|
DROP TABLE IF EXISTS `panel_2fa_tokens`;
|
||||||
CREATE TABLE `panel_2fa_tokens` (
|
CREATE TABLE `panel_2fa_tokens` (
|
||||||
`id` int(11) NOT NULL auto_increment,
|
`id` int(11) NOT NULL auto_increment,
|
||||||
`selector` varchar(20) NOT NULL,
|
`selector` varchar(200) NOT NULL,
|
||||||
`token` varchar(200) NOT NULL,
|
`token` varchar(200) NOT NULL,
|
||||||
`userid` int(11) NOT NULL default '0',
|
`userid` int(11) NOT NULL default '0',
|
||||||
`valid_until` int(15) NOT NULL,
|
`valid_until` int(15) NOT NULL,
|
||||||
|
|||||||
@@ -150,3 +150,22 @@ if (Froxlor::isFroxlorVersion('2.2.0-rc2')) {
|
|||||||
Update::showUpdateStep("Updating from 2.2.0-rc2 to 2.2.0-rc3", false);
|
Update::showUpdateStep("Updating from 2.2.0-rc2 to 2.2.0-rc3", false);
|
||||||
Froxlor::updateToVersion('2.2.0-rc3');
|
Froxlor::updateToVersion('2.2.0-rc3');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Froxlor::isDatabaseVersion('202407200')) {
|
||||||
|
|
||||||
|
Update::showUpdateStep("Adjusting field in 2fa-token table");
|
||||||
|
Database::query("ALTER TABLE `panel_2fa_tokens` CHANGE COLUMN `selector` `selector` varchar(200) NOT NULL;");
|
||||||
|
Update::lastStepStatus(0);
|
||||||
|
|
||||||
|
Froxlor::updateToDbVersion('202408140');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Froxlor::isFroxlorVersion('2.2.0-rc3')) {
|
||||||
|
Update::showUpdateStep("Updating from 2.2.0-rc3 to 2.2.0 stable", false);
|
||||||
|
Froxlor::updateToVersion('2.2.0');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Froxlor::isFroxlorVersion('2.2.0')) {
|
||||||
|
Update::showUpdateStep("Updating from 2.2.0 to 2.2.1", false);
|
||||||
|
Froxlor::updateToVersion('2.2.1');
|
||||||
|
}
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ class SysLog extends ApiCommand implements ResourceEntity
|
|||||||
}
|
}
|
||||||
$params['trunc'] = $truncatedate;
|
$params['trunc'] = $truncatedate;
|
||||||
Database::pexecute($result_stmt, $params, true, true);
|
Database::pexecute($result_stmt, $params, true, true);
|
||||||
$this->logger()->logAction($this->isAdmin() ? FroxlorLogger::ADM_ACTION : FroxlorLogger::USR_ACTION, LOG_WARNING, "[API] truncated the froxlor syslog");
|
$this->logger()->logAction(FroxlorLogger::ADM_ACTION, LOG_WARNING, "[API] truncated the froxlor syslog");
|
||||||
return $this->response(true);
|
return $this->response(true);
|
||||||
}
|
}
|
||||||
throw new Exception("Not allowed to execute given command.", 403);
|
throw new Exception("Not allowed to execute given command.", 403);
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ class Apache extends HttpConfigBase
|
|||||||
if (!empty(Settings::Get('system.dhparams_file'))) {
|
if (!empty(Settings::Get('system.dhparams_file'))) {
|
||||||
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
||||||
if (!file_exists($dhparams)) {
|
if (!file_exists($dhparams)) {
|
||||||
FileDir::safe_exec('openssl dhparam -out ' . escapeshellarg($dhparams) . ' 4096');
|
file_put_contents($dhparams, self::FFDHE4096);
|
||||||
}
|
}
|
||||||
$this->virtualhosts_data[$vhosts_filename] .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
$this->virtualhosts_data[$vhosts_filename] .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
||||||
}
|
}
|
||||||
@@ -754,7 +754,7 @@ class Apache extends HttpConfigBase
|
|||||||
if (!empty(Settings::Get('system.dhparams_file'))) {
|
if (!empty(Settings::Get('system.dhparams_file'))) {
|
||||||
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
||||||
if (!file_exists($dhparams)) {
|
if (!file_exists($dhparams)) {
|
||||||
FileDir::safe_exec('openssl dhparam -out ' . escapeshellarg($dhparams) . ' 4096');
|
file_put_contents($dhparams, self::FFDHE4096);
|
||||||
}
|
}
|
||||||
$vhost_content .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
$vhost_content .= ' SSLOpenSSLConfCmd DHParameters "' . $dhparams . '"' . "\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,26 @@ use PDO;
|
|||||||
class HttpConfigBase
|
class HttpConfigBase
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pre-defined DHE groups to use as fallback if dhparams_file
|
||||||
|
* is given, but non-existent, see also https://github.com/froxlor/Froxlor/issues/1270
|
||||||
|
*/
|
||||||
|
const FFDHE4096 = <<<EOC
|
||||||
|
-----BEGIN DH PARAMETERS-----
|
||||||
|
MIICCAKCAgEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
|
||||||
|
+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
|
||||||
|
87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
|
||||||
|
YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
|
||||||
|
7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
|
||||||
|
ssbzSibBsu/6iGtCOGEfz9zeNVs7ZRkDW7w09N75nAI4YbRvydbmyQd62R0mkff3
|
||||||
|
7lmMsPrBhtkcrv4TCYUTknC0EwyTvEN5RPT9RFLi103TZPLiHnH1S/9croKrnJ32
|
||||||
|
nuhtK8UiNjoNq8Uhl5sN6todv5pC1cRITgq80Gv6U93vPBsg7j/VnXwl5B0rZp4e
|
||||||
|
8W5vUsMWTfT7eTDp5OWIV7asfV9C1p9tGHdjzx1VA0AEh/VbpX4xzHpxNciG77Qx
|
||||||
|
iu1qHgEtnmgyqQdgCpGBMMRtx3j5ca0AOAkpmaMzy4t6Gh25PXFAADwqTs6p+Y0K
|
||||||
|
zAqCkc3OyX3Pjsm1Wn+IpGtNtahR9EGC4caKAH5eZV9q//////////8CAQI=
|
||||||
|
-----END DH PARAMETERS-----
|
||||||
|
EOC;
|
||||||
|
|
||||||
public function init()
|
public function init()
|
||||||
{
|
{
|
||||||
// if Let's Encrypt is activated, run it before regeneration of webserver configfiles
|
// if Let's Encrypt is activated, run it before regeneration of webserver configfiles
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ class Lighttpd extends HttpConfigBase
|
|||||||
if (!empty(Settings::Get('system.dhparams_file'))) {
|
if (!empty(Settings::Get('system.dhparams_file'))) {
|
||||||
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
||||||
if (!file_exists($dhparams)) {
|
if (!file_exists($dhparams)) {
|
||||||
FileDir::safe_exec('openssl dhparam -out ' . escapeshellarg($dhparams) . ' 4096');
|
file_put_contents($dhparams, self::FFDHE4096);
|
||||||
}
|
}
|
||||||
$this->lighttpd_data[$vhost_filename] .= 'ssl.dh-file = "' . $dhparams . '"' . "\n";
|
$this->lighttpd_data[$vhost_filename] .= 'ssl.dh-file = "' . $dhparams . '"' . "\n";
|
||||||
$this->lighttpd_data[$vhost_filename] .= 'ssl.ec-curve = "secp384r1"' . "\n";
|
$this->lighttpd_data[$vhost_filename] .= 'ssl.ec-curve = "secp384r1"' . "\n";
|
||||||
@@ -756,7 +756,7 @@ class Lighttpd extends HttpConfigBase
|
|||||||
if (!empty(Settings::Get('system.dhparams_file'))) {
|
if (!empty(Settings::Get('system.dhparams_file'))) {
|
||||||
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
||||||
if (!file_exists($dhparams)) {
|
if (!file_exists($dhparams)) {
|
||||||
FileDir::safe_exec('openssl dhparam -out ' . escapeshellarg($dhparams) . ' 4096');
|
file_put_contents($dhparams, self::FFDHE4096);
|
||||||
}
|
}
|
||||||
$ssl_settings .= 'ssl.dh-file = "' . $dhparams . '"' . "\n";
|
$ssl_settings .= 'ssl.dh-file = "' . $dhparams . '"' . "\n";
|
||||||
$ssl_settings .= 'ssl.ec-curve = "secp384r1"' . "\n";
|
$ssl_settings .= 'ssl.ec-curve = "secp384r1"' . "\n";
|
||||||
|
|||||||
@@ -399,7 +399,7 @@ class Nginx extends HttpConfigBase
|
|||||||
if (!empty(Settings::Get('system.dhparams_file'))) {
|
if (!empty(Settings::Get('system.dhparams_file'))) {
|
||||||
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
$dhparams = FileDir::makeCorrectFile(Settings::Get('system.dhparams_file'));
|
||||||
if (!file_exists($dhparams)) {
|
if (!file_exists($dhparams)) {
|
||||||
FileDir::safe_exec('openssl dhparam -out ' . escapeshellarg($dhparams) . ' 4096');
|
file_put_contents($dhparams, self::FFDHE4096);
|
||||||
}
|
}
|
||||||
$sslsettings .= "\t" . 'ssl_dhparam ' . $dhparams . ';' . "\n";
|
$sslsettings .= "\t" . 'ssl_dhparam ' . $dhparams . ';' . "\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ class DbManagerMySQL
|
|||||||
*/
|
*/
|
||||||
public function deleteUser(string $username, string $host)
|
public function deleteUser(string $username, string $host)
|
||||||
{
|
{
|
||||||
if (Database::getAttribute(PDO::ATTR_SERVER_VERSION) < '5.0.2') {
|
if (version_compare(Database::getAttribute(PDO::ATTR_SERVER_VERSION), '5.0.2', '<')) {
|
||||||
// Revoke privileges (only required for MySQL 4.1.2 - 5.0.1)
|
// Revoke privileges (only required for MySQL 4.1.2 - 5.0.1)
|
||||||
$stmt = Database::prepare("REVOKE ALL PRIVILEGES ON * . * FROM `" . $username . "`@`" . $host . "`");
|
$stmt = Database::prepare("REVOKE ALL PRIVILEGES ON * . * FROM `" . $username . "`@`" . $host . "`");
|
||||||
Database::pexecute($stmt);
|
Database::pexecute($stmt);
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ final class Froxlor
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Main version variable
|
// Main version variable
|
||||||
const VERSION = '2.2.0-rc3';
|
const VERSION = '2.2.1';
|
||||||
|
|
||||||
// Database version (YYYYMMDDC where C is a daily counter)
|
// Database version (YYYYMMDDC where C is a daily counter)
|
||||||
const DBVERSION = '202407200';
|
const DBVERSION = '202408140';
|
||||||
|
|
||||||
// Distribution branding-tag (used for Debian etc.)
|
// Distribution branding-tag (used for Debian etc.)
|
||||||
const BRANDING = '';
|
const BRANDING = '';
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ class Data
|
|||||||
{
|
{
|
||||||
$returnvalue = true;
|
$returnvalue = true;
|
||||||
|
|
||||||
if (isset($fielddata['option_mode']) && $fielddata['option_mode'] == 'multiple') {
|
if (isset($fielddata['select_mode']) && $fielddata['select_mode'] == 'multiple') {
|
||||||
$options = explode(',', $newfieldvalue);
|
$options = explode(',', $newfieldvalue);
|
||||||
foreach ($options as $option) {
|
foreach ($options as $option) {
|
||||||
$returnvalue = ($returnvalue && isset($fielddata['select_var'][$option]));
|
$returnvalue = ($returnvalue && isset($fielddata['select_var'][$option]));
|
||||||
@@ -247,7 +247,7 @@ class Data
|
|||||||
if (isset($fielddata['option_emptyallowed']) && $fielddata['option_emptyallowed']) {
|
if (isset($fielddata['option_emptyallowed']) && $fielddata['option_emptyallowed']) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return 'not in option';
|
return 'not in option (field: ' . $fieldname . ')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3174,7 +3174,7 @@ no
|
|||||||
</content>
|
</content>
|
||||||
</file>
|
</file>
|
||||||
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
||||||
chmod="0644" backup="true">
|
chmod="0640" backup="true">
|
||||||
<content><![CDATA[
|
<content><![CDATA[
|
||||||
##############################################
|
##############################################
|
||||||
# #
|
# #
|
||||||
|
|||||||
@@ -4742,7 +4742,7 @@ no
|
|||||||
</content>
|
</content>
|
||||||
</file>
|
</file>
|
||||||
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
||||||
chmod="0644" backup="true">
|
chmod="0640" backup="true">
|
||||||
<content><![CDATA[
|
<content><![CDATA[
|
||||||
##############################################
|
##############################################
|
||||||
# #
|
# #
|
||||||
|
|||||||
@@ -3961,7 +3961,7 @@ no
|
|||||||
</content>
|
</content>
|
||||||
</file>
|
</file>
|
||||||
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
||||||
chmod="0644" backup="true">
|
chmod="0640" backup="true">
|
||||||
<content><![CDATA[
|
<content><![CDATA[
|
||||||
##############################################
|
##############################################
|
||||||
# #
|
# #
|
||||||
|
|||||||
@@ -3953,7 +3953,7 @@ no
|
|||||||
</content>
|
</content>
|
||||||
</file>
|
</file>
|
||||||
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
||||||
chmod="0644" backup="true">
|
chmod="0640" backup="true">
|
||||||
<content><![CDATA[
|
<content><![CDATA[
|
||||||
##############################################
|
##############################################
|
||||||
# #
|
# #
|
||||||
|
|||||||
@@ -2121,7 +2121,7 @@ action = "no action";
|
|||||||
<service type="ftp" title="{{lng.admin.configfiles.ftp}}">
|
<service type="ftp" title="{{lng.admin.configfiles.ftp}}">
|
||||||
<!-- Proftpd -->
|
<!-- Proftpd -->
|
||||||
<daemon name="proftpd" title="ProFTPd" default="true">
|
<daemon name="proftpd" title="ProFTPd" default="true">
|
||||||
<install><![CDATA[apt-get install proftpd-basic proftpd-mod-mysql proftpd-mod-crypto]]></install>
|
<install><![CDATA[apt-get install proftpd-basic proftpd-mod-mysql proftpd-mod-crypto proftpd-mod-wrap]]></install>
|
||||||
<file name="/etc/proftpd/create-cert.sh" chown="root:0"
|
<file name="/etc/proftpd/create-cert.sh" chown="root:0"
|
||||||
chmod="0700">
|
chmod="0700">
|
||||||
<content><![CDATA[#!/bin/bash
|
<content><![CDATA[#!/bin/bash
|
||||||
@@ -2628,7 +2628,7 @@ no
|
|||||||
</content>
|
</content>
|
||||||
</file>
|
</file>
|
||||||
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
<file name="/etc/pure-ftpd/db/mysql.conf" chown="root:0"
|
||||||
chmod="0644" backup="true">
|
chmod="0640" backup="true">
|
||||||
<content><![CDATA[
|
<content><![CDATA[
|
||||||
##############################################
|
##############################################
|
||||||
# #
|
# #
|
||||||
|
|||||||
@@ -103,18 +103,21 @@ return [
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
'spam_tag_level' => [
|
'spam_tag_level' => [
|
||||||
|
'visible' => Settings::Get('antispam.activated') == '1',
|
||||||
'label' => lng('antispam.spam_tag_level'),
|
'label' => lng('antispam.spam_tag_level'),
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'string_regexp' => '/^\d{1,}(\.\d{1,2})?$/',
|
'string_regexp' => '/^\d{1,}(\.\d{1,2})?$/',
|
||||||
'value' => $result['spam_tag_level']
|
'value' => $result['spam_tag_level']
|
||||||
],
|
],
|
||||||
'spam_kill_level' => [
|
'spam_kill_level' => [
|
||||||
|
'visible' => Settings::Get('antispam.activated') == '1',
|
||||||
'label' => lng('antispam.spam_kill_level'),
|
'label' => lng('antispam.spam_kill_level'),
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'string_regexp' => '/^\d{1,}(\.\d{1,2})?$/',
|
'string_regexp' => '/^\d{1,}(\.\d{1,2})?$/',
|
||||||
'value' => $result['spam_kill_level']
|
'value' => $result['spam_kill_level']
|
||||||
],
|
],
|
||||||
'bypass_spam' => [
|
'bypass_spam' => [
|
||||||
|
'visible' => Settings::Get('antispam.activated') == '1',
|
||||||
'label' => lng('antispam.bypass_spam'),
|
'label' => lng('antispam.bypass_spam'),
|
||||||
'type' => 'label',
|
'type' => 'label',
|
||||||
'value' => ((int)$result['bypass_spam'] == 0 ? lng('panel.no') : lng('panel.yes')),
|
'value' => ((int)$result['bypass_spam'] == 0 ? lng('panel.no') : lng('panel.yes')),
|
||||||
@@ -128,6 +131,7 @@ return [
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
'policy_greylist' => [
|
'policy_greylist' => [
|
||||||
|
'visible' => Settings::Get('antispam.activated') == '1',
|
||||||
'label' => lng('antispam.policy_greylist'),
|
'label' => lng('antispam.policy_greylist'),
|
||||||
'type' => 'label',
|
'type' => 'label',
|
||||||
'value' => ((int)$result['policy_greylist'] == 0 ? lng('panel.no') : lng('panel.yes')),
|
'value' => ((int)$result['policy_greylist'] == 0 ? lng('panel.no') : lng('panel.yes')),
|
||||||
|
|||||||
@@ -1143,7 +1143,8 @@ Atentament, el vostre administrador'
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'No s\'ha enviat cap correu electrònic perquè no hi ha destinataris a la base de dades'
|
'norecipients' => 'No s\'ha enviat cap correu electrònic perquè no hi ha destinataris a la base de dades',
|
||||||
|
'success' => 'Missatge enviat correctament als destinataris de %s',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'databasename' => 'Usuari/Nom de la base de dades',
|
'databasename' => 'Usuari/Nom de la base de dades',
|
||||||
@@ -2169,7 +2170,6 @@ Atentament, el vostre administrador'
|
|||||||
'issuer' => 'Emissor'
|
'issuer' => 'Emissor'
|
||||||
],
|
],
|
||||||
'success' => [
|
'success' => [
|
||||||
'messages_success' => 'Missatge enviat correctament als destinataris de %s',
|
|
||||||
'success' => 'Informació',
|
'success' => 'Informació',
|
||||||
'clickheretocontinue' => 'Feu clic aquí per a continuar',
|
'clickheretocontinue' => 'Feu clic aquí per a continuar',
|
||||||
'settingssaved' => 'La configuració s\'ha guardat correctament.',
|
'settingssaved' => 'La configuració s\'ha guardat correctament.',
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ return [
|
|||||||
'2fa_ga_desc' => 'Váš účet je nastaven tak, aby používal jednorázová hesla založená na čase prostřednictvím autentizační aplikace. Naskenujte níže uvedený QR kód pomocí požadované autentizační aplikace pro vygenerování kódů. Chcete-li deaktivovat, klikněte na "Deaktivovat 2FA"',
|
'2fa_ga_desc' => 'Váš účet je nastaven tak, aby používal jednorázová hesla založená na čase prostřednictvím autentizační aplikace. Naskenujte níže uvedený QR kód pomocí požadované autentizační aplikace pro vygenerování kódů. Chcete-li deaktivovat, klikněte na "Deaktivovat 2FA"',
|
||||||
'2fa_not_activated' => 'Dvoufázové ověřování není povoleno',
|
'2fa_not_activated' => 'Dvoufázové ověřování není povoleno',
|
||||||
'2fa_not_activated_for_user' => 'Dvoufaktorové ověření není pro aktuálního uživatele povoleno',
|
'2fa_not_activated_for_user' => 'Dvoufaktorové ověření není pro aktuálního uživatele povoleno',
|
||||||
|
'type_2fa' => 'Stav 2FA',
|
||||||
],
|
],
|
||||||
'admin' => [
|
'admin' => [
|
||||||
'overview' => 'Přehled',
|
'overview' => 'Přehled',
|
||||||
@@ -681,6 +682,8 @@ return [
|
|||||||
'title' => 'Použít greylisting',
|
'title' => 'Použít greylisting',
|
||||||
'description' => 'Příchozí e-maily budou chráněny <a href="https://en.wikipedia.org/wiki/Greylisting_(email)" target="_blank">greylisting</a>.<br/>Výchozí: ano'
|
'description' => 'Příchozí e-maily budou chráněny <a href="https://en.wikipedia.org/wiki/Greylisting_(email)" target="_blank">greylisting</a>.<br/>Výchozí: ano'
|
||||||
],
|
],
|
||||||
|
'required_spf_dns' => 'Požadovaný SPF DNS záznam',
|
||||||
|
'required_dmarc_dns' => 'Požadovaný DMARC DNS záznam',
|
||||||
'required_dkim_dns' => 'Požadovaný DKIM DNS záznam',
|
'required_dkim_dns' => 'Požadovaný DKIM DNS záznam',
|
||||||
],
|
],
|
||||||
'dns' => [
|
'dns' => [
|
||||||
@@ -782,6 +785,7 @@ return [
|
|||||||
'hsts' => 'HSTS povoleno',
|
'hsts' => 'HSTS povoleno',
|
||||||
'aliasdomainid' => 'ID aliasové domény',
|
'aliasdomainid' => 'ID aliasové domény',
|
||||||
'nodomainsassignedbyadmin' => 'Váš účet nemá v současné době přiřazeny žádné (aktivní) domény. Pokud si myslíte, že je to špatné, kontaktujte svého správce.',
|
'nodomainsassignedbyadmin' => 'Váš účet nemá v současné době přiřazeny žádné (aktivní) domény. Pokud si myslíte, že je to špatné, kontaktujte svého správce.',
|
||||||
|
'email_only' => 'Jen emaily',
|
||||||
],
|
],
|
||||||
'emails' => [
|
'emails' => [
|
||||||
'description' => 'Zde můžete vytvářet a měnit své e-mailové adresy.<br />Účet je jako poštovní schránka před vaším domem. Pokud vám někdo pošle e-mail, bude vypuštěn na účet.<br /><br />Chcete-li stáhnout své e-maily, použijte následující nastavení ve vašem poštovním programu: (Data v <i>kurzívě</i> musí být změněna na ekvivalenty, které jste zadali!<br />Hostitelské jméno: <b><i>doménové jméno</i></b><br />Uživatelské jméno: <b><i>jméno účtu / e-mailová adresa</i></b><br />heslo: <b><i>heslo, které jste zvolili</i></b>',
|
'description' => 'Zde můžete vytvářet a měnit své e-mailové adresy.<br />Účet je jako poštovní schránka před vaším domem. Pokud vám někdo pošle e-mail, bude vypuštěn na účet.<br /><br />Chcete-li stáhnout své e-maily, použijte následující nastavení ve vašem poštovním programu: (Data v <i>kurzívě</i> musí být změněna na ekvivalenty, které jste zadali!<br />Hostitelské jméno: <b><i>doménové jméno</i></b><br />Uživatelské jméno: <b><i>jméno účtu / e-mailová adresa</i></b><br />heslo: <b><i>heslo, které jste zvolili</i></b>',
|
||||||
@@ -1101,6 +1105,7 @@ return [
|
|||||||
'combination_not_found' => 'Kombinace uživatele a e-mailové adresy nenalezena.',
|
'combination_not_found' => 'Kombinace uživatele a e-mailové adresy nenalezena.',
|
||||||
'2fa' => 'Dvoufázové ověření (2FA)',
|
'2fa' => 'Dvoufázové ověření (2FA)',
|
||||||
'2facode' => 'Zadejte prosím 2FA kód',
|
'2facode' => 'Zadejte prosím 2FA kód',
|
||||||
|
'2faremember' => 'Důvěřovat prohlížeči',
|
||||||
],
|
],
|
||||||
'mails' => [
|
'mails' => [
|
||||||
'pop_success' => [
|
'pop_success' => [
|
||||||
@@ -1208,6 +1213,7 @@ Ach upřímně, váš správce',
|
|||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'Nebyl odeslán žádný e-mail, protože v databázi nejsou žádní příjemci',
|
'norecipients' => 'Nebyl odeslán žádný e-mail, protože v databázi nejsou žádní příjemci',
|
||||||
|
'success' => 'Zpráva byla úspěšně odeslána příjemcům %s',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'databasename' => 'Uživatel/Jméno databáze',
|
'databasename' => 'Uživatel/Jméno databáze',
|
||||||
@@ -1227,7 +1233,7 @@ Ach upřímně, váš správce',
|
|||||||
],
|
],
|
||||||
'opcacheinfo' => [
|
'opcacheinfo' => [
|
||||||
'generaltitle' => 'Obecné informace',
|
'generaltitle' => 'Obecné informace',
|
||||||
'resetcache' => 'Resetövat OPcache',
|
'resetcache' => 'Resetovat OPcache',
|
||||||
'version' => 'Verze OPCache',
|
'version' => 'Verze OPCache',
|
||||||
'phpversion' => 'Verze PHP',
|
'phpversion' => 'Verze PHP',
|
||||||
'runtimeconf' => 'Spustitelná konfigurace',
|
'runtimeconf' => 'Spustitelná konfigurace',
|
||||||
@@ -1941,7 +1947,7 @@ Ach upřímně, váš správce',
|
|||||||
],
|
],
|
||||||
'documentroot_use_default_value' => [
|
'documentroot_use_default_value' => [
|
||||||
'title' => 'Použít název domény jako výchozí hodnotu pro cestu kořenového adresáře dokumentu',
|
'title' => 'Použít název domény jako výchozí hodnotu pro cestu kořenového adresáře dokumentu',
|
||||||
'description' => 'Pokud je povoleno a cesta DocumentRoot je prázdná, výchozí hodnotou bude název (sub)domény.<br /><br />Příklady: <br />/var/customers/customer_name/example.com/<br />/var /customers/customer_name/subdomain.example.com/',
|
'description' => 'Pokud je povoleno a cesta DocumentRoot je prázdná, výchozí hodnotou bude název (sub)domény.<br /><br />Příklady: <br />/var/customers/webs/customer_name/example.com/<br />/var/customers/webs/customer_name/subdomain.example.com/',
|
||||||
],
|
],
|
||||||
'panel_phpconfigs_hidesubdomains' => [
|
'panel_phpconfigs_hidesubdomains' => [
|
||||||
'title' => 'Skrýt subdomény v PHP-konfiguračním přehledu',
|
'title' => 'Skrýt subdomény v PHP-konfiguračním přehledu',
|
||||||
@@ -2268,7 +2274,6 @@ Ach upřímně, váš správce',
|
|||||||
'issuer' => 'Vydavatel',
|
'issuer' => 'Vydavatel',
|
||||||
],
|
],
|
||||||
'success' => [
|
'success' => [
|
||||||
'messages_success' => 'Zpráva byla úspěšně odeslána příjemcům %s',
|
|
||||||
'success' => 'Informace',
|
'success' => 'Informace',
|
||||||
'clickheretocontinue' => 'Klikněte zde pro pokračování',
|
'clickheretocontinue' => 'Klikněte zde pro pokračování',
|
||||||
'settingssaved' => 'Nastavení bylo úspěšně uloženo.',
|
'settingssaved' => 'Nastavení bylo úspěšně uloženo.',
|
||||||
|
|||||||
@@ -1141,6 +1141,7 @@ Vielen Dank, Ihr Administrator',
|
|||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'Es wurde keine E-Mail versendet, da sich keine Empfänger in der Datenbank befinden',
|
'norecipients' => 'Es wurde keine E-Mail versendet, da sich keine Empfänger in der Datenbank befinden',
|
||||||
|
'success' => 'Nachricht erfolgreich an "%s" Empfänger gesendet',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'databasename' => 'Benutzer-/Datenbankname',
|
'databasename' => 'Benutzer-/Datenbankname',
|
||||||
@@ -2139,7 +2140,6 @@ Vielen Dank, Ihr Administrator',
|
|||||||
'dmarc_entry' => 'DMARC-Eintrag für alle Domains',
|
'dmarc_entry' => 'DMARC-Eintrag für alle Domains',
|
||||||
],
|
],
|
||||||
'success' => [
|
'success' => [
|
||||||
'messages_success' => 'Nachricht erfolgreich an "%s" Empfänger gesendet',
|
|
||||||
'success' => 'Information',
|
'success' => 'Information',
|
||||||
'clickheretocontinue' => 'Hier klicken, um fortzufahren',
|
'clickheretocontinue' => 'Hier klicken, um fortzufahren',
|
||||||
'settingssaved' => 'Die Einstellungen wurden erfolgreich gespeichert.',
|
'settingssaved' => 'Die Einstellungen wurden erfolgreich gespeichert.',
|
||||||
|
|||||||
@@ -1213,6 +1213,7 @@ Yours sincerely, your administrator',
|
|||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'No e-mail has been sent because there are no recipients in the database',
|
'norecipients' => 'No e-mail has been sent because there are no recipients in the database',
|
||||||
|
'success' => 'Successfully sent message to %s recipients',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'databasename' => 'User/Database name',
|
'databasename' => 'User/Database name',
|
||||||
@@ -2273,7 +2274,6 @@ Yours sincerely, your administrator',
|
|||||||
'issuer' => 'Issuer',
|
'issuer' => 'Issuer',
|
||||||
],
|
],
|
||||||
'success' => [
|
'success' => [
|
||||||
'messages_success' => 'Successfully sent message to %s recipients',
|
|
||||||
'success' => 'Information',
|
'success' => 'Information',
|
||||||
'clickheretocontinue' => 'Click here to continue',
|
'clickheretocontinue' => 'Click here to continue',
|
||||||
'settingssaved' => 'The settings have been successfully saved.',
|
'settingssaved' => 'The settings have been successfully saved.',
|
||||||
|
|||||||
@@ -1132,7 +1132,8 @@ Atentamente, su administrador'
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'No se ha enviado ningún correo electrónico porque no hay destinatarios en la base de datos'
|
'norecipients' => 'No se ha enviado ningún correo electrónico porque no hay destinatarios en la base de datos',
|
||||||
|
'success' => 'Mensaje enviado correctamente a los destinatarios de %s',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'databasename' => 'Usuario/Nombre de la base de datos',
|
'databasename' => 'Usuario/Nombre de la base de datos',
|
||||||
@@ -2152,7 +2153,6 @@ Atentamente, su administrador'
|
|||||||
'issuer' => 'Emisor'
|
'issuer' => 'Emisor'
|
||||||
],
|
],
|
||||||
'success' => [
|
'success' => [
|
||||||
'messages_success' => 'Mensaje enviado correctamente a los destinatarios de %s',
|
|
||||||
'success' => 'Información',
|
'success' => 'Información',
|
||||||
'clickheretocontinue' => 'Haga clic aquí para continuar',
|
'clickheretocontinue' => 'Haga clic aquí para continuar',
|
||||||
'settingssaved' => 'La configuración se ha guardado correctamente.',
|
'settingssaved' => 'La configuración se ha guardado correctamente.',
|
||||||
|
|||||||
@@ -466,6 +466,7 @@ return [
|
|||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'Aucun e-mail n\'a été envoyé car il n\'existe aucun destinataire dans la base de données',
|
'norecipients' => 'Aucun e-mail n\'a été envoyé car il n\'existe aucun destinataire dans la base de données',
|
||||||
|
'success' => 'Le message a été envoyé aux destinataires "%s"',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'databasename' => 'Nom de la base de données',
|
'databasename' => 'Nom de la base de données',
|
||||||
@@ -749,9 +750,6 @@ return [
|
|||||||
'description' => 'Les administrateurs / revendeurs peuvent réinitialiser leurs mots de passe et il sera envoyé à leurs propres adresses e-mails',
|
'description' => 'Les administrateurs / revendeurs peuvent réinitialiser leurs mots de passe et il sera envoyé à leurs propres adresses e-mails',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'success' => [
|
|
||||||
'messages_success' => 'Le message a été envoyé aux destinataires "%s"',
|
|
||||||
],
|
|
||||||
'traffic' => [
|
'traffic' => [
|
||||||
'month' => 'Mois',
|
'month' => 'Mois',
|
||||||
'day' => 'Jour',
|
'day' => 'Jour',
|
||||||
|
|||||||
@@ -1043,6 +1043,7 @@ Cordiali Saluti, Team Froxlor',
|
|||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'Nessuna e-mail è stata inviata perch¸ non ci sono i destinatari nel database',
|
'norecipients' => 'Nessuna e-mail è stata inviata perch¸ non ci sono i destinatari nel database',
|
||||||
|
'success' => 'Inviato correttamente il messaggio a %s recipients',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'description' => 'Qui puoi creare e modificare il tuo database MySQL<br />Le modifiche sono istantanee e puoi usare subito il database.<br />Nel menù a sinistra trovi phpMyAdmin con cui puoi amministrare il tuo database.<br /><br />Per usare i database nei tuoi script php usa le seguenti impostazioni: (Le parole in <i>corsivo</i> devono essere modificate con quello che hai scritto!)<br />Hostname: <b><SQL_HOST></b><br />Utente: <b><i>Nome database</i></b><br />Password: <b><i>La password che hai scelto</i></b><br />Database: <b><i>Nome database</i></b>',
|
'description' => 'Qui puoi creare e modificare il tuo database MySQL<br />Le modifiche sono istantanee e puoi usare subito il database.<br />Nel menù a sinistra trovi phpMyAdmin con cui puoi amministrare il tuo database.<br /><br />Per usare i database nei tuoi script php usa le seguenti impostazioni: (Le parole in <i>corsivo</i> devono essere modificate con quello che hai scritto!)<br />Hostname: <b><SQL_HOST></b><br />Utente: <b><i>Nome database</i></b><br />Password: <b><i>La password che hai scelto</i></b><br />Database: <b><i>Nome database</i></b>',
|
||||||
@@ -1703,7 +1704,6 @@ Nota: Perfavore <b>sii sicuro</b> di usare lo stesso nome di file come per il cr
|
|||||||
'spf_entry' => 'Impostazioni SPF per tutti i domini',
|
'spf_entry' => 'Impostazioni SPF per tutti i domini',
|
||||||
],
|
],
|
||||||
'success' => [
|
'success' => [
|
||||||
'messages_success' => 'Inviato correttamente il messaggio a %s recipients',
|
|
||||||
'success' => 'Informazioni',
|
'success' => 'Informazioni',
|
||||||
'clickheretocontinue' => 'Clicca qui per continuare',
|
'clickheretocontinue' => 'Clicca qui per continuare',
|
||||||
'settingssaved' => 'Le impostazioni sono state salvate con successo.',
|
'settingssaved' => 'Le impostazioni sono state salvate con successo.',
|
||||||
|
|||||||
@@ -619,6 +619,7 @@ Met vriendelijke groet, uw beheerder',
|
|||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'Er is geen email verstuurd omdat er geen ontvangers in de database zijn',
|
'norecipients' => 'Er is geen email verstuurd omdat er geen ontvangers in de database zijn',
|
||||||
|
'success' => 'Bericht verzonden naar ontvangers %s',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'databasename' => 'gebruiker/database naam',
|
'databasename' => 'gebruiker/database naam',
|
||||||
@@ -1069,7 +1070,6 @@ Met vriendelijke groet, uw beheerder',
|
|||||||
'spf_entry' => 'SPF regel voor alle domeinen',
|
'spf_entry' => 'SPF regel voor alle domeinen',
|
||||||
],
|
],
|
||||||
'success' => [
|
'success' => [
|
||||||
'messages_success' => 'Bericht verzonden naar ontvangers %s',
|
|
||||||
'success' => 'Informatie',
|
'success' => 'Informatie',
|
||||||
'clickheretocontinue' => 'Klik hier om verder te gaan',
|
'clickheretocontinue' => 'Klik hier om verder te gaan',
|
||||||
'settingssaved' => 'De instellingen zijn opgeslagen.',
|
'settingssaved' => 'De instellingen zijn opgeslagen.',
|
||||||
|
|||||||
@@ -554,6 +554,7 @@ return [
|
|||||||
],
|
],
|
||||||
'message' => [
|
'message' => [
|
||||||
'norecipients' => 'Email não enviado porque não tem destinatário no banco de dados',
|
'norecipients' => 'Email não enviado porque não tem destinatário no banco de dados',
|
||||||
|
'success' => 'Mensagens enviadas para %s destinatários com sucesso',
|
||||||
],
|
],
|
||||||
'mysql' => [
|
'mysql' => [
|
||||||
'description' => 'Aqui você pode criar e alterar seus bancos de dados MySQL.<br />As alterações são instantâneas e podem ser utilizadas imediatamente depois de salvas.<br />No menu do lado esquerdo você pode encontrar a ferramenta phpMyAdmin e com ela facilmente administrar seus bancos de dados.<br /><br />Para usar seu banco de dados com scripts em PHP use as seguintes configurações: (Os dados em <i>italico</i> devem ser substituidos pelo equivalente do banco de dados que você criou!)<br />Hostname: <b><SQL_HOST></b><br />Usuario: <b><i>Nome do banco de dadose</i></b><br />Senha: <b><i>a senha que você escolheu</i></b><br />Banco de dados: <b><i>Nome do banco de dados',
|
'description' => 'Aqui você pode criar e alterar seus bancos de dados MySQL.<br />As alterações são instantâneas e podem ser utilizadas imediatamente depois de salvas.<br />No menu do lado esquerdo você pode encontrar a ferramenta phpMyAdmin e com ela facilmente administrar seus bancos de dados.<br /><br />Para usar seu banco de dados com scripts em PHP use as seguintes configurações: (Os dados em <i>italico</i> devem ser substituidos pelo equivalente do banco de dados que você criou!)<br />Hostname: <b><SQL_HOST></b><br />Usuario: <b><i>Nome do banco de dadose</i></b><br />Senha: <b><i>a senha que você escolheu</i></b><br />Banco de dados: <b><i>Nome do banco de dados',
|
||||||
@@ -880,9 +881,6 @@ return [
|
|||||||
'description' => 'Se ativado você pode trocar o cliente de um domínio para administração de outro.<br /><b>Attention:</b> Froxlor não troca nenhum caminho. Isto pode fazer com que domínios parem de funcionar',
|
'description' => 'Se ativado você pode trocar o cliente de um domínio para administração de outro.<br /><b>Attention:</b> Froxlor não troca nenhum caminho. Isto pode fazer com que domínios parem de funcionar',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'success' => [
|
|
||||||
'messages_success' => 'Mensagens enviadas para %s destinatários com sucesso',
|
|
||||||
],
|
|
||||||
'traffic' => [
|
'traffic' => [
|
||||||
'month' => 'Mês',
|
'month' => 'Mês',
|
||||||
'day' => 'Diariamente',
|
'day' => 'Diariamente',
|
||||||
|
|||||||
10
package-lock.json
generated
10
package-lock.json
generated
@@ -9,7 +9,7 @@
|
|||||||
"@fortawesome/fontawesome-free": "^6.4.2",
|
"@fortawesome/fontawesome-free": "^6.4.2",
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
"@vitejs/plugin-vue": "^4.0.0",
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
"axios": "^1.6.0",
|
"axios": "^1.7.4",
|
||||||
"bootstrap": "^5.3.2",
|
"bootstrap": "^5.3.2",
|
||||||
"chart.js": "^4.4.0",
|
"chart.js": "^4.4.0",
|
||||||
"jquery": "^3.6.1",
|
"jquery": "^3.6.1",
|
||||||
@@ -580,12 +580,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.6.0",
|
"version": "1.7.4",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz",
|
||||||
"integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
|
"integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.0",
|
"follow-redirects": "^1.15.6",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"proxy-from-env": "^1.1.0"
|
"proxy-from-env": "^1.1.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"@fortawesome/fontawesome-free": "^6.4.2",
|
"@fortawesome/fontawesome-free": "^6.4.2",
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
"@vitejs/plugin-vue": "^4.0.0",
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
"axios": "^1.6.0",
|
"axios": "^1.7.4",
|
||||||
"bootstrap": "^5.3.2",
|
"bootstrap": "^5.3.2",
|
||||||
"chart.js": "^4.4.0",
|
"chart.js": "^4.4.0",
|
||||||
"jquery": "^3.6.1",
|
"jquery": "^3.6.1",
|
||||||
|
|||||||
@@ -41,8 +41,9 @@ export default function () {
|
|||||||
$('#speciallogfilenote').remove();
|
$('#speciallogfilenote').remove();
|
||||||
$('#speciallogfile').removeClass('is-invalid');
|
$('#speciallogfile').removeClass('is-invalid');
|
||||||
$('#speciallogverified').val(0);
|
$('#speciallogverified').val(0);
|
||||||
|
const cFileName = window.location.pathname.substring(window.location.pathname.lastIndexOf("/")+1);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: window.location.pathname.substring(1) + "?page=overview&action=jqSpeciallogfileNote",
|
url: cFileName + "?page=overview&action=jqSpeciallogfileNote",
|
||||||
type: "POST",
|
type: "POST",
|
||||||
data: {
|
data: {
|
||||||
id: $('input[name=id]').val(), newval: +$('#speciallogfile').is(':checked')
|
id: $('input[name=id]').val(), newval: +$('#speciallogfile').is(':checked')
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% if norow == false and (field.type != 'hidden' or (field.type == 'hidden' and field.display is defined and field.display is not empty)) %}
|
{% if norow == false and (field.type != 'hidden' or (field.type == 'hidden' and field.display is defined and field.display is not empty)) %}
|
||||||
<div class="row g-0 formfield d-flex align-items-center">
|
<div class="row g-0 formfield d-flex align-items-center">
|
||||||
{% if field.prior_infotext is defined and field.prior_infotext|length > 0 %}
|
{% if field.prior_infotext is defined and field.prior_infotext|length > 0 %}
|
||||||
<h5>{{ field.prior_infotext }}</h5>
|
<h5>{{ field.prior_infotext|raw }}</h5>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if field.label is iterable %}
|
{% if field.label is iterable %}
|
||||||
<label for="{{ id }}" class="col-sm-6 col-form-label pe-3">
|
<label for="{{ id }}" class="col-sm-6 col-form-label pe-3">
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<input class="form-control" type="text" name="2fa_code" id="2fa_code" value="" autocomplete="off" autofocus required/>
|
<input class="form-control" type="text" name="2fa_code" id="2fa_code" value="" autocomplete="off" autofocus required/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% if remember_me %}
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-check form-switch">
|
<div class="form-check form-switch">
|
||||||
<input type="hidden" name="2fa_remember" value="0"/>
|
<input type="hidden" name="2fa_remember" value="0"/>
|
||||||
@@ -29,6 +30,7 @@
|
|||||||
<label class="form-check-label" for="2fa_remember">{{ lng('login.2faremember') }}</label>
|
<label class="form-check-label" for="2fa_remember">{{ lng('login.2faremember') }}</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user