Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
uftpd(1)		     General Commands Manual			uftpd(1)

NAME
     uftpd - Encrypted UDP based ftp with multicast - client daemon

SYNOPSIS
     uftpd [ -d ] [ -p port ] [ -B buf_size ]
	 [ -E ] [ -Q dscp ] [ -U UID ] [ -x log_level ] [ -t ]
	 [ -T temp_dir ] [ -D dest_dir[,dest_dir... ]]
	 [ -A backup_dir[,backup_dir... ]] [ -L logfile ]
	 [ -F status_file ] [ -q ] [ -P pidfile ] [ -o ]
	 [ -S serverlist_file ] [ -R proxylist_file ]
	 [ -r v4proxy[/fp] ] [ -c cache_size ]
	 [ -k keyfile ] [ -K rsa:key_len | ec:curve ]
	 [ -m ] [ -N priority ] [ -i ] [ -s postreceive_script ]
	 [ -g max_log_size ] [ -n max_log_count ]
	 [ -H hb_server[:port][,hb_server[:port]...] ]
	 [ -h hb_interval ] [ -I interface[,interface...] ]
	 [ -M pub_mcast_addr[,pub_mcast_addr...] ]

DESCRIPTION
     uftpd  is	the  client daemon of the UFTP suite.  It listens on one or more
     multicast addresses to receive files from servers.

     This version of the client supports servers and proxies  running  UFTP  4.x
     and 5.x.

