170 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
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.
 |