All pastes #34937 Raw Edit

itrebal

public text v1 · immutable
#34937 ·published 2005-12-26 22:22 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)){
      global_send(date('Y-d-m H:i:s').' ['.get_nick($uid).']: '.$srv->get_input($uid));
      return true;
    }
    $srv->send($uid, 'Error: You do not have a nick.');
    return true;
  }
  $input = explode(' ', $input, 3);
  $command = substr($input[0], 1);
  $params = array($input[1], $input[2]);
  echo $input[0]."\n";
  switch($command){
  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;
  }
}


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,$avoid_user=true){
  global $srv;
  for($i=0;$i<$srv->active_clients;$i++){
    $nick = get_nick($i);
    if($avoid_user && $nick == $nick_in){
      if($loggedin){
	if(!empty($nick)){
	  $srv->send($i, $what);
	}
      }else{
	$srv->send($i, $what);
      }
    }
  }
  return true;
}

$srv->run();
?>