Tree


.gitignorecommits | blame
9p.7commits | blame
9pclib.ccommits | blame
9pclib.hcommits | blame
LICENSEcommits | blame
Makefile.amcommits | blame
README.mdcommits | blame
TODOcommits | blame
bootstrap*commits | blame
client.ccommits | blame
client.hcommits | blame
compat/
compat.hcommits | blame
configure.accommits | blame
contrib/
control.ccommits | blame
control.hcommits | blame
ctl_parser.ccommits | blame
ctl_parser.hcommits | blame
ftp.ccommits | blame
kamictl.8commits | blame
kamictl.ccommits | blame
kamid.8commits | blame
kamid.ccommits | blame
kamid.conf.5commits | blame
kamid.hcommits | blame
kamiftp.1commits | blame
kamirepl.1commits | blame
kamirepl.ccommits | blame
listener.ccommits | blame
listener.hcommits | blame
log.ccommits | blame
log.hcommits | blame
ninepscript.5commits | blame
ninepscript.8commits | blame
np.ycommits | blame
parse.ycommits | blame
regress/
run-extra-tests.sh*commits | blame
run-tests.sh*commits | blame
sandbox.ccommits | blame
sandbox.hcommits | blame
script.ccommits | blame
script.hcommits | blame
table.ccommits | blame
table.hcommits | blame
table_static.ccommits | blame
utils.ccommits | blame
utils.hcommits | blame

README.md

# kamid -- 9p file server daemon

kamid is a FREE, easy-to-use and portable implementation of a 9p file
server daemon for UNIX-like systems.


## Building

kamid depends on libtls, libevent and yacc/GNU bison.  To build from a
release tarball:

	./configure
	make
	sudo make install # eventually

to build from a git checkout:

	./bootstrap
	./configure
	make


## Usage

In order to run, a `_kamid` user must exists.  The home directory of
`_kamid` should be `/var/empty` or similar.  A configuration file is
also needed.  kamid must be started with root privileges.

A sample configuration file:

```
pki localhost cert "/etc/ssl/localhost.crt"
pki localhost key  "/etc/ssl/private/localhost.key"

table users { "SHA256:..." => "op" }

listen on localhost port 1337 tls pki localhost auth <users>
```


## Testing

The regression suite needs to be run with root privileges, since it
has to spawn a subprocess that needs to `chroot(2)` itself.  To run
the tests, issue

	$ make ninepscript && sudo ./run-tests.sh

The regression uses a custom DSL, `ninepscript`, to run the tests.
See `regress/sample.9ps` for an example of the grammar.
`contrib/9ps-mode.el` is the major mode for Emacs.

There's another regression suite written in common lisp in
`regress/lisp/9p-test`; it depends on other common lisp libraries
available through quicklisp.  To run it execute

	$ DOAS=sudo ./run-extra-tests.sh

(leave `DOAS=sudo` out if you have doas installed and configured)


## License

kamid is released under a BSD-like license.  The bulk of the code is
under the ISC license, but some file are BSD2 or BSD3.

`regress/lisp/9p-test/` (the common lisp regression suite) is released
under the GNU GPLv3+.