BenderIRC Homepage

- Release 1.4b -

- www.BenderIRC.de -

Installation

The Bot Part

Configure

PlugIns

This is the BenderIRC Homepage, as you already know. Bender is actual Amiga-Only.

Ok, let`s start. If you need help on IRC as whole use IRC-Help.

Commands

%u will be a username and %c the channelname and %msg your text.

Press TAB to have a NickNameCompleder

/NOTICE %u %msg

i.e. /NOTICE Godfather Hello

Sends a notice to user = %u with the msg = %msg
/MSG %u %msg

i.e. /MSG Godfather Hello

Sends a message to user = %u with the text = %msg
/VERSION %u

i.e. /VERSION Godfather

Requests version of the Client %u uses.
/USERINFO %u

i.e. /USERINFO Godfather

request the selfeditable Userinformation from %u
/PING %u

i.e. /PING Godfather

pings %u via ircserver to see if still alive
/ME %msg

i.e. /ME says Hello to all new Users

performs an ACTION in the Channel, which means all normal clients show " says Hello to all new Users" if you enter the Example.
/WHO %u

i.e. /WHO Godfather

performs a who request to the irc server
/WHOIS %u

i.e. /WHOIS Godfather

performs a whois request to the server and returns information about a username ( nick )
/WHOWAS %u

i.e. /WHOWAS Godfather

Returns who Godfather was and when he used that nick.
/ISON %u

i.e. /ISON Godfather

Shows if %u is online in the irc-system the server belongs to.
/USER %u

i.e. /USER Godfather

actual , i don`t know what it does :-)
/NICK %u

i.e. /NICK Godfather

Changes your Nick to i.e. GodFather
/PART %c

i.e. /PART #AmigaFun

parts the Channel %c - but does not leave the SERVER!
/MODE %u

i.e. /MODE #AmigaFun +o NickName

Sets Channelmodes ... pls refer to a IRC Documentation! i.e. Sets the operatorstatus to NickName.
/RAW %u

i.e. /RAW JOIN :#AmigaFun

These allows the advanced user to send special commands to the server. normally you won`t need this!
i.e. would send a channel Join request to the server for channel #AmigaFun.
/QUIT Quits the Client. For all Windows-Users : If you don`t find this command usefull , a normal Amiga Programm can be stopped external with BREAKNAME Programname! Or a simple CTRL+c ! *G*
/SERVER %s

i.e. /SERVER irc.altnet.org

disconnects from the actual server to a new one.
/OP %u
/DEOP %u
/VOICE %u
/DEVOICE %u
/JOIN %c
Because these commands are explaind in any normal irc document (s.a.) we wil hold them short.
/LIST %c

i.e. /LIST #AMigafun

List Channelstopics and/or Users on a Channel, if you enter just /LIST you will get the whole channellist of the connected server.
/AWAY

enables/disables AUTOAWAY-Message for incoming messages
/PAGE {ON|OFF}
i.e. /PAGE ON | /PAGE

enables/disables (ON/OFF) PAGEING of User. if any sends you a CTCP ... PAGE message you will get a Requester that will indicate that someone calls you.
/SECURITY

enables/disables SecurityFunctions like, disallowing incomming commands if autoaway is on.
/COLORS /NOCOLORS

enables/disables Colordecoding for incoming texts
/MSGCOLORS /NOMSGCOLORS

enables/disables Colordisplay for outgoing messages
/NONOTICECOLORS /NOTICECOLORS

enables/disables Colordecoding for outgoing notices
/NAMECOLORS /NONAMECOLORS

enables/disables Colordisplay for nicknames
!trans an
!trans aus
!benice an
!benice aus
e>d
d>e
look at the BOT Command Section
/ECHO %msg

i.e. /ECHO Hallo

outputs message into the display NOT into the channel! This is usefull for Scripts!
/CMD %msg

i.e. /CMD dir t:

executes a command...i.e. would execute "DIR t:"
/DCCSEND %u %filename

i.e. /DCCSEND Godfather uploadfile.txt

Sends via DCC a file to the user.
/DCCCHAT %u

i.e. /DCCCHAT Godfather

Sends a DCC CHAT offer to user Godfather. You will get a seperate Window for the Chat!
/DCCIP %arg

i.e. /DCCIP or /DCCIP 192.156.44.3

sets an IP for DCC or shows actual used DCCIP
/CTCP %u %args

i.e. /CTCP Bot XDCC SEND 2

requests Slot 2 from Bot via XDCC.
/XDCC %u %args

i.e. /XDCC Bot SEND 2

requests Slot 2 from Bot via XDCC.
/PLUGINS

i.e. /PLUGINS

Displays all active Plugins which have registered to this BenderIRC Cient
/FLUSHPLUGINS

