コード例 #1
0
ファイル: functions.inc.php プロジェクト: rhertzog/lcs
    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;
    } 
コード例 #2
0
ファイル: action.php プロジェクト: rhertzog/lcs
	} else {
		// Traitement de l'action.
		echo "<h3>Traitement de l'action $action sur le serveur LCS</h3>\n";
		$Subject="[LCS T&#224;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) {
コード例 #3
0
ファイル: ldap.inc.php プロジェクト: rhertzog/lcs
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;
}
コード例 #4
0
           <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&#233; !</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&#232;res, compos&eacute; de lettre(s) et de chiffre(s) avec &#233;ventuellement les caract&#232;res sp&#233;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&#233;rification de votre nouveau mot de passe a &#233;chou&#233; !</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 &ecirc;tre diff&eacute;rent de l'ancien !</div><br />\n");
       }
   }
 } else {
   // Changement du mot de passe
コード例 #5
0
ファイル: smbwebclient.php プロジェクト: rhertzog/lcs
 	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');
		}
コード例 #6
0
ファイル: ajax_ent.php プロジェクト: rhertzog/lcs
	// 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';