This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

linking across networks

General support and discussion of Eggdrop bots.
Post Reply
x
xmods
Voice
Posts: 3
Joined: Wed Sep 08, 2010 7:37 am

linking across networks

Post by xmods »

ok i'm trying to setup a relay bot right now i have 2 eggs one on efnet the other on 2nd networks using chanrelay.tcl (v1.2) tcl seems loaded fine but for some odd reason i can't get them to link i have followed this document

http://www.eggheads.org/support/egghtml ... html#sect3

On BotA, you would type '.+bot elit3 irc.colosolutions.net:20688'.

then .+host Elit3 *!emulate@o0o.r0oted.us

On BotB, you would type '.+bot Schmuck irc.xbox-experts.com:1699'.

.+host Schmuck *!Schmuck@p3047-adsau16honb13-acca.tokyo.ocn.ne.cumcast.org

then did .link elit3 and .link Schmuck and get link failed i've also use netbots.tcl and still same problems i use the have a net of 30 eggs on the same network never had a problem before just cross networks seems to be giving me a little bit of a hard time

i get "Tcl error [send_pubm]: bot is not on the botnet" but only becasue they will not link for some weird reason

here is a copy of how i have my tcl setup

Code: Select all

###############################################################################
# This file is part of the b0xNet module system
#
# Module Base
# Chanrelay by CrazyCat <crazycat@chatfou.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# $Id: chanrelay.tcl,v 1.1.1.1 2005/06/16 17:39:28 chong Exp $
set mver v1.2

## DESCRIPTION ##

# This TCL is a complete relay script wich works with botnet.
# All you have to do is to include this tcl in all the eggdrop who
# are concerned by it.

# You can use it as a spy or a full duplex communication tool.

# It don't mind if the eggdrops are on the same server or not,
# it just mind about the channels and the handle of each eggdrop.

## TODO ##

# Well, I've just to find the way to make the mode works...
# If you think I can add something, just ask for it :)

## CONFIGURATION ##

# you must put in: {"relay_bot_handle" "channel where is the relay bot" "channel where is this bot"}
set chan1 {"Elit3" "#xboxexperts"}
set chan2 {"Schmuck" "#xboxexperts"}

# Do you want to use bold (1), underline (2) or nothing (0) to higtlight nicknames ?
set high "1"

# Do you want the bot transmit actions from the channel (y/n)?
set transmit "y"; # default value is yes

# Do you want the bot recept actions (y/n)?
set receive "y"; # default value is yes

# transmission configuration
set trans_pub "y"; # transmit the pub
set trans_act "y"; # transmit the actions (/me)
set trans_nick "y"; # transmit the nick changement
set trans_join "y"; # transmit the join
set trans_part "y"; # transmit the part
set trans_quit "y"; # transmit the quit
set trans_topic "y"; # transmit the topic changements
set trans_kick "y"; # transmit the kicks
set trans_mode "y"; #transmit the mode changements

# reception configuration
set recv_pub "y"; # recept the pub
set recv_act "y"; # recept the actions (/me)
set recv_nick "y"; # recept the nick changement
set recv_join "y"; # recept the join
set recv_part "y"; # recept the part
set recv_quit "y"; # recept the quit
set recv_topic "y"; # recept the topic changements
set recv_kick "y"; # recept the kicks
set recv_mode "y"; #recept the mode changements

############################################################
#
# The TCL begins here, if you don't know what to do, don't do anything :)
#
############################################################

bind msg o|o "status" help:status
bind msg - "help" help:cmds

if { $high == "1" } {
    set hlnick "\002"
} elseif { $high == "2" } {
    set hlnick "\037"
} else {
    set hlnick ""
}

bind msg o|o "light" set:light

if { $transmit == "y" } {
    bind msg o|o "trans" set:trans
    if { $trans_pub == "y" } { bind pubm - * trans_pub }
    if { $trans_act == "y" } { bind ctcp - "ACTION" trans_act }
    if { $trans_nick == "y" } { bind nick - * trans_nick }
    if { $trans_join == "y" } { bind join - * trans_join }
    if { $trans_part == "y" } { bind part - * trans_part }
    if { $trans_quit == "y" } { bind sign - * trans_quit }
    if { $trans_topic == "y" } { bind topc - * trans_topic }
    if { $trans_kick == "y" } { bind kick - * trans_kick }
    if { $trans_mode == "y" } { bind mode - * trans_mode }
}

