170 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			170 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | phpTOCLib version 1.0 RC1 | ||
|  | 
 | ||
|  | This is released under the LGPL. AIM,TOC,OSCAR, and all other related protocols/terms are  | ||
|  | copyright AOL/Time Warner. This project is in no way affiliated with them, nor is this | ||
|  | project supported by them. | ||
|  | 
 | ||
|  | Some of the code is loosely based off of a script by Jeffrey Grafton. Mainly the decoding of packets, and the | ||
|  | function for roasting passwords is entirly his. | ||
|  | 
 | ||
|  | TOC documentation used is available at http://simpleaim.sourceforge.net/docs/TOC.txt | ||
|  | 
 | ||
|  | 
 | ||
|  | About: | ||
|  | phpTOCLib aims to be a PHP equivalent to the PERL module NET::AIM. Due to some limitations,  | ||
|  | this is difficult. Many features have been excluded in the name of simplicity, and leaves | ||
|  | you alot of room to code with externally, providing function access to the variables that | ||
|  | need them. | ||
|  | 
 | ||
|  | I have aimed to make this extensible, and easy to use, therefore taking away some built in | ||
|  | functionality that I had originally out in. This project comes after several months of | ||
|  | researching the TOC protocol. | ||
|  | 
 | ||
|  | example.php is included with the class. It needs to be executed from the command line | ||
|  | (ie:php -q testscript.php) and you need to call php.exe with the -q | ||
|  | example is provided as a demonstaration only. Though it creats a very simple, functional bot, it lacks any sort of commands, it merely resends the message it recieves in reverse. | ||
|  | 
 | ||
|  | 
 | ||
|  | Revisions: | ||
|  | 
 | ||
