[UPDATED] Real IRC Services for UnrealIRCd (a operserv and a logserv)

By NaZaRa on Dec 29, 2012

You can modify the "alias -l (...)" for change the settings.

You NEED to put in the unrealircd.conf :

link THE_VALUE_IN_THEALIAS"linkname"
{
username ;
hostname YOUR_IP; // If the server running on your pc, remplace YOUR_IP by 127.0.0.1
bind-ip
;
port 6667;
hub *;
password-connect "mypass";
password-receive "mypass";
class servers;
};

Then use /rehash on your server.

The user system use the userlist of mIRC, you can add users with /auser

/*
* Start the service with /RSTART
*/
alias rstart { 
  if (%debug) window -ek @debug
  .sockclose svs. $+ $linkname $+ .receptor 
  .socklisten svs. $+ $linkname $+ .receptor 6660 
  .connect $linkname 
}
0alias dbg {
  if ($1 == ON) { set %debug $true | if (!$window(@debug)) window -enk @debug }
  elseif ($1 == OFF) { set %debug $false | if ($window(@debug)) window -c @debug }
  else echo 4 -a * /dbg: parameters are ON and OFF
}
alias -l logserv { return LogServ }
alias -l services { return AdminServ }
alias -l linkname { return services.gircd.net }
alias -l svslogchan { return #services }
alias -l rco {
  .timer 1 1 /rwrite $1 PASS :mypass
  .timer 1 1 /rwrite $1 PROTOCTL EAUTH= $+ $linkname SERVERS=2
  .timer 1 1 /rwrite $1 SERVER $linkname 2 :127.0.0.1 
  .timer 1 2 /rwrite $1 NICK $services 2 1352640888 $linkname 127.0.0.1 $linkname :Server Root System
  .timer 1 2 /rwrite $1 NICK $logserv 2 1352640888 $linkname 127.0.0.1 $linkname :Server Log System
  .timer 1 2 /rwrite $1 : $+ $services SETHOST $linkname
  .timer 1 2 /rwrite $1 : $+ $logserv SETHOST $linkname
  .timer 1 2 /rwrite $1 : $+ $services MODE $services +oSq
  .timer 1 3 /rwrite $1 : $+ $services JOIN $svslogchan
  .timer 1 3 /rwrite $1 : $+ $services MODE $svslogchan +ao $services $services
  .timer 1 2 /rwrite $1 : $+ $logserv MODE $logserv +oSqtx
  .timer 1 3 /rwrite $1 : $+ $logserv JOIN $svslogchan
  .timer 1 3 /rwrite $1 : $+ $logserv MODE $svslogchan +ao $logserv $logserv
  .timer 1 3 /rwrite $1 NETINFO 10 1357062527 2311 MD5:66524a37ea1907bb4eed3807b10b0b89 0 0 0 :G-IRCD
  .timer 1 3 /rwrite $1 :services.gircd.net EOS
  .timer 1 4 /db $crlf $+ [Status] Link etablished $+ $crlf
}

on *:SOCKREAD:ircservices*:{
  var %1
  sockread -f %1
  tokenize 32 %1
  set %nick $remtok($1,:,0,58)
  set %n /rwrite $sockname : $+ $services NOTICE $remtok($1,:,0,58)
  set %l /rwrite $sockname : $+ $logserv NOTICE $remtok($1,:,0,58)
  if ($1 != PING) { 
    db received: $1-
    if ($2 != PRIVMSG) && ($2 != KILL) { if (%logsareon) { .timer 1 2 /rwrite $sockname : $+ $logserv PRIVMSG # $+ $svslogchan :received: $1- } }
  }
  if ($1 == PING) { rwrite $sockname PONG $2- }
  elseif ($2 == PRIVMSG) {
    if ($3 == $services) {
      if ($4 == :HELP) || ($4 === :h) { 
        %n ***********************************************************************************************************************
        %n Your level is: $level(%nick)
        %n <level> <command> [params] (comment) {token}
        %n 125 RAW :[source] <message>
        %n 100 QUIT (Warning!)
        %n 100 SVSNOOP <server> <+/-> [why]
        %n 090 AUSER <nick> <level> (You can't give a higher level than your)
        %n 090 RUSER <nick> (You can't remove a higher level than your)
        %n 090 TKL <+/-> <Q|F|G|Z> <parameters> (TKL: Master Ban Control)
        %n 075 SVSMODE <chan|nick> <+/-><modes> (<nick> don't see the UMode change)
        %n 075 SVSNICK <nick> <newnick>
        %n 075 SVSKILL <nick> <why>
        %n 075 SVSO <nick> <+/-><oflags> (Ajoute un IRC op)
        %n 050 SVSJOIN <nick> <chan>
        %n 050 SVSPART <nick> <chan> [message]
        %n 050 SQLINE <mask> <why> (<mask> is a nickname !)
        %n 050 UNSQLINE <mask> {TUQ}
        %n 050 SNLINE <why> :<realname> (Realname ban. In <why>, all " " need to be remplaced by "_")
        %n 050 UNSLINE :<realname>
        %n 050 DCCDENY <file> <why>
        %n 050 UNDCCDENY <file>
        %n 025 SENDMSG <destination> <message>
        %n 025 SENDNOTICE <destination> <message>
        %n 010 REHASH [-flags]
        %n 005 KICK <nick> <chan> [why]
        %n 002 UWHO <nick> (Return <nick>'s access level)
        %n 001 SIGNAL [/?] <name||n> [message] (see "SIGNAL /?")
        %n 001 HELP
        %n ***********************************************************************************************************************
        %n Parameters for SIGNAL :
        %n SIGNAL [/?] <name||n> [text]
        %n <level> <signal> [params]
        %n 090 SIGNAL SENDUMODE <mode> <message>
        %n 090 SIGNAL SENDSNO <snomask> <message> (Send snotice to the user with the "+s <snomask>" umode option (/helpop snomasks))
        %n 090 SIGNAL NACHAT <message>
        %n 075 SIGNAL ADCHAT <message>
        %n 050 SIGNAL CHATOPS <message>
        %n 050 SIGNAL GLOBOPS <message>
        %n 050 SIGNAL LOCOPS <message>
        %n 050 SIGNAL ERROR <message>
        %n 001 SIGNAL /?
        %n ***********************************************************************************************************************
        %n LogServ commands :
        %n 100 LOGS [on|off]
        %n ***********************************************************************************************************************
      }
      ;if ($5 == $null) { %n Not enought parameters ! } |
      elseif ($4 == :RAW) || ($4 === :RW) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 125) { /rwrite $sockname $5- } | else %n Access denied ! }
      elseif ($4 == :SQLINE) || ($4 === :TQ) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname SQLINE $5- } | else %n Access denied ! }
      elseif ($4 == :SNLINE) || ($4 === :TN) { elseif ($level(%nick) >= 50) { /rwrite $sockname SNLINE + $5- } | else %n Access denied ! }
      elseif ($4 == :UNSQLINE) || ($4 === :TUQ) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname UNSQLINE $5- } | else %n Access denied ! }
      elseif ($4 == :UNSNLINE) || ($4 === :TUN) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname SNLINE - $5- } | else %n Access denied ! }
      elseif ($4 == :QUIT) || ($4 === :Q) { if ($level(%nick) >= 100) { /rwrite $sockname SQUIT $linkname :QUIT by %nick $iif($5-,: $5-) } | else %n Access denied ! }
      elseif ($4 == :SVSMODE) || ($4 === :UM) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 75) { /rwrite $sockname SVSMODE $5 $6- } | else %n Access denied ! }
      elseif ($4 == :DCCDENY) || ($4 === :DD) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname SVSFLINE + $5 : $+ $6- } | else %n Access denied ! }
      elseif ($4 == :UNDCCDENY) || ($4 === :UD) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname SVSFLINE - $5 } | else %n Access denied ! }
      elseif ($4 == :SVSJOIN) || ($4 === :SJ) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname SVSJOIN $5- } | else %n Access denied ! }
      elseif ($4 == :SVSPART) || ($4 === :SP) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname SVSPART $5- } | else %n Access denied ! }
      elseif ($4 == :SVSNICK) || ($4 === :SN) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 75) { /rwrite $sockname SVSNICK $5- } | else %n Access denied ! }
      elseif ($4 == :SENDMSG) || ($4 === :M) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 25) { /rwrite $sockname : $+ $services PRIVMSG $5- } | else %n Access denied ! }
      elseif ($4 == :SENDNOTICE) || ($4 === :N) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 25) { /rwrite $sockname : $+ $services NOTICE $5- } | else %n Access denied ! }
      elseif ($4 == :REHASH) || ($4 === :H) { if ($level(%nick) >= 10) { /rwrite $sockname REHASH $5- } | else %n Access denied ! }
      elseif ($4 == :SVSNOOP) || ($4 === :f) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 100) { /rwrite $sockname SVSNOOP $5- } | else %n Access denied ! }
      elseif ($4 == :SVSKILL) || ($4 === :SK) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 75) { /rwrite $sockname SVSKILL $5- } | else %n Access denied ! }
      elseif ($4 == :AUSER) || ($4 === :+) { 
        if ($5 == $null) { %n Not enought parameters ! }
        elseif ($level(%nick) >= $6) {
          if ($5 == *) || ($5 == *!*@*) || ($5 == *@*) || ($5 == *!*) || ($level(%nick) <= 89) {
            %n Access denied ! 
          } 
          else {
            %n Added $5 to the user list with level $6 
            .auser $6 $5 
          }
        }
        else %n Access denied ! 
      }
      elseif ($4 == :RUSER) || ($4 === :-) { 
        if ($5 == $null) { %n Not enought parameters ! }
        elseif ($level(%nick) !>= $level($5)) || ($level(%nick) <= 89) { 
          %n Access denied !
        }
        else { 
          %n Removed $5 from the user list
          .ruser $5 
        }
      }
      elseif ($4 == :UWHO) || ($4 === :W) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 2) { %n $5 $+ 's level is: $level($5) } | else %n Access denied ! }
      elseif ($4 == :KICK) || ($4 === :k) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 5) { /rwrite $sockname KICK $6 $5 $7- ( $+ %nick $+ ) } | else %n Access denied ! }
      elseif ($4 == :TKL) || ($4 === :b) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 90) { /rwrite $sockname TKL $5- } | else %n Access denied ! }
      elseif ($4 == :SVSO) || ($4 === :o) {
        if (!$5) { %n Not enought parameters ! }
        elseif ($level(%nick) >= 75) {
          if (- !isincs $6) {
            if (o isin $6) || (a isin $6) || (C isincs $6) || (N isincs $6) || (q isincs $6) || (W isincs $6) {
              /rwrite $sockname SVS2MODE $5 + $+ $iif(o isincs $6,O) $+ $iif(O isincs $6,o) $+ $iif(a isincs $6,a) $+ $iif(A isincs $6,A) $+ $iif(C isincs $6,C) $+ $iif(N isincs $6,N) $+ $iif(q isincs $6,q) $+ $iif(W isincs $6,W)
            }
          }
          else {
            /rwrite $sockname SVSMODE $5 +O
          }
          /rwrite $sockname SVSO $5 $6-
        }
        else %n Access denied !
      }
      elseif ($4 == :SIGNAL) || ($4 === :!) {
        if ($5 == /?) {
          %n ***********************************************************************************************************************
          %n SIGNAL [/?] <name||n> [text]
          %n <level> <signal> [params]
          %n 090 SENDUMODE <mode> <message> {SMO}
          %n 090 SENDSNO <snomask> <message> {Ss} (Send snotice to the user with the "+s <snomask>" umode option (/helpop snomasks))
          %n 090 NACHAT <message>
          %n 075 ADCHAT <message>
          %n 050 CHATOPS <message>
          %n 050 GLOBOPS <message>
          %n 050 LOCOPS <message>
          %n 050 ERROR <message>
          %n ***********************************************************************************************************************
        }
        elseif ($5 == ERROR) { 
          if ($level(%nick) >= 50) {
            /rwrite ERROR : $+ $nick SIGNAL ERROR : $6- 
          }
          else %n Access denied !
        }
        elseif ($5 == SENDUMODE)  || ($5 === SMO) { if ($6 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 90) { /rwrite $sockname SENDUMODE $6 : $+ %nick SENDUMODE ( $+ $services $+ ): $7- } | else %n Access denied ! }
        elseif ($5 == SENDSNO) || ($5 === Ss) { if ($6 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 90) { /rwrite $sockname SENDSNO $6 : $+ %nick SENDSNO ( $+ $services $+ ): $7- } | else %n Access denied ! }
        elseif ($5 == LOCOPS) { if ($6 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname LOCOPS : $+ %nick SIGNAL LOCOPS( $+ $services $+ ): $6- } | else %n Access denied ! }
        elseif ($5 == GLOBOPS) { if ($6 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname GLOBOPS : $+ %nick SIGNAL GLOBOPS ( $+ $services $+ ): $6- } | else %n Access denied ! }
        elseif ($5 == CHATOPS) { if ($6 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 50) { /rwrite $sockname CHATOPS : $+ %nick SIGNAL CHATOPS ( $+ $services $+ ): $6- } | else %n Access denied ! }
        elseif ($5 == ADCHAT) { if ($6 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 75) { /rwrite $sockname ADCHAT : $+ %nick SIGNAL ADCHAT ( $+ $services $+ ): $6- } | else %n Access denied ! }
        elseif ($5 == NACHAT) { if ($6 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 90) { /rwrite $sockname NACHAT : $+ %nick SIGNAL NACHAT ( $+ $services $+ ): $6- } | else %n Access denied ! }
      }
      ;elseif ($4 == :) { if ($5 == $null) { %n Not enought parameters ! } | elseif ($level(%nick) >= 2) { /rwrite $sockname } | else %n Access denied ! }
      elseif ($4 == :LOGS) {
        if (!$5) {
          if (%logsareon) %l Logs are on
          else %l Logs are off
        }
        elseif ($5 == on) { if ($level(%nick) >= 100) { set %logsareon $true } | else %l Access denied ! }
        elseif ($5 == off) { if ($level(%nick) >= 100) { set %logsareon $false } | else %l Access denied ! }
      }

      else %n $upper($4) Unknow command !
    }
    elseif ($3 == $logserv) {
      if ($4 == :HELP) {
        %l ***********************************************************************************************************************
        %l Your level is: $level(%nick)
        %l <level> <command> [params] (comment)
        %l 100 LOGS [on|off]
        %l ***********************************************************************************************************************
      }
      elseif ($4 == :LOGS) {
        if (!$5) {
          if (%logsareon) %l Logs are on
          else %l Logs are off
        }
        elseif ($5 == on) { if ($level(%nick) >= 100) { set %logsareon $true } | else %l Access denied ! }
        elseif ($5 == off) { if ($level(%nick) >= 100) { set %logsareon $false } | else %l Access denied ! }
      }
      else %l $upper($4) Unknow command !
    }
  }
}
on *:INPUT:@debug:{ 
  /rwrite ircservices* FROM-CONSOLE $1-
}
on *:SOCKLISTEN:svs.*:{
  set %svs ircservices $+ $r(1,99)
  sockaccept %svs
  rco %svs
}
alias db {
  if ($window(@debug)) {
    if (%debug) {
      aline @debug $1-
      write $mircdir $+ debug.txt $1- $+ $crlf
    }
  }
}
alias rwrite { 
  if (FROM-CONSOLE == $2) {
    set %mmh $true
    /sockwrite -n $1 $3-
  }
  else { set %mmh $false | /sockwrite -n $1 $2- }
  if ($2 != PONG) && ($3 != PRIVMSG) && ($3 != NOTICE) {
    if (%logsareon) { .timer 1 2 /rwrite $1 : $+ $logserv PRIVMSG # $+ $svslogchan : $+ $iif(%mmh,sended from debug window: $3-,sended: $2-) }
    db $iif(%mmh,sended from debug window: $3-,sended: $2-)
  }
}

Comments

Sign in to comment.
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.