Windows-Server-2003/inetsrv/iis/svcs/ftp/server/ftpcmd.hxx

387 lines
5.7 KiB
C++

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name :
ftpcmd.hxx
Abstract:
This module declares the data type and functions required for various
FTP commands supported by this FTP server.
Author:
Murali R. Krishnan ( MuraliK ) 28-Mar-1995
Environment:
User Mode -- Win32
Project:
FTP Server DLL
Revision History:
--*/
# ifndef _FTPCMD_HXX_
# define _FTPCMD_HXX_
/************************************************************
* Include Headers
************************************************************/
/************************************************************
* Type Definitions
************************************************************/
//
// Pointer to an implemention of a server-side command.
//
typedef BOOL (* LPFN_COMMAND)( USER_DATA * pUserData, CHAR * pszArg );
//
// This enumerator indicates the type of argument accepted by a
// command. This is used in the command table to do some
// preliminary argument validation.
//
typedef enum _ARG_TYPE
{
ArgTypeFirst = -1, // Must be first argument type!
ArgTypeNone, // Command cannot have arguments.
ArgTypeOptional, // Command may have arguments.
ArgTypeRequired, // Command must have arguments.
ArgTypeLast // Must be last argument type!
} ARG_TYPE;
#define IS_VALID_ARG_TYPE(x) (((x) > ArgTypeFirst) && ((x) < ArgTypeLast))
//
// This structure represents an FTP server command. There is at
// least one instance of this structure for each FTP command.
// In some cases (for example, CWD and XCWD) multiple commands are
// mapped to the same command token.
//
typedef struct _FTPD_COMMAND
{
//
// Name of the command, in UPPER case.
//
LPSTR CommandName;
//
// Help text for this command.
//
LPSTR HelpText;
//
// Pointer to the function that implements this command.
//
LPFN_COMMAND Implementation;
//
// Argument type for this command.
//
ARG_TYPE ArgumentType;
//
// Valid User state for a command to be accepted.
//
DWORD dwUserState; // bitflag consisting of user state.
#ifdef KEEP_COMMAND_STATS
//
// Usage statistics for this command.
//
DWORD UsageCount;
#endif // KEEP_COMMAND_STATS
} FTPD_COMMAND, * LPFTPD_COMMAND;
/************************************************************
* Prototypes for functions
************************************************************/
BOOL
MainUSER(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainPASS(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainFEAT(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainOPTS(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainACCT(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainCWD(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainCDUP(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSIZE(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainMDTM(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSMNT(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainQUIT(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainREIN(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainPORT(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainPASV(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainTYPE(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSTRU(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainMODE(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainRETR(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSTOR(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSTOU(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainAPPE(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainALLO(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainREST(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainRNFR(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainRNTO(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainABOR(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainDELE(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainRMD(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainMKD(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainPWD(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainLIST(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainNLST(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSITE(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSYST(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainSTAT(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainHELP(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
MainNOOP(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
SiteDIRSTYLE(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
SiteCKM(
LPUSER_DATA pUserData,
LPSTR pszArg
);
BOOL
SiteHELP(
LPUSER_DATA pUserData,
LPSTR pszArg
);
#ifdef KEEP_COMMAND_STATS
BOOL
SiteSTATS(
LPUSER_DATA pUserData,
LPSTR pszArg
);
#endif // KEEP_COMMAND_STATS
# endif // _FTPCMD_HXX_
/************************ End of File ***********************/