diff --git a/TODO b/TODO index b882e88b..943b1b8d 100644 --- a/TODO +++ b/TODO @@ -11,11 +11,11 @@ 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 +FIXED 0001275 Setting up Traffic limit is limited to 999 GB +FIXED 0001273 APS-Installer +FIXED 0001271 cant install the package magento +FIXED 0001270 xinet reltime update mistake +FIXED 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 @@ -32,12 +32,12 @@ WONTFIX 0001258 Make invoices immediately 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 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 +WONTFIX 0001252 Backup Cronjob for Customers +FIXED 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 +FIXED 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 @@ -46,19 +46,19 @@ FIXED 0001246 wrong variable assigned in /templates/admin/customers/custom 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 +WONTIFX 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 +FIXED 0001239 awstats configs get cluttered up after domain deletion +FIXED 0001228 Domain deletion fails +FIXED 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 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 +FIXED 0001223 Postfix proposed SQL-query in mysql-virtual_alias_maps.cf: use TRIM() +FIXED 0001221 syscp xinet.d - no need to edit /etc/services +FIXED 0001217 SysCP Realtime Support +FIXED 0001209 APS crashs when installing magento 0001017 Proftpd - Quota should be added 0001016 Pureftpd - quota should be added 0001206 crontabs not terminating @@ -70,36 +70,36 @@ FIXED 0001215 php.ini: open_basedir error 0001207 FTP Passwö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 +FIXED 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 +FIXED 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 +FIXED 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 +FIXED 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 +FIXED 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 +FIXED 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 +WONTFIX 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. @@ -110,10 +110,10 @@ FIXED 0001013 lighttpd - every customer should have his own php.ini 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 +WONTFIX 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 +FIXED 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 tag (left navigation) @@ -121,4 +121,4 @@ WONTFIX 0001098 Possibillity to dissable "Catchall" for mails 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 \ No newline at end of file + 0001004 Ressources / Domains - Standard subdomains should be separrated from normal Domains diff --git a/actions/admin/settings/185.spf.php b/actions/admin/settings/185.spf.php new file mode 100644 index 00000000..a473da18 --- /dev/null +++ b/actions/admin/settings/185.spf.php @@ -0,0 +1,44 @@ + + * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt + * @package Panel + * @version $Id:$ + */ + +return array( + 'groups' => array( + 'spf' => array( + 'title' => $lng['admin']['spfsettings'], + 'fields' => array( + 'spf_enabled' => array( + 'label' => $lng['spf']['use_spf'], + 'settinggroup' => 'spf', + 'varname' => 'use_spf', + 'type' => 'bool', + 'default' => false, + 'save_method' => 'storeSettingField' + ), + 'spf_entry' => array( + 'label' => $lng['spf']['spf_entry'], + 'settinggroup' => 'spf', + 'varname' => 'spf_entry', + 'type' => 'string', + 'default' => '@ IN TXT "v=spf1 a mx -all"', + 'save_method' => 'storeSettingField' + ) + ) + ) + ) + ); + +?> diff --git a/admin_configfiles.php b/admin_configfiles.php index 21556387..79e25434 100644 --- a/admin_configfiles.php +++ b/admin_configfiles.php @@ -94,7 +94,8 @@ if($userinfo['change_serversettings'] == '1') '' => $settings['system']['vmail_uid'], '' => $settings['system']['vmail_gid'], '' => $settings['system']['awstats_path'], - '' => ($settings['system']['use_ssl'] == '1') ? 'imaps pop3s' : '' + '' => ($settings['system']['use_ssl'] == '1') ? 'imaps pop3s' : '', + '' => $settings['system']['realtime_port'] ); $files = ''; $configpage = ''; diff --git a/admin_customers.php b/admin_customers.php index 19fe5c1b..7889f254 100644 --- a/admin_customers.php +++ b/admin_customers.php @@ -246,12 +246,10 @@ if($page == 'customers' { $name = validate($_POST['name'], 'name'); $firstname = validate($_POST['firstname'], 'first name'); - $title = validate($_POST['title'], 'title'); $company = validate($_POST['company'], 'company'); $street = validate($_POST['street'], 'street'); $zipcode = validate($_POST['zipcode'], 'zipcode', '/^[0-9 \-A-Z]*$/'); $city = validate($_POST['city'], 'city'); - $country = validate($_POST['country'], 'country'); $phone = validate($_POST['phone'], 'phone', '/^[0-9\- \+\(\)\/]*$/'); $fax = validate($_POST['fax'], 'fax', '/^[0-9\- \+\(\)\/]*$/'); $email = $idna_convert->encode(validate($_POST['email'], 'email')); @@ -442,37 +440,6 @@ if($page == 'customers' $guid = intval($settings['system']['lastguid']) + 1; $documentroot = makeCorrectDir($settings['system']['documentroot_prefix'] . '/' . $loginname); - if($service_active == 1) - { - $service_active = '1'; - - if(!isset($servicestart_date) - || $servicestart_date == '0000-00-00') - { - $servicestart_date = date('Y-m-d'); - } - } - else - { - $service_active = '0'; - $servicestart_date = '0000-00-00'; - } - - if($calc_tax != '1') - { - $calc_tax = '0'; - } - - if($interval_payment != '1') - { - $interval_payment = '0'; - } - - if(!isset($lng['customer']['payment_methods'][$payment_method])) - { - $payment_method = 0; - } - if(file_exists($documentroot)) { standard_error('documentrootexists', $documentroot); @@ -493,7 +460,7 @@ if($page == 'customers' $password = substr(md5(uniqid(microtime(), 1)), 12, 6); } - $result = $db->query("INSERT INTO `" . TABLE_PANEL_CUSTOMERS . "` (`adminid`, `loginname`, `password`, `name`, `firstname`, `title`, `company`, `street`, `zipcode`, `city`, `country`, `phone`, `fax`, `email`, `customernumber`, `def_language`, `documentroot`, `guid`, `diskspace`, `traffic`, `subdomains`, `emails`, `email_accounts`, `email_forwarders`, `email_quota`, `ftps`, `tickets`, `mysqls`, `standardsubdomain`, `phpenabled`, `imap`, `pop3`, `contract_date`, `contract_number`, `taxid`, `included_domains_qty`, `included_domains_tld`, `additional_traffic_fee`, `additional_traffic_unit`,`additional_diskspace_fee`, `additional_diskspace_unit`, `interval_fee`, `interval_length`, `interval_type`, `interval_payment`, `setup_fee`, `taxclass`, `service_active`, `servicestart_date`, `term_of_payment`, `calc_tax`, `payment_every`, `payment_method`, `bankaccount_holder`, `bankaccount_number`, `bankaccount_blz`, `bankaccount_bank`, `additional_service_description`, `aps_packages`) VALUES ('" . (int)$userinfo['adminid'] . "', '" . $db->escape($loginname) . "', '" . md5($password) . "', '" . $db->escape($name) . "', '" . $db->escape($firstname) . "', '" . $db->escape($title) . "', '" . $db->escape($company) . "', '" . $db->escape($street) . "', '" . $db->escape($zipcode) . "', '" . $db->escape($city) . "', '" . $db->escape($country) . "', '" . $db->escape($phone) . "', '" . $db->escape($fax) . "', '" . $db->escape($email) . "', '" . $db->escape($customernumber) . "','" . $db->escape($def_language) . "', '" . $db->escape($documentroot) . "', '" . $db->escape($guid) . "', '" . $db->escape($diskspace) . "', '" . $db->escape($traffic) . "', '" . $db->escape($subdomains) . "', '" . $db->escape($emails) . "', '" . $db->escape($email_accounts) . "', '" . $db->escape($email_forwarders) . "', '" . $db->escape($email_quota) . "', '" . $db->escape($ftps) . "', '" . $db->escape($tickets) . "', '" . $db->escape($mysqls) . "', '0', '" . $db->escape($phpenabled) . "', '" . $db->escape($email_imap) . "', '" . $db->escape($email_pop3) . "', '" . $db->escape($contract_date) . "', '" . $db->escape($contract_number) . "', '" . $db->escape($taxid) . "', '" . $db->escape($included_domains_qty) . "', '" . $db->escape($included_domains_tld) . "', '" . $db->escape($additional_traffic_fee) . "', '" . $db->escape($additional_traffic_unit) . "','" . $db->escape($additional_diskspace_fee) . "', '" . $db->escape($additional_diskspace_unit) . "','" . $db->escape($interval_fee) . "', '" . $db->escape($interval_length) . "', '" . $db->escape($interval_type) . "', '" . $db->escape($interval_payment) . "', '" . $db->escape($setup_fee) . "', '" . $db->escape($taxclass) . "', '" . $db->escape($service_active) . "', '" . $db->escape($servicestart_date) . "', '" . $db->escape($term_of_payment) . "', '" . $db->escape($calc_tax) . "', '" . $db->escape($payment_every) . "', '" . $db->escape($payment_method) . "', '" . $db->escape($bankaccount_holder) . "', '" . $db->escape($bankaccount_number) . "', '" . $db->escape($bankaccount_blz) . "', '" . $db->escape($bankaccount_bank) . "', '" . $db->escape($additional_service_description) . "', " . (int)$number_of_aps_packages . ")"); + $result = $db->query("INSERT INTO `" . TABLE_PANEL_CUSTOMERS . "` (`adminid`, `loginname`, `password`, `name`, `firstname`, `company`, `street`, `zipcode`, `city`, `phone`, `fax`, `email`, `customernumber`, `def_language`, `documentroot`, `guid`, `diskspace`, `traffic`, `subdomains`, `emails`, `email_accounts`, `email_forwarders`, `email_quota`, `ftps`, `tickets`, `mysqls`, `standardsubdomain`, `phpenabled`, `imap`, `pop3`, `aps_packages`) VALUES ('" . (int)$userinfo['adminid'] . "', '" . $db->escape($loginname) . "', '" . md5($password) . "', '" . $db->escape($name) . "', '" . $db->escape($firstname) . "', '" . $db->escape($company) . "', '" . $db->escape($street) . "', '" . $db->escape($zipcode) . "', '" . $db->escape($city) . "', '" . $db->escape($phone) . "', '" . $db->escape($fax) . "', '" . $db->escape($email) . "', '" . $db->escape($customernumber) . "','" . $db->escape($def_language) . "', '" . $db->escape($documentroot) . "', '" . $db->escape($guid) . "', '" . $db->escape($diskspace) . "', '" . $db->escape($traffic) . "', '" . $db->escape($subdomains) . "', '" . $db->escape($emails) . "', '" . $db->escape($email_accounts) . "', '" . $db->escape($email_forwarders) . "', '" . $db->escape($email_quota) . "', '" . $db->escape($ftps) . "', '" . $db->escape($tickets) . "', '" . $db->escape($mysqls) . "', '0', '" . $db->escape($phpenabled) . "', '" . $db->escape($email_imap) . "', '" . $db->escape($email_pop3) . "', '" . (int)$number_of_aps_packages . "')"); $customerid = $db->insert_id(); $admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` + 1"; @@ -683,12 +650,10 @@ if($page == 'customers' { $name = validate($_POST['name'], 'name'); $firstname = validate($_POST['firstname'], 'first name'); - $title = validate($_POST['title'], 'title'); $company = validate($_POST['company'], 'company'); $street = validate($_POST['street'], 'street'); $zipcode = validate($_POST['zipcode'], 'zipcode', '/^[0-9 \-A-Z]*$/'); $city = validate($_POST['city'], 'city'); - $country = validate($_POST['country'], 'country'); $phone = validate($_POST['phone'], 'phone', '/^[0-9\- \+\(\)\/]*$/'); $fax = validate($_POST['fax'], 'fax', '/^[0-9\- \+\(\)\/]*$/'); $email = $idna_convert->encode(validate($_POST['email'], 'email')); @@ -906,7 +871,7 @@ if($page == 'customers' $db->query("UPDATE `" . TABLE_MAIL_USERS . "` SET `imap`='" . (int)$email_imap . "' WHERE `customerid`='" . (int)$id . "'"); } - $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `name`='" . $db->escape($name) . "', `firstname`='" . $db->escape($firstname) . "', `title`='" . $db->escape($title) . "', `company`='" . $db->escape($company) . "', `street`='" . $db->escape($street) . "', `zipcode`='" . $db->escape($zipcode) . "', `city`='" . $db->escape($city) . "', `country`='" . $db->escape($country) . "', `phone`='" . $db->escape($phone) . "', `fax`='" . $db->escape($fax) . "', `email`='" . $db->escape($email) . "', `customernumber`='" . $db->escape($customernumber) . "', `def_language`='" . $db->escape($def_language) . "', `password` = '" . $password . "', `diskspace`='" . $db->escape($diskspace) . "', `traffic`='" . $db->escape($traffic) . "', `subdomains`='" . $db->escape($subdomains) . "', `emails`='" . $db->escape($emails) . "', `email_accounts` = '" . $db->escape($email_accounts) . "', `email_forwarders`='" . $db->escape($email_forwarders) . "', `ftps`='" . $db->escape($ftps) . "', `tickets`='" . $db->escape($tickets) . "', `mysqls`='" . $db->escape($mysqls) . "', `deactivated`='" . $db->escape($deactivated) . "', `phpenabled`='" . $db->escape($phpenabled) . "', `email_quota`='" . $db->escape($email_quota) . "', `imap`='" . $db->escape($email_imap) . "', `pop3`='" . $db->escape($email_pop3) . "', `contract_date`='" . $db->escape($contract_date) . "', `contract_number`='" . $db->escape($contract_number) . "', `taxid`='" . $db->escape($taxid) . "', `included_domains_qty`='" . $db->escape($included_domains_qty) . "', `included_domains_tld`='" . $db->escape($included_domains_tld) . "', `additional_traffic_fee`='" . $db->escape($additional_traffic_fee) . "', `additional_traffic_unit`='" . $db->escape($additional_traffic_unit) . "', `additional_diskspace_fee`='" . $db->escape($additional_diskspace_fee) . "', `additional_diskspace_unit`='" . $db->escape($additional_diskspace_unit) . "', `interval_fee`='" . $db->escape($interval_fee) . "', `interval_length`='" . $db->escape($interval_length) . "', `interval_type`='" . $db->escape($interval_type) . "', `interval_payment`='" . $db->escape($interval_payment) . "', `setup_fee`='" . $db->escape($setup_fee) . "', `taxclass`='" . $db->escape($taxclass) . "', `service_active`='" . $db->escape($service_active) . "', `servicestart_date`='" . $db->escape($servicestart_date) . "', `serviceend_date`='" . $db->escape($serviceend_date) . "', `term_of_payment`='" . $db->escape($term_of_payment) . "', `calc_tax`='" . $db->escape($calc_tax) . "', `payment_every`='" . $db->escape($payment_every) . "', `payment_method`='" . $db->escape($payment_method) . "', `bankaccount_holder`='" . $db->escape($bankaccount_holder) . "', `bankaccount_number`='" . $db->escape($bankaccount_number) . "', `bankaccount_blz`='" . $db->escape($bankaccount_blz) . "', `bankaccount_bank`='" . $db->escape($bankaccount_bank) . "', `additional_service_description`='" . $db->escape($additional_service_description) . "', `aps_packages`=" . (int)$number_of_aps_packages . " WHERE `customerid`='" . (int)$id . "'"); + $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `name`='" . $db->escape($name) . "', `firstname`='" . $db->escape($firstname) . "', `company`='" . $db->escape($company) . "', `street`='" . $db->escape($street) . "', `zipcode`='" . $db->escape($zipcode) . "', `city`='" . $db->escape($city) . "', `phone`='" . $db->escape($phone) . "', `fax`='" . $db->escape($fax) . "', `email`='" . $db->escape($email) . "', `customernumber`='" . $db->escape($customernumber) . "', `def_language`='" . $db->escape($def_language) . "', `password` = '" . $password . "', `diskspace`='" . $db->escape($diskspace) . "', `traffic`='" . $db->escape($traffic) . "', `subdomains`='" . $db->escape($subdomains) . "', `emails`='" . $db->escape($emails) . "', `email_accounts` = '" . $db->escape($email_accounts) . "', `email_forwarders`='" . $db->escape($email_forwarders) . "', `ftps`='" . $db->escape($ftps) . "', `tickets`='" . $db->escape($tickets) . "', `mysqls`='" . $db->escape($mysqls) . "', `deactivated`='" . $db->escape($deactivated) . "', `phpenabled`='" . $db->escape($phpenabled) . "', `email_quota`='" . $db->escape($email_quota) . "', `imap`='" . $db->escape($email_imap) . "', `pop3`='" . $db->escape($email_pop3) . "', `aps_packages`='" . (int)$number_of_aps_packages . "' WHERE `customerid`='" . (int)$id . "'"); $admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` "; if($mysqls != '-1' diff --git a/admin_index.php b/admin_index.php index 49442c69..8c062583 100644 --- a/admin_index.php +++ b/admin_index.php @@ -84,7 +84,7 @@ if($page == 'overview') if((isset($_GET['lookfornewversion']) && $_GET['lookfornewversion'] == 'yes') || (isset($lookfornewversion) && $lookfornewversion == 'yes')) { - $latestversion = @file('http://version.syscp.org/SysCP/legacy/' . $version . '-' . $dbversion ); + $latestversion = @file('http://version.froxlor.org/legacy/' . $version); if(is_array($latestversion) && count($latestversion) >= 2) @@ -103,7 +103,7 @@ if($page == 'overview') } else { - redirectTo('http://version.syscp.org/SysCP/legacy/' . $version . '-' . $dbversion . '/pretty', NULL); + redirectTo('http://version.froxlor.org/legacy/' . $version . '/pretty', NULL); } } else diff --git a/customer_traffic.php b/customer_traffic.php index 758d5e81..fcfc09ec 100644 --- a/customer_traffic.php +++ b/customer_traffic.php @@ -78,7 +78,7 @@ if(!is_null($month) AND `month` = '" . $month . "' AND `year` = '" . $year . "'"); rsort($row = mysql_fetch_row($result)); - $traf['max'] = $row[0]; + $traf['max'] = ($row[0] > $row[1] ? ($row[0] > $row[2] ? $row[0] : $row[2]) : ($row[1] > $row[2] ? $row[1] : $row[2]));; $result = $db->query("SELECT SUM(`http`) as 'http', SUM(`ftp_up`) AS 'ftp_up', SUM(`ftp_down`) as 'ftp_down', SUM(`mail`) as 'mail', `day`, `month`, `year` @@ -185,7 +185,7 @@ else WHERE `customerid` = '" . $userinfo['customerid'] . "' GROUP BY CONCAT(`year`,`month`) ORDER BY CONCAT(`year`,`month`) DESC LIMIT 12) ORDER BY sum DESC LIMIT 1"); $row = $db->fetch_array($result); - $traf['max'] = $row['sum']; + $traf['max'] = ($row[0] > $row[1] ? ($row[0] > $row[2] ? $row[0] : $row[2]) : ($row[1] > $row[2] ? $row[1] : $row[2]));; $result = $db->query("SELECT `month`, `year`, SUM(`http`) AS http, SUM(`ftp_up`) AS ftp_up, SUM(`ftp_down`) AS ftp_down, SUM(`mail`) AS mail FROM `" . TABLE_PANEL_TRAFFIC . "` WHERE `customerid` = '" . $userinfo['customerid'] . "' GROUP BY CONCAT(`year`,`month`) ORDER BY CONCAT(`year`,`month`) DESC LIMIT 12"); diff --git a/install/syscp.sql b/install/froxlor.sql similarity index 98% rename from install/syscp.sql rename to install/froxlor.sql index c98ea991..8ddb6b8b 100644 --- a/install/syscp.sql +++ b/install/froxlor.sql @@ -154,8 +154,8 @@ CREATE TABLE `panel_admins` ( `tickets_used` int(15) NOT NULL default '0', `subdomains` int(15) NOT NULL default '0', `subdomains_used` int(15) NOT NULL default '0', - `traffic` int(15) NOT NULL default '0', - `traffic_used` int(15) NOT NULL default '0', + `traffic` bigint(30) NOT NULL default '0', + `traffic_used` bigint(30) NOT NULL default '0', `deactivated` tinyint(1) NOT NULL default '0', `lastlogin_succ` int(11) unsigned NOT NULL default '0', `lastlogin_fail` int(11) unsigned NOT NULL default '0', @@ -488,7 +488,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (57, 'system', 'last_archive_run', '000000'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (58, 'ticket', 'enabled', '1'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (59, 'ticket', 'concurrently_open', '5'); -INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (60, 'ticket', 'noreply_name', 'SysCP Support'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (60, 'ticket', 'noreply_name', 'Froxlor Support'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (61, 'system', 'mod_fcgid_configdir', '/var/www/php-fcgi-scripts'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (62, 'system', 'mod_fcgid_tmpdir', '/var/customers/tmp'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (63, 'ticket', 'reset_cycle', '2'); @@ -500,7 +500,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (69, 'logger', 'severity', '1'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (70, 'system','ssl_cert_file','/etc/apache2/apache2.pem'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (71, 'system','use_ssl','1'); -INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (72, 'system','openssl_cnf','[ req ]\r\ndefault_bits = 1024\r\ndistinguished_name = req_distinguished_name\r\nattributes = req_attributes\r\nprompt = no\r\noutput_password =\r\ninput_password =\r\n[ req_distinguished_name ]\r\nC = DE\r\nST = syscp\r\nL = syscp \r\nO = Testcertificate\r\nOU = syscp \r\nCN = @@domain_name@@\r\nemailAddress = @@email@@ \r\n[ req_attributes ]\r\nchallengePassword =\r\n'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (72, 'system','openssl_cnf','[ req ]\r\ndefault_bits = 1024\r\ndistinguished_name = req_distinguished_name\r\nattributes = req_attributes\r\nprompt = no\r\noutput_password =\r\ninput_password =\r\n[ req_distinguished_name ]\r\nC = DE\r\nST = froxlor\r\nL = froxlor \r\nO = Testcertificate\r\nOU = froxlor \r\nCN = @@domain_name@@\r\nemailAddress = @@email@@ \r\n[ req_attributes ]\r\nchallengePassword =\r\n'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (73, 'system', 'default_vhostconf', ''); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (74, 'system', 'mail_quota_enabled', '0'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (75, 'system', 'mail_quota', '100'); @@ -509,7 +509,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (78, 'system', 'webalizer_enabled', '1'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (79, 'system', 'awstats_enabled', '0'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (80, 'system', 'awstats_domain_file', '/etc/awstats/'); -INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (81, 'system', 'awstats_model_file', '/etc/awstats/awstats.model.conf.syscp'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (81, 'system', 'awstats_model_file', '/etc/awstats/awstats.model.conf.froxlor'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (82, 'dkim', 'dkim_prefix', '/etc/postfix/dkim/'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (83, 'dkim', 'dkim_domains', 'domains'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (84, 'dkim', 'dkim_dkimkeys', 'dkim-keys.conf'); @@ -547,6 +547,8 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (116, 'system','ssl_key_file','/etc/apache2/apache2.key'); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (117, 'system','ssl_ca_file',''); INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (118, 'panel', 'frontend', 'froxlor'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (119, 'spf', 'use_spf', '0'); +INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (120, 'spf', 'spf_entry', '@ IN TXT "v=spf1 a mx -all"'); # -------------------------------------------------------- diff --git a/install/install.php b/install/install.php index 8154ab29..ce24a675 100644 --- a/install/install.php +++ b/install/install.php @@ -99,14 +99,14 @@ function page_header() @@ -132,7 +132,7 @@ function page_footer()
@@ -370,6 +370,21 @@ if(isset($_POST['installstep']) =")) + { + status_message('red', $lng['install']['notinstalled']); + $_die = true; + } + else + { + status_message('green', 'OK'); + } + + status_message('begin', $lng['install']['phpmysql']); if(!extension_loaded('mysql')) @@ -394,6 +409,18 @@ if(isset($_POST['installstep']) status_message('green', 'OK'); } + status_message('begin', $lng['install']['phpposix']); + + if(!extension_loaded('posix')) + { + status_message('red', $lng['install']['notinstalled']); + $_die = true; + } + else + { + status_message('green', 'OK'); + } + status_message('begin', $lng['install']['phpbcmath']); if(!extension_loaded('bcmath')) @@ -422,7 +449,7 @@ if(isset($_POST['installstep']) if($_die) { - status_message('begin', $lng['install']['diedbecauseofextensions']); + status_message('begin', $lng['install']['diedbecauseofrequirements']); die(); } @@ -442,7 +469,7 @@ if(isset($_POST['installstep']) if($result) { - $filename = "/tmp/syscp_backup_" . date(YmdHi) . ".sql"; + $filename = "/tmp/froxlor_backup_" . date(YmdHi) . ".sql"; if(is_file("/usr/bin/mysqldump")) { @@ -475,7 +502,7 @@ if(isset($_POST['installstep']) $db_root->query("FLUSH PRIVILEGES;"); status_message('green', 'OK'); - //then we have to create a new user and database for the syscp unprivileged mysql access + //then we have to create a new user and database for the froxlor unprivileged mysql access status_message('begin', $lng['install']['create_mysqluser_and_db']); $db_root->query("CREATE DATABASE `" . $db_root->escape(str_replace('`', '', $mysql_database)) . "`"); @@ -504,13 +531,13 @@ if(isset($_POST['installstep']) $mysql_access_host = implode(',', $mysql_access_host_array); status_message('green', 'OK'); - //now a new database and the new syscp-unprivileged-mysql-account have been created and we can fill it now with the data. + //now a new database and the new froxlor-unprivileged-mysql-account have been created and we can fill it now with the data. status_message('begin', $lng['install']['testing_new_db']); $db = new db($mysql_host, $mysql_unpriv_user, $mysql_unpriv_pass, $mysql_database); status_message('green', 'OK'); status_message('begin', $lng['install']['importing_data']); - $db_schema = './syscp.sql'; + $db_schema = './froxlor.sql'; $sql_query = @file_get_contents($db_schema, 'r'); $sql_query = remove_remarks($sql_query); $sql_query = split_sql_file($sql_query, ';'); @@ -555,14 +582,14 @@ if(isset($_POST['installstep']) { $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/apache2/sites-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_vhost'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/apache2/sites-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_diroptions'"); - $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/apache2/syscp-htpasswd/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_htpasswddir'"); + $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/apache2/froxlor-htpasswd/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_htpasswddir'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/init.d/apache2 reload' WHERE `settinggroup` = 'system' AND `varname` = 'apachereload_command'"); } elseif($webserver == "lighttpd") { $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/conf-enabled/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_vhost'"); - $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/syscp-diroptions/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_diroptions'"); - $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/syscp-htpasswd/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_htpasswddir'"); + $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/froxlor-diroptions/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_diroptions'"); + $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/froxlor-htpasswd/' WHERE `settinggroup` = 'system' AND `varname` = 'apacheconf_htpasswddir'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/init.d/lighttpd reload' WHERE `settinggroup` = 'system' AND `varname` = 'apachereload_command'"); $db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '/etc/lighttpd/lighttpd.pem' WHERE `settinggroup` = 'system' AND `varname` = 'ssl_cert_file'"); } @@ -632,7 +659,7 @@ if(isset($_POST['installstep']) status_message('begin', $lng['install']['creating_configfile']); $userdata = "= 5.2'; +$lng['install']['phpposix'] = 'Testing if PHP posix-extension is installed...'; + ?> diff --git a/install/lng/german.lng.php b/install/lng/german.lng.php index 3b3aa22d..7b82f7db 100644 --- a/install/lng/german.lng.php +++ b/install/lng/german.lng.php @@ -58,7 +58,7 @@ $lng['install']['syscp_succ_installed'] = 'SysCP wurde erfolgreich installiert.' $lng['install']['click_here_to_login'] = 'Hier geht es weiter zum Login-Fenster.'; $lng['install']['phpmysql'] = 'Teste, ob die PHP MySQL-Erweiterung installiert ist...'; $lng['install']['phpfilter'] = 'Teste, ob die PHP Filter-Erweiterung installiert ist...'; -$lng['install']['diedbecauseofextensions'] = 'Kann SysCP ohne diese Erweiterungen nicht installieren! Breche ab...'; +$lng['install']['diedbecauseofrequirements'] = 'Kann SysCP ohne diese Voraussetzungen nicht installieren! Breche ab...'; $lng['install']['notinstalled'] = 'nicht installiert!'; $lng['install']['phpbcmath'] = 'Teste, ob die PHP bcmath-Erweiterung installiert ist...'; $lng['install']['bcmathdescription'] = 'Traffic-Berechnungs bezogene Funktionen stehen nicht vollständig zur Verfügung!'; @@ -73,4 +73,10 @@ $lng['install']['httpgroup'] = 'HTTP Gruppenname'; $lng['install']['webserver'] = 'Webserver'; +/* + * Added in Froxlor 0.9 + */ +$lng['install']['phpversion'] = 'Prüfe PHP Version >= 5.2'; +$lng['install']['phpposix'] = 'Teste, ob die PHP Posix-Erweiterung installiert ist...'; + ?> diff --git a/install/updates/froxlor/upgrade_syscp.inc.php b/install/updates/froxlor/upgrade_syscp.inc.php index ebc15149..fa164cf9 100644 --- a/install/updates/froxlor/upgrade_syscp.inc.php +++ b/install/updates/froxlor/upgrade_syscp.inc.php @@ -194,6 +194,12 @@ if($settings['panel']['frontend'] == 'froxlor' $db->query("DELETE FROM `" . TABLE_PANEL_SETTINGS . "` WHERE `settinggroup` = 'billing';"); + $db->query("ALTER TABLE `" . TABLE_PANEL_ADMINS . "` + MODIFY `traffic` BIGINT(30), + MODIFY `traffic_used` BIGINT(30)"); + + $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (119, 'spf', 'use_spf', '0');"); + $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (120, 'spf', 'spf_entry', '@ IN TXT \"v=spf1 a mx -all\"');"); } ?> diff --git a/lib/classes/aps/class.ApsParser.php b/lib/classes/aps/class.ApsParser.php index 17c636ae..8cff795e 100644 --- a/lib/classes/aps/class.ApsParser.php +++ b/lib/classes/aps/class.ApsParser.php @@ -2924,7 +2924,7 @@ class ApsParser $Groupname = ''; } - $Value = GetInstallationValue($PackageId, $CustomerId, strval($Setting['id'])); + $Value = self::GetInstallationValue($PackageId, $CustomerId, strval($Setting['id'])); if($Value) { diff --git a/lib/classes/ticket/class.ticket.php b/lib/classes/ticket/class.ticket.php index 8a67bc1c..99d98f95 100644 --- a/lib/classes/ticket/class.ticket.php +++ b/lib/classes/ticket/class.ticket.php @@ -135,7 +135,7 @@ class ticket private function readData() { if(isset($this->tid) - && $this->tid != - 1) + && $this->tid != - 1) { $_ticket = $this->db->query_first('SELECT * FROM `' . TABLE_PANEL_TICKETS . '` WHERE `id` = "' . $this->tid . '"'); $this->Set('customer', $_ticket['customerid'], true, false); @@ -161,7 +161,7 @@ class ticket public function Insert() { - $this->db->query("INSERT INTO `" . TABLE_PANEL_TICKETS . "` + $this->db->query("INSERT INTO `" . TABLE_PANEL_TICKETS . "` (`customerid`, `adminid`, `category`, @@ -201,7 +201,7 @@ class ticket { // Update "main" ticket - $this->db->query('UPDATE `' . TABLE_PANEL_TICKETS . '` SET + $this->db->query('UPDATE `' . TABLE_PANEL_TICKETS . '` SET `priority` = "' . (int)$this->Get('priority') . '", `lastchange` = "' . (int)$this->Get('lastchange') . '", `status` = "' . (int)$this->Get('status') . '", @@ -256,7 +256,7 @@ class ticket { // Get e-mail message for customer - $usr = $this->db->query_first('SELECT `name`, `firstname`, `email` + $usr = $this->db->query_first('SELECT `name`, `firstname`, `email` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `customerid` = "' . (int)$customerid . '"'); $replace_arr = array( @@ -272,13 +272,13 @@ class ticket ); } - $result = $this->db->query_first('SELECT `value` FROM `' . TABLE_PANEL_TEMPLATES . '` + $result = $this->db->query_first('SELECT `value` FROM `' . TABLE_PANEL_TEMPLATES . '` WHERE `adminid`=\'' . (int)$this->userinfo['adminid'] . '\' AND `language`=\'' . $this->db->escape($this->userinfo['def_language']) . '\' AND `templategroup`=\'mails\' AND `varname`=\'' . $template_subject . '\''); $mail_subject = html_entity_decode(replace_variables((($result['value'] != '') ? $result['value'] : $default_subject), $replace_arr)); - $result = $this->db->query_first('SELECT `value` FROM `' . TABLE_PANEL_TEMPLATES . '` + $result = $this->db->query_first('SELECT `value` FROM `' . TABLE_PANEL_TEMPLATES . '` WHERE `adminid`=\'' . (int)$this->userinfo['adminid'] . '\' AND `language`=\'' . $this->db->escape($this->userinfo['def_language']) . '\' AND `templategroup`=\'mails\' @@ -325,7 +325,7 @@ class ticket static public function addCategory($_db, $_category = null, $_admin = 1) { if($_category != null - && $_category != '') + && $_category != '') { $_db->query('INSERT INTO `' . TABLE_PANEL_TICKET_CATS . '` (`name`, `adminid`) VALUES ("' . $_db->escape($_category) . '", "' . (int)$_admin . '")'); return true; @@ -341,10 +341,10 @@ class ticket static public function editCategory($_db, $_category = null, $_id = 0) { if($_category != null - && $_category != '' - && $_id != 0) + && $_category != '' + && $_id != 0) { - $_db->query('UPDATE `' . TABLE_PANEL_TICKET_CATS . '` SET `name` = "' . $_db->escape($_category) . '" + $_db->query('UPDATE `' . TABLE_PANEL_TICKET_CATS . '` SET `name` = "' . $_db->escape($_category) . '" WHERE `id` = "' . (int)$_id . '"'); return true; } @@ -360,7 +360,7 @@ class ticket { if($_id != 0) { - $result = $_db->query_first('SELECT COUNT(`id`) as `numtickets` FROM `' . TABLE_PANEL_TICKETS . '` + $result = $_db->query_first('SELECT COUNT(`id`) as `numtickets` FROM `' . TABLE_PANEL_TICKETS . '` WHERE `category` = "' . (int)$_id . '"'); if($result['numtickets'] == "0") @@ -402,7 +402,7 @@ class ticket { $archived = array(); $counter = 0; - $result = $_db->query('SELECT *, + $result = $_db->query('SELECT *, (SELECT COUNT(`sub`.`id`) FROM `' . TABLE_PANEL_TICKETS . '` `sub` WHERE `sub`.`answerto` = `main`.`id`) as `ticket_answers` @@ -446,42 +446,42 @@ class ticket static public function getArchiveSearchStatement($subject = NULL, $priority = NULL, $fromdate = NULL, $todate = NULL, $message = NULL, $customer = - 1, $admin = 1, $categories = NULL) { - $query = 'SELECT `main`.*, + $query = 'SELECT `main`.*, (SELECT COUNT(`sub`.`id`) FROM `' . TABLE_PANEL_TICKETS . '` `sub` WHERE `sub`.`answerto` = `main`.`id`) as `ticket_answers` FROM `' . TABLE_PANEL_TICKETS . '` `main` WHERE `main`.`archived` = "1" AND `main`.`answerto` = "0" AND `main`.`adminid` = "' . (int)$admin . '"'; if($subject != NULL - && $subject != '') + && $subject != '') { $query.= 'AND `main`.`subject` LIKE "%' . $subject . '%" '; } if($priority != NULL - && isset($priority[0]) - && $priority[0] != '') + && isset($priority[0]) + && $priority[0] != '') { if(isset($priority[1]) - && $priority[1] != '') + && $priority[1] != '') { if(isset($priority[2]) - && $priority[2] != '') + && $priority[2] != '') { - $query.= 'AND (`main`.`priority` = "1" + $query.= 'AND (`main`.`priority` = "1" OR `main`.`priority` = "2" OR `main`.`priority` = "3") '; } else { - $query.= 'AND (`main`.`priority` = "1" + $query.= 'AND (`main`.`priority` = "1" OR `main`.`priority` = "2") '; } } elseif(isset($priority[2]) - && $priority[2] != '') + && $priority[2] != '') { - $query.= 'AND (`main`.`priority` = "1" + $query.= 'AND (`main`.`priority` = "1" OR `main`.`priority` = "3") '; } else @@ -490,13 +490,13 @@ class ticket } } elseif($priority != NULL - && isset($priority[1]) - && $priority[1] != '') + && isset($priority[1]) + && $priority[1] != '') { if(isset($priority[2]) - && $priority[2] != '') + && $priority[2] != '') { - $query.= 'AND (`main`.`priority` = "2" + $query.= 'AND (`main`.`priority` = "2" OR `main`.`priority` = "3") '; } else @@ -507,26 +507,26 @@ class ticket elseif($priority != NULL) { if(isset($priority[3]) - && $priority[3] != '') + && $priority[3] != '') { $query.= 'AND `main`.`priority` = "3" '; } } if($fromdate != NULL - && $fromdate > 0) + && $fromdate > 0) { $query.= 'AND `main`.`lastchange` > "' . $fromdate . '" '; } if($todate != NULL - && $todate > 0) + && $todate > 0) { $query.= 'AND `main`.`lastchange` < "' . $todate . '" '; } if($message != NULL - && $message != '') + && $message != '') { $query.= 'AND `main`.`message` LIKE "%' . $message . '%" '; } @@ -546,7 +546,7 @@ class ticket foreach($categories as $catid) { if(isset($catid) - && $catid > 0) + && $catid > 0) { $query.= '`main`.`category` = "' . $catid . '" OR '; } @@ -605,6 +605,27 @@ class ticket } } + private function convertLatin1ToHtml($str) + { + $html_entities = array ( + "Ä" => "Ä", + "ä" => "ä", + "Ö" => "Ö", + "ö" => "ö", + "Ü" => "Ü", + "ü" => "ü", + "ß" => "ß" + /* + * @TODO continue this table for all the special-characters + */ + ); + + foreach ($html_entities as $key => $value) { + $str = str_replace($key, $value, $str); + } + return $str; + } + /** * Get a data-var */ @@ -643,7 +664,7 @@ class ticket public function Set($_var = '', $_value = '', $_vartrusted = false, $_valuetrusted = false) { if($_var != '' - && $_value != '') + && $_value != '') { if(!$_vartrusted) { @@ -655,6 +676,11 @@ class ticket $_value = htmlspecialchars($_value); } + if(strtolower($_var) == 'message' || strtolower($_var) == 'subject') + { + $_value = $this->convertLatin1ToHtml($_value); + } + $this->t_data[$_var] = $_value; } } diff --git a/lib/configfiles/etch.inc.php b/lib/configfiles/etch.inc.php index 04e61ca1..908ee9ee 100644 --- a/lib/configfiles/etch.inc.php +++ b/lib/configfiles/etch.inc.php @@ -61,7 +61,7 @@ return Array( 'label' => 'PowerDNS', 'files' => Array( 'etc_powerdns_pdns.conf' => '/etc/powerdns/pdns.conf', - 'etc_powerdns_pdns-syscp.conf' => '/etc/powerdns/pdns_syscp.conf', + 'etc_powerdns_pdns-froxlor.conf' => '/etc/powerdns/pdns_froxlor.conf', ), 'restart' => Array( '/etc/init.d/pdns restart' @@ -121,14 +121,14 @@ return Array( ), 'files' => Array( 'etc_exim4_conf.d_acl_30_exim4-config_check_rcpt.rul' => '/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt.rul', - 'etc_exim4_conf.d_auth_30_syscp-config' => '/etc/exim4/conf.d/auth/30_syscp-config', - 'etc_exim4_conf.d_main_10_syscp-config_options' => '/etc/exim4/conf.d/main/10_syscp-config_options', - 'etc_exim4_conf.d_router_180_syscp-config' => '/etc/exim4/conf.d/router/180_syscp-config', - 'etc_exim4_conf.d_transport_30_syscp-config' => '/etc/exim4/conf.d/transport/30_syscp-config' + 'etc_exim4_conf.d_auth_30_froxlor-config' => '/etc/exim4/conf.d/auth/30_froxlor-config', + 'etc_exim4_conf.d_main_10_froxlor-config_options' => '/etc/exim4/conf.d/main/10_froxlor-config_options', + 'etc_exim4_conf.d_router_180_froxlor-config' => '/etc/exim4/conf.d/router/180_froxlor-config', + 'etc_exim4_conf.d_transport_30_froxlor-config' => '/etc/exim4/conf.d/transport/30_froxlor-config' ), 'commands_2' => Array( 'chmod o-rx /var/lib/exim4', - 'chmod o-rx /etc/exim4/conf.d/main/10_syscp-config_options' + 'chmod o-rx /etc/exim4/conf.d/main/10_froxlor-config_options' ), 'restart' => Array( '/etc/init.d/exim4 restart' @@ -210,20 +210,19 @@ return Array( 'cron' => Array( 'label' => 'Crond (cronscript)', 'files' => Array( - 'etc_cron.d_syscp' => '/etc/cron.d/syscp' + 'etc_cron.d_froxlor' => '/etc/cron.d/froxlor' ), 'restart' => Array( '/etc/init.d/cron restart' ) ), 'xinetd' => Array( - 'label' => 'xinet.d (syscp updates in realtime)', + 'label' => 'xinet.d (froxlor updates in realtime)', 'commands' => Array( - 'apt-get install xinetd', - 'echo -e "syscp ' . $settings['system']['realtime_port'] . '/tcp # SysCP Realtime" >> /etc/services' + 'apt-get install xinetd' ), 'files' => Array( - 'etc_xinet.d_syscp' => '/etc/xinetd.d/syscp' + 'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor' ), 'restart' => Array( '/etc/init.d/xinetd restart' @@ -232,12 +231,12 @@ return Array( 'awstats' => Array( 'label' => 'Awstats', 'files' => Array( - ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.syscp' : 'etc_awstats_awstats.model.conf.syscp') => '/etc/awstats/awstats.model.conf.syscp', + ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor', ($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats', - ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_syscp-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/syscp-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') + ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') ), 'commands' => Array( - ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"syscp-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') + ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') ), 'restart' => Array( ($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart') diff --git a/lib/configfiles/gentoo.inc.php b/lib/configfiles/gentoo.inc.php index 85c2c1b0..4435920d 100644 --- a/lib/configfiles/gentoo.inc.php +++ b/lib/configfiles/gentoo.inc.php @@ -220,18 +220,12 @@ milter_default_action = accept\n" >> /etc/postfix/main.cf' 'cron' => Array( 'label' => 'Crond (cronscript)', 'files' => Array( - 'etc_php_syscp-cronjob_php.ini' => '/etc/php/syscp-cronjob/php.ini', - 'etc_cron.d_syscp' => '/etc/cron.d/syscp' + 'etc_cron.d_froxlor' => '/etc/cron.d/froxlor' ), 'commands' => Array( - 'touch /etc/cron.d/syscp', - 'chown root:0 /etc/cron.d/syscp', - 'chmod 0640 /etc/cron.d/syscp', - 'mkdir -p /etc/php/syscp-cronjob', - 'touch /etc/php/syscp-cronjob/php.ini', - 'chown -R root:0 /etc/php/syscp-cronjob', - 'chmod 0750 /etc/php/syscp-cronjob', - 'chmod 0640 /etc/php/syscp-cronjob/php.ini' + 'touch /etc/cron.d/froxlor', + 'chown root:0 /etc/cron.d/froxlor', + 'chmod 0640 /etc/cron.d/froxlor', ), 'restart' => Array( 'rc-update add vixie-cron default', @@ -239,13 +233,12 @@ milter_default_action = accept\n" >> /etc/postfix/main.cf' ) ), 'xinetd' => Array( - 'label' => 'xinet.d (syscp updates in realtime)', + 'label' => 'xinet.d (froxlor updates in realtime)', 'commands' => Array( - 'emerge -av xinetd', - 'echo -e "syscp ' . $settings['system']['realtime_port'] . '/tcp # SysCP Realtime" >> /etc/services' + 'emerge -av xinetd' ), 'files' => Array( - 'etc_xinet.d_syscp' => '/etc/xinetd.d/syscp' + 'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor' ), 'restart' => Array( '/etc/init.d/xinetd restart' @@ -254,12 +247,12 @@ milter_default_action = accept\n" >> /etc/postfix/main.cf' 'awstats' => Array( 'label' => 'Awstats', 'files' => Array( - ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.syscp' : 'etc_awstats_awstats.model.conf.syscp') => '/etc/awstats/awstats.model.conf.syscp', + ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor', ($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats', - ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_syscp-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/syscp-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') + ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') ), 'commands' => Array( - ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"syscp-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') + ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') ), 'restart' => Array( ($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart') diff --git a/lib/configfiles/hardy.inc.php b/lib/configfiles/hardy.inc.php index 1174ff22..db078b11 100644 --- a/lib/configfiles/hardy.inc.php +++ b/lib/configfiles/hardy.inc.php @@ -60,7 +60,7 @@ return Array( 'label' => 'PowerDNS', 'files' => Array( 'etc_powerdns_pdns.conf' => '/etc/powerdns/pdns.conf', - 'etc_powerdns_pdns-syscp.conf' => '/etc/powerdns/pdns_syscp.conf', + 'etc_powerdns_pdns-froxlor.conf' => '/etc/powerdns/pdns_froxlor.conf', ), 'restart' => Array( '/etc/init.d/pdns restart' @@ -121,14 +121,14 @@ return Array( ), 'files' => Array( 'etc_exim4_conf.d_acl_30_exim4-config_check_rcpt.rul' => '/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt.rul', - 'etc_exim4_conf.d_auth_30_syscp-config' => '/etc/exim4/conf.d/auth/30_syscp-config', - 'etc_exim4_conf.d_main_10_syscp-config_options' => '/etc/exim4/conf.d/main/10_syscp-config_options', - 'etc_exim4_conf.d_router_180_syscp-config' => '/etc/exim4/conf.d/router/180_syscp-config', - 'etc_exim4_conf.d_transport_30_syscp-config' => '/etc/exim4/conf.d/transport/30_syscp-config' + 'etc_exim4_conf.d_auth_30_froxlor-config' => '/etc/exim4/conf.d/auth/30_froxlor-config', + 'etc_exim4_conf.d_main_10_froxlor-config_options' => '/etc/exim4/conf.d/main/10_froxlor-config_options', + 'etc_exim4_conf.d_router_180_froxlor-config' => '/etc/exim4/conf.d/router/180_froxlor-config', + 'etc_exim4_conf.d_transport_30_froxlor-config' => '/etc/exim4/conf.d/transport/30_froxlor-config' ), 'commands_2' => Array( 'chmod o-rx /var/lib/exim4', - 'chmod o-rx /etc/exim4/conf.d/main/10_syscp-config_options' + 'chmod o-rx /etc/exim4/conf.d/main/10_froxlor-config_options' ), 'restart' => Array( '/etc/init.d/exim4 restart' @@ -204,20 +204,19 @@ return Array( 'cron' => Array( 'label' => 'Crond (cronscript)', 'files' => Array( - 'etc_cron.d_syscp' => '/etc/cron.d/syscp' + 'etc_cron.d_froxlor' => '/etc/cron.d/froxlor' ), 'restart' => Array( '/etc/init.d/cron restart' ) ), 'xinetd' => Array( - 'label' => 'xinet.d (syscp updates in realtime)', + 'label' => 'xinet.d (froxlor updates in realtime)', 'commands' => Array( - 'apt-get install xinetd', - 'echo -e "syscp ' . $settings['system']['realtime_port'] . '/tcp # SysCP Realtime" >> /etc/services' + 'apt-get install xinetd' ), 'files' => Array( - 'etc_xinet.d_syscp' => '/etc/xinetd.d/syscp' + 'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor' ), 'restart' => Array( '/etc/init.d/xinetd restart' @@ -226,12 +225,12 @@ return Array( 'awstats' => Array( 'label' => 'Awstats', 'files' => Array( - ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.syscp' : 'etc_awstats_awstats.model.conf.syscp') => '/etc/awstats/awstats.model.conf.syscp', + ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor', ($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats', - ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_syscp-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/syscp-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') + ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') ), 'commands' => Array( - ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"syscp-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') + ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') ), 'restart' => Array( ($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart') diff --git a/lib/configfiles/lenny.inc.php b/lib/configfiles/lenny.inc.php index d813822c..0d9a666c 100644 --- a/lib/configfiles/lenny.inc.php +++ b/lib/configfiles/lenny.inc.php @@ -61,7 +61,7 @@ return Array( 'label' => 'PowerDNS', 'files' => Array( 'etc_powerdns_pdns.conf' => '/etc/powerdns/pdns.conf', - 'etc_powerdns_pdns-syscp.conf' => '/etc/powerdns/pdns_syscp.conf', + 'etc_powerdns_pdns-froxlor.conf' => '/etc/powerdns/pdns_froxlor.conf', ), 'restart' => Array( '/etc/init.d/pdns restart' @@ -121,14 +121,14 @@ return Array( ), 'files' => Array( 'etc_exim4_conf.d_acl_30_exim4-config_check_rcpt.rul' => '/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt.rul', - 'etc_exim4_conf.d_auth_30_syscp-config' => '/etc/exim4/conf.d/auth/30_syscp-config', - 'etc_exim4_conf.d_main_10_syscp-config_options' => '/etc/exim4/conf.d/main/10_syscp-config_options', - 'etc_exim4_conf.d_router_180_syscp-config' => '/etc/exim4/conf.d/router/180_syscp-config', - 'etc_exim4_conf.d_transport_30_syscp-config' => '/etc/exim4/conf.d/transport/30_syscp-config' + 'etc_exim4_conf.d_auth_30_froxlor-config' => '/etc/exim4/conf.d/auth/30_froxlor-config', + 'etc_exim4_conf.d_main_10_froxlor-config_options' => '/etc/exim4/conf.d/main/10_froxlor-config_options', + 'etc_exim4_conf.d_router_180_froxlor-config' => '/etc/exim4/conf.d/router/180_froxlor-config', + 'etc_exim4_conf.d_transport_30_froxlor-config' => '/etc/exim4/conf.d/transport/30_froxlor-config' ), 'commands_2' => Array( 'chmod o-rx /var/lib/exim4', - 'chmod o-rx /etc/exim4/conf.d/main/10_syscp-config_options' + 'chmod o-rx /etc/exim4/conf.d/main/10_froxlor-config_options' ), 'restart' => Array( '/etc/init.d/exim4 restart' @@ -211,20 +211,19 @@ return Array( 'cron' => Array( 'label' => 'Crond (cronscript)', 'files' => Array( - 'etc_cron.d_syscp' => '/etc/cron.d/syscp' + 'etc_cron.d_froxlor' => '/etc/cron.d/froxlor' ), 'restart' => Array( '/etc/init.d/cron restart' ) ), 'xinetd' => Array( - 'label' => 'xinet.d (syscp updates in realtime)', + 'label' => 'xinet.d (froxlor updates in realtime)', 'commands' => Array( - 'apt-get install xinetd', - 'echo -e "syscp ' . $settings['system']['realtime_port'] . '/tcp # SysCP Realtime" >> /etc/services' + 'apt-get install xinetd' ), 'files' => Array( - 'etc_xinet.d_syscp' => '/etc/xinetd.d/syscp' + 'etc_xinet.d_froxlor' => '/etc/xinetd.d/froxlor' ), 'restart' => Array( '/etc/init.d/xinetd restart' @@ -233,12 +232,12 @@ return Array( 'awstats' => Array( 'label' => 'Awstats', 'files' => Array( - ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.syscp' : 'etc_awstats_awstats.model.conf.syscp') => '/etc/awstats/awstats.model.conf.syscp', + ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor', ($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats', - ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_syscp-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/syscp-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') + ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') ), 'commands' => Array( - ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"syscp-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') + ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') ), 'restart' => Array( ($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart') diff --git a/lib/configfiles/suse10.inc.php b/lib/configfiles/suse10.inc.php index 45feadcd..f3f9e0d4 100644 --- a/lib/configfiles/suse10.inc.php +++ b/lib/configfiles/suse10.inc.php @@ -110,7 +110,7 @@ return Array( 'cron' => Array( 'label' => 'Crond (cronscript)', 'files' => Array( - 'etc_cron.d_syscp' => '/etc/cron.d/syscp' + 'etc_cron.d_froxlor' => '/etc/cron.d/froxlor' ), 'restart' => Array( '/etc/init.d/cron restart' @@ -119,12 +119,12 @@ return Array( 'awstats' => Array( 'label' => 'Awstats', 'files' => Array( - ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.syscp' : 'etc_awstats_awstats.model.conf.syscp') => '/etc/awstats/awstats.model.conf.syscp', + ($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor', ($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats', - ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_syscp-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/syscp-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') + ($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf') ), 'commands' => Array( - ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"syscp-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') + ($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '') ), 'restart' => Array( ($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart') diff --git a/lib/cron_init.php b/lib/cron_init.php index 85c2af62..7450c0cb 100644 --- a/lib/cron_init.php +++ b/lib/cron_init.php @@ -1,19 +1,19 @@ - * @author Florian Aders - * @license GPLv2 http://files.syscp.org/misc/COPYING.txt + * @author Michael Kaufmann + * @author Florian Aders + * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt * @package System - * @version $Id: cron_init.php 2724 2009-06-07 14:18:02Z flo $ + * @version $Id: $ */ if(@php_sapi_name() != 'cli' @@ -25,25 +25,25 @@ if(@php_sapi_name() != 'cli' $cronscriptDebug = false; $lockdir = '/var/run/'; -$lockFilename = 'syscp_' . basename($_SERVER['PHP_SELF'], '.php') . '.lock-'; +$lockFilename = 'froxlor_' . basename($_SERVER['PHP_SELF'], '.php') . '.lock-'; $lockfName = $lockFilename . getmypid(); $lockfile = $lockdir . $lockfName; -// guess the syscp installation path +// guess the froxlor installation path // normally you should not need to modify this script anymore, if your -// syscp installation isn't in /var/www/syscp +// froxlor installation isn't in /var/www/froxlor $pathtophpfiles = dirname(dirname(__FILE__)); -// should the syscp installation guessing not work correctly, +// should the froxlor installation guessing not work correctly, // uncomment the following line, and put your path in there! -//$pathtophpfiles = '/var/www/syscp/'; +//$pathtophpfiles = '/var/www/froxlor/'; // create and open the lockfile! $keepLockFile = false; $debugHandler = fopen($lockfile, 'w'); fwrite($debugHandler, 'Setting Lockfile to ' . $lockfile . "\n"); -fwrite($debugHandler, 'Setting SysCP installation path to ' . $pathtophpfiles . "\n"); +fwrite($debugHandler, 'Setting Froxlor installation path to ' . $pathtophpfiles . "\n"); // open the lockfile directory and scan for existing lockfiles @@ -168,7 +168,7 @@ if($db->link_id == 0) fclose($debugHandler); unlink($lockfile); - die('SysCP can\'t connect to mysqlserver. Please check userdata.inc.php! Exiting...'); + die('Froxlor can\'t connect to mysqlserver. Please check userdata.inc.php! Exiting...'); } fwrite($debugHandler, 'Database-connection established' . "\n"); @@ -183,10 +183,10 @@ while($row = $db->fetch_array($result)) unset($row); unset($result); -fwrite($debugHandler, 'SysCP Settings has been loaded from the database' . "\n"); +fwrite($debugHandler, 'Froxlor Settings has been loaded from the database' . "\n"); -if(!isset($settings['system']['dbversion']) - || $settings['system']['dbversion'] != $dbversion) +if(!isset($settings['panel']['version']) + || $settings['panel']['version'] != $version) { /** * Do not proceed further if the Database version is not the same as the script version @@ -197,7 +197,7 @@ if(!isset($settings['system']['dbversion']) die('Version of File doesnt match Version of Database. Exiting...'); } -fwrite($debugHandler, 'SysCP Version and Database Version are correct' . "\n"); +fwrite($debugHandler, 'Froxlor Version and Database Version are correct' . "\n"); $cronbasedir = makeCorrectDir($pathtophpfiles . '/scripts/'); $crondir = new DirectoryIterator($cronbasedir); @@ -238,6 +238,12 @@ if(isset($inc_crons[0])) unset($file, $crondir, $cronname, $cronscriptFullName, $cronfilename, $cronbasedir); fwrite($debugHandler, 'Functions have been included' . "\n"); +/** + * Create a new idna converter + */ + +$idna_convert = new idna_convert_wrapper(); + /** * Initialize logging */ diff --git a/lib/functions/syscp/function.createAWStatsConf.php b/lib/functions/syscp/function.createAWStatsConf.php index 14ee707d..973c19b3 100644 --- a/lib/functions/syscp/function.createAWStatsConf.php +++ b/lib/functions/syscp/function.createAWStatsConf.php @@ -52,7 +52,7 @@ function createAWStatsConf($logFile, $siteDomain, $hostAliases) // File names $domain_file = '/etc/awstats/awstats.' . $siteDomain . '.conf'; - $model_file = '/etc/awstats/awstats.model.conf.syscp'; + $model_file = '/etc/awstats/awstats.model.conf.froxlor'; // Test if the file exists diff --git a/lib/functions/syscp/function.inserttask.php b/lib/functions/syscp/function.inserttask.php index 096332a9..3cd5505e 100644 --- a/lib/functions/syscp/function.inserttask.php +++ b/lib/functions/syscp/function.inserttask.php @@ -52,16 +52,22 @@ function inserttask($type, $param1 = '', $param2 = '', $param3 = '') $doupdate = true; } - // Taken from https://wiki.syscp.org/contrib/realtime - if($doupdate === true && (int)$settings['system']['realtime_port'] !== 0) { $timeout = 15; - $socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP); + $socket = @socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); if($socket !== false) { + // create the request packet + $packet = chr(0) . chr(1) . 'RUN' . chr(0); + // UDP is connectionless, so we just send on it. + @socket_sendto($socket, $packet, strlen($packet), 0x100, '127.0.0.1', (int)$settings['system']['realtime_port']); + + /* + * this is for TCP-Connections + * $time = time(); while(!@socket_connect($socket, '127.0.0.1', (int)$settings['system']['realtime_port'])) @@ -80,7 +86,7 @@ function inserttask($type, $param1 = '', $param2 = '', $param3 = '') continue; } } - + */ @socket_close($socket); } } diff --git a/lng/english.lng.php b/lng/english.lng.php index eaa4a14f..ad6781cc 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -252,7 +252,7 @@ $lng['question']['extras_reallydelete'] = 'Do you really want to delete the dire $lng['question']['extras_reallydelete_pathoptions'] = 'Do you really want to delete the path options for %s?'; $lng['question']['ftp_reallydelete'] = 'Do you really want to delete the FTP account %s?'; $lng['question']['mysql_reallydelete'] = 'Do you really want to delete the database %s? This cannot be undone!'; -$lng['question']['admin_configs_reallyrebuild'] = 'Do you really want to rebuild your apache and bind config files?'; +$lng['question']['admin_configs_reallyrebuild'] = 'Do you really want to rebuild all config files?'; /** * Mails @@ -1218,10 +1218,6 @@ $lng['admin']['webserver'] = 'Webserver'; $lng['error']['admin_domain_emailsystemhostname'] = 'The server-hostname cannot be used as email-domain.'; $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 Froxlor Project (no particular order)'; - // ADDED IN 1.4.2.1-1 $lng['mysql']['mysql_server'] = 'MySQL-Server'; @@ -1245,4 +1241,11 @@ $lng['error']['errorwhensaving'] = 'An error occured when saving the field %s'; $lng['success']['success'] = 'Information'; $lng['success']['clickheretocontinue'] = 'Click here to continue'; $lng['success']['settingssaved'] = 'The settings have been successfully saved.'; -?> \ No newline at end of file + +// ADDED IN FROXLOR 0.9 + +$lng['admin']['spfsettings'] = 'Domain SPF settings'; +$lng['spf']['use_spf'] = 'Activate SPF for domains?'; +$lng['spf']['spf_entry'] = 'SPF entry for all domains'; + +?> diff --git a/lng/german.lng.php b/lng/german.lng.php index d84d7f56..b6243033 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -252,7 +252,7 @@ $lng['question']['extras_reallydelete'] = 'Wollen Sie den Verzeichnisschutz f&uu $lng['question']['extras_reallydelete_pathoptions'] = 'Wollen Sie die Optionen für den Pfad %s wirklich löschen?'; $lng['question']['ftp_reallydelete'] = 'Wollen Sie das FTP-Benutzerkonto %s wirklich löschen?'; $lng['question']['mysql_reallydelete'] = 'Wollen Sie die Datenbank %s wirklich löschen?
ACHTUNG! Alle Daten gehen unwiderruflich verloren!'; -$lng['question']['admin_configs_reallyrebuild'] = 'Wollen Sie wirklich Ihre Apache und Bind Konfigurationsdateien neu erstellen lassen?'; +$lng['question']['admin_configs_reallyrebuild'] = 'Wollen Sie wirklich alle Konfigurationsdateien neu erstellen lassen?'; /** * Mails @@ -270,7 +270,7 @@ $lng['mails']['createcustomer']['subject'] = 'Kontoinformationen'; $lng['admin']['overview'] = 'Übersicht'; $lng['admin']['ressourcedetails'] = 'Verbrauchte Ressourcen'; $lng['admin']['systemdetails'] = 'Systemdetails'; -$lng['admin']['syscpdetails'] = 'SysCP-Details'; +$lng['admin']['syscpdetails'] = 'Froxlor-Details'; $lng['admin']['installedversion'] = 'Installierte Version'; $lng['admin']['latestversion'] = 'Neueste Version'; $lng['admin']['lookfornewversion']['clickhere'] = 'per Webservice abfragen'; @@ -1222,8 +1222,10 @@ $lng['admin']['webserver'] = 'Webserver'; $lng['error']['admin_domain_emailsystemhostname'] = 'Der Server-Hostname kann leider nicht als E-Mail-Domain verwendet werden.'; $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 Froxlor Projekt beigetragen (keine besondere Ordnung)'; +// ADDED IN FROXLOR 0.9 -?> \ No newline at end of file +$lng['admin']['spfsettings'] = 'Domain SPF Einstellungen'; +$lng['spf']['use_spf'] = 'Aktiviere SPF für Domains?'; +$lng['spf']['spf_entry'] = 'SPF Eintrag für alle Domains'; + +?> diff --git a/scripts/cron_tasks.inc.dns.10.bind.php b/scripts/cron_tasks.inc.dns.10.bind.php index f954e8ff..c6d2b028 100644 --- a/scripts/cron_tasks.inc.dns.10.bind.php +++ b/scripts/cron_tasks.inc.dns.10.bind.php @@ -79,8 +79,8 @@ class bind public function writeConfigs() { - fwrite($this->debugHandler, ' cron_tasks: Task4 started - Rebuilding syscp_bind.conf' . "\n"); - $this->logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 started - Rebuilding syscp_bind.conf'); + fwrite($this->debugHandler, ' cron_tasks: Task4 started - Rebuilding froxlor_bind.conf' . "\n"); + $this->logger->logAction(CRON_ACTION, LOG_INFO, 'Task4 started - Rebuilding froxlor_bind.conf'); if(!file_exists(makeCorrectDir($this->settings['system']['bindconf_directory'] . '/domains/'))) { @@ -90,7 +90,7 @@ class bind $known_filenames = array(); - $bindconf_file = '# ' . $this->settings['system']['bindconf_directory'] . 'syscp_bind.conf' . "\n" . '# Created ' . date('d.m.Y H:i') . "\n" . '# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.' . "\n" . "\n"; + $bindconf_file = '# ' . $this->settings['system']['bindconf_directory'] . 'froxlor_bind.conf' . "\n" . '# Created ' . date('d.m.Y H:i') . "\n" . '# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.' . "\n" . "\n"; $result_domains = $this->db->query("SELECT `d`.`id`, `d`.`domain`, `d`.`iswildcarddomain`, `d`.`customerid`, `d`.`zonefile`, `d`.`bindserial`, `d`.`dkim`, `d`.`dkim_id`, `d`.`dkim_pubkey`, `ip`.`ip`, `c`.`loginname`, `c`.`guid` FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) LEFT JOIN `" . TABLE_PANEL_IPSANDPORTS . "` AS `ip` ON(`d`.`ipandport`=`ip`.`id`) WHERE `d`.`isbinddomain` = '1' ORDER BY `d`.`domain` ASC"); while($domain = $this->db->fetch_array($result_domains)) @@ -131,11 +131,11 @@ class bind $bindconf_file.= "\n"; } - $bindconf_file_handler = fopen(makeCorrectFile($this->settings['system']['bindconf_directory'] . '/syscp_bind.conf'), 'w'); + $bindconf_file_handler = fopen(makeCorrectFile($this->settings['system']['bindconf_directory'] . '/froxlor_bind.conf'), 'w'); fwrite($bindconf_file_handler, $bindconf_file); fclose($bindconf_file_handler); - fwrite($this->debugHandler, ' cron_tasks: Task4 - syscp_bind.conf written' . "\n"); - $this->logger->logAction(CRON_ACTION, LOG_INFO, 'syscp_bind.conf written'); + fwrite($this->debugHandler, ' cron_tasks: Task4 - froxlor_bind.conf written' . "\n"); + $this->logger->logAction(CRON_ACTION, LOG_INFO, 'froxlor_bind.conf written'); safe_exec($this->settings['system']['bindreload_command']); fwrite($this->debugHandler, ' cron_tasks: Task4 - Bind9 reloaded' . "\n"); $this->logger->logAction(CRON_ACTION, LOG_INFO, 'Bind9 reloaded'); @@ -216,7 +216,14 @@ class bind } } - $zonefile.= '@ IN TXT "v=spf1 a mx -all"' . "\n"; + /* + * @TODO domain-based spf-settings + */ + if($this->settings['spf']['use_spf'] == '1' + /*&& $domain['spf'] == '1' */) + { + $zonefile.= $this->settings['spf']['spf_entry'] . "\n"; + } if($this->settings['dkim']['use_dkim'] == '1' && $domain['dkim'] == '1' diff --git a/scripts/cron_tasks.inc.http.10.apache.php b/scripts/cron_tasks.inc.http.10.apache.php index c330d591..645c649f 100644 --- a/scripts/cron_tasks.inc.http.10.apache.php +++ b/scripts/cron_tasks.inc.http.10.apache.php @@ -26,10 +26,14 @@ if(@php_sapi_name() != 'cli' class apache { - protected $db = false; - protected $logger = false; - protected $debugHandler = false; - protected $settings = array(); + private $db = false; + private $logger = false; + private $debugHandler = false; + private $idnaConvert = false; + private $settings = array(); + + // protected + protected $known_vhostfilenames = array(); protected $known_diroptionsfilenames = array(); protected $known_htpasswdsfilenames = array(); @@ -37,11 +41,12 @@ class apache protected $diroptions_data = array(); protected $htpasswds_data = array(); - public function __construct($db, $logger, $debugHandler, $settings) + public function __construct($db, $logger, $debugHandler, $idnaConvert, $settings) { $this->db = $db; $this->logger = $logger; $this->debugHandler = $debugHandler; + $this->idnaConvert = $idnaConvert; $this->settings = $settings; } @@ -293,7 +298,7 @@ class apache if($this->settings['system']['awstats_enabled'] == '1') { - $stats_text.= createAWStatsVhost($domain['domain']); + $stats_text.= createAWStatsVhost($domain['domain'], $this->settings); } } else @@ -302,7 +307,7 @@ class apache if($this->settings['system']['awstats_enabled'] == '1') { - $stats_text.= createAWStatsVhost($domain['parentdomain']); + $stats_text.= createAWStatsVhost($domain['parentdomain'], $this->settings); } } } @@ -315,7 +320,7 @@ class apache if($this->settings['system']['awstats_enabled'] == '1') { - $stats_text.= createAWStatsVhost($domain['domain']); + $stats_text.= createAWStatsVhost($domain['domain'], $this->settings); } } @@ -482,7 +487,7 @@ class apache if(preg_match('/^https?\:\/\//', $domain['documentroot'])) { - $vhost_content.= ' Redirect 301 / ' . $domain['documentroot'] . "\n"; + $vhost_content.= ' Redirect 301 / ' . $this->idnaConvert->encode($domain['documentroot']) . "\n"; } else { diff --git a/scripts/cron_tasks.inc.http.20.lighttpd.php b/scripts/cron_tasks.inc.http.20.lighttpd.php index e94e53c1..971492ed 100644 --- a/scripts/cron_tasks.inc.http.20.lighttpd.php +++ b/scripts/cron_tasks.inc.http.20.lighttpd.php @@ -32,6 +32,7 @@ class lighttpd private $db = false; private $logger = false; private $debugHandler = false; + private $idnaConvert = false; private $settings = array(); // protected @@ -42,11 +43,12 @@ class lighttpd public $mod_accesslog_loaded = "0"; protected $lighttpd_data = array(); - function __construct($db, $logger, $debugHandler, $settings) + function __construct($db, $logger, $debugHandler, $idnaConvert, $settings) { $this->db = $db; $this->logger = $logger; $this->debugHandler = $debugHandler; + $this->idnaConvert = $idnaConvert; $this->settings = $settings; } @@ -77,7 +79,7 @@ class lighttpd 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'); + $vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/10_froxlor_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') @@ -159,6 +161,10 @@ class lighttpd { } + protected function composePhpOptions() + { + } + protected function createLighttpdHosts($ip, $port, $ssl, $vhost_filename) { $query = "SELECT * FROM " . TABLE_PANEL_IPSANDPORTS . " WHERE `ip`='" . $ip . "' AND `port`='" . $port . "'"; @@ -235,6 +241,7 @@ class lighttpd $vhost_content.= $this->getWebroot($domain, $ssl_vhost); $vhost_content.= $this->create_htaccess($domain); $vhost_content.= $this->create_pathOptions($domain); + $vhost_content.= $this->composePhpOptions($domain); $vhost_content.= $this->getLogFiles($domain); $vhost_content.= '}' . "\n"; return $vhost_content; @@ -393,6 +400,7 @@ class lighttpd } else { + $server_string[] = $domain_name; } } @@ -445,7 +453,13 @@ class lighttpd } unset($data); - $servernames_text = '$HTTP["host"] =~ "' . $servernames_text . '"'; + + if($servernames_text != '') { + $servernames_text = '$HTTP["host"] =~ "' . $servernames_text . '"'; + } else { + $servernames_text = '$HTTP["host"] == "' . $domain['domain'] . '"'; + } + return $servernames_text; } @@ -464,11 +478,21 @@ class lighttpd if($ssl === false && $domain['ssl_redirect'] == '1') { - $webroot_text.= ' url.redirect = ( "^/(.*)" => "https://' . $domain['domain'] . '/$1" )' . "\n"; + $redirect_domain = $this->idnaConvert->encode('https://' . $domain['domain']); + $webroot_text.= ' url.redirect = ('."\n"; + $webroot_text.= "\t" . '"^/(.*)" => "' . $redirect_domain . '/$1",' . "\n"; + $webroot_text.= "\t" . '"" => "' . $redirect_domain . '",' . "\n"; + $webroot_text.= "\t" . '"/" => "' . $redirect_domain . '"' . "\n"; + $webroot_text.= ' )'."\n"; } elseif(preg_match("#^https?://#i", $domain['documentroot'])) { - $webroot_text.= ' url.redirect = ( "^/(.*)" => "' . $domain['documentroot'] . '/$1" )' . "\n"; + $redirect_domain = $this->idnaConvert->encode($domain['documentroot']); + $webroot_text.= ' url.redirect = ('."\n"; + $webroot_text.= "\t" . '"^/(.*)" => "' . $redirect_domain . '/$1",' . "\n"; + $webroot_text.= "\t" . '"" => "' . $redirect_domain . '",' . "\n"; + $webroot_text.= "\t" . '"/" => "' . $redirect_domain . '"' . "\n"; + $webroot_text.= ' )'."\n"; } else { @@ -553,7 +577,7 @@ class lighttpd private function wipeOutOldConfigs() { - fwrite($this->debugHandler, ' apache::wipeOutOldConfigs: cleaning ' . $this->settings['system']['apacheconf_vhost'] . "\n"); + fwrite($this->debugHandler, ' lighttpd::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']) @@ -567,10 +591,10 @@ class lighttpd if($vhost_filename != '.' && $vhost_filename != '..' && !in_array($vhost_filename, $this->known_filenames) - && preg_match('/^(10|20|30)_syscp_ipandport_(.+)\.conf$/', $vhost_filename) + && preg_match('/^(10|20|30)_froxlor_ipandport_(.+)\.conf$/', $vhost_filename) && file_exists(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename))) { - fwrite($this->debugHandler, ' apache::wipeOutOldConfigs: unlinking ' . $vhost_filename . "\n"); + fwrite($this->debugHandler, ' lighttpd::wipeOutOldConfigs: unlinking ' . $vhost_filename . "\n"); $this->logger->logAction(CRON_ACTION, LOG_NOTICE, 'unlinking ' . $vhost_filename); unlink(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename)); } diff --git a/scripts/cron_tasks.inc.http.25.lighttpd_fcgid.php b/scripts/cron_tasks.inc.http.25.lighttpd_fcgid.php index 37000117..9ee73056 100644 --- a/scripts/cron_tasks.inc.http.25.lighttpd_fcgid.php +++ b/scripts/cron_tasks.inc.http.25.lighttpd_fcgid.php @@ -28,261 +28,10 @@ if(@php_sapi_name() != 'cli' class lighttpd_fcgid extends lighttpd { - private $db = false; - private $logger = false; - private $debugHandler = false; - private $settings = array(); + private $php_configs_cache = array(); + private $admin_cache = 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) + protected function composePhpOptions($domain) { $php_options_text = ''; @@ -502,300 +251,35 @@ class lighttpd_fcgid extends lighttpd return $php_options_text; } - protected function create_pathOptions($domain) + private function getPhpConfig($php_config_id) { - $query = "SELECT * FROM " . TABLE_PANEL_HTACCESS . " WHERE `path` LIKE '" . $domain['documentroot'] . "%'"; - $result = $this->db->query($query); + $php_config_id = intval($php_config_id); - $path_options = ''; - $error_string = ''; + // If domain has no config, we will use the default one. - while($row = $this->db->fetch_array($result)) + if($php_config_id == 0) { - 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; - } + $php_config_id = 1; } - return $path_options; + if(!isset($this->php_configs_cache[$php_config_id])) + { + $this->php_configs_cache[$php_config_id] = $this->db->query_first("SELECT * FROM `" . TABLE_PANEL_PHPCONFIGS . "` WHERE `id` = " . (int)$php_config_id); + } + + return $this->php_configs_cache[$php_config_id]; } - protected function getDirOptions($domain) + private function getAdminData($adminid) { - $query = "SELECT * FROM " . TABLE_PANEL_HTPASSWDS . " WHERE `customerid`='" . $domain[customerid] . "'"; - $result = $this->db->query($query); + $adminid = intval($adminid); - while($row_htpasswds = $this->db->fetch_array($result)) + if(!isset($this->admin_cache[$adminid])) { - 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; - } + $this->admin_cache[$adminid] = $this->db->query_first("SELECT `email`, `loginname` FROM `" . TABLE_PANEL_ADMINS . "` WHERE `adminid` = " . (int)$adminid); } - 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)); - } - } - } + return $this->admin_cache[$adminid]; } } diff --git a/scripts/cron_tasks.php b/scripts/cron_tasks.php index 74cde5f5..3f01cd00 100644 --- a/scripts/cron_tasks.php +++ b/scripts/cron_tasks.php @@ -53,28 +53,47 @@ while($row = $db->fetch_array($result_tasks)) if($row['type'] == '1') { + //dhr: cleanout froxlor-generated awstats configs prior to re-creation + if ($settings[system][awstats_enabled] == '1') + { + $awstatsclean[header] = "## GENERATED BY FROXLOR\n"; + $awstatsclean[path] = '/etc/awstats'; + $awstatsclean[dir] = dir($awstatsclean[path]); + while($awstatsclean[entry] = $awstatsclean[dir]->read()) { + $awstatsclean[fullentry] = $awstatsclean[path].'/'.$awstatsclean[entry]; + $awstatsclean[fh] = fopen($awstatsclean[fullentry], 'r'); + $awstatsclean[headerRead] = fgets($awstatsclean[fh], strlen($awstatsclean[header])+1); + fclose($awstatsclean[fh]); + if($awstatsclean[headerRead] == $awstatsclean[header]) { + @unlink($awstatsclean[fullentry]); + } + } + unset($awstatsclean); + } + //end dhr + if(!isset($webserver)) { if($settings['system']['webserver'] == "apache2") { if($settings['system']['mod_fcgid'] == 1) { - $webserver = new apache_fcgid($db, $cronlog, $debugHandler, $settings); + $webserver = new apache_fcgid($db, $cronlog, $debugHandler, $idna_convert, $settings); } else { - $webserver = new apache($db, $cronlog, $debugHandler, $settings); + $webserver = new apache($db, $cronlog, $debugHandler, $idna_convert, $settings); } } elseif($settings['system']['webserver'] == "lighttpd") { if($settings['system']['mod_fcgid'] == 1) { - $webserver = new lighttpd_fcgid($db, $cronlog, $debugHandler, $settings); + $webserver = new lighttpd_fcgid($db, $cronlog, $debugHandler, $idna_convert, $settings); } else - { - $webserver = new lighttpd($db, $cronlog, $debugHandler, $settings); + { + $webserver = new lighttpd($db, $cronlog, $debugHandler, $idna_convert, $settings); } } } diff --git a/templates/admin/admins/admins_add.tpl b/templates/admin/admins/admins_add.tpl index 0c105267..497956f4 100644 --- a/templates/admin/admins/admins_add.tpl +++ b/templates/admin/admins/admins_add.tpl @@ -86,7 +86,7 @@ $header
- + diff --git a/templates/admin/admins/admins_edit.tpl b/templates/admin/admins/admins_edit.tpl index 6d45d515..dad9bb7a 100644 --- a/templates/admin/admins/admins_edit.tpl +++ b/templates/admin/admins/admins_edit.tpl @@ -104,7 +104,7 @@ $header - + diff --git a/templates/admin/customers/customers_add.tpl b/templates/admin/customers/customers_add.tpl index 66dc042a..2b2d4e0c 100644 --- a/templates/admin/customers/customers_add.tpl +++ b/templates/admin/customers/customers_add.tpl @@ -98,7 +98,7 @@ $header - + diff --git a/templates/admin/customers/customers_customer.tpl b/templates/admin/customers/customers_customer.tpl index 90b6849c..4b2e4b72 100644 --- a/templates/admin/customers/customers_customer.tpl +++ b/templates/admin/customers/customers_customer.tpl @@ -12,6 +12,6 @@ - - + + diff --git a/templates/admin/customers/customers_edit.tpl b/templates/admin/customers/customers_edit.tpl index 0c2e4038..04cab678 100644 --- a/templates/admin/customers/customers_edit.tpl +++ b/templates/admin/customers/customers_edit.tpl @@ -104,7 +104,7 @@ $header - + diff --git a/templates/admin/index/index.tpl b/templates/admin/index/index.tpl index 98c36c46..084e7615 100644 --- a/templates/admin/index/index.tpl +++ b/templates/admin/index/index.tpl @@ -142,12 +142,6 @@ $header - - - - - -
{$lng['customer']['traffic']}: * {$traffic_ul} {$traffic_ul}
{$lng['customer']['subdomains']}: *
{$lng['customer']['traffic']}: * {$traffic_ul} {$traffic_ul}
{$lng['customer']['subdomains']}: *
{$lng['customer']['traffic']}: * {$traffic_ul} {$traffic_ul}
{$lng['customer']['subdomains']}: *{$row['mysqls_used']}/{$row['mysqls']}
{$row['ftps_used']}/{$row['ftps']}
{$row['emails_used']}/{$row['emails']}
{$row['subdomains_used']}/{$row['subdomains']}
{$row['email_accounts_used']}/{$row['email_accounts']}
{$row['email_forwarders_used']}/{$row['email_forwarders']}
{$lng['panel']['yes']}{$lng['panel']['no']}
{$lng['panel']['yes']}{$lng['panel']['no']}
{$lng['panel']['edit']} {$lng['panel']['delete']}
{$lng['customer']['create_contract']}
{$lng['panel']['yes']}{$lng['panel']['no']}{$lng['panel']['edit']}
{$lng['panel']['delete']}
{$lng['customer']['traffic']}: * {$traffic_ul} {$traffic_ul}
{$lng['customer']['subdomains']}: *$lookfornewversion_addinfo
 {$lng['admin']['thankyou']}
{$lng['admin']['contributors']}:
Florian Lippert, Tim Zielosko, Martin Burchert, Ron Brand, Michael Duergner, Wolfgang Ziegler, Patrick Brueckner, Florian Aders, Luca Longinotti, Manuel Bernhardt, Janky Jay, Thomas Peterhans, Benjamin Börngen-Schmidt, Philipp Haefelfinger, Michael Kaufmannk, Sven Skrabal


diff --git a/templates/footer.tpl b/templates/footer.tpl index 449fafcd..f3ebfde0 100644 --- a/templates/footer.tpl +++ b/templates/footer.tpl @@ -9,7 +9,7 @@ {$version} © 2009-2010 by the Froxlor Team -
Theme: Luca Piona and Luca Longinotti +
Theme based on work by: Luca Piona and Luca Longinotti
{$lng['panel']['translator']}: {$lng['translator']}
diff --git a/templates/header.tpl b/templates/header.tpl index 3c99bc29..175189e0 100644 --- a/templates/header.tpl +++ b/templates/header.tpl @@ -7,7 +7,7 @@ - <if isset($userinfo['loginname']) && $userinfo['loginname'] != ''>{$userinfo['loginname']} - </if>SysCP + <if isset($userinfo['loginname']) && $userinfo['loginname'] != ''>{$userinfo['loginname']} - </if>Froxlor onload="document.loginform.loginname.focus()">