NAME

       ftpd - Tcl FTP server implementation


SYNOPSIS

       package require ftpd ?1.1?

       ::ftpd::server ?myaddr?

       ::ftpd::config ?option value? ?option value ...?

_________________________________________________________________


DESCRIPTION

       The ftpd package provides a simple Tcl-only server library
       for the FTP protocol.  It works by listening on the  stan­
       dard 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.


COMMANDS

       ::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 proc to call as  the  call­
              back.   The  option specifies which callback should
              be  configured.   See  the  CALLBACKS  section  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.

                     Callback for log  information  generated  by
                     the FTP engine.

              -fsCmd proc
                     Callback   to  connect  the  engine  to  the
                     filesystem it operates on.

       CALLBACKS

       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 cur­
              rently 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  permis­
              sions 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:

              append <path>
                     The  append subcommand receives the filename
                     to append to as its argument. It  returns  a
                     writable tcl channel as its return value.

              delete <path> <channel-to-write-to>
                     The  delete subcommand receives the filename
                     to delete, and a channel to write to as  its
                     two   arguments.    The  file  specified  is

                     written to the channel that is passed as the
                     second  argument.   The  delete   subcommand
                     returns nothing.

              dlist <path> <style> <channel-to-write-dir-list-to>
                     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.

              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.

              mkdir <path> <channel-to-write-to>
                     The mkdir subcommand receives the path of  a
                     directory  to  create and a channel to write
                     to as its two arguments.  The mkdir  subcom­
                     mand creates the specified directory if nec­
                     essary and possible.  The  mkdir  subcommand
                     then prints the appropriate success or fail­
                     ure message to the channel.  The mkdir  sub­
                     command returns nothing.

              mtime <path> <channel-to-write-mtime-to>
                     The  mtime subcommand receives the path of a
                     file to check the modify time on and a chan­
                     nel  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 subcom­
                     mand returns nothing.

              permissions <path>
                     The permissions subcommand receives the path
                     of  a  file  to retrieve the permissions of.

                     file permissions of the specified file.  The
                     file is expected to exist.

              rename <path> <newpath> <channel-to-write-to>
                     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.

              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.

              rmdir <path> <channel-to-write-to>
                     The rmdir subcommand receives the path of  a
                     directory  to  remove and a channel to write
                     to as its two arguments.  The rmdir  subcom­
                     mand  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 noth­
                     ing.

              size <path> <channel-to-write-size-to>
                     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  speci­
                     fied  path is a file, otherwise an appropri­
                     ate error code and message  are  printed  to
                     the  channel.   The  size subcommand returns
                     nothing.

              store <path>
                     The store subcommand receives the path of  a
                     file  to  write  as  its only argument.  The
                     store subcommand returns a writable channel.

       VARIABLES

       ::ftpd::cwd
              The  current  working  directory for a session when

              ftp command is received.

       ::ftpd::contact
              The  e-mail  address of the person that is the con­
              tact for the ftp server.  This address  is  printed
              out  as  part  of the response to the FTP HELP com­
              mand.

       ::ftpd::port
              The port that the ftp server should listen on.

       ::ftpd::welcome
              The message that is printed out when the user first
              connects to the ftp server.

       KEYWORDS
              ftpd, ftp, ftpserver, services, RFC 959


Man(1) output converted with man2html