Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cFTPFactory.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cFTPFactory_H
6 #define _INC_cFTPFactory_H
7 #ifndef NO_PRAGMA_ONCE
8 #pragma once
9 #endif
10 
11 #include "GrayFTPInt.h"
12 #include "cFTPCfg.h"
13 #include "Client/cClientFTP.h"
15 #ifdef USE_UPNP
18 #endif
19 
20 namespace GrayFTP
21 {
22  class cClientFTP;
23  class cFTPFactory;
24 
26  {
30  public:
33  public:
34  cFTPFactoryData(cFTPFactory& rFactory, cClientFTP* pClient = nullptr)
35  : m_rFactory(rFactory)
36  , m_pClient(pClient)
37  {
38  }
39  virtual const char* get_ProtocolName() const override
40  {
42  return "FTPData";
43  }
44  virtual HRESULT TestProtocol(const BYTE* pszPrefixData, size_t iPrefixLen) const override
45  {
48  return S_OK;
49  }
50  virtual cProtocolStreamPtr CreateProtocolStream(IUnkObject* pServerConnection, cStreamInput* pStreamInp, cStreamOutput* pStreamOut) override;
51  };
52 
53  class cFTPFactory : public IProtocolFactory // cNetServer protocol for command/control connection.
54  {
58 
59  public:
63 
65 
68 
70 
71  protected:
72  virtual const char* get_ProtocolName() const override
73  {
74  // IProtocolFactory
75  return "FTP";
76  }
77  virtual HRESULT TestProtocol(const BYTE* pszPrefixData, size_t iPrefixLen) const override
78  {
81  return S_OK;
82  }
83  virtual cProtocolStreamPtr CreateProtocolStream(IUnkObject* pServerConnection, cStreamInput* pStreamInp, cStreamOutput* pStreamOut) override;
84 
85  public:
86  cFTPFactory(cNetServer& rNetServer, cFTPCfg& rCfg);
87  virtual ~cFTPFactory();
88 
89  // Event types. LOG_ATTR_MASK_t
90  StrLen_t _cdecl LogEventF(LOG_ATTR_MASK_t dwAttrMask, const LOGCHAR_t* pszFormat, ...);
91 
92  HRESULT CheckAddressBeforeAccept(const cNetAddress& AddrNew) const;
93  bool OnClientClose(cNetServerConnection* pClient);
95 
96  bool OpenFactory();
97  void CloseFactory();
98  };
99 }
100 #endif
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cClientFTP.h:86
Definition: cFTPCfg.h:117
Definition: cFTPFactory.h:26
virtual const char * get_ProtocolName() const override
Definition: cFTPFactory.h:39
cClientFTP * m_pClient
NON PASV direct data connection for this command client. else nullptr.
Definition: cFTPFactory.h:32
virtual HRESULT TestProtocol(const BYTE *pszPrefixData, size_t iPrefixLen) const override
Definition: cFTPFactory.h:44
virtual cProtocolStreamPtr CreateProtocolStream(IUnkObject *pServerConnection, cStreamInput *pStreamInp, cStreamOutput *pStreamOut) override
Definition: cFTPFactory.cpp:220
cFTPFactory & m_rFactory
My parent server for creating corresponding command client.
Definition: cFTPFactory.h:31
cFTPFactoryData(cFTPFactory &rFactory, cClientFTP *pClient=nullptr)
Definition: cFTPFactory.h:34
Definition: cFTPFactory.h:54
HRESULT CheckAddressBeforeAccept(const cNetAddress &AddrNew) const
Definition: cFTPFactory.cpp:82
cFTPFactoryData m_ProtocolData
incoming Data connection. PASV usually. on m_Opts.m_wPasvPort
Definition: cFTPFactory.h:64
virtual const char * get_ProtocolName() const override
Definition: cFTPFactory.h:72
cNetAddrName m_AddrMe
My gethostname() and my primary IP. Maybe not my only IP.
Definition: cFTPFactory.h:62
cArrayRef< cClientFTP > m_aConnectCmd
All my Control/command connections on m_pSocketCtrl. non data connections. duped in cNetServerGroup.
Definition: cFTPFactory.h:69
StrLen_t _cdecl LogEventF(LOG_ATTR_MASK_t dwAttrMask, const LOGCHAR_t *pszFormat,...)
Definition: cFTPFactory.cpp:23
cNetServerPortPtr m_pSocketDataPasv
dedicated listen port for incoming passive data connections. (if needed) m_Opts.m_wPasvPort = 20
Definition: cFTPFactory.h:67
cNetServer & m_rNetServer
Definition: cFTPFactory.h:60
virtual cProtocolStreamPtr CreateProtocolStream(IUnkObject *pServerConnection, cStreamInput *pStreamInp, cStreamOutput *pStreamOut) override
Definition: cFTPFactory.cpp:153
bool OpenFactory()
Definition: cFTPFactory.cpp:170
cNetServerPortPtr m_pSocketCtrl
a dedicated server listening command/control socket/port. m_Opts.m_wPort = 21
Definition: cFTPFactory.h:66
void CloseFactory()
Definition: cFTPFactory.cpp:210
HRESULT OpenDPasvListen(OUT cNetServerPortPtr &pDPasv)
Definition: cFTPFactory.cpp:36
bool OnClientClose(cNetServerConnection *pClient)
Definition: cFTPFactory.cpp:119
virtual ~cFTPFactory()
Definition: cFTPFactory.cpp:19
cFTPCfg & m_rCfg
Definition: cFTPFactory.h:61
virtual HRESULT TestProtocol(const BYTE *pszPrefixData, size_t iPrefixLen) const override
Definition: cFTPFactory.h:77
cFTPFactory(cNetServer &rNetServer, cFTPCfg &rCfg)
Definition: cFTPFactory.cpp:12
Definition: cNetAddrName.h:21
Definition: cNetAddr.h:31
Definition: cNetServer.h:52
Definition: cNetServer.h:157
Definition: cArrayRef.h:21
Definition: cStream.h:306
Definition: cStream.h:126
Definition: cFTPAccount.h:14
int StrLen_t
the length of a string in chars (bytes for UTF8, wchar_t for UNICODE). or offset in characters....
Definition: StrConst.h:32
UINT32 LOG_ATTR_MASK_t
Definition: cLogAppender.h:56
char LOGCHAR_t
always just use UTF8 for logs, don't bother with UNICODE.
Definition: cLogLevel.h:17
Definition: cProtocol.h:125