Merging d00ps hell lot of bugfixes

This commit is contained in:
Florian Aders (EleRas)
2010-01-20 16:51:33 +00:00
40 changed files with 1208 additions and 141 deletions

124
TODO Normal file
View File

@@ -0,0 +1,124 @@
9999999 Write a complete statement about what froxlor is and why we do this (atari)
FIXED 0001282 Homedirs von Dovecot identisch
0001274 Option to mark a Domain as Subdomain possible or not
FIXED 0001283 SysCP creating broken lighttpd config files
FIXED 0001213 APS class_apsinstaller.php on line 510 - error installing different apps
FIXED 0001272 Default Config for libnss incomplete (debian/lenny)
FIXED 0001281 Wrong open_basedir directive
0001280 deb packet 1.4.2.1-2 fu*ked
FIXED 0001279 incorrect usage of escapeshellcmd
FIXED 0001269 AWStats RewriteRule is wrong
WONFIX 0001278 Customer and domain directories are not created
FIXED 0001277 Apache Redirect => permanent 301
FIXED 0001276 Bind Zones Not Updated on Nameserver Change
0001275 Setting up Traffic limit is limited to 999 GB
0001273 APS-Installer
0001271 cant install the package magento
0001270 xinet reltime update mistake
0001268 SysCP Funktion: aktualisierung in Real-Time
0001041 Customer should have access to his webserver logs.
0001267 Domain-Aliases also create a HOST-entry
0001266 Lighttpd has a internal limit of regex-hits which limits max amount of domain-aliases
FIXED 0001263 Cosmettic Change
WONTFIX 0001056 Need extra payment methods
WONTFIX 0001262 Currency type modification.
WONTFIX 0001257 Fee is recalculated with current contract data although interval is over
FIXED 0001255 Wrong path to usage statistics under domain settings
0001261 No e-mail on 90% traffic
WONTFIX 0001260 2x F5 causes bigger fonts
WONTFIX 0001259 contract-changes optional with cron to the end of the interval
WONTFIX 0001258 Make invoices immediately
0001120 Missing function to calculate the mail traffic
0001236 the cron doesnt delete user directories
0001244 customer view too wide for 1024x768 resolutions
0001229 subdomains and Own vHost-Settings
0001254 Installation no next button
FIXED 0001253 admin_customers.php line 803 / 804 contain the same
0001252 Backup Cronjob for Customers
0001250 Apache redirect to Umlautdomains does not work
0001251 possibility to manage WebDAV config in SysCP
0001249 SysCP SVN(!) settings loader doesn't load some settings
WONTFIX 0001248 blog.syscp.org
0001042 Webalizer dir should not be deletable
0001247 tab order problems at email forward mask
FIXED 0001246 wrong variable assigned in /templates/admin/customers/customers_add.tpl
0001245 Password Protect /awstats/ when using awstats and fcgid
0001156 Repairing use of awstats and awstats-icons with fcgi
0001243 Wrong uid and gid for php-fcgi-starter
0001242 When email qouta is enabled, you cannot add more resources to a client.
0001241 Patch for facilate customizing syscp
0001240 Wrong php.ini for subdomains with fastCGI
0001239 awstats configs get cluttered up after domain deletion
0001228 Domain deletion fails
0001233 Display errors when amount of FTP or Mail Traffic is larger than HTTP traffic
WONTFIX 0001227 Error on fixing invoices with credit notes
0001122 Field members of table ftp_groups not updated correctly when customer deletes ftp user
FIXED 0001215 php.ini: open_basedir error
0001224 APS installer not installing the aps applications properly, such as WordPress and WebCalender
0001223 Postfix proposed SQL-query in mysql-virtual_alias_maps.cf: use TRIM()
0001221 syscp xinet.d - no need to edit /etc/services
0001217 SysCP Realtime Support
0001209 APS crashs when installing magento
0001017 Proftpd - Quota should be added
0001016 Pureftpd - quota should be added
0001206 crontabs not terminating
0001210 Add start- and endtime to autoresponder
0001212 retain form input
0001185 Autoreponder - send mails via sendmail to set correct Return-Path header
0001211 Generated MySQL username too long
0001208 HTML Tags in Support Tickets
0001207 FTP Passw<73>rter mit Umlauten
0001201 Virtualusers conflict with local users when using libnss-mysql
0001204 php5-suhosin
0001203 Add check for PHP version and required PHP modules in install script
0001198 More online help wanted
0001039 Additional text field for infos in customers "Contact Data"
WONTFIX 0001187 additional Invoices
WONTFIX 0001059 Billing - Create contract - Filename should contain customername
FIXED 0001013 lighttpd - every customer should have his own php.ini
0001189 Autoresponder: support for multiline "From:" headers
0001113 realtime functionality broken
0001186 subdomains and php configuration
0001112 customers should be able to create custom cronjobs
0001079 Protected dir only works only after a force-reload on lighttpd
0001080 host of third level gets overridden by second-level when wwwserveralias is not set on lighttpd
0001159 serveral errors for lighttpd
0001181 lighttpd cronjob config for subdomains is empty
0001034 Cron-Tasks: apache-logfiles directory
0001136 Configuration of "dead" mail adresses
0001176 libnss-mysql and conflicting usernames/groups
0001154 Wrong configuration set with AWstats an fcgi
0001150 Wrong configuration of awstats
0001083 awstats.model.conf.syscp should include awstats.conf
0001152 apache certificate is not generated
0001151 When cronjob generates new dkim files a mail is sent to root
0001149 Create a Configuration-Option for SPF Records in Zonefiles
0001148 Show info for inactive modifications
0001005 Force user to add POP3 Account before he can add e-mail adresses
0001142 Default index.html should be placed in a sub-directory of a domain.
0001140 Replace variables in defaut_vhost config
0001138 old db-data is lost when mysqldump is not within open_basedir
0001135 dkim refers to non-existing domainkey entry in DNS zone file.
0001134 Allow selection of a default apache page / provide access to syscp
0001133 Default Configuration doesn't allow Exim4 to forward Mails to the outside world
0001128 More targets for "Write a message" tool
0001131 Add FreeBSD configuration files to the base tarball.
0001130 Wrong number format in e.g. traffic display.
0001129 Allow selection of automatic creation of a webmail.<domain>.<tld>, phpmyadmin. ..., webftp. ...
0001127 Versioning of configuration templates.
0001116 Please add tooltips to adminCP
0001114 Password query for Awstats statistics
0001111 add login for e-mail and ftp users to let them change their own settings
0001109 no mail traffic is shown and calculated without third party module
0001104 Listen Configuration should contain a warning for debian
0001101 Default mail qouta - possibillity to set new accounts to amount of webspace
WONTFIX 0001098 Possibillity to dissable "Catchall" for mails
0001095 lighttpd - redirection - "/" slash is added to end of url
0001084 Add select box to change special logfile setting on domain edit
0001051 include_shell issue in lighttpd 1.4.20
0001058 Add id/class attributs in <img> tag (left navigation)
0001043 When creating customer it should also be possible to add domains (merge customer & domain menu)
0001035 PHP-Error-Log | Adminpanel & CronTask
WONTFIX 0001033 Cron-Tasks: creating of php.ini
0001010 Send info mail to customer if webspace is exceeded
0001004 Ressources / Domains - Standard subdomains should be separrated from normal Domains

View File