|  | ----------------------------------- | ||
|  | by Rajiv Makhijani | ||
|  | (02/24/04) | ||
|  | 	 - Fixed Bug in Setting Permit/Deny Mode | ||
|  | 	 - Fixes so Uninitialized string offset notice doesn't appear | ||
|  | 	 - Replaced New Lines Outputed for Each Flap Read with " . " so | ||
|  | 	   that you can still tell it is active but it does not take so much space | ||
|  | 	 - Removed "eh?" message | ||
|  | 	 - Added MySQL Database Connection Message | ||
|  | 	 - New Functions: | ||
|  | 		update_profile(profile data string, powered by boolean) | ||
|  | 			* The profile data string is the text that goes in the profile. | ||
|  | 			* The powered by boolean if set to true displays a link to the | ||
|  | 			  sourceforge page of the script. | ||
|  | (02/28/04) | ||
|  | 	- Silent option added to set object not to output any information | ||
|  | 		- To follow silent rule use sEcho function instead of Echo | ||
|  | ----------------------------------- | ||
|  | by Jeremy (pickleman78) | ||
|  | (05/26/04) beta 1 release | ||
|  | 	-Complete overhaul of class design and message handling | ||
|  | 	-Fixed bug involving sign off after long periods of idling | ||
|  | 	-Added new function $Aim->registerHandler | ||
|  | 	-Added the capability to handle all AIM messages | ||
|  | 		-Processing the messages is still the users responsibility | ||
|  | 	-Did a little bit of code cleanup | ||
|  | 	-Added a few internal functions to make the classes internal life easier | ||
|  | 	-Improved AIM server error message processing | ||
|  | 	-Updated this document (hopefully Rajiv will clean it up some, since I'm a terrible documenter) | ||
|  | ------------------------------------------------------------------------------------------------------------- | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Functions: | ||
|  | 
 | ||
|  | Several methods are provided in the class that allow for simple access to some of the  | ||
|  | common features of AIM. Below are details. | ||
|  | 
 | ||
|  | $Aim->Aim($sn,$password,$pdmode, $silent=false) | ||
|  | The constructor, it takes 4 arguments.  | ||
|  | $sn is your screen name | ||
|  | $password is you password, in plain text | ||
|  | $pdmode is the permit deny mode. This can be as follows: | ||
|  | 1 - Allow All | ||
|  | 2 - Deny All | ||
|  | 3 - Permit only those on your permit list | ||
|  | 4 - Permit all those not on your deny list | ||
|  | $silent if set to true prints out nothing | ||
|  | 
 | ||
|  | So, if your screen-name is JohnDoe746 and your password is fertu, and you want to allow | ||
|  | all users of the AIM server to contact you, you would code as follows | ||
|  | $myaim=new Aim("JohnDoe746","fertu",1); | ||
|  | 
 | ||
|  | 
 | ||
|  | $Aim->add_permit($buddy) | ||
|  | This adds the buddy passed to the function to your permit list. | ||
|  | ie: $myaim->add_permit("My friend22"); | ||
|  | 
 | ||
|  | $Aim->block_buddy($buddy) | ||
|  | Blocks a user. This will switch your pd mode to 4. After using this, for the user to remain | ||
|  | out of contact with you, it is required to provide the constructor with a pd mode of 4 | ||
|  | ie:$myaim->block_buddy("Annoying guy 4"); | ||
|  | 
 | ||
|  | $Aim->send_im($to,$message,$auto=false) | ||
|  | Sends $message to $user. If you set the 3rd argument to true, then the recipient will receive it in | ||
|  | the same format as an away message. (Auto Response from me:) | ||
|  | A message longer than 65535 will be truncated | ||
|  | ie:$myaim->send_im("myfriend","This is a happy message"); | ||
|  | 
 | ||
|  | $Aim->set_my_info() | ||
|  | Sends an update buddy command to the server and allows some internal values about yourself | ||
|  | to be set. | ||
|  | ie:$myaim->set_my_info(); | ||
|  | 
 | ||
|  | $Aim->signon() | ||
|  | Call this to connect to the server. This must be called before any other methods will work | ||
|  | properly | ||
|  | ie:$mybot->signon(); | ||
|  | 
 | ||
|  | $Aim->getLastReceived() | ||
|  | Returns $this->myLastReceived['decoded']. This should be the only peice of the gotten data | ||
|  | you need to concern yourself with. This is a preferred method of accessing this variable to prevent | ||
|  | accidental modification of $this->myLastReceived. Accidently modifying this variable can | ||
|  | cause some internal failures. | ||
|  | 
 | ||
|  | $Aim->read_from_aim() | ||
|  | This is a wrapper for $Aim->sflap_read(), and only returns the $this->myLastReceived['data'] | ||
|  | portion of the message. It is preferred that you do not call $Aim->sflap_read() and use this | ||
|  | function instead. This function has a return value. Calling this prevents the need to call | ||
|  | $Aim->getLastReceived() | ||
|  | 
 | ||
|  | $Aim->setWarning($wl) | ||
|  | This allows you to update the bots warning level when warned. | ||
|  | 
 | ||
|  | $Aim->getBuddies() | ||
|  | Returns the $this->myBuddyList array. Use this instead of modifying the internal variable | ||
|  | 
 | ||
|  | $Aim->getPermit() | ||
|  | Returns the $this->myPermitList array. Use this instead of modifying the internal variable | ||
|  | 
 | ||
|  | $Aim->getBlocked() | ||
|  | Returns the $this->myBlockedList array. Use this instead of modifying the internal variable | ||
|  | 
 | ||
|  | $Aim->warn_user($user,$anon=false) | ||
|  | Warn $user. If anon is set to true, then it warns the user anonomously | ||
|  | 
 | ||
|  | $Aim->update_profile($information, $poweredby=false) | ||
|  | Updates Profile to $information.  If $poweredby is true a link to | ||
|  | sourceforge page for this script is appended to profile | ||
|  | 
 | ||
|  | $Aim->registerHandler($function_name,$command) | ||
|  | This is by far the best thing about the new release.  | ||
|  | For more information please reas supplement.txt. It is not included here because of the sheer size of the document. | ||
|  | supplement.txt contains full details on using registerHandler and what to expect for each input. | ||
|  | 
 | ||
|  | 
 | ||
|  | For convenience, I have provided some functions to simplify message processing.  | ||
|  | 
 | ||
|  | They can be read about in the file "supplement.txt". I chose not to include the text here because it | ||
|  | is a huge document | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | There are a few things you should note about AIM | ||
|  | 1)An incoming message has HTML tags in it. You are responsible for stripping those tags | ||
|  | 2)Outgoing messages can have HTML tags, but will work fine if they don't. To include things | ||
|  |   in the time feild next to the users name, send it as a comment | ||
|  | 
 | ||
|  | Conclusion: | ||
|  | The class is released under the LGPL. If you have any bug reports, comments, questions | ||
|  | feature requests, or want to help/show me what you've created with this(I am very interested in this),  | ||
|  | please drop me an email: pickleman78@users.sourceforge.net. This code was written by  | ||
|  | Jeremy(a.k.a pickleman78) and Rajiv M (a.k.a compwiz562). | ||
|  | 
 | ||
|  | 
 | ||
|  | Special thanks: | ||
|  | I'd like to thank all of the people who have contributed ideas, testing, bug reports, and code additions to | ||
|  | this project. I'd like to especially thank Rajiv, who has done do much for the project, and has kept this documnet | ||
|  | looking nice. He also has done alot of testing of this script too. I'd also like to thank SpazLink for his help in | ||
|  | testing. And finally I'd like to thank Jeffery Grafton, whose script inspired me to start this project. |