Reverting the multiserver-stuff, we'll do this inside the branch

This commit is contained in:
Florian Aders (EleRas)
2010-10-23 10:20:23 +00:00
parent 99696ff6cb
commit ad31b07a04
32 changed files with 169 additions and 962 deletions

View File

@@ -17,18 +17,8 @@
* @version $Id$
*/
function correctMysqlUsers($mysql_access_host_array, $server_id = 0)
function correctMysqlUsers($mysql_access_host_array)
{
/**
* for multiserver-clients
* this has to be done in
* a different way
*/
if($server_id > 0) {
correctMysqlUsersRemote($mysql_access_host_array, $server_id);
return;
}
global $db, $settings, $sql, $sql_root;
foreach($sql_root as $mysql_server => $mysql_server_details)
@@ -99,17 +89,3 @@ function correctMysqlUsers($mysql_access_host_array, $server_id = 0)
unset($db_root);
}
}
/**
* @TODO finish me
* @param array $mysql_access_host_array list of ips/hostnames of the mysql-server
* @param int $server_id id of the multiserver-client
*
* @return null
*/
function correctMysqlUsersRemote($mysql_access_host_array, $server_id = 0)
{
/* if($server_id == 0) */
return;
}

View File

@@ -15,7 +15,7 @@
* @version $Id $
*/
function buildFormEx($form, $part = '', $server_id = 0)
function buildFormEx($form, $part = '')
{
$fields = '';
@@ -28,7 +28,7 @@ function buildFormEx($form, $part = '', $server_id = 0)
{
if(isset($groupdetails['title']) && $groupdetails['title'] != '')
{
$fields .= getFormOverviewGroupOutput($groupname, $groupdetails, $server_id);
$fields .= getFormOverviewGroupOutput($groupname, $groupdetails);
}
}
// only show one section
@@ -38,7 +38,7 @@ function buildFormEx($form, $part = '', $server_id = 0)
{
$fields .= getFormGroupOutput($groupname, $groupdetails);
}
if(validateFieldDefinition($groupdetails))
{
// Prefetch form fields
@@ -47,7 +47,7 @@ function buildFormEx($form, $part = '', $server_id = 0)
$groupdetails['fields'][$fieldname] = array_merge_prefix($fielddetails, $fielddetails['type'], prefetchFormFieldData($fieldname, $fielddetails));
$form['groups'][$groupname]['fields'][$fieldname] = $groupdetails['fields'][$fieldname];
}
// Collect form field output
foreach($groupdetails['fields'] as $fieldname => $fielddetails)
{

View File

@@ -24,7 +24,7 @@ function getFormGroupOutput($groupname, $groupdetails)
return $group;
}
function getFormOverviewGroupOutput($groupname, $groupdetails, $server_id = 0)
function getFormOverviewGroupOutput($groupname, $groupdetails)
{
global $lng, $settings, $filename, $s;
@@ -63,34 +63,14 @@ function getFormOverviewGroupOutput($groupname, $groupdetails, $server_id = 0)
}
else
{
if(isset($fielddetails['disabled']) && $fielddetails['disabled'] == true)
{
$d = true;
$option.='<span class="strikethrough">';
} else {
$d = false;
}
$option.= $lng['admin']['activated'].':&nbsp;';
$option.= makeyesno($fieldname, '1', '0', $settings[$fielddetails['settinggroup']][$fielddetails['varname']], $d);
if($d) {
$option.='</span>';
}
$option.= makeyesno($fieldname, '1', '0', $settings[$fielddetails['settinggroup']][$fielddetails['varname']]);
$activated = (int)$settings[$fielddetails['settinggroup']][$fielddetails['varname']];
}
}
}
}
// if the server_id is > 0 then
// this is a client-settings page
// and we need another template
if($server_id > 0)
{
eval("\$group = \"" . getTemplate("froxlorclients/froxlorclient_settingsoverviewgroup") . "\";");
}
else
{
eval("\$group = \"" . getTemplate("settings/settings_overviewgroup") . "\";");
}
eval("\$group = \"" . getTemplate("settings/settings_overviewgroup") . "\";");
return $group;
}

View File

