Changeset 3768 for trunk/console

Show
Ignore:
Timestamp:
06/14/04 08:20:17 (4 years ago)
Author:
emostar
Message:

Patch by Philip Nelson <phatfil AT optusnet.com.au> to add initial support for protocol plugins to the console plugin.

Location:
trunk/console/src
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/console/src/console.cpp

    r3752 r3768  
    242242  // Register with the daemon, we want to receive all signals 
    243243  m_nPipe = _licqDaemon->RegisterPlugin(SIGNAL_ALL); 
    244   m_bExit = false; 
     244  m_bExit = false;  
     245  _licqDaemon->AddProtocolPlugins(); 
    245246  licqDaemon = _licqDaemon; 
    246247  m_nCurrentGroup = gUserManager.DefaultGroup(); 
     
    282283  PrintUsers(); 
    283284 
    284   if (gUserManager.OwnerUin() == 0) 
     285  if (gUserManager.NumOwners() == 0) 
    285286  { 
    286287    RegistrationWizard(); 
     
    512513  case SIGNAL_UPDATExUSER: 
    513514    { 
    514       if (s->Uin() == gUserManager.OwnerUin() && s->SubSignal() == USER_STATUS 
     515      if (gUserManager.FindOwner(s->Id(), s->PPID()) != NULL && s->SubSignal() == USER_STATUS 
    515516          || s->SubSignal() == USER_EVENTS) 
    516517        PrintStatus(); 
    517       ICQUser *u = gUserManager.FetchUser(s->Uin(), LOCK_R); 
     518      ICQUser *u = gUserManager.FetchUser(s->Id(), s->PPID(), LOCK_R); 
    518519      if (u != NULL) 
    519520      { 
     
    535536    licqDaemon->icqRenameUser(s->Uin()); 
    536537    break; 
     538  case SIGNAL_NEWxPROTO_PLUGIN: 
     539    //ignore for now 
     540    break; 
     541  case SIGNAL_EVENTxID: 
     542    AddEventTag(s->Id(), s->PPID(), s->Argument()); 
     543    break; 
    537544  default: 
    538545    gLog.Warn("%sInternal error: CLicqConsole::ProcessSignal(): Unknown signal command received from daemon: %ld.\n", 
     
    543550} 
    544551 
     552/*--------------------------------------------------------------------------- 
     553 * CLicqConsole::AddEventTag 
     554 *-------------------------------------------------------------------------*/ 
     555void CLicqConsole::AddEventTag(char *_szId, unsigned long _nPPID, unsigned long _nEventTag) 
     556{ 
     557  if (!_szId || !_nPPID || !_nEventTag) 
     558    return; 
     559 
     560  CData *data; 
     561  unsigned short i; 
     562  for (i = 1; i <= MAX_CON; i++) 
     563  { 
     564    data = (CData *)winCon[i]->data; 
     565    if (strcmp(data->szId, _szId) == 0 && data->nPPID == _nPPID) 
     566    { 
     567      winCon[i]->event = _nEventTag; 
     568      break; 
     569    } 
     570  } 
     571}  
     572     
    545573 
    546574/*--------------------------------------------------------------------------- 
     
    556584  } 
    557585 
     586  if (e->SNAC() == 0) { 
     587    // Not from ICQ 
     588    ProcessDoneEvent(e); //FIXME 
     589    return; 
     590  } 
     591   
    558592  switch (e->SNAC()) 
    559593  { 
     
    699733  if (win == NULL) 
    700734  { 
    701     gLog.Warn("%sInternal error: CLicqConsole::ProcessEvent(): Unknown event from daemon: %d.\n", 
     735    gLog.Warn("%sInternal error: CLicqConsole::ProcessDoneEvent(): Unknown event from daemon: %d.\n", 
    702736              L_WARNxSTR, e->SubCommand()); 
    703737    return; 
     
    14241458 * CLicqConsole::UserCommand_Info 
    14251459 *-------------------------------------------------------------------------*/ 
    1426 void CLicqConsole::UserCommand_Info(unsigned long nUin, char *) 
    1427 { 
    1428   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     1460void CLicqConsole::UserCommand_Info(const char *szId, unsigned long nPPID, char *) 
     1461{ 
     1462  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
    14291463  if (u == NULL) 
    14301464    return; 
     
    14331467  winMain->fProcessInput = &CLicqConsole::InputInfo; 
    14341468  winMain->state = STATE_QUERY; 
    1435   winMain->data = new CData(nUin); 
     1469  winMain->data = new CData(szId, nPPID); 
    14361470 
    14371471  winMain->wprintf("%C%A" 
     
    14411475                   "(A)bout Info\n" 
    14421476                   "(U)pdate Info\n" 
    1443                    "for %s (%ld)? %C%Z", 
     1477                   "for %s (%s)? %C%Z", 
    14441478                   m_cColorQuery->nColor, m_cColorQuery->nAttr, 
    1445                    u->GetAlias(), nUin, COLOR_WHITE, A_BOLD); 
     1479                   u->GetAlias(), szId, COLOR_WHITE, A_BOLD); 
    14461480  winMain->RefreshWin(); 
    14471481  gUserManager.DropUser(u); 
     
    14651499    { 
    14661500    case 'g': 
    1467       PrintInfo_General(data->nUin); 
     1501      PrintInfo_General(data->szId, data->nPPID); 
    14681502      break; 
    14691503    case 'm': 
    1470       PrintInfo_More(data->nUin); 
     1504      PrintInfo_More(data->szId, data->nPPID); 
    14711505      break; 
    14721506    case 'w': 
    1473       PrintInfo_Work(data->nUin); 
     1507      PrintInfo_Work(data->szId, data->nPPID); 
    14741508      break; 
    14751509    case 'a': 
    1476       PrintInfo_About(data->nUin); 
     1510      PrintInfo_About(data->szId, data->nPPID); 
    14771511      break; 
    14781512    case 'u': 
    14791513      winMain->wprintf("%C%AUpdate info...", m_cColorInfo->nColor, 
    14801514                       m_cColorInfo->nAttr); 
    1481       winMain->event = licqDaemon->icqRequestMetaInfo(data->nUin); 
     1515      winMain->event = licqDaemon->icqRequestMetaInfo(data->szId); 
    14821516      winMain->state = STATE_PENDING; 
    14831517      return; 
     
    15111545 * CLicqConsole::UserCommand_View 
    15121546 *-------------------------------------------------------------------------*/ 
    1513 void CLicqConsole::UserCommand_View(unsigned long nUin, char *) 
    1514 { 
    1515   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_W); 
     1547void CLicqConsole::UserCommand_View(const char *szId, unsigned long nPPID, char *) 
     1548{ 
     1549  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_W); 
    15161550  if (u == NULL) 
    15171551    return; 
     
    15431577    // Do we want to accept the file transfer? 
    15441578    if (e->SubCommand() == ICQ_CMDxSUB_FILE) 
    1545       FileChatOffer(e->Sequence(), u->Uin()); 
     1579      //FIXME 
     1580      //FileChatOffer(e->Sequence(), u->Uin()); 
    15461581 
    15471582    delete e; 
     
    15491584    //PrintUsers(); 
    15501585    //PrintStatus(); 
    1551     ProcessSignal(new CICQSignal(SIGNAL_UPDATExUSER, USER_EVENTS, nUin)); 
     1586    ProcessSignal(new CICQSignal(SIGNAL_UPDATExUSER, USER_EVENTS, szId, nPPID)); 
    15521587  } 
    15531588  else 
     
    15631598 * CLicqConsole::UserCommand_Remove 
    15641599 *-------------------------------------------------------------------------*/ 
    1565 void CLicqConsole::UserCommand_Remove(unsigned long nUin, char *) 
    1566 { 
    1567   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     1600void CLicqConsole::UserCommand_Remove(const char *szId, unsigned long nPPID, char *) 
     1601{ 
     1602  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
    15681603  if (u == NULL) 
    15691604    return; 
     
    15721607  winMain->fProcessInput = &CLicqConsole::InputRemove; 
    15731608  winMain->state = STATE_QUERY; 
    1574   winMain->data = new CData(nUin); 
    1575  
    1576   winMain->wprintf("%C%ARemove %s (%ld) from contact list (y/N)? %C%Z", 
     1609  winMain->data = new CData(szId, nPPID); 
     1610 
     1611  winMain->wprintf("%C%ARemove %s (%s) from contact list (y/N)? %C%Z", 
    15771612                   m_cColorQuery->nColor, m_cColorQuery->nAttr, 
    1578                    u->GetAlias(), nUin, COLOR_WHITE, A_BOLD); 
     1613                   u->GetAlias(), szId, COLOR_WHITE, A_BOLD); 
    15791614  winMain->RefreshWin(); 
    15801615  gUserManager.DropUser(u); 
     
    15981633    if (strncasecmp(data->szQuery, "yes", strlen(data->szQuery)) == 0) 
    15991634    { 
    1600       licqDaemon->RemoveUserFromList(data->nUin); 
     1635      licqDaemon->RemoveUserFromList(data->szId, data->nPPID); 
    16011636      winMain->wprintf("%C%AUser removed.\n", m_cColorInfo->nColor, 
    16021637                       m_cColorInfo->nAttr); 
     
    16271662 * CLicqConsole::UserCommand_FetchAutoResponse 
    16281663 *-------------------------------------------------------------------------*/ 
    1629 void CLicqConsole::UserCommand_FetchAutoResponse(unsigned long nUin, char *) 
    1630 { 
    1631   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
    1632   winMain->wprintf("%C%AFetching auto-response for %s (%ld)...", 
     1664void CLicqConsole::UserCommand_FetchAutoResponse(const char *szId, unsigned long nPPID, char *) 
     1665{ 
     1666  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
     1667  winMain->wprintf("%C%AFetching auto-response for %s (%s)...", 
    16331668                   m_cColorInfo->nColor, m_cColorInfo->nAttr, 
    1634                    u->GetAlias(), nUin); 
     1669                   u->GetAlias(), szId); 
    16351670  winMain->RefreshWin(); 
    16361671  gUserManager.DropUser(u); 
    16371672 
    1638   winMain->event = licqDaemon->icqFetchAutoResponse(nUin); 
     1673  winMain->event = licqDaemon->icqFetchAutoResponse(szId, nPPID); 
    16391674  // InputMessage just to catch the cancel key 
    16401675  winMain->fProcessInput = &CLicqConsole::InputMessage; 
     
    16951730 * CLicqConsole::UserCommand_History 
    16961731 *-------------------------------------------------------------------------*/ 
    1697 void CLicqConsole::UserCommand_History(unsigned long nUin, char *szArg) 
    1698 { 
    1699   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     1732void CLicqConsole::UserCommand_History(const char *szId, unsigned long nPPID, char *szArg) 
     1733{ 
     1734  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
     1735  if (u == NULL) 
     1736    return; 
    17001737  HistoryList lHistory; 
    17011738  if (!u->GetHistory(lHistory)) 
     
    17061743  } 
    17071744  char szFrom[32]; 
    1708   if (gUserManager.OwnerUin() == nUin) 
    1709     strcpy(szFrom, "Server"); 
    1710   else 
     1745  //TODO: FIX THIS: 
     1746  //if (gUserManager.OwnerUin() == nUin) 
     1747  //  strcpy(szFrom, "Server"); 
     1748  //else 
    17111749    strcpy(szFrom, u->GetAlias()); 
    17121750  gUserManager.DropUser(u); 
     
    17811819 * CLicqConsole::UserCommand_Msg 
    17821820 *-------------------------------------------------------------------------*/ 
    1783 void CLicqConsole::UserCommand_Msg(unsigned long nUin, char *) 
    1784 { 
    1785   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     1821void CLicqConsole::UserCommand_Msg(const char *szId, unsigned long nPPID, char *) 
     1822{ 
     1823  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
    17861824  if (u == NULL) 
    17871825    return; 
     
    17901828  winMain->fProcessInput = &CLicqConsole::InputMessage; 
    17911829  winMain->state = STATE_MLE; 
    1792   winMain->data = new DataMsg(nUin); 
    1793  
    1794   winMain->wprintf("%BEnter message to %b%s%B (%b%ld%B):\n", u->GetAlias(), 
    1795                    nUin); 
     1830  winMain->data = new DataMsg(szId, nPPID); 
     1831 
     1832  winMain->wprintf("%BEnter message to %b%s%B (%b%s%B):\n", u->GetAlias(), 
     1833                   szId); 
    17961834  winMain->RefreshWin(); 
    17971835  gUserManager.DropUser(u); 
     
    18021840 * SendDirect 
    18031841 *-------------------------------------------------------------------------*/ 
    1804 static bool SendDirect(unsigned long nUin, char c) 
     1842static bool SendDirect(const char *szId, unsigned long nPPID, char c) 
    18051843{ 
    18061844  bool bDirect = (c != 's'); 
    1807   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     1845  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
    18081846  if (u != NULL) 
    18091847  { 
     
    18611899      *sz = '\0'; 
    18621900      sz++; 
    1863       bool bDirect = SendDirect(data->nUin, *sz); 
     1901      bool bDirect = SendDirect(data->szId, data->nPPID, *sz); 
    18641902      winMain->wprintf("%C%ASending message %s...", m_cColorInfo->nColor, 
    18651903                       m_cColorInfo->nAttr, 
    18661904                       !bDirect ? "through the server" : "direct"); 
    1867       winMain->event = licqDaemon->icqSendMessage(data->nUin, data->szMsg, 
     1905      winMain->event = licqDaemon->ProtoSendMessage(data->szId, data->nPPID, data->szMsg, 
    18681906                       bDirect, *sz == 'u'); 
    18691907      winMain->state = STATE_PENDING; 
     
    18801918      winMain->wprintf("%C%ASending message through the server...", 
    18811919                       m_cColorInfo->nColor, m_cColorInfo->nAttr); 
    1882       winMain->event = licqDaemon->icqSendMessage(data->nUin, data->szMsg, 
     1920      winMain->event = licqDaemon->ProtoSendMessage(data->szId, data->nPPID, data->szMsg, 
    18831921                       false, false); 
    18841922      winMain->state = STATE_PENDING; 
     
    19021940 * CLicqConsole::UserCommand_SendFile 
    19031941 *-------------------------------------------------------------------------*/ 
    1904 void CLicqConsole::UserCommand_SendFile(unsigned long nUin, char *) 
     1942void CLicqConsole::UserCommand_SendFile(const char *szId, unsigned long nPPID, char *) 
    19051943{ 
    19061944  // Get the file name 
    19071945  winMain->fProcessInput = &CLicqConsole::InputSendFile; 
    19081946  winMain->state = STATE_LE; 
    1909   winMain->data = new DataSendFile(nUin); 
    1910  
    1911   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
    1912   winMain->wprintf("%BEnter file to send to %b%s%B (%b%ld%B):\n", 
    1913                    u->GetAlias(), nUin); 
     1947  winMain->data = new DataSendFile(szId, nPPID); 
     1948 
     1949  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
     1950  winMain->wprintf("%BEnter file to send to %b%s%B (%b%s%B):\n", 
     1951                   u->GetAlias(), szId); 
    19141952  winMain->RefreshWin(); 
    19151953  gUserManager.DropUser(u); 
     
    19902028      *sz = '\0'; 
    19912029      sz++; 
    1992       bool bDirect = SendDirect(data->nUin, *sz); 
     2030      bool bDirect = SendDirect(data->szId, data->nPPID, *sz); 
    19932031      bDirect = true; // XXX hack 
    19942032      winMain->wprintf("%C%ASending File %s...", 
     
    19992037      lFileList.push_back(strdup(data->szFileName)); 
    20002038 
    2001       winMain->event = licqDaemon->icqFileTransfer(data->nUin, data->szFileName, 
    2002                       data->szDescription, lFileList, ICQ_TCPxMSG_NORMAL, 
     2039      winMain->event = licqDaemon->icqFileTransfer(strtoul(data->szId, (char **)NULL, 10), 
     2040              data->szFileName, data->szDescription, lFileList, ICQ_TCPxMSG_NORMAL, 
    20032041                       !bDirect); 
    20042042      break; 
     
    20142052 * CLicqConsole::UserCommand_SetAutoResponse 
    20152053 *-------------------------------------------------------------------------*/ 
    2016 void CLicqConsole::UserCommand_SetAutoResponse(unsigned long nUin, char *) 
     2054void CLicqConsole::UserCommand_SetAutoResponse(const char *szId, unsigned long nPPID, char *) 
    20172055{ 
    20182056  // First put this console into edit mode 
     
    20722110 * CLicqConsole::UserCommand_Url 
    20732111 *-------------------------------------------------------------------------*/ 
    2074 void CLicqConsole::UserCommand_Url(unsigned long nUin, char *) 
     2112void CLicqConsole::UserCommand_Url(const char *szId, unsigned long nPPID, char *) 
    20752113{ 
    20762114  // First put this console into edit mode 
    20772115  winMain->fProcessInput = &CLicqConsole::InputUrl; 
    20782116  winMain->state = STATE_LE; 
    2079   winMain->data = new DataUrl(nUin); 
    2080  
    2081   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     2117  winMain->data = new DataUrl(szId, nPPID); 
     2118 
     2119  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
    20822120  winMain->wprintf("%BEnter URL to %b%s%B (%b%ld%B): ", 
    2083                    u->GetAlias(), nUin); 
     2121                   u->GetAlias(), szId); 
    20842122  winMain->RefreshWin(); 
    20852123  gUserManager.DropUser(u); 
     
    21362174      *sz = '\0'; 
    21372175      sz++; 
    2138       bool bDirect = SendDirect(data->nUin, *sz); 
     2176      bool bDirect = SendDirect(data->szId, data->nPPID, *sz); 
    21392177      winMain->wprintf("%C%ASending URL %s...", 
    21402178                       m_cColorInfo->nColor, m_cColorInfo->nAttr, 
    21412179                       !bDirect ? "through the server" : "direct"); 
    2142       winMain->event = licqDaemon->icqSendUrl(data->nUin, data->szUrl, 
     2180      winMain->event = licqDaemon->ProtoSendUrl(data->szId, data->nPPID, data->szUrl, 
    21432181                                              data->szDesc, 
    21442182                                              bDirect, *sz == 'u'); 
     
    21562194      winMain->wprintf("%C%ASending URL through the server...", 
    21572195                       m_cColorInfo->nColor, m_cColorInfo->nAttr); 
    2158       winMain->event = licqDaemon->icqSendUrl(data->nUin, data->szUrl, 
     2196      winMain->event = licqDaemon->ProtoSendUrl(data->szId, data->nPPID, data->szUrl, 
    21592197                                              data->szDesc, false, false); 
    21602198      winMain->state = STATE_PENDING; 
     
    21782216 * CLicqConsole::UserCommand_Sms 
    21792217 *-------------------------------------------------------------------------*/ 
    2180 void CLicqConsole::UserCommand_Sms(unsigned long nUin, char *) 
    2181 { 
    2182   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     2218void CLicqConsole::UserCommand_Sms(const char *szId, unsigned long nPPID, char *) 
     2219{ 
     2220  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
    21832221  if (u == NULL) 
    21842222    return; 
     
    21872225  winMain->fProcessInput = &CLicqConsole::InputSms; 
    21882226  winMain->state = STATE_MLE; 
    2189   winMain->data = new DataSms(nUin); 
     2227  winMain->data = new DataSms(szId, nPPID); 
    21902228  winMain->wprintf("%BEnter SMS to %b%s%B (%b%s%B):\n", u->GetAlias(), 
    21912229                   u->GetCellularNumber()); 
     
    22322270      *sz = '\0'; 
    22332271      sz++; 
    2234       ICQUser *u = gUserManager.FetchUser(data->nUin, LOCK_R); 
     2272      ICQUser *u = gUserManager.FetchUser(data->szId, data->nPPID, LOCK_R); 
    22352273      winMain->wprintf("%C%ASending SMS to %s ...", m_cColorInfo->nColor, 
    22362274                       m_cColorInfo->nAttr, u->GetCellularNumber()); 
    22372275      winMain->event = licqDaemon->icqSendSms(u->GetCellularNumber(), 
    2238                        data->szMsg, data->nUin); 
     2276                       data->szMsg, strtoul(data->szId, (char **)NULL, 0)); 
    22392277      gUserManager.DropUser(u); 
    22402278      winMain->state = STATE_PENDING; 
     
    22832321      if (data->bUrgent) 
    22842322      { 
    2285         winMain->wprintf("%C%AGranting authorizing to %lu...", m_cColorInfo->nColor, 
    2286                          m_cColorInfo->nAttr, data->nUin); 
    2287         winMain->event = licqDaemon->icqAuthorizeGrant(data->nUin, data->szMsg); 
     2323        winMain->wprintf("%C%AGranting authorizing to %s...", m_cColorInfo->nColor, 
     2324                         m_cColorInfo->nAttr, data->szId); 
     2325        winMain->event = licqDaemon->icqAuthorizeGrant(strtoul(data->szId, (char **)NULL, 10), data->szMsg); 
    22882326      } 
    22892327      else 
    22902328      { 
    2291         winMain->wprintf("%C%ARefusing authorizing to %lu...", m_cColorInfo->nColor, 
    2292                          m_cColorInfo->nAttr, data->nUin); 
    2293         winMain->event = licqDaemon->icqAuthorizeRefuse(data->nUin, data->szMsg); 
     2329        winMain->wprintf("%C%ARefusing authorizing to %s...", m_cColorInfo->nColor, 
     2330                         m_cColorInfo->nAttr, data->szId); 
     2331        winMain->event = licqDaemon->icqAuthorizeRefuse(strtoul(data->szId, (char **)NULL, 10), data->szMsg); 
    22942332      } 
    22952333 
     
    24912529          data->nPos = 0; 
    24922530 
    2493           data->nUin = atol(sz); 
    2494  
    2495           if (data->nUin != 0) 
     2531          data->szId = sz; 
     2532 
     2533          if (data->szId != 0) 
    24962534          { 
    24972535            winMain->wprintf("%C%ASearching:\n", 
    24982536                             m_cColorInfo->nColor, m_cColorInfo->nAttr); 
    24992537 
    2500             winMain->event = licqDaemon->icqSearchByUin(data->nUin); 
     2538            winMain->event = licqDaemon->icqSearchByUin(strtoul(data->szId, (char **)NULL, 10)); 
    25012539            winMain->state = STATE_PENDING; 
    25022540 
     
    29813019 * CLicqConsole::FileChatOffer 
    29823020 *-------------------------------------------------------------------------*/ 
    2983 void CLicqConsole::FileChatOffer(unsigned long _nSequence, unsigned long _nUin) 
     3021void CLicqConsole::FileChatOffer(unsigned long _nSequence, const char *_szId, unsigned long _nPPID) 
    29843022{ 
    29853023  // Get y or n 
    29863024  winMain->fProcessInput = &CLicqConsole::InputFileChatOffer; 
    29873025  winMain->state = STATE_QUERY; 
    2988   winMain->data = new DataFileChatOffer(_nSequence, _nUin); 
     3026  winMain->data = new DataFileChatOffer(_nSequence, _szId, _nPPID); 
    29893027  winMain->wprintf("%C%ADo you wish to accept this request? (y/N) %C%Z", 
    29903028                   m_cColorQuery->nColor, m_cColorQuery->nAttr, COLOR_WHITE, A_BOLD); 
     
    30143052          // Make the ftman 
    30153053          CFileTransferManager *ftman = new CFileTransferManager(licqDaemon, 
    3016                                         data->nUin); 
     3054                                        strtoul(data->szId, (char **)NULL, 10)); 
    30173055          ftman->SetUpdatesEnabled(1); 
    30183056          m_lFileStat.push_back(ftman); 
     
    30233061          // XXX hack 
    30243062          unsigned long dummy[2] = { 0, 0}; 
    3025           licqDaemon->icqFileTransferAccept(data->nUin, ftman->LocalPort(), 
     3063          licqDaemon->icqFileTransferAccept(strtoul(data->szId, (char **)NULL, 10), ftman->LocalPort(), 
    30263064                                            data->nSequence, dummy, true); 
    30273065          winMain->fProcessInput = &CLicqConsole::InputCommand; 
     
    30553093      // XXX hack 
    30563094      unsigned long dummy[2] = { 0, 0 }; 
    3057       licqDaemon->icqFileTransferRefuse(data->nUin, data->szReason, 
     3095      licqDaemon->icqFileTransferRefuse(strtoul(data->szId, (char **)NULL, 10), data->szReason, 
    30583096                                        data->nSequence, dummy, true); 
    30593097 
    30603098      // We are done now 
    3061       winMain->wprintf("%ARefusing file from %ld with reason: %Z%s\n", 
    3062                        A_BOLD, data->nUin, A_BOLD, data->szReason); 
     3099      winMain->wprintf("%ARefusing file from %s with reason: %Z%s\n", 
     3100                       A_BOLD, data->szId, A_BOLD, data->szReason); 
    30633101      winMain->fProcessInput = &CLicqConsole::InputCommand; 
    30643102 
     
    30773115 * CLicqConsole::UserCommand_Secure 
    30783116 *-----------------------------------------------------------------------*/ 
    3079 void CLicqConsole::UserCommand_Secure(unsigned long nUin, char *szStatus) 
    3080 { 
    3081   ICQUser *u = gUserManager.FetchUser(nUin, LOCK_R); 
     3117void CLicqConsole::UserCommand_Secure(const char *szId, unsigned long nPPID, char *szStatus) 
     3118{ 
     3119  ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); 
    30823120 
    30833121  if(!licqDaemon->CryptoEnabled()) 
     
    31163154                     u->GetAlias()); 
    31173155    gUserManager.DropUser(u); 
    3118     winMain->event = licqDaemon->icqOpenSecureChannel(nUin); 
     3156    char *p; 
     3157    unsigned long uin = strtoul(szId, &p,10); 
     3158    if( (p == 0 || (p && !*p)) && nPPID == LICQ_PPID ) 
     3159      winMain->event = licqDaemon->icqOpenSecureChannel(uin); 
    31193160  } 
    31203161  else if(strcasecmp(szStatus, "close") == 0) 
     
    31233164                     u->GetAlias()); 
    31243165    gUserManager.DropUser(u); 
    3125     winMain->event = licqDaemon->icqCloseSecureChannel(nUin); 
     3166    char *p; 
     3167    unsigned long uin = strtoul(szId, &p,10); 
     3168    if( (p == 0 || (p && !*p)) && nPPID == LICQ_PPID ) 
     3169      winMain->event = licqDaemon->icqCloseSecureChannel(uin); 
    31263170  } 
    31273171  else 
     
    31423186  winMain->fProcessInput = &CLicqConsole::InputUserSelect; 
    31433187  winMain->state = STATE_LE; 
    3144   winMain->data = new DataUserSelect(gUserManager.OwnerUin());  
     3188 
     3189  char sz[20]; 
     3190  //TODO which owner 
     3191  sprintf(sz, "%lu", gUserManager.OwnerUin()); 
     3192   
     3193  winMain->data = new DataUserSelect(sz, LICQ_PPID);  
    31453194   
    31463195  ICQOwner *o = gUserManager.FetchOwner(LOCK_R); 
  • trunk/console/src/console.h

    r3556 r3768  
    3030{ 
    3131  char szKey[32]; 
    32   unsigned long nUin; 
     32  char szId[32]; 
     33  unsigned long nPPID; 
    3334  char *szLine; 
    3435  bool bOffline; 
    3536  const struct SColorMap *color; 
     37}; 
     38 
     39struct SContact 
     40{ 
     41  char *szId; 
     42  unsigned long nPPID; 
    3643}; 
    3744 
     
    96103  void SwitchToCon(unsigned short nCon); 
    97104  void CreateUserList(); 
     105  void AddEventTag(char *, unsigned long, unsigned long); 
    98106 
    99107  void InputCommand(int cIn); 
     
    124132  void PrintHelp(); 
    125133  void PrintHistory(HistoryList &, unsigned short, unsigned short, const char *); 
    126   void PrintInfo_General(unsigned long); 
    127   void PrintInfo_More(unsigned long); 
    128   void PrintInfo_Work(unsigned long); 
    129   void PrintInfo_About(unsigned long); 
     134  void PrintInfo_General(const char *, unsigned long); 
     135  void PrintInfo_More(const char *, unsigned long); 
     136  void PrintInfo_Work(const char *, unsigned long);