Перейти к содержанию

systemwar007

Новичок
  • Постов

    1
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные systemwar007

  1. Помогите пожалуйста переписать этот код под ipb

    <?php
    /**
    *
    * 2Moons auth plug-in for phpBB3
    *
    * @package login
    * @version $Id$
    * @copyright (c) 2012 Jan Krцpke
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    *
    */
    
    /**
    * @ignore
    */
    if (!defined('IN_PHPBB'))
    {
    	exit;
    }
    
    function init_2moons()
    {
    	global $config, $user;
    	
    	if(!function_exists('mysql_connect'))
    	{
    		return 'MySQL Module required';
    	}
    	
    	$port	= isset($config['moons_dbport']) ? (int) $config['moons_dbport'] : 3306;
    		
    	$link	= @mysql_connect($config['moons_dbhost'].':'.$port, $config['moons_dbuser'], $config['moons_dbpassword']);
    	
    	if (!$link)
    	{
    		return 'MySQL Connection Error: '.mysql_error();
    	}
    	
    	if ((@mysql_select_db($config['moons_dbtable'], $link)) === false)
    	{
    		return 'Can\'t select database '.$config['moons_dbtable'].': '.mysql_error();
    	}
    	
    	$prefix	= str_replace('_', '\_', mysql_real_escape_string($config['moons_dbprefix'], $link));
    	
    	foreach(array('users', 'config', 'session') as $table)
    	{
    		$query			= mysql_query("SHOW TABLES LIKE '".$prefix.$table."'", $link);
    		if (!$query)
    		{
    			return 'MySQL Query Error: '.mysql_error().'<br>'."SHOW TABLES LIKE '".$prefix.$table."'";
    		}
    		
    		$tableExists	= mysql_num_rows($query);
    		if($tableExists !== 1)
    		{
    			return 'Table'.$config['moons_dbprefix'].$table.' not found!';
    		}
    	}
    	
    	$query			= mysql_query("SELECT COUNT(*) FROM ".mysql_real_escape_string($config['moons_dbprefix'], $link)."config WHERE uni = ".((int) $config['moons_universe']).";", $link);
    	if (!$query)
    	{
    		return 'MySQL Query Error: '.mysql_error().'<br>'."SELECT COUNT(*) FROM ".mysql_real_escape_string($config['moons_dbprefix'], $link)."config WHERE uni = ".((int) $config['moons_universe']).";";
    	}
    	$universeExists	= mysql_num_rows($query);
    	
    	if($universeExists !== 1)
    	{
    		return 'Universe '.((int) $config['moons_universe']).' does not exists!';
    	}
    	
    	@mysql_close($link);
    	
    	return false;
    }
    
    /**
    * Login function
    */
    function login_2moons(&$username, &$password)
    {
    	
    	global $db, $config, $user;
    
    	// do not allow empty password
    	if (!$password)
    	{
    		return array(
    			'status'	=> LOGIN_ERROR_PASSWORD,
    			'error_msg'	=> 'NO_PASSWORD_SUPPLIED',
    			'user_row'	=> array('user_id' => ANONYMOUS),
    		);
    	}
    
    	if (!$username)
    	{
    		return array(
    			'status'	=> LOGIN_ERROR_USERNAME,
    			'error_msg'	=> 'LOGIN_ERROR_USERNAME',
    			'user_row'	=> array('user_id' => ANONYMOUS),
    		);
    	}
    
    	$port	= isset($config['moons_dbport']) ? (int) $config['moons_dbport'] : 3306;
    	
    	$link	= @mysql_connect($config['moons_dbhost'].':'.$port, $config['moons_dbuser'], $config['moons_dbpassword']);
    	
    	$prefix	= mysql_real_escape_string($config['moons_dbprefix'], $link);
    	
    	if (!$link)
    	{
    		return array(
    			'status'		=> LOGIN_ERROR_EXTERNAL_AUTH,
    			'error_msg'		=> 'CONNECTION_FAILED',
    			'user_row'		=> array('user_id' => ANONYMOUS),
    		);
    	}
    
    	mysql_select_db($config['moons_dbtable'], $link);
    	mysql_set_charset('utf8', $link); 
    	
    	$sql		= "SELECT id, username, password, universe, email_2 FROM ".$prefix."users WHERE universe = ".((int) $config['moons_universe'])." AND username = '".mysql_real_escape_string($username, $link)."' AND password = '".cryptPassword2Moons($password)."';";
    	$query		= mysql_query($sql, $link);
    	
    	if (!$query)
    	{
    		trigger_error('MySQL Query Error: '.mysql_error().'<br>'.$sql);
    	}
    	
    	$userExists	= mysql_num_rows($query);
    	
    	if ($userExists == 1)
    	{
    		$userData	= mysql_fetch_array($query, MYSQL_ASSOC);
    
    		@mysql_free_result($query);		
    		@mysql_close($link);
    
    		$sql ='SELECT user_id, username, user_password, user_passchg, user_email, user_type
    			FROM ' . USERS_TABLE . "
    			WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
    		$result = $db->sql_query($sql);
    		$row = $db->sql_fetchrow($result);
    		$db->sql_freeresult($result);
    
    		if ($row)
    		{
    			unset($userExists);
    
    			// User inactive...
    			if ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE)
    			{
    				return array(
    					'status'		=> LOGIN_ERROR_ACTIVE,
    					'error_msg'		=> 'ACTIVE_ERROR',
    					'user_row'		=> $row,
    				);
    			}
    			
    			setcookie('phpbb_2moonsautologin', implode('|', array($row['user_id'], md5(implode('::', $userData)))), time() + 60*60*24*30);
    			
    			// Successful login... set user_login_attempts to zero...
    			return array(
    				'status'		=> LOGIN_SUCCESS,
    				'error_msg'		=> false,
    				'user_row'		=> $row,
    			);
    		}
    		else
    		{
    			// retrieve default group id
    			$sql = 'SELECT group_id
    				FROM ' . GROUPS_TABLE . "
    				WHERE group_name = '" . $db->sql_escape('REGISTERED') . "'
    					AND group_type = " . GROUP_SPECIAL;
    			$result = $db->sql_query($sql);
    			$row = $db->sql_fetchrow($result);
    			$db->sql_freeresult($result);
    
    			if (!$row)
    			{
    				trigger_error('NO_GROUP');
    			}
    			
    			// generate user account data
    			$moons_user_row = array(
    				'username'		=> $username,
    				'user_password'	=> phpbb_hash($password),
    				'user_email'	=> $userData['email_2'],
    				'group_id'		=> (int) $row['group_id'],
    				'user_type'		=> USER_NORMAL,
    				'user_ip'		=> $user->ip,
    				'user_new'		=> ($config['new_member_post_limit']) ? 1 : ,
    			);
    			
    			setcookie('phpbb_2moonsautologin', implode('|', array($row['user_id'], md5(implode('::', $userData)))), time() + 60*60*24*30);
    
    			// this is the user's first login so create an empty profile
    			return array(
    				'status'		=> LOGIN_SUCCESS_CREATE_PROFILE,
    				'error_msg'		=> false,
    				'user_row'		=> $moons_user_row,
    			);
    		}
    	}
    	
    	unset($userExists);
    	@mysql_close($link);
    
    	return array(
    		'status'	=> LOGIN_ERROR_USERNAME,
    		'error_msg'	=> 'LOGIN_ERROR_USERNAME',
    		'user_row'	=> array('user_id' => ANONYMOUS),
    	);
    }
    
    function autologin_2moons()
    {
    	global $db, $config, $user;
    	
    	if(!isset($_COOKIE['phpbb_2moonsautologin']))
    	{
    		return array();
    	}
    	
    	$port	= isset($config['moons_dbport']) ? (int) $config['moons_dbport'] : 3306;
    		
    	$link	= @mysql_connect($config['moons_dbhost'].':'.$port, $config['moons_dbuser'], $config['moons_dbpassword']);
    	
    	$prefix	= mysql_real_escape_string($config['moons_dbprefix'], $link);
    	
    	if (!$link)
    	{
    		return array(
    			'status'		=> LOGIN_ERROR_EXTERNAL_AUTH,
    			'error_msg'		=> 'CONNECTION_FAILED',
    			'user_row'		=> array('user_id' => ANONYMOUS),
    		);
    	}
    
    	mysql_select_db($config['moons_dbtable'], $link);
    	mysql_set_charset('utf8', $link); 
    	
    	list($userID, $hash) = explode('|', $_COOKIE['phpbb_2moonsautologin']);
    	
    	$sql	= "SELECT id FROM ".$prefix."users WHERE MD5(CONCAT_WS('::', id, username, password, universe, email_2)) = '".mysql_real_escape_string($hash, $link)."';";
    	$query	= mysql_query($sql, $link);
    	
    	if (!$query)
    	{
    		trigger_error('MySQL Query Error: '.mysql_error().'<br>'.$sql);
    	}
    	
    	$userExists	= mysql_num_rows($query);
    	
    	if ($userExists == 1)
    	{
    		@mysql_close($link);
    
    		$sql ='SELECT user_id, username, user_password, user_passchg, user_email, user_type
    			FROM ' . USERS_TABLE . "
    			WHERE user_id = " . ((int) $userID) . "";
    		$result = $db->sql_query($sql);
    		$row = $db->sql_fetchrow($result);
    		$db->sql_freeresult($result);
    
    
    		if ($row)
    		{
    			setcookie('phpbb_2moonsautologin', $_COOKIE['phpbb_2moonsautologin'], 31536000);
    			return ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) ? array() : $row;
    		} else {
    			setcookie('phpbb_2moonsautologin', '', time() - 3600);
    		}
    	} else {
    		@mysql_close($link);
    	}
    	
    	unset($userExists);
    
    	return array();
    }
    
    /**
    * This function is used to output any required fields in the authentication
    * admin panel. It also defines any required configuration table fields.
    */
    function acp_2moons(&$new)
    {
    	global $user;
    
    	$tpl = '
    
    	<dl>
    		<dt><label for="moons_dbhost">2Moons-Database-Host:</label></dt>
    		<dd><input type="text" id="moons_dbhost" size="40" name="config[moons_dbhost]" value="' . $new['moons_dbhost'] . '" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="moons_dbport">2Moons-Database-Port:</label></dt>
    		<dd><input type="text" id="moons_dbport" size="40" name="config[moons_dbport]" value="' . $new['moons_dbport'] . '" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="moons_dbuser">2Moons-Database-User:</label></dt>
    		<dd><input type="text" id="moons_dbuser" size="40" name="config[moons_dbuser]" value="' . $new['moons_dbuser'] . '" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="moons_dbpassword">2Moons-Database-Password:</label></dt>
    		<dd><input type="password" id="moons_dbpassword" size="40" name="config[moons_dbpassword]" value="' . $new['moons_dbpassword'] . '" autocomplete="off" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="moons_dbtable">2Moons-Database-Table:</label></dt>
    		<dd><input type="text" id="moons_dbtable" size="40" name="config[moons_dbtable]" value="' . $new['moons_dbtable'] . '" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="moons_dbprefix">2Moons-Database-Prefix:</label></dt>
    		<dd><input type="text" id="moons_dbprefix" size="40" name="config[moons_dbprefix]" value="' . $new['moons_dbprefix'] . '" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="moons_salt">2Moons-Passwort-Salt:</label><br /><span>Definded at ./includes/config.php in $salt</span></dt>
    		<dd><input type="text" id="moons_salt" size="40" name="config[moons_salt]" value="' . $new['moons_salt'] . '" /></dd>
    	</dl>
    	<dl>
    		<dt><label for="moons_universe">2Moons Universe:</label><br /><span>MultiUniverse is currently unsupported.<br>Default: 1</span></dt>
    		<dd><input type="text" id="moons_universe" size="40" name="config[moons_universe]" value="' . $new['moons_universe'] . '"/></dd>
    	</dl>
    	';
    
    	// These are fields required in the config table
    	return array(
    		'tpl'		=> $tpl,
    		'config'	=> array('moons_dbhost', 'moons_dbport', 'moons_dbuser', 'moons_dbpassword', 'moons_dbtable', 'moons_dbprefix', 'moons_salt', 'moons_universe')
    	);
    }
    
    // 2Moons functions
    
    function cryptPassword2Moons($password)
    {
    	// http://www.phpgangsta.de/schoener-hashen-mit-bcrypt
    	global $config;
    	if(!CRYPT_BLOWFISH || !isset($config['moons_salt']))
    	{
    		return md5($password);
    	} else {
    		return crypt($password, '$2a$09$'.$config['moons_salt'].'$');
    	}
    }
    
    ?>
×
×
  • Создать...