OPTIONS
     The following options are supported:

     -d     Enable  debug  mode.  The process will run in the foreground and all
	    output will go to stderr.  If specified, the -L option is ignored.

     -p port
	    The UDP port number to listen on.  Default is 1044.

     -U UID
	    The unique ID for this client, specified as an 8  digit  hexadecimal
	    number  (0xnnnnnnnn).   The default value is based on the IP address
	    of the first listed multicast capable interface on the  system.   If
	    this  address  is  IPv4, the UID is the address.  If it is IPv6, the
	    UID is the last 4 bytes of the address.

     -B buf_size
	    The size in bytes of the UDP receive buffer to  use.   Valid  values
	    are 65536-104857600 (64KB-100MB).  Defaults to 262144.

     -E     Only  allow  incoming sessions if encryption is enabled.  Default is
	    to allow both encrypted and unencrypted sessions.

     -Q dscp
	    Specifies the Differentiated Services Code	Point  (DSCP),	formerly
	    Type  of  Service  (TOS), in the IP header for all outgoing packets.
	    Valid values are 0-63 and may be  specified  in  either  decimal  or
	    hexadecimal.  Default is 0.

	    Not currently supported on Windows.

     -x log_level
	    Specifies current logging level.  Valid values are 0-5, with 0 being
	    the least verbose and 5 being the most verbose.  Default is 2, which
	    is consistent with logging prior to version 3.5.

     -t     Receive each file into a temp file in the same directory as the des-
	    tination   file.	The   temp   file  will  have  an  extension  of
	    .~uftp-{group-id}-{file-id}, where {group-id} and {file-id} are  the
	    group ID of the current session and file ID of the current file.  If
	    -A	is also specified, the existing destination file is not moved to
	    backup directory until after the file is fully received.

     -T temp_dir
	    Temp directory in which files are received, then moved  to	dest_dir
	    when  the  session	is complete.  If omitted, files are received di-
	    rectly into dest_dir.  Must reside on the  same  filesystem  as  the
	    destination directory.

	    The  -T  option  MUST  be  specified to allow the client to save the
	    state of failed file transfers that can be resumed later.

	    Not compatible -A or -t.  Not compatible with -D when multiple  des-
	    tination  directories are specified.  Also, if this option is speci-
	    fied, no incoming files with an absolute path will be accepted,  and
	    sync  mode will not work properly since there is no existing file to
	    check.

	    IMPORTANT: When full directories are received, the entire  directory
	    is moved at once to the destination directory, removing any existing
	    file/directory.   This  means  that  if  an  existing  directory  in
	    dest_dir is the same name as a directory received into temp_dir, all
	    files under the existing directory are deleted.  The -i option  pre-
	    vents this by moving all files individually.

     -D dest_dir[,dest_dir...]
	    Destination  directories  for  all received files.	When an incoming
	    file specifies an absolute path, it must match one of  the	destina-
	    tion  directories,	otherwise  the	file will be rejected.	Incoming
	    files that don't specify an absolute path will be received into  the
	    first  destination directory in the list.  Default is /tmp for UNIX-
	    like systems, C:\temp for Windows.

     -A backup_dir[,backup_dir...]
	    Specifies backup directories.  Each backup directory corresponds  to
	    a  destination  directory,	so  the number of each MUST be the same.
	    Existing files that would be overwritten by incoming files are moved
	    to the corresponding backup directory for the  selected  destination
	    directory,	first under timestamped directories, then under the full
	    path of the existing file.

	    For example, if /full/path/to/file would be overwritten, it is moved
	    to {backup_dir}/YYYYMMDD/HHMMSS/full/path/to/file.	 Under	Windows,
	    drive  letters  for  local	files  are  not  part  of  the name, but
	    host/share names for network files are.  So C:\path\to\file would be
	    backed   up   to   {backup_dir}\YYYYMMDD\HHMMSS\path\to\file,    and
	    \\host\share\path\to\file  would be backed up to {backup_dir}\YYYYM-
	    MDD\HHMMSS\host\share\path\to\file.

	    Not compatible with -T.

     -L logfile
	    Specifies the log file.  Default  is  /tmp/uftpd.log  for  UNIX-like
	    systems systems, C:\uftpd_log.txt for Windows.

     -F status_file
	    Prints  easily  parsable status information to a file.  Setting this
	    option to @LOG results in status info being mixed with  normal  log-
	    ging output.

	    The following is printed when the client registers with a server:

	    CONNECT;timestamp;server_id;session_id;server_ip;server_name

	    Where   "timestamp"  is  the  time	in  yyyy/mm/dd-hh:mm:ss  format,
	    "server_id" is the ID of the server, "session_id" is the ID  of  the
	    session  with  the	server,  "server_ip"  is the IP address that the
	    server message came from, and "server_name" is the	name  associated
	    with server_ip.

	    The following is printed after each file:

	    RESULT;timestamp;server_id;session_id;filename;size;status

	    Where   "timestamp"  is  the  time	in  yyyy/mm/dd-hh:mm:ss  format,
	    "server_id" is the ID of the server, "session_id" is the ID  of  the
	    session with the server, "filename" is the name of the current file,
	    "size"  is the size of the file in kilobytes (i.e. 1234KB), and sta-
	    tus is:

	    copy: The file was received.

	    overwrite: The file was received, and overwrote  an  existing  file.
	    Only generated in sync mode.

	    skipped: The file was declined because it is older that the existing
	    file.  Only generated in sync mode.

	    rejected:  The  file was rejected, because the file was sent with an
	    absolute pathname and either the client is using a temp directory or
	    the filename doesn't match one of the client's destination	directo-
	    ries.

     -q     When  the  client  receives an ANNOUNCE from the server, it normally
	    print the hostname associated with the IP address where the ANNOUNCE
	    came from.	Specifying this option prevents  a  DNS  lookup  of  the
	    server IP, saving time.

     -P pidfile
	    The  pidfile to write the daemon's pid to on startup.  Default is no
	    pidfile.

     -o     Enables source  specific  multicast  (SSM)	to  join  all  multicast
	    groups.   Setting this option requires that the public multicast ad-
	    dresses specified by -M are valid SSM addresses, and requires the -S
	    option to specify the IP addresses of server in order  to  join  the
	    relevant  SSM group as well as the -R option if any servers communi-
	    cate through a proxy.  This also requires servers  talking	to  this
	    client  to use a SSM address for the private multicast address, oth-
	    erwise the message will be rejected.

	    Valid SSM addresses are in the 232.0.0.0/8 range for  IPv4	and  the
	    ff30::/96 range for IPv6.

     -S serverlist_file
	    A  file  containing  a list of servers the client will allow to send
	    files to it and the proxy the server communicates through,	if  any.
	    The  file  should  contain	the ID of the server, the IP address the
	    client expects the server's request to come  from,	the  ID  of  the
	    client  or	response  proxy  it  goes  through,  and  optionally the
	    server's public key fingerprint, with one entry for a server on each
	    line.  If a proxy is not used by the server, a value of  0	must  be
	    specified.	 If a key fingerprint is given, the key specified by the
	    server must match the fingerprint.

	    This option is required if the -o option is also specified,  and  is
	    required if any server communicates through a proxy.

	    Example contents:
	    0x11112222|192.168.1.101|0x22223333|66:1E:C9:1D:FC:99:DB:60:B0:1A:F0:8F:CA:F4:28:27:A6:BE:94:BC
	    0x11113333|fe80::213:72ff:fed6:69ca|0

	    If	a particular server is running version 4.x, the file should list
	    the IP and fingerprint of the client proxy instead	of  the  server.
	    In version 4.x mode, the proxy can authenticate the server.

     -R proxylist_file
	    A  file  containing  a list of proxies the client will allow to send
	    files to it.  The file should contain the ID of the  proxy,  the  IP
	    address the client expects the proxy's request to come from, and op-
	    tionally  the  proxy's  public key fingerprint, with one entry for a
	    server on each line.  If a key fingerprint is given, the key  speci-
	    fied by the proxy must match the fingerprint.

	    This option is required if the -o option is specified and any server
	    uses  a  proxy.  Not required otherwise unless proxies are to be au-
	    thenticated.

	    Example contents:
	    0x22223333|192.168.1.102|3E:5D:E7:2B:38:33:FE:1E:B6:DC:83:68:6C:04:D7:3E:03:90:F1:26
	    0x33334444|fe80::213:72ff:fed6:38f3|

     -r v4proxy[/fingerprint]
	    Specifies the name/IP of the response proxy that all responses  from
	    version  4.x  servers are forwarded to.  If fingerprint is given, it
	    specifies the proxy's public key  fingerprint.   Upon  startup,  the
	    client  will  query  the  proxy for its public key, retrying every 5
	    seconds until it gets a successful response.  The client cannot  ac-
	    cept  an encrypted file transfer from a 4.x server until it gets the
	    proxy's key.

     -c cache_size
	    Specifies the size in bytes of the cache used to hold received  data
	    packets  before  they  are	written  to disk.  Proper tuning of this
	    value can greatly increase	efficiency  at	speeds	in  the  gigabit
	    range.   Valid  values  are  10240-20971520 (10KB-20MB).  Default is
	    1048576 (1MB).

     -k keyfile

     -K {rsa:key_len | ec:curve}
	    These two options  are  used  to  read  and/or  write  the	client's
	    RSA/ECDSA private key.

	    The  -K  option  creates  an RSA or ECDSA private key.  New keys are
	    specified as either rsa:key_length, which creates an RSA private key
	    key_length bits wide, or as ec:curve, which creates an EC key  using
	    the curve "curve".

	    The  supported  EC curves are secp256r1 (prime256v1), secp384r1, and
	    secp521r1.

	    If only -K is specified, a key is created and not persisted.

	    If only -k is specified, this option reads an RSA or  ECDSA  private
	    key from the specified keyfile.

	    If -k and -K are both specified, the key created by -K is written to
	    the keyfile listed by -k.

	    If	neither  -k  nor -K are specified, an EC private key using curve
	    secp256r1 is generated and not persisted.

	    The definition of keyfile is dependent on the crypto library UFTP is
	    compiled to use.

	    On Windows systems, UFTP uses CNG (Cryptography  API:  Next  Genera-
	    tion).   Under  CNG, all RSA and EC private keys must be stored in a
	    key container (technically only keys used  to  sign  data,	but  for
	    UFTP's  purposes  this is the case).  Key containers are internal to
	    Windows, and each user (and the system) has its own set of key  con-
	    tainers.   In  this  case,	key_file is actually the name of the key
	    container.

	    All other systems use OpenSSL for the crypto library (although under
	    Windows UFTP can be also  be  built  to  use  it).	 In  this  case,
	    key_file  specifies  a file name where the RSA private key is stored
	    unencrypted in PEM format (the OS is expected to protect this file).
	    When both -k and -K are specified, the file is only written to if it
	    does not currently exist.  If the file does exist, an error  message
	    will  be  returned	and the server will exit.  When -k is not speci-
	    fied, the generated key is not persisted.  These PEM files may  also
	    be manipulated via the openssl(1) command line tool.

	    Keys  can  also be generated and viewed via the uftp keymgt(1) util-
	    ity.

     -m     For Windows systems using CNG, private keys are normally  stored  in
	    the  key  container  of  the  running  user.  Specifying this option
	    stores keys in the system key container.  Useful when running  as  a
	    service.  On non-Windows systems, this option has no effect.

     -N priority
	    Sets  the  process	priority.   On Windows systems, valid values are
	    from -2 to 2, with a default of 0.	These correspond to the  follow-
	    ing priorities:

	    -2 High
	    -1 Above Normal
	     0 Normal
	     1 Below Normal
	     2 Low

	    On	all  other  systems, this is the "nice" value.	Valid values are
	    from -20 to 19, where -20 is the highest priority and 19 is the low-
	    est priority.  Default is 0.

     -i     When -T is specified, directories are normally moved from  the  temp
	    directory  to the destination directory at once, removing all exist-
	    ing files in the that subdirectory within the destination directory.
	    This option causes directories to be traversed so that all	received
	    files  are	moved individually, preventing unwanted deletions.  This
	    also affects the operation of the -s option.  If -T  is  not  speci-
	    fied, this option has no effect.

     -s postreceive_script
	    The  full  path  to  an external command or script to be called when
	    files are received.  The command will be called as follows:

	    postreceive_script -I session_id file [ file... ]

	    Where "session_id" is an 8 hexadecimal digit number identifying  the
	    current  session, and "file" is the full pathname to one or more re-
	    ceived files/directories in the destination directory  specified  by
	    -D.

	    The  way  this script is called depends on whether or not a temp di-
	    rectory is specified by -T, and if -i is specified.  If a  temp  di-
	    rectory  is  not  specified, or if both -T and -i are specified, the
	    script gets called once for each file as soon as  the  file  is  re-
	    ceived.   If a temp directory is specified but -i is not, the script
	    gets called once at the end of the session, and is	passed	all  top
	    level  files/directories  received.  Here, "top level files/directo-
	    ries" refers to all entries in the temp directory for  the	session,
	    but not subdirectories.  So the script would be responsible for tra-
	    versing any listed directories to find files contained within them.

     -g max_log_size
	    Specifies  the  maximum  log  file	size  in  MB.  Once the log file
	    reaches this size, the file is renamed with a .1 extension and a new
	    log file is opened.  For example, if the log file is /tmp/uftpd.log,
	    it will be renamed /tmp/uftpd.log.1 and a new /tmp/uftpd.log will be
	    created.  Ignored if -d is specified.  Valid values are 1-1024.  De-
	    fault is no log rolling.

     -n max_log_count
	    Specifies the maximum number of archive log files to keep  when  log
	    rolling  is  active.   When the log file rolls, archive logs are re-
	    named with an incrementing numerical  extension  until  the  max  is
	    reached.  Archive log files beyond the maximum are deleted.  Ignored
	    if -g is not specified.  Valid values are 1-1000.  Default is 5.

     -H hb_server[:port][,hb_server[:port]...]]
	    Lists one or more proxies to send heartbeat messages to.  When send-
	    ing  a  signed  heartbeat  message, the first key listed under -k is
	    used to sign the message.  If port is  not	specified  for	a  given
	    proxy, the default port of 1044 is assumed.

     -h hb_interval
	    The  time in seconds between sending heartbeat messages.  Ignored if
	    -H is not specified.

     -I interface[,interface...]
	    Lists one or more interfaces to listen to multicast traffic on.  In-
	    terfaces can be specified either by interface name, by hostname,  or
	    by IP.  When receiving a closed group membership request, the client
	    will participate if any of these interfaces matches an IP in the an-
	    nouncement.   When	receiving  an open group membership request, the
	    first interface listed is the one the client will report back to the
	    server.  This may not necessarily be the interface that the ANNOUNCE
	    was received on.  The default is to listen on all  active  non-loop-
	    back  interfaces.  NOTE: Since Windows doesn't have named interfaces
	    (not in the sense that UNIX-like systems do), only hostnames  or  IP
	    addresses are accepted on Windows.	If specifying by hostname or IP,
	    may  be a mixture of IPv4 and IPv6 addresses, except on systems that
	    don't support dual mode sockets such as Windows XP.

     -M pub_mcast_addr[,pub_mcast_addr...]
	    The list of public multicast addresses to listen on.  May be a  mix-
	    ture  of  IPv4 and IPv6 addresses, except on systems that don't sup-
	    port dual mode sockets such as Windows XP.	Default is 230.4.4.1.

