function open_session($login, $passwd, $cryptpasswd) { /* Verifie le login et le mot de passe sur l'annuaire ldap ouvre une session et cree le home et la bdd en cas de succes Renvoie : * true en cas de succes de la creation du home et de la bdd * false dans les autres cas */ global $urlauth, $scriptsbinpath, $authlink, $DBAUTH, $key_priv, $auth_mod; if ( user_valid_passwd ( $login , $passwd ) ) { /* Le mot de passe de $login est valide On ouvre une session LCS */ // Ouverture de la session php Lcs session_name("Lcs"); @session_start(); $_SESSION['login'] = $login; $_SESSION['token'] = rand(); // Creation du cookie LCSuser pour roundcube, pma... setcookie("LCSuser", xoft_encode( urlencode($passwd) ,$key_priv), 0,"/","",0); // Creation Espace Perso Utilisateur if ( !@is_dir("/home/".$login) || (@is_dir("/home/".$login) && ( !@is_dir("/home/".$login."/public_html") || !@is_dir("/home/".$login."/Maildir") || !@is_dir("/home/".$login."/Documents") || !@is_dir("/home/".$login."/Profile"))) ) { #system ("echo \"DBG >> Creation Espace perso\" >> /tmp/log.lcs"); $group=strtolower(people_get_group ($login)); exec ("/usr/bin/sudo /usr/share/lcs/scripts/mkhdir.sh ".escapeshellarg($login)." '$group' '$cryptpasswd' > /dev/null 2>&1"); } else { // Verification acces bdd et reinitialisation le cas echeant #system ("echo \"DBG >> Verif. acces mysql $login $passwd\" >> /tmp/log.lcs"); @((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); @($GLOBALS["___mysqli_ston"] = mysqli_connect("localhost", $login, $passwd )); if ( ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) ) { exec ( escapeshellarg("$scriptsbinpath/mysqlPasswInit.pl")." ". escapeshellarg($login) ." ". escapeshellarg($passwd) ); #system ("echo \"DBG >> Reinit mdp mysql $login $passwd\" >> /tmp/log.lcs"); } @((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); } return true; } return false; }
} else { // Traitement de l'action. echo "<h3>Traitement de l'action $action sur le serveur LCS</h3>\n"; $Subject="[LCS Tàche d'administration] $action\n"; list($user,$groups)=people_get_variables("admin", true); $to = $user["email"]; $From = "root@$domain"; $Subject ="\nCR d'action sur serveur LCS\n"; $Body = $Subject; $Body.= "L'action $action \n"; $Body.= $commandes."\n"; // Execution de l'action sur le serveur if ( $action == "synchro_mdp" ) { $pass = urldecode( xoft_decode($_COOKIE['LCSuser'],$key_priv) ); # Verify decode pass if ( user_valid_passwd ( "admin", $pass ) ) { # reencode temporarily pass with openssl $cryptpass = exec ("echo ". escapeshellarg($pass) ." | openssl aes-256-cbc -a -salt -pass pass:$key_priv"); exec ("/usr/bin/sudo /usr/share/lcs/scripts/action.sh 'synchro_mdp' '$cryptpass'" , $AllOutput, $ReturnValue); } else $ReturnValue="1"; } else exec ("/usr/bin/sudo /usr/share/lcs/scripts/action.sh ".escapeshellarg($action)."" , $AllOutput, $ReturnValue); if ($DEBUG) { echo "$MsgD $ReturnValue ".count($AllOutput)."<br />"; for ($loop=0;$loop<count($AllOutput);$loop++) echo $AllOutput[$loop]."<br>"; } if ($ReturnValue==0) {
function pwdMustChange ($login) { global $ldap_server, $ldap_port, $dn, $pwdPolicy; if ( $pwdPolicy == "1" ) { // Recuperation de la date de naissance $filter="(uid=$login)"; $ldap_search_people_attr = array("gecos"); $ds = @ldap_connect ( $ldap_server, $ldap_port ); if ( $ds ) { $r = @ldap_bind ( $ds ); // Bind anonyme if ($r) { // Recherche dans la branche people $result = @ldap_search ( $ds, $dn["people"], $filter, $ldap_search_people_attr ); if ($result) { $info = @ldap_get_entries ( $ds, $result ); if ( $info["count"]) { for ($loop=0; $loop<$info["count"];$loop++) { $gecos = (isset($info[0]["gecos"][0])) ?$info[0]["gecos"][0] :" ,000000, , "; $tmp = explode (",",$gecos); $date_naiss=$tmp[1]; } } @ldap_free_result ( $result ); } else $error = "Erreur de lecture dans l'annuaire LDAP"; } else $error = "Echec du bind anonyme"; @ldap_close ( $ds ); } else $error = "Erreur de connection au serveur LDAP"; if (user_valid_passwd($login,$date_naiss)) return true; else return false; } else return false; }
<td colspan=2 align=center> <input type="hidden" name="mod_pwd" value="true"> <input name="jeton" type="hidden" value="<?php echo md5($_SESSION['token'].htmlentities($_SERVER['PHP_SELF'])); ?>" /> <input type="submit" value="Valider"> </td> </tr> </table> </form> <? // Affichage logo crypto crypto_nav(); echo "</div>\n"; // Affichage des erreurs if( $mod_pwd ) { // Affichage des messages d'alerte if (!user_valid_passwd ( $login, $old_password ) ) { // Verification de l'ancien mot de passe echo gettext("<div class='error_msg'>Votre mot de passe actuel est erroné !</div><br />\n"); } elseif ( !verifPwd($new_password) ) { // Verification du nouveau mot de passe echo gettext("<div class='error_msg'>Vous devez proposer un mot de passe d'une longueur comprise entre 4 et 8 caractères, composé de lettre(s) et de chiffre(s) avec éventuellement les caractères spéciaux suivants : $char_spec</div><br />\n"); } elseif ( $new_password != $verif_password ) { // Verification de la coherence des deux mots de passe echo gettext("<div class='error_msg'>La vérification de votre nouveau mot de passe a échoué !</div><br />\n"); } elseif ( $new_password == $old_password ) { // Verification si le nouveau pasword est différent de l'ancien echo gettext("<div class='error_msg'>Le nouveau mot de passe doit être différent de l'ancien !</div><br />\n"); } } } else { // Changement du mot de passe
include "/var/www/Annu/includes/ldap.inc.php"; if(@ldap_get_right("smbweb_is_open",$login)!='Y') { $swc = new smbwebclient; $swc->NoRun('noright'); } else { if(@ldap_get_right("lcs_is_admin",$login)=='Y') { $acces="y"; } else { // Test du changement du mot de passe include("/var/www/Annu/includes/crob_ldap_functions.php"); $attribut=array("gecos"); $tab=get_tab_attribut("people", "uid=$login", $attribut); // On ne doit avoir (au plus (*)) qu'un gecos par utilisateur. // (*) admin n'a pas de gecos $tab2=explode(",",$tab[0]); if (user_valid_passwd($login,$tab2[1])) {$acces="n";} else {$acces="y";} } if ($acces=="y") { //echo "Acces autorise."; $swc = new smbwebclient; $swc->cfgUserAuth = 'LcsAuth'; $swc->cfgSambaRoot = strtoupper($se3domain); $swc->cfgDefaultServer = strtoupper($se3netbios); $swc->ShareView = $shareview; $swc->Login = $login; $swc->Run(); } else { $swc = new smbwebclient; $swc->NoRun('passdef'); }
// Post CR report echo $cr; exit; } //check password account if ( isset($_POST['string_old_mdp']) && (isset($_POST['string_new_mdp'])) && (isset($_POST['string_renew_mdp'])) && (isset($string_login)) ) { // Must return "OK" if succes, "NOK" if unsucces and "ERROR" if system error $login = $string_login; // Decode crypt string $old_password = decodekey($string_old_mdp); $new_password = decodekey($string_new_mdp); $verif_password = decodekey($string_renew_mdp); if ( verifPwd($new_password) && ($new_password == $verif_password) && (user_valid_passwd ( $string_login, $old_password )) && ($new_password!=$old_password) ) { if ( userChangedPwd($string_login, $new_password, $old_password ) ) { $cr1='OK'; // verify if password data base of the user must change @((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); @($GLOBALS["___mysqli_ston"] = mysqli_connect("localhost", $login, $new_password )); if ( ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) ) exec ( escapeshellarg("$scriptsbinpath/mysqlPasswInit.pl")." ". escapeshellarg($login) ." ". escapeshellarg($passwd) ); @((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); } else $cr1='NOK'; } else $cr1='NOK';