// FVSDK_Session.h : header file FTP Voyager Software Development Kit session information
//
// Copyright © 1997-2008 - Rhino Software, Inc.
// FTP Voyager® is a registered trademark of Rhino Software, Inc.
// http://www.RhinoSoft.com/
//
// Author: Mark P. Peterson
// Date: August 19, 2005
//
// You are free to use/modify this code but leave this header intact.
// FTP Voyager, the FTP Voyager Software Development Kit, and FtpTree ActiveX
// Control are not public domain. Any registration IDs or non-public domain
// software from Rhino Software, Inc. remains copyrighted. For more information
// refer to the license agreement distributed with the FTP Voyager SDK.
//
// If you decide to use the FTP Voyager Software Development Kit, or FtpTree
// ActiveX control, you must first purchase a license. For more information
// visit http://www.RhinoSoft.com/
//------------------------------------------------------------------------------
// prevent multiple inclusions of this file
#ifndef _FVSDK_Session_HEADER
#define _FVSDK_Session_HEADER
#include "FVSDK_ErrorCodes.h"
/////////////////////////////////////////////////////////////////////////////
// pack to one byte boundaries
#pragma pack(push)
#pragma pack(1)
/////////////////////////////////////////////////////////////////////////////
// forward declarations
typedef struct FVSDK_TransferStatusStruct FVSDK_TransferStatus;
/////////////////////////////////////////////////////////////////////////////
// version numbers
const UINT FVSDK_SESS_VERSION_1 = 1;
const UINT FVSDK_SESS_VERSION_2 = 2;
// the current session structure version
#define FVSDK_SESSION_CURRENT_VERSION FVSDK_SESS_VERSION_2
/////////////////////////////////////////////////////////////////////////////
// typedefs
typedef WORD FVSDK_SESSION_ID;
typedef void* FVSDK_CALLBACK_DATA;
/////////////////////////////////////////////////////////////////////////////
// function typedefs
// log callback
typedef void (CALLBACK* FVSDK_LOG_TEXT_FUNC) (FVSDK_CALLBACK_DATA pvData, UINT nType, LPCTSTR pszText);
// password callbacks
typedef BOOL (CALLBACK* FVSDK_ASKPASS_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszBuffer, int nBufferSize);
typedef BOOL (CALLBACK* FVSDK_ASKPASSC_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszBuffer, int nBufferSize);
typedef void (CALLBACK* FVSDK_PASSCHG_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszPassword);
// file transfer callbacks
typedef void (CALLBACK* FVSDK_FLUP_REN_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszOldFileName, LPCTSTR pszNewFileName);
typedef void (CALLBACK* FVSDK_FLUP_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszSourcePath, LPCTSTR pszDestPath);
typedef void (CALLBACK* FVSDK_FLDOWN_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszSourcePath, LPCTSTR pszDestPath);
typedef void (CALLBACK* FVSDK_FLDNERR_FUNC) (FVSDK_CALLBACK_DATA pvData, long nErr, long nCause, LPCTSTR pszError, LPCTSTR pszRemotePath, LPCTSTR pszDestFileName, LPCTSTR pszExtraInfo);
typedef void (CALLBACK* FVSDK_FLUPERR_FUNC) (FVSDK_CALLBACK_DATA pvData, long nErr, long nCause, LPCTSTR pszError, LPCTSTR pszRemotePath, LPCTSTR pszLocalPath);
// creation / deletion / change callbacks
typedef void (CALLBACK* FVSDK_LCDIRCR_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszPath);
typedef void (CALLBACK* FVSDK_LCDIRDL_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszPath);
typedef void (CALLBACK* FVSDK_LCFLCHG_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszPath);
typedef void (CALLBACK* FVSDK_RMDIRDEL_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszPath);
typedef void (CALLBACK* FVSDK_RMDIRCR_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszPath);
typedef void (CALLBACK* FVSDK_RMFILEDL_FUNC) (FVSDK_CALLBACK_DATA pvData, LPCTSTR pszPath);
// help callback
typedef void (CALLBACK* FVSDK_HELP_FUNC) (FVSDK_CALLBACK_DATA pvData, UINT nSource);
// transfer status callbacks
typedef void (CALLBACK* FVSDK_TRANSTAT_FUNC) (FVSDK_CALLBACK_DATA pvData, UINT nStatus, FVSDK_TransferStatus* pStatus);
/////////////////////////////////////////////////////////////////////////////
// constants
/*** FVSDK_Session.nAutoUpload Constants ***/
const USHORT FVSDK_AUTO_UPLOAD_ASK = 0; // ask the user to upload a changed file while using FVSDK_RemoteEdit() or FVSDK_RemoteView()
const USHORT FVSDK_AUTO_UPLOAD_AUTOMATIC = 1; // don't ask the user to upload a changed file while using FVSDK_RemoteEdit() or FVSDK_RemoteView(), upload it if it's changed
const USHORT FVSDK_AUTO_UPLOAD_DISABLED = 2; // don't do anything using using FVSDK_RemoteEdit() or FVSDK_RemoteView() after the user completes his work
/*** END FVSDK_Session.nAutoUpload ***/
/*** FVSDK_Session.nPasswordSecurityMode Constants ***/
const USHORT FVSDK_PASSWORD_REGULAR = 0; // use only regular passwords
const USHORT FVSDK_PASSWORD_MD4 = 1; // use only MD4 S/Key passwords, when requested by server
const USHORT FVSDK_PASSWORD_MD5 = 2; // use MD4 or MD5 S/Key passwords, when requested by server
/*** END FVSDK_Session.nPasswordSecurityMode ***/
/*** FVSDK_Session.nSecurityType Constants ***/
const USHORT FVSDK_ST_REGULAR = 0; // regular, clear text FTP
const USHORT FVSDK_ST_SSL_EXPLICIT = 1; // start with regular FTP, send AUTH SSL to go to SSL mode after connecting
const USHORT FVSDK_ST_SSL_IMPLICIT = 2; // start with SSL, usually on port 990
const USHORT FVSDK_ST_TLS_EXPLICIT = 3; // start with regular FTP, send AUTH TLS to go to TLS mode after connecting
const USHORT FVSDK_ST_SSH = 4; // SFTP using SSH2, contact RhinoSoft.com for more information
/*** END FVSDK_Session.nSecurityType ***/
/*** FVSDK_Session.nCompressionMode Constants ***/
const USHORT FVSDK_DSCMP_DISABLED = 0; // compression is off
const USHORT FVSDK_DSCMP_AUTOMATIC = 1; // automatically determine if compression can be used
const USHORT FVSDK_DSCMP_ZLIB = 2; // force zLib compression
/*** END FVSDK_Session.nCompressionMode ***/
/*** FVSDK_Session.nAccessType Constants ***/
const UINT FVSDK_AT_SITE = 0; // use SITE site
const UINT FVSDK_AT_DIRECT = 1; // direct to net
const UINT FVSDK_AT_USER_AFTER_LOGON = 2; // USER, PASSWORD to proxy, then USER=user@site to site
const UINT FVSDK_AT_OPEN = 3; // use OPEN site
const UINT FVSDK_AT_SOCKS4 = 4; // SOCKS4 Proxy Server
const UINT FVSDK_AT_SOCKS5 = 5; // SOCKS5 Proxy Server
const UINT FVSDK_AT_SOCKS4A = 6; // SOCKS4a Proxy Server
const UINT FVSDK_AT_FIREUSERID_AT_SITE_PORT = 7; // USER fireID@remoteHost
const UINT FVSDK_AT_HTTP = 8; // HTTP Proxy Server
// intentional gap
const UINT FVSDK_AT_USERID_AT_SITE = 10; // USER userid@site
const UINT FVSDK_AT_USERID_AT_SITE_COLON_PORT = 11; // USER userid@site:21
const UINT FVSDK_AT_USERID_AT_SITE_SPACE_PORT = 12; // USER userid@site 21
const UINT FVSDK_AT_USERID_AT_SITE_SPACE_PROXY_NAME = 13; // USER userid@site proxy_name_or_IP
/*** END FVSDK_Session.nAccessType ***/
/*** pfnLogText(nType) Constants ***/
const UINT FVSDK_COMMAND_LOG_TYPE = 0; // command sent to the FTP server
const UINT FVSDK_RESPONSE_LOG_TYPE = 1; // response received from the server in response to a command
const UINT FVSDK_UNSOLICITED_LOG_TYPE = 2; // unsolicited response received from server, not a response to a command
const UINT FVSDK_STATUS_LOG_TYPE = 3; // informational status generated by FTP Voyager SDK
const UINT FVSDK_ERROR_LOG_TYPE = 4; // informational error message generated by FTP Voyager SDK
/*** END pfnLogText(nType) ***/
/*** pfnHelpButtonPressed(nSource) Constants ***/
const UINT FVSDK_HELP_BUTTON_FIND_FILES = 0; // the find files help button has been pressed
const UINT FVSDK_HELP_BUTTON_SYNC_FOLDERS = 1; // the synchronize folders help button has been pressed
const UINT FVSDK_HELP_BUTTON_FILE_EDIT = 2; // the online edit dialog help button has been pressed
/*** END pfnHelpButtonPressed(nSource) ***/
/*** FVSDK_Session.nAdjustServerTimeGMT Constants ***/
const UINT FVSDK_GMT_ADJUST_AUTO = 0; // automatically adjust for the server's time zone when appropriate
const UINT FVSDK_GMT_ADJUST_NONE = 1; // don't adjust for the server's time zone
const UINT FVSDK_GMT_ADJUST_MINUTE_OFFSET = 2; // use nMinuteOffsetGMT to adjust the time offset on the server
/*** END FVSDK_Session.nAdjustServerTimeGMT ***/
/////////////////////////////////////////////////////////////////////////////
// macros
#define DEFAULT_TEXT_FILES ".txt,.text,.htm,.html,.c,.cpp,.h,.hpp,.mak,.cgi,.pl,.pm,.shtml,.phtml,.css,.php,.inc,.1st,.asp,.bat,.bash,.cfm,.dhtml,.xml,.mak,.pinerc,.pl,.pm,.qmail,.screenrc"
/////////////////////////////////////////////////////////////////////////////
// FVSDK_Session structure
/*** FVSDK_Session Structure Description ***
The FVSDK_Session structure is used by the FTP Voyager Software Development Kit to keep
track of individual connections to FTP servers and to provide a convenient way of configuring
and setting options for a connection.
In most implementations, FVSDK_NewSession() should be used to allocate and initialize the
structure variables. The pointer to the allocated structure is then passed to all connection
oriented SDK functions. When finished with the structure, call FVSDK_FreeSession() to release
the allocated memory.
When allocating an FVSDK_Session object directly within your application use, FVSDK_InitSession()
and FVSDK_CloseSession() to initialize and close the session, respectively.
In order to ensure the data integrity of the FVSDK_Session structure, the nSize value must be
set to the number of bytes in the structure and the nVersion value must be set to FVSDK_SESSION_CURRENT_VERSION.
If these values don't match the expected values, the FTP Voyager SDK returns an error value as
found in FVSDK_ErrorCodes.h.
Only one instance of an FVSDK_Session object can be used per connection.
The default value for each member element is found in square brackets [] after the description.
*** End Description ***/
/*** BEGIN FVSDK_Session ***/
typedef struct FVSDK_SessionStruct
{
// administrative variables
UINT nSize; // size, in bytes, of this structure [no default]
UINT nVersion; // version number of this structure, use the largest version number defined in FVSDK_Session.h, [must be FVSDK_SESSION_CURRENT_VERSION]
FVSDK_SESSION_ID nSessionID; // the unique session number used by the DLL [no default]
FVSDK_ERROR_CODE fvecLastError; // the last error number [FVSDK_OK]
/////////////////////////////////////////////////////////////////////////////
// FV site profile configuration values
// attributes
HWND hwndMainWnd; // can be NULL, but should be a handle to the application's main window when using user interface options [NULL]
LPCTSTR pszAppName; // the name of the application using the FVSDK, used in certain dialog box titles [NULL]
LPCTSTR pszAppVersion; // the version number of your application, used by FVSDK when sending servers the CLNT command [NULL]
BOOL bPasv; // use PASV mode (instead of PORT mode) [FALSE]
LPCTSTR pszTempPath; // NULL to use the Windows defined temporary directory, otherwise the full path to a local directory
BOOL bMaintainDownloadFileTime; // maintain the dates and times of downloaded files [TRUE]
BOOL bMaintainUploadFileTime; // maintain the dates and times of uploaded files, will NOT work with all servers [TRUE]
BOOL bConvertFutureFiles; // convert files dated in the future to the correct year; For example, UNIX usually doesn't include the year [TRUE]
BOOL bUseLocalTimeForAnonymous; // convert dates and times to local time assuming the server dates and times are in GMT (when connecting to UNIX style servers). [TRUE]
BOOL bConvertFileNamesToUpper; // convert all files names to upper case when uploading [FALSE]
BOOL bConvertFileNamesToLower; // convert all file names to lower case when uploading [FALSE]
BOOL bConvertUpperToLower; // convert all upper case file names to lower case when uploading [FALSE]
BOOL bConvertFileNamesToUFC; // converts the first character to upper case when uploading [FALSE]
BOOL bThoroughLinkResolution; // use thorough UNIX link resolution, attempting CWD commands on UNIX links to determine if the item is a file or directory [TRUE]
BOOL bAsciiMode; // use ASCII mode [FALSE]
BOOL bAutoASCII; // use Automatic ASCII mode, pszTextFileExtensions must be set [FALSE]
BOOL bUseMVSUNIXDirListings; // use UNIX style listings when connected to an MVS server [FALSE]
BOOL bChangeLocalDate; // change the local file's date and time to the uploaded file's date and time when unable to maintain the uploaded file's date and time [FALSE]
USHORT nAutoUpload; // automatic upload setting to use when using the FVSDK_RemoteEdit() function [FVSDK_AUTO_UPLOAD_ASK]
USHORT nPasswordSecurityMode; // password security mode to use, if requested by server: none, MD4, or MD5; both MD4 and MD5 are automatic if needed. Values are defined in FVSDK_Session.h [FVSDK_PASSWORD_MD5]
USHORT nSecurityType; // No Security, SSL Explicit (AUTH SSL command is sent), SSL Implicit, TLS Explicit (AUTH TLS command is sent), or SFTP Using SSH2; constants found in FVSDK_Session.h [FVSDK_ST_REGULAR]
BOOL bConnectionSaver; // enable blocking on file transfers, uses a single connection instead of two to transfer a file [TRUE]
BOOL bSupportsResume; // FALSE to disable checking for resume support on the server [TRUE]
BOOL bSupportsFEAT; // FALSE to disable the use of the FEAT command; some servers disconnect when an unrecognized command is sent [TRUE]
BOOL bUseSimpleListings; // force use of NLST instead of LIST or MLST / MLSD [FALSE]
BOOL bClearCommandChannel; // send the CCC command after starting SSL; the data channel remains encrypted [FALSE]
BOOL bClearDataChannel; // use a clear, unencrypted data channel when using SSL [FALSE]
BOOL bUseMLST; // use MLST / MLSD instead of LIST when the server supports these commands [TRUE]
BOOL bDisplayErrors; // display transfer errors that may occur [FALSE]
BOOL bLoginOnly; // login without attempting to discover information about the server. When TRUE, FEAT, SYST, CWD, PWD, etc. will not be sent to the server after connecting. Setting to TRUE will cause the bSupportsResume and bSupportsFEAT values to be ignored. [FALSE]
// filtering options
LPCTSTR pszInclFilter; // NULL for none, set to a comma separated string for include filtering (i.e., "*.exe,*.txt,*.htm,*.html") [NULL]
LPCTSTR pszExclFilter; // NULL for none, set to a comma separated string for exclude filtering (i.e., "_vti*,*.tmp,*.temp,*.bin") [NULL]
BOOL bFilterIncludeFolders; // include folders when applying filters [TRUE]
BOOL bFilterApplyToUploads; // apply filters to uploads [TRUE]
BOOL bFilterApplyToDownloads; // apply filters to downloads [TRUE]
BOOL bFilterApplyToServerToServer; // apply filters to server-to-server transfers [TRUE]
BOOL bFilterApplyToSyncFolders; // apply filters to Synchronize Folders [TRUE]
// get and put file tries
UINT nGetFileTries; // the number of attempts to make when downloading a file [1]
UINT nPutFileTries; // the number of attempts to make when uploading a file [1]
// XCRC
BOOL bCheckXCRC; // use the XCRC command to verify the contents of a transferred file [TRUE]
// transfer rate
BOOL bLimitUploadRate; // limit the upload rate to dUploadRate [FALSE]
BOOL bLimitDownloadRate; // limit the download rate to dDownloadRate [FALSE]
double dUploadRate; // limit upload transfers to this value (KB/sec) [10]
double dDownloadRate; // limit download transfers to this value (KB/sec) [10]
// compression
USHORT nCompressionMode; // compression mode, as found in FVSDK_Session.h [FVSDK_DSCMP_AUTOMATIC]
USHORT nZlibCompressionLevel; // 1 - 9. 1 is least compression and lowest CPU cycles; 9 is the highest compression but more CPU cycles [6]
// auto rename settings
BOOL bUploadAutoRename; // automatically rename files matching ppszUploadRenames on upload [FALSE]
LPCTSTR* ppszUploadRenames; // NULL terminated array of strings for auto rename on upload [NULL]
BOOL bDownloadAutoRename; // automatically rename files matching ppszDownloadRenames on download [FALSE]
LPCTSTR* ppszDownloadRenames; // NULL terminated array of strings for auto rename on download [NULL]
// cleanup temp files
BOOL bCleanupTempFiles; // delete files downloaded to temporary directory when finished editing [TRUE]
// set the list parameter
LPCTSTR pszListParameter; // extra parameters to use with LIST command, such as "-al" and "-alT" [NULL]
// GMT conversion
int nMinuteOffsetGMT; // minutes to offset from GMT [0]
UINT nAdjustServerTimeGMT; // automatically adjust dates and times from GMT, see constants found in FVSDK_Session.h for possible values [FVSDK_GMT_ADJUST_AUTO]
// VMS and MVS special flags
BOOL bSkipVMSVersions; // remove VMS version numbers from the end of file names [TRUE]
BOOL bStripMVSExtensions; // remove MVS extensions from file names [TRUE]
// profile name, used by FTP Voyager for fully qualified site profiles
LPCTSTR pszProfileName; // NULL terminated string representing a "profile name" like FTP Voyager uses for Site Profiles, this is descriptive only [NULL]
// set the connection settings
DWORD dwConnectionTimeout; // time, in milliseconds, to wait before timing out a connection attempt [60 * 1000]
DWORD dwConnectionRetries; // the number of times to reconnect upon a command failure [2]
UINT nConnectionAttempts; // the number of times to retry the initial connection [3]
DWORD dwReceiveTimeout; // time, in milliseconds, to wait on a request to receive data before cancelling the request [60 * 1000]
DWORD dwSendTimeout; // time, in milliseconds, to wait on a request to send data before cancelling the request [60 * 1000]
BOOL bKeepAlive; // enable keep alive functionality [TRUE]
DWORD dwKeepAliveIdleTime; // time, in seconds, between issuing keep alive commands [30]
DWORD dwConnectionDelay; // time, in milliseconds, to wait between reconnect attempts (connection throttling) [5 * 1000]
// transfer dialog and animations played in pop-up transfer dialogs
BOOL bShowTransferDialogs; // show pop-up transfer dialogs while transferring files [FALSE]
BOOL bShowTransferAnimations; // enable transfer animations [TRUE]
LPCTSTR pszSingleUploadAnimationFile; // NULL for none, or a pointer to a string containing the full path to the .AVI file [NULL]
LPCTSTR pszSingleDownloadAnimationFile; // NULL for none, or a pointer to a string containing the full path to the .AVI file [NULL]
LPCTSTR pszMultipleUploadAnimationFile; // NULL for none, or a pointer to a string containing the full path to the .AVI file [NULL]
LPCTSTR pszMultipleDownloadAnimationFile; // NULL for none, or a pointer to a string containing the full path to the .AVI file [NULL]
// WAV files to play for connection and transfer completion, must be NULL or the full path to the .WAV file
LPCTSTR pszConnectSoundFile; // NULL for none, full path name to a .WAV file to play when done connecting to a site [NULL]
LPCTSTR pszTransferCompleteSoundFile; // NULL for none, full path name to a .WAV file to play when done transferring a file [NULL]
LPCTSTR pszTextFileExtensions; // NULL for none, comma separated string of text file extensions used for AUTO ASCII mode, see defaults found in FVSDK_Session.h [DEFAULT_TEXT_FILES]
// access type
UINT nAccessType; // proxy server to use for connecting, see nAccessType constants found in FVSDK_Session.h [FVSDK_AT_DIRECT]
LPCTSTR pszProxyName; // pointer to the proxy name or IP address, must resolve to an IP address [NULL]
LPCTSTR pszProxyUserID; // NULL if no user ID is required by the proxy, otherwise a string containing the proxy server user ID [NULL]
UINT nProxyPort; // the proxy server port number, defaults: SOCKS is 1080, user@... is 21, etc. [21]
LPCTSTR pszProxyPassword; // NULL if no password is required by the proxy, otherwise a string containing the proxy server password [NULL]
char chUserAtDelim; // usually '@', representing the user @ proxy server type ['@']
// confirmations
BOOL bConfirmUploadOverwrite; // enable upload confirmation messages when overwriting an existing file on the server [TRUE]
BOOL bConfirmDownloadOverwrite; // enable download confirmation messages when overwriting an existing local file [TRUE]
BOOL bConfirmAutoUploadOverwrite; // enable upload confirmation messages when overwriting a file when automatically uploading a file using online editing [TRUE]
BOOL bConfirmFileDelete; // enable confirmation messages when attempting to delete a file [TRUE]
BOOL bConfirmFolderDelete; // enable confirmation messages when attempting to delete a folder and its contents [TRUE]
BOOL bConfirmFolderShortCutDelete; // enable confirmation messages when attempting to delete a folder short cut [TRUE]
BOOL bUploadNewerOnly; // upload newer local files only (i.e., when uploading in batch) [FALSE]
BOOL bDownloadNewerOnly; // download newer remote files only (i.e., when downloading in batch) [FALSE]
BOOL bUsePwdForKeepAlive; // use PWD in addition to NOOP when issuing keep alive commands [FALSE]
// login information
LPCTSTR pszServer; // either a resolvable server name or IP address [NULL]
UINT nPort; // the port number of the server, normally 21 for standard FTP, 990 for Implicit SSL, 22 for SFTP using SSH2 [21]
LPCTSTR pszUserID; // user ID to use when logging in, NULL for none [anonymous]
LPCTSTR pszPassword; // password to use when logging in, NULL for none [NULL]
LPCTSTR pszDefaultDirectory; // the default "initial" directory, NULL for none [NULL]
LPCTSTR pszAccount; // NULL for none, string containing an account name for login to a server [NULL]
// anonymous password
LPCTSTR pszAnonymousPassword; // NULL for the default, or a string containing a password to use when logging in anonymously [NULL]
// show raw directory listings as part of the log?
BOOL bShowRawListings; // return raw directory listings with the server's response [FALSE]
// SSL settings
LPCTSTR pszSSLCertPath; // NULL for none, or the full path to the certificate file [NULL]
LPCTSTR pszSSLPrivateKeyPath; // NULL for none, or the full path to the private key file [NULL]
LPCTSTR pszSSLCertPassword; // NULL for none, or the specified certificate's password [NULL]
// SSH settings, contact RhinoSoft.com for SSH support
BOOL bSSHUsePasswordAuth; // use password authentication with SSH [FALSE]
BOOL bSSHUsePublicKeyAuth; // use public key authentication with SSH [FALSE]
BOOL bSSHUseCompression; // use compression with SSH [TRUE]
LPCTSTR pszSSHPrivateKeyPassword; // NULL for none, or the password for the private key [NULL]
LPCTSTR pszSSHPrivateKeyFile; // NULL for none, or the path to the private key file [NULL]
// port ranges
BOOL bUsePortRange; // use only the ports starting with dwPortRangeStart through dwPortRangeEnd for PORT commands [FALSE]
DWORD dwPortRangeStart; // when bUsePortRange is TRUE, the starting port range to use [2000]
DWORD dwPortRangeEnd; // when bUsePortRange is TRUE, the starting port range to use [2050]
LPCTSTR pszPublicIPName; // NULL for none, or the public IP address or domain name to use when providing the IP address with the PORT command [NULL]
// Dial on Demand (DOD)
LPCTSTR pszDodEntry; // the DOD entry to use when dialing [NULL]
LPCTSTR pszDodUserID; // the user ID to use when dialing [NULL]
LPCTSTR pszDodPassword; // the password to use when dialing [NULL]
LPCTSTR pszDodDomain; // the NT domain to connect to when dialing, NULL for none [NULL]
UINT nDodTries; // the number of times to try to successfully connect using DOD [1]
LPCTSTR pszDodCallBackNumber; // the phone number to use for callbacks [NULL]
// FTP Voyager Add-On support
BOOL bUseAddOns; // use the add-ons defined in ppszAddOns [FALSE]
LPCTSTR* ppszAddOns; // NULL terminated array of strings (full paths to an add-on DLL) [NULL]
// The following are callback function pointers and their associated
// data pointer that is passed back to the callback function.
// The data pointer is used to help identify the context of the
// callback. The data pointer can be a pointer or other data
// that can help identify the session making the call.
// log information callback functions
FVSDK_LOG_TEXT_FUNC pfnLogText; // callback function to use for logging commands, responses, status, and errors; see types listed in FVSDK_Session.h
FVSDK_CALLBACK_DATA pvLogTextData;
// password callbacks
FVSDK_ASKPASS_FUNC pfnAskPassword; // callback function when server asks for a password; return TRUE and set pszBuffer to the password, FALSE to terminate the connection
FVSDK_CALLBACK_DATA pvAskPasswordData;
FVSDK_ASKPASSC_FUNC pfnAskChangePassword; // callback function when server asks for a password to be changed; return TRUE and set pszBuffer to the new password, FALSE to terminate the connection
FVSDK_CALLBACK_DATA pvAskChangePasswordData;
FVSDK_PASSCHG_FUNC pfnPasswordChanged; // callback function when the password has been changed for the user ID on the server
FVSDK_CALLBACK_DATA pvPasswordChangedData;
// file transfer callbacks
FVSDK_FLUP_REN_FUNC pfnUploadFileRename; // callback function used when a file has been renamed after upload; the original and new file names are passed as paramters
FVSDK_CALLBACK_DATA pvUploadFileRenameData;
FVSDK_FLUP_FUNC pfnFileUploaded; // callback function used when a file has been uploaded using FVSDK_Upload(); both the source and destination paths are the parameters
FVSDK_CALLBACK_DATA pvFileUploadedData;
FVSDK_FLDOWN_FUNC pfnFileDownloaded; // callback function used when a file has been downloaded using FVSDK_Download(); both the source and destination paths are the parameters
FVSDK_CALLBACK_DATA pvFileDownloadedData;
FVSDK_FLDNERR_FUNC pfnDownloadError; // callback function used when a download error occurs using FVSDK_Download(); errors defined in FtpTreeErrors.h
FVSDK_CALLBACK_DATA pvDownloadErrorData;
FVSDK_FLUPERR_FUNC pfnUploadError; // callback function used when an upload error occurs using FVSDK_Upload(); errors defined in FtpTreeErrors.h
FVSDK_CALLBACK_DATA pvUploadErrorData;
// creation / deletion / change callbacks
FVSDK_LCDIRCR_FUNC pfnLocalDirCreated; // callback function used when a local directory has been created
FVSDK_CALLBACK_DATA pvLocalDirCreatedData;
FVSDK_LCDIRDL_FUNC pfnLocalDeleted; // callback function used when a local file or directory is deleted
FVSDK_CALLBACK_DATA pvLocalDeletedData;
FVSDK_LCFLCHG_FUNC pfnLocalFileChanged; // callback function used when a local file is changed
FVSDK_CALLBACK_DATA pvLocalFileChangedData;
FVSDK_RMDIRCR_FUNC pfnRemoteDirectoryCreated; // callback function used when a remote directory is created; the parameter is the full path to the remote directory
FVSDK_CALLBACK_DATA pvRemoteDirectoryCreatedData;
FVSDK_RMDIRDEL_FUNC pfnRemoteDirectoryDeleted; // callback function used when a remote directory is deleted; the parameter is the full path to the remote directory
FVSDK_CALLBACK_DATA pvRemoteDirectoryDeletedData;
FVSDK_RMFILEDL_FUNC pfnRemoteFileDeleted; // callback function used when a remote file is deleted; the parameter is the full path to the remote file
FVSDK_CALLBACK_DATA pvRemoteFileDeletedData;
// help callbacks
FVSDK_HELP_FUNC pfnHelpButtonPressed; // callback function used when the user presses the help button in an FVSDK dialog (Sync Folders, Find Files, or Online Edit)
FVSDK_CALLBACK_DATA pvHelpButtonPressedData;
// transfer status callback
FVSDK_TRANSTAT_FUNC pfnNotifyTransferStatus; // callback function used when the transfer status changes; see FVSDK_TransferStatus.h for more information
FVSDK_CALLBACK_DATA pvNotifyTransferStatusData;
} FVSDK_Session;
/*** END FVSDK_Session ***/
// restore structure packing
#pragma pack(pop)
/////////////////////////////////////////////////////////////////////////////
#endif