if { $receive =="y" } {
    bind msg o|o "recv" set:recv
    if { $recv_pub == "y" } { bind bot - ">pub" recv_pub }
    if { $recv_act == "y" } { bind bot - ">act" recv_act }
    if { $recv_nick == "y" } { bind bot - ">nick" recv_nick }
    if { $recv_join == "y" } { bind bot - ">join" recv_join }
    if { $recv_part == "y" } { bind bot - ">part" recv_part }
    if { $recv_quit == "y" } { bind bot - ">quit" recv_quit }
    if { $recv_topic == "y" } { bind bot - ">topic" recv_topic }
    if { $recv_kick == "y" } { bind bot - ">kick" recv_kick }
    if { $recv_mode == "y" } { bind bot - ">mode" recv_mode }
}    

# proc setting the type of highlight
proc set:light {nick host handle arg } {
    global hlnick
    if { $arg == "bo" } {
        set hlnick "\002"
    } elseif { $arg == "un" } {
        set hlnick "\037"
    } elseif { $arg == "off" } {
        set hlnick ""
    } else { putquick "NOTICE $nick :you must chose \002(bo)\002ld , \037(un)\037derline or (off)" }
}

# proc setting of transmission by msg
proc set:trans { nick host handle arg } {
    global botnick transmit
    if { $transmit == "y" } {
        if { $arg == "" } {
            putquick "NOTICE $nick :you'd better try /msg $botnick trans help"
        }
        if { [lindex $arg 0] == "help" } {
            putquick "NOTICE $nick :usage is /msg $botnick trans <value> on|off"
            putquick "NOTICE $nick :with <value> = pub, act, nick, join, part, quit, topic, kick, mode"
            return 0
        } else {
            set proc_change "trans_[lindex $arg 0]"
            switch [lindex $arg 0] {
                "pub" { set type pubm }
                "act" { set type ctcp }
                "nick" { set type nick }
                "join" { set type join }
                "part" { set type part }
                "quit" { set type sign }
                "topic" { set type topc }
                "kick" { set type kick }
                "mode" { set type mode }
            }
            if { [lindex $arg 1] == "on" } {
                bind $type - * $proc_change
            } elseif { [lindex $arg 1] == "off" } {
                unbind $type - * $proc_change
            } else {
                putquick "NOTICE $nick :[lindex $arg 1] is not a correct value, choose \002on\002 or \002off\002"
            }
        }
    } else {
        putquick "NOTICE $nick :transmission is not activated, you can't change anything"
    }
}

# proc setting of reception by msg
proc set:recv { nick host handle arg } {
    global botnick receive
    if { $receive == "y" } {
        if { $arg == "" } {
            putquick "NOTICE $nick :you'd better try /msg $botnick recv help"
        }
        if { [lindex $arg 0] == "help" } {
            putquick "NOTICE $nick :usage is /msg $botnick recv <value> on|off"
            putquick "NOTICE $nick :with <value> = pubm, act, nick, join, part, quit, topic, kick, mode"
            return 0
        } else {
            set change ">[lindex $arg 0]"
            set proc_change "recv_[lindex $arg 0]"
            if { [lindex $arg 1] == "on" } {
                bind  bot - $change $proc_change
            } elseif { [lindex $arg 1] == "off" } {
                unbind bot - $change $proc_change
            } else {
                putquick "NOTICE $nick :[lindex $arg 1] is not a correct value, choose \002on\002 or \002off\002"
            }
        }
    } else {
        putquick "NOTICE $nick :reception is not activated, you can't change anything"
    }
}

####################################################
#
# Transmission
#

