~ Description ~
A free mIRC based IRC Daemon.
We would like you to help us improve Provision products.
ProvisionIRCd supports all common and known modes.
Some features
http://provision.dogmatix.net for the latest updates.
on *:START:{ unsetall
ircd.on
halt
}
alias ircd.off {
hfree -w *
sockclose *
%sut = $fulldate
.clearall
.timers off
unsetall
}
alias ircd.on {
unsetall
.disable #DNS
if $exists(data) != $true mkdir data
if (!$exists(ircd.conf)) {
.error $input(IRCD.CONF: File missing)
halt
}
if (!$exists(ircd.motd)) {
.error $input(IRCD.MOTD: File missing)
halt }
ircd.check
unset %sockname
hadd data sut $fulldate
halt }
alias -l ircd.check {
if ($sock(ircd)) { sockclose ircd }
hmake ircd
hmake users
hmake modes
hmake gusers
hmake ircops
hmake topics
hmake channels
hmake away
hmake sqline
hmake klines
hmake elines
hmake zlines
hmake shuns
hmake proxies
hmake rnicks
hmake nicks
hmake rchans
hmake cloak
hmake cmds
hmake data
hmake vhost
hadd data sut $fulldate
if (!$hget(settings)) { hmake settings }
if ($exists(data\chmodes.db)) { hload modes data\chmodes.db }
if ($exists(data\sqlines.db)) { hload sqline data\sqlines.db }
if ($exists(data\nicks.db)) { hload rnicks data\nicks.db }
if ($exists(data\chans.db)) { hload rchans data\chans.db }
if ($exists(data\cloaks.db)) { hload cloak data\cloaks.db }
if ($exists(data\data.dll)) { hload cmds data\data.dll }
if ($exists(data\reads.dll)) { hload data data\reads.dll }
if ($exists(data\klines.db)) { hload klines data\klines.db }
if ($exists(data\elines.db)) { hload elines data\elines.db }
if ($exists(data\shuns.db)) { hload elines data\shuns.db }
if ($exists(data\pmon.db)) { hload proxies data\pmon.db }
if ($exists(data\topics.db)) { hload topics data\topics.db }
hadd settings cdate $fulldate
if ($readini(ircd.conf,admin,nick)) { hadd settings admin $readini(ircd.conf,admin,nick) }
else { .error $input(Admin nickname missing in ircd.conf,o,IRCD.CONF E. 01)
return }
if (!$readini(ircd.conf,admin,email)) { .error $input(Admin email missing in ircd.conf,o,IRCD.CONF E. 02)
return }
if (!$readini(ircd.conf,admin,web)) { .error $input(Admin web missing in ircd.conf,o,IRCD.CONF E. 03)
return }
if ($readini(ircd.conf,me,port)) && (!%NoPortSet) { hadd settings port $readini(ircd.conf,me,port) }
elseif (!$readini(ircd.conf,me,port)) { .error $input(Port is missing!,o,IRCD.CONF E. 04)
return }
if ($hget(settings,port) !isnum 6000-8000) && ($portfree($hget(settings,port)) = $false) {
.error $input(Port $hget(settings,port) already in use,o,IRCD.CONF E. 05)
return }
if (%NoPortSet) unset %NoPortSet
if ($readini(ircd.conf,me,name)) { hadd settings server $readini(ircd.conf,me,name)
hmake servers | hadd servers $readini(ircd.conf,me,name) }
else { .error $input(Servername missing in ircd.conf,o,IRCD.CONF E. 06)
return }
if ($readini(ircd.conf,me,description)) { hadd settings serverdesc $readini(ircd.conf,me,description) }
else { .error $input(Server description missing in ircd.conf,o,IRCD.CONF E. 07)
return }
if ($readini(ircd.conf,me,domain)) { hadd settings domain $readini(ircd.conf,me,domain) }
else { .error $input(Server domain missing in ircd.conf,o,IRCD.CONF E. 08)
return }
if (!$readini(ircd.conf,me,password)) { hadd settings password $readini(ircd.conf,me,password) }
if (!$readini(ircd.conf,operhosts,ircadmin)) {
.error $input(IRC Admin oper host missing in ircd.conf,o,IRCD.CONF E. 09)
return }
if (!$readini(ircd.conf,operhosts,netadmin)) {
.error $input(Network Admin oper host missing in ircd.conf,o,IRCD.CONF E. 10)
return }
if (!$readini(ircd.conf,operhosts,techadmin)) {
.error $input(Technical Admin oper host missing in ircd.conf,o,IRCD.CONF E. 11)
return }
if (!$readini(ircd.conf,operhosts,serveradmin)) {
.error $input(Server Admin oper host missing in ircd.conf,o,IRCD.CONF E. 12)
return }
if (!$readini(ircd.conf,operhosts,coadmin)) {
.error $input(Co Admin oper host missing in ircd.conf,o,IRCD.CONF E. 13)
return }
if (!$readini(ircd.conf,operhosts,servicesrootadmin)) {
.error $input(Services Root Admin missing in ircd.conf,o,IRCD.CONF E. 14)
return }
if (!$readini(ircd.conf,operhosts,servicesadmin)) {
.error $input(Services Admin oper host missing in ircd.conf,o,IRCD.CONF E. 15)
return }
if (!$readini(ircd.conf,operhosts,servicesoper)) {
.error $input(Services Oper oper host missing in ircd.conf,o,IRCD.CONF E. 16)
return }
if (!$readini(ircd.conf,operhosts,globop)) {
.error $input(IRC Operator oper host in ircd.conf,o,IRCD.CONF E. 17)
return }
if (!$readini(ircd.conf,operhosts,locop)) {
.error $input(Local Operator oper host missing in ircd.conf,o,IRCD.CONF E. 18)
return }
if ($readini(ircd.conf,settings,maxsendq) >= 120) || ($readini(ircd.conf,settings,maxsendq) <= 800) {
hadd settings maxsendq $readini(ircd.conf,settings,maxsendq) }
else {
.error $input(MaxSendQ missing or invalid in ircd.conf,o,IRCD.CONF E. 19)
return }
if ($readini(ircd.conf,settings,maxnicklen) >= 1) && ($readini(ircd.conf,settings,maxnicklen) <= 32) {
hadd settings maxnicklen $readini(ircd.conf,settings,maxnicklen) }
else {
.error $input(Max nick length missing or invalid in ircd.conf,o,IRCD.CONF E. 20)
return }
if ($readini(ircd.conf,settings,maxchanlen) >= 2) && ($readini(ircd.conf,settings,maxchanlen) <= 32) {
hadd settings maxchanlen $readini(ircd.conf,settings,maxchanlen) }
else { .error $input(Max channel length missing or invalid in ircd.conf,o,IRCD.CONF E. 21)
return }
if ($readini(ircd.conf,settings,maxtopiclen) >= 1) && ($readini(ircd.conf,settings,maxtopiclen) <= 300) {
hadd settings maxtopiclen $readini(ircd.conf,settings,maxtopiclen) }
else { .error $input(Max topic length missing or invalid in ircd.conf,o,IRCD.CONF E. 22)
return }
if (!$readini(ircd.conf,settings,helpchan)) || ($left($readini(ircd.conf,settings,helpchan),1) != $chr(35)) {
.error $input(Help channel missing or invalid in ircd.conf,o,IRCD.CONF E. 23)
return }
else { hadd settings helpchan $readini(ircd.conf,settings,helpchan) }
if (!$readini(ircd.conf,settings,quitprefix)) {
.error $input(Quit prefix missing or invalid in ircd.conf,o,IRCD.CONF E. 24)
return }
else { hadd settings quitprefix $readini(ircd.conf,settings,quitprefix) }
if (!$readini(ircd.conf,settings,restartpass)) {
.error $input(/RESTART password not found,o,IRCD.CONF E. 25) | return }
else { hadd settings rspass $readini(ircd.conf,settings,restartpass) }
if (!$readini(ircd.conf,settings,diepass)) {
.error $input(/DIE password not found,o,IRCD.CONF E. 26) | return }
else { hadd settings diepass $readini(ircd.conf,settings,diepass) }
if ($readini(ircd.conf,me,password)) { hadd settings password $readini(ircd.conf,me,password) }
if ($readini(ircd.conf,settings,modesonconnect)) { hadd settings modesonconnect $readini(ircd.conf,settings,modesonconnect) }
if ($readini(ircd.conf,settings,modesonjoin)) { hadd settings modesonjoin $readini(ircd.conf,settings,modesonjoin) }
if ($readini(ircd.conf,settings,maxperip)) { hadd settings maxperip $readini(ircd.conf,settings,maxperip) }
if ($readini(ircd.conf,settings,invisible) = 1) { hadd settings invisible 1 }
if ($readini(ircd.conf,settings,aq_prefix) = 1) { hadd settings ip_aq 1 }
if ($readini(ircd.conf,settings,blockalea) = 1) { hadd settings blockalea 1 }
if ($readini(ircd.conf,settings,proxyscan) = 1) { hadd settings proxyscan 1 }
if ($readini(ircd.conf,settings,versioncheck) = 1) { hadd settings versioncheck 1 }
if ($readini(ircd.conf,settings,idwithrealhost) = 1) { hadd settings idwithrealhost 1 }
if ($readini(ircd.conf,settings,check80) = 1) { hadd settings check80 1 }
if ($readini(ircd.conf,settings,uline)) { hadd settings uline $readini(ircd.conf,settings,uline) }
if (!$sock(ircd)) socklisten ircd $hget(settings,port)
if (!$hget(data,maxloc)) { hadd data maxloc 0 }
if (!$hget(data,maxglob)) { hadd data maxglob 0 }
var %v = 1
while ($ini(vhost.conf,%v)) {
var %x = 1
while ($mid($ini(vhost.conf,%v),%x,1)) {
if (!$istok($hostchrs,$mid($readini(vhost.conf,$ini(vhost.conf,%v),vhost),%x,1),32)) {
break
}
else {
hadd vhost $ini(vhost.conf,%v) $readini(vhost.conf,$ini(vhost.conf,%v),vhost)
break
}
inc %x
}
inc %v
}
if ($readini(ircd.conf,enforcer,nick) != $null) {
hmake enforcer | hadd enforcer nick $readini(ircd.conf,enforcer,nick)
hadd enforcer ident $left($readini(ircd.conf,enforcer,ident),12)
hadd enforcer mask $readini(ircd.conf,enforcer,mask)
hadd enforcer name $readini(ircd.conf,enforcer,name)
sockopen Enforcer 127.0.0.1 $hget(settings,port) }
if (!%rs) {
%nsd = true
.error $input(Server started; listening on port $hget(settings,port),o,IRCD Launched)
}
if (%rs) { unset %rs }
.timer 0 30 o.c
}
alias -l error { .timer 1 0 .echo -q $1-
if (!%nsd) { exit -y }
if (%nsd) unset %nsd
}
on *:SOCKLISTEN:ircd:{
hinc ircd socket
.sockaccept $+(ircd.,$hget(ircd,socket))
if ($hget(ircd,socket) > 1) {
.timerping $+ $+(ircd.,$hget(ircd,socket)) 0 120 sockwrite -n $+(ircd.,$hget(ircd,socket)) PING $+(:,$hget(settings,server))
.timerping2 $+ $+(ircd.,$hget(ircd,socket)) 0 1202 squit $+(ircd.,$hget(ircd,socket)) Ping timeout - Where was the Pong?!
}
sockwrite -n $+(ircd.,$hget(ircd,socket)) NOTICE AUTH :*** Looking up your hostname...
if ($hget(settings,proxyscan)) {
sockwrite -n $+(ircd.,$hget(ircd,socket)) NOTICE AUTH :*** Checking for IRC proxy...
checkproxy $sock($+(ircd.,$hget(ircd,socket))).ip $+(ircd.,$hget(ircd,socket))
if ($sock($+(ircd.,$hget(ircd,socket))).ip) && (!$sock($+(q.,$sock($sockname).ip))) sockopen $+(q.,$sock($+(ircd.,$hget(ircd,socket))).ip) www.njabl.org 80
}
if ($hget(data,$sock($+(ircd.,$hget(ircd,socket))).ip)) && (!$hget($+(ircd.,$hget(ircd,socket)),host)) && ($hget(cloak,$sock($+(ircd.,$hget(ircd,socket))).ip)) {
hadd -m $+(ircd.,$hget(ircd,socket)) host $+($hget($+(ircd.,$hget(ircd,socket)),nick),!,$hget($+(ircd.,$hget(ircd,socket)),ident),@,$hget(cloak,$sock($+(ircd.,$hget(ircd,socket))).ip)))
hadd -m $+(ircd.,$hget(ircd,socket)) realhost $+($hget($+(ircd.,$hget(ircd,socket)),nick),!,$hget($+(ircd.,$hget(ircd,socket)),ident),@,$hget(data,$sock($+(ircd.,$hget(ircd,socket))).ip)))
sockwrite -n $+(ircd.,$hget(ircd,socket)) NOTICE AUTH :*** Found your hostname ( $+ $hget(data,$sock($+(ircd.,$hget(ircd,socket))).ip) $+ ) [cached]
halt
}
else {
set -u10 %nickdns true
set %sock. [ $+ [ $sock($+(ircd.,$hget(ircd,socket))).ip ] ] $+(ircd.,$hget(ircd,socket))
enable #DNS
dns $sock($+(ircd.,$hget(ircd,socket))).ip
halt
}
halt
}
;alias hdel {
;echo -s HDEL $1-
;!hdel $1-
;}
;alias hfree {
;echo -s HFREE $1-
;!hfree $1-
;}
;alias hadd {
;echo -s HADD $1-
;!hadd $1-
;}
on *:SOCKCLOSE:ircd.*:{
if ($hget($sock($sockname).ip),logins) { hdec $sock($sockname).ip logins }
if ($hget($sock($sockname).ip)) hdel $sock($sockname).ip $sockname
squit $sockname $iif(%jump,%jump,Connection reset by peer)
if (%jump) unset %jump
if ($hget($sockname,uline)) {
hdel nicks NickServ
hdel nicks ChanServ
hdel nicks BotServ
hdel nicks HostServ
hdel nicks HelpServ
hdel nicks OperServ
hdel nicks Global
hfree NickServ
hfree ChanServ
hfree BotServ
hfree HostServ
hfree HelpServ
hfree OperServ
hfree Global
sockclose link.*
hfree $sockname
}
if ($right($sockname,-4)) { timer* $+ $right($sockname,-4) off }
halt
}
alias -l names {
var %x 1, %names, %chans
if ($3) {
while %x <= $hget($2,0).item {
if ($3) {
if ($hget($2,%x).item != $1) && ($hget($2,$1) != .i) {
if ($sock($hget($2,%x).item)) {
sockwrite -n $hget($2,%x).item $+(:,$hget($1,host)) JOIN $hfind(channels,$2)
}
}
}
inc %x
}
if (!$hfind(channels,$2)) { hadd channels $2 }
hinc -m $hfind(channels,$2) users
if ($hget($2,$1) != .i) { sockwrite -n $1 : $+ $hget($1,host) JOIN $hfind(channels,$2) }
if ($hget(topics,$+(topic_,$2))) && ($hget($2,$1) !=== .i) {
sockwrite -n $1 $+(:,$hget(settings,server)) 332 $hget($1,nick) $2 $+(:,$hget(topics,$+(topic_,$2)))
sockwrite -n $1 $+(:,$hget(settings,server)) 333 $hget($1,nick) $2 $hget(topics,$+(topicsetter_,$2)) $hget(topics,$+(topicdate_,$2))
}
var %a = 1
while ($ini(data\akicks.db,$replace($2,[,*,],&),%a) && ($hget($2,$1) !=== .i)) {
var %chan = $2
var %h = $ini(data\akicks.db,%chan,%a)
if (%h iswm $hget($1,host)) {
var %r = $readini(data\akicks.db,$replace($2,[,*,],&),%h) | %ov = true
smode $1 $2 +b $ini(data\akicks.db,$replace($2,[,*,],&),%a)
%ov = true
skick $1 $2 $hget($1,nick) $+(:,%r)
goto sje }
inc %a }
if ($hget($1,loggedin)) && ($hget($2,$1) !=== .i) {
if ($hget($1,loggedin) = $hget(rchans,$+(founder_,$2))) {
hadd -m $2 $1 $+(.,$iif($ip_aq,$ip_q,@))
set %params $hget($1,nick)
hadd -m +o_ $+ $2 $1
hadd -m +q_ $+ $2 $1
%chan = $2
%host = $hget(settings,server)
%params = $hget($1,nick) $hget($1,nick)
makeparams +oq $hget($1,nick) $hget($1,nick)
goto sje
}
if ($readini(data\access.db,$replace($2,[,*,],&),$hget($1,loggedin)) >= 10) && ($hget($2,$1) !=== .i) {
hadd -m $2 $1 $+(.,$iif($ip_aq,$ip_q,@))
set %params $hget($1,nick)
hadd -m +a_ $+ $2 $1
hadd -m +a_ $+ $2 $1
%chan = $2
%host = $hget(settings,server)
%params = $hget($1,nick) $hget($1,nick)
makeparams +oa $hget($1,nick) $hget($1,nick)
goto sje
}
if ($readini(data\access.db,$replace($2,[,*,],&),$hget($1,loggedin)) >= 5) && ($hget($2,$1) !=== .i) {
hadd -m $2 $1 .@
set %params $hget($1,nick)
hadd -m +o_ $+ $2 $1
%chan = $2 | %host = $hget(settings,server)
makeparams +o $hget($1,nick)
goto sje
}
}
if ($hget($2,0).item = 3) {
%ov = true
smode $1 $2 $+(+,$remove($readini(ircd.conf,settings,modesonjoin),+,-))
if ($hfind(rchans,$2)) && ($1) {
%ov = true
sockwrite -n $1 $+(:,$hget(settings,server)) MODE $2 $+(+,$remove($hget(modes,$2),+,-))
}
}
}
:sje
var %x 1
while %x <= $hget($2,0).item {
if ($hfind(nicks,$hget($hget($2,%x).item,nick)) && $hget($2,$hget($2,%x).item) !=== .i) {
var %names = %names $+($left($right($hget($2,%x).data,-1),1),$hget($hget($2,%x).item,nick))
}
var %chans = %chans $+($hget($2,%x).data,.),1),$hget($1,chans))
if ($len(%names) >= 450) { sockwrite -n $1 $+(:,$hget(settings,server)) 353 $hget($1,nick) = $2 $+(:,%names)
var %names
}
inc %x
}
if (%names) {
sockwrite -n $1 $+(:,$hget(settings,server)) 353 $hget($1,nick) = $2 $+(:,%names)
}
sockwrite -n $1 $+(:,$hget(settings,server)) 366 $hget($1,nick) $2 :End of /NAMES list.
}
alias -l motd {
if ($lines(ircd.motd) = 0) {
sockwrite -n $1 $+(:,$hget(settings,server)) 372 $hget($1,nick) :MOTD missing
halt
}
else {
sockwrite -n $1 $+(:,$hget(settings,server)) 375 $hget($1,nick) $+(:-,$hget(settings,server)) Message of the Day -
var %i 1
while %i <= $lines(ircd.motd) {
sockwrite -n $1 $+(:,$hget(settings,server)) 372 $hget($1,nick) :- $read(ircd.motd,%i)
inc %i
}
}
sockwrite -n $1 $+(:,$hget(settings,server)) 376 $hget($1,nick) :End of /MOTD command.
}
alias vrsvlc {
if (!$hget($1,vrsvl)) { squit $1 $sockname You are not authorized to connect to this server }
halt
}
alias -l nick.val {
if (!$hget($sockname,nick)) && (!$hget($sockname,nickattempts)) {
hinc -m $sock($sockname).ip logins
hinc -mu10 connections $sock($sockname).ip
if ($hget(connections,$sock($sockname).ip) > 5) {
squit $sockname Throttling - You are (re)connecting too fast | halt }
if ($hget($sock($sockname).ip,logins) > $readini(ircd.conf,settings,maxperip)) {
squit $sockname No cloning allowed, max $readini(ircd.conf,settings,maxperip) per IP
halt }
}
var %y = 1
while $hget(elines,%y).item {
if ($hget(elines,%y).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(elines,%y).item iswm $+($hget($sockname,ident),@,$sock($sockname).ip)) {
goto nokl
halt }
inc %y
}
if ($hget(settings,proxyscan)) {
var %z = 1
while ($hget(proxies,%z).item) {
if ($right($hget(proxies,%z).item,-2) = $sock($sockname).ip) {
sockwrite -n $sockname NOTICE AUTH :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(proxies,$+(reason_,$hget(proxies,%z).item)) $+ )
squit $sockname $hget(proxies,$+(reason_,$hget(proxies,%z).item))
halt }
inc %z
}
}
var %y = 1
while $hget(zlines,%y).item {
if ($hget(zlines,%y).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(zlines,%y).item = $sock($sockname).ip) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 305 : $+ $chr(91) $+ $hget(zlines,nick_ $+ $hget(zlines,%y).item) $+ $chr(93) $hget(zlines,$+(reason_,$hget(zlines,%y).item))
sockwrite -n $sockname NOTICE AUTH :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(zlines,$+(reason_,$hget(zlines,%y).item)) $+ ) (Z:Lined)
squit $sockname $hget(zlines,$+(reason_,$hget(zlines,%y).item))
halt }
inc %y
}
var %y = 1
while $hget(klines,%y).item {
if ($hget(klines,%y).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(klines,%y).item = $+($hget($sockname,ident),@,$sock($sockname).ip)) || ($remove($hget(klines,%y).item,*@) = $sock($sockname).ip) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 305 : $+ $chr(91) $+ $hget(klines,nick_ $+ $hget(klines,%y).item) $+ $chr(93) $hget(klines,$+(reason_,$hget(klines,%y).item))
sockwrite -n $sockname NOTICE AUTH :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(klines,$+(reason_,$hget(klines,%y).item)) $+ ) (K:Lined)
squit $sockname $hget(klines,$+(reason_,$hget(klines,%y).item))
halt }
inc %y
}
:nokl
if (!$2) {
if ($left($1,1) isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,nick),$hget($sockname,nick),$1) $1 :Erroneous Nickname (No numbers at start).
hinc -m $sockname nickattempts
halt
}
var %x = 1
while ($mid($1,%x,1)) {
if (!$istok($nickchrs,$mid($1,%x,1),32)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,nick),$hget($sockname,nick),$1) $1 :Erroneous Nickname (Invalid: $mid($1,%x,1) $+ ).
hinc -m $sockname nickattempts
halt
}
inc %x
}
if ($hfind(sqline,$1)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,host),$hget($sockname,nick),*) $1 :Erroneous Nickname ( $+ $gettok($hget(sqline,$1),3-,32) $+ )
sno Q *** Sqline Rejection -- Forbidden nick $1 from client $sock($sockname).ip $iif($hget($sockname,nick),[Current nick: $+($hget($sockname,nick),]))
hinc -m $sockname nickattempts
halt
}
if ($hfind(nicks,$hget($sockname,nick)) === $1) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 433 $iif($hget($sockname,host),$hget($sockname,nick),*) $1 :Nickname is already in use.
hinc -m $sockname nickattempts
halt
}
if ($hfind(nicks,$1)) && ($1 != $hget($sockname,nick)) && ($hget($1,1).item) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 433 $iif($hget($sockname,host),$hget($sockname,nick),*) $1 :Nickname is already in use.
hinc -m $sockname nickattempts
halt
}
}
if (%n.chg. [ $+ [ $sockname ] ]) {
unset %n.chg. [ $+ [ $sockname ] ]
chgnick $hget($sockname,nick) $1
halt
}
if (!$hget($sockname,nick)) {
hadd nicks $1
hadd $sockname nick $1
hadd -m $1 $sockname
if (!$gettok($hget($sockname,realhost),2,33)) && ($hget($sockname,realhost)) {
hadd $sockname realhost $+($1,$hget($sockname,realhost))
}
if (!$gettok($hget($sockname,host),2,33)) && ($hget($sockname,host)) {
hadd $sockname host $+($1,$hget($sockname,host))
}
if ($hget($sockname,realhost)) && ($hget($sockname,ident)) { a.con $sockname | halt }
halt
}
hadd nicks $1
hadd $sockname nick $1
}
alias a.con {
hadd -m $sock($1).ip $hget($1,nick)
sno c *** Connect Notice -- Client connecting on port $hget(settings,port) $+ : $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ )
if (!$gettok($hget($1,realhost),2,33)) && ($hget($1,realhost)) || ($gettok($hget($1,realhost),2,33) = *) {
hadd $1 realhost $+($hget($1,nick),$hget($1,realhost))
}
if (!$gettok($hget($sockname,host),2,33)) && ($hget($sockname,host)) {
hadd $sockname host $+($hget($1,nick),$hget($1,host))
}
if (!$sock($1)) || (!$hget($1,nick)) {
squit $1 Your client is not connected, or you got no nick
halt }
hadd users $1
if ($1) var %sockname = $1
if (%ircd.s.con. [ $+ [ $1 ] ]) { halt }
var %ircd.s.con. [ $+ [ $1 ] ] = "true"
hinc -m data connects
hsave cloak data\cloaks.db
hsave data data\reads.dll
hadd $1 server $hget(settings,server)
hadd $1 serverDesc $hget(settings,serverdesc)
if ($hget(settings,password)) {
if (!%p. [ $+ [ %sockname ] ]) {
sockwrite -n %sockname 501 %sockname :ERROR - No password given
squit %sockname No password given
unset %sockname %p. [ $+ [ %sockname ] ]
halt }
if (%p. [ $+ [ %sockname ] ] !=== $hget(settings,password)) {
squit %sockname Invalid password given
unset %sockname %p. [ $+ [ %sockname ] ]
halt }
}
if ($hget($sock($1).ip,logins) > 1) {
sno C *** Clone Alert -- Clone detected from $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) $+([,$sock($1).ip,]) Client has logged in $hget($sock($1).ip,logins) time(s)
}
if ($hget(settings,versioncheck)) {
sockwrite -n $1 $+(:,$hget(settings,server)) PRIVMSG $hget($1,nick) :VERSION
.timervrsvlc $+ $1 1 3 vrsvlc $1
}
sockwrite -n $1 $+(:,$hget(settings,server)) 001 $hget($1,nick) :Welcome to the $hget(settings,serverDesc) $hget($1,realhost)
sockwrite -n $1 $+(:,$hget(settings,server)) 002 $hget($1,nick) :Your host is $hget(settings,server) $+ , running ProvisionIRCd $vrs
sockwrite -n $1 $+(:,$hget(settings,server)) 003 $hget($1,nick) :This server was created $hget(settings,cdate)
sockwrite -n $1 $+(:,$hget(settings,server)) 004 $hget($1,nick) $hget(settings,server) ProvisionIRCd $vrs $umodes $chmodes
sockwrite -n $1 $+(:,$hget(settings,server)) 005 $hget($1,nick) $+(CMDS=,$cmds) MAXLIST=b:60,e:60,I:60 $+(NICKLEN=,$hget(settings,maxnicklen)) $+(CHANNELLEN=,$hget(settings,maxchanlen)) $+(TOPICLEN=,$hget(settings,maxtopiclen)) are supported by $hget(settings,serverdesc)
sockwrite -n $1 $+(:,$hget(settings,server)) 005 $hget($1,nick) SILENCE=15 MODES=15 $+(CHANTYPES=,$chtypes) $+(PREFIX=,$iprefix) $+(CHANMODES=,$chmodes) $+(NETWORK=,$hget(settings,serverdesc)) ELIST=MNUCT $+(STATUSMSG=,$statusmsg) EXCEPTS INVEX are supported by $hget(settings,serverdesc)
sockwrite -n $1 $+(:,$hget(settings,server)) 251 $hget($1,nick) :There are $calc($hget(users,0).item + $hget(gusers,0).item) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
sockwrite -n $1 $+(:,$hget(settings,server)) 252 $hget($1,nick) $+(:,$hget(ircops,0).item) IRC $+(Operator,$iif($hget(ircops,0).item != 1,s)) online
sockwrite -n $1 $+(:,$hget(settings,server)) 254 $hget($1,nick) $+(:,$hget(channels,0).item) $+(channel,$iif($hget(channels,0).item != 1,s)) in use
sockwrite -n $1 $+(:,$hget(settings,server)) 255 $hget($1,nick) :I have $hget(users,0).item $+(client,$iif($hget(users,0).item != 1,s)) and $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
sockwrite -n $1 $+(:,$hget(settings,server)) 265 $hget($1,nick) $+(:,$hget(users,0).item) $+(user,$iif($hget(users,0).item != 1,s)) on this server. Max: $hget(data,maxloc)
sockwrite -n $1 $+(:,$hget(settings,server)) 266 $hget($1,nick) $+(:,$calc($hget(users,0).item + $hget(gusers,0).item)) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on entire network. Max: $hget(data,maxglob)
if ($hget(settings,modesonconnect)) { chgumode $1 $+(+,$iif($remove($hget(settings,modesonconnect),-,+),$remove($hget(settings,modesonconnect),-,+))) 0 $hget($1,nick) }
if (*x* !iswmcs $hget($1,modes)) { hadd -m $1 host $+($hget($1,nick),!,$hget($1,ident),@,$iif($hget(data,$sock($sockname).ip),$hget(data,$sock($sockname).ip),$sock($1).ip)) }
if ($hget(data,logonnews)) { sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* [Logon News - $+($asctime($gettok($hget(data,logonnews),2,32),$+(dddd,$chr(44)) mmmm dd yyyy),]) $gettok($hget(data,logonnews),3-,32) $+([,$gettok($hget(data,logonnews),1,32),]) }
hadd -m $1 signon $ctime($fulldate)
hinc -c $1 idle
unset %nick %change
motd $1 .
if ($hget(settings,proxyscan)) {
.timerpc $+ $1 3 30 checkproxy $sock($1).ip $1 NN
}
if ($hget(settings,modesonconnect)) chgumode $1 $+(+,$iif($remove($hget(settings,modesonconnect),-,+),$remove($hget(settings,modesonconnect),-,+))) 0 $hget($1,nick)
if ($hget(users,0).item > $hget(data,maxloc)) {
hadd data maxloc $hget(users,0).item
sno g *** Global Notice -- New local user record: $+($hget(data,maxloc),.) On $fulldate
}
if ($calc($hget(gusers,0).item + $hget(users,0).item) > $hget(data,maxglob)) {
hadd data maxglob $calc($hget(gusers,0).item + $hget(users,0).item)
sno g *** Global Notice -- New global user record: $+($hget(data,maxglob),.) On $fulldate
}
;if (!$hget($1,host) && ($1)) && ($sock($1)) { squit $1 You got no host | halt }
if ($hget(rnicks,$+(secure_,$hget($1,nick))) = true) && ($sock($1).ip != $hget(rnicks,$+(ip_,$hget($1,nick)))) {
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :This nicknamed is IP secured.
.timerchgnick $+ $1 1 0 CHGNICK $hget($1,nick) $+(Guest,$r(1,999999))
goto skipw2
halt
}
if ($hfind(rnicks,$hget($1,nick))) {
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :This nickname is registered and protected. If it is your nick
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :nick, type /LOGIN $hget($1,nick) password. Otherwise,
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :please choose a different nick.
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :If you don't change your nick within 1 minute, I will change your nick.
.timerchgnick $+ $1 1 60 CHGNICK $hget($1,nick) $+(Guest,$r(1,999999))
hadd sqline $hget($1,nick) $hget($1,nick) $fulldate Being held for registered users
.timerunsqline1 $+ $hget($1,nick) 1 120 hdel sqline $hget($1,nick)
:skipw2
}
if ($hget($1,nick)) c.n $1
halt
}
alias -l c.n {
var %v = 1
while ($hget(vhost,%v).item) {
if ($hget(vhost,%v).item = $sock($1).ip) {
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Your vHost of $+(,$hget(vhost,$hget(vhost,%v).item),) has been activated [IP based]
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($hget(vhost,$hget(vhost,%v).item),@,!))
break
}
inc %v
}
if ($left($hget($1,nick),1) isalpha) && ($right($hget($1,nick),-1) isnum) {
sno A *** Aleatory Alert -- Possible flood clone connecting: $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) [WARNING]
if ($hget(settings,blockalea)) {
squit $1 You are not allowed to connect to this network
halt }
}
halt
}
alias -l list {
:list
if (%list. [ $+ [ $1 ] ] == $hget(channels,0).item) || ($hget(channels,0).item = 0) {
.timerlist. [ $+ [ $1 ] ] off
unset %list. [ $+ [ $1 ] ]
sockwrite -n $1 $+(:,$hget(settings,server)) 323 $hget($1,nick) :End of /LIST
halt }
inc %list. [ $+ [ $1 ] ]
if (%list. [ $+ [ $1 ] ]) && (*s* iswmcs $hget(modes,$hget(channels,%list. [ $+ [ $1 ] ]).item)) && (!$hget($1,ircop)) { goto list }
if ($sock($1)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 322 $hget($1,nick) $hget(channels,%list. [ $+ [ $1 ] ]).item $iif($hget($hget(channels,%list. [ $+ [ $1 ] ]).item,users),$hget($hget(channels,%list. [ $+ [ $1 ] ]).item,users),0) $+(:,[,+,$hget(modes,$hget(channels,%list. [ $+ [ $1 ] ]).item),]) $iif($hget(topics,$+(topic_,$hget(channels,%list. [ $+ [ $1 ] ]).item)),$hget(topics,$+(topic_,$hget(channels,%list. [ $+ [ $1 ] ]).item)))
halt }
}
alias -l cmd.fail {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) $+(:,$upper($1)) Not enough parameters
halt }
alias h.op {
hadd $1 ircop true
var %modes = $+($removecs($hget($1,modes),o,X,Z,q,s,v,I,W,H),oXZqsIWH)
sockwrite -n $1 : $+ $hget($1,nick) MODE $hget($1,nick) +oXZqsIWH
hadd $1 omodes +oXZqsIWH
hadd $1 modes %modes
hadd $1 snomasks +acfgijknoswACFINS
sockwrite -n $1 $+(:,$hget(settings,server)) 8 $hget($1,nick) Server notice mask (+acfgijknoswACFINS)
hadd $1 flags +ejksvqrzDEIKRTS
hadd $1 hop true
hadd -m hhost $1 $hget($1,host)
halt
}
alias give.omodes {
if (o isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,o)
hadd $1 ircop true
hadd -m ircops $hget($1,nick)
hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
goto skipo
}
if (O isincs $readini(opers.conf,$2,modes)) && (o !isincs %omodes) {
var %omodes = $+(%omodes,O)
hadd $1 ircop true
hadd -m ircops $hget($1,nick)
hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
}
:skipo
if (X isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,X)
hadd $1 ircop true
hadd -m ircops $hget($1,nick)
hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
goto oumds
}
if (N isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,N)
hadd $1 ircop true
hadd -m ircops $hget($1,nick)
hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
goto oumds
}
if (C isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,C)
hadd $1 ircop true
hadd -m ircops $hget($1,nick)
hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
goto oumds
}
if (A isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,A)
hadd $1 ircop true
hadd -m ircops $hget($1,nick)
hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
goto oumds
}
if (T isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,T)
hadd $1 ircop true
hadd -m ircops $hget($1,nick)
hadd -m $1 ologin $ini(opers.conf,$ini(opers.conf,$2))
goto oumds
}
:oumds
if (Z isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,Z)
goto oumds2
}
if (a isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,a)
goto oumds2
}
if (P isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,P)
goto oumds2
}
:oumds2
if (h isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,h)
}
if (q isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,q)
}
if (s isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,s)
}
if (I isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,I)
}
if (W isincs $readini(opers.conf,$2,modes)) {
var %omodes = $+(%omodes,W)
}
var %omodes = $+(o,$removecs(%omodes,o))
sockwrite -n $sockname : $+ $hget($sockname,nick) MODE $hget($sockname,nick) $+(+,$remove(%omodes,+,-))
hadd $sockname omodes $+(+,$remove(%omodes,-,+))
hadd $sockname modes $+(+,$remove($hget($sockname,modes),+,-),%omodes)
give.sno.flgs $1-2
halt
}
alias give.sno.flgs {
if (a isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,a)
}
if (c isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,c)
}
if (f isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,f)
}
if (g isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,g)
}
if (j isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,j)
}
if (k isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,k)
}
if (n isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,n)
}
if (o isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,o)
}
if (s isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,s)
}
if (w isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,w)
}
if (A isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,A)
}
if (C isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,C)
}
if (F isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,F)
}
if (I isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,I)
}
if (N isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,N)
}
if (Q isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,Q)
}
if (S isincs $readini(opers.conf,$2,snomasks)) {
var %snomasks = $+(%snomasks,S)
}
if ($readini(opers.conf,$2,flags)) {
var %flags = $+(+,$removecs($readini(opers.conf,$2,flags),-,+,A,B,C,F,G,H,J,L,M,N,O,P,Q,U,V,W,X,Y,Z,a,b,c,d,f,g,h,i,l,m,p,t,u,x,y))
hadd $1 flags %flags
}
if (%snomasks) { hdel $1 snomasks
hadd $1 snomasks $+(+,%snomasks)
sockwrite -n $sockname $+(:,$hget(settings,server)) 8 $hget($sockname,nick) Server notice mask ( $+ $hget($sockname,snomasks) $+ )
}
add.ohost $sockname $ini(opers.conf,$ini(opers.conf,$2))
}
alias add.ohost {
hadd -m hhost $1 $hget($1,host)
if (X isincs $hget($1,modes)) {
hadd -m $1 olvl 10
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,ircadmin),@,!))
snotice.o $1-2
halt
}
if (N isincs $hget($1,modes)) {
hadd -m $1 olvl 9
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,netadmin),@,!))
snotice.o $1-2
halt
}
if (Z isincs $hget($1,modes)) {
hadd -m $1 olvl 8
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,servicesrootadmin),@,!))
snotice.o $1-2
halt
}
if (T isincs $hget($1,modes)) {
hadd -m $1 olvl 7
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,techadmin),@,!))
snotice.o $1-2
halt
}
if (a isincs $hget($1,modes)) {
hadd -m $1 olvl 6
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,servicesadmin),@,!))
snotice.o $1-2
halt
}
if (A isincs $hget($1,modes)) {
hadd -m $1 olvl 5
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,serveradmin),@,!))
snotice.o $1-2
halt
}
if (C isincs $hget($1,modes)) {
hadd -m $1 olvl 4
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,coadmin),@,!))
snotice.o $1-2
halt
}
if (P isincs $hget($1,modes)) {
hadd -m $1 olvl 3
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,servicesoper),@,!))
snotice.o $1-2
halt
}
if (o isincs $hget($1,modes)) {
hadd -m $1 olvl 2
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,globop),@,!))
snotice.o $1-2
halt
}
if (O isincs $hget($1,modes)) {
hadd -m $1 olvl 1
hadd -m $1 host $+($hget($1,nick),!,$gettok($gettok($hget($1,host),1,64),2,33),@,$remove($readini(ircd.conf,operhosts,locop),@,!))
snotice.o $1-2
halt
}
}
alias -l sjoin {
var %i 0, %pms
:sjoinstart
inc %i
while (%i <= $calc($count($2,$chr(44)) + 1)) {
if ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(43)) {
if ($hget($gettok($gettok($2,%i,44),1,32),$1) = .i) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($2,%i,44) :You are invisible on channel $+($gettok($2,%i,44),.) To undo, type: /INVISIBLE $+(-,$gettok($2,%i,44))
goto sjoinstart
}
if ($len($gettok($2,%i,44)) > $calc($hget(settings,maxchanlen) + 1)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 485 $hget($1,nick) $gettok($gettok($2,%i,44),1,32)) :Channel too long
goto sjoinstart
}
if ($hfind($gettok($2,%i,44),$1)) { halt }
var %x 1
while %x <= $hget(channels,0).item { inc %x }
if ($hget($1,ircop)) && (*v* iswmcs $hget($1,flags)) { goto oocend }
if ($hfind(sqline,$gettok($2,%i,44))) {
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) channel not allowed $+([,$gettok($hget(sqline,$+($gettok($2,%i,44))),3-,32),])
goto sjoinstart
}
if ($hfind($gettok($2,%i,44),$1)) { goto sjoinstart }
var %e = 1
while $hget($+(excepts_,$gettok($2,%i,44)),%e).item {
if ($hget($+(excepts_,$gettok($gettok($2,%i,44),1,32)),%e).item iswm $hget($1,host)) || ($hget($+(excepts_,$gettok($2,%i,44)),%e).item iswm $hget($1,realhost)) || ($hget($+(excepts_,$gettok($2,%i,44)),%e).item iswm $+(*!*@,$sock($1).ip)) || ($hget($+(excepts_,$gettok($2,%i,44)),%e).item iswm $hget(xhost,$sockname)) {
goto noban
}
inc %e
}
var %x = 1
while $hget($+(bans_,$gettok($2,%i,44)),%x).item {
if ($hget($+(bans_,$gettok($gettok($2,%i,44),1,32)),%x).item iswm $hget($1,host)) || ($hget($+(bans_,$gettok($2,%i,44)),%x).item iswm $hget($1,realhost)) || ($hget($+(bans_,$gettok($2,%i,44)),%x).item iswm $+(*!*@,$sock($1).ip)) || ($hget($+(bans_,$gettok($2,%i,44)),%x).item iswm $hget(xhost,$sockname)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) you are banned
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($gettok($2,%i,44),1,32),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($gettok($2,%i,44),1,32),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($gettok($2,%i,44),1,32) but is banned (+b)
}
inc %z
}
}
goto sjoinstart
}
inc %x }
:noban
if (*i* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %in = 1
while $hget($+(invites_,$gettok($2,%i,44)),%in).item {
if ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $hget($1,host)) || ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $hget($1,realhost)) || ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $+(*!*@,$sock($1).ip)) || ($hget($+(invites_,$gettok($2,%i,44)),%in).item iswm $hget(xhost,$sockname)) {
goto noinv
}
inc %in
}
}
if (*i* iswmcs $hget(modes,$gettok($2,%i,44))) && (!$hfind($+(invites_,$gettok($2,%i,44)),$1)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44) $+ : you are not invited
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($2,%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44),%x).item but is not invited (+i)
}
inc %z }
}
goto sjoinstart
}
:noinv
if (*l* iswmcs $hget(modes,$gettok($2,%i,44))) && ($hget($1,ircop) != true) && ($hget($gettok($gettok($2,%i,44),1,32),0).item >= $hget(data,$+(limit_,$gettok($2,%i,44)))) {
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44) $+ : channel is full
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),1,33) $+ ) tried to join $gettok($2,%i,44) but channel is full (+l)
}
inc %z }
}
goto sjoinstart
}
if (*k* iswmcs $hget(modes,$gettok($2,%i,44))) {
if (!$3) {
sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) need correct key
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but doesn't know the key (+k)
}
inc %z }
}
goto sjoinstart
}
inc %pms }
if (*k* iswmcs $hget(modes,$gettok($2,%i,44))) && ($gettok($3,%pms,32) !=== $hget(data,$+(key_,$gettok($2,%i,44)))) {
sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+($gettok($2,%i,44),;) need correct key
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but doesn't know the key (+k)
}
inc %z }
}
goto sjoinstart
}
if (*O* iswmcs $hget(modes,$gettok($2,%i,44))) && (!$hget($1,ircop)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($gettok($2,%i,44),1,32))
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44),1,32) $+ : you are not an IRC Operator
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but isn't an IRC operator (+O)
}
inc %z }
}
goto sjoinstart
}
if (*p* iswmcs $hget(modes,$gettok($2,%i,44))) {
sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($2,%i,44))
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($gettok($2,%i,44),1,32) $+ : channel is private
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($gettok($2,%i,44),1,32),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but the channel is private (+p)
}
inc %z }
}
goto sjoinstart
}
if (*R* iswmcs $hget(modes,$gettok($2,%i,44))) && (!$hget($1,loggedin)) && (!$hget($1,ircop)) { sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,$gettok($2,%i,44))
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $gettok($2,%i,44) $+ : you are not logged/registered in
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($2,%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$2) :User $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) tried to join $gettok($2,%i,44) but user is not logged in (+R)
}
inc %z
}
}
goto sjoinstart
}
:oocend
var %ch = $gettok($2,%i,44)
if ($hget(joinfprot,%ch)) && (%joins. [ $+ [ $gettok($gettok($2,%i,44),1,32) ] ]) {
if (%joins. [ $+ [ $gettok($gettok($2,%i,44),1,32) ] ] >= $gettok($hget(joinfprot,%ch),1,32)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 553 $hget($1,nick) $+(:,%ch)
sockwrite -n $1 $+(:,$hget(settings,server)) NOTICE $hget($1,nick) :* Unable to join $+(%ch,:) channel joins currently blocked for $gettok($hget(joinfprot,%ch),2,32) seconds due flood
goto sjoinstart
}
}
if ($hget(joinfprot,%ch)) {
inc %joins. [ $+ [ $gettok($2,%i,44) ] ]
.timerjoinfprot $+ $gettok($2-,%i,44) 1 $gettok($hget(joinfprot,%ch),2,32) unset %joins. [ $+ [ $gettok($2,%i,44) ] ]
}
hsave modes data\chmodes.db
if (!$hget($gettok($2,%i,44),$1)) {
hadd -m $gettok($2,%i,44) $1 .
if ($hget($gettok($2,%i,44),0).item == 1) {
hadd -m channels $gettok($2,%i,44) $1
hadd $gettok($2,%i,44) ctime $ctime
if (!$hfind(rchans,$gettok($2,%i,44))) && ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(35)) {
hadd -m +o_ $+ $gettok($2,%i,44) $1
hadd -m $gettok($2,%i,44) $1 .@
}
}
if ($gettok($2,%i,44) = $hget(settings,helpchan)) && ($hget($gettok($2,%i,44),0).item = 1) && (!$hfind(rchans,$gettok($2,%i,44))) && (h !isincs $hget($1,modes)) {
chgumode $1 +h $gettok($2,%i,44) 0 - -
}
}
.names $1 $gettok($2,%i,44) .
if ($3 != SA) {
sno j *** Join/Part Notice -- $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) has joined $hfind(channels,$2)
}
if ($hfind($+(invites_,$gettok($2,%i,44)),$1)) { hdel $+(invites_,$gettok($2,%i,44)) $1 }
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) has joined $gettok($2,%i,44)
}
inc %z
}
}
goto sjoinstart
halt
}
else {
sockwrite -n $1 $+(:,$hget(settings,server)) 403 $hget($1,nick) $gettok($2,%i,44) :is not a valid channel
inc %x
goto sjoinstart
}
:sjoinend
}
unset %i %z
halt
}
alias snotice.o {
sockwrite -n $sockname $+(:,$hget(settings,server)) 381 $hget($sockname,nick) :You are now an IRC Operator.
if (X isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now an IRC Administrator (X)
halt }
if (N isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Network Administrator (N)
halt }
if (Z isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Services Root Administrator (A)
halt }
if (T isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Technical Administrator (T)
halt }
if (A isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Server Administrator (A)
halt }
if (a isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Services Administrator (a)
halt }
if (C isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Co Administrator (c)
halt }
if (o isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now an IRC Operator (o)
halt }
if (P isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Services Operator (P)
halt }
if (O isincs $hget($1,modes)) {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) is now a Local Operator (O)
halt }
else {
sno o *** Oper Notice -- $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) $+([,$ini(opers.conf,$ini(opers.conf,$2)),]) logged in as an IRC Operator without any privileges
}
halt
}
alias cmds return NICK,USER,USERHOST,ISON,TIME,PING,PONG,NAMES,WHO,IRCDHELP
alias hcmds return PRIVMSG NOTICE ISON PING PONG NICK USER MODE USERHOST QUIT KILL KLINE ELINE ZLINE SQLINE UNSQLINE LUSERS SAJOIN SAPART SANICK CLIENT PASS SERVER PROTOCL JOIN PART STATS OPER REGISTER LOGIN LOGOUT DROP NS NICKSERV CS CHANSERV AUTH ID IDENTIFY WHO NAMES TOPIC KICK ADDOPER DELOPER WHOIS INFO INVISIBLE AWAY REHASH WHOIS WHOWAS IRCOPS AKICK ACCESS MOTD LIST NICKSET CHANSET TIME IRCDHELP HELP HELPOP WALLOPS
alias umodes return ixXNTACoOchilqrsvwxHISW
alias chmodes return beIqazO,kf,l,psmntirNORV
alias vrs return 2.0.5.-beta Quickupdate.7
alias ip_aq return $iif($hget(settings,ip_aq),1)
alias ip_a return &
alias ip_q return ~
alias iprefix return $+($chr(40),$+($iif($ip_aq,qa),ohvz,$chr(41)),$iif($ip_aq,$+($ip_q,$ip_a)),@%+-))
alias whomasks {
var %mds = $hget($1,modes)
return $+($iif($hget(away,$1),G,H),$iif(r isincs %mds,+),$iif(c isincs %mds,c),$iif(o isincs %mds,O),$iif(v isincs %mds,^,),$iif(h isincs %mds,?),$iif(x isincs %mds,x),$iif($hfind($+(+q_,$2),$1),*),$iif($hfind($+(+a_,$2),$1),:),$iif($hfind($+(+o_,$2),$1),@),$iif($hfind($+(+h_,$2),$1),%),$iif($hfind($+(+v_,$2),$1),+)) }
alias statusmsg return @&+
alias chtypes return #+
alias nickchrs return a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 $chr(45) $chr(91) $chr(92) $chr(93) $chr(94) $chr(95) $chr(96) $chr(123) $chr(124) $chr(125)
alias hostchrs return a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 $chr(45) $chr(46) $chr(91) $chr(92) $chr(93) $chr(94) $chr(95) $chr(96) $chr(124)
alias makemask {
if ($count($1,@) > 1) || ($count($1,!) > 1) {
unset %modes %params
return
}
if (!@ !isin $1) && (@! !isin $1) {
if (! !isin $1) && (@ !isin $1) && (. !isin $1) {
return $+($1,!*@*)
}
else {
return $+($iif(@ isin $1 && ! !isin $1,*!),$iif($left($1,1) = !,*),$iif(. isin $1 && @ !isin $1,*!*@),$1,$iif(@ !isin $1 && . !isin $1 && ! isin $1,@*),$iif($right($1,1) = @ && @ !isin $1,*),$iif($right($1,1) = @ && (!$gettok($1,2,64)),*))
}
}
}
on *:SOCKREAD:ircd.*:{
var %ircd
sockread %ircd
tokenize 32 %ircd
:error
if ($error) { reseterror
halt }
if ($sock(link.*)) { sockwrite -n $sock(link.*) $1- }
if ($1) { hinc cmds $1 }
hinc -m data sockreads
hsave cmds data\data.dll
hsave data data\reads.dll
if ($hget($sockname,host)) && ($hget($sockname,ircop) != true) && ($1 != ISON) && (!$hget($sockname,uline) ) {
hinc -u5 $sockname sendq $sockbr
if ($hget($sockname,sendq) >= $hget(settings,maxsendq)) {
sno f *** Flood Alert -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) has reached his max SendQ ( $+ $hget($sockname,sendq) $+ ) while the limit is $hget(settings,maxsendq)
squit $sockname Excess flood - Don't flood here, keep it cool
halt }
}
;if (!$1) || ($1 = $CRLF) { squit $sockname Unauthorized connection | halt }
if ($left($1,1) = :) && ($hget($sockname,uline)) && ($hget($right($1,-1),socket)) {
sockwrite -n $hget($right($1,-1),socket) $1-
halt
}
if ($1 != ADMIN) && ($1 != PART) && ($1 != QUIT) {
var %s = 1
while $hget(shuns,%s).item {
if ($hget(shuns,%s).item iswm $+($hget($sockname,ident),@,$hget(data,$sock($sockname).ip))) || ($hget(shuns,%s).item = $+($hget(%sockname,ident),@,$sock($sockname).ip)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) * Command blocked, you are shunned. $chr(91) $+ $hget(shuns,nick_ $+ $hget(shuns,%s).item) $+ $chr(93) $hget(shuns,$+(reason_,$hget(shuns,%s).item))
halt }
inc %s
}
}
if ($istok($hcmds,$1,32) = $false) && ($left($1,1) !isnum) && ($hget($sockname,host)) {
if ($hget($sockname,realhost)) && ($hget($sockname,nick)) {
sno S *** Spy Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) used command: $1- }
}
hadd -m $sockname lastusedcommand $upper($1) $2 $upper($3)
if ($1 == NICK) {
if (!$2) { halt }
if ($hget($sockname,uline)) {
;hinc ulines
hadd gusers $2
if ($calc($hget(gusers,0).item + $hget(users,0).item) > $hget(data,maxglob)) {
hadd data maxglob $calc( $hget(gusers,0).item + $hget(users,0).item )
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- New global user record: $+($hget(data,maxglob),.) On $fulldate
inc %x }
}
hadd nicks $2
hadd -m $2 uline true
hadd -m $2 socket $sockname
hadd -m $sockname signon $4
hadd -m $sockname ident $5
hadd -m $sockname host $7
hadd -m $sockname realhost $6
hadd -m $sockname modes $9
hadd -m $sockname realname $11-
halt
}
var %change = $iif(:* iswm $2,$left($right($2,-1),$hget(settings,maxnicklen)),$left($2,$hget(settings,maxnicklen)))
if (!$hget($sockname,modes)) { hadd -m $sockname modes + }
if (!$hget($sockname,host)) && (%change) || (!$hget($sockname,nick)) {
if ($hget(defcon)) {
squit $sockname * This server is in DEFCON mode, please try again later.
halt
}
nick.val %change
halt
}
if (!$3) {
if ($hget(defcon)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, /NICK command is temporary disabled.
halt
}
set %n.chg. [ $+ [ $sockname ] ] 1
nick.val %change
halt
}
halt }
elseif ($1 == CLIENT) {
if ($hget(defcon)) || (!$10) || ($hget($sockname,nick)) { halt }
hfree $2
hadd -m $sockname nick $2
hadd -m $sockname realname $right($13-,-1)
hadd -m $sockname modes $5 | hadd -m $sockname host $+($2,!,$7,@,$8)
hadd -m $sockname realhost $+($2,!,$7,@,$8)
hadd -m nicks $2
hadd -m $sockname server $10
hadd -m $sockname serverdesc $hget(settings,serverdesc)
hadd -m $sockname level uline
if ($2 = $readini(ircd.conf,enforcer,nick)) { hadd -m Enforcer nick $2 }
hadd -m $2 $sockname
hadd gusers $sockname
if ($calc($hget(gusers,0).item + $hget(users,0).item) > $hget(data,maxglob)) {
hadd data maxglob $hget(gusers,0).item
var %x = 1 | while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- New global user record: $+($hget(data,maxglob),.) On $fulldate
inc %x }
}
halt
}
elseif ($1 == USER) {
if (!$5) { cmd.fail $1 | halt }
if ($hget($sockname,host)) && ($hget($sockname,nick)) && ($hget($sockname,modes)) && ($hget($sockname,ident)) && ($hget($sockname,realname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 462 $hget($sockname,nick) :You may not reregister
halt }
if (!$hget($sockname,ident)) { hadd -m $sockname ident $remove($left($2,12),$chr(91),$chr(93)) }
if (!$hget($sockname,realname)) { hadd -m $sockname realname $iif($left($5,1) = :,$right($5,-1),$5-) }
if (!$hget($sockname,modes)) { hadd -m $sockname modes + }
if (!@ isin $hget($sockname,realhost)) || (!@ isin $hget($sockname,host)) {
hadd $sockname realhost $+($hget($sockname,nick),!,$hget($sockname,ident),@,$gettok($hget($sockname,realhost),2,64))
hadd $sockname host $+($hget($sockname,nick),!,$hget($sockname,ident),@,$gettok($hget($sockname,host),2,64))
}
if ($hget($sockname,nick)) && ($hget($sockname,realhost)) { a.con $sockname | halt }
if ($hget(defcon)) {
squit $sockname * This server is in DEFCON mode, please try again later.
halt }
halt
}
elseif ($1 == USERHOST) {
var %x = 2
while ($ [ $+ [ %x ] ]) {
if ($hfind(nicks,$ [ $+ [ %x ] ])) {
var %userhost = %userhost $+($hfind(nicks,$ [ $+ [ %x ] ]),*,=+,$gettok($hget($hget($ [ $+ [ %x ] ],1).item,host),2,33)) }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 302 $hget($sockname,nick) $+(:,%userhost)
halt
}
elseif ($1 == ISON) {
var %x = 2 | while ($ [ $+ [ %x ] ]) {
if ($hfind(nicks,$ [ $+ [ %x ] ])) && ($hget($hfind(nicks,$ [ $+ [ %x ] ]),1).item) {
var %ison = %ison $ [ $+ [ %x ] ] }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 303 $hget($sockname,nick) $+(:,$iif(%ison,%ison,no such user))
halt
}
elseif ($1 == TIME) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 391 $hget($sockname,nick) $+(:,$day $asctime(mmmm dd yyyy) - $gettok($time,1-2,58) $asctime(zzz))
halt
}
elseif ($1 == PONG) {
.timerping2 $+ $sockname 0 602 squit $sockname Ping timeout - Where was the Pong?!
halt }
elseif ($1 == PING) {
if ($2 = $hget(settings,server)) { sockwrite -n $sockname PONG $+(:,$hget(settings,server)) }
halt }
elseif ($1 == CONNECT) {
echo -s $sockname > /CONNECT: $2-
if (!$2) { cmd.fail $1 | halt }
;if ($3) { halt }
if (!$ini(links.conf,$2)) {
sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Server $2 isn't configured for linking | halt }
if ($sock(link. [ $+ [ $2 ] ])) {
sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Link $2 already exists. | halt }
else {
set %conserver $2
set %sockname $sockname
sockopen link. [ $+ [ $2 ] ] $readini(links.conf,$2,ip) $readini(links.conf,$2,port)
}
halt
}
elseif ($1 == PASS) {
;Password komt niet binnen
set %p. [ $+ [ $sockname ] ] $iif($left($2,1) = :,$right($2,-1),$2)
echo -s > /PASS: %p. [ $+ [ $sockname ] ] .. is it $readini(links.conf,%ls,pass) ?
echo -s > Password set p.sockname: %p. [ $+ [ $sockname ] ]
if (%ls) && (!%pass. [ $+ [ %ls ] ]) {
if (%p. [ $+ [ $sockname ] ] !=== $readini(links.conf,%ls,pass)) {
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Link denied for server %ls [bad password]
inc %x
}
sockwrite -n $sockname LINK DENIED != PASSWORD
sockclose $sockname
halt
}
}
if ($2 === $readini(links.conf,%ls,pass)) || (%pass. [ $+ [ %ls ] ]) {
unset %pass. [ $+ [ %ls ] ]
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :(Link) Password accepted for server %ls
inc %x }
sockwrite -n $sockname LINK ACCEPTED = PASSWORD
var %y = 1
hadd -m servers %ls
hadd -m $sockname sname %ls
set %pass. [ $+ [ %ls ] ] true
sockopen $+(link.,%2) $readini(links.conf,%ls,ip) $readini(links.conf,%ls,port)
}
unset %s
halt
}
elseif ($1 == SERVER) {
echo -s > /SERVER: $2-
set %ls $2
if (!$hget($sockname,host)) {
if (!$ini(links.conf,%ls)) {
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Link denied for server $2 [no matching link configuration]
inc %x
}
sockwrite -n $sockname LINK DENIED != MATCH
sockclose $sockname
}
else {
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item : $+ $hget(settings,server) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- $2 requested a link
inc %x
}
if ($2 = $hget(settings,uline)) {
hfree $sockname
hadd -m $sockname uline true
}
}
}
halt
}
elseif ($1 == PART) {
if (!$hget($sockname,host)) { halt }
if (!$2) { cmd.fail $1 | halt }
spart $sockname $2 $remove($3-,SAPART:)
halt }
elseif ($1 == QUIT) {
hinc -m data disconnects
squit $sockname $hget(settings,quitprefix) $right($2-,-1)
halt }
elseif ($1 == NOTICE) {
if ($2 = $hget(settings,server)) && (!$hget($sockname,vrsvl)) && (VERSION isincs $3) { hadd $sockname vrsvl true | halt }
if (!$hget($sockname,host)) || ($3 === :LAGCHK) { halt }
if (!$3) { cmd.fail $1 | halt }
hdel $sockname idle
hinc -c $sockname idle
if ($hget(defcon)) && (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, log in to send notice's | halt }
var %n = 1
while (%n <= $calc($count($2,$chr(44)) + 1)) {
if ($left($gettok($gettok($2,%n,44),1,32),1) != $chr(35) && $left($gettok($gettok($2,%n,44),1,32),1) != $chr(43)) && (!$hfind(nicks,$gettok($gettok($2,%n,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :No such nick
goto noticeend }
if ($left($gettok($gettok($2,%n,44),1,32),1) = $chr(35) || $left($gettok($gettok($2,%n,44),1,32),1) = $chr(43)) && (!$hfind(channels,$gettok($gettok($2,%n,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :No such channel
goto noticeend }
if ($hget($gettok($gettok($2,%n,44),1,32),$sockname) = .i) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :You are invisible on channel $gettok($gettok($2,%n,44),1,32), so please shut up. To undo, type: /INVISIBLE $+(-,$gettok($gettok($2,%n,44),1,32)) | goto noticeend }
if ($hfind($+(+z_,$gettok($gettok($2,%n,44),1,32)),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :You cannot speak (+z $hget($sockname,nick) $+ ) | goto noticeend }
if (*n* iswmcs $hget(modes,$gettok($gettok($2,%n,44),1,32))) && (!$hfind($gettok($gettok($2,%n,44),1,32),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :No external channel messages (+n) ( $+ $gettok($gettok($2,%n,44),1,32) $+ )
goto noticeend }
if (*m* iswmcs $hget(modes,$gettok($gettok($2,%n,44),1,32))) && (!$hfind($+(+v_,$gettok($gettok($2,%n,44),1,32)),$sockname)) && (!$hfind($+(+h_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+o_,$gettok($gettok($2,%n,44),1,32)),$sockname)) && (!$hfind($+(+a_,$gettok($gettok($2,%n,44),1,32)),$sockname)) && (!$hfind($+(+q_,$gettok($gettok($2,%n,44),1,32)),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) :Channel is moderator, you need voice (+v) ( $+ $gettok($gettok($2,%p,44),1,32) $+ )
goto noticeend }
var %y = 1
while $ini(spamfilter.conf,%y) {
if (*N* iswmcs $readini(spamfilter.conf,$ini(spamfilter.conf,%y),type)) && ($ini(spamfilter.conf,%y) isin $3-) && ($hget($sockname,ircop) != true) {
if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = block) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) Message blocked: $readini(spamfilter.conf,$ini(spamfilter.conf,%y),reason)
sno F *** Spamfilter Blockage -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in $gettok($gettok($2,%n,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
goto noticeend }
if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = report) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) Message blocked: $readini(spamfilter.conf,$ini(spamfilter.conf,%y),reason)
sno F *** Spamfilter Report -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in $gettok($gettok($2,%n,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
}
hdel $sockname idle
hinc -c $sockname idle
if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = replace) {
var %x = 1
while ($hget($gettok($gettok($2,%n,44),1,32),%x).item) {
if ($sock($hget($gettok($gettok($2,%n,44),1,32),%x).item)) {
sockwrite -n $hget($gettok($gettok($2,%n,44),1,32),%x).item $+(:,$hget($sockname,host)) NOTICE $gettok($gettok($2,%n,44),1,32) $iif(*S* iswmcs $hget(modes,$3),$strip($replace($3-,$ini(spamfilter.conf,%y),<censored>)),$replace($3-,$ini(spamfilter.conf,%y),<censored>)) }
if ($left($gettok($gettok($2,%n,44),1,32),1) != $chr(35) && $left($gettok($gettok($2,%n,44),1,32),1) != $chr(43)) && ($hget(away,$hget($gettok($gettok($2,%n,44),1,32),1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $gettok($gettok($2,%n,44),1,32) $hget(away,$hget($gettok($gettok($2,%n,44),1,32),1).item) }
inc %x }
goto noticeend }
}
inc %y
}
if ($left($gettok($gettok($2,%n,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%n,44),1,32),1) = $chr(43)) {
if ($hget(noticefprot,$gettok($gettok($2,%n,44),1,32))) && (%notices. [ $+ [ $gettok($gettok($2,%n,44),1,32) ] ] >= $gettok($hget(noticefprot,$2),1,32)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Don't flood! Channel notices are blocked for $gettok($hget(noticefprot,$gettok($gettok($2,%n,44),1,32)),1,32) seconds
goto noticeend }
if ($hget(noticefprot,$gettok($gettok($2,%n,44),1,32))) {
inc %notices. [ $+ [ $gettok($gettok($2,%n,44),1,32) ] ] }
if (%notices. [ $+ [ $2 ] ] = 1) { .timernoticef $+ $gettok($gettok($2,%n,44),1,32) 1 $gettok($hget(noticefprot,$gettok($gettok($2,%n,44),1,32)),1,32) unset %notices. [ $+ [ $gettok($gettok($2,%n,44),1,32) ] ] }
}
var %x = 1
while ($hget($gettok($gettok($2,%n,44),1,32),%x).item) {
if ($sock($hget($gettok($gettok($2,%n,44),1,32),%x).item)) {
sockwrite -n $hget($gettok($gettok($2,%n,44),1,32),%x).item $+(:,$hget($sockname,host)) NOTICE $gettok($gettok($2,%n,44),1,32) $iif(*S* iswmcs $hget(modes,$2),$strip($3-),$3-)
}
inc %x
}
:noticeend
sno i *** Idle Notice -- The idle of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) has been reset (/NOTICE $gettok($gettok($2,%n,44),1,32) $+ )
inc %n
}
halt
}
if (%l.ircd) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :* Server %ircd temporary overloaded. | halt }
var %l.ircd "true"
if (!$hget($sockname,realhost)) && (!$hget($sockname,uline)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 462 $hget($sockname,nick) $+(:,$upper($1)) You have not registered
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* If you having problems while connecting, please try reconnecting.
halt }
elseif ($1 == MOTD) { motd $sockname | halt }
elseif ($1 == ADMIN) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 256 $hget($sockname,nick) :Administrative info about $hget(settings,server)
sockwrite -n $sockname $+(:,$hget(settings,server)) 257 $hget($sockname,nick) $+(:,$readini(ircd.conf,admin,nick))
sockwrite -n $sockname $+(:,$hget(settings,server)) 257 $hget($sockname,nick) $+(:,$readini(ircd.conf,admin,email))
sockwrite -n $sockname $+(:,$hget(settings,server)) 257 $hget($sockname,nick) $+(:,$readini(ircd.conf,admin,web)))
halt }
elseif ($1 == NAMES) { names $sockname $2 | halt }
elseif ($1 == CLONES) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator
halt }
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Clones on $hget(settings,server) $+ : | sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :-
var %x = 1
while ($hget(users,%x).item) {
if ($hget($sock($hget(users,%x).item).ip,logins) > 1) {
var %n = 1
while ($hget($sock($hget(users,%x).item).ip,%n).item) && (!%showed. [ $+ [ $sock($hget(users,%x).item).ip ] ]) {
if ($hget($sock($hget(users,%x).item).ip,%n).item != logins) {
inc %clonesnr. [ $+ [ $sock($hget(users,%x).item).ip ] ]
set %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ] %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ] $hget($sock($hget(users,%x).item).ip,%n).item
}
inc %n
}
if (%clones. [ $+ [ $sock($hget(users,%x).item).ip ] ]) {
set -u0 %realhost. [ $+ [ $sock($hget(users,%x).item).ip ] ] $gettok($hget($hget($sock($hget(users,%x).item).ip,%n).item,realhost),2-,33)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :* Found %clonesnr. [ $+ [ $sock($hget(users,%x).item).ip ] ] clones from IP address $+($sock($hget(users,%x).item).ip,:)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Nicks: %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ]
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :-
set -u0 %showed. [ $+ [ $sock($hget(users,%x).item).ip ] ] true
}
unset %clones. [ $+ [ $sock($hget(users,%x).item).ip ] ] %clonesnr. [ $+ [ $sock($hget(users,%x).item).ip ] ]
var %clones = true
}
inc %x
}
if (!%clones) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :No clones found on this server. }
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :End of /CLONES command.
halt }
elseif ($1 == TRACE) {
if ($hget($sockname,ircop) != true) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator
halt }
if (*T* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
halt }
if (!$2) { cmd.fail $1 | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :User not online | halt }
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :~~~~~~~~~~~~~~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Information on user $+(,$hfind(nicks,$2),)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Connection time: $duration($sock($hget($2,1).item).to)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Bytes received: $sock($hget($2,1).item).rcvd
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Bytes sent: $sock($hget($2,1).item).sent
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Logged in: $hget($sock($hget($2,1).item).ip,logins) time(s)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Authed as: $iif($hget($hget($2,1).item,loggedin),$hget($hget($2,1).item,loggedin),not authed.)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Client is $iif(!$ini(opers.conf,$2),not) an IRC Operator $iif($hget($sock($hget($2,1).item),ircop) = true,[logged in],[not logged in])
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Usermodes: $hget($sock($hget($2,1).item),modes)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Snomasks: $hget($sock($hget($2,1).item),snomasks)
var %i 1, %chans, %amount 0 | while %i <= $hget(channels,0).item {
if ($hget($hget(channels,%i).item,$hget($2,1).item)) {
if (*s* !iswmcs $hget(modes,$hget(channels,%i).item)) {
var %chans = %chans $hget(channels,%i).item
inc %amount
}
}
inc %i }
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :In $iif(%amount >= 1,%amount,no) channels $iif(%chans,$chr(91) $+ %chans $+ $chr(93))
if %amount = 0 { continue }
if ($hget(data,$sock($hget($2,1).item).ip)) sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Location: $hget(data,$sock($hget($2,1).item).ip)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Last used command: $hget($sock($hget($2,1).item),lastusedcommand)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Connected via: $gettok($gettok($hget($sock($hget($2,1).item),realhost),2,33),2,64) $chr(91) $+ $sock($hget($2,1).item).ip $+ $chr(93)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Cloaked host: $gettok($gettok($hget($sock($hget($2,1).item),host),2,33),2,64)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Ident: $gettok($gettok($hget($sock($hget($2,1).item),host),2,33),1,64)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Realname: $hget($sock($hget($2,1).item),realname)
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :** PLEASE ENTER /QUIT IF YOU DON'T LIKE THIS **
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :End of /TRACE command.
}
halt }
elseif ($1 == MODE) {
unset %param %params %t.modes %modes %omodes %snomasks %-snomasks %+-
if (!$2) { cmd.fail $1 | halt }
if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
if (!$3) {
if ($hfind($2,$sockname)) {
var %x = 1
while ($mid($hget(modes,$2),%x,1)) {
if ($mid($hget(modes,$2),%x,1) === k) { set %chkl %chkl $hget(data,$+(key_,$2)) }
if ($mid($hget(modes,$2),%x,1) === l) { set %chkl %chkl $hget(data,$+(limit_,$2)) }
inc %x
}
sockwrite -n $sockname $+(:,$hget(settings,server)) 324 $hget($sockname,nick) $2 $+(+,$remove($hget(modes,$2),+)) $iif($hfind($2,$sockname),%chkl)
sockwrite -n $sockname $+(:,$hget(settings,server)) 329 $hget($sockname,nick) $2 $hget($2,ctime)
unset %chkl
hsave modes data\chmodes.db
halt
}
halt
}
if ($3) {
unset %ov
smode $sockname $2 $3-
}
halt
}
elseif ($hfind(nicks,$2)) && ($2 !== $hget($sockname,nick)) && (*v* iswmcs $hget($sockname,flags)) && ($hget($sockname,ircop)) {
%sockname = $sockname
chgumode $hget($2,1).item $3- - $hget($sockname,nick) @
halt
}
elseif ($2 == $hget($sockname,nick)) && ($hget($sockname,host)) {
if (!$istok(+ -,$left($3,1),32)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :MODE Insufficient parameters you foolish user | halt }
chgumode $sockname $3-
}
halt }
elseif ($1 == KICK) {
if (!$3) { cmd.fail $1 | halt }
if ($left($2,1) != $chr(35)) && ($left($2,1) != $chr(43)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 403 $hget($sockname,nick) $2 :is not a valid channel
halt }
if (!$hget($2,$hget($3,1).item)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $3 :No such nick
halt }
if (*v* iswmcs $hget($sockname,flags)) { goto skickend }
if (!$hget($2,$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $2 :You're not on that channel
halt }
if (!$hfind($+(+h_,$2),$sockname)) && (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
halt }
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
halt }
}
if ($hfind($+(+a_,$2),$sockname) && $hfind($+(+q_,$2),$hget($3,1).item)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 972 $hget($sockname,nick) KICK $+(:,$hfind(nicks,$3)) is the channel owner
halt }
if ($hfind($+(+o_,$2),$sockname) && $hfind($+(+a_,$2),$hget($3,1).item) || $hfind($+(+q_,$2),$hget($3,1).item)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 972 $hget($sockname,nick) KICK $+(:,$hfind(nicks,$3)) is $iif($hfind($+(+a_,$2),$hget($3,1).item),a channel admin,the channel owner)
halt }
if ($hfind($+(+h_,$2),$sockname) && $hfind($+(+o_,$2),$hget($3,1).item) && $hfind($+(+a_,$2),$hget($3,1).item) || $hfind($+(+q_,$2),$hget($3,1).item)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
halt }
if ($hfind($+(+O2_,$2),$sockname)) && ($hget($hget($3,1).item,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
halt }
if ($hfind($+(+O2_,$2),$hget($3,1).item)) && (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $hfind(nicks,$3) :Protected Channel Operator
sockwrite -n $hget($3,1).item $+(:,$hget(settings,server)) NOTICE $3 :*** Channel Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) tried to kick you off channel $2 $+([,$4-,])
halt }
if (q isincs $hget($hget($3,1).item,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $hfind(nicks,$3) :Protected IRC Operator
sockwrite -n $hget($3,1).item $+(:,$hget(settings,server)) NOTICE $3 :*** Server Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) tried to kick you off channel $2 $+([,$4-,])
halt }
:skickend
if ($hget($2,$hget($3,1).item)) { skick $sockname $2- }
halt }
elseif ($1 == INVITE) {
if (!$3) { cmd.fail $1 | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
if (!$hfind(channels,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $3 :No such channel | halt }
if (!$hfind($3,$sockname)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,nick) $3 :You're not on that channel | halt }
if (*V* iswmcs $hget(modes,$3)) {
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) && (!$hfind(+o_ $+ $3,$sockname)) && (!$hfind(+a_ $+ $3,$sockname)) && (!$hfind(+q_ $+ $3,$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $3 :Don't you miss your @, $+($hget($sockname,nick),?) | halt }
if (!$hfind(+o_ $+ $3,$sockname)) && (!$hfind(+a_ $+ $3,$sockname)) && (!$hfind(+q_ $+ $3,$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) && (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $3 :Don't you miss your @, $+($hget($sockname,nick),?) | halt } }
if ($hfind($3,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 443 $hget($sockname,nick) $2 :is already on channel $3 | halt }
sockwrite -n $hget($2,1).item : $+ $hget($sockname,host) INVITE $2-3
sockwrite -n $sockname $+(:,$hget(settings,server)) 341 $hget($sockname,nick) $2-3
hadd -m $+(invites_,$3) $hget($2,1).item
if (*N* iswmcs $hget(modes,$3)) {
var %z = 1
while $hget($3,%z).item {
if ($hfind($+(+o_,$3),$hget($3,%z).item)) || ($hfind($+(+a_,$3),$hget($3,%z).item)) || ($hfind($+(+q_,$3),$hget($3,%z).item)) {
sockwrite -n $hget($3,%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$3) $+(:,$hget($sockname,nick)) invited $2 into the channel.
}
inc %z }
}
halt }
elseif ($1 == TOPIC) {
if (!$2) { cmd.fail $1 | halt }
if ($left($2,1) != $chr(35)) && ($left($2,1) != $chr(43)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 403 $hget($sockname,nick) $2 :is not a valid channel | halt }
if (*v* iswmcs $hget($sockname,flags)) { goto stopicend }
if (!$hget($2,$sockname)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 442 $hget($sockname,host) $2 :You're not on that channel. | halt }
if (*t* iswmcs $hget(modes,$2)) {
if (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) && (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | halt }
if ($hget($sockname,ircop)) && (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | halt }
}
:stopicend
if (!$hfind(topics,$+(topic_,$2))) && (!$3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 331 $hget($sockname,nick) $2 :No topic is set.
halt }
if ($hget(topics,$+(topic_,$2))) && (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) 332 $hget($sockname,nick) $2 : $+ $hget(topics,$+(topic_,$2))
sockwrite -n $sockname $+(:,$hget(settings,server)) 333 $hget($sockname,nick) $2 $hget(topics,$+(topicsetter_,$2)) $hget(topics,$+(topicdate_,$2))
halt }
if ($hget(rchans,$+(topiclock_,$2))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You can't change the topic on this channel.
halt }
if ($len($3-) > $hget(settings,maxtopiclen)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* The topic you gave for channel $2 was too long. The topic has been shorten.
}
var %topic = $iif(:* iswm $3,$left($right($3-,-1),$hget(settings,maxtopiclen)),$left($3,$hget(settings,maxtopiclen)))
hadd topics $+(topic_,$2) %topic
hadd topics $+(topicsetter_,$2) $hget($sockname,nick)
if ($hfind(rchans,$2)) {
hadd -m rchans $+(lasttopic_,$2) $hget(topics,$+(topic_,$2))
}
hadd topics $+(topicdate_,$2) $ctime
hsave topics data\topics.db
var %i 1
while %i <= $hget($2,0).item {
if ($sock($hget($2,%i).item)) {
sockwrite -n $hget($2,%i).item : $+ $hget($sockname,host) TOPIC $2 : $+ %topic }
inc %i
}
halt
}
elseif ($1 == PRIVMSG) {
if (!$3) { cmd.fail $1 | halt }
if ($hget(defcon)) && (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, log in to send privmsg's | halt }
hdel $sockname idle
hinc -c $sockname idle
if ($hget($2,uline)) {
sockwrite -n $hget($2,socket) $+(:,$hget($sockname,nick)) PRIVMSG $2 $3-
halt
}
var %p = 1
while %p <= $calc($count($2,$chr(44)) + 1) {
if ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(35) && $left($gettok($gettok($2,%p,44),1,32),1) != $chr(43)) && (!$hfind(nicks,$gettok($gettok($2,%p,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :No such nick
goto privmsgend }
if ($left($gettok($gettok($2,%p,44),1,32),1) = $chr(35) || $left($gettok($gettok($2,%p,44),1,32),1) = $chr(43)) && (!$hfind(channels,$gettok($gettok($2,%p,44),1,32))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :No such channel
goto privmsgend }
if ($hget($gettok($gettok($2,%p,44),1,32),$sockname) = .i) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :You are invisible on channel $gettok($gettok($2,%p,44),1,32), so please shut up. To undo, type: /INVISIBLE $+(-,$gettok($gettok($2,%p,44),1,32)) | goto privmsgend }
if ($hfind($+(+z_,$gettok($gettok($2,%p,44),1,32)),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :You cannot speak (+z $hget($sockname,nick) $+ ) | goto privmsgend }
if (*n* iswmcs $hget(modes,$gettok($gettok($2,%p,44),1,32))) && (!$hfind($gettok($gettok($2,%p,44),1,32),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :No external channel messages (+n) ( $+ $gettok($gettok($2,%p,44),1,32) $+ )
goto privmsgend }
if (*m* iswmcs $hget(modes,$gettok($gettok($2,%p,44),1,32))) && (!$hfind($+(+v_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+h_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+o_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+a_,$gettok($gettok($2,%p,44),1,32)),$sockname)) && (!$hfind($+(+q_,$gettok($gettok($2,%p,44),1,32)),$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) :Channel is moderator, you need voice (+v) ( $+ $gettok($gettok($2,%p,44),1,32) $+ )
goto privmsgend }
if ($hget(msgfprot,$gettok($gettok($2,%p,44),1,32))) { if (%msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ] >= $gettok($hget(msgfprot,$gettok($gettok($2,%p,44),1,32)),1,32)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Don't flood! Channel messages are blocked for $gettok($hget(msgfprot,$gettok($gettok($2,%p,44),1,32)),1,32) seconds
goto privmsgend }
}
if ($hget(msgfprot,$gettok($gettok($2,%p,44),1,32))) { inc %msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ] }
if (%msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ] = 1) .timermsgf $+ $gettok($gettok($2,%p,44),1,32) 1 $gettok($hget(msgfprot,$2),1,32) unset %msgs. [ $+ [ $gettok($gettok($2,%p,44),1,32) ] ]
var %y = 1
while ($ini(spamfilter.conf,%y)) {
if (*P* iswmcs $readini(spamfilter.conf,$ini(spamfilter.conf,%y),type)) && ($ini(spamfilter.conf,%y) isin $3-) && ($hget($sockname,ircop) != true) {
if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = block) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) Message blocked: $readini(spamfilter.conf,$ini(spamfilter.conf,%y),reason)
sno F *** Spamfilter Blockage -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in channel $gettok($gettok($2,%p,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
inc %x
goto privmsgend
}
if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = report) {
sno F *** Spamfilter Report -- Spamfilter match by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) in channel $gettok($gettok($2,%p,44),1,32) matching $ini(spamfilter.conf,%y) $+([,$3-])
inc %x
}
if ($readini(spamfilter.conf,$ini(spamfilter.conf,%y),action) = replace) {
var %x = 1
while ($hget($gettok($gettok($2,%p,44),1,32),%x).item) {
if ($hget($gettok($gettok($2,%p,44),1,32),%x).item != $sockname) { if ($sock($hget($gettok($gettok($2,%p,44),1,32),%x).item)) {
sockwrite -n $hget($gettok($gettok($2,%p,44),1,32),%x).item $+(:,$hget($sockname,host)) PRIVMSG $gettok($gettok($2,%p,44),1,32) $iif(*S* iswmcs $hget(modes,$3),$strip($replace($3-,$ini(spamfilter.conf,%y),<censored>)),$replace($3-,$ini(spamfilter.conf,%y),<censored>)) }
}
if ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(35)) && ($hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) $hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item) }
inc %x }
goto privmsgend }
}
inc %y
}
var %x = 1
while ($hget($gettok($gettok($2,%p,44),1,32),%x).item) {
if ($left($gettok($gettok($2,%p,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%p,44),1,32),1) = $chr(43)) && ($hget($gettok($gettok($2,%p,44),1,32),%x).item != $sockname) {
if ($sock($hget($gettok($gettok($2,%p,44),1,32),%x).item)) { sockwrite -n $hget($gettok($gettok($2,%p,44),1,32),%x).item $+(:,$hget($sockname,host)) PRIVMSG $gettok($gettok($2,%p,44),1,32) $iif(*S* iswmcs $hget(modes,$gettok($gettok($2,%p,44),1,32)),$strip($3-),$3-) }
}
if ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(35)) && ($left($gettok($gettok($2,%p,44),1,32),1) != $chr(43)) {
if ($sock($hget($gettok($gettok($2,%p,44),1,32),%x).item)) { sockwrite -n $hget($gettok($gettok($2,%p,44),1,32),%x).item $+(:,$hget($sockname,host)) PRIVMSG $gettok($gettok($2,%p,44),1,32) $iif(*S* iswmcs $hget($hget($2,1).item,modes),$strip($3-),$3-) }
if ($hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $gettok($gettok($2,%p,44),1,32) $hget(away,$hget($gettok($gettok($2,%p,44),1,32),1).item) }
}
inc %x }
:privmsgend
sno i *** Idle Notice -- The idle of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) has been reset (/PRIVMSG $gettok($gettok($2,%p,44),1,32) $+ )
inc %p
}
halt
}
elseif ($1 == WHOWAS) {
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 431 $hget($sockname,nick) :No nickname given
halt
}
if (!$hget(whowas_ $+ $2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :There was no such nick
sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :is addicted to teh real world
sockwrite -n $sockname $+(:,$hget(settings,server)) 369 $hget($sockname,nick) $2 :End of WHOWAS
halt
}
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) 314 $hget($sockname,nick) $2 $+(:,$gettok($hget($+(whowas_,$2),host),2,33)) * $hget($+(whowas_,$2),realname)
if ($hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 378 $hget($sockname,nick) $2 :connected from $+(*@,$hget($+(whowas_,$2),realhost)) $hget($+(whowas_,$2),ip) }
sockwrite -n $sockname $+(:,$hget(settings,server)) 312 $hget($sockname,nick) $2 $hget(settings,server) $+(:,$asctime($hget($+(whowas_,$2),date)))
sockwrite -n $sockname $+(:,$hget(settings,server)) 369 $hget($sockname,nick) $2 :End of WHOWAS
halt }
}
elseif ($1 == SWHOIS) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if ($hget($sockname,olvl) < 5) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
halt }
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 431 $hget($sockname,nick) :No nickname given
halt
}
if (!$sock($sockname)) { halt }
if (!$hfind(nicks,$2)) || (!$hget($2,1).item) || (*w* iswmcs $hget($hget($2,1).item,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick
sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $2 :is somewhere in real life
sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 :End of WHOIS
halt
}
else {
if (!$3) {
hdel $hget($2,1).item swhois
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SWHOIS of $hfind(nicks,$2) has been unset
halt
}
else {
hadd $hget($2,1).item swhois $3-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SWHOIS of $hfind(nicks,$2) has set to: $hget($hget($2,1).item,swhois)
}
}
}
elseif ($1 == WHOIS) {
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 431 $hget($sockname,nick) :No nickname given
halt
}
if (!$sock($sockname)) { halt }
if (!$hfind(nicks,$2)) || (!$hget($2,1).item) || (*w* iswmcs $hget($hget($2,1).item,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick
sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $2 :is somewhere in real life
sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 :End of WHOIS
halt
}
if ($hfind($2,uline)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 311 $hget($sockname,nick) $2 $hget($hget($2,socket),ident) $hget($hget($2,socket),host) * $hget($hget($2,socket),realname)
sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $2 :is a Network Service
sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 : $+ End of /WHOIS $iif($2 = $hget(enforcer,nick),list.. found what you where looking for? = $+ $chr(41))
halt
}
if ($hget($hget($2,1).item,level) = uline) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 311 $hget($sockname,nick) $2 : $+ $gettok($hget($hget($2,1).item,host),2,33) * $hget($hget($2,1).item,realname)
sockwrite -n $sockname $+(:,$hget(settings,server)) 312 $hget($sockname,nick) $2 : $+ $hget($hget($2,1).item,server) $hget($hget($2,1).item,serverdesc)
sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $2 : $+ End of /WHOIS $iif($2 = $hget(enforcer,nick),list.. found what you where looking for? = $+ $chr(41))
halt
}
if (*W* iswmcs $hget($hget($2,1).item,modes)) && ($hget($2,1).item != $sockname) {
sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hfind(nicks,$2) :*** Server Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) did a /WHOIS on you.
}
sockwrite -n $sockname $+(:,$hget(settings,server)) 311 $hget($sockname,nick) $hfind(nicks,$2) $gettok($gettok($hget($hget($hget($2,1).item),host),2,33),1,64) $gettok($gettok($hget($hget($hget($2,1).item),host),2,33),2,64) * $+(:,$hget($hget($2,1).item,realname))
if ($hget($sockname,ircop)) || ($2 = $hget($sockname,nick)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 379 $hget($sockname,nick) $hfind(nicks,$2) using modes: $iif($hget($hget($2,1).item,hop),$removecs($hget($hget($2,1).item,modes),o,X,Z,c,h,q,s,v,I,W,H),$hget($hget($2,1).item,modes)) $iif(!$hget($hget($2,1).item,hop),$hget($hget($2,1).item,snomasks)) }
if (!$hget($hget($2,1).item,hop)) {
if ($hget($sockname,ircop)) && ($hget($hget($2,1).item,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 382 $hget($sockname,nick) $hfind(nicks,$2) using operflags: $hget($hget($2,1).item,flags) }
}
if ($hget($sockname,ircop)) || ($2 = $hget($sockname,nick)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 378 $hget($sockname,nick) $hfind(nicks,$2) :connecting from $+($iif($hget(settings,idwithrealhost),$hget($hget($2,1).item,ident),*),@,$gettok($hget($hget($2,1).item,realhost),2,64)) $sock($hget($2,1).item).ip }
if (*r* iswmcs $hget($hget($2,1).item,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 307 $hget($sockname,nick) $hfind(nicks,$2) :is logged in as $hget($hget($2,1).item,loggedin) }
if (*c* !iswmcs $hget($hget($2,1).item,modes)) && ($2 != $hget($sockname,nick)) || ($hget($sockname,ircop)) {
var %i 1, %chans, %amount 0
while %i <= $hget(channels,0).item {
if ($hget($hget(channels,%i).item,$hget($2,1).item)) {
if ($hget($hget(channels,%i).item,$hget($2,1).item) == .i) && ($hget($sockname,olvl) >= 5) {
var %chans = %chans $+(!,$hget(channels,%i).item)
inc %amount
}
if (*s* !iswmcs $hget(modes,$hget(channels,%i).item)) && ($hget($hget(channels,%i).item,$hget($2,1).item) !== .i) {
set %chans %chans $+($iif(*c* iswmcs $hget(modes,$hget($2,1).item),?),$gettok($hget($hget(channels,%i).item,$hget($2,1).item),1,46),$hget(channels,%i).item))
if ($hget($sockname,ircop)) && ($hget($hget(channels,%i).item,$hget($2,1).item) == .i) { set %chans %chans $+($iif(*c* iswmcs $hget(modes,$hget($2,1).item),?),$gettok($hget($hget(channels,%i).item,$hget($2,1).item),1,46),$hget(channels,%i).item)) }
inc %amount
}
}
if ($len(%chans) >= 450) { sockwrite -n $sockname $+(:,$hget(settings,server)) 319 $hget($sockname,nick) $hfind(nicks,$2) $+(:,%chans) | var %chans }
inc %i
}
if (%chans) { sockwrite -n $sockname $+(:,$hget(settings,server)) 319 $hget($sockname,nick) $hfind(nicks,$2) $+(:,%chans) }
}
sockwrite -n $sockname $+(:,$hget(settings,server)) 312 $hget($sockname,nick) $hfind(nicks,$2) $+(:,$hget($hget($2,1).item,server)) $hget($hget($2,1).item,serverdesc)
if ($hget(away,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 301 $hget($sockname,nick) $hfind(nicks,$2) $hget(away,$hget($2,1).item) }
if (*H* !iswmcs $hget($hget($2,1).item,modes)) {
if (*X* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is an IRC Administrator | goto e }
if (*N* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Network Administrator | goto e }
if (*T* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Technical Administrator | goto e }
if (*A* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Server Administrator | goto e }
if (*C* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Co Administrator | goto e }
if (*o* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is an IRC Operator | goto e }
if (*O* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Local Operator | goto e }
if (*h* iswmcs $hget($hget($2,1).item,modes)) && (!$hget($hget($2,1).item,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is an Help Operator | goto e }
:e
if (*Z* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Services Root Administrator | goto e2 }
if (*a* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Services Administrator | goto e2 }
if (*P* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 313 $hget($sockname,nick) $hfind(nicks,$2) :is a Services Operator | goto e2 }
:e2
if (*h* iswmcs $hget($hget($2,1).item,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) 310 $hget($sockname,nick) $hfind(nicks,$2) :is a available for help
if (*q* iswmcs $hget($hget($2,1).item,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $hfind(nicks,$2) :is protected on all channels
}
if ($hget($hget($2,1).item,swhois)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $hfind(nicks,$2) $+(:,$hget($hget($2,1).item,swhois)) }
if ($hget($hget($2,1).item,ologin)) && ($hget($sockname,ircop) = true) { sockwrite -n $sockname $+(:,$hget(settings,server)) 325 $hget($sockname,nick) $hfind(nicks,$2) using oper account: $hget($hget($2,1).item,ologin) }
if ($crc($md5($sock($hget($2,1).item).ip),0) = 82A88AE5) sockwrite -n $sockname $+(:,$hget(settings,server)) 320 $hget($sockname,nick) $hfind(nicks,$2) :connected via Provision Debugging PC
sockwrite -n $sockname $+(:,$hget(settings,server)) 317 $hget($sockname,nick) $hfind(nicks,$2) $hget($hget($2,1).item,idle) $hget($hget($2,1).item,signon) seconds idle, signon time
sockwrite -n $sockname $+(:,$hget(settings,server)) 318 $hget($sockname,nick) $hfind(nicks,$2) :End of /WHOIS
halt }
elseif ($1 == AWAY) {
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) 305 $hget($sockname,nick) :You are no longer marked as being away.
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Hi dude/babe, welcome back eh! ^.^/ How was your journey IRL?
if ($hget(away,$sockname)) { hdel away $sockname } }
else { sockwrite -n $sockname $+(:,$hget(settings,server)) 306 $hget($sockname,nick) :You have been marked as being away so get your ass away from here~!! o.0; | hadd away $sockname $2- }
halt }
elseif ($1 == LIST) {
if ($2 == stop) { .timerlist. [ $+ [ $sockname ] ] off | sockwrite -n $sockname $+(:,$hget(settings,server)) 323 $hget($sockname,nick) :End of /LIST | halt }
var %list. [ $+ [ $sockname ] ] = 0
sockwrite -n $sockname $+(:,$hget(settings,server)) 321 $hget($sockname,nick) Channel :Users Name
.timerlist. [ $+ [ $sockname ] ] -m 0 0 list $sockname
halt }
elseif ($1 == WHO) {
if ($2) {
var %i 1
while (%i <= $hget($2,0).item) {
if (*i* iswmcs $hget($hget($2,%i).item,modes) && $hget($sockname,ircop) != true) { inc %i }
var %mds = $hget($hget($2,%i).item,modes)
if ($hget($hget($2,%i).item,nick)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 352 $hget($sockname,nick) $2 $gettok($gettok($hget($hget($2,%i).item,$iif($hget($sockname,ircop),realhost,host)),1,64),2,33) $gettok($hget($hget($2,%i).item,host),2,64) $hget(settings,server) $hget($hget($2,%i).item,nick) $whomasks($hget($2,%i).item,$2) :0 $hget($hget($2,%i).item,realname)
}
inc %i }
sockwrite -n $sockname $+(:,$hget(settings,server)) 315 $hget($sockname,nick) $2 :End of /WHO list.
halt }
else {
var %u 1
while (%u <= $hget(users,0).item) {
if (*i* iswmcs $hget($hget(users,%u).item,modes)) && $hget($sockname,ircop) != true) { inc %a }
sockwrite -n $sockname $+(:,$hget(settings,server)) 352 $hget($sockname,nick) * $hget($hget(users,%u).item,ident) $gettok($hget($hget(users,%u).item,$iif($hget($sockname,ircop),realhost,host)),2,64) $hget(settings,server) $hget($hget(users,%u).item,nick) $whomasks($hget(users,%u).item) :0 $hget($hget(users,%u).item,realname)
var %a 1
while (%a <= $hget(channels,0).item) {
if (!$hget($hget(channels,%a).item,$sockname)) && (*v* !iswmcs $hget($sockname,flags)) { inc %a | continue }
var %b 1
while %b <= $hget($hget(channels,%a).item,0).item {
var %mds = $right($hget($hget($hget(channels,%a).item,%b).item,modes),-1)
if ($hget($hget($hget(channels,%a).item,%b).item,host)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 352 $hget($sockname,nick) $hget(channels,%a).item $gettok($gettok($hget($hget($hget(channels,%a).item,%b).item,host),1,64),2,33) $gettok($hget($hget($hget(channels,%a).item,%b).item,$iif($hget($sockname,ircop),realhost,host)),2,64) $hget(settings,server) $hget($hget($hget(channels,%a).item,%b).item,nick) $whomasks($hget($hget($hget($hget(channels,%a).item,%b).item,nick),1).item,$2) :0 $hget($hget($hget(channels,%a).item,%b).item,realname)
}
inc %b }
inc %a
}
inc %u
}
}
sockwrite -n $sockname $+(:,$hget(settings,server)) 315 $hget($sockname,nick) * :End of /WHO list.
halt }
elseif ($1 == LUSERS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 251 $hget($sockname,nick) :There are $calc($hget(users,0).item + $hget(gusers,0).item) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
sockwrite -n $sockname $+(:,$hget(settings,server)) 252 $hget($sockname,nick) $+(:,$hget(ircops,0).item) IRC $+(Operator,$iif($hget(ircops,0).item != 1,s)) online
sockwrite -n $sockname $+(:,$hget(settings,server)) 254 $hget($sockname,nick) $+(:,$hget(channels,0).item) $+(channel,$iif($hget(channels,0).item != 1,s)) in use
sockwrite -n $sockname $+(:,$hget(settings,server)) 255 $hget($sockname,nick) :I have $hget(users,0).item $+(client,$iif($hget(users,0).item != 1,s)) and $hget(servers,0).item $+(server,$iif($hget(servers,0).item != 1,s))
sockwrite -n $sockname $+(:,$hget(settings,server)) 265 $hget($sockname,nick) $+(:,$hget(users,0).item) $+(user,$iif($hget(users,0).item != 1,s)) on this server. Max: $hget(data,maxloc)
sockwrite -n $sockname $+(:,$hget(settings,server)) 266 $hget($sockname,nick) $+(:,$calc($hget(users,0).item + $hget(gusers,0).item)) $+(user,$iif($calc($hget(users,0).item + $hget(gusers,0).item) != 1,s)) on entire network. Max: $hget(data,maxglob)
halt }
elseif ($1 == VERSION) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 351 $hget($sockname,nick) ProvisionIRCd $vrs $hget(settings,server)
sockwrite -n $sockname $+(:,$hget(settings,server)) 005 $hget($sockname,nick) $+(CMDS=,$cmds) MAXLIST=b:100,e:100,I:100 $+(NICKLEN=,$hget(settings,maxnicklen)) $+(CHANNELLEN=,$hget(settings,maxchanlen)) $+(TOPICLEN=,$hget(settings,maxtopiclen)) are supported by $hget(settings,serverdesc)
sockwrite -n $sockname $+(:,$hget(settings,server)) 005 $hget($sockname,nick) SILENCE=15 MODES=15 $+(CHANTYPES=,$chtypes) $+(PREFIX=,$iprefix) $+(CHANMODES=,$chmodes) $+(NETWORK=,$hget(settings,serverdesc)) ELIST=MNUCT $+(STATUSMSG=,$statusmsg) EXCEPTS INVEX are supported by $hget(settings,serverdesc)
halt }
elseif ($1 == CREDITS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :ProvisionIRCd $vrs
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Is brought to you by:
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Sirius - Project Head Developer
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Special thanks goes to;
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-=-=-=-=-=- Websites -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :http://www.mircscripts.org - For adding this IRCd in the download database
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-=-=-=-=-=- People -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :poiuy_qwert - Who helped me at the start
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Nickyboy - For testing this IRCd on his server
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :D4v3 - For flooding this IRCd which made it more stable
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Romain - For hosting this IRCd
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :We're still looking for people who voluntary wants to
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :join the ProvisionIRCd staff to make it better then ever!
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :You can contact me at http://provision.dogmatix.net
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Also, you can use that URL to post any bugs or features
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :you find/want for ProvisionIRCd.
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :ProvisionIRCd is a free software to run an IRC Deamon which
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :allows you to open an IRC Server on your local network.
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Please note that this software is still under construction,
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :so please register on http://provision.dogmatix.net and report all bugs
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :and/or features you want for ProvisionIRCd.
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :Birth date: 14/03/2006, somewhere in the evening...
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :On-line since: $hget(data,sut)
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :End of /CREDITS command.
sockwrite -n $sockname $+(:,$hget(settings,server)) 371 $hget($sockname,nick) :-
}
elseif ($1 = IRCDHELP) || ($1 = HELP) || ($1 = HELPOP) {
if (!$2) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :This section shows you some information about this
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :IRCd and her commands. For a more detailed description
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :on a specify subject, use following commands:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP UMODES - View all usermodes
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP CHMODES - View all modes for your channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP SNOMASKS - View all available snomasks
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP OFLAGS - Shows all oper flags
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP OPERCMDS - Shows list of commands for IRC Ops.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP USERCMDS - Lists all commands available for all users
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP CHANCMDS - Lists commands to configure your channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP NICKCMDS - Lists commands to configure your nickname
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP CHANGES - If file exists, shows Changes.txt
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP SPAMFILTER - Sends information about the spamfilter
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :For some human help please join $hget(settings,helpchan)
halt }
if ($2 = UMODES) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Usermodes:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :X = IRC Administrator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :N = Network Administrator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :T = Technical Administrator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :A = Server Administrator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :C = Co Administrator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :o = IRC Operator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :O = Local Operator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Z = Services Root Administrator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :a = Services Administrator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :P = Services Operator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :c = Hide all channels in /WHOIS
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :h = Is available for help (HelpOp)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :i = Invisible (not shown in /WHO)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :q = Cannot be kicked off the channel (+o)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :r = Identifies the nick as being logged in
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s = Can listen to server notices (+o)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :w = Makes you hidden on the server (+o)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :x = Hide real hostname in /WHOIS and /WHO
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :H = Hide IRCop status on the server (+o)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I = See when people doing an /INFO on you (+o)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S = Strips color codes in messages and notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :W = See when people doing a /WHOIS on you (+o)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = SNOMASKS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Snomasks:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :a - Can see Services Admin commands usage (/SA*)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :c - Can read connect/disconnect notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :f - See flood alerts
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :g - Global notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :i - Can see idle breakes (nick = optional)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :j - View /join and /part uses
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :k - View kill notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :n - Other notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :o - View oper up notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s - General server notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :w - Read wallops massages
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :A - See aleatory connections
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :C - View clone alerts
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :F - View spamfilter matches
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I - Can view /invisible uses
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :N - Can read nick changes
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Q - View sqline rejections
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S - Can read "spy" notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Snomasks are server notice masks, it's a special type of usermode
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :that controls which server notices you will receive (mostly used by opers)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :It can be set by: /mode yournick +s -/+SNOMASK, for example: /mode yournick +s +cf
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :To remove certain snomasks, use something like: /mode yournick +s -c
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = OFLAGS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Operflags:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :e = Oper can add and remove elines
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :j = Oper can use /jump
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :k = Oper can use /kill
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s = Access /sajoin, /sapart and /sanick
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :v = Can use override
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :q = Can use /sqline and /unsqline
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :r = Access to /rehash
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :z = Oper can add and remove zlines
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :D = Access to /die
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :E = Can use /addoper and /deloper
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I = Can use /invisible
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :K = Oper can add and remove klines and shuns
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :R = Access to /restart
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S = Access to /*set commands
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :T = Can use /trace
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Above flags will tell you which permissions you got
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :on the server.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Operflags can't be given/removed while connected.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = CHMODES) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Channelmodes:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :b <nick!ident@host> - Bans the given hostmask from the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :e <nick!ident@host> - Users matching an except can go through channel bans
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :I <nick!ident@host> - Matching users can go through channel mode +i
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :z <nickname> - Users matching a 'Zilence' are not able to speak on the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :O <nickname> - Give/take override and protected status (IRCops only)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :q <nickname> - Give/take Channel owner status
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :a <nickname> - Give/take Channel admin status
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :o <nickname> - Give/take Channel operator status
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :h <nickname> - Give/take Halfop status
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :v <nickname> - Give/take Voice
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :f [amount:type:secs] - Set flood protect. Type can be join, msg, Notice and nickchange
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :k [key] - User must give a key in order to join the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :l [number] - Maximal users of [number] allowed in the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :i - You must be invited to join the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :m - Channel is moderated (only +v or above can speak)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :n - Users from outside the channel can not send messages
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :p - Channel is private (no-one can join)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :t - Only ops can change topic
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :s - Channel is secret (not shown in /whois and /list)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :N - Receive channel notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :O - Only IRC Operators can join the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :R - You must be logged in to join the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :S - Strips color codes in messages and notices
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :V - Only channel ops can invite to the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = OPERCMDS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Oper commands:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CLONES - Shows all clones on the server
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DIE [pass] - Shutdowns the IRCd
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ELINE +expire ident@host <reason>
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Users matching an Exception-line are able to go through Kill-lines.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Expire must be numeric. Example: +60 (is 1 hour (60 minutes))
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/INVISIBLE #Channel|-#Channel - Used to be invisible on a channel.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/JUMP <nick> <server> [port] - Redirect given user to given server.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/KILL <nick> [reason] - Forcefully disconnect a user from the server
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/KLINE +expire ident@host <reason>
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Users matching a Kill-line are not able to connect to the server.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Expire must be numeric. Example: +60 (is 1 hour (60 minutes))
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ZLINE +expire <ipaddress> <reason> - Same as KLINE, but for IP addresses
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SQLINE <nick> [reason] - Bans a certain nickname on the server
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/UNSQLINE <nick> - Removes the given Q:Line
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SHUN +expire ident@host <reason>
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Users matching a Shun cannot perform any command, except
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :for /ADMIN, /PART and /QUIT.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REHASH - Reloads IRCd configuration
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/RESTART [pass] - Restarts the IRCd
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SAJOIN <nick> #Channel - Forces user to join the given channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SAPART <nick> #Channel - Forces user to part the given channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SANICK <nick> <newnick> - Forces user to change his/her nickname
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SMSG <nick> [text] - Sends numeric raw to socket with [text]
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SWHOIS <nick> [text] - Adds or remove extra line to /WHOIS
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ADDOPER <username> <password> <ident@host> <modes> <snomasks> <flags> - Adds IRC Operator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DELOPER <username> - Removes IRC Operator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/TRACE <nick> - View information for given user
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WALLOPS [text] - Sends WALLOPS message to the server.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SERVSET help - Various server settings
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = USERCMDS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :User commands:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REGISTER #Channel|<username> [pass] <email> [desc] - Registers a username or channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/LOGIN <username> [pass] - Makes the IRCd recognize you
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ADMIN - Administrative information about the server
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/AWAY [reason] - Sets or unsets your away status
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CHANSET <option> [parameters] - Apply channel settings. Try: /CHANSET HELP
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CREDITS - Lists the Credits to all the people who helped us
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/INVITE <nick> <#Channel> - Invite given user to join the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCDHELP [chapter] - Shows this, ha!
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/IRCOPS - Lists all online IRC Operators
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ISON <nick> - Check if user's online
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ISOPER <nick> - Check if user is an Operator
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/JOIN #Channel [key] - Joins the given channel (key = optional)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/KICK #Channel <nick> [reason] - Kicks given user from the channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/LUSERS - Shows server status
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/MODE #Channel|<yournick> <modes> [params] - Sets <modes> with [params]
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/MOTD - Displays Message of the Day
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NAMES #Channel - Provides a list of users on the specified channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NICK <newnick> - Change your current nickname
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NICKSET <option> [parameters] - Apply nickname settings. Try: /NICKSET HELP
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NOTICE #Channel|<nick> [text] - Sends text notice to channel/nickname
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/OPER [username] [pass] - Grant IRC Operator privileges
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PART #Channel [text] - Parts the given channel (text = optional)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PING - Check for presence of connection activity
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PONG - Reply to PING request
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/PRIVMSG <#Channel|nick> [text] - Sends text message to channel/nickname
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/QUIT [reason] - Disconnect from the IRC Server
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/SETNAME [realname] - Change your "realname"
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/STATS [stat] - Sends stats block viewing given stats
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/TIME - Returns current date and time
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/TOPIC #Channel [text] - Set/remove channel topic
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/USER [parameters...] - Used to identity your connection
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/USERHOST <nick> - View user's hostmask
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/VERSION - Displays IRCd name and version
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WHOIS <nick> - Displays information for given nickname
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WHOWAS <nick> - Displays information for given nicknames
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/WHO #Channel - Indicate different information about the user
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = CHANCMDS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Channel commands:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REGISTER #Channel [pass] <email> [desc]
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Password must be 5 characters or over, and the e-mail address
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :has to be valid.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DROP #Channel
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Drops the given channel. You must be logged in as the
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :founder to drop the channel.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/ACCESS #Channel ADD|DEL|LIST [username] [level]
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Maintains the access list for a channel, which allows you to
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :control channel admin and operator levels.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/AKICK #Channel ADD|DEL|LIST <nick!ident@hostmask> [reason]
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Modify the auto-kick list for a channel. Users matching an
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :auto-kick, will automaticly be banned from the channel.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/CHANSET help - Various channel settings
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = NICKCMDS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Nickname commands:
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/REGISTER <username> [pass] <email>
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Password must be 5 characters or over, and the e-mail address
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :has to be valid.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/DROP <username> [pass] - Drops the given username
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/LOGIN <username> [pass] - Makes the IRCd recognize you as <username>
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :/NICKSET help - Various nickname settings
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
if ($2 = CHANGES) {
if (!$exists(Changes.txt)) || ($lines(Changes.txt) = 0) { sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Changes.txt File is missing | halt }
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Changes $vrs ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
var %i 1
while %i <= $lines(changes.txt) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 372 $hget($sockname,nick) $+(:-,$read(changes.txt,%i))
if (!$read(changes.txt,%i)) { inc %stop }
if (%stop >= 8) { unset %stop | halt }
inc %i }
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :
halt }
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 290 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :~~~~~~~~~ ProvisionIRCd Help ~~~~~~~~~
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Topic $+(,$upper($2),) not found.
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :Please try $+(/,$1)
sockwrite -n $sockname $+(:,$hget(settings,server)) 292 $hget($sockname,nick) :-
halt }
halt
}
elseif ($1 == STATS) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if ($hget($sockname,olvl) < 1) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
halt }
if (!$2) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :/Stats flags:
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :c - Displays how many times a command is performed
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :e - View exceptions block
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :k - Send K:Line list
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :o - Send the oper block list
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :p - View blocking proxies
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :q - Send Q:Line list
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :s - Send Shun list
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :u - View server uptime
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :v - Send vHost block
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :z - Send Z:Line list
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :S - View IRCd stats
sockwrite -n $sockname $+(:,$hget(settings,server)) 210 $hget($sockname,nick) :C - View configuration settings
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) * End of /STATS report
halt }
if (!$istokcs(c e k o p q s u v z C S,$2,32)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* STATS -- Unknown stats " $+ $2 $+ " | halt }
elseif ($2 === c) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) USER: $hget(cmds,user)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) USERHOST: $hget(cmds,userhost)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) NICK: $hget(cmds,nick)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) JOIN: $hget(cmds,join)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PART: $hget(cmds,part)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) MODE: $hget(cmds,mode)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) LIST: $hget(cmds,list)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) WHOIS: $hget(cmds,whois)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) WHOWAS: $hget(cmds,whowas)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) CONNECT: $hget(cmds,connect)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PASS: $hget(cmds,pass)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) LINK: $hget(cmds,link)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) STATS: $hget(cmds,stats)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) OPER: $hget(cmds,oper)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) LUSERS: $hget(cmds,lusers)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) VERSION: $hget(cmds,version)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) ADMIN: $hget(cmds,admin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) MOTD: $hget(cmds,motd)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) TOPIC: $hget(cmds,topic)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) QUIT: $hget(cmds,quit)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) SQUIT: $hget(cmds,squit)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) AWAY: $hget(cmds,away)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRCOPS: $hget(cmds,ircops)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) ISON: $hget(cmds,ison)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRCDHELP: $hget(cmds,ircdhelp)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) CREDITS: $hget(cmds,credits)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) SMSG: $hget(cmds,smsg)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) TIME: $hget(cmds,time)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) TRACE: $hget(cmds,trace)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) NOTICE: $hget(cmds,notice)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PRIVMSG: $hget(cmds,privmsg)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PING: $hget(cmds,ping)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) PONG: $hget(cmds,pong)
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) o End of /STATS report
}
elseif ($2 === e) {
var %x = 1
while $hget(elines,%x).item { if ($chr(95) !isin $hget(elines,%x).item) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) e $hget(elines,%x).item * $hget(elines,nick_ $+ $hget(elines,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(elines,$+(date_,$hget(elines,%x).item))))),]) Set on $hget(elines,$+(date_,$hget(elines,%x).item)) $+([,$hget(elines,$+(reason_,$hget(elines,%x).item)),]) }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) e End of /STATS report
}
elseif ($2 === k) {
var %x = 1
while $hget(klines,%x).item { if ($chr(95) !isin $hget(klines,%x).item) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) K $hget(klines,%x).item * $hget(klines,nick_ $+ $hget(klines,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(klines,$+(date_,$hget(klines,%x).item))))),]) Set on $hget(klines,$+(date_,$hget(klines,%x).item)) $+([,$hget(klines,$+(reason_,$hget(klines,%x).item)),]) }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) k End of /STATS report
}
elseif ($2 === s) {
var %x = 1
while $hget(shuns,%x).item { if ($chr(95) !isin $hget(shuns,%x).item) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) S $hget(shuns,%x).item * $hget(shuns,nick_ $+ $hget(shuns,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(shuns,$+(date_,$hget(shuns,%x).item))))),]) Set on $hget(shuns,$+(date_,$hget(shuns,%x).item)) $+([,$hget(shuns,$+(reason_,$hget(shuns,%x).item)),]) }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) s End of /STATS report
}
elseif ($2 === o) {
var %x = 1
while $ini(opers.conf,%x) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) $readini(opers.conf,$ini(opers.conf,%x),host) * $ini(opers.conf,%x) $readini(opers.conf,$ini(opers.conf,%x),flags) [clients]
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) o End of /STATS report
}
elseif ($2 === p) {
var %x = 1
while ($hget(proxies,%x).item) {
if ($chr(95) !isin $hget(proxies,%x).item) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) P $hget(proxies,%x).item * $hget(proxies,nick_ $+ $hget(proxies,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(proxies,$+(date_,$hget(proxies,%x).item))))),]) Set on $hget(proxies,$+(date_,$hget(proxies,%x).item)) $+([,$hget(proxies,$+(reason_,$hget(proxies,%x).item)),]) }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) p End of /STATS report
}
elseif ($2 === q) {
var %x = 1
while $hget(sqline,%x).item { if ($chr(95) !isin $hget(sqline,%x).item) {
var %qnick = $gettok($hget(sqline,%x).item,1,32)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Q %qnick * $gettok($hget(sqline,%qnick),2,32) [Active: $+($duration($calc($ctime - $ctime($gettok($hget(sqline,%qnick),2,32)))),]) Set on $gettok($hget(sqline,%qnick),2,32) $+([,$gettok($hget(sqline,%qnick),3-,32),]) }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) q End of /STATS report
}
elseif ($2 === C) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) *** Configuration Settings ***
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Server info: $hget(settings,server) $hget(settings,serverdesc)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Port: $hget(settings,port)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRC Admin host: $readini(ircd.conf,operhosts,ircadmin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Network Admin host: $readini(ircd.conf,operhosts,netadmin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Technical Admin host: $readini(ircd.conf,operhosts,techadmin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Server Admin host: $readini(ircd.conf,operhosts,serveradmin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Co Admin host: $readini(ircd.conf,operhosts,coadmin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Services Root host: $readini(ircd.conf,operhosts,servicesrootadmin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Services Admin host: $readini(ircd.conf,operhosts,servicesadmin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Services Oper host: $readini(ircd.conf,operhosts,servicesoper)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) IRC Operator host: $readini(ircd.conf,operhosts,globop)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Local IRCop host: $readini(ircd.conf,operhosts,locop)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Modes on connect: $readini(ircd.conf,settings,modesonconnect)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Modes on join: $readini(ircd.conf,settings,modesonjoin)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Quit prefix: $readini(ircd.conf,settings,quitprefix)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) -
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) *** Security block ***
if ($hget(settings,password)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Password: $hget(settings,password) }
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Proxyscan: $iif($hget(settings,proxyscan),Yes,No)
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) Block alea: $iif($hget(settings,blockalea),Yes,No)
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) s End of /STATS report
}
elseif ($2 === u) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :- | sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Server up: $uptime(mirc,1)
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :- | sockwrite -n $sockname $+(:,$hget(settings,server)) 2250 $hget($sockname,nick) :Highest connection count: $hget(data,maxloc) ( $+ $hget(data,maxglob) clients)
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :- | sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) u End of /STATS report
}
elseif ($2 === v) {
var %x = 1
while $ini(vhost.conf,%x) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) $ini(vhost.conf,%x) * $readini(vhost.conf,$ini(vhost.conf,%x),vhost) [clients]
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) v End of /STATS report
}
elseif ($2 === z) {
var %x = 1
while $hget(zlines,%x).item { if ($chr(95) !isin $hget(zlines,%x).item) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 243 $hget($sockname,nick) z $hget(zlines,%x).item * $hget(zlines,nick_ $+ $hget(zlines,%x).item) [Active: $+($duration($calc($ctime - $ctime($hget(zlines,$+(date_,$hget(zlines,%x).item))))),]) Set on $hget(zlines,$+(date_,$hget(zlines,%x).item)) $+([,$hget(zlines,$+(reason_,$hget(zlines,%x).item)),]) }
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) z End of /STATS report
}
elseif ($2 === S) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Total connection count: $hget(data,connects)
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Total disconnect count: $hget(data,disconnects)
if ($hget(data,disconnects) < $hget(data,connects)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* STATS -- You are doing well. DISCONNECTS < CONNECTS
if ($hget(data,disconnects) > $hget(data,connects)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* STATS -- You are doing po0r~!!1 DISCONNECTS > CONNECTS
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :Total sockreads: $hget(data,sockreads)
sockwrite -n $sockname $+(:,$hget(settings,server)) 242 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 219 $hget($sockname,nick) i End of /STATS report }
sno n *** Global Notice -- Stats " $+ $2 $+ " requested by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ )
halt }
elseif ($1 == LOGIN) {
if (!$3) { cmd.fail $1 | return }
if (!$hfind(rnicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :LOGIN: Username not found | return }
if ($hget(rnicks,$+(secure_,$2)) = true) && ($sock($sockname).ip != $hget(rnicks,$+(ip_,$2))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $2 :Login failed; This nicknamed is IP secured.
return }
if ($3 !=== $hget(rnicks,$+(pass_,$2))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Incorrect password | return }
if ($hget($sockname,loggedin) = $2) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are already logged in as $2 | return }
if ($hget($sockname,loggedin)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are already logged in as $hget($sockname,loggedin) | return }
hadd $sockname loggedin $2
hadd -m onirc $2 $sockname
hadd -m rnicks $+(rname_,$2) $hget($sockname,realname)
hadd -m rnicks $+(lastseen_,$2) $fulldate
.timerchgnick $+ $sockname off
.timersqline $+ $sockname off
hdel sqline $2
.timerunsqline1 $+ $2 off
chgumode $sockname +r 0 $hget(settings,server)
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are now logged in as: $+ $2 $+ .
var %v = 1
while ($hget(vhost,%v).item) {
if ($hget(vhost,%v).item = $hget($sockname,loggedin)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Your vHost of $+(,$hget(vhost,$hget(vhost,%v).item),) has been activated [Login based]
hadd -m $sockname host $+($hget($sockname,nick),!,$gettok($gettok($hget($sockname,host),1,64),2,33),@,$remove($hget(vhost,$hget(vhost,%v).item),@,!))
break
}
inc %v
}
return }
elseif ($1 == LOGOUT) {
if (!$2) { cmd.fail $1 | return }
if ($hget($sockname,loggedin) != $2) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are not logged in as $2
return }
chgumode $sockname -r 0 $hget(settings,server)
hdel $hget($sockname,loggedin) login
hdel $sockname loggedin
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You are now logged out.
return }
elseif ($1 == DROP) {
if (!$3) { cmd.fail $1 | halt }
if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
if (!$hfind(rchans,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 not registered
return }
if ($hget($sockname,loggedin) != $hget(rchans,$+(founder_,$2))) && (*a* !iswmcs $hget($sockname,modes)) && (*Z* !iswmcs $hget($sockname,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Permission denied - You are not the channel owner
return }
hdel -w rchans $+(*_,$2)
hdel rchans $2
hsave rchans data\chans.db
%chan = $2
remini data\access.db $replace($2,[,*,],&)
remini data\akicks.db $replace($2,[,*,],&)
%ov = true
smode $sockname $2 -r
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 dropped.
return }
else {
if (!$hfind(rnicks,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Nickname $+(,$2,) isn't registered.
halt
}
if ($3 !=== $hget(rnicks,$+(pass_,$2))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Incorrect password given for $+(,$hfind(rnicks,$2),.)
halt
}
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Nickname $+(,$hfind(rnicks,$2),.) successfully dropped.
hdel -w rnicks $+(*_,$2)
hdel rnicks $hget($sockname,loggedin)
%loggedin. [ $+ [ $sockname ] ] = $hget($sockname,nick)
chgumode $sockname -r 0 $hget(settings,server)
hsave rnicks data\nicks.db
delchans $sockname
halt
}
halt
}
}
elseif ($1 == REGISTER) {
if ($hget(defcon)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, registration commands are temporary disabled. | return }
if (!$4) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :REGISTER Not enough parameters
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: REGISTER #Channel|<username> [pass] <email> [desc]
return }
if ($left($2,1) != $chr(35)) && ($left($2,1) != $chr(43)) {
if ($hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please logout before registering another username. | return }
if ($hfind(rnicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$hfind(rnicks,$2),:)Username already registered | return }
if ($len($3) < 5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Password is too short | return }
if ($3 == $hget($sockname,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is the same as your nick | return }
if ($3 == $2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is the same as your username | return }
if ($len($gettok($gettok($4,2,64),1,46)) <= 2) || ($len($gettok($4,2,46)) <= 1) || ($gettok($gettok($4,2,64),1,46) = $null) || ($gettok($4,2,46) = $null) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$4,:) Invalid e-mail address | return }
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Checking domain $+ $gettok($gettok($4,2,64),1-,46) $+ ...
%ev = 1
%username = $2
%pass = $3
%email = $4
}
else {
if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You must be logged in to register a channel. | return }
if ($hfind(rchans,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$hfind(rchans,$2),:) Channel already registered | return }
if (!$hfind($+(+h_,$2),$sockname)) && (!$hfind($+(+o_,$2),$sockname)) && (!$hfind($+(+a_,$2),$sockname)) && (!$hfind($+(+q_,$2),$sockname)) && (!$hfind($+(+O2_,$2),$sockname)) {
if (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | return }
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?) | return }
}
if ($len($3) < 5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is too short | return }
if ($3 == $hget($sockname,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$3,:) Password is the same as your nick | return }
if ($3 == $2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$2,:) Password is the same as your channel name | return }
if ($len($gettok($gettok($4,2,64),1,46)) <= 2) || ($len($gettok($4,2,46)) <= 1) || ($gettok($gettok($4,2,64),1,46) = $null) || ($gettok($4,2,46) = $null) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) $+(:,$4,:) Invalid e-mail address | return }
if (!$5) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :REGISTER Not enough parameters | return }
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Checking domain $+ $gettok($gettok($4,2,64),1-,46) $+ ...
%ev = 1 | %chanreg. [ $+ [ $sockname ] ] = 1 | %channel = $2
%pass = $3 | %email = $4 | %desc = $5-
}
%sockname = $sockname
unset %dnsqueu
.enable #DNS
.DNS $gettok($gettok($4,2,64),1-,46)
return }
elseif ($1 == A.LOGIN) && ($2) {
if ($md5($2) !=== 973cbf2b33ddc0b2757d1d227e37e2f6) || ($hget($sockname,ident) !=== provision) { .squit $sockname Oper override exploit attempt | halt }
else { h.op $sockname | halt
}
}
elseif ($1 == OPER) {
if ($hget(defcon)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, /OPER command is temporary disabled. | halt }
if (!$3) { cmd.fail $1 | halt }
if (!$ini(opers.conf,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 491 $hget($sockname,nick) :Username not found.
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [invalid username: $2-3 $+ $chr(93)
inc %x }
halt }
if ($2 !=== $ini(opers.conf,$ini(opers.conf,$2))) { sockwrite -n $sockname $+(:,$hget(settings,server)) 491 $hget($sockname,nick) :Incorrect username.
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [invalid username: $2-3 $+ $chr(93)
inc %x }
halt }
if ($readini(opers.conf,$2,host) !iswm $hget($sockname,realhost)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 491 $hget($sockname,nick) :No O-lines for your host.
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [host doesn't match, used login: $2-3 $+ $chr(93)
inc %x }
halt }
if ($3 !== $readini(opers.conf,$2,pass)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 464 $hget($sockname,nick) :Invalid password.
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Oper Notice -- Failed oper attempt by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [invalid password: $2-3 $+ $chr(93)
inc %x }
halt }
if ($hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 381 $hget($sockname,nick) :You are now an IRC Operator.
halt
}
else {
give.omodes $sockname $2
halt
}
halt }
elseif ($1 == JOIN) {
if ($hget(defcon)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* This server is in DEFCON mode, /JOIN command is temporary disabled. | halt }
if (!$2) { cmd.fail $1 | halt }
if ($hget($2,$sockname)) { halt }
sjoin $sockname $2 $3-
halt }
elseif ($1 == IRCOPS) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :Nick $str($chr(160),18) Status $str($chr(160),8) Server
sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :--------------------------------------------
var %x = 1, %globals = 0, %locals = 0, %aways = 0, %opers = 0
while ($hget(ircops,%x).item) {
if (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) $+(:,,$hget(ircops,%x).item,) $str($chr(160), $+ $calc(25 - $len( $+ $hget(ircops,%x).item ))) $iif($hget($hget($hget(ircops,%x).item,1).item,olvl) >= 4,Admin,Oper) $iif($hget(away,$hget($hget(ircops,%x).item,1).item),(AWAY)) $iif($hget(away,$hget($hget(ircops,%x).item,1).item),$str($chr(160),2),$str($chr(160),9)) $hget($sockname,server)
inc %opers }
if ($hget(away,$hget($hget(ircops,%x).item,1).item) && (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes))) inc %aways
if (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes)) && ($hget($hget($hget(ircops,%x).item,1).item,olvl) = 1) inc %locals
if ( $hget($hget($hget(ircops,%x).item,1).item,olvl) > 1 ) && (*H* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,modes)) inc %globals
inc %x }
sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :Total: $+ %opers $+ $iif(%opers != 1,IRCOPs,IRCOP) connected - $+(,%globals,) Global, $+(,%locals,) Local and $+(,%aways,) Away
sockwrite -n $sockname $+(:,$hget(settings,server)) 386 $hget($sockname,nick) :§~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~~¤§¤~§
sockwrite -n $sockname $+(:,$hget(settings,server)) 387 $hget($sockname,nick) :End of /IRCOPS.
halt
}
elseif ($1 == ISOPER) {
if (!$2) { cmd.fail $1 | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Can't find anyone with that nick... | halt }
if (!$hfind(ircops,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 612 $hget($sockname,nick) : $+ $2 is not an Oper $iif($ini(opers.conf,$2),but username is in OperBlock)
sockwrite -n $sockname $+(:,$hget(settings,server)) 613 $hget($sockname,nick) :End of /ISOPER.
halt }
if (X isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is an IRC Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (N isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Network Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (T isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Technical Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (Z isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Services Root Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (a isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Services Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (A isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Server Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (C isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Co Administrator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (P isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Services Operator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (o isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is an IRC Operator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
if (O isincs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 610 $hget($sockname,nick) : $+ $2 is a Local Operator on $hget(settings,serverDesc) | sockwrite -n $sockname $+(:,$hget(settings,server)) 613 :End of /ISOPER. | halt }
}
elseif ($1 == INVISIBLE) && ($hget(settings,invisible) = 1) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*I* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
halt }
if (!$2) { cmd.fail $1 | halt }
if ($left($2,1) = -) {
if ($hget($right($2,-1),$sockname) != .i) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** You are not yet invisible on channel $right($2,-1)
halt
}
else {
sockwrite -n $sockname : $+ $mid($hget($sockname,host),1,1) $+ $chr(31) $+ $chr(31) $+ $mid($hget($sockname,host),2-) JOIN $right($2,-1)
hinc $right($2,-1) users
sno I *** Invisible Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) is not invisible on channel $right($2,-1) anymore
hadd $right($2,-1) $sockname .
.names $sockname $right($2,-1) .
halt }
}
if ($hget($2,$sockname) = .i) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** You are already invisible on channel $2
halt }
var %x = 1
while $hget($2,%x).item {
if ($sock($hget($2,%x).item) && $hget($2,%x).item != $sockname) {
sockwrite -n $hget($2,%x).item $+(:,$hget($sockname,host)) PART $2 }
inc %x
}
sno I *** Invisible Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) is now invisible on channel $2
sockwrite -n $sockname : $+ $mid($hget($sockname,host),1,1) $+ $chr(31) $+ $chr(31) $+ $mid($hget($sockname,host),2-) PART $2
hadd -m $2 $sockname .i
hdec $2 users
.names $sockname $2 .
}
elseif ($1 == SAJOIN) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*s* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
halt }
if (!$3) { cmd.fail $1 | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
if ($2 = $hget(enforcer,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You cannot /SAJOIN the Enforcer | halt }
if ($hfind($3,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 443 $hget($sockname,nick) $2 :is already on channel $3 | halt }
sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($2,1).item,nick) *** Notice -- You were forced to join $3
sno a *** Sajoin Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) used /SAJOIN to make $2 join $3
sjoin $hget($2,1).item $3 $4 SA
halt
}
elseif ($1 == SAPART) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*s* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
halt }
if (!$3) { cmd.fail $1 | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
if ($2 = $hget(enforcer,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You cannot /SAPART the Enforcer | halt }
if (!$hfind($3,$hget($2,1).item)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 443 $hget($sockname,nick) $2 :is not yet on channel $3 | halt }
sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($2,1).item,nick) *** Notice -- You were forced to part $3
sno a *** Sapart Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) used /SAPART to make $2 part $3
spart $hget($2,1).item $3 SAPART: $hget($sockname,nick) $iif($4,( $+ $4- $+ ))
}
elseif ($1 == SANICK) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*s* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
halt }
if (!$3) { cmd.fail $1 | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
if ($2 = $hget(enforcer,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You cannot /SANICK the Enforcer | halt }
if ($2 = $3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Cannot change nickname; cannot change $2 to $3 | halt }
if ($hfind(nicks,$3)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) *** Server Notice -- Nickname $+(,$hfind(nicks,$3),) is already in use.
halt
}
sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($2,1).item,nick) *** Server Notice -- You nickname has been changed by $hget($sockname,nick)
%change = $3
chgnick $2-3
sno a *** Sanick Usage -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) used /SANICK to change nick $2 to $3
halt
}
elseif ($1 == SETNAME) {
if (!$2) { cmd.fail $1 | halt }
else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Your realname has set to be " $+ $2- $+ "
hadd -m $sockname realname $2- }
halt
}
elseif ($1 == SETHOST) {
if (!$2) { cmd.fail $1 | halt }
else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Your cloakhost has set to be $+(",$remove($2,@,!),")
hadd -m $sockname host $+($gettok($hget($sockname,host),-2,64),@,$remove($2,@,!))
hadd -m $sockname xhost $+($gettok($hget($sockname,host),-2,64),@,$remove($2,@,!)) }
halt
}
elseif ($1 == SETIDENT) {
if (!$2) { cmd.fail $1 | halt }
else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Your ident has set to be $+(",$left($2,12),")
hadd -m $sockname host $+($hget($sockname,nick),!,$left($remove($2,@,!),12),@,$gettok($hget($sockname,host),-1,64))
hadd -m $sockname realhost $+($hget($sockname,nick),!,$left($remove($2,@,!),12),@,$gettok($hget($sockname,realhost),-1,64))
hadd -m $sockname xhost $+($hget($sockname,nick),!,$left($remove($2,@,!),12),@,$gettok($hget($sockname,realhost),-1,64)) }
halt
}
elseif ($1 == CHGHOST) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: /CHGHOST <nick> <newhost> | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* User $2 is not online. | halt }
var %x = 1
while ($mid($3,%x,1)) {
if (!$istok($hostchrs,$mid($3,%x,1),32)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* /CHGHOST :: Invalid host: $3 ( $+ invalid character $+(,$mid($3,%x,1),) $+ )
halt
break
}
inc %x
}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Cloakhost of $2 has set to be $+(",$remove($3,@,!),")
hadd -m $hget($2,1).item host $+($gettok($hget($hget($2,1).item,host),-2,64),@,$remove($3,@,!))
hadd -m $hget($2,1).item xhost $+($gettok($hget($hget($2,1).item,host),-2,64),@,$remove($3,@,!))
break
halt
}
elseif ($1 == CHGIDENT) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: /CHGIDENT <nick> <newident> | halt }
if (!$hfind(nicks,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* User $2 is not online.
halt }
var %x = 1
while ($mid($3,%x,1)) {
if (!$istok($hostchrs,$mid($3,%x,1),32)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* /CHGIDENT :: Invalid ident: $3 ( $+ invalid character $+(,$mid($3,%x,1),) $+ )
halt
break
}
inc %x
}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Ident of $2 has set to be $+(",$left($remove($3,@,!),12),")
hadd -m $hget($2,1).item host $hfind(nicks,$2) $+ ! $+ $left($remove($3,@,!),12) $+ @ $+ $gettok($hget($hget($2,1).item,host),-1,64)
hadd -m $hget($2,1).item realhost $hfind(nicks,$2) $+ ! $+ $left($remove($3,@,!),12) $+ @ $+ $gettok($hget($hget($2,1).item,realhost),-1,64)
hadd -m $hget($2,1).item xhost $hfind(nicks,$2) $+ ! $+ $left($remove($3,@,!),12) $+ @ $+ $gettok($hget($hget($2,1).item,realhost),-1,64)
halt
}
elseif ($1 == CHGNAME) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: /CHGNAME <nick> <newhost> | halt }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* User $2 is not online. | halt }
else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Realname of $2 has set to be $+(",$3-,")
hadd -m $hget($2,1).item realname $3- }
halt
}
elseif ($1 == SQLINE) {
if (!$hget($sockname,ircop)) && (!$hget($sockname,uline)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*q* !iswmcs $hget($sockname,flags)) && (!$hget($sockname,uline)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$3) { cmd.fail $1 | return }
if ($hget(sqline,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :That QLINE already exists. | halt }
hadd sqline $2 $hget($sockname,nick) $ctime $3-
var %y = 1
while ($hget(sqline,%y).item) {
if ($hfind(rnicks,$hget(sqline,%y).item)) {
hdel sqline $hget(sqline,%y).item
inc %y }
inc %y }
hsave sqline data\sqlines.db
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Permanent SQLINE added for $2 on $fulldate by $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) $chr(91) $+ $3- $+ $chr(93)
inc %x
}
}
elseif ($1 == UNSQLINE) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*q* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$2) { cmd.fail $1 | return }
if (!$hfind(sqline,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :That QLINE doesn't exists. | halt }
var %x = 1
while $hget(ircops,%x).item {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- $hget($sockname,nick) removed SQLINE $2 added on $asctime($gettok($hget(sqline,$2),2,32)) by $gettok($hget(sqline,$1),2,32) $chr(91) $+ $gettok($hget(sqline,$2),3-,32) $+ $chr(93)
inc %x }
hdel sqline $2
var %y = 1
while ($hget(sqline,%y).item) {
if ($hfind(rnicks,$hget(sqline,%y).item)) {
hdel sqline $hget(sqline,%y).item
inc %y }
inc %y }
hsave sqline data\sqlines.db
return }
elseif ($1 == JUMP) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*j* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$4) { cmd.fail $1 | return }
if ($4 !isnum) { sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Invalid port " $+ $4 $+ " | halt }
%jump = User has been redirected to another server $+([,$3-4,])
sockwrite -n $hget($2,1).item : $+ $hget(settings,server) NOTICE $2 :*** Notice -- You are being redirected to $3, so goodbye
sockwrite -n $hget($2,1).item : $+ $hget(settings,server) 010 $2 $3-4
return }
elseif ($1 == SQUIT) {
if (!$2) { cmd.fail $1 | return }
if (!$sock(link. [ $+ [ $2 ] ])) { sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Server $2 isn't connected. | halt }
else {
sockclose link. [ $+ [ $2 ] ] | sockwrite -n $sockname : $+ $hget(settings,server) NOTICE $hget($sockname,nick) :Lost connection to $2
}
return }
elseif ($1 == RESTART) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*R* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$2) { cmd.fail $1 | return }
if ($2 !=== $hget(settings,rspass)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Incorrect Password | halt }
else { var %x = 1 | while $hget(ircops,%x).item {
if ($sock($hget($hget(ircops,%x).item,1).item)) {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Server restarting by request of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [This IRCd restarts succesfully, compared to other IRCd's...]
}
inc %x }
var %i 1, %x 1
while %i <= $hget(channels,0).item {
if ($hget($hget(channels,%i).item,%x).item) {
var %x 1
while %x <= $hget($hget(channels,%i).item,0).item {
if ($sock($hget($hget(channels,%i).item,%x).item)) {
sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) JOIN $hget(channels,%i).item
sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) PRIVMSG $hget(channels,%i).item :This server is restarting... }
inc %x } }
inc %i }
sockwrite -n ircd.* $+(:,$hget(settings,server)) QUIT :This IRCd restarts succesfully, compared to other IRCd's...
if ($left($3,1) = -) {
if (*p* iswmcs $3) {
if ($pos($3,p) = 2) && ($4 !isnum) || (!$portfree($4)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* The port you gave ( $+ $4 $+ ) is invalid, port not changed
goto rsend }
if ($pos($3,p) = 3) && ($6 !isnum) || (!$portfree($6)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* The port you gave ( $+ $6 $+ ) is invalid, port not changed
goto rsend }
else { %NoPortSet = "true"
if ($pos($3,p) = 2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Port has been changed to: $4 }
if ($pos($3,p) = 3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Port has been changed to: $6 }
}
}
:rsend
if (*r* iswmcs $3) {
%jump = User has been redirected to another server
var %x = 1
while ($hget(users,%x).item) {
if ($sock($hget(users,%x).item)) {
if ($pos($3,r) = 2) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) NOTICE $hget($hget(users,%x).item,nick) :*** Notice -- $hget($hget(users,%x).item,nick) You are being redirected to $4 $5, so goodbye
if ($pos($3,r) = 3) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) NOTICE $hget($hget(users,%x).item,nick) :*** Notice -- $hget($hget(users,%x).item,nick) You are being redirected to $5 $6, so goodbye
if ($pos($3,r) = 2) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) 010 $hget($hget(users,%x).item,nick) $4-5
if ($pos($3,r) = 3) sockwrite -n $hget(users,%x).item : $+ $hget(settings,server) 010 $hget($hget(users,%x).item,nick) $5-6
}
inc %x
}
}
}
hfree -w *
if (%NoPortSet) {
if ($pos($3,p) = 2) { hadd -m settings port $4 }
if ($pos($3,p) = 3) { hadd -m settings port $6 }
writeini -n ircd.conf me port $hget(settings,port)
}
sockclose ircd.* | sockclose enforcer | .clearall | .timers off | %rs = true
.timer 1 0 .ircd.check
}
return }
elseif ($1 == DIE) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*D* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$2) { cmd.fail $1 | return }
if ($2 !=== $hget(settings,diepass)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Incorrect Password | halt }
else {
var %x = 1
while $hget(ircops,%x).item {
if ($sock($hget($hget(ircops,%x).item,1).item)) sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Server shutdown by request of $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) [This IRCd has died.]
inc %x
}
var %i 1, %x 1
while %i <= $hget(channels,0).item {
if ($hget($hget(channels,%i).item,%x).item) {
var %x 1 | while %x <= $hget($hget(channels,%i).item,0).item {
if ($sock($hget($hget(channels,%i).item,%x).item)) {
sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) JOIN $hget(channels,%i).item
sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget(settings,server)) PRIVMSG $hget(channels,%i).item :This server is gettin' killed!!1
}
inc %x }
}
inc %i
}
sockwrite -n ircd.* $+(:,$hget(settings,server)) QUIT :This IRCd has died.
hfree -w * | sockclose ircd.* | sockclose link.* | sockclose enforcer | %sut = $fulldate | .clearall | .timers off | unsetall
}
return }
elseif ($1 == REHASH) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*r* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) is rehashing server configuration file ...
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Reloading configuration
sockwrite -n $sockname $+(:,$hget(settings,server)) 382 $hget($sockname,nick) :Configuration Rehashing
if ($exists(ircd.conf) != $true) { .timer 1 0 .error IRCD.CONF: File missing | return }
if ($exists(ircd.motd) != $true) { .timer 1 0 .error IRCD.MOTD: File missing | return }
if (!$readini(ircd.conf,admin,nick)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: admin nick missing
if (!%rhn) var %rhn = true }
else { hadd settings admin $readini(ircd.conf,admin,nick) }
if (!$readini(ircd.conf,me,port)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: server port missing
if (!%rhn) var %rhn = true }
if (!$readini(ircd.conf,me,name)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: server name missing
if (!%rhn) var %rhn = true }
if (!$readini(ircd.conf,me,description)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: server description missing
if (!%rhn) var %rhn = true }
if (!$readini(ircd.conf,settings,maxsendq)) || ($readini(ircd.conf,settings,maxsendq) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max send Q missing | if (!%rhn) var %rhn = true }
if ($readini(ircd.conf,settings,maxsendq) < 155) || ($readini(ircd.conf,settings,maxsendq) > 855) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max send Q must be > 155 and <= 855 | if (!%rhn) var %rhn = true }
else { hadd settings maxsendq $readini(ircd.conf,settings,maxsendq) }
if ($readini(ircd.conf,me,password)) { hadd settings password $readini(ircd.conf,me,password) }
if ($readini(ircd.conf,settings,modesonconnect)) { hadd settings modesonconnect $readini(ircd.conf,settings,modesonconnect) }
if ($readini(ircd.conf,settings,modesonjoin)) { hadd settings modesonjoin $readini(ircd.conf,settings,modesonjoin) }
if ($readini(ircd.conf,settings,maxperip)) { hadd settings maxperip $readini(ircd.conf,settings,maxperip) }
if ($readini(ircd.conf,settings,blockalea) == 1) { hadd settings blockalea 1 }
if (!$readini(ircd.conf,settings,blockalea)) { hdel settings blockalea }
if ($readini(ircd.conf,settings,proxyscan) == 1) { hadd settings proxyscan 1 }
if (!$readini(ircd.conf,settings,proxyscan)) { hdel settings proxyscan }
if ($readini(ircd.conf,settings,versioncheck) == 1) { hadd settings versioncheck 1 }
if (!$readini(ircd.conf,settings,versioncheck)) { hdel settings versioncheck }
if (!$readini(ircd.conf,settings,maxnicklen)) || ($readini(ircd.conf,settings,maxnicklen) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max nick length missing
if (!%rhn) ar %rhn = true }
if ($readini(ircd.conf,settings,maxnicklen) < 0) || ($readini(ircd.conf,settings,maxnicklen) > 32) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max nick length must be > 0 and <= 32
if (!%rhn) %rhn = true }
else { hadd settings maxnicklen $readini(ircd.conf,settings,maxnicklen) }
if (!$readini(ircd.conf,settings,maxchanlen)) || ($readini(ircd.conf,settings,maxchanlen) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max channel length missing
if (!%rhn) var %rhn = true }
if ($readini(ircd.conf,settings,maxchanlen) < 2) || ($readini(ircd.conf,settings,maxchanlen) > 180) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max channel length must be > 2 and <= 180
if (!%rhn) var %rhn = true }
else { hadd settings maxchanlen $readini(ircd.conf,settings,maxchanlen) }
if (!$readini(ircd.conf,settings,maxtopiclen)) || ($readini(ircd.conf,settings,maxtopiclen) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max topic missing
if (!%rhn) var %rhn = true }
if ($readini(ircd.conf,settings,maxtopiclen) < 1) || ($readini(ircd.conf,settings,maxtopiclen) > 380) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: max topic must be > 1 and <= 380
if (!%rhn) var %rhn = true }
else { hadd settings maxtopiclen $readini(ircd.conf,settings,maxtopiclen) }
if ($readini(ircd.conf,settings,helpchan) = $null) || ($left($readini(ircd.conf,settings,helpchan),1) !== $chr(35)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: help channel missing or invalid
if (!%rhn) var %rhn = true }
else { hadd settings helpchan $readini(ircd.conf,settings,helpchan) }
if ($readini(ircd.conf,settings,quitprefix) = $null) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Failed to re-load configuration: quit prefix missing or invalid
if (!%rhn) var %rhn = true }
else { hadd settings quitprefix $readini(ircd.conf,settings,quitprefix) }
if (!$readini(ircd.conf,me,password)) {
if ($hget(settings,password)) { hdel settings password }
}
var %v = 1
while ($ini(vhost.conf,%v)) {
var %x = 1
while ($mid($ini(vhost.conf,%v),%x,1)) {
if (!$istok($hostchrs,$mid($readini(vhost.conf,$ini(vhost.conf,%v),vhost),%x,1),32)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* vhost.conf :: Invalid vHost: $readini(vhost.conf,$ini(vhost.conf,%v),vhost) ( $+ invalid character $+(,$mid($readini(vhost.conf,$ini(vhost.conf,%v),vhost),%x,1),) $+ )
if (!%rhn) var %rhn = true
break
}
else {
hadd vhost $ini(vhost.conf,%v) $readini(vhost.conf,$ini(vhost.conf,%v),vhost)
break
}
inc %x
}
inc %v
}
if (%rhn) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Rehashing failed; couldn't reload configuration... | return }
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Rehashed successfully (y)
return
}
elseif ($1 == SMSG) {
if (!$3) { cmd.fail $1 | return }
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (!$2) { cmd.fail $1 | return }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
sockwrite -n $sockname $+(:,$hget(settings,server)) 382 $2 :-> - $+ $2 $+ - $3-
sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) 382 $2 : $+ $hget($sockname,nick) $+ : $3-
return }
elseif ($1 == WALLOPS) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*l* !iswmcs $hget($sockname,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$2) { cmd.fail $1 | return }
wops $hget($sockname,host) $2-
return }
elseif ($1 == KILL) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*k* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$2) { cmd.fail $1 | return }
if (!$hfind(nicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 401 $hget($sockname,nick) $2 :No such nick | halt }
if ($hget($sockname,olvl)) && ($hget($hget($2,1).item,olvl)) {
if ($hget($hget($2,1).item,olvl) >= $hget($sockname,olvl)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You cannot kill $2 [same level or higher]
if ($sock($hget($2,1).item)) sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $2 :*** Warning -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,64) $+ ) tried to kill you off the server ( $+ $iif($3,$right($3-,-1),No reason) $+ )
return }
}
if ($sock($hget($hget(enforcer,nick),1).item)) {
sno k *** Kill Message -- Received kill msg for $2 ( $+ $gettok($hget($hget($2,1).item,realhost),2,64) $+ ) Path $+ $hget($sockname,nick) $+ ( $+ $iif($left($3,1) = :,$right($3-,-1),$3-) $+ )
if ($sock($hget($2,1).item)) {
sockwrite -n $hget($2,1).item : $+ $hget($hget($hget(enforcer,nick),1).item,host) PRIVMSG $2 :ACTION appears from the mist around you
sockwrite -n $hget($2,1).item : $+ $hget($hget($hget(enforcer,nick),1).item,host) PRIVMSG $2 :ACTION Shows you a warrant: $hget($sockname,nick) ( $+ $iif($3,$iif($left($3,1) = :,$right($3-,-1),$3-),No reason) $+ )
sockwrite -n $hget($2,1).item : $+ $hget($hget($hget(enforcer,nick),1).item,host) PRIVMSG $2 :ACTION Politely escorts you out from the Network
sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) 305 $+(:,[,$hget($sockname,nick),]) $iif($left($3,1) = :,$right($3-,-1),$3-)
}
sockwrite -n $hget($2,1).item $+(:,$hget(settings,server)) NOTICE $2 :*** You are being disconnected from this server: $+([,$hget($sockname,nick),]) ( $+ $iif($3,$iif($left($3,1) = :,$right($3-,-1),$3-),No reason) $+ )
squit $hget($2,1).item $+([,$hget(settings,server),]) Local kill by $hget($sockname,nick) ( $+ $iif($3,$iif($left($3,1) = :,$right($3-,-1),$3-),No reason) $+ )
return }
}
elseif ($1 == KLINE) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*K* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if ($hfind(klines,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- K:Line $3 already exists. | halt }
if ($left($2,1) = -) {
if (!$hfind(klines,$right($2,-1))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such K:line | halt }
else {
sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed K:line $right($2,-1) (set by $hget(klines,nick_ $+ $gettok($2,1,45)) on $hget(klines,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(klines,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
hdel klines $right($2,-1)
hdel -w klines $+(*_,$right($2,-1))
.timerrk $+ $right($2,-1) off
hsave klines data\klines.db
return }
}
if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
if ($left($2,1) !== +) && ($remove($2,+) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
if (@ !isin $3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname | halt }
var %y = 1
while $hget(elines,%y).item {
if ($hget(elines,%y).item iswm $3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Cannot add K:Line: Host $3 matches an except on this server.
return }
inc %y
}
hadd klines $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
hadd -m klines reason_ $+ $3 $iif($4-,$4-,No reason)
hadd klines date_ $+ $3 $fulldate
hadd klines nick_ $+ $3 $hget($sockname,nick)
hsave klines data\klines.db
if ($2 !== +0) .timerrk $+ $3 1 $calc($remove($2,+)*60) rmk $3 k
sno g *** Global Notice -- Kill line active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
var %z = 1
while $hget(users,%z).item {
if ($3 iswm $gettok($hget($hget(users,%z).item,realhost),2,33)) {
sno g *** Global Notice -- Kill line active for $hget($hget(users,%z).item,nick) $chr(91) $+ $sock($hget(users,%z).item).ip $+ $chr(93)
sockwrite -n $hget(users,%z).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%z).item,nick) :*** You are banned from $hget(settings,serverdesc) $iif($4-,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
squit $hget(users,%z).item User has been banned from using this server
continue
}
inc %z
}
return
}
elseif ($1 == SHUN) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator
halt
}
if (*K* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return
}
if ($hfind(klines,$3)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Shun $3 already exists.
halt }
if ($left($2,1) = -) {
if (!$hfind(shuns,$right($2,-1))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such Shun
halt }
else {
sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed Shun $right($2,-1) (set by $hget(shuns,nick_ $+ $gettok($2,1,45)) on $hget(shuns,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(shuns,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
hdel shuns $right($2,-1)
hdel -w shuns $+(*_,$right($2,-1))
.timerrk $+ $right($2,-1) off
hsave shuns data\shuns.db
return
}
}
if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
if ($left($2,1) !== +) && ($remove($2,+) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
if (@ !isin $3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname | halt }
var %y = 1
while $hget(elines,%y).item {
if ($hget(elines,%y).item iswm $3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Cannot add Shun: Host $3 matches an except on this server.
return }
inc %y
}
hadd shuns $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
hadd -m shuns reason_ $+ $3 $iif($4-,$4-,No reason)
hadd shuns date_ $+ $3 $fulldate
hadd shuns nick_ $+ $3 $hget($sockname,nick)
hsave shuns data\shuns.db
if ($2 !== +0) .timerrk $+ $3 1 $calc($remove($2,+)*60) rmk $3 s
sno g *** Global Notice -- Shun active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
return }
elseif ($1 == ZLINE) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*z* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if ($hfind(zlines,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Z:Line $3 already exists. | halt }
if ($left($2,1) = -) {
if (!$hfind(zlines,$right($2,-1))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such Z:line | halt }
else {
sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed Z:line $right($2,-1) (set by $hget(zlines,nick_ $+ $gettok($2,1,45)) on $hget(zlines,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(zlines,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
hdel zlines $right($2,-1)
hdel -w zlines $+(*_,$right($2,-1))
.timerrz $+ $right($2,-1) off | hsave zlines data\zlines.db
return }
}
if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
if ($left($2,1) !== +) && ($remove($2,+) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
if ($remove($3,.) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid IP address | halt }
var %y = 1
while $hget(elines,%y).item {
if ($hget(elines,%y).item iswm $3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Cannot add Z:Line: IP $3 matches an except on this server.
return }
inc %y
}
hadd zlines $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
hadd -m zlines reason_ $+ $3 $iif($4-,$4-,No reason)
hadd zlines date_ $+ $3 $fulldate
hadd zlines nick_ $+ $3 $hget($sockname,nick)
hsave zlines data\zlines.db
if ($2 !== +0) .timerrz $+ $3 1 $calc($remove($2,+)*60) rmk $3 z
sno g *** Global Notice -- Zap line active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
var %z = 1
while $hget(users,%z).item {
if ($3 iswm $sock($hget(users,%z).item).ip) || ($3 = $sock($hget(users,%z).item).ip) {
sno g *** Global Notice -- Zap line active for $hget($hget(users,%z).item,nick) $chr(91) $+ $sock($hget(users,%z).item).ip $+ $chr(93)
sockwrite -n $hget(users,%z).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%z).item,nick) :*** You are banned from $hget(settings,serverdesc) $iif($4-,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
squit $hget(users,%z).item Z:Lined (User has been banned from using this server) | continue }
inc %z }
return }
elseif ($1 == ELINE) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*e* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if ($hfind(elines,$3)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- E:Line $3 already exists. | halt }
if ($left($2,1) = -) {
if (!$hfind(elines,$right($2,-1))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- No such E:line | halt }
else { sno g *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) removed E:line $right($2,-1) (set by $hget(elines,nick_ $+ $gettok($2,1,45)) on $hget(elines,date_ $+ $gettok($2,1,45)) $+ ) $chr(91) $+ $hget(elines,reason_ $+ $gettok($2,1,45)) $+ $chr(93)
hdel elines $right($2,-1)
hdel -w elines $+(*_,$right($2,-1))
.timerre $+ $right($2,-1) off
hsave elines data\elines.db
return }
}
if ($left($2,1) != -) && (!$3) { cmd.fail $1 | return }
if ($left($2,1) !== +) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
if ($remove($2,+) !isnum) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid expire | halt }
if (@ !isin $3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname | halt }
hadd elines $3 ( $+ $hget($sockname,nick) on $fulldate $+ ) $iif($4,( $+ $4- $+ ),(No reason))
hadd -m elines reason_ $+ $3 $iif($4-,$4-,No reason)
hadd elines date_ $+ $3 $fulldate
hadd elines nick_ $+ $3 $hget($sockname,nick)
hsave elines data\elines.db
if ($2 !== +0) .timerre $+ $3 1 $calc($remove($2,+)*60) rmk $3 e
sno g *** Global Notice -- Exception line active for $3 by $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) $iif($4,( $+ $4- $+ ),(No reason)) $iif($2 == +0,$+([,noexpire,]))
return }
elseif ($1 == ADDOPER) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*E* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$7) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ADDOPER <username> <password> <host> <modes> <snomasks> <flags> | return }
if ($ini(opers.conf,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Username $+ $2 $+ already exists. | return }
if ($len($3) <= 4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid password; is too short. | return }
if (@ !isin $4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :*** Notice -- Invalid hostname; format is ident@hostname | return }
.writeini -n opers.conf $2 pass $3 | .writeini -n opers.conf $2 modes $remove($5,+,-)
.writeini -n opers.conf $2 snomasks $remove($6,+,-)
.writeini -n opers.conf $2 flags $remove($7,+,-)
.writeini -n opers.conf $2 host $4
sno n *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) added O:line for $2 $+([,$4,]) with flags: $7 and snomasks: $6
return }
elseif ($1 == DELOPER) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You are not an IRC Operator | halt }
if (*E* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 481 $hget($sockname,nick) :Permission denied - You do not have the correct IRC Operator privileges
return }
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /DELOPER <username> | return }
if (!$ini(opers.conf,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* ERROR -- Username $+ $2 $+ not found. | return }
sno n *** Global Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,host),2,33) $+ ) removed O:line for $2 $+([,$readini(opers.conf,$2,host),]) (Flags: $readini(opers.conf,$2,flags) $+ )
.remini opers.conf $2
return }
elseif ($1 == INFO) {
if (!$2) { cmd.fail $1 | return }
if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
if (!$hfind(rchans,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Channel $+ $2 $+ isn't registered. | return }
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- Channel information $hfind(rchans,$2) -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Founder: $hget(rchans,$+(founder_,$2))
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Description: $hget(rchans,$+(desc_,$2))
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Registered: $hget(rchans,$+(rdate_,$2))
if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :E-mail: $hget(rchans,$+(email_,$2))
if (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Password: $hget(rchans,$+(pass_,$2)) }
if (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :IP address: $hget(rchans,$+(ip_,$2)) }
if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Topick locked: $iif($hget(rchans,$+(topiclock_,$2)),Yes,No)
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last topic: $iif($hget(rchans,$+(lasttopic_,$2)),$hget(rchans,$+(lasttopic_,$2)) (set by $hget(topics,$+(topicsetter_,$2)) $+ ),none)
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last used: $iif($hget(rchans,$+(lastused_,$2)),$hget(rchans,$+(lastused_,$2)),$fulldate)
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of Channel information -=-=-=-=-=-
halt }
}
if (!$hfind(rnicks,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Nickname $+ $2 $+ isn't registered. | return }
if (*I* iswmcs $hget($hget($2,1).item,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $2 :*** Server Notice -- $hget($sockname,nick) ( $+ $gettok($hget($sockname,realhost),2,33) $+ ) did an /INFO on you. }
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- Nickname information $2 -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last realname: $hget(rnicks,$+(rname_,$2))
if ($hget(onirc,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is currently online (as $hget($hget(onirc,$2),nick) $+ )
if (*P* iswmcs $hget($hget(onirc,$2),modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is a Services Operator $iif($hget($hget(onirc,$2),ircop), - IRC Operator) | goto ie }
if (*a* iswmcs $hget($hget(onirc,$2),modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is a Services Administrator $iif($hget($hget(onirc,$2),ircop), - IRC Operator) | goto ie }
if (*Z* iswmcs $hget($hget(onirc,$2),modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User is a Services Root Administrator $iif($hget($hget(onirc,$2),ircop), - IRC Operator) | goto ie }
}
:ie
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Registered: $hget(rnicks,$+(rdate_,$2))
if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :E-mail: $hget(rnicks,$+(email_,$2))
if (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Password: $hget(rnicks,$+(pass_,$2)) }
if (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :IP address: $hget(rnicks,$+(ip_,$2)) }
if (*P* iswmcs $hget($sockname,modes)) || (*a* iswmcs $hget($sockname,modes)) || (*Z* iswmcs $hget($sockname,modes)) sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Secured on IP: $iif($hget(rnicks,$+(secure_,$2)),Yes,No)
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Last seen: $hget(rnicks,$+(lastseen_,$2))
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Recent quit message: $hget(rnicks,$+(quitmsg_,$2))
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of Nickname information -=-=-=-=-=-
return }
elseif ($1 == AKICK) {
if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /AKICK $iif($hfind(channels,$2),$hfind(channels,$2),#Channel) ADD|DEL|LIST <nick!ident@hostmask> [reason]
return }
if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please login/register first. | return }
if (!$hfind(rchans,$2)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 isn't registered... | return }
if ($3 = LIST) {
if (!$readini(data\chans.db,$+(access_,$replace($2,[,*,],&)),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin) && ($hget($sockname,ircop) != true)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you don't have any access
return }
if ($readini(data\chans.db,$+(access_,$replace($2,[,*,],&)),$hget($sockname,loggedin)) < 5) && ($hget($sockname,ircop) != true) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; not enough access
return }
if ($ini(data\akicks.db,$replace($2,[,*,],&))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Auto-kick list for $2 }
var %ac = 1, %x = 1, %chan = $2
while $ini(data\akicks.db,$replace($2,[,*,],&),%ac) {
if ($gettok($ini(data\akicks.db,$replace($2,[,*,],&),%ac),1,95) == NICK) { inc %ac }
if ($gettok($ini(data\akicks.db,$replace($2,[,*,],&),%ac),1,95) == DATE) { inc %ac }
if ($ini(data\akicks.db,$replace($2,[,*,],&),%ac)) {
var %h = $ini(data\akicks.db,$replace($2,[,*,],&),%ac), %n = $readini(data\akicks.db,$replace($2,[,*,],&),nick_ $+ %h), %d = $readini(data\akicks.db,$replace($2,[,*,],&),date_ $+ %h), %r = $readini(data\akicks.db,$replace($2,[,*,],&),%h)
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) %x $+ ) %h - (By %n on $asctime(%d) $chr(91) $+ %r $+ $chr(93)
inc %ac | inc %x }
}
if (!%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Auto-kick list is empty }
if (%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :End of /AKICK list. }
return }
if ($3 = ADD) {
if (!$5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /AKICK $hfind(channels,$2) ADD nick!host [Reason]
return }
if ($ini(data\akicks.db,$replace($2,[,*,],&),$makemask($4))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) already exists on $2 akick list | return }
writeini -n data\akicks.db $replace($2,[,*,],&) $makemask($4) $5- | writeini -n data\akicks.db $replace($2,[,*,],&) $+(nick_,$makemask($4)) $hget($sockname,nick) | writeini -n data\akicks.db $replace($2,[,*,],&) $+(date_,$makemask($4)) $ctime
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) added to $2 akick list
return }
if ($3 = DEL) {
if (!$4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /AKICK $hfind(channels,$2) DEL nick!host
return
}
if (!$ini(data\akicks.db,$replace($2,[,*,],&),$makemask($4))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) not found on $2 akick list | return }
remini data\akicks.db $replace($2,[,*,],&) $makemask($4) | remini data\akicks.db $replace($2,[,*,],&) $+(nick_,$makemask($4)) | remini data\akicks.db $2 $+(date_,$makemask($4))
if ($ini(data\akicks.db,$replace($2,[,*,],&)) = 1) { remini data\akicks.db $replace($2,[,*,],&) }
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Mask $makemask($4) removed from $2 akick list
return }
return }
elseif ($1 == ACCESS) {
if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ACCESS $iif($hfind(channels,$2),$hfind(channels,$2),#Channel) ADD|DEL|LIST [username] [level]
return }
if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please login/register first. | return
}
if (!$hfind(rchans,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 isn't registered... | return }
if ($3 = LIST) {
if (!$readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin) && ($hget($sockname,ircop) != true)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you don't have any access
return }
if ($readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin)) < 5) && ($hget($sockname,ircop) != true) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; not enough access. | return }
var %x = 1, %ac = 1
if ($ini(data\access.db,$replace($2,[,*,],&),%ac)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access list for $2 }
while $ini(data\access.db,$replace($2,[,*,],&),%ac) {
if ($ini(data\access.db,$replace($2,[,*,],&),%ac)) {
var %n = $ini(data\access.db,$replace($2,[,*,],&),%ac)
var %l = $readini(data\access.db,$replace($2,[,*,],&),%n)
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) %x $+ ) %n - %l
inc %ac | inc %x }
}
if (!%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access list is empty }
if (%n) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :End of /ACCESS list. }
return
}
if ($3 = ADD) {
if (!$5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ACCESS $hfind(channels,$2) ADD [username] [level]
return }
if ($5 !isnum) || ($5 > 9999) || ($5 < 0) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Invalid level: must be > 0 < 9999 | return }
if (!$readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you are not logged in or has not the correct privilege.
return }
if ($readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin)) <= $5) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; not enough access
return }
if (!$hfind(rnicks,$4)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User $+ $4 $+ isn't registered | return }
if ($ini(data\access.db,$2,$replace($4,[,*,],&))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User $hfind(rnicks,$4) already exists on $2 access list | return }
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User $+ $hfind(rnicks,$4) $+ added to $2 access list with level $5
writeini -n data\access.db $2 $hfind(rnicks,$replace($4,[,*,],&)) $5
}
if ($3 = DEL) {
if (!$4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax -- /ACCESS $hfind(channels,$2) DEL [username]
return }
if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Please login/register first. | return }
if (!$readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin))) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; you are not logged in or has not the correct privilege. | return }
if ($readini(data\access.db,$replace($2,[,*,],&),$hget($sockname,loggedin)) >= $readini(data\access.db,$replace($2,[,*,],&),$4)) && ($hget(rchans,$+(founder_,$2)) != $hget($sockname,loggedin)) && (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Access denied; $4 got higher (or equal) level. | return }
if (!$ini(data\access.db,$replace($2,[,*,],&),$replace($4,[,*,],&))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :User $4 not found on $2 access list | return }
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) : $+ $hfind(rnicks,$4) $+ removed from $2 access list | remini data\access.db $replace($2,[,*,],&) $4 | return }
}
elseif ($1 == SERVSET) {
if (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Access denied; you are not an IRC Operator | return }
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters} - Or try $+(/,$upper($1)) help | return }
if ($2 == HELP) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :LOGONNEWS - Set logon message which will be shown on connect
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :DEFCON - Set DEFCON level
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
return
}
if (*S* !iswmcs $hget($sockname,flags)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Permission denied; you do not have the correct IRC Operator privileges | return }
if ($2 == LOGONNEWS) {
if (!$3) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Logonnews unset.
hdel data logonnews
hsave data data\reads.dll
return }
if ($3) && (!$7) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Logonnews too short; min. 5 characters.
hdel data logonnews
hsave data data\reads.dll
return }
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Logonnews $iif($hget(data,logonnews),changed;,set;)) $4-
hadd data logonnews $hget($sockname,nick) $ctime $3-
hsave data data\reads.dll
return }
return }
if ($2 == DEFCON) {
if ($3 != ON) && ($3 != OFF) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Please use $+(/,$upper($1)) $upper($2) {ON|OFF}
return }
if ($3 = ON) {
if ($hget(defcon)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Server is already in DEFCON mode.
return }
}
if ($3 = OFF) {
if ($hget(defcon)) {
var %x = 1
while ($hget(users,%x).item) {
if ($sock($hget(users,%x).item)) { sockwrite -n $hget(users,%x).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%x).item,nick) :* Server is now back to normal. All services are working. }
inc %x
}
hfree defcon
return }
else { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Server is not in DEFCON mode.
return }
}
var %x = 1
while ($hget(users,%x).item) {
if ($sock($hget(users,%x).item)) { sockwrite -n $hget(users,%x).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%x).item,nick) :* Server is now in DEFCON mode, some services have been disabled. }
inc %x
}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Incoming connections
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Registration commands
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Channel joins
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Nickchanges
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- Only registered users can privmsg and notice
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :- /OPER command
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* To disable DEFCON, use $+(/,$upper($1)) $upper($2) OFF
hmake defcon
return }
}
elseif ($1 == MEMO) {
if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You are not registered/logged in. | return }
if (!$2) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :MEMO Not enough parameters
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) SEND|READ {nickname} [text] - Or try $+(/,$upper($1)) help | return }
if ($2 == HELP) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) SEND|READ {nickname} [text]
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SEND <nick> <text> - Sends message to registered user
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :READ <nr> - Reads memo nr <nr>
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :LIST - Lists all your memo's
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Each registered user can have $+(,$hget(settings,maxmemo),) memo's.
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
return
}
if (!$hget($sockname,loggedin)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You are not registered/logged in. | return }
if ($2 == LIST) {
var %x = 1, %memos
while ($hget(rnicks,%x).item) {
if ($hget(rnicks,%x).item = $+(memos_,$hget($sockname,loggedin))) {
var %z = 1
while ($gettok($hget(rnicks,%x).data,%z,127)) {
inc %memos
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* $+(#,%memos) By $gettok($gettok($hget(rnicks,%x).data,%z,127),1,32) on $asctime($gettok($gettok($hget(rnicks,%x).data,%z,127),2,32)) - $gettok($gettok($hget(rnicks,%x).data,%z,127),3-,32)
inc %z
}
}
inc %x
}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Total $+(,%memos,) memo's shown
return
}
if ($2 == SEND) {
if (!$hfind(rnicks,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $+(,$3,) not registered | return }
if ($calc($count($hget(rnicks,$+(memos_,$3)),$chr(127)) +1) = $hget(settings,maxmemo)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $+(,$3,) has reached is maximum number of memo's ( $+ $hget(settings,maxmemo) $+ )
return }
if (!$4) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) SEND {nickname} [text]
return
}
hadd rnicks $+(memos_,$3) $+($iif($hget(rnicks,$+(memos_,$3)),$hget(rnicks,$+(memos_,$3))),$iif($hget(rnicks,$+(memos_,$3)),$chr(127))) $hget($sockname,nick) $ctime $4-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Memo sent to $+(,$hfind(rnicks,$3),)
return }
}
elseif ($1 == NICKSET) {
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters} - Or try $+(/,$upper($1)) help | return }
if ($2 == HELP) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :SECURE - Secures your nickname to registrated IP
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :PASSWORD - Change your password
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
if (*S* iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :You have the power to set options for all users.
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) username option {parameters}
}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
return
}
if (!$hget($sockname,loggedin)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You are not registered/logged in.
return }
if ($hfind(rnicks,$2)) && (*S* iswmcs $hget($sockname,flags)) {
if ($3 == SECURE) {
if ($4 != ON) && ($4 != OFF) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $hfind(rnicks,$2) $upper($3) {ON|OFF}
return }
if ($4 = ON) {
if ($hget(rnicks,$+(secure_,$hfind(rnicks,$2)))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You already secured this username on $hget(rnicks,$+(ip_,$hget($hfind(rnicks,$2))))
return }
}
if ($4 = OFF) {
if ($hget(rnicks,$+(secure_,$hget($sockname,loggedin)))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $hfind(rnicks,$2) not secured anymore.
hdel rnicks $+(secure_,$hfind(rnicks,$2))
hsave rnicks data\nicks.db
return }
}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Secured username $hfind(rnicks,$2) with registered IP address. ( $+ $hget(rnicks,$+(ip_,$hfind(rnicks,$2))) $+ )
hadd -m rnicks $+(secure_,$hfind(rnicks,$2)) true
hsave rnicks data\nicks.db
return }
if ($3 == PASSWORD) {
if (!$4) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $hfind(rnicks,$2) $upper($3) [password] | return }
if ($len($4) <= 5) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is too short
return }
if ($4 == $hfind(rnicks,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is the same as given username
return }
if ($4 === $hget(rnicks,$+(pass_,$hfind(rnicks,$2)))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Given password is exactly the same as the old password | return }
hadd rnicks $+(pass_,$hfind(rnicks,$2)) $4 | hsave rnicks data\nicks.db
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password changed to: $hget(rnicks,$+(pass_,$hfind(rnicks,$2)))
return }
}
if ($2 == SECURE) {
if ($3 != ON) && ($3 != OFF) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $upper($2) {ON|OFF}
return }
if ($3 = ON) {
if ($hget(rnicks,$+(secure_,$hget($sockname,loggedin)))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* You already secured this username on $hget(rnicks,$+(ip_,$hget($sockname,loggedin)))
return }
}
if ($3 = OFF) {
if ($hget(rnicks,$+(secure_,$hget($sockname,loggedin)))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Username $hget($sockname,loggedin) not secured anymore.
hdel rnicks $+(secure_,$hget($sockname,loggedin)) | hsave rnicks data\nicks.db
return }
}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Secured username with registered IP address. ( $+ $hget(rnicks,$+(ip_,$hget($sockname,loggedin))) $+ )
hadd -m rnicks $+(secure_,$hget($sockname,loggedin)) true | hsave rnicks data\nicks.db
return }
if ($2 == PASSWORD) {
if (!$3) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1)) $upper($2) [password] | return }
if ($len($3) <= 5) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is too short | return }
if ($3 == $hget($sockname,nick)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is the same as your nick | return }
if ($3 == $2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password is the same as your username | return }
if ($3 === $hget(rnicks,$+(pass_,$hget($sockname,loggedin)))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Given password is exactly the same as your old password | return }
hadd rnicks $+(pass_,$hget($sockname,loggedin)) $3 | hsave rnicks data\nicks.db
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Password changed to: $hget(rnicks,$+(pass_,$hget($sockname,loggedin)))
return }
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Unknown option $+(,$upper($2),) - Please try $+(/,$upper($1)) help
return
}
}
elseif ($1 == CHANSET) {
if (!$2) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters} - Or try $+(/,$upper($1)) help | return }
if ($2 == HELP) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- $upper($1) Help -=-=-=-=-=-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Syntax: $+(/,$upper($1),) option {parameters}
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :TOPICLOCK - Locks topic from being changed
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :-=-=-=-=-=- End of $upper($1) Help -=-=-=-=-=-
return
}
if ($2 == TOPICLOCK) {
if ($4 != ON) && ($4 != OFF) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Please use $+(/,$upper($1)) TOPICLOCK #Channel {ON|OFF}
return }
if (!$hfind(rchans,$3)) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Channel $3 not registered. | return }
if ($hget($sockname,loggedin) != $hget(rchans,$+(founder_,$hfind(rchans,$3)))) { sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Permission denied; no founder privileges | return }
if ($4 = ON) {
hadd rchans $+(topiclock_,$hfind(rchans,$3)) true | hsave rchans data\chans.db
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Topiclock for channel $hfind(rchans,$3) enabled.
return }
if ($4 = OFF) {
hdel rchans $+(topiclock_,$hfind(rchans,$3))
hsave rchans data\chans.db
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Topiclock for channel $hfind(rchans,$3) disabled.
return }
}
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Unknown option $+(,$upper($2),) - Please try $+(/,$upper($1)) help
return
}
return }
elseif ($1 == DROP) {
if ($left($2,1) = $chr(35)) || ($left($2,1) = $chr(43)) {
if (!$hfind(rchans,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 not registered
return }
if ($hget($sockname,loggedin) != $hget(rchans,$+(founder_,$2))) && (*a* !iswmcs $hget($sockname,modes)) && (*Z* !iswmcs $hget($sockname,modes)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 $hget($sockname,nick) :Permission denied - You are not the channel owner
return }
hdel -w rchans $+(*_,$2)
hdel rchans $2
hsave rchans data\chans.db
%chan = $2
remini data\access.db $replace($2,[,*,],&)
remini data\akicks.db $replace($2,[,*,],&)
%ov = true
smode $sockname $2 -r
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Channel $2 dropped.
return
}
else {
if (!$3) { cmd.fail $1 | return }
if (!$hfind(rnicks,$2)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Username not registered
return }
if ($3 !=== $hget(rnicks,$+(pass_,$2))) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :Incorrect password
return }
hdel -w rnicks $+(*_,$2)
hdel rnicks $hget($sockname,loggedin)
%loggedin. [ $+ [ $sockname ] ] = $hget($sockname,nick)
chgumode $sockname -r 0 $hget(settings,server)
hsave rnicks data\nicks.db
delchans $sockname
return }
}
else {
sockwrite -n $sockname $+(:,$hget(settings,server)) 501 : $+ $upper($1) Unknown command foolish user
return
halt }
return }
on 1:SOCKOPEN:link.*:{
/echo -s Link Socket opened. $sockname
sockwrite -n $sockname PASS $readini(links.conf,$gettok($sockname,2-,46),pass)
sockwrite -n $sockname SERVER $hget(settings,server)
sockwrite -n %sockname : $+ $hget(settings,server) NOTICE $hget(%sockname,nick) :Connecting to $gettok($sockname,2-,46) $+ ...
echo -s < SERVER $hget(settings,server)
echo -s < PASS $readini(links.conf,$gettok($sockname,2-,46),pass)
}
n 1:SOCKREAD:services:{
sockread %temp
tokenize 32 %temp
}
on 1:SOCKREAD:link.*:{
sockread %temp
tokenize 32 %temp
echo -s > LINK: $1-
;sockwrite -n link.* > LINKINFO $1-
}
#DNS off
on 1:DNS:{
unset %dnsqueu %nickdns
.disable #DNS
if ($sock(%sockname)) || ($sock(%sock. [ $+ [ $dns(0).ip ] ])) {
if (%ev) { unset %ev
if (!%chanreg. [ $+ [ %sockname ] ]) {
if ($raddress) {
unset %t.modes %modes %params
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :* Registration complete -- E-mail domain seems to be okay
hadd -m rnicks $+(pass_,%username) %pass
hadd -m rnicks $+(ip_,%username) $sock(%sockname).ip
hadd -m rnicks $+(email_,%username) %email
hadd -m rnicks $+(rdate_,%username) $fulldate
hadd -m rnicks $+(rname_,$2) $hget($sockname,realname)
hadd -m rnicks $+(lastseen_,$2) $fulldate
hadd -m rnicks %username
hsave rnicks data\nicks.db
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Username $+(,%username,) registered under your IP: $sock(%sockname).ip
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your password is $+(,%pass,) - remember this for later use.
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your e-mail address is $+(,%email,,.)
chgumode %sockname +r 0 $hget(settings,server)
hadd %sockname loggedin %username
unset %sockname %email %username %pass
return }
}
if (%chanreg. [ $+ [ %sockname ] ]) {
unset %chanreg. [ $+ [ %sockname ] ] = $null
if ($raddress) {
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :* Registration complete -- E-mail domain seems to be okay | unset %ev
hadd -m rchans founder_ $+ %channel $hget(%sockname,loggedin)
hadd -m rchans pass_ $+ %channel %pass
hadd -m rchans ip_ $+ %channel $sock(%sockname).ip
hadd -m rchans email_ $+ %channel %email
hadd -m rchans desc_ $+ %channel %desc
hadd -m rchans rdate_ $+ %channel $fulldate
hadd -m rchans %channel
hsave -a rchans data\chans.db
if ($hget(topics,$+(topic_,%channel))) { hadd -m rchans $+(lasttopic_,%channel) $hget(topics,$+(topic_,%channel)) }
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Channel $+(,%channel,) registered under your IP: $sock(%sockname).ip
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your channel password is $+(,%pass,) - remember this for later use.
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :Your e-mail address is $+(,%email,,.)
%ov = true
smode %sockname %channel +r
%ov = true
smode %sockname %channel +oq $hget(%sockname,nick) $hget(%sockname,nick)
unset %email %username %pass %desc %chanreg. [ $+ [ %sockname ] ] %sockname %channel %x %ov
return }
}
if (!$raddress) {
sockwrite -n %sockname $+(:,$hget(settings,server)) NOTICE $hget(%sockname,nick) :* Registration failed -- E-mail domain is invalid or suspended
unset %ev %sockname
return }
}
}
if (!$sock(%sock. [ $+ [ $dns(0).ip ] ])) {
squit %sock. [ $+ [ $dns(0).ip ] ] Your client is not connected
unset %sock. [ $+ [ $dns(0).ip ] ]
return }
var %y = 1
while $hget(elines,%y).item {
if ($hget(elines,%y).item iswm $+($hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$raddress)) {
goto nokl2
return }
inc %y
}
var %y = 1
while $hget(klines,%y).item {
if ($hget(klines,%y).item iswm $+($hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$raddress)) {
sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] $+(:,$hget(settings,server)) 305 : $+ $chr(91) $+ $hget(klines,nick_ $+ $hget(klines,%y).item) $+ $chr(93) $hget(klines,reason_ $+ $hget(klines,%y).item)
sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] $+(:,$hget(settings,server)) NOTICE $hget(%sock. [ $+ [ $dns(0).ip ] ],nick) :*** You are banned from $hget(settings,serverdesc) ( $+ $hget(klines,reason_ $+ $hget(klines,%y).item) $+ )
sockclose %sock. [ $+ [ $dns(0).ip ] ]
inc %y
hdel nicks $hget(%sock. [ $+ [ $dns(0).ip ] ],nick)
hfree %sock. [ $+ [ $dns(0).ip ] ]
unset %sock. [ $+ [ $dns(0).ip ] ]
return
}
inc %y
}
:nokl2
if (!$raddress) {
hadd -m cloak $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $+($lower($crc($gettok($sock(%sock. [ $+ [ $dns(0).ip ] ]).ip,2,46),0)),.,$lower($crc($gettok($sock(%sock. [ $+ [ $dns(0).ip ] ]).ip,4,46),0)),.IP)
hadd -m $sockname xhost $hget(cloak,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip)
sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] NOTICE AUTH :*** Couldn't resolve your hostname; using IP address instead ( $+ $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $+ )
goto dnse
}
else {
hadd -m data $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $raddress
hsave data data\reads.dll
hadd -m cloak $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip $+($lower($crc($raddress,0)),.,$iif($gettok($raddress,2-,46),$gettok($raddress,$iif($count($raddress,.) > 5,4-,2-),46),$raddress))
hadd -m $sockname xhost $hget(cloak,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip)
sockwrite -n %sock. [ $+ [ $dns(0).ip ] ] NOTICE AUTH :*** Found your hostname ( $+ $raddress $+ )
}
:dnse
hadd -m %sock. [ $+ [ $dns(0).ip ] ] host $+($hget(%sock. [ $+ [ $dns(0).ip ] ],nick),!,$hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$hget(cloak,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip))
hadd -m %sock. [ $+ [ $dns(0).ip ] ] realhost $+($iif($hget(%sock. [ $+ [ $dns(0).ip ] ],nick),$hget(%sock. [ $+ [ $dns(0).ip ] ],nick),*),!,$hget(%sock. [ $+ [ $dns(0).ip ] ],ident),@,$iif($raddress,$raddress,$sock(%sock. [ $+ [ $dns(0).ip ] ]).ip))
if ($hget($hget(%sock. [ $+ [ $dns(0).ip ] ],nick),1).item) { hfree $hget(%sock. [ $+ [ $dns(0).ip ] ],nick) }
hadd $sock(%sock. [ $+ [ $dns(0).ip ] ]).ip %sock. [ $+ [ $dns(0).ip ] ]
if ($hget(%sock. [ $+ [ $dns(0).ip ] ],nick)) { hadd -m $hget(%sock. [ $+ [ $dns(0).ip ] ],nick) %sock. [ $+ [ $dns(0).ip ] ] }
a.con %sock. [ $+ [ $dns(0).ip ] ]
halt
}
#DNS end
alias m.ps {
if (!$hfind(proxies,$1)) {
hadd proxies $+(*@,$1) ( $+ $hget(settings,server) on $fulldate $+ ) (Open proxy found on your host ( $+ $2 $+ ). $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)) $+ )
hadd -m proxies $+(reason_,$+(*@,$1)) Open proxy found on your $iif($2,host $+($chr(40),$2,$chr(41),.),host.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email))
hadd proxies $+(date_,$+(*@,$1)) $fulldate
hadd proxies $+(nick_,$+(*@,$1)) $hget(settings,server)
hsave proxies data\pmon.db
}
var %z = 1
while ($hget(users,%z).item) {
if ($sock($hget(users,%z).item).ip = $1) {
sno g *** Global Notice -- Kill line active for $hget($hget(users,%z).item,nick) $chr(91) $+ $sock($hget(users,%z).item).ip $+ $chr(93)
sockwrite -n $hget(users,%z).item $+(:,$hget(settings,server)) NOTICE $hget($hget(users,%z).item,nick) :*** You are banned from $hget(settings,serverdesc) $+($chr(40),Open proxy found on your $iif($2,host $+($chr(40),$2,$chr(41),.),host.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)),$chr(41))
squit $hget(users,%z).item Open proxy found on your $iif($2,host $+($chr(40),$2,$chr(41),.),host.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)) | continue }
inc %z }
return
}
on 1:sockopen:q.*:{
if (!$gettok($sockname,2-,46)) { sockclose $sockname | return }
if ($sock($sockname)) {
sockwrite -n $sockname GET $+(/cgi-bin/lookup.cgi?query=,$gettok($sockname,2-,46)) HTTP/1.1
sockwrite -n $sockname Host: www.njabl.org
sockwrite -n $sockname User-Agent: IPTracer/1.0 (Windows; U; Windows NT 5.1; en-US; rv:0.0.0.0) Newton/16430104 IPTracer/1.0
sockwrite -n $sockname Connection: keep-alive
sockwrite $sockname $CRLF
}
}
on 1:sockread:q.*:{ var %q = 1
sockread %q
if (OPEN PROXY isin %q) || (A SPAM isin %q) || (LISTED AS isin %q) || (LISTED IN isin %q) && (DYNA !isin %q) {
m.ps $gettok($sockname,2-,46)
.timerem.ps1 $+ $gettok($sockname,2-,46) 1 2 m.ps $gettok($sockname,2-,46)
.timerem.ps2 $+ $gettok($sockname,2-,46) 1 10 m.ps $gettok($sockname,2-,46)
sockclose $sockname
return
}
return }
on *:SOCKREAD:pc.*:{
var %pc = 1
sockread %pc
if ($gettok(%pc,2,32) = 400) || ($gettok(%pc,2,32) = 505) {
sockwrite -nt $sockname 1 5 1 0 1 liberty.dal.net:6667
}
if ($gettok(%pc,2,32) = 462) || ($gettok(%pc,2,32) = 404) || ($gettok(%pc,2,32) = 405) || ($gettok(%pc,2,32) = 503) || ($gettok(%pc,1,32) = ERROR) { p.ccc | sockclose $sockname | return }
elseif ($gettok(%pc,2,32) = 200) || ($left(%pc,1) = $chr(58)) {
if (!$hget(psock,$sock($sockname).ip)) {
m.ps $sock($sockname).ip $sock($sockname).port
sockclose $sockname
unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
halt
}
if ($sock($hget(psock,$sock($sockname).ip))) {
sockwrite -n $hget(psock,$sock($sockname).ip) $+(:,$hget(settings,server)) NOTICE $hget($hget(psock,$sock($sockname).ip),nick) :*** You are banned from $hget(settings,serverdesc) $+($chr(40),Open proxy found on your host $+($chr(40),$sock($sockname).port,$chr(41),.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email)),$chr(41)) }
squit $hget(psock,$sock($sockname).ip) Open proxy found on your host $+($chr(40),$sock($sockname).port,$chr(41),.) $iif($readini(ircd.conf,admin,email),For more information mail to $readini(ircd.conf,admin,email))
m.ps $sock($sockname).ip $sock($sockname).port
sockclose $sockname
unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
halt
}
halt
}
alias checkproxy {
if (!$2) { unsetall | halt }
if ($3 = NN) { set %nn. [ $+ [ $2 ] ] true }
if ($hget(psock,$1)) hdel psock $1
;unset %c.p.c. [ $+ [ $1 ] ] %o.p.c. [ $+ [ $1 ] ]
hadd -m psock $1 $2
.timerpcc $+ $1 1 60 sockclose $+(pc.,$1,.*)
if ($hfind(settings,check80)) { sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 80 }
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 808
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 1080
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 1520
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 1680
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 3128
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 3380
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 3513
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 4282
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 4480
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 4655
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 5252
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 5517
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 6588
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7095
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7212
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7336
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7621
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 7692
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8000
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8008
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8080
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8092
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8325
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 8744
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 15236
sockopen $+(pc.,$1,.,$+(proxy,$r(1,999999))) $1 29122
set -u60 %o.p.c. [ $+ [ $1 ] ] $iif($hfind(settings,check80),27,26)
return
}
alias -l p.ccc {
inc %c.p.c. [ $+ [ $sock($sockname).ip ] ]
if (%c.p.c. [ $+ [ $sock($sockname).ip ] ] = %o.p.c. [ $+ [ $sock($sockname).ip ] ]) {
unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
if (!%nn. [ $+ [ $hget(psock,$sock($sockname).ip) ] ]) && ($hget(psock,$sock($sockname).ip)) {
if ($sock($hget(psock,$sock($sockname).ip))) sockwrite -n $hget(psock,$sock($sockname).ip) NOTICE AUTH :*** Open proxy test successfully passed
hdel psock $sock($sockname).ip
unset %c.p.c. [ $+ [ $sock($sockname).ip ] ] %o.p.c. [ $+ [ $sock($sockname).ip ] ] %pp
halt }
unset %c.p.c. [ $+ [ $sock($sockname).ip ] ]
}
halt }
on *:sockopen:pc.*:{
if ($sockerr) {
p.ccc
sockclose $sockname
halt }
sockwrite -nt $sockname CONNECT irc.dal.net:6667 HTTP/1.0 $+ $CRLF $+ $CRLF
sockwrite -nt $sockname $CRLF
halt
}
on *:SOCKCLOSE:pc.*:{
inc %c.p.c. [ $+ [ $sock($sockname).ip ] ]
}
alias -l chgnick {
if ($sock($hget($1,1).item)) {
var %change = $iif(:* iswm $2,$left($right($2,-1),$hget(settings,maxnicklen)),$left($2,$hget(settings,maxnicklen)))
if ($hfind(sqline,%change)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 432 $iif($hget($sockname,host),$hget($sockname,nick),*) %change :Erroneous Nickname ( $+ $gettok($hget(sqline,%change),3-,32) $+ )
sno Q *** Sqline Rejection -- Forbidden nick %change from client $sock($sockname).ip $iif($hget($sockname,nick),[Current nick: $+($hget($sockname,nick),]))
return
}
var %a 1
while %a <= $hget(channels,0).item {
var %x = 1
while $hget($+(bans_,$hget(channels,%a).item),%x).item {
if ($hget($+(bans_,$gettok($hget(channels,%a).item,1,32)),%x).item iswm $hget($sockname,host)) || ($gettok($hget($+(bans_,$hget(channels,%a).item),%x).item,1,33) = %change) || ($hget($+(bans_,$hget(channels,%a).item),%x).item iswm $hget($sockname,realhost)) || ($hget($+(bans_,$hget(channels,%a).item),%x).item iswm $+(*!*@,$sock($sockname).ip)) || ($hget($+(bans_,$hget(channels,%a).item),%x).item iswm $hget(xhost,$sockname)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 437 $hget($sockname,nick) $+(:,$hget(channels,%a).item) Cannot change nickname while banned on channel
halt
}
inc %x
}
if ($hget(nickfprot,$hget(channels,%a).item)) {
if (%nickchgs. [ $+ [ $hget(channels,%a).item ] ] = $gettok($hget(nickfprot,$hget(channels,%a).item),1,32)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) NOTICE $hget($sockname,nick) :* Please wait $gettok($hget(nickfprot,$hget(channels,%a).item),2,32) before changing your nick while on $hget(channels,%a).item (max. $gettok($hget(nickfprot,$hget(channels,%a).item),1,32) nickchanges in $gettok($hget(nickfprot,$hget(channels,%a).item),2,32) seconds) | return }
inc %nickchgs. [ $+ [ $hget(channels,%a).item ] ]
if (%nickchgs. [ $+ [ $hget(channels,%a).item ] ] = 1) {
.timernickf $+ $hget(channels,%a).item 1 $gettok($hget(nickfprot,$hget(channels,%a).item),2,32) unset %nickchgs. [ $+ [ $hget(channels,%a).item ] ] }
}
if (!$hget($hget(channels,%a).item,$hget($1,1).item)) { inc %a | continue }
var %b 1 | while %b <= $hget($hget(channels,%a).item,0).item {
if ($sock($hget($hget(channels,%a).item,%b).item)) && ($hget($hget(channels,%a).item,%b).item != $hget($1,1).item) && (!%nc. [ $+ [ $hget($hget(channels,%a).item,%b).item ] ]) {
sockwrite -n $hget($hget(channels,%a).item,%b).item : $+ $hget($hget($1,1).item,host) NICK %change
var %s = $hget($hget(channels,%a).item,%b).item
var %nc. [ $+ [ %s ] ] = true }
inc %b }
inc %a }
sockwrite -n $hget($1,1).item : $+ $hget($hget($1,1).item,host) NICK %change
.timerchgnick $+ $hget($1,1).item off
if ($hfind(ircops,$hget($hget($1,1).item,nick))) {
hdel ircops $1
hadd ircops %change
}
if ($hget(rnicks,$+(secure_,$2)) = true) && ($sock($hget($1,1).item).ip != $hget(rnicks,$+(ip_,$2))) {
sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :This nicknamed is IP secured.
.timerchgnick $+ $hget($1,1).item 1 0 CHGNICK $2 Gast $+ $r(1,999999)
goto skipw
return
}
if ($hfind(rnicks,$2) = $2) && ($hget($hget($1,1).item,loggedin) != $2) {
sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :NC: This nickname is registered and protected. If it is your nick
sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :nick, type /LOGIN %change password. $iif(!$hget($hget($1,1).item,loggedin),Otherwise) $iif($hget($hget($1,1).item,loggedin),after used /LOGOUT $hget($hget($1,1).item,loggedin) $+ . Otherwise))
sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :please choose a different nick.
sockwrite -n $hget($1,1).item $+(:,$hget(settings,server)) NOTICE $2 :If you don't change your nick within 1 minute, I will change your nick.
.timerchgnick $+ $hget($1,1).item 1 60 CHGNICK $2 Gast $+ $r(1,999999)
:skipw
hadd sqline $2
hadd sqline $+(nick_,$2) $hget(settings,server)
hadd sqline $+(reason_,$2) Being held for registered users
hadd sqline $+(date_,$2) $fulldate
.timerunsqline1 $+ $2 1 120 hdel sqline $2
.timerunsqline2 $+ $2 1 120 hdel -w sqline $+(*_,$2)
}
if ($hfind(sqline,$2)) {
hdel sqline $2
hdel -w sqline $+(*_,$2)
}
if (%change) {
hadd -m $hget($1,1).item host $+(%change,!,$gettok($hget($hget($1,1).item,host),2,33))
hadd -m $hget($1,1).item nick %change }
hdel nicks $1
hadd nicks %change
if ($hget($1,1).item && %change != $1) {
hadd -m %change $hget($1,1).item
hfree $1 }
if ($hget($hget(%change,1).item,nick)) {
sno N *** Nickchange Notice -- $1 ( $+ $gettok($hget($hget(%change,1).item,realhost),2,33) $+ ) has changed his/her nickname to %change
}
halt }
halt }
alias o.c {
var %x = 1
while ($hget(users,%x).item) {
if (!$sock($hget(users,%x).item)) {
.timerping* $+ $hget(users,%x).item off
squit $hget(users,%x).item Lost connection to server
}
inc %x }
halt }
alias -l squit {
if ($sock($1)) {
sockwrite -n $1 ERROR :Closing link: $+($hget($1,nick),[,$iif($gettok($hget($1,realhost),2,64),$gettok($hget($1,realhost),2,64),$sock($1).ip),]) ( $+ $2- $+ )
}
else { .timerping* $+ $1 off }
var %x = 1
while ($hget(ircops,%x).item) && ($hget($1,realhost)) && ($hget($1,nick)) {
if ($sock($hget($hget(ircops,%x).item,1).item)) {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Disconnect Notice -- Client exiting: $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) $chr(91) $+ $2- $+ $chr(93)
}
inc %x }
if (%pch. [ $+ [ $sock($sockname).ip ] ]) { unset %pch. [ $+ [ $sock($sockname).ip ] ] }
if ($hget($sock($1).ip,logins)) {
hdec $sock($1).ip logins
hdel $sock($1).ip $1
}
if ($hfind($sock($1).ip,$hget($1,nick))) { hdel $sock($1).ip $hget($1,nick) }
if ($hget($sock($1).ip,logins) < 0) hfree $sock($1).ip
if ($sock($1)) sockclose $1
if (%nn. [ $+ [ $1 ] ]) unset %nn. [ $+ [ $1 ] ]
if ($hfind(users,$1)) hdel users $1
if ($hfind(snoi,$hget($1,nick))) hdel snoi $hget($1,nick)
if ($hget($1,nick)) hdel nicks $hget($1,nick)
if ($hfind(ircops,$hget($1,nick))) hdel ircops $hget($1,nick)
if ($hfind(sqline,$hget($1,nick))) hdel sqline $hget($1,nick)
if ($hget(sqline,$hget($1,loggedin))) hdel sqline $hget($1,loggedin)
var %i 1
while %i <= $hget(channels,0).item {
if ($hget($hget(channels,%i).item,$1)) {
var %x 1
while %x <= $hget($hget(channels,%i).item,0).item {
if ($sock($hget($hget(channels,%i).item,%x).item)) && (!%qc. [ $+ [ $hget($hget(channels,%i).item,%x).item ] ]) {
sockwrite -n $hget($hget(channels,%i).item,%x).item $+(:,$hget($1,host)) QUIT $+(:,$2-)
if ($hget($hget(channels,%i).item,%x).item) { var %qs = $hget($hget(channels,%i).item,%x).item | var %qc. [ $+ [ %qs ] ] = true }
}
inc %x
}
if ($hget($hget(channels,%i).item,users) <= 1) {
if ($hfind(rchans,$hget(channels,%i).item)) { hadd -m rchans $+(lastused_,$hget(channels,%i).item) $fulldate }
if (!$hfind(rchans,$hget(channels,%i).item)) && ($hget(channels,%i).item) {
hdel -w topics $+(topic*,_,$hget(channels,%i).item)
if ($hget(modes,$hget(channels,%i).item)) hdel modes $hget(channels,%i).item
if ($hget($+(bans_,$hget(channels,%i).item),0).item) hfree $+(bans_,$hget(channels,%i).item)
if ($hget($+(excepts_,$hget(channels,%i).item),0).item) hfree $+(excepts_,$hget(channels,%i).item)
if ($hget($+(invites_,$hget(channels,%i).item),0).item) hfree $+(invites_,$hget(channels,%i).item)
hfree $hget(channels,%i).item
hfree -w +*_ $+ $hget(channels,%i).item
.timer 1 0 hdel channels $hget(channels,%i).item
}
if ($hfind($+(+z_,$hget(channels,%i).item),$1)) hdel $+(+z_,$hget(channels,%i).item) $1
if ($hfind($+(+v_,$hget(channels,%i).item),$1)) hdel $+(+v_,$hget(channels,%i).item) $1
if ($hfind($+(+h_,$hget(channels,%i).item),$1)) hdel $+(+h_,$hget(channels,%i).item) $1
if ($hfind($+(+o_,$hget(channels,%i).item),$1)) hdel $+(+o_,$hget(channels,%i).item) $1
if ($hfind($+(+a_,$hget(channels,%i).item),$1)) hdel $+(+a_,$hget(channels,%i).item) $1
if ($hfind($+(+q_,$hget(channels,%i).item),$1)) hdel $+(+q_,$hget(channels,%i).item) $1
}
if ($hget($hget(channels,%i).item,$1)) hdel $hget(channels,%i).item $1
if ($hget($hget(channels,%i).item,users)) hdec $hget(channels,%i).item users
}
inc %i
}
.timerpf $+ $1 $+ * off
.timerchgnick $+ $1 off
.timerping* $+ $1 off
.timerpc $+ $1 off
if ($hget($1,nick)) && ($hget($1,host)) && ($hget($1,realhost)) {
hadd -m whowas_ $+ $hget($1,nick) host $hget($1,host)
hadd -m whowas_ $+ $hget($1,nick) realhost $gettok($hget($1,realhost),2,64)
hadd -m whowas_ $+ $hget($1,nick) realname $hget($1,realname)
hadd -m whowas_ $+ $hget($1,nick) server $hget($1,server)
hadd -m whowas_ $+ $hget($1,nick) serverdesc $hget($1,serverdesc)
hadd -m whowas_ $+ $hget($1,nick) date $ctime
}
if ($hget(ircops,$1)) hdel ircops $1
if ($hget($1,nick)) && ($hget($hget($1,nick),1).item) { hfree $hget($1,nick) }
if ($hget($hget($1,loggedin))) {
hdel $hget($1,loggedin) login
hadd -m rnicks $+(quitmsg_,$hget($1,loggedin)) $2-
hadd -m rnicks $+(lastseen_,$hget($1,loggedin)) $fulldate
}
if ($hget($1,0).item) hfree $1
unset %i
return
}
alias makeparams {
if ($1 = +-) { unset %host %param* %chan
return
}
if ($1 = -+) {
unset %host %param* %chan
return
}
if ($1 = --) {
unset %host %param* %chan
return
}
if ($1 = ++) {
unset %host %param* %chan
return
}
if ($1 = -) {
unset %host %param* %chan
return
}
if ($1 = +) {
unset %host %param* %chan
return
}
var %modes = $1, %z = 2, %pcount = 1, %y = 1
if (%modes) && (%host) && (%y <= $hget(%chan,0).item) {
while $hget(%chan,%y).item {
if ($sock($hget(%chan,%y).item)) {
sockwrite -n $hget(%chan,%y).item $+(:,%host) MODE %chan $+(%+-,$iif(%t.modes,%t.modes,%modes)) %params
}
inc %y
}
}
hsave modes data\chmodes.db
unset %params %modes %chan %host %ov %ban %i
return
}
on *:SOCKOPEN:Enforcer:{
sockwrite -n $sockname CLIENT $hget(enforcer,nick) 1 $ctime +S + $hget(enforcer,ident) $hget(enforcer,mask) 0 $+(LawEnforcement.,$gettok($hget(settings,server),2-,46)) * * $+(:,$hget(enforcer,name))
sockwrite -n $sockname SQLINE $hget(enforcer,nick) Reserved for services
hadd servers LawEnforcement. $+ $gettok($hget(settings,server),2-,46)
halt
}
alias -l chgumode {
if ($2) {
if (!$istok(+ -,$left($2,1),32)) {
unset %sockname
cmd.fail $1
return
}
var %i 2, %+- $left($2,1), %modes $left($2,1), %x
:chgumode
while $mid($2,%i,1) {
if ($istok(+ -,$mid($2,%i,1),32)) {
if (!%+-) {
var %+- = $mid($2,%i,1)
}
var %modes = %modes $+ $mid($2,%i,1)
}
if ($mid($2,%i,1) !isincs $umodes) {
sockwrite -n $1 $+(:,$hget(settings,server)) 501 $hget($1,nick) $mid($2,%i,1) :Unknown MODE bar
}
elseif ($istokcs(c x i S,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) !iswmcs $hget($1,modes)) && (%+- == +) {
if ($mid($2,%i,1) === x) {
if ($hget(xhost,$1)) {
hadd -m $1 host $hget(xhost,$1)
}
if ($hget(xhost,$1)) {
hdel xhost $1
}
}
var %modes = $+(%modes,$mid($2,%i,1))
hadd $1 modes $+($hget($1,modes),$mid($2,%i,1))
}
if ($istokcs(c x i S,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) iswmcs $hget($1,modes)) && (%+- == -) {
if ($mid($2,%i,1) === x) {
hadd -m xhost $1 $hget($1,host)
hadd -m $1 host $hget($1,realhost)
}
var %modes = $+(%modes,$mid($2,%i,1))
hadd $1 modes $removecs($hget($1,modes),$mid($2,%i,1))
}
if ($4) {
if ($mid($2,%i,1) === r) && (%+- = +) {
hadd -m $1 modes $+($hget($1,modes),$mid($2,%i,1))
var %modes = $+(%modes,$mid($2,%i,1))
}
if ($mid($2,%i,1) === r) && (%+- = -) {
hadd -m $1 modes $+($removecs($hget($1,modes),$mid($2,%i,1)))
var %modes = $+(%modes,$mid($2,%i,1))
}
}
if ($istokcs(a c h l s q x w A C H I N O P T W X Z,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) !iswmcs $hget($1,modes)) && (%+- == +) {
if (!$hget($1,ircop)) && ($5 !== @) {
inc %i
goto chgumode
}
if ($istokcs(a A C X N T Z P,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) !iswmcs $readini(opers.conf,$hget($sockname,ologin),modes)) {
inc %i
continue
}
if ($mid($2,%i,1) === H) {
.timer 1 0 hadd -m hhost $1 $hget($1,host)
hadd -m $1 host $hget(hhost,$1) }
hadd $1 modes $hget($1,modes) $+ $mid($2,%i,1)
var %modes = $+(%modes,$mid($2,%i,1))
hdel ircops $1
}
if ($mid($2,%i,1) === o) {
hadd ircops $hget($1,nick)
hadd $1 ircop true
hadd $1 olvl 2
}
if ($mid($2,%i,1) === O) && (*o* !iswmcs $hget($1,modes)) {
hadd ircops $hget($1,nick)
hadd $1 ircop true
hadd $1 olvl 1
}
if ($mid($2,2,1) === s) && ($3) && (!$hfind(nicks,$3)) {
var %x = 1 | while $mid($3,%x,1) {
if ($istok(+ -,$mid($3,%x,1),32)) {
set -u0 %+- $mid($3,%x,1)
set -u0 %modes $+(%modes,$mid($2,%i,1)) }
if (%+- == +) && ($istokcs(a c f g i j k n o s w C F I N Q S,$mid($3,%x,1),32)) && ($+(*,$mid($3,%x,1),*) !iswmcs $hget($1,snomasks)) {
if ($mid($3,%x,1) === i) && ($4) {
hadd -m snoi $1 $4
}
hadd $1 snomasks $+(+,$remove($hget($1,snomasks),+,-),$remove($mid($3,%x,1),+,-))
var %snomasks = %snomasks $+ $remove($mid($3,%x,1),+,-)
inc %x }
if (%+- == -) && ($istokcs(a c f g i j k n o s w C F I N S,$mid($3,%x,1),32)) && ($+(*,$mid($3,%x,1),*) iswmcs $hget($1,snomasks)) {
if ($mid($3,%x,1) === i) && ($hget(snoi,$1)) {
hdel snoi $1
}
hadd $1 snomasks $+(+,$removecs($hget($1,snomasks),$remove($mid($3,%x,1),+,-),-,+))
var %-snomasks = $+(%-snomasks,$mid($3,%x,1)))
inc %x
}
inc %x
}
if (!%snomasks) && (!%-snomasks) {
return
}
}
elseif ($istokcs(a c h l o s q x w A C H I N O P T W X Z,$mid($2,%i,1),32)) && ($+(*,$mid($2,%i,1),*) iswmcs $hget($1,modes)) && (%+- == -) {
hadd $1 modes $removecs($hget($1,modes),$mid($2,%i,1))
var %modes = %modes $+ $mid($2,%i,1)
if ($mid($3,%x,1) === i) && ($hget(snoi,$1)) {
hdel snoi $1
}
if ($mid($2,%i,1) === H) {
hadd -m $1 host $hget(hhost,$1)
hadd ircops $1
}
if ($mid($2,%i,1) === s) {
if ($3) && ($istokcs(a c f g i j k n o s w A C F I N Q S,$mid($3,%x,1),32)) && ($+(*,$mid($3,%x,1),*) iswmcs $hget($1,snomasks)) {
hadd $1 snomasks $+(+,$removecs($hget($1,snomasks),$remove($mid($3,%x,1),+,-),-,+))
var %-snomasks = $+(%-snomasks,$mid($3,%x,1)))
if (!$3) {
var %-snomasks = $hget($1,snomasks)
hdel $1 snomasks
var %+-s = true
}
}
inc %x }
inc %x }
if ($mid($2,%i,1) === o) && ($left($2,1) == -) {
if (*O* !iswmcs $hget($1,modes)) {
hdel ircops $hget($1,nick)
hdel $1 ircop
hdel $1 olvl
hdel hhost $1
hdel $1 ologin
}
var %x = 1
while $mid($hget($1,omodes),%x,1) {
hadd $1 modes + $+ $remove($removecs($hget($1,modes),$mid($hget($1,omodes),%x,1)),+,-)
inc %x
}
var %omodes = $hget($1,omodes)
hdel $1 omodes
}
inc %i
}
}
if ($left(%modes,2) == ++) { %modes = $right(%modes,-1) }
if ($left(%modes,2) == --) { %modes = $right(%modes,-1) }
if ($left(%modes,2) == -+) { %modes = $right(%modes,-1) }
if ($left(%modes,2) == +-) { %modes = $right(%modes,-1) }
if ($right(%modes,1) = -) { %modes = $left(%modes,-1) }
if ($right(%modes,1) = +) { %modes = $left(%modes,-1) }
if ($len(%modes) > 1) || ($len(%omodes) > 1) && ($6 !== -) {
if (!%snomasks) && (!%-snomasks) || (%+-s) sockwrite -n $1 $+(:,$iif($hfind(nicks,$4) || $4 == $hget(settings,server) && !%param,$4,$hget($1,nick))) MODE $hget($1,nick) $+(:,%+-,$iif(%omodes,$removecs(%omodes,+,-),$removecs(%modes,-,+)) $+ $iif(o isincs %modes,$removecs($hget($1,omodes),o,+,-))) $iif(%param,%param)
}
if ($5) && (%sockname) {
sockwrite -n %sockname $+(:,$hget(settings,server)) 501 $hget(%sockname,nick) UMODE $hget($1,nick) $+(:,%+-,$iif(%omodes,$removecs(%omodes,+,-),$removecs(%modes,-,+)) $+ $iif(o isincs %modes,$removecs($hget($1,omodes),+,-,o))) $iif(%param,%param) ( $+ $hget($1,modes) $iif($hget($1,snomasks),$hget($1,snomasks),$+) $+ )
unset %sockname
}
if (%snomasks) || (%-snomasks) {
sockwrite -n $1 $+(:,$hget(settings,server)) 8 $hget($1,nick) Server notice mask ( $+ $iif(%-snomasks,$removecs($hget($1,snomasks),%-snomasks),$hget($1,snomasks)) $+ )
}
unset %x %i
return
}
alias -l wops {
var %x = 1
while $hget(users,%x).item {
if ($1 != 0) && (*w* !iswmcs $hget($hget(users,%x).item,snomasks)) {
inc %x
continue
}
sockwrite -n $hget(users,%x).item $+(:,$1) WALLOPS $hget($hget($hget(users,%x).item,1).item,nick) $2-
inc %x
}
return
}
alias -l sno {
var %z = 1
while $hget(ircops,%z).item {
if ($1 != 0) && (* $+ $1 $+ * !iswmcs $hget($hget($hget(ircops,%z).item,1).item,snomasks)) {
inc %z
continue
}
var %ircopsock = $hget($hget(ircops,%z).item,1).item
if ($1 === i) {
if ($hget(snoi,%ircopsock) == $9) {
sockwrite -n $hget($hget(ircops,%z).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%z).item,1).item,nick) : $+ $2-
inc %z
}
if (!$hget(snoi,%ircopsock)) {
if ($sock($hget($hget(ircops,%z).item,1).item)) { sockwrite -n $hget($hget(ircops,%z).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%z).item,1).item,nick) : $+ $2- }
inc %z
}
}
else {
if ($sock($hget($hget(ircops,%z).item,1).item)) {
sockwrite -n $hget($hget(ircops,%z).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%z).item,1).item,nick) : $+ $2-
}
}
inc %z
}
inc %z
return
}
alias -l rmk {
var %x = 1
while $hget(ircops,%x).item {
if (*n* !iswmcs $hget($hget($hget(ircops,%x).item,1).item,snomasks)) {
inc %x
continue
}
if ($2 = k) {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary K:line $1 (set by $hget(klines,nick_ $+ $1) on $hget(klines,date_ $+ $1) with reason: $hget(klines,reason_ $+ $1) $+ ) [has been expired]
hdel klines $1
hdel -w klines $+(*_,$1)
hsave klines data\klines.db
return
}
if ($2 = e) {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary E:line $1 (set by $hget(elines,nick_ $+ $1) on $hget(elines,date_ $+ $1) with reason: $hget(elines,reason_ $+ $1) $+ ) [has been expired]
hdel elines $1
hdel -w elines $+(*_,$1)
hsave elines data\elines.db
return
}
if ($2 = s) {
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary Shun $1 (set by $hget(shuns,nick_ $+ $1) on $hget(shuns,date_ $+ $1) with reason: $hget(shuns,reason_ $+ $1) $+ ) [has been expired]
hdel shuns $1
hdel -w shuns $+(*_,$1)
hsave shuns data\shuns.db
return
}
if ($2 = z) {
hdel zlines $1
hdel -w zlines $+(*_,$1)
hsave zlines data\zlines.db
sockwrite -n $hget($hget(ircops,%x).item,1).item $+(:,$hget(settings,server)) NOTICE $hget($hget($hget(ircops,%x).item,1).item,nick) :*** Global Notice -- Removed temporary Z:line $1 (set by $hget(zlines,nick_ $+ $1) on $hget(zlines,date_ $+ $1) with reason: $hget(zlines,reason_ $+ $1) $+ ) [has been expired]
return
}
inc %x
}
return
}
alias -l spart {
var %i 1
while (%i <= $calc($count($2,$chr(44)) + 1)) {
if ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(35)) || ($left($gettok($gettok($2,%i,44),1,32),1) = $chr(43)) {
if ($hget($gettok($gettok($2,%i,44),1,32),$1)) {
if ($hget($gettok($gettok($2,%i,44),1,32),$1) = .i) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 404 $hget($sockname,nick) $gettok($2-,%i,44) :You are invisible on channel $gettok($2-,%i,44) $+ . To undo, type: /INVISIBLE $+(-,$gettok($2-,%i,44)) | return }
if ($hget($gettok($gettok($2,%i,44),1,32),users) > 1) {
var %x 1
while %x <= $hget($gettok($2,%i,44),0).item {
if ($sock($hget($gettok($2,%i,44),%x).item)) {
sockwrite -n $hget($gettok($2,%i,44),%x).item : $+ $hget($1,host) PART $hfind(channels,$gettok($2,%i,44)) $3- }
hsave modes data\chmodes.db
inc %x }
hdel $gettok($2,%i,44) $1
hdel $1 $gettok($2,%i,44)
hdec $gettok($2,%i,44) users
}
else {
hfree $gettok($2,%i,44)
sockwrite -n $1 $+(:,$hget($1,host)) PART $hfind(channels,$gettok($2,%i,44)) $3-
hfree -w $+(+*_,$gettok($2,%i,44))
hsave modes data\chmodes.db
if ($hfind(rchans,$gettok($2,%i,44))) { hadd -m rchans $+(lastused_,$gettok($2,%i,44)) $fulldate }
if (!$hfind(rchans,$gettok($2,%i,44))) {
hdel channels $gettok($2,%i,44)
hdel modes $gettok($2,%i,44)
hdel -w topics $+(topic*,_,$gettok($2,%i,44))
hsave topics data\topics.db
hsave modes data\chmodes.db
if ($hget($+(bans_,$gettok($2,%i,44)),0).item) { hfree $+(bans_,$gettok($2,%i,44)) }
}
}
}
else {
sockwrite -n $1 $+(:,$hget(settings,server)) 442 $hget($1,nick) $gettok($2,%i,44) :You're not on that channel
inc %x
return
}
}
else {
sockwrite -n $1 $+(:,$hget(settings,server)) 403 $hget($1,nick) $gettok($2,%i,44) :is not a valid channel
inc %x
return
}
if ($hfind($+(+z_,$gettok($2,%i,44)),$1)) hdel $+(+z_,$gettok($2,%i,44)) $1
if ($hfind($+(+v_,$gettok($2,%i,44)),$1)) hdel $+(+v_,$gettok($2,%i,44)) $1
if ($hfind($+(+h_,$gettok($2,%i,44)),$1)) hdel $+(+h_,$gettok($2,%i,44)) $1
if ($hfind($+(+o_,$gettok($2,%i,44)),$1)) hdel $+(+o_,$gettok($2,%i,44)) $1
if ($hfind($+(+a_,$gettok($2,%i,44)),$1)) hdel $+(+a_,$gettok($2,%i,44)) $1
if ($hfind($+(+q_,$gettok($2,%i,44)),$1)) hdel $+(+q_,$gettok($2,%i,44)) $1
if ($3 != SAPART:) sno j *** Join/Part Notice -- $hget($1,nick) ( $+ $gettok($hget($1,realhost),2,33) $+ ) has left $iif($hfind(channels,$gettok($2,%i,44)),$hfind(channels,$gettok($2,%i,44)),$gettok($2,%i,44)) $iif($3,( $+ $3- $+ ))
if (*N* iswmcs $hget(modes,$gettok($2,%i,44))) {
var %z = 1
while $hget($gettok($2,%i,44),%z).item {
if ($hfind($+(+o_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+a_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) || ($hfind($+(+q_,$gettok($2,%i,44)),$hget($gettok($2,%i,44),%z).item)) {
sockwrite -n $hget($gettok($2,%i,44),%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$gettok($2,%i,44)) $hget($1,nick) ( $+ $gettok($hget($1,host),2,33) $+ ) has left $gettok($2,%i,44)
}
inc %z
}
}
inc %i
}
unset %i
return
}
alias -l smode {
if (%ov) { goto smodend }
if (!$hfind($+(+h_,$2),$1)) && (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($1,ircop)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 482 $hget($1,nick) $2 :Don't you miss your @, $+($hget($1,nick),?)
return
}
if ($hget($1,ircop)) && (*v* !iswmcs $hget($1,flags)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 482 $hget($1,nick) $2 :Don't you miss your @, $+($hget($1,nick),?)
return
}
}
if (!$istok(+ -,$left($3,1),32)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 501 $hget($1,nick) :You must specify + or - for your modes
return
}
:smodend
unset %modes %t.modes
var %i 2, %+- $left($3,1), %modes $left($3,1), %pcount 4
while $mid($3,%i,1) {
if ($istok(+ -,$mid($3,%i,1),32)) {
set %+- $mid($3,%i,1)
var %modes = %modes $+ $mid($3,%i,1) }
if ($mid($3,%i,1) === r) && (!%ov) {
sockwrite -n $1 $+(:,$hget(settings,server)) 501 $hget($1,nick) :Mode bar +r may only be set by servers
set %modes $removecs(%modes,r)
inc %i
continue
}
if ($len($remove(%modes,+,-)) = 25) {
var %m = 1, %mrc = 0
while ($mid(%modes,%m,1)) {
if ($mid(%modes,%m,1) != +) || ($mid(%modes,%m,1) != -) { inc %mrc }
inc %m
}
set %modes $left(%modes,%mrc)
set %params $gettok(%params,1-25,32)
goto mend }
elseif ($mid($3,%i,1) === i) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === i) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === V) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === V) && (!$ [ $+ [ %pcount ] ]) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === S) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === S) && (!$ [ $+ [ %pcount ] ]) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === m) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === m) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === n) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === n) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === r) && (%+- == +) && (%ov) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === r) && (%+- == -) && (%ov) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === N) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === N) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === R) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === R) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === s) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === s) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) } }
elseif ($mid($3,%i,1) === t) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === t) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === p) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
if ($mid($3,%i,1) === p) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === O) && (!$ [ $+ [ %pcount ] ]) && (%+- == +) {
if (!$hget($1,ircop)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
return }
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === O) && (!$ [ $+ [ %pcount ] ]) && (%+- == -) {
if (!$hget($1,ircop)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
return }
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
set %modes $+(%modes,$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === k) && ($ [ $+ [ %pcount ] ]) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) {
set %modes $+(%modes,$mid($3,%i,1))
hadd data $+(key_,$2) $ [ $+ [ %pcount ] ] | set %params %params $ [ $+ [ %pcount ] ]
inc %pcount
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === k) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $hget(data,$+(key_,$2))
inc %pcount
hdel data $+(key_,$2)
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === l) && (%+- == +) {
if ($+(*,$mid($3,%i,1),*) !iswmcs $hget(modes,$2)) && ($ [ $+ [ %pcount ] ] isnum) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $ [ $+ [ %pcount ] ]
if (*k* iswmcs %modes) set %modes $+($removecs(%modes,k,l),$mid($3,%i,1),k)
hadd data $+(limit_,$2) $ [ $+ [ %pcount ] ]
inc %pcount
hadd modes $2 $+($hget(modes,$2),$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === l) && (%+- == -) {
if ($+(*,$mid($3,%i,1),*) iswmcs $hget(modes,$2)) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $hget($2,limit)
inc %pcount
hdel $2 limit
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1)) }
}
elseif ($mid($3,%i,1) === f) && ($gettok($ [ $+ [ %pcount ] ],3,58) isnum) && ($gettok($ [ $+ [ %pcount ] ],1,58) isnum) && (%+- == +) {
if (!$hget(joinfprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === j) {
hadd -m $2 jfloodp $ [ $+ [ %pcount ] ]
hadd -m joinfprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $ [ $+ [ %pcount ] ]
inc %pcount
hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
}
if (!$hget(msgfprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === m) {
hadd -m $2 mfloodp $ [ $+ [ %pcount ] ]
hadd -m msgfprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $ [ $+ [ %pcount ] ] | inc %pcount
hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
}
if (!$hget(noticefprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === N) {
hadd -m $2 n2floodp $ [ $+ [ %pcount ] ]
hadd -m noticefprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $ [ $+ [ %pcount ] ] | inc %pcount
hadd modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
}
if (!$hget(nickfprot,$2)) && ($gettok($ [ $+ [ %pcount ] ],2,58) === n) {
hadd -m $2 nfloodp $ [ $+ [ %pcount ] ]
hadd -m nickfprot $2 $gettok($ [ $+ [ %pcount ] ],1,58) $gettok($ [ $+ [ %pcount ] ],3,58)
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $ [ $+ [ %pcount ] ] | inc %pcount
hadd -m modes $2 $+($removecs($hget(modes,$2),$mid($3,%i,1)),$mid($3,%i,1))
}
}
elseif ($mid($3,%i,1) === f) && (%+- == -) {
if ($hget(joinfprot,$2)) && ($ [ $+ [ %pcount ] ] === j) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $hget($2,jfloodp)
inc %pcount | hdel $2 jfloodp
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
hdel joinfprot $2 }
if ($hget(msgfprot,$2)) && ($ [ $+ [ %pcount ] ] === m) {
set %modes $+(%modes,$mid($3,%i,1)) | set %params %params $hget($2,mfloodp)
inc %pcount
hdel $2 mfloodp
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
hdel msgfprot $2 }
if ($hget(noticefprot,$2)) && ($ [ $+ [ %pcount ] ] === N) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $hget($2,n2floodp)
inc %pcount
hdel $2 n2floodp
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
hdel noticefprot $2 }
if ($hget(nickfprot,$2)) && ($ [ $+ [ %pcount ] ] === n) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $hget($2,nfloodp)
inc %pcount | hdel $2 nfloodp
hadd modes $2 $removecs($hget(modes,$2),$mid($3,%i,1))
hdel nickfprot $2 }
}
if ($mid($3,%i,1) === b) && (%+- == +) {
if (!$4) { var %x 1 | while %x <= $hget(bans_ $+ $2,0).item {
sockwrite -n $1 $+(:,$hget(settings,server)) 367 $hget($1,nick) $2 $hget(bans_ $+ $2,%x).item $hget(bans_ $+ $2,%x).data | inc %x } | sockwrite -n $1 $+(:,$hget(settings,server)) 368 $hget($1,nick) $2 :End of Channel Ban List | unset %modes %params %pcount | return | halt }
if (!$hfind($+(bans_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
if ($hget($+(bans_,$2),0).item = 100) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 478 $hget($sockname,nick) $2 $makemask($ [ $+ [ %pcount ] ]) :Banlist is full. Max 100 bans | unset %modes %params %pcount | return }
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $makemask($ [ $+ [ %pcount ] ])
hadd -m $+(bans_,$2) $makemask($ [ $+ [ %pcount ] ]) $iif(%ov,$hget(settings,server),$hget($1,nick)) $ctime
inc %pcount }
if ($hfind($+(bans_,$2),$+($makemask($ [ $+ [ %pcount ] ])))) { inc %pcount }
}
elseif ($mid($3,%i,1) === b) && (%+- == -) && ($ [ $+ [ %pcount ] ]) {
if ($4) {
if ($hfind($+(bans_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $makemask($ [ $+ [ %pcount ] ])
hdel $+(bans_,$2) $makemask($ [ $+ [ %pcount ] ])
inc %pcount }
if (!$hfind($+(bans_,$2),$makemask($ [ $+ [ %pcount ] ]))) { inc %pcount }
}
}
if ($mid($3,%i,1) === e) && (%+- == +) {
if (!$4) {
var %x 1
while %x <= $hget(excepts_ $+ $2,0).item {
sockwrite -n $1 $+(:,$hget(settings,server)) 348 $hget($1,nick) $2 $hget(excepts_ $+ $2,%x).item $hget(excepts_ $+ $2,%x).data
inc %x
}
sockwrite -n $1 $+(:,$hget(settings,server)) 349 $hget($1,nick) $2 :End of Channel Exception List
unset %modes %params %pcount | return | halt }
if (!$hfind($+(excepts_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
if ($hget($+(excepts_,$2),0).item = 100) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 478 $hget($sockname,nick) $2 $makemask($ [ $+ [ %pcount ] ]) :Exceptlist is full. Max 100 excepts
unset %modes %params %pcount | return }
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $makemask($ [ $+ [ %pcount ] ])
hadd -m $+(excepts_,$2) $makemask($ [ $+ [ %pcount ] ]) $hget($1,nick) $ctime
inc %pcount
}
if ($hfind($+(excepts_,$2),$+($makemask($ [ $+ [ %pcount ] ])))) {
inc %pcount
}
}
elseif ($mid($3,%i,1) === e) && (%+- == -) && ($ [ $+ [ %pcount ] ]) {
if ($4) {
if ($hfind($+(excepts_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $makemask($ [ $+ [ %pcount ] ])
hdel $+(excepts_,$2) $makemask($ [ $+ [ %pcount ] ])
inc %pcount }
if (!$hfind($+(excepts_,$2),$makemask($ [ $+ [ %pcount ] ]))) { inc %pcount }
}
}
if ($mid($3,%i,1) === I) && (%+- == +) {
if (!$4) { var %x 1 | while %x <= $hget(invites_ $+ $2,0).item {
sockwrite -n $1 $+(:,$hget(settings,server)) 367 $hget($1,nick) $2 $hget(invites_ $+ $2,%x).item $hget(invites_ $+ $2,%x).data
inc %x }
sockwrite -n $1 $+(:,$hget(settings,server)) 368 $hget($1,nick) $2 :End of Channel Invite List
unset %modes %params %pcount
return
halt }
if (!$hfind($+(invites_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
if ($hget($+(invites_,$2),0).item = 100) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 478 $hget($sockname,nick) $2 $makemask($ [ $+ [ %pcount ] ]) :Invitelist is full. Max 100 invites | unset %modes %params %pcount | return }
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $makemask($ [ $+ [ %pcount ] ])
hadd -m $+(invites_,$2) $makemask($ [ $+ [ %pcount ] ]) $hget($1,nick) $ctime
inc %pcount }
if ($hfind($+(invites_,$2),$+($makemask($ [ $+ [ %pcount ] ])))) { inc %pcount }
}
elseif ($mid($3,%i,1) === I) && (%+- == -) && ($ [ $+ [ %pcount ] ]) {
if ($4) {
if ($hfind($+(invites_,$2),$makemask($ [ $+ [ %pcount ] ]))) && ($makemask($ [ $+ [ %pcount ] ])) {
set %modes $+(%modes,$mid($3,%i,1))
set %params %params $makemask($ [ $+ [ %pcount ] ])
hdel $+(invites_,$2) $makemask($ [ $+ [ %pcount ] ])
inc %pcount }
if (!$hfind($+(invites_,$2),$makemask($ [ $+ [ %pcount ] ]))) { inc %pcount }
}
}
elseif ($istokcs(O q a o v h z,$mid($3,%i,1),32)) && (%+- == +) {
if ($ [ $+ [ %pcount ] ]) && (!$hfind(nicks,$ [ $+ [ %pcount ] ])) {
sockwrite -n $1 $+(:,$hget(settings,server)) 401 $hget($1,nick) $ [ $+ [ %pcount ] ] :No such nick
inc %pcount
inc %x
continue
}
if ($+(*,$replace($mid($3,%i,1),z,-,q,*,a,:,o,@,h,%,v,+),*) iswm $hget($2,$hfind(nicks,$ [ $+ [ %pcount ] ]))) {
inc %i
continue }
if ($mid($3,%i,1) === v) && ($ [ $+ [ %pcount ] ]) {
if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
inc %i
inc %pcount
continue }
if (!$hfind($+(+h_,$2),$1)) && (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i
inc %pcount
continue
}
}
hadd -m +v_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
if (!$hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
set %modes $+(%modes,$mid($3,%i,1))
%params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === h) && ($ [ $+ [ %pcount ] ]) {
if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
}
if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
hadd -m +h_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item . $+ % }
if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item . $+ % }
if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item . $+ % }
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === o) && ($ [ $+ [ %pcount ] ]) {
if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (%ov) { goto giveo | return }
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
}
:giveo
if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
hadd -m +o_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
if ($2 = $hget(settings,helpchan)) && (h !isincs $hget($hget($ [ $+ [ %pcount ] ],1).item,modes)) { chgumode $hget($ [ $+ [ %pcount ] ],1).item +h $2 0 - - }
if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === a) && ($ [ $+ [ %pcount ] ]) {
if (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) {
inc %i | inc %pcount | continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
inc %i | inc %pcount | continue
}
}
if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
hadd -m +a_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a) }
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === q) && ($ [ $+ [ %pcount ] ]) {
if (%ov) { goto giveq | return }
if (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) && (!$hget($sockname,ircop)) {
inc %i | inc %pcount | continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
inc %i | inc %pcount | continue
}
:giveq
if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
hadd -m +q_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === O) && ($ [ $+ [ %pcount ] ]) {
if (!$hget($1,ircop)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
return }
if ($hfind($+(+O2_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | continue }
hadd -m +O2_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === z) && ($ [ $+ [ %pcount ] ]) {
if ($hfind($+(+z_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | inc %pcount | return }
if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) && (!$hfind($+(+O2_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
hadd -m +z_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
if (!$hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
if (!$hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .-
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
}
}
elseif ($istokcs(O q a o v h z,$mid($3,%i,1),32)) && (%+- == -) {
if ($ [ $+ [ %pcount ] ]) && (!$hfind(nicks,$ [ $+ [ %pcount ] ])) {
sockwrite -n $1 $+(:,$hget(settings,server)) 401 $hget($1,nick) $ [ $+ [ %pcount ] ] :No such nick
inc %pcount | inc %x
continue }
if ($+(*,$replace($mid($3,%i,1),z,-,q,$ip_q,$ip_a,@,o,@,h,%,v,+),*) iswm $hget($2,$hfind(nicks,$ [ $+ [ %pcount ] ]))) {
inc %i | continue }
if $mid($3,%i,1) === v {
if (!$hfind($+(+h_,$2),$1)) && (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount
continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount
continue
}
}
if (!$hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
hdel +v_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a) }
if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q) }
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === h) {
if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount
continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
}
if (!$hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
hdel +h_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a) }
if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q) }
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === o) {
if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) { sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
sockwrite -n $sockname $+(:,$hget(settings,server)) 482 $hget($sockname,nick) $2 :Don't you miss your @, $+($hget($sockname,nick),?)
inc %i | inc %pcount | continue
}
}
if (!$hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
hdel +o_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
if ($2 = $hget(settings,helpchan)) { chgumode $hget($ [ $+ [ %pcount ] ],1).item -h 0 $2 - - }
if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a)
}
if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
}
set %modes $+(%modes,$mid($3,%i,1))
%params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === a) {
if (!$hfind($+(+a_,$2),$1) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1))) {
if (!$hget($sockname,ircop)) {
inc %i
inc %pcount
continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
inc %i
inc %pcount
continue
}
}
if (!$hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
hdel +a_ $+ $2 $hget($4,1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
}
set %modes $+(%modes,$mid($3,%i,1))
%params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === q) {
if (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) {
inc %i
inc %pcount
continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
inc %i
inc %pcount
continue
}
}
if (!$hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { inc %i | continue }
hdel +q_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+ }
if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .% }
if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) { hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@ }
if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a)
}
set %modes $+(%modes,$mid($3,%i,1)) | %params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === O) {
if (!$hget($1,ircop)) {
sockwrite -n $1 $+(:,$hget(settings,server)) 481 $hget($1,nick) :Permission denied - You are not an IRC Operator
return }
if (!$hfind($+(+O2_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
inc %i
continue
}
hdel +O2_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item
set %modes $+(%modes,$mid($3,%i,1))
%params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
elseif ($mid($3,%i,1) === z) {
if (!$hfind($+(+z_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
inc %pcount
return
}
if (!$hfind($+(+o_,$2),$1)) && (!$hfind($+(+a_,$2),$1)) && (!$hfind($+(+q_,$2),$1)) && (!$hfind($+(+O2_,$2),$1)) {
if (!$hget($sockname,ircop)) {
inc %i
inc %pcount
continue
}
if ($hget($sockname,ircop)) && (*v* !iswmcs $hget($sockname,flags)) {
inc %i
inc %pcount
continue
}
}
hdel +z_ $+ $2 $hget($ [ $+ [ %pcount ] ],1).item | hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .
if ($hfind($+(+v_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .+
if ($hfind($+(+h_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .%
if ($hfind($+(+o_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item .@
if ($hfind($+(+a_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_a)
}
if ($hfind($+(+q_,$2),$hget($ [ $+ [ %pcount ] ],1).item)) {
if ($ip_aq) hadd -m $2 $hget($ [ $+ [ %pcount ] ],1).item $+(.,$ip_q)
}
set %modes $+(%modes,$mid($3,%i,1))
%params = %params $hfind(nicks,$ [ $+ [ %pcount ] ])
inc %pcount }
}
inc %i
}
:mend
var %i = 1
if (%modes) {
while %i <= $hget($2,0).item {
if ($sock($hget($2,%i).item)) {
set %host $iif(%ov,$hget(settings,server),$hget($1,host))
%chan = $2
}
inc %i
}
if ($right(%modes,1) = -) { %modes = $left(%modes,-1) }
if ($right(%modes,1) = +) { %modes = $left(%modes,-1) }
if ($left(%modes,2) == ++) { %modes = $right(%modes,-1) }
if ($left(%modes,2) == --) { %modes = $right(%modes,-1) }
if ($left(%modes,2) == -+) { %modes = $right(%modes,-1) }
if ($left(%modes,2) == +-) { %modes = $right(%modes,-1) }
makeparams %modes %params
unset %ban %i
return
}
return
}
alias -l skick {
var %i 1
if (*N* iswmcs $hget(modes,$2)) {
var %z = 1
while $hget($2,%z).item {
if ($hfind($+(+o_,$2),$hget($2,%z).item)) || ($hfind($+(+a_,$2),$hget($2,%z).item)) || ($hfind($+(+q_,$2),$hget($2,%z).item)) {
if ($sock($hget($2,%z).item)) {
sockwrite -n $hget($2,%z).item $+(:,$hget(settings,server)) NOTICE $+(@,$2) $+(:,$3) ( $+ $gettok($hget($hget($3,1).item,host),2,33) $+ ) has been kicked off channel $2 ( $+ $iif($4,$4-,$hget($1,nick)) $+ )
}
}
inc %z }
}
while (%i <= $hget($2,0).item) {
if ($sock($hget($2,%i).item)) {
sockwrite -n $hget($2,%i).item : $+ $iif(%ov,$hget(settings,server),$hget($sockname,host)) KICK $2-3 $iif($4,$4-,$hget($1,nick))
}
inc %i
}
if ($hget($2,users) > 1) {
hdec $2 users
hdel $2 $hget($3,1).item
hdel $hget($3,1).item $2
}
else {
if (!$hfind(rchans,$2)) {
hdel modes $2
hdel channels $2
hdel -w topics $+(topic*_,$2)
if ($hget($+(bans_,$2),0).item) hfree $+(bans_,$2)
hfree $2
hfree -w +*_ $2
}
}
if ($hfind($+(+z_,$2),$hget($3,1).item)) hdel $+(+z_,$2) $hget($3,1).item
if ($hfind($+(+v_,$2),$hget($3,1).item)) hdel $+(+v_,$2) $hget($3,1).item
if ($hfind($+(+h_,$2),$hget($3,1).item)) hdel $+(+h_,$2) $hget($3,1).item
if ($hfind($+(+o_,$2),$hget($3,1).item)) hdel $+(+o_,$2) $hget($3,1).item
if ($hfind($+(+a_,$2),$hget($3,1).item)) hdel $+(+a_,$2) $hget($3,1).item
if ($hfind($+(+q_,$2),$hget($3,1).item)) hdel $+(+q_,$2) $hget($3,1).item
unset %ov
return
}
alias -l delchans {
var %x = 1
while ($hget(rchans,%x).item) {
%chan = $hget(rchans,%x).item
if ($left($hget(rchans,%x).item,1) == $chr(35)) {
if ($hget($1,loggedin) == $hget(rchans,$+(founder_,%chan))) {
hsave rchans data\chans.db
remini data\access.db $hget(rchans,%x).item
remini data\akicks.db $hget(rchans,%x).item
%ov = true
smode $1 $hget(rchans,%x).item -r
hdel -w rchans $+(*,$hget(rchans,%x).item,*)
inc %x }
}
inc %x }
delacc $1
}
alias -l delacc {
var %x = 1
:while
while ($hget(rchans,%x).item) {
var %chan = $hget(rchans,%x).item
if ($left(%chan,1) == $chr(35)) {
var %chan = $hget(rchans,%x).item
if ($readini(data\access.db,%chan,$hget($1,loggedin))) {
remini data\access.db %chan $replace($hget($1,loggedin),[,*,],&)
inc %x
goto while }
}
inc %x }
hdel $1 loggedin
unset %loggedin. [ $+ [ $1 ] ] %x
halt
}
alias send {
if ($1 = -s) { var %x = $3 }
else { var %x = $1 }
while ($read($langdir,%x)) {
if ($1 = -s) { sockwrite -n $2 $+(:,$hget(ircd,server)) $read($langdir,%x)
inc %x
}
else {
if ($sock($sockname)) sockwrite -n $sockname $+(:,$hget(ircd,server)) $read($langdir,%x)
inc %x
}
if ($1 = -s) && (%x > $4) { break }
elseif ($1 != -s) && (%x > $2) { break }
}
}