<?php
// ------------------------------------------------------------------------- //
// Coppermine Photo Gallery 1.3.2                                            //
// ------------------------------------------------------------------------- //
// Copyright (C) 2002-2004 Gregory DEMAR                                     //
// http://www.chezgreg.net/coppermine/                                       //
// ------------------------------------------------------------------------- //
// Updated by the Coppermine Dev Team                                        //
// (http://coppermine.sf.net/team/)                                          //
// see /docs/credits.html for details                                        //
// ------------------------------------------------------------------------- //
// This program is free software; you can redistribute it and/or modify      //
// it under the terms of the GNU General Public License as published by      //
// the Free Software Foundation; either version 2 of the License, or         //
// (at your option) any later version.                                       //
// ------------------------------------------------------------------------- //
// CVS version: $Id: login.php,v 1.5 2004/07/24 15:03:53 gaugau Exp $
// ------------------------------------------------------------------------- //
// LDAP validation tweak - Xavi Serra - 15/01/2013 - vimets@gmail.com        //
// ------------------------------------------------------------------------- //

define('IN_COPPERMINE', true);
define('LOGIN_PHP', true);

if (defined('LOGIN_PHP')) $lang_login_php = array(
  'ldap_warning' => 'Atenciķ: Validaciķ per LDAP no activa',
  'ldap_group_failure' => 'Error durant la validaciķ:',
  'ldap_group_failure_msg' => 'Et falten permisos per accedir a aquesta ārea',
  'ldap_user_created_msg' => 'Usuari creat a la Base de dades, siusplau, torna a fer log in',
  'login' => 'Entrar',
  'enter_login_pswd' => 'Introdueix el teu usuari i contrasenya per entrar',
  'username' => 'Usuari',
  'password' => 'Contrasenya',
  'remember_me' => 'Recorda\'m',
  'welcome' => 'Benvingut %s ...',
  'err_login' => '*** ERROR. Torna-ho a provar ***',
  'err_already_logged_in' => 'Ja estās validat !',
  'forgot_password_link' => 'He oblidat la contrasenya', //cpg1.3.0
);

require('include/init.inc.php');

//if (USER_ID) cpg_die(ERROR, $lang_login_php['err_already_logged_in'], __FILE__, __LINE__);
if (USER_ID) cpg_die(ERROR, $lang_login_php['err_already_logged_in']);

if (defined('UDB_INTEGRATION')) udb_login_page();

/* ============== O P T I O N S =========== */

	$CONFIG['ldapserver'] = '192.168.100.14';
	$CONFIG['ldapdn'] = 'ou=persones,dc=bellera,dc=cat';
	$CONFIG['ldapforcehttps'] = '0'; // or '0' to deactivate
	define('LDAP_SERVER',  $CONFIG['ldapserver']);
	define('LDAP_DN',  $CONFIG['ldapdn']);
	define('LDAP_FORCE_HTTPS', $CONFIG['ldapforcehttps']);
	define('LDAP_DEBUG', 0);
	define('PHP_SELF', $_SERVER['SCRIPT_NAME']);
	define('CPG_DB_SERVER', $CONFIG['dbserver']);
	define('CPG_DB_USER', $CONFIG['dbuser']);
	define('CPG_DB_PASSWORD', $CONFIG['dbpass']);
	define('CPG_DB_NAME', $CONFIG['dbname']);
	define('CPG_DB_USERS', $CONFIG['TABLE_PREFIX']."users");
	define('CPG_DB_SESSIONS', $CONFIG['TABLE_PREFIX']."sessions");


$referer = $HTTP_GET_VARS['referer'] ? $HTTP_GET_VARS['referer'] : 'index.php';
$login_failed = '';
$cookie_warning = '';

// Comprovem que el varchar password es mes gran que 50 per passwords amb MD5 //
$consulta = "SELECT * FROM `".CPG_DB_USERS."` LIMIT 1";
$resultado = mysql_query($consulta);
$longitud = mysql_field_len($resultado,4);
//echo "-->".$longitud;
$longitud_correcte = 50;
if( $longitud <= $longitud_correcte ){
	$password_warning = "
	                  <tr>
                          <td colspan='2' align='center' class='tableh2'>
                        <font size='1' color='red'><b>Error a la BD: camp password < ".$longitud_correcte."; Contacta amb el administrador.<b></font>
                        </td>
                  </tr>";
}
else{
	$password_warning = " ";
}
//////////////////////////////////////////////////////////

