From 9fa74ab4f864a651f22a107818baee2cc55fca10 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 7 Sep 2015 20:48:58 +0000 Subject: xfire moved to deprecated pt. 1 git-svn-id: http://svn.miranda-ng.org/main/trunk@15300 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Xfire/src/client.cpp | 313 ----------------------------------------- 1 file changed, 313 deletions(-) delete mode 100644 protocols/Xfire/src/client.cpp (limited to 'protocols/Xfire/src/client.cpp') diff --git a/protocols/Xfire/src/client.cpp b/protocols/Xfire/src/client.cpp deleted file mode 100644 index c61f7df479..0000000000 --- a/protocols/Xfire/src/client.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/* - * xfirelib - C++ Library for the xfire protocol. - * Copyright (C) 2006 by - * Beat Wolf / http://gfire.sf.net - * Herbert Poul / http://goim.us - * http://xfirelib.sphene.net - * - * 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, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "stdafx.h" -#include "xdebug.h" -#include "client.h" -#include "clientinformationpacket.h" -#include "clientversionpacket.h" -#include "xfirepacket.h" -#include "authpacket.h" -#include "clientloginpacket.h" -#include "buddylistnamespacket.h" -#include "messagepacket.h" -#include "sendmessagepacket.h" -#include "messageackpacket.h" -#include "recvoldversionpacket.h" -#include "sendkeepalivepacket.h" - -#include "baseProtocol.h" - -#include - -//#define XFIRE_HOST "cs.xfire.com" -#define XFIRE_HOST "206.220.42.147" -#define XFIRE_PORT 25999 - -extern BOOL mySleep(int ms, HANDLE evt); -extern HANDLE hConnectionClose; -extern WINBASEAPI -BOOL -WINAPI -ResetEvent( -__in HANDLE hEvent -); - -//#define UINT_8 unsigned char -//#define UINT_32 unsigned long - -namespace xfirelib -{ - - using namespace std; - - Client::Client() - { - XDEBUG(("Client constructor...\n")); - m_gameResolver = NULL; - m_packetReader = new PacketReader(NULL); - m_packetReader->addPacketListener(this); - m_buddyList = new BuddyList(this); - m_socket = NULL; -#ifndef NO_PTHREAD - sendpingthread.p=NULL; - readthread.p=NULL; -#endif - } - - Client::~Client() - { - XDEBUG(("Client destructor...\n")); - delete m_username; - delete m_password; - delete m_buddyList; - delete m_packetReader; - delete m_socket; - } - - void Client::connect(string username, string password, int useproxy, string proxyip, int proxyport) - { - try { - m_gotBudduyList = FALSE; - m_username = new string(username); - m_password = new string(password); - m_socket = new Socket(XFIRE_HOST, XFIRE_PORT, useproxy, proxyip, proxyport); - - //bevors losgeht, erstmal die localaddr sichern - struct sockaddr_in sa; - int iLen = sizeof(sa); - getsockname(m_socket->m_sock, (SOCKADDR*)&sa, &iLen); - strncpy(m_localaddr, inet_ntoa(sa.sin_addr), sizeof(m_localaddr) - 1); - m_llocaladdr = inet_addr(m_localaddr); - - m_packetReader->setSocket(m_socket); - - ResetEvent(hConnectionClose); - - startThreads(); - //packetReader->startListening(); - - - m_socket->send("UA01"); - XDEBUG(("Sent UA01\n")); - ClientInformationPacket *infoPacket = new ClientInformationPacket(); - send(infoPacket); - delete infoPacket; - XINFO(("sent ClientInformationPacket\n")); - - ClientVersionPacket *versionPacket = new ClientVersionPacket(); - versionPacket->setProtocolVersion(m_protocolVersion); - send(versionPacket); - delete versionPacket; - - XINFO(("sent ClientVersionPacket\n")); - m_connected = TRUE; - } - catch (SocketException ex) { - XERROR(("Socket Exception ?! %s \n", ex.description().c_str())); - m_connected = FALSE; - } - } - - XFireGameResolver *Client::getGameResolver() - { - return m_gameResolver; - } - - void Client::startThreads() - { - XINFO(("About to start thread\n")); -#ifndef NO_PTHREAD - void* (*func)(void*) = &xfirelib::Client::startReadThread; - pthread_create( &readthread, NULL, func, (void*)this ); - void* (*func2)(void*) = &xfirelib::Client::startSendPingThread; - pthread_create( &sendpingthread, NULL, func2, (void*)this ); -#else - //mir_create!!!! - mir_forkthread(xfirelib::Client::startReadThread, (LPVOID)this); - mir_forkthread(xfirelib::Client::startSendPingThread, (LPVOID)this); -#endif - } -#ifndef NO_PTHREAD - void *Client::startReadThread(void *ptr) { -#else - void Client::startReadThread(LPVOID lParam) - { - void* ptr = (void*)lParam; -#endif - if (ptr == NULL || ((Client*)ptr)->m_packetReader == NULL) -#ifndef NO_PTHREAD - return NULL; -#else - return; -#endif - try { - ((Client*)ptr)->m_packetReader->run(); - } - catch (SocketException ex) { - XERROR(("Socket Exception ?! %s \n", ex.description().c_str())); - - //miranda bescheid geben, wir haben verbindung verloren - if (ptr == NULL || ((Client*)ptr)->m_connected) SetStatus(ID_STATUS_OFFLINE, NULL); - - //((Client*)ptr)->disconnect(); - } -#ifndef NO_PTHREAD - return NULL; -#else - return; -#endif - } - -#ifndef NO_PTHREAD - void *Client::startSendPingThread(void *ptr) { - Client *me = (Client*)ptr; -#else - void Client::startSendPingThread(LPVOID lParam) - { - Client *me = (Client*)lParam; -#endif - SendKeepAlivePacket packet; - - while (1) { -#ifndef NO_PTHREAD - pthread_testcancel(); -#endif - //Sleep(60000); // Sleep for 40 sek - if (mySleep(60000, hConnectionClose)) { -#ifndef NO_PTHREAD - return NULL; -#else - return; -#endif - } -#ifndef NO_PTHREAD - pthread_testcancel(); -#endif - XDEBUG(("Sending KeepAlivePacket\n")); - if (!me->send(&packet)) { - XINFO(("Could not send KeepAlivePacket... exiting thread.\n")); - break; - } - } -#ifndef NO_PTHREAD - return NULL; -#else - return; -#endif - } - - void Client::disconnect() - { - m_connected = FALSE; - - //socket vom packetreader auf NULL, damit die readschleife geschlossen wird - if (m_packetReader != NULL) - m_packetReader->setSocket(NULL); - - XDEBUG("cancelling readthread... \n"); -#ifndef NO_PTHREAD - if (readthread.p!=NULL) pthread_cancel (readthread); - readthread.p=NULL; - - XDEBUG( "cancelling sendpingthread... \n"); - if (sendpingthread.p!=NULL) pthread_cancel (sendpingthread); - sendpingthread.p=NULL; -#endif - - XDEBUG("deleting socket...\n"); - if (m_socket) { - delete m_socket; - m_socket = NULL; - } - XDEBUG(("done\n")); - } - - bool Client::send(XFirePacketContent *content) - { - if (!m_socket) { - XERROR(("Trying to send content packet altough socket is NULL ! (ignored)\n")); - return false; - } - XFirePacket *packet = new XFirePacket(content); - packet->sendPacket(m_socket); - delete packet; - return true; - } - - void Client::addPacketListener(PacketListener *listener) - { - m_packetReader->addPacketListener(listener); - } - - - void Client::receivedPacket(XFirePacket *packet) - { - XDEBUG(("Client::receivedPacket\n")); - if (packet == NULL) { - XERROR(("packet is NULL !!!\n")); - return; - } - if (packet->getContent() == NULL) { - XERROR(("ERRRR getContent() returns null ?!\n")); - return; - } - XFirePacketContent *content = packet->getContent(); - - switch (content->getPacketId()) { - case XFIRE_PACKET_AUTH_ID: - { - XINFO(("Got Auth Packet .. Sending Login\n")); - AuthPacket *authPacket = (AuthPacket*)packet->getContent(); - - ClientLoginPacket *login = new ClientLoginPacket(); - login->setSalt(authPacket->getSalt()); - login->setUsername(*m_username); - login->setPassword(*m_password); - send(login); - delete login; - break; - } - - case XFIRE_MESSAGE_ID: - { - XDEBUG(("Got Message, sending ACK\n")); - MessagePacket *message = (MessagePacket*)packet->getContent(); - if (message->getMessageType() == 0) { - MessageACKPacket *ack = new MessageACKPacket(); - memcpy(ack->sid, message->getSid(), 16); - ack->imindex = message->getImIndex(); - send(ack); - delete ack; - } - else if (message->getMessageType() == 2) { - send(message); - } - break; - } - - default: - //cout << "Nothing here... " << endl; - break; - } - } -}; -- cgit v1.2.3