better error handling and no longer depend on ssh2 module

This commit is contained in:
Roland Gruber 2010-05-14 12:57:00 +00:00
parent 6a31925d00
commit e3bffe6b7a
3 changed files with 37 additions and 22 deletions

View File

@ -340,12 +340,12 @@ sub getQuotas {
logMessage(LOG_ERR, "Unable to read quota for $user[0].");
}
else {
$return = "$quota_usr[$i][1],$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7]:$return";
$return = "QUOTA_ENTRY $quota_usr[$i][1],$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7]:$return";
}
}
else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; }
else { $return = "QUOTA_ENTRY $quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; }
}
else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; }
else { $return = "QUOTA_ENTRY $quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; }
$i++;
}
($<, $>) = ($>, $<); # Give up root previleges

View File

@ -572,13 +572,12 @@ class posixAccount extends baseModule implements passwordService {
$result = lamdaemon(implode(posixAccount::$SPLIT_DELIMITER, array($this->attributes['uid'][0], "home", "add", "0".$_SESSION['config']->get_scriptRights())), $server);
// lamdaemon results
if (is_array($result)) {
foreach ($result as $singleresult) {
$singleresult = explode(",", $singleresult);
if (is_array($singleresult)) {
if (($singleresult[0] == 'ERROR') || ($singleresult[0] == 'INFO') || ($singleresult[0] == 'WARN')) {
call_user_func_array('StatusMessage', $singleresult);
}
}
$singleresult = explode(",", $result[0]);
if (($singleresult[0] == 'ERROR') || ($singleresult[0] == 'INFO') || ($singleresult[0] == 'WARN')) {
call_user_func_array('StatusMessage', $singleresult);
}
else {
StatusMessage('ERROR', $result[0]);
}
}
}
@ -972,8 +971,7 @@ class posixAccount extends baseModule implements passwordService {
array('kind' => 'input', 'name' => 'homeDirectory', 'type' => 'text', 'size' => '30', 'maxlength' => '255', 'value' => $this->attributes['homeDirectory'][0]),
array('kind' => 'help', 'value' => 'homeDirectory'));
if ($this->getAccountContainer()->isNewAccount && ($_SESSION['config']->get_scriptPath() != null)
&& ($_SESSION['config']->get_scriptPath() != '')
&& extension_loaded('ssh2')) {
&& ($_SESSION['config']->get_scriptPath() != '')) {
// get list of lamdaemon servers
$lamdaemonServers = explode(";", $_SESSION['config']->get_scriptServers());
for ($i = 0; $i < sizeof($lamdaemonServers); $i++) {
@ -1019,7 +1017,7 @@ class posixAccount extends baseModule implements passwordService {
* @return meta HTML code
*/
function display_html_delete() {
if ($this->get_scope() == 'user' && ($_SESSION['config']->get_scriptPath() != null) && extension_loaded('ssh2')) {
if ($this->get_scope() == 'user' && ($_SESSION['config']->get_scriptPath() != null)) {
$return[] = array (
array('kind' => 'text', 'text' => _('Delete home directory')),
array('kind' => 'input', 'name' => 'deletehomedir', 'type' => 'checkbox'),
@ -1109,7 +1107,7 @@ class posixAccount extends baseModule implements passwordService {
array('kind' => 'select', 'name' => 'posixAccount_loginShell', 'options' => $shelllist, 'options_selected' => array("/bin/bash")),
array('kind' => 'help', 'value' => 'loginShell', 'scope' => 'user'));
// lamdaemon settings
if (($_SESSION['config']->get_scriptPath() != null) && extension_loaded('ssh2')) {
if (($_SESSION['config']->get_scriptPath() != null)) {
$return[] = array(
array('kind' => 'text', 'text' => _('Create home directory') . ": "),
array('kind' => 'input', 'type' => 'checkbox', 'name' => 'posixAccount_createHomedir'),

View File

@ -40,6 +40,8 @@ $Id$
class quota extends baseModule {
private static $SPLIT_DELIMITER = "###x##y##x###";
private static $QUOTA_PREFIX = 'QUOTA_ENTRY ';
/** this functin fills the error message array with messages
**/
@ -83,8 +85,6 @@ class quota extends baseModule {
// module dependencies
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
}
// PHP extensions
$return['extensions'] = array('ssh2');
// managed attributes
$return['attributes'] = array('uid', 'cn');
// available PDF fields
@ -157,7 +157,6 @@ class quota extends baseModule {
*
*/
function initQuotas() {
if (!extension_loaded('ssh2')) return;
if (isset($this->quota)) return;
$userName = '+';
if (($this->getAccountContainer() != null) && !$this->getAccountContainer()->isNewAccount) {
@ -180,6 +179,8 @@ class quota extends baseModule {
$allQuotas = explode(":", $quotas[0]);
array_pop($allQuotas); // remove empty element at the end
for ($i = 0; $i < sizeof($allQuotas); $i++) {
if (strpos($allQuotas[$i], quota::$QUOTA_PREFIX) !== 0) continue;
$allQuotas[$i] = substr($allQuotas[$i], strlen(quota::$QUOTA_PREFIX));
$singleQuota = explode(",", $allQuotas[$i]);
$this->quota[$server][$i] = $singleQuota;
if ($this->quota[$server][$i][4] < time()) $this->quota[$server][$i][4] = '';
@ -359,11 +360,6 @@ class quota extends baseModule {
* @return array HTML meta data
*/
function display_html_attributes() {
if (!extension_loaded('ssh2')) {
return array(
array(array('kind' => 'text', 'text' => _('This module requires the PHP ssh2 extension.'))
));
}
$return = array();
$this->initQuotas();
if (!is_array($this->quota)) return $return;
@ -462,9 +458,16 @@ class quota extends baseModule {
$dirs = explode(":", $quotas[0]);
array_pop($dirs); // remove empty element at the end
for ($i = 0; $i < sizeof($dirs); $i++) {
if (strpos($dirs[$i], quota::$QUOTA_PREFIX) !== 0) {
unset($dirs[$i]);
$i--;
continue;
}
$dirs[$i] = substr($dirs[$i], strlen(quota::$QUOTA_PREFIX));
$dirs[$i] = explode(",", $dirs[$i]);
$dirs[$i] = $dirs[$i][0];
}
$dirs = array_values($dirs);
if (sizeof($dirs) < 1) continue; // stop if no quota directories were found
$fieldContent = array();
$fieldContent[] = array (
@ -516,9 +519,16 @@ class quota extends baseModule {
$dirs = explode(":", $quotas[0]);
array_pop($dirs); // remove empty element at the end
for ($i = 0; $i < sizeof($dirs); $i++) {
if (strpos($dirs[$i], quota::$QUOTA_PREFIX) !== 0) {
unset($dirs[$i]);
$i--;
continue;
}
$dirs[$i] = substr($dirs[$i], strlen(quota::$QUOTA_PREFIX));
$dirs[$i] = explode(",", $dirs[$i]);
$dirs[$i] = $dirs[$i][0];
}
$dirs = array_values($dirs);
for ($i = 0; $i < sizeof($dirs); $i++) {
if (!get_preg($options["quota_softblock_" . $id . "_" . $dirs[$i]][0], 'digit')) $return[] = $this->messages['softblock'][0];
if (!get_preg($options["quota_hardblock_" . $id . "_" . $dirs[$i]][0], 'digit')) $return[] = $this->messages['hardblock'][0];
@ -629,9 +639,16 @@ class quota extends baseModule {
$dirs = explode(":", $quotas[0]);
array_pop($dirs); // remove empty element at the end
for ($i = 0; $i < sizeof($dirs); $i++) {
if (strpos($dirs[$i], quota::$QUOTA_PREFIX) !== 0) {
unset($dirs[$i]);
$i--;
continue;
}
$dirs[$i] = substr($dirs[$i], strlen(quota::$QUOTA_PREFIX));
$dirs[$i] = explode(",", $dirs[$i]);
$dirs[$i] = $dirs[$i][0];
}
$dirs = array_values($dirs);
for ($i = 0; $i < sizeof($dirs); $i++) {
$return[] = array(
'name' => 'quota_' . $server . ':' . $dirs[$i],