kill all Plugins
/BREAKPLUGIN %arg

i.e. /BREAKPLUGIN html.plugin

will BREAK the html-plugin
/PLUGINOUTPUT

i.e. /PLUGINOUTPUT

enbles Pluginoutput to ClientWindow. Use this to get sure what your Script or Plugin sends to the Channel. If it does somethink like "/KICK someone" i would suggest to run a firewall or a new pluginversion.

Plugins ARE YOU! PLUGINS do not need to REGISTER to send to Bender

/NOPLUGINOUTPUT

i.e. /NOPLUGINOUTPUT

disables Pluginoutput to ClientWindow
/PRIVMSG

enables privatemessages in Bender. External Plugins will get the lines too!
/NOPRIVMSG

disables privatemessages in Bender. This is usefull if you have an external Message Plugin to handle your Queries!
/RAWLOG

enables/disables DUMP of RAW loglines from Server (default off)
Configure your Client

The configfile is easy to setup, just background

i.e. background X=0 Y=0 W=720 H=480 name="progdir:ircbot.gif"

where (X,Y) is the left-top-position on the Workbench and (W,H) the width(weite) and height(höhe) for the window. The given graphic should be exactly the same size! "Progdir:" is a special dos assign given to all new programs and shows allways to the directory where the program was startet. You can use a full qualified path to the gfx as well.

Button

i.e. button x=10 y=10 w=50 h=15 command="/OP %u" name=OP

a button is a normal buttongadget with the GadgetText = name , which performs the given command "command".
%uwill be filled with the selected username in the userlist
%cwill be filled with the actual channel

You don`t need ANY Button!

Input

i.e. input x=10 y=450 w=700 h=15 name=Eingabezeile

this positions the input-String-Gadget. Depending on the font, you could use a H=0 to AUTOSET it, thats a feature of GuiEnv and if this fails don`t blame me :-)

You don`t need an InputGadget!

Output

i.e. output x=120 y=30 w=710 h=440 name=Ausgabezeile

YOU NEED THAT AT LEAST!

Position the gadget over the whole window if you like that. This can be usefull for presentation in an office or what ever you think why noone should use this Client. If you have i.e. a conference with moderated irc sessions and you don`t want everyone at theire places to join in or you want to project it to be visible for everybody!

W and H mean here absolute positions like X and Y

Userlist

i.e. userliste x=10 y=180 w=100 h=200

Places the userlist at X,Y. Remember that there will be a ScrollerGadget to right side of the userlist. Leave space for it!

You don`t need this Gadget!

Counter

i.e. counter x=10 y=390 w=100 h=15 name=BytesCounter

This Gadget shows you the actual traffic caused for this client. it does NOT show you how much you have send!

You don`t need this Gadget!

UserCounter

i.e. usercounter x=10 y=415 w=40 h=15 name=UserCounter

Shows how much users are in this channel!

You don`t need this Gadget!

LampDisplays

i.e. Lampdisplay x=120 y=9 w=230 h=19 on=progdir:Lampan.pic off=progdir:Lampaus.pic

The Lamps show you the settings of you client. From left to right these are:

if not further noticed on=aktiv/enabled off=inaktiv/disabled

  1. NoColors
  2. NoMsgColors
  3. NoNoticeColors
  4. NoNameColors
  5. Translation
  6. HeartBeat
  7. Outside BOT Access
  8. Entertain
  9. BeNice-Mode
  10. AutoAway-Mode
  11. Security-Mode

You don`t need this Gadget!

Status

i.e. Status colors noticecolors msgcolors namecolors noautoaway

This is no gadget. It en/disables features at startup. DCC

i.e. DCC ip=192.55.44.3 port=2001