@@ -144,7 +144,7 @@ function processForm(&$form, &$input, $url_params = array())
}
}
function processFormEx(&$form, &$input, $url_params = array(), $part, $settings_all, $settings_part, $only_enabledisable, $server_id = 0)
function processFormEx(&$form, &$input, $url_params = array(), $part, $settings_all, $settings_part, $only_enabledisable)
{
if(validateFormDefinition($form))
{
@@ -287,7 +287,7 @@ function processFormEx(&$form, &$input, $url_params = array(), $part, $settings_
) {
if(isset($changed_fields[$fieldname]))
{
if(($saved_field = saveFormField($fieldname, $fielddetails, manipulateFormFieldData($fieldname, $fielddetails, $changed_fields[$fieldname]), $server_id)) !== false)
if(($saved_field = saveFormField($fieldname, $fielddetails, manipulateFormFieldData($fieldname, $fielddetails, $changed_fields[$fieldname]))) !== false)
{
$saved_fields = array_merge($saved_fields, $saved_field);
}

View File

@@ -17,12 +17,12 @@
* @version $Id$
*/
function saveFormField($fieldname, $fielddata, $newfieldvalue, $server_id = 0)
function saveFormField($fieldname, $fielddata, $newfieldvalue)
{
$returnvalue = '';
if(is_array($fielddata) && isset($fielddata['save_method']) && $fielddata['save_method'] != '' && function_exists($fielddata['save_method']))
{
$returnvalue = call_user_func($fielddata['save_method'], $fieldname, $fielddata, $newfieldvalue, $server_id);
$returnvalue = call_user_func($fielddata['save_method'], $fieldname, $fielddata, $newfieldvalue);
}
elseif(is_array($fielddata) && !isset($fielddata['save_method']))
{

View File

@@ -19,53 +19,17 @@
/**
* Inserts a task into the PANEL_TASKS-Table
*
* @author Florian Lippert <flo@syscp.org> (2003-2009)
* @author Froxlor team <team@froxlor.org> (2010-)
*
* @param int Type of task
* @param string Parameter 1
* @param string Parameter 2
* @param string Parameter 3
* @author Florian Lippert <flo@syscp.org>
*/
function inserttask()
function inserttask($type, $param1 = '', $param2 = '', $param3 = '', $param4 = '')
{
global $db, $settings;
$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)
{
$numclients = froxlorclient::getFroxlorClients($db);
if(is_array($numclients)
&& count($numclients) > 0
) {
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'
@@ -73,48 +37,96 @@ function inserttask()
|| $type == '5')
{
$db->query('DELETE FROM `' . TABLE_PANEL_TASKS . '` WHERE `type`="' . $type . '"');
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `sid`) VALUES ("' . $type . '", "'.$server_id.'")');
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`) VALUES ("' . $type . '")');
$doupdate = true;
}
elseif($type == '2'
&& $taskparams[0] != ''
&& $taskparams[1] != ''
&& $taskparams[2] != ''
&& $taskparams[3] != '')
&& $param1 != ''
&& $param2 != ''
&& $param3 != ''
&& $param4 != '')
{
$data = Array();
$data['loginname'] = $taskparams[0];
$data['uid'] = $taskparams[1];
$data['gid'] = $taskparams[2];
$data['store_defaultindex'] = $taskparams[3];
$data['loginname'] = $param1;
$data['uid'] = $param2;
$data['gid'] = $param3;
$data['store_defaultindex'] = $param4;
$data = serialize($data);
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("2", "' . $db->escape($data) . '", "'.$server_id.'")');
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`) VALUES ("2", "' . $db->escape($data) . '")');
$doupdate = true;
}
elseif($type == '6'
&& $taskparams[0] != '')
&& $param1 != '')
{
$data = Array();
$data['loginname'] = $taskparams[0];
$data['loginname'] = $param1;
$data = serialize($data);
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("6", "' . $db->escape($data) . '", "'.$server_id.'")');
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`) VALUES ("6", "' . $db->escape($data) . '")');
$doupdate = true;
}
elseif($type == '7'
&& $taskparams[0] != ''
&& $taskparams[1] != '')
&& $param1 != ''
&& $param2 != '')
{
$data = Array();
$data['loginname'] = $taskparams[0];
$data['email'] = $taskparams[1];
$data['loginname'] = $param1;
$data['email'] = $param2;
$data = serialize($data);
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("7", "' . $db->escape($data) . '", "'.$server_id.'")');
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`) VALUES ("7", "' . $db->escape($data) . '")');
$doupdate = true;
}
elseif($type == '8'
&& $taskparams[0] != ''
&& $taskparams[1] != '')
&& $param1 != ''
&& $param2 != '')
{
$data = Array();
$data['loginname'] = $taskparams[0];
$data['homedir'] = $taskparams[1];
$data['loginname'] = $param1;
$data['homedir'] = $param2;
$data = serialize($data);
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`, `sid`) VALUES ("8", "' . $db->escape($data) . '", "'.$server_id.'")');
$db->query('INSERT INTO `' . TABLE_PANEL_TASKS . '` (`type`, `data`) VALUES ("8", "' . $db->escape($data) . '")');
$doupdate = true;
}
if($doupdate === true
&& (int)$settings['system']['realtime_port'] !== 0
&& function_exists('socket_create'))
{
$timeout = 15;
//$socket = @socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($socket !== false)
{
// create the request packet
$packet = chr(0) . chr(1) . 'RUN' . chr(0);
// UDP is connectionless, so we just send on it.
//@socket_sendto($socket, $packet, strlen($packet), 0x100, '127.0.0.1', (int)$settings['system']['realtime_port']);
/*
* this is for TCP-Connections
*/
$time = time();
while(!@socket_connect($socket, '127.0.0.1', (int)$settings['system']['realtime_port']))
{
$err = socket_last_error($socket);
if($err == 115
|| $err == 114)
{
if((time() - $time) >= $timeout)
{
break;
}
sleep(1);
continue;
}
}
/**
* close socket
*/
@socket_close($socket);
}
}
}

View File

@@ -17,16 +17,8 @@
* @version $Id$
*/
function loadSettings(&$settings_data, $db, $server_id = 0)
function loadSettings(&$settings_data, $db)
{
// to check whether we're on a recent
// Froxlor installation which supports
// multiserver-settings, we have to read
// the version from the database
$_dbversion = '';
$_dv = $db->query_first("SELECT `value` FROM `".TABLE_PANEL_SETTINGS."` WHERE `varname` = 'version';");
$_dbversion = $_dv['value'];
$settings = array();
if(is_array($settings_data) && isset($settings_data['groups']) && is_array($settings_data['groups']))
@@ -39,49 +31,11 @@ function loadSettings(&$settings_data, $db, $server_id = 0)
{
if(isset($field_details['settinggroup']) && isset($field_details['varname']) && isset($field_details['default']))
{
$sql_query = 'SELECT
`settinggroup`, `varname`, `value`
FROM
`' . TABLE_PANEL_SETTINGS . '`
WHERE
`settinggroup` = \'' . $db->escape($field_details['settinggroup']) . '\'
AND
`varname` = \'' . $db->escape($field_details['varname']) . '\' ';
// since 0.9.14-svn7 we have $server_id for multi-server-support
// but versions before 0.9.14-svn7 don't have the `sid` field
// in panel_settings, so only append the condition if we're on
// 0.9.14-svn7 or higher
if(compareFroxlorVersion('0.9.14-svn7', $_dbversion))
{
$sql_query_sid = 'AND `sid` = \''. (int)$server_id . '\' ';
} else {
$sql_query_sid = '';
}
$row = $db->query_first($sql_query.$sql_query_sid);
$row = $db->query_first('SELECT `settinggroup`, `varname`, `value` FROM `' . TABLE_PANEL_SETTINGS . '` WHERE `settinggroup` = \'' . $db->escape($field_details['settinggroup']) . '\' AND `varname` = \'' . $db->escape($field_details['varname']) . '\' ');
if(!empty($row))
{
$varvalue = $row['value'];
}
elseif($server_id > 0)
{
// if we're a client (server_id > 0)
// and a setting is not found or not
// needed for clients, we get it from
// the master (server_id = 0)
$sql_query_sid = 'AND `sid` = \'0\' ';
$row = $db->query_first($sql_query.$sql_query_sid);
if(!empty($row))
{
$varvalue = $row['value'];
}
else
{
// default to array-default-value
$varvalue = $field_details['default'];
}
}
else
{
$varvalue = $field_details['default'];

View File

@@ -17,20 +17,11 @@
* @version $Id$
*/
function saveSetting($settinggroup, $varname, $newvalue, $server_id = 0)
function saveSetting($settinggroup, $varname, $newvalue)
{
global $db;
$query = 'UPDATE
`' . TABLE_PANEL_SETTINGS . '`
SET
`value` = \'' . $db->escape($newvalue) . '\'
WHERE
`settinggroup` = \'' . $db->escape($settinggroup) . '\'
AND
`varname`=\'' . $db->escape($varname) . '\'
AND
`sid`=\''. (int)$server_id . '\' ';
$query = 'UPDATE `' . TABLE_PANEL_SETTINGS . '` SET `value` = \'' . $db->escape($newvalue) . '\' WHERE `settinggroup` = \'' . $db->escape($settinggroup) . '\' AND `varname`=\'' . $db->escape($varname) . '\'';
return $db->query($query);
}
?>

View File

@@ -17,11 +17,11 @@
* @version $Id$
*/
function storeSettingField($fieldname, $fielddata, $newfieldvalue, $server_id = 0)
function storeSettingField($fieldname, $fielddata, $newfieldvalue)
{
if(is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] != '' && isset($fielddata['varname']) && $fielddata['varname'] != '')
{
if(saveSetting($fielddata['settinggroup'], $fielddata['varname'], $newfieldvalue, $server_id) != false)
if(saveSetting($fielddata['settinggroup'], $fielddata['varname'], $newfieldvalue) != false)
{
/*
* when fielddata[cronmodule] is set, this means enable/disable a cronjob
@@ -38,7 +38,7 @@ function storeSettingField($fieldname, $fielddata, $newfieldvalue, $server_id =
{
if((int)$fielddata['dependency']['onlyif'] == (int)$newfieldvalue)
{
storeSettingField($fielddata['dependency']['fieldname'], $fielddata['dependency']['fielddata'], $newfieldvalue, $server_id);
storeSettingField($fielddata['dependency']['fieldname'], $fielddata['dependency']['fielddata'], $newfieldvalue);
}
}

View File

@@ -17,16 +17,16 @@
* @version $Id$
*/
function storeSettingHostname($fieldname, $fielddata, $newfieldvalue, $server_id = 0)
function storeSettingHostname($fieldname, $fielddata, $newfieldvalue)
{
$returnvalue = storeSettingField($fieldname, $fielddata, $newfieldvalue, $server_id );
$returnvalue = storeSettingField($fieldname, $fielddata, $newfieldvalue);
if($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && $fielddata['varname'] == 'hostname')
{
global $db, $idna_convert;
$newfieldvalue = $idna_convert->encode($newfieldvalue);
$customerstddomains_result = $db->query('SELECT `standardsubdomain` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `standardsubdomain` <> \'0\' and `sid` = "'.$server_id.'"');
$customerstddomains_result = $db->query('SELECT `standardsubdomain` FROM `' . TABLE_PANEL_CUSTOMERS . '` WHERE `standardsubdomain` <> \'0\'');
$ids = array();
while($customerstddomains_row = $db->fetch_array($customerstddomains_result))
@@ -36,15 +36,8 @@ function storeSettingHostname($fieldname, $fielddata, $newfieldvalue, $server_id
if(count($ids) > 0)
{
if($server_id > 0)
{
$client = froxlorclient::getInstance(null, $db, $server_id);
$syshostname = $client->getSetting('system', 'hostname');
} else {
$syshostname = getSetting('system', 'hostname');
}
$db->query('UPDATE `' . TABLE_PANEL_DOMAINS . '` SET `domain` = REPLACE(`domain`, \'' . $db->escape($syshostname) . '\', \'' . $db->escape($newfieldvalue) . '\') WHERE `id` IN (\'' . implode('\',\'', $ids) . '\') AND `sid` = "'.$server_id.'"');
inserttask('1', $server_id);
$db->query('UPDATE `' . TABLE_PANEL_DOMAINS . '` SET `domain` = REPLACE(`domain`, \'' . $db->escape(getSetting('system', 'hostname')) . '\', \'' . $db->escape($newfieldvalue) . '\') WHERE `id` IN (\'' . implode('\',\'', $ids) . '\')');
inserttask('1');
}
}

View File

@@ -17,20 +17,13 @@
* @version $Id$
*/
function storeSettingIpAddress($fieldname, $fielddata, $newfieldvalue, $server_id = 0)
function storeSettingIpAddress($fieldname, $fielddata, $newfieldvalue)
{
$returnvalue = storeSettingField($fieldname, $fielddata, $newfieldvalue, $server_id);
$returnvalue = storeSettingField($fieldname, $fielddata, $newfieldvalue);
if($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && $fielddata['varname'] == 'ipaddress')
{
if($server_id > 0)
{
$client = froxlorclient::getInstance(null, $db, $server_id);
$mysqlhosts = $client->getSetting('system', 'mysql_access_host');
} else {
$mysqlhosts = getSetting('system', 'mysql_access_host');
}
$mysql_access_host_array = array_map('trim', explode(',', $mysqlhosts));
$mysql_access_host_array = array_map('trim', explode(',', getSetting('system', 'mysql_access_host')));
$mysql_access_host_array[] = $newfieldvalue;
$mysql_access_host_array = array_unique(array_trim($mysql_access_host_array));
$mysql_access_host = implode(',', $mysql_access_host_array);

View File

@@ -17,9 +17,9 @@
* @version $Id$
*/
function storeSettingMysqlAccessHost($fieldname, $fielddata, $newfieldvalue, $server_id = 0)
function storeSettingMysqlAccessHost($fieldname, $fielddata, $newfieldvalue)
{
$returnvalue = storeSettingField($fieldname, $fielddata, $newfieldvalue, $server_id);
$returnvalue = storeSettingField($fieldname, $fielddata, $newfieldvalue);
if($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'system' && isset($fielddata['varname']) && $fielddata['varname'] == 'mysql_access_host')
{
@@ -39,7 +39,7 @@ function storeSettingMysqlAccessHost($fieldname, $fielddata, $newfieldvalue, $se
$mysql_access_host_array = array_unique(array_trim($mysql_access_host_array));
$newfieldvalue = implode(',', $mysql_access_host_array);
correctMysqlUsers($mysql_access_host_array, $server_id);
correctMysqlUsers($mysql_access_host_array);
}
return $returnvalue;