[-]
[+]
|
Added |
froxlor.changes
|
|
[-]
[+]
|
Changed |
froxlor.spec
^
|
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/actions/admin/settings/120.system.php
^
|
@@ -68,6 +68,14 @@
'default' => false,
'save_method' => 'storeSettingField',
),
+ 'system_validatedomain' => array(
+ 'label' => $lng['serversettings']['validate_domain'],
+ 'settinggroup' => 'system',
+ 'varname' => 'validate_domain',
+ 'type' => 'bool',
+ 'default' => true,
+ 'save_method' => 'storeSettingField',
+ ),
'system_stdsubdomain' => array(
'label' => $lng['serversettings']['stdsubdomainhost'],
'settinggroup' => 'system',
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/actions/admin/settings/215.backup.php
^
|
@@ -0,0 +1,106 @@
+<?php
+
+/**
+ * This file is part of the Froxlor project.
+ * Copyright (c) 2003-2009 the SysCP Team (see authors).
+ * Copyright (c) 2010 the Froxlor Team (see authors).
+ *
+ * For the full copyright and license information, please view the COPYING
+ * file that was distributed with this source code. You can also view the
+ * COPYING file online at http://files.froxlor.org/misc/COPYING.txt
+ *
+ * @copyright (c) the authors
+ * @author Florian Lippert <flo@syscp.org> (2003-2009)
+ * @author Froxlor team <team@froxlor.org> (2010-)
+ * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
+ * @package Settings
+ * @version $Id: 215.backup.php 1 2010-09-14 08:09:17Z monotek $
+ */
+
+return array(
+ 'groups' => array(
+ 'backup' => array(
+ 'title' => $lng['backup'],
+ 'fields' => array(
+ 'backup_enabled' => array(
+ 'label' => $lng['serversettings']['backup_enabled'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_enabled',
+ 'type' => 'bool',
+ 'default' => false,
+ 'save_method' => 'storeSettingField',
+ 'overview_option' => true
+ ),
+ 'backup_dir' => array(
+ 'label' => $lng['serversettings']['backupdir']['description'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_dir',
+ 'type' => 'string',
+ 'default' => '#froxlor_backup',
+ 'save_method' => 'storeSettingField',
+ ),
+ 'backup_mysqldump_path' => array(
+ 'label' => $lng['serversettings']['mysqldump_path']['description'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_mysqldump_path',
+ 'type' => 'string',
+ 'default' => '/usr/bin/mysqldump',
+ 'save_method' => 'storeSettingField',
+ ),
+ 'backup_count' => array(
+ 'label' => $lng['serversettings']['backup_count'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_count',
+ 'type' => 'bool',
+ 'default' => 'true',
+ 'save_method' => 'storeSettingField',
+ 'overview_option' => false
+ ),
+ 'backup_bigfile' => array(
+ 'label' => $lng['serversettings']['backup_bigfile'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_bigfile',
+ 'type' => 'bool',
+ 'default' => false,
+ 'save_method' => 'storeSettingField',
+ 'overview_option' => false
+ ),
+ 'backup_ftp_enabled_' => array(
+ 'label' => $lng['serversettings']['backup_ftp_enabled'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_ftp_enabled',
+ 'type' => 'bool',
+ 'default' => false,
+ 'save_method' => 'storeSettingField',
+ 'overview_option' => false
+ ),
+ 'backup_server' => array(
+ 'label' => $lng['serversettings']['backup_ftp_server'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_ftp_server',
+ 'type' => 'string',
+ 'default' => '',
+ 'save_method' => 'storeSettingField',
+ ),
+ 'backup_user' => array(
+ 'label' => $lng['serversettings']['backup_ftp_user'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_ftp_user',
+ 'type' => 'string',
+ 'default' => '',
+ 'save_method' => 'storeSettingField',
+ ),
+ 'backup_pass' => array(
+ 'label' => $lng['serversettings']['backup_ftp_pass'],
+ 'settinggroup' => 'system',
+ 'varname' => 'backup_ftp_pass',
+ 'type' => 'string',
+ 'default' => '',
+ 'save_method' => 'storeSettingField',
+ ),
+ ),
+ ),
+ ),
+ );
+
+?>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/admin_admins.php
^
|
@@ -289,10 +289,21 @@
$can_manage_aps_packages = 0;
}
- $customers_see_all = intval($_POST['customers_see_all']);
- $domains_see_all = intval($_POST['domains_see_all']);
- $caneditphpsettings = intval($_POST['caneditphpsettings']);
- $change_serversettings = intval($_POST['change_serversettings']);
+ $customers_see_all = 0;
+ if(isset($_POST['customers_see_all']))
+ $customers_see_all = intval($_POST['customers_see_all']);
+
+ $domains_see_all = 0;
+ if(isset($_POST['domains_see_all']))
+ $domains_see_all = intval($_POST['domains_see_all']);
+
+ $caneditphpsettings = 0;
+ if(isset($_POST['caneditphpsettings']))
+ $caneditphpsettings = intval($_POST['caneditphpsettings']);
+
+ $change_serversettings = 0;
+ if(isset($_POST['change_serversettings']))
+ $change_serversettings = intval($_POST['change_serversettings']);
$diskspace = intval_ressource($_POST['diskspace']);
@@ -452,11 +463,11 @@
$ftps_ul = makecheckbox('ftps_ul', $lng['customer']['unlimited'], '-1', false, '0', true, true);
$tickets_ul = makecheckbox('tickets_ul', $lng['customer']['unlimited'], '-1', false, '0', true, true);
$mysqls_ul = makecheckbox('mysqls_ul', $lng['customer']['unlimited'], '-1', false, '0', true, true);
- $change_serversettings = makeyesno('change_serversettings', '1', '0', '0');
- $customers_see_all = makeyesno('customers_see_all', '1', '0', '0');
- $domains_see_all = makeyesno('domains_see_all', '1', '0', '0');
- $caneditphpsettings = makeyesno('caneditphpsettings', '1', '0', '0');
- $can_manage_aps_packages = makeyesno('can_manage_aps_packages', '1', '0', '0');
+ #$change_serversettings = makeyesno('change_serversettings', '1', '0', '0');
+ #$customers_see_all = makeyesno('customers_see_all', '1', '0', '0');
+ #$domains_see_all = makeyesno('domains_see_all', '1', '0', '0');
+ #$caneditphpsettings = makeyesno('caneditphpsettings', '1', '0', '0');
+ #$can_manage_aps_packages = makeyesno('can_manage_aps_packages', '1', '0', '0');
$number_of_aps_packages_ul = makecheckbox('number_of_aps_packages_ul', $lng['customer']['unlimited'], '-1', false, '0', true, true);
$admin_add_data = include_once dirname(__FILE__).'/lib/formfields/admin/admin/formfield.admin_add.php';
@@ -617,12 +628,24 @@
$number_of_aps_packages = - 1;
}
- $customers_see_all = intval($_POST['customers_see_all']);
- $domains_see_all = intval($_POST['domains_see_all']);
- $caneditphpsettings = intval($_POST['caneditphpsettings']);
- $change_serversettings = intval($_POST['change_serversettings']);
$can_manage_aps_packages = intval($_POST['can_manage_aps_packages']);
+ $customers_see_all = 0;
+ if(isset($_POST['customers_see_all']))
+ $customers_see_all = intval($_POST['customers_see_all']);
+
+ $domains_see_all = 0;
+ if(isset($_POST['domains_see_all']))
+ $domains_see_all = intval($_POST['domains_see_all']);
+
+ $caneditphpsettings = 0;
+ if(isset($_POST['caneditphpsettings']))
+ $caneditphpsettings = intval($_POST['caneditphpsettings']);
+
+ $change_serversettings = 0;
+ if(isset($_POST['change_serversettings']))
+ $change_serversettings = intval($_POST['change_serversettings']);
+
$diskspace = intval($_POST['diskspace']);
if(isset($_POST['diskspace_ul']))
@@ -829,12 +852,12 @@
}
}
- $change_serversettings = makeyesno('change_serversettings', '1', '0', $result['change_serversettings']);
- $customers_see_all = makeyesno('customers_see_all', '1', '0', $result['customers_see_all']);
- $domains_see_all = makeyesno('domains_see_all', '1', '0', $result['domains_see_all']);
- $caneditphpsettings = makeyesno('caneditphpsettings', '1', '0', $result['caneditphpsettings']);
- $deactivated = makeyesno('deactivated', '1', '0', $result['deactivated']);
- $can_manage_aps_packages = makeyesno('can_manage_aps_packages', '1', '0', $result['can_manage_aps_packages']);
+ #$change_serversettings = makeyesno('change_serversettings', '1', '0', $result['change_serversettings']);
+ #$customers_see_all = makeyesno('customers_see_all', '1', '0', $result['customers_see_all']);
+ #$domains_see_all = makeyesno('domains_see_all', '1', '0', $result['domains_see_all']);
+ #$caneditphpsettings = makeyesno('caneditphpsettings', '1', '0', $result['caneditphpsettings']);
+ #$deactivated = makeyesno('deactivated', '1', '0', $result['deactivated']);
+ #$can_manage_aps_packages = makeyesno('can_manage_aps_packages', '1', '0', $result['can_manage_aps_packages']);
$result = htmlentities_array($result);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/admin_cronjobs.php
^
|
@@ -121,7 +121,7 @@
}
else
{
- $isactive = makeyesno('isactive', '1', '0', $result['isactive']);
+ #$isactive = makeyesno('isactive', '1', '0', $result['isactive']);
// interval
$interval_nfo = explode(' ', $result['interval']);
$interval_value = $interval_nfo[0];
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/admin_customers.php
^
|
@@ -53,7 +53,8 @@
'c.diskspace' => $lng['customer']['diskspace'],
'c.diskspace_used' => $lng['customer']['diskspace'] . ' (' . $lng['panel']['used'] . ')',
'c.traffic' => $lng['customer']['traffic'],
- 'c.traffic_used' => $lng['customer']['traffic'] . ' (' . $lng['panel']['used'] . ')'
+ 'c.traffic_used' => $lng['customer']['traffic'] . ' (' . $lng['panel']['used'] . ')',
+ 'c.backup_allowed' => $lng['backup_allowed']
/*
'c.mysqls' => $lng['customer']['mysqls'],
'c.mysqls_used' => $lng['customer']['mysqls'] . ' (' . $lng['panel']['used'] . ')',
@@ -452,9 +453,17 @@
$email_autoresponder = 0;
}
- $email_imap = intval_ressource($_POST['email_imap']);
- $email_pop3 = intval_ressource($_POST['email_pop3']);
- $ftps = intval_ressource($_POST['ftps']);
+ $email_imap = 0;
+ if(isset($_POST['email_imap']))
+ $email_imap = intval_ressource($_POST['email_imap']);
+
+ $email_pop3 = 0;
+ if(isset($_POST['email_pop3']))
+ $email_pop3 = intval_ressource($_POST['email_pop3']);
+
+ $ftps = 0;
+ if(isset($_POST['ftps']))
+ $ftps = intval_ressource($_POST['ftps']);
if(isset($_POST['ftps_ul']))
{
@@ -489,8 +498,10 @@
{
$number_of_aps_packages = 0;
}
-
- $createstdsubdomain = intval($_POST['createstdsubdomain']);
+
+ $createstdsubdomain = 0;
+ if(isset($_POST['createstdsubdomain']))
+ $createstdsubdomain = intval($_POST['createstdsubdomain']);
$password = validate($_POST['new_customer_password'], 'password');
// only check if not empty,
// cause empty == generate password automatically
@@ -498,10 +509,32 @@
{
$password = validatePassword($password);
}
- $sendpassword = intval($_POST['sendpassword']);
- $phpenabled = intval($_POST['phpenabled']);
- $perlenabled = intval($_POST['perlenabled']);
- $store_defaultindex = intval($_POST['store_defaultindex']);
+
+ $backup_allowed = 0;
+ if(isset($_POST['backup_allowed']))
+ $backup_allowed = intval($_POST['backup_allowed']);
+
+ if ($backup_allowed != 0)
+ {
+ $backup_allowed = 1;
+ }
+
+ $sendpassword = 0;
+ if(isset($_POST['sendpassword']))
+ $sendpassword = intval($_POST['sendpassword']);
+
+ $phpenabled = 0;
+ if(isset($_POST['phpenabled']))
+ $phpenabled = intval($_POST['phpenabled']);
+
+ $perlenabled = 0;
+ if(isset($_POST['perlenabled']))
+ $perlenabled = intval($_POST['perlenabled']);
+
+ $store_defaultindex = 0;
+ if(isset($_POST['store_defaultindex']))
+ $store_defaultindex = intval($_POST['store_defaultindex']);
+
$diskspace = $diskspace * 1024;
$traffic = $traffic * 1024 * 1024;
@@ -653,6 +686,7 @@
`aps_packages` = '" . (int)$number_of_aps_packages . "',
`perlenabled` = '" . $db->escape($perlenabled) . "',
`email_autoresponder` = '" . $db->escape($email_autoresponder) . "',
+ `backup_allowed` = '" . $db->escape($backup_allowed) . "',
`theme` = '" . $db->escape($_theme) . "'"
);
$customerid = $db->insert_id();
@@ -855,14 +889,15 @@
$tickets_ul = makecheckbox('tickets_ul', $lng['customer']['unlimited'], '-1', false, '0', true, true);
$mysqls_ul = makecheckbox('mysqls_ul', $lng['customer']['unlimited'], '-1', false, '0', true, true);
$number_of_aps_packages_ul = makecheckbox('number_of_aps_packages_ul', $lng['customer']['unlimited'], '-1', false, '0', true, true);
- $createstdsubdomain = makeyesno('createstdsubdomain', '1', '0', '1');
- $email_imap = makeyesno('email_imap', '1', '0', '1');
- $email_pop3 = makeyesno('email_pop3', '1', '0', '1');
- $sendpassword = makeyesno('sendpassword', '1', '0', '1');
- $phpenabled = makeyesno('phpenabled', '1', '0', '1');
- $perlenabled = makeyesno('perlenabled', '1', '0', '0');
- $store_defaultindex = makeyesno('store_defaultindex', '1', '0', '1');
-
+ #$createstdsubdomain = makeyesno('createstdsubdomain', '1', '0', '1');
+ #$email_imap = makeyesno('email_imap', '1', '0', '1');
+ #$email_pop3 = makeyesno('email_pop3', '1', '0', '1');
+ #$sendpassword = makeyesno('sendpassword', '1', '0', '1');
+ #$phpenabled = makeyesno('phpenabled', '1', '0', '1');
+ #$perlenabled = makeyesno('perlenabled', '1', '0', '0');
+ #$store_defaultindex = makeyesno('store_defaultindex', '1', '0', '1');
+ $backup_allowed = makeyesno('backup_allowed', '1', '0', '0');
+
$customer_add_data = include_once dirname(__FILE__).'/lib/formfields/admin/customer/formfield.customer_add.php';
$customer_add_form = htmlform::genHTMLForm($customer_add_data);
@@ -965,9 +1000,17 @@
$email_autoresponder = 0;
}
- $email_imap = intval_ressource($_POST['email_imap']);
- $email_pop3 = intval_ressource($_POST['email_pop3']);
- $ftps = intval_ressource($_POST['ftps']);
+ $email_imap = 0;
+ if(isset($_POST['email_imap']))
+ $email_imap = intval_ressource($_POST['email_imap']);
+
+ $email_pop3 = 0;
+ if(isset($_POST['email_pop3']))
+ $email_pop3 = intval_ressource($_POST['email_pop3']);
+
+ $ftps = 0;
+ if(isset($_POST['ftps']))
+ $ftps = intval_ressource($_POST['ftps']);
if(isset($_POST['ftps_ul']))
{
@@ -981,8 +1024,18 @@
{
$tickets = - 1;
}
+
+ $backup_allowed = 0;
+ if (isset($_POST['backup_allowed']))
+ $backup_allowed = intval($_POST['backup_allowed']);
+
+ if($backup_allowed != '0'){
+ $backup_allowed = 1;
+ }
- $mysqls = intval_ressource($_POST['mysqls']);
+ $mysqls = 0;
+ if(isset($_POST['mysqls']))
+ $mysqls = intval_ressource($_POST['mysqls']);
if(isset($_POST['mysqls_ul']))
{
@@ -1003,10 +1056,21 @@
$number_of_aps_packages = 0;
}
- $createstdsubdomain = intval($_POST['createstdsubdomain']);
- $deactivated = intval($_POST['deactivated']);
- $phpenabled = intval($_POST['phpenabled']);
- $perlenabled = intval($_POST['perlenabled']);
+ $createstdsubdomain = 0;
+ if(isset($_POST['createstdsubdomain']))
+ $createstdsubdomain = intval($_POST['createstdsubdomain']);
+
+ $deactivated = 0;
+ if(isset($_POST['deactivated']))
+ $deactivated = intval($_POST['deactivated']);
+
+ $phpenabled = 0;
+ if(isset($_POST['phpenabled']))
+ $phpenabled = intval($_POST['phpenabled']);
+
+ $perlenabled = 0;
+ if(isset($_POST['perlenabled']))
+ $perlenabled = intval($_POST['perlenabled']);
$diskspace = $diskspace * 1024;
$traffic = $traffic * 1024 * 1024;
@@ -1188,7 +1252,8 @@
$db->query("UPDATE `" . TABLE_MAIL_USERS . "` SET `imap`='" . (int)$email_imap . "' WHERE `customerid`='" . (int)$id . "'");
}
- $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `name`='" . $db->escape($name) . "', `firstname`='" . $db->escape($firstname) . "', `company`='" . $db->escape($company) . "', `street`='" . $db->escape($street) . "', `zipcode`='" . $db->escape($zipcode) . "', `city`='" . $db->escape($city) . "', `phone`='" . $db->escape($phone) . "', `fax`='" . $db->escape($fax) . "', `email`='" . $db->escape($email) . "', `customernumber`='" . $db->escape($customernumber) . "', `def_language`='" . $db->escape($def_language) . "', `password` = '" . $password . "', `diskspace`='" . $db->escape($diskspace) . "', `traffic`='" . $db->escape($traffic) . "', `subdomains`='" . $db->escape($subdomains) . "', `emails`='" . $db->escape($emails) . "', `email_accounts` = '" . $db->escape($email_accounts) . "', `email_forwarders`='" . $db->escape($email_forwarders) . "', `ftps`='" . $db->escape($ftps) . "', `tickets`='" . $db->escape($tickets) . "', `mysqls`='" . $db->escape($mysqls) . "', `deactivated`='" . $db->escape($deactivated) . "', `phpenabled`='" . $db->escape($phpenabled) . "', `email_quota`='" . $db->escape($email_quota) . "', `imap`='" . $db->escape($email_imap) . "', `pop3`='" . $db->escape($email_pop3) . "', `aps_packages`='" . (int)$number_of_aps_packages . "', `perlenabled`='" . $db->escape($perlenabled) . "', `email_autoresponder`='" . $db->escape($email_autoresponder) . "' WHERE `customerid`='" . (int)$id . "'");
+ // $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `name`='" . $db->escape($name) . "', `firstname`='" . $db->escape($firstname) . "', `company`='" . $db->escape($company) . "', `street`='" . $db->escape($street) . "', `zipcode`='" . $db->escape($zipcode) . "', `city`='" . $db->escape($city) . "', `phone`='" . $db->escape($phone) . "', `fax`='" . $db->escape($fax) . "', `email`='" . $db->escape($email) . "', `customernumber`='" . $db->escape($customernumber) . "', `def_language`='" . $db->escape($def_language) . "', `password` = '" . $password . "', `diskspace`='" . $db->escape($diskspace) . "', `traffic`='" . $db->escape($traffic) . "', `subdomains`='" . $db->escape($subdomains) . "', `emails`='" . $db->escape($emails) . "', `email_accounts` = '" . $db->escape($email_accounts) . "', `email_forwarders`='" . $db->escape($email_forwarders) . "', `ftps`='" . $db->escape($ftps) . "', `tickets`='" . $db->escape($tickets) . "', `mysqls`='" . $db->escape($mysqls) . "', `deactivated`='" . $db->escape($deactivated) . "', `phpenabled`='" . $db->escape($phpenabled) . "', `email_quota`='" . $db->escape($email_quota) . "', `imap`='" . $db->escape($email_imap) . "', `pop3`='" . $db->escape($email_pop3) . "', `aps_packages`='" . (int)$number_of_aps_packages . "', `perlenabled`='" . $db->escape($perlenabled) . "', `email_autoresponder`='" . $db->escape($email_autoresponder) . "' WHERE `customerid`='" . (int)$id . "'");
+ $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `name`='" . $db->escape($name) . "', `firstname`='" . $db->escape($firstname) . "', `company`='" . $db->escape($company) . "', `street`='" . $db->escape($street) . "', `zipcode`='" . $db->escape($zipcode) . "', `city`='" . $db->escape($city) . "', `phone`='" . $db->escape($phone) . "', `fax`='" . $db->escape($fax) . "', `email`='" . $db->escape($email) . "', `customernumber`='" . $db->escape($customernumber) . "', `def_language`='" . $db->escape($def_language) . "', `password` = '" . $password . "', `diskspace`='" . $db->escape($diskspace) . "', `traffic`='" . $db->escape($traffic) . "', `subdomains`='" . $db->escape($subdomains) . "', `emails`='" . $db->escape($emails) . "', `email_accounts` = '" . $db->escape($email_accounts) . "', `email_forwarders`='" . $db->escape($email_forwarders) . "', `ftps`='" . $db->escape($ftps) . "', `tickets`='" . $db->escape($tickets) . "', `mysqls`='" . $db->escape($mysqls) . "', `deactivated`='" . $db->escape($deactivated) . "', `phpenabled`='" . $db->escape($phpenabled) . "', `email_quota`='" . $db->escape($email_quota) . "', `imap`='" . $db->escape($email_imap) . "', `pop3`='" . $db->escape($email_pop3) . "', `aps_packages`='" . (int)$number_of_aps_packages . "', `perlenabled`='" . $db->escape($perlenabled) . "', `email_autoresponder`='" . $db->escape($email_autoresponder) . "', `backup_allowed`='" . $db->escape($backup_allowed) . "' WHERE `customerid`='" . (int)$id . "'");
$admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` ";
if($mysqls != '-1'
@@ -1474,13 +1539,13 @@
$result['aps_packages'] = '';
}
- $createstdsubdomain = makeyesno('createstdsubdomain', '1', '0', (($result['standardsubdomain'] != '0') ? '1' : '0'));
- $phpenabled = makeyesno('phpenabled', '1', '0', $result['phpenabled']);
- $perlenabled = makeyesno('perlenabled', '1', '0', $result['perlenabled']);
- $deactivated = makeyesno('deactivated', '1', '0', $result['deactivated']);
- $email_imap = makeyesno('email_imap', '1', '0', $result['imap']);
- $email_pop3 = makeyesno('email_pop3', '1', '0', $result['pop3']);
-
+ #$createstdsubdomain = makeyesno('createstdsubdomain', '1', '0', (($result['standardsubdomain'] != '0') ? '1' : '0'));
+ #$phpenabled = makeyesno('phpenabled', '1', '0', $result['phpenabled']);
+ #$perlenabled = makeyesno('perlenabled', '1', '0', $result['perlenabled']);
+ #$deactivated = makeyesno('deactivated', '1', '0', $result['deactivated']);
+ #$email_imap = makeyesno('email_imap', '1', '0', $result['imap']);
+ #$email_pop3 = makeyesno('email_pop3', '1', '0', $result['pop3']);
+ $backup_allowed = makeyesno('backup_allowed', '1', '0', $result['backup_allowed']);
$result = htmlentities_array($result);
$customer_edit_data = include_once dirname(__FILE__).'/lib/formfields/admin/customer/formfield.customer_edit.php';
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/admin_domains.php
^
|
@@ -227,10 +227,23 @@
$domain = $idna_convert->encode(preg_replace(Array('/\:(\d)+$/', '/^https?\:\/\//'), '', validate($_POST['domain'], 'domain')));
$subcanemaildomain = intval($_POST['subcanemaildomain']);
+
+ $isemaildomain = 0;
+ if(isset($_POST['isemaildomain']))
$isemaildomain = intval($_POST['isemaildomain']);
- $email_only = intval($_POST['email_only']);
- $wwwserveralias = intval($_POST['wwwserveralias']);
- $speciallogfile = intval($_POST['speciallogfile']);
+
+ $email_only = 0;
+ if(isset($_POST['email_only']))
+ $email_only = intval($_POST['email_only']);
+
+ $wwwserveralias = 0;
+ if(isset($_POST['wwwserveralias']))
+ $wwwserveralias = intval($_POST['wwwserveralias']);
+
+ $speciallogfile = 0;
+ if(isset($_POST['speciallogfile']))
+ $speciallogfile = intval($_POST['speciallogfile']);
+
$aliasdomain = intval($_POST['alias']);
$issubof = intval($_POST['issubof']);
$customerid = intval($_POST['customerid']);
@@ -473,7 +486,8 @@
{
standard_error(array('stringisempty', 'mydomain'));
}
- elseif(!validateDomain($domain))
+ /* Check whether domain validation is enabled and if, validate the domain */
+ elseif($settings['system']['validate_domain'] && !validateDomain($domain))
{
standard_error(array('stringiswrong', 'mydomain'));
}
@@ -655,18 +669,18 @@
$phpconfigs.= makeoption($row['description'], $row['id'], $settings['system']['mod_fcgid_defaultini'], true, true);
}
- $isbinddomain = makeyesno('isbinddomain', '1', '0', '1');
- $isemaildomain = makeyesno('isemaildomain', '1', '0', '1');
- $email_only = makeyesno('email_only', '1', '0', '0');
+ #$isbinddomain = makeyesno('isbinddomain', '1', '0', '1');
+ #$isemaildomain = makeyesno('isemaildomain', '1', '0', '1');
+ #$email_only = makeyesno('email_only', '1', '0', '0');
$subcanemaildomain = makeoption($lng['admin']['subcanemaildomain']['never'], '0', '0', true, true) . makeoption($lng['admin']['subcanemaildomain']['choosableno'], '1', '0', true, true) . makeoption($lng['admin']['subcanemaildomain']['choosableyes'], '2', '0', true, true) . makeoption($lng['admin']['subcanemaildomain']['always'], '3', '0', true, true);
- $dkim = makeyesno('dkim', '1', '0', '1');
- $wwwserveralias = makeyesno('wwwserveralias', '1', '0', '1');
- $caneditdomain = makeyesno('caneditdomain', '1', '0', '1');
- $openbasedir = makeyesno('openbasedir', '1', '0', '1');
- $safemode = makeyesno('safemode', '1', '0', '1');
- $speciallogfile = makeyesno('speciallogfile', '1', '0', '0');
- $ssl = makeyesno('ssl', '1', '0', '0');
- $ssl_redirect = makeyesno('ssl_redirect', '1', '0', '0');
+ #$dkim = makeyesno('dkim', '1', '0', '1');
+ #$wwwserveralias = makeyesno('wwwserveralias', '1', '0', '1');
+ #$caneditdomain = makeyesno('caneditdomain', '1', '0', '1');
+ #$openbasedir = makeyesno('openbasedir', '1', '0', '1');
+ #$safemode = makeyesno('safemode', '1', '0', '1');
+ #$speciallogfile = makeyesno('speciallogfile', '1', '0', '0');
+ #$ssl = makeyesno('ssl', '1', '0', '0');
+ #$ssl_redirect = makeyesno('ssl_redirect', '1', '0', '0');
$add_date = date('Y-m-d');
$domain_add_data = include_once dirname(__FILE__).'/lib/formfields/admin/domains/formfield.domains_add.php';
@@ -764,13 +778,22 @@
$aliasdomain = intval($_POST['alias']);
$issubof = intval($_POST['issubof']);
- $isemaildomain = intval($_POST['isemaildomain']);
- $email_only = intval($_POST['email_only']);
$subcanemaildomain = intval($_POST['subcanemaildomain']);
$caneditdomain = intval($_POST['caneditdomain']);
- $wwwserveralias = intval($_POST['wwwserveralias']);
$registration_date = validate($_POST['registration_date'], 'registration_date', '/^(19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])$/', '', array('0000-00-00', '0', ''));
+ $isemaildomain = 0;
+ if(isset($_POST['isemaildomain']))
+ $isemaildomain = intval($_POST['isemaildomain']);
+
+ $email_only = 0;
+ if(isset($_POST['email_only']))
+ $email_only = intval($_POST['email_only']);
+
+ $wwwserveralias = 0;
+ if(isset($_POST['wwwserveralias']))
+ $wwwserveralias = intval($_POST['wwwserveralias']);
+
if($userinfo['change_serversettings'] == '1')
{
$isbinddomain = intval($_POST['isbinddomain']);
@@ -1186,20 +1209,20 @@
}
$result['specialsettings'] = $result['specialsettings'];
- $isbinddomain = makeyesno('isbinddomain', '1', '0', $result['isbinddomain']);
- $wwwserveralias = makeyesno('wwwserveralias', '1', '0', $result['wwwserveralias']);
- $isemaildomain = makeyesno('isemaildomain', '1', '0', $result['isemaildomain']);
- $email_only = makeyesno('email_only', '1', '0', $result['email_only']);
- $ssl = makeyesno('ssl', '1', '0', $result['ssl']);
- $ssl_redirect = makeyesno('ssl_redirect', '1', '0', $result['ssl_redirect']);
+ #$isbinddomain = makeyesno('isbinddomain', '1', '0', $result['isbinddomain']);
+ #$wwwserveralias = makeyesno('wwwserveralias', '1', '0', $result['wwwserveralias']);
+ #$isemaildomain = makeyesno('isemaildomain', '1', '0', $result['isemaildomain']);
+ #$email_only = makeyesno('email_only', '1', '0', $result['email_only']);
+ #$ssl = makeyesno('ssl', '1', '0', $result['ssl']);
+ #$ssl_redirect = makeyesno('ssl_redirect', '1', '0', $result['ssl_redirect']);
$subcanemaildomain = makeoption($lng['admin']['subcanemaildomain']['never'], '0', $result['subcanemaildomain'], true, true);
$subcanemaildomain.= makeoption($lng['admin']['subcanemaildomain']['choosableno'], '1', $result['subcanemaildomain'], true, true);
$subcanemaildomain.= makeoption($lng['admin']['subcanemaildomain']['choosableyes'], '2', $result['subcanemaildomain'], true, true);
$subcanemaildomain.= makeoption($lng['admin']['subcanemaildomain']['always'], '3', $result['subcanemaildomain'], true, true);
- $dkim = makeyesno('dkim', '1', '0', $result['dkim']);
- $caneditdomain = makeyesno('caneditdomain', '1', '0', $result['caneditdomain']);
- $openbasedir = makeyesno('openbasedir', '1', '0', $result['openbasedir']);
- $safemode = makeyesno('safemode', '1', '0', $result['safemode']);
+ #$dkim = makeyesno('dkim', '1', '0', $result['dkim']);
+ #$caneditdomain = makeyesno('caneditdomain', '1', '0', $result['caneditdomain']);
+ #$openbasedir = makeyesno('openbasedir', '1', '0', $result['openbasedir']);
+ #$safemode = makeyesno('safemode', '1', '0', $result['safemode']);
$speciallogfile = ($result['speciallogfile'] == 1 ? $lng['panel']['yes'] : $lng['panel']['no']);
$result['add_date'] = date('Y-m-d', $result['add_date']);
@@ -1211,7 +1234,7 @@
$phpconfigs.= makeoption($phpconfigs_row['description'], $phpconfigs_row['id'], $result['phpsettingid'], true, true);
}
- $specialsettingsforsubdomains = makeyesno('specialsettingsforsubdomains', '1', '0', '1');
+ #$specialsettingsforsubdomains = makeyesno('specialsettingsforsubdomains', '1', '0', '1');
$result = htmlentities_array($result);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/admin_ipsandports.php
^
|
@@ -251,11 +251,11 @@
}
else
{
- $enable_ssl = makeyesno('ssl', '1', '0', '0');
- $listen_statement = makeyesno('listen_statement', '1', '0', '1');
- $namevirtualhost_statement = makeyesno('namevirtualhost_statement', '1', '0', '1');
- $vhostcontainer = makeyesno('vhostcontainer', '1', '0', '1');
- $vhostcontainer_servername_statement = makeyesno('vhostcontainer_servername_statement', '1', '0', '1');
+ #$enable_ssl = makeyesno('ssl', '1', '0', '0');
+ #$listen_statement = makeyesno('listen_statement', '1', '0', '1');
+ #$namevirtualhost_statement = makeyesno('namevirtualhost_statement', '1', '0', '1');
+ #$vhostcontainer = makeyesno('vhostcontainer', '1', '0', '1');
+ #$vhostcontainer_servername_statement = makeyesno('vhostcontainer_servername_statement', '1', '0', '1');
$ipsandports_add_data = include_once dirname(__FILE__).'/lib/formfields/admin/ipsandports/formfield.ipsandports_add.php';
$ipsandports_add_form = htmlform::genHTMLForm($ipsandports_add_data);
@@ -397,12 +397,12 @@
}
else
{
- $enable_ssl = makeyesno('ssl', '1', '0', $result['ssl']);
+ #$enable_ssl = makeyesno('ssl', '1', '0', $result['ssl']);
$result = htmlentities_array($result);
- $listen_statement = makeyesno('listen_statement', '1', '0', $result['listen_statement']);
- $namevirtualhost_statement = makeyesno('namevirtualhost_statement', '1', '0', $result['namevirtualhost_statement']);
- $vhostcontainer = makeyesno('vhostcontainer', '1', '0', $result['vhostcontainer']);
- $vhostcontainer_servername_statement = makeyesno('vhostcontainer_servername_statement', '1', '0', $result['vhostcontainer_servername_statement']);
+ #$listen_statement = makeyesno('listen_statement', '1', '0', $result['listen_statement']);
+ #$namevirtualhost_statement = makeyesno('namevirtualhost_statement', '1', '0', $result['namevirtualhost_statement']);
+ #$vhostcontainer = makeyesno('vhostcontainer', '1', '0', $result['vhostcontainer']);
+ #$vhostcontainer_servername_statement = makeyesno('vhostcontainer_servername_statement', '1', '0', $result['vhostcontainer_servername_statement']);
$ipsandports_edit_data = include_once dirname(__FILE__).'/lib/formfields/admin/ipsandports/formfield.ipsandports_edit.php';
$ipsandports_edit_form = htmlform::genHTMLForm($ipsandports_edit_data);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/admin_settings.php
^
|
@@ -79,6 +79,7 @@
inserttask('1');
inserttask('4');
inserttask('5');
+ inserttask('9');
standard_success('settingssaved', '', array('filename' => $filename, 'action' => $action, 'page' => $page));
}
}
@@ -119,6 +120,7 @@
inserttask('1');
inserttask('4');
inserttask('5');
+ inserttask('9');
standard_success('rebuildingconfigs', '', array('filename' => 'admin_index.php'));
}
else
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/admin_traffic.php
^
|
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * This file is part of the Froxlor project.
+ * Copyright (c) 2003-2009 the SysCP Team (see authors).
+ * Copyright (c) 2010 the Froxlor Team (see authors).
+ *
+ * For the full copyright and license information, please view the COPYING
+ * file that was distributed with this source code. You can also view the
+ * COPYING file online at http://files.froxlor.org/misc/COPYING.txt
+ *
+ * @copyright (c) the authors
+ * @author Morton Jonuschat <m.jonuschat@chrome-it.de>
+ * @license GPLv2 http://files.syscp.org/misc/COPYING.txt
+ * @package Panel
+ * @version $Id: $
+ */
+
+define('AREA', 'admin');
+
+/**
+ * Include our init.php, which manages Sessions, Language etc.
+ */
+
+require ("./lib/init.php");
+
+if($action == 'logout')
+{
+ $db->query("DELETE FROM `" . TABLE_PANEL_SESSIONS . "` WHERE `userid` = '" . (int)$userinfo['adminid'] . "' AND `adminsession` = '1'");
+ redirectTo('index.php');
+ exit;
+}
+
+if(isset($_POST['id']))
+{
+ $id = intval($_POST['id']);
+}
+elseif(isset($_GET['id']))
+{
+ $id = intval($_GET['id']);
+}
+
+$months = array(
+ '0' => 'empty',
+ '1' => 'jan',
+ '2' => 'feb',
+ '3' => 'mar',
+ '4' => 'apr',
+ '5' => 'may',
+ '6' => 'jun',
+ '7' => 'jul',
+ '8' => 'aug',
+ '9' => 'sep',
+ '10' => 'oct',
+ '11' => 'nov',
+ '12' => 'dec',
+);
+
+if($page == 'overview' || $page == 'customers')
+{
+ if($action == 'su' && $id != 0)
+ {
+ $result = $db->query_first("SELECT * FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `customerid`='" . (int)$id . "' " . ($userinfo['customers_see_all'] ? '' : " AND `adminid` = '" . (int)$userinfo['adminid'] . "' "));
+
+ if($result['loginname'] != '')
+ {
+ $result = $db->query_first("SELECT * FROM `" . TABLE_PANEL_SESSIONS . "` WHERE `userid`='" . (int)$userinfo['userid'] . "'");
+ $s = md5(uniqid(microtime(), 1));
+ $db->query("INSERT INTO `" . TABLE_PANEL_SESSIONS . "` (`hash`, `userid`, `ipaddress`, `useragent`, `lastactivity`, `language`, `adminsession`) VALUES ('" . $db->escape($s) . "', '" . (int)$id . "', '" . $db->escape($result['ipaddress']) . "', '" . $db->escape($result['useragent']) . "', '" . time() . "', '" . $db->escape($result['language']) . "', '0')");
+ redirectTo('customer_traffic.php', Array(
+ 's' => $s
+ ));
+ }
+ else
+ {
+ redirectTo('index.php', Array(
+ 'action' => 'login'
+ ));
+ }
+ }
+ $customerview = 1;
+ $stats_tables = '';
+ $minyear = $db->query_first("SELECT `year` FROM `". TABLE_PANEL_TRAFFIC . "` ORDER BY `year` ASC LIMIT 1");
+ if (!isset($minyear['year']) || $minyear['year'] == 0)
+ {
+ $maxyears = 0;
+ }
+ else
+ {
+ $maxyears = date("Y") - $minyear['year'];
+ }
+ for($years = 0; $years<=$maxyears; $years++) {
+ $overview['year'] = date("Y")-$years;
+ $overview['type'] = $lng['traffic']['customer'];
+ $domain_list = '';
+ $customer_name_list = $db->query("SELECT `customerid`,`company`,`name`,`firstname` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `deactivated`='0'" . ($userinfo['customers_see_all'] ? '' : " AND `adminid` = '" . (int)$userinfo['adminid'] . "' ") . " ORDER BY name");
+ $totals = array(
+ 'jan' => 0,
+ 'feb' => 0,
+ 'mar' => 0,
+ 'apr' => 0,
+ 'may' => 0,
+ 'jun' => 0,
+ 'jul' => 0,
+ 'aug' => 0,
+ 'sep' => 0,
+ 'oct' => 0,
+ 'nov' => 0,
+ 'dec' => 0,
+ );
+ while($customer_name = $db->fetch_array($customer_name_list)) {
+ $virtual_host = array(
+ 'name' => ($customer_name['company'] == '' ? $customer_name['name'] . ", " . $customer_name['firstname'] : $customer_name['company']),
+ 'customerid' => $customer_name['customerid'],
+ 'jan' => '-',
+ 'feb' => '-',
+ 'mar' => '-',
+ 'apr' => '-',
+ 'may' => '-',
+ 'jun' => '-',
+ 'jul' => '-',
+ 'aug' => '-',
+ 'sep' => '-',
+ 'oct' => '-',
+ 'nov' => '-',
+ 'dec' => '-',
+ );
+
+ $traffic_list = $db->query("SELECT month, SUM(http+ftp_up+ftp_down+mail)*1024 AS traffic FROM `" . TABLE_PANEL_TRAFFIC . "` WHERE year = " . (date("Y")-$years) . " AND `customerid` = '" . $customer_name['customerid'] . "' GROUP BY month ORDER BY month");
+ while($traffic_month = $db->fetch_array($traffic_list)) {
+ $virtual_host[$months[(int)$traffic_month['month']]] = size_readable($traffic_month['traffic'], 'GiB', 'bi', '%01.3f %s');
+ $totals[$months[(int)$traffic_month['month']]] += $traffic_month['traffic'];
+ }
+ eval("\$domain_list .= sprintf(\"%s\", \"" . getTemplate("traffic/index_table_row") . "\");");
+ }
+ // sum up totals
+ $virtual_host = array(
+ 'name' => $lng['traffic']['months']['total'],
+ );
+ foreach($totals as $month => $bytes) {
+ $virtual_host[$month] = ($bytes == 0 ? '-' : size_readable($bytes, 'GiB', 'bi', '%01.3f %s'));
+ }
+ $customerview = 0;
+ eval("\$total_list = sprintf(\"%s\", \"" . getTemplate("traffic/index_table_row") . "\");");
+ eval("\$stats_tables .= sprintf(\"%s\", \"" . getTemplate("traffic/index_table") . "\");");
+ }
+ eval("echo \"" . getTemplate("traffic/index") . "\";");
+}
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/customer_autoresponder.php
^
|
@@ -110,7 +110,7 @@
$date_from_off = makecheckbox('date_from_off', $lng['panel']['not_activated'], '-1', false, '-1', true, true);
$date_until_off = makecheckbox('date_until_off', $lng['panel']['not_activated'], '-1', false, '-1', true, true);
- $isactive = makeyesno('active', '1', '0', '1');
+ #$isactive = makeyesno('active', '1', '0', '1');
$autoresponder_add_data = include_once dirname(__FILE__).'/lib/formfields/customer/email/formfield.emails_addautoresponder.php';
$autoresponder_add_form = htmlform::genHTMLForm($autoresponder_add_data);
@@ -241,7 +241,7 @@
}
$date_until_off = makecheckbox('date_until_off', $lng['panel']['not_activated'], '-1', false, $deactivated, true, true);
- $isactive = makeyesno('active', '1', '0', $row['enabled']);
+ #$isactive = makeyesno('active', '1', '0', $row['enabled']);
$autoresponder_edit_data = include_once dirname(__FILE__).'/lib/formfields/customer/email/formfield.emails_editautoresponder.php';
$autoresponder_edit_form = htmlform::genHTMLForm($autoresponder_edit_data);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/customer_domains.php
^
|
@@ -378,7 +378,7 @@
}
}
- $ssl_redirect = makeyesno('ssl_redirect', '1', '0', $result['ssl_redirect']);
+ #$ssl_redirect = makeyesno('ssl_redirect', '1', '0', $result['ssl_redirect']);
$openbasedir = makeoption($lng['domain']['docroot'], 0, NULL, true) . makeoption($lng['domain']['homedir'], 1, NULL, true);
$pathSelect = makePathfield($userinfo['documentroot'], $userinfo['guid'], $userinfo['guid'], $settings['panel']['pathedit']);
@@ -570,9 +570,9 @@
}
}
- $ssl_redirect = makeyesno('ssl_redirect', '1', '0', $result['ssl_redirect']);
- $iswildcarddomain = makeyesno('iswildcarddomain', '1', '0', $result['iswildcarddomain']);
- $isemaildomain = makeyesno('isemaildomain', '1', '0', $result['isemaildomain']);
+ #$ssl_redirect = makeyesno('ssl_redirect', '1', '0', $result['ssl_redirect']);
+ #$iswildcarddomain = makeyesno('iswildcarddomain', '1', '0', $result['iswildcarddomain']);
+ #$isemaildomain = makeyesno('isemaildomain', '1', '0', $result['isemaildomain']);
$openbasedir = makeoption($lng['domain']['docroot'], 0, $result['openbasedir_path'], true) . makeoption($lng['domain']['homedir'], 1, $result['openbasedir_path'], true);
$result_ipandport = $db->query_first("SELECT `ip` FROM `".TABLE_PANEL_IPSANDPORTS."` WHERE `id`='".(int)$result['ipandport']."'");
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/customer_email.php
^
|
@@ -281,7 +281,7 @@
$domains.= makeoption($idna_convert->decode($row['domain']), $row['domain']);
}
- $iscatchall = makeyesno('iscatchall', '1', '0', '0');
+ #$iscatchall = makeyesno('iscatchall', '1', '0', '0');
$email_add_data = include_once dirname(__FILE__).'/lib/formfields/customer/email/formfield.emails_add.php';
$email_add_form = htmlform::genHTMLForm($email_add_data);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/customer_ftp.php
^
|
@@ -268,7 +268,7 @@
}
}
- $sendinfomail = makeyesno('sendinfomail', '1', '0', '0');
+ #$sendinfomail = makeyesno('sendinfomail', '1', '0', '0');
$ftp_add_data = include_once dirname(__FILE__).'/lib/formfields/customer/ftp/formfield.ftp_add.php';
$ftp_add_form = htmlform::genHTMLForm($ftp_add_data);
@@ -324,6 +324,7 @@
if(!file_exists($path))
{
mkDirWithCorrectOwnership($userinfo['documentroot'], $path, $result['uid'], $result['gid']);
+ inserttask(5); /* Let the cronjob do the rest */
}
$log->logAction(USR_ACTION, LOG_INFO, "updated ftp-account homdir for '" . $result['username'] . "'");
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/customer_mysql.php
^
|
@@ -254,7 +254,7 @@
$mysql_servers .= makeoption($mysql_server_details['caption'], $mysql_server);
}
- $sendinfomail = makeyesno('sendinfomail', '1', '0', '0');
+ #$sendinfomail = makeyesno('sendinfomail', '1', '0', '0');
$mysql_add_data = include_once dirname(__FILE__).'/lib/formfields/customer/mysql/formfield.mysql_add.php';
$mysql_add_form = htmlform::genHTMLForm($mysql_add_data);
|
|
Added |
froxlor-0.9.20.1.tar.bz2/images/Froxlor/icons/backup.png
^
|
|
Added |
froxlor-0.9.20.1.tar.bz2/images/Froxlor/icons/backup_big.png
^
|
|
Added |
froxlor-0.9.20.1.tar.bz2/images/Froxlor/icons/res_recalculate.png
^
|
|
Added |
froxlor-0.9.20.1.tar.bz2/images/Froxlor/icons/res_recalculate_big.png
^
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/index.php
^
|
@@ -258,6 +258,9 @@
$cmail = isset($_GET['customermail']) ? $_GET['customermail'] : 'unknown';
$message = str_replace('%s', $cmail, $lng['error']['errorsendingmail']);
break;
+ case 5:
+ $message = $lng['error']['user_banned'];
+ break;
}
$update_in_progress = '';
@@ -280,7 +283,7 @@
{
$loginname = validate($_POST['loginname'], 'loginname');
$email = validateEmail($_POST['loginemail'], 'email');
- $sql = "SELECT `adminid`, `customerid`, `firstname`, `name`, `company`, `email`, `loginname`, `def_language` FROM `" . TABLE_PANEL_CUSTOMERS . "`
+ $sql = "SELECT `adminid`, `customerid`, `firstname`, `name`, `company`, `email`, `loginname`, `def_language`, `deactivated` FROM `" . TABLE_PANEL_CUSTOMERS . "`
WHERE `loginname`='" . $db->escape($loginname) . "'
AND `email`='" . $db->escape($email) . "'";
$result = $db->query($sql);
@@ -305,6 +308,13 @@
if($result !== null)
{
$user = $db->fetch_array($result);
+
+ /* Check whether user is banned */
+ if($user['deactivated'])
+ {
+ $message = $lng['pwdreminder']['notallowed'];
+ redirectTo('index.php', Array('showmessage' => '5'), true);
+ }
if(($adminchecked && $settings['panel']['allow_preset_admin'] == '1')
|| $adminchecked == false)
@@ -384,7 +394,7 @@
{
$rstlog = FroxlorLogger::getInstanceOf(array('loginname' => 'password_reset'), $db, $settings);
$rstlog->logAction(USR_ACTION, LOG_WARNING, "User '" . $loginname . "' tried to reset pwd but wasn't found in database!");
- $message = $lng['login']['usernotfound'];
+ $message = $lng['login']['combination_not_found'];
}
unset($user);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/install/froxlor.sql
^
|
@@ -167,6 +167,8 @@
`email_autoresponder` int(5) NOT NULL default '0',
`email_autoresponder_used` int(5) NOT NULL default '0',
`theme` varchar(255) NOT NULL default 'Froxlor',
+ `backup_allowed` TINYINT( 1 ) NOT NULL DEFAULT '1',
+ `backup_enabled` TINYINT( 1 ) NOT NULL DEFAULT '0',
PRIMARY KEY (`adminid`),
UNIQUE KEY `loginname` (`loginname`)
) ENGINE=MyISAM ;
@@ -465,7 +467,7 @@
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'vmail_homedir', '/var/customers/mail/');
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'bindconf_directory', '/etc/bind/');
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'bindreload_command', '/etc/init.d/bind9 reload');
-INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'version', '0.9.19');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'version', '0.9.20.1');
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'hostname', 'SERVERNAME');
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('login', 'maxloginattempts', '3');
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('login', 'deactivatetime', '900');
@@ -617,7 +619,17 @@
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'report_webmax', '90');
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'report_trafficmax', '90');
INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'default_theme', 'Froxlor');
-
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'validate_domain', '1');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_enabled', '1');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_dir', '#froxlor_backup');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_mysqldump_path', '/usr/bin/mysqldump');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_count', '1');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_bigfile', '1');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_enabled', '0');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_enabled', '0');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_server', '');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_user', '');
+INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_pass', '');
# --------------------------------------------------------
#
@@ -1026,7 +1038,7 @@
INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (6, 'froxlor/ticket', 'cron_used_tickets_reset.php', '1 DAY', '1', 'cron_ticketsreset');
INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (7, 'froxlor/ticket', 'cron_ticketarchive.php', '1 MONTH', '1', 'cron_ticketarchive');
INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (8, 'froxlor/reports', 'cron_usage_report.php', '1 DAY', '1', 'cron_usage_report');
-
+INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES (9, 'froxlor/backup', 'cron_backup.php', '1 Day', '1', 'cron_backup');
# --------------------------------------------------------
#
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/install/updates/froxlor/0.9/update_0.9.inc.php
^
|
@@ -1490,3 +1490,55 @@
updateToVersion('0.9.19');
}
+
+if(isFroxlorVersion('0.9.19'))
+{
+ showUpdateStep("Updating from 0.9.19 to 0.9.20-svn1");
+ lastStepStatus(0);
+
+ showUpdateStep("Adding new setting for domain validation");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'validate_domain', '1')");
+ lastStepStatus(0);
+
+ updateToVersion('0.9.20-svn1');
+}
+
+
+if(isFroxlorVersion('0.9.20-svn1'))
+{
+ showUpdateStep("Updating from 0.9.20-svn1 to 0.9.20-svn2");
+
+ // adding backup stuff
+
+ $db->query("ALTER TABLE `" . TABLE_PANEL_CUSTOMERS . "` ADD `backup_allowed` TINYINT( 1 ) NOT NULL DEFAULT '1'");
+ $db->query("ALTER TABLE `" . TABLE_PANEL_CUSTOMERS . "` ADD `backup_enabled` TINYINT( 1 ) NOT NULL DEFAULT '0'");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_enabled', '1')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_dir', '#froxlor_backup')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_mysqldump_path', '/usr/bin/mysqldump')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_count', '1')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_bigfile', '1')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_enabled', '0')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_server', '')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_user', '')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'backup_ftp_pass', '')");
+ $db->query("INSERT INTO `" . TABLE_PANEL_CRONRUNS . "` (`module`, `cronfile`, `interval`, `isactive`, `desc_lng_key`) VALUES ('froxlor/backup', 'cron_backup.php', '1 Day', '1', 'cron_backup');");
+ lastStepStatus(0);
+
+ updateToVersion('0.9.20-svn2');
+}
+
+if(isFroxlorVersion('0.9.20-svn2'))
+{
+ showUpdateStep("Updating from 0.9.20-svn2 to 0.9.20");
+ lastStepStatus(0);
+
+ updateToVersion('0.9.20');
+}
+
+if(isFroxlorVersion('0.9.20'))
+{
+ showUpdateStep("Updating from 0.9.20 to 0.9.20.1");
+ lastStepStatus(0);
+
+ updateToVersion('0.9.20.1');
+}
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/classes/output/class.htmlform.php
^
|
@@ -253,8 +253,10 @@
}
if (isset($_SESSION['requestData'])) {
- if (isset($_SESSION['requestData'][$fieldname])) {
- $checked[] = $_SESSION['requestData'][$fieldname];
+ if(isset($_SESSION['requestData'][$fieldname])) {
+ $checked = array($_SESSION['requestData'][$fieldname]);
+ } else {
+ $checked = array();
}
}
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/lib/configfiles/squeeze.inc.php
^
|
@@ -0,0 +1,385 @@
+<?php
+
+/**
+ * This file is part of the Froxlor project.
+ * Copyright (c) 2003-2009 the SysCP Team (see authors).
+ * Copyright (c) 2010 the Froxlor Team (see authors).
+ *
+ * For the full copyright and license information, please view the COPYING
+ * file that was distributed with this source code. You can also view the
+ * COPYING file online at http://files.froxlor.org/misc/COPYING.txt
+ *
+ * @copyright (c) the authors
+ * @author Florian Lippert <flo@syscp.org> (2003-2009)
+ * @author Froxlor team <team@froxlor.org> (2010-)
+ * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
+ * @package Configfiles
+ * @version $Id$
+ */
+
+return Array(
+ 'debian_squeeze' => Array(
+ 'label' => 'Debian 6.0 (Squeeze)',
+ 'services' => Array(
+ 'http' => Array(
+ 'label' => $lng['admin']['configfiles']['http'],
+ 'daemons' => Array(
+ 'apache2' => Array(
+ 'label' => 'Apache 2',
+ 'commands' => Array(
+ 'mkdir -p ' . $settings['system']['documentroot_prefix'],
+ 'mkdir -p ' . $settings['system']['logfiles_directory'],
+ ($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
+ 'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
+ 'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
+ 'a2dismod userdir'
+ ),
+ 'files' => ((int)$settings['phpfpm']['enabled'] == 1) ?
+ Array(
+ 'etc_apache2_mods-enabled_fastcgi.conf' => '/etc/apache2/mods-enabled/fastcgi.conf'
+ )
+ :
+ null,
+ 'restart' => Array(
+ '/etc/init.d/apache2 restart'
+ ),
+ ),
+ 'lighttpd' => Array(
+ 'label' => 'Lighttpd Webserver',
+ 'commands_1' => Array(
+ 'apt-get install lighttpd',
+ ),
+ 'files' => Array(
+ 'etc_lighttpd.conf' => '/etc/lighttpd/lighttpd.conf',
+ ),
+ 'commands_2' => Array(
+ $configcommand['vhost'],
+ $configcommand['diroptions'],
+ $configcommand['v_inclighty'],
+ $configcommand['d_inclighty'],
+ 'lighty-disable-mod cgi',
+ 'lighty-disable-mod fastcgi',
+ 'mkdir -p ' . $settings['system']['documentroot_prefix'],
+ 'mkdir -p ' . $settings['system']['logfiles_directory'],
+ ($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
+ 'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
+ 'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir']
+ ),
+ 'restart' => Array(
+ '/etc/init.d/lighttpd restart'
+ )
+ ),
+ 'nginx' => Array(
+ 'label' => 'Nginx Webserver',
+ 'commands_1' => Array(
+ 'apt-get install nginx php5-cgi',
+ ),
+ 'files' => Array(
+ 'etc_nginx_nginx.conf' => '/etc/nginx/nginx.conf',
+ 'etc_init.d_php-fcgi' => '/etc/init.d/php-fcgi'
+ ),
+ 'commands_2' => Array(
+ 'rm /etc/nginx/sites-enabled/default',
+ 'mkdir -p ' . $settings['system']['documentroot_prefix'],
+ 'mkdir -p ' . $settings['system']['logfiles_directory'],
+ //'mkdir -p ' . $settings['system']['deactivateddocroot'],
+ 'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
+ 'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
+ 'chmod u+x /etc/init.d/php-fcgi'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/php-fcgi start',
+ '/etc/init.d/nginx restart'
+ )
+ )
+ )
+ ),
+ 'dns' => Array(
+ 'label' => $lng['admin']['configfiles']['dns'],
+ 'daemons' => Array(
+ 'bind' => Array(
+ 'label' => 'Bind9',
+ 'commands' => Array(
+ 'apt-get install bind9',
+ 'echo "include \"' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf\";" >> /etc/bind/named.conf',
+ 'touch ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf',
+ 'chown root:bind ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf',
+ 'chmod 0644 ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/bind9 restart'
+ )
+ ),
+ 'powerdns' => Array(
+ 'label' => 'PowerDNS',
+ 'files' => Array(
+ 'etc_powerdns_pdns.conf' => '/etc/powerdns/pdns.conf',
+ 'etc_powerdns_pdns-froxlor.conf' => '/etc/powerdns/pdns_froxlor.conf',
+ ),
+ 'restart' => Array(
+ '/etc/init.d/pdns restart'
+ )
+ ),
+ )
+ ),
+ 'smtp' => Array(
+ 'label' => $lng['admin']['configfiles']['smtp'],
+ 'daemons' => Array(
+ 'postfix_courier' => Array(
+ 'label' => 'Postfix/Courier',
+ 'commands' => Array(
+ 'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql',
+ 'mkdir -p /var/spool/postfix/etc/pam.d',
+ 'mkdir -p /var/spool/postfix/var/run/mysqld',
+ 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail',
+ 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail',
+ 'mkdir -p ' . $settings['system']['vmail_homedir'],
+ 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'],
+ 'touch /etc/postfix/mysql-virtual_alias_maps.cf',
+ 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'touch /etc/postfix/mysql-virtual_sender_permissions.cf',
+ 'touch /etc/postfix/sasl/smtpd.conf',
+ 'chown root:root /etc/postfix/main.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_alias_maps.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_sender_permissions.cf',
+ 'chown root:root /etc/postfix/sasl/smtpd.conf',
+ 'chmod 0644 /etc/postfix/main.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_alias_maps.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_sender_permissions.cf',
+ 'chmod 0600 /etc/postfix/sasl/smtpd.conf',
+ ),
+ 'files' => Array(
+ 'etc_postfix_main.cf' => '/etc/postfix/main.cf',
+ 'etc_postfix_mysql-virtual_alias_maps.cf' => '/etc/postfix/mysql-virtual_alias_maps.cf',
+ 'etc_postfix_mysql-virtual_mailbox_domains.cf' => '/etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'etc_postfix_mysql-virtual_mailbox_maps.cf' => '/etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'etc_postfix_mysql-virtual_sender_permissions.cf' => '/etc/postfix/mysql-virtual_sender_permissions.cf',
+ 'etc_postfix_sasl_smtpd.conf' => '/etc/postfix/sasl/smtpd.conf'
+ ),
+ 'restart' => Array(
+ 'newaliases',
+ '/etc/init.d/postfix restart'
+ )
+ ),
+ 'dkim' => Array(
+ 'label' => 'DomainKey filter',
+ 'commands_1' => Array(
+ 'apt-get install dkim-filter',
+ 'mkdir -p /etc/postfix/dkim'
+ ),
+ 'files' => Array(
+ 'dkim-filter.conf' => '/etc/dkim-filter.conf'
+ ),
+ 'commands_2' => Array(
+ 'echo "milter_default_action = accept" >> /etc/postfix/main.cf',
+ 'echo "milter_protocol = 2" >> /etc/postfix/main.cf',
+ 'echo "smtpd_milters = inet:localhost:8891" >> /etc/postfix/main.cf',
+ 'echo "non_smtpd_milters = inet:localhost:8891" >> /etc/postfix/main.cf'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/dkim-filter restart',
+ '/etc/init.d/postfix restart'
+ )
+ ),
+ 'postfix_dovecot' => Array(
+ 'label' => 'Postfix/Dovecot',
+ 'commands' => Array(
+ 'apt-get install postfix postfix-mysql',
+ 'mkdir -p /var/spool/postfix/etc/pam.d',
+ 'mkdir -p /var/spool/postfix/var/run/mysqld',
+ 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail',
+ 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail',
+ 'mkdir -p ' . $settings['system']['vmail_homedir'],
+ 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'],
+ 'touch /etc/postfix/mysql-virtual_alias_maps.cf',
+ 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'touch /etc/postfix/mysql-virtual_sender_permissions.cf',
+ 'chown root:root /etc/postfix/main.cf',
+ 'chown root:root /etc/postfix/master.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_alias_maps.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'chown root:postfix /etc/postfix/mysql-virtual_sender_permissions.cf',
+ 'chmod 0644 /etc/postfix/main.cf',
+ 'chmod 0644 /etc/postfix/master.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_alias_maps.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'chmod 0640 /etc/postfix/mysql-virtual_sender_permissions.cf'
+ ),
+ 'files' => Array(
+ 'etc_postfix_main.cf' => '/etc/postfix/main.cf',
+ 'etc_postfix_master.cf' => '/etc/postfix/master.cf',
+ 'etc_postfix_mysql-virtual_alias_maps.cf' => '/etc/postfix/mysql-virtual_alias_maps.cf',
+ 'etc_postfix_mysql-virtual_mailbox_domains.cf' => '/etc/postfix/mysql-virtual_mailbox_domains.cf',
+ 'etc_postfix_mysql-virtual_mailbox_maps.cf' => '/etc/postfix/mysql-virtual_mailbox_maps.cf',
+ 'etc_postfix_mysql-virtual_sender_permissions.cf' => '/etc/postfix/mysql-virtual_sender_permissions.cf'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/postfix restart',
+ 'newaliases'
+ )
+ ),
+ 'postfix_mxaccess' => Array(
+ 'label' => 'Postfix MX-Access (anti spam)',
+ 'files' => Array(
+ 'etc_postfix_mx_access' => '/etc/postfix/mx_access',
+ 'etc_postfix_main.cf' => '/etc/postfix/main.cf'
+ ),
+ 'commands_1' => Array(
+ 'postmap /etc/postfix/mx_access'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/postfix restart'
+ )
+ ),
+ 'exim4' => Array(
+ 'label' => 'Exim4',
+ 'commands_1' => Array(
+ 'dpkg-reconfigure exim4-config',
+ '# choose "no configuration at this time" and "splitted configuration files" in the dialog'
+ ),
+ '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_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_froxlor-config_options'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/exim4 restart'
+ )
+ )
+ )
+ ),
+ 'mail' => Array(
+ 'label' => $lng['admin']['configfiles']['mail'],
+ 'daemons' => Array(
+ 'courier' => Array(
+ 'label' => 'Courier',
+ 'commands' => Array(
+ 'apt-get install courier-pop courier-imap courier-authlib-mysql'
+ ),
+ 'files' => Array(
+ 'etc_courier_authdaemonrc' => '/etc/courier/authdaemonrc',
+ 'etc_courier_authmysqlrc' => '/etc/courier/authmysqlrc'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/courier-authdaemon restart',
+ '/etc/init.d/courier-pop restart'
+ )
+ ),
+ 'dovecot' => Array(
+ 'label' => 'Dovecot',
+ 'commands_1' => Array(
+ 'apt-get install dovecot-imapd dovecot-pop3d'
+ ),
+ 'files' => Array(
+ 'etc_dovecot_dovecot.conf' => '/etc/dovecot/dovecot.conf',
+ 'etc_dovecot_dovecot-sql.conf' => '/etc/dovecot/dovecot-sql.conf'
+ ),
+ 'commands_2' => Array(
+ 'chmod 0640 /etc/dovecot/dovecot-sql.conf'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/dovecot restart'
+ )
+ )
+ )
+ ),
+ 'ftp' => Array(
+ 'label' => $lng['admin']['configfiles']['ftp'],
+ 'daemons' => Array(
+ 'proftpd' => Array(
+ 'label' => 'ProFTPd',
+ 'commands' => Array(
+ 'apt-get install proftpd-basic proftpd-mod-mysql'
+ ),
+ 'files' => Array(
+ 'etc_proftpd_sql.conf' => '/etc/proftpd/sql.conf',
+ 'etc_proftpd_modules.conf' => '/etc/proftpd/modules.conf',
+ 'etc_proftpd_proftpd.conf' => '/etc/proftpd/proftpd.conf'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/proftpd restart'
+ )
+ ),
+ 'pure-ftpd' => Array(
+ 'label' => 'Pure FTPd',
+ 'commands_1' => Array(
+ 'apt-get install pure-ftpd-common pure-ftpd-mysql'
+ ),
+ 'files' => Array(
+ 'etc_pure-ftpd_conf_MinUID' => '/etc/pure-ftpd/conf/MinUID',
+ 'etc_pure-ftpd_conf_MySQLConfigFile' => '/etc/pure-ftpd/conf/MySQLConfigFile',
+ 'etc_pure-ftpd_conf_NoAnonymous' => '/etc/pure-ftpd/conf/NoAnonymous',
+ 'etc_pure-ftpd_conf_MaxIdleTime' => '/etc/pure-ftpd/conf/MaxIdleTime',
+ 'etc_pure-ftpd_conf_ChrootEveryone' => '/etc/pure-ftpd/conf/ChrootEveryone',
+ 'etc_pure-ftpd_conf_PAMAuthentication' => '/etc/pure-ftpd/conf/PAMAuthentication',
+ 'etc_pure-ftpd_db_mysql.conf' => '/etc/pure-ftpd/db/mysql.conf',
+ 'etc_pure-ftpd_conf_CustomerProof' => '/etc/pure-ftpd/conf/CustomerProof',
+ 'etc_pure-ftpd_conf_Bind' => '/etc/pure-ftpd/conf/Bind',
+ 'etc_default_pure-ftpd-common' => '/etc/default/pure-ftpd-common'
+ ),
+ 'commands_2' => Array(
+ 'chmod 0640 /etc/pure-ftpd/db/mysql.conf'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/pure-ftpd-mysql restart'
+ )
+ ),
+ )
+ ),
+ 'etc' => Array(
+ 'label' => $lng['admin']['configfiles']['etc'],
+ 'daemons' => Array(
+ 'cron' => Array(
+ 'label' => 'Crond (cronscript)',
+ 'files' => Array(
+ 'etc_cron.d_froxlor' => '/etc/cron.d/froxlor'
+ ),
+ 'restart' => Array(
+ '/etc/init.d/cron restart'
+ )
+ ),
+ 'awstats' => Array(
+ 'label' => 'Awstats',
+ 'commands' => Array(
+ 'apt-get install awstats',
+ 'cp /usr/share/awstats/tools/awstats_buildstaticpages.pl '.makeCorrectDir($settings['system']['awstats_path']),
+ 'mv '.makeCorrectFile($settings['system']['awstats_conf'].'/awstats.conf').' '.makeCorrectFile($settings['system']['awstats_conf'].'/awstats.model.conf'),
+ 'sed -i.bak \'s/^DirData/# DirData/\' '.makeCorrectFile($settings['system']['awstats_conf'].'/awstats.model.conf')
+ ),
+ ),
+ 'libnss' => Array(
+ 'label' => 'libnss (system login with mysql)',
+ 'commands' => Array(
+ 'apt-get install libnss-mysql nscd',
+ 'chmod 600 /etc/nss-mysql.conf /etc/nss-mysql-root.conf'
+ ),
+ 'files' => Array(
+ 'etc_nss-mysql.conf' => '/etc/nss-mysql.conf',
+ 'etc_nss-mysql-root.conf' => '/etc/nss-mysql-root.conf',
+ 'etc_nsswitch.conf' => '/etc/nsswitch.conf',
+ ),
+ 'restart' => Array(
+ '/etc/init.d/nscd restart'
+ )
+ )
+ )
+ )
+ )
+ )
+);
+
+?>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/configfiles_index.inc.php
^
|
@@ -45,5 +45,5 @@
$cfgPath = 'lib/configfiles/';
$configfiles = Array();
-$configfiles = array_merge(include $cfgPath . 'lenny.inc.php', include $cfgPath . 'hardy.inc.php', include $cfgPath . 'lucid.inc.php', include $cfgPath . 'gentoo.inc.php', include $cfgPath . 'suse10.inc.php', include $cfgPath . 'freebsd.inc.php');
+$configfiles = array_merge(include $cfgPath . 'squeeze.inc.php', include $cfgPath . 'lenny.inc.php', include $cfgPath . 'hardy.inc.php', include $cfgPath . 'lucid.inc.php', include $cfgPath . 'gentoo.inc.php', include $cfgPath . 'suse10.inc.php', include $cfgPath . 'freebsd.inc.php');
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/cron_init.php
^
|
@@ -171,7 +171,7 @@
* if settings['system']['mod_fcgid_ownvhost'] is set, we have to check
* whether the permission of the files are still correct
*/
-if((int)$settings['system']['mod_fcgid_ownvhost'] == 1)
+if((int)$settings['system']['mod_fcgid'] == 1 && (int)$settings['system']['mod_fcgid_ownvhost'] == 1)
{
fwrite($debugHandler, 'Checking froxlor file permissions');
$mypath = makeCorrectDir(dirname(dirname(__FILE__))); // /var/www/froxlor, needed for chown
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/admin/formfield.admin_add.php
^
|
@@ -34,6 +34,11 @@
'type' => 'password',
'mandatory' => true
),
+ 'admin_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
+ ),
'def_language' => array(
'label' => $lng['login']['language'],
'type' => 'select',
@@ -68,8 +73,11 @@
),
'change_serversettings' => array(
'label' => $lng['admin']['change_serversettings'],
- 'type' => 'yesno',
- 'yesno_var' => $change_serversettings,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'customers' => array(
'label' => $lng['admin']['customers'],
@@ -81,8 +89,11 @@
),
'customers_see_all' => array(
'label' => $lng['admin']['customers_see_all'],
- 'type' => 'yesno',
- 'yesno_var' => $customers_see_all,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'domains' => array(
'label' => $lng['admin']['domains'],
@@ -94,13 +105,19 @@
),
'domains_see_all' => array(
'label' => $lng['admin']['domains_see_all'],
- 'type' => 'yesno',
- 'yesno_var' => $domains_see_all,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'caneditphpsettings' => array(
'label' => $lng['admin']['caneditphpsettings'],
- 'type' => 'yesno',
- 'yesno_var' => $caneditphpsettings,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'diskspace' => array(
'label' => $lng['customer']['diskspace'],
@@ -192,8 +209,11 @@
),
'can_manage_aps_packages' => array(
'label' => $lng['aps']['canmanagepackages'],
- 'type' => 'yesno',
- 'yesno_var' => $can_manage_aps_packages,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array(),
'visible' => ($settings['aps']['aps_active'] == '1' ? true : false)
),
'number_of_aps_packages' => array(
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/admin/formfield.admin_edit.php
^
|
@@ -31,8 +31,11 @@
),
'deactivated' => array(
'label' => $lng['admin']['deactivated_user'],
- 'type' => 'yesno',
- 'yesno_var' => $deactivated,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['deactivated']),
'visible' => ($result['adminid'] == $userinfo['userid'] ? false : true)
),
'admin_password' => array(
@@ -40,6 +43,12 @@
'type' => 'password',
'visible' => ($result['adminid'] == $userinfo['userid'] ? false : true)
),
+ 'admin_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
+ 'visible' => ($result['adminid'] == $userinfo['userid'] ? false : true)
+ ),
'def_language' => array(
'label' => $lng['login']['language'],
'type' => 'select',
@@ -78,8 +87,11 @@
),
'change_serversettings' => array(
'label' => $lng['admin']['change_serversettings'],
- 'type' => 'yesno',
- 'yesno_var' => $change_serversettings,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['change_serversettings'])
),
'customers' => array(
'label' => $lng['admin']['customers'],
@@ -91,8 +103,11 @@
),
'customers_see_all' => array(
'label' => $lng['admin']['customers_see_all'],
- 'type' => 'yesno',
- 'yesno_var' => $customers_see_all,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['customers_see_all'])
),
'domains' => array(
'label' => $lng['admin']['domains'],
@@ -104,13 +119,19 @@
),
'domains_see_all' => array(
'label' => $lng['admin']['domains_see_all'],
- 'type' => 'yesno',
- 'yesno_var' => $domains_see_all,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['domains_see_all'])
),
'caneditphpsettings' => array(
'label' => $lng['admin']['caneditphpsettings'],
- 'type' => 'yesno',
- 'yesno_var' => $caneditphpsettings,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['caneditphpsettings'])
),
'diskspace' => array(
'label' => $lng['customer']['diskspace'],
@@ -202,8 +223,11 @@
),
'can_manage_aps_packages' => array(
'label' => $lng['aps']['canmanagepackages'],
- 'type' => 'yesno',
- 'yesno_var' => $can_manage_aps_packages,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['can_manage_aps_packages']),
'visible' => ($settings['aps']['aps_active'] == '1' ? true : false)
),
'number_of_aps_packages' => array(
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/cronjobs/formfield.cronjobs_edit.php
^
|
@@ -31,8 +31,11 @@
),
'isactive' => array(
'label' => $lng['admin']['activated'],
- 'type' => 'yesno',
- 'yesno_var' => $isactive
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['isactive'])
),
'interval_value' => array(
'label' => $lng['cronjob']['cronjobintervalv'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/customer/formfield.customer_add.php
^
|
@@ -30,22 +30,36 @@
),
'createstdsubdomain' => array(
'label' => $lng['admin']['stdsubdomain_add'].'?',
- 'type' => 'yesno',
- 'yesno_var' => $createstdsubdomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'store_defaultindex' => array(
'label' => $lng['admin']['store_defaultindex'].'?',
- 'type' => 'yesno',
- 'yesno_var' => $store_defaultindex
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'new_customer_password' => array(
'label' => $lng['login']['password'],
- 'type' => 'password'
+ 'type' => 'password',
+ ),
+ 'new_customer_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
),
'sendpassword' => array(
'label' => $lng['admin']['sendpassword'],
- 'type' => 'yesno',
- 'yesno_var' => $sendpassword
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'def_language' => array(
'label' => $lng['login']['language'],
@@ -175,14 +189,20 @@
),
'email_imap' => array(
'label' => $lng['customer']['email_imap'],
- 'type' => 'yesno',
- 'yesno_var' => $email_imap,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1'),
'mandatory' => true
),
'email_pop3' => array(
'label' => $lng['customer']['email_pop3'],
- 'type' => 'yesno',
- 'yesno_var' => $email_pop3,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1'),
'mandatory' => true
),
'ftps' => array(
@@ -210,13 +230,23 @@
),
'phpenabled' => array(
'label' => $lng['admin']['phpenabled'].'?',
- 'type' => 'yesno',
- 'yesno_var' => $phpenabled
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'perlenabled' => array(
'label' => $lng['admin']['perlenabled'].'?',
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ )
+ ),
+ 'backup_allowed' => array(
+ 'label' => $lng['backup_allowed'].'?',
'type' => 'yesno',
- 'yesno_var' => $perlenabled
+ 'yesno_var' => $backup_allowed
),
'number_of_aps_packages' => array(
'label' => $lng['aps']['numberofapspackages'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/customer/formfield.customer_edit.php
^
|
@@ -36,18 +36,29 @@
),
'createstdsubdomain' => array(
'label' => $lng['admin']['stdsubdomain_add'].'?',
- 'type' => 'yesno',
- 'yesno_var' => $createstdsubdomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array(($result['standardsubdomain'] != '0') ? '1' : '0')
),
'deactivated' => array(
'label' => $lng['admin']['deactivated_user'],
- 'type' => 'yesno',
- 'yesno_var' => $deactivated
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['deactivated'])
),
'new_customer_password' => array(
'label' => $lng['login']['password'].' ('.$lng['panel']['emptyfornochanges'].')',
'type' => 'password'
),
+ 'new_customer_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
+ ),
'def_language' => array(
'label' => $lng['login']['language'],
'type' => 'select',
@@ -186,14 +197,20 @@
),
'email_imap' => array(
'label' => $lng['customer']['email_imap'],
- 'type' => 'yesno',
- 'yesno_var' => $email_imap,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['imap']),
'mandatory' => true
),
'email_pop3' => array(
'label' => $lng['customer']['email_pop3'],
- 'type' => 'yesno',
- 'yesno_var' => $email_pop3,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['pop3']),
'mandatory' => true
),
'ftps' => array(
@@ -221,13 +238,24 @@
),
'phpenabled' => array(
'label' => $lng['admin']['phpenabled'].'?',
- 'type' => 'yesno',
- 'yesno_var' => $phpenabled
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['phpenabled'])
),
'perlenabled' => array(
'label' => $lng['admin']['perlenabled'].'?',
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['perlenabled'])
+ ),
+ 'backup_allowed' => array(
+ 'label' => $lng['backup_allowed'].'?',
'type' => 'yesno',
- 'yesno_var' => $perlenabled
+ 'yesno_var' => $backup_allowed
),
'number_of_aps_packages' => array(
'label' => $lng['aps']['numberofapspackages'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/domains/formfield.domains_add.php
^
|
@@ -55,8 +55,11 @@
),
'caneditdomain' => array(
'label' => $lng['admin']['domain_edit'],
- 'type' => 'yesno',
- 'yesno_var' => $caneditdomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'add_date' => array(
'label' => $lng['domains']['add_date'],
@@ -91,14 +94,20 @@
'ssl' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? ($ssl_ipsandports != '' ? true : false) : false),
'label' => 'SSL',
- 'type' => 'yesno',
- 'yesno_var' => $ssl
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'ssl_redirect' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? ($ssl_ipsandports != '' ? true : false) : false),
'label' => 'SSL Redirect',
- 'type' => 'yesno',
- 'yesno_var' => $ssl_redirect
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'ssl_ipandport' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? ($ssl_ipsandports != '' ? true : false) : false),
@@ -114,13 +123,19 @@
),
'wwwserveralias' => array(
'label' => $lng['admin']['wwwserveralias'],
- 'type' => 'yesno',
- 'yesno_var' => $wwwserveralias
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'speciallogfile' => array(
'label' => 'Speciallogfile',
- 'type' => 'yesno',
- 'yesno_var' => $speciallogfile
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'specialsettings' => array(
'visible' => ($userinfo['change_serversettings'] == '1' ? true : false),
@@ -140,13 +155,19 @@
'fields' => array(
'openbasedir' => array(
'label' => 'OpenBasedir',
- 'type' => 'yesno',
- 'yesno_var' => $openbasedir
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'safemode' => array(
'label' => 'Safemode',
- 'type' => 'yesno',
- 'yesno_var' => $safemode
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'phpsettingid' => array(
'visible' => ((int)$settings['system']['mod_fcgid'] == 1 ? true : false),
@@ -173,8 +194,11 @@
'fields' => array(
'isbinddomain' => array(
'label' => 'Nameserver',
- 'type' => 'yesno',
- 'yesno_var' => $isbinddomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'zonefile' => array(
'label' => 'Zonefile',
@@ -189,13 +213,19 @@
'fields' => array(
'isemaildomain' => array(
'label' => $lng['admin']['emaildomain'],
- 'type' => 'yesno',
- 'yesno_var' => $isemaildomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'email_only' => array(
'label' => $lng['admin']['email_only'],
- 'type' => 'yesno',
- 'yesno_var' => $email_only
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'subcanemaildomain' => array(
'label' => $lng['admin']['subdomainforemail'],
@@ -205,8 +235,11 @@
'dkim' => array(
'visible' => ($settings['dkim']['use_dkim'] == '1' ? true : false),
'label' => 'DomainKeys',
- 'type' => 'yesno',
- 'yesno_var' => $dkim
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
)
)
)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/domains/formfield.domains_edit.php
^
|
@@ -64,8 +64,11 @@
),
'caneditdomain' => array(
'label' => $lng['admin']['domain_edit'],
- 'type' => 'yesno',
- 'yesno_var' => $caneditdomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['caneditdomain'])
),
'add_date' => array(
'label' => $lng['domains']['add_date'],
@@ -102,14 +105,20 @@
'ssl' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? ($ssl_ipsandports != '' ? true : false) : false),
'label' => 'SSL',
- 'type' => 'yesno',
- 'yesno_var' => $ssl
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['ssl'])
),
'ssl_redirect' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? ($ssl_ipsandports != '' ? true : false) : false),
'label' => 'SSL Redirect',
- 'type' => 'yesno',
- 'yesno_var' => $ssl_redirect
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['ssl_redirect'])
),
'ssl_ipandport' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? ($ssl_ipsandports != '' ? true : false) : false),
@@ -125,8 +134,11 @@
),
'wwwserveralias' => array(
'label' => $lng['admin']['wwwserveralias'],
- 'type' => 'yesno',
- 'yesno_var' => $wwwserveralias
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['wwwserveralias'])
),
'speciallogfile' => array(
'label' => 'Speciallogfile',
@@ -147,8 +159,11 @@
'visible' => ($userinfo['change_serversettings'] == '1' ? true : false),
'label' => $lng['admin']['specialsettingsforsubdomains'],
'desc' => $lng['serversettings']['specialsettingsforsubdomains']['description'],
- 'type' => 'yesno',
- 'yesno_var' => $specialsettingsforsubdomains
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
)
)
),
@@ -159,13 +174,19 @@
'fields' => array(
'openbasedir' => array(
'label' => 'OpenBasedir',
- 'type' => 'yesno',
- 'yesno_var' => $openbasedir
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['openbasedir'])
),
'safemode' => array(
'label' => 'Safemode',
- 'type' => 'yesno',
- 'yesno_var' => $safemode
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['safemode'])
),
'phpsettingid' => array(
'visible' => ((int)$settings['system']['mod_fcgid'] == 1 ? true : false),
@@ -194,8 +215,11 @@
'fields' => array(
'isbinddomain' => array(
'label' => 'Nameserver',
- 'type' => 'yesno',
- 'yesno_var' => $isbinddomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['isbinddomain'])
),
'zonefile' => array(
'label' => 'Zonefile',
@@ -211,13 +235,19 @@
'fields' => array(
'isemaildomain' => array(
'label' => $lng['admin']['emaildomain'],
- 'type' => 'yesno',
- 'yesno_var' => $isemaildomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['isemaildomain'])
),
'email_only' => array(
'label' => $lng['admin']['email_only'],
- 'type' => 'yesno',
- 'yesno_var' => $email_only
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['email_only'])
),
'subcanemaildomain' => array(
'label' => $lng['admin']['subdomainforemail'],
@@ -227,8 +257,11 @@
'dkim' => array(
'visible' => ($settings['dkim']['use_dkim'] == '1' ? true : false),
'label' => 'DomainKeys',
- 'type' => 'yesno',
- 'yesno_var' => $dkim
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['dkim'])
)
)
)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/ipsandports/formfield.ipsandports_add.php
^
|
@@ -41,18 +41,27 @@
'fields' => array(
'listen_statement' => array(
'label' => $lng['admin']['ipsandports']['create_listen_statement'],
- 'type' => 'yesno',
- 'yesno_var' => $listen_statement
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'namevirtualhost_statement' => array(
'label' => $lng['admin']['ipsandports']['create_namevirtualhost_statement'],
- 'type' => 'yesno',
- 'yesno_var' => $namevirtualhost_statement,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'vhostcontainer' => array(
'label' => $lng['admin']['ipsandports']['create_vhostcontainer'],
- 'type' => 'yesno',
- 'yesno_var' => $vhostcontainer
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'docroot' => array(
'label' => $lng['admin']['ipsandports']['docroot']['title'],
@@ -69,8 +78,11 @@
),
'vhostcontainer_servername_statement' => array(
'label' => $lng['admin']['ipsandports']['create_vhostcontainer_servername_statement'],
- 'type' => 'yesno',
- 'yesno_var' => $vhostcontainer_servername_statement
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
)
)
),
@@ -95,8 +107,11 @@
'fields' => array(
'ssl' => array(
'label' => $lng['admin']['ipsandports']['enable_ssl'],
- 'type' => 'yesno',
- 'yesno_var' => $enable_ssl
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'ssl_cert_file' => array(
'label' => $lng['admin']['ipsandports']['ssl_cert_file'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/admin/ipsandports/formfield.ipsandports_edit.php
^
|
@@ -43,18 +43,27 @@
'fields' => array(
'listen_statement' => array(
'label' => $lng['admin']['ipsandports']['create_listen_statement'],
- 'type' => 'yesno',
- 'yesno_var' => $listen_statement
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['listen_statement'])
),
'namevirtualhost_statement' => array(
'label' => $lng['admin']['ipsandports']['create_namevirtualhost_statement'],
- 'type' => 'yesno',
- 'yesno_var' => $namevirtualhost_statement,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['namevirtualhost_statement'])
),
'vhostcontainer' => array(
'label' => $lng['admin']['ipsandports']['create_vhostcontainer'],
- 'type' => 'yesno',
- 'yesno_var' => $vhostcontainer
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['vhostcontainer'])
),
'docroot' => array(
'label' => $lng['admin']['ipsandports']['docroot']['title'],
@@ -73,8 +82,11 @@
),
'vhostcontainer_servername_statement' => array(
'label' => $lng['admin']['ipsandports']['create_vhostcontainer_servername_statement'],
- 'type' => 'yesno',
- 'yesno_var' => $vhostcontainer_servername_statement
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['vhostcontainer_servername_statement'])
)
)
),
@@ -100,8 +112,11 @@
'fields' => array(
'ssl' => array(
'label' => $lng['admin']['ipsandports']['enable_ssl'],
- 'type' => 'yesno',
- 'yesno_var' => $enable_ssl
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['ssl'])
),
'ssl_cert_file' => array(
'label' => $lng['admin']['ipsandports']['ssl_cert_file'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/domains/formfield.domains_add.php
^
|
@@ -63,8 +63,11 @@
'ssl_redirect' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? true : false),
'label' => 'SSL Redirect',
- 'type' => 'yesno',
- 'yesno_var' => $ssl_redirect
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['ssl_redirect'])
),
'openbasedir_path' => array(
'label' => $lng['domain']['openbasedirpath'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/domains/formfield.domains_edit.php
^
|
@@ -63,20 +63,29 @@
'iswildcarddomain' => array(
'visible' => (($result['parentdomainid'] == '0' && $userinfo['subdomains'] != '0') ? true : false),
'label' => $lng['domains']['wildcarddomain'],
- 'type' => 'yesno',
- 'yesno_var' => $iswildcarddomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
'isemaildomain' => array(
'visible' => ((( $result['subcanemaildomain'] == '1' || $result['subcanemaildomain'] == '2' ) && $result['parentdomainid'] != '0') ? true : false),
'label' => 'Emaildomain',
- 'type' => 'yesno',
- 'yesno_var' => $isemaildomain
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['isemaildomain'])
),
'ssl_redirect' => array(
'visible' => ($settings['system']['use_ssl'] == '1' ? true : false),
'label' => 'SSL Redirect',
- 'type' => 'yesno',
- 'yesno_var' => $ssl_redirect
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($result['ssl_redirect'])
),
'openbasedir_path' => array(
'label' => $lng['domain']['openbasedirpath'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/email/formfield.emails_accountchangepasswd.php
^
|
@@ -32,6 +32,11 @@
'email_password' => array(
'label' => $lng['login']['password'],
'type' => 'password'
+ ),
+ 'email_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
)
)
)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/email/formfield.emails_add.php
^
|
@@ -38,8 +38,11 @@
),
'pathedit' => array(
'label' => $lng['emails']['iscatchall'],
- 'type' => 'yesno',
- 'yesno_var' => $iscatchall
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
)
)
)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/email/formfield.emails_addaccount.php
^
|
@@ -33,6 +33,11 @@
'label' => $lng['login']['password'],
'type' => 'password'
),
+ 'email_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
+ ),
'email_quota' => array(
'visible' => ($settings['system']['mail_quota_enabled'] == '1' ? true : false),
'label' => $lng['emails']['quota'],
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/email/formfield.emails_addautoresponder.php
^
|
@@ -31,8 +31,11 @@
),
'active' => array(
'label' => $lng['autoresponder']['active'],
- 'type' => 'yesno',
- 'yesno_var' => $isactive,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array('1')
),
'date_from' => array(
'label' => $lng['autoresponder']['date_from'] . " (dd-mm-yyyy)",
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/email/formfield.emails_editautoresponder.php
^
|
@@ -31,8 +31,11 @@
),
'active' => array(
'label' => $lng['autoresponder']['active'],
- 'type' => 'yesno',
- 'yesno_var' => $isactive,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array($row['enabled'])
),
'date_from' => array(
'label' => $lng['autoresponder']['date_from'] . " (dd-mm-yyyy)",
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/ftp/formfield.ftp_add.php
^
|
@@ -45,10 +45,18 @@
'label' => $lng['login']['password'],
'type' => 'password',
),
+ 'ftp_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
+ ),
'sendinfomail' => array(
'label' => $lng['customer']['sendinfomail'],
- 'type' => 'yesno',
- 'yesno_var' => $sendinfomail,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
),
)
)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/ftp/formfield.ftp_edit.php
^
|
@@ -39,6 +39,11 @@
'label' => $lng['login']['password'],
'desc' => $lng['ftp']['editpassdescription'],
'type' => 'password',
+ ),
+ 'ftp_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
)
)
)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/mysql/formfield.mysql_add.php
^
|
@@ -37,10 +37,18 @@
'label' => $lng['login']['password'],
'type' => 'password',
),
+ 'mysql_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
+ ),
'sendinfomail' => array(
'label' => $lng['customer']['sendinfomail'],
- 'type' => 'yesno',
- 'yesno_var' => $sendinfomail,
+ 'type' => 'checkbox',
+ 'values' => array(
+ array ('label' => $lng['panel']['yes'], 'value' => '1')
+ ),
+ 'value' => array()
)
)
)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/formfields/customer/mysql/formfield.mysql_edit.php
^
|
@@ -43,6 +43,11 @@
'label' => $lng['changepassword']['new_password_ifnotempty'],
'type' => 'password',
),
+ 'mysql_password_suggestion' => array(
+ 'label' => $lng['customer']['generated_pwd'],
+ 'type' => 'text',
+ 'value' => generatePassword(),
+ )
)
)
)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/lib/functions/froxlor/function.generatePassword.php
^
|
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Froxlor project.
+ * Copyright (c) 2011 the Froxlor Team (see authors).
+ *
+ * For the full copyright and license information, please view the COPYING
+ * file that was distributed with this source code. You can also view the
+ * COPYING file online at http://files.froxlor.org/misc/COPYING.txt
+ *
+ * @copyright (c) the authors
+ * @author Froxlor team <team@froxlor.org> (2010-)
+ * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
+ * @package Functions
+ * @version $Id$
+ */
+
+/**
+ * Generates a random password
+ */
+
+function generatePassword()
+{
+ global $db, $settings;
+
+ return substr(md5(uniqid(microtime(), 1)), 24, 10);
+}
+?>
\ No newline at end of file
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/functions/froxlor/function.inserttask.php
^
|
@@ -34,7 +34,8 @@
if($type == '1'
|| $type == '3'
|| $type == '4'
- || $type == '5')
+ || $type == '5'
+ || $type == '9')
{
$db->query('DELETE FROM `' . TABLE_PANEL_TASKS . '` WHERE `type`="' . $type . '"');
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`) VALUES ("' . $type . '")');
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/lib/functions/phphelpers/function.size_readable.php
^
|
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Return human readable sizes
+ *
+ * @author Aidan Lister <aidan@php.net>
+ * @version 1.3.0
+ * @link http://aidanlister.com/2004/04/human-readable-file-sizes/
+ * @param int $size size in bytes
+ * @param string $max maximum unit
+ * @param string $system 'si' for SI, 'bi' for binary prefixes
+ * @param string $retstring return string format
+ */
+
+function size_readable($size, $max = null, $system = 'si', $retstring = '%01.2f %s')
+{
+ // Pick units
+ $systems['si']['prefix'] = array('B', 'K', 'MB', 'GB', 'TB', 'PB');
+ $systems['si']['size'] = 1000;
+ $systems['bi']['prefix'] = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB');
+ $systems['bi']['size'] = 1024;
+ $sys = isset($systems[$system]) ? $systems[$system] : $systems['si'];
+
+ // Max unit to display
+ $depth = count($sys['prefix']) - 1;
+ if ($max && false !== $d = array_search($max, $sys['prefix'])) {
+ $depth = $d;
+ }
+ // Loop
+ $i = 0;
+ while ($size >= $sys['size'] && $i < $depth) {
+ $size /= $sys['size'];
+ $i++;
+ }
+
+ return sprintf($retstring, $size, $sys['prefix'][$i]);
+}
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/navigation/00.froxlor.main.php
^
|
@@ -129,6 +129,11 @@
'url' => 'customer_extras.php?page=htaccess',
'label' => $lng['menue']['extras']['pathoptions'],
),
+ array (
+ 'url' => 'customer_extras.php?page=backup',
+ 'label' => $lng['backup'],
+ 'required_resources' => 'backup_allowed',
+ ),
),
),
'traffic' => array (
@@ -189,6 +194,17 @@
),
),
),
+ 'traffic' => array (
+ 'label' => $lng['admin']['traffic'],
+ 'required_resources' => 'customers',
+ 'elements' => array (
+ array (
+ 'url' => 'admin_traffic.php?page=customers',
+ 'label' => $lng['admin']['customertraffic'],
+ 'required_resources' => 'customers',
+ ),
+ ),
+ ),
'server' => array (
'label' => $lng['admin']['server'],
'required_resources' => 'change_serversettings',
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lib/tables.inc.php
^
|
@@ -73,6 +73,6 @@
// VERSION INFO
-$version = '0.9.19';
+$version = '0.9.20.1';
$dbversion = '2';
$branding = '';
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lng/english.lng.php
^
|
@@ -1574,3 +1574,49 @@
$lng['panel']['variable'] = 'Variable';
$lng['panel']['description'] = 'Description';
$lng['emails']['back_to_overview'] = 'Back to overview';
+
+// ADDED IN FROXLOR 0.9.20
+$lng['error']['user_banned'] = 'Your account has been banned. Please contact your administrator for further information.';
+$lng['serversettings']['validate_domain'] = 'Validate domain names';
+$lng['login']['combination_not_found'] = 'Combination of user and email adress not found.';
+$lng['customer']['generated_pwd'] = 'Password suggestion';
+$lng['customer']['usedmax'] = 'Used / Max';
+$lng['admin']['traffic'] = 'Traffic';
+$lng['admin']['domaintraffic'] = 'Domains';
+$lng['admin']['customertraffic'] = 'Customers';
+$lng['traffic']['customer'] = 'Customer';
+$lng['traffic']['domain'] = 'Domain';
+$lng['traffic']['trafficoverview'] = 'Traffic summary by';
+$lng['traffic']['months']['jan'] = 'Jan';
+$lng['traffic']['months']['feb'] = 'Feb';
+$lng['traffic']['months']['mar'] = 'Mar';
+$lng['traffic']['months']['apr'] = 'Apr';
+$lng['traffic']['months']['may'] = 'May';
+$lng['traffic']['months']['jun'] = 'Jun';
+$lng['traffic']['months']['jul'] = 'Jul';
+$lng['traffic']['months']['aug'] = 'Aug';
+$lng['traffic']['months']['sep'] = 'Sep';
+$lng['traffic']['months']['oct'] = 'Oct';
+$lng['traffic']['months']['nov'] = 'Nov';
+$lng['traffic']['months']['dec'] = 'Dec';
+$lng['traffic']['months']['total'] = 'Total';
+$lng['traffic']['details'] = 'Details';
+$lng['menue']['traffic']['table'] = 'Traffic';
+$lng['error']['admin_domain_emailsystemhostname'] = 'Sorry, the system - hostname may not be used as a customer domain';
+$lng['backup'] = 'Backup';
+$lng['backup_allowed'] = 'Backup allowed';
+$lng['extras']['backup_create'] = 'Create Backup?';
+$lng['extras']['backup_info'] = 'Backup will be saved once daily in directory "' . $settings['system']['backup_dir'] . '".';
+$lng['extras']['backup_info_sep'] = 'It contains compressed archives of HTML Files and Databases.';
+$lng['extras']['backup_info_big'] = 'It contains a compressed archive of HTML Files and Databases.';
+$lng['extras']['backup_count_info'] = '<br /><br />Please note that the backup will charge your webspace!';
+$lng['serversettings']['backup_count'] = 'Should backup size be subtracted from webspace size?';
+$lng['serversettings']['backup_enabled'] = 'Backup activated?';
+$lng['serversettings']['backupdir']['description'] = 'Which name should customers backup directory have?';
+$lng['serversettings']['mysqldump_path']['description'] = 'Path to mysqldump command?';
+$lng['serversettings']['backup_bigfile'] = 'Save backup in 1 big file instead in separeted files for html and databases?';
+$lng['serversettings']['backup_ftp_enabled'] = 'FTP Upload activated?';
+$lng['serversettings']['backup_ftp_server'] = 'FTP Server:';
+$lng['serversettings']['backup_ftp_user'] = 'FTP Username:';
+$lng['serversettings']['backup_ftp_pass'] = 'FTP Password:';
+$lng['crondesc']['cron_backup'] = 'Backup cronjob';
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/lng/german.lng.php
^
|
@@ -1556,3 +1556,47 @@
$lng['panel']['variable'] = 'Variable';
$lng['panel']['description'] = 'Beschreibung';
$lng['emails']['back_to_overview'] = 'Zurück zur Übersicht';
+
+// ADDED IN FROXLOR 0.9.20
+$lng['error']['user_banned'] = 'Ihr Benutzerkonto wurde gesperrt. Bitte kontaktieren Sie Ihren Administrator für weitere Informationen.';
+$lng['serversettings']['validate_domain'] = 'Validiere Domainnamen';
+$lng['login']['combination_not_found'] = 'Kombination von Benutzer und E-Mail Adresse nicht gefunden.';
+$lng['customer']['generated_pwd'] = 'Passwortvorschlag';
+$lng['customer']['usedmax'] = 'Benutzt / Max.';
+$lng['admin']['traffic'] = 'Datentransfer';
+$lng['admin']['customertraffic'] = 'Kunden';
+$lng['traffic']['customer'] = 'Kunde';
+$lng['traffic']['trafficoverview'] = 'Übersicht Datenvolumen je';
+$lng['traffic']['months']['jan'] = 'Jan';
+$lng['traffic']['months']['feb'] = 'Feb';
+$lng['traffic']['months']['mar'] = 'Mär';
+$lng['traffic']['months']['apr'] = 'Apr';
+$lng['traffic']['months']['may'] = 'Mai';
+$lng['traffic']['months']['jun'] = 'Jun';
+$lng['traffic']['months']['jul'] = 'Jul';
+$lng['traffic']['months']['aug'] = 'Aug';
+$lng['traffic']['months']['sep'] = 'Sep';
+$lng['traffic']['months']['oct'] = 'Okt';
+$lng['traffic']['months']['nov'] = 'Nov';
+$lng['traffic']['months']['dec'] = 'Dez';
+$lng['traffic']['months']['total'] = 'Gesamt';
+$lng['traffic']['details'] = 'Details';
+$lng['menue']['traffic']['table'] = 'Übersicht';
+$lng['error']['admin_domain_emailsystemhostname'] = 'Der System - Hostname kann leider nicht als Kundendomain verwendet werden.';
+$lng['backup'] = 'Backup';
+$lng['backup_allowed'] = 'Backup erlaubt';
+$lng['extras']['backup_create'] = 'Backup erstellen?';
+$lng['extras']['backup_info'] = 'Das Backup wird einmal täglich im Ordner "' . $settings['system']['backup_dir'] . '" gespeichert.';
+$lng['extras']['backup_info_sep'] = 'Es sind komprimierte Archive von HTML Dateien und Datenbanken enthalten.';
+$lng['extras']['backup_info_big'] = 'Es ist ein komprimiertes Archiv von HTML Dateien und Datenbanken enthalten.';
+$lng['extras']['backup_count_info'] = '<br /><br />Beachten Sie bitte, dass das Backup den verfügbaren Speicherplatz belastet!';
+$lng['serversettings']['backup_count'] = 'Soll die Größe des Backups vom verfügbaren Webspace abgezogen werden?';
+$lng['serversettings']['backup_enabled'] = 'Backup aktivieren?';
+$lng['serversettings']['backup_ftp_enabled'] = 'FTP Upload aktivieren?';
+$lng['serversettings']['backup_ftp_server'] = 'FTP Server:';
+$lng['serversettings']['backup_ftp_user'] = 'FTP Benutzer:';
+$lng['serversettings']['backup_ftp_pass'] = 'FTP Passwort:';
+$lng['serversettings']['backupdir']['description'] = 'Welchen Namen soll das Backup Verzeichnis des Kunden haben?';
+$lng['serversettings']['mysqldump_path']['description'] = 'Pfad zum mysqldump kommando?';
+$lng['serversettings']['backup_count'] = 'Soll die Grö&e des Backups vom verfügbaren Webspace abgezogen werden?';
+$lng['crondesc']['cron_backup'] = 'Backup cronjob';
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/scripts/jobs/cron_backup.php
^
|
@@ -0,0 +1,147 @@
+<?php
+
+/**
+ * This file is part of the Froxlor project.
+ * Copyright (c) 2010 the Froxlor Team (see authors).
+ *
+ * For the full copyright and license information, please view the COPYING
+ * file that was distributed with this source code. You can also view the
+ * COPYING file online at http://files.froxlor.org/misc/COPYING.txt
+ *
+ * @copyright (c) the authors
+ * @author Froxlor team <team@froxlor.org> (2010-)
+ * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
+ * @package Cron
+ * @version $Id: cron_backup.php 1 2010-09-15 13:19:45Z monotek $
+*/
+
+if(@php_sapi_name() != 'cli'){
+ die('This script will only work in the shell');
+}
+
+openRootDB($debugHandler, $lockfile);
+
+/**
+ * Backup
+ */
+
+if($settings['system']['backup_enabled'] == '1'){
+
+ fwrite($debugHandler, 'backup customers started...' . "\n");
+
+ $result = $db->query("SELECT customerid, loginname, guid, documentroot, backup_allowed, backup_enabled FROM `" . TABLE_PANEL_CUSTOMERS . "` ORDER BY `customerid` ASC");
+ while($row = $db->fetch_array($result)){
+ fwrite($debugHandler, 'backup for ' . $row['loginname'] . ' started...' . "\n");
+
+ // create webserver backup directory access protection
+ $backupprotectfile = $settings['system']['apacheconf_diroptions'] . '50_froxlor_diroption_' . md5($row['documentroot'] . $settings['system']['backup_dir']) . '.conf';
+ $fh = fopen($backupprotectfile, 'w');
+ if($settings['system']['webserver'] == 'apache2'){
+ $filedata = '# ' . basename($backupprotectfile) . "\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" .
+ '<Directory "' . $row['documentroot'] . $settings['system']['backup_dir'] . '/">' . "\n" .
+ ' deny from all' . "\n" .
+ '</Directory>' . "\n";
+ }
+ elseif($settings['system']['webserver'] == 'lighttpd'){
+ $filedata = '# ' . basename($backupprotectfile) . "\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" .
+ '$PHYSICAL["path"] !~ "^' . $row['documentroot'] . $settings['system']['backup_dir'] . '/$" {' . "\n" .
+ ' access.deny-all = "enable"' . "\n" .
+ '}' . "\n";
+ }
+ elseif($settings['system']['webserver'] == 'nginx'){
+ $filedata = '# ' . basename($backupprotectfile) . "\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" .
+ 'location ' . $row['documentroot'] . $settings['system']['backup_dir'] . ' {' . "\n" .
+ ' deny all;' . "\n" .
+ ' return 403;' . "\n" .
+ '}' . "\n";
+ }
+ fwrite($fh, $filedata);
+ fclose($fh);
+
+ //reload webserver to enable directory protection
+ safe_exec(escapeshellcmd($settings['system']['apachereload_command']));
+
+ // backup
+ if($row['backup_allowed'] == '1' && $row['backup_enabled'] == '1'){
+ // get uid & gid from ftp table
+ $ftp_result = $db->query("SELECT uid, gid FROM `" . TABLE_FTP_USERS . "` WHERE `username` = '" . $db->escape($row['loginname']) . "'");
+ $ftp_row = mysql_fetch_array($ftp_result);
+
+ // create backup dir an set rights
+ if(!file_exists($row['documentroot'] . $settings['system']['backup_dir'])){
+ safe_exec('install -d ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . ' -o ' . escapeshellarg($ftp_row['uid']) . ' -g ' . escapeshellarg($ftp_row['gid']) . ' -m ' . '0500');
+ }
+
+ // create customers html backup
+ safe_exec('tar --exclude=' . escapeshellarg($settings['system']['backup_dir']) . ' -C ' . escapeshellarg($row['documentroot']) . ' -c -z -f ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . escapeshellarg($row['loginname']) . 'html.tar.gz .');
+
+ // get customer dbs
+ $dbs_result = $db->query("SELECT databasename FROM `" . TABLE_PANEL_DATABASES . "` WHERE `customerid` = '" . $db->escape($row['customerid']) . "'");
+ while($dbs_row = $db->fetch_array($dbs_result)){
+ // create customers sql backup
+ safe_exec(escapeshellarg($settings['system']['backup_mysqldump_path']) . ' --opt --allow-keywords -u ' . $sql_root[0]['user'] . ' -p' . $sql_root[0]['password'] . ' -h ' . $sql_root[0]['host'] . ' ' . escapeshellarg($dbs_row['databasename']) . ' -r ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . escapeshellarg($dbs_row['databasename']) . '.sql' );
+ // compress sql backup
+ safe_exec('tar -C ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . ' -c -z -f ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . escapeshellarg($dbs_row['databasename']) . '.tar.gz ' . escapeshellarg($dbs_row['databasename']) . '.sql');
+ // remove uncompresed sql files
+ safe_exec('rm ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . escapeshellarg($dbs_row['databasename']) . '.sql');
+ }
+
+ // create 1 big file with html & db
+ if($settings['system']['backup_bigfile'] == 1){
+ safe_exec('tar -C ' . escapeshellarg($row['documentroot'] . $settings['system']['backup_dir']) . ' --exclude=' . escapeshellarg($row['loginname']) . '.tar.gz -c -z -f ' . escapeshellarg($row['documentroot'] . $settings['system']['backup_dir']) . '/' . escapeshellarg($row['loginname']) . '.tar.gz .');
+ // remove separated files
+ $tmp_files = scandir($row['documentroot'] . $settings['system']['backup_dir']);
+ foreach ($tmp_files as $tmp_file){
+ if(preg_match('/.*(html|sql|aps).*\.tar\.gz$/', $tmp_file) && !preg_match('/^' . $row['loginname'] . '\.tar\.gz$/', $tmp_file)){
+ safe_exec('rm ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . $tmp_file . '');
+ }
+ }
+ }
+
+ // set correct user
+ if($settings['system']['mod_fcgid'] == 1){
+ $user = $row['loginname'];
+ $group = $row['loginname'];
+ }
+ else {
+ $user = $row['guid'];
+ $group = $row['guid'];
+ }
+
+ // chown & chmod files to prevent manipulation
+ safe_exec('chown ' . escapeshellarg($user) . ':' . escapeshellarg($group) . ' ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . '*');
+ safe_exec('chmod 0400 ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/*');
+
+ if($settings['system']['backup_ftp_enabled'] == '1'){
+ // upload backup to customers ftp server
+ $ftp_files = scandir($row['documentroot'] . $settings['system']['backup_dir']);
+ foreach ($ftp_files as $ftp_file){
+ if(preg_match('/.*\.tar\.gz$/', $ftp_file)){
+ $ftp_con = ftp_connect($settings['system']['backup_ftp_server']);
+ $ftp_login = ftp_login($ftp_con, $settings['system']['backup_ftp_user'], $settings['system']['backup_ftp_pass']);
+ ftp_pasv($ftp_con, true);
+ $ftp_upload = ftp_put($ftp_con, $ftp_file, $row['documentroot'] . $settings['system']['backup_dir'] . "/" . $ftp_file, FTP_BINARY);
+ }
+ }
+ }
+ fwrite($debugHandler, 'backup for ' . $row['loginname'] . ' finished...' . "\n");
+ }
+ // delete old backup data (deletes backup if customer or admin disables backup)
+ elseif($row['backup_allowed'] == '0' || $row['backup_enabled'] == '0'){
+ if (file_exists($row['documentroot'] . $settings['system']['backup_dir'] . '/')){
+ $files = scandir($row['documentroot'] . $settings['system']['backup_dir']);
+ foreach ($files as $file){
+ if(preg_match('/.*\.tar\.gz$/', $file)){
+ safe_exec('rm ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . $file . '');
+ }
+ }
+ }
+ }
+ }
+ fwrite($debugHandler, 'backup customers finished...' . "\n");
+}
+
+?>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/scripts/jobs/cron_tasks.inc.http.10.apache.php
^
|
@@ -974,7 +974,7 @@
&& isset($row_diroptions['options_cgi'])
&& $row_diroptions['options_cgi'] == '1')
{
- $this->diroptions_data[$diroptions_filename].= ' ExecCGI -MultiViews +SymLinksIfOwnerMatch +FollowSysLinks'."\n";
+ $this->diroptions_data[$diroptions_filename].= ' ExecCGI -MultiViews +SymLinksIfOwnerMatch +FollowSymLinks'."\n";
} else {
$this->diroptions_data[$diroptions_filename].= "\n";
}
@@ -991,7 +991,7 @@
&& isset($row_diroptions['options_cgi'])
&& $row_diroptions['options_cgi'] == '1')
{
- $this->diroptions_data[$diroptions_filename].= ' ExecCGI -MultiViews +SymLinksIfOwnerMatch +FollowSysLinks'."\n";
+ $this->diroptions_data[$diroptions_filename].= ' ExecCGI -MultiViews +SymLinksIfOwnerMatch +FollowSymLinks'."\n";
} else {
$this->diroptions_data[$diroptions_filename].= "\n";
}
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/scripts/jobs/cron_tasks.inc.http.15.apache_fcgid.php
^
|
@@ -40,11 +40,13 @@
$php_options_text.= ' SuexecUserGroup "' . $domain['loginname'] . '" "' . $domain['loginname'] . '"' . "\n";
$php_options_text.= ' FastCgiExternalServer ' . makeCorrectDir($domain['documentroot']) . 'fpm.external -socket ' . $php->getInterface()->getSocketFile() . ' -user ' . $domain['loginname'] . ' -group ' . $domain['loginname'] . "\n";
$php_options_text.= ' <Directory "' . makeCorrectDir($domain['documentroot']) . '">' . "\n";
- $php_options_text.= ' AddHandler php5-fastcgi .php'. "\n";
- $php_options_text.= ' Action php5-fastcgi /fastcgiphp' . "\n";
- $php_options_text.= ' Options +ExecCGI' . "\n";
- $php_options_text.= ' Order allow,deny' . "\n";
- $php_options_text.= ' allow from all' . "\n";
+ $php_options_text.= ' <FilesMatch "\.php$">' . "\n";
+ $php_options_text.= ' SetHandler php5-fastcgi'. "\n";
+ $php_options_text.= ' Action php5-fastcgi /fastcgiphp' . "\n";
+ $php_options_text.= ' Options +ExecCGI' . "\n";
+ $php_options_text.= ' Order allow,deny' . "\n";
+ $php_options_text.= ' allow from all' . "\n";
+ $php_options_text.= ' </FilesMatch>' . "\n";
$php_options_text.= ' </Directory>' . "\n";
$php_options_text.= ' Alias /fastcgiphp ' . makeCorrectDir($domain['documentroot']) . 'fpm.external' . "\n";
}
@@ -60,14 +62,16 @@
$php_options_text.= ' SuexecUserGroup "' . $domain['loginname'] . '" "' . $domain['loginname'] . '"' . "\n";
$php_options_text.= ' <Directory "' . $domain['documentroot'] . '">' . "\n";
$file_extensions = explode(' ', $phpconfig['file_extensions']);
- $php_options_text.= ' AddHandler fcgid-script .' . implode(' .', $file_extensions) . "\n";
+ $php_options_text.= ' <FilesMatch "\.(' . implode('|', $file_extensions) . ')$">' . "\n";
+ $php_options_text.= ' SetHandler fcgid-script' . "\n";
foreach($file_extensions as $file_extension)
{
- $php_options_text.= ' FCGIWrapper ' . $php->getInterface()->getStarterFile() . ' .' . $file_extension . "\n";
+ $php_options_text.= ' FCGIWrapper ' . $php->getInterface()->getStarterFile() . ' .' . $file_extension . "\n";
}
- $php_options_text.= ' Options +ExecCGI' . "\n";
- $php_options_text.= ' Order allow,deny' . "\n";
- $php_options_text.= ' allow from all' . "\n";
+ $php_options_text.= ' Options +ExecCGI' . "\n";
+ $php_options_text.= ' Order allow,deny' . "\n";
+ $php_options_text.= ' allow from all' . "\n";
+ $php_options_text.= ' </FilesMatch>' . "\n";
$php_options_text.= ' </Directory>' . "\n";
}
}
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/scripts/jobs/cron_tasks.inc.http.30.nginx.php
^
|
@@ -186,6 +186,7 @@
$this->nginx_data[$vhost_filename].= "\t".'access_log /var/log/nginx/access.log;' . "\n";
+ $mypath = '';
if($row_ipsandports['vhostcontainer'] == '1')
{
$mypath = makeCorrectDir(dirname(dirname(dirname(__FILE__))));
@@ -550,7 +551,7 @@
$x = 0;
while($row_htpasswds = $this->db->fetch_array($result))
{
- if(count($row_htpasswds['htpasswds']) > 0)
+ if(count($row_htpasswds) > 0)
{
$htpasswd_filename = makeCorrectFile($this->settings['system']['apacheconf_htpasswddir'] . '/' . $row_htpasswds['customerid'] . '-' . md5($row_htpasswds['path']) . '.htpasswd');
@@ -559,12 +560,9 @@
$this->htpasswds_data[$htpasswd_filename] = '';
}
- foreach($row['htpasswds'] as $row_htpasswd)
- {
- $this->htpasswds_data[$htpasswd_filename].= $row_htpasswd['username'] . ':' . $row_htpasswd['password'] . "\n";
- }
+ $this->htpasswds_data[$htpasswd_filename].= $row_htpasswds['username'] . ':' . $row_htpasswds['password'] . "\n";
- $path = makeCorrectDir(substr($row['path'], strlen($domain['documentroot']) - 1));
+ $path = makeCorrectDir(substr($row_htpasswds['path'], strlen($domain['documentroot']) - 1));
$returnval[$x]['path'] = $path;
$returnval[$x]['root'] = makeCorrectDir($domain['documentroot']);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/scripts/jobs/cron_tasks.php
^
|
@@ -403,6 +403,63 @@
}
}
}
+
+ /**
+ * TYPE=9 Create backup dir protection (no download of backups via webserver)
+ */
+ elseif ($row['type'] == '9')
+ {
+
+ fwrite($debugHandler, ' cron_tasks: Task9 started - creating backup dir protection' . "\n");
+ $cronlog->logAction(CRON_ACTION, LOG_INFO, 'Task9 started - creating backup dir protection');
+
+ $result = $db->query("SELECT documentroot, backup_allowed, backup_enabled FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE 1");
+ while($row = $db->fetch_array($result)){
+
+ if ($row['backup_allowed'] == '1' && $row['backup_enabled'] == '1'){
+
+ $backupprotectfile = $settings['system']['apacheconf_diroptions'] . '50_froxlor_diroption_' . md5($row['documentroot'] . $settings['system']['backup_dir']) . '.conf';
+ $fh = fopen($backupprotectfile, 'w');
+
+ if($settings['system']['webserver'] == 'apache2'){
+ $filedata = '# ' . basename($backupprotectfile) . "\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" .
+ '<Directory "' . $row['documentroot'] . $settings['system']['backup_dir'] . '/">' . "\n" .
+ ' deny from all' . "\n" .
+ '</Directory>' . "\n";
+ }
+ elseif($settings['system']['webserver'] == 'lighttpd'){
+ $filedata = '# ' . basename($backupprotectfile) . "\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" .
+ '$PHYSICAL["path"] !~ "^' . $row['documentroot'] . $settings['system']['backup_dir'] . '/$" {' . "\n" .
+ ' access.deny-all = "enable"' . "\n" .
+ '}' . "\n";
+ }
+ elseif($settings['system']['webserver'] == 'nginx'){
+ $filedata = '# ' . basename($backupprotectfile) . "\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" .
+ 'location ' . $row['documentroot'] . $settings['system']['backup_dir'] . ' {' . "\n" .
+ ' deny all;' . "\n" .
+ ' return 403;' . "\n" .
+ '}' . "\n";
+ }
+ fwrite($fh, $filedata);
+ fclose($fh);
+ }
+ else{
+ // deletes backup if customer or admin disables backup because backup protection is not set
+ if (file_exists($row['documentroot'] . $settings['system']['backup_dir'] . '/')){
+ $files = scandir($row['documentroot'] . $settings['system']['backup_dir']);
+ foreach ($files as $file){
+ if(preg_match('/.*\.tar\.gz$/', $file)){
+ safe_exec('rm ' . escapeshellarg($row['documentroot']) . escapeshellarg($settings['system']['backup_dir']) . '/' . $file . '');
+ }
+ }
+ }
+ }
+
+ }
+ }
}
if($db->num_rows($result_tasks) != 0)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/scripts/jobs/cron_traffic.php
^
|
@@ -365,6 +365,14 @@
*/
$diskusage = floatval($webspaceusage + $emailusage + $mysqlusage);
+ if($settings['system']['backup_count'] == 0 && file_exists($row['documentroot'] . $settings['system']['backup_dir'])){
+ $backupsize = exec('du -s ' . escapeshellarg($row['documentroot'] . $settings['system']['backup_dir']) . '');
+ $diskusage = floatval($webspaceusage + $emailusage + $mysqlusage - $backupsize);
+ }
+ else{
+ $diskusage = floatval($webspaceusage + $emailusage + $mysqlusage);
+ }
+
$db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `diskspace_used`='" . (float)$current_diskspace['all'] . "', `traffic_used`='" . (float)$sum_month_traffic['all'] . "' WHERE `customerid`='" . (int)$row['customerid'] . "'");
/**
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/scripts/jobs/cron_usage_report.php
^
|
@@ -207,7 +207,7 @@
while($customer = $db->fetch_array($customers))
{
- if ($customer['traffic'] >= 0) {
+ if ($customer['traffic'] > 0) {
$mail_body.= sprintf('%-15s', $customer['loginname']) . ' ' . sprintf('%-12d', $customer['traffic_used_total']) . ' (' . sprintf('%00.3f%%', (($customer['traffic_used_total'] * 100) / $customer['traffic'])) . ') ' . $customer['traffic'] . "\n";
} else {
$mail_body.= sprintf('%-15s', $customer['loginname']) . ' ' . sprintf('%-12d', $customer['traffic_used_total']) . ' (' . sprintf('%00.3f%%', $customer['traffic_used_total']) . ') ' . $customer['traffic'] . "\n";
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Classic/admin/traffic
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Classic/admin/traffic/index.tpl
^
|
@@ -0,0 +1,31 @@
+$header
+ <script type="text/javascript" src="templates/jquery.tablesorter.min.js"></script>
+ <script type="text/javascript">
+ $.tablesorter.addParser( {
+ id: 'filesize',
+ is: function(s) {
+ return s.match( new RegExp( /[0-9]+(\.[0-9]+)?\ (KiB|B|GiB|MiB|TiB)/ ) );
+ },
+ format: function(s) {
+ var suf = s.match( new RegExp( /(KiB|B|GiB|MiB|TiB)/) )[1];
+ var num = parseFloat( s.match( new RegExp( /^[0-9]+(\.[0-9]+)?/ ) )[0] );
+ switch( suf ) {
+ case 'B':
+ return num;
+ case 'KiB':
+ return num * 1024;
+ case 'MiB':
+ return num * 1024 * 1024;
+ case 'GiB':
+ return num * 1024 * 1024 * 1024;
+ case 'TiB':
+ return num * 1024 * 1024 * 1024 * 1024;
+ }
+ },
+ type: 'numeric'
+ });
+ </script>
+ {$stats_tables}
+ <br />
+ <br />
+$footer
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Classic/admin/traffic/index_table.tpl
^
|
@@ -0,0 +1,65 @@
+ <table cellpadding="5" cellspacing="0" border="0" align="center" class="maintable" id="stats{$overview['year']}">
+ <thead>
+ <tr>
+ <td colspan="13" class="maintitle"><b><img src="images/Classic/title.gif" alt="" /> {$lng['traffic']['trafficoverview']} {$overview['type']} {$overview['year']}</b></td>
+ </tr>
+ <tr>
+ <th class="field_display_border_left" style="text-align:left;">{$overview['type']}</th>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['jan']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['feb']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['mar']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['apr']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['may']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['jun']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['jul']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['aug']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['sep']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['oct']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['nov']}</td>
+ <th class="field_display" style="text-align:right;">{$lng['traffic']['months']['dec']}</td>
+ </tr>
+ </thead>
+ <tbody>
+ {$domain_list}
+ </tbody>
+ <tfoot>
+ {$total_list}
+ <tr>
+ <td colspan="13"> </td>
+ </tr>
+ </tfoot>
+ </table>
+ <script type="text/javascript">
+ var myTextExtraction = function(node)
+ {
+ // extract data from markup and return it
+ if(node.innerHTML != '-') {
+ return 1 + node.innerHTML.substr(0,node.innerHTML.length);
+ } else {
+ return '0 B';
+ }
+ }
+ $(document).ready(function()
+ {
+ $("#stats{$overview['year']}").tablesorter( {
+ textExtraction: myTextExtraction,
+ headers: {
+ 1: {sorter: 'filesize'},
+ 2: {sorter: 'filesize'},
+ 3: {sorter: 'filesize'},
+ 4: {sorter: 'filesize'},
+ 5: {sorter: 'filesize'},
+ 6: {sorter: 'filesize'},
+ 7: {sorter: 'filesize'},
+ 8: {sorter: 'filesize'},
+ 9: {sorter: 'filesize'},
+ 10: {sorter: 'filesize'},
+ 11: {sorter: 'filesize'},
+ 12: {sorter: 'filesize'}
+ },
+ });
+ });
+ </script>
+ <br />
+ <br />
+
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Classic/admin/traffic/index_table_row.tpl
^
|
@@ -0,0 +1,15 @@
+ <tr>
+ <th class="field_name_border_left">{$virtual_host['name']}<if $customerview == 1> <a href="$filename?s=$s&page=$page&action=su&id={$virtual_host['customerid']}">[{$lng['traffic']['details']}]</a></if></th>
+ <td class="field_name" style="text-align:right;background-color:white;">{$virtual_host['jan']}</td>
+ <td class="field_name" style="text-align:right;">{$virtual_host['feb']}</td>
+ <td class="field_name" style="text-align:right;background-color:white;">{$virtual_host['mar']}</td>
+ <td class="field_name" style="text-align:right;">{$virtual_host['apr']}</td>
+ <td class="field_name" style="text-align:right;background-color:white;">{$virtual_host['may']}</td>
+ <td class="field_name" style="text-align:right;">{$virtual_host['jun']}</td>
+ <td class="field_name" style="text-align:right;background-color:white;">{$virtual_host['jul']}</td>
+ <td class="field_name" style="text-align:right;">{$virtual_host['aug']}</td>
+ <td class="field_name" style="text-align:right;background-color:white;">{$virtual_host['sep']}</td>
+ <td class="field_name" style="text-align:right;">{$virtual_host['oct']}</td>
+ <td class="field_name" style="text-align:right;background-color:white;">{$virtual_host['nov']}</td>
+ <td class="field_name" style="text-align:right;">{$virtual_host['dec']}</td>
+ </tr>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Classic/customer/index/index.tpl
^
|
@@ -39,60 +39,60 @@
<td class="field_display">$domains</td>
</tr>
<tr>
- <td class="field_name_border_left">{$lng['customer']['subdomains']}:</td>
- <td class="field_display">{$userinfo['subdomains_used']} ({$userinfo['subdomains']})</td>
+ <td class="field_name_border_left">{$lng['customer']['subdomains']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['subdomains_used']}/{$userinfo['subdomains']}</td>
</tr>
<tr>
- <td class="field_name_border_left">{$lng['customer']['diskspace']}:</td>
- <td class="field_display">{$userinfo['diskspace_used']} ({$userinfo['diskspace']})</td>
+ <td class="field_name_border_left">{$lng['customer']['diskspace']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['diskspace_used']}/{$userinfo['diskspace']}</td>
</tr>
<tr>
- <td class="field_name_border_left">{$lng['customer']['traffic']} ($month):</td>
- <td class="field_display">{$userinfo['traffic_used']} ({$userinfo['traffic']})</td>
+ <td class="field_name_border_left">{$lng['customer']['traffic']} ($month, {$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['traffic_used']}/{$userinfo['traffic']}</td>
</tr>
<tr>
- <td class="field_name_border_left">{$lng['customer']['emails']}:</td>
- <td class="field_display">{$userinfo['emails_used']} ({$userinfo['emails']})</td>
+ <td class="field_name_border_left">{$lng['customer']['emails']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['emails_used']}/{$userinfo['emails']}</td>
</tr>
<tr>
- <td class="field_name_border_left">{$lng['customer']['accounts']}:</td>
- <td class="field_display">{$userinfo['email_accounts_used']} ({$userinfo['email_accounts']})</td>
+ <td class="field_name_border_left">{$lng['customer']['accounts']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['email_accounts_used']}/{$userinfo['email_accounts']}</td>
</tr>
<tr>
- <td class="field_name_border_left">{$lng['customer']['forwarders']}:</td>
- <td class="field_display">{$userinfo['email_forwarders_used']} ({$userinfo['email_forwarders']})</td>
+ <td class="field_name_border_left">{$lng['customer']['forwarders']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['email_forwarders_used']}/{$userinfo['email_forwarders']}</td>
</tr>
<if $settings['system']['mail_quota_enabled'] == 1>
<tr>
- <td class="field_name_border_left">{$lng['customer']['email_quota']} ({$lng['panel']['megabyte']}):</td>
- <td class="field_display">{$userinfo['email_quota_used']} ({$userinfo['email_quota']})</td>
+ <td class="field_name_border_left">{$lng['customer']['email_quota']} ({$lng['panel']['megabyte']}, {$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['email_quota_used']}/{$userinfo['email_quota']}</td>
</tr>
</if>
</tr>
<if $settings['autoresponder']['autoresponder_active'] == 1>
<tr>
- <td class="field_name_border_left">{$lng['customer']['autoresponder']}:</td>
- <td class="field_display">{$userinfo['email_autoresponder_used']} ({$userinfo['email_autoresponder']})</td>
+ <td class="field_name_border_left">{$lng['customer']['autoresponder']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['email_autoresponder_used']}/{$userinfo['email_autoresponder']}</td>
</tr>
</if>
<tr>
- <td class="field_name_border_left">{$lng['customer']['mysqls']}:</td>
- <td class="field_display">{$userinfo['mysqls_used']} ({$userinfo['mysqls']})</td>
+ <td class="field_name_border_left">{$lng['customer']['mysqls']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['mysqls_used']}/{$userinfo['mysqls']}</td>
</tr>
<tr>
- <td class="field_name_border_left">{$lng['customer']['ftps']}:</td>
- <td class="field_display">{$userinfo['ftps_used']} ({$userinfo['ftps']})</td>
+ <td class="field_name_border_left">{$lng['customer']['ftps']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['ftps_used']}/{$userinfo['ftps']}</td>
</tr>
<if (int)$settings['aps']['aps_active'] == 1>
<tr>
- <td class="field_name_border_left">{$lng['aps']['numberofapspackages']}:</td>
- <td class="field_display">{$userinfo['aps_packages_used']} ({$userinfo['aps_packages']})</td>
+ <td class="field_name_border_left">{$lng['aps']['numberofapspackages']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['aps_packages_used']}/{$userinfo['aps_packages']}</td>
</tr>
</if>
<if $settings['ticket']['enabled'] == 1 >
<tr>
- <td class="field_name_border_left">{$lng['customer']['tickets']}:</td>
- <td class="field_display">{$userinfo['tickets_used']} ({$userinfo['tickets']})</td>
+ <td class="field_name_border_left">{$lng['customer']['tickets']} ({$lng['customer']['usedmax']}):</td>
+ <td class="field_display">{$userinfo['tickets_used']}/{$userinfo['tickets']}</td>
</tr>
</if>
<if 0 < $awaitingtickets && $settings['ticket']['enabled'] == 1 >
@@ -103,4 +103,4 @@
</table>
<br />
<br />
-$footer
\ No newline at end of file
+$footer
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Classic/js
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Classic/js/jquery.min.js
^
|
@@ -0,0 +1,167 @@
+/*!
+ * jQuery JavaScript Library v1.4.4
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Nov 11 19:04:53 2010 -0500
+ */
+(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=
+h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"||
+h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La,
+"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,
+e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,
+"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+
+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j,
+s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,
+j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},
+toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j===
+-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false;
+if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;
+if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload",
+b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&&
+!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&&
+l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H<G;){if(s.apply(j[H++],v)===false)break}else if(K)for(z in j){if(s.call(j[z],
+z,j[z])===false)break}else for(v=j[0];H<G&&s.call(v,H,v)!==false;v=j[++H]);return j},trim:O?function(j){return j==null?"":O.call(j)}:function(j){return j==null?"":j.toString().replace(k,"").replace(o,"")},makeArray:function(j,s){var v=s||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?M.call(v,j):b.merge(v,j)}return v},inArray:function(j,s){if(s.indexOf)return s.indexOf(j);for(var v=0,z=s.length;v<z;v++)if(s[v]===j)return v;return-1},merge:function(j,
+s){var v=j.length,z=0;if(typeof s.length==="number")for(var H=s.length;z<H;z++)j[v++]=s[z];else for(;s[z]!==B;)j[v++]=s[z++];j.length=v;return j},grep:function(j,s,v){var z=[],H;v=!!v;for(var G=0,K=j.length;G<K;G++){H=!!s(j[G],G);v!==H&&z.push(j[G])}return z},map:function(j,s,v){for(var z=[],H,G=0,K=j.length;G<K;G++){H=s(j[G],G,v);if(H!=null)z[z.length]=H}return z.concat.apply([],z)},guid:1,proxy:function(j,s,v){if(arguments.length===2)if(typeof s==="string"){v=j;j=v[s];s=B}else if(s&&!b.isFunction(s)){v=
+s;s=B}if(!s&&j)s=function(){return j.apply(v||this,arguments)};if(j)s.guid=j.guid=j.guid||s.guid||b.guid++;return s},access:function(j,s,v,z,H,G){var K=j.length;if(typeof s==="object"){for(var Q in s)b.access(j,Q,s[Q],z,H,v);return j}if(v!==B){z=!G&&z&&b.isFunction(v);for(Q=0;Q<K;Q++)H(j[Q],s,z?v.call(j[Q],Q,H(j[Q],s)):v,G);return j}return K?H(j[0],s):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=L.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)||
+[];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,s){R["[object "+s+"]"]=s.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=m.version}if(b.browser.webkit)b.browser.safari=true;if(D)b.inArray=function(j,s){return D.call(s,j)};if(!/\s/.test("\u00a0")){k=/^[\s\xA0]+/;o=/[\s\xA0]+$/}f=b(t);if(t.addEventListener)u=function(){t.removeEventListener("DOMContentLoaded",u,
+false);b.ready()};else if(t.attachEvent)u=function(){if(t.readyState==="complete"){t.detachEvent("onreadystatechange",u);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=t.documentElement,b=t.createElement("script"),d=t.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"),
+k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false,
+scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom=
+1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display=
+"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h=
+c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);
+else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h<l;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);ka(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this,
+a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=this.triggerHandler("getData"+k[1]+"!",[k[0]]);if(d===B&&this.length){d=c.data(this[0],a);d=ka(this[0],a,d)}return d===B&&k[1]?this.data(k[0]):d}else return this.each(function(){var o=c(this),x=[k[0],b];o.triggerHandler("setData"+k[1]+"!",x);c.data(this,a,b);o.triggerHandler("changeData"+k[1]+"!",x)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=
+c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
+a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var sa=/[\n\t]/g,ha=/\s+/,Sa=/\r/g,Ta=/^(?:href|src|style)$/,Ua=/^(?:button|input)$/i,Va=/^(?:button|input|object|select|textarea)$/i,Wa=/^a(?:rea)?$/i,ta=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",
+colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(x){var r=c(this);r.addClass(a.call(this,x,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===
+1)if(f.className){for(var h=" "+f.className+" ",l=f.className,k=0,o=b.length;k<o;k++)if(h.indexOf(" "+b[k]+" ")<0)l+=" "+b[k];f.className=c.trim(l)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var x=c(this);x.removeClass(a.call(this,o,x.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(sa," "),
+l=0,k=b.length;l<k;l++)h=h.replace(" "+b[l]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,l=c(this),k=b,o=a.split(ha);f=o[h++];){k=e?k:!l.hasClass(f);l[k?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,
+"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(sa," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";
+if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var l=f[h];if(l.selected&&(c.support.optDisabled?!l.disabled:l.getAttribute("disabled")===null)&&(!l.parentNode.disabled||!c.nodeName(l.parentNode,"optgroup"))){a=c(l).val();if(b)return a;d.push(a)}}return d}if(ta.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Sa,"")}return B}var k=c.isFunction(a);return this.each(function(o){var x=c(this),r=a;if(this.nodeType===1){if(k)r=
+a.call(this,o,x.val());if(r==null)r="";else if(typeof r==="number")r+="";else if(c.isArray(r))r=c.map(r,function(C){return C==null?"":C+""});if(c.isArray(r)&&ta.test(this.type))this.checked=c.inArray(x.val(),r)>=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},
+attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&
+b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0};
+c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,
+arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid=
+d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+
+c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h<A.length;h++){C=A[h];if(d.guid===C.guid){if(k||x.test(C.namespace)){e==null&&A.splice(h--,1);r.remove&&r.remove.call(a,C)}if(e!=null)break}}if(A.length===0||e!=null&&A.length===1){if(!r.teardown||r.teardown.call(a,o)===false)c.removeEvent(a,f,w.handle);delete I[f]}}else for(h=0;h<A.length;h++){C=A[h];if(k||x.test(C.namespace)){c.event.remove(a,r,C.handler,h);A.splice(h--,1)}}}if(c.isEmptyObject(I)){if(b=
+w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,J);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===
+8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k===
+"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+
+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f<l;f++){var k=d[f];if(b||e.test(k.namespace)){a.handler=k.handler;a.data=k.data;a.handleObj=k;k=k.handler.apply(this,h);if(k!==B){a.result=k;if(k===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||t;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=t.documentElement;d=t.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ka,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
+Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=t.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
+c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ca;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ca;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ca;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
+var va=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},wa=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?wa:va,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?wa:va)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return la("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return la("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
+xa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired=
+B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type===
+"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]===
+0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h<k;h++)c.event.add(this[h],d,l,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
+a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
+1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var ya={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var l,k=0,o,x,r=h||this.selector;h=h?this:c(this.context);if(typeof d===
+"object"&&!d.preventDefault){for(l in d)h[b](l,e,d[l],r);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(l=d[k++])!=null;){o=X.exec(l);x="";if(o){x=o[0];l=l.replace(X,"")}if(l==="hover")d.push("mouseenter"+x,"mouseleave"+x);else{o=l;if(l==="focus"||l==="blur"){d.push(ya[l]+x);l+=x}else l=(ya[l]||l)+x;if(b==="live"){x=0;for(var A=h.length;x<A;x++)c.event.add(h[x],"live."+Y(l,r),{data:e,selector:r,handler:f,origType:l,origHandler:f,preType:o})}else h.unbind("live."+Y(l,r),f)}}return this}});
+c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1&&!q){y.sizcache=n;y.sizset=p}if(y.nodeName.toLowerCase()===i){F=y;break}y=y[g]}m[p]=F}}}function b(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1){if(!q){y.sizcache=n;y.sizset=p}if(typeof i!=="string"){if(y===i){F=true;break}}else if(k.filter(i,
+[y]).length>0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3];
+break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr,
+q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h=
+l;g.sort(w);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};k.matches=function(g,i){return k(g,null,null,i)};k.matchesSelector=function(g,i){return k(i,null,null,[g]).length>0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p<q;p++){var u,y=o.order[p];if(u=o.leftMatch[y].exec(g)){var F=u[1];u.splice(1,1);if(F.substr(F.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");m=o.find[y](u,i,n);if(m!=null){g=g.replace(o.match[y],"");break}}}}m||(m=i.getElementsByTagName("*"));
+return{set:m,expr:g}};k.filter=function(g,i,n,m){for(var p,q,u=g,y=[],F=i,M=i&&i[0]&&k.isXML(i[0]);g&&i.length;){for(var N in o.filter)if((p=o.leftMatch[N].exec(g))!=null&&p[2]){var O,D,R=o.filter[N];D=p[1];q=false;p.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(F===y)y=[];if(o.preFilter[N])if(p=o.preFilter[N](p,F,n,y,m,M)){if(p===true)continue}else q=O=true;if(p)for(var j=0;(D=F[j])!=null;j++)if(D){O=R(D,p,j,F);var s=m^!!O;if(n&&O!=null)if(s)q=true;else F[j]=false;else if(s){y.push(D);q=true}}if(O!==
+B){n||(F=y);g=g.replace(o.match[N],"");if(!q)return[];break}}}if(g===u)if(q==null)k.error(g);else break;u=g}return F};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var o=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",m=n&&!/\W/.test(i);n=n&&!m;if(m)i=i.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=n||q&&q.nodeName.toLowerCase()===
+i?q||false:q===i}n&&k.filter(i,g,true)},">":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p<q;p++){if(n=g[p]){n=n.parentNode;g[p]=n.nodeName.toLowerCase()===i?n:false}}else{for(;p<q;p++)if(n=g[p])g[p]=m?n.parentNode:n.parentNode===i;m&&k.filter(i,g,true)}},"":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=i=i.toLowerCase();q=a}q("parentNode",i,p,g,m,n)},"~":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=
+i=i.toLowerCase();q=a}q("previousSibling",i,p,g,m,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){for(var n=[],m=i.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&n.push(m[p]);return n.length===0?null:n}},TAG:function(g,i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,m,p,q){g=" "+g[1].replace(/\\/g,
+"")+" ";if(q)return g;q=0;for(var u;(u=i[q])!=null;q++)if(u)if(p^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n,
+m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
+true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
+g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]-
+0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n<m;n++)if(i[n]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,i){var n=i[1],m=g;switch(n){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(n===
+"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":n=i[2];var p=i[3];if(n===1&&p===0)return true;var q=i[0],u=g.parentNode;if(u&&(u.sizcache!==q||!g.nodeIndex)){var y=0;for(m=u.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++y;u.sizcache=q}m=g.nodeIndex-p;return n===0?m===0:m%n===0&&m/n>=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
+i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]];
+if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m,
+g);else if(typeof g.length==="number")for(var p=g.length;n<p;n++)m.push(g[n]);else for(;g[n];n++)m.push(g[n]);return m}}var w,I;if(t.documentElement.compareDocumentPosition)w=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&4?-1:1};else{w=function(g,i){var n,m,p=[],q=[];n=g.parentNode;m=i.parentNode;var u=n;if(g===i){h=true;return 0}else if(n===m)return I(g,i);else if(n){if(!m)return 1}else return-1;
+for(;u;){p.unshift(u);u=u.parentNode}for(u=m;u;){q.unshift(u);u=u.parentNode}n=p.length;m=q.length;for(u=0;u<n&&u<m;u++)if(p[u]!==q[u])return I(p[u],q[u]);return u===n?I(g,q[u],-1):I(p[u],i,1)};I=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}k.getText=function(g){for(var i="",n,m=0;g[m];m++){n=g[m];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=k.getText(n.childNodes)}return i};(function(){var g=t.createElement("div"),
+i="script"+(new Date).getTime(),n=t.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g);
+n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&&
+function(){var g=k,i=t.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F||
+p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g=
+t.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition?
+function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n<u;n++)k(g,q[n],m);return k.filter(p,m)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=k.getText;c.isXMLDoc=k.isXML;
+c.contains=k.contains})();var Za=/Until$/,$a=/^(?:parents|prevUntil|prevAll)/,ab=/,/,Na=/^.[^:#\[\.,]*$/,bb=Array.prototype.slice,cb=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var l=0;l<d;l++)if(b[l]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},
+not:function(a){return this.pushStack(ma(this,a,false),"not",a)},filter:function(a){return this.pushStack(ma(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h=
+h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(l?l.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):
+c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,
+2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,
+b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&
+e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/<tbody/i,eb=/<|&#?\w+;/,Ca=/<(?:script|object|embed|option|style)/i,Da=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/\=([^="'>\s]+\/)>/g,P={option:[1,
+"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null;
+else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=
+c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){var e,f,h,l=a[0],k=[];if(!c.support.checkClone&&arguments.length===3&&typeof l==="string"&&Da.test(l))return this.each(function(){c(this).domManip(a,
+b,d,true)});if(c.isFunction(l))return this.each(function(x){var r=c(this);a[0]=l.call(this,x,b?r.html():B);r.domManip(a,b,d)});if(this[0]){e=l&&l.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);h=e.fragment;if(f=h.childNodes.length===1?h=h.firstChild:h.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var o=this.length;f<o;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):
+this[f]:this[f],f>0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",
+prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f<h;f++){var l=(f>0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument||
+b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1></$2>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]==="<table>"&&!x?r.childNodes:[];for(o=k.length-
+1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));
+d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i,
+jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,
+zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),
+h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b);
+if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=
+d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left;
+e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b===
+"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("<div>").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
+!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
+getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
+script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
+!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache=
+false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset;
+A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type",
+b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
+c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
+c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]=
+encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",
+[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),
+e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});
+if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",
+3),a,b,d);else{d=0;for(var e=this.length;d<e;d++){a=this[d];b=a.style.display;if(!c.data(a,"olddisplay")&&b==="none")b=a.style.display="";b===""&&c.css(a,"display")==="none"&&c.data(a,"olddisplay",qa(a.nodeName))}for(d=0;d<e;d++){a=this[d];b=a.style.display;if(b===""||b==="none")a.style.display=c.data(a,"olddisplay")||""}return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",
+d)}for(a=0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,
+d,e);if(c.isEmptyObject(a))return this.each(f.complete);return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),l,k=this.nodeType===1,o=k&&c(this).is(":hidden"),x=this;for(l in a){var r=c.camelCase(l);if(l!==r){a[r]=a[l];delete a[l];l=r}if(a[l]==="hide"&&o||a[l]==="show"&&!o)return h.complete.call(this);if(k&&(l==="height"||l==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(qa(this.nodeName)===
+"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[l])){(h.specialEasing=h.specialEasing||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(A,C){var J=new c.fx(x,h,A);if(vb.test(C))J[C==="toggle"?o?"show":"hide":C](a);else{var w=wb.exec(C),I=J.cur()||0;if(w){var L=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(x,A,(L||1)+g);I=(L||
+1)/J.cur()*I;c.style(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.custom(I,L,g)}else J.custom(I,C,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
+d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
+Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)}
+var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
+this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
+this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
+c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(ba);ba=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
+b.elem}).length};var xb=/^t(?:able|d|h)$/i,Ia=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in t.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(l){c.offset.setOffset(this,a,l)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=fa(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
+h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(x){c.offset.setOffset(this,a,x)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d,e=b.offsetParent,f=b.ownerDocument,h=f.documentElement,l=f.body;d=(f=f.defaultView)?f.getComputedStyle(b,null):b.currentStyle;
+for(var k=b.offsetTop,o=b.offsetLeft;(b=b.parentNode)&&b!==l&&b!==h;){if(c.offset.supportsFixedPosition&&d.position==="fixed")break;d=f?f.getComputedStyle(b,null):b.currentStyle;k-=b.scrollTop;o-=b.scrollLeft;if(b===e){k+=b.offsetTop;o+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&xb.test(b.nodeName))){k+=parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}e=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"){k+=
+parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}d=d}if(d.position==="relative"||d.position==="static"){k+=l.offsetTop;o+=l.offsetLeft}if(c.offset.supportsFixedPosition&&d.position==="fixed"){k+=Math.max(h.scrollTop,l.scrollTop);o+=Math.max(h.scrollLeft,l.scrollLeft)}return{top:k,left:o}};c.offset={initialize:function(){var a=t.body,b=t.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
+height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
+f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
+"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),l=c.css(a,"top"),k=c.css(a,"left"),o=e==="absolute"&&c.inArray("auto",[l,k])>-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a,
+e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&&
+c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
+c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+
+b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window);
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Classic/main.css
^
|
@@ -476,3 +476,17 @@
}
+table.maintable th.field_display .header {
+ background-color: #000000;
+}
+
+.headerSortUp {
+ background-image: url(../images/asc.gif);
+ background-position: right bottom;
+ background-repeat: no-repeat;
+}
+.headerSortDown {
+ background-image: url(../images/desc.gif);
+ background-position: right top;
+ background-repeat: no-repeat;
+}
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Classic/misc/configurehint.tpl
^
|
@@ -60,7 +60,7 @@
</div>
<div class="footer">
- <ul><li>© 2009-2010 by <a href="http://www.froxlor.org">the Froxlor Team</a></li></ul>
+ <ul><li>© 2009-2011 by <a href="http://www.froxlor.org">the Froxlor Team</a></li></ul>
</div>
</body>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/admin/settings/updatecounters.tpl
^
|
@@ -1,18 +1,30 @@
$header
- <table cellpadding="5" cellspacing="4" border="0" align="center" class="maintable">
- <tr>
- <td class="maintitle" colspan="2">
- <b><img src="images/title.gif" alt="" /> {$lng['admin']['updatecounters']}: {$lng['admin']['customers']}</b>
- </td>
- </tr>
+<article>
+ <header>
+ <h2>
+ <img src="images/Froxlor/icons/res_recalculate_big.png" alt="" />
+ {$lng['admin']['updatecounters']}
+ </h2>
+ </header>
+
+ <section class="fullform bradiusodd">
+ <table class="formtable">
+ <tr>
+ <td colspan="2" style="font-weight: bold;"><img src="images/Froxlor/icons/res_recalculate.png" alt="" /> {$lng['admin']['customers']}</td>
+ </tr>
{$customers}
- <tr>
- <td class="maintitle" colspan="2">
- <b><img src="images/title.gif" alt="" /> {$lng['admin']['updatecounters']}: {$lng['admin']['admins']}</b>
- </td>
- </tr>
+ </table>
+ <br /><br />
+ </section>
+ <br /><br />
+ <section class="fullform bradiusodd">
+ <table class="formtable">
+ <tr>
+ <td colspan="2" style="font-weight: bold;"><img src="images/Froxlor/icons/res_recalculate.png" alt="" /> {$lng['admin']['admins']}</td>
+ </tr>
{$admins}
- </table>
- <br />
- <br />
+ </table>
+ <br /><br />
+ </section>
+</article>
$footer
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/admin/settings/updatecounters_row_admin.tpl
^
|
@@ -1,73 +1,76 @@
<tr>
- <td class="main_field_name" style="width: 40%;">
+ <td style="width: 35%;">
<b><if $admin['adminid'] != $userinfo['userid']><a href="admin_admins.php?s=$s&page=admins&action=su&id={$admin['adminid']}" target="_blank">{$admin['loginname']}</a></if><if $admin['adminid'] == $userinfo['userid']>{$admin['loginname']}</if>:</b>
</td>
- <td class="main_field_name">
- <table border="0" style="text-align: left;">
- <tr>
- <td>{$lng['admin']['customers']}:</td>
- <td><span <if $admin['customers_used'] == $admin['customers_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['customers_used']} -> {$admin['customers_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['domains']}:</td>
- <td><span <if $admin['domains_used'] == $admin['domains_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['domains_used']} -> {$admin['domains_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['subdomains']}:</td>
- <td><span <if $admin['subdomains_used'] == $admin['subdomains_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['subdomains_used']} -> {$admin['subdomains_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['diskspace']}:</td>
- <td><span <if $admin['diskspace_used'] == $admin['diskspace_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['diskspace_used']} -> {$admin['diskspace_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['traffic']}:</td>
- <td><span <if $admin['traffic_used'] == $admin['traffic_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['traffic_used']} -> {$admin['traffic_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['mysqls']}:</td>
- <td><span <if $admin['mysqls_used'] == $admin['mysqls_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['mysqls_used']} -> {$admin['mysqls_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['emails']}:</td>
- <td><span <if $admin['emails_used'] == $admin['emails_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['emails_used']} -> {$admin['emails_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['accounts']}:</td>
- <td><span <if $admin['email_accounts_used'] == $admin['email_accounts_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_accounts_used']} -> {$admin['email_accounts_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['forwarders']}:</td>
- <td><span <if $admin['email_forwarders_used'] == $admin['email_forwarders_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_forwarders_used']} -> {$admin['email_forwarders_used_new']}</b></span></td>
- </tr>
- <if $settings['system']['mail_quota_enabled'] == 1>
- <tr>
- <td>{$lng['customer']['email_quota']}:</td>
- <td><span <if $admin['email_quota_used'] == $admin['email_quota_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_quota_used']} -> {$admin['email_quota_used_new']}</b></span></td>
- </tr>
- </if>
- <if $settings['autoresponder']['autoresponder_active'] == 1>
- <tr>
- <td>{$lng['customer']['autoresponder']}:</td>
- <td><span <if $admin['email_autoresponder_used'] == $admin['email_autoresponder_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_autoresponder_used']} -> {$admin['email_autoresponder_used_new']}</b></span></td>
- </tr>
- </if>
- <tr>
- <td>{$lng['customer']['ftps']}:</td>
- <td><span <if $admin['ftps_used'] == $admin['ftps_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['ftps_used']} -> {$admin['ftps_used_new']}</b></span></td>
- </tr>
- <if $settings['ticket']['enabled'] == '1'>
- <tr>
- <td>{$lng['customer']['tickets']}:</td>
- <td><span <if $admin['tickets_used'] == $admin['tickets_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['tickets_used']} -> {$admin['tickets_used_new']}</b></span></td>
- </tr>
- </if>
- <if $settings['aps']['aps_active'] == '1'>
- <tr>
- <td>{$lng['customer']['aps']}:</td>
- <td><span <if $admin['aps_packages_used'] == $admin['aps_packages_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['aps_packages_used']} -> {$admin['aps_packages_used_new']}</b></span></td>
- </tr>
- </if>
- </table>
+ <td>
+ <section class="fullform bradiusodd">
+ <table class="formtable" border="0" style="text-align: left; width: 100%">
+ <tr>
+ <td>{$lng['admin']['customers']}:</td>
+ <td><span <if $admin['customers_used'] == $admin['customers_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['customers_used']} -> {$admin['customers_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['domains']}:</td>
+ <td><span <if $admin['domains_used'] == $admin['domains_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['domains_used']} -> {$admin['domains_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['subdomains']}:</td>
+ <td><span <if $admin['subdomains_used'] == $admin['subdomains_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['subdomains_used']} -> {$admin['subdomains_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['diskspace']}:</td>
+ <td><span <if $admin['diskspace_used'] == $admin['diskspace_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['diskspace_used']} -> {$admin['diskspace_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['traffic']}:</td>
+ <td><span <if $admin['traffic_used'] == $admin['traffic_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['traffic_used']} -> {$admin['traffic_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['mysqls']}:</td>
+ <td><span <if $admin['mysqls_used'] == $admin['mysqls_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['mysqls_used']} -> {$admin['mysqls_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['emails']}:</td>
+ <td><span <if $admin['emails_used'] == $admin['emails_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['emails_used']} -> {$admin['emails_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['accounts']}:</td>
+ <td><span <if $admin['email_accounts_used'] == $admin['email_accounts_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_accounts_used']} -> {$admin['email_accounts_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['forwarders']}:</td>
+ <td><span <if $admin['email_forwarders_used'] == $admin['email_forwarders_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_forwarders_used']} -> {$admin['email_forwarders_used_new']}</b></span></td>
+ </tr>
+ <if $settings['system']['mail_quota_enabled'] == 1>
+ <tr>
+ <td>{$lng['customer']['email_quota']}:</td>
+ <td><span <if $admin['email_quota_used'] == $admin['email_quota_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_quota_used']} -> {$admin['email_quota_used_new']}</b></span></td>
+ </tr>
+ </if>
+ <if $settings['autoresponder']['autoresponder_active'] == 1>
+ <tr>
+ <td>{$lng['customer']['autoresponder']}:</td>
+ <td><span <if $admin['email_autoresponder_used'] == $admin['email_autoresponder_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['email_autoresponder_used']} -> {$admin['email_autoresponder_used_new']}</b></span></td>
+ </tr>
+ </if>
+ <tr>
+ <td>{$lng['customer']['ftps']}:</td>
+ <td><span <if $admin['ftps_used'] == $admin['ftps_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['ftps_used']} -> {$admin['ftps_used_new']}</b></span></td>
+ </tr>
+ <if $settings['ticket']['enabled'] == '1'>
+ <tr>
+ <td>{$lng['customer']['tickets']}:</td>
+ <td><span <if $admin['tickets_used'] == $admin['tickets_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['tickets_used']} -> {$admin['tickets_used_new']}</b></span></td>
+ </tr>
+ </if>
+ <if $settings['aps']['aps_active'] == '1'>
+ <tr>
+ <td>{$lng['customer']['aps']}:</td>
+ <td><span <if $admin['aps_packages_used'] == $admin['aps_packages_used_new']>style="color:green"<else>style="color:red"</if>><b>{$admin['aps_packages_used']} -> {$admin['aps_packages_used_new']}</b></span></td>
+ </tr>
+ </if>
+ </table>
+ <br /><br />
+ </section>
</td>
</tr>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/admin/settings/updatecounters_row_customer.tpl
^
|
@@ -1,57 +1,60 @@
<tr>
- <td class="main_field_name" style="width: 40%;">
+ <td style="width: 35%;">
<b><if $customer['name'] != '' && $customer['firstname'] != ''>{$customer['name']}, {$customer['firstname']}</if><if $customer['name'] != '' && $customer['firstname'] != '' && $customer['company'] != ''> | </if><if $customer['company'] != ''>{$customer['company']}</if> (<a href="admin_customers.php?s=$s&page=customers&action=su&id={$customer['customerid']}" target="_blank">{$customer['loginname']}</a>):</b>
</td>
- <td class="main_field_name">
- <table border="0" style="text-align: left;">
- <tr>
- <td>{$lng['customer']['subdomains']}:</td>
- <td><span <if $customer['subdomains_used'] == $customer['subdomains_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['subdomains_used']} -> {$customer['subdomains_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['mysqls']}:</td>
- <td><span <if $customer['mysqls_used'] == $customer['mysqls_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['mysqls_used']} -> {$customer['mysqls_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['emails']}:</td>
- <td><span <if $customer['emails_used'] == $customer['emails_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['emails_used']} -> {$customer['emails_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['accounts']}:</td>
- <td><span <if $customer['email_accounts_used'] == $customer['email_accounts_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_accounts_used']} -> {$customer['email_accounts_used_new']}</b></span></td>
- </tr>
- <tr>
- <td>{$lng['customer']['forwarders']}:</td>
- <td><span <if $customer['email_forwarders_used'] == $customer['email_forwarders_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_forwarders_used']} -> {$customer['email_forwarders_used_new']}</b></span></td>
- </tr>
- <if $settings['system']['mail_quota_enabled'] == 1>
- <tr>
- <td>{$lng['customer']['email_quota']}:</td>
- <td><span <if $customer['email_quota_used'] == $customer['email_quota_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_quota_used']} -> {$customer['email_quota_used_new']}</b></span></td>
- </tr>
- </if>
- <if $settings['autoresponder']['autoresponder_active'] == 1>
- <tr>
- <td>{$lng['customer']['autoresponder']}:</td>
- <td><span <if $customer['email_autoresponder_used'] == $customer['email_autoresponder_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_autoresponder_used']} -> {$customer['email_autoresponder_used_new']}</b></span></td>
- </tr>
- </if>
- <tr>
- <td>{$lng['customer']['ftps']}:</td>
- <td><span <if $customer['ftps_used'] == $customer['ftps_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['ftps_used']} -> {$customer['ftps_used_new']}</b></span></td>
- </tr>
- <if $settings['ticket']['enabled'] == '1'>
- <tr>
- <td>{$lng['customer']['tickets']}:</td>
- <td><span <if $customer['tickets_used'] == $customer['tickets_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['tickets_used']} -> {$customer['tickets_used_new']}</b></span></td>
- </tr>
- </if>
- <if $settings['aps']['aps_active'] == '1'>
- <tr>
- <td>{$lng['customer']['aps']}:</td>
- <td><span <if $customer['aps_packages_used'] == $customer['aps_packages_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['aps_packages_used']} -> {$customer['aps_packages_used_new']}</b></span></td>
- </tr>
- </if>
- </table>
+ <td>
+ <section class="fullform bradiusodd">
+ <table class="formtable" border="0" style="text-align: left; width: 100%">
+ <tr>
+ <td>{$lng['customer']['subdomains']}:</td>
+ <td><span <if $customer['subdomains_used'] == $customer['subdomains_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['subdomains_used']} -> {$customer['subdomains_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['mysqls']}:</td>
+ <td><span <if $customer['mysqls_used'] == $customer['mysqls_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['mysqls_used']} -> {$customer['mysqls_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['emails']}:</td>
+ <td><span <if $customer['emails_used'] == $customer['emails_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['emails_used']} -> {$customer['emails_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['accounts']}:</td>
+ <td><span <if $customer['email_accounts_used'] == $customer['email_accounts_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_accounts_used']} -> {$customer['email_accounts_used_new']}</b></span></td>
+ </tr>
+ <tr>
+ <td>{$lng['customer']['forwarders']}:</td>
+ <td><span <if $customer['email_forwarders_used'] == $customer['email_forwarders_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_forwarders_used']} -> {$customer['email_forwarders_used_new']}</b></span></td>
+ </tr>
+ <if $settings['system']['mail_quota_enabled'] == 1>
+ <tr>
+ <td>{$lng['customer']['email_quota']}:</td>
+ <td><span <if $customer['email_quota_used'] == $customer['email_quota_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_quota_used']} -> {$customer['email_quota_used_new']}</b></span></td>
+ </tr>
+ </if>
+ <if $settings['autoresponder']['autoresponder_active'] == 1>
+ <tr>
+ <td>{$lng['customer']['autoresponder']}:</td>
+ <td><span <if $customer['email_autoresponder_used'] == $customer['email_autoresponder_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['email_autoresponder_used']} -> {$customer['email_autoresponder_used_new']}</b></span></td>
+ </tr>
+ </if>
+ <tr>
+ <td>{$lng['customer']['ftps']}:</td>
+ <td><span <if $customer['ftps_used'] == $customer['ftps_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['ftps_used']} -> {$customer['ftps_used_new']}</b></span></td>
+ </tr>
+ <if $settings['ticket']['enabled'] == '1'>
+ <tr>
+ <td>{$lng['customer']['tickets']}:</td>
+ <td><span <if $customer['tickets_used'] == $customer['tickets_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['tickets_used']} -> {$customer['tickets_used_new']}</b></span></td>
+ </tr>
+ </if>
+ <if $settings['aps']['aps_active'] == '1'>
+ <tr>
+ <td>{$lng['customer']['aps']}:</td>
+ <td><span <if $customer['aps_packages_used'] == $customer['aps_packages_used_new']>style="color:green"<else>style="color:red"</if>><b>{$customer['aps_packages_used']} -> {$customer['aps_packages_used_new']}</b></span></td>
+ </tr>
+ </if>
+ </table>
+ <br /><br />
+ </section>
</td>
</tr>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/admin/traffic
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/admin/traffic/index.tpl
^
|
@@ -0,0 +1,39 @@
+$header
+ <script type="text/javascript" src="templates/jquery.tablesorter.min.js"></script>
+ <script type="text/javascript">
+ $.tablesorter.addParser( {
+ id: 'filesize',
+ is: function(s) {
+ return s.match( new RegExp( /[0-9]+(\.[0-9]+)?\ (KiB|B|GiB|MiB|TiB)/ ) );
+ },
+ format: function(s) {
+ var suf = s.match( new RegExp( /(KiB|B|GiB|MiB|TiB)/) )[1];
+ var num = parseFloat( s.match( new RegExp( /^[0-9]+(\.[0-9]+)?/ ) )[0] );
+ switch( suf ) {
+ case 'B':
+ return num;
+ case 'KiB':
+ return num * 1024;
+ case 'MiB':
+ return num * 1024 * 1024;
+ case 'GiB':
+ return num * 1024 * 1024 * 1024;
+ case 'TiB':
+ return num * 1024 * 1024 * 1024 * 1024;
+ }
+ },
+ type: 'numeric'
+ });
+ </script>
+ <article>
+ <header>
+ <h2>
+ <img src="images/Froxlor/icons/traffic_big.png" alt="Traffic" /> Traffic
+ </h2>
+ </header>
+ {$stats_tables}
+ </article>
+ </div>
+ <br />
+ <br />
+$footer
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/admin/traffic/index_table.tpl
^
|
@@ -0,0 +1,65 @@
+
+ <table class="bradiusodd" id="stats{$overview['year']}">
+ <caption>{$lng['traffic']['trafficoverview']} {$overview['type']} {$overview['year']}</caption>
+ <thead>
+ <tr>
+ <th>{$overview['type']}</th>
+ <th>{$lng['traffic']['months']['jan']}</td>
+ <th>{$lng['traffic']['months']['feb']}</td>
+ <th>{$lng['traffic']['months']['mar']}</td>
+ <th>{$lng['traffic']['months']['apr']}</td>
+ <th>{$lng['traffic']['months']['may']}</td>
+ <th>{$lng['traffic']['months']['jun']}</td>
+ <th>{$lng['traffic']['months']['jul']}</td>
+ <th>{$lng['traffic']['months']['aug']}</td>
+ <th>{$lng['traffic']['months']['sep']}</td>
+ <th>{$lng['traffic']['months']['oct']}</td>
+ <th>{$lng['traffic']['months']['nov']}</td>
+ <th>{$lng['traffic']['months']['dec']}</td>
+ </tr>
+ </thead>
+ <tbody>
+ {$domain_list}
+ </tbody>
+ <tfoot>
+ {$total_list}
+ <tr>
+ <td colspan="13"> </td>
+ </tr>
+ </tfoot>
+ </table>
+ <script type="text/javascript">
+ var myTextExtraction = function(node)
+ {
+ // extract data from markup and return it
+ if(node.innerHTML != '-') {
+ return 1 + node.innerHTML.substr(0,node.innerHTML.length);
+ } else {
+ return '0 B';
+ }
+ }
+ $(document).ready(function()
+ {
+ $("#stats{$overview['year']}").tablesorter( {
+ textExtraction: myTextExtraction,
+ headers: {
+ 1: {sorter: 'filesize'},
+ 2: {sorter: 'filesize'},
+ 3: {sorter: 'filesize'},
+ 4: {sorter: 'filesize'},
+ 5: {sorter: 'filesize'},
+ 6: {sorter: 'filesize'},
+ 7: {sorter: 'filesize'},
+ 8: {sorter: 'filesize'},
+ 9: {sorter: 'filesize'},
+ 10: {sorter: 'filesize'},
+ 11: {sorter: 'filesize'},
+ 12: {sorter: 'filesize'}
+ },
+ });
+ }
+ );
+ </script>
+ <br />
+ <br />
+
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/admin/traffic/index_table_row.tpl
^
|
@@ -0,0 +1,15 @@
+ <tr>
+ <td>{$virtual_host['name']}<if $customerview == 1> <a href="$filename?s=$s&page=$page&action=su&id={$virtual_host['customerid']}">[{$lng['traffic']['details']}]</a></if></td>
+ <td style="text-align:right;">{$virtual_host['jan']}</td>
+ <td style="text-align:right;">{$virtual_host['feb']}</td>
+ <td style="text-align:right;">{$virtual_host['mar']}</td>
+ <td style="text-align:right;">{$virtual_host['apr']}</td>
+ <td style="text-align:right;">{$virtual_host['may']}</td>
+ <td style="text-align:right;">{$virtual_host['jun']}</td>
+ <td style="text-align:right;">{$virtual_host['jul']}</td>
+ <td style="text-align:right;">{$virtual_host['aug']}</td>
+ <td style="text-align:right;">{$virtual_host['sep']}</td>
+ <td style="text-align:right;">{$virtual_host['oct']}</td>
+ <td style="text-align:right;">{$virtual_host['nov']}</td>
+ <td style="text-align:right;">{$virtual_host['dec']}</td>
+ </tr>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/customer/index/index.tpl
^
|
@@ -22,60 +22,60 @@
<td>$domains</td>
</tr>
<tr>
- <td>{$lng['customer']['subdomains']}:</td>
- <td>{$userinfo['subdomains_used']} ({$userinfo['subdomains']})</td>
+ <td>{$lng['customer']['subdomains']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['subdomains_used']}/{$userinfo['subdomains']}</td>
</tr>
<tr>
- <td>{$lng['customer']['diskspace']}:</td>
- <td>{$userinfo['diskspace_used']} ({$userinfo['diskspace']})</td>
+ <td>{$lng['customer']['diskspace']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['diskspace_used']}/{$userinfo['diskspace']}</td>
</tr>
<tr>
- <td>{$lng['customer']['traffic']} ($month):</td>
- <td>{$userinfo['traffic_used']} ({$userinfo['traffic']})</td>
+ <td>{$lng['customer']['traffic']} ($month, {$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['traffic_used']}/{$userinfo['traffic']}</td>
</tr>
<tr>
- <td>{$lng['customer']['emails']}:</td>
- <td>{$userinfo['emails_used']} ({$userinfo['emails']})</td>
+ <td>{$lng['customer']['emails']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['emails_used']}/{$userinfo['emails']}</td>
</tr>
<tr>
- <td>{$lng['customer']['accounts']}:</td>
- <td>{$userinfo['email_accounts_used']} ({$userinfo['email_accounts']})</td>
+ <td>{$lng['customer']['accounts']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['email_accounts_used']}/{$userinfo['email_accounts']}</td>
</tr>
<tr>
- <td>{$lng['customer']['forwarders']}:</td>
- <td>{$userinfo['email_forwarders_used']} ({$userinfo['email_forwarders']})</td>
+ <td>{$lng['customer']['forwarders']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['email_forwarders_used']}/{$userinfo['email_forwarders']}</td>
</tr>
<if $settings['system']['mail_quota_enabled'] == 1>
<tr>
- <td>{$lng['customer']['email_quota']} ({$lng['panel']['megabyte']}):</td>
- <td>{$userinfo['email_quota_used']} ({$userinfo['email_quota']})</td>
+ <td>{$lng['customer']['email_quota']} ({$lng['panel']['megabyte']}, {$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['email_quota_used']}/{$userinfo['email_quota']}</td>
</tr>
</if>
</tr>
<if $settings['autoresponder']['autoresponder_active'] == 1>
<tr>
- <td>{$lng['customer']['autoresponder']}:</td>
- <td>{$userinfo['email_autoresponder_used']} ({$userinfo['email_autoresponder']})</td>
+ <td>{$lng['customer']['autoresponder']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['email_autoresponder_used']}/{$userinfo['email_autoresponder']}</td>
</tr>
</if>
<tr>
- <td>{$lng['customer']['mysqls']}:</td>
- <td>{$userinfo['mysqls_used']} ({$userinfo['mysqls']})</td>
+ <td>{$lng['customer']['mysqls']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['mysqls_used']}/{$userinfo['mysqls']}</td>
</tr>
<tr>
- <td>{$lng['customer']['ftps']}:</td>
- <td>{$userinfo['ftps_used']} ({$userinfo['ftps']})</td>
+ <td>{$lng['customer']['ftps']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['ftps_used']}/{$userinfo['ftps']}</td>
</tr>
<if (int)$settings['aps']['aps_active'] == 1>
<tr>
- <td>{$lng['aps']['numberofapspackages']}:</td>
- <td>{$userinfo['aps_packages_used']} ({$userinfo['aps_packages']})</td>
+ <td>{$lng['aps']['numberofapspackages']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['aps_packages_used']}/{$userinfo['aps_packages']}</td>
</tr>
</if>
<if $settings['ticket']['enabled'] == 1 >
<tr>
- <td>{$lng['customer']['tickets']}:</td>
- <td>{$userinfo['tickets_used']} ({$userinfo['tickets']})</td>
+ <td>{$lng['customer']['tickets']} ({$lng['customer']['usedmax']}):</td>
+ <td>{$userinfo['tickets_used']}/{$userinfo['tickets']}</td>
</tr>
</if>
<tr>
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/froxlor.css
^
|
@@ -735,3 +735,8 @@
label.nobr {
display: inline;
}
+
+caption {
+ font-weight: bold;
+ margin-bottom: 0.2em;
+}
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/Froxlor/misc/configurehint.tpl
^
|
@@ -30,7 +30,7 @@
</div>
<footer>
<span>
- Froxlor © 2009-2010 by <a href="http://www.froxlor.org/" rel="external">the Froxlor Team</a>
+ Froxlor © 2009-2011 by <a href="http://www.froxlor.org/" rel="external">the Froxlor Team</a>
</span>
</footer>
</body>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/jquery.tablesorter.min.js
^
|
@@ -0,0 +1,4 @@
+
+(function($){$.extend({tablesorter:new
+function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,rows,-1,i);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,rows,rowIndex,cellIndex){var l=parsers.length,node=false,nodeValue=false,keepLooking=true;while(nodeValue==''&&keepLooking){rowIndex++;if(rows[rowIndex]){node=getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex);nodeValue=trimAndGetNodeText(table.config,node);if(table.config.debug){log('Checking if value was empty on row:'+rowIndex);}}else{keepLooking=false;}}for(var i=1;i<l;i++){if(parsers[i].is(nodeValue,table,node)){return parsers[i];}}return parsers[0];}function getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex){return rows[rowIndex].cells[cellIndex];}function trimAndGetNodeText(config,node){return $.trim(getElementText(config,node));}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=$(table.tBodies[0].rows[i]),cols=[];if(c.hasClass(table.config.cssChildRow)){cache.row[cache.row.length-1]=cache.row[cache.row.length-1].add(c);continue;}cache.row.push(c);for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c[0].cells[j]),table,c[0].cells[j]));}cols.push(cache.normalized.length);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){var text="";if(!node)return"";if(!config.supportsTextContent)config.supportsTextContent=node.textContent||false;if(config.textExtraction=="simple"){if(config.supportsTextContent){text=node.textContent;}else{if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){text=node.childNodes[0].innerHTML;}else{text=node.innerHTML;}}}else{if(typeof(config.textExtraction)=="function"){text=config.textExtraction(node);}else{text=$(node).text();}}return text;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){var pos=n[i][checkCell];rows.push(r[pos]);if(!table.config.appender){var l=r[pos].length;for(var j=0;j<l;j++){tableBody[0].appendChild(r[pos][j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false;var header_index=computeTableHeaderCellIndexes(table);$tableHeaders=$(table.config.selectorHeaders,table).each(function(index){this.column=header_index[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=formatSortingOrder(table.config.sortInitialOrder);this.count=this.order;if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(checkHeaderOptionsSortingLocked(table,index))this.order=this.lockedOrder=checkHeaderOptionsSortingLocked(table,index);if(!this.sortDisabled){var $th=$(this).addClass(table.config.cssHeader);if(table.config.onRenderHeader)table.config.onRenderHeader.apply($th);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function computeTableHeaderCellIndexes(t){var matrix=[];var lookup={};var thead=t.getElementsByTagName('THEAD')[0];var trs=thead.getElementsByTagName('TR');for(var i=0;i<trs.length;i++){var cells=trs[i].cells;for(var j=0;j<cells.length;j++){var c=cells[j];var rowIndex=c.parentNode.rowIndex;var cellId=rowIndex+"-"+c.cellIndex;var rowSpan=c.rowSpan||1;var colSpan=c.colSpan||1
+var firstAvailCol;if(typeof(matrix[rowIndex])=="undefined"){matrix[rowIndex]=[];}for(var k=0;k<matrix[rowIndex].length+1;k++){if(typeof(matrix[rowIndex][k])=="undefined"){firstAvailCol=k;break;}}lookup[cellId]=firstAvailCol;for(var k=rowIndex;k<rowIndex+rowSpan;k++){if(typeof(matrix[k])=="undefined"){matrix[k]=[];}var matrixrow=matrix[k];for(var l=firstAvailCol;l<firstAvailCol+colSpan;l++){matrixrow[l]="x";}}}}return lookup;}function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){return(v.toLowerCase()=="desc")?1:0;}else{return(v==1)?1:0;}}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(table.config.parsers[c].type=="text")?((order==0)?makeSortFunction("text","asc",c):makeSortFunction("text","desc",c)):((order==0)?makeSortFunction("numeric","asc",c):makeSortFunction("numeric","desc",c));var e="e"+i;dynamicExp+="var "+e+" = "+s;dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";if(table.config.debug){benchmark("Evaling expression:"+dynamicExp,new Date());}eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function makeSortFunction(type,direction,index){var a="a["+index+"]",b="b["+index+"]";if(type=='text'&&direction=='asc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+a+" < "+b+") ? -1 : 1 )));";}else if(type=='text'&&direction=='desc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+b+" < "+a+") ? -1 : 1 )));";}else if(type=='numeric'&&direction=='asc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+a+" - "+b+"));";}else if(type=='numeric'&&direction=='desc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+b+" - "+a+"));";}};function makeSortText(i){return"((a["+i+"] < b["+i+"]) ? -1 : ((a["+i+"] > b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){var me=this;setTimeout(function(){me.config.parsers=buildParserCache(me,$headers);cache=buildCache(me);},1);}).bind("updateCell",function(e,cell){var config=this.config;var pos=[(cell.parentNode.rowIndex-1),cell.cellIndex];cache.normalized[pos[0]][pos[1]]=config.parsers[pos[1]].format(getElementText(config,cell),cell);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){return/^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g,'')));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLocaleLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[£$€?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[£$€]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}var $tr,row=-1,odd;$("tr:visible",table.tBodies[0]).each(function(i){$tr=$(this);if(!$tr.hasClass(table.config.cssChildRow))row++;odd=(row%2==0);$tr.removeClass(table.config.widgetZebra.css[odd?0:1]).addClass(table.config.widgetZebra.css[odd?1:0])});if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
\ No newline at end of file
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_lenny/exim4/etc_exim4_conf.d_router_180_froxlor-config
^
|
@@ -9,4 +9,5 @@
driver = redirect
domains = +froxlor_domain
data = ${lookup mysql {FROXLOR_MAILUSER}{$value}fail}
- directory_transport = maildir_froxlor
\ No newline at end of file
+ directory_transport = maildir_froxlor
+ no_more
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/apache2
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/apache2/etc_apache2_mods-enabled_fastcgi.conf
^
|
@@ -0,0 +1,11 @@
+<IfModule mod_fastcgi.c>
+ FastCgiWrapper /usr/lib/apache2/suexec
+ FastCgiIpcDir /var/run/apache2/
+
+ <Location "/fastcgiphp">
+ Order Deny,Allow
+ Deny from All
+ # Prevent accessing this path directly
+ Allow from env=REDIRECT_STATUS
+ </Location>
+</IfModule>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/courier
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/courier/etc_courier_authdaemonrc
^
|
@@ -0,0 +1,68 @@
+##VERSION: $Id: authdaemonrc.in,v 1.8 2001/10/07 02:16:22 mrsam Exp $
+#
+# Copyright 2000-2001 Double Precision, Inc. See COPYING for
+# distribution information.
+#
+# authdaemonrc created from authdaemonrc.dist by sysconftool
+#
+# Do not alter lines that begin with ##, they are used when upgrading
+# this configuration.
+#
+# This file configures authdaemond, the resident authentication daemon.
+#
+# Comments in this file are ignored. Although this file is intended to
+# be sourced as a shell script, authdaemond parses it manually, so
+# the acceptable syntax is a bit limited. Multiline variable contents,
+# with the \ continuation character, are not allowed. Everything must
+# fit on one line. Do not use any additional whitespace for indentation,
+# or anything else.
+
+##NAME: authmodulelist:0
+#
+# The authentication modules that are linked into authdaemond. The
+# default list is installed. You may selectively disable modules simply
+# by removing them from the following list. The available modules you
+# can use are: authcustom authcram authuserdb authldap authmysql authpam
+
+authmodulelist="authmysql"
+
+##NAME: authmodulelistorig:1
+#
+# This setting is used by Courier's webadmin module, and should be left
+# alone
+
+authmodulelistorig="authcustom authcram authuserdb authldap authmysql authpam"
+
+##NAME: daemons:0
+#
+# The number of daemon processes that are started. authdaemon is typically
+# installed where authentication modules are relatively expensive: such
+# as authldap, or authmysql, so it's better to have a number of them running.
+# PLEASE NOTE: Some platforms may experience a problem if there's more than
+# one daemon. Specifically, SystemV derived platforms that use TLI with
+# socket emulation. I'm suspicious of TLI's ability to handle multiple
+# processes accepting connections on the same filesystem domain socket.
+#
+# You may need to increase daemons if as your system load increases. Symptoms
+# include sporadic authentication failures. If you start getting
+# authentication failures, increase daemons. However, the default of 5
+# SHOULD be sufficient. Bumping up daemon count is only a short-term
+# solution. The permanent solution is to add more resources: RAM, faster
+# disks, faster CPUs...
+
+daemons=5
+
+##NAME: version:0
+#
+# When you have multiple versions of authdaemond.* installed, authdaemond
+# just picks the first one it finds. Set "version" to override that.
+# For example: version=authdaemond.plain
+
+version=""
+
+##NAME: authdaemonvar:0
+#
+# authdaemonvar is here, but is not used directly by authdaemond. It's
+# used by various configuration and build scripts, so don't touch it!
+
+authdaemonvar=/var/run/courier/authdaemon
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/courier/etc_courier_authmysqlrc
^
|
@@ -0,0 +1,14 @@
+MYSQL_SERVER <SQL_HOST>
+MYSQL_USERNAME <SQL_UNPRIVILEGED_USER>
+MYSQL_PASSWORD <SQL_UNPRIVILEGED_PASSWORD>
+MYSQL_PORT 3306
+MYSQL_DATABASE <SQL_DB>
+MYSQL_USER_TABLE mail_users
+MYSQL_CRYPT_PWFIELD password_enc
+MYSQL_UID_FIELD uid
+MYSQL_GID_FIELD gid
+MYSQL_LOGIN_FIELD username
+MYSQL_HOME_FIELD homedir
+MYSQL_MAILDIR_FIELD maildir
+MYSQL_QUOTA_FIELD (quota*1024*1024)
+MYSQL_AUXOPTIONS_FIELD CONCAT("allowimap=",imap,",allowpop3=",pop3)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/cron
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/cron/etc_cron.d_froxlor
^
|
@@ -0,0 +1,8 @@
+#
+# Set PATH, otherwise restart-scripts won't find start-stop-daemon
+#
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+#
+# Regular cron jobs for the froxlor package
+#
+*/5 * * * * root /usr/bin/php5 -q <BASE_PATH>scripts/froxlor_master_cronjob.php
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/dkim
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/dkim/dkim-filter.conf
^
|
@@ -0,0 +1,11 @@
+#
+# !!! DO NOT REPLACE THE ORIGINAL CONFIG WITH THIS FILE !!!
+#
+# Instead, just set the shown values in the file to the
+# given values ;-)
+#
+
+Syslog yes
+Domain /etc/postfix/dkim/domains
+KeyList /etc/postfix/dkim/dkim-keys.conf
+Socket inet:8891@localhost
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/dovecot
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/dovecot/etc_dovecot_dovecot-sql.conf
^
|
@@ -0,0 +1,5 @@
+driver = mysql
+connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
+default_pass_scheme = CRYPT
+password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('maildir:storage=', (quota*1024)) as userdb_quota FROM mail_users WHERE (username = '%u' OR email = '%u') AND ((imap = 1 AND '%Ls' = 'imap') OR (pop3 = 1 AND '%Ls' = 'pop3') OR '%Ls' = 'smtp')
+user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE (username = '%u' OR email = '%u')
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/dovecot/etc_dovecot_dovecot.conf
^
|
@@ -0,0 +1,71 @@
+protocols = imap pop3 <SSLPROTOCOLS>
+listen = *
+mail_access_groups = vmail
+mail_debug = no
+## allow Plaintext Logins from foreign IP if the Connection doesn't use TLS
+disable_plaintext_auth = no
+
+### SSL Settings
+### After setting this options, set disable_plaintext_auth to yes (see above)
+### and add imaps pop3s to the protocols
+#ssl_cert_file = /etc/ssl/server/<SERVERNAME>.pem
+#ssl_key_file = /etc/ssl/server/<SERVERNAME>.key
+## This is an example with CACerts class3 cert!
+#ssl_ca_file = /path/to/cacert.class3.crt
+#ssl_cipher_list = ALL:!LOW:!SSLv2
+
+protocol imap {
+ mail_plugins = quota imap_quota
+}
+
+protocol pop3 {
+ # leave this uncommented if you are migrating from Courier also see Migration from Courier
+ pop3_uidl_format = UID%u-%v
+ mail_plugins = quota
+
+}
+protocol lda {
+ # postmaster is the one in charge of the mail system. MUST be set to a valid address!
+ postmaster_address = <postmaster-address>
+ auth_socket_path = /var/run/dovecot/auth-master
+ mail_plugins = quota
+ sendmail_path = /usr/sbin/sendmail
+}
+
+auth default {
+ mechanisms = plain login
+ passdb sql {
+ args = /etc/dovecot/dovecot-sql.conf
+ }
+
+ userdb prefetch {
+ }
+
+ userdb sql {
+ args = /etc/dovecot/dovecot-sql.conf
+ }
+
+ user = vmail
+ socket listen {
+ # Postfix uses the client socket for SMTP Auth
+ client {
+ # Assuming the default Postfix $queue_directory setting
+ path = /var/spool/postfix/private/auth
+ mode = 0660
+ # Assuming the default Postfix user and group
+ user = postfix
+ group = postfix
+ }
+ # Note that we're setting a master socket. SMTP AUTH for Postfix and Exim uses client sockets.
+ master {
+ path = /var/run/dovecot/auth-master
+ mode = 0660
+ user = vmail
+ group = vmail
+ }
+
+ }
+}
+plugin {
+ quota = maildir
+}
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/exim4
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/exim4/etc_exim4_conf.d_acl_30_exim4-config_check_rcpt.rul
^
|
@@ -0,0 +1,125 @@
+### acl/30_exim4-config_check_rcpt
+#################################
+
+acl_check_rcpt:
+ accept
+ hosts = :
+
+ warn
+ hosts = +relay_from_hosts
+ control = submission/sender_retain
+
+ .ifdef CHECK_RCPT_LOCAL_LOCALPARTS
+ deny
+ domains = +local_domains:+froxlor_domain
+ local_parts = CHECK_RCPT_LOCAL_LOCALPARTS
+ message = restricted characters in address
+ .endif
+
+ .ifdef CHECK_RCPT_REMOTE_LOCALPARTS
+ deny
+ domains = !+local_domains
+ local_parts = CHECK_RCPT_REMOTE_LOCALPARTS
+ message = restricted characters in address
+ .endif
+
+ accept
+ .ifndef CHECK_RCPT_POSTMASTER
+ local_parts = postmaster
+ .else
+ local_parts = CHECK_RCPT_POSTMASTER
+ .endif
+ domains = +local_domains:+froxlor_domain
+
+ deny
+ message = sender envelope address $sender_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
+ !acl = acl_local_deny_exceptions
+ senders = ${if exists{CONFDIR/local_sender_blacklist}\
+ {CONFDIR/local_sender_blacklist}\
+ {}}
+
+ deny
+ message = sender IP address $sender_host_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
+ !acl = acl_local_deny_exceptions
+ hosts = ${if exists{CONFDIR/local_host_blacklist}\
+ {CONFDIR/local_host_blacklist}\
+ {}}
+
+ .ifdef CHECK_RCPT_VERIFY_SENDER
+ deny
+ message = Sender verification failed
+ !acl = acl_local_deny_exceptions
+ !verify = sender
+ .endif
+
+ deny
+ !acl = acl_local_deny_exceptions
+ senders = ${if exists{CONFDIR/local_sender_callout}\
+ {CONFDIR/local_sender_callout}\
+ {}}
+ !verify = sender/callout
+
+ deny
+ !acl = acl_local_deny_exceptions
+ recipients = ${if exists{CONFDIR/local_rcpt_callout}\
+ {CONFDIR/local_rcpt_callout}\
+ {}}
+ !verify = recipient/callout
+
+ .ifdef CHECK_RCPT_REVERSE_DNS
+ warn
+ message = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address (${if eq{$host_lookup_failed}{1}{failed}{deferred}})
+ condition = ${if and{{def:sender_host_address}{!def:sender_host_name}}\
+ {yes}{no}}
+ .endif
+
+ .ifdef CHECK_RCPT_IP_DNSBLS
+ warn
+ message = X-Warning: $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
+ log_message = $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
+ dnslists = CHECK_RCPT_IP_DNSBLS
+ .endif
+
+ .ifdef CHECK_RCPT_DOMAIN_DNSBLS
+ warn
+ message = X-Warning: $sender_address_domain is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
+ log_message = $sender_address_domain is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
+ !senders = ${if exists{CONFDIR/local_domain_dnsbl_whitelist}\
+ {CONFDIR/local_domain_dnsbl_whitelist}\
+ {}}
+ dnslists = CHECK_RCPT_DOMAIN_DNSBLS/$sender_address_domain
+ .endif
+
+ .ifdef CHECK_RCPT_LOCAL_ACL_FILE
+ .include CHECK_RCPT_LOCAL_ACL_FILE
+ .endif
+
+ accept
+ domains = +local_domains:+froxlor_domain
+ endpass
+ message = unknown user
+ verify = recipient
+
+ accept
+ domains = +relay_to_domains
+ endpass
+ .ifdef CHECK_RCPT_GIVE_UNKNOWN_USER
+ message = ${if eq{$acl_verify_message}{Unrouteable address}{unknown user}{$acl_verify_message}}
+ .else
+ message = unrouteable address
+ .endif
+ verify = recipient
+
+ ############
+ # If control reaches this point, the domain is neither in +local_domains
+ # nor in +relay_to_domains.
+ ############
+
+ accept
+ hosts = +relay_from_hosts
+
+ accept
+ authenticated = *
+
+ deny
+ message = relay not permitted
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/exim4/etc_exim4_conf.d_auth_30_froxlor-config
^
|
@@ -0,0 +1,30 @@
+### auth/30_froxlor-config
+#################################
+
+plain_server:
+ driver = plaintext
+ public_name = PLAIN
+ server_condition = "${if and { \
+ {!eq{$2}{}} \
+ {!eq{$3}{}} \
+ {crypteq{$3}{${lookup mysql{FROXLOR_AUTH_PLAIN}{$value}fail}}} \
+ } {yes}{no}}"
+ server_set_id = $2
+ server_prompts = :
+# .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
+# server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
+# .endif
+
+login_server:
+ driver = plaintext
+ public_name = LOGIN
+ server_prompts = "Username:: : Password::"
+ server_condition = "${if and { \
+ {!eq{$1}{}} \
+ {!eq{$2}{}} \
+ {crypteq{$2}{${lookup mysql{FROXLOR_AUTH_LOGIN}{$value}fail}}} \
+ } {yes}{no}}"
+ server_set_id = $1
+# .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
+# server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
+# .endif
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/exim4/etc_exim4_conf.d_main_10_froxlor-config_options
^
|
@@ -0,0 +1,20 @@
+hide mysql_servers = <SQL_HOST>/<SQL_DB>/<SQL_UNPRIVILEGED_USER>/<SQL_UNPRIVILEGED_PASSWORD>
+
+FROXLOR_LOCAL_DOMAIN = SELECT domain FROM panel_domains WHERE domain = '${quote_mysql:$domain}' AND isemaildomain = '1'
+
+FROXLOR_MAILALIAS = SELECT REPLACE(destination,' ',',') FROM mail_virtual WHERE \
+ (( email = '${quote_mysql:$local_part}@${quote_mysql:$domain}' ) \
+ OR ( email = '@${quote_mysql:$domain}' AND iscatchall > 0 )) \
+ AND destination <> '' AND destination <> ' ' ORDER BY iscatchall ASC LIMIT 1
+
+FROXLOR_MAILUSER = SELECT CONCAT(homedir,maildir) FROM mail_users WHERE \
+ email = '${quote_mysql:$local_part}@${quote_mysql:$domain}' AND postfix = 'y'
+
+FROXLOR_PARENT_DOMAIN = SELECT parent.domain FROM `panel_domains` AS parent INNER JOIN panel_domains AS alias \
+ ON alias.domain = '${quote_mysql:$domain}' AND parent.id = alias.aliasdomain
+
+FROXLOR_AUTH_PLAIN = SELECT password_enc FROM mail_users WHERE username = '${quote_mysql:$2}'
+
+FROXLOR_AUTH_LOGIN = SELECT password_enc FROM mail_users WHERE username = '${quote_mysql:$1}'
+
+domainlist froxlor_domain = mysql;FROXLOR_LOCAL_DOMAIN
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/exim4/etc_exim4_conf.d_router_180_froxlor-config
^
|
@@ -0,0 +1,13 @@
+froxlor_mailalias:
+ debug_print = "R: froxlor_mailalias for $local_part@$domain"
+ driver = redirect
+ domains = +froxlor_domain
+ data = ${lookup mysql {FROXLOR_MAILALIAS}{$value}fail}
+
+froxlor_mailuser:
+ debug_print = "R: froxlor_mailuser for $local_part@$domain"
+ driver = redirect
+ domains = +froxlor_domain
+ data = ${lookup mysql {FROXLOR_MAILUSER}{$value}fail}
+ directory_transport = maildir_froxlor
+ no_more
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/exim4/etc_exim4_conf.d_transport_30_froxlor-config
^
|
@@ -0,0 +1,13 @@
+maildir_froxlor:
+ debug_print = "T: maildir_froxlor for $local_part@$domain"
+ driver = appendfile
+ create_directory
+ delivery_date_add
+ envelope_to_add
+ return_path_add
+ maildir_format
+ directory_mode = 0770
+ mode = 0660
+ mode_fail_narrower = false
+ user = 2000
+ group = 2000
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/libnss
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/libnss/etc_nss-mysql-root.conf
^
|
@@ -0,0 +1,16 @@
+conf.version = 2;
+shadow.host = inet:<SQL_HOST>:3306;
+shadow.database = <SQL_DB>;
+shadow.db_user = <SQL_UNPRIVILEGED_USER>;
+shadow.db_password = <SQL_UNPRIVILEGED_PASSWORD>;
+shadow.table = ftp_users u;
+shadow.where_clause = ;
+shadow.userid_column = u.customerid;
+shadow.user_column = u.username;
+shadow.password_column = u.password;
+shadow.lastchange_column = FLOOR(UNIX_TIMESTAMP()/86400-1);
+shadow.min_column = 0;
+shadow.max_column = 99999;
+shadow.warn_column = 7;
+shadow.inact_column = -1;
+shadow.expire_column = -1;
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/libnss/etc_nss-mysql.conf
^
|
@@ -0,0 +1,24 @@
+conf.version = 2;
+users.host = inet:<SQL_HOST>:3306;
+users.database = <SQL_DB>;
+users.db_user = <SQL_UNPRIVILEGED_USER>;
+users.db_password = <SQL_UNPRIVILEGED_PASSWORD>;
+users.table = ftp_users u;
+users.where_clause = u.login_enabled = 'Y';
+users.user_column = u.username;
+users.password_column = u.password;
+users.userid_column = u.customerid;
+users.uid_column = u.uid;
+users.gid_column = u.gid;
+users.realname_column = u.username;
+users.homedir_column = u.homedir;
+users.shell_column = u.shell;
+groups.group_info_table = ftp_groups g;
+groups.where_clause = ;
+groups.group_name_column = g.groupname;
+groups.groupid_column = g.id;
+groups.gid_column = g.gid;
+groups.password_column = "x";
+groups.members_table = ftp_groups ug;
+groups.member_userid_column = ug.customerid;
+groups.member_groupid_column = ug.id;
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/libnss/etc_nsswitch.conf
^
|
@@ -0,0 +1,20 @@
+# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
+# You should place mysql at the end, so that it is queried after the other mechanisams
+#
+passwd: compat mysql
+group: compat mysql
+shadow: compat mysql
+
+hosts: files dns
+networks: files dns
+
+services: db files
+protocols: db files
+rpc: db files
+ethers: db files
+netmasks: files
+netgroup: files
+bootparams: files
+
+automount: files
+aliases: files
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/lighttpd
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/lighttpd/etc_lighttpd.conf
^
|
@@ -0,0 +1,57 @@
+###############################################################################
+# Default lighttpd.conf for Froxlor.
+###############################################################################
+var.basedir = "/var/www"
+var.logdir = "/var/log/lighttpd"
+var.statedir = "/var/lib/lighttpd"
+
+server.modules = (
+ "mod_rewrite",
+ "mod_redirect",
+ "mod_alias",
+ "mod_access",
+ "mod_auth",
+ "mod_fastcgi",
+ "mod_cgi",
+ "mod_accesslog"
+)
+
+server.username = "www-data"
+server.groupname = "www-data"
+server.document-root = var.basedir
+server.pid-file = "/var/run/lighttpd.pid"
+accesslog.filename = var.logdir + "/access.log"
+server.errorlog = var.logdir + "/error.log"
+
+server.indexfiles = ("index.php", "index.html",
+ "index.htm", "default.htm")
+
+server.name = "<SERVERNAME>"
+server.port = 80
+server.bind = "<SERVERIP>"
+url.access-deny = ("~", ".inc")
+
+fastcgi.server = (
+".php" => (
+ "localhost" => (
+ "socket" => "/tmp/lighttpd-fcgi-sock-lighttpd",
+ "broken-scriptfilename" => "enable",
+ "bin-path" => "/usr/bin/php5-cgi",
+ "min-procs" => 1,
+ "max-procs" => 1,
+ "max-load-per-proc" => 4,
+ "idle-timeout" => 60,
+ "bin-environment" => (
+ "UID" => "www-data",
+ "GID" => "www-data",
+ "PHP_FCGI_CHILDREN" => "0",
+ "PHP_FCGI_MAX_REQUESTS" => "10000"
+ ),
+ "bin-copy-environment" => ( "" )
+ )
+ )
+)
+
+#### external configuration files
+## mimetype mapping
+include_shell "/usr/share/lighttpd/create-mime.assign.pl"
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/nginx
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/nginx/etc_init.d_php-fcgi
^
|
@@ -0,0 +1,41 @@
+#!/bin/bash
+BIND=127.0.0.1:8888
+USER=www-data
+PHP_FCGI_CHILDREN=15
+PHP_FCGI_MAX_REQUESTS=1000
+
+PHP_CGI=/usr/bin/php-cgi
+PHP_CGI_NAME=`basename $PHP_CGI`
+PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
+RETVAL=0
+
+start() {
+ echo -n "Starting PHP FastCGI: "
+ start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
+ RETVAL=$?
+ echo "$PHP_CGI_NAME."
+}
+stop() {
+ echo -n "Stopping PHP FastCGI: "
+ killall -q -w -u $USER $PHP_CGI
+ RETVAL=$?
+ echo "$PHP_CGI_NAME."
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ stop
+ start
+ ;;
+ *)
+ echo "Usage: php-fastcgi {start|stop|restart}"
+ exit 1
+ ;;
+esac
+exit $RETVAL
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/nginx/etc_nginx_fastcgi.conf
^
|
@@ -0,0 +1,15 @@
+fastcgi_param GATEWAY_INTERFACE CGI/1.1;
+fastcgi_param SERVER_SOFTWARE nginx;
+fastcgi_param QUERY_STRING $query_string;
+fastcgi_param REQUEST_METHOD $request_method;
+fastcgi_param CONTENT_TYPE $content_type;
+fastcgi_param CONTENT_LENGTH $content_length;
+fastcgi_param REQUEST_URI $request_uri;
+fastcgi_param DOCUMENT_URI $document_uri;
+fastcgi_param DOCUMENT_ROOT $document_root;
+fastcgi_param SERVER_PROTOCOL $server_protocol;
+fastcgi_param REMOTE_ADDR $remote_addr;
+fastcgi_param REMOTE_PORT $remote_port;
+fastcgi_param SERVER_ADDR $server_addr;
+fastcgi_param SERVER_PORT $server_port;
+fastcgi_param SERVER_NAME $server_name;
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/nginx/etc_nginx_nginx.conf
^
|
@@ -0,0 +1,25 @@
+user www-data;
+worker_processes 4;
+
+pid /var/run/nginx.pid;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ access_log /var/log/nginx/access.log;
+
+ sendfile on;
+ tcp_nodelay on;
+
+ keepalive_timeout 65;
+
+ gzip on;
+
+ include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/sites-enabled/*;
+}
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_courier
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_courier/etc_postfix_main.cf
^
|
@@ -0,0 +1,80 @@
+## General Postfix configuration
+# should be the default domain from your provider eg. "server100.provider.tld"
+mydomain = <SERVERNAME>
+
+# should be different from $mydomain eg. "mail.$mydomain"
+myhostname = <SERVERNAME>
+
+mydestination = $myhostname,
+ $mydomain,
+ localhost.$myhostname,
+ localhost.$mydomain,
+ localhost
+mynetworks = 127.0.0.0/8
+inet_interfaces = all
+append_dot_mydomain = no
+biff = no
+
+# Postfix performance settings
+default_destination_concurrency_limit = 20
+local_destination_concurrency_limit = 2
+
+# SMTPD Settings
+smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
+smtpd_helo_required = yes
+smtpd_recipient_restrictions = permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unauth_destination,
+ reject_unauth_pipelining,
+ reject_non_fqdn_recipient
+smtpd_sender_restrictions = permit_mynetworks,
+ reject_sender_login_mismatch,
+ permit_sasl_authenticated,
+ reject_unknown_helo_hostname,
+ reject_unknown_recipient_domain,
+ reject_unknown_sender_domain
+smtpd_client_restrictions = permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unknown_client_hostname
+# Maximum size of Message in bytes (50MB)
+message_size_limit = 52428800
+
+## SASL Auth Settings
+smtpd_sasl_auth_enable = yes
+smtpd_sasl_local_domain = $myhostname
+broken_sasl_auth_clients = yes
+
+# Virtual delivery settings
+virtual_mailbox_base = <VIRTUAL_MAILBOX_BASE>
+virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
+virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
+virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
+smtpd_sender_login_maps = mysql:/etc/postfix/mysql-virtual_sender_permissions.cf
+virtual_uid_maps = static:<VIRTUAL_UID_MAPS>
+virtual_gid_maps = static:<VIRTUAL_GID_MAPS>
+
+# Local delivery settings
+local_transport = local
+alias_maps = $alias_database
+
+# Default Mailbox size, is set to 0 which means unlimited!
+mailbox_size_limit = 0
+virtual_mailbox_limit = 0
+
+### TLS settings
+###
+## TLS for outgoing mails from the server to another server
+#smtp_tls_security_level = may
+#smtp_tls_note_starttls_offer = yes
+## TLS for email client
+#smtpd_tls_security_level = may
+#smtpd_tls_cert_file = /etc/ssl/server/<SERVERNAME>.pem
+#smtpd_tls_key_file = $smtpd_tls_cert_file
+#smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
+#smtpd_tls_loglevel = 1
+#smtpd_tls_received_header = yes
+
+debugger_command =
+ PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
+ ddd $daemon_directory/$process_name $process_id & sleep 5
+
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_courier/etc_postfix_mysql-virtual_alias_maps.cf
^
|
@@ -0,0 +1,8 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+table = mail_virtual
+select_field = destination
+where_field = email
+additional_conditions = and TRIM(destination) <> ''
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_courier/etc_postfix_mysql-virtual_mailbox_domains.cf
^
|
@@ -0,0 +1,8 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+table = panel_domains
+select_field = domain
+where_field = domain
+additional_conditions = and isemaildomain = '1'
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_courier/etc_postfix_mysql-virtual_mailbox_maps.cf
^
|
@@ -0,0 +1,7 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+table = mail_users
+select_field = maildir
+where_field = email
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_courier/etc_postfix_mysql-virtual_sender_permissions.cf
^
|
@@ -0,0 +1,5 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+query = select distinct username from mail_users where email in ((select mail_virtual.email_full from mail_virtual where mail_virtual.email = '%s' union select mail_virtual.destination from mail_virtual where mail_virtual.email = '%s'));
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_courier/etc_postfix_sasl_smtpd.conf
^
|
@@ -0,0 +1,11 @@
+pwcheck_method: auxprop
+auxprop_plugin: sql
+allowanonymouslogin: no
+allowplaintext: yes
+mech_list: plain login cram-md5 digest-md5
+sql_engine: mysql
+sql_hostnames: <SQL_HOST>
+sql_user: <SQL_UNPRIVILEGED_USER>
+sql_passwd: <SQL_UNPRIVILEGED_PASSWORD>
+sql_database: <SQL_DB>
+sql_select: SELECT password FROM mail_users WHERE username='%u@%r' OR email='%u@%r'
\ No newline at end of file
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_dovecot
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_dovecot/etc_postfix_main.cf
^
|
@@ -0,0 +1,86 @@
+## General Postfix configuration
+# should be the default domain from your provider eg. "server100.provider.tld"
+mydomain = <SERVERNAME>
+
+# should be different from $mydomain eg. "mail.$mydomain"
+myhostname = <SERVERNAME>
+
+mydestination = $myhostname,
+ $mydomain,
+ localhost.$myhostname,
+ localhost.$mydomain,
+ localhost
+mynetworks = 127.0.0.0/8
+inet_interfaces = all
+append_dot_mydomain = no
+biff = no
+
+# Postfix performance settings
+default_destination_concurrency_limit = 20
+local_destination_concurrency_limit = 2
+
+# SMTPD Settings
+smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
+smtpd_helo_required = yes
+smtpd_recipient_restrictions = permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unauth_destination,
+ reject_unauth_pipelining,
+ reject_non_fqdn_recipient
+smtpd_sender_restrictions = permit_mynetworks,
+ reject_sender_login_mismatch,
+ permit_sasl_authenticated,
+ reject_unknown_helo_hostname,
+ reject_unknown_recipient_domain,
+ reject_unknown_sender_domain
+smtpd_client_restrictions = permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unknown_client_hostname
+# Maximum size of Message in bytes (50MB)
+message_size_limit = 52428800
+
+## SASL Auth Settings
+smtpd_sasl_auth_enable = yes
+smtpd_sasl_local_domain = $myhostname
+broken_sasl_auth_clients = yes
+## Dovecot Settings for deliver, SASL Auth and virtual transport
+smtpd_sasl_type = dovecot
+mailbox_command = /usr/lib/dovecot/deliver
+virtual_transport = dovecot
+dovecot_destination_recipient_limit = 1
+smtpd_sasl_path = private/auth
+
+# Virtual delivery settings
+virtual_mailbox_base = <VIRTUAL_MAILBOX_BASE>
+virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
+virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
+virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
+smtpd_sender_login_maps = mysql:/etc/postfix/mysql-virtual_sender_permissions.cf
+virtual_uid_maps = static:<VIRTUAL_UID_MAPS>
+virtual_gid_maps = static:<VIRTUAL_GID_MAPS>
+
+# Local delivery settings
+local_transport = local
+alias_maps = $alias_database
+
+# Default Mailbox size, is set to 0 which means unlimited!
+mailbox_size_limit = 0
+virtual_mailbox_limit = 0
+
+### TLS settings
+###
+## TLS for outgoing mails from the server to another server
+#smtp_tls_security_level = may
+#smtp_tls_note_starttls_offer = yes
+## TLS for email client
+#smtpd_tls_security_level = may
+#smtpd_tls_cert_file = /etc/ssl/server/<SERVERNAME>.pem
+#smtpd_tls_key_file = $smtpd_tls_cert_file
+#smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
+#smtpd_tls_loglevel = 1
+#smtpd_tls_received_header = yes
+
+debugger_command =
+ PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
+ ddd $daemon_directory/$process_name $process_id & sleep 5
+
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_dovecot/etc_postfix_master.cf
^
|
@@ -0,0 +1,4 @@
+# Add this lines to be able to use dovecot as delivery agent
+# Dovecot LDA
+dovecot unix - n n - - pipe
+ flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_dovecot/etc_postfix_mysql-virtual_alias_maps.cf
^
|
@@ -0,0 +1,8 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+table = mail_virtual
+select_field = destination
+where_field = email
+additional_conditions = and TRIM(destination) <> ''
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_domains.cf
^
|
@@ -0,0 +1,8 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+table = panel_domains
+select_field = domain
+where_field = domain
+additional_conditions = and isemaildomain = '1'
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_maps.cf
^
|
@@ -0,0 +1,7 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+table = mail_users
+select_field = maildir
+where_field = email
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_dovecot/etc_postfix_mysql-virtual_sender_permissions.cf
^
|
@@ -0,0 +1,5 @@
+user = <SQL_UNPRIVILEGED_USER>
+password = <SQL_UNPRIVILEGED_PASSWORD>
+dbname = <SQL_DB>
+query = select distinct username from mail_users where email in ((select mail_virtual.email_full from mail_virtual where mail_virtual.email = '%s' union select mail_virtual.destination from mail_virtual where mail_virtual.email = '%s'));
+hosts = <SQL_HOST>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_mxaccess
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_mxaccess/etc_postfix_main.cf
^
|
@@ -0,0 +1,25 @@
+#
+# ATTENTION - this is not the full postfix-main.cf file
+#
+# it only provides additional configuration-entries!
+#
+
+#
+# look for the follow statement
+#
+smtpd_recipient_restrictions = permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unauth_destination,
+ reject_unauth_pipelining,
+ reject_non_fqdn_recipient
+
+#
+# and extend it with the following line
+# so it looks like this
+#
+smtpd_recipient_restrictions = permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unauth_destination,
+ reject_unauth_pipelining,
+ reject_non_fqdn_recipient,
+ check_recipient_mx_access cidr:/etc/postfix/mx_access
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/postfix_mxaccess/etc_postfix_mx_access
^
|
@@ -0,0 +1,9 @@
+0.0.0.0/8 REJECT Domain MX in broadcast network
+10.0.0.0/8 REJECT Domain MX in RFC 1918 private network
+169.254.0.0/16 REJECT Domain MX in link local network
+172.16.0.0/12 REJECT Domain MX in RFC 1918 private network
+192.0.2.0/24 REJECT Domain MX in TEST-NET network
+192.168.0.0/16 REJECT Domain MX in RFC 1918 private network
+224.0.0.0/4 REJECT Domain MX in class D multicast network
+240.0.0.0/5 REJECT Domain MX in class E reserved network
+248.0.0.0/5 REJECT Domain MX in reserved network
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/powerdns
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/powerdns/etc_powerdns_pdns-froxlor.conf
^
|
@@ -0,0 +1,7 @@
+allow-axfr-ips=<NAMESERVERS>
+#local-ipv6=YOUR_IPv6_(if_any)
+bind-config=<BIND_CONFIG_PATH>named.conf
+bind-check-interval=180
+log-dns-details=yes
+local-address=<SERVERIP>,127.0.0.1
+
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/powerdns/etc_powerdns_pdns.conf
^
|
@@ -0,0 +1,17 @@
+allow-recursion=127.0.0.1
+config-dir=/etc/powerdns
+daemon=yes
+guardian=yes
+launch=bind
+lazy-recursion=yes
+local-port=53
+master=yes
+module-dir=/usr/lib/powerdns
+setgid=pdns
+setuid=pdns
+socket-dir=/var/run
+version-string=powerdns
+bind-config=<BIND_CONFIG_PATH>named.conf
+bind-check-interval=300
+include=/etc/powerdns/pdns_froxlor.conf
+
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/proftpd
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/proftpd/etc_proftpd_modules.conf
^
|
@@ -0,0 +1,58 @@
+#
+# This file is used to manage DSO modules and features.
+#
+
+# This is the directory where DSO modules reside
+
+ModulePath /usr/lib/proftpd
+
+# Allow only user root to load and unload modules, but allow everyone
+# to see which modules have been loaded
+
+ModuleControlsACLs insmod,rmmod allow user root
+ModuleControlsACLs lsmod allow user *
+
+LoadModule mod_ctrls_admin.c
+LoadModule mod_tls.c
+
+# Install proftpd-mod-mysql or proftpd-mod-pgsql to use this
+LoadModule mod_sql.c
+
+# Install proftpd-mod-ldap to use this
+#LoadModule mod_ldap.c
+
+#
+# 'SQLBackend mysql' or 'SQLBackend postgres' directives are required
+# to have SQL authorization working. You can also comment out the
+# unused module here, in alternative.
+#
+
+# Install proftpd-mod-mysql to use this
+LoadModule mod_sql_mysql.c
+
+# Install proftpd-mod-pgsql to use this
+#LoadModule mod_sql_postgres.c
+
+LoadModule mod_radius.c
+LoadModule mod_quotatab.c
+LoadModule mod_quotatab_file.c
+
+# Install proftpd-mod-ldap to use this
+#LoadModule mod_quotatab_ldap.c
+
+# Install proftpd-mod-pgsql or proftpd-mod-mysql to use this
+LoadModule mod_quotatab_sql.c
+LoadModule mod_quotatab_radius.c
+LoadModule mod_wrap.c
+LoadModule mod_rewrite.c
+LoadModule mod_load.c
+LoadModule mod_ban.c
+LoadModule mod_wrap2.c
+LoadModule mod_wrap2_file.c
+# Install proftpd-mod-pgsql or proftpd-mod-mysql to use this
+#LoadModule mod_wrap2_sql.c
+LoadModule mod_dynmasq.c
+
+
+# keep this module the last one
+LoadModule mod_ifsession.c
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/proftpd/etc_proftpd_proftpd.conf
^
|
@@ -0,0 +1,127 @@
+#
+# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
+# To really apply changes reload proftpd after modifications.
+#
+
+# Includes DSO modules
+Include /etc/proftpd/modules.conf
+
+# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
+UseIPv6 on
+
+ServerName "<SERVERNAME> FTP Server"
+ServerType standalone
+DeferWelcome off
+
+MultilineRFC2228 on
+DefaultServer on
+ShowSymlinks on
+
+TimeoutNoTransfer 600
+TimeoutStalled 600
+TimeoutIdle 1200
+
+DisplayLogin welcome.msg
+DisplayChdir .message true
+ListOptions "-l"
+
+DenyFilter \*.*/
+
+# Use this to jail all users in their homes
+# DefaultRoot ~
+
+# Users require a valid shell listed in /etc/shells to login.
+# Use this directive to release that constrain.
+# RequireValidShell off
+
+# Port 21 is the standard FTP port.
+Port 21
+
+# In some cases you have to specify passive ports range to by-pass
+# firewall limitations. Ephemeral ports can be used for that, but
+# feel free to use a more narrow range.
+# PassivePorts 49152 65534
+
+# If your host was NATted, this option is useful in order to
+# allow passive tranfers to work. You have to use your public
+# address and opening the passive ports used on your firewall as well.
+# MasqueradeAddress 1.2.3.4
+
+# This is useful for masquerading address with dynamic IPs:
+# refresh any configured MasqueradeAddress directives every 8 hours
+<IfModule mod_dynmasq.c>
+# DynMasqRefresh 28800
+</IfModule>
+
+# To prevent DoS attacks, set the maximum number of child processes
+# to 30. If you need to allow more than 30 concurrent connections
+# at once, simply increase this value. Note that this ONLY works
+# in standalone mode, in inetd mode you should use an inetd server
+# that allows you to limit maximum number of processes per service
+# (such as xinetd)
+MaxInstances 30
+
+# Set the user and group that the server normally runs at.
+User proftpd
+Group nogroup
+
+# Umask 022 is a good standard umask to prevent new files and dirs
+# (second parm) from being group and world writable.
+Umask 022 022
+# Normally, we want files to be overwriteable.
+AllowOverwrite on
+
+# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
+# PersistentPasswd off
+
+# This is required to use both PAM-based authentication and local passwords
+# AuthOrder mod_auth_pam.c* mod_auth_unix.c
+
+# Be warned: use of this directive impacts CPU average load!
+# Uncomment this if you like to see progress and transfer rate with ftpwho
+# in downloads. That is not needed for uploads rates.
+#
+# UseSendFile off
+
+TransferLog /var/log/proftpd/xferlog
+SystemLog /var/log/proftpd/proftpd.log
+
+<IfModule mod_quotatab.c>
+QuotaEngine on
+</IfModule>
+
+<IfModule mod_ratio.c>
+Ratios off
+</IfModule>
+
+
+# Delay engine reduces impact of the so-called Timing Attack described in
+# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
+# It is on by default.
+<IfModule mod_delay.c>
+DelayEngine off
+</IfModule>
+
+<IfModule mod_ctrls.c>
+ControlsEngine off
+ControlsMaxClients 2
+ControlsLog /var/log/proftpd/controls.log
+ControlsInterval 5
+ControlsSocket /var/run/proftpd/proftpd.sock
+</IfModule>
+
+<IfModule mod_ctrls_admin.c>
+AdminControlsEngine off
+</IfModule>
+
+#
+# Alternative authentication frameworks
+#
+#Include /etc/proftpd/ldap.conf
+Include /etc/proftpd/sql.conf
+
+#
+# This is used for FTPS connections
+#
+#Include /etc/proftpd/tls.conf
+
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/proftpd/etc_proftpd_sql.conf
^
|
@@ -0,0 +1,37 @@
+<IfModule mod_sql.c>
+DefaultRoot ~
+RequireValidShell off
+AuthOrder mod_sql.c
+
+SQLBackend mysql
+SQLEngine on
+SQLAuthenticate on
+
+SQLAuthTypes Crypt
+SQLAuthenticate users* groups*
+SQLConnectInfo <SQL_DB>@<SQL_HOST> <SQL_UNPRIVILEGED_USER> <SQL_UNPRIVILEGED_PASSWORD>
+SQLUserInfo ftp_users username password uid gid homedir shell
+SQLGroupInfo ftp_groups groupname gid members
+SQLUserWhereClause "login_enabled = 'y'"
+
+SQLLog PASS login
+SQLNamedQuery login UPDATE "last_login=now(), login_count=login_count+1 WHERE username='%u'" ftp_users
+
+SQLLog RETR download
+SQLNamedQuery download UPDATE "down_count=down_count+1, down_bytes=down_bytes+%b WHERE username='%u'" ftp_users
+
+SQLLog STOR upload
+SQLNamedQuery upload UPDATE "up_count=up_count+1, up_bytes=up_bytes+%b WHERE username='%u'" ftp_users
+
+QuotaEngine on
+QuotaShowQuotas on
+QuotaDisplayUnits Mb
+QuotaLock /var/lock/ftpd.quotatab.lock
+QuotaLimitTable sql:/get-quota-limit
+QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
+SQLNamedQuery get-quota-limit SELECT "ftp_users.username AS name, ftp_quotalimits.quota_type, ftp_quotalimits.per_session, ftp_quotalimits.limit_type, panel_customers.diskspace*1024 AS bytes_in_avail, ftp_quotalimits.bytes_out_avail, ftp_quotalimits.bytes_xfer_avail, ftp_quotalimits.files_in_avail, ftp_quotalimits.files_out_avail, ftp_quotalimits.files_xfer_avail FROM ftp_users, ftp_quotalimits, panel_customers WHERE ftp_users.username = '%{0}' AND panel_customers.loginname = SUBSTRING_INDEX('%{0}', 'ftp', 1) AND quota_type ='%{1}'"
+SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used,bytes_out_used, bytes_xfer_used, files_in_used, files_out_used,files_xfer_used FROM ftp_quotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
+SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used= files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name= '%{6}' AND quota_type = '%{7}'" ftp_quotatallies
+SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4},%{5}, %{6}, %{7}" ftp_quotatallies
+
+</IfModule>
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd
^
|
+(directory)
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_default_pure-ftpd-common
^
|
@@ -0,0 +1,5 @@
+STANDALONE_OR_INETD=standalone
+VIRTUALCHROOT=false
+UPLOADSCRIPT=
+UPLOADUID=
+UPLOADGID=
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_Bind
^
|
@@ -0,0 +1 @@
+21
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_ChrootEveryone
^
|
@@ -0,0 +1 @@
+yes
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_CustomerProof
^
|
@@ -0,0 +1 @@
+1
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_MaxIdleTime
^
|
@@ -0,0 +1 @@
+15
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_MinUID
^
|
@@ -0,0 +1 @@
+1000
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_MySQLConfigFile
^
|
@@ -0,0 +1 @@
+/etc/pure-ftpd/db/mysql.conf
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_NoAnonymous
^
|
@@ -0,0 +1 @@
+yes
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_conf_PAMAuthentication
^
|
@@ -0,0 +1 @@
+no
|
[-]
[+]
|
Added |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/debian_squeeze/pure-ftpd/etc_pure-ftpd_db_mysql.conf
^
|
@@ -0,0 +1,11 @@
+MYSQLServer <SQL_HOST>
+MYSQLUser <SQL_UNPRIVILEGED_USER>
+MYSQLPassword <SQL_UNPRIVILEGED_PASSWORD>
+MYSQLDatabase <SQL_DB>
+MYSQLCrypt any
+
+MYSQLGetPW SELECT password FROM ftp_users WHERE username="\L" AND login_enabled="y"
+MYSQLGetUID SELECT uid FROM ftp_users WHERE username="\L" AND login_enabled="y"
+MYSQLGetGID SELECT gid FROM ftp_users WHERE username="\L" AND login_enabled="y"
+MYSQLGetDir SELECT homedir FROM ftp_users WHERE username="\L" AND login_enabled="y"
+MySQLGetQTASZ SELECT panel_customers.diskspace/1024 AS QuotaSize FROM panel_customers, ftp_users WHERE username = "\L" AND panel_customers.loginname = SUBSTRING_INDEX('\L', 'ftp', 1)
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/ubuntu_hardy/exim4/etc_exim4_conf.d_router_180_froxlor-config
^
|
@@ -9,4 +9,5 @@
driver = redirect
domains = +froxlor_domain
data = ${lookup mysql {FROXLOR_MAILUSER}{$value}fail}
- directory_transport = maildir_froxlor
\ No newline at end of file
+ directory_transport = maildir_froxlor
+ no_more
\ No newline at end of file
|
[-]
[+]
|
Changed |
froxlor-0.9.20.1.tar.bz2/templates/misc/configfiles/ubuntu_lucid/exim4/etc_exim4_conf.d_router_180_froxlor-config
^
|
@@ -9,4 +9,5 @@
driver = redirect
domains = +froxlor_domain
data = ${lookup mysql {FROXLOR_MAILUSER}{$value}fail}
- directory_transport = maildir_froxlor
\ No newline at end of file
+ directory_transport = maildir_froxlor
+ no_more
\ No newline at end of file
|