summaryrefslogtreecommitdiff
path: root/protocols/AimOscar/aim.h
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/AimOscar/aim.h')
-rw-r--r--protocols/AimOscar/aim.h345
1 files changed, 345 insertions, 0 deletions
diff --git a/protocols/AimOscar/aim.h b/protocols/AimOscar/aim.h
new file mode 100644
index 0000000000..b986fa280d
--- /dev/null
+++ b/protocols/AimOscar/aim.h
@@ -0,0 +1,345 @@
+/*
+Plugin of Miranda IM for communicating with users of the AIM protocol.
+Copyright (c) 2008-2011 Boris Krasnovskiy
+Copyright (C) 2005-2006 Aaron Myles Landwehr
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef AIM_H
+#define AIM_H
+
+#define MIRANDA_VER 0x0A00
+
+#include <m_stdhdr.h>
+
+//System includes
+#include <windows.h>
+#include <vssym32.h>
+
+#include <ctype.h>
+#include <fcntl.h>
+#include <io.h>
+#include <prsht.h>
+#include <richedit.h>
+#include <sys/stat.h>
+#include <time.h>
+
+//Miranda IM includes
+#ifdef _MSC_VER
+#pragma warning( disable: 4100 )
+#endif
+
+#include <newpluginapi.h>
+#include <m_avatars.h>
+#include <m_button.h>
+#include <m_chat.h>
+#include <m_clc.h>
+#include <m_clist.h>
+#include <m_clistint.h>
+#include <m_clui.h>
+#include <m_database.h>
+#include <m_history.h>
+#include <m_idle.h>
+#include <m_langpack.h>
+#include <m_message.h>
+#include <m_netlib.h>
+#include <m_options.h>
+#include <m_popup.h>
+#include <m_protocols.h>
+#include <m_protomod.h>
+#include <m_protosvc.h>
+#include <m_skin.h>
+#include <statusmodes.h>
+#include <m_system.h>
+#include <m_userinfo.h>
+#include <m_addcontact.h>
+#include <m_icolib.h>
+#include <m_utils.h>
+#include <m_system_cpp.h>
+#include <m_imgsrvc.h>
+#include <win2k.h>
+
+//independent includes
+#include "flap.h"
+#include "snac.h"
+#include "tlv.h"
+
+//rest of includes
+#include "avatars.h"
+#include "utility.h"
+#include "chat.h"
+#include "direct_connect.h"
+#include "conv.h"
+#include "file.h"
+#include "links.h"
+#include "packets.h"
+#include "proxy.h"
+#include "resource.h"
+#include "theme.h"
+#include "ui.h"
+#include "proto.h"
+
+// Protocol limits
+#define MAX_SCREEN_NAME_LENGTH 97
+#define MAX_GROUP_NAME_LENGTH 48
+#define MAX_NICKNAME_LENGTH 64
+#define MAX_MESSAGE_LENGTH 3978
+#define MAX_STATUS_MESSAGE_LENGTH 251
+#define MAX_AWAY_MESSAGE_LENGTH 4096
+#define MAX_ICON_SIZE 7168
+
+// ICBM parameter flags
+#define ICBM_CHANNEL_MSGS_ALLOWED 0x00000001
+#define ICBM_MISSED_CALLS_ENABLED 0x00000002
+#define ICBM_EVENTS_ALLOWED 0x00000008
+#define ICBM_SMS_SUPPORTED 0x00000010
+#define ICBM_OFFLINE_MSGS_ALLOWED 0x00000100
+
+// SSI preferences
+#define SHOW_IDLE 0x00000400
+#define SHOW_RECENT_BUDDIES 0x00020000
+#define SHOW_TYPING 0x00400000
+
+//Extended Status Icon Numbers
+#define ACCOUNT_TYPE_UNCONFIRMED 1
+#define ACCOUNT_TYPE_CONFIRMED 2
+#define ACCOUNT_TYPE_ICQ 3
+#define ACCOUNT_TYPE_AOL 4
+#define ACCOUNT_TYPE_ADMIN 5
+#define EXTENDED_STATUS_BOT 1
+#define EXTENDED_STATUS_HIPTOP 2
+
+//Popup flags
+#define MAIL_POPUP 0x04
+#define ERROR_POPUP 0x08
+#define TCHAR_POPUP 0x10
+
+//Main Option Window Keys
+#define AIM_KEY_SN "SN"
+#define AIM_KEY_NK "Nick"
+#define AIM_KEY_PW "Password"
+#define AIM_KEY_HN "loginhost"
+#define AIM_KEY_PN "loginport"
+#define AIM_KEY_DC "DelConf"//delivery confirmation
+#define AIM_KEY_FP "ForceProxyTransfer"
+#define AIM_KEY_HF "HiptopFake"
+#define AIM_KEY_AT "DisableATIcons"
+#define AIM_KEY_ES "DisableESIcons"
+#define AIM_KEY_DM "DisableModeMsg"
+#define AIM_KEY_FI "FormatIncoming"//html->bbcodes
+#define AIM_KEY_FO "FormatOutgoing"//bbcodes->html
+#define AIM_KEY_II "InstantIdle"
+#define AIM_KEY_IIT "InstantIdleTS"
+#define AIM_KEY_CM "CheckMail"
+#define AIM_KEY_MG "ManageGroups"
+#define AIM_KEY_DA "DisableAvatars"
+#define AIM_KEY_DSSL "DisableSSL"
+#define AIM_KEY_FSC "ForceSingleClient"
+
+#define OTH_KEY_SM "StatusMsg"
+#define OTH_KEY_GP "Group"
+//Module Name Key
+#define MOD_KEY_CL "CList"
+//Settings Keys
+#define AIM_KEY_PR "Profile"
+#define AIM_KEY_LA "LastAwayChange"
+//Contact Keys
+#define AIM_KEY_BI "BuddyId"
+#define AIM_KEY_GI "GroupId"
+#define AIM_KEY_ST "Status"
+#define AIM_KEY_IT "IdleTS"
+#define AIM_KEY_OT "LogonTS"
+#define AIM_KEY_MS "MemberTS"
+#define AIM_KEY_AC "AccType"//account type
+#define AIM_KEY_ET "ESType"//Extended Status type
+#define AIM_KEY_MV "MirVer"
+#define AIM_KEY_US "Utf8Support"
+#define AIM_KEY_NL "NotOnList"
+#define AIM_KEY_LM "LastMessage"
+#define AIM_KEY_AH "AvatarHash"
+#define AIM_KEY_AHT "AvatarType"
+#define AIM_KEY_EM "e-mail"
+#define AIM_KEY_LV "LastVer"
+#define AIM_KEY_TIS "TotalIMsSent"
+#define AIM_KEY_TIR "TotalIMsReceived"
+#define AIM_KEY_TAM "TotalAwayMessages"
+#define AIM_KEY_TTO "TotalTimeOnline"
+#define AIM_KEY_BLS "IsBlast"
+#define AIM_KEY_NIL "IsNotInList"
+
+#define AIM_DEFAULT_SERVER "slogin.oscar.aol.com"
+#define AIM_DEFAULT_SERVER_NS "login.oscar.aol.com"
+#define AIM_PROXY_SERVER "ars.oscar.aol.com"
+#define AIM_DEFAULT_PORT 5190
+#define AIM_DEFAULT_SSL_PORT 443
+
+//Some Defaults for various things
+#define DEFAULT_KEEPALIVE_TIMER 39 // secs
+#define DEFAULT_GRACE_PERIOD 60
+#define AIM_DEFAULT_GROUP "miranda merged"
+#define SYSTEM_BUDDY "aolsystemmsg"
+#define DEFAULT_AWAY_MSG "I am away from my computer right now."
+//Md5 Roasting stuff
+#define AIM_MD5_STRING "AOL Instant Messenger (SM)"
+#define MD5_HASH_LENGTH 16
+
+//Aim Version Stuff
+#define AIM_CLIENT_MAJOR_VERSION 5
+#define AIM_CLIENT_MINOR_VERSION 9
+#define AIM_CLIENT_LESSER_VERSION 0
+#define AIM_CLIENT_BUILD_NUMBER 0x1772
+#define AIM_CLIENT_ID_NUMBER 0x0109
+#define AIM_CLIENT_DISTRIBUTION_NUMBER 0x0150
+
+#define AIM_LANGUAGE "en"
+#define AIM_COUNTRY "us"
+#define AIM_MSG_TYPE "text/x-aolrtf; charset=\"us-ascii\""
+#define AIM_MSG_TYPE_UNICODE "text/x-aolrtf; charset=\"unicode-2-0\""
+#define AIM_TOOL_VERSION "\x01\x10\x18\xf1"
+
+//Supported Clients
+#define CLIENT_UNKNOWN "?"
+#define CLIENT_AIM5 "AIM 5.x"
+#define CLIENT_AIM4 "AIM 4.x"
+#define CLIENT_AIMEXPRESS5 "AIM Express 5"
+#define CLIENT_AIMEXPRESS6 "AIM Express 6"
+#define CLIENT_AIMEXPRESS7 "AIM Express 7"
+#define CLIENT_ICQ "ICQ"
+#define CLIENT_AIM_TRITON "AIM Triton"
+#define CLIENT_AIM6_1 "AIM 6.1"
+#define CLIENT_AIM6_5 "AIM 6.5"
+#define CLIENT_AIM6_8 "AIM 6.8"
+#define CLIENT_AIM6_9 "AIM 6.9"
+#define CLIENT_AIM7_0 "AIM 7.0"
+#define CLIENT_AIMTOC "AIM TOC"
+#define CLIENT_BOT "AIM Bot"
+#define CLIENT_GAIM "Gaim"
+#define CLIENT_PURPLE "Purple"
+#define CLIENT_ADIUM "Adium X"
+#define CLIENT_GPRS "GPRS"
+#define CLIENT_ICHAT "iChat"
+#define CLIENT_IM2 "IM2"
+#define CLIENT_KOPETE "Kopete"
+#define CLIENT_MEEBO "Meebo"
+#define CLIENT_DIGSBY "Digsby"
+#define CLIENT_BEEJIVE "beejive"
+#define CLIENT_MICQ "mICQ"
+#define CLIENT_AIMOSCAR "Miranda IM %d.%d.%d.%d (AIM v%d.%d.%d.%d)"
+#define CLIENT_OSCARJ "Miranda IM %d.%d.%d.%d%s (ICQ v%d.%d.%d.%d%s)"
+#define CLIENT_OSCARSN "Miranda IM %d.%d.%d.%d%s (ICQ S!N v%d.%d.%d.%d%s)%s"
+#define CLIENT_OSCARPL "Miranda IM %d.%d.%d.%d%s (ICQ Plus v%d.%d.%d.%d%s)%s"
+#define CLIENT_NAIM "naim"
+#define CLIENT_QIP "qip"
+#define CLIENT_SIM "SIM"
+#define CLIENT_SMS "SMS"
+#define CLIENT_TERRAIM "TerraIM"
+#define CLIENT_TRILLIAN_PRO "Trillian Pro"
+#define CLIENT_TRILLIAN "Trillian"
+#define CLIENT_TRILLIAN_ASTRA "Trillian Astra"
+#define CLIENT_BLAST "Blast Group"
+
+//Aim Caps
+#define AIM_CAPS_LENGTH 16
+
+// Official
+#define AIM_CAP_SHORT_CAPS "\x09\x46\x00\x00\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_SECURE_IM "\x09\x46\x00\x01\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_XHTML_IM "\x09\x46\x00\x02\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_RTCVIDEO "\x09\x46\x01\x01\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_HAS_MICROPHONE "\x09\x46\x01\x02\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_HAS_CAMERA "\x09\x46\x01\x03\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_RTCAUDIO "\x09\x46\x01\x04\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_HOST_STATUS_TEXT_AWARE "\x09\x46\x01\x0a\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_RT_IM "\x09\x46\x01\x0b\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_SMART_CAPS "\x09\x46\x01\xff\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_FILE_TRANSFER "\x09\x46\x13\x43\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_DIRECT_IM "\x09\x46\x13\x45\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_FILE_SHARING "\x09\x46\x13\x48\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_SUPPORT_ICQ "\x09\x46\x13\x4D\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+
+#define AIM_CAP_AVAILABLE_FOR_CALL "\x09\x46\x01\x05\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_ACA "\x09\x46\x01\x06\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_MULTI_AUDIO "\x09\x46\x01\x07\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_MULTI_VIDEO "\x09\x46\x01\x08\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_VICEROY "\x09\x46\xf0\x04\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_BUDDY_ICON "\x09\x46\x13\x46\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_VOICE_CHAT "\x09\x46\x13\x41\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_DIRECT_PLAY "\x09\x46\x13\x42\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_ICQ_DIRECT_CONNECT "\x09\x46\x13\x44\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_GAMES "\x09\x46\x13\x47\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_ICQ_SERVER_RELAY "\x09\x46\x13\x49\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"//icq? channel 2 extended, TLV(0x2711) based messages
+#define AIM_CAP_CHAT_ROBOTS "\x09\x46\x13\x4A\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_SHARE_BUDDIES "\x09\x46\x13\x4B\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_CHAT "\x74\x8F\x24\x20\x62\x87\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_AMO "\x09\x46\x01\x0c\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+
+// Extensions
+#define AIM_CAP_HIPTOP "\x09\x46\x13\x23\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_UTF8 "\x09\x46\x13\x4E\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_UNKNOWN4 "\x09\x46\xf0\x03\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_UNKNOWNC "\x09\x46\xf0\x05\x4c\x7f\x11\xD1\x82\x22\x44\x45\x53\x54\0\0"
+#define AIM_CAP_IM2 "\x74\xed\xc3\x36\x44\xdf\x48\x5b\x8b\x1c\x67\x1a\x1f\x86\x09\x9f"
+#define AIM_CAP_TRILLIAN "\xF2\xE7\xC7\xF4\xFE\xAD\x4D\xFB\xB2\x35\x36\x79\x8B\xDF\0\0"
+extern char AIM_CAP_MIRANDA[]; //Miranda cap EXTERN
+
+//Aim Services
+#define AIM_SERVICE_GENERIC "\0\x01\0\x04"//version 4
+#define AIM_SERVICE_SSI "\0\x13\0\x03"//version 3
+#define AIM_SERVICE_LOCATION "\0\x02\0\x01"//version 1
+#define AIM_SERVICE_BUDDYLIST "\0\x03\0\x01"//version 1
+#define AIM_SERVICE_MESSAGING "\0\x04\0\x01"//version 1
+#define AIM_SERVICE_INVITATION "\0\x06\0\x01"//version 1
+#define AIM_SERVICE_ADMIN "\0\x07\0\x01"//version 1
+#define AIM_SERVICE_POPUP "\0\x08\0\x01"//version 1
+#define AIM_SERVICE_BOS "\0\x09\0\x01"//version 1
+#define AIM_SERVICE_AVATAR "\0\x10\0\x01"//version 1
+#define AIM_SERVICE_USERLOOKUP "\0\x0A\0\x01"//version 1
+#define AIM_SERVICE_STATS "\0\x0B\0\x01"//version 1
+#define AIM_SERVICE_CHATNAV "\0\x0D\0\x01"//version 1
+#define AIM_SERVICE_DIRSEARCH "\0\x0F\0\x01"//version 1
+#define AIM_SERVICE_CHAT "\0\x0E\0\x01"//version 1
+#define AIM_SERVICE_ICQ "\0\x15\0\x01"//version 1
+#define AIM_SERVICE_MAIL "\0\x18\0\x01"//version 1
+#define AIM_SERVICE_UNKNOWN "\0\x22\0\x01"//version 1
+#define AIM_SERVICE_RATES "\0\x01\0\x02\0\x03\0\x04\0\x05"
+
+//Aim Statuses
+#define AIM_STATUS_WEBAWARE "\0\x01"
+#define AIM_STATUS_SHOWIP "\0\x02"
+#define AIM_STATUS_BIRTHDAY "\0\x08"
+#define AIM_STATUS_WEBFRONT "\0\x20"
+#define AIM_STATUS_DCAUTH "\x10\0"
+#define AIM_STATUS_DCCONT "\x20\0"
+#define AIM_STATUS_NULL "\0\0"
+
+#define AIM_STATUS_ONLINE 0x00000000
+#define AIM_STATUS_AWAY 0x00000001
+#define AIM_STATUS_DND 0x00000002
+#define AIM_STATUS_OUT 0x00000004
+#define AIM_STATUS_BUSY 0x00000010
+#define AIM_STATUS_CHAT 0x00000020 // Broken. If set, you cannot unset.
+#define AIM_STATUS_INVISIBLE 0x00000100
+
+extern HINSTANCE hInstance; //plugin dll instance
+
+#define NEWSTR_ALLOCA(A) ((A==NULL)?NULL:strcpy((char*)alloca(strlen(A)+1),A))
+#define NEWWSTR_ALLOCA(A) ((A==NULL)?NULL:wcscpy((wchar_t*)alloca(sizeof(wchar_t)*(wcslen(A)+1)),A))
+#define NEWTSTR_ALLOCA(A) ((A==NULL)?NULL:_tcscpy((TCHAR*)alloca(sizeof(TCHAR)*(_tcslen(A)+1)),A))
+
+#define _strlens(a) (a ? strlen(a) : 0)
+#define _strcmps(a,b) (a != b && (!a || !b || strcmp(a, b)))
+
+//#define ALLOW_BUSY
+
+#endif