@@ -19,12 +19,18 @@ return array(
'groups' => array(
'version' => array(
'fields' => array(
'system_dbversion' => array(
'settinggroup' => 'system',
'varname' => 'dbversion',
'panel_version' => array(
'settinggroup' => 'panel',
'varname' => 'version',
'type' => 'hidden',
'default' => '',
),
'panel_frontend' => array(
'settinggroup' => 'panel',
'varname' => 'frontend',
'type' => 'hidden',
'default' => 'syscp',
),
'system_last_tasks_run' => array(
'settinggroup' => 'system',
'varname' => 'last_tasks_run',
@@ -61,4 +67,4 @@ return array(
),
);
?>
?>

View File

@@ -45,7 +45,7 @@ return array(
'string_regexp' => '/^(([a-z0-9\-\._]+, ?)*[a-z0-9\-\._]+)?$/i',
'string_emptyallowed' => true,
'default' => '',
'save_method' => 'storeSettingField',
'save_method' => 'storeSettingFieldInsertBindTask',
),
'system_mxservers' => array(
'label' => $lng['serversettings']['mxservers'],

View File

@@ -540,7 +540,7 @@ if(isset($_POST['installstep'])
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = 'admin@" . $db->escape($servername) . "' WHERE `settinggroup` = 'panel' AND `varname` = 'adminmail'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($serverip) . "' WHERE `settinggroup` = 'system' AND `varname` = 'ipaddress'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($servername) . "' WHERE `settinggroup` = 'system' AND `varname` = 'hostname'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($dbversion) . "' WHERE `settinggroup` = 'system' AND `varname` = 'dbversion'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($version) . "' WHERE `settinggroup` = 'panel' AND `varname` = 'version'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($languages[$language]) . "' WHERE `settinggroup` = 'panel' AND `varname` = 'standardlanguage'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($mysql_access_host) . "' WHERE `settinggroup` = 'system' AND `varname` = 'mysql_access_host'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($webserver) . "' WHERE `settinggroup` = 'system' AND `varname` = 'webserver'");

View File

@@ -451,7 +451,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, 'system', 'dbversion', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9');
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');
@@ -841,7 +841,7 @@ CREATE TABLE `panel_phpconfigs` (
# Dumping data for table `panel_phpconfigs`
#
INSERT INTO `panel_phpconfigs` (`id`, `description`, `binary`, `file_extensions`, `mod_fcgid_starter`, `mod_fcgid_maxrequests`, `phpsettings`) VALUES(1, 'Default Config', '/usr/bin/php-cgi', 'php', '-1', '-1', 'short_open_tag = On\r\nasp_tags = Off\r\nprecision = 14\r\noutput_buffering = 4096\r\nallow_call_time_pass_reference = Off\r\nsafe_mode = {SAFE_MODE}\r\nsafe_mode_gid = Off\r\nsafe_mode_include_dir = "{PEAR_DIR}"\r\nsafe_mode_allowed_env_vars = PHP_\r\nsafe_mode_protected_env_vars = LD_LIBRARY_PATH\r\nopen_basedir = "{OPEN_BASEDIR}"\r\ndisable_functions = exec,passthru,shell_exec,system,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate\r\ndisable_classes =\r\nexpose_php = Off\r\nmax_execution_time = 30\r\nmax_input_time = 60\r\nmemory_limit = 16M\r\npost_max_size = 16M\r\nerror_reporting = E_ALL & ~E_NOTICE\r\ndisplay_errors = On\r\ndisplay_startup_errors = Off\r\nlog_errors = On\r\nlog_errors_max_len = 1024\r\nignore_repeated_errors = Off\r\nignore_repeated_source = Off\r\nreport_memleaks = On\r\ntrack_errors = Off\r\nhtml_errors = Off\r\nvariables_order = "GPCS"\r\nregister_globals = Off\r\nregister_argc_argv = Off\r\ngpc_order = "GPC"\r\nmagic_quotes_gpc = Off\r\nmagic_quotes_runtime = Off\r\nmagic_quotes_sybase = Off\r\ninclude_path = ".:{PEAR_DIR}"\r\nenable_dl = Off\r\nfile_uploads = On\r\nupload_tmp_dir = "{TMP_DIR}"\r\nupload_max_filesize = 32M\r\nallow_url_fopen = Off\r\nsendmail_path = "/usr/sbin/sendmail -t -f {CUSTOMER_EMAIL}"\r\nsession.save_handler = files\r\nsession.save_path = "{TMP_DIR}"\r\nsession.use_cookies = 1\r\nsession.name = PHPSESSID\r\nsession.auto_start = 0\r\nsession.cookie_lifetime = 0\r\nsession.cookie_path = /\r\nsession.cookie_domain =\r\nsession.serialize_handler = php\r\nsession.gc_probability = 1\r\nsession.gc_divisor = 1000\r\nsession.gc_maxlifetime = 1440\r\nsession.bug_compat_42 = 0\r\nsession.bug_compat_warn = 1\r\nsession.referer_check =\r\nsession.entropy_length = 16\r\nsession.entropy_file = /dev/urandom\r\nsession.cache_limiter = nocache\r\nsession.cache_expire = 180\r\nsession.use_trans_sid = 0\r\nsuhosin.simulation = Off\r\nsuhosin.mail.protect = 1\r\n');
INSERT INTO `panel_phpconfigs` (`id`, `description`, `binary`, `file_extensions`, `mod_fcgid_starter`, `mod_fcgid_maxrequests`, `phpsettings`) VALUES(1, 'Default Config', '/usr/bin/php-cgi', 'php', '-1', '-1', 'short_open_tag = On\r\nasp_tags = Off\r\nprecision = 14\r\noutput_buffering = 4096\r\nallow_call_time_pass_reference = Off\r\nsafe_mode = {SAFE_MODE}\r\nsafe_mode_gid = Off\r\nsafe_mode_include_dir = "{PEAR_DIR}"\r\nsafe_mode_allowed_env_vars = PHP_\r\nsafe_mode_protected_env_vars = LD_LIBRARY_PATH\r\n{OPEN_BASEDIR_C}open_basedir = "{OPEN_BASEDIR}"\r\ndisable_functions = exec,passthru,shell_exec,system,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate\r\ndisable_classes =\r\nexpose_php = Off\r\nmax_execution_time = 30\r\nmax_input_time = 60\r\nmemory_limit = 16M\r\npost_max_size = 16M\r\nerror_reporting = E_ALL & ~E_NOTICE\r\ndisplay_errors = On\r\ndisplay_startup_errors = Off\r\nlog_errors = On\r\nlog_errors_max_len = 1024\r\nignore_repeated_errors = Off\r\nignore_repeated_source = Off\r\nreport_memleaks = On\r\ntrack_errors = Off\r\nhtml_errors = Off\r\nvariables_order = "GPCS"\r\nregister_globals = Off\r\nregister_argc_argv = Off\r\ngpc_order = "GPC"\r\nmagic_quotes_gpc = Off\r\nmagic_quotes_runtime = Off\r\nmagic_quotes_sybase = Off\r\ninclude_path = ".:{PEAR_DIR}"\r\nenable_dl = Off\r\nfile_uploads = On\r\nupload_tmp_dir = "{TMP_DIR}"\r\nupload_max_filesize = 32M\r\nallow_url_fopen = Off\r\nsendmail_path = "/usr/sbin/sendmail -t -f {CUSTOMER_EMAIL}"\r\nsession.save_handler = files\r\nsession.save_path = "{TMP_DIR}"\r\nsession.use_cookies = 1\r\nsession.name = PHPSESSID\r\nsession.auto_start = 0\r\nsession.cookie_lifetime = 0\r\nsession.cookie_path = /\r\nsession.cookie_domain =\r\nsession.serialize_handler = php\r\nsession.gc_probability = 1\r\nsession.gc_divisor = 1000\r\nsession.gc_maxlifetime = 1440\r\nsession.bug_compat_42 = 0\r\nsession.bug_compat_warn = 1\r\nsession.referer_check =\r\nsession.entropy_length = 16\r\nsession.entropy_file = /dev/urandom\r\nsession.cache_limiter = nocache\r\nsession.cache_expire = 180\r\nsession.use_trans_sid = 0\r\nsuhosin.simulation = Off\r\nsuhosin.mail.protect = 1\r\n');
# --------------------------------------------------------

View File

@@ -16,7 +16,7 @@
*/
$updateto = '1.0';
$updateto = '0.9';
$frontend = 'froxlor';
$updatelog->logAction(ADM_ACTION, LOG_WARNING, "Upgrading SysCP ".$settings['panel']['version']." to Froxlor ". $updateto);
@@ -28,12 +28,13 @@ $db->query($query);
$settings['panel']['version'] = $updateto;
// add field frontend
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system','frontend','froxlor')");
$settings['panel']['frontend'] = 'froxlor';
/*
* this is the main upgrade
*/
if($settings['panel']['frontend'] == 'froxlor'
&& $settings['panel']['version'] == '1.0')
&& $settings['panel']['version'] == '0.9')
{
/*

View File

@@ -31,7 +31,7 @@ require ('../lib/tables.inc.php');
* Inlcudes the MySQL-Connection-Class
*/
require ('../lib/class_mysqldb.php');
require ('../lib/classes/database/class.db.php');
$db = new db($sql['host'], $sql['user'], $sql['password'], $sql['db']);
unset($sql['password']);
unset($db->password);
@@ -112,7 +112,7 @@ if(!isset($settings['panel']['frontend'])
}
/**
* Upgrading SysCP to Froxlor-1.0
* Upgrading SysCP to Froxlor-0.9
*
* when we reach this part, all necessary updates
* should have been installes automatically by the
@@ -127,4 +127,4 @@ inserttask('1');
@chmod('../lib/userdata.inc.php', 0440);
header('Location: ../index.php');
?>
?>

View File

@@ -135,7 +135,7 @@ class ApsInstaller extends ApsParser
chdir($this->RealPath . $this->DomainPath . '/install_scripts/');
$Return = array();
$ReturnStatus = 0;
$Return = safe_exec('php ' . escapeshellcmd($this->RealPath . $this->DomainPath . '/install_scripts/configure install'), $ReturnStatus);
$Return = safe_exec('php ' . escapeshellarg($this->RealPath . $this->DomainPath . '/install_scripts/configure install'), $ReturnStatus);
if($ReturnStatus != 0)
{
@@ -247,9 +247,9 @@ class ApsInstaller extends ApsParser
//skip APS internal data
if($Row2['Name'] == 'main_location'
|| $Row2['Name'] == 'main_domain'
|| $Row2['Name'] == 'main_database_password'
|| $Row2['Name'] == 'license')continue;
|| $Row2['Name'] == 'main_domain'
|| $Row2['Name'] == 'main_database_password'
|| $Row2['Name'] == 'license')continue;
putenv('SETTINGS_' . $Row2['Name'] . '=' . $Row2['Value']);
}
}
@@ -275,7 +275,7 @@ class ApsInstaller extends ApsParser
//extract all files and chown them to the customer guid
if(self::ExtractZip($this->RootDir . 'packages/' . $Row['Path'] . '/' . $Row['Path'], $Xml->mapping['path'], $this->RealPath . $this->DomainPath . '/') == false
|| self::ExtractZip($this->RootDir . 'packages/' . $Row['Path'] . '/' . $Row['Path'], 'scripts', $this->RealPath . $this->DomainPath . '/install_scripts/') == false)
|| self::ExtractZip($this->RootDir . 'packages/' . $Row['Path'] . '/' . $Row['Path'], 'scripts', $this->RealPath . $this->DomainPath . '/install_scripts/') == false)
{
$this->db->query('UPDATE `' . TABLE_APS_INSTANCES . '` SET `Status` = ' . INSTANCE_ERROR . ' WHERE `ID` = ' . $this->db->escape($Row['InstanceID']));
@@ -507,6 +507,12 @@ class ApsInstaller extends ApsParser
if(zip_entry_open($ZipHandle, $ZipEntry))
{
// handle new directory
$dir = dirname($Destination.$NewPath);
if (!file_exists($dir)) {
mkdir ($dir, 0777, true);
}
$File = fopen($Destination . $NewPath, "wb");
if($File)

View File

@@ -27,3 +27,5 @@ function getSetting($settinggroup, $varname)
return false;
}
}
?>

View File

@@ -54,3 +54,5 @@ function loadSettings($settings_data, $db)
return $settings;
}
?>

View File

@@ -21,3 +21,5 @@ function saveSetting($settinggroup, $varname, $newvalue)
$query = 'UPDATE `' . TABLE_PANEL_SETTINGS . '` SET `value` = \'' . $db->escape($newvalue) . '\' WHERE `settinggroup` = \'' . $db->escape($settinggroup) . '\' AND `varname`=\'' . $db->escape($varname) . '\'';
return $db->query($query);
}
?>

View File

@@ -41,3 +41,5 @@ function storeSettingDefaultIp($fieldname, $fielddata, $newfieldvalue)
return $returnvalue;
}
?>

View File

@@ -33,3 +33,25 @@ function storeSettingField($fieldname, $fielddata, $newfieldvalue)
return false;
}
}
function storeSettingFieldInsertBindTask($fieldname, $fielddata, $newfieldvalue)
{
if(is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] != '' && isset($fielddata['varname']) && $fielddata['varname'] != '')
{
if(saveSetting($fielddata['settinggroup'], $fielddata['varname'], $newfieldvalue) != false)
{
inserttask('4');
return array($fielddata['settinggroup'] . '.' . $fielddata['varname'] => $newfieldvalue);
}
else
{
return false;
}
}
else
{
return false;
}
}
?>

View File

@@ -41,3 +41,5 @@ function storeSettingHostname($fieldname, $fielddata, $newfieldvalue)
return $returnvalue;
}
?>

View File

@@ -31,3 +31,5 @@ function storeSettingIpAddress($fieldname, $fielddata, $newfieldvalue)
return $returnvalue;
}
?>

View File

@@ -42,3 +42,5 @@ function storeSettingMysqlAccessHost($fieldname, $fielddata, $newfieldvalue)
return $returnvalue;
}
?>

View File

@@ -29,8 +29,8 @@ function createAWStatsVhost($siteDomain, $settings = null)
{
$vhosts_file = ' # AWStats statistics' . "\n";
$vhosts_file.= ' RewriteEngine On' . "\n";
$vhosts_file.= ' RewriteRule ^/awstats(/.*)? /awstats/awstats.pl?config=' . $siteDomain . ' [L,PT]' . "\n";
$vhosts_file.= ' RewriteRule ^/awstats.pl(.*)* /awstats/awstats.pl$1 [QSA,L,PT]' . "\n";
$vhosts_file.= ' RewriteRule ^/awstats(/.*)?$ /awstats/awstats.pl?config=' . $siteDomain . ' [L,PT]' . "\n";
$vhosts_file.= ' RewriteRule ^/awstats.pl(.*)$ /awstats/awstats.pl$1 [QSA,L,PT]' . "\n";
}
else
{

View File

@@ -1,8 +1,8 @@
<?php
/**
* This file is part of the SysCP project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 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
@@ -47,7 +47,7 @@ $filename = basename($_SERVER['PHP_SELF']);
if(!file_exists('./lib/userdata.inc.php'))
{
die('You have to <a href="./install/install.php">configure</a> SysCP first!');
die('You have to <a href="./install/install.php">configure</a> Froxlor first!');
}
if(!is_readable('./lib/userdata.inc.php'))

View File

@@ -65,7 +65,7 @@ define('PACKAGE_ENABLED', 2);
// VERSION INFO
$version = '1.0';
$version = '0.9';
$dbversion = '2';
?>

View File

@@ -1,8 +1,8 @@
<?php
/**
* This file is part of the SysCP project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 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
@@ -270,7 +270,7 @@ $lng['mails']['createcustomer']['subject'] = 'Account information';
$lng['admin']['overview'] = 'Overview';
$lng['admin']['ressourcedetails'] = 'Used resources';
$lng['admin']['systemdetails'] = 'System Details';
$lng['admin']['syscpdetails'] = 'SysCP Details';
$lng['admin']['syscpdetails'] = 'Froxlor Details';
$lng['admin']['installedversion'] = 'Installed version';
$lng['admin']['latestversion'] = 'Latest version';
$lng['admin']['lookfornewversion']['clickhere'] = 'search via webservice';
@@ -309,7 +309,7 @@ $lng['admin']['templates']['templates'] = 'E-Mail-templates';
$lng['admin']['templates']['template_add'] = 'Add template';
$lng['admin']['templates']['template_edit'] = 'Edit template';
$lng['admin']['templates']['action'] = 'Action';
$lng['admin']['templates']['email'] = 'E-Mail- &amp; Filetemplates';
$lng['admin']['templates']['email'] = 'E-mail &amp; file templates';
$lng['admin']['templates']['subject'] = 'Subject';
$lng['admin']['templates']['mailbody'] = 'Mail body';
$lng['admin']['templates']['createcustomer'] = 'Welcome mail for new customers';
@@ -495,7 +495,7 @@ $lng['panel']['pathDescription'] = 'If the directory doesn\'t exist, it will be
// ADDED IN 1.2.16-svn6
$lng['mails']['trafficninetypercent']['mailbody'] = 'Dear {NAME},\n\nYou used {TRAFFICUSED} MB of your available {TRAFFIC} MB of traffic.\nThis is more than 90%.\n\nYours sincerely, the SysCP-Team';
$lng['mails']['trafficninetypercent']['mailbody'] = 'Dear {NAME},\n\nYou used {TRAFFICUSED} MB of your available {TRAFFIC} MB of traffic.\nThis is more than 90%.\n\nYours sincerely, the Froxlor-Team';
$lng['mails']['trafficninetypercent']['subject'] = 'Reaching your traffic limit';
$lng['admin']['templates']['trafficninetypercent'] = 'Notification mail for customers when ninety percent of traffic is exhausted';
$lng['admin']['templates']['TRAFFIC'] = 'Replaced with the traffic, which was assigned to the customer.';
@@ -540,13 +540,13 @@ $lng['panel']['back'] = 'Back';
// ADDED IN 1.2.16-svn12
$lng['serversettings']['mod_log_sql']['title'] = 'Temporary save logs in the database';
$lng['serversettings']['mod_log_sql']['description'] = 'Use <a href="http://www.outoforder.cc/projects/apache/mod_log_sql/" title="mod_log_sql">mod_log_sql</a> to save webrequests temporarily<br /><b>This needs a special <a href="http://files.syscp.org/docs/mod_log_sql/" title="mod_log_sql - documentation">apache-configuration</a>!</b>';
$lng['serversettings']['mod_log_sql']['description'] = 'Use <a href="http://www.outoforder.cc/projects/apache/mod_log_sql/" title="mod_log_sql">mod_log_sql</a> to save webrequests temporarily<br /><b>This needs a special <a href="http://files.froxlor.org/docs/mod_log_sql/" title="mod_log_sql - documentation">apache-configuration</a>!</b>';
$lng['serversettings']['mod_fcgid']['title'] = 'Include PHP via mod_fcgid/suexec';
$lng['serversettings']['mod_fcgid']['description'] = 'Use mod_fcgid/suexec/libnss_mysql to run PHP with the corresponding useraccount.<br/><b>This needs a special Apache configuration. All following options are only valid if the module is enabled.</b>';
$lng['serversettings']['sendalternativemail']['title'] = 'Use alternative email-address';
$lng['serversettings']['sendalternativemail']['description'] = 'Send the password-email to a different address during email-account-creation';
$lng['emails']['alternative_emailaddress'] = 'Alternative e-mail-address';
$lng['mails']['pop_success_alternative']['mailbody'] = 'Hello,\n\nyour Mail account {EMAIL}\nwas set up successfully.\nYour password is {PASSWORD}.\n\nThis is an automatically created\ne-mail, please do not answer!\n\nYours sincerely, the SysCP-Team';
$lng['mails']['pop_success_alternative']['mailbody'] = 'Hello,\n\nyour Mail account {EMAIL}\nwas set up successfully.\nYour password is {PASSWORD}.\n\nThis is an automatically created\ne-mail, please do not answer!\n\nYours sincerely, the Froxlor-Team';
$lng['mails']['pop_success_alternative']['subject'] = 'Mail account set up successfully';
$lng['admin']['templates']['pop_success_alternative'] = 'Welcome mail for new email accounts sent to alternative address';
$lng['admin']['templates']['EMAIL_PASSWORD'] = 'Replaced with the POP3/IMAP account password.';
@@ -589,7 +589,7 @@ $lng['serversettings']['webalizer_quiet']['description'] = 'Verbosity of the web
// ADDED IN 1.2.18-svn3
$lng['ticket']['admin_email'] = 'root@localhost';
$lng['ticket']['noreply_email'] = 'tickets@syscp';
$lng['ticket']['noreply_email'] = 'tickets@froxlor';
$lng['admin']['ticketsystem'] = 'Support-tickets';
$lng['menue']['ticket']['ticket'] = 'Support tickets';
$lng['menue']['ticket']['categories'] = 'Support categories';
@@ -650,15 +650,15 @@ $lng['admin']['templates']['new_ticket_by_customer'] = 'Admin-notification for a
$lng['admin']['templates']['new_reply_ticket_by_customer'] = 'Admin-notification for a ticket-reply by a customer';
$lng['admin']['templates']['new_ticket_by_staff'] = 'Customer-notification for a ticket opened by a staff';
$lng['admin']['templates']['new_reply_ticket_by_staff'] = 'Customer-notification for a ticket-reply by a staff';
$lng['mails']['new_ticket_for_customer']['mailbody'] = 'Hello {FIRSTNAME} {NAME},\n\nyour support-ticket with the subject "{SUBJECT}" has been sent.\n\nYou will be notified when your ticket has been answered.\n\nThank you,\nthe SysCP-Team';
$lng['mails']['new_ticket_for_customer']['mailbody'] = 'Hello {FIRSTNAME} {NAME},\n\nyour support-ticket with the subject "{SUBJECT}" has been sent.\n\nYou will be notified when your ticket has been answered.\n\nThank you,\nthe Froxlor-Team';
$lng['mails']['new_ticket_for_customer']['subject'] = 'Your support ticket has been sent';
$lng['mails']['new_ticket_by_customer']['mailbody'] = 'Hello admin,\n\na new support-ticket with the subject "{SUBJECT}" has been submitted.\n\nPlease login to open the ticket.\n\nThank you,\nthe SysCP-Team';
$lng['mails']['new_ticket_by_customer']['mailbody'] = 'Hello admin,\n\na new support-ticket with the subject "{SUBJECT}" has been submitted.\n\nPlease login to open the ticket.\n\nThank you,\nthe Froxlor-Team';
$lng['mails']['new_ticket_by_customer']['subject'] = 'New support ticket submitted';
$lng['mails']['new_reply_ticket_by_customer']['mailbody'] = 'Hello admin,\n\nthe support-ticket "{SUBJECT}" has been answered by a customer.\n\nPlease login to open the ticket.\n\nThank you,\nthe SysCP-Team';
$lng['mails']['new_reply_ticket_by_customer']['mailbody'] = 'Hello admin,\n\nthe support-ticket "{SUBJECT}" has been answered by a customer.\n\nPlease login to open the ticket.\n\nThank you,\nthe Froxlor-Team';
$lng['mails']['new_reply_ticket_by_customer']['subject'] = 'New reply to support ticket';
$lng['mails']['new_ticket_by_staff']['mailbody'] = 'Hello {FIRSTNAME} {NAME},\n\na support-ticket with the subject "{SUBJECT}" has been opened for you.\n\nPlease login to open the ticket.\n\nThank you,\nthe SysCP-Team';
$lng['mails']['new_ticket_by_staff']['mailbody'] = 'Hello {FIRSTNAME} {NAME},\n\na support-ticket with the subject "{SUBJECT}" has been opened for you.\n\nPlease login to open the ticket.\n\nThank you,\nthe Froxlor-Team';
$lng['mails']['new_ticket_by_staff']['subject'] = 'New support ticket submitted';
$lng['mails']['new_reply_ticket_by_staff']['mailbody'] = 'Hello {FIRSTNAME} {NAME},\n\nthe support-ticket with the subject "{SUBJECT}" has been answered by our staff.\n\nPlease login to view the ticket.\n\nThank you,\nthe SysCP-Team';
$lng['mails']['new_reply_ticket_by_staff']['mailbody'] = 'Hello {FIRSTNAME} {NAME},\n\nthe support-ticket with the subject "{SUBJECT}" has been answered by our staff.\n\nPlease login to view the ticket.\n\nThank you,\nthe Froxlor-Team';
$lng['mails']['new_reply_ticket_by_staff']['subject'] = 'New reply to support ticket';
$lng['question']['ticket_reallyclose'] = 'Do you really want to close the ticket "%s"?';
$lng['question']['ticket_reallydelete'] = 'Do you really want to delete the ticket "%s"?';
@@ -741,7 +741,7 @@ $lng['traffic']['summail'] = 'Summation Mail-Traffic in';
// ADDED IN 1.2.19-svn4.5
$lng['serversettings']['no_robots']['title'] = 'Allow searchengine-robots to index your SysCP';
$lng['serversettings']['no_robots']['title'] = 'Allow searchengine-robots to index your Froxlor installation';
// ADDED IN 1.2.19-svn6
@@ -864,8 +864,8 @@ $lng['login']['presend'] = 'Reset password';
$lng['login']['email'] = 'E-mail address';
$lng['login']['remind'] = 'Reset my password';
$lng['login']['usernotfound'] = 'User not found!';
$lng['pwdreminder']['subject'] = 'SysCP - Password reset';
$lng['pwdreminder']['body'] = 'Hello %s,\n\nyour syscp password has been reset!\nThe new password is: %p\n\nThank you,\nthe SysCP-Team';
$lng['pwdreminder']['subject'] = 'Froxlor - Password reset';
$lng['pwdreminder']['body'] = 'Hello %s,\n\nyour froxlor password has been reset!\nThe new password is: %p\n\nThank you,\nthe Froxlor-Team';
$lng['pwdreminder']['success'] = 'Password reset successfully.<br />You now should receive an email with your new password.';
// ADDED IN 1.2.19-svn18
@@ -898,7 +898,7 @@ $lng['panel']['never'] = 'Never';
$lng['panel']['active'] = 'Active';
$lng['panel']['please_choose'] = 'Please choose';
$lng['panel']['allow_modifications'] = 'Allow modifications';
$lng['domains']['add_date'] = 'Added to SysCP';
$lng['domains']['add_date'] = 'Added to Froxlor';
$lng['domains']['registration_date'] = 'Added at registry';
$lng['domains']['topleveldomain'] = 'Top-Level-Domain';
@@ -953,10 +953,10 @@ $lng['serversettings']['autoresponder_active']['description'] = 'Do you want to
$lng['invoice']['active'] = 'Billing active';
$lng['admin']['security_settings'] = 'Security Options';
$lng['admin']['know_what_youre_doing'] = 'Change only, if you know what you\'re doing!';
$lng['admin']['show_version_login']['title'] = 'Show SysCP version on login';
$lng['admin']['show_version_login']['description'] = 'Show the SysCP version in the footer on the login page';
$lng['admin']['show_version_footer']['title'] = 'Show SysCP version in footer';
$lng['admin']['show_version_footer']['description'] = 'Show the SysCP version in the footer on the rest of the pages';
$lng['admin']['show_version_login']['title'] = 'Show Froxlor version on login';
$lng['admin']['show_version_login']['description'] = 'Show the Froxlor version in the footer on the login page';
$lng['admin']['show_version_footer']['title'] = 'Show Froxlor version in footer';
$lng['admin']['show_version_footer']['description'] = 'Show the Froxlor version in the footer on the rest of the pages';
$lng['admin']['syscp_graphic']['title'] = 'Header graphic for SysCP';
$lng['admin']['syscp_graphic']['description'] = 'What graphic should be shown in the header';
@@ -983,6 +983,7 @@ $lng['error']['info'] = 'Info';
$lng['admin']['phpconfig']['template_replace_vars'] = 'Variables that will be replaced in the configs';
$lng['admin']['phpconfig']['safe_mode'] = 'Will be replaced with the safe_mode setting of the domain.';
$lng['admin']['phpconfig']['pear_dir'] = 'Will be replaced with the global setting for the pear directory.';
$lng['admin']['phpconfig']['open_basedir_c'] = 'Will insert a ; (semicolon) to comment-out/deactivate open_basedir when set';
$lng['admin']['phpconfig']['open_basedir'] = 'Will be replaced with the open_basedir setting of the domain.';
$lng['admin']['phpconfig']['tmp_dir'] = 'Will be replaced with the temporary directory of the domain.';
$lng['admin']['phpconfig']['open_basedir_global'] = 'Will be replaced with the global value of the path which will be attached to the open_basedir.';
@@ -1000,7 +1001,7 @@ $lng['serversettings']['mod_fcgid']['tmpdir']['description'] = 'Where should the
$lng['serversettings']['mod_fcgid']['peardir']['title'] = 'Global PEAR directories';
$lng['serversettings']['mod_fcgid']['peardir']['description'] = 'Which global PEAR directories should be replaced in every php.ini config? Different directories must be separated by a colon.';
//improved syscp 2
//improved Froxlor 2
$lng['admin']['templates']['index_html'] = 'index file for newly created customer directories';
$lng['admin']['templates']['SERVERNAME'] = 'Replaced with the servername.';
@@ -1168,7 +1169,7 @@ $lng['aps']['numerofpackageslocked'] = '%s Packages locked<br/>';
$lng['aps']['numerofinstances'] = '%s Instances installed<br/>';
$lng['question']['reallydoaction'] = '<strong>Do you really want to execute the selected actions?</strong><br/><br/>Data which can be lost by continuing, cannot be restored later.<br/><br/>';
$lng['aps']['linktolicense'] = 'Link to license';
$lng['aps']['initerror_customer'] = 'There is currently a problem with this SysCP extension. Contact your administrator for further information.';
$lng['aps']['initerror_customer'] = 'There is currently a problem with this Froxlor extension. Contact your administrator for further information.';
$lng['aps']['numerofinstances'] = '%s Installations at all<br/>';
$lng['aps']['numerofinstancessuccess'] = '%s successful Installations<br/>';
$lng['aps']['numerofinstanceserror'] = '%s failed Installations<br/>';
@@ -1191,13 +1192,13 @@ $lng['error']['admindoesntexist'] = 'The admin you have chosen doesn\'t exist.';
// ADDED IN 1.2.19-svn37
$lng['serversettings']['system_realtime_port']['title'] = 'Port for realtime SysCP';
$lng['serversettings']['system_realtime_port']['description'] = 'SysCP connects to this port at localhost everytime a new cron task is scheduled. If value is 0 (zero), this feature ist deactivated.<br />See also: <a href="https://wiki.syscp.org/contrib/realtime">Make SysCP work in realtime (SysCP Wiki)</a>';
$lng['serversettings']['system_realtime_port']['description'] = 'Froxlor connects to this port at localhost everytime a new cron task is scheduled. If value is 0 (zero), this feature ist deactivated.<br />See also: <a href="https://wiki.syscp.org/contrib/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['session_allow_multiple_login']['title'] = 'Allow multiple login';
$lng['serversettings']['session_allow_multiple_login']['description'] = 'If activated a user could login multiple times.';
$lng['serversettings']['panel_allow_domain_change_admin']['title'] = 'Allow moving domains between admins';
$lng['serversettings']['panel_allow_domain_change_admin']['description'] = 'If activated you can change the admin of a domain at domainsettings.<br /><b>Attention:</b> If a customer isn\'t assigned to the same admin as the domain, the admin can see every other domain of that customer!';
$lng['serversettings']['panel_allow_domain_change_customer']['title'] = 'Allow moving domains between customers';
$lng['serversettings']['panel_allow_domain_change_customer']['description'] = 'If activated you can change the customer of a domain at domainsettings.<br /><b>Attention:</b> SysCP won\'t change any paths. This could render a domain unusable!';
$lng['serversettings']['panel_allow_domain_change_customer']['description'] = 'If activated you can change the customer of a domain at domainsettings.<br /><b>Attention:</b> Froxlor won\'t change any paths. This could render a domain unusable!';
$lng['domains']['associated_with_domain'] = 'Associated';
$lng['domains']['aliasdomains'] = 'Alias domains';
$lng['error']['ipportdoesntexist'] = 'The ip/port combination you have chosen doesn\'t exist.';
@@ -1219,7 +1220,7 @@ $lng['aps']['license_link'] = 'Link to the license';
// ADDED IN 1.4.2.1
$lng['admin']['thankyou'] = 'Thank you';
$lng['admin']['contributors'] = 'All these people contributed to the SysCP Project (no particular order)';
$lng['admin']['contributors'] = 'All these people contributed to the Froxlor Project (no particular order)';
// ADDED IN 1.4.2.1-1

View File

@@ -1,8 +1,8 @@
<?php
/**
* This file is part of the SysCP project.
* Copyright (c) 2003-2009 the SysCP Team (see authors).
* This file is part of the Froxlor project.
* Copyright (c) 2003-2009 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
@@ -309,7 +309,7 @@ $lng['admin']['templates']['templates'] = 'E-Mail-Vorlagen';
$lng['admin']['templates']['template_add'] = 'Vorlage hinzuf&uuml;gen';
$lng['admin']['templates']['template_edit'] = 'Vorlage bearbeiten';
$lng['admin']['templates']['action'] = 'Aktion';
$lng['admin']['templates']['email'] = 'E-Mail- &amp; Dateivorlagen';
$lng['admin']['templates']['email'] = 'E-Mail &amp; Dateivorlagen';
$lng['admin']['templates']['subject'] = 'Betreff';
$lng['admin']['templates']['mailbody'] = 'Mailtext';
$lng['admin']['templates']['createcustomer'] = 'Willkommensmail f&uuml;r neue Kunden';
@@ -745,7 +745,7 @@ $lng['traffic']['summail'] = 'Summe Mail-Traffic in';
// ADDED IN 1.2.19-svn4.5
$lng['serversettings']['no_robots']['title'] = 'Erlaube die Indizierung Ihres SysCP durch Suchmaschinen';
$lng['serversettings']['no_robots']['title'] = 'Erlaube die Indizierung Ihres Froxlor durch Suchmaschinen';
// ADDED IN 1.2.19-svn6
@@ -868,8 +868,8 @@ $lng['login']['presend'] = 'Passwort zur&uuml;cksetzen';
$lng['login']['email'] = 'E-Mail Adresse';
$lng['login']['remind'] = 'Passwort zur&uuml;cksetzen';
$lng['login']['usernotfound'] = 'Fehler: Unbekannter Benutzer!';
$lng['pwdreminder']['subject'] = 'SysCP - Passwort zur&uuml;ckgesetzt';
$lng['pwdreminder']['body'] = 'Hallo %s,\n\nIhr SysCP Passwort wurde zur&uuml;ckgesetzt!\nDas neue Passwort lautet: %p\n\nVielen Dank,\nIhr SysCP-Team';
$lng['pwdreminder']['subject'] = 'Froxlor - Passwort zur&uuml;ckgesetzt';
$lng['pwdreminder']['body'] = 'Hallo %s,\n\nIhr Froxlor Passwort wurde zur&uuml;ckgesetzt!\nDas neue Passwort lautet: %p\n\nVielen Dank,\nIhr SysCP-Team';
$lng['pwdreminder']['success'] = 'Passwort erfolgreich zur&uuml;ckgesetzt.<br />Sie sollten nun eine E-Mail mit dem neuen Passwort erhalten.';
// ADDED IN 1.2.19-svn18
@@ -902,7 +902,7 @@ $lng['panel']['never'] = 'Nie';
$lng['panel']['active'] = 'Aktiv';
$lng['panel']['please_choose'] = 'Bitte ausw&auml;hlen';
$lng['panel']['allow_modifications'] = '&Auml;nderungen zulassen';
$lng['domains']['add_date'] = 'Zu SysCP hinzugef&uuml;gt';
$lng['domains']['add_date'] = 'Zu Froxlor hinzugef&uuml;gt';
$lng['domains']['registration_date'] = 'Bei Registry hinzugef&uuml;gt';
$lng['domains']['topleveldomain'] = 'Top-Level-Domain';
@@ -956,12 +956,12 @@ $lng['error']['invalidautoresponder'] = 'Das angegebene Konto ist ung&uuml;ltig.
$lng['serversettings']['autoresponder_active']['title'] = 'Abwesenheitsnachrichten-Modul verwenden';
$lng['serversettings']['autoresponder_active']['description'] = 'M&ouml;chten Sie das Abwesenheitsnachrichten-Modul verwenden? Dazu muss ein separater Cronjob eingerichtet sein.';
$lng['invoice']['active'] = 'Rechnung aktiviert';
$lng['admin']['show_version_login']['title'] = 'Zeige SysCP Version beim Login';
$lng['admin']['show_version_login']['description'] = 'Zeige SysCP Version in der Fu&szlig;zeile der Loginseite';
$lng['admin']['show_version_footer']['title'] = 'Zeige SysCP Version in Fu&szlig;zeile';
$lng['admin']['show_version_footer']['description'] = 'Zeige SysCP Version in der Fu&szlig;zeile aller anderen Seiten';
$lng['admin']['show_version_login']['title'] = 'Zeige Froxlor Version beim Login';
$lng['admin']['show_version_login']['description'] = 'Zeige Froxlor Version in der Fu&szlig;zeile der Loginseite';
$lng['admin']['show_version_footer']['title'] = 'Zeige Froxlor Version in Fu&szlig;zeile';
$lng['admin']['show_version_footer']['description'] = 'Zeige Froxlor Version in der Fu&szlig;zeile aller anderen Seiten';
$lng['admin']['syscp_graphic']['title'] = 'Grafik im Kopfbereich des Panels';
$lng['admin']['syscp_graphic']['description'] = 'Welche Grafik soll im Kopfbereich des Panels anstatt des SysCP Logos angezeigt werden?';
$lng['admin']['syscp_graphic']['description'] = 'Welche Grafik soll im Kopfbereich des Panels anstatt des Froxlor Logos angezeigt werden?';
//improved syscp
@@ -986,6 +986,7 @@ $lng['error']['info'] = 'Info';
$lng['admin']['phpconfig']['template_replace_vars'] = 'Variablen, die in den Konfigurationen ersetzt werden';
$lng['admin']['phpconfig']['safe_mode'] = 'Wird mit der safe_mode Einstellung der Domain ersetzt.';
$lng['admin']['phpconfig']['pear_dir'] = 'Wird mit dem globalen Wert f&uuml;r das Include Verzeichnis ersetzt.';
$lng['admin']['phpconfig']['open_basedir_c'] = 'Wird mit einem ; (Semikolon) ersetzt, um open_basedir auszukommentieren/deaktivieren, wenn eingestellt.';
$lng['admin']['phpconfig']['open_basedir'] = 'Wird mit der open_basedir Einstellung der Domain ersetzt.';
$lng['admin']['phpconfig']['tmp_dir'] = 'Wird mit der Einstellung f&uuml;r das tempor&auml;re Verzeichnis der Domain ersetzt.';
$lng['admin']['phpconfig']['open_basedir_global'] = 'Wird mit der globalen Einstellung des Pfades ersetzt, der dem open_basedir hinzugef&uuml;gt wird.';
@@ -1004,7 +1005,7 @@ $lng['admin']['know_what_youre_doing'] = '&Auml;ndern Sie diese Einstellungen nu
$lng['serversettings']['mod_fcgid']['peardir']['title'] = 'Globale PEAR Verzeichnisse';
$lng['serversettings']['mod_fcgid']['peardir']['description'] = 'Welche globalen PEAR Verzeichnisse sollen in den php.ini Einstellungen ersetzt werden? Einzelne Verzeichnisse sind mit einem Doppelpunkt zu trennen.';
//improved syscp 2
//improved Froxlor 2
$lng['admin']['templates']['index_html'] = 'index.html Datei f&uuml;r neu erzeugte Kundenverzeichnisse';
$lng['admin']['templates']['SERVERNAME'] = 'Wird mit dem Servernamen ersetzt.';
@@ -1103,7 +1104,7 @@ $lng['aps']['php_general_new'] = 'PHP - Generell - PHP Version zu neu.';
$lng['aps']['db_mysql_support'] = 'Datenbank - Das Paket ben&ouml;tigt eine andere Datenbank Engine als MySQL.';
$lng['aps']['db_mysql_version'] = 'Datenbank - MySQL Server zu alt.';
$lng['aps']['webserver_module'] = 'Webserver - Modul "%s" fehlt.';
$lng['aps']['webserver_fcgid'] = 'Webserver - Von diesem Paket werden einige Webserver Module ben&ouml;tigt. Da Sie SysCP in einer FastCGI/mod_fcgid Umgebung verwenden existiert die Funktion "apache_get_modules" nicht. Es kann also nicht ermittelt werden ob das Paket unterst&uuml;tzt wird.';
$lng['aps']['webserver_fcgid'] = 'Webserver - Von diesem Paket werden einige Webserver Module ben&ouml;tigt. Da Sie Froxlor in einer FastCGI/mod_fcgid Umgebung verwenden existiert die Funktion "apache_get_modules" nicht. Es kann also nicht ermittelt werden ob das Paket unterst&uuml;tzt wird.';
$lng['aps']['webserver_htaccess'] = 'Webserver - Dieses Paket ben&ouml;tigt dass .htaccess Dateien vom Webserver geparst werden. Das Paket kann nicht installiert werden, da nicht ermittelt werden kann ob diese Funktion aktiviert ist.';
$lng['aps']['misc_configscript'] = 'Sonstiges - Die Sprache des Konfigurationsskriptes wird nicht unterst&uuml;tzt.';
$lng['aps']['misc_charset'] = 'Sonstiges - In der aktuellen Version wird eine Validierung gegen einen gewissen Zeichensatz im Installationsassitenten nicht unterst&uuml;tzt.';
@@ -1172,7 +1173,7 @@ $lng['aps']['numerofpackagesenabled'] = '%s Pakete freigegeben<br/>';
$lng['aps']['numerofpackageslocked'] = '%s Pakete gesperrt<br/>';
$lng['aps']['numerofinstances'] = '%s Instanzen installiert<br/>';
$lng['question']['reallydoaction'] = '<strong>Wollen Sie die gew&auml;hlten Aktionen wirklich durchf&uuml;hren?</strong><br/><br/>Daten, die durch diese Vorg&auml;nge m&ouml;glicherweise gel&ouml;scht werden, k&ouml;nnen anschlie&szlig;end nicht wieder hergestellt werden.<br/><br/>';
$lng['aps']['initerror_customer'] = 'Es gibt momentan ein Problem mit dieser SysCP Erweiterung. Wenden Sie sich an Ihren Administrator f&uuml;r weitere Informationen.';
$lng['aps']['initerror_customer'] = 'Es gibt momentan ein Problem mit dieser Froxlor Erweiterung. Wenden Sie sich an Ihren Administrator f&uuml;r weitere Informationen.';
$lng['aps']['numerofinstances'] = '%s Installationen insgesamt<br/>';
$lng['aps']['numerofinstancessuccess'] = '%s erfolgreiche Installationen<br/>';
$lng['aps']['numerofinstanceserror'] = '%s fehlgeschlagene Installationen<br/>';
@@ -1195,7 +1196,7 @@ $lng['error']['admindoesntexist'] = 'Der ausgew&auml;hlte Admin existiert nicht.
// ADDED IN 1.2.19-svn37
$lng['serversettings']['system_realtime_port']['title'] = 'Port f&uuml;r Realtime SysCP';
$lng['serversettings']['system_realtime_port']['description'] = 'Dieser Port auf localhost wird bei jedem neuen Cron-Task kontaktiert. Wenn der Wert 0 (Null) ist, dann ist dieses Feature deaktiviert.<br />Siehe dazu auch: <a href="https://wiki.syscp.org/contrib/realtime">Make SysCP work in realtime (SysCP Wiki)</a>';
$lng['serversettings']['system_realtime_port']['description'] = 'Dieser Port auf localhost wird bei jedem neuen Cron-Task kontaktiert. Wenn der Wert 0 (Null) ist, dann ist dieses Feature deaktiviert.<br />Siehe dazu auch: <a href="https://wiki.syscp.org/contrib/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['session_allow_multiple_login']['title'] = 'Erlaube gleichzeitigen Login';
$lng['serversettings']['session_allow_multiple_login']['description'] = 'Wenn diese Option aktiviert ist, k&ouml;nnen sich Nutzer mehrmals gleichzeitig anmelden.';
$lng['serversettings']['panel_allow_domain_change_admin']['title'] = 'Erlaube Verschieben von Domains unter Admins';
@@ -1223,6 +1224,6 @@ $lng['aps']['license_link'] = 'Link zur Lizenz';
// ADDED IN 1.4.2.1
$lng['admin']['thankyou'] = 'Vielen Dank';
$lng['admin']['contributors'] = 'Diese Leute haben zum SysCP Projekt beigetragen (keine besondere Ordnung)';
$lng['admin']['contributors'] = 'Diese Leute haben zum Froxlor Projekt beigetragen (keine besondere Ordnung)';
?>

View File

@@ -290,13 +290,13 @@ class bind
$max_dkim_id = $this->db->query_first("SELECT MAX(`dkim_id`) as `max_dkim_id` FROM `" . TABLE_PANEL_DOMAINS . "`");
$domain['dkim_id'] = (int)$max_dkim_id['max_dkim_id'] + 1;
$privkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id'] . '.private');
safe_exec('openssl genrsa -out ' . escapeshellcmd($privkey_filename) . ' 1024');
safe_exec('openssl genrsa -out ' . escapeshellarg($privkey_filename) . ' 1024');
$domain['dkim_privkey'] = file_get_contents($privkey_filename);
safe_exec("chmod 0640 " . escapeshellcmd($privkey_filename));
safe_exec("chmod 0640 " . escapeshellarg($privkey_filename));
$pubkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id'] . '.public');
safe_exec('openssl rsa -in ' . escapeshellcmd($privkey_filename) . ' -pubout -outform pem -out ' . escapeshellcmd($pubkey_filename));
safe_exec('openssl rsa -in ' . escapeshellarg($privkey_filename) . ' -pubout -outform pem -out ' . escapeshellarg($pubkey_filename));
$domain['dkim_pubkey'] = file_get_contents($pubkey_filename);
safe_exec("chmod 0664 " . escapeshellcmd($pubkey_filename));
safe_exec("chmod 0664 " . escapeshellarg($pubkey_filename));
$this->db->query("UPDATE `" . TABLE_PANEL_DOMAINS . "` SET `dkim_id` = '" . $domain['dkim_id'] . "', `dkim_privkey` = '" . $domain['dkim_privkey'] . "', `dkim_pubkey` = '" . $domain['dkim_pubkey'] . "' WHERE `id` = '" . $domain['id'] . "'");
}
@@ -306,7 +306,7 @@ class bind
$privkey_file_handler = fopen($privkey_filename, "w");
fwrite($privkey_file_handler, $domain['dkim_privkey']);
fclose($privkey_file_handler);
safe_exec("chmod 0640 " . escapeshellcmd($privkey_filename));
safe_exec("chmod 0640 " . escapeshellarg($privkey_filename));
}
if(!file_exists($pubkey_filename)
@@ -315,7 +315,7 @@ class bind
$pubkey_file_handler = fopen($pubkey_filename, "w");
fwrite($pubkey_file_handler, $domain['dkim_pubkey']);
fclose($pubkey_file_handler);
safe_exec("chmod 0664 " . escapeshellcmd($pubkey_filename));
safe_exec("chmod 0664 " . escapeshellarg($pubkey_filename));
}
$dkimdomains.= $domain['domain'] . "\n";

View File

@@ -482,7 +482,7 @@ class apache
if(preg_match('/^https?\:\/\//', $domain['documentroot']))
{
$vhost_content.= ' Redirect / ' . $domain['documentroot'] . "\n";
$vhost_content.= ' Redirect 301 / ' . $domain['documentroot'] . "\n";
}
else
{

View File

@@ -87,6 +87,8 @@ class apache_fcgid extends apache
}
$php_options_text.= ' Options +ExecCGI' . "\n";
$php_options_text.= ' Order allow,deny' . "\n";
$php_options_text.= ' allow from all' . "\n";
$php_options_text.= ' </Directory>' . "\n";
}
@@ -161,9 +163,11 @@ class apache_fcgid extends apache
// define the php.ini
$openbasedir = '';
$openbasedirc = ';';
if($domain['openbasedir'] == '1')
{
$openbasedirc = '';
if($domain['openbasedir_path'] == '0')
{
$openbasedir = $domain['documentroot'] . ':' . $tmpdir . ':' . $this->settings['system']['mod_fcgid_peardir'] . ':' . $this->settings['system']['phpappendopenbasedir'];
@@ -184,6 +188,7 @@ class apache_fcgid extends apache
else
{
$openbasedir = 'none';
$openbasedirc = ';';
}
$admin = $this->getAdminData($domain['adminid']);
@@ -191,6 +196,7 @@ class apache_fcgid extends apache
'SAFE_MODE' => ($domain['safemode'] == '0' ? 'Off' : 'On'),
'PEAR_DIR' => $this->settings['system']['mod_fcgid_peardir'],
'OPEN_BASEDIR' => $openbasedir,
'OPEN_BASEDIR_C' => $openbasedirc,
'OPEN_BASEDIR_GLOBAL' => $this->settings['system']['phpappendopenbasedir'],
'TMP_DIR' => $tmpdir,
'CUSTOMER_EMAIL' => $domain['email'],

View File

@@ -21,8 +21,8 @@
*/
if(@php_sapi_name() != 'cli'
&& @php_sapi_name() != 'cgi'
&& @php_sapi_name() != 'cgi-fcgi')
&& @php_sapi_name() != 'cgi'
&& @php_sapi_name() != 'cgi-fcgi')
{
die('This script only works in the shell.');
}
@@ -202,13 +202,13 @@ class lighttpd
protected function getVhostContent($domain, $ssl_vhost = false)
{
if($ssl_vhost === true
&& $domain['ssl'] != '1')
&& $domain['ssl'] != '1')
{
return '';
}
if($ssl_vhost === true
&& $domain['ssl'] == '1')
&& $domain['ssl'] == '1')
{
$query = "SELECT * FROM " . TABLE_PANEL_IPSANDPORTS . " WHERE `id`='" . $domain['ssl_ipandport'] . "'";
}
@@ -287,6 +287,9 @@ class lighttpd
$query = "SELECT * FROM " . TABLE_PANEL_HTACCESS . " WHERE `path` LIKE '" . $domain['documentroot'] . "%'";
$result = $this->db->query($query);
$path_options = '';
$error_string = '';
while($row = $this->db->fetch_array($result))
{
if(!empty($row['error404path']))
@@ -301,13 +304,23 @@ class lighttpd
// We need to remove the last slash, otherwise the regex wouldn't work
$path = substr($path, 0, -1);
$error_string.= '$HTTP["url"] =~ "^' . $path . '($|/)" {' . "\n";
$error_string.= "\t" . 'dir-listing.activate = "enable"' . "\n";
$error_string.= '}' . "\n";
$path_options.= '$HTTP["url"] =~ "^' . $path . '($|/)" {' . "\n";
$path_options.= "\t" . 'dir-listing.activate = "enable"' . "\n";
if(!empty($error_string))
{
$path_options.= $error_string;
// reset $error_string here to prevent duplicate entries
$error_string = '';
}
$path_options.= '}' . "\n";
}
else
{
$path_options = $error_string;
}
}
return $error_string;
return $path_options;
}
protected function getDirOptions($domain)
@@ -318,7 +331,7 @@ class lighttpd
while($row_htpasswds = $this->db->fetch_array($result))
{
if($auth_backend_loaded[$domain['ipandport']] != 'yes'
&& $auth_backend_loaded[$domain['ssl_ipandport']] != 'yes')
&& $auth_backend_loaded[$domain['ssl_ipandport']] != 'yes')
{
$filename = $domain['customerid'] . '.htpasswd';
@@ -441,7 +454,7 @@ class lighttpd
$webroot_text = '';
if($domain['deactivated'] == '1'
&& $this->settings['system']['deactivateddocroot'] != '')
&& $this->settings['system']['deactivateddocroot'] != '')
{
$webroot_text.= ' # Using docroot for deactivated users...' . "\n";
$webroot_text.= ' server.document-root = "' . $this->settings['system']['deactivateddocroot'] . "\"\n";
@@ -449,7 +462,7 @@ class lighttpd
else
{
if($ssl === false
&& $domain['ssl_redirect'] == '1')
&& $domain['ssl_redirect'] == '1')
{
$webroot_text.= ' url.redirect = ( "^/(.*)" => "https://' . $domain['domain'] . '/$1" )' . "\n";
}
@@ -544,18 +557,18 @@ class lighttpd
$this->logger->logAction(CRON_ACTION, LOG_INFO, "cleaning " . $this->settings['system']['apacheconf_vhost']);
if(isConfigDir($this->settings['system']['apacheconf_vhost'])
&& file_exists($this->settings['system']['apacheconf_vhost'])
&& is_dir($this->settings['system']['apacheconf_vhost']))
&& file_exists($this->settings['system']['apacheconf_vhost'])
&& is_dir($this->settings['system']['apacheconf_vhost']))
{
$vhost_file_dirhandle = opendir($this->settings['system']['apacheconf_vhost']);
while(false !== ($vhost_filename = readdir($vhost_file_dirhandle)))
{
if($vhost_filename != '.'
&& $vhost_filename != '..'
&& !in_array($vhost_filename, $this->known_filenames)
&& preg_match('/^(10|20|30)_syscp_ipandport_(.+)\.conf$/', $vhost_filename)
&& file_exists(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename)))
&& $vhost_filename != '..'
&& !in_array($vhost_filename, $this->known_filenames)
&& preg_match('/^(10|20|30)_syscp_ipandport_(.+)\.conf$/', $vhost_filename)
&& file_exists(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename)))
{
fwrite($this->debugHandler, ' apache::wipeOutOldConfigs: unlinking ' . $vhost_filename . "\n");
$this->logger->logAction(CRON_ACTION, LOG_NOTICE, 'unlinking ' . $vhost_filename);

View File

@@ -0,0 +1,802 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2009-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 <mk@froxlor.org>
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package System
* @version $Id: $
*/
/*
* This script creates the php.ini's used by mod_suPHP+php-cgi
*/
if(@php_sapi_name() != 'cli'
&& @php_sapi_name() != 'cgi'
&& @php_sapi_name() != 'cgi-fcgi')
{
die('This script only works in the shell.');
}
class lighttpd_fcgid extends lighttpd
{
private $db = false;
private $logger = false;
private $debugHandler = false;
private $settings = array();
// protected
public $needed_htpasswds = array();
public $auth_backend_loaded = false;
public $htpasswd_files = array();
public $mod_accesslog_loaded = "0";
protected $lighttpd_data = array();
function __construct($db, $logger, $debugHandler, $settings)
{
$this->db = $db;
$this->logger = $logger;
$this->debugHandler = $debugHandler;
$this->settings = $settings;
}
public function reload()
{
fwrite($this->debugHandler, ' lighttpd::reload: reloading lighttpd' . "\n");
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'reloading apache');
safe_exec($this->settings['system']['apachereload_command']);
}
public function createIpPort()
{
$query = "SELECT `id`, `ip`, `port`, `listen_statement`, `namevirtualhost_statement`, `vhostcontainer`, " . " `vhostcontainer_servername_statement`, `specialsettings`, `ssl`, `ssl_cert_file` " . " FROM `" . TABLE_PANEL_IPSANDPORTS . "` ORDER BY `ip` ASC, `port` ASC";
$result_ipsandports = $this->db->query($query);
while($row_ipsandports = $this->db->fetch_array($result_ipsandports))
{
if(filter_var($row_ipsandports['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6))
{
$ip = '[' . $row_ipsandports['ip'] . ']';
$port = $row_ipsandports['port'];
}
else
{
$ip = $row_ipsandports['ip'];
$port = $row_ipsandports['port'];
}
fwrite($this->debugHandler, ' lighttpd::createIpPort: creating ip/port settings for ' . $ip . ":" . $port . "\n");
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'creating ip/port settings for ' . $ip . ":" . $port);
$vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/10_syscp_ipandport_' . trim(str_replace(':', '.', $row_ipsandports['ip']), '.') . '.' . $row_ipsandports['port'] . '.conf');
$this->lighttpd_data[$vhost_filename].= '$SERVER["socket"] == "' . $ip . ':' . $port . '" {' . "\n";
if($row_ipsandports['listen_statement'] == '1')
{
$this->lighttpd_data[$vhost_filename].= 'server.port = ' . $port . "\n";
$this->lighttpd_data[$vhost_filename].= 'server.bind = "' . $ip . '"' . "\n";
}
if($row_ipsandports['ssl'] == '1')
{
$this->lighttpd_data[$vhost_filename].= 'ssl.engine = "enable"' . "\n";
$this->lighttpd_data[$vhost_filename].= 'ssl.pemfile = "' . $row_ipsandports['ssl_cert_file'] . '"' . "\n";
}
$this->createLighttpdHosts($row_ipsandports['ip'], $row_ipsandports['port'], $row_ipsandports['ssl'], $vhost_filename);
$this->lighttpd_data[$vhost_filename].= $this->needed_htpasswds[$row_ipsandports['id']] . "\n";
$this->lighttpd_data[$vhost_filename].= '}' . "\n";
}
}
protected function create_htaccess($domain)
{
$needed_htpasswds = array();
$htpasswd_query = "SELECT * FROM " . TABLE_PANEL_HTPASSWDS . " WHERE `path` LIKE '" . $domain['documentroot'] . "%'";
$result_htpasswds = $this->db->query($htpasswd_query);
while($row_htpasswds = $this->db->fetch_array($result_htpasswds))
{
$filename = $row_htpasswds['customerid'] . '-' . md5($row_htpasswds['path']) . '.htpasswd';
if(!in_array($row_htpasswds['path'], $needed_htpasswds))
{
if(empty($needed_htpasswds))
{
$auth_backend_loaded[$domain['ipandport']] = 'yes';
if(!$this->auth_backend_loaded)
{
$htaccess_text.= ' auth.backend = "htpasswd"' . "\n";
}
$htaccess_text.= ' auth.backend.htpasswd.userfile = "' . makeCorrectFile($this->settings['system']['apacheconf_htpasswddir'] . '/' . $filename) . '"' . "\n";
$htaccess_text.= ' auth.require = ( ' . "\n";
}
else
{
$htaccess_text.= ' ,' . "\n";
}
if(!strstr($this->needed_htpasswds[$filename], $row_htpasswds['username'] . ':' . $row_htpasswds['password']))
{
$this->needed_htpasswds[$filename].= $row_htpasswds['username'] . ':' . $row_htpasswds['password'] . "\n";
}
$needed_htpasswds[] = $row_htpasswds['path'];
$htaccess_path = substr($row_htpasswds['path'], strlen($domain['documentroot']) - 1);
$htaccess_text.= ' "' . makeCorrectDir($htaccess_path) . '" =>' . "\n";
$htaccess_text.= ' (' . "\n";
$htaccess_text.= ' "method" => "basic",' . "\n";
$htaccess_text.= ' "realm" => "Restricted Area",' . "\n";
$htaccess_text.= ' "require" => "user=' . $row_htpasswds[username] . '"' . "\n";
$htaccess_text.= ' )' . "\n";
}
}
if(strlen(trim($htaccess_text)) > 0)
{
$htaccess_text.= ' )' . "\n";
}
return $htaccess_text;
}
function createVirtualHosts()
{
}
function createFileDirOptions()
{
}
protected function createLighttpdHosts($ip, $port, $ssl, $vhost_filename)
{
$query = "SELECT * FROM " . TABLE_PANEL_IPSANDPORTS . " WHERE `ip`='" . $ip . "' AND `port`='" . $port . "'";
$ipandport = $this->db->query_first($query);
if($ssl == '0')
{
$query2 = "SELECT `d`.`id`, `d`.`domain`, `d`.`customerid`, `d`.`documentroot`, `d`.`ssl`, " . "`d`.`parentdomainid`, `d`.`ipandport`, `d`.`ssl_ipandport`, `d`.`ssl_redirect`, " . "`d`.`isemaildomain`, `d`.`iswildcarddomain`, `d`.`wwwserveralias`, `d`.`openbasedir`, `d`.`openbasedir_path`, " . "`d`.`safemode`, `d`.`speciallogfile`, `d`.`specialsettings`, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, " . "`c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled` " . "FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) " . "LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) " . "WHERE `d`.`ipandport`='" . $ipandport['id'] . "' " . "ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC";
}
else
{
$query2.= "SELECT `d`.`id`, `d`.`domain`, `d`.`customerid`, `d`.`documentroot`, `d`.`ssl`, " . "`d`.`parentdomainid`, `d`.`ipandport`, `d`.`ssl_ipandport`, `d`.`ssl_redirect`, " . "`d`.`isemaildomain`, `d`.`iswildcarddomain`, `d`.`wwwserveralias`, `d`.`openbasedir`, `d`.`openbasedir_path`, " . "`d`.`safemode`, `d`.`speciallogfile`, `d`.`specialsettings`, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, " . "`c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled` " . "FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) " . "LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) " . "WHERE `d`.`ssl_ipandport`='" . $ipandport['id'] . "' " . "ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC";
}
$result_domains = $this->db->query($query2);
while($domain = $this->db->fetch_array($result_domains))
{
$query = "SELECT * FROM " . TABLE_PANEL_IPSANDPORTS . " WHERE `id`='" . $domain['ipandport'] . "'";
$ipandport = $this->db->query_first($query);
$domain['ip'] = $ipandport['ip'];
$domain['port'] = $ipandport['port'];
$domain['ssl_cert_file'] = $ipandport['ssl_cert_file'];
if(!empty($this->lighttpd_data[$vhost_filename]))
{
if($ssl == '1')
{
$ssl_vhost = true;
}
else
{
$ssl_vhost = false;
}
$this->lighttpd_data[$vhost_filename].= $this->getVhostContent($domain, $ssl_vhost);
}
}
}
protected function getVhostContent($domain, $ssl_vhost = false)
{
if($ssl_vhost === true
&& $domain['ssl'] != '1')
{
return '';
}
if($ssl_vhost === true
&& $domain['ssl'] == '1')
{
$query = "SELECT * FROM " . TABLE_PANEL_IPSANDPORTS . " WHERE `id`='" . $domain['ssl_ipandport'] . "'";
}
else
{
$query = "SELECT * FROM " . TABLE_PANEL_IPSANDPORTS . " WHERE `id`='" . $domain['ipandport'] . "'";
}
$ipandport = $this->db->query_first($query);
$domain['ip'] = $ipandport['ip'];
$domain['port'] = $ipandport['port'];
$domain['ssl_cert_file'] = $ipandport['ssl_cert_file'];
if(filter_var($domain['ip'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6))
{
$ipport = '[' . $domain['ip'] . ']:' . $domain['port'];
}
else
{
$ipport = $domain['ip'] . ':' . $domain['port'];
}
$vhost_content.= $this->getServerNames($domain) . " {\n";
$vhost_content.= $this->getWebroot($domain, $ssl_vhost);
$vhost_content.= $this->create_htaccess($domain);
$vhost_content.= $this->create_pathOptions($domain);
$vhost_content.= $this->create_Fcgid($domain);
$vhost_content.= $this->getLogFiles($domain);
$vhost_content.= '}' . "\n";
return $vhost_content;
}
protected function getLogFiles($domain)
{
$logfiles_text = '';
if($this->settings['system']['mod_log_sql'] == 1)
{
// We are using mod_log_sql (http://www.outoforder.cc/projects/apache/mod_log_sql/)
// TODO: See how we are able emulate the error_log
}
else
{
// The normal access/error - logging is enabled
$filename = $this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-error.log';
if(!is_file($filename))
{
$ourFileHandle = fopen($filename, 'w') or die("can't open file");
fclose($ourFileHandle);
}
chown($filename, $this->settings[system]['httpuser']);
chgrp($filename, $this->settings[system]['httpgroup']);
//access log
$filename = $this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-access.log';
if(!is_file($filename))
{
$ourFileHandle = fopen($filename, 'w') or die("can't open file");
fclose($ourFileHandle);
}
$logfiles_text.= ' accesslog.filename = "' . $filename . '"' . "\n";
chown($filename, $this->settings[system]['httpuser']);
chgrp($filename, $this->settings[system]['httpgroup']);
}
return $logfiles_text;
}
protected function create_Fcgid($domain)
{
$php_options_text = '';
if($domain['phpenabled'] == '1')
{
// This vHost has PHP enabled and we are using mod_fcgid
//create basic variables for config
$configdir = makeCorrectDir($this->settings['system']['mod_fcgid_configdir'] . '/' . $domain['loginname'] . '/' . $domain['domain'] . '/');
$starter_filename = makeCorrectFile($configdir . '/php-fcgi-starter');
$phpini_filename = makeCorrectFile($configdir . '/php.ini');
$tmpdir = makeCorrectDir($this->settings['system']['mod_fcgid_tmpdir'] . '/' . $domain['loginname'] . '/');
// create config dir if necessary
if(!is_dir($configdir))
{
safe_exec('mkdir -p ' . escapeshellarg($configdir));
safe_exec('chown ' . $domain['guid'] . ':' . $domain['guid'] . ' ' . escapeshellarg($configdir));
}
// create tmp dir if necessary
if(!is_dir($tmpdir))
{
safe_exec('mkdir -p ' . escapeshellarg($tmpdir));
safe_exec('chown -R ' . $domain['guid'] . ':' . $domain['guid'] . ' ' . escapeshellarg($tmpdir));
safe_exec('chmod 0750 ' . escapeshellarg($tmpdir));
}
// Load php config
$phpconfig = $this->getPhpConfig((int)$domain['phpsettingid']);
$php_options_text = 'fastcgi.server = ( '."\n";
$file_extensions = explode(' ', $phpconfig['file_extensions']);
foreach($file_extensions as $f_extension)
{
$php_options_text.= "\t".'".'.$f_extension.'" => ('."\n";
$php_options_text.= "\t\t".'"localhost" => ('."\n";
$php_options_text.= "\t\t".'"socket" => "/var/run/lighttpd/'.$domain['loginname'].'-php.socket",'."\n";
$php_options_text.= "\t\t".'"bin-path" => "'.$phpconfig['binary'].' -c '.$phpini_filename.'",'."\n";
$php_options_text.= "\t\t".'"bin-environment" => ('."\n";
if((int)$domain['mod_fcgid_starter'] != - 1)
{
$php_options_text.= "\t\t\t".'"PHP_FCGI_CHILDREN" => "' . (int)$domain['mod_fcgid_starter'] . '"'."\n";
}
else
{
if((int)$phpconfig['mod_fcgid_starter'] != - 1)
{
$php_options_text.= "\t\t\t".'"PHP_FCGI_CHILDREN" => "' . (int)$phpconfig['mod_fcgid_starter'] . '"'."\n";
}
else
{
$php_options_text.= "\t\t\t".'"PHP_FCGI_CHILDREN" => "' . (int)$this->settings['system']['mod_fcgid_starter'] . '"'."\n";
}
}
if((int)$domain['mod_fcgid_maxrequests'] != - 1)
{
$php_options_text.= "\t\t\t".'"PHP_FCGI_MAX_REQUESTS" => "' . (int)$domain['mod_fcgid_maxrequests'] . '"'."\n";
}
else
{
if((int)$phpconfig['mod_fcgid_maxrequests'] != - 1)
{
$php_options_text.= "\t\t\t".'"PHP_FCGI_MAX_REQUESTS" => "' . (int)$phpconfig['mod_fcgid_maxrequests'] . '"'."\n";
}
else
{
$php_options_text.= "\t\t\t".'"PHP_FCGI_MAX_REQUESTS" => "' . (int)$this->settings['system']['mod_fcgid_maxrequests'] . '"'."\n";
}
}
$php_options_text.= "\t\t".')'."\n";
$php_options_text.= "\t".')'."\n";
$php_options_text.= "".')'."\n";
} // foreach extension
$php_options_text.= "".')'."\n";
// create starter
$starter_file = "#!/bin/sh\n\n";
$starter_file.= "#\n";
$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 SysCP Cronjob!\n";
$starter_file.= "#\n\n";
$starter_file.= "PHPRC=" . escapeshellarg($configdir) . "\n";
$starter_file.= "export PHPRC\n";
// set number of processes for one domain
if((int)$domain['mod_fcgid_starter'] != - 1)
{
$starter_file.= "PHP_FCGI_CHILDREN=" . (int)$domain['mod_fcgid_starter'] . "\n";
}
else
{
if((int)$phpconfig['mod_fcgid_starter'] != - 1)
{
$starter_file.= "PHP_FCGI_CHILDREN=" . (int)$phpconfig['mod_fcgid_starter'] . "\n";
}
else
{
$starter_file.= "PHP_FCGI_CHILDREN=" . (int)$this->settings['system']['mod_fcgid_starter'] . "\n";
}
}
$starter_file.= "export PHP_FCGI_CHILDREN\n";
// set number of maximum requests for one domain
if((int)$domain['mod_fcgid_maxrequests'] != - 1)
{
$starter_file.= "PHP_FCGI_MAX_REQUESTS=" . (int)$domain['mod_fcgid_maxrequests'] . "\n";
}
else
{
if((int)$phpconfig['mod_fcgid_maxrequests'] != - 1)
{
$starter_file.= "PHP_FCGI_MAX_REQUESTS=" . (int)$phpconfig['mod_fcgid_maxrequests'] . "\n";
}
else
{
$starter_file.= "PHP_FCGI_MAX_REQUESTS=" . (int)$this->settings['system']['mod_fcgid_maxrequests'] . "\n";
}
}
$starter_file.= "export PHP_FCGI_MAX_REQUESTS\n";
// Set Binary
$starter_file.= "exec " . $phpconfig['binary'] . " -c " . escapeshellarg($configdir) . "\n";
//remove +i attibute, so starter can be overwritten
if(file_exists($starter_filename))
{
safe_exec('chattr -i ' . escapeshellarg($starter_filename));
}
$starter_file_handler = fopen($starter_filename, 'w');
fwrite($starter_file_handler, $starter_file);
fclose($starter_file_handler);
safe_exec('chmod 750 ' . escapeshellarg($starter_filename));
safe_exec('chown ' . $domain['guid'] . ':' . $domain['guid'] . ' ' . escapeshellarg($starter_filename));
safe_exec('chattr +i ' . escapeshellarg($starter_filename));
// define the php.ini
$openbasedir = '';
$openbasedirc = ';';
if($domain['openbasedir'] == '1')
{
$openbasedirc = '';
if($domain['openbasedir_path'] == '0')
{
$openbasedir = $domain['documentroot'] . ':' . $tmpdir . ':' . $this->settings['system']['mod_fcgid_peardir'] . ':' . $this->settings['system']['phpappendopenbasedir'];
}
else
{
$openbasedir = $domain['customerroot'] . ':' . $tmpdir . ':' . $this->settings['system']['mod_fcgid_peardir'] . ':' . $this->settings['system']['phpappendopenbasedir'];
}
$openbasedir = explode(':', $openbasedir);
foreach($openbasedir as $number => $path)
{
$openbasedir[$number] = makeCorrectDir($path);
}
$openbasedir = implode(':', $openbasedir);
}
else
{
$openbasedir = 'none';
$openbasedirc = ';';
}
$admin = $this->getAdminData($domain['adminid']);
$php_ini_variables = array(
'SAFE_MODE' => ($domain['safemode'] == '0' ? 'Off' : 'On'),
'PEAR_DIR' => $this->settings['system']['mod_fcgid_peardir'],
'OPEN_BASEDIR' => $openbasedir,
'OPEN_BASEDIR_C' => $openbasedirc,
'OPEN_BASEDIR_GLOBAL' => $this->settings['system']['phpappendopenbasedir'],
'TMP_DIR' => $tmpdir,
'CUSTOMER_EMAIL' => $domain['email'],
'ADMIN_EMAIL' => $admin['email'],
'DOMAIN' => $domain['domain'],
'CUSTOMER' => $domain['loginname'],
'ADMIN' => $admin['loginname']
);
//insert a small header for the file
$phpini_file = ";\n";
$phpini_file.= "; php.ini 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";
$phpini_file.= "; Do not change anything in this file, it will be overwritten by the SysCP Cronjob!\n";
$phpini_file.= ";\n\n";
$phpini_file.= replace_variables($phpconfig['phpsettings'], $php_ini_variables);
$phpini_file = str_replace('"none"', 'none', $phpini_file);
$phpini_file = preg_replace('/\"+/', '"', $phpini_file);
$phpini_file_handler = fopen($phpini_filename, 'w');
fwrite($phpini_file_handler, $phpini_file);
fclose($phpini_file_handler);
safe_exec('chown root:0 ' . escapeshellarg($phpini_filename));
safe_exec('chmod 0644 ' . escapeshellarg($phpini_filename));
}
else
{
$php_options_text.= ' # PHP is disabled for this vHost' . "\n";
}
return $php_options_text;
}
protected function create_pathOptions($domain)
{
$query = "SELECT * FROM " . TABLE_PANEL_HTACCESS . " WHERE `path` LIKE '" . $domain['documentroot'] . "%'";
$result = $this->db->query($query);
$path_options = '';
$error_string = '';
while($row = $this->db->fetch_array($result))
{
if(!empty($row['error404path']))
{
$error_string.= ' server.error-handler-404 = "' . makeCorrectFile($row['documentroot'] . '/' . $row['error404path']) . '"' . "\n";
}
if($row['options_indexes'] != '0')
{
$path = makeCorrectDir(substr($row['path'], strlen($domain['documentroot']) - 1));
// We need to remove the last slash, otherwise the regex wouldn't work
$path = substr($path, 0, -1);
$path_options.= '$HTTP["url"] =~ "^' . $path . '($|/)" {' . "\n";
$path_options.= "\t" . 'dir-listing.activate = "enable"' . "\n";
if(!empty($error_string))
{
$path_options.= $error_string;
// reset $error_string here to prevent duplicate entries
$error_string = '';
}
$path_options.= '}' . "\n";
}
else
{
$path_options = $error_string;
}
}
return $path_options;
}
protected function getDirOptions($domain)
{
$query = "SELECT * FROM " . TABLE_PANEL_HTPASSWDS . " WHERE `customerid`='" . $domain[customerid] . "'";
$result = $this->db->query($query);
while($row_htpasswds = $this->db->fetch_array($result))
{
if($auth_backend_loaded[$domain['ipandport']] != 'yes'
&& $auth_backend_loaded[$domain['ssl_ipandport']] != 'yes')
{
$filename = $domain['customerid'] . '.htpasswd';
if($this->auth_backend_loaded[$domain['ipandport']] != 'yes')
{
$auth_backend_loaded[$domain['ipandport']] = 'yes';
$diroption_text.= 'auth.backend = "htpasswd"' . "\n";
$diroption_text.= 'auth.backend.htpasswd.userfile = "' . makeCorrectFile($this->settings['system']['apacheconf_htpasswddir'] . '/' . $filename) . '"' . "\n";
$this->needed_htpasswds[$filename] = $row_htpasswds['username'] . ':' . $row_htpasswds['password'] . "\n";
$diroption_text.= 'auth.require = ( ' . "\n";
$previous_domain_id = '1';
}
elseif($this->auth_backend_loaded[$domain['ssl_ipandport']] != 'yes')
{
$auth_backend_loaded[$domain['ssl_ipandport']] = 'yes';
$diroption_text.= 'auth.backend= "htpasswd"' . "\n";
$diroption_text.= 'auth.backend.htpasswd.userfile = "' . makeCorrectFile($this->settings['system']['apacheconf_htpasswddir'] . '/' . $filename) . '"' . "\n";
$this->needed_htpasswds[$filename] = $row_htpasswds['username'] . ':' . $row_htpasswds['password'] . "\n";
$diroption_text.= 'auth.require = ( ' . "\n";
$previous_domain_id = '1';
}
}
$diroption_text.= '"' . $row_htpasswds['path'] . '" =>' . "\n";
$diroption_text.= '(' . "\n";
$diroption_text.= ' "method" => "basic",' . "\n";
$diroption_text.= ' "realm" => "Restricted Area",' . "\n";
$diroption_text.= ' "require" => "user=' . $row_htpasswds['username'] . '"' . "\n";
$diroption_text.= ')' . "\n";
if($this->auth_backend_loaded[$domain['ssl_ipandport']] == 'yes')
{
$this->needed_htpasswds[$domain['ssl_ipandport']].= $diroption_text;
}
if($this->auth_backend_loaded[$domain['ipandport']] != 'yes')
{
$this->needed_htpasswds[$domain['ipandport']].= $diroption_text;
}
}
return ' auth.backend.htpasswd.userfile = "' . makeCorrectFile($this->settings['system']['apacheconf_htpasswddir'] . '/' . $filename) . '"' . "\n";
}
protected function getServerNames($domain)
{
$server_string = array();
$domain_name = ereg_replace('\.', '\.', $domain['domain']);
if($domain['iswildcarddomain'] == '1')
{
$server_string[] = '(^|\.)' . $domain_name . '$';
}
else
{
if($domain['wwwserveralias'] == '1')
{
$server_string[] = '^(www\.|)' . $domain_name . '$';
}
else
{
}
}
$alias_domains = $this->db->query('SELECT `domain`, `iswildcarddomain`, `wwwserveralias` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `aliasdomain`=\'' . $domain['id'] . '\'');
while(($alias_domain = $this->db->fetch_array($alias_domains)) !== false)
{
$alias_domain_name = ereg_replace('\.', '\.', $alias_domain['domain']);
if($alias_domain['iswildcarddomain'] == '1')
{
$server_string[] = '(^|\.)' . $alias_domain_name . '$';
}
else
{
if($alias_domain['wwwserveralias'] == '1')
{
$server_string[] = '^(www.)?' . $alias_domain_name;
}
else
{
$server_string[] = $alias_domain_name;
}
}
}
for ($i = 0;$i < sizeof($server_string);$i++)
{
$data = $server_string[$i];
if(sizeof($server_string) > 1)
{
if($i == 0)
{
$servernames_text = '(' . $data . '|';
}
elseif(sizeof($server_string) - 1 == $i)
{
$servernames_text.= $data . ')';
}
else
{
$servernames_text.= $data . '|';
}
}
else
{
$servernames_text = $data;
}
}
unset($data);
$servernames_text = '$HTTP["host"] =~ "' . $servernames_text . '"';
return $servernames_text;
}
protected function getWebroot($domain, $ssl)
{
$webroot_text = '';
if($domain['deactivated'] == '1'
&& $this->settings['system']['deactivateddocroot'] != '')
{
$webroot_text.= ' # Using docroot for deactivated users...' . "\n";
$webroot_text.= ' server.document-root = "' . $this->settings['system']['deactivateddocroot'] . "\"\n";
}
else
{
if($ssl === false
&& $domain['ssl_redirect'] == '1')
{
$webroot_text.= ' url.redirect = ( "^/(.*)" => "https://' . $domain['domain'] . '/$1" )' . "\n";
}
elseif(preg_match("#^https?://#i", $domain['documentroot']))
{
$webroot_text.= ' url.redirect = ( "^/(.*)" => "' . $domain['documentroot'] . '/$1" )' . "\n";
}
else
{
$webroot_text.= ' server.document-root = "' . makeCorrectDir($domain['documentroot']) . "\"\n";
}
}
return $webroot_text;
}
public function writeConfigs()
{
fwrite($this->debugHandler, ' lighttpd::writeConfigs: rebuilding ' . $this->settings['system']['apacheconf_vhost'] . "\n");
$this->logger->logAction(CRON_ACTION, LOG_INFO, "rebuilding " . $this->settings['system']['apacheconf_vhost']);
if(!isConfigDir($this->settings['system']['apacheconf_vhost']))
{
// Save one big file
foreach($this->lighttpd_data as $vhosts_filename => $vhost_content)
{
$vhosts_file.= $vhost_content . "\n\n";
}
$vhosts_filename = $this->settings['system']['apacheconf_vhost'];
// Apply header
$vhosts_file = '# ' . basename($vhosts_filename) . "\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" . $vhosts_file;
$vhosts_file_handler = fopen($vhosts_filename, 'w');
fwrite($vhosts_file_handler, $vhosts_file);
fclose($vhosts_file_handler);
}
else
{
if(!file_exists($this->settings['system']['apacheconf_vhost']))
{
fwrite($this->debugHandler, ' lighttpd::writeConfigs: mkdir ' . escapeshellarg(makeCorrectDir($this->settings['system']['apacheconf_vhost'])) . "\n");
$this->logger->logAction(CRON_ACTION, LOG_NOTICE, 'mkdir ' . escapeshellarg(makeCorrectDir($this->settings['system']['apacheconf_vhost'])));
safe_exec('mkdir ' . escapeshellarg(makeCorrectDir($this->settings['system']['apacheconf_vhost'])));
}
// Write a single file for every vhost
foreach($this->lighttpd_data as $vhosts_filename => $vhosts_file)
{
$this->known_filenames[] = basename($vhosts_filename);
// Apply header
$vhosts_file = '# ' . basename($vhosts_filename) . "\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" . $vhosts_file;
if(!empty($vhosts_filename))
{
$vhosts_file_handler = fopen($vhosts_filename, 'w');
fwrite($vhosts_file_handler, $vhosts_file);
fclose($vhosts_file_handler);
}
}
$this->wipeOutOldConfigs();
}
// Write the diroptions
if(isConfigDir($this->settings['system']['apacheconf_htpasswddir']))
{
foreach($this->needed_htpasswds as $key => $data)
{
if(!is_dir($this->settings['system']['apacheconf_htpasswddir']))
{
mkdir($this->settings['system']['apacheconf_htpasswddir']);
}
$filename = $this->settings['system']['apacheconf_htpasswddir'] . '/' . $key;
$htpasswd_handler = fopen($filename, 'w');
fwrite($htpasswd_handler, $data);
fclose($htpasswd_handler);
}
}
}
private function wipeOutOldConfigs()
{
fwrite($this->debugHandler, ' apache::wipeOutOldConfigs: cleaning ' . $this->settings['system']['apacheconf_vhost'] . "\n");
$this->logger->logAction(CRON_ACTION, LOG_INFO, "cleaning " . $this->settings['system']['apacheconf_vhost']);
if(isConfigDir($this->settings['system']['apacheconf_vhost'])
&& file_exists($this->settings['system']['apacheconf_vhost'])
&& is_dir($this->settings['system']['apacheconf_vhost']))
{
$vhost_file_dirhandle = opendir($this->settings['system']['apacheconf_vhost']);
while(false !== ($vhost_filename = readdir($vhost_file_dirhandle)))
{
if($vhost_filename != '.'
&& $vhost_filename != '..'
&& !in_array($vhost_filename, $this->known_filenames)
&& preg_match('/^(10|20|30)_syscp_ipandport_(.+)\.conf$/', $vhost_filename)
&& file_exists(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename)))
{
fwrite($this->debugHandler, ' apache::wipeOutOldConfigs: unlinking ' . $vhost_filename . "\n");
$this->logger->logAction(CRON_ACTION, LOG_NOTICE, 'unlinking ' . $vhost_filename);
unlink(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename));
}
}
}
}
}
?>

View File

@@ -68,7 +68,14 @@ while($row = $db->fetch_array($result_tasks))
}
elseif($settings['system']['webserver'] == "lighttpd")
{
$webserver = new lighttpd($db, $cronlog, $debugHandler, $settings);
if($settings['system']['mod_fcgid'] == 1)
{
$webserver = new lighttpd_fcgid($db, $cronlog, $debugHandler, $settings);
}
else
{
$webserver = new lighttpd($db, $cronlog, $debugHandler, $settings);
}
}
}

View File

@@ -119,7 +119,7 @@ $header
<if $settings['system']['mail_quota_enabled'] == 1>
<tr>
<td class="main_field_name">{$lng['customer']['email_quota']}: *</td>
<td class="main_field_display" nowrap="nowrap"><input type="text" class="textul" name="email_quota" value="" maxlength="9" />&nbsp;{$diskspace_ul}</td>
<td class="main_field_display" nowrap="nowrap"><input type="text" class="textul" name="email_quota" value="" maxlength="9" />&nbsp;{$email_quota_ul}</td>
</tr>
</if>
<tr>

View File

@@ -131,7 +131,7 @@ $header
</if>
<tr>
<td class="field_name_border_left">{$lng['admin']['installedversion']}:</td>
<td class="field_display">{$version} ({$dbversion})</td>
<td class="field_display">{$version}</td>
</tr>
<tr>
<td class="field_name_border_left">{$lng['admin']['latestversion']}:</td>
@@ -151,4 +151,4 @@ $header
</table>
<br />
<br />
$footer
$footer

View File

@@ -51,6 +51,10 @@ $header
<td class="field_name_border_left"><i>{PEAR_DIR}</i></td>
<td class="field_name">{$lng['admin']['phpconfig']['pear_dir']}</td>
</tr>
<tr>
<td class="field_name_border_left"><i>{OPEN_BASEDIR_C}</i></td>
<td class="field_name">{$lng['admin']['phpconfig']['open_basedir_c']}</td>
</tr>
<tr>
<td class="field_name_border_left"><i>{OPEN_BASEDIR}</i></td>
<td class="field_name">{$lng['admin']['phpconfig']['open_basedir']}</td>

View File

@@ -52,6 +52,10 @@ $header
<td class="field_name_border_left"><i>{PEAR_DIR}</i></td>
<td class="field_name">{$lng['admin']['phpconfig']['pear_dir']}</td>
</tr>
<tr>
<td class="field_name_border_left"><i>{OPEN_BASEDIR_C}</i></td>
<td class="field_name">{$lng['admin']['phpconfig']['open_basedir_c']}</td>
</tr>
<tr>
<td class="field_name_border_left"><i>{OPEN_BASEDIR}</i></td>
<td class="field_name">{$lng['admin']['phpconfig']['open_basedir']}</td>

View File

@@ -4,11 +4,11 @@
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td width="100%" class="footer">
<br />SysCP
<br />Froxlor
<if ($settings['admin']['show_version_login'] == '1' && $filename == 'index.php') || ($filename != 'index.php' && $settings['admin']['show_version_footer'] == '1')>
{$version} ({$dbversion})
{$version}
</if>
<a style="text-decoration:none;" href="index.php?page=easter&amp;action=egg">&copy;</a> 2003-2009 by <a href="http://www.syscp.org/" target="_blank">the SysCP Team</a>
&copy; 2009-2010 by <a href="http://www.froxlor.org/" target="_blank">the Froxlor Team</a>
<br />Theme: Luca Piona and Luca Longinotti
<if $lng['translator'] != ''>
<br />{$lng['panel']['translator']}: {$lng['translator']}

View File

@@ -11,14 +11,14 @@
</head>
<body style="margin: 0; padding: 0;"<if !isset($userinfo['loginname']) && !(isset($userinfo['loginname']) && $userinfo['loginname'] == '')> onload="document.loginform.loginname.focus()"</if>>
<!--
We request you retain the full copyright notice below including the link to www.syscp.org.
We request you retain the full copyright notice below including the link to www.froxlor.org.
This not only gives respect to the large amount of time given freely by the developers
but also helps build interest, traffic and use of SysCP. If you refuse
but also helps build interest, traffic and use of Froxlor. If you refuse
to include even this then support on our forums may be affected.
The SysCP Team : 2003-2007
The Froxlor Team : 2009-2010
// -->
<!--
Templates by Luca Piona (info@havanastudio.ch) and Luca Longinotti (chtekk@gentoo.org)
Templates based on work by Luca Piona (info@havanastudio.ch) and Luca Longinotti (chtekk@gentoo.org)
// -->
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>

View File

@@ -1,5 +1,5 @@
driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT
password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE username = '%u' OR email = '%u'
user_query = SELECT CONCAT(homedir, maildir) AS home, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'
driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT
password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE username = '%u' OR email = '%u'
user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'

View File

@@ -1,6 +1,20 @@
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
hosts: files dns
networks: files dns
services: db files
protocols: db files
rpc: db files
ethers: db files
netmasks: files
netgroup: files
bootparams: files
automount: files
aliases: files

View File

@@ -1,5 +1,5 @@
driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT
password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE username = '%u' OR email = '%u'
user_query = SELECT CONCAT(homedir, maildir) AS home, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'
driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT
password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE username = '%u' OR email = '%u'
user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'

View File

@@ -1,6 +1,20 @@
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
hosts: files dns
networks: files dns
services: db files
protocols: db files
rpc: db files
ethers: db files
netmasks: files
netgroup: files
bootparams: files
automount: files
aliases: files

View File

@@ -1,6 +1,20 @@
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
hosts: files dns
networks: files dns
services: db files
protocols: db files
rpc: db files
ethers: db files
netmasks: files
netgroup: files
bootparams: files
automount: files
aliases: files

View File

@@ -1,5 +1,5 @@
driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT
password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE username = '%u' OR email = '%u'
user_query = SELECT CONCAT(homedir, maildir) AS home, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'
driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT
password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE username = '%u' OR email = '%u'
user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'

View File

@@ -1,6 +1,20 @@
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd: compat mysql
group: compat mysql
shadow: compat mysql
hosts: files dns
networks: files dns
services: db files
protocols: db files
rpc: db files
ethers: db files
netmasks: files
netgroup: files
bootparams: files
automount: files
aliases: files