EXAMPLES
     Starting with the default options:

	  uftpd

     The client runs as a daemon and listens for announcements on UDP port  1044
     on  multicast address 230.4.4.1 on all non-loopback network interfaces. In-
     coming files are received directly into /tmp (C:\temp on Windows).   An  EC
     key using curve secp256r1 is generated to handle encrypted sessions.

     Suppose you want an external process to handle incoming files in /tmp/dest.
     Since you don't want to pick up incomplete files, you might want them to be
     received  into /tmp/receiving then moved to /tmp/dest when done.  Then call
     the client like this:

	  uftpd -D /tmp/dest -T /tmp/receiving

     If the client expects to receive from different  servers,	one  sending  on
     230.4.4.1 and one sending on ff02:4:4:2:

	  uftpd -M 230.4.4.1,ff02:4:4:2

     If  incoming  packets aren't being read quickly enough, and you want to in-
     crease the UDP receive buffer size to 2 MB:

	  uftpd -B 2097152

EXIT STATUS
     The following exit values are returned:

     0	    The client started successfully and is running in the background.

     1	    An invalid command line parameter was specified.

     2	    An error occurred while attempting	to  initialize	network  connec-
	    tions.

     3	    An	error  occurred  while	reading  or generating cryptographic key
	    data.

     4	    An error occurred while opening or rolling the log file.

     5	    A memory allocation error occurred.

     6	    The client was interrupted by the user.

SEE ALSO
     uftp(1), uftpproxyd(1), uftp_keymgt(1).

NOTES
     The latest version of UFTP can be	found  at  http://uftp-multicast.source-
     forge.net.   UFTP is covered by the GNU General Public License.  Commercial
     licenses and support are available from Dennis Bush (bush@tcnj.edu).

UFTP 5.0			  22 April 2020 			uftpd(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=uftpd&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help