enigma-bbs/configuration/file-transfer-protocols.html

2345 lines
22 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="16x16" href="/enigma-bbs/assets/images/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/enigma-bbs/assets/images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="32x32" href="/enigma-bbs/assets/images/favicon-32x32.png">
<link rel="stylesheet" href="/enigma-bbs/assets/css/style.css?v=">
<!-- Begin Jekyll SEO tag v2.7.1 -->
<title>File Transfer Protocols | ENiGMA½ BBS Software</title>
<meta name="generator" content="Jekyll v4.2.1" />
<meta property="og:title" content="File Transfer Protocols" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="ENiGMA½ currently relies on external executable binaries for “legacy” file transfer protocols such as X, Y, and ZModem. Remember that ENiGMA½ also support modern web (HTTP/HTTPS) downloads!" />
<meta property="og:description" content="ENiGMA½ currently relies on external executable binaries for “legacy” file transfer protocols such as X, Y, and ZModem. Remember that ENiGMA½ also support modern web (HTTP/HTTPS) downloads!" />
<meta property="og:site_name" content="ENiGMA½ BBS Software" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2022-08-01T21:06:07+00:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="File Transfer Protocols" />
<script type="application/ld+json">
{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/file-transfer-protocols.html"},"description":"ENiGMA½ currently relies on external executable binaries for “legacy” file transfer protocols such as X, Y, and ZModem. Remember that ENiGMA½ also support modern web (HTTP/HTTPS) downloads!","url":"/enigma-bbs/configuration/file-transfer-protocols.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Transfer Protocols","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->
</head>
<body>
<div id="container">
<div class="sidebar" id="sidebar">
<hr class="mobile-divide" />
<div class="container">
<a href="/enigma-bbs/"><img src="/enigma-bbs/assets/images/enigma-logo.png" class="logo" alt="Enigma logo" /></a>
</div>
<ul>
<li>Installation</li>
<ul>
<li><a href="/enigma-bbs/installation/installation-methods.html">Installation Methods</a></li>
<li><a href="/enigma-bbs/installation/install-script.html">Install Script</a></li>
<li><a href="/enigma-bbs/installation/docker.html">Docker</a></li>
<li><a href="/enigma-bbs/installation/manual.html">Manual Installation</a></li>
<li>OS / Hardware Specific</li>
<ul>
<li><a href="/enigma-bbs/installation/hardware/rpi.html">Raspberry Pi</a></li>
<li><a href="/enigma-bbs/installation/hardware/windows.html">Installation Under Windows</a></li>
</ul>
<li><a href="/enigma-bbs/installation/network.html">Network Setup</a></li>
<li><a href="/enigma-bbs/installation/testing.html">Testing Your Installation</a></li>
<li><a href="/enigma-bbs/installation/production.html">Production Installation</a></li>
</ul>
<li>Configuration</li>
<ul>
<li><a href="/enigma-bbs/configuration/creating-config.html">Creating Initial Config Files</a></li>
<li><a href="/enigma-bbs/configuration/sysop-setup.html">SysOp Setup</a></li>
<li><a href="/enigma-bbs/configuration/config-files.html">Configuration Files</a></li>
<li><a href="/enigma-bbs/configuration/config-hjson.html">System Configuration</a></li>
<li><a href="/enigma-bbs/configuration/hjson.html">HJSON Config Files</a></li>
<li><a href="/enigma-bbs/configuration/menu-hjson.html">Menu HSJON</a></li>
<li><a href="/enigma-bbs/configuration/directory-structure.html">Directory Structure</a></li>
<li><a href="/enigma-bbs/configuration/external-binaries.html">External Support Binaries</a></li>
<li><a href="/enigma-bbs/configuration/archivers.html">Archivers</a></li>
<li class="active-nav">File Transfer Protocols</li>
<li><a href="/enigma-bbs/configuration/email.html">Email</a></li>
<li><a href="/enigma-bbs/configuration/colour-codes.html">Colour Codes</a></li>
<li><a href="/enigma-bbs/configuration/event-scheduler.html">Event Scheduler</a></li>
<li><a href="/enigma-bbs/configuration/acs.html">Access Condition System (ACS)</a></li>
<li><a href="/enigma-bbs/configuration/security.html">Security</a></li>
</ul>
<li>Miscellaneous</li>
<ul>
<li><a href="/enigma-bbs/misc/user-interrupt.html">User Interruptions</a></li>
</ul>
<li>File Base</li>
<ul>
<li><a href="/enigma-bbs/filebase/index.html">About File Areas</a></li>
<li><a href="/enigma-bbs/filebase/first-file-area.html">Configuring a File Base</a></li>
<li><a href="/enigma-bbs/filebase/acs.html">ACS</a></li>
<li><a href="/enigma-bbs/filebase/uploads.html">Uploads</a></li>
<li><a href="/enigma-bbs/filebase/web-access.html">Web Access</a></li>
<li><a href="/enigma-bbs/filebase/tic-support.html">TIC Support</a></li>
<li><a href="/enigma-bbs/filebase/network-mounts-and-symlinks.html">Network Mounts &amp; Symlinks</a></li>
</ul>
<li>Message Areas</li>
<ul>
<li><a href="/enigma-bbs/messageareas/configuring-a-message-area.html">Message Base</a></li>
<li><a href="/enigma-bbs/messageareas/message-networks.html">Message Networks</a></li>
<li><a href="/enigma-bbs/messageareas/bso-import-export.html">BSO Import / Export</a></li>
<li><a href="/enigma-bbs/messageareas/netmail.html">Netmail</a></li>
<li><a href="/enigma-bbs/messageareas/qwk.html">QWK Support</a></li>
<li><a href="/enigma-bbs/messageareas/ftn.html">FidoNet-Style Networks (FTN)</a></li>
</ul>
<li>Art</li>
<ul>
<li><a href="/enigma-bbs/art/general.html">General Art Information</a></li>
<li><a href="/enigma-bbs/art/themes.html">Themes</a></li>
<li><a href="/enigma-bbs/art/mci.html">MCI Codes</a></li>
<li>Views</li>
<ul>
<li><a href="/enigma-bbs/art/views/button_view.html">Button View</a></li>
<li><a href="/enigma-bbs/art/views/edit_text_view.html">Edit Text View</a></li>
<li><a href="/enigma-bbs/art/views/full_menu_view.html">Full Menu View</a></li>
<li><a href="/enigma-bbs/art/views/horizontal_menu_view.html">Horizontal Menu View</a></li>
<li><a href="/enigma-bbs/art/views/mask_edit_text_view.html">Mask Edit Text View</a></li>
<li><a href="/enigma-bbs/art/views/multi_line_edit_text_view.html">Multi Line Edit Text View</a></li>
<li><a href="/enigma-bbs/art/views/predefined_label_view.html">Predefined Label View</a></li>
<li><a href="/enigma-bbs/art/views/spinner_menu_view.html">Spinner Menu View</a></li>
<li><a href="/enigma-bbs/art/views/text_view.html">Text View</a></li>
<li><a href="/enigma-bbs/art/views/toggle_menu_view.html">Toggle Menu View</a></li>
<li><a href="/enigma-bbs/art/views/vertical_menu_view.html">Vertical Menu View</a></li>
</ul>
</ul>
<li>Servers</li>
<ul>
<li>Login Servers</li>
<ul>
<li><a href="/enigma-bbs/servers/loginservers/telnet.html">Telnet Server</a></li>
<li><a href="/enigma-bbs/servers/loginservers/ssh.html">SSH Server</a></li>
<li><a href="/enigma-bbs/servers/loginservers/websocket.html">Web Socket / Web Interface Server</a></li>
</ul>
<li>Content Servers</li>
<ul>
<li><a href="/enigma-bbs/servers/contentservers/web-server.html">Web Server</a></li>
<li><a href="/enigma-bbs/servers/contentservers/gopher.html">Gopher Server</a></li>
<li><a href="/enigma-bbs/servers/contentservers/nntp.html">NNTP Server</a></li>
</ul>
</ul>
<li>Modding</li>
<ul>
<li><a href="/enigma-bbs/modding/local-doors.html">Local Doors</a></li>
<li><a href="/enigma-bbs/modding/door-servers.html">Door Servers</a></li>
<li><a href="/enigma-bbs/modding/telnet-bridge.html">Telnet Bridge</a></li>
<li><a href="/enigma-bbs/modding/existing-mods.html">Existing Mods</a></li>
<li><a href="/enigma-bbs/modding/file-area-list.html">File Area List</a></li>
<li><a href="/enigma-bbs/modding/last-callers.html">Last Callers</a></li>
<li><a href="/enigma-bbs/modding/whos-online.html">Who's Online</a></li>
<li><a href="/enigma-bbs/modding/user-list.html">User List</a></li>
<li><a href="/enigma-bbs/modding/msg-conf-list.html">Message Conference List</a></li>
<li><a href="/enigma-bbs/modding/msg-area-list.html">Message Area List</a></li>
<li><a href="/enigma-bbs/modding/bbs-list.html">BBS List</a></li>
<li><a href="/enigma-bbs/modding/rumorz.html">Rumorz</a></li>
<li><a href="/enigma-bbs/modding/file-transfer-protocol-select.html">File Transfer Protocol Select</a></li>
<li><a href="/enigma-bbs/modding/onelinerz.html">Onelinerz</a></li>
<li><a href="/enigma-bbs/modding/show-art.html">The Show Art Module</a></li>
<li><a href="/enigma-bbs/modding/file-base-download-manager.html">File Base Download Manager</a></li>
<li><a href="/enigma-bbs/modding/file-base-web-download-manager.html">File Base Web Download Manager</a></li>
<li><a href="/enigma-bbs/modding/set-newscan-date.html">Set Newscan Date Module</a></li>
<li><a href="/enigma-bbs/modding/node-msg.html">Node to Node Messaging</a></li>
<li><a href="/enigma-bbs/modding/top-x.html">TopX</a></li>
<li><a href="/enigma-bbs/modding/user-2fa-otp-config.html">2FA/OTP Config</a></li>
<li><a href="/enigma-bbs/modding/autosig-edit.html">Auto Signature Editor</a></li>
<li><a href="/enigma-bbs/modding/menu-modules.html">Menu Modules</a></li>
</ul>
<li>Administration</li>
<ul>
<li><a href="/enigma-bbs/admin/administration.html">Administration</a></li>
<li><a href="/enigma-bbs/admin/oputil.html">oputil</a></li>
<li><a href="/enigma-bbs/admin/updating.html">Updating</a></li>
</ul>
<li>Troubleshooting</li>
<ul>
<li><a href="/enigma-bbs/troubleshooting/monitoring-logs.html">Monitoring Logs</a></li>
</ul>
</ul>
</div>
<div class="main_area">
<div class="container">
<section id="main_content">
<div class="PageNavigation">
<a class="btn" style="float:left;margin-right: 20px;" href="/enigma-bbs/configuration/archivers.html">&laquo; Archivers</a>
<a href="#sidebar" class="btn menu_button">MENU</a>
<a class="btn" style="float: right;margin-left: 20px" href="/enigma-bbs/configuration/email.html">Email &raquo;</a>
<br clear="both" />
</div>
<div class="page">
<h1 class="page-title">File Transfer Protocols</h1>
<p>ENiGMA½ currently relies on external executable binaries for “legacy” file transfer protocols such as X, Y, and ZModem. Remember that ENiGMA½ also support modern web (HTTP/HTTPS) downloads!</p>
<h2 id="file-transfer-protocols">File Transfer Protocols</h2>
<p>File transfer protocols are managed via the <code class="language-plaintext highlighter-rouge">fileTransferProtocols</code> configuration block of <code class="language-plaintext highlighter-rouge">config.hjson</code>. Each entry defines an <strong>external</strong> protocol handler that can be used for uploads (recv), downloads (send), or both. Depending on the protocol and handler, batch receiving of files (uploads) may also be available.</p>
<h3 id="predefined-file-transfer-protocols">Predefined File Transfer Protocols</h3>
<p>Please see <a href="/enigma-bbs/configuration/external-binaries.html">External Binaries</a> for a table of built in / predefined protocol handlers. You will need to have the binaries in ENiGMAs PATH.</p>
<h4 id="sexyz">SEXYZ</h4>
<p><a href="http://wiki.synchro.net/util:sexyz">SEXYZ from Synchronet</a> offers a nice X, Y, and ZModem implementation including ZModem-8k &amp; works under *nix and Windows based systems. As of this writing, ENiGMA½ is pre-configured to support ZModem-8k, XModem, and YModem using SEXYZ. An x86_64 Linux binary, and hopefully more in the future, <a href="https://l33t.codes/bbs-linux-binaries/">can be downloaded here</a>.</p>
<h4 id="szrz">sz/rz</h4>
<p>ZModem-8k is configured using the standard Linux <a href="https://linux.die.net/man/1/sz">sz(1)</a> and <a href="https://linux.die.net/man/1/rz">rz(1)</a> binaries. Note that these binaries also support XModem and YModem, and as such adding the configurations to your system should be fairly straight forward.</p>
<p>Generally available as <code class="language-plaintext highlighter-rouge">lrzsz</code> under Apt or Yum type packaging.</p>
<h3 id="file-transfer-protocol-configuration">File Transfer Protocol Configuration</h3>
<p>The following top-level members are available to an external protocol configuration:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">name</code>: Required; Display name of the protocol</li>
<li><code class="language-plaintext highlighter-rouge">type</code>: Required; Currently must be <code class="language-plaintext highlighter-rouge">external</code>. This will be expanded upon in the future with built in protocols.</li>
<li><code class="language-plaintext highlighter-rouge">sort</code>: Optional; Sort key. If not provided, <code class="language-plaintext highlighter-rouge">name</code> will be used for sorting.</li>
</ul>
<p>For protocols of type <code class="language-plaintext highlighter-rouge">external</code> the following members may be defined:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">sendCmd</code>: Required for protocols that can send (allow user downloads); The command/binary to execute.</li>
<li><code class="language-plaintext highlighter-rouge">sendArgs</code>: Required if using <code class="language-plaintext highlighter-rouge">sendCmd</code>; An array of arguments. A placeholder of <code class="language-plaintext highlighter-rouge">{fileListPath}</code> may be used to supply a path to a <strong>file containing</strong> a list of files to send, or <code class="language-plaintext highlighter-rouge">{filePaths}</code> to supply <em>1:n</em> individual file paths to send.</li>
<li><code class="language-plaintext highlighter-rouge">recvCmd</code>: Required for protocols that can receive (allow user uploads); The command/binary to execute.</li>
<li><code class="language-plaintext highlighter-rouge">recvArgs</code>: Required if using <code class="language-plaintext highlighter-rouge">recvCmd</code> and supporting <strong>batch</strong> uploads; An array of arguments. A placeholder of <code class="language-plaintext highlighter-rouge">{uploadDir}</code> may be used to supply the system provided upload directory. If <code class="language-plaintext highlighter-rouge">{uploadDir}</code> is not present, the system expects uploaded files to be placed in CWD which will be set to the upload directory.</li>
<li><code class="language-plaintext highlighter-rouge">recvArgsNonBatch</code>: Required if using <code class="language-plaintext highlighter-rouge">recvCmd</code> and supporting non-batch (single file) uploads; A placeholder of <code class="language-plaintext highlighter-rouge">{fileName}</code> may be supplied to indicate to the protocol what the uploaded file should be named (this will be collected from the user before the upload starts).</li>
<li><code class="language-plaintext highlighter-rouge">escapeTelnet</code>: Optional; If set to <code class="language-plaintext highlighter-rouge">true</code>, escape all internal Telnet related codes such as IACs. This option is required for external protocol handlers such as <code class="language-plaintext highlighter-rouge">sz</code> and <code class="language-plaintext highlighter-rouge">rz</code> that do not escape themselves.</li>
</ul>
<h3 id="adding-your-own">Adding Your Own</h3>
<p>Take a look a the example below as well as <a href="/core/config_default.js">core/config_default.js</a>.</p>
<h4 id="example-file-transfer-protocol-configuration">Example File Transfer Protocol Configuration</h4>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>zmodem8kSexyz : {
name : 'ZModem 8k (SEXYZ)',
type : 'external',
sort : 1,
external : {
sendCmd : 'sexyz',
sendArgs : [ '-telnet', '-8', 'sz', '@{fileListPath}' ],
recvCmd : 'sexyz',
recvArgs : [ '-telnet', '-8', 'rz', '{uploadDir}' ],
recvArgsNonBatch : [ '-telnet', '-8', 'rz', '{fileName}' ],
}
}
</code></pre></div></div>
</div>
<div class="PageNavigation">
<a class="btn" style="float:left;margin-right: 20px;" href="/enigma-bbs/configuration/archivers.html">&laquo; Archivers</a>
<a class="btn" style="float: right;margin-left: 20px" href="/enigma-bbs/configuration/email.html">Email &raquo;</a>
<br clear="both" />
</div>
</section>
</div>
</div>
</div>
</body>
</html>