///---------------------------------------------------------------------------- /// /// Copyright (c) 2008 AOL LLC /// /// All rights reserved. /// /// Redistribution and use in source and binary forms, with or without modification, are permitted /// provided that the following conditions are met: /// /// Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. /// /// Redistributions in binary form must reproduce the above copyright notice, this list of conditions and /// the following disclaimer in the documentation and/or other materials provided with the distribution. /// /// Neither the name of the AOL LLC nor the names of its contributors may be used to endorse or /// promote products derived from this software without specific prior written permission. /// /// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS /// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT /// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR /// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR /// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, /// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, /// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR /// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF /// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING /// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS /// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /// ///---------------------------------------------------------------------------- import com.aol.acc.*; import java.util.*; import java.util.regex.*; public class accjbot implements AccEvents { AccSession session; boolean running = true; String key = "accjbot (Key:ju1lyCD_aTaZybdU)"; String signOffPassword = "please1234"; Vector regexps = new Vector(); long start = new Date().getTime(); public static void main(String[] args) { if(args.length != 2) { System.out.print("usage: java accjbot username password"); return; } try { new accjbot(args[0], args[1]); } catch (AccException e) { System.out.println("Main AccException, hr: "+e.errorCode); e.printStackTrace(); } } public accjbot(String username, String password) throws AccException { // Create main session object session = new AccSession(); // Add event listener session.setEventListener(this); // set key AccClientInfo info = session.getClientInfo(); info.setDescription(key); // set screen name session.setIdentity(username); // setup prefs so anyone can IM us, but not chats or DIMs session.setPrefsHook(new Prefs()); AccPreferences prefs = session.getPrefs(); prefs.setValue("aimcc.im.chat.permissions.buddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.chat.permissions.nonBuddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.direct.permissions.buddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.direct.permissions.nonBuddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.standard.permissions.buddies", AccPermissions.AcceptAll); prefs.setValue("aimcc.im.standard.permissions.nonBuddies", AccPermissions.AcceptAll); session.signOn(password); //msg pump while( running ) { try { AccSession.pump(50); } catch (Exception e) { e.printStackTrace(); } try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } info = null; session = null; prefs = null; System.gc(); System.runFinalization(); } public void OnImReceived(AccSession session, AccImSession imSession, AccParticipant participant, AccIm im) { try { String richText = im.getConvertedText("application/xhtml+xml"); String msg = im.getConvertedText("text/plain"); String errors = ""; if(msg.equals("stats")) { long diff = (new Date()).getTime() - start; diff /= 1000; // convert to seconds long days = diff/86400; diff = diff - 86400*days; long hours = diff/3600; diff = diff - 3600*hours; long minutes = diff/60; richText = "Running for "+days+" day"+ ((days!=1)?"s":"")+", "+hours+" hour"+((hours!=1)?"s":"")+", "+minutes+" minute"+((minutes!=1)?"s":"")+"."; } else if(msg.startsWith("list")) { richText = "List of regexps:
"; for(String regexp : regexps) { richText += regexp+"
"; } } else if(msg.startsWith("remove")) { int i = msg.indexOf(" "); if(i != -1) { String message = msg.substring(i+1); if(regexps.remove(message)) { richText = "Removed "+message+" from the list."; } else { richText = message+" not found in the list, try list to see what exists."; } } } else if(msg.startsWith("add")) { int i = msg.indexOf(" "); if(i != -1) { String message = msg.substring(i+1); regexps.remove(message); regexps.add(message); richText = "Added "+message+" to list."; } } else if(msg.startsWith("help")) { richText = "help
list
add
remove
quit"; } else if(msg.startsWith("quit")) { int i = msg.indexOf(" "); if(i != -1) { String message = msg.substring(i+1); if(message.equals(signOffPassword)) { session.signOff(); return; } } richText = "uh uh uh! you didn't say the magic word..."; } else { // respond with regexps for(String regexp : regexps) { String[] regexpArr = regexp.split(","); if(regexpArr.length != 2) { errors += "
"+regexp+" is not a properly formatted regexp, use the format regexp,replacement"; } else { try { richText = richText.replaceAll(regexpArr[0], regexpArr[1]); } catch (PatternSyntaxException ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", textRegex does not contain a valid regular expression" + ex.getDescription(); } catch (IllegalArgumentException ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", textReplace contains inapropriate dollar signs" + ex.getMessage(); } catch (IndexOutOfBoundsException ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", textReplace contains a backreference that does not exist (e.g. $4 if there are only three groups)" + ex.getMessage(); } catch (Exception ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", " + ex.getMessage(); } } } } if(running) { im.setText(richText + errors); imSession.sendIm(im); } } catch (AccException e) { System.out.println("Someone through an AccException with the HR: "+e.errorCode); e.printStackTrace(); } } public void OnStateChange(AccSession arg0, AccSessionState arg1, AccResult arg2) { System.out.println(arg1+""+arg2); if(arg1 == AccSessionState.Offline) { running = false; } } /** Unimplemented stubs **/ public void OnSessionChange(AccSession arg0, AccSessionProp arg1) { // TODO Auto-generated method stub } public void OnIdleStateChange(AccSession arg0, int arg1) { // TODO Auto-generated method stub } public void OnInstanceChange(AccSession arg0, AccInstance arg1, AccInstance arg2, AccInstanceProp arg3) { // TODO Auto-generated method stub } public void OnLookupUsersResult(AccSession arg0, String[] arg1, int arg2, AccResult arg3, AccUser[] arg4) { // TODO Auto-generated method stub } public void OnSearchDirectoryResult(AccSession arg0, int arg1, AccResult arg2, AccDirEntry arg3) { // TODO Auto-generated method stub } public void OnSendInviteMailResult(AccSession arg0, int arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnRequestServiceResult(AccSession arg0, int arg1, AccResult arg2, String arg3, int arg4, AccVariant arg5) { // TODO Auto-generated method stub } public void OnConfirmAccountResult(AccSession arg0, int arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnReportUserResult(AccSession arg0, AccUser arg1, int arg2, AccResult arg3, int arg4, int arg5) { // TODO Auto-generated method stub } public void OnAlertReceived(AccSession arg0, AccAlert arg1) { // TODO Auto-generated method stub } public void OnPreferenceResult(AccSession arg0, String arg1, int arg2, String arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnPreferenceChange(AccSession arg0, String arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnPreferenceInvalid(AccSession arg0, String arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnPluginChange(AccSession arg0, AccPluginInfo arg1, AccPluginInfoProp arg2) { // TODO Auto-generated method stub } public void OnBartItemRequestPropertyResult(AccSession arg0, AccBartItem arg1, AccBartItemProp arg2, int arg3, AccResult arg4, AccVariant arg5) { // TODO Auto-generated method stub } public void OnUserRequestPropertyResult(AccSession arg0, AccUser arg1, AccUserProp arg2, int arg3, AccResult arg4, AccVariant arg5) { // TODO Auto-generated method stub } public void OnGroupAdded(AccSession arg0, AccGroup arg1, int arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnGroupRemoved(AccSession arg0, AccGroup arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnGroupMoved(AccSession arg0, AccGroup arg1, int arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnBuddyAdded(AccSession arg0, AccGroup arg1, AccUser arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnBuddyRemoved(AccSession arg0, AccGroup arg1, AccUser arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnBuddyMoved(AccSession arg0, AccUser arg1, AccGroup arg2, int arg3, AccGroup arg4, int arg5, AccResult arg6) { // TODO Auto-generated method stub } public void OnBuddyListChange(AccSession arg0, AccBuddyList arg1, AccBuddyListProp arg2) { // TODO Auto-generated method stub } public void OnGroupChange(AccSession arg0, AccGroup arg1, AccGroupProp arg2) { // TODO Auto-generated method stub } public void OnUserChange(AccSession arg0, AccUser arg1, AccUser arg2, AccUserProp arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnChangesBegin(AccSession arg0) { // TODO Auto-generated method stub } public void OnChangesEnd(AccSession arg0) { // TODO Auto-generated method stub } public void OnNewSecondarySession(AccSession arg0, AccSecondarySession arg1, int arg2) { // TODO Auto-generated method stub } public void OnSecondarySessionStateChange(AccSession arg0, AccSecondarySession arg1, AccSecondarySessionState arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnSecondarySessionChange(AccSession arg0, AccSecondarySession arg1, int arg2) { // TODO Auto-generated method stub } public void OnParticipantJoined(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2) { // TODO Auto-generated method stub } public void OnParticipantChange(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2, AccParticipant arg3, AccParticipantProp arg4) { // TODO Auto-generated method stub } public void OnParticipantLeft(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2, AccResult arg3, String arg4, String arg5) { // TODO Auto-generated method stub } public void OnInviteResult(AccSession arg0, AccSecondarySession arg1, String arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnEjectResult(AccSession arg0, AccSecondarySession arg1, String arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void BeforeImSend(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnImSent(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnImSendResult(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3, AccResult arg4) { // TODO Auto-generated method stub } public void BeforeImReceived(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnInputStateChange(AccSession arg0, AccImSession arg1, String arg2, AccImInputState arg3) { // TODO Auto-generated method stub } public void OnEmbedDownloadComplete(AccSession arg0, AccImSession arg1, AccIm arg2) { // TODO Auto-generated method stub } public void OnEmbedUploadComplete(AccSession arg0, AccImSession arg1, AccIm arg2) { // TODO Auto-generated method stub } public void OnRateLimitStateChange(AccSession arg0, AccImSession arg1, AccRateState arg2) { // TODO Auto-generated method stub } public void OnNewFileXfer(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) { // TODO Auto-generated method stub } public void OnFileXferProgress(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) { // TODO Auto-generated method stub } public void OnFileXferCollision(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) { // TODO Auto-generated method stub } public void OnFileXferComplete(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnFileXferSessionComplete(AccSession arg0, AccFileXferSession arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnFileSharingRequestListingResult(AccSession arg0, AccFileSharingSession arg1, AccFileSharingItem arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnFileSharingRequestXferResult(AccSession arg0, AccFileSharingSession arg1, AccFileXferSession arg2, int arg3, AccFileXfer arg4) { // TODO Auto-generated method stub } public void OnAvStreamStateChange(AccSession arg0, AccAvSession arg1, String arg2, AccAvStreamType arg3, AccSecondarySessionState arg4, AccResult arg5) { // TODO Auto-generated method stub } public void OnAudioLevelChange(AccSession arg0, AccAvSession arg1, String arg2, int arg3) { // TODO Auto-generated method stub } public void OnSoundEffectReceived(AccSession arg0, AccAvSession arg1, String arg2, String arg3) { // TODO Auto-generated method stub } public void OnCustomDataReceived(AccSession arg0, AccCustomSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnCustomSendResult(AccSession arg0, AccCustomSession arg1, AccParticipant arg2, AccIm arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnEmbedUploadProgress(AccSession arg0, AccImSession arg1, AccIm arg2, String arg3, AccStream arg4) { // TODO Auto-generated method stub } public void OnEmbedDownloadProgress(AccSession arg0, AccImSession arg1, AccIm arg2, String arg3, AccStream arg4) { // TODO Auto-generated method stub } public void OnDeleteStoredImsResult(AccSession arg0, int arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnDeliverStoredImsResult(AccSession arg0,int arg1,AccResult arg2) { // TODO Auto-generated method stub } public void OnRequestSummariesResult(AccSession arg0,int arg1, AccResult arg2,AccVariant arg3) { // TODO Auto-generated method stub } public void OnAvManagerChange(AccSession arg0, AccAvManager arg1, AccAvManagerProp arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnLocalImReceived(AccSession arg0, AccImSession arg1, AccIm arg2) { // TODO Auto-generated method stub } public void OnPluginUninstall(AccSession s, AccPluginInfo p) { // TODO Auto-generated method stub } public void OnPushBuddyFeedResult(AccSession s, int t, AccResult r, String arg1) { // TODO Auto-generated method stub } }