Skip to content

Commit

Permalink
whatever i changed
Browse files Browse the repository at this point in the history
  • Loading branch information
crutchy committed Apr 1, 2015
1 parent bd776ab commit 3b42fe1
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 66 deletions.
29 changes: 18 additions & 11 deletions cmd/cmd_join.php
Expand Up @@ -25,27 +25,34 @@ function cmd_join($client_index,$items)
{
return;
}
$addr=$nicks[$nick]["connection"]["addr"];
$conn=nick_connection($client_index,$nick);
$addr=$conn["addr"];
$chan=$items["params"];
if (isset($channels[$chan])==False)
{
$channels[$chan]=array();
$channels[$chan]["nicks"]=array();
}
$channels[$chan]["nicks"][]=$nick;
$prefix=$nicks[strtolower($nick)]["prefix"];
$prefix=$nicks[$nick]["prefix"];
$msg=":".$prefix." JOIN ".$chan;
#$msg="*** JOIN MESSAGE RECEIVED FROM $addr";
#do_reply($client_index,$msg);
broadcast($msg);
$msg=":".SERVER_HOSTNAME." 353 $nick = $chan :".implode(" ",$channels[$chan]["nicks"]);
do_reply($client_index,$msg);
$msg=":".SERVER_HOSTNAME." 366 $nick $chan :End of /NAMES list.";
do_reply($client_index,$msg);
$msg=":".SERVER_HOSTNAME." 324 $nick $chan +nt";
do_reply($client_index,$msg);
$msg=":".SERVER_HOSTNAME." 329 $nick $chan ".time();
do_reply($client_index,$msg);
#broadcast($msg);
$msg1=":".SERVER_HOSTNAME." 353 $nick = $chan :".implode(" ",$channels[$chan]["nicks"]);
$msg2=":".SERVER_HOSTNAME." 366 $nick $chan :End of /NAMES list.";
$msg3=":".SERVER_HOSTNAME." 324 $nick $chan +nt";
$msg4=":".SERVER_HOSTNAME." 329 $nick $chan ".time();
$c=count($nicks[$nick]["connection"]);
for ($i=0;$i<$c;$i++)
{
$conn=$nicks[$nick]["connection"][$i];
do_reply($conn["client_index"],$msg);
do_reply($conn["client_index"],$msg1);
do_reply($conn["client_index"],$msg2);
do_reply($conn["client_index"],$msg3);
do_reply($conn["client_index"],$msg4);
}
}

#####################################################################################################
Expand Down
36 changes: 10 additions & 26 deletions cmd/cmd_nick.php
@@ -1,5 +1,7 @@
<?php

# TODO :old_nick!~crutchy@119-18-0-66.cust.aussiebb.net NICK :new_nick

#####################################################################################################

function cmd_nick($client_index,$items)
Expand All @@ -13,43 +15,25 @@ function cmd_nick($client_index,$items)
return;
}
$nick=$items["params"];
$test_nick="";
$test_id="";
if (strlen($nick)>CONNECTION_ID_LEN)
{
$test_nick=strtolower(substr($nick,0,strlen($nick)-CONNECTION_ID_LEN));
$test_id=substr($nick,strlen($nick)-CONNECTION_ID_LEN);
}
$nick=strtolower($nick);
if ((isset($nicks[$nick])==False) and (isset($nicks[$test_nick])==False))
if (isset($nicks[$nick])==False)
{
# TODO: CHANGE NICK
$nicks[$nick]=array();
$nicks[$nick]["connection"][]=&$connections[$connection_index];
$nicks[$nick]["connection_index"][]=$connection_index;
$connections[$connection_index]["authenticated"]=True;
$addr=$connections[$connection_index]["addr"];
do_reply($client_index,"*** NICK MESSAGE RECEIVED FROM $addr: $nick");
$id=random_string(CONNECTION_ID_LEN);
$nicks[$nick]["connection_id"]=$id;
do_reply($client_index,"*** NICK MESSAGE RECEIVED FROM $addr: $nick");
do_reply($client_index,"*** CONNECTION ID FOR NICK $nick: $id");
}
else
{
echo "*** test_nick = $test_nick\n";
echo "*** test_id = $test_id\n";
foreach ($nicks as $loop_nick => $loop_data)
{
$loop_id=$nicks[$loop_nick]["connection_id"];
if (($loop_nick==$test_nick) and ($loop_id==$test_id))
{
$nicks[$test_nick]["connection"][]=&$connections[$connection_index];
$nicks[$test_nick]["connection_index"][]=$connection_index;
$addr=$connections[$connection_index]["addr"];
do_reply($client_index,"*** NICK MESSAGE RECEIVED FROM $addr: $test_nick (USING CONNECTION ID)");
return;
}
}
do_reply($client_index,"ERROR: NICK ALREADY EXISTS (NUMERIC 433)");
$connections[$connection_index]["authenticated"]=False;
$nicks[$nick]["connection"][]=&$connections[$connection_index];
$nicks[$nick]["connection_index"][]=$connection_index;
$addr=$connections[$connection_index]["addr"];
do_reply($client_index,"*** NICK MESSAGE RECEIVED FROM $addr: $nick (NOT AUTHENTICATED)");
}
}

