Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
util:sexyz [2018/03/01 12:20] – old revision restored digital manutil:sexyz [2023/12/22 12:16] (current) – [Overview] clarify native means 32-bit or 64-bit digital man
Line 5: Line 5:
 ===== Overview ===== ===== Overview =====
  
-SEXYZ was developed as a native (32-bit) TCP/socket-based replacement for the+SEXYZ was developed as a native (32-bit or 64-bit) TCP/socket-based replacement for the
 16-bit DOS file transfer drivers (e.g. FDSZ, CE-XYZ, etc.) that we've been 16-bit DOS file transfer drivers (e.g. FDSZ, CE-XYZ, etc.) that we've been
 stuck with on 32-bit BBSes for FAR too long. stuck with on 32-bit BBSes for FAR too long.
Line 62: Line 62:
 usage: sexyz <socket> [-opts] <cmd> [file | path | @list] usage: sexyz <socket> [-opts] <cmd> [file | path | @list]
  
-socket = TCP socket descriptor (or leave blank for "stdiomode on Unix)+socket = TCP socket descriptor (leave blank for stdio mode)
  
 opts   = -y  allow overwriting of existing files when receiving opts   = -y  allow overwriting of existing files when receiving
-         -o  disable ZMODEM CRC-32 mode (force CRC-16 mode instead) 
-         -s  disable ZMODEM streaming (Slow ZMODEM) 
          -k  enable X/YMODEM-1K send mode          -k  enable X/YMODEM-1K send mode
          -c  enable XMODEM-CRC receive mode          -c  enable XMODEM-CRC receive mode
          -g  enable X/YMODEM-G receive mode (no error recovery)          -g  enable X/YMODEM-G receive mode (no error recovery)
 +         -o  disable ZMODEM CRC-32 mode (use CRC-16)
 +         -s  use segmented ZMODEM (disable streaming)
          -2  set maximum ZMODEM block size to 2K          -2  set maximum ZMODEM block size to 2K
          -4  set maximum ZMODEM block size to 4K          -4  set maximum ZMODEM block size to 4K
          -8  set maximum ZMODEM block size to 8K (ZedZap)          -8  set maximum ZMODEM block size to 8K (ZedZap)
-         -m# set maximum receive file size to # bytes (0=unlimited, default=0)+         -w# set maximum ZMODEM transmit window size (default=0, unlimited) 
 +         -m# set maximum receive file size to # bytes (default=0, unlimited) 
 +         -l  lowercase received filenames
          -!  to pause after abnormal exit (error)          -!  to pause after abnormal exit (error)
-         -telnet to enable Telnet mode (the default) +         -telnet to enable Telnet mode (the default except in stdio mode
-         -rlogin to enable RLogin (pass-through) mode+         -rlogin or -ssh or -raw to disable Telnet mode
  
 cmd    = v  to display detailed version information cmd    = v  to display detailed version information
Line 101: Line 103:
 ^rz/sz style     ^Operation ^Protocol ^Same As^ ^rz/sz style     ^Operation ^Protocol ^Same As^
 |''sexyz -c rx'' |receive |XMODEM-CRC |''sexyz rc''| |''sexyz -c rx'' |receive |XMODEM-CRC |''sexyz rc''|
-|''sexyz -k sx'' |send    |XMODEM-1K  |''seyxz sX''|+|''sexyz -k sx'' |send    |XMODEM-1K  |''sexyz sX''|
 |''sexyz rb''    |receive |YMODEM     |''sexyz ry''| |''sexyz rb''    |receive |YMODEM     |''sexyz ry''|
 |''sexyz -k sb'' |send    |YMODEM-1K  |''sexyz sY''| |''sexyz -k sb'' |send    |YMODEM-1K  |''sexyz sY''|
Line 108: Line 110:
  
  
-===== Installation =====+===== Install =====
  
  
-Copy ''sexyz[.exe]'' into your Synchronet ''[[dir:exec]]'' directory.+Copy ''sexyz[.exe]'' into your Synchronet ''[[dir:exec]]'' directory, if it's not already. Installation for other uses/systems likely just means copying the executable file somewhere that may be invoked from the application or server as needed.
  
  
-===== Configuration for Synchronet =====+===== Configure =====
  
-Synchronet v3.14++==== Synchronet ====
  
-SCFG:File Options->Transfer Protocols:+In Synchronet v3.14+ SCFG:File Options->Transfer Protocols:
  
 <code> <code>
 [File Transfer Protocol] [File Transfer Protocol]
  1: Mnemonic (Command Key)        X  1: Mnemonic (Command Key)        X
- 2: Protocol Name                 XMODEM (SEXYZ)+ 2: Protocol Name                 XMODEM-Original (SEXYZ) 
 + 3: Access Requirements            
 + 4: Upload Command Line           %!sexyz%. %h -%p rx %f 
 + 5: Download Command Line         %!sexyz%. %h -%p sx %f 
 + 6: Batch Upload Command Line 
 + 7: Batch Download Command Line 
 + 8: Bi-dir Command Line 
 + 9: Native (32-bit) Executable    Yes 
 +10: Supports DSZLOG               Yes 
 +11: Socket I/O                    Yes 
 + 
 +[File Transfer Protocol] 
 + 1: Mnemonic (Command Key)        1 
 + 2: Protocol Name                 XMODEM-1K/CRC (SEXYZ)
  3: Access Requirements             3: Access Requirements           
  4: Upload Command Line           %!sexyz%. %h -%p rC %f  4: Upload Command Line           %!sexyz%. %h -%p rC %f
Line 172: Line 187:
 10: Supports DSZLOG               Yes 10: Supports DSZLOG               Yes
 11: Socket I/O                    Yes 11: Socket I/O                    Yes
 +</code>
  
-Optional/Advanced:+=== Optional/Advanced ===
  
 +<code>
 [File Transfer Protocol] [File Transfer Protocol]
  1: Mnemonic (Command Key)        8  1: Mnemonic (Command Key)        8
Line 187: Line 204:
 10: Supports DSZLOG               Yes 10: Supports DSZLOG               Yes
 11: Socket I/O                    Yes 11: Socket I/O                    Yes
 +
 +[File Transfer Protocol]
 + 1: Mnemonic (Command Key)        S
 + 2: Protocol Name                 ZMODEM-Synchronous(SEXYZ)
 + 3: Access Requirements           
 + 4: Upload Command Line           %!sexyz%. %h -%p rz %f
 + 5: Download Command Line         %!sexyz%. %h -%p -s sz %f
 + 6: Batch Upload Command Line     %!sexyz%. %h -%p rz %g
 + 7: Batch Download Command Line   %!sexyz%. %h -%p -s sz @%f
 + 8: Bi-dir Command Line
 + 9: Native (32-bit) Executable    Yes
 +10: Supports DSZLOG               Yes
 +11: Socket I/O                    Yes
 +
 </code> </code>
 NOTE: It is suggested you remove existing FDSZ, CE-XYZ, or sz/rz transfer protocol entries as they are no longer needed. NOTE: It is suggested you remove existing FDSZ, CE-XYZ, or sz/rz transfer protocol entries as they are no longer needed.
  
 +=== Synchronet for Unix ===
  
-===== Configuration for Mystic =====+Synchronet for Unix (prior to v3.14) did not support socket-based file 
 +transfer protocols, so SEXYZ is only currently supported on Synchronet for 
 +Unix (v3.13 and older) in "stdio" mode. 
 + 
 +You can use "stdio" mode in SEXYZ by removing '%h' (the socket descriptor) 
 +from the above command-lines. If you're using Synchronet for Unix v3.14 or 
 +later, socket I/O mode is preferred (do not use "stdio" mode). 
 + 
 + 
 +==== Mystic ====
  
 Example configuration for Mystic BBS v1.08-Win32 Example configuration for Mystic BBS v1.08-Win32
Line 212: Line 253:
 </code> </code>
  
-===== Configuration for EleBBS =====+==== EleBBS ====
  
 Example configuration for EleBBS-Win32 Example configuration for EleBBS-Win32
Line 245: Line 286:
 and set ''Quotes=true'' in the ''[DSZLOG]'' section of your ''sexyz.ini'' file or use and set ''Quotes=true'' in the ''[DSZLOG]'' section of your ''sexyz.ini'' file or use
 the secret ''-quotes'' command-line option. the secret ''-quotes'' command-line option.
- 
- 
-===== Synchronet for Unix ===== 
- 
-Synchronet for Unix (prior to v3.14) did not support socket-based file 
-transfer protocols, so SEXYZ is only currently supported on Synchronet for 
-Unix (v3.13 and older) in "stdio" mode. 
- 
-You can use "stdio" mode in SEXYZ by removing '%h' (the socket descriptor) 
-from the above command-lines. If you're using Synchronet for Unix v3.14 or 
-later, socket I/O mode is preferred (do not use "stdio" mode). 
  
 ===== Optional Initialization File (sexyz.ini) ===== ===== Optional Initialization File (sexyz.ini) =====
Line 271: Line 301:
  
 Example .ini file (with default values given): Example .ini file (with default values given):
-<file sexyz.ini>+<code ini>
 Telnet=TRUE                 ; set to FALSE to change the default mode Telnet=TRUE                 ; set to FALSE to change the default mode
-TCP_NoDelay=TRUE            ; disable the TCP Nagle algorithm 
 LogLevel=INFO               ; set display/log output level LogLevel=INFO               ; set display/log output level
 +SysLog=FALSE                ; log to syslog (*nix only)
 Debug=FALSE                 ; enable debug logging (overrides LogLevel) Debug=FALSE                 ; enable debug logging (overrides LogLevel)
 DebugTx=FALSE               ; debug transmitted characters DebugTx=FALSE               ; debug transmitted characters
Line 285: Line 315:
 OutbufDrainTimeout=10       ; milliseconds before auto-flush OutbufDrainTimeout=10       ; milliseconds before auto-flush
 ProgressInterval=1          ; interval (in seconds) of progress display ProgressInterval=1          ; interval (in seconds) of progress display
-MaxFileSize=0               ; maximum receive file size in bytes (0=unlimited)   +MaxFileSize=0               ; maximum receive file size in bytes (0=unlimited)
    
 [XMODEM] [XMODEM]
Line 310: Line 340:
 MaxBlockSize=1024   ; 1024 is "true" ZMODEM, 8192 for ZMODEM-8K (ZedZap) MaxBlockSize=1024   ; 1024 is "true" ZMODEM, 8192 for ZMODEM-8K (ZedZap)
 MaxErrors=9         ; maximum number of consecutive errors MaxErrors=9         ; maximum number of consecutive errors
-RecvBufSize=0       ; specify non-zero for partial streaming receives +RecvBufSize=0       ; specify non-zero for segmented receives 
-Streaming=TRUE      ; set to FALSE to disable streaming (block-at-a-time)+Streaming=TRUE      ; set to FALSE to disable streaming (segmented receives)
 CRC32=TRUE          ; set to FALSE to force CRC-16 instead CRC32=TRUE          ; set to FALSE to force CRC-16 instead
 +FullDuplex=TRUE     ; set to FALSE to disable window support (on receive)
 EscapeTelnetIAC=TRUE    ; send ZDLE/ZRUB1 instead of 0xff with -telnet EscapeTelnetIAC=TRUE    ; send ZDLE/ZRUB1 instead of 0xff with -telnet
 Escape8thBit=FALSE      ; ZDLE-escape all bytes with bit-7 set Escape8thBit=FALSE      ; ZDLE-escape all bytes with bit-7 set
 EscapeCtrlChars=FALSE   ; ZDLE-escape all control characters (< 20h) EscapeCtrlChars=FALSE   ; ZDLE-escape all control characters (< 20h)
 +MaxWindowSize=0         ; Set to non-zero number of bytes to use window management
 +TargetWindowSize=0      ; Set to a duration (e.g. in seconds) to enable auto-adjusting window size
  
 [DSZLOG] [DSZLOG]
Line 321: Line 354:
 Short=false         ; use Micros~1 short path/filename in log (Windows) Short=false         ; use Micros~1 short path/filename in log (Windows)
 Quotes=false        ; enclose filename in "quotes" (for EleBBS) Quotes=false        ; enclose filename in "quotes" (for EleBBS)
-</file>+ 
 +[SOCKOPTS] 
 +</code> 
 + 
 +**Notes:**\\ 
 +  * The defaults and ''sexyz.ini'' specified values can be over-ridden via command-line options. 
 +  * Older versions of SEXYZ did not support comments on some of the ''sexy.ini'' lines shown above. 
 +  * See ''[[dir:ctrl]]/[[config:sockopts.ini]]'' for the Socket Options that can be set in the ''[SOCKOPTS]'' section. 
 +  * Versions of SEXYZ prior to 3.0 recognized a global ''TCP_NODELAY'' key. Now that key, if it is to be set, must be in the optional ''[SOCKOPTS]'' section (for advanced uses only).
  
 ===== Compatibility ===== ===== Compatibility =====
Line 392: Line 433:
   * Failed: none   * Failed: none
  
 +
 +===== ZMODEM Streaming =====
 +The ZMODEM protocol supports multiple methods of data streaming and error recovery. SEXYZ supports the following ZMODEM streaming modes, in order of decreasing successful data transfer assurance:
 +
 +  * **Segmented**: a "block at a time" mode, each data subpacket acknowledged by the receiver (whom can request this mode). Can be enabled when sending via the ''-s'' option or by setting ''Streaming=false'' in ''sexyz.ini''.
 +  * **Window Management**: limiting the amount of data "in-flight" between the sender and receiver using asynchronous status reporting by the receiver. Can be controlled when sending via the ''-w'' option or by setting ''MaxWindowSize'' (and optionally ''TargetWindowSize'') in ''sexyz.ini''.
 +  * **Full Streaming**: the default, subject to large send-buffering on the sending side potentially resulting in failed error-recovery or completion-acknowledgment timeouts.
 +
 +//Window Management// mode was added in SEXYZ v3.0 to support very asymmetric send-operations where the sender is a modern system, potentially with multiple-megabyte send-buffers, sending to a receiver that can only consume data at a rate of 115200bps (about 10KBytes/second) or less.
  
 ===== Support ===== ===== Support =====
Line 410: Line 460:
   * The 16-bit CRC table and calculation macro was (unwittingly) contributed by Mark G. Mendel and Stephen Satchell.   * The 16-bit CRC table and calculation macro was (unwittingly) contributed by Mark G. Mendel and Stephen Satchell.
   * The 32-bit CRC table and calculation macro was (unwittingly) contributed by Gary S. Brown.   * The 32-bit CRC table and calculation macro was (unwittingly) contributed by Gary S. Brown.
-  * SEXYZ includes portions of the Synchronet XPDEV and SMBLIB libraries which are licensed under the GNU Lesser General Public License ([[http://www.fsf.org/licensing/licenses/lgpl.txt|LGPL]]).+  * SEXYZ includes portions of the Synchronet project (e.g. XPDEVwhich are licensed under the GNU Lesser General Public License ([[http://www.fsf.org/licensing/licenses/lgpl.txt|LGPL]]).
  
 ===== See Also ===== ===== See Also =====