[TCL] Relay Network use Socket

Selasa, 17 April 2012

[TCL] Relay Network use Socket

Pernah melihat bot spy? spy antar channel :) seperti itulah tcl ini, tapi bedanya jika spy hanya dalam 1 Network dan berbeda Channel :) Namun ini adalah tCL untuk spy antara channel di Network²/Server² lain, tCL ini juga akan mengabarkan apa yang terjadi pada channel 1 Network 1 ke channel 2 network 2 dll ;) bahasanya adalah stay away (paling) wkwkwk apa bisa lebih dari 2 Network? Jawabanya adalah bisa :)
Cara kerja TCL ini adalah mempaste log yang ada di Chan1 Net1 ke Chan2 Net2 begitu sebaliknya, lalu bagaimana? apakah harus membuat bot eggdrop lagi pada server yang ingin di relay? tidak, karena tCL ini nanti akan membuat bot eggdrop sendiri dengan memanfaatkan Socket pendeknya ketika kita nanti akan merelay atau spy, TCL ini akan mengirim BOT yang masih saudara kembar ke server yang anda tentukan.. Hebat bukan?? Langsung saja ini TCL nya:
# ----------------------------------------------------------------------------------#
# relay.tcl owner by Barker JR barkerjr(at)clancdg.com
# modified by g0eZ eggoez(at)about.me
# /server irc.allnetwork.org:6667 -join:#ciut
# loaded & translate by http://eg-goez.blogspot.com
# ----------------------------------------------------------------------------------#

set debug 1
set debug_out 1
set shortcommands 1

bind dcc m linkchan dcc:linkchan
if {$shortcommands == 1} {bind dcc m lc dcc:linkchan}
proc dcc:linkchan {hand idx arg} {
 global nick realname username chanlinkchan chanlinkidx chanlinkserv chanlinknet chanlinknick shortcommands linkchantrim
 set chanlinknick $nick[rand 1000]
 set chan [lindex $arg 0]
 set net [lindex $arg 1]
 set serv [lindex $arg 2]
 set port [lindex $arg 3]
 if {![validchan $chan]} {
  putdcc $idx "Chan Salah"
  putdcc $idx "Gunakan: .linkchan <channel> <network> <server> \[port\]"
 } else {
  if {$serv == ""} {
   putdcc $idx "Spesifikasi Server"
   putdcc $idx "Gunakan: .linkchan <channel> <network> <server> \[port\]"
  } else {
   if {[info exists chanlinkidx]} {
    if {[valididx $chanlinkidx]} {
     putdcc $chanlinkidx "QUIT :Mengganti Server"
     killdcc $chanlinkidx
    }
   }
   if {$port == ""} {
    set chanlinkidx [connect $serv 6667]
   } else {
    if {$port != ""} {set chanlinkidx [connect $serv $port]}
   }
   set chanlinkchan $chan
   set chanlinkserv $serv
   set chanlinknet $net
   control $chanlinkidx linkchan
   putlc "USER $username 0 0 :$realname"
   putlc "NICK :$chanlinknick"
   set linkchantrim "abcdefghijklmnopqrstuvwxyzABCDEFGHIJGKLMNOPQRSTUVWXYZ1234567890 !@*.#~-_|\[\]\{\}`"
   bind part - * part:chanlink
   bind pubm - * pubm:chanlink
   bind sign - * sign:chanlink
   bind ctcp - ACTION ctcp:chanlink
   bind join - * join:chanlink
   bind nick - * nick:chanlink
   bind dcc m -linkchan dcc:-linkchan
   bind dcc m dumplinkchan dcc:dumplinkchan
   if {$shortcommands == 1} {
    bind dcc m -lc dcc:-linkchan
    bind dcc m dumplc dcc:dumplinkchan
   }
   return 1
  }
 }
}

proc dcc:dumplinkchan {hand idx arg} {
 putlc $arg
 return 1
}