Expand Down
17 changes: 13 additions & 4 deletions cmd/cmd_privmsg.php
Expand Up @@ -19,10 +19,19 @@ function cmd_privmsg($client_index,$items)
$n=count($channels[$chan]["nicks"]);
for ($i=0;$i<$n;$i++)
{
$index=$nicks[strtolower($nick)]["connection_index"];
$prefix=$nicks[strtolower($nick)]["prefix"];
$msg=":$prefix PRIVMSG $chan :$trailing";
do_reply($index,$msg);
$c=count($nicks[$nick]["connection"]);
for ($j=0;$j<$c;$j++)
{
$conn=$nicks[$nick]["connection"][$j];
if ($conn["client_index"]<>$client_index)
{
$msg=construct_message($nick,"PRIVMSG",$chan,$trailing);
if ($msg!==False)
{
do_reply($conn["client_index"],$msg);
}
}
}
}
}
}
Expand Down
42 changes: 33 additions & 9 deletions cmd/cmd_user.php
Expand Up @@ -5,10 +5,12 @@
function cmd_user($client_index,$items)
{
global $nicks;
global $connections;
# USER crutchy crutchy 192.168.0.21 :crutchy
# USER <username> <hostname> <servername> :<realname>
$nick=client_nick($client_index);
if ($nick===False)
# USER <username>[<connection id>] <hostname> <servername> :<realname>
$nick=client_nick($client_index,False,False);
$conn=connection_index($client_index);
if (($nick===False) or ($conn===False))
{
return;
}
Expand All @@ -18,13 +20,35 @@ function cmd_user($client_index,$items)
do_reply($client,"ERROR: INCORRECT NUMBER OF PARAMS (NUMERIC 461)");
return;
}
$nicks[$nick]["username"]=$param_parts[0];
$nicks[$nick]["hostname"]=$param_parts[1];
$nicks[$nick]["servername"]=$param_parts[2];
$nicks[$nick]["realname"]=$items["trailing"];
$nicks[$nick]["prefix"]=$nick."!".$nicks[strtolower($nick)]["connection"]["ident_prefix"].$nicks[strtolower($nick)]["username"]."@".$nicks[strtolower($nick)]["hostname"];
$connection=$connections[$conn];
if ($connection["authenticated"]==False)
{
$username=substr($param_parts[0],0,strlen($param_parts[0])-CONNECTION_ID_LEN);
$conn_id=substr($param_parts[0],strlen($param_parts[0])-CONNECTION_ID_LEN);
if ($nicks[$nick]["connection_id"]==$conn_id)
{
$connections[$conn]["authenticated"]=True;
}
else
{
do_reply($client,"ERROR: CONNECTION ID MISMATCH");
return;
}
}
else
{
$username=$param_parts[0];
}
if (isset($nicks[$nick]["prefix"])==False)
{
$nicks[$nick]["username"]=$username;
$nicks[$nick]["hostname"]=$param_parts[1];
$nicks[$nick]["servername"]=$param_parts[2];
$nicks[$nick]["realname"]=$items["trailing"];
$nicks[$nick]["prefix"]=$nick."!".$connection["ident_prefix"].$nicks[$nick]["username"]."@".$nicks[$nick]["hostname"];
}
var_dump($nicks);
$addr=$nicks[strtolower($nick)]["connection"]["addr"];
$addr=$connection["addr"];
broadcast("*** USER MESSAGE RECEIVED FROM $addr");
}

