Minor enhancements and starting to comply with checkstyle

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2018-12-24 09:35:05 +01:00
parent 04e87cce98
commit c3d44b4558
25 changed files with 217 additions and 205 deletions

View File

@@ -172,21 +172,16 @@ if ($page == 'overview') {
$log->logAction(USR_ACTION, LOG_NOTICE, 'changed main ftp password');
}
// Update webalizer password
if (isset($_POST['change_webalizer']) && $_POST['change_webalizer'] == 'true') {
if (CRYPT_STD_DES == 1) {
$saltfordescrypt = substr(md5(uniqid(microtime(), 1)), 4, 2);
$new_webalizer_password = crypt($new_password, $saltfordescrypt);
} else {
$new_webalizer_password = crypt($new_password);
}
// Update statistics password
if (isset($_POST['change_stats']) && $_POST['change_stats'] == 'true') {
$new_stats_password = \Froxlor\System\Crypt::makeCryptPassword($new_password, true);
$stmt = Database::prepare("UPDATE `" . TABLE_PANEL_HTPASSWDS . "`
SET `password` = :password
WHERE `customerid` = :customerid
AND `username` = :username");
$params = array(
"password" => $new_webalizer_password,
"password" => $new_stats_password,
"customerid" => $userinfo['customerid'],
"username" => $userinfo['loginname']
);

View File

@@ -1,7 +1,6 @@
<?php
namespace Froxlor\Api;
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
@@ -123,7 +122,7 @@ abstract class ApiParameter
*/
protected function getUlParam($param = null, $ul_field = null, $optional = false, $default = 0)
{
$param_value = (int)$this->getParam($param, $optional, $default);
$param_value = (int) $this->getParam($param, $optional, $default);
$ul_field_value = $this->getBoolParam($ul_field, true, 0);
if ($ul_field_value != '0') {
$param_value = - 1;

View File

@@ -234,8 +234,8 @@ class Admins extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEnt
if (strtolower($loginname_check['loginname']) == strtolower($loginname) || strtolower($loginname_check_admin['loginname']) == strtolower($loginname)) {
\Froxlor\UI\Response::standard_error('loginnameexists', $loginname, true);
} // Accounts which match systemaccounts are not allowed, filtering them
elseif (preg_match('/^' . preg_quote(Settings::Get('customer.accountprefix'), '/') . '([0-9]+)/', $loginname)) {
} elseif (preg_match('/^' . preg_quote(Settings::Get('customer.accountprefix'), '/') . '([0-9]+)/', $loginname)) {
// Accounts which match systemaccounts are not allowed, filtering them
\Froxlor\UI\Response::standard_error('loginnameissystemaccount', Settings::Get('customer.accountprefix'), true);
} elseif (! \Froxlor\Validate\Validate::validateUsername($loginname)) {
\Froxlor\UI\Response::standard_error('loginnameiswrong', $loginname, true);

View File

@@ -523,12 +523,7 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource
\Froxlor\System\Cronjob::inserttask('10');
// Add htpasswd for the stats-pages
if (CRYPT_STD_DES == 1) {
$saltfordescrypt = substr(md5(uniqid(microtime(), 1)), 4, 2);
$htpasswdPassword = crypt($password, $saltfordescrypt);
} else {
$htpasswdPassword = crypt($password);
}
$htpasswdPassword = \Froxlor\System\Crypt::makeCryptPassword($password, true);
$ins_stmt = Database::prepare("
INSERT INTO `" . TABLE_PANEL_HTPASSWDS . "` SET
@@ -934,7 +929,7 @@ class Customers extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resource
'stringisempty',
'emailadd'
), '', true);
} elseif (!\Froxlor\Validate\Validate::validateEmail($email)) {
} elseif (! \Froxlor\Validate\Validate::validateEmail($email)) {
\Froxlor\UI\Response::standard_error('emailiswrong', $email, true);
}
}

View File

@@ -378,7 +378,7 @@ class DirOptions extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
\Froxlor\System\Cronjob::inserttask('1');
return $this->response(200, "successfull", $result);
}
/**
* this functions validates a given value as ErrorDocument
* refs #267
@@ -388,7 +388,7 @@ class DirOptions extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
* @param bool $throw_exception
*
* @return string error-document-string
*
*
*/
private function correctErrorDocument($errdoc = null, $throw_exception = false)
{
@@ -419,5 +419,4 @@ class DirOptions extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Resourc
}
return $errdoc;
}
}

View File

@@ -78,13 +78,7 @@ class DirProtections extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Res
);
$username_path_check = Database::pexecute_first($username_path_check_stmt, $params, true, true);
// check whether we can used salted passwords
if (CRYPT_STD_DES == 1) {
$saltfordescrypt = substr(md5(uniqid(microtime(), 1)), 4, 2);
$password_enc = crypt($password, $saltfordescrypt);
} else {
$password_enc = crypt($password);
}
$password_enc = \Froxlor\System\Crypt::makeCryptPassword($password, true);
// duplicate check
if ($username_path_check['username'] == $username && $username_path_check['path'] == $path) {
@@ -238,12 +232,8 @@ class DirProtections extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\Res
if ($password == $result['username']) {
\Froxlor\UI\Response::standard_error('passwordshouldnotbeusername', '', true);
}
if (CRYPT_STD_DES == 1) {
$saltfordescrypt = substr(md5(uniqid(microtime(), 1)), 4, 2);
$password_enc = crypt($password, $saltfordescrypt);
} else {
$password_enc = crypt($password);
}
$password_enc = \Froxlor\System\Crypt::makeCryptPassword($password, true);
$upd_query .= "`password`= :password_enc";
$upd_params['password_enc'] = $password_enc;
}

View File

