mIRC IRCd Server

IRCd Server

alias admin { return BURIAL }
alias slogan { return Server In Hell }
alias dc { return 09/09/2004 }
alias servername { return 127.0.0.1 }
alias welcome {
  sockwrite -n $1 : $+ 127.0.0.1 001 $1 :Welcome to Sux IRC Server!
  sockwrite -n $1 : $+ 127.0.0.1 002 $1 :Your host is $sock($sockname).ip
  sockwrite -n $1 : $+ 127.0.0.1 003 $1 :This server was created on $dc
  sockwrite -n $1 : $+ 127.0.0.1 251 $1 :There are $calc($sock(*,0)-5) user(s)
  sockwrite -n $1 : $+ 127.0.0.1 254 $1 :0 channel(s) formed
  sockwrite -n $1 : $+ 127.0.0.1 250 $1 :Total connections: $sock(*,0)
  sockwrite -n $1 : $+ 127.0.0.1 391 $1 : $+ [ $servername ] Thu Sep $date
  sockwrite -n $1 : $+ 127.0.0.1 375 $1 :- $servername Message of the day -
  motd $1
}
alias motd {
  if ($1) {
    var %ob6to = $lines(motd.txt)
    while (%ha != %ob6to) {
      inc %ha
      sockwrite -n $1 : $+ 127.0.0.1 372 $1 : - [ $read(motd.txt, g, %ha) ]
    }
    unset %ha
    sockwrite -n $1 : $+ 127.0.0.1 376 $1 :End of /MOTD command
  }
}
alias snotice {
  if ($1) {
    sockwrite -n $1 notice :-= [ SERVER MESSAGE ] =-
    var %ob6to = $lines(motd.txt)
    while (%ha != %ob6to) {
      inc %ha
      sockwrite -n $1 notice : $+ $read(motd.txt, g, %ha)
    }
    unset %ha
    sockwrite -n $1 notice :-= [ END OF MOTD ] =-
  }
}
alias ser {
  .hmake ircd 1000
  .hmake join 10000
  .hmake chan 10000
  socklisten server1 4000
  socklisten server2 6667
  socklisten server3 6668
  socklisten server4 6669
  socklisten server5 7000
  echo -a Server stared
  socklist
}
on *:SOCKLISTEN:*:{
  sockaccept user
  sockwrite -n user notice :Welcome to Sux IRC Network!
  sockwrite -n user notice :Listening on port 4000,6667,6668,6669,7000
  sockwrite -n user notice :Total users online: $calc($sock(*,0)-5)
  sockwrite -n user notice :Type /info for help
}
on *:SOCKCLOSE:*:{ sockwrite -n * $sockname has quit }
on *:SOCKREAD:*:{
  sockread %temp
  if ($sock(*,0) >= $hget(ircd).size) {
    sockwrite -n $sockname notice :The server is full ( $+ $hget(ircd).size users).Try again later.
    sockclose $sockname
    return
  }
  if ($gettok(%temp,1,32) == NICK) {
    if ($sock($sockname) == user) {
      if ($sock($remove($gettok(%temp,2,32),:)) == $remove($gettok(%temp,2,32),:)) {
        sockwrite -n $sockname notice :This nickname is being used by someone else.Please change it and connect again.
        sockclose $sockname
        return
      }
      sockrename $sockname $remove($gettok(%temp,2,32),:)
      welcome $sockname
      snotice $sockname
      sockwrite -n * notice : $+   $+ $sockname $+  ( $+ $sock($sockname).ip $+ ) has joined the party line
      return
    }
    else {
      if ($sock($remove($gettok(%temp,2,32),:)) != $remove($gettok(%temp,2,32),:)) {
        var %nick = $remove($sockname,:)
        sockwrite -n $sockname : $+ $sockname NICK : $+ $remove($gettok(%temp,2,32),:)
        hadd ircd $remove($gettok(%temp,2,32),:) $gettok($hget(ircd,$sockname),1,32) $gettok($hget(ircd,$sockname),2-,32)
        hdel ircd $sockname
        sockrename $sockname $remove($gettok(%temp,2,32),:)
        sockwrite -n * notice : $+   $+ %nick $+  has changed his nickname to  $+ $sockname $+ 
        return
      }
      else { sockwrite -n $sockname :This nickname  $+ $remove($gettok(%temp,2,32),:) $+  is busy.Try other. | return }
    }
  }
  if ($gettok(%temp,1,32) == QUIT) {
    hdel ircd $sockname
    sockwrite -n * notice : $+  $+ $sockname $+  ( $+ $sock($sockname).ip $+ ) has quit ( $+ $remove($gettok(%temp,2-,32),:) $+ )
    sockclose $sockname
    return
  }
  if ($gettok(%temp,1,32) == PING) { sockwrite -n $sockname PONG :What? | return }
  if ($gettok(%temp,1,32) == WHOIS) {
    if ($sock($gettok(%temp,2,32),n) == 1) {

      sockwrite -n $sockname : $+ 127.0.0.1 311 $sockname $+ : $+ $gettok(%temp,2,32) $gettok(%temp,2,32) $gettok($hget(ircd,$gettok(%temp,2,32)),1,64) $gettok($gettok($hget(ircd,$gettok(%temp,2,32)),2,64),1,32) $gettok($hget(ircd,$gettok(%temp,2,32)),2-,32)

      if ($hget(join,$gettok(%temp,2,32))) {
        sockwrite -n $sockname : $+ 127.0.0.1 319 $sockname $+ : $+ $gettok(%temp,2,32) $gettok(%temp,2,32) : $+ [ $hget(join,$gettok(%temp,2,32)) ]
      }
      sockwrite -n $sockname : $+ 127.0.0.1 312 $sockname $+ : $+ $gettok(%temp,2,32) $gettok(%temp,2,32) :using 127.0.0.1 ( $+ $slogan $+ )
      sockwrite -n $sockname : $+ 127.0.0.1 317 $sockname $+ : $+ $gettok(%temp,2,32) $gettok(%temp,2,32) $sock($gettok(%temp,2,32)).ls 
      sockwrite -n $sockname : $+ 127.0.0.1 318 $sockname $+ : $+ $gettok(%temp,2,32) $gettok(%temp,2,32) :End of /WHOIS list.

      if ($gettok(%temp,2,32) == $admin) {
        sockwrite -n $admin notice : $+ $sockname $+  just kiss your ass.
        return
      }
      return
    }
    else { sockwrite -n $sockname :No Such Nick  $+ $gettok(%temp,2,32) $+  | return }
  }
  if ($gettok(%temp,1,32) == PRIVMSG) {
    if ($sock($gettok(%temp,2,32),n) == 1) {
      sockwrite -n $gettok(%temp,2,32) : $+ $sockname $+ ! $+ $gettok($hget(ircd,$sockname),1,32) privmsg $gettok(%temp,2,32) : $+ $gettok($gettok(%temp,3-,32),1-,58)
      return
    }
    else { sockwrite -n $sockname :No Such Nick  $+ $gettok(%temp,2,32) $+  | return }
  }
  if ($gettok(%temp,1,32) == INFO) {
    sockwrite -n $sockname :Available commands: "/lusers" "/nick" "/quit" "/whois" "/x <nick> <message>"
    sockwrite -n $sockname :mIRC Server written by BURIAL.You have dumb questions just like the whole server?Mail me at slipknot@starazagora.net
  }
  if ($gettok(%temp,1,32) == LUSERS) {
    sockwrite -n $sockname : $+ 127.0.0.1 372 $sockname : $+ There are $calc($sock(*,0)-5) user(s) online and 5 invisible on 1 server
    sockwrite -n $sockname : $+ 127.0.0.1 250 $sockname :-
    return
  }
  if ($gettok(%temp,1,32) == ISON) {
    var %skiv = 0
    var %text = $gettok(%temp,2-,32)
    var %total = $gettok($gettok(%temp,2-,32),0,32)
    while (%skiv != %total) {
      inc %skiv
      if ($sock($gettok($gettok(%temp,2-,32),%skiv,32)) == $gettok($gettok(%temp,2-,32),%skiv,32)) {
        sockwrite -n $sockname :* $gettok($gettok(%temp,2-,32),%skiv,32) is on IRC
      }
    }
    return
  }
  if ($gettok(%temp,1,32) == JOIN) {
    sockwrite -n $sockname : $+ 127.0.0.1 366 $sockname $gettok(%temp,2,32) :End of /NAMES list.
    hadd join $sockname $hget(join,$sockname) $gettok(%temp,2,32)
    sockwrite -n $sockname : $+ $sockname JOIN $gettok(%temp,2,32)
    hadd chan $gettok(%temp,2,32) $hget(chan,$gettok(%temp,2,32)) $sockname


    var %tot = $gettok($hget(chan,$gettok(%temp,2,32)),*,32)
    var %fak = 0
    while (%tot != %fak) {
      inc %fak
      sockwrite -n $gettok($hget(chan,$gettok(%temp,2,32)),%fak,32) : $+ 127.0.0.1 353 $gettok($hget(chan,$gettok(%temp,2,32)),%fak,32) = $gettok(%temp,2,32) : $+ $hget(chan,$gettok(%temp,2-,32))
    }


  }
  if ($gettok(%temp,1,32) == PART) {
    var %chans = $hget(join, $sockname)
    var %users = $hget(chan,$gettok(%temp,2,32))

    hdel chan $gettok(%temp,2,32)
    hadd chan $gettok(%temp,2,32) $remove(%users,$sockname)

    hdel join $sockname
    hadd join $sockname $remove(%chans,$gettok(%temp,2,32))

    echo -a VSI4KO: $gettok($hget(chan, $gettok(%temp,2,32)),*,32)

    var %tot = $gettok($hget(chan, $gettok(%temp,2,32)),*,32)
    var %fak = 0
    while (%tot != %fak) {
      inc %fak
      echo -a FAK: %fak
      echo -a USER: $gettok($hget(chan,$gettok(%temp,2,32)),%fak,32)
      sockwrite -n $gettok($hget(chan,$gettok(%temp,2,32)),%fak,32) : $+ 127.0.0.1 353 $gettok($hget(chan,$gettok(%temp,2,32)),%fak,32) = $gettok(%temp,2,32) : $+ $hget(chan,$gettok(%temp,2-,32))
    }
    return
  }
  if ($gettok(%temp,1,32) == USER) {
    hadd ircd $sockname $gettok(%temp,2,32) $+ @ $+ $sock($sockname).ip $gettok($gettok(%temp,5-,32),1,58)
    return
  }
  if ($gettok(%temp,1,32) == NOTIFY) { echo -a NOTIFY | return }
  else { sockwrite -n $sockname :No Such Command | return }
}