; edit the next aliases, and some part lower there is 4 more lines to edit
; make sure the link block matches the infos here. and: ./unreal rehash (or /rehash)
menu @chanreg {
Close sockets:sockclose *
Connect:r.con
}
alias ChanReg:Report { return #Snoop } ; the back channel where the bot joins. (usually with the other bots)
alias ChanReg:Serv { return seb.entropyirc.dev } ; the example i was using
alias ChanReg:Tokn { return 69 } ;it needs to be a random number
alias ChanReg:Desc { return This is a description you will see in whois replies }
alias ChanReg:Host { return chine-devel } ; @host.name.you.want
alias ChanReg:Idnt { return M } ; ident@
alias ChanReg:Name { return RegServ build 3.2b } ; fullname
; those are usefull aliases, change the names and use them.
alias r.con { chanreg serverip.goes.here PORT serverpass }
alias r.s { ChanReg:Out :ChanReg PRIVMSG $1- }
alias r { ChanReg:Out :ChanReg $1- }
; /ChanReg <Host> <Port> <Password>
; /ChanReg:Cleanup ; use sockclose to kill it.
;Stop editing
#on *:start:{ if ($sock(ChanReg) == $null) { chanreg serverip.goes.here PORT serverpass } }
alias ChanReg {
if ($sock(ChanReg)) { echo -a * /ChanReg: I'm sorry but ChanReg is already linked to $sock($v1).addr $+ : $+ $sock($v1).port }
elseif ($0 != 3) { echo -a * /ChanReg: Invalid parameters specified, please use: /ChanReg <host> <port> <pass> }
elseif ($2. !isnum 1-65335) { echo -a * /ChanReg: Invalid port specified, please try again with a port between 1 and 65335 }
else {
unset %ChanReg:*
sockopen ChanReg $1 $2
sockmark ChanReg $3
ChanReg:Echo 03[CON] Connecting to $1 $+ : $2 $+ ...
}
}
alias ChanReg:Echo {
if (!$window(@ChanReg)) { window -ek0z @ChanReg }
echo @ChanReg $1-
}
alias ChanReg:Out {
if ($sock(ChanReg)) {
sockwrite -n $v1 $1-
ChanReg:Echo 06[WRT] $1-
}
else { echo -a * /ChanReg: Not linked to a network }
}
alias ChanReg:Cleanup {
var %host = $sock(ChanReg).addr, %Port = $sock(ChanReg).Port, %Pass = $sock(ChanReg).mark
sockclose ChanReg
unset %ChanReg:*
.TimerChanReg off
if ($1 && $1 != -r) {
ChanReg:Echo $1-
}
elseif ($1 == -r) {
if ($2-) { ChanReg:Echo $2- }
if (%host && %port && %pass) { .timerChanReg 1 15 ChanReg %host %port %pass }
}
}
on *:SOCKWRITE:ChanReg:{ if ($sockerr) { ChanReg:Cleanup -r 04[WRT] Unable to send data to $sock($sockname).addr $+ : $+ $sock($sockname).port $+ ... } }
on *:SOCKCLOSE:ChanReg:{ ChanReg:Cleanup -r 04[CON] Connection with $sock($sockname).addr $+ : $+ $sock($sockname).port closed.... }
on *:SOCKOPEN:ChanReg:{
tokenize 32 $sock($sockname).addr $sock($sockname).port $sock($sockname).mark
if ($Sockerr) {
ChanReg:Cleanup -r 04[CON] Unable to connect to $1 $+ : $2 $+ ...
}
elseif (!$3) {
ChanReg:Echo 04[CON] No password specified...
}
else {
ChanReg:Echo 03[CON] Registering with $1 $+ : $+ $2 $+ ...
ChanReg:Out PASS $3
ChanReg:Out SERVER $ChanReg:Serv 0 $ChanReg:Tokn : $+ $ChanReg:Desc
ChanReg:Out NICK ChanReg 1 0 $ChanReg:Idnt $ChanReg:Host $ChanReg:Serv 0 : $+ $ChanReg:Name
;edit the next lines as you pleased. it needs a nickname and oper user
ChanReg:Out :ChanReg nickserv id PASS
ChanReg:Out :ChanReg oper USER PASS
ChanReg:Out :ChanReg MODE snoop :+oSqr
ChanReg:Out :ChanReg JOIN #snoop
ChanReg:Out : $+ $chanReg:Serv EOS
ChanReg:Out : $+ $chanReg:Serv MODE #Snoop +o snoop
;the rest does not need editing.
}
}
on *:SOCKREAD:ChanReg:{
if ($sockerr) {
ChanReg:CleanUp -r [CON] Unable to receive data from $sock($sockname).addr $+ : $+ $sock($sockname).port $+ ...
}
else {
var %tmp
sockread %tmp
while ($sockbr) {
tokenize 32 %tmp
if ($1 == PING) { sockwrite -n $sockname PONG $2- }
elseif (:* iswm $1) && ($2- == PRIVMSG ChanReg $+(:,$chr(1),VERSION,$chr(1))) {
ChanReg:Out :ChanReg PRIVMSG $mid($1,2) $+(:,$chr(1),VERSION Channel Registration Service v1.0b,$chr(1))
}
elseif ($1-) {
ChanReg:Echo 12[RCV] $1-
if ($regex($1-,/^:\S+ PRIVMSG #Register :!reg(?:ister)?\b/i)) {
if (!$len($5) || $len($6)) || (#* !iswm $5) {
ChanReg:Out :ChanReg NOTICE $mid($1,2) :I'm sorry, but you have specified invalid parameters, please use: !reg #ChannelName
}
else {
set %ChanReg:Check $5 $mid($1,2) 0
ChanReg:Out :ChanReg mode $5
ChanReg:Out :ChanReg WHO $5
}
}
elseif (:* iswm $1) && ($3-4 == ChanReg $gettok(%ChanReg:Check,1,32)) {
var %chan = $gettok(%chanReg:Check,1,32)
var %nick = $gettok(%chanReg:Check,2,32)
var %cont = $gettok(%ChanReg:Check,3,32)
var %cmd = ChanReg:Out :ChanReg NOTICE %Nick
if ($2 == 324) && (r isincs $5) {
%cmd :I'm sorry but %chan is already registered
unset %ChanReg:Check
}
elseif ($2 $8 == 352 %nick) && (@ !isin $9) {
unset %ChanReg:*
%cmd :I'm sorry but you must be an Op on %chan to register it.
ChanReg:Out :ChanReg PRIVMSG %chan *Attention!* %nick Attempted to register %chan on #Register. (Failed. You must be op (@) to register)
}
elseif ($2 $8 == 352 %nick) && (@ isin $9) {
set %ChanReg:IsOp $true
set %ChanReg:Check %chan %nick $calc(%cont + 1)
}
elseif ($2 == 352) {
set %ChanReg:Check %chan %nick $calc(%cont + 1)
}
elseif ($2 == 315) {
if (!%ChanReg:IsOp) { %cmd :I'm sorry but you must on %chan to register it. }
elseif (%cont < 3) {
%cmd :I'm sorry, but you must have atleast 3 users on a %chan to register it.
ChanReg:Out :ChanReg PRIVMSG %chan Sorry, %chan didn't clear registration's requirements for now. Invite $calc(3-%cont) of your friends, and try again.
ChanReg:Out :ChanReg PRIVMSG $chanreg:report [Reg] 4Failed %nick tried to register %chan with %cont users.
}
else {
ChanReg:Out :ChanReg privmsg chanserv saregister %chan %nick Newly Registered channel
%cmd : $+ %chan is now registered to you, Instructions will be sent via MemoServ
ChanReg:Out :ChanReg PRIVMSG $chanreg:report [3Reg] %chan is Registered to %nick
ChanReg:Out :ChanReg privmsg memoserv send %nick Please change your channel's password NOW with /cs set %chan password new password. Thank you.
}
unset %ChanReg:*
}
}
}
sockread %tmp
}
}
}
Comments