spongy/INSTALL.md

110 lines
2.5 KiB
Markdown

Spongy Server Installation
==========================
You gotta make a base directory with an `authtok` file,
and a subdirectory for every server you want to connect to.
BASE_DIRECTORY
+-- slashnet
| +-- handler
| +-- config/
| | +-- server
| | +-- gecos
| | +-- nick
| +-- log/
| | +-- 2015-01-29T19:56:27Z.log
| | +-- 2015-01-29T20:01:15Z.log
| | +-- 2015-01-29T20:41:40Z.log
| | +-- 2015-01-29T20:41:48Z.log
| | +-- 2015-01-29T20:41:56Z.log
| | +-- 2015-01-29T20:42:44Z.log
| +-- outq/
+-- oftc
+-- server3
+-- server4
`config` directory
------------------
The `config` directory in a server directory must have certain files:
* `server` is a list of servers to try and connect to, in the form `hostname:port`
* `gecos` is your "Real Name"
* `nick` is a list of nicknames you'd like to use
The lists are gone through starting with the first entry until one sticks.
`outq` directory
----------------
The `outq` directory is monitored by spongy.
When a new file shows up, its contents are spit out verbatim
over the server connection.
So if you want to send a message to a channel,
do something like this:
$ echo 'PRIVMSG #channel :hello world' > outq/$$.$(date +%s)
Starting up
-----------
Pretty easy:
$ cd BASE_DIRECTORY; /path/to/spongy
Spongy will go off and connect to every configured server in BASE_DIRECTORY.
Spongy CGI Configuration
========================
If you'd like to run `spongy.cgi`,
that's fine,
but you have to create a file
called `spongy.basedir`
in the same directory as the CGI.
You can do it like this:
$ echo '/home/neale/BASE_DIRECTORY' > spongy.basedir
And then,
in `BASE_DIRECTORY`,
you need a file called `auth`
with a sha256 checksum of the authorization token
you want to use in the client.
You can make it like this:
$ printf 'my fabulous token' | sha256sum | cut -d\ -f1 > BASE_DIRECTORY
Permissions
-----------
There are a lot of different ways to set up permissions.
Here's what I suggest:
make `spongy.cgi` setuid to you.
$ chmod +s spongy.cgi
If it's setuid,
you don't need to make your config file
(or any other files)
readable by the user that
runs the web server.
Sadly,
Apache has a whole bunch of weirdness in place
which prevents setuid CGI from working
without a lot of configuration twiddling.
But it also has its own mechanism for running CGI
as the user who owns it.
So if you're using Apache,
please send me a recipe for your solution,
and I'll add it to the distribution :)