aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2016-01-22 17:03:05 -0500
committerFranklin Wei <git@fwei.tk>2016-01-22 17:03:05 -0500
commitb33d9c81c116d43b38ceb8b247bd77f9736574b9 (patch)
treeb92a923ffc29ee438c646f4b2b08f5bd588dee2d /README.md
parenta486d4b5e1679e0ddf5a4afa661501afefe4a854 (diff)
downloadnetcosm-b33d9c81c116d43b38ceb8b247bd77f9736574b9.zip
netcosm-b33d9c81c116d43b38ceb8b247bd77f9736574b9.tar.gz
netcosm-b33d9c81c116d43b38ceb8b247bd77f9736574b9.tar.bz2
netcosm-b33d9c81c116d43b38ceb8b247bd77f9736574b9.tar.xz
PuTTY compatibility, lots of other stuff
Diffstat (limited to 'README.md')
-rw-r--r--README.md19
1 files changed, 15 insertions, 4 deletions
diff --git a/README.md b/README.md
index d784373..bbf3a74 100644
--- a/README.md
+++ b/README.md
@@ -8,9 +8,9 @@ features might drift out of existence without prior warning!
### Prerequisites:
-* libgcrypt
+* openssl
* libev
-* linux >= 3.4 (need "packet mode" pipes)
+* linux >= 3.4 (for "packet mode" pipes)
* glibc >= 2.9
### Compiling
@@ -19,6 +19,17 @@ features might drift out of existence without prior warning!
This gives you the executable in `build/unix.bin`.
+### Running
+
+If you want to listen on a privileged port (below 1024), you will
+either have to run the executable as root (not recommended), or set
+the CAP_NET_BIND_SERVICE capability on Linux:
+
+ sudo setcap 'cap_net_bind_service=+ep' build/unix.bin
+
+If running as root, you will need an unprivileged user called 'nobody'
+on your system in order for things to work.
+
## Todo List
* World persistence (partial)
@@ -29,6 +40,8 @@ This gives you the executable in `build/unix.bin`.
## Internal Design
+### Child-Master Requests
+
A child process is spawned for every client that connects. There are
two pipes created for every child: a pipe for the child to write to,
and a pipe for the master to write to.
@@ -36,8 +49,6 @@ and a pipe for the master to write to.
Both of these pipes are created in "packet mode" (see pipe(2)), and
therefore require at least linux 3.4 and glibc 2.9.
-### Child-Master Requests
-
Many operations, such as listing clients, require the help of the
master process. To request an operation, the child writes it's request
data to it's pipe to the parent. The size of the request MUST be less