mIRCD — File Browser
mIRCDv1.0 / mIRCDv1.0 / mircd.ini
mircd.ini — 39.45 KB — Download this file
[script]
n0=on *:load: {
n1= .remote on
n2= var %count 1
n3= while $hget(%count) != $null {
n4= hfree $hget(%count)
n5= inc %count 1
n6= }
n7= .timer 1 1 f12
n8=}
n9=
n10=on *:start: {
n11= .remote on
n12= var %count 1
n13= while $hget(%count) != $null {
n14= hfree $hget(%count)
n15= inc %count 1
n16= }
n17= .remove nicks.txt
n18= .remove tmp.txt
n19= unset %nick %sock %users %c
n20=}
n21=
n22=alias f12 dialog -dm mircd mircd
n23=
n24=dialog mircd {
n25= title "mIRCD Configuration"
n26= size -1 -1 257 75
n27= option dbu
n28= button "IP", 1, 6 11 40 10
n29= edit "", 2, 52 11 71 10, disable center
n30= button "MOTD", 3, 6 27 40 10
n31= edit "", 4, 52 27 71 10, disable center
n32= edit "", 5, 52 43 71 10, disable center
n33= button "Port", 6, 6 43 40 10
n34= edit "", 7, 181 10 71 10, disable center
n35= button "Name", 8, 135 10 40 10
n36= edit "", 9, 181 25 71 10, disable center
n37= button "Email", 10, 135 25 40 10
n38= edit "", 11, 181 40 71 10, disable center
n39= button "Location", 12, 135 40 40 10
n40= edit "", 13, 52 59 71 10, disable center
n41= button "Max Users", 14, 6 59 40 10
n42= box "Server", 15, 2 1 124 72
n43= box "Admin", 16, 131 1 124 52
n44= button "OK", 17, 136 55 37 8, ok
n45= button "RELOAD", 18, 177 55 37 8
n46= button "UNLOAD", 19, 218 55 37 8
n47= button "Start mIRCD", 20, 156 66 37 8
n48= button "Stop mIRCD", 21, 198 66 37 8
n49=}
n50=
n51=on *:dialog:mircd:init:*: {
n52= if [ %mircd.ip ] != $null {
n53= did -o mircd 2 1 [ %mircd.ip ]
n54= }
n55= else {
n56= did -o mircd 2 1 N/A
n57= }
n58= if [ %mircd.motd ] != $null {
n59= did -o mircd 4 1 %mircd.motd
n60= }
n61= else {
n62= did -o mircd 4 1 N/A
n63= }
n64= if [ %mircd.port ] != $null {
n65= did -o mircd 5 1 %mircd.port
n66= }
n67= else {
n68= did -o mircd 5 1 N/A
n69= }
n70= if [ %mircd.maxusers ] != $null {
n71= did -o mircd 13 1 %mircd.maxusers
n72= }
n73= else {
n74= did -o mircd 13 1 N/A
n75= }
n76= if [ %mircd.admin.name ] != $null {
n77= did -o mircd 7 1 %mircd.admin.name
n78= }
n79= else {
n80= did -o mircd 7 1 N/A
n81= }
n82= if [ %mircd.admin.email ] != $null {
n83= did -o mircd 9 1 %mircd.admin.email
n84= }
n85= else {
n86= did -o mircd 9 1 N/A
n87= }
n88= if [ %mircd.admin.location ] != $null {
n89= did -o mircd 11 1 %mircd.admin.location
n90= }
n91= else {
n92= did -o mircd 11 1 N/A
n93= }
n94=}
n95=
n96=on *:dialog:mircd:sclick:*: {
n97= if $did == 1 {
n98= var %tmp $?="Enter Server's IP"
n99= if [ %tmp ] != $null {
n100= set %mircd.ip [ %tmp ]
n101= did -o mircd 2 1 %tmp
n102= }
n103= }
n104= if $did == 3 {
n105= var %tmp $?="Enter MOTD"
n106= if [ %tmp ] != $null {
n107= set %mircd.motd [ %tmp ]
n108= did -o mircd 4 1 %tmp
n109= }
n110= }
n111= if $did == 6 {
n112= var %tmp $?="Enter Server's Port"
n113= if [ %tmp ] != $null {
n114= set %mircd.port [ %tmp ]
n115= did -o mircd 5 1 %tmp
n116= }
n117= }
n118= if $did == 14 {
n119= var %tmp $?="Enter Server's Maximum Users"
n120= if [ %tmp ] != $null {
n121= set %mircd.maxusers [ %tmp ]
n122= did -o mircd 13 1 %tmp
n123= }
n124= }
n125= if $did == 8 {
n126= var %tmp $?="Enter Admin's Name"
n127= if [ %tmp ] != $null {
n128= set %mircd.admin.name [ %tmp ]
n129= did -o mircd 7 1 %tmp
n130= }
n131= }
n132= if $did == 10 {
n133= var %tmp $?="Enter Admin's Email"
n134= if [ %tmp ] != $null {
n135= set %mircd.admin.email [ %tmp ]
n136= did -o mircd 9 1 %tmp
n137= }
n138= }
n139= if $did == 12 {
n140= var %tmp $?="Enter Server's Location"
n141= if [ %tmp ] != $null {
n142= set %mircd.admin.location [ %tmp ]
n143= did -o mircd 11 1 %tmp
n144= }
n145= }
n146= if $did == 18 {
n147= var %count 1
n148= while $hget(%count) != $null {
n149= hfree $hget(%count)
n150= inc %count 1
n151= }
n152= .timer -m 1 50 dialog -x mircd
n153= .remove nicks.txt
n154= unset %mircd* %nick %sock %users
n155= .sockclose *
n156= .timer 1 2 .load -rs mircd.ini
n157= .unload -rs mircd.ini
n158= }
n159= if $did == 19 {
n160= var %count 1
n161= while $hget(%count) != $null {
n162= hfree $hget(%count)
n163= inc %count 1
n164= }
n165= .timer -m 1 50 dialog -x mircd
n166= .remove nicks.txt
n167= unset %mircd* %nick %sock %users
n168= .sockclose *
n169= .unload -rs mircd.ini
n170= }
n171= if $did == 20 {
n172= .sockclose *
n173= .remove nicks.txt
n174= .remove tmp.txt
n175= unset %nick %sock %users
n176= var %count 1
n177= while $hget(%count) != $null {
n178= hfree $hget(%count)
n179= inc %count 1
n180= }
n181= if [ %mircd.ip ] != $null && [ %mircd.motd ] != $null && [ %mircd.port ] != $null && [ %mircd.maxusers ] != $null && [ %mircd.admin.name ] != $null && [ %mircd.admin.email ] != $null && [ %mircd.admin.location ] != $null {
n182= echo -a mIRCD is listening for connections on port [ %mircd.port ]
n183= socklisten mircd %mircd.port
n184= }
n185= else {
n186= echo -a ERROR in Configuration!!!
n187= }
n188= }
n189= if $did == 21 {
n190= .sockclose *
n191= .remove nicks.txt
n192= .remove tmp.txt
n193= unset %nick %sock %users
n194= var %count 1
n195= while $hget(%count) != $null {
n196= hfree $hget(%count)
n197= inc %count 1
n198= }
n199= echo -a mIRCD has stoppped
n200= }
n201=}
n202=
n203=ON *:SOCKOPEN:mircd*: {
n204= if ($sockerr > 0) {
n205= echo -a $sockname Not Connected To Server
n206= return
n207= }
n208=}
n209=
n210=alias mircd {
n211= if ($sock(ircd*) != $null) echo -a mIRCD user is online
n212= elseif ($sock(ircd*) == $null) {
n213= sockopen ircd* $server $port
n214= }
n215=}
n216=
n217=ON *:SOCKREAD:mircd*: {
n218= var %mircd
n219= .sockread %mircd
n220= if NICK == $gettok(%mircd,1,32) && $chr(58) != $left($gettok(%mircd,2,32),1) {
n221= if $hget($sockname) == $null {
n222= hmake $sockname
n223= hadd $sockname nick: $+ $gettok(%mircd,2,32)
n224= hadd $sockname id: $+ $sockname
n225= }
n226= }
n227= elseif NICK == $gettok(%mircd,1,32) && $chr(58) == $left($gettok(%mircd,2,32),1) {
n228= if $hfind($sockname,channel:*,1,w) != $null {
n229= var %count4 1
n230= while %count4 <= $lines(nicks.txt) {
n231= if $read(nicks.txt, %count4) == $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1)) {
n232= sockwrite -n $sockname : $+ [ %mircd.ip ] 433 * $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1)) :Nickname is already in use.
n233= %count4 = $lines(nicks.txt)
n234= set -u2 %nick fail
n235= }
n236= inc %count4 1
n237= }
n238= if [ %nick ] != fail {
n239= var %count 1
n240= while $hfind($sockname,channel:*,%count,w) != $null {
n241= var %count2 1
n242= while $hfind($remove($hfind($sockname,channel:*,%count,w),channel:),user:*,%count2,w) != $null {
n243= var %count3 1
n244= while $hget(%count3) != $null {
n245= if $remove($hfind($remove($hfind($sockname,channel:*,%count,w),channel:),user:*,%count2,w),user:) == $remove($hfind($hget(%count3),nick:*,1,w),nick:) && $remove($hfind($hget(%count3),nick:*,1,w),nick:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n246= if $read(tmp.txt, w, * $+ $remove($hfind($hget(%count3),id:*,1,w),id:) $+ * ) != $remove($hfind($hget(%count3),id:*,1,w),id:) {
n247= write tmp.txt $remove($hfind($hget(%count3),id:*,1,w),id:)
n248= sockwrite -n $remove($hfind($hget(%count3),id:*,1,w),id:) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) NICK : $+ $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n249= }
n250= }
n251= inc %count3 1
n252= }
n253= inc %count2 1
n254= }
n255= hdel $remove($hfind($sockname,channel:*,%count,w),channel:) user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n256= hadd $remove($hfind($sockname,channel:*,%count,w),channel:) user: $+ $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n257= inc %count 1
n258= }
n259= .remove tmp.txt
n260= write -ds $+ $remove($hfind($sockname,nick:*,1,w),nick:) nicks.txt
n261= write nicks.txt $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n262= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) NICK : $+ $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n263= hdel -w $sockname nick:*
n264= hadd $sockname nick: $+ $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n265= }
n266= }
n267= else {
n268= var %count 1
n269= while %count <= $lines(nicks.txt) {
n270= if $read(nicks.txt, %count) == $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1)) {
n271= sockwrite -n $sockname : $+ [ %mircd.ip ] 433 * $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1)) :Nickname is already in use.
n272= %count = $lines(nicks.txt)
n273= set -u2 %nick fail
n274= }
n275= inc %count 1
n276= }
n277= if [ %nick ] != fail {
n278= write -ds $+ $remove($hfind($sockname,nick:*,1,w),nick:) nicks.txt
n279= write nicks.txt $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n280= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) NICK : $+ $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n281= hdel -w $sockname nick:*
n282= hadd $sockname nick: $+ $remove($gettok(%mircd,2,32),$left($gettok(%mircd,2,32),1))
n283= }
n284= }
n285= }
n286= if USER == $gettok(%mircd,1,32) {
n287= hadd $sockname host: $+ $gettok(%mircd,2,32) $+ @ $+ $sock($sockname).ip
n288= hadd $sockname realname: $+ $replace($remove($gettok(%mircd,5-,32),$left($gettok(%mircd,5,32),1)),$chr(32),^^^)
n289= hadd $sockname server: $+ $remove($gettok(%mircd,4,32),")
n290= var %count 1
n291= while %count <= $lines(nicks.txt) {
n292= if $read(nicks.txt, %count) == $remove($hfind($sockname,nick:*,1,w),nick:) {
n293= sockwrite -n $sockname : $+ [ %mircd.ip ] 433 * $remove($hfind($sockname,nick:*,1,w),nick:) :Nickname is already in use.
n294= var %nick XXX- $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9) $+ $rand(0,9)
n295= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) NICK : $+ [ %nick ]
n296= hdel -w $sockname nick:*
n297= hadd $sockname nick: $+ %nick
n298= %count = $lines(nicks.txt)
n299= set -u2 %nick fail
n300= }
n301= inc %count 1
n302= }
n303= if [ %nick ] != fail {
n304= write nicks.txt $remove($hfind($sockname,nick:*,1,w),nick:)
n305= }
n306= set -u2 %sock $sockname
n307= welcome
n308= }
n309= if QUIT == $gettok(%mircd,1,32) {
n310= if $hfind($sockname,channel:*,1,w) != $null {
n311= var %count 1
n312= while $hfind($sockname,channel:*,%count,w) != $null {
n313= var %count2 1
n314= while $hfind($remove($hfind($sockname,channel:*,%count,w),channel:),user:*,%count2,w) != $null {
n315= var %count3 1
n316= while $hget(%count3) != $null {
n317= if $remove($hfind($remove($hfind($sockname,channel:*,%count,w),channel:),user:*,%count2,w),user:) == $remove($hfind($hget(%count3),nick:*,1,w),nick:) && $remove($hfind($hget(%count3),nick:*,1,w),nick:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n318= sockwrite -n $remove($hfind($hget(%count3),id:*,1,w),id:) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) QUIT :Quit: $remove($gettok(%mircd,2-,32),$left($gettok(%mircd,2-,32),1))
n319= }
n320= inc %count3 1
n321= }
n322= inc %count2 1
n323= }
n324= inc %count 1
n325= }
n326= }
n327= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) QUIT :Quit: $remove($gettok(%mircd,2-,32),$left($gettok(%mircd,2-,32),1))
n328= write -ds $+ $remove($hfind($sockname,nick:*,1,w),nick:) nicks.txt
n329= var %count 1
n330= while $hfind($sockname,channel:*,%count,w) != $null {
n331= set -u2 %users $remove($hfind($hget($remove($hfind($sockname,channel:*,%count,w),channel:)),users:*,1,w),users:)
n332= hdel -w $remove($hfind($sockname,channel:*,%count,w),channel:) users:*
n333= hdel $remove($hfind($sockname,channel:*,%count,w),channel:) user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n334= hadd $remove($hfind($sockname,channel:*,%count,w),channel:) users: $+ $calc(%users - 1)
n335= if $remove($hfind($remove($hfind($sockname,channel:*,%count,w),channel:),users:*,1,w),users:) == 0 {
n336= hfree $remove($hfind($sockname,channel:*,%count,w),channel:)
n337= }
n338= inc %count 1
n339= }
n340= hfree $sockname
n341= sockclose $sockname
n342= }
n343= if WHOIS == $gettok(%mircd,1,32) && $gettok(%mircd,1,32) != $null {
n344= var %count 1
n345= unset %chans
n346= while $hget(%count) != $null {
n347= if $gettok(%mircd,2,32) == $remove($hfind($hget(%count),nick:*,1,w),nick:) {
n348= sockwrite -n $sockname : $+ [ %mircd.ip ] 311 $remove($hfind($hget(%count),nick:*,1,w),nick:) $gettok(%mircd,2,32) $gettok($remove($hfind($hget(%count),host:*,1,w),host:),1,64) $gettok($remove($hfind($hget(%count),host:*,1,w),host:),2,64) * : $+ $replace($remove($hfind($hget(%count),realname:*,1,w),realname:),^^^,$chr(32))
n349= if $hfind($hget(%count),channel:*,1,w) != $null {
n350= var %count2 1
n351= while $hfind($hget(%count),channel:*,%count2,w) != $null && $hfind($hget(%count),channel:*,%count2,w) != 0 {
n352= if [ %chans ] == $null {
n353= set %chans $remove($hfind($hget(%count),channel:*,%count2,w),channel:)
n354= }
n355= else {
n356= set %chans [ %chans ] $remove($hfind($hget(%count),channel:*,%count2,w),channel:)
n357= }
n358=
n359= inc %count2 1
n360= }
n361= sockwrite -n $sockname : $+ [ %mircd.ip ] 319 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) : $+ [ %chans ]
n362= }
n363= sockwrite -n $sockname : $+ [ %mircd.ip ] 312 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) :mIRCD Server - Sockets Rule!
n364= if $hfind($hget(%count),away:*,1,w) != $null {
n365= sockwrite -n $sockname : $+ [ %mircd.ip ] 301 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) : $+ $replace($remove($hfind($hget(%count),away:*,1,w),away:),^^^,$chr(32))
n366= }
n367= sockwrite -n $sockname : $+ [ %mircd.ip ] 318 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) :End of /WHOIS list.
n368= %count = 10000
n369= }
n370= elseif $hget($calc(%count + 1)) == $null {
n371= sockwrite -n $sockname : $+ [ %mircd.ip ] 401 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) :No such nick/channel
n372= sockwrite -n $sockname : $+ [ %mircd.ip ] 318 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) :End of /WHOIS list.
n373= }
n374= inc %count 1
n375= }
n376= }
n377= if JOIN == $gettok(%mircd,1,32) {
n378= if ,# isin $gettok(%mircd,2,32) {
n379= set %chans $replace($gettok(%mircd,2,32),$chr(44),$chr(32))
n380= set %c 1
n381= while $gettok(%chans,%c,32) != $null {
n382= set %chan $gettok(%chans, %c, 32)
n383= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) JOIN : $+ %chan
n384= hadd $sockname channel: $+ %chan
n385= if $hget(%chan) == $null {
n386= hmake %chan
n387= hadd %chan user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n388= hadd %chan users:1
n389= }
n390= else {
n391= hadd %chan user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n392= var %users $remove($hfind(%chan,users:*,1,w),users:)
n393= hdel -w %chan users:*
n394= hadd %chan users: $+ $calc(%users + 1)
n395= var %count 1
n396= while $hfind(%chan,user:*,%count,w) != $null {
n397= if $remove($hfind(%chan,user:*,%count,w),user:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n398= var %count2 1
n399= while %count2 <= 10000 {
n400= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind(%chan,user:*,%count,w),user:) {
n401= sockwrite -n $remove($hfind($hget(%count2),id:*,1,w),id:) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) JOIN : $+ %chan
n402= %count2 = 10000
n403= }
n404= inc %count2 1
n405= }
n406= }
n407= inc %count 1
n408= }
n409= var %count 1
n410= unset %users*
n411= while %count <= [ %mircd.maxusers ] {
n412= if [ %users.temp ] == $null {
n413= set -u2 %users.temp $remove($hfind(%chan,user:*,%count,w),user:)
n414= }
n415= else {
n416= set -u2 %users.temp [ %users.temp ] $remove($hfind(%chan,user:*,%count,w),user:)
n417= }
n418= inc %count 1
n419= }
n420= sockwrite -n $sockname : $+ [ %mircd.ip ] 353 $remove($hfind($sockname,nick:*,1,w),nick:) [ $chr(64) ] [ %chan ] : $+ [ %users.temp ]
n421= sockwrite -n $sockname : $+ [ %mircd.ip ] 366 $remove($hfind($sockname,nick:*,1,w),nick:) [ %chan ] :End of /NAMES list.
n422= }
n423= inc %c 1
n424= }
n425= unset %c*
n426= }
n427= else {
n428= if $left($gettok(%mircd,2,32),1) != $chr(35) {
n429= var %chan $chr(35) $+ $gettok(%mircd,2,32)
n430= }
n431= else {
n432= var %chan $gettok(%mircd,2,32)
n433= }
n434= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) JOIN : $+ %chan
n435= hadd $sockname channel: $+ %chan
n436= if $hget(%chan) == $null {
n437= hmake %chan
n438= hadd %chan user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n439= hadd %chan users:1
n440= }
n441= else {
n442= hadd %chan user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n443= var %users $remove($hfind(%chan,users:*,1,w),users:)
n444= hdel -w %chan users:*
n445= hadd %chan users: $+ $calc(%users + 1)
n446= var %count 1
n447= while $hfind(%chan,user:*,%count,w) != $null {
n448= if $remove($hfind(%chan,user:*,%count,w),user:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n449= var %count2 1
n450= while %count2 <= 10000 {
n451= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind(%chan,user:*,%count,w),user:) {
n452= sockwrite -n $remove($hfind($hget(%count2),id:*,1,w),id:) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) JOIN : $+ %chan
n453= %count2 = 10000
n454= }
n455= inc %count2 1
n456= }
n457= }
n458= inc %count 1
n459= }
n460= var %count 1
n461= unset %users
n462= while %count <= [ %mircd.maxusers ] {
n463= if [ %users.temp ] == $null {
n464= set -u2 %users.temp $remove($hfind(%chan,user:*,%count,w),user:)
n465= }
n466= else {
n467= set -u2 %users.temp [ %users.temp ] $remove($hfind(%chan,user:*,%count,w),user:)
n468= }
n469= inc %count 1
n470= }
n471= sockwrite -n $sockname : $+ [ %mircd.ip ] 353 $remove($hfind($sockname,nick:*,1,w),nick:) [ $chr(64) ] [ %chan ] : $+ [ %users.temp ]
n472= sockwrite -n $sockname : $+ [ %mircd.ip ] 366 $remove($hfind($sockname,nick:*,1,w),nick:) [ %chan ] :End of /NAMES list.
n473= }
n474= }
n475= }
n476= if PART == $gettok(%mircd,1,32) {
n477= if ,# isin $gettok(%mircd,2,32) {
n478= set %chans $replace($gettok(%mircd,2,32),$chr(44),$chr(32))
n479= set %c 1
n480= while $gettok(%chans,%c,32) != $null {
n481= set %chan $gettok(%chans, %c, 32)
n482= if $hget(%chan) != $null {
n483= hdel %chan user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n484= var %users $remove($hfind(%chan,users:*,1,w),users:)
n485= hdel -w %chan users:*
n486= hadd %chan users: $+ $calc(%users - 1)
n487= if $remove($hfind(%chan,users:*,1,w),users:) == 0 {
n488= hfree %chan
n489= }
n490= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PART : $+ %chan
n491= hdel $sockname channel: $+ %chan
n492= var %count 1
n493= while $hfind(%chan,user:*,%count,w) != $null {
n494= var %count2 1
n495= while %count2 <= 10000 {
n496= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind(%chan,user:*,%count,w),user:) {
n497= sockwrite -n $hget(%count2) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PART : $+ %chan
n498= %count2 = 10000
n499= }
n500= inc %count2 1
n501= }
n502= inc %count 1
n503= }
n504= }
n505= inc %c 1
n506= }
n507= unset %c*
n508= }
n509= else {
n510= if $left($gettok(%mircd,2,32),1) != $chr(35) {
n511= var %chan $chr(35) $+ $gettok(%mircd,2,32)
n512= }
n513= else {
n514= var %chan $gettok(%mircd,2,32)
n515= }
n516= if $hget(%chan) != $null {
n517= hdel %chan user: $+ $remove($hfind($sockname,nick:*,1,w),nick:)
n518= var %users $remove($hfind(%chan,users:*,1,w),users:)
n519= hdel -w %chan users:*
n520= hadd %chan users: $+ $calc(%users - 1)
n521= if $remove($hfind(%chan,users:*,1,w),users:) == 0 {
n522= hfree %chan
n523= }
n524= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PART : $+ %chan
n525= hdel $sockname channel: $+ %chan
n526= var %count 1
n527= while $hfind(%chan,user:*,%count,w) != $null {
n528= var %count2 1
n529= while %count2 <= 10000 {
n530= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind(%chan,user:*,%count,w),user:) {
n531= sockwrite -n $hget(%count2) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PART : $+ %chan
n532= %count2 = 10000
n533= }
n534= inc %count2 1
n535= }
n536= inc %count 1
n537= }
n538= }
n539= }
n540= }
n541= if PRIVMSG == $gettok(%mircd,1,32) {
n542= if ,# isin $gettok(%mircd,2,32) {
n543= set %chans $replace($gettok(%mircd,2,32),$chr(44),$chr(32))
n544= set %c 1
n545= while $gettok(%chans,%c,32) != $null {
n546= set %chan $gettok(%chans, %c, 32)
n547= if $left(%chan,1) == $chr(35) {
n548= if $remove($hfind(%chan,users:*,1,w),users:) > 1 {
n549= var %count 1
n550= while $hfind(%chan,user:*,%count,w) != $null {
n551= if $remove($hfind(%chan,user:*,%count,w),user:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n552= var %count2 1
n553= while %count2 <= 10000 {
n554= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind(%chan,user:*,%count,w),user:) {
n555= sockwrite -n $hget(%count2) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PRIVMSG [ %chan ] $gettok(%mircd,3-,32)
n556= %count2 = 10000
n557= }
n558= inc %count2 1
n559= }
n560= }
n561= inc %count 1
n562= }
n563= }
n564= }
n565= else {
n566= var %count 1
n567= while %count <= 10000 {
n568= if $remove($hfind($hget(%count),nick:*,1,w),nick:) == %chan {
n569= sockwrite -n $hget(%count) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PRIVMSG [ %chan ] $gettok(%mircd,3-,32)
n570= %count = 10000
n571= }
n572= inc %count 1
n573= }
n574= }
n575= inc %c 1
n576= }
n577= unset %c %chan %chans
n578= }
n579= else {
n580= if $left($gettok(%mircd,2,32),1) == $chr(35) {
n581= if $remove($hfind($gettok(%mircd,2,32),users:*,1,w),users:) > 1 {
n582= var %count 1
n583= while $hfind($gettok(%mircd,2,32),user:*,%count,w) != $null {
n584= if $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n585= var %count2 1
n586= while %count2 <= 10000 {
n587= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:) {
n588= sockwrite -n $hget(%count2) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PRIVMSG $gettok(%mircd,2,32) $gettok(%mircd,3-,32)
n589= %count2 = 10000
n590= }
n591= inc %count2 1
n592= }
n593= }
n594= inc %count 1
n595= }
n596= }
n597= }
n598= else {
n599= if , isin $gettok(%mircd,2,32) {
n600= set %nicks $replace($gettok(%mircd,2,32),$chr(44),$chr(32))
n601= set %c 1
n602= while $gettok(%nicks,%c,32) != $null {
n603= set %nick $gettok(%nicks,%c,32)
n604= var %count 1
n605= while $hget(%count) != $null {
n606= if [ %nick ] == $remove($hfind($hget(%count),nick:*,1,w),nick:) {
n607= sockwrite -n $hget(%count) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PRIVMSG [ %nick ] $gettok(%mircd,3-,32)
n608= %count = 10000
n609= }
n610= inc %count 1
n611= }
n612= inc %c 1
n613= }
n614= unset %c %nick %nicks
n615= }
n616= else {
n617= var %count 1
n618= while %count <= 10000 {
n619= if $remove($hfind($hget(%count),nick:*,1,w),nick:) == $gettok(%mircd,2,32) {
n620= sockwrite -n $hget(%count) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) PRIVMSG $gettok(%mircd,2,32) $gettok(%mircd,3-,32)
n621= %count = 10000
n622= }
n623= inc %count 1
n624= }
n625= }
n626= }
n627= }
n628= }
n629= if MOTD == $gettok(%mircd,1,32) {
n630= set -u2 %sock $sockname
n631= motd
n632= }
n633= if USERS == $gettok(%mircd,1,32) {
n634= var %count 1
n635= set -u2 %users 0
n636= while $hget(%count) != $null {
n637= if $left($hget(%count),1) != $chr(35) {
n638= inc %users 1
n639= }
n640= inc %count 1
n641= }
n642= sockwrite -n $sockname : $+ [ %mircd.ip ] 265 $remove($hfind($sockname,nick:*,1,w),nick:) :Current local users: [ %users ] Max: [ %mircd.maxusers ]
n643= }
n644= if VERSION == $gettok(%mircd,1,32) {
n645= sockwrite -n $sockname : $+ [ %mircd.ip ] 351 $remove($hfind($sockname,nick:*,1,w),nick:) : $+ mIRCD v1.0 [ $chr(64) ] $remove($hfind($sockname,server:*,1,w),server:) by linel0k
n646= }
n647= if ADMIN == $gettok(%mircd,1,32) {
n648= sockwrite -n $sockname : $+ [ %mircd.ip ] 256 $remove($hfind($sockname,nick:*,1,w),nick:) :Administrative info about [ %mircd.ip ]
n649= sockwrite -n $sockname : $+ [ %mircd.ip ] 257 $remove($hfind($sockname,nick:*,1,w),nick:) : $+ [ %mircd.admin.location ]
n650= sockwrite -n $sockname : $+ [ %mircd.ip ] 258 $remove($hfind($sockname,nick:*,1,w),nick:) :Admin - [ %mircd.admin.name ] $+ ( $+ [ %mircd.admin.email ] $+ )
n651= }
n652= if NOTICE == $gettok(%mircd,1,32) {
n653= if $left($gettok(%mircd,2,32),1) == $chr(35) {
n654= if $remove($hfind($gettok(%mircd,2,32),users:*,1,w),users:) > 1 {
n655= var %count 1
n656= while $hfind($gettok(%mircd,2,32),user:*,%count,w) != $null {
n657= if $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n658= var %count2 1
n659= while %count2 <= 10000 {
n660= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:) {
n661= sockwrite -n $hget(%count2) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) NOTICE $gettok(%mircd,2,32) $gettok(%mircd,3-,32)
n662= %count2 = 10000
n663= }
n664= inc %count2 1
n665= }
n666= }
n667= inc %count 1
n668= }
n669= }
n670= }
n671= else {
n672= var %count 1
n673= while %count <= 10000 {
n674= if $remove($hfind($hget(%count),nick:*,1,w),nick:) == $gettok(%mircd,2,32) {
n675= sockwrite -n $hget(%count) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) NOTICE $gettok(%mircd,2,32) $gettok(%mircd,3-,32)
n676= %count = 10000
n677= }
n678= inc %count 1
n679= }
n680= }
n681= }
n682= if LIST == $gettok(%mircd,1,32) {
n683= sockwrite -n $sockname : $+ [ %mircd.ip ] 321 $remove($hfind($sockname,nick:*,1,w),nick:) :Channel Users Name
n684= set %count 1
n685= while $hget(%count) != $null {
n686= if $chr(35) == $left($hget(%count),1) {
n687= sockwrite -n $sockname : $+ [ %mircd.ip ] 322 $remove($hfind($sockname,nick:*,1,w),nick:) $hget(%count) $remove($hfind($hget(%count),users:*,1,w),users:) : $+ $iif($hfind($hget(%count),topic:*,1,w),$replace($remove($hfind($hget(%count),topic:*,1,w),topic:),^^^,$chr(32)))
n688= }
n689= inc %count 1
n690= }
n691= sockwrite -n $sockname : $+ [ %mircd.ip ] 323 $remove($hfind($sockname,nick:*,1,w),nick:) :End of /LIST
n692= }
n693= if TOPIC == $gettok(%mircd,1,32) && $chr(35) == $left($gettok(%mircd,2,32),1) && $gettok(%mircd,3,32) != $null {
n694= if $remove($hfind($gettok(%mircd,2,32),users:*,1,w),users:) > 1 {
n695= var %count 1
n696= while $hfind($gettok(%mircd,2,32),user:*,%count,w) != $null {
n697= if $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:) != $remove($hfind($sockname,nick:*,1,w),nick:) {
n698= var %count2 1
n699= while %count2 <= 10000 {
n700= if $remove($hfind($hget(%count2),nick:*,1,w),nick:) == $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:) {
n701= sockwrite -n $hget(%count2) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) TOPIC $gettok(%mircd,2,32) $gettok(%mircd,3-,32)
n702= %count2 = 10000
n703= }
n704= inc %count2 1
n705= }
n706= }
n707= inc %count 1
n708= }
n709= }
n710= sockwrite -n $sockname : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) TOPIC $gettok(%mircd,2,32) $gettok(%mircd,3-,32)
n711= hdel -w $gettok(%mircd,2,32) topic:*
n712= hadd $gettok(%mircd,2,32) topic: $+ $replace($remove($gettok(%mircd,3-,32),$left($gettok(%mircd,3,32),1)),$chr(32),^^^)
n713= }
n714= if AWAY == $gettok(%mircd,1,32) {
n715= if $gettok(%mircd,2,32) != $null {
n716= hdel -w $sockname away:*
n717= hadd $sockname away: $+ $replace($remove($gettok(%mircd,2-,32),$left($gettok(%mircd,2,32),1)),$chr(32),^^^)
n718= sockwrite -nt $sockname : $+ [ %mircd.ip ] 306 $remove($hfind($sockname,nick:*,1,w),nick:) :You have been marked as being away
n719= }
n720= else {
n721= hdel -w $sockname away:*
n722= sockwrite -nt $sockname : $+ [ %mircd.ip ] 305 $remove($hfind($sockname,nick:*,1,w),nick:) :You are no longer marked as being away
n723= }
n724= }
n725= if INVITE == $gettok(%mircd,1,32) && $gettok(%mircd,2,32) != $null && $gettok(%mircd,3,32) != $null && $chr(35) == $left($gettok(%mircd,3,32),1) {
n726= var %count 1
n727= if $hfind($gettok(%mircd,3,32),user: $+ $remove($hfind($sockname,nick:*,1,w),nick:),1) != $null {
n728= unset %sock
n729= var %count 1
n730= unset %mircd.flag
n731= while $hget(%count) != $null {
n732= if $gettok(%mircd,2,32) != $remove($hfind($hget(%count),nick:*,1,w),nick:) {
n733= set %mircd.flag 1
n734= }
n735= else {
n736= unset %mircd.flag
n737= set %sock [ %count ]
n738= %count = 10000
n739= }
n740= inc %count 1
n741= }
n742= if [ %mircd.flag ] == $null {
n743= var %count 1
n744= while $hfind($gettok(%mircd,3,32),user:*,%count,w) != $null {
n745= if $gettok(%mircd,2,32) != $remove($hfind($gettok(%mircd,3,32),user:*,%count,w),user:) {
n746= unset %mircd.flag
n747= }
n748= else {
n749= set %mircd.flag 1
n750= %count = 10000
n751= }
n752= inc %count 1
n753= }
n754= if %mircd.flag == $null {
n755= sockwrite -n $sockname : $+ [ %mircd.ip ] 341 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) $gettok(%mircd,3,32)
n756= sockwrite -n $hget(%sock) : $+ $remove($hfind($sockname,nick:*,1,w),nick:) $+ ! $+ $remove($hfind($sockname,host:*,1,w),host:) INVITE $gettok(%mircd,2,32) $gettok(%mircd,3,32)
n757= }
n758= else {
n759= sockwrite -n $sockname : $+ [ %mircd.ip ] 443 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) $gettok(%mircd,3,32) :is already on channel
n760= }
n761= }
n762= else {
n763= sockwrite -n $sockname : $+ [ %mircd.ip ] 401 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) :No such nick/channel
n764= }
n765= }
n766= else {
n767= sockwrite -n $sockname : $+ [ %mircd.ip ] 442 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,3,32) :You're not on that channel
n768= }
n769= unset %sock
n770= }
n771= if NAMES == $gettok(%mircd,1,32) && $gettok(%mircd,2,32) != $null && $chr(35) == $left($gettok(%mircd,2,32),1) {
n772= var %count 1
n773= unset %users*
n774= while %count <= [ %mircd.maxusers ] {
n775= if [ %users.temp ] == $null {
n776= set -u2 %users.temp $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:)
n777= }
n778= else {
n779= set -u2 %users.temp [ %users.temp ] $remove($hfind($gettok(%mircd,2,32),user:*,%count,w),user:)
n780= }
n781= inc %count 1
n782= }
n783= if [ %users.temp ] != $null {
n784= sockwrite -n $sockname : $+ [ %mircd.ip ] 353 $remove($hfind($sockname,nick:*,1,w),nick:) [ $chr(64) ] $gettok(%mircd,2,32) : $+ [ %users.temp ]
n785= }
n786= sockwrite -n $sockname : $+ [ %mircd.ip ] 366 $remove($hfind($sockname,nick:*,1,w),nick:) $gettok(%mircd,2,32) :End of /NAMES list.
n787= unset %users*
n788= }
n789=}
n790=
n791=on *:socklisten:mircd: {
n792= var %count 1
n793= set -u2 %users 0
n794= while $hget(%count) != $null {
n795= if $left($hget(%count),1) != $chr(35) {
n796= inc %users 1
n797= }
n798= inc %count 1
n799= }
n800= if [ %users ] < [ %mircd.maxusers ] && [ %users ] != 0 {
n801= %count = 1
n802= set -u3 %sock mircduser $+ $rand(1,999)
n803= while $hget(%count) != $null {
n804= if $chr(35) != $left($hget(%count),1) {
n805= if [ %sock ] == $hget(%count) {
n806= set -u3 %sock ircduser $+ $rand(1,999)
n807= %count = 1
n808= }
n809= else {
n810= inc %count 1
n811= if $hget(%count) == $null {
n812= sockaccept %sock
n813= }
n814= }
n815= }
n816= else {
n817= inc %count 1
n818= if $hget(%count) == $null {
n819= sockaccept %sock
n820= }
n821= }
n822= }
n823= }
n824= elseif [ %users ] == 0 {
n825= sockaccept mircduser $+ $rand(1,999)
n826= }
n827=}
n828=
n829=alias welcome {
n830= sockwrite -n %sock : $+ [ %mircd.ip ] 001 $remove($hfind(%sock,nick:*,1,w),nick:) :Welcome to the mIRCD IRC Network $remove($hfind(%sock,nick:*,1,w),nick:) $+ ! $+ $remove($hfind(%sock,host:*,1,w),host:)
n831= sockwrite -n %sock : $+ [ %mircd.ip ] 002 $remove($hfind(%sock,nick:*,1,w),nick:) :Your host is $remove($hfind(%sock,server:*,1,w),server:) running mIRCD v1.0
n832= sockwrite -n %sock : $+ [ %mircd.ip ] 003 $remove($hfind(%sock,nick:*,1,w),nick:) :This server was created 2/8/04
n833= var %count 1
n834= unset %users
n835= unset %chans
n836= set -u2 %users 0
n837= set -u2 %chans 0
n838= while $hget(%count) != $null {
n839= if $left($hget(%count),1) == $chr(35) {
n840= inc %chans 1
n841= }
n842= else {
n843= inc %users 1
n844= }
n845= inc %count 1
n846= }
n847= if [ %chans ] == 0 || [ %chans ] > 1 {
n848= sockwrite -n %sock : $+ [ %mircd.ip ] 254 $remove($hfind(%sock,nick:*,1,w),nick:) : $+ [ %chans ] channels formed
n849= }
n850= elseif [ %chans ] == 1 {
n851= sockwrite -n %sock : $+ [ %mircd.ip ] 254 $remove($hfind(%sock,nick:*,1,w),nick:) : $+ [ %chans ] channel formed
n852= }
n853= sockwrite -n %sock : $+ [ %mircd.ip ] 265 $remove($hfind(%sock,nick:*,1,w),nick:) :Current local users: [ %users ] Max: [ %mircd.maxusers ]
n854= motd
n855=}
n856=
n857=alias motd {
n858= sockwrite -n %sock : $+ [ %mircd.ip ] 375 $remove($hfind(%sock,nick:*,1,w),nick:) :- [ %mircd.ip ] Message of the Day -
n859= sockwrite -n %sock : $+ [ %mircd.ip ] 372 $remove($hfind(%sock,nick:*,1,w),nick:) : $+ [ %mircd.motd ]
n860= sockwrite -n %sock : $+ [ %mircd.ip ] 372 $remove($hfind(%sock,nick:*,1,w),nick:) :Commands you can use:
n861= sockwrite -n %sock : $+ [ %mircd.ip ] 372 $remove($hfind(%sock,nick:*,1,w),nick:) :NICK, QUIT, WHOIS, JOIN, PART, PRIVMSG, NOTICE, MOTD, USERS, NAMES
n862= sockwrite -n %sock : $+ [ %mircd.ip ] 372 $remove($hfind(%sock,nick:*,1,w),nick:) :VERSION, ADMIN, LIST, TOPIC, AWAY, INVITE, AME, AMSG, QMSG
n863= sockwrite -n %sock : $+ [ %mircd.ip ] 372 $remove($hfind(%sock,nick:*,1,w),nick:) :-
n864= sockwrite -n %sock : $+ [ %mircd.ip ] 376 $remove($hfind(%sock,nick:*,1,w),nick:) :End of /MOTD command.
n865=}