Written by hannes
Classified under: active projectprotocol
Published: 2016-08-24 (last updated: 2016-08-24)
  • code
  • Status: works, needs more testing and support for more features

Telnet - TERminal over NETwork - describes NVT (network virtual terminal) and operations on it. It allows a local client to access a remote terminal interface.

I've heard that unikernels are hard to debug and inspect; also I used a lisp machine toplevel (see this video) and worked (a decade ago) on an interactive shell for a network stack (see this code) (and screenshots, etc. in the same repository) -- inspired by Cisco IOS / CatOS / Juniper shells.

David implemented a nice tty library in OCaml, which I want to use to develop an interactive adventure game ^W^Wshell for MirageOS. A telnet server will be a backend of notty (David already did a mirage branch on notty which defines the interface), the application will be something very similar to ocamlnat.

You are concerned about security? Well, maybe talk telnet over TLS (and use X.509 client certificates) :) (a openssl s_client -key mykey.pem -cert mycert.pem -connect mirage | telnet should be sufficient)

Why not SSH? Oh, I'd love to have ssh in pure OCaml, but that'll take some months (I don't know much of the protocol). Anil wrote a partial, slightly bitrot ssh several years ago (which is a good starting point for volunteers who want to implement ssh).

Current status: partially working telnet implementation (on my hard disk) which correctly transmits window size changes and redraws screens, not yet any access control library or shell. I'm lazy (or overloaded with projects) and needed to enjoy the sun and chats with friends in Marrakesh.