# proc used by all others for transmission
proc trans_bot { usercmd chan usernick text } {
    global chan1 chan2
    set transmsg [concat $usercmd $usernick $text]
    if { $chan == [lindex $chan1 2] } {
        set bot [lindex $chan1 0]
    } elseif { $chan == [lindex $chan2 2] } {
        set bot [lindex $chan2 0]
    } else { return 0 }
    putbot $bot $transmsg
}

# proc transmission of pub (trans_pubm = y)
proc trans_pub {nick uhost hand chan text} {
    trans_bot ">pub" $chan $nick $text
}

# proc transmission of action (trans_act = y)
proc trans_act {nick uhost hand chan key text} {
    set arg [concat $key $text]
    trans_bot ">act" $chan $nick $arg
}

# proc transmission of nick changement
proc trans_nick {nick uhost hand chan newnick} {
    trans_bot ">nick" $chan $nick $newnick
}

# proc transmission of join
proc trans_join {nick uhost hand chan} {
    trans_bot ">join" $chan $chan $nick\($uhost\)
}

# proc transmission of part
proc trans_part {nick uhost hand chan text} {
    set arg [concat $chan $text]
    trans_bot ">part" $chan $nick $arg
}

# proc transmission of quit
proc trans_quit {nick host hand chan text} {
    trans_bot ">quit" $chan $nick $text
}

# proc transmission of topic changement
proc trans_topic {nick uhost hand chan topic} {
    set arg [concat $chan $topic]
    trans_bot ">topic" $chan $nick $arg
}

# proc transmission of kick
proc trans_kick {nick uhost hand chan victim reason} {
    set arg [concat $victim $chan $reason]
    trans_bot ">kick" $chan $nick $arg
}

# proc transmission of mode changement
proc trans_mode {nick uhost hand chan mc {victim ""}} {
    if {$victim != ""} {append mc " $victim" }
    set text [concat $nick $chan $mc]
    trans_bot ">mode" $chan $nick $text
}

####################################################
#
# Reception
#

# proc reception of pub
proc recv_pub {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :$hlnick[lindex $arg 0]$hlnick> [lrange $arg 1 end]"
}

# proc reception of action
proc recv_act {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :* $hlnick[lindex $arg 0]$hlnick [lrange $arg 2 end]"
}

# proc reception of nick changement
proc recv_nick {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :*** $hlnick[lindex $arg 0]$hlnick is now known as [lrange $arg 1 end]"
}

# proc reception of join
proc recv_join {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :--> $hlnick[lindex $arg 1]$hlnick has joined channel [lindex $arg 0]"
}

# proc reception of part
proc recv_part {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :<-- $hlnick[lindex $arg 0]$hlnick has left channel [lindex $arg 1] ([lrange $arg 2 end])"
}

# proc reception of quit
proc recv_quit {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :-//- $hlnick[lindex $arg 0]$hlnick has quit ([lrange $arg 1 end])"
}

# proc reception of topic changement
proc recv_topic {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :*** $hlnick[lindex $arg 0]$hlnick changes topic of [lindex $arg 1] to '[lrange $arg 2 end]'"
}
# proc reception of kick
proc recv_kick {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :*** $hlnick[lindex $arg 1]$hlnick has been kicked from [lindex $arg 2] by [lindex $arg 0]: [lrange $arg 3 end]"
}

# proc reception of mode changement
proc recv_mode {frm_bot command arg} {
    global chan1 chan2 hlnick
    if { $frm_bot == [lindex $chan1 0] } {
        set recvchan [lindex $chan1 2]
    } elseif { $frm_bot == [lindex $chan2 0] } {
        set recvchan [lindex $chan2 2]
    } else {
        return 0
    }
    putquick "PRIVMSG $recvchan :*** $hlnick[lindex $arg 0]$hlnick set mode [lrange $arg 2 end] on [lindex $arg 1]"
}

######################################
# proc for helping
#

