|
ActiveTcl User Guide
|
|
|
[ Main table Of Contents | Tcllib Table Of Contents | Tcllib Index ]
ftpd(n) 1.1.3 "Tcl FTP Server Package"
ftpd - Tcl FTP server implementation
package require Tcl 8.3
package require ftpd ?1.1.3?
The ftpd package provides a simple Tcl-only
server library for the FTP protocol as specified in RFC 959 (http://www.rfc-editor.org/rfc/rfc959.txt).
It works by listening on the standard FTP socket. Most server
errors are returned as error messages with the appropriate code
attached to them. Since the server code for the ftp daemon is
executed in the event loop, it is possible that a bgerror will be thrown on the server if there are
problems with the code in the module.
- ::ftpd::server ?myaddr?
- Open a listening socket to listen to and accept ftp
connections. myaddr is an optional argument. myaddr is the domain-style name or numerical IP address
of the client-side network interface to use for the connection.
- ::ftpd::config ?option value? ?option value
...?
- The value is always the name of the command to call as the
callback. The option specifies which callback should be configured.
See section CALLBACKS for descriptions of
the arguments and return values for each of the callbacks.
- -authIpCmd proc
- Callback to authenticate new connections based on the
ip-address of the peer.
- -authUsrCmd proc
- Callback to authenticate new connections based on the user
logging in (and the users password).
- -authFileCmd proc
- Callback to accept or deny a users access to read and write to
a specific path or file.
- -logCmd proc
- Callback for log information generated by the FTP engine.
- -fsCmd proc
- Callback to connect the engine to the filesystem it operates
on.
- authIpCmd callback
- ] The authIpCmd receives the ip-address of the peer attempting
to connect to the ftp server as its argument. It returns a 1 to
allow users from the specified IP to attempt to login and a 0 to
reject the login attempt from the specified IP.
- authUsrCmd callback
- ] The authUsrCmd receives the username and password as its two
arguments. It returns a 1 to accept the attempted login to the ftpd
and a 0 to reject the attempted login.
- authFileCmd callback
- ] The authFileCmd receives the user (that is currently logged
in), the path or filename that is about to be read or written, and
read or write as its three
arguments. It returns a 1 to allow the path or filename to be read
or written, and a 0 to reject the attempted read or write with a
permissions error code.
- logCmd callback
- ] The logCmd receives a severity and a message as its two
arguments. The severities used within the ftpd package are
note, debug, and
error. The logCmd doesn't return anything.
- fsCmd callback
- ] The fsCmd receives a subcommand, a filename or path, and
optional additional arguments (depending on the subcommand).
The subcommands supported by the fsCmd are:
- fsCmd append path
- The append subcommand receives the filename to append to as its
argument. It returns a writable tcl channel as its return
value.
- fsCmd delete path channel
- The delete subcommand receives the filename to delete, and a
channel to write to as its two arguments. The file specified is
deleted and the appropriate ftp message is written to the channel
that is passed as the second argument. The delete subcommand
returns nothing.
- fsCmd dlist path style channel
- The dlist subcommand receives the path that it should list the
files that are in, the style in which the files should be listed
which is either nlst or list, and
a channel to write to as its three arguments. The files in the
specified path are printed to the specified channel one per line.
If the style is nlst only the name of the file is
printed to the channel. If the style is list then
the file permissions, number of links to the file, the name of the
user that owns the file, the name of the group that owns the file,
the size (in bytes) of the file, the modify time of the file, and
the filename are printed out to the channel in a formatted space
separated format. The dlist subcommand returns
nothing.
- fsCmd exists path
- The exists subcommand receives the name of a file to check the
existence of as its only argument. The exists subcommand returns a
1 if the path specified exists and the path is not a directory.
- fsCmd mkdir path channel
- The mkdir subcommand receives the path of a directory to create
and a channel to write to as its two arguments. The mkdir
subcommand creates the specified directory if necessary and
possible. The mkdir subcommand then prints the appropriate success
or failure message to the channel. The mkdir subcommand returns
nothing.
- fsCmd mtime path channel
- The mtime subcommand receives the path of a file to check the
modify time on and a channel as its two arguments. If the file
exists the mtime is printed to the channel in the proper FTP
format, otherwise an appropriate error message and code are printed
to the channel. The mtime subcommand returns nothing.
- fsCmd
permissions path
- The permissions subcommand receives the path of a file to
retrieve the permissions of. The permissions subcommand returns the
octal file permissions of the specified file. The file is expected
to exist.
- fsCmd rename
path newpath channel
- The rename subcommand receives the path of the current file,
the new file path, and a channel to write to as its three
arguments. The rename subcommand renames the current file to the
new file path if the path to the new file exists, and then prints
out the appropriate message to the channel. If the new file path
doesn't exist the appropriate error message is printed to the
channel. The rename subcommand returns nothing.
- fsCmd retr path
- The retr subcommand receives the path of a file to read as its
only argument. The retr subcommand returns a readable channel that
the specified file can be read from.
- fsCmd rmdir path channel
- The rmdir subcommand receives the path of a directory to remove
and a channel to write to as its two arguments. The rmdir
subcommand removes the specified directory (if possible) and prints
the appropriate message to the channel (which may be an error if
the specified directory does not exist or is not empty). The rmdir
subcommand returns nothing.
- fsCmd size path channel
- The size subcommand receives the path of a file to get the size
(in bytes) of and a channel to write to as its two arguments. The
size subcommand prints the appropriate code and the size of the
file if the specified path is a file, otherwise an appropriate
error code and message are printed to the channel. The size
subcommand returns nothing.
- fsCmd store path
- The store subcommand receives the path of a file to write as
its only argument. The store subcommand returns a writable
channel.
- ::ftpd::cwd
- The current working directory for a session when someone first
connects to the FTPD or when the REIN ftp
command is received.
- ::ftpd::contact
- The e-mail address of the person that is the contact for the
ftp server. This address is printed out as part of the response to
the FTP HELP command.
- ::ftpd::port
- The port that the ftp server should listen on. If port is
specified as zero, the operating system will allocate an unused
port for use as a server socket; afterwards, the variable will
contain the port number that was allocated.
- ::ftpd::welcome
- The message that is printed out when the user first connects to
the ftp server.
ftp , ftpd , ftpserver , rfc 959 , services