Language: ChineseGermanSpanishFrenchDutchItalianRussian
123 Flash Chat Forums

Go Back   TOPCMM Community > 123 Flash Chat Server Software > 123 Flash Chat Support

Closed Thread
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 05-29-2005, 05:32 AM
Lee Lee is offline
Junior Member
 
Join Date: May 2005
Posts: 3
Default Integration - Ikonboard

I am trying to get 123FC to integrate with our Ikonboard 3.12a software and having a few problems.

I was able to get the mysql connection working but it does not seem to recognize the password.

Does anyone have any examples of how to get Ikonboard/Mysql working with FC 4.5 ?

I might as well throw this in as well and that is once this is working I would like to auto authenticate the forum users to the chat. So if you have any help in that area this would a bonus.

Lee
  #2 (permalink)  
Old 06-01-2005, 09:36 AM
Member
 
Join Date: Jan 2005
Posts: 96
Send a message via MSN to Cloudy
Default Re:Integration - Ikonboard

our password system just support md5,I guess Ikonboard use his own

password encryption method,so that's why you got "wrong password".


You can use "url" on intergrate-other-database in default.xml

and create a php/asp called login_chat.php.use this php to access your database,different number can get different result:

$LOGIN_SUCCESS = 0;
$LOGIN_PASSWD_ERROR = 1;
$LOGIN_NICK_EXIST = 2;
$LOGIN_ERROR = 3;
$LOGIN_ERROR_NOUSERID = 4;
$LOGIN_SUCCESS_ADMIN = 5;
$LOGIN_NOT_ALLOW_GUEST = 6;
$LOGIN_USER_BANED = 7;
  #3 (permalink)  
Old 06-01-2005, 11:31 AM
Lee Lee is offline
Junior Member
 
Join Date: May 2005
Posts: 3
Default Re:Integration - Ikonboard

Cloudy thanks for the reply. I have been doing some research on this and I believe that Ikonboard does use MD5. But the hash that they use "lowercase username+password".

Here is part of the code that I was told creates the hash.
Code:
$login = strtolower($login); // Convert the username to lowercase
$salt = $pass.$login; // Join it together with the password
$code= md5($salt); // Encrypt it with MD5. Done!
I have started to look into a way to use external code and the URL feature but in the mean time is there any way to pass the username+password as the hash that FC uses ?

Lee

  #4 (permalink)  
Old 06-01-2005, 11:41 AM
Senior Member
 
Join Date: Jan 2001
Posts: 413
Default Re:Integration - Ikonboard

Hi Lee,

here is a sample for vbulletin forum, and the password is hashed by a salt, maybe you can refer it and create a new one for your forum:

Code:
<?php

include "./includes/config.php";

$LOGIN_SUCCESS = 0;
$LOGIN_PASSWD_ERROR = 1;
$LOGIN_NICK_EXIST = 2;
$LOGIN_ERROR = 3;
$LOGIN_ERROR_NOUSERID = 4;
$LOGIN_SUCCESS_ADMIN = 5;
$LOGIN_NOT_ALLOW_GUEST = 6;
$LOGIN_USER_BANED = 7;

$db = new sql_db($servername, $dbusername, $dbpassword, $dbname, false);

if(!$db->db_connect_id)
{
echo $LOGIN_ERROR;
exit;
}


$username = isset($HTTP_GET_VARS['username']) ? trim(htmlspecialchars($HTTP_GET_VARS['username'])) : '';
$username = substr(str_replace("\\'", "'", $username), 0, 25);
$username = str_replace("'", "\\'", $username);
$password = isset($HTTP_GET_VARS['password']) ? $HTTP_GET_VARS['password'] : '';

$sql = "SELECT salt, password FROM " . $tableprefix . "user WHERE username = '".$username."'";

//echo $sql;exit;

if ( !($result = $db->sql_query($sql)) )
{
echo $LOGIN_ERROR."dd";
exit; 
}

if( $row = $db->sql_fetchrow($result) )
{
$db_password = $row['password'];

if ($password == $db_password)
{
echo $LOGIN_SUCCESS;
exit; 
}
else if (md5((md5($password) . $row['salt'])) == $db_password)
{
echo $LOGIN_SUCCESS;
exit;
}
else
{ 
echo $LOGIN_PASSWD_ERROR;
exit;
}


}
else
{
echo $LOGIN_ERROR_NOUSERID;
exit;
}


