A testable implementation of telnet and as many of its RFCs as are viable, written with MUDs in mind. Every option is a plugin; the interpreter is a state machine over the byte stream; all outgoing writes are serialized for you.
dotnet add package TelnetNegotiationCore- Getting started — the builder, one connection, end to end.
- Protocols — every RFC and MUD specification supported, and the plugin for it.
- Builder reference — every callback and setting in one list.
| Page | What it covers |
|---|---|
| Getting started | TelnetInterpreterBuilder, BuildAndStartAsync, AddDefaultMUDProtocols |
| Dependency injection | AddTelnetServer() / AddTelnetClient(), Kestrel, ITelnetInterpreterFactory |
| Writing a client | A TcpClient connection, wired up |
| Writing a server | A Kestrel ConnectionHandler, and the MSDP server model |
| Saying who your application is | ClientIdentity, and the MTTS bits that are calculated rather than claimed |
| Detecting prompts | EOR, Go-Ahead and Packet Patch — three sources, one callback |
| Keep-alive | IAC NOP on an idle connection, and what it does not prove |
| Managing the read loop yourself | UsePipe, UseStream, OnNegotiation, InterpretByteArrayAsync |
| Implementing an authentication mechanism | Kerberos, SRP, RSA and TLS on top of RFC 2941 |
| Line endings and carriage returns | CR LF, CR NUL and bare CR, and the three modes for choosing what they mean |
| The property-based regression suite | Seven invariants over generated input, and how to read a counterexample |
- Limits on untrusted input — what a peer can grow, and what happens at the ceiling.
- Generated telnet machine (Mermaid) — the state tree and transitions emitted from the same definition the interpreter runs. The adjacent Graphviz source is generated with it; tests reject drift in either artifact.
- Builder reference — every callback and setting.
- Protocols — one page per telnet option.
- Changelog — every release.
- Security policy — reporting a vulnerability, and how releases are signed.