@@ -33,21 +33,21 @@ abstract class BulkAction
*
* @var string
*/
private $_impFile = null;
private $impFile = null;
/**
* customer id of the user the entity is being added to
*
* @var int
*/
private $_custId = null;
private $custId = null;
/**
* array of customer data read from the database
*
* @var array
*/
private $_custData = null;
private $custData = null;
/**
* api-function to call for addingg entity
@@ -81,9 +81,9 @@ abstract class BulkAction
protected function __construct($import_file = null, $customer_id = 0)
{
if (! empty($import_file)) {
$this->_impFile = \Froxlor\FileDir::makeCorrectFile($import_file);
$this->impFile = \Froxlor\FileDir::makeCorrectFile($import_file);
}
$this->_custId = $customer_id;
$this->custId = $customer_id;
}
/**
@@ -106,7 +106,7 @@ abstract class BulkAction
*/
public function setImportFile($import_file = null)
{
$this->_impFile = \Froxlor\FileDir::makeCorrectFile($import_file);
$this->impFile = \Froxlor\FileDir::makeCorrectFile($import_file);
}
/**
@@ -118,7 +118,7 @@ abstract class BulkAction
*/
public function setCustomer($customer_id = 0)
{
$this->_custId = $customer_id;
$this->custId = $customer_id;
}
/**
@@ -177,21 +177,21 @@ abstract class BulkAction
*/
protected function _parseImportFile($separator = ";")
{
if (empty($this->_impFile)) {
if (empty($this->impFile)) {
throw new \Exception("No file was given for import");
}
if (! file_exists($this->_impFile)) {
throw new \Exception("The file '" . $this->_impFile . "' could not be found");
if (! file_exists($this->impFile)) {
throw new \Exception("The file '" . $this->impFile . "' could not be found");
}
if (! is_readable($this->_impFile)) {
throw new \Exception("Unable to read file '" . $this->_impFile . "'");
if (! is_readable($this->impFile)) {
throw new \Exception("Unable to read file '" . $this->impFile . "'");
}
$file_data = array();
$is_params_line = true;
$fh = @fopen($this->_impFile, "r");
$fh = @fopen($this->impFile, "r");
if ($fh) {
while (($line = fgets($fh)) !== false) {
$tmp_arr = explode($separator, $line);
@@ -211,7 +211,7 @@ abstract class BulkAction
}
$this->api_params = array_map("trim", $this->api_params);
} else {
throw new \Exception("Unable to open file '" . $this->_impFile . "'");
throw new \Exception("Unable to open file '" . $this->impFile . "'");
}
fclose($fh);
@@ -225,11 +225,11 @@ abstract class BulkAction
{
$this->_readCustomerData();
if ($this->_custId <= 0) {
if ($this->custId <= 0) {
throw new \Exception("Invalid customer selected");
}
if (is_null($this->_custData)) {
if (is_null($this->custData)) {
throw new \Exception("Failed to read customer data");
}
}
@@ -242,13 +242,13 @@ abstract class BulkAction
protected function _readCustomerData()
{
$cust_stmt = \Froxlor\Database\Database::prepare("SELECT * FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `customerid` = :cid");
$this->_custData = \Froxlor\Database\Database::pexecute_first($cust_stmt, array(
'cid' => $this->_custId
$this->custData = \Froxlor\Database\Database::pexecute_first($cust_stmt, array(
'cid' => $this->custId
));
if (is_array($this->_custData) && isset($this->_custData['customerid']) && $this->_custData['customerid'] == $this->_custId) {
if (is_array($this->custData) && isset($this->custData['customerid']) && $this->custData['customerid'] == $this->custId) {
return true;
}
$this->_custData = null;
$this->custData = null;
return false;
}
}

View File

@@ -16,7 +16,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
public function run()
{
$this->_validate();
$this->validate();
}
/**
@@ -24,27 +24,27 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
*
* @throws \Exception
*/
private function _validate()
private function validate()
{
$this->_checkConfigParam(true);
$this->_parseConfig();
$this->checkConfigParam(true);
$this->parseConfig();
require FROXLOR_INSTALL_DIR . '/lib/tables.inc.php';
if (array_key_exists("import-settings", $this->_args)) {
$this->_importSettings();
$this->importSettings();
}
if (array_key_exists("create", $this->_args)) {
$this->_createConfig();
$this->createConfig();
} elseif (array_key_exists("apply", $this->_args)) {
$this->_applyConfig();
$this->applyConfig();
} elseif (array_key_exists("list-daemons", $this->_args) || array_key_exists("daemon", $this->_args)) {
ConfigServicesCmd::printwarn("--list-daemons and --daemon only work together with --apply");
}
}
private function _importSettings()
private function importSettings()
{
if (strtoupper(substr($this->_args["import-settings"], 0, 4)) == 'HTTP') {
echo "Settings file seems to be an URL, trying to download" . PHP_EOL;
@@ -67,7 +67,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
ConfigServicesCmd::printsucc("Successfully imported settings from '" . $this->_args["import-settings"] . "'");
}
private function _createConfig()
private function createConfig()
{
$_daemons_config = array(
'distro' => ""
@@ -185,7 +185,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
return $dist_display;
}
private function _applyConfig()
private function applyConfig()
{
if (strtoupper(substr($this->_args["apply"], 0, 4)) == 'HTTP') {
echo "Config file seems to be an URL, trying to download" . PHP_EOL;
@@ -238,7 +238,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
$config_dir = FROXLOR_INSTALL_DIR . '/lib/configfiles/';
$configfiles = new \Froxlor\Config\ConfigParser($config_dir . '/' . $decoded_config['distro'] . ".xml");
$services = $configfiles->getServices();
$replace_arr = $this->_getReplacerArray();
$replace_arr = $this->getReplacerArray();
foreach ($services as $si => $service) {
echo PHP_EOL . "--- Configuring: " . strtoupper($si) . " ---" . PHP_EOL . PHP_EOL;
@@ -305,7 +305,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
}
}
private function _getReplacerArray()
private function getReplacerArray()
{
$customer_tmpdir = '/tmp/';
if (Settings::Get('system.mod_fcgid') == '1' && Settings::Get('system.mod_fcgid_tmpdir') != '') {
@@ -356,7 +356,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
return $replace_arr;
}
private function _parseConfig()
private function parseConfig()
{
define('FROXLOR_INSTALL_DIR', $this->_args['froxlor-dir']);
if (! class_exists('\\Froxlor\\Database\\Database')) {
@@ -367,7 +367,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
}
}
private function _checkConfigParam($needed = false)
private function checkConfigParam($needed = false)
{
if ($needed) {
if (! isset($this->_args["froxlor-dir"])) {
@@ -399,4 +399,4 @@ class ConfigServicesAction extends \Froxlor\Cli\Action
curl_close($ch);
fclose($fp);
}
}
}

View File

@@ -14,7 +14,7 @@ class SwitchServerIpAction extends \Froxlor\Cli\Action
public function run()
{
$this->_validate();
$this->validate();
}
/**
@@ -22,26 +22,26 @@ class SwitchServerIpAction extends \Froxlor\Cli\Action
*
* @throws \Exception
*/
private function _validate()
private function validate()
{
$need_config = false;
if (array_key_exists("list", $this->_args) || array_key_exists("switch", $this->_args)) {
$need_config = true;
}
$this->_checkConfigParam($need_config);
$this->checkConfigParam($need_config);
$this->_parseConfig();
$this->parseConfig();
if (array_key_exists("list", $this->_args)) {
$this->_listIPs();
$this->listIPs();
}
if (array_key_exists("switch", $this->_args)) {
$this->_switchIPs();
$this->switchIPs();
}
}
private function _listIPs()
private function listIPs()
{
$sel_stmt = Database::prepare("SELECT * FROM panel_ipsandports ORDER BY ip ASC, port ASC");
Database::pexecute($sel_stmt);
@@ -57,7 +57,7 @@ class SwitchServerIpAction extends \Froxlor\Cli\Action
echo PHP_EOL . PHP_EOL;
}
private function _switchIPs()
private function switchIPs()
{
$ip_list = $this->_args['switch'];
@@ -158,7 +158,7 @@ class SwitchServerIpAction extends \Froxlor\Cli\Action
SwitchServerIpCmd::printsucc("IP addresses updated");
}
private function _parseConfig()
private function parseConfig()
{
define('FROXLOR_INSTALL_DIR', $this->_args['froxlor-dir']);
if (! class_exists('\\Froxlor\\Database\\Database')) {
@@ -169,7 +169,7 @@ class SwitchServerIpAction extends \Froxlor\Cli\Action
}
}
private function _checkConfigParam($needed = false)
private function checkConfigParam($needed = false)
{
if ($needed) {
if (! isset($this->_args["froxlor-dir"])) {
@@ -183,4 +183,4 @@ class SwitchServerIpAction extends \Froxlor\Cli\Action
}
}
}
}
}

View File

@@ -59,8 +59,8 @@ abstract class CmdLineHandler
*/
private function __construct($argc, $argv)
{
self::$args = $this->_parseArgs($argv);
$this->_action = $this->_createAction();
self::$args = $this->parseArgs($argv);
$this->_action = $this->createAction();
$this->_action->run();
}
@@ -83,7 +83,7 @@ abstract class CmdLineHandler
*
* @return array
*/
private function _parseArgs($argv)
private function parseArgs($argv)
{
array_shift($argv);
$o = array();
@@ -98,7 +98,7 @@ abstract class CmdLineHandler
$o[$k] = true;
}
}
} else if (substr($a, 0, 1) == '-') {
} elseif (substr($a, 0, 1) == '-') {
if (substr($a, 2, 1) == '=') {
$o[substr($a, 1, 1)] = substr($a, 3);
} else {
@@ -121,7 +121,7 @@ abstract class CmdLineHandler
* @return \Froxlor\Cli\Action
* @throws \Exception
*/
private function _createAction()
private function createAction()
{
// Test for help-switch
@@ -194,23 +194,23 @@ abstract class CmdLineHandler
print $msg . PHP_EOL;
}
private static function _printcolor($msg = "", $color = "0")
private static function printcolor($msg = "", $color = "0")
{
print "\033[" . $color . "m" . $msg . "\033[0m" . PHP_EOL;
}
public static function printerr($msg = "")
{
self::_printcolor($msg, "31");
self::printcolor($msg, "31");
}
public static function printsucc($msg = "")
{
self::_printcolor($msg, "32");
self::printcolor($msg, "32");
}
public static function printwarn($msg = "")
{
self::_printcolor($msg, "33");
self::printcolor($msg, "33");
}
}

View File

@@ -94,7 +94,7 @@ class ConfigDaemon
$this->daemon = $this->fullxml->xpath($this->xpath);
$attributes = $this->daemon[0]->attributes();
if ($attributes['title'] != '') {
$this->title = $this->_parseContent((string) $attributes['title']);
$this->title = $this->parseContent((string) $attributes['title']);
}
if (isset($attributes['default'])) {
$this->default = ($attributes['default'] == true);
@@ -106,7 +106,7 @@ class ConfigDaemon
*
* @return bool
*/
private function _parse()
private function parse()
{
// We only want to parse the stuff one time
if ($this->isparsed == true) {
@@ -143,7 +143,7 @@ class ConfigDaemon
foreach ($order->children() as $child) {
switch ((string) $child->getName()) {
case "visibility":
$visibility += $this->_checkVisibility($child);
$visibility += $this->checkVisibility($child);
break;
case "install":
case "file":
@@ -171,7 +171,7 @@ class ConfigDaemon
// Go through every preparsed order and evaluate what should happen to it
foreach ($preparsed as $order) {
$parsedorder = $this->_parseOrder($order);
$parsedorder = $this->parseOrder($order);
// We got an array (= valid order) and the array already has a type -> add to stack
if (is_array($parsedorder) && array_key_exists('type', $parsedorder)) {
$this->orders[] = $parsedorder;
@@ -200,7 +200,7 @@ class ConfigDaemon
*/
public function getConfig()
{
$this->_parse();
$this->parse();
return $this->orders;
}
@@ -211,7 +211,7 @@ class ConfigDaemon
* SimpleXMLElement object holding a single order from the distribution - XML
* @return array|string
*/
private function _parseOrder($order)
private function parseOrder($order)
{
$attributes = array();
foreach ($order->attributes() as $key => $value) {
@@ -221,13 +221,13 @@ class ConfigDaemon
$parsedorder = '';
switch ((string) $order->getName()) {
case "file":
$parsedorder = $this->_parseFile($order, $attributes);
$parsedorder = $this->parseFile($order, $attributes);
break;
case "command":
$parsedorder = $this->_parseCommand($order, $attributes);
$parsedorder = $this->parseCommand($order, $attributes);
break;
case "install":
$parsedorder = $this->_parseInstall($order, $attributes);
$parsedorder = $this->parseInstall($order, $attributes);
break;
default:
throw new \Exception('Invalid order: ' . (string) $order->getName());
@@ -243,13 +243,13 @@ class ConfigDaemon
* SimpleXMLElement object holding a single install from the distribution - XML
* @return array|string
*/
private function _parseInstall($order, $attributes)
private function parseInstall($order, $attributes)
{
// No sub - elements, so the content can be returned directly
if ($order->count() == 0) {
return array(
'type' => 'install',
'content' => $this->_parseContent(trim((string) $order))
'content' => $this->parseContent(trim((string) $order))
);
}
@@ -259,7 +259,7 @@ class ConfigDaemon
foreach ($order->children() as $child) {
switch ((string) $child->getName()) {
case "visibility":
$visibility += $this->_checkVisibility($child);
$visibility += $this->checkVisibility($child);
break;
case "content":
$content = trim((string) $child);
@@ -270,7 +270,7 @@ class ConfigDaemon
if ($visibility > 0) {
return array(
'type' => 'install',
'content' => $this->_parseContent($content)
'content' => $this->parseContent($content)
);
} else {
return '';
@@ -284,13 +284,13 @@ class ConfigDaemon
* SimpleXMLElement object holding a single command from the distribution - XML
* @return array|string
*/
private function _parseCommand($order, $attributes)
private function parseCommand($order, $attributes)
{
// No sub - elements, so the content can be returned directly
if ($order->count() == 0) {
return array(
'type' => 'command',
'content' => $this->_parseContent(trim((string) $order))
'content' => $this->parseContent(trim((string) $order))
);
}
@@ -300,7 +300,7 @@ class ConfigDaemon
foreach ($order->children() as $child) {
switch ((string) $child->getName()) {
case "visibility":
$visibility += $this->_checkVisibility($child);
$visibility += $this->checkVisibility($child);
break;
case "content":
$content = trim((string) $child);
@@ -311,7 +311,7 @@ class ConfigDaemon
if ($visibility > 0) {
return array(
'type' => 'command',
'content' => $this->_parseContent($content)
'content' => $this->parseContent($content)
);
} else {
return '';
@@ -325,7 +325,7 @@ class ConfigDaemon
* SimpleXMLElement object holding a single file from the distribution - XML
* @return array|string
*/
private function _parseFile($order, $attributes)
private function parseFile($order, $attributes)
{
$visibility = 1;
// No sub - elements, so the content can be returned directly
@@ -336,7 +336,7 @@ class ConfigDaemon
foreach ($order->children() as $child) {
switch ((string) $child->getName()) {
case "visibility":
$visibility += $this->_checkVisibility($child);
$visibility += $this->checkVisibility($child);
break;
case "content":
$content = (string) $child;
@@ -357,7 +357,7 @@ class ConfigDaemon
}
$return[] = array(
'type' => 'command',
'content' => $cmd . ' "' . $this->_parseContent($attributes['name']) . '" "' . $this->_parseContent($attributes['name']) . '.frx.bak"',
'content' => $cmd . ' "' . $this->parseContent($attributes['name']) . '" "' . $this->parseContent($attributes['name']) . '.frx.bak"',
'execute' => "pre"
);
}
@@ -366,15 +366,15 @@ class ConfigDaemon
if (isset($attributes['mode'])) {
$return[] = array(
'type' => 'file',
'content' => $this->_parseContent($content),
'name' => $this->_parseContent($attributes['name']),
'mode' => $this->_parseContent($attributes['mode'])
'content' => $this->parseContent($content),
'name' => $this->parseContent($attributes['name']),
'mode' => $this->parseContent($attributes['mode'])
);
} else {
$return[] = array(
'type' => 'file',
'content' => $this->_parseContent($content),
'name' => $this->_parseContent($attributes['name'])
'content' => $this->parseContent($content),
'name' => $this->parseContent($attributes['name'])
);
}
@@ -382,7 +382,7 @@ class ConfigDaemon
if (array_key_exists('chmod', $attributes)) {
$return[] = array(
'type' => 'command',
'content' => 'chmod ' . $attributes['chmod'] . ' "' . $this->_parseContent($attributes['name']) . '"',
'content' => 'chmod ' . $attributes['chmod'] . ' "' . $this->parseContent($attributes['name']) . '"',
'execute' => "post"
);
}
@@ -391,7 +391,7 @@ class ConfigDaemon
if (array_key_exists('chown', $attributes)) {
$return[] = array(
'type' => 'command',
'content' => 'chown ' . $attributes['chown'] . ' "' . $this->_parseContent($attributes['name']) . '"',
'content' => 'chown ' . $attributes['chown'] . ' "' . $this->parseContent($attributes['name']) . '"',
'execute' => "post"
);
}
@@ -401,7 +401,7 @@ class ConfigDaemon
$return = array(
'type' => 'file',
'subcommands' => $return,
'name' => $this->_parseContent($attributes['name'])
'name' => $this->parseContent($attributes['name'])
);
}
@@ -418,9 +418,10 @@ class ConfigDaemon
* @param string $content
* @return string $content w/o placeholder
*/
private function _parseContent($content)
private function parseContent($content)
{
$content = preg_replace_callback('/\{\{(.*)\}\}/Ui', function ($matches) {
$match = null;
if (preg_match('/^settings\.(.*)$/', $matches[1], $match)) {
return \Froxlor\Settings::Get($match[1]);
} elseif (preg_match('/^lng\.(.*)(?:\.(.*)(?:\.(.*)))$/U', $matches[1], $match)) {
@@ -460,14 +461,14 @@ class ConfigDaemon
* @param \SimpleXMLElement $order
* @return int 0|-1
*/
private function _checkVisibility($order)
private function checkVisibility($order)
{
$attributes = array();
foreach ($order->attributes() as $key => $value) {
$attributes[(string) $key] = $this->_parseContent(trim((string) $value));
$attributes[(string) $key] = $this->parseContent(trim((string) $value));
}
$order = $this->_parseContent(trim((string) $order));
$order = $this->parseContent(trim((string) $order));
if (! array_key_exists('mode', $attributes)) {
throw new \Exception('"<visibility>' . $order . '</visibility>" is missing mode');
}

View File

@@ -1,6 +1,23 @@
<?php
namespace Froxlor\Cron;
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Michael Kaufmann <mkaufmann@nutime.de>
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Cron
*
* @since 0.10.0
*
*/
use Froxlor\Database\Database;
use Froxlor\Settings;
@@ -131,4 +148,4 @@ class CronConfig
}
return true;
}
}
}

View File

@@ -20,30 +20,30 @@ use Froxlor\Settings;
class Bind extends DnsBase
{
private $_bindconf_file = "";
private $bindconf_file = "";
public function writeConfigs()
{
// tell the world what we are doing
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 started - Rebuilding froxlor_bind.conf');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 started - Rebuilding froxlor_bind.conf');
// clean up
$this->_cleanZonefiles();
$this->cleanZonefiles();
// check for subfolder in bind-config-directory
if (! file_exists(\Froxlor\FileDir::makeCorrectDir(Settings::Get('system.bindconf_directory') . '/domains/'))) {
$this->_logger->logAction(CRON_ACTION, LOG_NOTICE, 'mkdir ' . escapeshellarg(\Froxlor\FileDir::makeCorrectDir(Settings::Get('system.bindconf_directory') . '/domains/')));
$this->logger->logAction(CRON_ACTION, LOG_NOTICE, 'mkdir ' . escapeshellarg(\Froxlor\FileDir::makeCorrectDir(Settings::Get('system.bindconf_directory') . '/domains/')));
\Froxlor\FileDir::safe_exec('mkdir -p ' . escapeshellarg(\Froxlor\FileDir::makeCorrectDir(Settings::Get('system.bindconf_directory') . '/domains/')));
}
$domains = $this->getDomainList();
if (empty($domains)) {
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'No domains found for nameserver-config, skipping...');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'No domains found for nameserver-config, skipping...');
return;
}
$this->_bindconf_file = '# ' . Settings::Get('system.bindconf_directory') . 'froxlor_bind.conf' . "\n" . '# Created ' . date('d.m.Y H:i') . "\n" . '# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.' . "\n\n";
$this->bindconf_file = '# ' . Settings::Get('system.bindconf_directory') . 'froxlor_bind.conf' . "\n" . '# Created ' . date('d.m.Y H:i') . "\n" . '# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.' . "\n\n";
foreach ($domains as $domain) {
if ($domain['ismainbutsubto'] > 0) {
@@ -54,11 +54,11 @@ class Bind extends DnsBase
}
$bindconf_file_handler = fopen(\Froxlor\FileDir::makeCorrectFile(Settings::Get('system.bindconf_directory') . '/froxlor_bind.conf'), 'w');
fwrite($bindconf_file_handler, $this->_bindconf_file);
fwrite($bindconf_file_handler, $this->bindconf_file);
fclose($bindconf_file_handler);
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'froxlor_bind.conf written');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'froxlor_bind.conf written');
$this->reloadDaemon();
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 finished');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 finished');
}
private function walkDomainList($domain, $domains)
@@ -84,20 +84,20 @@ class Bind extends DnsBase
$zonefile_handler = fopen($zonefile_name, 'w');
fwrite($zonefile_handler, $zoneContent . $subzones);
fclose($zonefile_handler);
$this->_logger->logAction(CRON_ACTION, LOG_INFO, '`' . $zonefile_name . '` written');
$this->_bindconf_file .= $this->_generateDomainConfig($domain);
$this->logger->logAction(CRON_ACTION, LOG_INFO, '`' . $zonefile_name . '` written');
$this->bindconf_file .= $this->generateDomainConfig($domain);
} else {
return (string) \Froxlor\Dns\Dns::createDomainZone(($domain['id'] == 'none') ? $domain : $domain['id'], $isFroxlorHostname, true);
}
} else {
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Added zonefile ' . $domain['zonefile'] . ' for domain ' . $domain['domain'] . ' - Note that you will also have to handle ALL records for ALL subdomains.');
$this->_bindconf_file .= $this->_generateDomainConfig($domain);
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Added zonefile ' . $domain['zonefile'] . ' for domain ' . $domain['domain'] . ' - Note that you will also have to handle ALL records for ALL subdomains.');
$this->bindconf_file .= $this->generateDomainConfig($domain);
}
}
private function _generateDomainConfig($domain = array())
private function generateDomainConfig($domain = array())
{
$this->_logger->logAction(CRON_ACTION, LOG_DEBUG, 'Generating dns config for ' . $domain['domain']);
$this->logger->logAction(CRON_ACTION, LOG_DEBUG, 'Generating dns config for ' . $domain['domain']);
$bindconf_file = '# Domain ID: ' . $domain['id'] . ' - CustomerID: ' . $domain['customerid'] . ' - CustomerLogin: ' . $domain['loginname'] . "\n";
$bindconf_file .= 'zone "' . $domain['domain'] . '" in {' . "\n";
@@ -105,20 +105,20 @@ class Bind extends DnsBase
$bindconf_file .= ' file "' . \Froxlor\FileDir::makeCorrectFile(Settings::Get('system.bindconf_directory') . '/' . $domain['zonefile']) . '";' . "\n";
$bindconf_file .= ' allow-query { any; };' . "\n";
if (count($this->_ns) > 0 || count($this->_axfr) > 0) {
if (count($this->ns) > 0 || count($this->axfr) > 0) {
// open allow-transfer
$bindconf_file .= ' allow-transfer {' . "\n";
// put nameservers in allow-transfer
if (count($this->_ns) > 0) {
foreach ($this->_ns as $ns) {
if (count($this->ns) > 0) {
foreach ($this->ns as $ns) {
foreach ($ns["ips"] as $ip) {
$bindconf_file .= ' ' . $ip . ";\n";
}
}
}
// AXFR server #100
if (count($this->_axfr) > 0) {
foreach ($this->_axfr as $axfrserver) {
if (count($this->axfr) > 0) {
foreach ($this->axfr as $axfrserver) {
$bindconf_file .= ' ' . $axfrserver . ';' . "\n";
}
}
@@ -132,11 +132,11 @@ class Bind extends DnsBase
return $bindconf_file;
}
private function _cleanZonefiles()
private function cleanZonefiles()
{
$config_dir = \Froxlor\FileDir::makeCorrectFile(Settings::Get('system.bindconf_directory') . '/domains/');
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Cleaning dns zone files from ' . $config_dir);
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Cleaning dns zone files from ' . $config_dir);
// check directory
if (@is_dir($config_dir)) {

View File

@@ -27,19 +27,19 @@ use Froxlor\Settings;
abstract class DnsBase
{
protected $_logger = false;
protected $logger = false;
protected $_ns = array();
protected $ns = array();
protected $_mx = array();
protected $mx = array();
protected $_axfr = array();
protected $axfr = array();
abstract public function writeConfigs();
public function __construct($logger)
{
$this->_logger = $logger;
$this->logger = $logger;
if (Settings::Get('system.nameservers') != '') {
$nameservers = explode(',', Settings::Get('system.nameservers'));
@@ -59,7 +59,7 @@ abstract class DnsBase
$nameserver
);
}
$this->_ns[] = array(
$this->ns[] = array(
'hostname' => $nameserver,
'ips' => $nameserver_ips
);
@@ -72,7 +72,7 @@ abstract class DnsBase
if (substr($mxserver, - 1, 1) != '.') {
$mxserver .= '.';
}
$this->_mx[] = $mxserver;
$this->mx[] = $mxserver;
}
}
@@ -80,7 +80,7 @@ abstract class DnsBase
if (Settings::Get('system.axfrservers') != '') {
$axfrservers = explode(',', Settings::Get('system.axfrservers'));
foreach ($axfrservers as $axfrserver) {
$this->_axfr[] = trim($axfrserver);
$this->axfr[] = trim($axfrserver);
}
}
}
@@ -151,15 +151,15 @@ abstract class DnsBase
if (isset($domains[$domains[$key]['ismainbutsubto']])) {
$domains[$domains[$key]['ismainbutsubto']]['children'][] = $domains[$key]['id'];
} else {
$this->_logger->logAction(CRON_ACTION, LOG_ERR, 'Database inconsistency: domain ' . $domain['domain'] . ' (ID #' . $key . ') is set to to be subdomain to non-existent domain ID #' . $domains[$key]['ismainbutsubto'] . '. No DNS record(s) will be created for this domain.');
$this->logger->logAction(CRON_ACTION, LOG_ERR, 'Database inconsistency: domain ' . $domain['domain'] . ' (ID #' . $key . ') is set to to be subdomain to non-existent domain ID #' . $domains[$key]['ismainbutsubto'] . '. No DNS record(s) will be created for this domain.');
}
}
}
$this->_logger->logAction(CRON_ACTION, LOG_DEBUG, str_pad('domId', 9, ' ') . str_pad('domain', 40, ' ') . 'ismainbutsubto ' . str_pad('parent domain', 40, ' ') . "list of child domain ids");
$this->logger->logAction(CRON_ACTION, LOG_DEBUG, str_pad('domId', 9, ' ') . str_pad('domain', 40, ' ') . 'ismainbutsubto ' . str_pad('parent domain', 40, ' ') . "list of child domain ids");
foreach ($domains as $domain) {
$logLine = str_pad($domain['id'], 9, ' ') . str_pad($domain['domain'], 40, ' ') . str_pad($domain['ismainbutsubto'], 15, ' ') . str_pad(((isset($domains[$domain['ismainbutsubto']])) ? $domains[$domain['ismainbutsubto']]['domain'] : '-'), 40, ' ') . join(', ', $domain['children']);
$this->_logger->logAction(CRON_ACTION, LOG_DEBUG, $logLine);
$this->logger->logAction(CRON_ACTION, LOG_DEBUG, $logLine);
}
return $domains;
@@ -172,9 +172,9 @@ abstract class DnsBase
$cmdStatus = 1;
\Froxlor\FileDir::safe_exec(escapeshellcmd($cmd), $cmdStatus);
if ($cmdStatus === 0) {
$this->_logger->logAction(CRON_ACTION, LOG_INFO, Settings::Get('system.dns_server') . ' daemon reloaded');
$this->logger->logAction(CRON_ACTION, LOG_INFO, Settings::Get('system.dns_server') . ' daemon reloaded');
} else {
$this->_logger->logAction(CRON_ACTION, LOG_ERR, 'Error while running `' . $cmd . '`: exit code (' . $cmdStatus . ') - please check your system logs');
$this->logger->logAction(CRON_ACTION, LOG_ERR, 'Error while running `' . $cmd . '`: exit code (' . $cmdStatus . ') - please check your system logs');
}
}
@@ -182,7 +182,7 @@ abstract class DnsBase
{
if (Settings::Get('dkim.use_dkim') == '1') {
if (! file_exists(\Froxlor\FileDir::makeCorrectDir(Settings::Get('dkim.dkim_prefix')))) {
$this->_logger->logAction(CRON_ACTION, LOG_NOTICE, 'mkdir -p ' . escapeshellarg(\Froxlor\FileDir::makeCorrectDir(Settings::Get('dkim.dkim_prefix'))));
$this->logger->logAction(CRON_ACTION, LOG_NOTICE, 'mkdir -p ' . escapeshellarg(\Froxlor\FileDir::makeCorrectDir(Settings::Get('dkim.dkim_prefix'))));
\Froxlor\FileDir::safe_exec('mkdir -p ' . escapeshellarg(\Froxlor\FileDir::makeCorrectDir(Settings::Get('dkim.dkim_prefix'))));
}
@@ -254,7 +254,7 @@ abstract class DnsBase
fclose($dkimkeys_file_handler);
\Froxlor\FileDir::safe_exec(escapeshellcmd(Settings::Get('dkim.dkimrestart_command')));
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Dkim-milter reloaded');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Dkim-milter reloaded');
}
}
}

View File

@@ -21,15 +21,15 @@ class PowerDNS extends DnsBase
public function writeConfigs()
{
// tell the world what we are doing
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 started - Refreshing DNS database');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 started - Refreshing DNS database');
$domains = $this->getDomainList();
// clean up
$this->_clearZoneTables($domains);
$this->clearZoneTables($domains);
if (empty($domains)) {
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'No domains found for nameserver-config, skipping...');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'No domains found for nameserver-config, skipping...');
return;
}
@@ -41,9 +41,9 @@ class PowerDNS extends DnsBase
$this->walkDomainList($domain, $domains);
}
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'PowerDNS database updated');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'PowerDNS database updated');
$this->reloadDaemon();
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 finished');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 finished');
}
private function walkDomainList($domain, $domains)
@@ -69,21 +69,21 @@ class PowerDNS extends DnsBase
$zoneContent->records[] = $subzone;
}
}
$pdnsDomId = $this->_insertZone($zoneContent->origin, $zoneContent->serial);
$this->_insertRecords($pdnsDomId, $zoneContent->records, $zoneContent->origin);
$this->_insertAllowedTransfers($pdnsDomId);
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'DB entries stored for zone `' . $domain['domain'] . '`');
$pdnsDomId = $this->insertZone($zoneContent->origin, $zoneContent->serial);
$this->insertRecords($pdnsDomId, $zoneContent->records, $zoneContent->origin);
$this->insertAllowedTransfers($pdnsDomId);
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'DB entries stored for zone `' . $domain['domain'] . '`');
} else {
return \Froxlor\Dns\Dns::createDomainZone(($domain['id'] == 'none') ? $domain : $domain['id'], $isFroxlorHostname, true);
}
} else {
$this->_logger->logAction(CRON_ACTION, LOG_ERROR, 'Custom zonefiles are NOT supported when PowerDNS is selected as DNS daemon (triggered by: ' . $domain['domain'] . ')');
$this->logger->logAction(CRON_ACTION, LOG_ERROR, 'Custom zonefiles are NOT supported when PowerDNS is selected as DNS daemon (triggered by: ' . $domain['domain'] . ')');
}
}
private function _clearZoneTables($domains = null)
private function clearZoneTables($domains = null)
{
$this->_logger->logAction(CRON_ACTION, LOG_INFO, 'Cleaning dns zone entries from database');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'Cleaning dns zone entries from database');
$pdns_domains_stmt = \Froxlor\Dns\PowerDNS::getDB()->prepare("SELECT `id`, `name` FROM `domains` WHERE `name` = :domain");
@@ -109,7 +109,7 @@ class PowerDNS extends DnsBase
}
}
private function _insertZone($domainname, $serial = 0)
private function insertZone($domainname, $serial = 0)
{
$ins_stmt = PowerDNS::getDB()->prepare("
INSERT INTO domains set `name` = :domainname, `notified_serial` = :serial, `type` = 'NATIVE'
@@ -122,7 +122,7 @@ class PowerDNS extends DnsBase
return $lastid;
}
private function _insertRecords($domainid = 0, $records, $origin)
private function insertRecords($domainid = 0, $records, $origin)
{
$changedate = date('Ymds', time());
@@ -140,7 +140,7 @@ class PowerDNS extends DnsBase
foreach ($records as $record) {
if ($record instanceof \Froxlor\Dns\DnsZone) {
$this->_insertRecords($domainid, $record->records, $record->origin);
$this->insertRecords($domainid, $record->records, $record->origin);
continue;
}
@@ -163,7 +163,7 @@ class PowerDNS extends DnsBase
}
}
private function _insertAllowedTransfers($domainid)
private function insertAllowedTransfers($domainid)
{
$ins_stmt = PowerDNS::getDB()->prepare("
INSERT INTO domainmetadata set `domain_id` = :did, `kind` = 'ALLOW-AXFR-FROM', `content` = :value
@@ -173,10 +173,10 @@ class PowerDNS extends DnsBase
'did' => $domainid
);
if (count($this->_ns) > 0 || count($this->_axfr) > 0) {
if (count($this->ns) > 0 || count($this->axfr) > 0) {
// put nameservers in allow-transfer
if (count($this->_ns) > 0) {
foreach ($this->_ns as $ns) {
if (count($this->ns) > 0) {
foreach ($this->ns as $ns) {
foreach ($ns["ips"] as $ip) {
$ins_data['value'] = $ip;
$ins_stmt->execute($ins_data);
@@ -184,8 +184,8 @@ class PowerDNS extends DnsBase
}
}
// AXFR server #100
if (count($this->_axfr) > 0) {
foreach ($this->_axfr as $axfrserver) {
if (count($this->axfr) > 0) {
foreach ($this->axfr as $axfrserver) {
$ins_data['value'] = $axfrserver;
$ins_stmt->execute($ins_data);
}

View File

@@ -1,6 +1,23 @@
<?php
namespace Froxlor\Cron;
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Michael Kaufmann <mkaufmann@nutime.de>
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Cron
*
* @since 0.10.0
*
*/
abstract class FroxlorCron
{
@@ -17,4 +34,4 @@ abstract class FroxlorCron
{
static::$lockfile = $lockfile;
}
}
}

View File

@@ -83,7 +83,7 @@ class MasterCron extends \Froxlor\Cron\FroxlorCron
}
}
}
$jobs_to_run = array_unique($jobs_to_run);
$cronlog->setCronDebugFlag(defined('CRON_DEBUG_FLAG'));

View File

@@ -67,34 +67,33 @@ class Crypt
*
* 0 - default crypt (depenend on system configuration)
* 1 - MD5 $1$
* 2 - BLOWFISH $2a$ | $2y$07$ (on php 5.3.7+)
* 2 - BLOWFISH $2y$07$
* 3 - SHA-256 $5$ (default)
* 4 - SHA-512 $6$
*
* @param string $password
* Password to be crypted
* @param bool $htpasswd
* optional whether to generate a SHA1 password for directory protection
*
* @return string encrypted password
*/
public static function makeCryptPassword($password)
public static function makeCryptPassword($password, $htpasswd = false)
{
if ($htpasswd) {
return '{SHA}' . base64_encode(sha1($password, true));
}
$type = Settings::Get('system.passwordcryptfunc') !== null ? (int) Settings::Get('system.passwordcryptfunc') : 3;
switch ($type) {
case 0:
$cryptPassword = crypt($password);
break;
case 1:
$cryptPassword = crypt($password, '$1$' . self::generatePassword(true) . self::generatePassword(true));
break;
case 2:
if (\Froxlor\Froxlor::version_compare(phpversion(), '5.3.7', '<')) {
$cryptPassword = crypt($password, '$2a$' . self::generatePassword(true) . self::generatePassword(true));
} else {
// Blowfish hashing with a salt as follows: "$2a$", "$2x$" or "$2y$",
// a two digit cost parameter, "$", and 22 characters from the alphabet "./0-9A-Za-z"
$cryptPassword = crypt($password, '$2y$07$' . substr(self::generatePassword(true) . self::generatePassword(true) . self::generatePassword(true), 0, 22));
}
// Blowfish hashing with a salt as follows: "$2a$", "$2x$" or "$2y$",
// a two digit cost parameter, "$", and 22 characters from the alphabet "./0-9A-Za-z"
$cryptPassword = crypt($password, '$2y$07$' . substr(self::generatePassword(true) . self::generatePassword(true) . self::generatePassword(true), 0, 22));
break;
case 3:
$cryptPassword = crypt($password, '$5$' . self::generatePassword(true) . self::generatePassword(true));
@@ -103,7 +102,7 @@ class Crypt
$cryptPassword = crypt($password, '$6$' . self::generatePassword(true) . self::generatePassword(true));
break;
default:
$cryptPassword = crypt($password);
$cryptPassword = crypt($password, self::generatePassword(true) . self::generatePassword(true));
break;
}
return $cryptPassword;

View File

@@ -454,7 +454,7 @@ $lng['admin']['subcanemaildomain']['never'] = 'Nooit';
$lng['admin']['subcanemaildomain']['choosableno'] = 'Kiesbaar, standaard nee';
$lng['admin']['subcanemaildomain']['choosableyes'] = 'Kiesbaar, standaard ja';
$lng['admin']['subcanemaildomain']['always'] = 'Altijd';
$lng['changepassword']['also_change_webalizer'] = ' wijzig ook het wachtwoord van de webalizer-statistieken';
$lng['changepassword']['also_change_stats'] = ' wijzig ook het wachtwoord van de statistieken';
// ADDED IN 1.2.16-svn8

View File

@@ -511,7 +511,7 @@ $lng['admin']['subcanemaildomain']['never'] = 'Never';
$lng['admin']['subcanemaildomain']['choosableno'] = 'Choosable, default no';
$lng['admin']['subcanemaildomain']['choosableyes'] = 'Choosable, default yes';
$lng['admin']['subcanemaildomain']['always'] = 'Always';
$lng['changepassword']['also_change_webalizer'] = ' also change password for the statistics page';
$lng['changepassword']['also_change_stats'] = ' also change password for the statistics page';
// ADDED IN 1.2.16-svn8

View File

@@ -506,7 +506,7 @@ $lng['admin']['subcanemaildomain']['never'] = 'Nie';
$lng['admin']['subcanemaildomain']['choosableno'] = 'Wählbar, Standardwert: Nein';
$lng['admin']['subcanemaildomain']['choosableyes'] = 'Wählbar, Standardwert: Ja';
$lng['admin']['subcanemaildomain']['always'] = 'Immer';
$lng['changepassword']['also_change_webalizer'] = ' Auch Passwort der Statistikseite ändern';
$lng['changepassword']['also_change_stats'] = ' Auch Passwort der Statistikseite ändern';
// ADDED IN 1.2.16-svn8

View File

@@ -482,7 +482,7 @@ $lng['admin']['subcanemaildomain']['never'] = 'Mai';
$lng['admin']['subcanemaildomain']['choosableno'] = 'Selezionabile, predefinito no';
$lng['admin']['subcanemaildomain']['choosableyes'] = 'Selezionabile, predefinito si';
$lng['admin']['subcanemaildomain']['always'] = 'Sempre';
$lng['changepassword']['also_change_webalizer'] = ' modificare anche la password di webalizer';
$lng['changepassword']['also_change_stats'] = ' modificare anche la password di statistic';
// ADDED IN 1.2.16-svn8

View File

@@ -454,7 +454,7 @@ $lng['admin']['subcanemaildomain']['never'] = 'Nunca';
$lng['admin']['subcanemaildomain']['choosableno'] = 'Escolhe, default não';
$lng['admin']['subcanemaildomain']['choosableyes'] = 'Escolher, default sim';
$lng['admin']['subcanemaildomain']['always'] = 'Sempre';
$lng['changepassword']['also_change_webalizer'] = 'Troca a senha das estatísticas do webalizer';
$lng['changepassword']['also_change_stats'] = 'Troca a senha das estatísticas';
$lng['serversettings']['mailpwcleartext']['title'] = 'Salva as senhas de usuários sempre criptografia no banco de dados';
$lng['serversettings']['mailpwcleartext']['description'] = 'Se você selecionar sim, todas as senhas serão guardadas descriptografadas (Poderá ser lido por todos com acesso ao banco de dados ) na tabela mail_users-table. Somente ative essa opção se você realmente precise!';
$lng['serversettings']['mailpwcleartext']['removelink'] = 'Clique aqui para limpar todas as senhas não criptografadas da tabela<br />Você realmente deseja limpar todas as senhas não encriptadas a partir da tabela mail_users? Isto não pode ser revertido!';

View File

@@ -474,7 +474,7 @@ $lng['admin']['subcanemaildomain']['never'] = 'Aldrig';
$lng['admin']['subcanemaildomain']['choosableno'] = 'Valbar, standardvärdet är Nej';
$lng['admin']['subcanemaildomain']['choosableyes'] = 'Valbar, standardvärdet är Ja';
$lng['admin']['subcanemaildomain']['always'] = 'Alltid';
$lng['changepassword']['also_change_webalizer'] = ' Ändra även lösenord för webalizer statistik';
$lng['changepassword']['also_change_stats'] = ' Ändra även lösenord för statistik';
// ADDED IN 1.2.16-svn8

View File

@@ -36,8 +36,8 @@ $header
<tr>
<td>&nbsp;</td>
<td>
<input type="checkbox" name="change_webalizer" id="change_webalizer" value="true" />
<label for="change_webalizer">{$lng['changepassword']['also_change_webalizer']}</label>
<input type="checkbox" name="change_stats" id="change_stats" value="true" />
<label for="change_stats">{$lng['changepassword']['also_change_stats']}</label>
</td>
</tr>
<tfoot>