class sql_db
{

var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;
var $in_transaction = 0;

//
// Constructor
//
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
{
$this->persistency = $persistency;
$this->user = $sqluser;
$this->password = $sqlpassword;
$this->server = $sqlserver;
$this->dbname = $database;

$this->db_connect_id = ($this->persistency) ? mysql_pconnect($this->server, $this->user, $this->password) : mysql_connect($this->server, $this->user, $this->password);

if( $this->db_connect_id )
{
if( $database != "" )
{
$this->dbname = $database;
$dbselect = mysql_select_db($this->dbname);

if( !$dbselect )
{
mysql_close($this->db_connect_id);
$this->db_connect_id = $dbselect;
}
}

return $this->db_connect_id;
}
else
{
return false;
}
}

//
// Other base methods
//
function sql_close()
{
if( $this->db_connect_id )
{
//
// Commit any remaining transactions
//
if( $this->in_transaction )
{
mysql_query("COMMIT", $this->db_connect_id);
}

return mysql_close($this->db_connect_id);
}
else
{
return false;
}
}

//
// Base query method
//
function sql_query($query = "", $transaction = FALSE)
{
//
// Remove any pre-existing queries
//
unset($this->query_result);

if( $query != "" )
{
$this->num_queries++;
if( $transaction == BEGIN_TRANSACTION && !$this->in_transaction )
{
$result = mysql_query("BEGIN", $this->db_connect_id);
if(!$result)
{
return false;
}
$this->in_transaction = TRUE;
}

$this->query_result = mysql_query($query, $this->db_connect_id);
}
else
{
if( $transaction == END_TRANSACTION && $this->in_transaction )
{
$result = mysql_query("COMMIT", $this->db_connect_id);
}
}

if( $this->query_result )
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);

if( $transaction == END_TRANSACTION && $this->in_transaction )
{
$this->in_transaction = FALSE;

if ( !mysql_query("COMMIT", $this->db_connect_id) )
{
mysql_query("ROLLBACK", $this->db_connect_id);
return false;
}
}

return $this->query_result;
}
else
{
if( $this->in_transaction )
{
mysql_query("ROLLBACK", $this->db_connect_id);
$this->in_transaction = FALSE;
}
return false;
}
}

//
// Other query methods
//
function sql_numrows($query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

return ( $query_id ) ? mysql_num_rows($query_id) : false;
}

function sql_affectedrows()
{
return ( $this->db_connect_id ) ? mysql_affected_rows($this->db_connect_id) : false;
}

function sql_numfields($query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

return ( $query_id ) ? mysql_num_fields($query_id) : false;
}

function sql_fieldname($offset, $query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

return ( $query_id ) ? mysql_field_name($query_id, $offset) : false;
}

function sql_fieldtype($offset, $query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

return ( $query_id ) ? mysql_field_type($query_id, $offset) : false;
}

function sql_fetchrow($query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

if( $query_id )
{
$this->row[$query_id] = mysql_fetch_array($query_id, MYSQL_ASSOC);
return $this->row[$query_id];
}
else
{
return false;
}
}

function sql_fetchrowset($query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

if( $query_id )
{
unset($this->rowset[$query_id]);
unset($this->row[$query_id]);

while($this->rowset[$query_id] = mysql_fetch_array($query_id, MYSQL_ASSOC))
{
$result[] = $this->rowset[$query_id];
}

return $result;
}
else
{
return false;
}
}

function sql_fetchfield($field, $rownum = -1, $query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

if( $query_id )
{
if( $rownum > -1 )
{
$result = mysql_result($query_id, $rownum, $field);
}
else
{
if( empty($this->row[$query_id]) && empty($this->rowset[$query_id]) )
{
if( $this->sql_fetchrow() )
{
$result = $this->row[$query_id][$field];
}
}
else
{
if( $this->rowset[$query_id] )
{
$result = $this->rowset[$query_id][$field];
}
else if( $this->row[$query_id] )
{
$result = $this->row[$query_id][$field];
}
}
}

return $result;
}
else
{
return false;
}
}

function sql_rowseek($rownum, $query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

return ( $query_id ) ? mysql_data_seek($query_id, $rownum) : false;
}

function sql_nextid()
{
return ( $this->db_connect_id ) ? mysql_insert_id($this->db_connect_id) : false;
}

function sql_freeresult($query_id = 0)
{
if( !$query_id )
{
$query_id = $this->query_result;
}

if ( $query_id )
{
unset($this->row[$query_id]);
unset($this->rowset[$query_id]);

mysql_free_result($query_id);

return true;
}
else
{
return false;
}
}

function sql_error()
{
$result['message'] = mysql_error($this->db_connect_id);
$result['code'] = mysql_errno($this->db_connect_id);

return $result;
}

} // class sql_db

?>
  #5 (permalink)  
Old 06-21-2005, 02:53 PM
Junior Member
 
Join Date: Jun 2005
Posts: 6
Default Re:Integration - Ikonboard

right
  #6 (permalink)  
Old 06-21-2005, 03:27 PM
Lee Lee is offline
Junior Member
 
Join Date: May 2005
Posts: 3
Default Re:Integration - Ikonboard

I think you guys are telling me how to build a watch when what is needed is the time of day.

The ONLY thing that is needed is to be able to define the hash that is sent to 123Flashchat. There is no need to rewrite the Ikonboard routines because they indeed use MD5. The problem is you can not feed FC a hash other than the value in the %password% field.

If FC would allow you to use ?init_password=%username%+%password% the problem would be solved.

Ikonboard uses the lowercase user name + password as the hash to create the MD5 password.

Lee
Closed Thread

Was this information helpful?    Yes No



Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 04:21 AM.


Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.