From 382bd883441f800501b395d665891670a92a8bab Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Sun, 17 Oct 2010 01:44:58 +0000 Subject: [PATCH] - prepare inserttask()-function for multiserver-support --- admin_customers.php | 97 ++++++++++++++++--- admin_ipsandports.php | 36 +++++-- admin_phpsettings.php | 54 +++++++++-- admin_updates.php | 2 +- customer_domains.php | 12 +-- customer_email.php | 4 +- customer_extras.php | 12 +-- customer_ftp.php | 2 +- lib/functions/froxlor/function.inserttask.php | 82 ++++++++++------ scripts/jobs/cron_tasks.php | 9 +- 10 files changed, 243 insertions(+), 67 deletions(-) diff --git a/admin_customers.php b/admin_customers.php index 702ff667..e41fa098 100644 --- a/admin_customers.php +++ b/admin_customers.php @@ -154,6 +154,16 @@ if($page == 'customers' if(isset($_POST['send']) && $_POST['send'] == 'send') { + /* + * get server-id from customer (multiserver-support) + */ + $server_id = $result['sid']; + + /* + * @TODO enter server-id as select-condition where necessary + * 16.10.2010 d00p + */ + $databases = $db->query("SELECT * FROM " . TABLE_PANEL_DATABASES . " WHERE customerid='" . (int)$id . "' ORDER BY `dbserver`"); $db_root = new db($sql_root[0]['host'], $sql_root[0]['user'], $sql_root[0]['password'], ''); unset($db_root->password); @@ -282,13 +292,13 @@ if($page == 'customers' $admin_update_query.= " WHERE `adminid` = '" . (int)$result['adminid'] . "'"; $db->query($admin_update_query); $log->logAction(ADM_ACTION, LOG_INFO, "deleted user '" . $result['loginname'] . "'"); - inserttask('1'); - inserttask('4'); + inserttask('1', $server_id); + inserttask('4', $server_id); if(isset($_POST['delete_userfiles']) && (int)$_POST['delete_userfiles'] == 1) { - inserttask('6', $result['loginname']); + inserttask('6', $result['loginname'], $server_id); } /* @@ -338,6 +348,18 @@ if($page == 'customers' $customernumber = validate($_POST['customernumber'], 'customer number', '/^[A-Za-z0-9 \-]*$/Di'); $def_language = validate($_POST['def_language'], 'default language'); $diskspace = intval_ressource($_POST['diskspace']); + /* + * get server-id for customer (multiserver-support, default = 0) + * @TODO needs to be implemented in the interface, using 0 for now + * 16.10.2010 d00p + */ + //$server_id = intval_ressource($_POST['serverid']); + $server_id = 0; + + /* + * @TODO enter server-id as select-condition where necessary + * 16.10.2010 d00p + */ if(isset($_POST['diskspace_ul'])) { @@ -566,7 +588,44 @@ if($page == 'customers' $password = substr(md5(uniqid(microtime(), 1)), 12, 6); } - $result = $db->query("INSERT INTO `" . TABLE_PANEL_CUSTOMERS . "` (`adminid`, `loginname`, `password`, `name`, `firstname`, `company`, `street`, `zipcode`, `city`, `phone`, `fax`, `email`, `customernumber`, `def_language`, `documentroot`, `guid`, `diskspace`, `traffic`, `subdomains`, `emails`, `email_accounts`, `email_forwarders`, `email_quota`, `ftps`, `tickets`, `mysqls`, `standardsubdomain`, `phpenabled`, `imap`, `pop3`, `aps_packages`, `perlenabled`, `email_autoresponder`) VALUES ('" . (int)$userinfo['adminid'] . "', '" . $db->escape($loginname) . "', '" . md5($password) . "', '" . $db->escape($name) . "', '" . $db->escape($firstname) . "', '" . $db->escape($company) . "', '" . $db->escape($street) . "', '" . $db->escape($zipcode) . "', '" . $db->escape($city) . "', '" . $db->escape($phone) . "', '" . $db->escape($fax) . "', '" . $db->escape($email) . "', '" . $db->escape($customernumber) . "','" . $db->escape($def_language) . "', '" . $db->escape($documentroot) . "', '" . $db->escape($guid) . "', '" . $db->escape($diskspace) . "', '" . $db->escape($traffic) . "', '" . $db->escape($subdomains) . "', '" . $db->escape($emails) . "', '" . $db->escape($email_accounts) . "', '" . $db->escape($email_forwarders) . "', '" . $db->escape($email_quota) . "', '" . $db->escape($ftps) . "', '" . $db->escape($tickets) . "', '" . $db->escape($mysqls) . "', '0', '" . $db->escape($phpenabled) . "', '" . $db->escape($email_imap) . "', '" . $db->escape($email_pop3) . "', '" . (int)$number_of_aps_packages . "', '" . $db->escape($perlenabled) . "', '" . $db->escape($email_autoresponder) . "')"); + $result = $db->query("INSERT INTO + `" . TABLE_PANEL_CUSTOMERS . "` + SET + `adminid` = '" . (int)$userinfo['adminid'] . "', + `loginname` = '" . $db->escape($loginname) . "', + `password` = '" . md5($password) . "', + `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) . "', + `documentroot` = '" . $db->escape($documentroot) . "', + `guid` = '" . $db->escape($guid) . "', + `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) . "', + `email_quota` = '" . $db->escape($email_quota) . "', + `ftps` = '" . $db->escape($ftps) . "', + `tickets` = '" . $db->escape($tickets) . "', + `mysqls` = '" . $db->escape($mysqls) . "', + `standardsubdomain` = '0', + `phpenabled` = '" . $db->escape($phpenabled) . "', + `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) . "', + `sid` = '" . (int)$server_id . "'"); + $customerid = $db->insert_id(); $admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` + 1"; @@ -637,7 +696,7 @@ if($page == 'customers' } $log->logAction(ADM_ACTION, LOG_INFO, "added user '" . $loginname . "'"); - inserttask('2', $loginname, $guid, $guid, $store_defaultindex); + inserttask('2', $loginname, $guid, $guid, $store_defaultindex, $server_id); // Add htpasswd for the webalizer stats @@ -662,7 +721,7 @@ if($page == 'customers' $log->logAction(ADM_ACTION, LOG_NOTICE, "automatically added webalizer htpasswd for user '" . $loginname . "'"); } - inserttask('1'); + inserttask('1', $server_id); $result = $db->query("INSERT INTO `" . TABLE_FTP_USERS . "` " . "(`customerid`, `username`, `password`, `homedir`, `login_enabled`, `uid`, `gid`) " . "VALUES ('" . (int)$customerid . "', '" . $db->escape($loginname) . "', ENCRYPT('" . $db->escape($password) . "'), '" . $db->escape($documentroot) . "', 'y', '" . (int)$guid . "', '" . (int)$guid . "')"); $result = $db->query("INSERT INTO `" . TABLE_FTP_GROUPS . "` " . "(`customerid`, `groupname`, `gid`, `members`) " . "VALUES ('" . (int)$customerid . "', '" . $db->escape($loginname) . "', '" . $db->escape($guid) . "', '" . $db->escape($loginname) . "')"); $result = $db->query("INSERT INTO `" . TABLE_FTP_QUOTATALLIES . "` (`name`, `quota_type`, `bytes_in_used`, `bytes_out_used`, `bytes_xfer_used`, `files_in_used`, `files_out_used`, `files_xfer_used`) VALUES ('" . $db->escape($loginname) . "', 'user', '0', '0', '0', '0', '0', '0')"); @@ -698,7 +757,7 @@ if($page == 'customers' $domainid = $db->insert_id(); $db->query('UPDATE `' . TABLE_PANEL_CUSTOMERS . '` SET `standardsubdomain`=\'' . (int)$domainid . '\' WHERE `customerid`=\'' . (int)$customerid . '\''); $log->logAction(ADM_ACTION, LOG_NOTICE, "automatically added standardsubdomain for user '" . $loginname . "'"); - inserttask('1'); + inserttask('1', $server_id); } if($sendpassword == '1') @@ -785,6 +844,16 @@ if($page == 'customers' if($result['loginname'] != '') { + /* + * get server-id from customer (multiserver-support) + */ + $server_id = $result['sid']; + + /* + * @TODO enter server-id as select-condition where necessary + * 16.10.2010 d00p + */ + if(isset($_POST['send']) && $_POST['send'] == 'send') { @@ -801,6 +870,12 @@ if($page == 'customers' $def_language = validate($_POST['def_language'], 'default language'); $password = validate($_POST['new_customer_password'], 'new password'); $diskspace = intval_ressource($_POST['diskspace']); + /* + * get server-id fir customer (multiserver-support, default = 0) + * @TODO needs to be implemented in the interface, using 0 for now + * 16.10.2010 d00p + */ + //$server_id = intval_ressource($_POST['serverid']); if(isset($_POST['diskspace_ul'])) { @@ -996,7 +1071,7 @@ if($page == 'customers' $domainid = $db->insert_id(); $db->query('UPDATE `' . TABLE_PANEL_CUSTOMERS . '` SET `standardsubdomain`=\'' . (int)$domainid . '\' WHERE `customerid`=\'' . (int)$result['customerid'] . '\''); $log->logAction(ADM_ACTION, LOG_NOTICE, "automatically added standardsubdomain for user '" . $result['loginname'] . "'"); - inserttask('1'); + inserttask('1', $server_id); } if($createstdsubdomain == '0' @@ -1005,7 +1080,7 @@ if($page == 'customers' $db->query('DELETE FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `id`=\'' . (int)$result['standardsubdomain'] . '\''); $db->query('UPDATE `' . TABLE_PANEL_CUSTOMERS . '` SET `standardsubdomain`=\'0\' WHERE `customerid`=\'' . (int)$result['customerid'] . '\''); $log->logAction(ADM_ACTION, LOG_NOTICE, "automatically deleted standardsubdomain for user '" . $result['loginname'] . "'"); - inserttask('1'); + inserttask('1', $server_id); } if($deactivated != '1') @@ -1026,7 +1101,7 @@ if($page == 'customers' if($phpenabled != $result['phpenabled'] || $perlenabled != $result['perlenabled']) { - inserttask('1'); + inserttask('1', $server_id); } if($deactivated != $result['deactivated']) @@ -1035,7 +1110,7 @@ if($page == 'customers' $db->query("UPDATE `" . TABLE_FTP_USERS . "` SET `login_enabled`='" . (($deactivated) ? 'N' : 'Y') . "' WHERE `customerid`='" . (int)$id . "'"); $db->query("UPDATE `" . TABLE_PANEL_DOMAINS . "` SET `deactivated`='" . (int)$deactivated . "' WHERE `customerid`='" . (int)$id . "'"); $log->logAction(ADM_ACTION, LOG_INFO, "deactivated user '" . $result['loginname'] . "'"); - inserttask('1'); + inserttask('1', $server_id); } // Disable or enable POP3 Login for customers Mail Accounts diff --git a/admin_ipsandports.php b/admin_ipsandports.php index d6e6f2a3..89307c7f 100644 --- a/admin_ipsandports.php +++ b/admin_ipsandports.php @@ -148,6 +148,13 @@ if($page == 'ipsandports' $ssl_cert_chainfile = validate($_POST['ssl_cert_chainfile'], 'ssl_cert_chainfile'); $default_vhostconf_domain = validate(str_replace("\r\n", "\n", $_POST['default_vhostconf_domain']), 'default_vhostconf_domain', '/^[^\0]*$/'); $docroot = validate($_POST['docroot'], 'docroot'); + /* + * get server-id for ip/port combo (multiserver-support, default = 0) + * @TODO needs to be implemented in the interface, using 0 for now + * 16.10.2010 d00p + */ + //$server_id = intval_ressource($_POST['serverid']); + $server_id = 0; if($listen_statement != '1') { @@ -226,7 +233,8 @@ if($page == 'ipsandports' `ssl_ca_file` = '" . $db->escape($ssl_ca_file) . "', `ssl_cert_chainfile` = '" . $db->escape($ssl_cert_chainfile) . "', `default_vhostconf_domain` = '" . $db->escape($default_vhostconf_domain) . "', - `docroot` = '" . $db->escape($docroot) . "'; + `docroot` = '" . $db->escape($docroot) . "', + `sid` = '" . (int)$server_id ."'; "); if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) @@ -235,8 +243,8 @@ if($page == 'ipsandports' } $log->logAction(ADM_ACTION, LOG_WARNING, "added IP/port '" . $ip . ":" . $port . "'"); - inserttask('1'); - inserttask('4'); + inserttask('1', $server_id); + inserttask('4', $server_id); redirectTo($filename, Array('page' => $page, 's' => $s)); } } @@ -257,6 +265,16 @@ if($page == 'ipsandports' if($result['ip'] != '') { + /* + * get server-id from ip/port combo (multiserver-support) + */ + $server_id = $result['sid']; + + /* + * @TODO enter server-id as select-condition where necessary + * 16.10.2010 d00p + */ + if(isset($_POST['send']) && $_POST['send'] == 'send') { @@ -276,7 +294,13 @@ if($page == 'ipsandports' $ssl_cert_chainfile = validate($_POST['ssl_cert_chainfile'], 'ssl_cert_chainfile'); $default_vhostconf_domain = validate(str_replace("\r\n", "\n", $_POST['default_vhostconf_domain']), 'default_vhostconf_domain', '/^[^\0]*$/'); $docroot = validate($_POST['docroot'], 'docroot'); - + /* + * get server-id for customer (multiserver-support, default = 0) + * @TODO needs to be implemented in the interface, using 0 for now + * 16.10.2010 d00p + */ + //$server_id = intval_ressource($_POST['serverid']); + if($listen_statement != '1') { $listen_statement = '0'; @@ -365,8 +389,8 @@ if($page == 'ipsandports' "); $log->logAction(ADM_ACTION, LOG_WARNING, "changed IP/port from '" . $result['ip'] . ":" . $result['port'] . "' to '" . $ip . ":" . $port . "'"); - inserttask('1'); - inserttask('4'); + inserttask('1', $server_id); + inserttask('4', $server_id); redirectTo($filename, Array('page' => $page, 's' => $s)); } } diff --git a/admin_phpsettings.php b/admin_phpsettings.php index 3d6606f1..a33c64a1 100644 --- a/admin_phpsettings.php +++ b/admin_phpsettings.php @@ -88,6 +88,13 @@ if($page == 'overview') $phpsettings = validate(str_replace("\r\n", "\n", $_POST['phpsettings']), 'phpsettings', '/^[^\0]*$/'); $mod_fcgid_starter = validate($_POST['mod_fcgid_starter'], 'mod_fcgid_starter', '/^[0-9]*$/', '', array('-1', '')); $mod_fcgid_maxrequests = validate($_POST['mod_fcgid_maxrequests'], 'mod_fcgid_maxrequests', '/^[0-9]*$/', '', array('-1', '')); + /* + * get server-id for php-config (multiserver-support, default = 0) + * @TODO needs to be implemented in the interface, using 0 for now + * 16.10.2010 d00p + */ + //$server_id = intval_ressource($_POST['serverid']); + $server_id = 0; if(strlen($description) == 0 || strlen($description) > 50) @@ -95,8 +102,17 @@ if($page == 'overview') standard_error('descriptioninvalid'); } - $db->query("INSERT INTO `" . TABLE_PANEL_PHPCONFIGS . "` SET `description` = '" . $db->escape($description) . "', `binary` = '" . $db->escape($binary) . "', `file_extensions` = '" . $db->escape($file_extensions) . "', `mod_fcgid_starter` = '" . $db->escape($mod_fcgid_starter) . "', `mod_fcgid_maxrequests` = '" . $db->escape($mod_fcgid_maxrequests) . "', `phpsettings` = '" . $db->escape($phpsettings) . "'"); - inserttask('1'); + $db->query("INSERT INTO + `" . TABLE_PANEL_PHPCONFIGS . "` + SET + `description` = '" . $db->escape($description) . "', + `binary` = '" . $db->escape($binary) . "', + `file_extensions` = '" . $db->escape($file_extensions) . "', + `mod_fcgid_starter` = '" . $db->escape($mod_fcgid_starter) . "', + `mod_fcgid_maxrequests` = '" . $db->escape($mod_fcgid_maxrequests) . "', + `phpsettings` = '" . $db->escape($phpsettings) . "', + `sid` = '" . (int)$server_id . "'"); + inserttask('1', $server_id); $log->logAction(ADM_ACTION, LOG_INFO, "php.ini setting with description '" . $description . "' has been created by '" . $userinfo['loginname'] . "'"); redirectTo($filename, Array('page' => $page, 's' => $s)); } @@ -126,7 +142,7 @@ if($page == 'overview') { $db->query("UPDATE `" . TABLE_PANEL_DOMAINS . "` SET `phpsettingid` = 1 WHERE `phpsettingid` = " . (int)$id); $db->query("DELETE FROM `" . TABLE_PANEL_PHPCONFIGS . "` WHERE `id` = " . (int)$id); - inserttask('1'); + inserttask('1', $result['sid']); $log->logAction(ADM_ACTION, LOG_INFO, "php.ini setting with id #" . (int)$id . " has been deleted by '" . $userinfo['loginname'] . "'"); redirectTo($filename, Array('page' => $page, 's' => $s)); } @@ -149,6 +165,16 @@ if($page == 'overview') && $result['id'] == $id && (int)$userinfo['change_serversettings'] == 1) { + /* + * get server-id from php-config (multiserver-support) + */ + $server_id = $result['sid']; + + /* + * @TODO enter server-id as select-condition where necessary + * 16.10.2010 d00p + */ + if(isset($_POST['send']) && $_POST['send'] == 'send') { @@ -158,15 +184,31 @@ if($page == 'overview') $phpsettings = validate(str_replace("\r\n", "\n", $_POST['phpsettings']), 'phpsettings', '/^[^\0]*$/'); $mod_fcgid_starter = validate($_POST['mod_fcgid_starter'], 'mod_fcgid_starter', '/^[0-9]*$/', '', array('-1', '')); $mod_fcgid_maxrequests = validate($_POST['mod_fcgid_maxrequests'], 'mod_fcgid_maxrequests', '/^[0-9]*$/', '', array('-1', '')); - + /* + * get server-id for php-config (multiserver-support, default = 0) + * @TODO needs to be implemented in the interface, using 0 for now + * 16.10.2010 d00p + */ + //$server_id = intval_ressource($_POST['serverid']); + if(strlen($description) == 0 || strlen($description) > 50) { standard_error('descriptioninvalid'); } - $db->query("UPDATE `" . TABLE_PANEL_PHPCONFIGS . "` SET `description` = '" . $db->escape($description) . "', `binary` = '" . $db->escape($binary) . "', `file_extensions` = '" . $db->escape($file_extensions) . "', `mod_fcgid_starter` = '" . $db->escape($mod_fcgid_starter) . "', `mod_fcgid_maxrequests` = '" . $db->escape($mod_fcgid_maxrequests) . "', `phpsettings` = '" . $db->escape($phpsettings) . "' WHERE `id` = " . (int)$id); - inserttask('1'); + $db->query("UPDATE + `" . TABLE_PANEL_PHPCONFIGS . "` + SET + `description` = '" . $db->escape($description) . "', + `binary` = '" . $db->escape($binary) . "', + `file_extensions` = '" . $db->escape($file_extensions) . "', + `mod_fcgid_starter` = '" . $db->escape($mod_fcgid_starter) . "', + `mod_fcgid_maxrequests` = '" . $db->escape($mod_fcgid_maxrequests) . "', + `phpsettings` = '" . $db->escape($phpsettings) . "', + `sid` = '" . (int)$server_id . "' + WHERE `id` = " . (int)$id); + inserttask('1', $server_id); $log->logAction(ADM_ACTION, LOG_INFO, "php.ini setting with description '" . $description . "' has been changed by '" . $userinfo['loginname'] . "'"); redirectTo($filename, Array('page' => $page, 's' => $s)); } diff --git a/admin_updates.php b/admin_updates.php index 7cad6429..900fbb65 100644 --- a/admin_updates.php +++ b/admin_updates.php @@ -76,7 +76,7 @@ if($page == 'overview') eval("echo \"" . getTemplate("update/update_end") . "\";"); updateCounters(); - inserttask('1'); + inserttask('1', -1); // -1 = all frox-clients + master (multiserver-mode) @chmod('./lib/userdata.inc.php', 0440); $successful_update = true; diff --git a/customer_domains.php b/customer_domains.php index 8b6cbce7..2a9aefc2 100644 --- a/customer_domains.php +++ b/customer_domains.php @@ -195,8 +195,8 @@ elseif($page == 'domains') $log->logAction(USR_ACTION, LOG_INFO, "deleted subdomain '" . $idna_convert->decode($result['domain']) . "'"); $result = $db->query("DELETE FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'"); $result = $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `subdomains_used`=`subdomains_used`-1 WHERE `customerid`='" . (int)$userinfo['customerid'] . "'"); - inserttask('1'); - inserttask('4'); + inserttask('1', (int)$userinfo['sid']); + inserttask('4', (int)$userinfo['sid']); redirectTo($filename, Array('page' => $page, 's' => $s)); } else @@ -345,8 +345,8 @@ elseif($page == 'domains') $result = $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `subdomains_used`=`subdomains_used`+1 WHERE `customerid`='" . (int)$userinfo['customerid'] . "'"); $log->logAction(USR_ACTION, LOG_INFO, "added subdomain '" . $completedomain . "'"); - inserttask('1'); - inserttask('4'); + inserttask('1', (int)$userinfo['sid']); + inserttask('4', (int)$userinfo['sid']); redirectTo($filename, Array('page' => $page, 's' => $s)); } } @@ -513,8 +513,8 @@ elseif($page == 'domains') { $log->logAction(USR_ACTION, LOG_INFO, "edited domain '" . $idna_convert->decode($result['domain']) . "'"); $result = $db->query("UPDATE `" . TABLE_PANEL_DOMAINS . "` SET `documentroot`='" . $db->escape($path) . "', `isemaildomain`='" . (int)$isemaildomain . "', `iswildcarddomain`='" . (int)$iswildcarddomain . "', `aliasdomain`=" . (($aliasdomain != 0 && $alias_check == 0) ? '\'' . $db->escape($aliasdomain) . '\'' : 'NULL') . ",`openbasedir_path`='" . $db->escape($openbasedir_path) . "', `ssl_redirect`='" . $ssl_redirect . "' WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'"); - inserttask('1'); - inserttask('4'); + inserttask('1', (int)$userinfo['sid']); + inserttask('4', (int)$userinfo['sid']); } redirectTo($filename, Array('page' => $page, 's' => $s)); diff --git a/customer_email.php b/customer_email.php index adc0b8d2..24a7e107 100644 --- a/customer_email.php +++ b/customer_email.php @@ -187,7 +187,7 @@ elseif($page == 'emails') if(isset($_POST['delete_userfiles']) && (int)$_POST['delete_userfiles'] == 1) { - inserttask('7', $userinfo['loginname'], $result['email_full']); + inserttask('7', $userinfo['loginname'], $result['email_full'], (int)$userinfo['sid']); } $db->query("DELETE FROM `" . TABLE_MAIL_VIRTUAL . "` WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'"); @@ -616,7 +616,7 @@ elseif($page == 'accounts') if(isset($_POST['delete_userfiles']) && (int)$_POST['delete_userfiles'] == 1) { - inserttask('7', $userinfo['loginname'], $result['email_full']); + inserttask('7', $userinfo['loginname'], $result['email_full'], (int)$userinfo['sid']); } $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `email_accounts_used` = `email_accounts_used` - 1, `email_quota_used` = `email_quota_used` - " . (int)$quota . " WHERE `customerid`='" . (int)$userinfo['customerid'] . "'"); diff --git a/customer_extras.php b/customer_extras.php index a6b1d3f9..53d1e52e 100644 --- a/customer_extras.php +++ b/customer_extras.php @@ -91,7 +91,7 @@ elseif($page == 'htpasswds') { $db->query("DELETE FROM `" . TABLE_PANEL_HTPASSWDS . "` WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='$id'"); $log->logAction(USR_ACTION, LOG_INFO, "deleted htpasswd for '" . $result['username'] . " (" . $result['path'] . ")'"); - inserttask('1'); + inserttask('1', (int)$userinfo['sid']); redirectTo($filename, Array('page' => $page, 's' => $s)); } else @@ -154,7 +154,7 @@ elseif($page == 'htpasswds') { $db->query("INSERT INTO `" . TABLE_PANEL_HTPASSWDS . "` (`customerid`, `username`, `password`, `path`, `authname`) VALUES ('" . (int)$userinfo['customerid'] . "', '" . $db->escape($username) . "', '" . $db->escape($password) . "', '" . $db->escape($path) . "', '" . $db->escape($authname) . "')"); $log->logAction(USR_ACTION, LOG_INFO, "added htpasswd for '" . $username . " (" . $path . ")'"); - inserttask('1'); + inserttask('1', (int)$userinfo['sid']); redirectTo($filename, Array('page' => $page, 's' => $s)); } } @@ -208,7 +208,7 @@ elseif($page == 'htpasswds') $db->query("UPDATE `" . TABLE_PANEL_HTPASSWDS . "` SET ".$pwd_sql.$auth_sql." WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'"); $log->logAction(USR_ACTION, LOG_INFO, "edited htpasswd for '" . $result['username'] . " (" . $result['path'] . ")'"); - inserttask('1'); + inserttask('1', (int)$userinfo['sid']); redirectTo($filename, Array('page' => $page, 's' => $s)); } } @@ -290,7 +290,7 @@ elseif($page == 'htaccess') { $db->query("DELETE FROM `" . TABLE_PANEL_HTACCESS . "` WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'"); $log->logAction(USR_ACTION, LOG_INFO, "deleted htaccess for '" . str_replace($userinfo['documentroot'], '', $result['path']) . "'"); - inserttask('1'); + inserttask('1', (int)$userinfo['sid']); redirectTo($filename, Array('page' => $page, 's' => $s)); } else @@ -347,7 +347,7 @@ elseif($page == 'htaccess') `options_cgi` = "'.$db->escape($options_cgi).'"'); $log->logAction(USR_ACTION, LOG_INFO, "added htaccess for '" . $path . "'"); - inserttask('1'); + inserttask('1', (int)$userinfo['sid']); redirectTo($filename, Array('page' => $page, 's' => $s)); } } @@ -395,7 +395,7 @@ elseif($page == 'htaccess') || ($error500path != $result['error500path']) || ($options_cgi != $result['options_cgi'])) { - inserttask('1'); + inserttask('1', (int)$userinfo['sid']); $db->query('UPDATE `' . TABLE_PANEL_HTACCESS . '` SET `options_indexes` = "' . $db->escape($option_indexes) . '", `error404path` = "' . $db->escape($error404path) . '", `error403path` = "' . $db->escape($error403path) . '", `error500path` = "' . $db->escape($error500path) . '", `options_cgi` = "' . $db->escape($options_cgi) . '" WHERE `customerid` = "' . (int)$userinfo['customerid'] . '" AND `id` = "' . (int)$id . '"'); $log->logAction(USR_ACTION, LOG_INFO, "edited htaccess for '" . str_replace($userinfo['documentroot'], '', $result['path']) . "'"); } diff --git a/customer_ftp.php b/customer_ftp.php index 3736ce6e..9dbb60e8 100644 --- a/customer_ftp.php +++ b/customer_ftp.php @@ -201,7 +201,7 @@ elseif($page == 'accounts') $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `ftps_used`=`ftps_used`+1, `ftp_lastaccountnumber`=`ftp_lastaccountnumber`+1 WHERE `customerid`='" . (int)$userinfo['customerid'] . "'"); $log->logAction(USR_ACTION, LOG_INFO, "added ftp-account '" . $username . " (" . $path . ")'"); - inserttask(5); + inserttask(5, (int)$userinfo['sid']); if($sendinfomail == 1) { diff --git a/lib/functions/froxlor/function.inserttask.php b/lib/functions/froxlor/function.inserttask.php index 63969867..388067e1 100644 --- a/lib/functions/froxlor/function.inserttask.php +++ b/lib/functions/froxlor/function.inserttask.php @@ -19,23 +19,51 @@ /** * Inserts a task into the PANEL_TASKS-Table - * - * @param int Type of task - * @param string Parameter 1 - * @param string Parameter 2 - * @param string Parameter 3 - * @param string Parameter 4 * * @author Florian Lippert (2003-2009) * @author Froxlor team (2010-) */ -function inserttask($type, $param1 = '', $param2 = '', $param3 = '', $param4 = '') +function inserttask() { global $db, $settings; - // check for $server_id, if it's not set default to "master" - $server_id = getServerId(); + $numargs = func_num_args(); + + if($numargs <= 0) { + // no arguments given, exiting + return; + } + + // type will always be the first argument + $type = func_get_arg(0); + + // server-id will always be the last argument + // (if not set, use id of master (0) + $server_id = ($numargs-1 <= 0) ? 0 : func_get_arg($numargs-1); + + // get the rest of the params + $taskparams = array(); + for($x=1;$x<$numargs-1;$x++) + { + $taskparams[] = func_get_arg($x); + } + + // if server_id = -1 then add this task for EVERY froxlor-client + if($server_id == -1) + { + // @TODO implement function to get number of froxlor-clients + /* + $numclients = getNumberOfFroxlorClients(); + foreach($numclients as $froxclient_id) + { + inserttask($type, implode(', ', $taskparams), $froxclient_id); + } + */ + // also for the master + inserttask($type, implode(', ', $taskparams), 0); + return; + } if($type == '1' || $type == '3' @@ -46,44 +74,44 @@ function inserttask($type, $param1 = '', $param2 = '', $param3 = '', $param4 = ' $db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `sid`) VALUES ("' . $type . '", "'.$server_id.'")'); } elseif($type == '2' - && $param1 != '' - && $param2 != '' - && $param3 != '' - && $param4 != '') + && $taskparams[0] != '' + && $taskparams[1] != '' + && $taskparams[2] != '' + && $taskparams[3] != '') { $data = Array(); - $data['loginname'] = $param1; - $data['uid'] = $param2; - $data['gid'] = $param3; - $data['store_defaultindex'] = $param4; + $data['loginname'] = $taskparams[0]; + $data['uid'] = $taskparams[1]; + $data['gid'] = $taskparams[2]; + $data['store_defaultindex'] = $taskparams[3]; $data = serialize($data); $db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("2", "' . $db->escape($data) . '", "'.$server_id.'")'); } elseif($type == '6' - && $param1 != '') + && $taskparams[0] != '') { $data = Array(); - $data['loginname'] = $param1; + $data['loginname'] = $taskparams[0]; $data = serialize($data); $db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("6", "' . $db->escape($data) . '", "'.$server_id.'")'); } elseif($type == '7' - && $param1 != '' - && $param2 != '') + && $taskparams[0] != '' + && $taskparams[1] != '') { $data = Array(); - $data['loginname'] = $param1; - $data['email'] = $param2; + $data['loginname'] = $taskparams[0]; + $data['email'] = $taskparams[1]; $data = serialize($data); $db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("7", "' . $db->escape($data) . '", "'.$server_id.'")'); } elseif($type == '8' - && $param1 != '' - && $param2 != '') + && $taskparams[0] != '' + && $taskparams[1] != '') { $data = Array(); - $data['loginname'] = $param1; - $data['homedir'] = $param2; + $data['loginname'] = $taskparams[0]; + $data['homedir'] = $taskparams[1]; $data = serialize($data); $db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("8", "' . $db->escape($data) . '", "'.$server_id.'")'); } diff --git a/scripts/jobs/cron_tasks.php b/scripts/jobs/cron_tasks.php index 8a712a81..665f3aaa 100644 --- a/scripts/jobs/cron_tasks.php +++ b/scripts/jobs/cron_tasks.php @@ -32,7 +32,14 @@ require_once(makeCorrectFile(dirname(__FILE__) . '/cron_tasks.inc.http.25.lightt fwrite($debugHandler, ' cron_tasks: Searching for tasks to do' . "\n"); $cronlog->logAction(CRON_ACTION, LOG_INFO, "Searching for tasks to do"); -$result_tasks = $db->query("SELECT `id`, `type`, `data` FROM `" . TABLE_PANEL_TASKS . "` ORDER BY `id` ASC"); +$server_id = getServerId(); +$result_tasks = $db->query("SELECT + `id`, `type`, `data` +FROM + `" . TABLE_PANEL_TASKS . "` +WHERE + `sid` = '".$server_id."' +ORDER BY `id` ASC"); $resultIDs = array(); while($row = $db->fetch_array($result_tasks))