<?php

include_once('../global.php');
include_once('webchatsend.php');
  
$Debug = 0;
  
function Packet($Text2)
{
  global $Debug, $Database;
  //echo("{".$Text2."}".ord($Text2[1]).".".strlen($Text2)."\n");
  //echo($Text2.strlen($Text2)."\n");
  $Text = StrTr($Text2, "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE"); 
  if(strlen($Text) > 1)
  {
  $Parts = explode('|',$Text);
  $TargetIP = $Parts[1];
  $TargetID = $Parts[2];
  $SenderIP = $Parts[3];
  $SenderID = $Parts[4];
  $Command = $Parts[6];
  if($Command == 'Message')
  {
    $Color = $Parts[7];
    $Text = $Parts[8];
    $RoomName = $Parts[9];
    $RoomType = $Parts[10];
    if($Debug == 1) echo('Message: '.$Text."\n");
    $DbResult = $Database->select('sunrisechat_onlinelist','*','sender_id='.$SenderID.' AND sender_ip="'.$SenderIP.'"');
    if($DbResult->num_rows > 0)
    {
      $Row = $DbResult->fetch_array();
      $Nick = $Row['nick'];
    } else $Nick = '';
    echo('<'.$Nick.'>'.$Text." ".addslashes($Text)."\n");
    $Database->insert('sunrisechat_history',array('time' => 'NOW()', 'nick' => $Nick, 'text' => $Text, 'color' => $Color,
    'roomname' => $RoomName, 'roomtype' => $RoomType));
  }
  if($Command == 'Alive')
  {
    $Result = $Database->select('sunrisechat_onlinelist','*','sender_id='.$SenderID.' AND sender_ip="'.$SenderIP.'"');
    if($DbResult->num_rows() > 0)
    {
      $Row = $DbResult->fetch_array();
      $Database->update('sunrisechat_onlinelist','sender_ip="'.$SenderIP.'" AND sender_id='.$SenderID,array('lasttime' => 'NOW()'));
    } else $Database->insert('sunrisechat_onlinelist',array('lasttime' => 'NOW()', 'sender_ip' => $SenderIP, 'sender_id' => $SenderID));  
  }
  if($Command == 'GoOnline')
  {
    $Result = $Database->select('sunrisechat_onlinelist','*','sender_id='.$SenderID.' AND sender_ip="'.$SenderIP.'"');
    if($DbResult->num_rows() > 0)
    {
      $Row = $DbResult->fetch_array();
      $Database->update('sunrisechat_onlinelist','sender_ip="'.$SenderIP.'" AND sender_id='.$SenderID,array('lasttime' => 'NOW()', 'status' => 'Online'));
    } else $Database->insert('sunrisechat_onlinelist',array('lasttime' => 'NOW()', 'sender_ip' => $SenderIP, 'sender_id' => $SenderID, 'status' => 'Online'));  
  }
  if($Command == 'GoAway')
  {
    $Result = $Database->select('sunrisechat_onlinelist','*','sender_id='.$SenderID.' AND sender_ip="'.$SenderIP.'"');
    if($DbResult->num_rows() > 0)
    {
      $Row = $DbResult->fetch_array();
      $Database->update('sunrisechat_onlinelist','sender_ip="'.$SenderIP.'" AND sender_id='.$SenderID,array('lasttime' => 'NOW()', 'status' => 'Away'));
    } else $Database->insert('sunrisechat_onlinelist',array('lasttime' => 'NOW()', 'sender_ip' => $SenderIP, 'sender_id' => $SenderID, 'status' => 'Away'));  
  }
  if($Command == 'UserInfo')
  {
    $Nick = $Parts[7];
    echo('UserInfo: '.$Nick."\n");
    $Result = $Database->select('sunrisechat_onlinelist','*','sender_id='.$SenderID.' AND sender_ip="'.$SenderIP.'"');
    if($DbResult->num_rows() > 0)
    {
      $Row = $DbResult->fetch_array();
      $Database->update('sunrisechat_onlinelist','sender_ip="'.$SenderIP.'" AND sender_id='.$SenderID,array('lasttime' => 'NOW()', 'nick' => $Nick, 'operating_system' => $Parts[12], 'status' => $Parts[10]));
    } else $Database->insert('sunrisechat_onlinelist',array('lasttime' => 'NOW()', 'nick' => $Nick, 'sender_ip' => $SenderIP, 'sender_id' => $SenderID, 'operating_system' => $Parts[12], 'status' => $Parts[10]));
  }
  if($Command == 'WhoIs')   // for WebSunriseChat support
  {
    $Result = $Database->select('sunrisechat_onlinelist','*','sender_id='.$TargetID.' AND sender_ip="'.$TargetIP.'" AND operating_system="Fedora Core 2"');
    if($DbResult->num_rows() > 0)
    { 
      $Row = $DbResult->fetch_array();
      $_SESSION['DetailInfo'] = $Row['info'];
      $Nick = $Row['nick'];
      $_SESSION['nick'] = $Nick;
      $_SESSION['IP'] = $Row['sender_ip'];
      $_SESSION['ID'] = $Row['sender_id'];
      $_SESSION['sequence'] = $Row['sequence'];
      Send('UserInfo','');
      if($Debug == 1) echo('UserInfo: '.$Nick."\n");
    }
  }
  }
  //DB_Select('sunrisechat_onlinelist','UNIX_TIMESTAMP(lasttime)');
  //$Row = DB_Row();
  //echo($Row[0]-(time()-200)."\n");
  DB_Delete('sunrisechat_onlinelist','UNIX_TIMESTAMP(lasttime)<'.(time()-30));
}

$Filename = '/tmp/sunrisechatout';
$Filename2 = '/tmp/sunrisechatin';
$File2 = fopen($Filename2,'w');
while(1)
{
  if(file_exists($Filename))
  {
    $File = fopen($Filename,'r');
    $Data = fread($File,65000);
    fclose($File); 
    unlink($Filename);
    //echo($Data);
    $Rows = explode("\n",$Data);
    array_pop($Rows);
    foreach($Rows as $Item) 
    {  
      Packet($Item);  
      //echo($Item."\n");
    } 
  }
  sleep(5);
}

?>