Expand Down
17 changes: 11 additions & 6 deletions cmd/cmd_who.php
Expand Up @@ -22,12 +22,17 @@ function cmd_who($client_index,$items)
{
# :irc.sylnt.us 352 crutchy #stuff ~crutchy 709-27-2-01.cust.aussiebb.net irc.sylnt.us crutchy H@ :0 crutchy
$chan_nick=$channels[$chan]["nicks"][$i];
$username=$nicks[strtolower($chan_nick)]["username"];
$hostname=$nicks[strtolower($chan_nick)]["hostname"];
$ident_prefix=$nicks[strtolower($chan_nick)]["connection"]["ident_prefix"];
$realname=$nicks[strtolower($chan_nick)]["realname"];
$msg=":".SERVER_HOSTNAME." 352 $nick $chan $ident_prefix"."$username $hostname ".SERVER_HOSTNAME." $chan_nick H@ :0 $realname";
do_reply($client_index,$msg);
$username=$nicks[$chan_nick]["username"];
$hostname=$nicks[$chan_nick]["hostname"];
$realname=$nicks[$chan_nick]["realname"];
$ident_prefix=$nicks[$chan_nick]["connection"][0]["ident_prefix"];
$c=count($nicks[$nick]["connection"]);
for ($j=0;$j<$c;$j++)
{
$conn=$nicks[$nick]["connection"][$j];
$msg=":".SERVER_HOSTNAME." 352 $nick $chan $ident_prefix"."$username $hostname ".SERVER_HOSTNAME." $chan_nick H@ :0 $realname";
do_reply($conn["client_index"],$msg);
}
}
}
# :irc.sylnt.us 315 crutchy #stuff :End of /WHO list.
Expand Down
7 changes: 5 additions & 2 deletions ircd.php
Expand Up @@ -13,7 +13,7 @@
define("LISTEN_PORT",6667);
define("CLIENT_TIMEOUT",60); # seconds

define("SERVER_HOSTNAME","sylnt.us.to");
define("SERVER_HOSTNAME","crutchy.local");
define("MAX_DATA_LEN",1024);
define("CONNECTION_ID_LEN",40);

Expand Down Expand Up @@ -108,6 +108,7 @@
echo "$data received\n";
if ($data=="quit")
{
socket_shutdown($read_client,2);
socket_close($read_client);
unset($clients[$client_index]);
break;
Expand All @@ -116,6 +117,7 @@
{
if ($clients[$client_index]<>$server)
{
socket_shutdown($clients[$client_index],2);
socket_close($clients[$client_index]);
unset($clients[$client_index]);
}
Expand All @@ -124,10 +126,11 @@
}
$addr="";
socket_getpeername($read_client,$addr);
broadcast("$addr: $data");
#broadcast("$addr: $data");
on_msg($client_index,$data);
}
}
socket_shutdown($server,2);
socket_close($server);

#####################################################################################################
Expand Down
31 changes: 23 additions & 8 deletions ircd_lib.php
Expand Up @@ -41,7 +41,7 @@ function connection_nick($client_index,&$connection,$suppress_error=False)

#####################################################################################################

function client_nick($client_index,$suppress_error=False)
function client_nick($client_index,$suppress_error=False,$authenticate=True)
{
global $connections;
global $nicks;
Expand All @@ -50,6 +50,14 @@ function client_nick($client_index,$suppress_error=False)
{
return False;
}
if (($connections[$connection_index]["authenticated"]==False) and ($authenticate==True))
{
if ($suppress_error==False)
{
do_reply($client_index,"*** MESSAGE REFUSED: CONNECTION NOT AUTHENTICATED");
}
return False;
}
$nick=connection_nick($client_index,$connections[$connection_index],$suppress_error);
if ($nick===False)
{
Expand All @@ -68,7 +76,7 @@ function nick_connection($client_index,$nick)
global $nicks;
for ($i=0;$i<count($nicks[$nick]["connection"]);$i++)
{
if ($nicks[$nick]["connection"][$i]["client_index"]==$client_index)
if (($nicks[$nick]["connection"][$i]["client_index"]==$client_index) and ($nicks[$nick]["connection"][$i]["authenticated"]==True))
{
return $nicks[$nick]["connection"][$i];
}
Expand Down Expand Up @@ -112,6 +120,18 @@ function do_reply($client_index,$msg)

#####################################################################################################

function construct_message($nick,$cmd,$params,$trailing)
{
global $nicks;
if (isset($nicks[$nick])==False)
{
return False;
}
return ":".$nicks[$nick]["prefix"]." ".strtoupper($cmd)." $params :$trailing";
}

#####################################################################################################

function on_connect($client_index)
{
global $clients;
Expand All @@ -126,6 +146,7 @@ function on_connect($client_index)
$connection["addr"]=$addr;
$connection["connect_timestamp"]=microtime(True);
$connection["ident_prefix"]="";
$connection["authenticated"]=False;
$connections[]=$connection;
broadcast("*** CLIENT CONNECTED: $addr");
}
Expand Down Expand Up @@ -271,12 +292,6 @@ function parse_data_basic($data)
$prefix=substr($prefix,$i+1);
$result["hostname"]=$prefix;
}
$nick_len=strlen($result["nick"]);
if ($nick_len>CONNECTION_ID_LEN)
{
$result["connection_id"]=substr($result["nick"],$nick_len-CONNECTION_ID_LEN);
$result["connection_id_nick"]=substr($result["nick"],0,$nick_len-CONNECTION_ID_LEN);
}
}
return $result;
}
Expand Down

0 comments on commit 3b42fe1

Please sign in to comment.