Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| util:sexyz [2010/02/24 15:20] – created digitalman | util:sexyz [2023/12/22 12:16] (current) – [Overview] clarify native means 32-bit or 64-bit digital man | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== SEXYZ ====== | ====== SEXYZ ====== | ||
| - | FIXME | + | Synchronet External X/Y/ZMODEM (SEXYZ) File Transfer Protocol Driver |
| + | |||
| + | ===== Overview ===== | ||
| + | |||
| + | SEXYZ was developed as a native (32-bit or 64-bit) TCP/ | ||
| + | 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. | ||
| + | |||
| + | While SEXYZ was designed with | ||
| + | Synchronet BBSes in mind, it should also work with other 32-bit BBS packages | ||
| + | that have the ability to pass socket descriptors to external file transfer | ||
| + | protocol drivers. | ||
| + | |||
| + | SEXYZ behaves much like DSZ/FDSZ and CE-XYZ: | ||
| + | |||
| + | * Familiar command-line syntax | ||
| + | * Supports the DSZLOG environment variable for result logging | ||
| + | * Supports batch transfer file lists | ||
| + | |||
| + | SEXYZ has several advantages over legacy drivers like FDSZ and CE-XYZ: | ||
| + | |||
| + | * Faster (native, multi-threaded design) | ||
| + | * Socket-based (no need for FOSSIL drivers or virtual COM ports/ | ||
| + | * Multi-tasking friendly (does not needlessly consume CPU cycles) | ||
| + | * Supports long filenames (e.g. not just DOS " | ||
| + | * Supports YMODEM-G and XMODEM-G (FDSZ does not) | ||
| + | * Handles Telnet IAC escaping and option negotiations (optionally) | ||
| + | * Transfers files over fast connections (e.g. 100KB/sec) without issue | ||
| + | * Actively developed and supported | ||
| + | * Open source (at cvs.synchro.net)! | ||
| + | |||
| + | |||
| + | ===== Distribution ===== | ||
| + | |||
| + | SEXYZ is freeware, licensed under the GNU General Public License ([[http:// | ||
| + | |||
| + | You can find the current source code (in C) in the Synchronet [[dev:CVS]] repository at '' | ||
| + | |||
| + | The latest and greatest build will be included in Synchronet-Win32 releases. | ||
| + | You should be able to find/ | ||
| + | ('' | ||
| + | |||
| + | * http:// | ||
| + | * ftp:// | ||
| + | * ftp:// | ||
| + | * telnet:// | ||
| + | |||
| + | SEXYZ can also be built from the C source code for use (natively) on Linux and other Unix variants (e.g. FreeBSD). | ||
| + | |||
| + | For a client implementation of SEXYZ, use the SyncTerm Telnet/ | ||
| + | terminal program (http:// | ||
| + | including Win32, *nix, and Mac OS-X. | ||
| + | |||
| + | |||
| + | ===== Command-line Syntax ===== | ||
| + | |||
| + | Just running " | ||
| + | (options and commands): | ||
| + | < | ||
| + | usage: sexyz < | ||
| + | |||
| + | socket = TCP socket descriptor (leave blank for stdio mode) | ||
| + | |||
| + | opts = -y allow overwriting of existing files when receiving | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | -w# set maximum ZMODEM transmit window size (default=0, unlimited) | ||
| + | -m# set maximum receive file size to # bytes (default=0, unlimited) | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | cmd = v to display detailed version information | ||
| + | sx to send XMODEM | ||
| + | sX to send XMODEM-1K | ||
| + | sy to send YMODEM | ||
| + | sY to send YMODEM-1K | ||
| + | sz to send ZMODEM | ||
| + | |||
| + | file = filename to send or receive | ||
| + | path = directory to receive files into | ||
| + | list = name of text file with list of filenames to send or receive | ||
| + | </ | ||
| + | |||
| + | NOTE: SEXYZ actually supports either '' | ||
| + | a file list on the command-line. If the list file doesn' | ||
| + | treat the '' | ||
| + | |||
| + | ==== RZ/SZ Style ==== | ||
| + | SEXYZ also supports "rz/sz style" command-line syntax for some commands. | ||
| + | |||
| + | Examples: | ||
| + | |||
| + | ^rz/sz style | ||
| + | |'' | ||
| + | |'' | ||
| + | |'' | ||
| + | |'' | ||
| + | |'' | ||
| + | |'' | ||
| + | |||
| + | |||
| + | ===== Install ===== | ||
| + | |||
| + | |||
| + | Copy '' | ||
| + | |||
| + | |||
| + | ===== Configure ===== | ||
| + | |||
| + | ==== Synchronet ==== | ||
| + | |||
| + | In Synchronet v3.14+ SCFG:File Options-> | ||
| + | |||
| + | < | ||
| + | [File Transfer Protocol] | ||
| + | 1: Mnemonic (Command Key) X | ||
| + | 2: Protocol Name | ||
| + | 3: Access Requirements | ||
| + | 4: Upload Command Line | ||
| + | 5: Download Command Line | ||
| + | 6: Batch Upload Command Line | ||
| + | 7: Batch Download Command Line | ||
| + | 8: Bi-dir Command Line | ||
| + | 9: Native (32-bit) Executable | ||
| + | 10: Supports DSZLOG | ||
| + | 11: Socket I/O Yes | ||
| + | |||
| + | [File Transfer Protocol] | ||
| + | 1: Mnemonic (Command Key) 1 | ||
| + | 2: Protocol Name | ||
| + | 3: Access Requirements | ||
| + | 4: Upload Command Line | ||
| + | 5: Download Command Line | ||
| + | 6: Batch Upload Command Line | ||
| + | 7: Batch Download Command Line | ||
| + | 8: Bi-dir Command Line | ||
| + | 9: Native (32-bit) Executable | ||
| + | 10: Supports DSZLOG | ||
| + | 11: Socket I/O Yes | ||
| + | |||
| + | [File Transfer Protocol] | ||
| + | 1: Mnemonic (Command Key) Y | ||
| + | 2: Protocol Name | ||
| + | 3: Access Requirements | ||
| + | 4: Upload Command Line | ||
| + | 5: Download Command Line | ||
| + | 6: Batch Upload Command Line | ||
| + | 7: Batch Download Command Line | ||
| + | 8: Bi-dir Command Line | ||
| + | 9: Native (32-bit) Executable | ||
| + | 10: Supports DSZLOG | ||
| + | 11: Socket I/O Yes | ||
| + | |||
| + | [File Transfer Protocol] | ||
| + | 1: Mnemonic (Command Key) G | ||
| + | 2: Protocol Name | ||
| + | 3: Access Requirements | ||
| + | 4: Upload Command Line | ||
| + | 5: Download Command Line | ||
| + | 6: Batch Upload Command Line | ||
| + | 7: Batch Download Command Line | ||
| + | 8: Bi-dir Command Line | ||
| + | 9: Native (32-bit) Executable | ||
| + | 10: Supports DSZLOG | ||
| + | 11: Socket I/O Yes | ||
| + | |||
| + | [File Transfer Protocol] | ||
| + | 1: Mnemonic (Command Key) Z | ||
| + | 2: Protocol Name | ||
| + | 3: Access Requirements | ||
| + | 4: Upload Command Line | ||
| + | 5: Download Command Line | ||
| + | 6: Batch Upload Command Line | ||
| + | 7: Batch Download Command Line | ||
| + | 8: Bi-dir Command Line | ||
| + | 9: Native (32-bit) Executable | ||
| + | 10: Supports DSZLOG | ||
| + | 11: Socket I/O Yes | ||
| + | </ | ||
| + | |||
| + | === Optional/ | ||
| + | |||
| + | < | ||
| + | [File Transfer Protocol] | ||
| + | 1: Mnemonic (Command Key) 8 | ||
| + | 2: Protocol Name | ||
| + | 3: Access Requirements | ||
| + | 4: Upload Command Line | ||
| + | 5: Download Command Line | ||
| + | 6: Batch Upload Command Line | ||
| + | 7: Batch Download Command Line | ||
| + | 8: Bi-dir Command Line | ||
| + | 9: Native (32-bit) Executable | ||
| + | 10: Supports DSZLOG | ||
| + | 11: Socket I/O Yes | ||
| + | |||
| + | [File Transfer Protocol] | ||
| + | 1: Mnemonic (Command Key) S | ||
| + | 2: Protocol Name | ||
| + | 3: Access Requirements | ||
| + | 4: Upload Command Line | ||
| + | 5: Download Command Line | ||
| + | 6: Batch Upload Command Line | ||
| + | 7: Batch Download Command Line | ||
| + | 8: Bi-dir Command Line | ||
| + | 9: Native (32-bit) Executable | ||
| + | 10: Supports DSZLOG | ||
| + | 11: Socket I/O Yes | ||
| + | |||
| + | </ | ||
| + | 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 === | ||
| + | |||
| + | 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 " | ||
| + | |||
| + | You can use " | ||
| + | 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 " | ||
| + | |||
| + | |||
| + | ==== Mystic ==== | ||
| + | |||
| + | Example configuration for Mystic BBS v1.08-Win32 | ||
| + | (provided by Dream Master and Jack Phlash) | ||
| + | |||
| + | < | ||
| + | A. Active | ||
| + | B. HotKey | ||
| + | C. Description: | ||
| + | D. Batch : No | ||
| + | E. Send Cmd : c: | ||
| + | F. Receive Cmd: c: | ||
| + | |||
| + | A. Active | ||
| + | B. HotKey | ||
| + | C. Description: | ||
| + | D. Batch : Yes | ||
| + | E. Send Cmd : c: | ||
| + | F. Receive Cmd: c: | ||
| + | </ | ||
| + | |||
| + | ==== EleBBS ==== | ||
| + | |||
| + | Example configuration for EleBBS-Win32 | ||
| + | (provided by Mike Ehlert, aka pcm) | ||
| + | < | ||
| + | Name ZMODEM (SEXYZ) | ||
| + | Key Z | ||
| + | Ext ctl file No | ||
| + | Batch Yes | ||
| + | Status | ||
| + | Log file DSZ.LOG | ||
| + | Control file DSZ.CTL | ||
| + | DL command line c: | ||
| + | UL command line c: | ||
| + | DL ctl string | ||
| + | UL ctl string | ||
| + | DL log keyword | ||
| + | UL log keyword | ||
| + | Log name word 10 | ||
| + | Log desc word 0 | ||
| + | </ | ||
| + | You will need to have the environment variable '' | ||
| + | It should *not* have a path of course, so that it's created in the current | ||
| + | node's directory. | ||
| + | |||
| + | Once you define that under control panel > system > env variables > system | ||
| + | variables, be sure to close the window running eleserv or telsrv and reopen | ||
| + | it for the environment variable to become active.. Otherwise there will be | ||
| + | no log of the transfer and EleBBS will assume it failed. | ||
| + | |||
| + | Note: To support long filenames with EleBBS, you'll need Sexyz v1.74 or later | ||
| + | and set '' | ||
| + | the secret '' | ||
| + | |||
| + | ===== Optional Initialization File (sexyz.ini) ===== | ||
| + | |||
| + | If the file '' | ||
| + | (e.g. '' | ||
| + | default operating parameters shown below. Like all Synchronet .ini files, | ||
| + | you can have a unique .ini file for different local systems by embedding | ||
| + | the local hostname (sexyz[.host].ini) or platform (sexyz[.platform].ini) | ||
| + | in the filename. The filenames are *not* case sensitive. Examples: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * ''/ | ||
| + | |||
| + | Example .ini file (with default values given): | ||
| + | <code ini> | ||
| + | Telnet=TRUE | ||
| + | LogLevel=INFO | ||
| + | SysLog=FALSE | ||
| + | Debug=FALSE | ||
| + | DebugTx=FALSE | ||
| + | DebugRx=FALSE | ||
| + | DebugTelnet=FALSE | ||
| + | PauseOnExit=FALSE | ||
| + | PauseOnAbend=FALSE | ||
| + | OutbufSize=16384 | ||
| + | OutbufHighwaterMark=1100 | ||
| + | OutbufDrainTimeout=10 | ||
| + | ProgressInterval=1 | ||
| + | MaxFileSize=0 | ||
| + | |||
| + | [XMODEM] | ||
| + | SendTimeout=10 | ||
| + | RecvTimeout=10 | ||
| + | ByteTimeout=3 | ||
| + | AckTimeout=10 | ||
| + | BlockSize=1024 | ||
| + | MaxBlockSize=1024 | ||
| + | MaxErrors=9 | ||
| + | G_Delay=1 | ||
| + | SendG=TRUE | ||
| + | SendCRC=TRUE | ||
| + | |||
| + | [YMODEM] | ||
| + | FallbackToXMODEM=0 | ||
| + | |||
| + | [ZMODEM] | ||
| + | InitTimeout=10 | ||
| + | SendTimeout=15 | ||
| + | RecvTimeout=20 | ||
| + | CrcTimeout=60 | ||
| + | BlockSize=1024 | ||
| + | MaxBlockSize=1024 | ||
| + | MaxErrors=9 | ||
| + | RecvBufSize=0 | ||
| + | Streaming=TRUE | ||
| + | CRC32=TRUE | ||
| + | FullDuplex=TRUE | ||
| + | EscapeTelnetIAC=TRUE | ||
| + | Escape8thBit=FALSE | ||
| + | EscapeCtrlChars=FALSE | ||
| + | MaxWindowSize=0 | ||
| + | TargetWindowSize=0 | ||
| + | |||
| + | [DSZLOG] | ||
| + | Path=true | ||
| + | Short=false | ||
| + | Quotes=false | ||
| + | |||
| + | [SOCKOPTS] | ||
| + | </ | ||
| + | |||
| + | **Notes: | ||
| + | * The defaults and '' | ||
| + | * Older versions of SEXYZ did not support comments on some of the '' | ||
| + | * See '' | ||
| + | * Versions of SEXYZ prior to 3.0 recognized a global '' | ||
| + | |||
| + | ===== Compatibility ===== | ||
| + | The XMODEM, YMODEM, and ZMODEM file transfers should be compatible with any | ||
| + | terminal programs or remote protocol drivers that conform to the public | ||
| + | specifications for these protocols written by Chuck Forsberg (XMODEM was | ||
| + | actually written by Ward Christensen, | ||
| + | documented by our good friend, Chuck). | ||
| + | |||
| + | SEXYZ supports the following protocols and their popular permutations: | ||
| + | |||
| + | |XMODEM | ||
| + | |XMODEM-CRC |128-byte blocks, 16-bit CRC error detection| | ||
| + | |XMODEM-1K | ||
| + | |XMODEM-G | ||
| + | |YMODEM | ||
| + | |YMODEM-1K | ||
| + | |YMODEM-G | ||
| + | |ZMODEM | ||
| + | |ZMODEM-8K | ||
| + | |||
| + | SEXYZ will automatically fall back from 1024-byte block XMODEM/ | ||
| + | mode to 128-byte block XMODEM/ | ||
| + | to support 1024-byte blocks. | ||
| + | |||
| + | SEXYZ also supports automatically falling back from XMODEM/ | ||
| + | XMODEM/ | ||
| + | CRC-16 error detection. | ||
| + | |||
| + | SEXYZ for Win32 has been tested successfully with the following Telnet clients | ||
| + | /terminal programs: | ||
| + | |||
| + | ==== ztelnet ==== | ||
| + | * OS: Linux | ||
| + | * Version: 1.2.2 | ||
| + | * URL: ftp:// | ||
| + | * Tested: ZMODEM uploads and downloads | ||
| + | * Failed: none | ||
| + | |||
| + | ==== HyperTerminal Private Edition ==== | ||
| + | * By: Hilgraeve, Inc. | ||
| + | * OS: Win32 | ||
| + | * Version: 6.3 | ||
| + | * URL: http:// | ||
| + | * Tested: XMODEM (checksum and CRC), XMODEM-1K, YMODEM-1K, YMODEM-G and ZMODEM | ||
| + | * Failed: ZMODEM uploads (CRC errors detected): appears to be the fault of HyperTerminal and can be reproduced with any protocol driver on the BBS/server side (even FDSZ) | ||
| + | |||
| + | ==== mTelnet ==== | ||
| + | * By: enigma | ||
| + | * OS: Win32 | ||
| + | * Version: 1.0 (beta 12)/w32 | ||
| + | * URL: http:// | ||
| + | * Tested: ZMODEM uploads and downloads | ||
| + | * Failed: none | ||
| + | |||
| + | ==== NetRunner ==== | ||
| + | * By: Mystic Software Development (James Coyle/ | ||
| + | * OS: Win32 | ||
| + | * Version: 0.09 | ||
| + | * URL: www.mysticbbs.com | ||
| + | * Tested: ZMODEM uploads and downloads | ||
| + | * Failed: ZMODEM uploads (CRC errors detected): appears to be the fault of NetRunner and can be reproduced with any protocol driver on the BBS/server side (FDSZ and CEXYZ both failed in the same manner) | ||
| + | |||
| + | ==== ZOC ==== | ||
| + | * By: EmTec, Innovative Software, Markus Schmidt | ||
| + | * OS: Win32 | ||
| + | * Version: 5.02 | ||
| + | * URL: http:// | ||
| + | * Tested: XMODEM, YMODEM, ZMODEM uploads and downloads | ||
| + | * 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**: | ||
| + | * **Window Management**: | ||
| + | * **Full Streaming**: | ||
| + | |||
| + | //Window Management// | ||
| + | |||
| + | ===== Support ===== | ||
| + | |||
| + | For technical support (including bug reports), see [[howto: | ||
| + | |||
| + | When submitting problem/bug reports, please include the version output from | ||
| + | the '' | ||
| + | (or incompatibility) with terminal programs or telnet clients. | ||
| + | |||
| + | ===== Credits ===== | ||
| + | * The XMODEM (a.k.a. MODEM, MODEM2) protocol was originally created by Ward Christensen in 1977. | ||
| + | * The XMODEM-CRC protocol (XMODEM derivative using a 16-CRC for error detection rather than XMODEM' | ||
| + | * The YMODEM, YMODEM-G and ZMODEM protocols were created and documented by [[http:// | ||
| + | * The X/YMODEM code used in SEXYZ was written by [[person: | ||
| + | * The Unix " | ||
| + | * The ZMODEM code in SEXYZ is based on zmtx/zmrx v1.02 (C) Mattheij Computer Service 1994 by Jacques Mattheij < | ||
| + | * 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. | ||
| + | * SEXYZ includes portions of the Synchronet project (e.g. XPDEV) which are licensed under the GNU Lesser General Public License ([[http:// | ||
| ===== See Also ===== | ===== See Also ===== | ||
| + | * [[: | ||
| * [[: | * [[: | ||
| + | {{tag> | ||