All pastes #34935 Raw Edit

itrebal

public text v1 · immutable
#34935 ·published 2005-12-26 21:33 UTC
rendered paste body
#!/usr/local/bin/php -f
<?
include('srv.cls.php');

// Settings
$srv = new server('192.168.1.3',9000,50);
$srv->hello_msg[] = 'Functions:';
$srv->hello_msg[] = '#nick <nickname>';
$srv->hello_msg[] = '#list';

function evaluate($uid){
  global $srv;
  $nick = get_nick($uid);
  $input = $srv->get_input($uid);
  if($input{0} != '/'){
    if(!empty($nick)){
      for($i=0;$i<=$srv->active_clients;$i++){
	$srv->send($i, date('Y-d-m H:i:s').' ['.get_nick($uid).']: '.$srv->get_input($uid).$srv->crlf);
      }
    }
    return true;
  }
  $input = explode(' ', $input, 3);
  $command = str_replace('/', $input[0], 1);
  $params = array($input[1], $input[2]);
  switch($function){
  case 'nick':
    if(count($params) == 0){
      $srv->send($uid, 'Error: Nick missing.');
      return false;
    }
    $nick_new = $params[0];
    $nick_old = get_nick($uid);
    for($i = 0;$i <= $srv->active_clients;$i++){
      if($nick_new == get_nick($i)){
	$srv->send($uid, 'Error: Nick already in use.');
	return false;
      }
    }
    set_nick($uid, $nick_new);
    if(empty($nick_old)){
      global_send('['.$nick_new.'] joined the chat.');
      $srv->send($uid, 'You have joined the chat as ['.$nick_new.'].');
      echo '['.$srv->get_addr($uid).'] is ['.$nick_new."]\n";
      return true;
    }
    global_send('['.$nick_old.'] is now ['.$nick_new.']');
    $srv->send($uid, 'Your nick was changed to ['.$nick_new.']');
    echo '['.$srv->get_addr($uid).'] is now ['.$nick_new."\n";
    break;
  case 'list':
    if(empty($nick)){
      $srv->send($uid, 'Error: You are not logged in.');
      return false;
    }
    $list = '';
    $users = 0;
    for($i=0;$i <= $srv->active_clients;$i++){
      $nick = get_nick($i);
      if(!empty($nick)){
	$list .= '['.$nick.'] ';
	$users++;
      }
    }
    $list .= $users;
    $srv->send($uid, $list);
    break;
  case 'quit':
    global_send('['.get_nick($uid).'] left the chat.');
    $srv->send($uid, 'You left the chat.');
    $srv->kick($uid);
    break;
  default:
    $srv->send($uid, 'Error: Unknown command.');
  break;
  }
  $srv->reset_input($uid);
}


function set_nick($i, $name){
  global $srv;
  $srv->clients[$i]['nick'] = $name;
}

function get_nick($i){
  global $srv;
  return isset($srv->clients[$i]['nick']) ? $srv->clients[$i]['nick'] : '';
}
function global_send($what,$loggedin=true){
  global $srv;
  for($i=0;$i<$srv->active_clients;$i++){
    $nick = get_nick($i);
    if($loggedin){
      if(!empty($nick)){
	$srv->send($i, $what);
      }
    }else{
      $srv->send($i, $what);
    }
  }
  return true;
}

$srv->run();
?>