proc dcc:-linkchan {hand idx arg} {
 global chanlinkidx chanlinkchan chanlinkserv chanlinknet linkchantrim shortcommands
 putlc "QUIT :Di Bunuh!"
 killdcc $chanlinkidx
 linkchan:shutdown
 return 1
}

proc linkchan:shutdown {} {
 global chanlinkidx chanlinkchan chanlinkserv chanlinknet linkchantrim shortcommands
 unset chanlinkidx
 unset chanlinkchan
 unset chanlinkserv
 unset chanlinknet
 unset linkchantrim
 unbind part - * part:chanlink
 unbind pubm - * pubm:chanlink
 unbind sign - * sign:chanlink
 unbind ctcp - ACTION ctcp:chanlink
 unbind join - * join:chanlink
 unbind nick - * nick:chanlink
 unbind dcc m -linkchan dcc:-linkchan
 unbind dcc m dumplinkchan dcc:dumplinkchan
 clearqueue help
 if {$shortcommands == 1} {
  unbind dcc m -lc dcc:-linkchan
  unbind dcc m dumplc dcc:dumplinkchan
 }
}

proc putlc {arg} {
 global chanlinkidx debug_out
 if {$debug_out == 1} {putlog "linkchan> $arg"}
 putdcc $chanlinkidx $arg
}

proc linkchan {idx arg} {
 global debug nick chanlinkchan chanlinknet chanlinknick username realname linkchantrim
 if {$debug == 1} {putlog "linkchan< $arg"}
 set arg2 [lindex $arg 0]
 switch $arg2 {
  PING {putlc "PONG [lindex $arg 1]"}
  ERROR {
   putserv "PRIVMSG $chanlinkchan :\0032ERROR: Closing Link"
   linkchan:shutdown
  }
 }
 switch [lindex $arg 1] {
  001 {
   putlc "MODE $chanlinknick :+i"
   putlc "JOIN $chanlinkchan"
  }
  433 {
   set chanlinknick $nick[rand 1000]
   putdcc $idx "NICK :$chanlinknick"
  }
  353 {puthelp "privmsg $chanlinkchan :$chanlinknet NAMES list: [string trimleft [string trimleft [string trimleft $arg :] "abcdefghijklmnopqrstuvwxyzABCDEFGHIJGKLMNOPQRSTUVWXYZ1234567890 !@*.#~-_|\[\]\{\}`="] :]"}
  JOIN {puthelp "privmsg $chanlinkchan :\0033*** [lindex [split [lindex [split $arg2 !] 0] :] 1]@$chanlinknet ([lindex [split $arg2 !] 1]) has joined $chanlinkchan"}
  KICK {linkchan:kick $idx $arg}
  NICK {puthelp "privmsg $chanlinkchan :\0033*** [lindex [split [lindex [split $arg2 !] 0] :] 1]@$chanlinknet in now known as [string trimleft [lindex $arg 2] :]@$chanlinknet"}
  PART {puthelp "privmsg $chanlinkchan :\0033*** [lindex [split [lindex [split $arg2 !] 0] :] 1]@$chanlinknet ([lindex [split $arg2 !] 1]) has left $chanlinkchan"}
  PRIVMSG {linkchan:privmsg $idx $arg}
  QUIT {puthelp "privmsg $chanlinkchan :\0032*** [lindex [split [lindex [split $arg2 !] 0] :] 1]@$chanlinknet ([lindex [split $arg2 !] 1]) Quit ([string trimleft [string trimleft [string trimleft $arg :] $linkchantrim] :])"}
 }
}
putlog "Relay Loaded by g0eZ"
proc linkchan:privmsg {idx arg} {
 global chanlinkchan chanlinknet linkchantrim botnick network
 set nick [lindex [split [lindex [split $arg !] 0] :] 1]
 if {$nick == $botnick} {
  putlc "QUIT :Ya, ada yang salah?"
  killdcc $idx
  linkchan:shutdown
 } else {
  if {[string tolower [lindex $arg 2]] == [string tolower $chanlinkchan]} {
   set text [string trimleft [string trimleft [string trimleft $arg :] $linkchantrim] :]
   if {[string match \001*\001 $text]} {
    if {[string match \001ACTION*\001 $text]} {
     puthelp "privmsg $chanlinkchan :\0036 * $nick@$chanlinknet[string trimright [string trimleft [string trimleft $text \001ACTION] ""] \001]"
    }
   } else {
    if {[string match -nocase [lindex $text 0] !names]} {
     putlc "PRIVMSG $chanlinkchan :$network NAMES list: [chanlist $chanlinkchan]"
    } else {
     puthelp "privmsg $chanlinkchan :<$nick> $text"
    }
   }
  }
 }
}

proc linkchan:kick {idx arg} {
 global chanlinknick chanlinkchan
 if {$chanlinknick == [lindex $arg 3]} {putlc "JOIN $chanlinkchan"}
}

proc join:chanlink {nick uhost hand chan args} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0033***$network $nick ($uhost) has joined $chan"}
 }
}

