spongy/INSTALL.md

2.5 KiB

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 :)