$path) { if(preg_match('/passwordMethod/i', $class) && !preg_match("/^passwordMethod$/i", $class)){ $name = preg_replace ("/passwordMethod/i", "", $class); $test = new $class($config, ""); if($test->is_available()) { $plugs= $test->get_hash_name(); if (!is_array($plugs)){ $plugs= array($plugs); } foreach ($plugs as $plugname){ $cfg = $test->is_configurable(); $ret['name'][$i]= $plugname; $ret['class'][$i]=$class; $ret['is_configurable'][$i]= $cfg; $ret['object'][$i]= $test; $ret['desc'][$i] = $test->get_description(); $ret[$i]['name'] = $plugname; $ret[$i]['class'] = $class; $ret[$i]['object']= $test; $ret[$i]['is_configurable']= $cfg; $ret[$i]['desc'] = $test->get_description(); $ret[$plugname]=$class; $i++; } } } } session::set("passwordMethod::get_available_methods",$ret); } return(session::get("passwordMethod::get_available_methods")); } function get_description() { return(""); } // Method to let password backends remove additional information besides // the userPassword attribute function remove_from_parent() { } // Method to let passwords backends manage additional information // besides the userAttribute entry function set_password($password) { return(TRUE); } // Return true if this password method provides a configuration dialog function is_configurable() { return FALSE; } // Provide a subdialog to configure a password method function configure() { return ""; } // Save information to LDAP function save($dn) { } // Try to find out if it's our hash... static function get_method($password_hash,$dn = "") { global $config; $methods= passwordMethod::get_available_methods(); foreach ($methods['class'] as $class){ $test = new $class($config,$dn); # All listed methods are available. # if(!$test->is_available())continue; $method= $test->_extract_method($password_hash); if ($method != ""){ $test->set_hash($method); return $test; } } msg_dialog::display(_("Error"), _("Cannot find a suitable password method for the current hash!"), ERROR_DIALOG); return NULL; } function _extract_method($password_hash) { $hash= $this->get_hash_name(); if (preg_match("/^\{$hash\}/i", $password_hash)){ return $hash; } return ""; } static function make_hash($password, $hash) { global $config; $methods= passwordMethod::get_available_methods(); $tmp= new $methods[$hash]($config); $tmp->set_hash($hash); return $tmp->generate_hash($password); } function set_hash($hash) { $this->hash= $hash; } function get_hash() { return $this->hash; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>