nanoftp

nanoftp - minimal FTP implementation

minimal FTP implementation allowing to fetch resources like external subset. This module is DEPRECATED, do not use any of its functions.

WARNING: this module is deprecated !

Author(s): Daniel Veillard

Synopsis

#define INVALID_SOCKET;
#define SOCKET;
typedef void ftpDataCallback			(void * userData, 
const char * data,
int len); typedef void ftpListCallback (void * userData,
const char * filename,
const char * attrib,
const char * owner,
const char * group,
unsigned long size,
int links,
int year,
const char * month,
int day,
int hour,
int minute); int xmlNanoFTPCheckResponse (void * ctx); void xmlNanoFTPCleanup (void); int xmlNanoFTPClose (void * ctx); int xmlNanoFTPCloseConnection (void * ctx); int xmlNanoFTPConnect (void * ctx); void * xmlNanoFTPConnectTo (const char * server,
int port); int xmlNanoFTPCwd (void * ctx,
const char * directory); int xmlNanoFTPDele (void * ctx,
const char * file); void xmlNanoFTPFreeCtxt (void * ctx); int xmlNanoFTPGet (void * ctx,
ftpDataCallback callback,
void * userData,
const char * filename); SOCKET xmlNanoFTPGetConnection (void * ctx); int xmlNanoFTPGetResponse (void * ctx); SOCKET xmlNanoFTPGetSocket (void * ctx,
const char * filename); void xmlNanoFTPInit (void); int xmlNanoFTPList (void * ctx,
ftpListCallback callback,
void * userData,
const char * filename); void * xmlNanoFTPNewCtxt (const char * URL); void * xmlNanoFTPOpen (const char * URL); void xmlNanoFTPProxy (const char * host,
int port,
const char * user,
const char * passwd,
int type); int xmlNanoFTPQuit (void * ctx); int xmlNanoFTPRead (void * ctx,
void * dest,
int len); void xmlNanoFTPScanProxy (const char * URL); int xmlNanoFTPUpdateURL (void * ctx,
const char * URL);

Description

Details

Macro INVALID_SOCKET

#define INVALID_SOCKET;

macro used to provide portability of code to windows sockets the value to be used when the socket is not valid


Macro SOCKET

#define SOCKET;

macro used to provide portability of code to windows sockets


Function type ftpDataCallback

void	ftpDataCallback			(void * userData, 
const char * data,
int len)

A callback for the xmlNanoFTPGet command.

userData: the user provided context
data: the data received
len: its size in bytes

Function type ftpListCallback

void	ftpListCallback			(void * userData, 
const char * filename,
const char * attrib,
const char * owner,
const char * group,
unsigned long size,
int links,
int year,
const char * month,
int day,
int hour,
int minute)

A callback for the xmlNanoFTPList command. Note that only one of year and day:minute are specified.

userData: user provided data for the callback
filename: the file name (including "->" when links are shown)
attrib: the attribute string
owner: the owner string
group: the group string
size: the file size
links: the link count
year: the year
month: the month
day: the day
hour: the hour
minute: the minute

xmlNanoFTPCheckResponse ()

int	xmlNanoFTPCheckResponse		(void * ctx)

Check if there is a response from the FTP server after a command.

ctx: an FTP context
Returns: the code number, or 0

xmlNanoFTPCleanup ()

void	xmlNanoFTPCleanup		(void)

Cleanup the FTP protocol layer. This cleanup proxy information.


xmlNanoFTPClose ()

int	xmlNanoFTPClose			(void * ctx)

Close the connection and both control and transport

ctx: an FTP context
Returns: -1 in case of error, 0 otherwise

xmlNanoFTPCloseConnection ()

int	xmlNanoFTPCloseConnection	(void * ctx)

Close the data connection from the server

ctx: an FTP context
Returns: -1 in case of error, 0 otherwise

xmlNanoFTPConnect ()

int	xmlNanoFTPConnect		(void * ctx)

Tries to open a control connection

ctx: an FTP context
Returns: -1 in case of error, 0 otherwise

xmlNanoFTPConnectTo ()

void *	xmlNanoFTPConnectTo		(const char * server, 
int port)

Tries to open a control connection to the given server/port

server: an FTP server name
port: the port (use 21 if 0)
Returns: an fTP context or NULL if it failed

xmlNanoFTPCwd ()

int	xmlNanoFTPCwd			(void * ctx, 
const char * directory)

