Ken Johnson 0a9eaf2370
Some checks failed
Build and Release / build-and-release (push) Failing after 10m56s
Comet 1.2.2: native protocol now backed by fpc-comet
cometfpc.pas (new, ~620 lines) is a daemon-internal wrapper
that bridges TCometConfig / TCometFileProvider /
TBinkpSendEntry onto fpc-comet's TCometSessionConfig /
IComFileProvider, plus an IComTransport adapter over the
already-accepted TCometSocket and a per-session policy
object that routes auth/freq/lst lookups through the
existing CometCfgGet* helpers.

cometdaemon.pas RunInbound + RunOutbound's Comet branches
now call CometFPRunInbound / CometFPRunOutbound instead of
the procedural CometSessionInit / CometHandshake /
CometXferInit / CometTransfer / CometSessionDone chain.
The cometses + cometxfer units stay in the build for the
moment (still listed in CORE_UNITS) but the daemon no
longer calls them directly; future commits can drop them.

Sibling structure to cometbinkpfpc.pas / fpc-binkp:

  protocol  | wrapper             | library
  ----------+---------------------+--------------
  BinkP     | cometbinkpfpc.pas   | fpc-binkp 0.2.0
  Comet     | cometfpc.pas        | fpc-comet 0.1.0

Both wrappers are daemon-internal glue.  Other consumers of
fpc-binkp / fpc-comet do NOT need them -- the libraries
stand alone and ship with their own examples + tests.

Live validation:
  - Inbound: dialed local 1.2.2 daemon from fpc-comet
    example_outbound (NOPWD path), 82-byte file landed
    byte-identical in inbound dir.
  - Outbound: 1.2.2 daemon's `comet call 1:213/721`
    dialed bbsnode2 (canonical 1.2.1, FreeBSD), negotiated
    X25519+ChaCha20 (CRYPT active), clean session-end.

cm.config grows a SkipBanner flag the wrapper sets so the
engine doesn't re-emit COMET/1.0 -- the daemon's accept
loop already did banner detection (Comet vs BinkP) before
dispatching to cometfpc.

Version bump: COMET_VERSION 1.2.1 -> 1.2.2.
2026-04-22 15:27:19 -07:00
2026-04-09 09:22:48 -07:00

Comet Mailer

A modern FidoNet TCP mailer daemon for the 2020s.

Comet provides direct TCP file transfer with a purpose-built protocol while maintaining full BinkP/1.1 (FTS-1026) compatibility. Both protocols are auto-detected on the same port.

Features

  • Direct TCP file transfer with SHA-256 verification
  • Bidirectional transfer with sliding window flow control
  • ED25519 public-key authentication (no shared secrets needed)
  • CRAM-MD5 password authentication (passwords never sent in clear)
  • X25519 + ChaCha20 encryption (when using ED25519 auth)
  • Full BinkP/1.1 compatibility (FTS-1026) with auto-detection
  • Inline file requests (Hydra-style, within active sessions)
  • FTS-5 nodelist integration (automatic IP/port lookup)
  • BSO outbound scanning with point directory support
  • Optional zlib compression (per-block, automatic)
  • Multi-session daemon with per-node BSY locking
  • Config hot-reload (edit config while Comet is running)
  • Embeddable in BBS software via log/event callbacks and stream API
  • Cross-platform: Linux, FreeBSD, DOS, Windows, OS/2

Quick Start

comet keygen                    # generate ED25519 keypair
comet showkey                   # print public key from config
comet                           # run as daemon (listen + poll)
comet call 1:213/723            # single outbound call
comet -c /path/to/comet.cfg     # use alternate config file
comet -d call 1:213/723         # debug/trace mode

See COMET.SAM for an annotated sample configuration.

Platforms

Platform Status Notes
Linux x86-64 Production Primary platform
FreeBSD x86-64 Production Cross-compiled from Linux
DOS (FreeDOS) Production Requires CWSDPMI + Watt-32 packet driver
Windows 64-bit In progress WinSock2, needs type compatibility fixes
OS/2 Experimental FPC OS/2 Sockets unit, untested

Building

Requires Free Pascal Compiler (FPC) 3.2.x.

make              # Linux (default)
make freebsd      # FreeBSD cross-compile
make dos          # DOS cross-compile
make win64        # Windows 64-bit cross-compile

Documentation

  • COMET.DOC — Full operator manual
  • COMET.SAM — Annotated sample configuration
  • FSP-COMET.001 — Wire protocol specification

Tested Against

  • binkd (reference BinkP implementation)
  • Radius/Argus 4.010 (CRAM-MD5 + CRYPT)
  • BinkIT/sbbs 2.42 (CRAM-MD5)

Contact

License

GPL-2.0

Description
Bringing Fidonet Protocols into the 21st century
Readme 8.6 MiB
Comet 1.2-1 Latest
2026-04-09 16:30:01 +00:00
Languages
JavaScript 57.2%
Pascal 39.8%
Shell 1.3%
CSS 0.8%
HTML 0.7%
Other 0.2%