proc part:chanlink {nick uhost hand chan msg} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {$msg != ""} {set msg ($msg)}
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0033***$network $nick ($uhost) has left $chan $msg"}
 }
}
putlog "eg-goez.blogspot.com"
proc pubm:chanlink {nick uhost hand chan text} {
 global network chanlinkidx chanlinkchan chanlinknick
 if {$nick == $chanlinknick} {
  putlc "QUIT :Ya!! ada masalah?"
  killdcc $idx
  linkchan:shutdown
 } else {
  if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
   if {[valididx $chanlinkidx]} {
    if {[string match -nocase [lindex $text 0] !names]} {
     putlc "NAMES $chan"
    } else {
     putlc "PRIVMSG $chan :<$nick> $text"
    }
   }
  }
 }
}

proc sign:chanlink {nick uhost hand chan reason} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0032***$network $nick ($uhost) Quit ($reason)"}
 }
}

proc ctcp:chanlink {nick uhost hand dest keywork arg} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx]} {
  if {[valididx $chanlinkidx] && [string match [string tolower $dest] [string tolower $chanlinkchan]]} {
   putlc "PRIVMSG $dest :\0036 * $nick $arg"
  }
 }
}

proc nick:chanlink {nick uhost hand chan newnick} {
 global network chanlinkidx chanlinkchan
 if {[info exists chanlinkidx] && [string match [string tolower $chan] [string tolower $chanlinkchan]]} {
  if {[valididx $chanlinkidx]} {putlc "PRIVMSG $chan :\0033***$network $nick is now known as $newnick"}
 }
} 
Tambahkan Scipts di atas ke tcl baru anda,, dan load pada konfig, lalu rehash bot nya.. setelah itu
DCC bot nya dengan cara
/ctcp botnick chat
Jika ada sebuah pertanyaan Accept aja..
Jika sudah bot nanti akan menanyakan nick dan password pada chat DCC anda
cukup ketik nick anda (Owner bot) dan password Owner bot
kurang lebih seperti ini dialog nya nanti
DCC Chat session
Client: Drone (***.***.***.***)
Acknowledging chat request...
DCC Chat connection established
(Drone) Nickname.
(Drone) (If you are new, enter 'NEW' here.)
(g0eZ) g0eZ
(Drone)
(Drone) Enter your password.
(g0eZ) *******
(Drone) ÿü
(Drone) You have no messages.
(Drone) *** g0eZ joined the party line.

nah seperti itu nanti.. jika sudah kini saatnya anda mengkonfigurasi dan menyuruh bot anda membuat saudara kembar untuk pertugas di jauh sana :D dengan cara
.linkchan <#channel> <namanet> <server> <port>
contoh:
.linkchan #ciut Net2 irc.allnetwork.org 6667
Nanti di situ anda akan meliahat modt :) bertanda bot sudah connect :)
Sekian semoga bermanfat temans ;)

Tulisan yang banyak dilihat bulan ini