diff --git a/README.md b/README.md index 9407c022..71bc7d6a 100644 --- a/README.md +++ b/README.md @@ -54,24 +54,24 @@ May be found in [COPYING](COPYING) ### Tarball https://files.froxlor.org/releases/froxlor-latest.tar.gz [MD5](https://files.froxlor.org/releases/froxlor-latest.tar.gz.md5) [SHA1](https://files.froxlor.org/releases/froxlor-latest.tar.gz.sha1) -### Debian repository +### Debian / Ubutnu repository [HowTo](https://docs.froxlor.org/general/installation/aptpackage.html) -``` -apt-get -y install apt-transport-https lsb-release ca-certificates -wget -O - https://deb.froxlor.org/froxlor.gpg | apt-key add - -echo "deb https://deb.froxlor.org/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list -``` - -### Ubuntu repository - -[HowTo](https://docs.froxlor.org/general/installation/aptpackage.html) +#### Debian ``` -apt-get -y install apt-transport-https lsb-release ca-certificates -wget -O - https://deb.froxlor.org/froxlor.gpg | apt-key add - -echo "deb https://deb.froxlor.org/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list +apt-get -y install apt-transport-https lsb-release ca-certificates curl +curl -sSLo /usr/share/keyrings/deb.froxlor.org-froxlor.gpg https://deb.froxlor.org/froxlor.gpg +sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.froxlor.org-froxlor.gpg] https://deb.froxlor.org/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list' +``` + +#### Ubuntu + +``` +apt-get -y install apt-transport-https lsb-release ca-certificates curl +curl -sSLo /usr/share/keyrings/deb.froxlor.org-froxlor.gpg https://deb.froxlor.org/froxlor.gpg +sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.froxlor.org-froxlor.gpg] https://deb.froxlor.org/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list' ``` ## Contributing diff --git a/actions/admin/index.html b/actions/admin/index.html new file mode 100644 index 00000000..e69de29b diff --git a/actions/admin/settings/131.ssl.php b/actions/admin/settings/131.ssl.php index 2d30bf3c..4479229c 100644 --- a/actions/admin/settings/131.ssl.php +++ b/actions/admin/settings/131.ssl.php @@ -229,7 +229,7 @@ return array( 'default' => true, 'save_method' => 'storeSettingField' ), - 'system_disable_le_selfcheck' => array( + 'system_le_domain_dnscheck' => array( 'label' => $lng['serversettings']['le_domain_dnscheck'], 'settinggroup' => 'system', 'varname' => 'le_domain_dnscheck', diff --git a/actions/admin/settings/index.html b/actions/admin/settings/index.html new file mode 100644 index 00000000..e69de29b diff --git a/actions/index.html b/actions/index.html new file mode 100644 index 00000000..e69de29b diff --git a/admin_admins.php b/admin_admins.php index 3c8031d8..9dbfe602 100644 --- a/admin_admins.php +++ b/admin_admins.php @@ -260,7 +260,7 @@ if ($page == 'admins' && $userinfo['change_serversettings'] == '1') { $dec_places = Settings::Get('panel.decimal_places'); $result['traffic'] = round($result['traffic'] / (1024 * 1024), $dec_places); $result['diskspace'] = round($result['diskspace'] / 1024, $dec_places); - $result['email'] = $idna_convert->decode($result['email']); + $result['email'] = $idna_convert->decode($result['email'] ?? ''); $customers_ul = \Froxlor\UI\HTML::makecheckbox('customers_ul', $lng['customer']['unlimited'], '-1', false, $result['customers'], true, true); if ($result['customers'] == '-1') { diff --git a/admin_customers.php b/admin_customers.php index a6555709..96877a1c 100644 --- a/admin_customers.php +++ b/admin_customers.php @@ -396,7 +396,7 @@ if ($page == 'customers' && $userinfo['customers'] != '0') { $dec_places = Settings::Get('panel.decimal_places'); $result['traffic'] = round($result['traffic'] / (1024 * 1024), $dec_places); $result['diskspace'] = round($result['diskspace'] / 1024, $dec_places); - $result['email'] = $idna_convert->decode($result['email']); + $result['email'] = $idna_convert->decode($result['email'] ?? ''); $nextcloud_quota_ul = \Froxlor\UI\HTML::makecheckbox('nextcloud_quota_ul', $lng['customer']['unlimited'], '-1', false, $result['nextcloud_quota'], true, true); if ($result['nextcloud_quota'] == '-1') { diff --git a/admin_domains.php b/admin_domains.php index fc88f711..4a9349a1 100644 --- a/admin_domains.php +++ b/admin_domains.php @@ -148,7 +148,7 @@ if ($page == 'domains' || $page == 'overview') { $customers = \Froxlor\UI\HTML::makeoption($lng['panel']['please_choose'], 0, 0, true); $result_customers_stmt = Database::prepare(" SELECT `customerid`, `loginname`, `name`, `firstname`, `company` - FROM `" . TABLE_PANEL_CUSTOMERS . "` " . ($userinfo['customers_see_all'] ? '' : " WHERE `adminid` = '" . (int) $userinfo['adminid'] . "' ") . " ORDER BY COALESCE(NULLIF(`name`,''), `company`) ASC"); + FROM `" . TABLE_PANEL_CUSTOMERS . "` " . ($userinfo['customers_see_all'] ? '' : " WHERE `adminid` = :adminid ") . " ORDER BY COALESCE(NULLIF(`name`,''), `company`) ASC"); $params = array(); if ($userinfo['customers_see_all'] == '0') { $params['adminid'] = $userinfo['adminid']; @@ -674,7 +674,7 @@ if ($page == 'domains' || $page == 'overview') { function formatDomainEntry(&$row, &$idna_convert) { $row['domain'] = $idna_convert->decode($row['domain']); - $row['aliasdomain'] = $idna_convert->decode($row['aliasdomain']); + $row['aliasdomain'] = $idna_convert->decode($row['aliasdomain'] ?? ''); $row['ipandport'] = ''; foreach ($row['ipsandports'] as $rowip) { @@ -685,7 +685,7 @@ function formatDomainEntry(&$row, &$idna_convert) } } $row['ipandport'] = substr($row['ipandport'], 0, - 1); - $row['termination_date'] = str_replace("0000-00-00", "", $row['termination_date']); + $row['termination_date'] = str_replace("0000-00-00", "", $row['termination_date'] ?? ''); $row['termination_css'] = ""; if ($row['termination_date'] != "") { diff --git a/css/images/index.html b/css/images/index.html new file mode 100644 index 00000000..e69de29b diff --git a/css/index.html b/css/index.html new file mode 100644 index 00000000..e69de29b diff --git a/customer_domains.php b/customer_domains.php index 26fe3833..b2d651a4 100644 --- a/customer_domains.php +++ b/customer_domains.php @@ -83,7 +83,7 @@ if ($page == 'overview') { $statsapp = 'webalizer'; } $row = [ - 'domain' => $idna_convert->decode($parentdomain) + 'domain' => $idna_convert->decode($parentdomain ?? '') ]; eval("\$domains.=\"" . \Froxlor\UI\Template::getTemplate("domains/domains_delimiter") . "\";"); @@ -472,8 +472,8 @@ if ($page == 'overview') { function formatDomainEntry(&$row, &$idna_convert) { $row['domain'] = $idna_convert->decode($row['domain']); - $row['aliasdomain'] = $idna_convert->decode($row['aliasdomain']); - $row['domainalias'] = $idna_convert->decode($row['domainalias']); + $row['aliasdomain'] = $idna_convert->decode($row['aliasdomain'] ?? ''); + $row['domainalias'] = $idna_convert->decode($row['domainalias'] ?? ''); /** * check for set ssl-certs to show different state-icons @@ -503,7 +503,7 @@ function formatDomainEntry(&$row, &$idna_convert) } } - $row['termination_date'] = str_replace("0000-00-00", "", $row['termination_date']); + $row['termination_date'] = str_replace("0000-00-00", "", $row['termination_date'] ?? ''); $row['termination_css'] = ""; if ($row['termination_date'] != "") { diff --git a/doc/example/index.html b/doc/example/index.html new file mode 100644 index 00000000..e69de29b diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/froxlor.sql b/install/froxlor.sql index 5b5a8b0a..c8aef3e6 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -723,7 +723,7 @@ opcache.validate_timestamps'), ('panel', 'logo_image_login', ''), ('panel', 'logo_overridetheme', '0'), ('panel', 'logo_overridecustom', '0'), - ('panel', 'version', '0.10.33'), + ('panel', 'version', '0.10.35.1'), ('panel', 'db_version', '202112310'); diff --git a/install/index.html b/install/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/lib/class.FroxlorInstall.php b/install/lib/class.FroxlorInstall.php index 30855bfa..b0e5c4a2 100644 --- a/install/lib/class.FroxlorInstall.php +++ b/install/lib/class.FroxlorInstall.php @@ -550,16 +550,23 @@ class FroxlorInstall $this->_updateSetting($upd_stmt, 'error', 'system', 'errorlog_level'); } + /* + * not yet used in configfiles + * -> 0.11.x + * $distros = glob(\Froxlor\FileDir::makeCorrectDir(\Froxlor\Froxlor::getInstallDir() . '/lib/configfiles/') . '*.xml'); foreach ($distros as $_distribution) { if ($this->_data['distribution'] == str_replace(".xml", "", strtolower(basename($_distribution)))) { $dist = new \Froxlor\Config\ConfigParser($_distribution); $defaults = $dist->getDefaults(); - foreach ($defaults->property as $property) { - $this->_updateSetting($upd_stmt, $property->value, $property->settinggroup, $property->varname); + if (!empty($defaults)) { + foreach ($defaults as $property) { + $this->_updateSetting($upd_stmt, $property->attributes()->value, $property->attributes()->settinggroup, $property->attributes()->varname); + } } } } + */ $this->_updateSetting($upd_stmt, $this->_data['activate_newsfeed'], 'admin', 'show_news_feed'); $this->_updateSetting($upd_stmt, dirname(dirname(dirname(__FILE__))), 'system', 'letsencryptchallengepath'); @@ -734,8 +741,26 @@ class FroxlorInstall private function _grantDbPrivilegesTo(&$db_root, $database, $username, $password, $access_host) { + // mariadb + if (version_compare($db_root->getAttribute(\PDO::ATTR_SERVER_VERSION), '10.0.0', '>=')) { + // create user + $stmt = $db_root->prepare(" + CREATE USER '" . $username . "'@'" . $access_host . "' IDENTIFIED BY :password + "); + $stmt->execute(array( + "password" => $password + )); + // grant privileges + $stmt = $db_root->prepare(" + GRANT ALL ON `" . $database . "`.* TO :username@:host + "); + $stmt->execute(array( + "username" => $username, + "host" => $access_host + )); + } // mysql8 compatibility - if (version_compare($db_root->getAttribute(\PDO::ATTR_SERVER_VERSION), '8.0.11', '>=')) { + elseif (version_compare($db_root->getAttribute(\PDO::ATTR_SERVER_VERSION), '8.0.11', '>=')) { // create user $stmt = $db_root->prepare(" CREATE USER '" . $username . "'@'" . $access_host . "' IDENTIFIED WITH mysql_native_password BY :password diff --git a/install/lib/index.html b/install/lib/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/lng/index.html b/install/lng/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/scripts/config-services.php b/install/scripts/config-services.php index f95f7dc1..9ba08d08 100755 --- a/install/scripts/config-services.php +++ b/install/scripts/config-services.php @@ -28,4 +28,5 @@ try { \Froxlor\Cli\ConfigServicesCmd::processParameters($argc, $argv); } catch (Exception $e) { \Froxlor\Cli\ConfigServicesCmd::printerr($e->getMessage()); + exit(1); } diff --git a/install/scripts/index.html b/install/scripts/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/scripts/switch-server-ip.php b/install/scripts/switch-server-ip.php index 7727dd36..b76e5b3c 100755 --- a/install/scripts/switch-server-ip.php +++ b/install/scripts/switch-server-ip.php @@ -28,4 +28,5 @@ try { \Froxlor\Cli\SwitchServerIpCmd::processParameters($argc, $argv); } catch (Exception $e) { \Froxlor\Cli\SwitchServerIpCmd::printerr($e->getMessage()); + exit(1); } diff --git a/install/templates/assets/css/index.html b/install/templates/assets/css/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/templates/assets/index.html b/install/templates/assets/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/templates/index.html b/install/templates/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/updates/froxlor/0.10/index.html b/install/updates/froxlor/0.10/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/updates/froxlor/0.10/update_0.10.inc.php b/install/updates/froxlor/0.10/update_0.10.inc.php index 7889077e..04f30612 100644 --- a/install/updates/froxlor/0.10/update_0.10.inc.php +++ b/install/updates/froxlor/0.10/update_0.10.inc.php @@ -970,3 +970,24 @@ if (\Froxlor\Froxlor::isFroxlorVersion('0.10.32')) { showUpdateStep("Updating from 0.10.32 to 0.10.33", false); \Froxlor\Froxlor::updateToVersion('0.10.33'); } + +if (\Froxlor\Froxlor::isFroxlorVersion('0.10.33')) { + showUpdateStep("Updating from 0.10.33 to 0.10.34", false); + \Froxlor\Froxlor::updateToVersion('0.10.34'); +} + +if (\Froxlor\Froxlor::isFroxlorVersion('0.10.34')) { + showUpdateStep("Updating from 0.10.34 to 0.10.34.1", false); + \Froxlor\Froxlor::updateToVersion('0.10.34.1'); +} + +if (\Froxlor\Froxlor::isFroxlorVersion('0.10.34.1')) { + showUpdateStep("Updating from 0.10.34.1 to 0.10.35", false); + \Froxlor\Froxlor::updateToVersion('0.10.35'); +} + + +if (\Froxlor\Froxlor::isFroxlorVersion('0.10.35')) { + showUpdateStep("Updating from 0.10.35 to 0.10.35.1", false); + \Froxlor\Froxlor::updateToVersion('0.10.35.1'); +} diff --git a/install/updates/froxlor/0.9/index.html b/install/updates/froxlor/0.9/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/updates/froxlor/index.html b/install/updates/froxlor/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/updates/index.html b/install/updates/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/updates/preconfig/0.10/index.html b/install/updates/preconfig/0.10/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/updates/preconfig/0.9/index.html b/install/updates/preconfig/0.9/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/updates/preconfig/index.html b/install/updates/preconfig/index.html new file mode 100644 index 00000000..e69de29b diff --git a/js/index.html b/js/index.html new file mode 100644 index 00000000..e69de29b diff --git a/js/plugins/index.html b/js/plugins/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Api/ApiCommand.php b/lib/Froxlor/Api/ApiCommand.php index f561ccf8..c93d5cbb 100644 --- a/lib/Froxlor/Api/ApiCommand.php +++ b/lib/Froxlor/Api/ApiCommand.php @@ -297,6 +297,10 @@ abstract class ApiCommand extends ApiParameter $sortfield[$id] = $sfield; } $field = implode('.', $sortfield); + if (preg_match('/^([a-z0-9\-\._`]+)$/i', $field) == false) { + // skip + continue; + } if (! $first) { $condition .= ' AND '; } @@ -313,6 +317,14 @@ abstract class ApiCommand extends ApiParameter } elseif (strtolower($valoper['op']) == 'in' && is_array($valoper['value']) && count($valoper['value']) > 0) { $condition .= $field . ' ' . $valoper['op'] . ' ('; foreach ($valoper['value'] as $incnt => $invalue) { + if (!is_numeric($incnt)) { + // skip + continue; + } + if (!empty($invalue) && preg_match('/^([a-z0-9\-\._`]+)$/i', $invalue) == false) { + // skip + continue; + } $condition .= ":" . $cleanfield . $incnt . ", "; $query_fields[':' . $cleanfield . $incnt] = $invalue ?? ''; } @@ -398,6 +410,10 @@ abstract class ApiCommand extends ApiParameter $sortfield[$id] = $sfield; } $field = implode('.', $sortfield); + if (preg_match('/^([a-z0-9\-\._`]+)$/i', $field) == false) { + // skip + continue; + } $by = strtoupper($by); if (! in_array($by, [ 'ASC', @@ -423,6 +439,7 @@ abstract class ApiCommand extends ApiParameter return $order; } + /** * return logger instance * diff --git a/lib/Froxlor/Api/Commands/Admins.php b/lib/Froxlor/Api/Commands/Admins.php index 747edfc9..0d39e53c 100644 --- a/lib/Froxlor/Api/Commands/Admins.php +++ b/lib/Froxlor/Api/Commands/Admins.php @@ -472,7 +472,7 @@ class Admins extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt // parameters $name = $this->getParam('name', true, $result['name']); $idna_convert = new \Froxlor\Idna\IdnaWrapper(); - $email = $this->getParam('email', true, $idna_convert->decode($result['email'])); + $email = $this->getParam('email', true, $idna_convert->decode($result['email'] ?? '')); $password = $this->getParam('admin_password', true, ''); $def_language = $this->getParam('def_language', true, $result['def_language']); $custom_notes = $this->getParam('custom_notes', true, $result['custom_notes']); diff --git a/lib/Froxlor/Api/Commands/Customers.php b/lib/Froxlor/Api/Commands/Customers.php index 038f7bdd..b4e7e4aa 100644 --- a/lib/Froxlor/Api/Commands/Customers.php +++ b/lib/Froxlor/Api/Commands/Customers.php @@ -954,7 +954,7 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource $move_to_admin = (int) ($this->getParam('move_to_admin', true, 0)); $idna_convert = new \Froxlor\Idna\IdnaWrapper(); - $email = $this->getParam('email', true, $idna_convert->decode($result['email'])); + $email = $this->getParam('email', true, $idna_convert->decode($result['email'] ?? '')); $name = $this->getParam('name', true, $result['name']); $firstname = $this->getParam('firstname', true, $result['firstname']); $company_required = empty($result['company']) && ((! empty($name) && empty($firstname)) || (empty($name) && ! empty($firstname)) || (empty($name) && empty($firstname))); diff --git a/lib/Froxlor/Api/Commands/EmailAccounts.php b/lib/Froxlor/Api/Commands/EmailAccounts.php index 9ee1d16c..8b652f88 100644 --- a/lib/Froxlor/Api/Commands/EmailAccounts.php +++ b/lib/Froxlor/Api/Commands/EmailAccounts.php @@ -197,6 +197,7 @@ class EmailAccounts extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Reso 'NAME' => $customer['name'], 'FIRSTNAME' => $customer['firstname'], 'COMPANY' => $customer['company'], + 'USERNAME' => $customer['loginname'], 'CUSTOMER_NO' => $customer['customernumber'] ); diff --git a/lib/Froxlor/Api/Commands/Ftps.php b/lib/Froxlor/Api/Commands/Ftps.php index 5b05cf13..1195c046 100644 --- a/lib/Froxlor/Api/Commands/Ftps.php +++ b/lib/Froxlor/Api/Commands/Ftps.php @@ -243,6 +243,7 @@ class Ftps extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEntit 'NAME' => $customer['name'], 'FIRSTNAME' => $customer['firstname'], 'COMPANY' => $customer['company'], + 'USERNAME' => $customer['loginname'], 'CUSTOMER_NO' => $customer['customernumber'], 'USR_NAME' => $username, 'USR_PASS' => htmlentities(htmlentities($password)), diff --git a/lib/Froxlor/Api/Commands/Mysqls.php b/lib/Froxlor/Api/Commands/Mysqls.php index e759ede2..6cac1c7d 100644 --- a/lib/Froxlor/Api/Commands/Mysqls.php +++ b/lib/Froxlor/Api/Commands/Mysqls.php @@ -141,6 +141,7 @@ class Mysqls extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt 'NAME' => $userinfo['name'], 'FIRSTNAME' => $userinfo['firstname'], 'COMPANY' => $userinfo['company'], + 'USERNAME' => $userinfo['loginname'], 'CUSTOMER_NO' => $userinfo['customernumber'], 'DB_NAME' => $username, 'DB_PASS' => htmlentities(htmlentities($password)), diff --git a/lib/Froxlor/Api/Commands/index.html b/lib/Froxlor/Api/Commands/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Api/index.html b/lib/Froxlor/Api/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Bulk/index.html b/lib/Froxlor/Bulk/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cli/Action/PhpSessioncleanAction.php b/lib/Froxlor/Cli/Action/PhpSessioncleanAction.php index 9ad09a15..ee93883b 100644 --- a/lib/Froxlor/Cli/Action/PhpSessioncleanAction.php +++ b/lib/Froxlor/Cli/Action/PhpSessioncleanAction.php @@ -4,7 +4,6 @@ namespace Froxlor\Cli\Action; use Froxlor\Database\Database; use Froxlor\Settings; -use Froxlor\Cli\PhpSessioncleanCmd; class PhpSessioncleanAction extends \Froxlor\Cli\Action { diff --git a/lib/Froxlor/Cli/Action/index.html b/lib/Froxlor/Cli/Action/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cli/index.html b/lib/Froxlor/Cli/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Config/ConfigParser.php b/lib/Froxlor/Config/ConfigParser.php index c881bcdd..037eabe1 100644 --- a/lib/Froxlor/Config/ConfigParser.php +++ b/lib/Froxlor/Config/ConfigParser.php @@ -182,7 +182,7 @@ class ConfigParser } /** - * Parse the XML and populate $this->services + * Parse the XML and populate $this->defaults * * @return bool */ @@ -194,9 +194,9 @@ class ConfigParser } // Get all defaults - $defaults = $this->xml->xpath('//defaults'); + $defaults = $this->xml->xpath('//defaults/default'); foreach ($defaults as $default) { - $this->defaults = $default; + $this->defaults[] = $default; } // Switch flag to indicate we parsed our data diff --git a/lib/Froxlor/Config/index.html b/lib/Froxlor/Config/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cron/CronConfig.php b/lib/Froxlor/Cron/CronConfig.php index 774c5f51..5233c708 100644 --- a/lib/Froxlor/Cron/CronConfig.php +++ b/lib/Froxlor/Cron/CronConfig.php @@ -1,4 +1,5 @@ /dev/null\n"; } } + // php sessionclean if enabled + if ((int) Settings::Get('phpfpm.enabled') == 1) { + $cronfile .= "# Look for and purge old sessions every 30 minutes" . PHP_EOL; + $cronfile .= "09,39 * * * * root " . $binpath . " " . \Froxlor\FileDir::makeCorrectFile(\Froxlor\Froxlor::getInstallDir() . "/scripts/php-sessionclean.php") . " --froxlor-dir=" . escapeshellarg(\Froxlor\Froxlor::getInstallDir()) . " 1> /dev/null" . PHP_EOL; + } + if (\Froxlor\FileDir::isFreeBSD()) { // FreeBSD handles the cron-stuff in another way. We need to directly // write to the crontab file as there is not cron.d/froxlor file @@ -121,7 +129,7 @@ class CronConfig $newcrontab = ""; foreach ($crontablines as $ctl) { $ctl = trim($ctl); - if (! empty($ctl) && ! preg_match("/(.*)froxlor_master_cronjob\.php(.*)/", $ctl)) { + if (!empty($ctl) && !preg_match("/(.*)froxlor_master_cronjob\.php(.*)/", $ctl)) { $newcrontab .= $ctl . "\n"; } } diff --git a/lib/Froxlor/Cron/Dns/index.html b/lib/Froxlor/Cron/Dns/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cron/Http/Apache.php b/lib/Froxlor/Cron/Http/Apache.php index 9a1efe9f..d194c659 100644 --- a/lib/Froxlor/Cron/Http/Apache.php +++ b/lib/Froxlor/Cron/Http/Apache.php @@ -773,20 +773,28 @@ class Apache extends HttpConfigBase } if (Settings::Get('system.logfiles_piped') == '1' && Settings::Get('system.logfiles_script') != '') { - // replace for error_log - $command = \Froxlor\PhpHelper::replaceVariables(Settings::Get('system.logfiles_script'), array( - 'LOGFILE' => $error_log, - 'DOMAIN' => $domain['domain'], - 'CUSTOMER' => $domain['loginname'] - )); - $logfiles_text .= ' ErrorLog "|' . $command . "\"\n"; - // replace for access_log - $command = \Froxlor\PhpHelper::replaceVariables(Settings::Get('system.logfiles_script'), array( - 'LOGFILE' => $access_log, - 'DOMAIN' => $domain['domain'], - 'CUSTOMER' => $domain['loginname'] - )); - $logfiles_text .= ' CustomLog "|' . $command . '" ' . $logtype . "\n"; + if ($domain['writeerrorlog']) { + // replace for error_log + $command = \Froxlor\PhpHelper::replaceVariables(Settings::Get('system.logfiles_script'), array( + 'LOGFILE' => $error_log, + 'DOMAIN' => $domain['domain'], + 'CUSTOMER' => $domain['loginname'] + )); + $logfiles_text .= ' ErrorLog "|' . $command . "\"\n"; + } else { + $logfiles_text .= ' ErrorLog "' . $error_log . '"' . "\n"; + } + if ($domain['writeaccesslog']) { + // replace for access_log + $command = \Froxlor\PhpHelper::replaceVariables(Settings::Get('system.logfiles_script'), array( + 'LOGFILE' => $access_log, + 'DOMAIN' => $domain['domain'], + 'CUSTOMER' => $domain['loginname'] + )); + $logfiles_text .= ' CustomLog "|' . $command . '" ' . $logtype . "\n"; + } else { + $logfiles_text .= ' CustomLog "' . $access_log . '" ' . $logtype . "\n"; + } } else { $logfiles_text .= ' ErrorLog "' . $error_log . '"' . "\n"; $logfiles_text .= ' CustomLog "' . $access_log . '" ' . $logtype . "\n"; diff --git a/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php b/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php index da0c796a..14aba1b0 100644 --- a/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php +++ b/lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php @@ -635,6 +635,9 @@ EOC; $acmesh_result = \Froxlor\FileDir::safe_exec(self::getAcmeSh() . " --upgrade --auto-upgrade 0"); // check for activated cron $acmesh_result2 = \Froxlor\FileDir::safe_exec(self::getAcmeSh() . " --install-cronjob"); - FroxlorLogger::getInstanceOf()->logAction(FroxlorLogger::CRON_ACTION, LOG_INFO, "Checking for LetsEncrypt client upgrades before renewing certificates:\n" . implode("\n", $acmesh_result) . "\n" . implode("\n", $acmesh_result2)); + // set default CA + $acmesh_result3 = \Froxlor\FileDir::safe_exec(self::getAcmeSh() . " --set-default-ca --server " . self::$apiserver); + // log messages + FroxlorLogger::getInstanceOf()->logAction(FroxlorLogger::CRON_ACTION, LOG_INFO, "Checking for LetsEncrypt client upgrades before renewing certificates:\n" . implode("\n", $acmesh_result) . "\n" . implode("\n", $acmesh_result2) . "\n" . implode("\n", $acmesh_result3)); } } diff --git a/lib/Froxlor/Cron/Http/LetsEncrypt/index.html b/lib/Froxlor/Cron/Http/LetsEncrypt/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cron/Http/Lighttpd.php b/lib/Froxlor/Cron/Http/Lighttpd.php index d6a08d6e..04355999 100644 --- a/lib/Froxlor/Cron/Http/Lighttpd.php +++ b/lib/Froxlor/Cron/Http/Lighttpd.php @@ -251,7 +251,7 @@ class Lighttpd extends HttpConfigBase // check for existence, #1485 if (! file_exists($domain['ssl_ca_file'])) { $this->logger->logAction(\Froxlor\FroxlorLogger::CRON_ACTION, LOG_ERR, $ip . ':' . $port . ' :: certificate CA file "' . $domain['ssl_ca_file'] . '" does not exist! Cannot create ssl-directives'); - echo $ip . ':' . port . ' :: certificate CA file "' . $domain['ssl_ca_file'] . '" does not exist! SSL-directives might not be working' . "\n"; + echo $ip . ':' . $port . ' :: certificate CA file "' . $domain['ssl_ca_file'] . '" does not exist! SSL-directives might not be working' . "\n"; } else { $this->lighttpd_data[$vhost_filename] .= 'ssl.ca-file = "' . \Froxlor\FileDir::makeCorrectFile($domain['ssl_ca_file']) . '"' . "\n"; } @@ -760,6 +760,7 @@ class Lighttpd extends HttpConfigBase 'customerid' => $domain['customerid'] )); + $diroption_text = ''; while ($row_htpasswds = $result_stmt->fetch(\PDO::FETCH_ASSOC)) { if ($this->auth_backend_loaded[$domain['ipandport']] != 'yes' && $this->auth_backend_loaded[$domain['ssl_ipandport']] != 'yes') { $filename = $domain['customerid'] . '.htpasswd'; @@ -836,6 +837,7 @@ class Lighttpd extends HttpConfigBase } } + $servernames_text = ''; for ($i = 0; $i < sizeof($server_string); $i ++) { $data = $server_string[$i]; diff --git a/lib/Froxlor/Cron/Http/Php/index.html b/lib/Froxlor/Cron/Http/Php/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cron/Http/index.html b/lib/Froxlor/Cron/Http/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cron/System/TasksCron.php b/lib/Froxlor/Cron/System/TasksCron.php index 99c93944..b2690c86 100644 --- a/lib/Froxlor/Cron/System/TasksCron.php +++ b/lib/Froxlor/Cron/System/TasksCron.php @@ -324,8 +324,8 @@ class TasksCron extends \Froxlor\Cron\FroxlorCron if (file_exists($logsdir) && $logsdir != '/' && $logsdir != \Froxlor\FileDir::makeCorrectDir(Settings::Get('system.logfiles_directory')) && substr($logsdir, 0, strlen(Settings::Get('system.logfiles_directory'))) == Settings::Get('system.logfiles_directory')) { // build up wildcard for webX-{access,error}.log{*} - $logfiles .= '-*'; - \Froxlor\FileDir::safe_exec('rm -f ' . escapeshellarg($logfiles)); + $logsdir .= '-*'; + \Froxlor\FileDir::safe_exec('rm -f ' . escapeshellarg($logsdir)); } } } diff --git a/lib/Froxlor/Cron/System/index.html b/lib/Froxlor/Cron/System/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cron/Traffic/ReportsCron.php b/lib/Froxlor/Cron/Traffic/ReportsCron.php index bd24d0ac..852c26f7 100644 --- a/lib/Froxlor/Cron/Traffic/ReportsCron.php +++ b/lib/Froxlor/Cron/Traffic/ReportsCron.php @@ -36,7 +36,7 @@ class ReportsCron extends \Froxlor\Cron\FroxlorCron if ((int) Settings::Get('system.report_trafficmax') > 0) { // Warn the customers at xx% traffic-usage $result_stmt = Database::prepare(" - SELECT `c`.`customerid`, `c`.`customernumber`, `c`.`adminid`, `c`.`name`, `c`.`firstname`, + SELECT `c`.`customerid`, `c`.`loginname`, `c`.`customernumber`, `c`.`adminid`, `c`.`name`, `c`.`firstname`, `c`.`company`, `c`.`traffic`, `c`.`email`, `c`.`def_language`, `a`.`name` AS `adminname`, `a`.`email` AS `adminmail`, (SELECT SUM(`t`.`http` + `t`.`ftp_up` + `t`.`ftp_down` + `t`.`mail`) @@ -67,6 +67,7 @@ class ReportsCron extends \Froxlor\Cron\FroxlorCron 'NAME' => $rep_userinfo['name'], 'FIRSTNAME' => $rep_userinfo['firstname'], 'COMPANY' => $rep_userinfo['company'], + 'USERNAME' => $rep_userinfo['loginname'], 'CUSTOMER_NO' => $rep_userinfo['customernumber'], 'TRAFFIC' => round(($row['traffic'] / 1024), 2), /* traffic is stored in KB, template uses MB */ 'TRAFFICUSED' => round(($row['traffic_used'] / 1024), 2), /* traffic is stored in KB, template uses MB */ @@ -354,7 +355,7 @@ class ReportsCron extends \Froxlor\Cron\FroxlorCron * report about diskusage for customers */ $result_stmt = Database::query(" - SELECT `c`.`customerid`, `c`.`customernumber`, `c`.`adminid`, `c`.`name`, `c`.`firstname`, + SELECT `c`.`customerid`, `c`.`loginname`, `c`.`customernumber`, `c`.`adminid`, `c`.`name`, `c`.`firstname`, `c`.`company`, `c`.`diskspace`, `c`.`diskspace_used`, `c`.`email`, `c`.`def_language`, `a`.`name` AS `adminname`, `a`.`email` AS `adminmail` FROM `" . TABLE_PANEL_CUSTOMERS . "` AS `c` @@ -380,6 +381,7 @@ class ReportsCron extends \Froxlor\Cron\FroxlorCron 'NAME' => $rep_userinfo['name'], 'FIRSTNAME' => $rep_userinfo['firstname'], 'COMPANY' => $rep_userinfo['company'], + 'USERNAME' => $rep_userinfo['loginname'], 'CUSTOMER_NO' => $rep_userinfo['customernumber'], 'DISKAVAILABLE' => round(($row['diskspace'] / 1024), 2), /* traffic is stored in KB, template uses MB */ 'DISKUSED' => round($row['diskspace_used'] / 1024, 2), /* traffic is stored in KB, template uses MB */ diff --git a/lib/Froxlor/Cron/Traffic/index.html b/lib/Froxlor/Cron/Traffic/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Cron/index.html b/lib/Froxlor/Cron/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Customer/index.html b/lib/Froxlor/Customer/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Database/Manager/index.html b/lib/Froxlor/Database/Manager/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Database/index.html b/lib/Froxlor/Database/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Dns/index.html b/lib/Froxlor/Dns/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Domain/index.html b/lib/Froxlor/Domain/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/FileDir.php b/lib/Froxlor/FileDir.php index f19a4271..f71e5b7c 100644 --- a/lib/Froxlor/FileDir.php +++ b/lib/Froxlor/FileDir.php @@ -494,7 +494,7 @@ class FileDir }; // create RecursiveIteratorIterator - $its = new \RecursiveIteratorIterator(new \RecursiveCallbackFilterIterator(new System\IgnorantRecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), $filter)); + $its = new \RecursiveIteratorIterator(new \RecursiveCallbackFilterIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), $filter)); // we can limit the recursion-depth, but will it be helpful or // will people start asking "why do I only see 2 subdirectories, i want to use /a/b/c" // let's keep this in mind and see whether it will be useful diff --git a/lib/Froxlor/Froxlor.php b/lib/Froxlor/Froxlor.php index 804aab8e..f2e37a79 100644 --- a/lib/Froxlor/Froxlor.php +++ b/lib/Froxlor/Froxlor.php @@ -7,7 +7,7 @@ final class Froxlor { // Main version variable - const VERSION = '0.10.33'; + const VERSION = '0.10.35.1'; // Database version (YYYYMMDDC where C is a daily counter) const DBVERSION = '202112310'; diff --git a/lib/Froxlor/Http/index.html b/lib/Froxlor/Http/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Idna/index.html b/lib/Froxlor/Idna/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/PhpHelper.php b/lib/Froxlor/PhpHelper.php index 5b7c0b14..f9069fcb 100644 --- a/lib/Froxlor/PhpHelper.php +++ b/lib/Froxlor/PhpHelper.php @@ -63,7 +63,7 @@ class PhpHelper $subject[$field] = self::htmlentitiesArray($subject[$field], $fields, $quote_style, $charset); } } - } else { + } elseif (!empty($subject)) { $subject = htmlentities($subject, $quote_style, $charset); } diff --git a/lib/Froxlor/Settings/index.html b/lib/Froxlor/Settings/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/System/IgnorantRecursiveDirectoryIterator.php b/lib/Froxlor/System/IgnorantRecursiveDirectoryIterator.php deleted file mode 100644 index 97f8a6ba..00000000 --- a/lib/Froxlor/System/IgnorantRecursiveDirectoryIterator.php +++ /dev/null @@ -1,21 +0,0 @@ -getPathname()); - } catch (\UnexpectedValueException $e) { - return new \RecursiveArrayIterator(array()); - } - } -} diff --git a/lib/Froxlor/System/index.html b/lib/Froxlor/System/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/UI/index.html b/lib/Froxlor/UI/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Validate/Form/index.html b/lib/Froxlor/Validate/Form/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/Validate/index.html b/lib/Froxlor/Validate/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/Froxlor/index.html b/lib/Froxlor/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/configfiles/focal.xml b/lib/configfiles/focal.xml index ccfd88ea..ceae7ed1 100644 --- a/lib/configfiles/focal.xml +++ b/lib/configfiles/focal.xml @@ -1600,7 +1600,7 @@ root: root@ # is /etc/mailname. #myorigin = /etc/mailname -smtpd_banner = $myhostname ESMTP $mail_name (@@DISTRO@@) +smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. diff --git a/lib/configfiles/index.html b/lib/configfiles/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/admin/index.html b/lib/formfields/admin/admin/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/cronjobs/index.html b/lib/formfields/admin/cronjobs/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/customer/index.html b/lib/formfields/admin/customer/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/domains/index.html b/lib/formfields/admin/domains/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/index.html b/lib/formfields/admin/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/ipsandports/index.html b/lib/formfields/admin/ipsandports/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/phpconfig/index.html b/lib/formfields/admin/phpconfig/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/plans/index.html b/lib/formfields/admin/plans/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/admin/templates/index.html b/lib/formfields/admin/templates/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/customer/domains/index.html b/lib/formfields/customer/domains/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/customer/email/index.html b/lib/formfields/customer/email/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/customer/extras/index.html b/lib/formfields/customer/extras/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/customer/ftp/index.html b/lib/formfields/customer/ftp/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/customer/index.html b/lib/formfields/customer/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/customer/mysql/index.html b/lib/formfields/customer/mysql/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/formfields/index.html b/lib/formfields/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/index.html b/lib/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lib/navigation/index.html b/lib/navigation/index.html new file mode 100644 index 00000000..e69de29b diff --git a/lng/german.lng.php b/lng/german.lng.php index da28aa2c..5eefbdef 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -415,7 +415,7 @@ $lng['admin']['ipsandports']['port'] = 'Port'; // ADDED IN 1.2.13-rc3 -$lng['error']['cantchangesystemip'] = 'Sie können die letzte System-IP-Adresse nicht löschen. Entweder legen Sie eine neue IP/Port-Kombination an oder Sie ändern die System-IP-Adresse.'; +$lng['error']['cantchangesystemip'] = 'Sie können die letzte System-IP-Adresse nicht ändern. Entweder legen Sie eine neue IP/Port-Kombination an oder Sie ändern die System-IP-Adresse.'; $lng['question']['admin_domain_reallydocrootoutofcustomerroot'] = 'Sind Sie sicher, dass der DocumentRoot dieser Domain außerhalb des Heimatverzeichnisses des Kunden liegen soll?'; // ADDED IN 1.2.14-rc1 @@ -1486,9 +1486,9 @@ $lng['admin']['mod_fcgid_umask']['title'] = 'Umask (Standard: 022)'; // Added for let's encrypt $lng['admin']['letsencrypt']['title'] = 'SSL Zertifikat erstellen (Let\'s Encrypt)'; -$lng['admin']['letsencrypt']['description'] = 'Holt ein kostenloses Zertifikat von Let\'s Encrypt. Das Zertifikat wird automatisch erstellt und verlängert.
ACHTUNG: Wenn Wildcards aktiviert sind, wird diese Option automatisch deaktiviert. Dieses Feature befindet sich noch im Test.'; +$lng['admin']['letsencrypt']['description'] = 'Holt ein kostenloses Zertifikat von Let\'s Encrypt. Das Zertifikat wird automatisch erstellt und verlängert.
ACHTUNG: Wenn Wildcards aktiviert sind, wird diese Option automatisch deaktiviert.'; $lng['customer']['letsencrypt']['title'] = 'SSL Zertifikat erstellen (Let\'s Encrypt)'; -$lng['customer']['letsencrypt']['description'] = 'Holt ein kostenloses Zertifikat von Let\'s Encrypt. Das Zertifikat wird automatisch erstellt und verlängert.
ACHTUNG: Dieses Feature befindet sich noch im Test.'; +$lng['customer']['letsencrypt']['description'] = 'Holt ein kostenloses Zertifikat von Let\'s Encrypt. Das Zertifikat wird automatisch erstellt und verlängert.'; $lng['error']['sslredirectonlypossiblewithsslipport'] = 'Die Nutzung von Let\'s Encrypt ist nur möglich, wenn die Domain mindestens eine IP/Port - Kombination mit aktiviertem SSL zugewiesen hat.'; $lng['error']['nowildcardwithletsencrypt'] = 'Let\'s Encrypt kann mittels ACME Wildcard-Domains nur via DNS validieren, sorry. Bitte den ServerAlias auf WWW setzen oder deaktivieren'; $lng['panel']['letsencrypt'] = 'Benutzt Let\'s encrypt'; diff --git a/lng/index.html b/lng/index.html new file mode 100644 index 00000000..e69de29b diff --git a/scripts/index.html b/scripts/index.html new file mode 100644 index 00000000..e69de29b diff --git a/install/scripts/php-sessionclean.php b/scripts/php-sessionclean.php similarity index 93% rename from install/scripts/php-sessionclean.php rename to scripts/php-sessionclean.php index 41f633db..b63100b5 100755 --- a/install/scripts/php-sessionclean.php +++ b/scripts/php-sessionclean.php @@ -21,11 +21,12 @@ if (@php_sapi_name() !== 'cli') { die('This script will only work in the shell.'); } -require dirname(dirname(__DIR__)) . '/vendor/autoload.php'; +require dirname(__DIR__) . '/vendor/autoload.php'; // give control to command line handler try { \Froxlor\Cli\PhpSessioncleanCmd::processParameters($argc, $argv); } catch (Exception $e) { \Froxlor\Cli\PhpSessioncleanCmd::printerr($e->getMessage()); + exit(1); } diff --git a/templates/Sparkle/2fa/index.html b/templates/Sparkle/2fa/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/admins/index.html b/templates/Sparkle/admin/admins/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/configfiles/index.html b/templates/Sparkle/admin/configfiles/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/cronjobs/index.html b/templates/Sparkle/admin/cronjobs/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/customers/index.html b/templates/Sparkle/admin/customers/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/domains/index.html b/templates/Sparkle/admin/domains/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/index.html b/templates/Sparkle/admin/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/index/index.html b/templates/Sparkle/admin/index/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/ipsandports/index.html b/templates/Sparkle/admin/ipsandports/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/logger/index.html b/templates/Sparkle/admin/logger/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/message/index.html b/templates/Sparkle/admin/message/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/phpconfig/index.html b/templates/Sparkle/admin/phpconfig/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/plans/index.html b/templates/Sparkle/admin/plans/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/settings/apcuinfo/index.html b/templates/Sparkle/admin/settings/apcuinfo/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/settings/importexport/index.html b/templates/Sparkle/admin/settings/importexport/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/settings/index.html b/templates/Sparkle/admin/settings/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/settings/opcacheinfo/index.html b/templates/Sparkle/admin/settings/opcacheinfo/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/settings/phpinfo/index.html b/templates/Sparkle/admin/settings/phpinfo/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/templates/index.html b/templates/Sparkle/admin/templates/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/templates/templates_add_2.tpl b/templates/Sparkle/admin/templates/templates_add_2.tpl index 7077f924..978c643a 100644 --- a/templates/Sparkle/admin/templates/templates_add_2.tpl +++ b/templates/Sparkle/admin/templates/templates_add_2.tpl @@ -60,11 +60,11 @@ $header {CUSTOMER_NO} {$lng['admin']['templates']['CUSTOMER_NO']} + + {USERNAME} + {$lng['admin']['templates']['USERNAME']} + - - {USERNAME} - {$lng['admin']['templates']['USERNAME']} - {PASSWORD} {$lng['admin']['templates']['PASSWORD']} @@ -92,10 +92,6 @@ $header - - {USERNAME} - {$lng['admin']['templates']['USERNAME']} - {LINK} {$lng['admin']['templates']['LINK']} diff --git a/templates/Sparkle/admin/templates/templates_edit.tpl b/templates/Sparkle/admin/templates/templates_edit.tpl index 875ef050..86d955e5 100644 --- a/templates/Sparkle/admin/templates/templates_edit.tpl +++ b/templates/Sparkle/admin/templates/templates_edit.tpl @@ -62,11 +62,11 @@ $header {CUSTOMER_NO} {$lng['admin']['templates']['CUSTOMER_NO']} + + {USERNAME} + {$lng['admin']['templates']['USERNAME']} + - - {USERNAME} - {$lng['admin']['templates']['USERNAME']} - {PASSWORD} {$lng['admin']['templates']['PASSWORD']} @@ -94,10 +94,6 @@ $header - - {USERNAME} - {$lng['admin']['templates']['USERNAME']} - {LINK} {$lng['admin']['templates']['LINK']} diff --git a/templates/Sparkle/admin/traffic/index.html b/templates/Sparkle/admin/traffic/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/admin/update/index.html b/templates/Sparkle/admin/update/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/api_keys/index.html b/templates/Sparkle/api_keys/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/assets/css/index.html b/templates/Sparkle/assets/css/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/assets/index.html b/templates/Sparkle/assets/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/assets/js/index.html b/templates/Sparkle/assets/js/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/domains/index.html b/templates/Sparkle/customer/domains/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/email/index.html b/templates/Sparkle/customer/email/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/extras/index.html b/templates/Sparkle/customer/extras/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/ftp/index.html b/templates/Sparkle/customer/ftp/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/index.html b/templates/Sparkle/customer/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/index/index.html b/templates/Sparkle/customer/index/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/logger/index.html b/templates/Sparkle/customer/logger/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/mysql/index.html b/templates/Sparkle/customer/mysql/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/customer/traffic/index.html b/templates/Sparkle/customer/traffic/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/dns_editor/index.html b/templates/Sparkle/dns_editor/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/formfields/index.html b/templates/Sparkle/formfields/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/index.html b/templates/Sparkle/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/logfiles_viewer/index.html b/templates/Sparkle/logfiles_viewer/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/login/index.html b/templates/Sparkle/login/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/misc/form/index.html b/templates/Sparkle/misc/form/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/misc/index.html b/templates/Sparkle/misc/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/Sparkle/ssl_certificates/index.html b/templates/Sparkle/ssl_certificates/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/misc/index.html b/templates/misc/index.html new file mode 100644 index 00000000..e69de29b diff --git a/templates/misc/php/index.html b/templates/misc/php/index.html new file mode 100644 index 00000000..e69de29b