View ¡m../sdba/././sdbaREADME.txt¡n
SDBA Revolution Instant Messaging Application Server by Duncan Lamb http://www.duncanlamb.com/sdba/ TO UPGRADE from before 2.0: YOU MUST REPLACE MSN.pm! ENHANCED MSN.pm that handles pic display is in root directory, not in the MSN zip! Don't use the one in the zip if you want to use mobile MSN clients! Version 2.4: added support for picture display (must use the loose MSN.pm in the zip file), fixed blank-response bug, added support for non-mobile libs. Version 2.3: integration directory, to allow other applications to invoke the bot by dropping in single messages. See website for particulars. Version 2.2: Able to pass protocol, screenname and password from console Usage: sdba.pl [IMprotocol] [screenname] [password] Version 2.15: Added SEND_PAGE, to page MobileMSN clients (SEND_PAGE('addy@hotmail.com', "Hey you!");) Version 2.1: Fixed SEND_IM for MSN. Version 2.0: Support for a friendly name for the server (only for MSN, set in config.im, changes on connecting) New var - $VISITORNAME (only for MSN, friendly name of visitor) Full support for mobile MSN clients. (max reply size < 121 bytes) New MSN.pm, must replace old one! Small insignificant enhancements to stupid eliza sample app. Version 1.9 etc: I forgot! Version 1.85: Fixed a session carrying bug - thanks to Eduardo David version 1.6: beta SEND_IM on MSN (very strange behavior, wish someone could explain it) broke out message length and wait-time variables version 1.5: New predefined var - $IMNET New app, IM Broadcast - works very well on AIM, ICQ, Jabber, and YIM It has the following features: -Uses AIM, MSN, ICQ, or YahooIM (See YIM notes below) -Easy scripting of IM Responses -Mingled text and code via <% %>, much like mod_perl or PHP -Straight perl for the scripting part -Session variables, consistent across messages -Session time limits -Support for multiple "apps" from one bot -Basic security - Can use multiple access lists of password files -Very extensible and easy to add in controlling subs Lots of future ideas To set yourself up and start messing with stuff: 1. Make sure you have Perl installed. If you use Windows install free ActivePerl from ActiveState.com 1. Go to www.aim.com and make a screenname for your bot (don't use your account!) or get a new MSN Passport 2. Unzip this bot somewhere, preserve directories. 3. Install Net::AIM for AIM or ICQ On Windows (via PPM): "ppm" at cmd prompt, then "install Net-AIM" Linux (via CPAN): perl -MCPAN -e "install 'Net::AIM'", or do it manually OR for MSN - put MSN.pm in site/lib, or in your path. OR for YahooIM, install Net::YahooMessenger AND Crypt::PasswdMD5 4. Go to where you unzipped the files and open up config.im 5. Fill in the obvious stuff up top (bot ptotocol, name/pw, etc). 6. Fire it up! (perl sdba.pl in windows, ./sdba.pl otherwise) 7. Yahoo is a little different - use sdbayim.pl for YIM. At this point, if everything is set up correctly try to message your bot with a regular AIM client. You should see the sample apps. Take a look im impages/ at the simple sample apps to see how things work. Here is a general overview that will help explain alot: The first response for each app is in a file that ends with ".first" All other pages follow this one, one to the other using $NEXTPAGE. Other reponses/pages end with ".im" . If multiple *.first files are present, it automagically makes a menu to prompt the user to chose which one to use (use #HEAD: at the top of the file to give it a description). Several variables are available to you in the im responses $VISITOR - the name of the person messaging your bot $INCOMINGMSG - the string of text they sent over. Use this to find out what they want $CURRENTPAGE - current page $LASTINPUT - the input string they sent the message before this one $LASTPAGE - the last response that was sent to them $TOTALIMS - the total number of IMs they have sent since server was started $SESSIONIMS - number of IMs in the current session (default 5 minutes) You can use those anywhere in your scripted messages. **** In your messages, set $NEXTPAGE to tell the server which response the visitor should be pointed to next. **** There are two special commands to use in the scripting: imecho - This adds text to the message from a script command ex: imecho "Hello $VISITOR!"; session() - this adds the variable in the parens to the session list for that user. From that point forward that var is saved and accessible and changeable in any future page. Ex; session(blah); - $blah is now saved and can be used in any future response until the session expires. I have also added in two special "super subs": ACCESS_LIST(); - put in your code. Matches $VISITOR against specified text file of names, one per line. returns error is $VISITOR is not included in the list. If no file name is givien, defaults to "access.lst" (these lists should be kept in the impages directory. X; - looks for a single "X" or "x" in inout, and restarts visitor if so SEND_IM(target, message); - To send an unsolicited message elsewhere AUTHENTICATE(); - same as access list, just adds a password for each account in the file. First time will ask user to enter a password to continue, and reject if it is wrong. Defaults to "auth.lst" if no filename is given. Again, look at the simple sample apps to see all this make instant sense. Hope you have fun. And I hope this is self explanatory. Apache license and all that. I'm no lawyer and I can't afford one and a freakin justice system shouldn't require a lawyer for justice anyway so leave me alone about all that stuff.