if (isset($HTTP_POST_VARS['submitted'])) {

	$_POST['username'] = trim($_POST['username']);
	$_POST['username'] = addslashes($_POST['username']);
	$_POST['password'] = trim($_POST['password']);
	$_POST['password'] = addslashes($_POST['password']);
	
	$md5pass = md5($_POST['password']);
	
	$ldap_connect = ldap_connect(LDAP_SERVER)
	or die("Could not connect to LDAP server.");
	ldap_set_option($ldap_connect, LDAP_OPT_PROTOCOL_VERSION, 3);
	
	if ($ldap_connect)
	{
		$ldap_dn = "uid=".$_POST['username'].",".LDAP_DN;
		$ldap_bind = @ldap_bind($ldap_connect, $ldap_dn, $_POST['password']);
		if ($ldap_bind)
		{
			$link = cpg_db_connect();
			$query = "SELECT user_id, user_name, user_active FROM `".CPG_DB_USERS."` WHERE `user_active` = 'YES' AND `user_name` = '".addslashes($_POST['username'])."'";
			$result = mysql_query($query) or die("request failed: " . mysql_error());   
			$USER_DATA = mysql_fetch_array($result);
			$lastvisit = db_query("UPDATE `".CPG_DB_USERS."` SET user_lastvisit = NOW() WHERE user_name = '" . addslashes($_POST['username']) . "' AND user_active = 'YES'");
			mysql_close($link);	
			if (!isset($USER_DATA['0']))
			{
			  //El usuari bind O.K. pero no existeix a la BD 
			  $link = cpg_db_connect();
			  $sql_ins = "INSERT INTO ".CPG_DB_USERS." ".
			  "(user_regdate, user_active, user_name, user_password, user_email) ".
			  "VALUES (NOW(), 'YES', '" . trim(addslashes($_POST['username'])) . "', '".$md5pass."' , '" . trim(addslashes($_POST['username'])) . "@bellera.cat')";
			  mysql_query($sql_ins) or die("blubb");
			  $query = "SELECT user_id, user_name FROM `".CPG_DB_USERS."` WHERE `user_active` = 'YES' AND `user_name` = '".addslashes($_POST['username'])."'";
			  $result = mysql_query($query) or die("request failed: " . mysql_error());   
			  $USER_DATA = mysql_fetch_array($result);
			  mysql_free_result($result);
			  mysql_close($link);
			  pageheader('LDAP Login');
		  	  starttable('-1', $lang_login_php['enter_login_pswd'], 2);
			  ?>
			  <tr>
				<td colspan="2" align="center" class="tableb">
					<span style="color:red;"><?php echo $lang_login_php['ldap_user_created_msg']; ?></span>
				</td>
			  </tr>
              <tr>
                    <form action="login.php?referer=<?php echo $referer; ?>" method="post" name="loginbox">
                        <td class="tableb" width="40%"><?php echo $lang_login_php['username']; ?></td>
                        <td class="tableb" width="60%"><input type="text" class="textinput" name="username" style="width: 100%" tabindex="1" /></td>
                        <script language="javascript" type="text/javascript">
                        <!--
                        document.loginbox.username.focus();
                        -->
                        </script>
                  </tr>
                  <tr>
                          <td class="tableb"><?php echo $lang_login_php['password']; ?></td>
                        <td class="tableb"><input type="password" class="textinput" name="password" style="width: 100%" tabindex="2" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="center" class="tableb"><?php echo $lang_login_php['remember_me']; ?> <input name="remember_me" type="checkbox" class="checkbox" value="1" tabindex="3" /></td>
                  </tr>
                  <tr>
                    <td align="center" class="tablef"><a href="forgot_passwd.php" class="topmenu"><?php echo $lang_login_php['forgot_password_link']; ?></a></td>
                    <td align="left" class="tablef"><input name="submitted" type="submit" class="button" value="<?php echo $lang_login_php['login'] ?>" tabindex="4" /></td>
                    </form>
                  </tr>
			  <?php
			  	endtable();
				pagefooter();
			}
			else{ //usuari ok al ldap i ok a la bd 
				  	$link = cpg_db_connect();
					/************************************************/
					/********** Comprovem passwords iguals **********/
					/********** i sino fem update del nou  **********/
					/************************************************/
					$results_temp = db_query("SELECT user_password FROM {$CONFIG['TABLE_USERS']} WHERE user_name = '" . addslashes($HTTP_POST_VARS['username']) . "' AND user_active = 'YES'");
					$USER_DATA = mysql_fetch_array($results_temp);
					if($USER_DATA['user_password'] != $md5pass){
						$lastvisit = db_query("UPDATE {$CONFIG['TABLE_USERS']} SET user_password = '".$md5pass."' WHERE user_name = '" . addslashes($HTTP_POST_VARS['username']) . "' AND user_active = 'YES'");
					}
					/************************************************/	
					$results = db_query("SELECT user_id, user_name, user_password FROM {$CONFIG['TABLE_USERS']} WHERE user_name = '" . addslashes($HTTP_POST_VARS['username']) . "' AND user_active = 'YES'");
					$lastvisit = db_query("UPDATE {$CONFIG['TABLE_USERS']} SET user_lastvisit = NOW() WHERE user_name = '" . addslashes($HTTP_POST_VARS['username']) . "' AND user_active = 'YES'");
					if (mysql_num_rows($results)) {
						$USER_DATA = mysql_fetch_array($results);
						if (isset($HTTP_POST_VARS['remember_me'])) {
							$cookie_life_time = 86400 * 30;
						} else {
							$cookie_life_time = 86400;
						}
						
						//echo "--->".$md5pass."<br>";
						//echo "--->".md5($HTTP_POST_VARS['password']);
						
						setcookie($CONFIG['cookie_name'] . '_uid', $USER_DATA['user_id'], time() + $cookie_life_time, $CONFIG['cookie_path']);
						setcookie($CONFIG['cookie_name'] . '_pass', md5($md5pass), time() + $cookie_life_time, $CONFIG['cookie_path']);
						
						pageheader($lang_login_php['login'], "<META http-equiv=\"refresh\" content=\"3;url=".$referer."\">");
						msg_box($lang_login_php['login'], sprintf($lang_login_php['welcome'], $USER_DATA['user_name']), $lang_continue, $referer);
						pagefooter();
						exit;
					} else {
						$login_failed="
								  <tr>
										  <td colspan='2' align='center' class='tableh2'>
										<font size='1' color='red'><b>".$lang_login_php['err_login']."<b></font>
										</td>
								  </tr>";
					}

			}
			
		}
		if (!isset($HTTP_COOKIE_VARS[$CONFIG['cookie_name'] . '_data'])) {
    		$cookie_warning = "
	                  <tr>
                          <td colspan='2' align='center' class='tableh2'>
                        <font size='1' color='red'><b>Warning your browser does not accept script's cookies<b></font>
                        </td>
                  </tr>";


		}
		else{
			//usuari not binded
			$login_failed="
						  <tr>
								  <td colspan='2' align='center' class='tableh2'>
								<font size='1' color='red'><b>".$lang_login_php['err_login']."<b></font>
								</td>
						  </tr>";
		}
		

	}
	
//ob_end_flush();
}
pageheader($lang_login_php['login']);
$referer = urlencode($referer);
starttable('-1', $lang_login_php['enter_login_pswd'], 2);
echo $login_failed;
echo $password_warning;
echo $cookie_warning;
if($password_warning == " "){
	?>
	
	  <tr>
		<form action="login.php?referer=<?php echo $referer; ?>" method="post" name="loginbox">
			<td class="tableb" width="40%"><?php echo $lang_login_php['username']; ?></td>
			<td class="tableb" width="60%"><input type="text" class="textinput" name="username" style="width: 100%"></td>
			<script language="javascript" type="text/javascript">
			<!--
			document.loginbox.username.focus();
			-->
			</script>
	  </tr>
	  <tr>
			  <td class="tableb"><?php echo $lang_login_php['password']; ?></td>
			<td class="tableb"><input type="password" class="textinput" name="password" style="width: 100%"></td>
	  </tr>
	  <tr>
		<td colspan="2" align="center" class="tableb"><?php echo $lang_login_php['remember_me']; ?> <input name="remember_me" type="checkbox" class="checkbox" value="1"></td>
	  </tr>
	  <tr>
		<td align="center" class="tablef"><a href="forgot_passwd.php" class="topmenu"><?php echo $lang_login_php['forgot_password_link']; ?></a></td>
		<td align="left" class="tablef"><input name="submitted" type="submit" class="button" value="<?php echo $lang_login_php['login']; ?>"></td>
		</form>
	  </tr>
	
	<?php
}

endtable();
pagefooter();
?>
