Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
11af896411 | ||
|
|
f7f1907546 | ||
|
|
ced78ac6f7 | ||
|
|
fe3728d522 | ||
|
|
f858f045d6 | ||
|
|
51673f3569 | ||
|
|
e430092eda | ||
|
|
eaf70765d5 | ||
|
|
9191bc6c08 | ||
|
|
d1d772f790 | ||
|
|
edc7a91519 | ||
|
|
4eb177e65f | ||
|
|
5f34dfa968 | ||
|
|
c43574a714 | ||
|
|
525b6ee98d | ||
|
|
e5814b14d9 |
@@ -62,6 +62,15 @@ return array(
|
||||
'default' => 0,
|
||||
'save_method' => 'storeSettingField',
|
||||
),
|
||||
'panel_password_regex' => array(
|
||||
'label' => $lng['serversettings']['panel_password_regex'],
|
||||
'settinggroup' => 'panel',
|
||||
'varname' => 'password_regex',
|
||||
'type' => 'string',
|
||||
'default' => '',
|
||||
/* 'plausibility_check_method' => 'checkValidRegEx', */
|
||||
'save_method' => 'storeSettingField',
|
||||
),
|
||||
'customer_accountprefix' => array(
|
||||
'label' => $lng['serversettings']['accountprefix'],
|
||||
'settinggroup' => 'customer',
|
||||
|
||||
@@ -185,7 +185,15 @@ return array(
|
||||
'option_mode' => 'one',
|
||||
'option_options_method' => 'getRedirectCodes',
|
||||
'save_method' => 'storeSettingField',
|
||||
),
|
||||
),
|
||||
'perl_path' => array(
|
||||
'label' => $lng['serversettings']['perl_path'],
|
||||
'settinggroup' => 'system',
|
||||
'varname' => 'perl_path',
|
||||
'type' => 'string',
|
||||
'default' => '/usr/bin/perl',
|
||||
'save_method' => 'storeSettingField',
|
||||
),
|
||||
),
|
||||
),
|
||||
'ssl' => array(
|
||||
|
||||
@@ -67,7 +67,8 @@ if($page == 'customers'
|
||||
'c.email_quota_used' => $lng['customer']['email_quota'] . ' (' . $lng['panel']['used'] . ')',
|
||||
'c.deactivated' => $lng['admin']['deactivated'],
|
||||
'c.lastlogin_succ' => $lng['admin']['lastlogin_succ'],
|
||||
'c.phpenabled' => $lng['admin']['phpenabled']
|
||||
'c.phpenabled' => $lng['admin']['phpenabled'],
|
||||
'c.perlenabled' => $lng['admin']['perlenabled']
|
||||
);
|
||||
|
||||
if($settings['ticket']['enabled'] == 1)
|
||||
@@ -423,6 +424,7 @@ if($page == 'customers'
|
||||
$password = validatePassword($password);
|
||||
$sendpassword = intval($_POST['sendpassword']);
|
||||
$phpenabled = intval($_POST['phpenabled']);
|
||||
$perlenabled = intval($_POST['perlenabled']);
|
||||
$diskspace = $diskspace * 1024;
|
||||
$traffic = $traffic * 1024 * 1024;
|
||||
|
||||
@@ -525,12 +527,17 @@ if($page == 'customers'
|
||||
$phpenabled = '1';
|
||||
}
|
||||
|
||||
if($perlenabled != '0')
|
||||
{
|
||||
$perlenabled = '1';
|
||||
}
|
||||
|
||||
if($password == '')
|
||||
{
|
||||
$password = substr(md5(uniqid(microtime(), 1)), 12, 6);
|
||||
}
|
||||
|
||||
$result = $db->query("INSERT INTO `" . TABLE_PANEL_CUSTOMERS . "` (`adminid`, `loginname`, `password`, `name`, `firstname`, `company`, `street`, `zipcode`, `city`, `phone`, `fax`, `email`, `customernumber`, `def_language`, `documentroot`, `guid`, `diskspace`, `traffic`, `subdomains`, `emails`, `email_accounts`, `email_forwarders`, `email_quota`, `ftps`, `tickets`, `mysqls`, `standardsubdomain`, `phpenabled`, `imap`, `pop3`, `aps_packages`) VALUES ('" . (int)$userinfo['adminid'] . "', '" . $db->escape($loginname) . "', '" . md5($password) . "', '" . $db->escape($name) . "', '" . $db->escape($firstname) . "', '" . $db->escape($company) . "', '" . $db->escape($street) . "', '" . $db->escape($zipcode) . "', '" . $db->escape($city) . "', '" . $db->escape($phone) . "', '" . $db->escape($fax) . "', '" . $db->escape($email) . "', '" . $db->escape($customernumber) . "','" . $db->escape($def_language) . "', '" . $db->escape($documentroot) . "', '" . $db->escape($guid) . "', '" . $db->escape($diskspace) . "', '" . $db->escape($traffic) . "', '" . $db->escape($subdomains) . "', '" . $db->escape($emails) . "', '" . $db->escape($email_accounts) . "', '" . $db->escape($email_forwarders) . "', '" . $db->escape($email_quota) . "', '" . $db->escape($ftps) . "', '" . $db->escape($tickets) . "', '" . $db->escape($mysqls) . "', '0', '" . $db->escape($phpenabled) . "', '" . $db->escape($email_imap) . "', '" . $db->escape($email_pop3) . "', '" . (int)$number_of_aps_packages . "')");
|
||||
$result = $db->query("INSERT INTO `" . TABLE_PANEL_CUSTOMERS . "` (`adminid`, `loginname`, `password`, `name`, `firstname`, `company`, `street`, `zipcode`, `city`, `phone`, `fax`, `email`, `customernumber`, `def_language`, `documentroot`, `guid`, `diskspace`, `traffic`, `subdomains`, `emails`, `email_accounts`, `email_forwarders`, `email_quota`, `ftps`, `tickets`, `mysqls`, `standardsubdomain`, `phpenabled`, `imap`, `pop3`, `aps_packages`, `perlenabled`) VALUES ('" . (int)$userinfo['adminid'] . "', '" . $db->escape($loginname) . "', '" . md5($password) . "', '" . $db->escape($name) . "', '" . $db->escape($firstname) . "', '" . $db->escape($company) . "', '" . $db->escape($street) . "', '" . $db->escape($zipcode) . "', '" . $db->escape($city) . "', '" . $db->escape($phone) . "', '" . $db->escape($fax) . "', '" . $db->escape($email) . "', '" . $db->escape($customernumber) . "','" . $db->escape($def_language) . "', '" . $db->escape($documentroot) . "', '" . $db->escape($guid) . "', '" . $db->escape($diskspace) . "', '" . $db->escape($traffic) . "', '" . $db->escape($subdomains) . "', '" . $db->escape($emails) . "', '" . $db->escape($email_accounts) . "', '" . $db->escape($email_forwarders) . "', '" . $db->escape($email_quota) . "', '" . $db->escape($ftps) . "', '" . $db->escape($tickets) . "', '" . $db->escape($mysqls) . "', '0', '" . $db->escape($phpenabled) . "', '" . $db->escape($email_imap) . "', '" . $db->escape($email_pop3) . "', '" . (int)$number_of_aps_packages . "', '" . $db->escape($perlenabled) . "')");
|
||||
$customerid = $db->insert_id();
|
||||
$admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` + 1";
|
||||
|
||||
@@ -729,6 +736,7 @@ if($page == 'customers'
|
||||
$email_pop3 = makeyesno('email_pop3', '1', '0', '1');
|
||||
$sendpassword = makeyesno('sendpassword', '1', '0', '1');
|
||||
$phpenabled = makeyesno('phpenabled', '1', '0', '1');
|
||||
$perlenabled = makeyesno('perlenabled', '1', '0', '0');
|
||||
eval("echo \"" . getTemplate("customers/customers_add") . "\";");
|
||||
}
|
||||
}
|
||||
@@ -852,6 +860,7 @@ if($page == 'customers'
|
||||
$createstdsubdomain = intval($_POST['createstdsubdomain']);
|
||||
$deactivated = intval($_POST['deactivated']);
|
||||
$phpenabled = intval($_POST['phpenabled']);
|
||||
$perlenabled = intval($_POST['perlenabled']);
|
||||
$diskspace = $diskspace * 1024;
|
||||
$traffic = $traffic * 1024 * 1024;
|
||||
|
||||
@@ -956,7 +965,13 @@ if($page == 'customers'
|
||||
$phpenabled = '1';
|
||||
}
|
||||
|
||||
if($phpenabled != $result['phpenabled'])
|
||||
if($perlenabled != '0')
|
||||
{
|
||||
$perlenabled = '1';
|
||||
}
|
||||
|
||||
if($phpenabled != $result['phpenabled']
|
||||
|| $perlenabled != $result['perlenabled'])
|
||||
{
|
||||
inserttask('1');
|
||||
}
|
||||
@@ -984,7 +999,7 @@ if($page == 'customers'
|
||||
$db->query("UPDATE `" . TABLE_MAIL_USERS . "` SET `imap`='" . (int)$email_imap . "' WHERE `customerid`='" . (int)$id . "'");
|
||||
}
|
||||
|
||||
$db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `name`='" . $db->escape($name) . "', `firstname`='" . $db->escape($firstname) . "', `company`='" . $db->escape($company) . "', `street`='" . $db->escape($street) . "', `zipcode`='" . $db->escape($zipcode) . "', `city`='" . $db->escape($city) . "', `phone`='" . $db->escape($phone) . "', `fax`='" . $db->escape($fax) . "', `email`='" . $db->escape($email) . "', `customernumber`='" . $db->escape($customernumber) . "', `def_language`='" . $db->escape($def_language) . "', `password` = '" . $password . "', `diskspace`='" . $db->escape($diskspace) . "', `traffic`='" . $db->escape($traffic) . "', `subdomains`='" . $db->escape($subdomains) . "', `emails`='" . $db->escape($emails) . "', `email_accounts` = '" . $db->escape($email_accounts) . "', `email_forwarders`='" . $db->escape($email_forwarders) . "', `ftps`='" . $db->escape($ftps) . "', `tickets`='" . $db->escape($tickets) . "', `mysqls`='" . $db->escape($mysqls) . "', `deactivated`='" . $db->escape($deactivated) . "', `phpenabled`='" . $db->escape($phpenabled) . "', `email_quota`='" . $db->escape($email_quota) . "', `imap`='" . $db->escape($email_imap) . "', `pop3`='" . $db->escape($email_pop3) . "', `aps_packages`='" . (int)$number_of_aps_packages . "' WHERE `customerid`='" . (int)$id . "'");
|
||||
$db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `name`='" . $db->escape($name) . "', `firstname`='" . $db->escape($firstname) . "', `company`='" . $db->escape($company) . "', `street`='" . $db->escape($street) . "', `zipcode`='" . $db->escape($zipcode) . "', `city`='" . $db->escape($city) . "', `phone`='" . $db->escape($phone) . "', `fax`='" . $db->escape($fax) . "', `email`='" . $db->escape($email) . "', `customernumber`='" . $db->escape($customernumber) . "', `def_language`='" . $db->escape($def_language) . "', `password` = '" . $password . "', `diskspace`='" . $db->escape($diskspace) . "', `traffic`='" . $db->escape($traffic) . "', `subdomains`='" . $db->escape($subdomains) . "', `emails`='" . $db->escape($emails) . "', `email_accounts` = '" . $db->escape($email_accounts) . "', `email_forwarders`='" . $db->escape($email_forwarders) . "', `ftps`='" . $db->escape($ftps) . "', `tickets`='" . $db->escape($tickets) . "', `mysqls`='" . $db->escape($mysqls) . "', `deactivated`='" . $db->escape($deactivated) . "', `phpenabled`='" . $db->escape($phpenabled) . "', `email_quota`='" . $db->escape($email_quota) . "', `imap`='" . $db->escape($email_imap) . "', `pop3`='" . $db->escape($email_pop3) . "', `aps_packages`='" . (int)$number_of_aps_packages . "', `perlenabled`='" . $db->escape($perlenabled) . "' WHERE `customerid`='" . (int)$id . "'");
|
||||
$admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` ";
|
||||
|
||||
if($mysqls != '-1'
|
||||
@@ -1249,6 +1264,7 @@ if($page == 'customers'
|
||||
|
||||
$createstdsubdomain = makeyesno('createstdsubdomain', '1', '0', (($result['standardsubdomain'] != '0') ? '1' : '0'));
|
||||
$phpenabled = makeyesno('phpenabled', '1', '0', $result['phpenabled']);
|
||||
$perlenabled = makeyesno('perlenabled', '1', '0', $result['perlenabled']);
|
||||
$deactivated = makeyesno('deactivated', '1', '0', $result['deactivated']);
|
||||
$email_imap = makeyesno('email_imap', '1', '0', $result['imap']);
|
||||
$email_pop3 = makeyesno('email_pop3', '1', '0', $result['pop3']);
|
||||
|
||||
@@ -182,6 +182,7 @@ if($page == 'domains'
|
||||
$db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `subdomains_used` = `subdomains_used` - " . (int)($deleted_domains - 1) . " WHERE `customerid` = '" . (int)$result['customerid'] . "'");
|
||||
$db->query("UPDATE `" . TABLE_PANEL_ADMINS . "` SET `domains_used` = `domains_used` - 1 WHERE `adminid` = '" . (int)$userinfo['adminid'] . "'");
|
||||
$db->query('UPDATE `' . TABLE_PANEL_CUSTOMERS . '` SET `standardsubdomain`=\'0\' WHERE `standardsubdomain`=\'' . (int)$result['id'] . '\' AND `customerid`=\'' . (int)$result['customerid'] . '\'');
|
||||
$db->query("DELETE FROM `" . TABLE_PANEL_DOMAINREDIRECTS . "` WHERE `did` = '".(int)$id."'");
|
||||
$log->logAction(ADM_ACTION, LOG_INFO, "deleted domain/subdomains (#" . $result['id'] . ")");
|
||||
updateCounters();
|
||||
inserttask('1');
|
||||
|
||||
@@ -187,7 +187,7 @@ elseif($page == 'emails')
|
||||
if(isset($_POST['delete_userfiles'])
|
||||
&& (int)$_POST['delete_userfiles'] == 1)
|
||||
{
|
||||
inserttask('7', $result['loginname'], $result['email']);
|
||||
inserttask('7', $userinfo['loginname'], $result['email_full']);
|
||||
}
|
||||
|
||||
$db->query("DELETE FROM `" . TABLE_MAIL_VIRTUAL . "` WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'");
|
||||
@@ -197,7 +197,12 @@ elseif($page == 'emails')
|
||||
}
|
||||
else
|
||||
{
|
||||
ask_yesno_withcheckbox('email_reallydelete', 'admin_customer_alsoremovemail', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $idna_convert->decode($result['email_full']));
|
||||
if(maildirExists($result)) {
|
||||
$show_checkbox = true;
|
||||
} else {
|
||||
$show_checkbox = false;
|
||||
}
|
||||
ask_yesno_withcheckbox('email_reallydelete', 'admin_customer_alsoremovemail', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $idna_convert->decode($result['email_full']), $show_checkbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -608,13 +613,19 @@ elseif($page == 'accounts')
|
||||
$quota = 0;
|
||||
}
|
||||
|
||||
if(isset($_POST['delete_userfiles'])
|
||||
&& (int)$_POST['delete_userfiles'] == 1)
|
||||
{
|
||||
inserttask('7', $userinfo['loginname'], $result['email_full']);
|
||||
}
|
||||
|
||||
$db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `email_accounts_used` = `email_accounts_used` - 1, `email_quota_used` = `email_quota_used` - " . (int)$quota . " WHERE `customerid`='" . (int)$userinfo['customerid'] . "'");
|
||||
$log->logAction(USR_ACTION, LOG_INFO, "deleted email account for '" . $result['email_full'] . "'");
|
||||
redirectTo($filename, Array('page' => 'emails', 'action' => 'edit', 'id' => $id, 's' => $s));
|
||||
}
|
||||
else
|
||||
{
|
||||
ask_yesno('email_reallydelete_account', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $idna_convert->decode($result['email_full']));
|
||||
ask_yesno_withcheckbox('email_reallydelete_account', 'admin_customer_alsoremovemail', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $idna_convert->decode($result['email_full']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,10 +221,11 @@ elseif($page == 'htaccess')
|
||||
'options_indexes' => $lng['extras']['view_directory'],
|
||||
'error404path' => $lng['extras']['error404path'],
|
||||
'error403path' => $lng['extras']['error403path'],
|
||||
'error500path' => $lng['extras']['error500path']
|
||||
'error500path' => $lng['extras']['error500path'],
|
||||
'options_cgi' => $lng['extras']['execute_perl']
|
||||
);
|
||||
$paging = new paging($userinfo, $db, TABLE_PANEL_HTACCESS, $fields, $settings['panel']['paging'], $settings['panel']['natsorting']);
|
||||
$result = $db->query("SELECT `id`, `path`, `options_indexes`, `error404path`, `error403path`, `error500path` FROM `" . TABLE_PANEL_HTACCESS . "` WHERE `customerid`='" . (int)$userinfo['customerid'] . "' " . $paging->getSqlWhere(true) . " " . $paging->getSqlOrderBy() . " " . $paging->getSqlLimit());
|
||||
$result = $db->query("SELECT * FROM `" . TABLE_PANEL_HTACCESS . "` WHERE `customerid`='" . (int)$userinfo['customerid'] . "' " . $paging->getSqlWhere(true) . " " . $paging->getSqlOrderBy() . " " . $paging->getSqlLimit());
|
||||
$paging->setEntries($db->num_rows($result));
|
||||
$sortcode = $paging->getHtmlSortCode($lng);
|
||||
$arrowcode = $paging->getHtmlArrowCode($filename . '?page=' . $page . '&s=' . $s);
|
||||
@@ -234,6 +235,8 @@ elseif($page == 'htaccess')
|
||||
$count = 0;
|
||||
$htaccess = '';
|
||||
|
||||
$cperlenabled = customerHasPerlEnabled($userinfo['customerid']);
|
||||
|
||||
while($row = $db->fetch_array($result))
|
||||
{
|
||||
if($paging->checkDisplay($i))
|
||||
@@ -241,10 +244,14 @@ elseif($page == 'htaccess')
|
||||
if(strpos($row['path'], $userinfo['documentroot']) === 0)
|
||||
{
|
||||
$row['path'] = substr($row['path'], strlen($userinfo['documentroot']));
|
||||
// don't show nothing wehn it's the docroot, show slash
|
||||
if ($row['path'] == '') { $row['path'] = '/'; }
|
||||
}
|
||||
|
||||
$row['options_indexes'] = str_replace('1', $lng['panel']['yes'], $row['options_indexes']);
|
||||
$row['options_indexes'] = str_replace('0', $lng['panel']['no'], $row['options_indexes']);
|
||||
$row['options_cgi'] = str_replace('1', $lng['panel']['yes'], $row['options_cgi']);
|
||||
$row['options_cgi'] = str_replace('0', $lng['panel']['no'], $row['options_cgi']);
|
||||
$row = htmlentities_array($row);
|
||||
eval("\$htaccess.=\"" . getTemplate("extras/htaccess_htaccess") . "\";");
|
||||
$count++;
|
||||
@@ -293,6 +300,15 @@ elseif($page == 'htaccess')
|
||||
standard_error('invalidpath');
|
||||
}
|
||||
|
||||
if(isset($_POST['options_cgi']))
|
||||
{
|
||||
$options_cgi = intval($_POST['options_cgi']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$options_cgi = '0';
|
||||
}
|
||||
|
||||
if(($_POST['error404path'] === '')
|
||||
|| (validateUrl($idna_convert->encode($_POST['error404path']))))
|
||||
{
|
||||
@@ -333,7 +349,15 @@ elseif($page == 'htaccess')
|
||||
}
|
||||
else
|
||||
{
|
||||
$db->query('INSERT INTO `' . TABLE_PANEL_HTACCESS . '` (`customerid`, `path`, `options_indexes`, `error404path`, `error403path`, `error500path` ) VALUES ("' . (int)$userinfo['customerid'] . '", "' . $db->escape($path) . '", "' . $db->escape($_POST['options_indexes'] == '1' ? '1' : '0') . '", "' . $db->escape($error404path) . '", "' . $db->escape($error403path) . '", "' . $db->escape($error500path) . '" )');
|
||||
$db->query('INSERT INTO `' . TABLE_PANEL_HTACCESS . '` SET
|
||||
`customerid` = "'.(int)$userinfo['customerid'].'",
|
||||
`path` = "'.$db->escape($path).'",
|
||||
`options_indexes` = "'.$db->escape($_POST['options_indexes'] == '1' ? '1' : '0').'",
|
||||
`error404path` = "'.$db->escape($error404path).'",
|
||||
`error403path` = "'.$db->escape($error403path).'",
|
||||
`error500path` = "'.$db->escape($error500path).'",
|
||||
`options_cgi` = "'.$db->escape($options_cgi).'"');
|
||||
|
||||
$log->logAction(USR_ACTION, LOG_INFO, "added htaccess for '" . $path . "'");
|
||||
inserttask('1');
|
||||
redirectTo($filename, Array('page' => $page, 's' => $s));
|
||||
@@ -343,6 +367,8 @@ elseif($page == 'htaccess')
|
||||
{
|
||||
$pathSelect = makePathfield($userinfo['documentroot'], $userinfo['guid'], $userinfo['guid'], $settings['panel']['pathedit']);
|
||||
$options_indexes = makeyesno('options_indexes', '1', '0', '0');
|
||||
$cperlenabled = customerHasPerlEnabled($userinfo['customerid']);
|
||||
$options_cgi = makeyesno('options_cgi', '1', '0', '0');
|
||||
eval("echo \"" . getTemplate("extras/htaccess_add") . "\";");
|
||||
}
|
||||
}
|
||||
@@ -359,12 +385,18 @@ elseif($page == 'htaccess')
|
||||
&& $_POST['send'] == 'send')
|
||||
{
|
||||
$option_indexes = intval($_POST['options_indexes']);
|
||||
$options_cgi = isset($_POST['options_cgi']) ? intval($_POST['options_cgi']) : 0;
|
||||
|
||||
if($option_indexes != '1')
|
||||
{
|
||||
$option_indexes = '0';
|
||||
}
|
||||
|
||||
if($options_cgi != '1')
|
||||
{
|
||||
$options_cgi = '0';
|
||||
}
|
||||
|
||||
if(($_POST['error404path'] === '')
|
||||
|| (validateUrl($idna_convert->encode($_POST['error404path']))))
|
||||
{
|
||||
@@ -398,10 +430,11 @@ elseif($page == 'htaccess')
|
||||
if(($option_indexes != $result['options_indexes'])
|
||||
|| ($error404path != $result['error404path'])
|
||||
|| ($error403path != $result['error403path'])
|
||||
|| ($error500path != $result['error500path']))
|
||||
|| ($error500path != $result['error500path'])
|
||||
|| ($options_cgi != $result['options_cgi']))
|
||||
{
|
||||
inserttask('1');
|
||||
$db->query('UPDATE `' . TABLE_PANEL_HTACCESS . '` SET `options_indexes` = "' . $db->escape($option_indexes) . '", `error404path` = "' . $db->escape($error404path) . '", `error403path` = "' . $db->escape($error403path) . '", `error500path` = "' . $db->escape($error500path) . '" WHERE `customerid` = "' . (int)$userinfo['customerid'] . '" AND `id` = "' . (int)$id . '"');
|
||||
$db->query('UPDATE `' . TABLE_PANEL_HTACCESS . '` SET `options_indexes` = "' . $db->escape($option_indexes) . '", `error404path` = "' . $db->escape($error404path) . '", `error403path` = "' . $db->escape($error403path) . '", `error500path` = "' . $db->escape($error500path) . '", `options_cgi` = "' . $db->escape($options_cgi) . '" WHERE `customerid` = "' . (int)$userinfo['customerid'] . '" AND `id` = "' . (int)$id . '"');
|
||||
$log->logAction(USR_ACTION, LOG_INFO, "edited htaccess for '" . str_replace($userinfo['documentroot'], '', $result['path']) . "'");
|
||||
}
|
||||
|
||||
@@ -412,12 +445,16 @@ elseif($page == 'htaccess')
|
||||
if(strpos($result['path'], $userinfo['documentroot']) === 0)
|
||||
{
|
||||
$result['path'] = substr($result['path'], strlen($userinfo['documentroot']));
|
||||
// don't show nothing wehn it's the docroot, show slash
|
||||
if ($result['path'] == '') { $result['path'] = '/'; }
|
||||
}
|
||||
|
||||
$result['error404path'] = $result['error404path'];
|
||||
$result['error403path'] = $result['error403path'];
|
||||
$result['error500path'] = $result['error500path'];
|
||||
$options_indexes = makeyesno('options_indexes', '1', '0', $result['options_indexes']);
|
||||
$cperlenabled = customerHasPerlEnabled($userinfo['customerid']);
|
||||
$options_cgi = makeyesno('options_cgi', '1', '0', $result['options_cgi']);
|
||||
$result = htmlentities_array($result);
|
||||
eval("echo \"" . getTemplate("extras/htaccess_edit") . "\";");
|
||||
}
|
||||
|
||||
@@ -106,8 +106,6 @@ elseif($page == 'accounts')
|
||||
$log->logAction(USR_ACTION, LOG_INFO, "deleted ftp-account '" . $result['username'] . "'");
|
||||
$db->query("UPDATE `" . TABLE_FTP_GROUPS . "` SET `members`=REPLACE(`members`,'," . $db->escape($result['username']) . "','') WHERE `customerid`='" . (int)$userinfo['customerid'] . "'");
|
||||
|
||||
// $db->query("DELETE FROM `".TABLE_FTP_GROUPS."` WHERE `customerid`='".$userinfo['customerid']."' AND `id`='$id'");
|
||||
|
||||
if($userinfo['ftps_used'] == '1')
|
||||
{
|
||||
$resetaccnumber = " , `ftp_lastaccountnumber`='0'";
|
||||
@@ -117,12 +115,19 @@ elseif($page == 'accounts')
|
||||
$resetaccnumber = '';
|
||||
}
|
||||
|
||||
// refs #293
|
||||
if(isset($_POST['delete_userfiles'])
|
||||
&& (int)$_POST['delete_userfiles'] == 1)
|
||||
{
|
||||
inserttask('8', $userinfo['loginname'], $result['homedir']);
|
||||
}
|
||||
|
||||
$result = $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `ftps_used`=`ftps_used`-1 $resetaccnumber WHERE `customerid`='" . (int)$userinfo['customerid'] . "'");
|
||||
redirectTo($filename, Array('page' => $page, 's' => $s));
|
||||
}
|
||||
else
|
||||
{
|
||||
ask_yesno('ftp_reallydelete', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $result['username']);
|
||||
ask_yesno_withcheckbox('ftp_reallydelete', 'admin_customer_alsoremoveftphomedir', $filename, array('id' => $id, 'page' => $page, 'action' => $action), $result['username']);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -227,6 +227,7 @@ CREATE TABLE `panel_customers` (
|
||||
`imap` tinyint(1) NOT NULL default '1',
|
||||
`aps_packages` int(5) NOT NULL default '0',
|
||||
`aps_packages_used` int(5) NOT NULL default '0',
|
||||
`perlenabled` tinyint(1) NOT NULL default '0',
|
||||
PRIMARY KEY (`customerid`),
|
||||
UNIQUE KEY `loginname` (`loginname`)
|
||||
) TYPE=MyISAM ;
|
||||
@@ -356,6 +357,7 @@ CREATE TABLE `panel_htaccess` (
|
||||
`error403path` varchar(255) NOT NULL default '',
|
||||
`error500path` varchar(255) NOT NULL default '',
|
||||
`error401path` varchar(255) NOT NULL default '',
|
||||
`options_cgi` tinyint(1) NOT NULL default '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=MyISAM ;
|
||||
|
||||
@@ -452,7 +454,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (18, 'system', 'vmail_homedir', '/var/customers/mail/');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (19, 'system', 'bindconf_directory', '/etc/bind/');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (20, 'system', 'bindreload_command', '/etc/init.d/bind9 reload');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.10');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.11');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (23, 'system', 'hostname', 'SERVERNAME');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (24, 'login', 'maxloginattempts', '3');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (25, 'login', 'deactivatetime', '900');
|
||||
@@ -573,7 +575,8 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (141, 'customredirect', 'default', '1');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (142, 'system', 'dns_createmailentry', '0');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (143, 'system', 'froxlordirectlyviahostname', '0');
|
||||
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (144, 'panel', 'password_regex', '');
|
||||
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (145, 'system', 'perl_path', '/usr/bin/perl');
|
||||
|
||||
# --------------------------------------------------------
|
||||
|
||||
|
||||
@@ -884,3 +884,49 @@ if(isFroxlorVersion('0.9.10-svn2'))
|
||||
|
||||
updateToVersion('0.9.10');
|
||||
}
|
||||
|
||||
if(isFroxlorVersion('0.9.10'))
|
||||
{
|
||||
showUpdateStep("Updating from 0.9.10 to 0.9.11-svn1", false);
|
||||
|
||||
$update_pwdregex = isset($_POST['update_pwdregex']) ? $_POST['update_pwdregex'] : '';
|
||||
|
||||
showUpdateStep("Adding new settings");
|
||||
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'password_regex', '".$db->escape($update_pwdregex)."');");
|
||||
lastStepStatus(0);
|
||||
|
||||
updateToVersion('0.9.11-svn1');
|
||||
}
|
||||
|
||||
if(isFroxlorVersion('0.9.11-svn1'))
|
||||
{
|
||||
showUpdateStep("Updating from 0.9.11-svn1 to 0.9.11-svn2", false);
|
||||
|
||||
showUpdateStep("Adding perl/CGI directory fields");
|
||||
$db->query("ALTER TABLE `".TABLE_PANEL_HTACCESS."` ADD `options_cgi` tinyint(1) NOT NULL default '0' AFTER `error401path`;");
|
||||
$db->query("ALTER TABLE `".TABLE_PANEL_CUSTOMERS."` ADD `perlenabled` tinyint(1) NOT NULL default '0' AFTER `aps_packages_used`;");
|
||||
lastStepStatus(0);
|
||||
|
||||
updateToVersion('0.9.11-svn2');
|
||||
}
|
||||
|
||||
if(isFroxlorVersion('0.9.11-svn2'))
|
||||
{
|
||||
showUpdateStep("Updating from 0.9.11-svn2 to 0.9.11-svn3", false);
|
||||
|
||||
$update_perlpath = isset($_POST['update_perlpath']) ? $_POST['update_perlpath'] : '/usr/bin/perl';
|
||||
|
||||
showUpdateStep("Adding new settings");
|
||||
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'perl_path', '".$db->escape($update_perlpath)."');");
|
||||
lastStepStatus(0);
|
||||
|
||||
updateToVersion('0.9.11-svn3');
|
||||
}
|
||||
|
||||
if(isFroxlorVersion('0.9.11-svn3'))
|
||||
{
|
||||
showUpdateStep("Updating from 0.9.11-svn3 to 0.9.11 final", false);
|
||||
lastStepStatus(0);
|
||||
|
||||
updateToVersion('0.9.11');
|
||||
}
|
||||
|
||||
@@ -220,4 +220,22 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version)
|
||||
$question.= makeyesno('update_directlyviahostname', '1', '0', '0');
|
||||
eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";");
|
||||
}
|
||||
|
||||
if(versionInUpdate($current_version, '0.9.11-svn1'))
|
||||
{
|
||||
$has_preconfig = true;
|
||||
$description = 'It is possible to enhance security with setting a regular expression to force your customers to enter more complex passwords.';
|
||||
$question = '<strong>Enter a regular expression to force a higher password complexity (leave empty for none):</strong> ';
|
||||
$question.= '<input type="text" class="text" name="update_pwdregex" value="" />';
|
||||
eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";");
|
||||
}
|
||||
|
||||
if(versionInUpdate($current_version, '0.9.11-svn3'))
|
||||
{
|
||||
$has_preconfig = true;
|
||||
$description = 'As Froxlor can now handle perl, you have to specify where the perl executable is (only if you\'re running lighttpd, else just leave empty).';
|
||||
$question = '<strong>Path to perl (default \'/usr/bin/perl\'):</strong> ';
|
||||
$question.= '<input type="text" class="text" name="update_perlpath" value="/usr/bin/perl" />';
|
||||
eval("\$return.=\"" . getTemplate("update/preconfigitem") . "\";");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -262,7 +262,7 @@ return Array(
|
||||
'apt-get install xinetd'
|
||||
),
|
||||
'files' => Array(
|
||||
'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
'etc_xinetd.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
),
|
||||
'restart' => Array(
|
||||
'/etc/init.d/xinetd restart'
|
||||
|
||||
@@ -310,7 +310,7 @@ milter_default_action = accept" >> /etc/postfix/main.cf'
|
||||
'emerge -av xinetd'
|
||||
),
|
||||
'files' => Array(
|
||||
'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
'etc_xinetd.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
),
|
||||
'restart' => Array(
|
||||
'/etc/init.d/xinetd restart'
|
||||
|
||||
@@ -287,7 +287,7 @@ return Array(
|
||||
'apt-get install xinetd'
|
||||
),
|
||||
'files' => Array(
|
||||
'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
'etc_xinetd.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
),
|
||||
'restart' => Array(
|
||||
'/etc/init.d/xinetd restart'
|
||||
|
||||
@@ -295,7 +295,7 @@ return Array(
|
||||
'apt-get install xinetd'
|
||||
),
|
||||
'files' => Array(
|
||||
'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
'etc_xinetd.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
),
|
||||
'restart' => Array(
|
||||
'/etc/init.d/xinetd restart'
|
||||
|
||||
@@ -296,7 +296,7 @@ return Array(
|
||||
'apt-get install xinetd'
|
||||
),
|
||||
'files' => Array(
|
||||
'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
'etc_xinetd.d_froxlor' => '/etc/xinetd.d/froxlor'
|
||||
),
|
||||
'restart' => Array(
|
||||
'/etc/init.d/xinetd restart'
|
||||
|
||||
40
lib/functions/filedir/function.maildirExists.php
Normal file
40
lib/functions/filedir/function.maildirExists.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 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 Froxlor team <team@froxlor.org> (2010-)
|
||||
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
|
||||
* @package Functions
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* check whether a maildir exists on the filesystem
|
||||
*
|
||||
* @param array $result all mail-info of customer
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function maildirExists($result = null)
|
||||
{
|
||||
global $settings;
|
||||
|
||||
if(is_array($result))
|
||||
{
|
||||
$loginname = getCustomerDetail($result['customerid'], 'loginname');
|
||||
if($loginname !== false) {
|
||||
$maildir = makeCorrectDir($settings['system']['vmail_homedir'] .'/'. $loginname .'/'. $result['email_full']);
|
||||
if(@file_exists($maildir)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
42
lib/functions/froxlor/function.customerHasPerlEnabled.php
Normal file
42
lib/functions/froxlor/function.customerHasPerlEnabled.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 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 Froxlor team <team@froxlor.org> (2010-)
|
||||
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
|
||||
* @package Functions
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Function customerHasPerlEnabled
|
||||
*
|
||||
* returns true or false whether perl is
|
||||
* enabled for the given customer
|
||||
*
|
||||
* @param int customer-id
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function customerHasPerlEnabled($cid = 0)
|
||||
{
|
||||
global $db;
|
||||
|
||||
if($cid > 0)
|
||||
{
|
||||
$result = $db->query_first("SELECT `perlenabled` FROM `".TABLE_PANEL_CUSTOMERS."` WHERE `customerid` = '".(int)$cid."'");
|
||||
if(is_array($result)
|
||||
&& isset($result['perlenabled'])
|
||||
) {
|
||||
return ($result['perlenabled'] == '1') ? true : false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -73,6 +73,17 @@ function inserttask($type, $param1 = '', $param2 = '', $param3 = '')
|
||||
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`) VALUES ("7", "' . $db->escape($data) . '")');
|
||||
$doupdate = true;
|
||||
}
|
||||
elseif($type == '8'
|
||||
&& $param1 != ''
|
||||
&& $param2 != '')
|
||||
{
|
||||
$data = Array();
|
||||
$data['loginname'] = $param1;
|
||||
$data['homedir'] = $param2;
|
||||
$data = serialize($data);
|
||||
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`) VALUES ("8", "' . $db->escape($data) . '")');
|
||||
$doupdate = true;
|
||||
}
|
||||
|
||||
if($doupdate === true
|
||||
&& (int)$settings['system']['realtime_port'] !== 0
|
||||
|
||||
@@ -44,7 +44,7 @@ function getRedirectCodesArray()
|
||||
*/
|
||||
function getRedirectCodes()
|
||||
{
|
||||
global $db;
|
||||
global $db, $lng;
|
||||
|
||||
$sql = "SELECT * FROM `".TABLE_PANEL_REDIRECTCODES."` WHERE `enabled` = '1' ORDER BY `id` ASC";
|
||||
$result = $db->query($sql);
|
||||
@@ -156,8 +156,9 @@ function updateRedirectOfDomain($domainid = 0, $redirect = false)
|
||||
|
||||
if($domainid > 0)
|
||||
{
|
||||
$db->query("UPDATE `".TABLE_PANEL_DOMAINREDIRECTS."`
|
||||
SET `rid` = '".(int)$redirect."'
|
||||
$db->query("DELETE FROM `".TABLE_PANEL_DOMAINREDIRECTS."`
|
||||
WHERE `did` = '".(int)$domainid."'");
|
||||
$db->query("INSERT INTO `".TABLE_PANEL_DOMAINREDIRECTS."`
|
||||
SET `rid` = '".(int)$redirect."', `did` = '".(int)$domainid."'");
|
||||
}
|
||||
}
|
||||
@@ -66,7 +66,7 @@ function ask_yesno($text, $yesfile, $params = array(), $targetname = '')
|
||||
exit;
|
||||
}
|
||||
|
||||
function ask_yesno_withcheckbox($text, $chk_text, $yesfile, $params = array(), $targetname = '')
|
||||
function ask_yesno_withcheckbox($text, $chk_text, $yesfile, $params = array(), $targetname = '', $show_checkbox = true)
|
||||
{
|
||||
global $userinfo, $db, $s, $header, $footer, $lng;
|
||||
|
||||
@@ -89,8 +89,12 @@ function ask_yesno_withcheckbox($text, $chk_text, $yesfile, $params = array(), $
|
||||
{
|
||||
$chk_text = $lng['question'][$chk_text];
|
||||
}
|
||||
|
||||
$checkbox = makecheckbox('delete_userfiles', $chk_text, '1', false, '0', true, true);
|
||||
|
||||
if ($show_checkbox) {
|
||||
$checkbox = makecheckbox('delete_userfiles', $chk_text, '1', false, '0', true, true);
|
||||
} else {
|
||||
$checkbox = '<input type="hidden" name="delete_userfiles" value="0" />' . "\n";;
|
||||
}
|
||||
|
||||
$text = strtr($text, array('%s' => $targetname));
|
||||
eval("echo \"" . getTemplate('misc/question_yesno_checkbox', '1') . "\";");
|
||||
|
||||
32
lib/functions/validate/function.checkValidRegEx.php
Normal file
32
lib/functions/validate/function.checkValidRegEx.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 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 Froxlor team <team@froxlor.org> (2010-)
|
||||
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
|
||||
* @package Functions
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* validates a given regex
|
||||
*
|
||||
* @param string $regex regex to validate
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
function checkValidRegEx($regex = null)
|
||||
{
|
||||
if($regex == null || $regex == '') {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -39,5 +39,14 @@ function validatePassword($password = null)
|
||||
);
|
||||
}
|
||||
|
||||
if ($settings['panel']['password_regex'] != '') {
|
||||
$password = validate(
|
||||
$password,
|
||||
$settings['panel']['password_regex'],
|
||||
$settings['panel']['password_regex'],
|
||||
'notrequiredpasswordcomplexity'
|
||||
);
|
||||
}
|
||||
|
||||
return $password;
|
||||
}
|
||||
|
||||
@@ -430,7 +430,7 @@ if($page == '')
|
||||
/**
|
||||
* Initialize the mailingsystem
|
||||
*/
|
||||
$mail = new PHPMailer();
|
||||
$mail = new PHPMailer(true);
|
||||
if(PHPMailer::ValidateAddress($settings['panel']['adminmail']) !== false)
|
||||
{
|
||||
// set return-to address and custom sender-name, see #76
|
||||
|
||||
@@ -72,7 +72,7 @@ define('PACKAGE_ENABLED', 2);
|
||||
|
||||
// VERSION INFO
|
||||
|
||||
$version = '0.9.10';
|
||||
$version = '0.9.11';
|
||||
$dbversion = '2';
|
||||
$branding = '';
|
||||
|
||||
|
||||
@@ -257,6 +257,7 @@ $lng['question']['mysql_reallydelete'] = 'Do you really want to delete the datab
|
||||
$lng['question']['admin_configs_reallyrebuild'] = 'Do you really want to rebuild all config files?';
|
||||
$lng['question']['admin_customer_alsoremovefiles'] = 'Remove user files too?';
|
||||
$lng['question']['admin_customer_alsoremovemail'] = 'Completely remove email data from filesystem?';
|
||||
$lng['question']['admin_customer_alsoremoveftphomedir'] = 'Also remove FTP-user homedir?';
|
||||
|
||||
/**
|
||||
* Mails
|
||||
@@ -1437,4 +1438,17 @@ $lng['admin']['webserver_group'] = 'Webserver group-name';
|
||||
// ADDED IN FROXLOR 0.9.10
|
||||
$lng['serversettings']['froxlordirectlyviahostname'] = 'Access Froxlor directly via the hostname';
|
||||
|
||||
// ADDED IN FROXLOR 0.9.11-svn1
|
||||
$lng['serversettings']['panel_password_regex']['title'] = 'Regular expression for passwords';
|
||||
$lng['serversettings']['panel_password_regex']['description'] = 'Here you can set a regular expression for passwords-complexity.<br />Empty = no specific requirement<br />(<a href="http://wiki.froxlor.org/doc/password-regex-examples">regex help/examples</a>)';
|
||||
$lng['error']['notrequiredpasswordcomplexity'] = 'The specified password-complexity was not satisfied (regex: %s)';
|
||||
|
||||
// ADDED IN FROXLOR 0.9.11-svn2
|
||||
$lng['extras']['execute_perl'] = 'Execute perl/CGI';
|
||||
$lng['admin']['perlenabled'] = 'Perl enabled';
|
||||
|
||||
// ADDED IN FROXLOR 0.9.11-svn3
|
||||
$lng['serversettings']['perl_path']['title'] = 'Path zu perl';
|
||||
$lng['serversettings']['perl_path']['description'] = 'Only relevant if you use lighttpd. Default is /usr/bin/perl';
|
||||
|
||||
?>
|
||||
|
||||
@@ -257,6 +257,7 @@ $lng['question']['mysql_reallydelete'] = 'Wollen Sie die Datenbank %s wirklich l
|
||||
$lng['question']['admin_configs_reallyrebuild'] = 'Wollen Sie wirklich alle Konfigurationsdateien neu erstellen lassen?';
|
||||
$lng['question']['admin_customer_alsoremovefiles'] = 'Auch Kunden-Daten löschen?';
|
||||
$lng['question']['admin_customer_alsoremovemail'] = 'E-Mail Daten auf dem Dateisystem löschen?';
|
||||
$lng['question']['admin_customer_alsoremoveftphomedir'] = 'Heimatverzeichnis des FTP-Benutzers löschen?';
|
||||
|
||||
/**
|
||||
* Mails
|
||||
@@ -1420,4 +1421,17 @@ $lng['admin']['webserver_group'] = 'Gruppenname Webserver';
|
||||
// ADDED IN FROXLOR 0.9.10
|
||||
$lng['serversettings']['froxlordirectlyviahostname'] = 'Froxlor direkt über den Hostnamen erreichbar machen';
|
||||
|
||||
// ADDED IN FROXLOR 0.9.11-svn1
|
||||
$lng['serversettings']['panel_password_regex']['title'] = 'Regulärer Ausdruck für Passwörter';
|
||||
$lng['serversettings']['panel_password_regex']['description'] = 'Hier können Sie einen regulären Ausdruck für Passwort-Komplexität festlegen.<br />Leer = keine bestimmten Anforderungen<br />(<a href="http://wiki.froxlor.org/doc/password-regex-examples">RegEx Hilfe/Beispiele</a>)';
|
||||
$lng['error']['notrequiredpasswordcomplexity'] = 'Die vorgegebene Passwort-Komplexität wurde nicht erfüllt (Regex: %s)';
|
||||
|
||||
// ADDED IN FROXLOR 0.9.11-svn2
|
||||
$lng['extras']['execute_perl'] = 'Perl/CGI ausführen';
|
||||
$lng['admin']['perlenabled'] = 'Perl verfügbar';
|
||||
|
||||
// ADDED IN FROXLOR 0.9.11-svn3
|
||||
$lng['serversettings']['perl_path']['title'] = 'Pfad zu Perl';
|
||||
$lng['serversettings']['perl_path']['description'] = 'Nur nötig für lighttpd-Nutzer. Standard ist /usr/bin/perl';
|
||||
|
||||
?>
|
||||
|
||||
@@ -803,19 +803,41 @@ class apache
|
||||
|
||||
if(is_dir($row_diroptions['path']))
|
||||
{
|
||||
$cperlenabled = customerHasPerlEnabled($row_diroptions['customerid']);
|
||||
|
||||
$this->diroptions_data[$diroptions_filename].= '<Directory "' . $row_diroptions['path'] . '">' . "\n";
|
||||
|
||||
if(isset($row_diroptions['options_indexes'])
|
||||
&& $row_diroptions['options_indexes'] == '1')
|
||||
{
|
||||
$this->diroptions_data[$diroptions_filename].= ' Options +Indexes' . "\n";
|
||||
$this->diroptions_data[$diroptions_filename].= ' Options +Indexes';
|
||||
|
||||
// add perl options if enabled
|
||||
if($cperlenabled
|
||||
&& isset($row_diroptions['options_cgi'])
|
||||
&& $row_diroptions['options_cgi'] == '1')
|
||||
{
|
||||
$this->diroptions_data[$diroptions_filename].= ' ExecCGI -MultiViews +SymLinksIfOwnerMatch'."\n";
|
||||
} else {
|
||||
$this->diroptions_data[$diroptions_filename].= "\n";
|
||||
}
|
||||
fwrite($this->debugHandler, ' cron_tasks: Task3 - Setting Options +Indexes' . "\n");
|
||||
}
|
||||
|
||||
if(isset($row_diroptions['options_indexes'])
|
||||
&& $row_diroptions['options_indexes'] == '0')
|
||||
{
|
||||
$this->diroptions_data[$diroptions_filename].= ' Options -Indexes' . "\n";
|
||||
$this->diroptions_data[$diroptions_filename].= ' Options -Indexes';
|
||||
|
||||
// add perl options if enabled
|
||||
if($cperlenabled
|
||||
&& isset($row_diroptions['options_cgi'])
|
||||
&& $row_diroptions['options_cgi'] == '1')
|
||||
{
|
||||
$this->diroptions_data[$diroptions_filename].= ' ExecCGI -MultiViews +SymLinksIfOwnerMatch'."\n";
|
||||
} else {
|
||||
$this->diroptions_data[$diroptions_filename].= "\n";
|
||||
}
|
||||
fwrite($this->debugHandler, ' cron_tasks: Task3 - Setting Options -Indexes' . "\n");
|
||||
}
|
||||
|
||||
@@ -837,6 +859,17 @@ class apache
|
||||
$this->diroptions_data[$diroptions_filename].= ' ErrorDocument 500 ' . $row_diroptions['error500path'] . "\n";
|
||||
}
|
||||
|
||||
if($cperlenabled
|
||||
&& isset($row_diroptions['options_cgi'])
|
||||
&& $row_diroptions['options_cgi'] == '1')
|
||||
{
|
||||
$this->diroptions_data[$diroptions_filename].= ' AllowOverride None' . "\n";
|
||||
$this->diroptions_data[$diroptions_filename].= ' AddHandler cgi-script .cgi .pl' . "\n";
|
||||
$this->diroptions_data[$diroptions_filename].= ' Order allow,deny' . "\n";
|
||||
$this->diroptions_data[$diroptions_filename].= ' Allow from all' . "\n";
|
||||
fwrite($this->debugHandler, ' cron_tasks: Task3 - Enabling perl execution' . "\n");
|
||||
}
|
||||
|
||||
if(count($row_diroptions['htpasswds']) > 0)
|
||||
{
|
||||
$htpasswd_filename = makeCorrectFile($this->settings['system']['apacheconf_htpasswddir'] . '/' . $row_diroptions['customerid'] . '-' . md5($row_diroptions['path']) . '.htpasswd');
|
||||
|
||||
@@ -97,6 +97,7 @@ class apache_fcgid extends apache
|
||||
$starter_file.= "# starter created/changed on " . date("Y.m.d H:i:s") . " for domain '" . $domain['domain'] . "' with id #" . $domain['id'] . " from php template '" . $phpconfig['description'] . "' with id #" . $phpconfig['id'] . "\n";
|
||||
$starter_file.= "# Do not change anything in this file, it will be overwritten by the Froxlor Cronjob!\n";
|
||||
$starter_file.= "#\n\n";
|
||||
$starter_file.= "umask 022\n";
|
||||
$starter_file.= "PHPRC=" . escapeshellarg($configdir) . "\n";
|
||||
$starter_file.= "export PHPRC\n";
|
||||
|
||||
|
||||
@@ -522,7 +522,9 @@ class lighttpd
|
||||
mkDirWithCorrectOwnership($domain['documentroot'], $row['path'], $domain['guid'], $domain['guid']);
|
||||
|
||||
// We need to remove the last slash, otherwise the regex wouldn't work
|
||||
$path = substr($path, 0, -1);
|
||||
if($row['path'] != $domain['documentroot']) {
|
||||
$path = substr($path, 0, -1);
|
||||
}
|
||||
$path_options.= ' $HTTP["url"] =~ "^' . $path . '($|/)" {' . "\n";
|
||||
$path_options.= "\t" . 'dir-listing.activate = "enable"' . "\n";
|
||||
$path_options.= ' }' . "\n\n";
|
||||
@@ -531,6 +533,24 @@ class lighttpd
|
||||
{
|
||||
$path_options = $error_string;
|
||||
}
|
||||
|
||||
if(customerHasPerlEnabled($domain['customerid'])
|
||||
&& $row['options_cgi'] != '0')
|
||||
{
|
||||
$path = makeCorrectDir(substr($row['path'], strlen($domain['documentroot']) - 1));
|
||||
mkDirWithCorrectOwnership($domain['documentroot'], $row['path'], $domain['guid'], $domain['guid']);
|
||||
|
||||
// We need to remove the last slash, otherwise the regex wouldn't work
|
||||
if($row['path'] != $domain['documentroot']) {
|
||||
$path = substr($path, 0, -1);
|
||||
}
|
||||
$path_options.= ' $HTTP["url"] =~ "^' . $path . '($|/)" {' . "\n";
|
||||
$path_options.= "\t" . 'cgi.assign = (' . "\n";
|
||||
$path_options.= "\t\t" . '".pl" => "'.makeCorrectFile($this->settings['system']['perl_path']).'",' . "\n";
|
||||
$path_options.= "\t\t" . '".cgi" => "'.makeCorrectFile($this->settings['system']['perl_path']).'"' . "\n";
|
||||
$path_options.= "\t" . ')' . "\n";
|
||||
$path_options.= ' }' . "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
return $path_options;
|
||||
|
||||
@@ -121,6 +121,7 @@ class lighttpd_fcgid extends lighttpd
|
||||
$starter_file.= "# starter created/changed on " . date("Y.m.d H:i:s") . " for domain '" . $domain['domain'] . "' with id #" . $domain['id'] . " from php template '" . $phpconfig['description'] . "' with id #" . $phpconfig['id'] . "\n";
|
||||
$starter_file.= "# Do not change anything in this file, it will be overwritten by the Froxlor Cronjob!\n";
|
||||
$starter_file.= "#\n\n";
|
||||
$starter_file.= "umask 022\n";
|
||||
$starter_file.= "PHPRC=" . escapeshellarg($configdir) . "\n";
|
||||
$starter_file.= "export PHPRC\n";
|
||||
|
||||
|
||||
@@ -298,6 +298,37 @@ $awstatsclean['headerold']) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TYPE=8 Customer deleted a ftp account and wants the homedir to be deleted on the filesystem
|
||||
* refs #293
|
||||
*/
|
||||
elseif ($row['type'] == '8')
|
||||
{
|
||||
fwrite($debugHandler, ' cron_tasks: Task8 started - deleting customer ftp homedir' . "\n");
|
||||
$cronlog->logAction(CRON_ACTION, LOG_INFO, 'Task8 started - deleting customer ftp homedir');
|
||||
|
||||
if(is_array($row['data']))
|
||||
{
|
||||
if(isset($row['data']['loginname'])
|
||||
&& isset($row['data']['homedir'])
|
||||
) {
|
||||
/*
|
||||
* remove specific homedir
|
||||
*/
|
||||
$ftphomedir = makeCorrectDir($row['data']['homedir']);
|
||||
$customerdocroot = makeCorrectDir($settings['system']['documentroot_prefix'].'/'.$row['data']['loginname'].'/');
|
||||
|
||||
if($ftphomedir != '/'
|
||||
&& $ftphomedir != $settings['system']['documentroot_prefix']
|
||||
&& $ftphomedir != $customerdocroot
|
||||
) {
|
||||
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Running: rm -rf ' . escapeshellarg($ftphomedir));
|
||||
safe_exec('rm -rf '.escapeshellarg($ftphomedir));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($db->num_rows($result_tasks) != 0)
|
||||
|
||||
@@ -148,6 +148,10 @@ $header
|
||||
<td class="main_field_name">{$lng['admin']['phpenabled']}?</td>
|
||||
<td class="main_field_display" nowrap="nowrap">$phpenabled</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="main_field_name">{$lng['admin']['perlenabled']}?</td>
|
||||
<td class="main_field_display" nowrap="nowrap">$perlenabled</td>
|
||||
</tr>
|
||||
<if $settings['aps']['aps_active'] == '1'>
|
||||
<tr>
|
||||
<td class="main_field_name">{$lng['aps']['numberofapspackages']}:</td>
|
||||
|
||||
@@ -153,6 +153,10 @@ $header
|
||||
<td class="main_field_name">{$lng['admin']['phpenabled']}?</td>
|
||||
<td class="main_field_display" nowrap="nowrap">$phpenabled</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="main_field_name">{$lng['admin']['perlenabled']}?</td>
|
||||
<td class="main_field_display" nowrap="nowrap">$perlenabled</td>
|
||||
</tr>
|
||||
<if $settings['aps']['aps_active'] == '1'>
|
||||
<tr>
|
||||
<td class="main_field_name">{$lng['aps']['numberofapspackages']}:</td>
|
||||
|
||||
@@ -5,7 +5,7 @@ $header
|
||||
<table cellpadding="5" cellspacing="0" border="0" align="center" class="maintable">
|
||||
<tr>
|
||||
<td class="maintitle_search_left"><b><img src="images/title.gif" alt="" /> {$lng['menue']['extras']['pathoptions']}</b></td>
|
||||
<td class="maintitle_search_right" colspan="6">{$searchcode}</td>
|
||||
<td class="maintitle_search_right" colspan="<if $cperlenabled == 1 >7<else>6</if>">{$searchcode}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="field_display_border_left">{$lng['panel']['path']} {$arrowcode['path']}</td>
|
||||
@@ -13,16 +13,17 @@ $header
|
||||
<td class="field_display">{$lng['extras']['error404path']} {$arrowcode['error404path']}</td>
|
||||
<td class="field_display">{$lng['extras']['error403path']} {$arrowcode['error403path']}</td>
|
||||
<td class="field_display">{$lng['extras']['error500path']} {$arrowcode['error500path']}</td>
|
||||
<if $cperlenabled == 1 ><td class="field_display">{$lng['extras']['execute_perl']} {$arrowcode['options_cgi']}</td></if>
|
||||
<td class="field_display_search" colspan="2">{$sortcode}</td>
|
||||
</tr>
|
||||
$htaccess
|
||||
<if $pagingcode != ''>
|
||||
<tr>
|
||||
<td class="field_display_border_left" colspan="7" style=" text-align: center; ">{$pagingcode}</td>
|
||||
<td class="field_display_border_left" colspan="<if $cperlenabled == 1 >8<else>7</if>" style=" text-align: center; ">{$pagingcode}</td>
|
||||
</tr>
|
||||
</if>
|
||||
<tr>
|
||||
<td class="field_display_border_left" colspan="7"><a href="$filename?page=htaccess&action=add&s=$s">{$lng['extras']['pathoptions_add']}</a></td>
|
||||
<td class="field_display_border_left" colspan="<if $cperlenabled == 1 >8<else>7</if>"><a href="$filename?page=htaccess&action=add&s=$s">{$lng['extras']['pathoptions_add']}</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
@@ -34,6 +34,12 @@ $header
|
||||
</td>
|
||||
<td class="main_field_display" nowrap="nowrap"><input type="text" class="text" name="error500path" value="" size="30" maxlength="255" /></td>
|
||||
</tr>
|
||||
<if $cperlenabled == 1 >
|
||||
<tr>
|
||||
<td class="main_field_name"><b>{$lng['extras']['execute_perl']}:</b></td>
|
||||
<td class="main_field_display" nowrap="nowrap">$options_cgi</td>
|
||||
</tr>
|
||||
</if>
|
||||
<tr>
|
||||
<td class="main_field_confirm" colspan="2"><input type="hidden" name="send" value="send" /><input type="submit" class="bottom" value="{$lng['extras']['pathoptions_add']}" /></td>
|
||||
</tr>
|
||||
|
||||
@@ -32,6 +32,12 @@ $header
|
||||
</td>
|
||||
<td class="main_field_display" nowrap="nowrap"><input type="text" class="text" name="error500path" value="{$result['error500path']}" size="30" maxlength="255" /></td>
|
||||
</tr>
|
||||
<if $cperlenabled == 1 >
|
||||
<tr>
|
||||
<td class="main_field_name"><b>{$lng['extras']['execute_perl']}:</b></td>
|
||||
<td class="main_field_display" nowrap="nowrap">$options_cgi</td>
|
||||
</tr>
|
||||
</if>
|
||||
<tr>
|
||||
<td class="main_field_confirm" colspan="2"><input type="hidden" name="send" value="send" /><input type="submit" class="bottom" value="{$lng['extras']['pathoptions_edit']}" /></td>
|
||||
</tr>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<td class="field_name">{$row['error404path']}</td>
|
||||
<td class="field_name">{$row['error403path']}</td>
|
||||
<td class="field_name">{$row['error500path']}</td>
|
||||
<if $cperlenabled == 1 ><td class="field_name">{$row['options_cgi']}</td></if>
|
||||
<td class="field_name"><a href="$filename?page=htaccess&action=edit&id={$row['id']}&s=$s">{$lng['panel']['edit']}</a></td>
|
||||
<td class="field_name"><a href="$filename?page=htaccess&action=delete&id={$row['id']}&s=$s">{$lng['panel']['delete']}</a></td>
|
||||
</tr>
|
||||
|
||||
@@ -12,6 +12,7 @@ server.modules = (
|
||||
"mod_access",
|
||||
"mod_auth",
|
||||
"mod_fastcgi",
|
||||
"mod_cgi",
|
||||
"mod_accesslog"
|
||||
)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ server.modules = (
|
||||
"mod_access",
|
||||
"mod_auth",
|
||||
"mod_fastcgi",
|
||||
"mod_cgi",
|
||||
"mod_accesslog"
|
||||
)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ server.modules = (
|
||||
"mod_access",
|
||||
"mod_auth",
|
||||
"mod_fastcgi",
|
||||
"mod_cgi",
|
||||
"mod_accesslog"
|
||||
)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ server.modules = (
|
||||
"mod_access",
|
||||
"mod_auth",
|
||||
"mod_fastcgi",
|
||||
"mod_cgi",
|
||||
"mod_accesslog"
|
||||
)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ server.modules = (
|
||||
"mod_access",
|
||||
"mod_auth",
|
||||
"mod_fastcgi",
|
||||
"mod_cgi",
|
||||
"mod_accesslog"
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user