Tries to change the remote directory

ctx: an FTP context
directory: a directory on the server
Returns: -1 in case of error, 1 if CWD worked, 0 if it failed

xmlNanoFTPDele ()

int	xmlNanoFTPDele			(void * ctx, 
const char * file)

Tries to delete an item (file or directory) from server

ctx: an FTP context
file: a file or directory on the server
Returns: -1 in case of error, 1 if DELE worked, 0 if it failed

xmlNanoFTPFreeCtxt ()

void	xmlNanoFTPFreeCtxt		(void * ctx)

Frees the context after closing the connection.

ctx: an FTP context

xmlNanoFTPGet ()

int	xmlNanoFTPGet			(void * ctx, 
ftpDataCallback callback,
void * userData,
const char * filename)

Fetch the given file from the server. All data are passed back in the callbacks. The last callback has a size of 0 block.

ctx: an FTP context
callback: the user callback
userData: the user callback data
filename: the file to retrieve
Returns: -1 in case of error, 0 otherwise

xmlNanoFTPGetConnection ()

SOCKET	xmlNanoFTPGetConnection		(void * ctx)

Try to open a data connection to the server. Currently only passive mode is supported.

ctx: an FTP context
Returns: -1 in case of error, 0 otherwise

xmlNanoFTPGetResponse ()

int	xmlNanoFTPGetResponse		(void * ctx)

Get the response from the FTP server after a command.

ctx: an FTP context
Returns: the code number

xmlNanoFTPGetSocket ()

SOCKET	xmlNanoFTPGetSocket		(void * ctx, 
const char * filename)

Initiate fetch of the given file from the server.

ctx: an FTP context
filename: the file to retrieve (or NULL if path is in context).
Returns: the socket for the data connection, or <0 in case of error

xmlNanoFTPInit ()

void	xmlNanoFTPInit			(void)

Initialize the FTP protocol layer. Currently it just checks for proxy information, and get the hostname


xmlNanoFTPList ()

int	xmlNanoFTPList			(void * ctx, 
ftpListCallback callback,
void * userData,
const char * filename)

Do a listing on the server. All files info are passed back in the callbacks.

ctx: an FTP context
callback: the user callback
userData: the user callback data
filename: optional files to list
Returns: -1 in case of error, 0 otherwise

xmlNanoFTPNewCtxt ()

void *	xmlNanoFTPNewCtxt		(const char * URL)

Allocate and initialize a new FTP context.

URL: The URL used to initialize the context
Returns: an FTP context or NULL in case of error.

xmlNanoFTPOpen ()

void *	xmlNanoFTPOpen			(const char * URL)

Start to fetch the given ftp:// resource

URL: the URL to the resource
Returns: an FTP context, or NULL

xmlNanoFTPProxy ()

void	xmlNanoFTPProxy			(const char * host, 
int port,
const char * user,
const char * passwd,
int type)

Setup the FTP proxy information. This can also be done by using ftp_proxy ftp_proxy_user and ftp_proxy_password environment variables.

host: the proxy host name
port: the proxy port
user: the proxy user name
passwd: the proxy password
type: the type of proxy 1 for using SITE, 2 for USER a@b

xmlNanoFTPQuit ()

int	xmlNanoFTPQuit			(void * ctx)

Send a QUIT command to the server

ctx: an FTP context
Returns: -1 in case of error, 0 otherwise

xmlNanoFTPRead ()

int	xmlNanoFTPRead			(void * ctx, 
void * dest,
int len)

This function tries to read @len bytes from the existing FTP connection and saves them in @dest. This is a blocking call.

ctx: the FTP context
dest: a buffer
len: the buffer length
Returns: the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.

xmlNanoFTPScanProxy ()

void	xmlNanoFTPScanProxy		(const char * URL)

(Re)Initialize the FTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like ftp://myproxy/ or ftp://myproxy:3128/ A NULL URL cleans up proxy information.

URL: The proxy URL used to initialize the proxy context

xmlNanoFTPUpdateURL ()

int	xmlNanoFTPUpdateURL		(void * ctx, 
const char * URL)

Update an FTP context by parsing the URL and finding new path it indicates. If there is an error in the protocol, hostname, port or other information, the error is raised. It indicates a new connection has to be established.

ctx: an FTP context
URL: The URL used to update the context
Returns: 0 if Ok, -1 in case of error (other host).