_("SAMBA Support : la classe smHash ne peut pas être chargée."), 'level' => 'c' ); $GLOBALS['error_code']['SAMBA_SUPPORT_02']= array ( 'msg' => _("SAMBA Support : La constante %{const} n'est pas définie."), 'level' => 'c' ); $GLOBALS['error_code']['SAMBA_SUPPORT_03']= array ( 'msg' => _("SAMBA Support : Les constantes LS_SAMBA_SID_BASE_USER et LS_SAMBA_SID_BASE_GROUP ne doivent pas avoir la même parité pour l'unicité des sambaSID."), 'level' => 'c' ); $GLOBALS['error_code']['SAMBA_01']= array ( 'msg' => _("SAMBA Support : L'attribut %{dependency} est introuvable. Impossible de générer l'attribut %{attr}."), 'level' => 'c' ); /* * Fin des données de configuration */ /* * Verification du support Samba par ldapSaisie * * @author Benjamin Renard * * @retval boolean true si Samba est pleinement supporté, false sinon */ function LSaddon_samba_support() { $retval=true; // Dependance de librairie if ( !class_exists('smbHash') ) { if ( ! @include_once(LS_LIB_DIR . 'class.smbHash.php') ) { $GLOBALS['LSerror'] -> addErrorCode('SAMBA_SUPPORT_O1'); $retval=false; } } $MUST_DEFINE_CONST= array( 'LS_SAMBA_DOMAIN_SID', 'LS_SAMBA_SID_BASE_USER', 'LS_SAMBA_SID_BASE_GROUP', 'LS_SAMBA_UIDNUMBER_ATTR', 'LS_SAMBA_GIDNUMBER_ATTR', 'LS_SAMBA_USERPASSWORD_ATTR' ); foreach($MUST_DEFINE_CONST as $const) { if ( constant($const) == '' ) { $GLOBALS['LSerror'] -> addErrorCode('SAMBA_SUPPORT_O2',$const); $retval=false; } } // Pour l'intégrité des SID if ( (LS_SAMBA_SID_BASE_USER % 2) == (LS_SAMBA_SID_BASE_GROUP % 2) ) { $GLOBALS['LSerror'] -> addErrorCode('SAMBA_SUPPORT_O3'); $retval=false; } return $retval; } /* * Generation de sambaSID * * @author Benjamin Renard * * Number = LS_SAMBA_UIDNUMBER_ATTR * 2 + LS_SAMBA_SID_BASE_USER * sambaSID = LS_SAMBA_DOMAIN_SID-Number * * @param[in] $ldapObject L'objet ldap * * @retval string SambaSID ou false si il y a un problème durant la génération */ function generate_sambaSID($ldapObject) { if ( get_class($ldapObject -> attrs[ LS_SAMBA_UIDNUMBER_ATTR ]) != 'LSattribute' ) { $GLOBALS['LSerror'] -> addErrorCode('SAMBA_01',array('dependency' => LS_SAMBA_UIDNUMBER_ATTR, 'attr' => 'sambaSID')); return; } $uidNumber = $ldapObject -> attrs[ LS_SAMBA_UIDNUMBER_ATTR ] -> getValue() * 2 + LS_SAMBA_SID_BASE_USER; $sambaSID = LS_SAMBA_DOMAIN_SID . '-' . $uidNumber; return ($sambaSID); } /* * Generation de sambaPrimaryGroupSID * * @author Benjamin Renard * * Number = LS_SAMBA_GIDNUMBER_ATTR * 2 + LS_SAMBA_SID_BASE_GROUP * sambaSID = LS_SAMBA_DOMAIN_SID-Number * * @param[in] $ldapObject L'objet ldap * * @retval string sambaPrimaryGroupSID ou false si il y a un problème durant la génération */ function generate_sambaPrimaryGroupSID($ldapObject) { if ( get_class($ldapObject -> attrs[ LS_SAMBA_GIDNUMBER_ATTR ]) != 'LSattribute' ) { $GLOBALS['LSerror'] -> addErrorCode('SAMBA_02',array('dependency' => LS_SAMBA_GIDNUMBER_ATTR, 'attr' => 'sambaPrimaryGroupSID')); return; } $gidNumber = $ldapObject -> attrs[ LS_SAMBA_GIDNUMBER_ATTR ] -> getValue() * 2 + LS_SAMBA_SID_BASE_GROUP; $sambaPrimaryGroupSID = LS_SAMBA_DOMAIN_SID . '-' . $gidNumber; return ($sambaPrimaryGroupSID); } /* * Generation de sambaNTPassword * * @author Benjamin Renard * * @param[in] $ldapObject L'objet ldap * * @retval string sambaNTPassword ou false si il y a un problème durant la génération */ function generate_sambaNTPassword($ldapObject) { if ( get_class($ldapObject -> attrs[ LS_SAMBA_USERPASSWORD_ATTR ]) != 'LSattribute' ) { $GLOBALS['LSerror'] -> addErrorCode('SAMBA_03',array('dependency' => LS_SAMBA_USERPASSWORD_ATTR, 'attr' => 'sambaNTPassword')); return; } $password = $ldapObject -> attrs[ LS_SAMBA_USERPASSWORD_ATTR ] -> ldap -> getClearPassword(); debug('pwd : '.$password); $sambapassword = new smbHash; $sambaNTPassword = $sambapassword -> nthash($password); if($sambaNTPassword == '') { return; } return $sambaNTPassword; } /* * Generation de sambaLMPassword * * @author Benjamin Renard * * @param[in] $ldapObject L'objet ldap * * @retval string sambaLMPassword ou false si il y a un problème durant la génération */ function generate_sambaLMPassword($ldapObject) { if ( get_class($ldapObject -> attrs[ LS_SAMBA_USERPASSWORD_ATTR ]) != 'LSattribute' ) { $GLOBALS['LSerror'] -> addErrorCode('SAMBA_04',array('dependency' => LS_SAMBA_USERPASSWORD_ATTR, 'attr' => 'sambaLMPassword')); return; } $password = $ldapObject -> attrs[ LS_SAMBA_USERPASSWORD_ATTR ] -> ldap -> getClearPassword(); $sambapassword = new smbHash; $sambaLMPassword = $sambapassword -> lmhash($password); if($sambaLMPassword == '') { return; } return $sambaLMPassword; } ?>