That`s special. Port ist the uses DCC Port for DCC Sends! IP is the IP used by the Bot to tell the receiver to connect to your host. If you want to make a dcc send to anyone outside your LAN , enter here the IP for your internetgateway ( router ) and activate IP-NAT-PORT-FORWARDING on Port 2001 (s.a.) to your local machine same Port ( 2001 ). It will work! If you have a dynamical IP on your Router like most DSL / Dial-UP users will have, you have to change the IP on the settings everytime your router gets a new IP!

Download

i.e Download Pfad=Amitcp:blackirc/downloads

Here your incoming DCC Files will be downloaded to.

Server

i.e. name=testchannel Server=irc.phat-net.de Nick=BenderIRC channel=#AmigaFun port=6667

The server settings. Ignore name for now. the rest should be self explaing

BOT Commands

You can imagine which commands need further arguments. most commands a only for the BOTMaster ( anyone with the passwords ).

!ipsend back the actual ip of the host BenderIRC is running on
!QUITquits the bot
!helpshows available commands,depends on user status
!lastshows bot log, but be carefull this could activate floodprotection from the irc server!
!saylets say the bot something to the channel
!nickbot changes nick
!partbot parts the channel
!joinbot join a channel
!opbot tries to op a user
!deopbot deops a user
!voicebot tries to give voice to a user
!unvoicebot takes voice from a user
!trans anenables translation feature
!trans ausdiables translation feature
!beschwerde anbot will abuse itself to the message sender!
!beschwerde ausbot will be nice and gives a short response to illegal commands or users who tire to use the bot without access
!heartbeat ansends heartbeat notices to his master
!heartbeat ausstops the heartbeats
!benice ansends welcome messages to new chatter
!benice ausdoes not do it
!entertain ansends from time to time messages to the channel i.e. if noone talks for 20 minutes.
!entertain ausstops it
!statssends a short statisticline to sender
!passwort loginpasswordenables above commands
!passwort logoutpassworddisables above commands
!abusesends a given text to sender
!ignoremeignores the nick of the sender. which means that he does no longer exists for the BOT

Installation

It could not be easier. Assign the subdirectory bin to "bin:" or copy the content to your bin: Volume. "bin:" is mostly part of the amitcptree.

i.e. "assign bin: benderirc/bin add"

Plugins

Oh yeeear PlugIns! These are great!

You want to have something done which Bender does not offer, write a plugin, send it with installdocs to plugin@benderirc.de and let others have it too.

How to build one?
Easy, take one of the ExampleSources and rewrite it!
In one of the next releases i will add an irc.library with alle needed code like color decoding aso.

How to register a Plugin?
Send a register message to the BenderClient you wanne register to
BenderClients listen to UDP packets on a given port. Any Bender will setup an udp server port in the portrange from 54321 -> 65535, beginning with 54321 and going up the list of port until it can bind to that port.

If another bender is listening to the port it can not bind an skips to the next free port.
Your Plugin has to send his udp listening port his name and its priority +-2^8 to bender:
matching these args: REGISTER/S,localhost/N/K,NAME/K,pri/N/K

Example: REGISTER localhost=3000 name="myNewPlugin" pri=0

To unregister it has to send another message to bende:
matching these args: UNREGISTER/S,NAME/K,PORT/N/K

Example: UNREGISTER name="myNewPlugin" port=3000

What does your Plugin get?
Rawlines, like Bender gets them.
  • After sending a register message to bender you will receive an ok-message from that bender you registered to, on you given udp listening port.
    "001 OK" and "002 #CHANNELNAME"

  • You can get a "999 QUIT" from a Bender which means that this bender will no longer serve you. This will happen if Bender quits, or if someone entered a flush plugin command.
  • All other messages are RAW IRC Lines directly from the IRC Server

And now?
Process & Send Data from/to BenderIRC
Parse the lines yourself if you whish or wait for an earthquake or whatever your Plugin will wanne do. Everytime Bender gets a new Line it will send this like to ANY registered plugin via UDP.

What you don`t have to do!
Answere to IRC Server Messages!
Because Bender is handling these too and i don`t know what nervous server demons do if they receive two or more answeres.

OK, my script wants to send something to the channel!
Ok, just send it to the Bender port your plugin has found.
Send an UDP packet to the port you have found that a bender uses. If you don`t register or unregister, everything will be processed like it was entered in the input gadget. If you wanne show up in the display gadget only, send an "/ECHO ..." message. If you wann have it in the channel, remove the leading "/ECHO".

Scriptwriters beware of sending hidden texts to the Channel!

Bender can reroute your lines to the display gadget on request and it won`t be funny anymore ;-) . Ok, if you wanne output to the channel and to the display gadget, just send two packets!

Something else?
No , not really.
  1. As you can imagine now , your plugin is no Script! Your Plugin is a standalone programm which receives and send tcp packets. It has all resources of your amiga and can do what ever you wanted on IRC!
  2. Security The PluginSystem is not secure by nature! If you send a udppacket from a remote host to a listening bender port, it will be handled as it was from a local plugin . This opens ways of attacking your amiga! If the Security option is set any incoming packets except register and unregister messages are not handled! If Security is on, noone will be able to take over your client, your channel, or something else. All plugins will get theire rawlines and cann process them, but that`s it!


    There is another way to be secure noone else will send you packets

    enter this line if you run MiamiDX :

    ipfw add 1001 drop udp from not 192.168.0.0:255.255.0.0 to any 54321-54300 via eth0

    or

    ipfw add 1001 drop udp from not any to any 54321-54300 via eth0

    Use the first one, if you want to allow access from your LAN , and the second if you don`t trust anyone or you are on a dial-up connection without a LAN.

  3. The funny part ist, that you can all forget that, if you are on a LAN and your router does not explicitly forward incoming UDP packets on the shown ports to your host! *G*