/**************************************************************************/ /* */ /* Copyright (c) 2000-2005 by Alexandr V. Shutko, Khabarovsk, Russia */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or without */ /* modification, are permitted provided that the following conditions */ /* are met: */ /* 1. Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* 2. 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. */ /* */ /* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. */ /* */ /* This module utility functions related AIM capabilities */ /* */ /* */ /* $Id: capabilities.cpp,v 1.5 2005/01/05 05:52:02 regress Exp $ */ /**************************************************************************/ #include "includes.h" /* List of known ICQ/AIM capabilities */ char aim_caps[][16] = { /* 00. AIM_CAPS_CHAT */ {0x74, 0x8F, 0x24, 0x20, 0x62, 0x87, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 01. AIM_CAPS_VOICE */ {0x09, 0x46, 0x13, 0x41, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 02. AIM_CAPS_SENDxFILE */ {0x09, 0x46, 0x13, 0x43, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 03. AIM_CAPS_ISxICQ */ {0x09, 0x46, 0x13, 0x44, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 04. AIM_CAPS_IMxIMAGE */ {0x09, 0x46, 0x13, 0x45, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 05. AIM_CAPS_BUDDYxICON */ {0x09, 0x46, 0x13, 0x46, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 06. AIM_CAPS_SAVESTOCKS */ {0x09, 0x46, 0x13, 0x47, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 07. AIM_CAPS_GETxFILE */ {0x09, 0x46, 0x13, 0x48, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 08. AIM_CAPS_ICQxEXTxMSG */ {0x09, 0x46, 0x13, 0x49, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 09. AIM_CAPS_GAMES */ {0x09, 0x46, 0x13, 0x4A, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 10. AIM_CAPS_GAMES2 */ {0x09, 0x46, 0x13, 0x4A, 0x4C, 0x7F, 0x11, 0xD1, 0x22, 0x82, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 11. AIM_CAPS_SENDxBUDDYxLIST */ {0x09, 0x46, 0x13, 0x4B, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 12. AIM_CAPS_ICQxUNKNOWN */ {0x09, 0x46, 0x13, 0x4E, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}, /* 13. AIM_CAPS_ICQxUNKNOWN2 */ {0x97, 0xB1, 0x27, 0x51, 0x24, 0x3C, 0x43, 0x34, 0xAD, 0x22, 0xD6, 0xAB, 0xF7, 0x3F, 0x14, 0x92}, /* 14. AIM_CAPS_ICQxUNKNOWN3 */ {0x2E, 0x7A, 0x64, 0x75, 0xFA, 0xDF, 0x4D, 0xC8, 0x88, 0x6F, 0xEA, 0x35, 0x95, 0xFD, 0xB6, 0xDF}, /* 15. AIM_CAPS_TRILLIANxCRYPT */ {0xF2, 0xE7, 0xC7, 0xF4, 0xFE, 0xAD, 0x4D, 0xFB, 0xB2, 0x35, 0x36, 0x79, 0x8B, 0xDF, 0x00, 0x00}, /* 16. AIM_CAPS_APxINFO */ {0xAA, 0x4A, 0x32, 0xB5, 0xF8, 0x84, 0x48, 0xC6, 0xA3, 0xD7, 0x8C, 0x50, 0x97, 0x19, 0xFD, 0x5B}, /* 17. AIM_CAPS_MACxICQ */ {0xDD, 0x16, 0xF2, 0x02, 0x84, 0xE6, 0x11, 0xD4, 0x90, 0xDB, 0x00, 0x10, 0x4B, 0x9B, 0x4B, 0x7D}, /* 18. AIM_CAPS_UTF8 */ {0x09, 0x46, 0x13, 0x4E, 0x4C, 0x7F, 0x11, 0xD1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} }; /**************************************************************************/ /* Check if user has specified capability */ /**************************************************************************/ BOOL user_has_cap(struct online_user *to_user, char *required_cap) { BOOL isok; for (int i=0; icaps_num; i++) { isok = True; for (int j=0; j<16; j++) { if (to_user->caps[i][j] != required_cap[j]) isok = False; } if (isok) { DEBUG(100, ("Locate: Found required capability. All is ok.\n")); return(True); } } return(False); } /**************************************************************************/ /* Check caps match */ /**************************************************************************/ BOOL caps_match(char *caps1, char *caps2) { BOOL isok; isok = True; for (int j=0; j<16; j++) { if (caps1[j] != caps2[j]) { isok = False; break; } } if (isok) { DEBUG(100, ("Caps: privided caps match.\n")); return(True); } return(False); }