|
|
|
#ifndef _MARSHAL_H_
|
|
|
|
#define _MARSHAL_H_
|
|
|
|
//
|
|
|
|
// File marshal.h
|
|
|
|
// Creation date : Sun Sep 17 2000 10:44:20 by Szymon Stefanek
|
|
|
|
//
|
|
|
|
// This file is part of the KVirc irc client distribution
|
|
|
|
// Copyright (C) 1999-2000 Szymon Stefanek (pragma 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 "kvi_string.h"
|
|
|
|
#include "kvi_sockettype.h"
|
|
|
|
#include <tqobject.h>
|
|
|
|
#include <tqsocketnotifier.h>
|
|
|
|
#include <tqtimer.h>
|
|
|
|
#include "kvi_inttypes.h"
|
|
|
|
|
|
|
|
class KviWindow;
|
|
|
|
|
|
|
|
#ifdef COMPILE_SSL_SUPPORT
|
|
|
|
#include "kvi_sslmaster.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
class KviDccMarshal;
|
|
|
|
|
|
|
|
class KviDccMarshalOutputContext
|
|
|
|
{
|
|
|
|
friend class KviDccMarshal;
|
|
|
|
public:
|
|
|
|
KviDccMarshalOutputContext(){};
|
|
|
|
virtual ~KviDccMarshalOutputContext(){};
|
|
|
|
protected:
|
|
|
|
virtual KviWindow * dccMarshalOutputWindow() = 0;
|
|
|
|
virtual const char * dccMarshalOutputContextString() = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class KviDccMarshal : public TQObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
|
|
KviDccMarshal(KviDccMarshalOutputContext * ctx);
|
|
|
|
~KviDccMarshal();
|
|
|
|
protected:
|
|
|
|
// DCC DESCRIPTOR
|
|
|
|
TQString m_szIp; // Dcc initiator ip address (the one that listens)
|
|
|
|
TQString m_szPort; // Dcc initiator port (the one that listens)
|
|
|
|
// other info
|
|
|
|
bool m_bIpV6; // Dcc mode
|
|
|
|
kvi_u32_t m_uPort; // Dcc initiator port
|
|
|
|
bool m_bOutgoing; // true if WE have connected to the remote host (so m_szIp is the remote host ip)
|
|
|
|
TQString m_szSecondaryIp; // Ip of the client that has connected to the remote host
|
|
|
|
TQString m_szSecondaryPort; // Port of the client that has connected to the remote host
|
|
|
|
// internals
|
|
|
|
kvi_socket_t m_fd; // socket
|
|
|
|
TQSocketNotifier * m_pSn;
|
|
|
|
TQTimer * m_pTimeoutTimer;
|
|
|
|
bool m_bUseTimeout;
|
|
|
|
#ifdef COMPILE_SSL_SUPPORT
|
|
|
|
KviSSL * m_pSSL;
|
|
|
|
bool m_bUseSSL;
|
|
|
|
#endif
|
|
|
|
KviDccMarshalOutputContext * m_pOutputContext;
|
|
|
|
public:
|
|
|
|
const TQString & dccIp() const { return m_szIp; };
|
|
|
|
const TQString & dccPort() const { return m_szPort; };
|
|
|
|
const TQString & localIp() const { return m_bOutgoing ? m_szSecondaryIp : m_szIp; };
|
|
|
|
const TQString & localPort() const { return m_bOutgoing ? m_szSecondaryPort : m_szPort; };
|
|
|
|
const TQString & remoteIp() const { return m_bOutgoing ? m_szIp : m_szSecondaryIp; };
|
|
|
|
const TQString & remotePort() const { return m_bOutgoing ? m_szPort : m_szSecondaryPort; };
|
|
|
|
int dccListen(const TQString &ip,const TQString &port,bool bUseTimeout,bool bUseSSL = false);
|
|
|
|
int dccConnect(const char * ip,const char * port,bool bUseTimeout,bool bUseSSL = false);
|
|
|
|
kvi_socket_t releaseSocket();
|
|
|
|
#ifdef COMPILE_SSL_SUPPORT
|
|
|
|
KviSSL * releaseSSL();
|
|
|
|
#endif
|
|
|
|
void abort();
|
|
|
|
private:
|
|
|
|
void reset();
|
|
|
|
//#ifdef COMPILE_SSL_SUPPORT
|
|
|
|
// bool trySSLCertificate();
|
|
|
|
//#endif
|
|
|
|
private slots:
|
|
|
|
void doSSLHandshake(int);
|
|
|
|
// void doListenSSLHandshake();
|
|
|
|
void snActivated(int);
|
|
|
|
void connectionTimedOut();
|
|
|
|
void doListen();
|
|
|
|
void doConnect();
|
|
|
|
signals:
|
|
|
|
void startingSSLHandshake();
|
|
|
|
void sslError(const char * msg);
|
|
|
|
void connected();
|
|
|
|
void inProgress();
|
|
|
|
void error(int);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif //_MARSHAL_H_
|