An litle IRC server
You NEED to read this : http://pastebin.com/2mwBxReg
UPDATED
If you find a bug tell me :)
on *:INPUT:@Server:{ /sockwrite -n dl* $1- | /echo -a -> $1- | haltdef }
on *:SOCKREAD:dl*:{
var %cserver
sockread -f %cserver
tokenize 32 %cserver
aline -p @Server $1-
if ($1 == SHOWCOMMANDS) {
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :*****/CMDLIST*****
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/JOIN <chan>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/PART <chan>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/NICK <new_nick>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/RESTART
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/DISCONNECT
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/WHO <nick>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/CSAY <text>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/MODE <modes>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/OPER <password>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/ADMIN
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/INFO
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/DIE
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/REHASH
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/STATUS
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/SHOWCOMMANDS
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/ADDCLONE <nick>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/DELCONE <nick>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/LISTCMODES
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/LISTUMODES
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/SERVWRITE :<source> <raw|event> [parameters] :<message>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/SET [-euNls] <%var> [value]
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/UNSET [-s] <%var>
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/REOP
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/APING
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :/APONG
/servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :*****End of /CMDLIST*****
}
elseif ($1 == PING) { haltdef }
elseif ($1 == SET) { set $2 $3- | /servwite $sockname $socknamez: $+ %cservname NOTICE :Setting variable " $+ $2- $+ " You can use it in a command with "%<variable>" }
elseif ($1 == UNSET) { unset $2 $3- | /servwite $sockname : $+ %cservname NOTICE :Unsetting variable " $+ $2- $+ " }
elseif ($1 == RESTART) {
if (o isincs $usermode) {
/servwrite $sockname : $+ %cservname NOTICE :Server restarted by [ $+ $me $+ ! $+ $host $+ @local_account $+ ]
.sockclose du
.sockclose $sockname
/.timer 1 2 { sockclose du | /socklisten du 7000 | .server localhost 7000 }
}
else { /servwrite : $+ %cservname NOTICE :Permission denied - you are not an IRC_Operator }
}
elseif ($1 == DIE) {
if (o isincs $usermode) {
/servwrite $sockname : $+ %cservname NOTICE :Server terminated by [ $+ $me $+ ! $+ $host $+ @local_account $+ ]
/.timer 1 1 .sockclose dl*
}
else { /servwrite $sockname : $+ %cservname NOTICE :Permission denied - you are not an IRC_Operator }
}
elseif ($1 == OPER) { aoper $sockname $nick $2- }
elseif ($1 == MODE) { halt }
elseif ($1 == USER) { halt }
elseif ($1 == NICK) { /servwrite $sockname : $+ $nick NICK : $+ $2- }
elseif ($1 == APING) {
/cserv $sockname APONG from [status!ServerInfo@CServer_Bot]
/cserv $sockname APONG from [ $+ %cservbotname $+ !ServerRoot@CServer_Root]
/cserv $sockname APONG from [hostrelay!ServerLink@CServer_Link]
/cserv $sockname APONG from [hostchecker!ServerChecker@CServer_Cheker]
/cserv $sockname APONG from [ $+ $nick $+ !localip@local_account]
}
elseif ($1 == REOP) { if (o isincs $usermode) { /servwrite $sockname : $+ %cservname MODE %servhelpchan +o $nick } | else /cserv $sockname Permission denied - you are not an IRC_Operator }
elseif ($1 == INFO) { /servwrite $sockname : $+ %cservname NOTICE :*****CINFO report***** | /servwrite $sockname : $+ %cservname NOTICE :Server 1.0 Local_Host | /servwrite $sockname : $+ %cservname NOTICE :Local Root: %cservbotname!ServerRoot@CServer_Root | /servwrite $sockname : $+ %cservname NOTICE :Status report : status@ServerInfo@CServer_Bot | /servwrite $sockname : $+ %cservname NOTICE :Time - $fulldate | /servwrite $sockname : $+ %cservname NOTICE :OS: $os | /servwrite $sockname : $+ %cservname NOTICE :Server by NaZaRa | /servwrite $sockname : $+ %cservname NOTICE :*****End of /INFO***** }
elseif ($1 == LISTCMODES) { /lr *****/LISTCMODES report***** | /lr +x <nick> : "X:Server" Don't do anything if you are not a Server or a Web_Sock | /lr +o <nick> : "ChanOp" Access to /CMODE | /lr +v <nick> : "ChanVoice" Access to /CSAY | /lr +c : /ADDCLONE is not allowed | /lr +d : /DELCLONE is not allowed | /lr *****End if /LISTCMODES***** }
elseif ($1 == LISTUMODES) { /lr *****/LISTUMODES report***** | /lr +o : Is an IRC_Operator | /lr +x : Is not Authed with /OPER | /lr +r : Is Authed with /OPER | /lr *****End if /LISTUMODES***** }
elseif ($1 == STATUS) { /servwrite $sockname :status NOTICE :*****/STATUS report***** | /servwrite $sockname :status NOTICE :Status report - $time - OS= $+ $os STATUS= $+ $status MODE= $+ $usermode CHANTYPES= $+ $chantypes LOCAL= $+ $host IP= $+ $ip NICK= $+ $nick | /servwrite $sockname :status NOTICE :For an list of CServ's commands, type /SHOWCOMMANDS | /servwrite $sockname :status NOTICE :*****End of /STATUS***** }
elseif ($1 == CSAY) { if ($nick isvoice %servhelpchan) { /servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan : $+ $1- } | else { /servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :Access denied ! } }
elseif ($1 == MODE) {
if (%cservbotname isin $1-) { /servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :Access denied ! }
elseif (x isincs $1) { /servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :Access denied ! }
elseif ($nick isop $chan) || ($nick ishop $chan) {
/servwrite $sockname : $+ %cservbotname MODE $chan [ [ $2- ] ]
if (+ isin [ [ $2- ] ]) {
if (c isincs [ [ $2- ] ]) { set %ac.on $false }
if (d isincs [ [ $2- ] ]) { set %dc.on $false }
}
if (- isin [ [ $2- ] ]) {
if (c isincs [ [ $2- ] ]) { set %ac.on $true }
if (d isincs [ [ $2- ] ]) { set %dc.on $true }
}
}
else { /servwrite $sockname : $+ %cservbotname PRIVMSG %servhelpchan :Access denied ! }
}
elseif ($1 == ADDCLONE) {
if (%ac.on != $false) { if (%ac.on != $null) { /servwrite $sockname : $+ $1 JOIN :%servhelpchan } }
else { /servwrite $sockname : $+ %cservname NOTICE :Permission denied - +c is set }
}
elseif ($1 == DELCLONE) {
if (%dc.on != $false) { if (%dc.on != $null) { /servwrite : $+ $1 PART :%servhelpchan } }
else { /servwrite $sockname : $+ %cservname NOTICE :Permission denied - +d is set }
}
elseif ($1 == USERHOST) { halt }
elseif ($1 == JOIN) { /servwrite $sockname : $+ $nick $+ !localip@local_account JOIN : $+ $2 | /servwrite : $+ %cservbotname $+ !ServerRoot@CServer_Root JOIN : $+ $2 | /servwrite : $+ %cservbotname MODE $2 :+xov %cservbotname $nick $nick }
elseif ($1 == PART) { /servwrite $sockname : $+ $nick $+ !localip@local_account PART : $+ $2 }
elseif ($1 == PRIVMSG) { /halt }
elseif ($1 == WHO) { if ($2 == $nick) { whoami } | elseif ($2 == %cservbotname) { /servwrite : $+ %cservname 351 $nick :* %cservbotname ServerRoot@CServer_Root : $+ %cservname $+ :6667 } | elseif ($2 == status) { whostatus } | elseif ($2 == hostrelay) { whorelay } | elseif ($2 == hostchecket) { whochecker } | else { /servwrite : $+ %cservname 401 $nick $2 no such nickname } }
elseif ($1 == REHASH) { if (o isin $usermode) {
/cserv $nick $nick is rehashing the server config file
var %helpfile http://pastebin.com/2mwBxReg
if (!%cservbotname) { goto error }
if (!%cservname) { goto error }
if (!%servhelpchan) { goto error }
if (!%servnick) { goto error }
goto end
:error
echo 4 -a Error detected in IRCd configuration : variable error
echo 4 -a Please read %helpfile
sockclose d*
goto quit
:end
echo 4 -a No problem detected in Server config file
:quit
return
}
else { doop } }
elseif ($1 == ADMIN) { getadmin $nick $sockname }
else /servwrite $sockname : $+ $nick 421 $nick $1 :Unknow command !
}
alias servwrite { /sockwrite -n $1 $2- }
alias -l cserv { /servwrite $1 : $+ %cservname NOTICE : $+ [ [ [ [ $2- ] ] ] ] }
alias -l getadmin {
var %n /servwrite $2: $+ %cservbotname PRIVMSG %servhelpchan
%n :CServer 1.0 by NaZaRa
%n :If you need help for the IRCd conf, go to irc.tinycrab.net port 6667 channel #Rhoo
%n :See http://pastebin.com/2mwBxReg
%n :Good luck ;)
}
alias -l aoper {
if (!%aoperpass_ [ $+ [ $2 ] ] $+ ) { /servwrite $1 : $+ %cservname NOTICE :No O:Lines for you'r host ! }
elseif (%aoperpass_ [ $+ [ $2 ] ] == $3) { /servwrite dl* : $+ %cservname NOTICE :IRC_Operator mode enabled on $2 | /servwrite $1 : $+ $2 MODE $1 :+ro-x }
else /servwrite $1 : $+ %cservname NOTICE :Invalid password !
}
alias -l doop { /servwrite $1 : $+ %cservname NOTICE :Permission denied - you are not an IRC_Operator }
alias -l whoami { /servwrite $1 : $+ %cservname 351 $nick :* $nick localip@local_account : $+ %cservname $+ :6667 }
alias -l whostatus { /servwrite $1 : $+ %cservname 351 $nick :* status ServerInfo@CServer_Bot : $+ %cservname $+ :6667 }
alias -l whorelay { /servwrite $1 : $+ %cservname 351 $nick :* hostrelay ServerLink@CServer_Link : $+ %cservname $+ :6667 }
alias -l whochecker { /servwrite $1 : $+ %cservname 351 $nick :* $nick ServerChecker@CServer_Cheker : $+ %cservname $+ :6667 }
alias -l cmstart { }
on *:socklisten:d*:{ set %dl dl $+ $r(1,5000) | sockaccept %dl | allow %dl }
alias allow {
/window -enk @Server
/servwrite $1 : $+ %cservname NOTICE AUTH :Connection allowed, please wait
/servwrite $1 : $+ %cservname NOTICE AUTH :Resolving your hostname
/servwrite $1 : $+ %servnick 001 %servnick :Connection allowed
/servwrite $1 : $+ %servnick 005 %servnick CHANTYPES=@#& PREFIX=(xaohv)#&@%+ NETWORK=Local_Host CASEMAPPING=ascii STATUSMSG=#&@%+
/servwrite $1 : $+ %servnick MODE %servnick +x
/servwrite $1 : $+ %servnick $+ !localip@local_account JOIN : $+ %servhelpchan
/servwrite $1 :status!ServerInfo@CServer_Bot JOIN : $+ %servhelpchan
/servwrite $1 : $+ %cservbotname $+ !ServerRoot@CServer_Root JOIN : $+ %servhelpchan
/servwrite $1 : $+ %cservname NOTICE :status connected - IRC_Operator mode enabled on status
/servwrite $1 : $+ %cservname NOTICE : $+ %cservbotname connected - IRC_Operator mode enabled on
/servwrite $1 : $+ %cservbotname MODE %servhelpchan +xo %cservbotname %cservbotname
/servwrite $1 : $+ %cservbotname MODE %servhelpchan +xo status status
/servwrite $1 : $+ %cservbotname MODE %servhelpchan +ov %servnick %servnick
/status $1
}
on *:LOAD:{
lstart
}
alias -l lstart { var %helpfile http://pastebin.com/2mwBxReg | if (!%cservbotname) { goto error } | if (!%cservname) { goto error } | if (!%servhelpchan) { goto error } | set %servnick $$?="Nick Name ?" | .timer 1 1 noop $$?!="Type /START in a new window to connect." | .timer 1 1 noop $$?!="Please read %helpfile $+ " | goto end | :error | echo 4 -a Error detected in IRCd configuration : variable error | echo 4 -a Please read %helpfile | goto stop | :end | echo 4 -a Starting system... | cstart | :stop }
alias start {
var %helpfile http://pastebin.com/2mwBxReg | if (!%cservbotname) { goto error } | if (!%cservname) { goto error } if (!%servhelpchan) { goto error } | if (!%servnick) { goto error } | goto end | :error | echo 4 -a Error detected in IRCd configuration : variable error | echo 4 -a Please read %helpfile | goto quit | :end | echo 4 -a Starting system... | $iif($sock(du),sockclose du) | $iif($sock(du),haltdef,socklisten du 7000) | .server 127.0.0.1 7000 | :quit | return
}
alias mstart {
var %helpfile http://pastebin.com/2mwBxReg | if (!%cservbotname) { goto error } | if (!%cservname) { goto error } if (!%servhelpchan) { goto error } | if (!%servnick) { goto error } | goto end | :error | echo 4 -a Error detected in IRCd configuration : variable error | echo 4 -a Please read %helpfile | goto quit | :end | echo 4 -a Starting system... | $iif($sock(du),sockclose du) | $iif($sock(du),haltdef,socklisten du 7000) | .server -m 127.0.0.1 7000 | :quit | return
}
alias -l lr { /servwrite $1 : $+ %cservbotname PRIVMSG %servhelpchan : $+ [ [ $2- ] ] }
-
Error detected in IRCd configuration : variable error
Please read http://pastebin.com/2mwBxReg
how fixed this?