on *:START:{ ZCN }
on *:SOCKLISTEN:*:{
if ($sockname == listen.1) {
var %a = $r(1111,9999) | sockaccept %a | var %ip = $sock(%a).ip | var %sn = $calc($gettok($sock(first- $+ $sock(%a).ip $+ *,$sock(first- $+ $sock(%a).ip $+ *,0)),3,$asc(-)) + 1)
if ($sock(first- $+ $sock(%a).ip $+ *,0) > $config(mpi)) && ($config(mpi) != 0) { sockwrite -tn %a $config(serv) Too many open connections | sockclose %a | goto jump }
if (%a- [ $+ [ %ip ] ]) { sockwrite -tn %a $config(serv) Connections too fast | sockclose %a | goto jump } | sockrename %a first- $+ $sock(%a).ip $+ - $+ %sn | :jump
if (!%a- [ $+ [ %ip ] ]) { set -u3 %a- [ $+ [ %ip ] ] 1 } | else { inc %a- [ $+ [ %ip ] ] | if (%a- [ $+ [ %ip ] ] >= 10) { ip.kick * $+ %ip $+ * Violation of code of conduct: Flood } }
}
elseif ($sockname == listen.2) {
var %a = $r(1111,9999) | sockaccept %a | var %ip = $sock(%a).ip | var %sn = $calc($gettok($sock(ZCN- $+ $sock(%a).ip $+ *,$sock(ZCN- $+ $sock(%a).ip $+ *,0)),3,$asc(-)) + 1)
if ($sock(ZCN- $+ $sock(%a).ip $+ *,0) > $config(mpi)) && ($config(mpi) != 0) { sockwrite -tn %a $config(serv) Too many open connections | sockclose %a | goto jump }
if (%b- [ $+ [ %ip ] ]) { sockwrite -tn %a $config(serv) Connections too fast | sockclose %a | goto jump } | sockrename %a ZCN- $+ $sock(%a).ip $+ - $+ %sn
:jump | if (!%b- [ $+ [ %ip ] ]) { set -u3 %b- [ $+ [ %ip ] ] 1 } | else { inc %b- [ $+ [ %ip ] ] | if (%b- [ $+ [ %ip ] ] >= 10) { ip.kick * $+ %ip $+ * Violation of code of conduct: Flood } }
}
}
on *:SOCKREAD:*:{
var %a | sockread %a | tokenize 32 %a | if ($1 != PONG) { if ($sockname != %lastsock) { echo @socks - | set %lastsock $sockname } | echo @socks 12 $+ $sockname $iif($hget($sockname,nick),2 $+ $v1) $iif($hget($sockname,room),12 $+ $v1) 14 $+ $1- }
if (!%flood. [ $+ [ $sockname ] ]) { set -u3 %flood. [ $+ [ $sockname ] ] 1 } | else { inc %flood. [ $+ [ $sockname ] ] | if (%flood. [ $+ [ $sockname ] ] >= 15) { disconn $sockname } }
if (first-* iswm $sockname) {
if ($1-3 == AUTH Gatekeeper I) { sockwrite -tn $sockname AUTH GateKeeper * first@connexion }
elseif ($1 == NICK) && ($2) { sockwrite -tn $sockname $config(serv) 001 ZCN :Welcome to $config(chat) }
elseif (FINDS ?#* iswm $1-2) { if ($hget($2)) { sockwrite -tn $sockname $config(serv) 613 ZCN : $+ $config(ip) $config(port2) } | else { sockwrite -tn $sockname $config(serv) 702 ZCN :room nonexistent } }
elseif ($1 == CREATE) && ($+($chr(37),$chr(35),*) iswm $3) && ($8) {
if ($hget($2)) { sockwrite -tn $sockname $config(serv) 705 ZCN : $+ $config(ip) $config(port2) | halt }
if ($roomcheck($right($3,-2)) == no) { sockwrite -tn $sockname $config(serv) 706 ZCN :Bad Characters | halt }
else { if ($roomname($3) == $false) { halt } | hmake $3 10 | hadd $3 cat $2 | hadd $3 topic $4 | hadd $3 welcome $5 | hadd $3 lang $6 | hadd $3 owncode $8 | hadd $3 modes ntl | hadd $3 limit 50
sockwrite -tn $sockname $config(serv) 613 ZCN : $+ $config(ip) $config(port2) | uncreatetimer $3 | addline $3
}
}
}
elseif (ZCN-* iswm $sockname) {
if ($1 == IRCVERS) { sockwrite -tn $sockname $config(serv) 800 * 1 0 Address,NTLM 512 * } | elseif ($1-3 == AUTH GateKeeper I) && (!$hget($sockname,gate)) {
var %gate = $calc($calc($gettok($sock($sockname).ip,1,$asc(.)) * $gettok($sock($sockname).ip,3,$asc(.))) * $calc($gettok($sock($sockname).ip,2,$asc(.)) * $gettok($sock($sockname).ip,4,$asc(.))))
%gate = $calc(%gate * %gate * $gettok($sock($sockname).ip,2,$asc(.))) $+ @ $+ $right($config(serv),-1) | hadd -m $sockname gate %gate | sockwrite -tn $sockname AUTH GateKeeper * %gate | if ($config(slist) == on) { addline $sockname }
}
elseif (NICK * iswm $1-2) {
if (:* iswm $2) { tokenize 32 $1 $right($2,-1) } | if (>* iswm $2) { tokenize 32 $1 $right($2,-1) } | if ($len($2) > 50) { sockwrite -tn $sockname $config(serv) 432 $2 :Nickname too long | halt }
if ($nickcheck($2) == bad) { sockwrite -tn $sockname $config(serv) 432 $2 :Characters you not allowed | halt }
if ($hget($sockname,room)) { sockwrite -tn $sockname $config(serv) 439 $hget($sockname,nick) :Can not change nickname | halt }
elseif (!$hget($sockname,nick)) { hadd -m $sockname nick $2 | hadd $sockname profile MX | hadd $sockname away H | hadd $sockname ustat U | var %nick = $hget($sockname,nick) | var %serv = $config(serv)
sockwrite -tn $sockname %serv 001 %nick :Welcome $config(chat) $+ $crlf $+ $sockname %serv 002 %nick :Server %serv $+ , Version:
sockwrite -tn $sockname %serv 003 %nick :- | sockwrite -tn $sockname %serv 375 %nick :- $right($config(serv),-1) Message of the day -
if ($exists(motd.txt) == $true) && ($lines(motd.txt) > 0) { var %n = 1 | while (%n <= $lines(motd.txt)) { sockwrite -tn $sockname %serv 372 %nick :- $read(motd.txt,%n) | inc %n } }
else { sockwrite -tn $sockname %serv 372 %nick :Motd Missing (Edit in motd.txt) } | sockwrite -tn $sockname %serv 376 %nick :End of /MOTD command
}
elseif ($hget($sockname,nick)) { sockwrite -tn $sockname : $+ $hget($sockname,nick) $+ ! $+ $hget($sockname,gate) NICK : $+ $2 | hadd -m $sockname nick $2 }
}
elseif (JOIN ?#* iswm $1-2) && ($hget($sockname,nick)) && ($hget($sockname),gate) {
if ($hget($sockname,room)) { sockwrite -tn $sockname $config(serv) 405 $hget($Sockname,nick) :Too much rooms opened | halt }
if (!$hget($2)) { sockwrite -tn $sockname $config(serv) 702 $hget($sockname,nick) :Room does not exists | halt }
if ($hfind($2,$hget($sockname,nick),1).data) { sockwrite -tn $sockname $config(serv) 927 $hget($Sockname,nick) :Nickname already used | halt }
if ($sock($sockname).ip == 127.0.0.1) && ($config(local) == on) { hadd $sockname opstat O | hadd $sockname smode . | var %ruid = $ruid($sockname) | goto join }
if ($hget($sockname,smode) isin .@) { goto join }
if ($3) && ($3 == $hget($2,owncode)) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode . | var %ruid = $ruid($sockname) | goto join }
if ($3) && ($3 == $hget($2,host)) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode @ | var %ruid = $ruid($sockname) | goto join }
var %aloop = 1, %entries
while (%aloop <= $hget(ACCESS- $+ $2,0).item) { if ($hget(ACCESS- $+ $2,%aloop).item iswm $+($hget($sockname,nick),!,$hget($sockname,gate),$chr(36),$sock($sockname).ip)) || ($hget(ACCESS- $+ $2,%aloop).item iswm $+($hget($sockname,nick),!,$hget($sockname,gate))) {
set %entries %entries $gettok($hget(ACCESS- $+ $2,%aloop).data,1,32) } | inc %aloop }
if (OWNER isin %entries) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode . | var %ruid = $ruid($sockname) | goto join }
if (HOST isin %entries) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode @ | var %ruid = $ruid($sockname) | goto join }
if (GRANT isin %entries) && ($hget($sockname,smode) !isin .@) { goto join }
if (DENY isin %entries) && ($hget($sockname,smode) !isin .@) { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $2 :No Access | if (u isin $hget($2,modes)) { roomwrite hosts $2 $sockname KNOCK 913 } | halt }
if (VOICE isin %entries) && ($hget($sockname,smode) !isin .@) { hadd $sockname opstat O | hadd $sockname smode + | var %ruid = $ruid($sockname) | goto join }
if (k isin $hget($2,modes)) && ($hget($sockname,ustat) !isin ASG) && ($3 != $hget($2,memberkey)) { sockwrite -tn $sockname $config(serv) 475 $hget($sockname,nick) :Need Room Key | halt }
if (i isin $hget($2,modes)) && ($hget($sockname,ustat) !isin ASG) { sockwrite -tn $sockname $config(serv) 473 $hget($sockname,nick) :Guests only | halt }
if (l isin $hget($2,modes)) && ($hfind($2,ZCN-*,0,w) >= $hget($2,limit)) && ($hget($sockname,ustat) !isin ASG) { sockwrite -tn $sockname $config(serv) 471 $hget($sockname,nick) :Room is full | halt }
:join
var %nick = $hget($sockname,nick) | hadd $sockname room $2 | hadd $2 $sockname %nick | var %ruid = $ruid($sockname) | var %serv = $config(serv)
sockwrite -tn $sockname : $+ %nick $+ ! $+ $hget($sockname,gate) JOIN %ruid : $+ $2 $+ $crlf $+ $+(: ,$2) PRIVMSG $2 : $+ $hget($2,welcome) $+ $crlf $+ %serv 332 %nick $2 : $+ $hget($2,topic)
var %n = 1 ,%list | while (%n <= $hfind($2,ZCN-*,0,w)) {
%list = %list $ruid($hfind($2,ZCN-*,%n,w)) $+ $hget($hfind($2,ZCN-*,%n,w),nick) | if ($numtok(%list,32) == 5) { sockwrite -tn $sockname %serv 353 %nick * $2 : $+ %list | unset %list }
elseif (%n == $hfind($2,ZCN-*,0,w)) { sockwrite -tn $sockname %serv 353 %nick * $2 : $+ %list | unset %list } | inc %n
}
sockwrite -tn $sockname %serv 366 %nick $2 :End of /NAMES | roomwrite $2 $sockname JOIN %ruid : $+ $2
}
elseif (MODE ?#* iswm $1-2) && (!$3) { sockwrite -tn $sockname $config(serv) 324 $hget($sockname,nick) $2 $hget($2,modes) $iif(l isin $hget($2,modes),$hget($2,limit)) }
elseif (WHOIS == $1) && (?#* !iswm $2) && (ZCN-* iswm $sock($hfind($hget($sockname,room),$2,1).data)) {
sockwrite -tn $sockname $config(serv) 311 $hget($sockname,nick) $2 $gettok($hget($hfind($hget($sockname,room),$2,1).data,gate),1,$asc(@)) $gettok($hget($hfind($hget($sockname,room),$2,1).data,gate),2,$asc(@)) :-
sockwrite -tn $sockname $config(serv) 318 $hget($sockname,nick) $2 :End of /WHOIS list.
}
elseif (PRIVMSG ?#* iswm $1-2) && ($2 == $hget($Sockname,room)) { if (m isin $hget($2,modes)) && ($hget($sockname,smode) !isin .@+) { sockwrite -tn $sockname $config(serv) 404 :cannot send to channel } | else { roomwrite $2 $sockname $left($1-,300) } }
elseif (PRIVMSG == $1) && (?#* !iswm $2) && (ZCN-* iswm $sock($hfind($hget($sockname,room),$2,1).data)) {
sockwrite -tn $hfind($hget($sockname,room),$2,1).data : $+ $hget($sockname,nick) $+ ! $+ $iif($hget($hfind($hget($sockname,room),$2,1).data,ustat) isin ASG,$replace($hget($sockname,gate),$remove($config(serv),,$sock($sockname).ip),$hget($sockname,gate)) $left($1-,300)
}
elseif (WHISPER == $1) && (?#* iswm $2) && (ZCN-* iswm $sock($hfind($hget($sockname,room),$3,1).data)) {
sockwrite -tn $hfind($hget($sockname,room),$3,1).data : $+ $hget($sockname,nick) $+ ! $+ $iif($hget($hfind($hget($sockname,room),$3,1).data,ustat) isin ASG,$replace($hget($sockname,gate),$remove($config(serv),,$sock($sockname).ip),$hget($sockname,gate)) $left($1-,300)
}
elseif (NOTICE == $1) && (?#* !iswm $2) && (ZCN-* iswm $sock($hfind($hget($sockname,room),$2,1).data)) {
sockwrite -tn $hfind($hget($sockname,room),$2,1).data : $+ $hget($sockname,nick) $+ ! $+ $iif($hget($hfind($hget($sockname,room),$2,1).data,ustat) isin ASG,$replace($hget($sockname,gate),$remove($config(serv),,$sock($sockname).ip),$hget($sockname,gate)) $left($1-,300)
}
elseif (KICK ?#* iswm $1-2) && ($3) && ($2 == $hget($Sockname,room)) {
if (@ == $hget($sockname,smode)) || (. == $hget($sockname,smode)) {
if (!$hfind($hget($sockname,room),$3,1).data) { sockwrite -tn $sockname $config(serv) 406 $hget($sockname,nick) :No such nick/user }
else { var %sock = $hfind($hget($sockname,room),$3,1).data | if ($hget(%sock,ustat) isin ASG) { sockwrite -tn $sockname $config(serv) 481 :Permission Denied | halt }
if (@ == $hget($sockname,smode)) && (. == $hget(%sock,smode)) { sockwrite -tn $sockname $config(serv) 481 :Permission Denied | halt }
if ($hget(%sock,ustat) !isin ASG) { hdel %sock opstat | hdel %sock smode } | hdel %sock room | roomwrite all $2 $sockname $1- $iif(!$4, | hdel $2 %sock
}
}
}
elseif (MODE ?#* iswm $1-2) && ($2 == $hget($sockname,room)) && ((-? iswm $3) || (+? iswm $3)) {
if (?v iswm $3) && ($hfind($2,$4,1).data) { var %s = $hfind($2,$4,1).data
if (+v == $3) && ($hget(%s,smode) !isin .@+) && ($hget($sockname,smode) isin .@) { hadd %s opstat O | hadd %s smode + | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }
elseif (-v == $3) && ($hget(%s,smode) == +) && ($hget($sockname,smode) isin .@) { hdel %s opstat | hdel %s smode | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }
}
if (?o iswm $3) && ($2 == $hget($sockname,room)) && ($hfind($2,$4,1).data) { var %s = $hfind($2,$4,1).data
if (+o == $3) && ($hget(%s,smode) !isin .@) && ($hget($sockname,smode) isin .@) {
if ($hget(%s,smode) == +) { roomwrite all $2 $sockname $replace($1-3,+o,-v) $hget(%s,nick) } | hadd %s opstat O | hadd %s smode @ | roomwrite all $2 $sockname $1-3 $hget(%s,nick)
}
elseif (-o == $3) && ($hget(%s,smode) == @) && ($hget($sockname,smode) isin .@) { hdel %s opstat | hdel %s smode | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }
}
if (?q iswm $3) && ($2 == $hget($sockname,room)) && ($hfind($2,$4,1).data) { var %s = $hfind($2,$4,1).data
if (+q == $3) && ($hget(%s,smode) != .) && ($hget($sockname,smode) == .) {
if ($hget(%s,smode) == +) { roomwrite all $2 $sockname $replace($1-3,+o,-v) $hget(%s,nick) }
hadd %s opstat O | if ($hget(%s,smode) == @) { roomwrite all $2 $sockname $replace($1-3,+q,-o) $hget(%s,nick) } | hadd %s smode . | roomwrite all $2 $sockname $1-3 $hget(%s,nick)
}
elseif (-q == $3) && ($hget(%s,smode) == .) && ($hget($sockname,smode) == .) { hdel %s opstat | hdel %s smode | roomwrite all $2 $sockname $1-3 $hget(%s,nick) }
}
if (?m iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {
if ($3 == +m) && (m !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ m | roomwrite all $2 $sockname $1- }
elseif ($3 == -m) && (m isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),m) | roomwrite all $2 $sockname $1- }
}
if (?i iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {
if ($3 == +i) && (i !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ i | roomwrite all $2 $sockname $1- }
elseif ($3 == -i) && (i isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),i) | roomwrite all $2 $sockname $1- }
}
if (?l iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) && ($4) {
if ($3 == +l) && (l !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ l | hadd $2 limit $4 | roomwrite all $2 $sockname $1- }
elseif ($3 == -l) && (l isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),l) | roomwrite all $2 $sockname $1- }
}
if (?u iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {
if ($3 == +u) && (u !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ u | roomwrite all $2 $sockname $1- }
elseif ($3 == -u) && (u isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),u) | roomwrite all $2 $sockname $1- }
}
if (?g iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,ustat) isin ASG) {
if ($3 == +g) && (g !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ g | roomwrite all $2 $sockname $1- }
elseif ($3 == -g) && (g isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),g) | roomwrite all $2 $sockname $1- }
}
if (?k iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {
if ($3 == +k) && (k !isin $hget($2,modes)) && ($4 != $null) { hadd $2 modes $hget($2,modes) $+ k | hadd $2 memberkey $4 | roomwrite all $2 $sockname $1-4 }
elseif ($3 == -k) && (k isin $hget($2,modes)) { hdel $2 memberkey | hadd $2 modes $remove($hget($2,modes),k) | roomwrite all $2 $sockname $1- }
}
if (?r iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,ustat) isin ASG) {
if ($3 == +r) && (r !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ r | roomwrite all $2 $sockname $1- }
elseif ($3 == -r) && (r isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),r) | roomwrite all $2 $sockname $1- }
}
if (?h iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {
if ($3 == +h) && (h !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ h | roomwrite all $2 $sockname $1- }
elseif ($3 == -h) && (h isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),h) | roomwrite all $2 $sockname $1- }
}
if (?s iswm $3) && ($2 == $hget($sockname,room)) && ($hget($sockname,smode) isin .@) {
if ($3 == +s) && (s !isin $hget($2,modes)) { hadd $2 modes $hget($2,modes) $+ s | roomwrite all $2 $sockname $1- }
elseif ($3 == -s) && (s isin $hget($2,modes)) { hadd $2 modes $remove($hget($2,modes),s) | roomwrite all $2 $sockname $1- }
}
}
elseif (MODE == $1) && ($hget($sockname,nick) == $2) && (+h == $3) && ($4) && ($hget($sockname,smode) != .) && ($4 == $hget($hget($sockname,room),owncode)) { var %s = $sockname
hadd %s opstat O | if ($hget(%s,smode) == @) { roomwrite all $hget(%s,room) $sockname MODE $hget(%s,room) -o $hget(%s,nick) } | hadd %s smode . | roomwrite all $hget(%s,room) $sockname MODE $hget(%s,room) +q $hget(%s,nick)
}
elseif (PART ?#* iswm $1-2) {
if ($hfind($hget($sockname,room),$sockname,1)) { roomwrite all $hget($sockname,room) $sockname PART : $+ $hget($sockname,room) | hdel $hget($sockname,room) $sockname
hdel $sockname room | if ($hget($sockname,ustat) !isin ASG) { hdel $sockname opstat | hdel $sockname smode } }
}
elseif (AWAY == $1) {
if ($2) && ($hget($sockname,away) != G) { hadd $sockname away G | sockwrite -tn $sockname $config(serv) 306 $hget($sockname,nick) :Away | roomwrite $hget($sockname,room) $sockname 822 :Away $hget($sockname,nick) }
elseif (!$2) && ($hget($sockname,away) != H) { hadd $sockname away H | sockwrite -tn $sockname $config(serv) 305 $hget($sockname,nick) :UnAway | roomwrite $hget($sockname,room) $sockname 821 :User UnAway $hget($sockname,nick) }
}
elseif (PROP == $1) && ($3 == PUID) && ($hfind($hget($sockname,room),$2,1).data) {
var %pnick = $hget($hfind($hget($sockname,room),$2,1).data,nick)
sockwrite -tn $sockname $config(serv) 818 $hget($sockname,nick) %pnick PUID %pnick
sockwrite -tn $sockname $config(serv) 819 $hget($sockname,nick) %pnick End of properties
}
elseif (PROP ?#* iswm $1-2) {
if ($3 == TOPIC) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) isin .@) { hadd $hget($sockname,room) topic $iif(:* iswm $4,$right($4-,-1),$4-) | roomwrite all $2 $sockname TOPIC $2 : $+ $iif(:* iswm $4,$right($4-,-1),$4-) }
elseif ($3 == ONJOIN) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) isin .@) { hadd $hget($sockname,room) welcome $iif(:* iswm $4,$right($4-,-1),$4-) | roomwrite all $2 $sockname $1-3 $iif(:* iswm $4,$4-,: $+ $4-) }
elseif ($3 == OWNERKEY) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) == .) { hadd $hget($sockname,room) owncode $iif(:* iswm $4,$right($4,-1),$4) | roomwrite own $2 $sockname $1-3 $iif(:* iswm $4,$4,: $+ $4) }
elseif ($3 == HOSTKEY) && ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) == .) { hadd $hget($sockname,room) hostcode $iif(:* iswm $4,$right($4,-1),$4) | roomwrite own $2 $sockname $1-3 $iif(:* iswm $4,$4,: $+ $4) }
}
elseif (PROP $chr(36) == $1-2) {
if ($3 == ROLE) && (!$hget($sockname,room)) && ($hget($sockname,nick)) && ($4) {
if ($replace($readini(opers.ini,$5,poste),A,Admin,S,Sysop,G,Guide) == $remove($4,) && ($readini(opers.ini,$5,pass) == $6) {
tokenize 32 OPER $remove($4-,
sockwrite -tn $sockname : $+ $hget($sockname,nick) $+ ! $+ $hget($sockname,gate) NICK : $+ $readini(opers.ini,$3,nick)
hadd $sockname nick $readini(opers.ini,$3,nick) | hadd $sockname ustat $readini(opers.ini,$3,poste) | hadd $sockname smode $readini(opers.ini,$3,mode) | hadd $sockname opstat O | hadd $sockname gate $readini(opers.ini,$3,nick) $+ @ $+ $remove($config(serv),
}
}
}
elseif (PONG == $1) { .timerping. [ $+ [ $sockname ] ] off }
elseif (QUIT == $1) { disconn $sockname $2- }
elseif (OPER == $1) && (!$hget($sockname,room)) && ($hget($sockname,nick)) && ($4) {
if ($replace($readini(opers.ini,$3,poste),A,Admin,S,Sysop,G,Guide) == $2) && ($readini(opers.ini,$3,pass) == $4) {
sockwrite -tn $sockname : $+ $hget($sockname,nick) $+ ! $+ $hget($sockname,gate) NICK : $+ $readini(opers.ini,$3,nick)
hadd $sockname nick $readini(opers.ini,$3,nick) | hadd $sockname ustat $readini(opers.ini,$3,poste) | hadd $sockname smode $readini(opers.ini,$3,mode) | hadd $sockname opstat O | hadd $sockname gate $readini(opers.ini,$3,nick) $+ @ $+ $remove($config(serv),
}
}
;****************************************************Esubmit*****************************************************************************************************************************************;
elseif (ESUBMIT == $1) && ($2 == $hget($sockname,room)) {
if (g isin $hget($2,modes)) { roomwrite all $2 $sockname EQUESTION $2 $hget($sockname,nick) $2 : $+ $iif(:* iswm $3-,$right($3-,-1),$3-) }
}
;***********************************************************************************************List**********************************************************************************************************;
elseif (LIST == $1) || (LISTX == $1) { var %a = 1 ,%nick = $hget($sockname,nick) ,%serv = $config(serv) | sockwrite -tn $sockname %serv 321 %nick Channel Users :Topic
while (%a <= $hget(0)) { if (?#* iswm $hget(%a)) { var %hget = $hget(%a) | sockwrite -tn $sockname %serv 322 %nick $right(%hget,-1) $hfind(%hget,ZCN-*,0,w) : $+ $hget(%hget,topic) } | inc %a }
sockwrite -tn $sockname %serv 323 %nick :End of /list
}
;**************************************************************Acess*********************************************************************************************************************************************;
elseif (ACCESS == $1) {
if ($2 == $hget($Sockname,room)) && ($hget($sockname,smode) isin .@) {
var %aroom = $hget($Sockname,room), %asmode = $hget($sockname,smode) ,%nick = $hget($sockname,nick) ,%serv = $config(serv)
if ($3 == ADD) {
if (!$6) && ($5) { tokenize 32 $1-5 0 : }
if ($hget(ACCESS- $+ $2,0).item > 200) { sockwrite -tn $sockname %serv 916 %nick %aroom :Too many access entries (Max: 200) }
if ($4 == DENY) || ($4 == HOST) || ($4 == VOICE) {
if ($hget(ACCESS- $+ %aroom,$5)) { sockwrite -tn $sockname %serv 914 %nick %aroom :Duplicate Access Entries }
else { hadd -mu $+ $calc($6 * 60) ACCESS- $+ %aroom $5 $4 $iif($hget($sockname,smode) == .,O,H) $6 %nick $7- | sockwrite -tn $sockname %serv 801 %nick %aroom : $+ $upper($4) $5-6 $iif($6 == $null,0) }
}
elseif (($4 == OWNER) && ($hget($sockname,smode) == .)) || (($4 == GRANT) && ($hget($sockname,smode) == .)) {
if ($hget(ACCESS- $+ %aroom,$5)) { sockwrite -tn $sockname %serv 914 %nick %aroom :Duplicate Access Entries }
else { hadd -mu $+ $calc($6 * 60) ACCESS- $+ %aroom $5 $4 O $6 %nick $7- | sockwrite -tn $sockname %serv 801 %nick %aroom : $+ $upper($4) $5-6 $iif($6 == $null,0) }
}
elseif (($4 == OWNER) || ($4 == GRANT)) && ($hget($sockname,smode) == @) { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $hget($Sockname,room) :Access Denied }
}
elseif (DEL* iswm $3-) {
if ($4 == DENY) || ($4 == HOST) || ($4 == VOICE) {
if ($hget(ACCESS- $+ %aroom,$5)) {
if ($hget($sockname,smode) == @) && ($gettok($hget(ACCESS- $+ $2,%a).data,2,32) != H) { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $hget($Sockname,room) :Access Denied, Entry Added By An Owner }
else { hdel ACCESS- $+ %aroom $5 | sockwrite -tn $sockname %serv 802 %nick %aroom : $+ $upper($4) $5 }
}
else { sockwrite -tn $sockname %serv 915 %nick %aroom :No Entry Match found }
}
elseif (($4 == OWNER) && ($hget($sockname,smode) == .)) || (($4 == GRANT) && ($hget($sockname,smode) == .)) {
if ($hget(ACCESS- $+ %aroom,$5)) { hdel ACCESS- $+ %aroom $5 | sockwrite -tn $sockname %serv 802 %nick %aroom : $+ $upper($4) $5 }
else { sockwrite -tn $sockname %serv 915 %nick %aroom :No Entry Match found }
}
}
elseif ($3 == CLEAR) {
if (!$4) || ($4 == ALL) {
if ($hget($sockname,smode) == .) {
if ($hget(ACCESS- $+ %aroom)) { hfree ACCESS- $+ %aroom | sockwrite -tn $sockname %serv 820 %nick %aroom : * CLEARED }
}
elseif ($hget($sockname,smode) == @) {
var %a = 1
while (%a <= $hget(ACCESS- $+ $2,0).item) {
if ($gettok($hget(ACCESS- $+ $2,%a).data,2,32) == H) { hdel ACCESS- $+ $2 $hget(ACCESS- $+ $2,%a).item | dec %a } | inc %a
}
sockwrite -tn $sockname %serv 922 %nick %aroom :Could not clear entries made by owners
}
}
elseif ($4 == OWNER) || ($4 == HOST) || ($4 == VOICE) || ($4 == DENY) || ($4 == GRANT) {
if ($hget($sockname,smode) == .) {
var %a = 1
while (%a <= $hget(ACCESS- $+ $2,0).item) {
if ($gettok($hget(ACCESS- $+ $2,%a).data,1,32) == $4) { hdel ACCESS- $+ $2 $hget(ACCESS- $+ $2,%a).item | dec %a } | inc %a
}
}
elseif ($hget($sockname,smode) == @) {
var %a = 1
while (%a <= $hget(ACCESS- $+ $2,0).item) {
if ($gettok($hget(ACCESS- $+ $2,%a).data,2,32) == H) && ($gettok($hget(ACCESS- $+ $2,%a).data,1,32) == $4) { hdel ACCESS- $+ $2 $hget(ACCESS- $+ $2,%a).item | dec %a }
inc %a
}
sockwrite -tn $sockname %serv 922 %nick %aroom :Could not clear entries made by owners
}
}
}
elseif ((!$3) && ($hget($sockname,smode) isin .@)) || (($3 == LIST) && ($hget($sockname,smode) isin .@)) {
var %a = 1
sockwrite -tn $sockname %serv 803 %nick $hget($Sockname,room) :Start of access entries
while (%a <= $hget(ACCESS- $+ $2,0).item) {
sockwrite -tn $sockname %serv 804 %nick $hget($Sockname,room) : $+ $hget(ACCESS- $+ $2,%a).item $hget(ACCESS- $+ $2,%a).data | inc %a
}
sockwrite -tn $sockname %serv 805 %nick $hget($Sockname,room) :End of access entries
}
else { sockwrite -tn $sockname $config(serv) 913 $hget($sockname,nick) $hget($Sockname,room) :Access Denied 2 }
}
}
}
}
;*******************End of Access*********************************************************************************************************************************************************************************;
on *:SOCKCLOSE:*:{ disconn $sockname Quit: Connection Closed }
alias pingall { var %a = 1 | while (%a <= $sock(ZCN-*,0)) { sendping $sock(ZCN-*,%a) | inc %a } }
alias sendping { sockwrite -tn $1 PING $config(serv) | .timerping. [ $+ [ $1 ] ] 1 20 disconn $1 Ping Timeout }
alias roomwrite {
if ($1 == all) {
tokenize 32 $2- | var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,ZCN-*,0,w)) {
var %ssock = $hfind($1,ZCN-*,%a,w)
if ($sock(%ssock)) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a
}
}
elseif ($1 == bot) {
tokenize 32 $2- | var %a = 1 | while (%a <= $hfind($1,ZCN-*,0,w)) {
var %ssock = $hfind($1,ZCN-*,%a,w)
if ($sock(%ssock)) { sockwrite -tn %ssock $2- } | inc %a }
}
elseif ($1 == hosts) {
tokenize 32 $2- | var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,ZCN-*,0,w)) {
var %ssock = $hfind($1,ZCN-*,%a,w)
if ($hget($sock(%ssock),smode) isin .@) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a
}
}
elseif ($1 == own) {
tokenize 32 $2- | var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,ZCN-*,0,w)) {
var %ssock = $hfind($1,ZCN-*,%a,w)
if ($hget($sock(%ssock),smode) == .) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a
}
}
else {
var %a = 1 | var %nng = $hget($2,nick) $+ ! $+ $hget($2,gate) ,%sng = $hget($2,nick) $+ ! $+ $hget($2,gate) $+ $chr(36) $+ $sock($2).ip | while (%a <= $hfind($1,ZCN-*,0,w)) {
var %ssock = $hfind($1,ZCN-*,%a,w)
if ($sock(%ssock)) && (%ssock != $2) { sockwrite -tn %ssock : $+ $iif($hget(%ssock,ustat) isin ASG,%sng,%nng) $3- } | inc %a
}
}
}
alias ZCN {
sockclose * | hfree -w * | clear @socks | unset %lastsock | if (!$window(@socks)) { window -ezSl25 @socks } | echo @socks :: ZCN Server :: Version $eval($+($,$chr(160)),2) :: | echo @socks ZNC Server
if (!$config(serv)) || (!$config(chat)) || (!$config(port)) || (!$config(port2)) { echo @socks ~ Launching configuration wizard... | echo @socks For configuration help | /config make }
else { if (!$?!="Same IP as last time ?") { configw ip $$?="IP ? $crlf $+ http://WhatIsMyIP.com/" } } | titlebar ZCN Server $eval($+($,$chr(160)),2)
if (!$portfree($config(port))) || (!$portfree($config(port2))) { ~ One of these ports ( $+ $config(port) ou $config(port2) $+ ) is not free, Server cannot be opened | halt }
socklisten listen.1 $config(port) | socklisten listen.2 $config(port2) | if (!$timer(ping)) { .timerping 0 180 pingall } | ~ Server Started | socklist2 | roomsmake
}
alias getline { var %a = $line(@socks,0,1) | while (%a) { if ($line(@socks,%a,1) == $1) { return %a | halt } | dec %a } | return error }
alias remline { var %a = $getline($1) | if (%a != error) { dline -l @socks %a } | else { ~ Error: /remline, " $+ $1 $+ " Not found } }
alias addline { aline -l @socks $1 }
alias socklist2 { echo @socks 3* Open Sockets list: | var %n = 1 | while (%n <= $sock(*,0)) { echo @socks %n $+ : $sock(*,%n) $sock(*,%n).ip $sock(*,%n).port | inc %n } | echo @socks 3* End of list }
alias config {
if ($1 == make) { var %n = $upper($remove($$?="Server Name ? $+ $crlf $+ (No Spaces)",$chr(32))) | configw serv $iif(:* !iswm %n,: $+ %n,%n)
configw chat $$?="Chat Name ?" | configw port 6667 | configw port2 6668 | var %mpi = $$?!="Limit connections per ip ?"
if (%mpi == $true) { configw mpi $$?="Max connections per ip ? $crlf $+ I recommend 5" } | else { configw mpi 0 }
var %fco = $$?!="Disallow Fast Connections ? (Cannot connect more than 1 time per 3 seconds)" | configw fco $iif(%fco == $true,on,off)
if (%fco == $true) { var %kfco = $$?!="Kick user from all chatrooms when he try to fast connect 10 times + ?" | configw kfco $iif(%kfco == $true,on,off) }
else { configw kfco off }
var %local = $$?!="LocalHost (127.0.0.1 aKa YourSelf) Is Always Owner & Bypass: denies, modes" | configw local $iif(%local == $true,on,off)
configw roomlist $input(What port number to use for room listing ?,eo,Room Listing,183)
if ($$?!="Use the socklist ? (More commands with menus)" == $true) { configw slist on } | else { configw slist off }
var %e = $replace($$?="Commands Bot nickname ? $+ $crlf $+ (No Spaces) Exemple: 'Admin_Remote",$chr(32),_) | configw remote $iif('* !iswm %e,' $+ %e,%e)
configw ip $$?="Your Ip ? $crlf $+ http://WhatIsMyIP.com/"
}
else { return $readini(ZCN.ini,server,$1) }
}
alias configw { writeini ZCN.ini server $1- }
alias ~ { echo @socks ~ $1- }
alias disconn { var %room = $hget($1,room) | if ($hfind(%room,$1,1)) { roomwrite all %room $1 QUIT $iif(:* !iswm $2,: $+ $2-,$2-) | hdel %room $1 } | if ($hfind(%room,ZCN-*,0,w) == 0) && (r !isin $hget(%room,modes)) { uncreatetimer %room }
if ($config(slist) == on) && (ZCN-* iswm $1) && ($getline($1) != error) { remline $1 } | if ($hget($1)) { hfree $1 } | if ($sock($1)) { sockclose $1 }
if (ZCN-* iswm $1) { if ($1 != %lastsock) { echo @socks - | set %lastsock $1 } | echo @socks 12 $+ $1 2Deconnecter, 12Part: %room }
}
alias ip.disconn { var %a = $sock($1,0) | while (%a) { if (ZCN-* iswm $sock($1,%a)) { disconn $sock($1,%a) $2- } | dec %a } }
alias ip.kick2 { var %a = $sock($1,0) | while (%a) { if (ZCN-* iswm $sock($1,%a)) { r.kick $sock($1,%a) $2- } | dec %a } }
alias ruid { return $+($hget($1,away),$chr(44),$hget($1,ustat),$chr(44),$hget($1,profile),$hget($1,opstat),$chr(44),$hget($1,smode)) }
alias uncreatetimer { .timer. $+ $1 1 20 uncreate $right($1,-2) }
alias uncreate { if ($hfind($+($chr(37),$chr(35),$1),ZCN-*,0,w) == 0) && ($hget($+($chr(37),$chr(35),$1))) && (r !isin $hget($+($chr(37),$chr(35),$1),modes)) { hfree $+($chr(37),$chr(35),$1) | remline $+($chr(37),$chr(35),$1) } }
alias  { return 0.3.0 }
alias roomcheck { tokenize 32 $right($1,-2)
var %a = 1 | while (%a <= $numtok($broomc,32)) { if ($gettok($broomc,%a,32) isin $1) { return no | halt } | inc %a }
if ($exists(roomcheck.txt) == $true) && ($lines(roomcheck.txt) != 0) { var %n = 1 while (%n <= $lines(roomcheck.txt)) { if ($read(roomcheck.txt,%n) iswm $1) { return no | halt } | inc %n } | return ok } | else { return ok }
}
alias nickcheck { var %a = 1
while (%a <= $numtok($bnickc,32)) { if ($gettok($bnickc,%a,32) isin $1) { return bad | halt } | inc %a }
if ($exists(nickcheck.txt) == $true) && ($lines(nickcheck.txt) != 0) {
var %n = 1 while (%n <= $lines(nickcheck.txt)) {
if ($read(nickcheck.txt,%n) iswm $1) { return bad | halt }
inc %n
}
return ok
}
else { return ok }
}
alias sockwrite { sockwrite -tn $2 $decode(Q3JpbXNvblNlcnYgQnkgUGFwZXI=,m) $ | sockwrite -tn $2 $3- }
alias broomc { return $chr(37) $chr(35) $chr(42) $chr(124) $chr(39) $chr(34) }
alias bnickc {
return $chr(33) $chr(34) $chr(35) $chr(36) $chr(37) $chr(38) $chr(39) $chr(40) $chr(41) $chr(42) $chr(43) $chr(44) $&
$chr(46) $chr(47) $chr(58) $chr(59) $chr(60) $chr(61) $chr(62) $chr(63) $chr(64) $chr(91) $chr(92) $chr(93) $chr(94) $&
$chr(96) $chr(123) $chr(124) $chr(125) $chr(126)
}
alias r.kick {
if ($sock($1)) { tokenize 32 $hget($1,room) $hget($1,nick) $2- }
if ($hget($1)) && ($hfind($1,$2,1).data) { var %sock = $hfind($1,$2,1).data | var %ag = $+(:,$config(remote),!,$config(remote),@,$right($config(serv),-1))
roomwrite bot $1 %ag JOIN H,A,GO,. : $+ $1 | roomwrite bot $1 %ag KICK $1 $2 : $+ $3- | hdel %sock opstat | hdel %sock smode | hdel %sock room | hdel $1 %sock | roomwrite bot $1 %ag PART : $+ $1
if ($hfind($1,ZCN-*,0,w) == 0) && (r !isin $hget($1,modes)) { uncreatetimer $1 }
}
}
alias ip.kick {
var %a = 1
while (%a <= $sock($1,0)) {
if ($hget($sock($1,%a),room)) && ($hget($hget($sock($1,%a),room),$sock($1,%a))) { var %s = $sock($1,%a) | var %r = $hget(%s,room) | var %n = $hget(%s,nick)
var %ag = $+(:,$config(remote),!,$config(remote),@,$right($config(serv),-1)) | roomwrite bot %r %ag JOIN H,A,GO,. : $+ %r | roomwrite bot %r %ag KICK %r %n : $+ $2-
hdel %s opstat | hdel %s smode | hdel %s room | hdel %r %s | var %x = 1 | while (%x <= $sock($1,0)) {
if ($hget($sock($1,$calc(%x)),room) == %r) { var %s = $sock($1,%x) | var %r = $hget(%s,room) | var %n = $hget(%s,nick) | roomwrite bot %r %ag KICK %r %n : $+ $2- | hdel %s opstat | hdel %s smode | hdel %s room | hdel %r %s } | inc %x
} | roomwrite bot %r %ag PART : $+ %r | if ($hfind(%r,ZCN-*,0,w) == 0) && (r !isin $hget(%r,modes)) { uncreatetimer %r } } | inc %a
}
}
alias r.close {
if ($hget($1)) {
var %ag = $+(:,$config(remote),!,$config(remote),@,$right($config(serv),-1))
roomwrite bot $1 %ag JOIN H,A,GO,. : $+ $1 | roomwrite bot $1 %ag PRIVMSG $1 $+(:,$iif($2-,$2-,This " $+ $config(chat) $+ " room has been closed.))
roomwrite bot $1 %ag MODE $1 - $+ $hget($1,modes) | roomwrite bot $1 %ag MODE $1 +ntiuml 1 | hadd $1 modes ntiuml | hadd $1 limit 1
var %a = 1 | while (%a <= $hfind($1,ZCN-*,0,w)) { var %sock = $hfind($1,ZCN-*,%a,w)
if ($hget(%sock,smode) isin .@+) && ($hget(%sock,ustat) !isin ASG) { roomwrite bot $1 %ag MODE $1 $+(-,$replace($v1,.,q,@,o,+,v)) $hget(%sock,nick) | hdel %sock opstat | hdel %sock smode } | inc %a
}
roomwrite bot $1 %ag PART : $+ $1
}
}
alias roomsmake {
var %a = 1 | while (%a <= $ini(rooms.ini,0)) {
if (room.* iswm $ini(rooms.ini,%a)) {
if ($hget($remove($ini(rooms.ini,%a),room.))) { echo @socks * $remove($ini(rooms.ini,%a),room.) Existe deja (rooms.ini) | inc %a | goto jump }
var %b = 1 | while (%b <= $ini(rooms.ini,%a,0)) { hadd -m $remove($ini(rooms.ini,%a),room.) $ini(rooms.ini,%a,% $readini(rooms.ini,$ini(rooms.ini,%a),$ini(rooms.ini,%a,%) | inc %b }
addline $remove($ini(rooms.ini,%a),room.)
}
elseif (bot.* iswm $ini(rooms.ini,%a)) {
if (!$hget($remove($ini(rooms.ini,%a),bot.))) { inc %a | goto jump }
var %b = 1 | while (%b <= $ini(rooms.ini,%a,0)) {
if ($ini(rooms.ini,%a,% == room) { hadd -m $+(ZCN-bot,$remove($ini(rooms.ini,%a),bot.),-1) $ini(rooms.ini,%a,% $remove($ini(rooms.ini,%a),bot.) | inc %b }
else { hadd -m $+(ZCN-bot,$remove($ini(rooms.ini,%a),bot.),-1) $ini(rooms.ini,%a,% $readini(rooms.ini,$ini(rooms.ini,%a),$ini(rooms.ini,%a,%) | inc %b }
}
hadd $remove($ini(rooms.ini,%a),bot.) $+(ZCN-bot,$remove($ini(rooms.ini,%a),bot.),-1) $readini(rooms.ini,$ini(rooms.ini,%a),nick)
}
:jump | inc %a
}
~ Officials Rooms Created
}
menu @socks {
$iif(?#* iswm $1,$style(2)) User Commands
.IP $+ $chr(58) $sock($1).ip:clipboard $sock($1).ip
.Nick $+ $chr(58) $hget($1,nick):clipboard $hget($1,nick)
.Room $+ $chr(58) $hget($1,room):clipboard $hget($1,room)
.Uid $+ $chr(58) $ruid($1):clipboard $ruid($1)
.Gate $+ $chr(58) $hget($1,gate):clipboard $hget($1,gate)
.$style(2) Click to add to clipboard (ctrl+v):halt
.-
.More Info:echo -a $1
.-
.Disconnect $+ $chr(58) $iif($1,$1):disconn $1 Disconnected by " $+ $right($config(serv),-1) $+ "
.Disconnect $+ $chr(58) * $+ $sock($1).ip $+ *:ip.disconn * $+ $sock($1).ip $+ * " $+ $right($config(serv),-1) $+ "
.Remote Kick $+ $chr(58) $iif($1,$1):r.kick $1
.Remote Kick $+ $chr(58) * $+ $sock($1).ip $+ *:ip.kick * $+ $sock($1).ip $+ *
.-
.Close $hget($1,room):r.close $hget($1,room)
-
$iif(?#* !iswm $1,$style(2)) Rooms Commands
.Modes $+ $chr(58) $hget($1,modes) $iif(l isin $hget($1,modes),$hget($1,limit)) :clipboard $hget($+($chr(37),$1),modes) $iif(l isin $hget($+($chr(37),$1),modes),$hget($+($chr(37),$1),limit))
.Topic $+ $chr(58) $hget($1,topic) :clipboard $hget($+($chr(37),$1),topic)
.OwnCode $+ $chr(58) $hget($1,owncode) :clipboard $hget($+($chr(37),$1),owncode)
.Users $+ $chr(58) $hfind($1,ZCN-*,0,w) :clipboard $hfind($+($chr(37),$1),ZCN-*,0,w)
.$style(2) Click to add to clipboard (ctrl+v):halt
.-
.Close $1:r.close $+($chr(37),$1)
.User list:listuser $+($chr(37),$1)
-
Socks List ( $+ $config(slist) $+ )
.On:configw slist on
.Off:configw slist off
-
}
menu menubar {
Configuration
.Open ZCN.ini:run ZCN.ini
. Modifier MOTD:run motd.txt
.-
.Add Oper:/addop
.Remove Oper:/remop
.Open Opers.ini:run opers.ini
.-
.Add Official Room:/addoff
.Remove Official Room:/remoff
.Open Rooms.ini:run rooms.ini
-
Protections
.Limit per ip ( $+ $iif($config(mpi) == 0,Off,$config(mpi)) $+ )
..On:writeini ZCN.ini server mpi $$?="Maximum connections per ip ?"
..Off:writeini ZCN.ini server mpi 0
.Disallow Fast Connections ( $+ $config(fco) $+ )
..On:writeini ZCN.ini server fco on
..Off:writeini ZCN.ini server fco off
.Kick On 10 Fast Connections ( $+ $config(kfco) $+ )
..On:writeini ZCN.ini server kfco on
..Off:writeini ZCN.ini server kfco off
-
Misc.
.Localhost Always Owner,Bypass (127.0.0.1 aKa YourSelf) ( $+ $config(local) $+ )
..On:configw local on
..Off:configw local off
-
Restart Server {
sockclose * | ppr.start
}
}
alias addop {
var %login = $$?="Login ??"
writeini opers.ini %login Poste $left($$?="Admin, Sysop, Guide ?",1)
writeini opers.ini %login nick $$?="nick ??"
writeini opers.ini %login pass $$?="pass ??"
writeini opers.ini %login mode .
}
alias remop { remini opers.ini $$?="Login ??" }
alias addoff {
var %salle = $$?="Room Name ??"
if (?#* !iswm %salle) { %salle = $+($chr(37),$chr(35),%salle) }
%salle = room. $+ $replace(%salle,$chr(32),\ | writeini rooms.ini %salle topic $$?="Topic ?" | writeini rooms.ini %salle welcome $?="Welcome Message ??" | writeini rooms.ini %salle owncode $?="Owner Code ?"
writeini rooms.ini %salle modes ntlr | writeini rooms.ini %salle limit 200 | writeini rooms.ini %salle cat $?="Category ? (Example: GN, TN, ...)" | writeini rooms.ini %salle lang EN-CA
if ($$?!="With a bot ?") {
var %salle = $replace(%salle,room.,bot.)
writeini rooms.ini %salle gate Bot@ $+ $remove($config(serv),
writeini rooms.ini %salle nick $$?="Bot nickname ?"
writeini rooms.ini %salle opstat O
writeini rooms.ini %salle away H
writeini rooms.ini %salle profile G
writeini rooms.ini %salle ustat A
writeini rooms.ini %salle smode .
writeini rooms.ini %salle room $gettok(%salle,2,35)
}
roomsmake
}
alias remoff { var %salle = $$?="Salle ?" | remini rooms.ini room. $+ %salle | remini rooms.ini bot. $+ %salle }
ok there the whole thing