This is pure Erlang 9p2000 (no extensions for now) implementation with some basic filesystems implementation (passthrough unfs and sysfs exposing ERTS informations).
It is first release, very rough at the edges, with very basic connection handling, but is at least minimally functioning. I hope to expand it further to make implementation of custom filesystems much easier and to implement 9p2000 extensions easier.
Currently implemented:
unfs- Unix filesystem passthrough. It supports directory traversal, file reading/writing, but so far no file creation or deletionsysfs-procfs/sysfs-like pseudo-filesystem that is exposing ERTS internals as plain files. For now the accessible informations are - loaded applications and their data (environment, versions, etc. as accessible viaapplication:get_all_key/1), process information (as available viaerlang:process_info/2), and sytem information (as available viaerlang:system_info/1). In versionv0.1.0this whole filesystem is read-only.
Unsupported features:
- No authentication - authentication components are currently completely ignored from implementation
- Only one connection at the time possible - current connection handler is super simple and do not support multiple clients
- Only raw TCP supported - no Unix sockets nor TLS connections at the time of being
- No permission validation - if someone connects and the Erlang can edit file, then they will be able to do so, do not expose that service to untrusted parties
Hex: e9p | Hex
Source: