Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dspearson/phlegyas
phlegyas: an implementation of 9P2000 in Clojure.
https://github.com/dspearson/phlegyas
9p 9p2000 clojure styx
Last synced: 2 months ago
JSON representation
phlegyas: an implementation of 9P2000 in Clojure.
- Host: GitHub
- URL: https://github.com/dspearson/phlegyas
- Owner: dspearson
- License: isc
- Created: 2019-04-03T20:06:06.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-05T19:31:32.000Z (over 1 year ago)
- Last Synced: 2024-07-28T10:51:46.768Z (6 months ago)
- Topics: 9p, 9p2000, clojure, styx
- Language: Clojure
- Homepage:
- Size: 212 KB
- Stars: 14
- Watchers: 5
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Plan 9 Filesystem Protocol, as implemented in Clojure.
[![Build Status](https://travis-ci.org/dspearson/phlegyas.svg?branch=master)](https://travis-ci.org/dspearson/phlegyas)
```clj
[phlegyas "0.1.8"]
```The vast majority of the protocol-level documentation was sourced from the wonderful [Plan 9 from User Space](https://9fans.github.io/plan9port/man/man9/) project.
I have copied the test resources from [droyo's styx package](https://github.com/droyo/styx/), 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](https://9fans.github.io/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](https://github.com/dspearson/plan9port-docker) 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.