Skip to content

phlegyas: an implementation of 9P2000 in Clojure.

License

Notifications You must be signed in to change notification settings

dspearson/phlegyas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plan 9 Filesystem Protocol, as implemented in Clojure.

Build Status

[phlegyas "0.1.8"]

The vast majority of the protocol-level documentation was sourced from the wonderful Plan 9 from User Space project.

I have copied the test resources from droyo's styx package, credit due for making it available.

Run lein test to verify things work as they should. Currently, 100% of the provided framedumps are successfully handled, hopefully indicating that this is fully up to spec.

Note the field names in types.clj. The assemble-packet function will take a map of these and create a byte-array for you. disassemble-packet will do the reverse.

Notes

An example server is available (see the phlegyas.server namespace).

Client routines are also available (see the phlegyas.client namespace).

For testing, build plan9port (will require compilers & development headers):

git clone https://github.com/9fans/plan9port.git && cd plan9port && ./INSTALL

Or, alternatively, if you have Docker installed, there is a project that will do this for you inside a container, so you don't have to touch your base system.

Then, run the built 9P FUSE client, e.g.:

9pfuse -D 'tcp!localhost!10001' mountpoint

The example VFS layer will create a single filesystem for attaching, and some example files within, with both dynamic and static content (see the phlegyas.vfs namespace).

TODO

Authentication is not yet supported. The example VFS is rudimentary and leaves room for improvement.