5 #ifndef _INC_cClientFTP_H
6 #define _INC_cClientFTP_H
17 #include "GrayLib/include/SSL/CSSLChannel.h"
94 static const CFTPCmd k_CmdArray[];
95 static const CFTPCmd k_SiteCmdArray[];
152 static inline bool IsRoot(
const char* pStr)
154 for (; *pStr !=
'\0'; pStr++)
182 void Cmd_Allo(
const char* pszParam);
186 void Cmd_Appe(
const char* pszParam);
187 void Cmd_Pwd(
const char* pszParam);
188 void Cmd_Cwd(
const char* pszParam);
189 void Cmd_Cdup(
const char* pszParam);
190 void Cmd_Mkd(
const char* pszParam);
191 void Cmd_Opts(
const char* pszParam);
192 void Cmd_Rest(
const char* pszParam);
193 void Cmd_Rmd(
const char* pszParam);
194 void Cmd_Retr(
const char* pszParam);
196 void Cmd_Stor(
const char* pszParam);
197 void Cmd_Dele(
const char* pszParam);
198 void Cmd_Epsv(
const char* pszParam);
200 void Cmd_Help(
const char* pszParam);
202 void Cmd_Mdtm(
const char* pszParam);
203 void Cmd_List(
const char* pszParam);
204 void Cmd_Nlst(
const char* pszParam);
205 void Cmd_User(
const char* pszParam);
206 void Cmd_Pass(
const char* pszParam);
207 void Cmd_Pasv(
const char* pszParam);
208 void Cmd_Noop(
const char* pszParam);
209 void Cmd_Quit(
const char* pszParam);
210 void Cmd_Port(
const char* pszParam);
211 void Cmd_Syst(
const char* pszParam);
212 void Cmd_Abor(
const char* pszParam);
213 void Cmd_Mode(
const char* pszParam);
215 void Cmd_Stat(
const char* pszParam);
216 void Cmd_Size(
const char* pszParam);
217 void Cmd_Type(
const char* pszParam);
218 void Cmd_Feat(
const char* pszParam);
219 void Cmd_Rnfr(
const char* pszParam);
220 void Cmd_Rnto(
const char* pszParam);
221 void Cmd_UTF8(
const char* pszParam);
223 void Cmd_Site(
const char* pszParam);
227 void Cmd_Site_CeMon(
const char* pszParam);
#define _MAX_PATH
Definition: SysTypes.h:423
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cClientFTPBase.h:35
Definition: cClientFTPData.h:62
Definition: cClientFTP.h:86
void Cmd_Pasv(const char *pszParam)
Definition: cClientFTPCmd.cpp:934
void Cmd_Stat(const char *pszParam)
Definition: cClientFTPCmd.cpp:898
int Reply_SysErrorLast(HTTPRET_TYPE eReplyCode, const char *pszText=nullptr)
Definition: cClientFTP.cpp:173
void Cmd_Opts(const char *pszParam)
Definition: cClientFTPCmd.cpp:99
bool OnException()
Definition: cClientFTP.cpp:563
cNetServerPortPtr m_pDPasv
an expected/waiting/incoming Pasv/EPSV data connection. (can only have one at a time)
Definition: cClientFTP.h:118
FTP_TSTRUCT_TYPE m_TransferStruct
Definition: cClientFTP.h:125
void Cmd_Dele(const char *pszParam)
Definition: cClientFTPCmd.cpp:357
FTP_TMODE_TYPE m_TransferMode
Definition: cClientFTP.h:124
void Cmd_Size(const char *pszParam)
Definition: cClientFTPCmd.cpp:920
int Reply_SysError(HTTPRET_TYPE eReplyCode, const char *pszText, HRESULT hRes)
Definition: cClientFTP.cpp:159
cArrayRef< cClientFTPData > m_aConnectData
open data connections for this control connection.
Definition: cClientFTP.h:120
void Cmd_Site(const char *pszParam)
Definition: cClientFTPCmd.cpp:1060
static bool IsRoot(const char *pStr)
Definition: cClientFTP.h:152
void Cmd_Appe(const char *pszParam)
Definition: cClientFTPCmd.cpp:346
void Cmd_Syst(const char *pszParam)
Definition: cClientFTPCmd.cpp:717
cStringA m_sUserName
Might be the anon users email.
Definition: cClientFTP.h:110
cStringA m_sCWD
Current working user path directory or file. (in Unix form)
Definition: cClientFTP.h:128
void Cmd_Cwd(const char *pszParam)
Definition: cClientFTPCmd.cpp:121
void Cmd_Cdup(const char *pszParam)
Definition: cClientFTPCmd.cpp:139
void Cmd_List_Base(const char *pszParam, bool bVerbose)
Definition: cClientFTPCmd.cpp:495
void Cmd_Port(const char *pszParam)
Definition: cClientFTPCmd.cpp:665
cNetAddrName m_AddrPeer
DNS lookup of my peer name. get_NetStream()->m_addrPeer.
Definition: cClientFTP.h:98
void Cmd_Type(const char *pszParam)
Definition: cClientFTPCmd.cpp:943
char m_szCmdBuffer[_MAX_PATH]
current command + path.
Definition: cClientFTP.h:106
void Cmd_Pasv_Start(const char *pszParam, bool bExt)
Definition: cClientFTPCmd.cpp:380
void Cmd_Retr(const char *pszParam)
Definition: cClientFTPCmd.cpp:204
cStringA m_sActiveUserPath
file/path (in Unix form)
Definition: cClientFTP.h:129
void Cmd_Site_Help(const char *pszParam)
Definition: cClientFTPCmd.cpp:1001
void Cmd_Mode(const char *pszParam)
Definition: cClientFTPCmd.cpp:738
void Cmd_Quit(const char *pszParam)
Definition: cClientFTPCmd.cpp:657
int Reply_BadPath(HTTPRET_TYPE eReplyCode=HTTPRET_ER_550)
Definition: cClientFTP.cpp:178
void Cmd_Mdtm(const char *pszParam)
Definition: cClientFTPCmd.cpp:796
cFTPFactory * get_FTPFactory() const
Definition: cClientFTP.cpp:71
void Cmd_Rnfr(const char *pszParam)
Definition: cClientFTPCmd.cpp:59
void Cmd_Auth(const char *pszParam)
void Cmd_Epsv(const char *pszParam)
Definition: cClientFTPCmd.cpp:426
void Cmd_User(const char *pszParam)
Definition: cClientFTPCmd.cpp:549
void Cmd_Nlst(const char *pszParam)
Definition: cClientFTPCmd.cpp:534
void Cmd_Help(const char *pszParam)
Definition: cClientFTPCmd.cpp:488
void Cmd_List(const char *pszParam)
Definition: cClientFTPCmd.cpp:542
int Reply_DataTransferError(const char *pError, HRESULT hRes)
Definition: cClientFTP.cpp:202
void Cmd_Stor_Base(const char *pszParam, bool bAppend)
Definition: cClientFTPCmd.cpp:278
void Cmd_UTF8(const char *pszParam)
Definition: cClientFTPCmd.cpp:95
static const CFTPCmd * FindCmd(const CFTPCmd *pCmds, const char *pszCmd)
Definition: cClientFTPCmd.cpp:33
void Cmd_Allo(const char *pszParam)
Definition: cClientFTPCmd.cpp:333
cSSLServerStreamPtr m_pAuthSSL
We used the AUTH command or are implicit SSL/TLS connection.
Definition: cClientFTP.h:103
int Reply_DataTransferComplete(void)
Definition: cClientFTP.cpp:192
void Cmd_Rest(const char *pszParam)
Definition: cClientFTPCmd.cpp:146
void Cmd_Abor(const char *pszParam)
Definition: cClientFTPCmd.cpp:729
StrLen_t _cdecl ReplyF(HTTPRET_TYPE eReplyCode, const char *pReplyString,...)
Definition: cClientFTP.cpp:102
void Cmd_Pwd(const char *pszParam)
Definition: cClientFTPCmd.cpp:113
void Cmd_Noop(const char *pszParam)
Definition: cClientFTPCmd.cpp:650
const char * DoCommandCheck(const char *pszCmdBuffer)
Definition: cClientFTP.cpp:396
cNetAddrTrackPtr m_pAddrTrack
Duplicates m_AddrPeer ??
Definition: cClientFTP.h:100
void Cmd_Mkd(const char *pszParam)
Definition: cClientFTPCmd.cpp:156
STREAM_POS_t m_nDataRestoreOffset
restore offset, for file transfers. set via Cmd_Rest
Definition: cClientFTP.h:116
cNetAddress m_DAddr
data address (can be changed w/ Port command) for (non pasv) outgoing data connections.
Definition: cClientFTP.h:117
const CFTPCmd * m_pCmd
Current Command.
Definition: cClientFTP.h:107
void Data_ConnectComplete(cClientFTPData *pClient, bool bPasv)
Definition: cClientFTP.cpp:573
cClientFTP(cFTPFactory *pFactory, IUnkObject *pServerConnection, cStreamInput *pStreamInp, cStreamOutput *pStreamOut)
Definition: cClientFTP.cpp:13
bool m_bAccountLogin
m_pAccount is logged in (may be anon)
Definition: cClientFTP.h:112
void Cmd_Rnto(const char *pszParam)
Definition: cClientFTPCmd.cpp:71
FTP_TTYPE_TYPE m_TransferType
Definition: cClientFTP.h:123
void Cmd_Help_Base(const CFTPCmd *pCmds, const char *pszType, const char *pszParam)
Definition: cClientFTPCmd.cpp:463
cFTPDataParamsPtr m_pDataParams
Set up params for the next data connection.
Definition: cClientFTP.h:119
void Cmd_Rmd(const char *pszParam)
Definition: cClientFTPCmd.cpp:183
virtual ~cClientFTP()
Definition: cClientFTP.cpp:60
virtual HRESULT DisposeThis(void) override
Definition: cClientFTP.cpp:661
void Cmd_Pass(const char *pszParam)
Definition: cClientFTPCmd.cpp:586
int Reply_DataTransferAbort(HRESULT hRes)
Definition: cClientFTP.cpp:197
FILECHAR_t m_tActiveFilePath[_MAX_PATH]
current valid (user checked) full real system path/file.
Definition: cClientFTP.h:130
bool m_bUTF8
Definition: cClientFTP.h:115
void DoControlCmd(const char *pszCmdBuffer)
Definition: cClientFTP.cpp:451
cFTPAccountPtr m_pAccount
Account we are trying to log in with. May not yet be logged in.
Definition: cClientFTP.h:111
bool Data_IsPASV() const
Definition: cClientFTP.h:146
virtual HRESULT ProcessStreamPacket() override
Definition: cClientFTP.cpp:487
void Cmd_Stor(const char *pszParam)
Definition: cClientFTPCmd.cpp:352
int Reply_ParameterNotImplemented(const char *pText)
Definition: cClientFTP.cpp:207
int Reply_OK(HTTPRET_TYPE eReplyCode=HTTPRET_OK_DATA)
Definition: cClientFTP.cpp:151
void Cmd_Struct(const char *pszParam)
Definition: cClientFTPCmd.cpp:767
HRESULT Data_ConnectOpen()
Definition: cClientFTP.cpp:595
void Cmd_Feat(const char *pszParam)
Definition: cClientFTPCmd.cpp:435
StrLen_t _cdecl LogEventF(LOG_ATTR_MASK_t dwAttrMask, const LOGCHAR_t *pszFormat,...)
Definition: cClientFTP.cpp:76
HTTPRET_TYPE MakeFilePath(const char *pszName, FTP_PRIV_TYPE_ wPrivReq, cFileFindEntry *pfd=nullptr)
Definition: cClientFTP.cpp:213
Definition: cFTPFactory.h:54
Definition: cNetAddrName.h:21
Definition: cNetAddr.h:31
bool isAddrValid() const
Definition: cNetAddr.cpp:20
Definition: cArrayRef.h:21
Definition: cFileDir.h:86
static constexpr bool IsCharDirSep(wchar_t ch) noexcept
Definition: cFilePath.h:85
Definition: cStream.h:126
Definition: cFTPAccount.h:14
FTP_PRIV_TYPE_
Definition: cFTPAccount.h:34
cRefPtr< cClientFTP > cClientFTPPtr
Definition: cClientFTP.h:234
FTP_TMODE_TYPE
Definition: cClientFTP.h:42
@ FTP_TMODE_STREAM
Definition: cClientFTP.h:46
@ FTP_TMODE_BLOCK
Definition: cClientFTP.h:47
@ FTP_TMODE_COMPRESSED
Definition: cClientFTP.h:48
FTP_TSTRUCT_TYPE
Definition: cClientFTP.h:52
@ FTP_TSTRUCT_FILE
Definition: cClientFTP.h:55
@ FTP_TSTRUCT_PAGE
Definition: cClientFTP.h:57
@ FTP_TSTRUCT_RECORD
Definition: cClientFTP.h:56
FTP_TTYPE_TYPE
Definition: cClientFTP.h:27
@ FTP_TTYPE_EBCDIC_TELNET
Definition: cClientFTP.h:37
@ FTP_TTYPE_ASCII_CSA
Definition: cClientFTP.h:35
@ FTP_TTYPE_EBCDIC_NONPRINT
Definition: cClientFTP.h:36
@ FTP_TTYPE_EBCDIC_ASA
Definition: cClientFTP.h:38
@ FTP_TTYPE_ASCII_NONPRINT
Definition: cClientFTP.h:30
@ FTP_TTYPE_ASCII_TELNET
Definition: cClientFTP.h:34
@ FTP_TTYPE_BINARY_IMAGE
Definition: cClientFTP.h:31
void(cClientFTP::* FTP_CMD_FUNC)(const char *pszParam)
Definition: cClientFTP.h:72
CF_TYPE_
Definition: cClientFTP.h:61
@ CF_PARM_OPTIONAL
params are optional.
Definition: cClientFTP.h:66
@ CF_PARM_NEED
needs a parameter or won't work
Definition: cClientFTP.h:65
@ CF_AUTHENTICATE
Must be logged in to use this command.
Definition: cClientFTP.h:64
@ CF_PARM_HIDE
don't log params. (e.g. password)
Definition: cClientFTP.h:67
@ CF_MAJOR
This is an important major command (log this)
Definition: cClientFTP.h:69
@ CF_FEAT
shown in "feats" list.
Definition: cClientFTP.h:68
cRefPtr< cFTPAccount > cFTPAccountPtr
Definition: cFTPAccount.h:126
HTTPRET_TYPE
Definition: cHttpCommon.h:24
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 FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
ULONG_PTR STREAM_POS_t
NOT same as FILE_SIZE_t in 32 bit. Why not ?
Definition: cOSHandle.h:54
char LOGCHAR_t
always just use UTF8 for logs, don't bother with UNICODE.
Definition: cLogLevel.h:17
Definition: cClientFTP.h:75
StrLen_t m_iCmdLen
Definition: cClientFTP.h:79
const char * m_pszSyntax
description and arguments.
Definition: cClientFTP.h:80
DWORD m_dwFlags
CF_TYPE_ ex. CF_AUTHENTICATE.
Definition: cClientFTP.h:81
FTP_CMD_FUNC m_Function
The code to exec the action. a method in cClientFTP.
Definition: cClientFTP.h:82
const char * m_pszCmd
all caps
Definition: cClientFTP.h:78