diff options
Diffstat (limited to 'src/modules/dcc/DccDescriptor.h')
| -rw-r--r-- | src/modules/dcc/DccDescriptor.h | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/src/modules/dcc/DccDescriptor.h b/src/modules/dcc/DccDescriptor.h new file mode 100644 index 000000000..ae5784dc5 --- /dev/null +++ b/src/modules/dcc/DccDescriptor.h @@ -0,0 +1,158 @@ +#ifndef _DESCRIPTOR_H_ +#define _DESCRIPTOR_H_ +//============================================================================= +// +// File : DccDescriptor.h +// Creation date : Tue Jul 23 01:11:52 2002 GMT by Szymon Stefanek +// +// This file is part of the KVIrc irc client distribution +// Copyright (C) 2002-2010 Szymon Stefanek (oragma at kvirc dot 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 opinion) 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 Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +//============================================================================= + +#include "KviCString.h" +#include "KviConsoleWindow.h" +#include "KviPointerHashTable.h" + +class DccWindow; +class DccFileTransfer; +class DccDescriptor +{ +public: + DccDescriptor(KviConsoleWindow * pConsole); + DccDescriptor(const DccDescriptor & src); + + ~DccDescriptor(); +protected: + KviConsoleWindow * m_pConsole; + + // mIrc zero port reverse send/chat extension + KviCString m_szZeroPortRequestTag; + + unsigned int m_uId; // this dcc session ID + QString m_szId; + + DccWindow * m_pDccWindow; // 0 if it has no window + DccFileTransfer * m_pDccTransfer; // 0 if it is not a transfer + + bool m_bCreationEventTriggered; +public: + // A console that this DCC is bound to (might be replaced while we wait for user acknowledge in dialogs) + KviConsoleWindow * console() const { return m_pConsole; }; + void setConsole(KviConsoleWindow * c){ m_pConsole = c; }; + + DccWindow * window() const { return m_pDccWindow; }; + void setWindow(DccWindow * w){ m_pDccWindow = w; }; + + DccFileTransfer * transfer() const { return m_pDccTransfer; }; + void setTransfer(DccFileTransfer * t){ m_pDccTransfer = t; }; + + // mIrc zero port reverse send/chat extension + bool isZeroPortRequest() const { return m_szZeroPortRequestTag.hasData(); }; + const char * zeroPortRequestTag() const { return m_szZeroPortRequestTag.ptr(); }; + void setZeroPortRequestTag(const KviCString &szTag){ m_szZeroPortRequestTag = szTag; }; + + unsigned int id() const { return m_uId; }; + const QString & idString() const { return m_szId; }; + static DccDescriptor * find(unsigned int uId); + static KviPointerHashTable<int,DccDescriptor> * descriptorDict(); + + void triggerCreationEvent(); // this MUST be called by the creator of the descriptor! +private: + void copyFrom(const DccDescriptor &src); +public: + // Generic parameters + QString szType; // DCC protocol : CHAT, SCHAT, SEND, TSSEND.... + + bool bActive; // active or passive connection ? + + QString szNick; // remote user nickname + QString szUser; // remote user name (unknown for passive dcc) + QString szHost; // remote user host (unknown for passive dcc) + + QString szLocalNick; // local user nickname (always from irc) + QString szLocalUser; // local user username (always from irc) + QString szLocalHost; // local user hostname (always from irc) + + QString szIp; // remote user ip (active dcc only) + QString szPort; // remote user port (active dcc only) + + QString szListenIp; // passive only : ip to listen on + QString szListenPort; // passive only : port to listen on + + bool bSendRequest; // passive only : true if we have to send the CTCP request + + QString szFakeIp; // passive only : fake ip to send in the CTCP + QString szFakePort; // passive only : fake port to send in the CTCP + + bool bDoTimeout; // the marshall has to setup a timeout ? + + bool bIsTdcc; // is this a TDCC ? + + bool bOverrideMinimize; // Override the default minimize option ? + bool bShowMinimized; // Show minimized ? (valid if bOverrideMinimize is true) + + bool bAutoAccept; // Auto accepted dcc send/chat ? +#ifdef COMPILE_SSL_SUPPORT + bool bIsSSL; // do we have to use SSL ? +#endif + // Specific parameters + + // DCC SEND/RECV + + QString szFileName; // RECVFILE: incoming file name, SENDFILE: filename sent to the remote end + QString szFileSize; // RECVFILE: incoming file size, SENDFILE: remote resume size + + QString szLocalFileName; // RECVFILE: save file name selected, SENDFILE: file to send + QString szLocalFileSize; // RECVFILE: local file size (to resume), SENDFILE: file to send size + + bool bRecvFile; // do we have to RECEIVE the file or SEND it ? + bool bResume; // do we want to resume ? + bool bNoAcks; // blind dcc send ? (do not receive nor send acknowledges) + + bool bIsIncomingAvatar; // It is an Incoming Avatar DCC SEND ? + + // DCC VOICE + KviCString szCodec; // codec name + int iSampleRate; // Sample rate +public: + QString protocol() const { return szType; }; + bool isActive() const { return bActive; }; + QString remoteNick() const { return szNick; }; + QString remoteUser() const { return szUser; }; + QString remoteHost() const { return szHost; }; + QString remoteIp() const { return szIp; }; + QString remotePort() const { return szPort; }; + QString remoteFileName() const { return szFileName; }; + QString remoteFileSize() const { return szFileSize; }; + QString localNick() const { return szLocalNick; }; + QString localUser() const { return szLocalUser; }; + QString localHost() const { return szLocalHost; }; + QString localIp() const { return szIp; }; + QString localPort() const { return szPort; }; + QString localFileName() const { return szLocalFileName; }; + QString localFileSize() const { return szLocalFileSize; }; + bool isFileUpload(); + bool isFileDownload(); + bool isDccChat(); + bool isFileTransfer(){ return (isFileUpload() || isFileDownload()); }; +#ifdef COMPILE_SSL_SUPPORT + bool isSSL() const { return bIsSSL; }; +#endif +}; + +#endif //_DESCRIPTOR_H_ |
