diff --git a/public_html/conf/LSaddons/config.LSaddons.asterisk.php b/public_html/conf/LSaddons/config.LSaddons.asterisk.php
index eaf04949..b927fe0c 100644
--- a/public_html/conf/LSaddons/config.LSaddons.asterisk.php
+++ b/public_html/conf/LSaddons/config.LSaddons.asterisk.php
@@ -29,4 +29,6 @@
// Asterisk hashed password LSformat
define('LS_ASTERISK_HASH_PWD_FORMAT','%{uid}:sip.lsexample.com:%{clearPassword}');
+// Password attribute name to generate MD5 hashed asterisk password
+define('LS_ASTERISK_USERPASSWORD_ATTR','userPassword');
?>
diff --git a/public_html/includes/addons/LSaddons.asterisk.php b/public_html/includes/addons/LSaddons.asterisk.php
index f8fdc8e0..4322dc76 100644
--- a/public_html/includes/addons/LSaddons.asterisk.php
+++ b/public_html/includes/addons/LSaddons.asterisk.php
@@ -29,6 +29,12 @@ LSerror :: defineError('ASTERISK_SUPPORT_01',
LSerror :: defineError('ASTERISK_01',
__("Asterisk : The function %{function} only work with %{objectName}.")
);
+LSerror :: defineError('ASTERISK_02',
+ __("Asterisk : The attribute %{dependency} is missing. Unable to generate MD5 hashed password.")
+);
+LSerror :: defineError('ASTERISK_03',
+ __("Asterisk : Clear password not availlable. Unable to generate MD5 hashed password.")
+);
/**
* Check support of Asterisk by LdapSaisie
@@ -42,6 +48,7 @@ LSerror :: defineError('ASTERISK_01',
$MUST_DEFINE_CONST= array(
'LS_ASTERISK_HASH_PWD_FORMAT',
+ 'LS_ASTERISK_USERPASSWORD_ATTR',
);
foreach($MUST_DEFINE_CONST as $const) {
@@ -80,6 +87,29 @@ LSerror :: defineError('ASTERISK_01',
}
$ldapObject -> registerOtherValue('clearPassword',$clearPassword);
return md5($ldapObject->getFData(LS_ASTERISK_HASH_PWD_FORMAT));
+ }
+
+ /**
+ * Generate asterisk MD5 hashed password
+ *
+ * @author Benjamin Renard
+ *
+ * @param[in] $ldapObject The LSldapObject
+ *
+ * @retval string asterisk MD5 hashed password or False
+ */
+ function generate_asteriskMD5HashedPassword($ldapObject) {
+ if ( get_class($ldapObject -> attrs[ LS_ASTERISK_USERPASSWORD_ATTR ]) != 'LSattribute' ) {
+ LSerror :: addErrorCode('ASTERISK_02',array(LS_ASTERISK_USERPASSWORD_ATTR));
+ return;
+ }
+
+ $password = $ldapObject -> attrs[ LS_ASTERISK_USERPASSWORD_ATTR ] -> ldap -> getClearPassword();
+ if (!$password or empty($password)) {
+ LSerror :: addErrorCode('ASTERISK_03');
+ return;
+ }
+ return hashAsteriskPassword($ldapObject,(string)$password);
}