v1.2.2
Some checks failed
Build and Release / build-and-release (push) Failing after 10m56s
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.
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 manualCOMET.SAM— Annotated sample configurationFSP-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
- FidoNet: 1:218/720
- Email: ken@rail-city.net
License
GPL-2.0
Description
Releases
5
Comet 1.2-1
Latest
Languages
JavaScript
57.2%
Pascal
39.8%
Shell
1.3%
CSS
0.8%
HTML
0.7%
Other
0.2%