refactoring
This commit is contained in:
parent
e8c0fb9371
commit
727390064f
|
@ -42,12 +42,14 @@ function array_delete($values, $array) {
|
||||||
// Loop for every entry and check if it should be removed
|
// Loop for every entry and check if it should be removed
|
||||||
if (is_array($array)) {
|
if (is_array($array)) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach ($array as $array_value)
|
foreach ($array as $array_value) {
|
||||||
if (!@in_array($array_value, $values))
|
if (!@in_array($array_value, $values)) {
|
||||||
$return[] = $array_value;
|
$return[] = $array_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
else return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,13 +60,17 @@ function array_delete($values, $array) {
|
||||||
* @param array $haystack array
|
* @param array $haystack array
|
||||||
*/
|
*/
|
||||||
function in_array_ignore_case($needle, $haystack) {
|
function in_array_ignore_case($needle, $haystack) {
|
||||||
if( ! is_array( $haystack ) )
|
if (!is_array($haystack)) {
|
||||||
return false;
|
return false;
|
||||||
if( ! is_string( $needle ) )
|
}
|
||||||
|
if (!is_string($needle)) {
|
||||||
return false;
|
return false;
|
||||||
foreach( $haystack as $element )
|
}
|
||||||
if( is_string( $element ) && 0 == strcasecmp( $needle, $element ) )
|
foreach ($haystack as $element) {
|
||||||
|
if( is_string( $element ) && 0 == strcasecmp( $needle, $element ) ) {
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +83,7 @@ function getdays() {
|
||||||
$days = time() / 86400;
|
$days = time() / 86400;
|
||||||
settype($days, 'integer');
|
settype($days, 'integer');
|
||||||
return $days;
|
return $days;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a list of Samba flags and creates the corresponding flag string.
|
* Takes a list of Samba flags and creates the corresponding flag string.
|
||||||
|
@ -89,17 +95,31 @@ function smbflag($input) {
|
||||||
// Start character
|
// Start character
|
||||||
$flag = "[";
|
$flag = "[";
|
||||||
// Add Options
|
// Add Options
|
||||||
if ($input['W']) $flag .= "W"; else $flag .= "U";
|
if ($input['W']) {
|
||||||
if ($input['D']) $flag .= "D";
|
$flag .= "W";
|
||||||
if ($input['X']) $flag .= "X";
|
}
|
||||||
if ($input['N']) $flag .= "N";
|
else {
|
||||||
if ($input['S']) $flag .= "S";
|
$flag .= "U";
|
||||||
if ($input['H']) $flag .= "H";
|
}
|
||||||
|
if ($input['D']) {
|
||||||
|
$flag .= "D";
|
||||||
|
}
|
||||||
|
if ($input['X']) {
|
||||||
|
$flag .= "X";
|
||||||
|
}
|
||||||
|
if ($input['N']) {
|
||||||
|
$flag .= "N";
|
||||||
|
}
|
||||||
|
if ($input['S']) {
|
||||||
|
$flag .= "S";
|
||||||
|
}
|
||||||
|
if ($input['H']) {
|
||||||
|
$flag .= "H";
|
||||||
|
}
|
||||||
// Expand string to fixed length
|
// Expand string to fixed length
|
||||||
$flag = str_pad($flag, 12);
|
$flag = str_pad($flag, 12);
|
||||||
// End character
|
// End character
|
||||||
$flag = $flag. "]";
|
return $flag . "]";
|
||||||
return $flag;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -131,8 +151,6 @@ function ntPassword($password) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the hash value of a plain text password.
|
* Returns the hash value of a plain text password.
|
||||||
* @see getSupportedHashTypes()
|
* @see getSupportedHashTypes()
|
||||||
|
@ -178,8 +196,10 @@ function pwd_hash($password, $enabled = true, $hashType = 'SSHA') {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// enable/disable password
|
// enable/disable password
|
||||||
if (! $enabled) return pwd_disable($hash);
|
if (!$enabled) {
|
||||||
else return $hash;
|
return pwd_disable($hash);
|
||||||
|
}
|
||||||
|
return $hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -231,9 +251,13 @@ function pwd_enable($hash) {
|
||||||
// enable hash
|
// enable hash
|
||||||
return substr($hash, 0, $pos + 1) . substr($hash, $pos + 2, strlen($hash));
|
return substr($hash, 0, $pos + 1) . substr($hash, $pos + 2, strlen($hash));
|
||||||
}
|
}
|
||||||
else return $hash; // not disabled
|
else {
|
||||||
|
return $hash; // not disabled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return $hash; // password is plain text
|
||||||
}
|
}
|
||||||
else return $hash; // password is plain text
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,9 +280,13 @@ function pwd_disable($hash) {
|
||||||
// hash already disabled
|
// hash already disabled
|
||||||
return $hash;
|
return $hash;
|
||||||
}
|
}
|
||||||
else return substr($hash, 0, $pos + 1) . "!" . substr($hash, $pos + 1, strlen($hash)); // not disabled
|
else {
|
||||||
|
return substr($hash, 0, $pos + 1) . "!" . substr($hash, $pos + 1, strlen($hash)); // not disabled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return $hash; // password is plain text
|
||||||
}
|
}
|
||||||
else return $hash; // password is plain text
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,14 +316,17 @@ function pwd_is_lockable($password) {
|
||||||
*/
|
*/
|
||||||
function pwd_is_enabled($hash) {
|
function pwd_is_enabled($hash) {
|
||||||
// disabled passwords have a "!" or "*" at the beginning (old wrong LAM method)
|
// disabled passwords have a "!" or "*" at the beginning (old wrong LAM method)
|
||||||
if ((substr($hash, 0, 2) == "!{") || ((substr($hash, 0, 2) == "*{"))) return false;
|
if ((substr($hash, 0, 2) == "!{") || ((substr($hash, 0, 2) == "*{"))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (substr($hash, 0, 1) == "{") {
|
if (substr($hash, 0, 1) == "{") {
|
||||||
$pos = strrpos($hash, "}");
|
$pos = strrpos($hash, "}");
|
||||||
// check if hash starts with "!" or "*"
|
// check if hash starts with "!" or "*"
|
||||||
if ((substr($hash, $pos + 1, 1) == "!") || (substr($hash, $pos + 1, 1) == "*")) return false;
|
return ((substr($hash, $pos + 1, 1) !== "!") && (substr($hash, $pos + 1, 1) !== "*"));
|
||||||
else return true;
|
}
|
||||||
|
else {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -402,13 +433,27 @@ function search_domains($server = null, $suffix = null) {
|
||||||
$ret[$i]->dn = $units[$i]['dn'];
|
$ret[$i]->dn = $units[$i]['dn'];
|
||||||
$ret[$i]->name = $units[$i]['sambadomainname'][0];
|
$ret[$i]->name = $units[$i]['sambadomainname'][0];
|
||||||
$ret[$i]->SID = $units[$i]['sambasid'][0];
|
$ret[$i]->SID = $units[$i]['sambasid'][0];
|
||||||
if (isset($units[$i]['sambanextrid'][0])) $ret[$i]->nextRID = $units[$i]['sambanextrid'][0];
|
if (isset($units[$i]['sambanextrid'][0])) {
|
||||||
if (isset($units[$i]['sambanextgrouprid'][0])) $ret[$i]->nextGroupRID = $units[$i]['sambanextgrouprid'][0];
|
$ret[$i]->nextRID = $units[$i]['sambanextrid'][0];
|
||||||
if (isset($units[$i]['sambanextuserrid'][0])) $ret[$i]->nextUserRID = $units[$i]['sambanextuserrid'][0];
|
}
|
||||||
if (isset($units[$i]['sambaalgorithmicridbase'][0])) $ret[$i]->RIDbase = $units[$i]['sambaalgorithmicridbase'][0];
|
if (isset($units[$i]['sambanextgrouprid'][0])) {
|
||||||
if (isset($units[$i]['sambaminpwdage'][0])) $ret[$i]->minPwdAge = $units[$i]['sambaminpwdage'][0];
|
$ret[$i]->nextGroupRID = $units[$i]['sambanextgrouprid'][0];
|
||||||
if (isset($units[$i]['sambamaxpwdage'][0])) $ret[$i]->maxPwdAge = $units[$i]['sambamaxpwdage'][0];
|
}
|
||||||
if (isset($units[$i]['sambapwdhistorylength'][0])) $ret[$i]->pwdHistoryLength = $units[$i]['sambapwdhistorylength'][0];
|
if (isset($units[$i]['sambanextuserrid'][0])) {
|
||||||
|
$ret[$i]->nextUserRID = $units[$i]['sambanextuserrid'][0];
|
||||||
|
}
|
||||||
|
if (isset($units[$i]['sambaalgorithmicridbase'][0])) {
|
||||||
|
$ret[$i]->RIDbase = $units[$i]['sambaalgorithmicridbase'][0];
|
||||||
|
}
|
||||||
|
if (isset($units[$i]['sambaminpwdage'][0])) {
|
||||||
|
$ret[$i]->minPwdAge = $units[$i]['sambaminpwdage'][0];
|
||||||
|
}
|
||||||
|
if (isset($units[$i]['sambamaxpwdage'][0])) {
|
||||||
|
$ret[$i]->maxPwdAge = $units[$i]['sambamaxpwdage'][0];
|
||||||
|
}
|
||||||
|
if (isset($units[$i]['sambapwdhistorylength'][0])) {
|
||||||
|
$ret[$i]->pwdHistoryLength = $units[$i]['sambapwdhistorylength'][0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
@ -593,12 +638,11 @@ function get_preg($argument, $regexp) {
|
||||||
$pregexpr = '/^[[:digit:]]+[KMGTkmgt]?$/';
|
$pregexpr = '/^[[:digit:]]+[KMGTkmgt]?$/';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($pregexpr!='')
|
if (($pregexpr != '') && preg_match($pregexpr, $argument)) {
|
||||||
if (preg_match($pregexpr, $argument)) {
|
/* Bug in php preg_match doesn't work correct with utf8 */
|
||||||
/* Bug in php preg_match doesn't work correct with utf8 */
|
setlocale(LC_ALL, $language);
|
||||||
setlocale(LC_ALL, $language);
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
// Now we check "negative" cases, characters which are not allowed
|
// Now we check "negative" cases, characters which are not allowed
|
||||||
$pregexpr = '';
|
$pregexpr = '';
|
||||||
switch ($regexp) {
|
switch ($regexp) {
|
||||||
|
@ -612,12 +656,11 @@ function get_preg($argument, $regexp) {
|
||||||
$pregexpr = '/[[:digit:]]/';
|
$pregexpr = '/[[:digit:]]/';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ($pregexpr!='')
|
if (($pregexpr != '') && !preg_match($pregexpr, $argument)) {
|
||||||
if (!preg_match($pregexpr, $argument)) {
|
/* Bug in php preg_match doesn't work correct with utf8 */
|
||||||
/* Bug in php preg_match doesn't work correct with utf8 */
|
setlocale(LC_ALL, $language);
|
||||||
setlocale(LC_ALL, $language);
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
/* Bug in php preg_match doesn't work correct with utf8 */
|
/* Bug in php preg_match doesn't work correct with utf8 */
|
||||||
setlocale(LC_ALL, $language);
|
setlocale(LC_ALL, $language);
|
||||||
return false;
|
return false;
|
||||||
|
@ -901,7 +944,9 @@ function deleteDN($dn, $recursive) {
|
||||||
for ($i = 0; $i < sizeof($entries); $i++) {
|
for ($i = 0; $i < sizeof($entries); $i++) {
|
||||||
// delete recursively
|
// delete recursively
|
||||||
$subErrors = deleteDN($entries[$i]['dn'], $recursive);
|
$subErrors = deleteDN($entries[$i]['dn'], $recursive);
|
||||||
for ($e = 0; $e < sizeof($subErrors); $e++) $errors[] = $subErrors[$e];
|
for ($e = 0; $e < sizeof($subErrors); $e++) {
|
||||||
|
$errors[] = $subErrors[$e];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1029,9 +1074,15 @@ function compareDN(&$a, &$b) {
|
||||||
// compare parts
|
// compare parts
|
||||||
if ($part_a == $part_b) { // part is identical
|
if ($part_a == $part_b) { // part is identical
|
||||||
if ($i == ($len - 1)) {
|
if ($i == ($len - 1)) {
|
||||||
if ($len_a > $len_b) return 1;
|
if ($len_a > $len_b) {
|
||||||
elseif ($len_a < $len_b) return -1;
|
return 1;
|
||||||
else return 0; // DNs are identical
|
}
|
||||||
|
elseif ($len_a < $len_b) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return 0; // DNs are identical
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1110,12 +1161,7 @@ function isObfuscatedText($text) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$deob = base64_decode(str_rot13($text));
|
$deob = base64_decode(str_rot13($text));
|
||||||
if (strpos($deob, 'LAM_OBFUSCATE:') === 0) {
|
return (strpos($deob, 'LAM_OBFUSCATE:') === 0);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1125,7 +1171,9 @@ function isObfuscatedText($text) {
|
||||||
* @return String RDN attribute name
|
* @return String RDN attribute name
|
||||||
*/
|
*/
|
||||||
function extractRDNAttribute($dn) {
|
function extractRDNAttribute($dn) {
|
||||||
if ($dn == null) return null;
|
if ($dn == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
$parts = explode("=", substr($dn, 0, strpos($dn, ',')));
|
$parts = explode("=", substr($dn, 0, strpos($dn, ',')));
|
||||||
return $parts[0];
|
return $parts[0];
|
||||||
}
|
}
|
||||||
|
@ -1137,7 +1185,9 @@ function extractRDNAttribute($dn) {
|
||||||
* @return String RDN attribute value
|
* @return String RDN attribute value
|
||||||
*/
|
*/
|
||||||
function extractRDNValue($dn) {
|
function extractRDNValue($dn) {
|
||||||
if (empty($dn)) return null;
|
if (empty($dn)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (strpos($dn, '=') === false) {
|
if (strpos($dn, '=') === false) {
|
||||||
return $dn;
|
return $dn;
|
||||||
}
|
}
|
||||||
|
@ -1157,7 +1207,9 @@ function extractRDNValue($dn) {
|
||||||
* @return String DN suffix
|
* @return String DN suffix
|
||||||
*/
|
*/
|
||||||
function extractDNSuffix($dn) {
|
function extractDNSuffix($dn) {
|
||||||
if ($dn == null) return null;
|
if ($dn == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return substr($dn, strpos($dn, ',')+1);
|
return substr($dn, strpos($dn, ',')+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue