fixed syscp-bug #1201 (Virtualusers conflict with local users when using libnss-mysql);
This commit is contained in:
2
TODO
2
TODO
@@ -68,7 +68,7 @@ FIXED 0001210 Add start- and endtime to autoresponder
|
|||||||
0001211 Generated MySQL username too long
|
0001211 Generated MySQL username too long
|
||||||
0001208 HTML Tags in Support Tickets
|
0001208 HTML Tags in Support Tickets
|
||||||
0001207 FTP Passw<73>rter mit Umlauten
|
0001207 FTP Passw<73>rter mit Umlauten
|
||||||
0001201 Virtualusers conflict with local users when using libnss-mysql
|
FIXED 0001201 Virtualusers conflict with local users when using libnss-mysql
|
||||||
0001204 php5-suhosin
|
0001204 php5-suhosin
|
||||||
FIXED 0001203 Add check for PHP version and required PHP modules in install script
|
FIXED 0001203 Add check for PHP version and required PHP modules in install script
|
||||||
0001198 More online help wanted
|
0001198 More online help wanted
|
||||||
|
|||||||
85
lib/functions/system/function.checklastguid.php
Normal file
85
lib/functions/system/function.checklastguid.php
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
<?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 Language
|
||||||
|
* @version $Id: 185.spf.php 106 2010-01-25 10:06:34Z d00p $
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function checkLastGuid
|
||||||
|
*
|
||||||
|
* Checks if the system's last guid
|
||||||
|
* is not higher than the one saved
|
||||||
|
* in froxlor's database.
|
||||||
|
* If it's higher, froxlor needs to
|
||||||
|
* set its last guid to this one
|
||||||
|
* to avoid conflicts with libnss-users
|
||||||
|
*
|
||||||
|
* @param int guid (from froxlor database)
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
function checkLastGuid($froxlor_guid = 0)
|
||||||
|
{
|
||||||
|
global $cronlog;
|
||||||
|
|
||||||
|
$group_lines = array();
|
||||||
|
$group_guids = array();
|
||||||
|
$update_to_guid = 0;
|
||||||
|
|
||||||
|
$g_file = '/etc/group';
|
||||||
|
|
||||||
|
if(file_exists($g_file))
|
||||||
|
{
|
||||||
|
if(is_readable($g_file))
|
||||||
|
{
|
||||||
|
if(true == ($groups = file_get_contents($g_file)))
|
||||||
|
{
|
||||||
|
$group_lines = explode("\n", $groups);
|
||||||
|
|
||||||
|
foreach($group_lines as $group)
|
||||||
|
{
|
||||||
|
$group_guids[] = explode(":", $group);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($group_guids as $idx => $group)
|
||||||
|
{
|
||||||
|
$guid = $group[2];
|
||||||
|
|
||||||
|
if($guid > $froxlor_guid)
|
||||||
|
{
|
||||||
|
$update_to_guid = $guid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($update_to_guid > $froxlor_guid)
|
||||||
|
{
|
||||||
|
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Updating froxlor last guid to '.$update_to_guid);
|
||||||
|
saveSetting('system', 'lastguid', $update_to_guid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'File /etc/group not readable; cannot check for latest guid');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'File /etc/group not readable; cannot check for latest guid');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'File /etc/group does not exist; cannot check for latest guid');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -259,6 +259,14 @@ if($db->num_rows($result_tasks) != 0)
|
|||||||
|
|
||||||
$db->query('UPDATE `' . TABLE_PANEL_SETTINGS . '` SET `value` = UNIX_TIMESTAMP() WHERE `settinggroup` = \'system\' AND `varname` = \'last_tasks_run\' ');
|
$db->query('UPDATE `' . TABLE_PANEL_SETTINGS . '` SET `value` = UNIX_TIMESTAMP() WHERE `settinggroup` = \'system\' AND `varname` = \'last_tasks_run\' ');
|
||||||
|
|
||||||
|
/*
|
||||||
|
* we have to check the system's last guid with every cron run
|
||||||
|
* in case the admin installed new software which added a new user
|
||||||
|
* so users in the database don't conflict with system users
|
||||||
|
*/
|
||||||
|
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Checking system\'s last guid');
|
||||||
|
checkLastGuid($settings['system']['lastguid']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* STARTING CRONSCRIPT FOOTER
|
* STARTING CRONSCRIPT FOOTER
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user