;###############################################################
;# ##
;# ##
;# ____ ___ ____ ____ ___ _ ##
;# | _ \ __ _ _ __ ___ _ _|_ _| _ \ / ___| ( _ ) / | ##
;# | |_) / _` | '_ \ / _ \ '__| || |_) | | / _ \ | | ##
;# | __/ (_| | |_) | __/ | | || _ <| |___ | (_) || | ##
;# |_| \__,_| .__/ \___|_| |___|_| \_\\____| \___ ()_| ##
;# |_| ##
;# ##
;# ##
;###############################################################
;# ##
;# Modded by: Randy Trams ##
;# Copyright © 2006 Randy Trams, All Rights Reserved. ##
;# elite_randola@msn.com ##
;# www.winzero.org ##
;# ##
;###############################################################
;# ##
;# Orginal Server Coded By: Paper ##
;# Copyright © 2004 Paper ##
;# ##
;###############################################################
;# ##
;# No one knows for sure what EvoX did with Paperirc. ##
;# So at that I give you a shout EvoX, but no credit. ##
;# Orginal credit will be given to Paper. ##
;# ##
;# Till I hear different Evo your a ripper. ##
;# If this prooves to be wrong later I will change this. ##
;# ##
;# ##
;###############################################################
;# ##
;# Orginally Modded from: PaperIRC 6.0 ##
;# ##
;###############################################################
;# ##
;# Previous Version: 8.0 ##
;# ##
;###############################################################
;# ##
;# Special Thanks to all the Contributors ##
;# ##
;###############################################################
;
;
;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ $$
;$ FOR ALL YOU RETARDS WHO THINK YOU CAN RUN THIS SERVER ON $$
;$ DIAL UP YOU CANT IT CAUSES ERRORS!!! $$
;$ $$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ $$
;$ DOESN'T MATTER HOW STABLE IT IS. THIS SERVER IS NOT BUILT $$
;$ FOR IT!! $$
;$ $$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ $$
;$ WE WILL NOT FIX ANY ERRORS THAT ARE CAUSED BY YOU DOING IT $$
;$ THERE WILL BE ERRORS TRUST ME!!!! $$
;$ $$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ $$
;$ THIS SERVER IS MADE FOR PEOPLE ON ATLEAST A DSL CONNECTION!$$
;$ $$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ $$
;$ MOST ISP'S DO NOT ALLOW YOU TO RUN SERVERS! $$
;$ PLEASE CONTACT YOUR ISP TO SEE IF RUNNING SERVERS IS A $$
;$ VIOLATIN OF THEIR TOU/AUP!!! $$
;$ $$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$ $$
;$ WE WILL NOT BE LIABLE FOR YOUR ACTIONS WITH THIS PROGRAM!! $$
;$ USE THIS AT YOUR OWN RISK!! $$
;$ $$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;
;This program is free software; you can redistribute it and/or modify
;it under the terms of the GNU General Public License as published by
;the Free Software Foundation; either version 2 of the License, or
;(at your option) any later version.
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;You should have received a copy of the GNU General Public License
;along with this program; if not, write to the Free Software
;Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
On *:START:{
set %opercount 0
liststart
set %ip $readini(config.ini,userconf,ip)
if ($isdateconfig == false) {
writeini config.ini userconf date $asctime(mmm dd yyyy) at $asctime(H:nn:ss zzz)
}
}
On *:EXIT:{
set %opercount 0
unset %tvar
rmdir whois
}
;User connection code, gatekeeper emulation for
;the msn ocx for the first part of the connection.
on *:socklisten:first.listen:{ sockaccept first. $+ $r(1111111111,9999999999) }
on *:sockread:first.*:{ var %a | sockread %a | tokenize 32 %a
echo @Sockets 14 $+ $sockname $iif($gnick($sockname) != $null,3[ $+ $gnick($sockname) $+ ]) 12 $+ %a
if ($chr(37) $+ $chr(35) $+ * iswm $3) { tokenize 32 $1-2 $replace($3,\b, ,\n,$chr(44)) $4- }
if ($chr(37) $+ $chr(35) $+ * iswm $2) { tokenize 32 $1 $replace($2,\b, ,\n,$chr(44)) $3- }
if ($1-3 == AUTH GateKeeper I) { if (%ip. [ $+ [ $sock($sockname).ip ] ]) && (%agf == on) { sockwrite -tn $sockname Message: Connecting too fast, throttling. | disconnect1 $sockname } | else { sockwrite -tn $sockname AUTH GateKeeper * first@Connected | set -u5 %ip. [ $+ [ $sock($sockname).ip ] ] $gettok($sockname,2,$asc(.)) } }
if ($1-3 == AUTH NTLM I) { if (%ip. [ $+ [ $sock($sockname).ip ] ]) && (%agf == on) { sockwrite -tn $sockname Message: Connecting too rapidly | sockclose $sockname } | else { sockwrite -tn $sockname AUTH NTLM * $sock($sockname).ip $+ @cg | set -u5 %ip. [ $+ [ $sock($sockname).ip ] ] $gettok($sockname,2,$asc(.)) } }
if ($readini(ipbans.txt,NetBans, $+ $sock($sockname).ip $+ ) == 1) { sockwrite -tn $sockname $sserv 913 $gnick($sockname) :Access Denied | sockclose $sockname }
elseif ($1 == IRCX) { sockwrite -tn $sockname $sserv 800 * 1 0 GateKeeper,NTLM 512 * }
elseif ($1 == ISIRCX) { sockwrite -tn $sockname $sserv 800 * 1 0 GateKeeper,NTLM 512 * }
if ($1-2 == MODE ISIRCX) { sockwrite -tn $sockname $sserv 800 * 0 0 GateKeeper,NTLM 512 * }
elseif ($1 == VERSION) && (!$2) { sockwrite -tn $sockname $sserv 351 $gnick($sockname) :2.0.7583 }
elseif ($1 == NICK) && ($2) { sockwrite -tn $sockname $sserv 001 Connected :You are connected to the $chatname Chat Service but a connection script is required to join rooms. To get this connection please ask a Network Admin for this connection. }
elseif ($1 == FINDS) && ($2) {
if ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($chr(35) $+ * !iswm $2) { tokenize 32 $1 $+($chr(37),$chr(35),$2) $3- }
if ($chr(35) $+ * iswm $2) { tokenize 32 $1 $+($chr(37),$2) $3- }
if (!%create. [ $+ [ $2 ] ]) { sockwrite -tn $sockname $sserv 702 $gnick($sockname) :The room does not exist }
else { sockwrite -tn $sockname $sserv 613 Connected $+(:,%ip) $readini(config.ini,defaults,ppr.port2) }
}
elseif ($1 == PROP) && ($2 == $chr(36)) && ($3 == NICK) && (!$groom($sockname)) {
var %blah = AdminClient_ $+ $rand(00,99)
sockwrite -tn $sockname : $+ $gna($sockname) NICK : $+ %blah
write -l1 users/ $+ $sockname $+ .txt $gaddr($sockname)
write -l2 users/ $+ $sockname $+ .txt %blah
write -l3 $+(users/,$sockname,.txt) H,U,PX,
write -l4 $+(users/,$sockname,.txt) PX
welcome $sockname
}
elseif ($1 == CREATE) && ($chr(37) $+ $chr(35) $+ * iswm $3) && ($8) && (??-?? iswm $6) && ($len($2) == 2) {
if (%create. [ $+ [ $3 ] ]) { sockwrite -tn $sockname $sserv 613 Connected $+(:,%ip) $readini(config.ini,defaults,ppr.port2) }
if ($checkroom($3) == no) { sockwrite -tn $sockname $sserv 485 Connected :Cannot join (Bug Spaces) | halt }
if ($exists(rooms/ $+ $3 $+ .ini) == $true) { sockwrite -tn $sockname :The room already exists | halt }
if (*$read(categories.txt)* iswm $2) {
return ok
else {
sockwrite -tn $sockname $sserv 701 $gnick($sockname) :Category not found
halt
}
}
if (*$read(Languages.txt)* iswm $6) {
return ok
else {
sockwrite -tn $sockname $sserv 701 $gnick($sockname) :Language not found
halt
}
}
else {
uncreate $3
set %create. [ $+ [ $3 ] ] creation
writeini $+(rooms/ $+ $3 $+ .ini) info name $3
writeini $+(rooms/ $+ $3 $+ .ini) info topic $iif($chr(37) $+ * iswm $4,$right($4,-1),$4)
writeini $+(rooms/ $+ $3 $+ .ini) info category $2
writeini $+(rooms/ $+ $3 $+ .ini) info language $6
writeini $+(rooms/ $+ $3 $+ .ini) info OID 0
writeini $+(rooms/ $+ $3 $+ .ini) info client Unknown
writeini $+(rooms/ $+ $3 $+ .ini) info welcome -
writeini $+(rooms/ $+ $3 $+ .ini) info subject 1 $+ $chr(58) $+ -ST! $+ $6 $+ ! $+ $2
writeini $+(rooms/ $+ $3 $+ .ini) info onpart -
writeini $+(rooms/ $+ $3 $+ .ini) codes owner $8
writeini $+(rooms/ $+ $3 $+ .ini) modes room nt
writeini $+(rooms/ $+ $3 $+ .ini) creation date $asctime(mmm dd yyyy) $asctime(H:nn:ss zzz)
.timer.create. [ $+ [ $3 ] ] 1 10 uncreate $right($3,-2)
sockwrite -tn $sockname $sserv 613 Connected $+(:,%ip) $readini(config.ini,defaults,ppr.port2)
}
}
}
;Second part of connection where the server directs
;users to specific rooms, identify's nicknames, etc.
on *:socklisten:ppr.listen:{ sockaccept ppr. $+ $r(1111111111,9999999999) }
on *:sockread:ppr.*:{ var %a | sockread %a | tokenize 32 %a
if ($chr(37) $+ $chr(35) $+ * iswm $3) { tokenize 32 $1-2 $replace($3,\b, ,\n,$chr(44)) $4- }
if ($chr(37) $+ $chr(35) $+ * iswm $2) { tokenize 32 $1 $replace($2,\b, ,\n,$chr(44)) $3- }
if (ppr.* iswm $sockname) {
if (!%flood. [ $+ [ $sockname ] ]) { set -u3 %flood. [ $+ [ $sockname ] ] 1 }
elseif (%flood. [ $+ [ $sockname ] ]) && ($isrealstaff($sockname) == false) {
if (%flood. [ $+ [ $sockname ] ] > 9) && ($isstaff($sockname) != true) { unset %flood. [ $+ [ $sockname ] ] | disconnect1 $sockname }
if (%flood. [ $+ [ $sockname ] ] > 19) && ($isstaff($sockname) == true) { unset %flood. [ $+ [ $sockname ] ] | disconnect1 $sockname }
else { inc %flood. [ $+ [ $sockname ] ] }
}
}
if ($1 != PONG) { echo @Sockets 14 $+ $sockname $iif($gnick($sockname) != $null,3[ $+ $gnick($sockname) $+ ]) 12 $+ %a }
if ($1 == IRCVERS) { sockwrite -tn $sockname $sserv 800 * 1 0 Address,NTLM 512 * | echo @Connections 14- $asctime(H:nn:ss) 12Connected: $sockname Ip: $sock($sockname).ip }
elseif ($1 == VERSION) && (!$2) { sockwrite -tn $sockname $sserv 351 $gnick($sockname) :2.0.7583 }
elseif (($1-3 == AUTH GateKeeper I) && (!$gaddr($sockname)) && (%ip. [ $+ [ $sock($sockname).ip ] ])) {
var %addr = $calc($gettok($sock($sockname).ip,1,$asc(.)) * $readini(config.ini,cloakkeys,ck1)) $+ $calc($gettok($sock($sockname).ip,2,$asc(.)) * $gettok($sock($sockname).ip,3,$asc(.))) $+ $calc($gettok($sock($sockname).ip,4,$asc(.)) * $readini(config.ini,cloakkeys,ck2)) $+ @ $+ $readini(config.ini,userconf,gate_addr)
write -l1 $+(users/,$sockname,.txt) %addr
write users/userlist.txt $sockname
sockwrite -tn $sockname AUTH GateKeeper * %addr
}
elseif ($1 == NICK) && ($2) {
if ($read($+(users/,$sockname,.txt),1)) && (!$read($+(users/,$sockname,.txt),5)) {
if ($len($2) > 50) { sockwrite -tn $sockname $sserv 432 $2 :Nickname too long. | halt }
elseif ($checknick($remove($2,>)) == OK) { write -l2 $+(users/,$sockname,.txt) $left($remove($2,>),50) | write -l3 $+(users/,$sockname,.txt) H,U,PX, | write -l4 $+(users/,$sockname,.txt) PX | welcome $sockname }
elseif ($checknick($remove($2,>)) != OK) { sockwrite -tn $sockname $sserv 432 $remove($2,>) :Nickname Incorrect }
}
elseif (!$read($+(users/,$sockname,.txt),1)) && (!$read($+(users/,$sockname,.txt),2)) { sockwrite -tn $sockname $sserv 432 $remove($2,>) :Address Error }
elseif ($read($+(users/,$sockname,.txt),5)) { sockwrite -tn $sockname $sserv 439 $read($sockname $+ .txt,2) :Nickname changes not permitted }
}
elseif ($1 == PONG) {
.timer.ping. [ $+ [ $sockname ] ] off
}
elseif ($1 == JOIN) && ($2) && ($userset($sockname) == true) && ($read($+(users/,$sockname,.txt),1) != $chr(45)) {
if ($sock($sockname).ip == $read(ipbans.txt,w, $sock($sockname).ip)) {
sockwrite -tn $sockname 913 $gnick($sockname) $2 :Banned? Pong!
disconnect1 $sockname
halt
}
set %userconncount $+ $sock($sockname).ip $calc(%userconncount $+ $sock($sockname).ip + 1)
if (%userconncount $+ $sock($sockname).ip => $readini(limits.ini,limits,maxperip)) {
sockwrite -tn $sockname $sserv 471 $gnick($sockname) :User Connection Limit Exceeded
halt
}
if ($lines(users/userlist.txt) => $readini(limits.ini,limits,maxconns)) {
sockwrite -tn $sockname $sserv 471 $gnick($sockname) :Server Limit Exceeded
halt
}
writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) $gnick($sockname) $gna($sockname)
writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) ipaddr $sock($sockname).ip
writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) R. $+ $2 $2
writeini whois/ $+ $gnick($sockname) $+ .ini $gnick($sockname) room $2
unset %tvar
do
if ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($chr(35) $+ * !iswm $2) { tokenize 32 $1 $+($chr(37),$chr(35),$2) $3- }
if ($chr(35) $+ * iswm $2) { tokenize 32 $1 $+($chr(37),$2) $3- }
if (!$groom($sockname)) {
if ($isinchan($2,$sockname) == true) { sockwrite -tn $sockname $sserv 433 $gnick($Sockname) :Already in the room | halt }
elseif (!%create. [ $+ [ $2 ] ]) { sockwrite -tn $sockname $sserv 702 $gnick($sockname) :The room does not exist }
elseif (l isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && $lines(rooms/ $+ $2 $+ .txt) >= $readini(rooms/ $+ $2 $+ .ini,modes,limit)) { sockwrite -tn $sockname $sserv 471 $gnick($sockname) :Room Limit Exceeded | halt }
elseif (i isin $readini($+(rooms/,$2,.ini),modes,room)) { sockwrite -tn $sockname $sserv 473 $gnick($sockname) :Invite Only | halt }
else {
if (%create. [ $+ [ $2 ] ] == creation) {
.timer.create. [ $+ [ $2 ] ] off
write -l5 users/ $+ $sockname $+ .txt $right($2,-2)
if ($isstaff($sockname) == false) { write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ . }
sockwrite -tn $sockname : $+ $gna($sockname) JOIN $guserid($sockname) : $+ $2
sockwrite -tn $sockname : $+ $2 PRIVMSG $2 : $+ $gwelcome($2)
sockwrite -tn $sockname : $+ $2 PRIVMSG $2 :Created Room: $2
Owner Key: $3
sockwrite -tn $sockname $sserv 332 $gnick($sockname) $2 : $+ $gtopic($2)
sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ $guserid($sockname) $+ $gnick($sockname)
sockwrite -tn $sockname $sserv 366 $gnick($sockname) $2 :End of the order /NAMES
sockwrite -tn $sockname : $+ $gna($sockname) MODE $2 +q $gnick($sockname)
sendtoroom $2 $sockname MODE $2 +q $gnick($sockname)
set %create. [ $+ [ $2 ] ] created
if ($numtok($sockname,46) == 2) {
var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,2,46)
}
elseif ($numtok($sockname,46) == 3) {
var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,3,46)
}
.rename users/ $+ $sockname $+ .txt users/ $+ %newsockname $+ .txt
write rooms/ $+ $2 $+ .txt %newsockname
var %a = $read(users/userlist.txt, s, $sockname)
write -dl $+ $readn users/userlist.txt
write users/userlist.txt %newsockname
if ($sockname != %newsockname) { sockrename $sockname %newsockname }
}
elseif (%create. [ $+ [ $2 ] ] == created) {
var %z 1 | while (%z < 5) {
if ($hfind(access. [ $+ [ $2 ] ],$gna($sockname),%z,W)) {
var %x = $gettok($hget(access. [ $+ [ $2 ] ],$hfind(access. [ $+ [ $2 ] ],$gna($sockname),%z,W)),1,32)
set -u10 % $+ $sockname $+ %x $true
}
inc %z
}
if ($isrealstaff($sockname) == true) goto skipdeny
if (% [ $+ [ $sockname ] $+ ] owner) goto skipdeny
if (% [ $+ [ $sockname ] $+ ] host) goto skipdeny
if (% [ $+ [ $sockname ] $+ ] voice) goto skipdeny
if (% [ $+ [ $sockname ] $+ ] deny) {
sockwrite -tn $sockname 913 $gnick($sockname) $2 :Access Denied
sockwrite -tn $sockname 800 $gnick($sockname) 1 0 Gatekeeper,NTLM 512*
if (u isin $readini($+(rooms/,$2,.ini),modes,room)) sendtoroom $2 $sockname 889 KNOCK $2 $gnick($sockname) $gettok($gna($sockname),2,33)
halt
}
:skipdeny
if ($3 == $readini(rooms/ $+ $2 $+ .ini,codes,owner)) && ($isstaff($sockname) == false) { write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ . }
if ($lines(rooms/ $+ $2 $+ .txt) == 0) { timer.uncreate. [ $+ [ $2 ] ] off }
if (% [ $+ [ $sockname ] $+ ] owner) && ($isstaff($sockname) == false) {
write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ $iif(*. !iswm $guserid($sockname),.)
}
elseif (% [ $+ [ $sockname ] $+ ] host) && ($isstaff($sockname) == false) {
write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,GO,3) $+ $iif(*@ !iswm $guserid($sockname),@)
}
elseif (% [ $+ [ $sockname ] $+ ] voice) && ($isstaff($sockname) == false) {
write -l3 users/ $+ $sockname $+ .txt $guserid($sockname) $+ $iif(*+ !iswm $guserid($sockname),+)
}
write -l5 users/ $+ $sockname $+ .txt $right($2,-2)
sockwrite -tn $sockname : $+ $gna($sockname) JOIN $guserid($sockname) : $+ $2
sockwrite -tn $sockname : $+ $2 PRIVMSG $2 : $+ $gwelcome($2)
sockwrite -tn $sockname $sserv 332 $gnick($sockname) $2 : $+ $gtopic($2)
write rooms/ $+ $2 $+ .txt $sockname
var %n = 1 | var %a = 1 | var %list
if (x isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($isrealstaff($getsock($2,$gnick($sockname))) == false) {
var %n = 1 | var %a = 1 | var %list
while (%n <= $lines(rooms/ $+ $2 $+ .txt)) {
if (*. iswm $guserid($read(rooms/ $+ $2 $+ .txt,%n))) || ($sockname == $read(rooms/ $+ $2 $+ .txt,%n)) set %list %list $guserid($read(rooms/ $+ $2 $+ .txt,%n)) $+ $gnick($read(rooms/ $+ $2 $+ .txt,%n))
if ($numtok(%list,32) == 5) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list | unset %list }
elseif (%n == $lines(rooms/ $+ $2 $+ .txt)) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list }
inc %n
}
}
elseif (x isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($isrealstaff($getsock($2,$gnick($sockname))) == true) {
var %n = 1 | var %a = 1 | var %list
while (%n <= $lines(rooms/ $+ $2 $+ .txt)) {
set %list %list $guserid($read(rooms/ $+ $2 $+ .txt,%n)) $+ $gnick($read(rooms/ $+ $2 $+ .txt,%n))
if ($numtok(%list,32) == 5) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list | unset %list }
elseif (%n == $lines(rooms/ $+ $2 $+ .txt)) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list }
inc %n
}
}
elseif (x !isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) {
var %n = 1 | var %a = 1 | var %list
while (%n <= $lines(rooms/ $+ $2 $+ .txt)) {
set %list %list $guserid($read(rooms/ $+ $2 $+ .txt,%n)) $+ $gnick($read(rooms/ $+ $2 $+ .txt,%n))
if ($numtok(%list,32) == 5) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list | unset %list }
elseif (%n == $lines(rooms/ $+ $2 $+ .txt)) { sockwrite -tn $sockname $sserv 353 $gnick($sockname) * $2 : $+ %list }
inc %n
}
}
unset %list
sockwrite -tn $sockname $sserv 366 $gnick($sockname) $2 :End of /NAMES
sendtoroom $2 $sockname JOIN $guserid($sockname) $+(:,$2)
var %oldsock $sockname
if ($numtok($sockname,46) == 2) {
var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,2,46)
}
elseif ($numtok($sockname,46) == 3) {
var %newsockname = ppr. $+ $2 $+ . $+ $gettok($sockname,3,46)
}
.rename users/ $+ $sockname $+ .txt users/ $+ %newsockname $+ .txt
write -d rooms/ $+ $2 $+ .txt
write rooms/ $+ $2 $+ .txt %newsockname
var %a = $read(users/userlist.txt, s, $sockname)
write -dl $+ $readn users/userlist.txt
write users/userlist.txt %newsockname
if ($sockname != %newsockname) { sockrename $sockname %newsockname }
}
}
}
else { sockwrite -tn $sockname $sserv 405 $gnick($sockname) :You have joined too many channels }
}
elseif ($1 == PRIVMSG) && ($groom($sockname)) {
if ($chr(37) $+ $chr(35) $+ * iswm $2) && ($groom2($sockname) == $2) {
if (f isin $iif($chr(32) isin $readini(rooms/ $+ $2 $+ .ini,modes,room),$gettok($readini(rooms/ $+ $2 $+ .ini,modes,room),1,32),$readini(rooms/ $+ $2 $+ .ini,modes,room))) && ($sockinchan($2,$sockname) == true) && ($isrealstaff($sockname) == false) && ($isstaff($sockname) == false) && ($checkprofanity($3-) == $ifmatch) {
sockwrite -tn $sockname $sserv 932 $gnick($sockname) $2 $remove($ifmatch,$chr(42)) : $+ $2 Profanity not perimitted
halt
}
if (m isin $iif($chr(32) isin $readini(rooms/ $+ $2 $+ .ini,modes,room),$gettok($readini(rooms/ $+ $2 $+ .ini,modes,room),1,32),$readini(rooms/ $+ $2 $+ .ini,modes,room))) && ($isstaff($sockname) == false) && (*+ !iswm $guserid($sockname)) {
sockwrite -tn $sockname $sserv 404 $gnick($sockname) :Cannot transmit message to room
}
if (x isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($isrealstaff($getsock($2,$gnick($sockname))) == false) && (*. !iswm $guserid($sockname)) { sendtostaff $2 $sockname $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ ) | halt }
else {
sendtoroom $2 $sockname $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ )
}
}
elseif ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($sockinchan($groom2($sockname),$getsock($groom2($sockname),$2)) == true) && ($sock($getsock($groom2($sockname),$2))) { sockwrite -tn $getsock($groom2($sockname),$2) : $+ $gna($sockname) $1- }
}
elseif ($1 == ESUBMIT) {
sendtoroom $2 $gna($sockname) EQUESTION $2 $gnick($sockname) $2 : $+ $iif(:* iswm $3-,$right($3-,-1),$3-)
halt
}
elseif ($1 == EPRIVMSG) && ($isrealstaff($sockname) == true) {
sendtoroom $2 $gna($sockname) EPRIVMSG $2 : $+ $3-
halt
}
;###### Oper Commands #####
elseif ($1 == BROA) && ($isadminsysop($sockname) == true) {
write debug.txt $date $time ** Oper Performed Global Broadcast, $gnick($sockname) on IP: $sock($sockname).ip **
broa $2-
sockwrite -tn $sockname $sserv 001 $gnick($sockname) :BROA: Performed global broadcast message: * $+ $2- $+ *
if ($isrealstaff($sockname) == false) {
sockwrite -tn $sockname $sserv 001 $gnick($sockname) :Permission Denied - You're not an IRC operator
}
}
elseif ($1 == RESET) && ($isrealstaff($sockname) == true) {
sockclose * | ppr.start
sockwrite -tn $sockname $sserv 001 $gnick($sockname) :RESET: Reset all local connections to the chat server
if ($isrealstaff($sockname) == false) {
sockwrite -tn $sockname $sserv 001 $gnick($sockname) :Permission Denied - You're not an IRC operator
}
}
elseif ($1 == NETBAN) && ($isadminsysop($sockname) == true) {
write debug.txt $date $time ** Oper Performed Global Network Ban, $gnick($sockname) on IP: $sock($sockname).ip **
ban $2-
sockwrite -tn $sockname $sserv 001 $gnick($sockname) :NETBAN: Performaed global network ban on address: * $+ $2 $+ *
if ($isrealstaff($sockname) == false) {
sockwrite -tn $sockname $sserv 001 $gnick($sockname) :Permission Denied - You're not an IRC operator
}
}
;##########################
elseif ($1 == WHOIS) {
sockwrite -tn $sockname $sserv 311 $gnick($1) :$gnick($getsock($groom2($sockname),$2)) $gettok($gettok($gna($getsock($groom2($sockname),$2)),1,$asc(@)),2,$asc(!)) $gettok($gna($getsock($groom2($sockname),$2)),2,$asc(@)) * : $+ $gnick($getsock($groom2($sockname),$2))
sockwrite -tn $sockname $sserv 319 $gnick($1) :$gettok($read(whois/ $+ $2 $+ .ini,3),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,4),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,5),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,6),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,7),2-,61)
sockwrite -tn $sockname $sserv 318 $gnick($1) :End Of /WHOIS List
if ($isrealstaff($sockname) == true) {
sockwrite -tn $sockname : $+ $2 $+ 's IP: $readini(whois/ $+ $2 $+ .ini,$2,ipaddr)
sockwrite -tn $sockname $sserv 311 $gnick($1) :$gnick($getsock($groom2($sockname),$2)) $gettok($gettok($gna($getsock($groom2($sockname),$2)),1,$asc(@)),2,$asc(!)) $gettok($gna($getsock($groom2($sockname),$2)),2,$asc(@)) * : $+ $gnick($getsock($groom2($sockname),$2))
sockwrite -tn $sockname $sserv 319 $gnick($1) :$gettok($read(whois/ $+ $2 $+ .ini,3),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,4),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,5),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,6),2-,61) $+ $chr(32) $+ $gettok($read(whois/ $+ $2 $+ .ini,7),2-,61)
sockwrite -tn $sockname $sserv 318 $gnick($1) :End Of /WHOIS List
}
}
elseif ($1 == FINDU) {
sockwrite -tn $sockname $sserv 001 $gnick($1) :Searching for user $2 $+ ...
sockwrite -tn $sockname $sserv 002 $gnick($1) :User $2 found in rooms $readini(whois/ $+ $2 $+ .ini, $+ $2 $+ ,room)
sockwrite -tn $sockname $sserv 003 $gnick($1) :End of /FINDU
else {
sockwrite -tn $sockname $sserv 001 $gnick($1) :Searching for user $2 $+...
sockwrite -tn $sockname $sserv 002 $gnick($1) :User $2 not found!
sockwrite -tn $sockname $sserv 003 $gnick($1) :End of /FINDU
}
}
elseif ($1 == UPTIME) {
sockwrite -tn $sockname $sserv 001 $gnick($sockname) :SERVER UPTIME: $duration($calc($ticks / 1000))
}
elseif ($1 == INVITE) {
sockwrite -tn $sockname $sserv 341
}
elseif ($1 == LUSERS) {
sockwrite -tn $sockname $sserv 001 $gnick($1) :-
sockwrite -tn $sockname $sserv 002 $gnick($1) :There are $lines(users/userlist.txt) users and 0 are invisible on our 1 PaperIRC Server.
sockwrite -tn $sockname $sserv 003 $gnick($1) : $+ %opercount operator(s) online
sockwrite -tn $sockname $sserv 104 $gnick($1) :0 unknown connection(s)
sockwrite -tn $sockname $sserv 104 $gnick($1) : $+ %tvar channels formed
sockwrite -tn $sockname $sserv 105 $gnick($1) :-
sockwrite -tn $sockname $sserv 106 $gnick($1) :Current local users: $lines(users/userlist.txt) Max: $readini(config.ini,connections,maxconns)
sockwrite -tn $sockname $sserv 107 $gnick($1) :Current global users: $lines(users/userlist.txt) Max: $readini(config.ini,connections,maxconns)
sockwrite -tn $sockname $sserv 108 $gnick($1) :-
sockwrite -tn $sockname $sserv 109 $gnick($1) :End of /LUSERS
}
elseif ($1 == MOTD) {
sockwrite -tn $sockname $sserv 001 $gnick($1) :-
sockwrite -tn $sockname $sserv 002 $gnick($1) :Message of the Day, $chatname
sockwrite -tn $sockname $sserv 003 $gnick($1) :-
if ($exists(motd.txt) == $true) && ($lines(motd.txt) >= 1) {
var %n = 1
while (%n <= $lines(motd.txt)) {
sockwrite -tn $sockname $sserv 751 $gnick($1) :- $read(motd.txt,%n)
inc %n
}
}
else { sockwrite -tn $sockname $sserv 752 $gnick($1) :MOTD File is Missing }
sockwrite -tn $sockname $sserv 761 $gnick($1) :-
sockwrite -tn $sockname $sserv 762 $gnick($1) :End of /MOTD command
}
elseif ($1 == WHISPER) && ($groom($sockname)) {
if ($sockinchan($groom2($sockname),$getsock($groom2($sockname),$3)) == true) && ($sock($getsock($groom2($sockname),$3))) { sockwrite -tn $getsock($groom2($sockname),$3) : $+ $gna($sockname) $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ ) }
}
elseif ($1 == NOTICE) && ($groom($sockname)) {
if ($sockinchan($groom2($sockname),$getsock($groom2($sockname),$2)) == true) && ($sock($getsock($groom2($sockname),$2))) { sockwrite -tn $getsock($groom2($sockname),$2) : $+ $gna($sockname) $1- [ $+ [ $calc($numtok($1-,32) - 1) ] ] $iif(* iswm $left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255),$left([ $ [ $+ [ $numtok($1-,32) ] ] ],255) $+ ) }
}
elseif ($1 == MODE) {
if ($chr(37) $+ $chr(35) $+ * iswm $2) && (!$3) {
sockwrite -tn $sockname $sserv 324 nick $2 $readini($+(rooms/,$groom2($sockname),.ini),modes,room)
}
elseif ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($3 == +h) && ($4) && ($groom($sockname)) {
if ($4 == $readini($+(rooms/,$groom2($sockname),.ini),codes,owner)) {
if (*@ iswm $guserid($sockname)) {
write -l3 users/ $+ $sockname $+ .txt $replace($repuid($sockname,GO,3),@,.)
sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) -o $gnick($sockname)
sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) -o $gnick($sockname)
sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) +q $gnick($sockname)
sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) +q $gnick($sockname)
}
elseif (*@ !iswm $guserid($sockname)) && (*. !iswm $guserid($sockname)) {
write -l3 users/ $+ $sockname $+ .txt $remove($repuid($sockname,GO,3),+) $+ .
sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) +q $gnick($sockname)
sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) +q $gnick($sockname)
}
}
elseif ($4 == $readini($+(rooms/,$groom2($sockname),.ini),codes,host)) && ($isstaff($sockname) == false) {
write -l3 users/ $+ $sockname $+ .txt $remove($repuid($sockname,GO,3),+) $+ @
sockwrite -tn $sockname : $+ $gna($sockname) MODE $groom2($sockname) +o $gnick($sockname)
sendtoroom $groom2($sockname) $sockname MODE $groom2($sockname) +o $gnick($sockname)
}
}
elseif ($chr(37) $+ $chr(35) $+ * !iswm $2) && ($3) { sockwrite -tn $sockname :UserModes pas encore fait }
elseif ($chr(37) $+ $chr(35) $+ * iswm $2) && ($2 == $groom2($sockname)) {
if ($3 == +o) && ($isstaff($sockname) == true) && ($4) && ($getsock($2,$4)) && ($isstaff($getsock($2,$4)) == false) && ($sockinchan($2,$getsock($2,$4)) == true) {
if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) { var %yesv = 1 }
write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),GO,3),+) $+ @
if (%yesv) {
sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))
}
sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))
}
elseif ($3 == -o) && ($isstaff($sockname) == true) && ($4) && ($getsock($2,$4)) && (*. !iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {
if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) { var %yesv = 1 }
write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),$gsexe($getsock($2,$4)),3),@)
sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))
if (%yesv) {
sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))
}
}
elseif ($3 == +q) && (*. iswm $guserid($sockname)) && ($4) && ($getsock($2,$4)) && (*. !iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {
if (*@ iswm $guserid($getsock($2,$4))) {
write -l3 users/ $+ $getsock($2,$4) $+ .txt $replace($repuid($getsock($2,$4),GO,3),@,.)
sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -o $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-2 -o $gnick($getsock($2,$4))
sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))
}
elseif (*@ !iswm $guserid($getsock($2,$4))) {
if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) { var %yesv = 1 }
write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),GO,3),+) $+ .
if (%yesv) {
sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))
}
sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))
}
}
elseif ($3 == -q) && (*. iswm $guserid($sockname)) && ($isrealstaff($getsock($2,$4)) == false) && ($4) && ($getsock($2,$4)) && (*. iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {
write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),$gsexe($getsock($2,$4)),3),.)
sockwrite -tn $sockname : $+ $gna($sockname) $1-3 $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-3 $gnick($getsock($2,$4))
if (* $+ $chr(43) iswm $guserid($getsock($2,$4))) {
sockwrite -tn $sockname : $+ $gna($sockname) $1-2 -v $gnick($getsock($2,$4))
sendtoroom $2 $sockname $1-2 -v $gnick($getsock($2,$4))
}
}
elseif ($3 == +v) && ($4) && ($isstaff($sockname) == true) && ($isstaff($getsock($2,$4)) == false) && ($sockinchan($2,$getsock($2,$4)) == true) {
write -l3 users/ $+ $getsock($2,$4) $+ .txt $repuid($getsock($2,$4),GO,3) $+ +
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname $1-
}
elseif ($3 == -v) && ($4) && ($isstaff($sockname) == true) && (*+ iswm $guserid($getsock($2,$4))) && ($sockinchan($2,$getsock($2,$4)) == true) {
write -l3 users/ $+ $getsock($2,$4) $+ .txt $remove($repuid($getsock($2,$4),$gsexe($getsock($2,$4)),3),+)
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname $1-
}
elseif ($right($3,-1) isin $readini(config.ini,userconf,modes)) && ($chr(43) isin $3) && ($isstaff($sockname) == true) && ($2 == $groom2($sockname)) {
if ($right($3,-1) isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) { halt }
if ($right($3,-1) == l) && ($4 isnum 1-100)) {
writeini $+(rooms/,$2,.ini) modes limit $4
writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ l $4
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname MODE $2 l $4
}
if ($right($3,-1) == k) {
writeini $+(rooms/,$2,.ini) modes memberkey $4
writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ k
sockwrite -tn $sockname : $+ $gna($sockname) $1 $2 $3
sendtoroom $2 $sockname MODE $2 k
}
if ($4) { halt }
if (l isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) {
writeini $+(rooms/,$2,.ini) modes room $remove($3,1) $+ $readini($+(rooms/,$2,.ini),modes,room)
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname MODE $2 $3
}
else {
writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ $right($3,-1)
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname MODE $2 $3
}
}
elseif ($right($3,-1) isin $readini(config.ini,userconf,modes)) && ($right($3,-1) isin $readini(rooms/ $+ $2 $+ .ini,modes,room)) && ($chr(45) isin $3) && ($isstaff($sockname) == true) && ($2 == $groom2($sockname)) {
set %removemode $right($3,-1)
set %s $readini(rooms/ $+ $2 $+ .ini,modes,room)
writeini rooms/ $+ $2 $+ .ini modes room $remove(%s,%removemode)
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname MODE $2 $3
}
elseif ($right($3,-1) isin $roommodes) && ($isstaff($sockname) == true) && ($chr(37) $+ $chr(35) $+ * iswm $2) && ($2 == $groom2($sockname)) {
if (+ == $left($3,1)) && ($right($3,-1) !isin $readini($+(rooms/,$2,.ini),modes,room)) {
writeini $+(rooms/,$2,.ini) modes room $readini($+(rooms/,$2,.ini),modes,room) $+ $right($3,-1)
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname $1-
}
elseif (- == $left($3,1)) && ($right($3,-1) isin $readini($+(rooms/,$2,.ini),modes,room)) {
writeini $+(rooms/,$2,.ini) modes room $remove($readini($+(rooms/,$2,.ini),modes,room),$right($3,-1))
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname $1-
}
}
}
}
elseif ($1 == KICK) && ($2 == $groom2($sockname)) && ($chr(37) $+ $chr(35) $+ * iswm $2) && ($3) && ($groom($sockname)) && ($sockinchan($2,$getsock($2,$3)) == true) && ($isrealstaff($getsock($2,$3)) == false) {
if (*. iswm $guserid($sockname)) {
set %2sock $getsock($2,$3)
write -dl5 users/ $+ $getsock($2,$3) $+ .txt
write -l3 users/ $+ $getsock($2,$3) $+ .txt $remove($repuid($getsock($2,$3),$gsexe($getsock($2,$3)),3),.,@)
write $+(-ds,$getsock($2,$3)) rooms/ $+ $2 $+ .txt
var %oldsock %2sock
var %newsockname = ppr. $+ $gettok(%2sock,3,46)
.rename users/ $+ %2sock $+ .txt users/ $+ %newsockname $+ .txt
write -ds $+ %oldsock users/userlist.txt
write users/userlist.txt %newsockname
sockrename %oldsock %newsockname
sockwrite -tn %newsockname : $+ $gna($sockname) $iif(:* iswm $4,$1-,$1-3 : $+ $4-)
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname $1-
}
elseif (*@ iswm $guserid($sockname)) && (*. !iswm $guserid($getsock($2,$3))) {
var %2sock = $getsock($2,$3)
write -dl5 users/ $+ $getsock($2,$3) $+ .txt
write -l3 users/ $+ $getsock($2,$3) $+ .txt $remove($repuid($getsock($2,$3),$gsexe($getsock($2,$3)),3),.,@)
write $+(-ds,$getsock($2,$3)) rooms/ $+ $2 $+ .txt
var %oldsock %2sock
var %newsockname = ppr. $+ $gettok(%2sock,3,46)
.rename users/ $+ %2sock $+ .txt users/ $+ %newsockname $+ .txt
write -ds $+ %oldsock users/userlist.txt
write users/userlist.txt %newsockname
sockrename %oldsock %newsockname
sockwrite -tn %newsockname : $+ $gna($sockname) $iif(:* iswm $4,$1-,$1-3 : $+ $4-)
sockwrite -tn $sockname : $+ $gna($sockname) $1-
sendtoroom $2 $sockname $1-
}
}
elseif ($1 == PROP) {
if ($3 == $chr(42)) && ($2 == $groom2($sockname)) {
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 OID $readini(rooms/ $+ $2 $+ .ini,info,OID)
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Name $2
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Creation $readini(rooms/ $+ $2 $+ .ini,creation,date)
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Language $readini(rooms/ $+ $2 $+ .ini,info,language)
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Topic $readini(rooms/ $+ $2 $+ .ini,info,topic)
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Subject $readini(rooms/ $+ $2 $+ .ini,info,subject)
}
if ($3 == CREATION) && ($2 == $groom2($sockname)) {
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Creation $readini(rooms/ $+ $2 $+ .ini,creation,date)
}
if ($3 == OID) && ($2 == $groom2($sockname)) {
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 OID $readini(rooms/ $+ $2 $+ .ini,info,OID)
}
if ($3 == NAME) && ($2 == $groom2($sockname)) {
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Name $2
}
if ($3 == SUBJECT) && ($2 == $groom2($sockname)) {
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Subject $readini(rooms/ $+ $2 $+ .ini,info,subject)
}
if ($3 == LANGUAGE) && ($2 == $groom2($sockname)) {
sockwrite -tn $sockname $sserv 818 $gnick($sockname) : $+ $2 Language $readini(rooms/ $+ $2 $+ .ini,info,language)
}
if ($3 == OWNERKEY) && (*. iswm $guserid($sockname)) && ($2 == $groom2($sockname)) {
writeini rooms/ $+ $2 $+ .ini codes owner $iif(:* iswm $4,$right($4,-1),$4)
}
elseif ($3 == HOSTKEY) && (*. iswm $guserid($sockname)) && ($2 == $groom2($sockname)) {
writeini rooms/ $+ $2 $+ .ini codes host $iif(:* iswm $4,$right($4,-1),$4)
}
elseif ($3 == ROLE) && ($2 == $chr(36)) && ($6) {
if ($remove($4,

== $readini(opers.ini,$5,Poste)) && ($6 == $readini(opers.ini,$5,pass)) && ($gnick($sockname)) && ($gaddr($sockname)) && ($guserid($sockname)) && (!$groom($sockname)) {
write -l1 users/ $+ $sockname $+ .txt $readini(opers.ini,$5,Poste) $+ @ $+ cg
sockwrite -tn $sockname : $+ $gna($sockname) NICK : $+ $readini(opers.ini,$5,nick)
write -l2 users/ $+ $sockname $+ .txt $readini(opers.ini,$5,nick)
write -l3 $+(users/,$sockname,.txt) H,U,PX, | write -l4 $+(users/,$sockname,.txt) PX
write -l3 users/ $+ $sockname $+ .txt $replace($repuid($sockname,$readini(opers.ini,$5,mode),2),$gettok($repuid($sockname,$readini(opers.ini,$5,mode),2),3,44),GO) $+ $readini(opers.ini,$5,mode2)
sockwrite -tn $sockname $sserv 001 $gnick($sockname) : $+ You are now an IRC operator
set %opercount $calc(%opercount + 1)
}
}
if ($4 == :PROFILMODE1) {
write -l3 $+(users/,$sockname,.txt) H,U,PX,
}
if ($4 == :PROFILMODE0) {
write -l3 $+(users/,$sockname,.txt) H,U,RX,
}
if ($4 == :PROFILMODE3) {
write -l3 $+(users/,$sockname,.txt) H,U,MX,
}
if ($4 == :PROFILMODE4) {
write -l3 $+(users/,$sockname,.txt) H,U,FX,
}
if ($4 == :PROFILMODE6) {
write -l3 $+(users/,$sockname,.txt) H,U,G,
}
if ($4 == :PROFILMODE13) {
write -l3 $+(users/,$sockname,.txt) H,U,FY,
}
if ($4 == :PROFILMODE11) {
write -l3 $+(users/,$sockname,.txt) H,U,MY,
}
if ($4 == :PROFILMODE9) {
write -l3 $+(users/,$sockname,.txt) H,U,PY,
}
}
if ($3 == TOPIC) && ($isstaff($sockname) == true) && ($4-) && ($2 == $groom2($sockname)) && ($chr(37) $+ $chr(35) $+ * iswm $2) {
;Here we stop lethal/bad code from going in the topic
if ($chr(60) isin $4-) {
sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters
halt
}
if ($chr(62) isin $4-) {
sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters
halt
}
else {
writeini rooms/ $+ $2 $+ .ini info topic $right($4-,-1)
sockwrite -tn $sockname : $+ $gna($sockname) topic $2 $4-
sendtoroom $2 $sockname topic $2 $4-
}
}
elseif ($1 == AWAY) && ($groom($sockname)) {
if ($2) {
write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,G,1)
sockwrite -tn $sockname $sserv 306 $gnick($sockname) :306
sendtoroom $groom2($sockname) $sockname 822 :Away
}
elseif ($1 == TOPIC) && ($isstaff($sockname) == true) && ($3-) && ($2 == $groom2($sockname)) {
;Here we stop lethal/bad code from going in the topic
if ($chr(60) isin $3-) {
sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters
halt
}
if ($chr(62) isin $3-) {
sockwrite -tn $sockname $sserv 706 $gnick($sockname) :Bad Characters
halt
}
else {
writeini rooms/ $+ $2 $+ .ini info topic $iif(:* iswm $3,$right($3-,-1),$3-)
sockwrite -tn $sockname : $+ $gna($sockname) topic $2 $3-
sendtoroom $2 $sockname topic $2 $3-
}
}
elseif (!$2) {
write -l3 users/ $+ $sockname $+ .txt $repuid($sockname,H,1)
sockwrite -tn $sockname $sserv 305 $gnick($sockname) :305
sendtoroom $groom2($sockname) $sockname 821 :User UnAway
}
}
elseif ($1 == LISTX) || ($1 == LIST) {
sockwrite -tn $sockname $sserv 321 $gnick($sockname) Channel :Users Name
var %a = 1
while (%a <= $var(%create.*,0)) {
sockwrite -tn $sockname $sserv 322 $gnick($sockname) $right($gettok($var(%create.*,%a),2,46),-2) $lines(rooms/ $+ $gettok($var(%create.*,%a),2,46) $+ .txt) : $+ $chr(91) $+ $chr(43) $+ $readini(rooms/ $+ $gettok($var(%create.*,%a),2,46) $+ .ini,modes,room) $+ $chr(93)
inc %a
}
sockwrite -tn $sockname $sserv 323 $gnick($sockname) :End of /LIST
}
elseif ($1 == ACCESS) {
if (!$2) || ($left($2,2) != $chr(37) $+ $chr(35)) || ($len($2) < 3) || ($2 != $groom2($sockname)) halt
if ($isstaff($sockname) == false) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }
if (!$3) || ($3 == list) {
sockwrite -tn $sockname 803 $gnick($sockname) $groom2($sockname) Start of access entrys
var %l 1
while ($hget(access. [ $+ [ $2 ] ],%l).item != $null) { sockwrite -tn $sockname 804 $gnick($sockname) $2 $hget(access. [ $+ [ $2 ] ],%l).data | inc %l }
sockwrite -tn $sockname 805 $gnick($sockname) $groom2($sockname) End of access entrys
}
elseif ($3 == ADD) {
if ($hget(access. $+ $2,0).item > 500) { sockwrite -tn $sockname 916 $gnick($sockname) Too many access entries (500 max) | halt }
if ($4 != OWNER) && ($4 != HOST) && ($4 != DENY) && ($4 != VOICE) { sockwrite -tn $sockname 903 $gnick($sockname) $4 Bad Level | halt }
if ($6) && ($6 !isnum) { sockwrite -tn $sockname 903 $gnick($sockname) $6 Bad Level | halt }
if ($4 == OWNER) && (*. !iswm $guserid($sockname)) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }
elseif ($4 == OWNER) {
if ($hfind(access. [ $+ [ $2 ] ],$5,1)) { sockwrite -tn $sockname 914 $gnick($sockname) Duplicate access entry | halt }
hadd -m access. [ $+ [ $2 ] ] $5 $upper($4) $5-6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-
sockwrite -tn $sockname 801 $gnick($sockname) $groom2($sockname) $upper($4) $5-6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-
}
elseif ($4 == HOST) || ($4 == DENY) || ($4 == VOICE) {
if ($hfind(access. [ $+ [ $2 ] ],$5,1)) { sockwrite -tn $sockname 914 $gnick($sockname) Duplicate access entry | halt }
hadd -m access. [ $+ [ $2 ] ] $remove($5,$chr(36) $+ $chr(42)) $upper($4) $remove($5,$chr(36) $+ $chr(42)) $6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-
sockwrite -tn $sockname 801 $gnick($sockname) $groom2($sockname) $upper($4) $5-6 $iif($6 == $null,0) $iif(*. iswm $guserid($sockname),O-,H-) $+ $gettok($gna($sockname),2,33) $7-
}
}
elseif (DEL* iswm $3) {
if ($hfind(access. [ $+ [ $2 ] ],$5,1)) && ($hfind(access. [ $+ [ $2 ] ],$4 * $+ $5 $+ *,1,w).data == $hfind(access. [ $+ [ $2 ] ],$5,1)) {
if ($hfind(access. [ $+ [ $2 ] ],$4 * $+ $5 $+ *O-*,1,w).data) && (*. !iswm $guserid($sockname)) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }
hdel access. [ $+ [ $2 ] ] $5
sockwrite -tn $sockname 802 $gnick($sockname) $groom2($sockname) $upper($4) $5
}
else sockwrite -tn $sockname 915 $gnick($sockname) Unknown access entry
}
elseif (clear == $3) {
if ($4 != $null) && ($4 != owner) && ($4 != host) && ($4 != voice) && ($4 != deny) { sockwrite -tn $sockname 903 $gnick($sockname) $4 Bad Level | halt }
if ($4 == $null) {
if (*. iswm $guserid($sockname)) {
hfree access. [ $+ [ $2 ] ]
sockwrite -tn $sockname 820 $gnick($sockname) $groom2($sockname) * Clear
}
elseif (*@ iswm $guserid($sockname)) {
var %x 1
while ($hget(access. [ $+ [ $2 ] ],%x).item != $null) {
if ($left($gettok($hget(access. [ $+ [ $2 ] ],%x).data),4,32),1) == H) { hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x) | dec %x }
inc %x
}
sockwrite -tn $sockname 922 $gnick($sockname) Some entrys not cleared due to security
}
}
elseif ($4 == owner) {
if (*@ iswm $guserid($sockname)) { sockwrite -tn $sockname 913 $gnick($sockname) $groom2($sockname) No Access | halt }
var %x 1
while ($hget(access. [ $+ [ $2 ] ],%x).item != $null) {
if ($gettok($hget(access. [ $+ [ $2 ] ],%x).data,1,32) == owner) { hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x).item | dec %x }
inc %x
}
sockwrite -tn $sockname 820 $gnick($sockname) $groom2($sockname) OWNER Clear
}
else {
var %x 1
while ($hget(access. [ $+ [ $2 ] ],%x).item != $null) {
if ($gettok($hget(access. [ $+ [ $2 ] ],%x).data,1,32) == $4) {
if (*. iswm $guserid($sockname)) { hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x).item | dec %x }
elseif (*@ iswm $guserid($sockname)) && ($left($gettok($hget(access. [ $+ [ $2 ] ],%x).data,4,32),1) == H) {
hdel access. [ $+ [ $2 ] ] $hget(access. [ $+ [ $2 ] ],%x).item
dec %x
}
}
inc %x
}
if (*. iswm $guserid($sockname)) sockwrite -tn $sockname 820 $gnick($sockname) $groom2($sockname) $upper($4) Clear
else sockwrite -tn $sockname 922 $gnick($sockname) Some entrys not cleared due to security
}
}
}
elseif (quit* iswm $1) { disconnect1 $sockname }
elseif ($1 == part) && ($chr(37) $+ $chr(35) == $left($2,2)) {
disconnect1 $sockname
}
else {
if ($sock($sockname)) { }
}
elseif ($1 == WHOIS) {
if ($groom($sockname)) && ($getsock($groom2($sockname),$2)) {
sockwrite -tn $sockname $sserv 311 $gnick($sockname) $gnick($getsock($groom2($sockname),$2)) $gettok($gettok($gna($getsock($groom2($sockname),$2)),1,$asc(@)),2,$asc(!)) $gettok($gna($getsock($groom2($sockname),$2)),2,$asc(@)) * : $+ $gnick($getsock($groom2($sockname),$2))
sockwrite -tn $sockname $sserv 318 $gnick($sockname) $gnick($getsock($groom2($sockname),$2)) :End Of /WHOIS List
}
}
}
;####################################################################
;# #################### Access List #################### #
;####################################################################
on *:SOCKCLOSE:ppr.*:{
if ($gnick($sockname) == $isrealstaff) {
set %opercount $calc(%opercount - 1)
}
set %userconncount $+ $sock($sockname).ip $calc(%userconncount $+ $sock($sockname).ip - 1)
echo @Connections 15- $asctime(H:nn:ss) 2Disconnected: $sockname Ip: $sock($sockname).ip Nick: $gnick($sockname)
if ($groom($sockname)) { write $+(-ds,$sockname) rooms/ $+ $groom2($sockname) $+ .txt | sendtoroom $groom2($sockname) $sockname PART : $+ $groom2($sockname) }
if ($lines(rooms/ $+ $groom2($Sockname) $+ .txt) == 0) { .remove rooms/ $+ $groom2($sockname) $+ .ini | .remove rooms/ $+ $groom2($sockname) $+ .txt | unset %create. [ $+ [ $groom2($sockname) ] ] | if ($hget(access. [ $+ [ $groom2($sockname) ] ])) { hfree access. [ $+ [ $groom2($sockname) ] ] } }
if ($exists($+(users/,$sockname,.txt)) == $true) { write $+(-ds,$sockname) users/userlist.txt | .remove $+(users/,$sockname,.txt) }
}
Je met quand meme le code de Paper ... si des fois ca peut aider
Je rapelle que sur Paper les profils ne fonctionnent pas mais les têtes H/F en salle oui
Pas de têtes H/F mais les profils fonctionnent eux ...