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> |