# proc status
proc help:status { nick host handle arg } {
    global trans_pub trans_act trans_nick trans_join trans_part trans_quit trans_topic trans_kick trans_mode recv_pub recv_act recv_nick recv_join recv_part recv_quit recv_topic recv_kick recv_mode hlnick transmit receive chan1 chan2
    putquick "PRIVMSG $nick :\002 Global status\002"
    putquick "PRIVMSG $nick :\037type\037   -- | trans -|- recept |"
    putquick "PRIVMSG $nick :global -- | -- $transmit -- | -- $receive -- |"
    putquick "PRIVMSG $nick :pub    -- | -- $trans_pub -- | -- $recv_pub -- |"
    putquick "PRIVMSG $nick :act    -- | -- $trans_act -- | -- $recv_act -- |"
    putquick "PRIVMSG $nick :nick   -- | -- $trans_nick -- | -- $recv_nick -- |"
    putquick "PRIVMSG $nick :join   -- | -- $trans_join -- | -- $recv_join -- |"
    putquick "PRIVMSG $nick :part   -- | -- $trans_part -- | -- $recv_part -- |"
    putquick "PRIVMSG $nick :quit   -- | -- $trans_quit -- | -- $recv_quit -- |"
    putquick "PRIVMSG $nick :topic  -- | -- $trans_topic -- | -- $recv_topic -- |"
    putquick "PRIVMSG $nick :kick   -- | -- $trans_kick -- | -- $recv_kick -- |"
    putquick "PRIVMSG $nick :mode   -- | -- $trans_mode -- | -- $recv_mode -- |"
    putquick "PRIVMSG $nick :nicks appears as $hlnick$nick$hlnick"
    putquick "PRIVMSG $nick :[lindex $chan1 0] is on [lindex $chan1 1] and transmit to [lindex $chan1 2]"
    putquick "PRIVMSG $nick :[lindex $chan2 0] is on [lindex $chan2 1] and transmit to [lindex $chan2 2]"
    putquick "PRIVMSG $nick :\002 END of STATUS"
}

# proc help
proc help:cmds { nick host handle arg } {
    global botnick
    putquick "NOTICE $nick :/msg $botnick trans <type> on|off to change the transmissions"
    putquick "NOTICE $nick :/msg $botnick recv <type> on|off ti change the receptions"
    putquick "NOTICE $nick :/msg $botnick status to see my actual status"
    putquick "NOTICE $nick :/msg $botnick help for this help"
}

# End !
putlog "Loaded: chanrelay.tcl \($mver\)"
[/code]
M
Moonster
Halfop
Posts: 95
Joined: Wed Nov 13, 2002 5:39 pm
Location: Manchester NH USA
Contact:

Post by Moonster »

When linking bots even for relay purposes you would link them the NORMAL way. Do Not have them share userfiles or chanfiles of course but they can be linked normally otherwise.

I use a script called LINKCHAN.tcl its very easy you change 2 lines in the code (Channel name and channel code) and then use the same settings on both bots.
"Knowledge is Power"
BeastNH/Moonster on Undernet/EFnet IRC Network
r
raider2k
Op
Posts: 140
Joined: Tue Jan 01, 2008 10:42 am

Post by raider2k »

Id suggest to see whats causing the link-error first before working on other things since what you are trying to do falls and rises with an unsuccesfull or successfull link between bots.

another suggestion for a botnet would be to always have a hub bot and link the others to the hub (which hasnt loaded any large scripts or scripts in general; in other words: just have a bot online which is some kind of link-manager)
M
Moonster
Halfop
Posts: 95
Joined: Wed Nov 13, 2002 5:39 pm
Location: Manchester NH USA
Contact:

Re: linking across networks

Post by Moonster »

xmods wrote: On BotA, you would type '.+bot elit3 irc.colosolutions.net:20688'.

then .+host Elit3 *!emulate@o0o.r0oted.us

On BotB, you would type '.+bot Schmuck irc.xbox-experts.com:1699'.

.+host Schmuck *!Schmuck@p3047-adsau16honb13-acca.tokyo.ocn.ne.cumcast.org
The problem with the linking is the address in the +bot line has to be their HOSTMASK not the ircd they are connecting to.

Correct Command Usage:
+bot botnane hostname:port#

since they are on 2 different networks and wont phsysically see each other in a channel they dont need +host
"Knowledge is Power"
BeastNH/Moonster on Undernet/EFnet IRC Network
Post Reply