Merging d00ps hell lot of bugfixes
This commit is contained in:
124
TODO
Normal file
124
TODO
Normal 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
|
||||
@@ -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(
|
||||
),
|
||||
);
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -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'],
|
||||
|
||||
@@ -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'");
|
||||
|
||||
@@ -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');
|
||||
|
||||
# --------------------------------------------------------
|
||||
|
||||
|
||||
@@ -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')
|
||||
{
|
||||
|
||||
/*
|
||||
|
||||
@@ -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');
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -27,3 +27,5 @@ function getSetting($settinggroup, $varname)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -54,3 +54,5 @@ function loadSettings($settings_data, $db)
|
||||
|
||||
return $settings;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -41,3 +41,5 @@ function storeSettingDefaultIp($fieldname, $fielddata, $newfieldvalue)
|
||||
|
||||
return $returnvalue;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -41,3 +41,5 @@ function storeSettingHostname($fieldname, $fielddata, $newfieldvalue)
|
||||
|
||||
return $returnvalue;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -31,3 +31,5 @@ function storeSettingIpAddress($fieldname, $fielddata, $newfieldvalue)
|
||||
|
||||
return $returnvalue;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -42,3 +42,5 @@ function storeSettingMysqlAccessHost($fieldname, $fielddata, $newfieldvalue)
|
||||
|
||||
return $returnvalue;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -65,7 +65,7 @@ define('PACKAGE_ENABLED', 2);
|
||||
|
||||
// VERSION INFO
|
||||
|
||||
$version = '1.0';
|
||||
$version = '0.9';
|
||||
$dbversion = '2';
|
||||
|
||||
?>
|
||||
|
||||
@@ -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- & Filetemplates';
|
||||
$lng['admin']['templates']['email'] = 'E-mail & 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
|
||||
|
||||
|
||||
@@ -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ügen';
|
||||
$lng['admin']['templates']['template_edit'] = 'Vorlage bearbeiten';
|
||||
$lng['admin']['templates']['action'] = 'Aktion';
|
||||
$lng['admin']['templates']['email'] = 'E-Mail- & Dateivorlagen';
|
||||
$lng['admin']['templates']['email'] = 'E-Mail & Dateivorlagen';
|
||||
$lng['admin']['templates']['subject'] = 'Betreff';
|
||||
$lng['admin']['templates']['mailbody'] = 'Mailtext';
|
||||
$lng['admin']['templates']['createcustomer'] = 'Willkommensmail fü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ücksetzen';
|
||||
$lng['login']['email'] = 'E-Mail Adresse';
|
||||
$lng['login']['remind'] = 'Passwort zurücksetzen';
|
||||
$lng['login']['usernotfound'] = 'Fehler: Unbekannter Benutzer!';
|
||||
$lng['pwdreminder']['subject'] = 'SysCP - Passwort zurückgesetzt';
|
||||
$lng['pwdreminder']['body'] = 'Hallo %s,\n\nIhr SysCP Passwort wurde zurückgesetzt!\nDas neue Passwort lautet: %p\n\nVielen Dank,\nIhr SysCP-Team';
|
||||
$lng['pwdreminder']['subject'] = 'Froxlor - Passwort zurückgesetzt';
|
||||
$lng['pwdreminder']['body'] = 'Hallo %s,\n\nIhr Froxlor Passwort wurde zurückgesetzt!\nDas neue Passwort lautet: %p\n\nVielen Dank,\nIhr SysCP-Team';
|
||||
$lng['pwdreminder']['success'] = 'Passwort erfolgreich zurü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ählen';
|
||||
$lng['panel']['allow_modifications'] = 'Änderungen zulassen';
|
||||
$lng['domains']['add_date'] = 'Zu SysCP hinzugefügt';
|
||||
$lng['domains']['add_date'] = 'Zu Froxlor hinzugefügt';
|
||||
$lng['domains']['registration_date'] = 'Bei Registry hinzugefügt';
|
||||
$lng['domains']['topleveldomain'] = 'Top-Level-Domain';
|
||||
|
||||
@@ -956,12 +956,12 @@ $lng['error']['invalidautoresponder'] = 'Das angegebene Konto ist ungültig.
|
||||
$lng['serversettings']['autoresponder_active']['title'] = 'Abwesenheitsnachrichten-Modul verwenden';
|
||||
$lng['serversettings']['autoresponder_active']['description'] = 'Mö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ßzeile der Loginseite';
|
||||
$lng['admin']['show_version_footer']['title'] = 'Zeige SysCP Version in Fußzeile';
|
||||
$lng['admin']['show_version_footer']['description'] = 'Zeige SysCP Version in der Fuß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ßzeile der Loginseite';
|
||||
$lng['admin']['show_version_footer']['title'] = 'Zeige Froxlor Version in Fußzeile';
|
||||
$lng['admin']['show_version_footer']['description'] = 'Zeige Froxlor Version in der Fuß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ü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ür das temporäre Verzeichnis der Domain ersetzt.';
|
||||
$lng['admin']['phpconfig']['open_basedir_global'] = 'Wird mit der globalen Einstellung des Pfades ersetzt, der dem open_basedir hinzugefügt wird.';
|
||||
@@ -1004,7 +1005,7 @@ $lng['admin']['know_what_youre_doing'] = 'Ä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ü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ö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ö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ützt wird.';
|
||||
$lng['aps']['webserver_fcgid'] = 'Webserver - Von diesem Paket werden einige Webserver Module benö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ützt wird.';
|
||||
$lng['aps']['webserver_htaccess'] = 'Webserver - Dieses Paket benö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ützt.';
|
||||
$lng['aps']['misc_charset'] = 'Sonstiges - In der aktuellen Version wird eine Validierung gegen einen gewissen Zeichensatz im Installationsassitenten nicht unterstü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ählten Aktionen wirklich durchführen?</strong><br/><br/>Daten, die durch diese Vorgänge möglicherweise gelöscht werden, können anschließ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ür weitere Informationen.';
|
||||
$lng['aps']['initerror_customer'] = 'Es gibt momentan ein Problem mit dieser Froxlor Erweiterung. Wenden Sie sich an Ihren Administrator fü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ählte Admin existiert nicht.
|
||||
// ADDED IN 1.2.19-svn37
|
||||
|
||||
$lng['serversettings']['system_realtime_port']['title'] = 'Port fü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ö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)';
|
||||
|
||||
?>
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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'],
|
||||
|
||||
@@ -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);
|
||||
|
||||
802
scripts/cron_tasks.inc.http.25.lighttpd_fcgid.php
Normal file
802
scripts/cron_tasks.inc.http.25.lighttpd_fcgid.php
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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" /> {$diskspace_ul}</td>
|
||||
<td class="main_field_display" nowrap="nowrap"><input type="text" class="textul" name="email_quota" value="" maxlength="9" /> {$email_quota_ul}</td>
|
||||
</tr>
|
||||
</if>
|
||||
<tr>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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&action=egg">©</a> 2003-2009 by <a href="http://www.syscp.org/" target="_blank">the SysCP Team</a>
|
||||
© 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']}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user