irker.pyc
+irker.1
+irker.html
irc
irc-*/
--- /dev/null
+ BSD LICENSE
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+Neither name of the this project nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- /dev/null
+# Makefile for the irker relaying tool
+
+VERS=$(shell irker.py -V | sed 's/irker version //')
+
+docs: irker.html irker.1
+
+irker.1: irker.xml
+ xmlto man irker.xml
+irker.html: irker.xml
+ xmlto html-nochunks irker.xml
+
+install: irker.1 uninstall
+ install -m 755 -o 0 -g 0 -d $(ROOT)/usr/bin/
+ install -m 755 -o 0 -g 0 irker.py $(ROOT)/usr/bin/irker.py
+ install -m 755 -o 0 -g 0 -d $(ROOT)/usr/share/man/man1/
+ install -m 755 -o 0 -g 0 irker.1 $(ROOT)/usr/share/man/man6/irker.1
+
+uninstall:
+ rm -f ${ROOT}/usr/bin/irker.py ${ROOT}/usr/share/man/man1/irker.1
+
+clean:
+ rm -f irker irker.1 irker-*.rpm irker-*.tar.gz *~
+ rm -f SHIPPER.* *.html
+
+SOURCES = README COPYING irker.py Makefile irker.xml
+
+version:
+ @echo $(VERS)
+
+irker-$(VERS).tar.gz: $(SOURCES) irker.1
+ @ls $(SOURCES) irker.1 | sed s:^:irker-$(VERS)/: >MANIFEST
+ @(cd ..; ln -s irker irker-$(VERS))
+ (cd ..; tar -czf irker/irker-$(VERS).tar.gz `cat irker/MANIFEST`)
+ @(cd ..; rm irker-$(VERS))
+
+dist: irker-$(VERS).tar.gz
+
+release: irker-$(VERS).tar.gz irker.html
+ shipper -u -m -t; make clean
--- /dev/null
+ irker - submission tool for IRC notifications
+
+irker is a specialized IRC client that runs as a daemon, allowing
+other programs to ship IRC notifications by sending JSON objects to a
+listening socket. It is meant to be used by hook scripts in version-
+control repositories, allowing them to send commit notifications
+to project IRC channels.
+
+ Eric S. Raymond
+ August 2012
--- /dev/null
+# This is not a real Debian control file, though the syntax is compatible.
+# It's project metadata for the shipper tool
+
+Package: irker
+
+Description: IRC client that runs as a daemon accepting JSON notifications
+ allowing other programs to ship IRC notifications by sending JSON
+ objects to a listening socket. It is meant to be used by hook scripts
+ in version- control repositories, allowing them to send commit
+ notifications to project IRC channels.
+
+XBS-Destinations: freecode
+
+Homepage: http://www.catb.org/~esr/irker
+
+#XBS-Logo: shipper-logo.png
+
+XBS-Project-Tag-List: IRC, client
+
<refentry id='irker.1'>
<refmeta>
<refentrytitle>irker</refentrytitle>
-<manvolnum>8</manvolnum>
+<manvolnum>1</manvolnum>
<refmiscinfo class='date'>Aug 27 2012</refmiscinfo>
<refmiscinfo class='source'>irker</refmiscinfo>
<refmiscinfo class='product'>irker</refmiscinfo>
<cmdsynopsis>
<command>irker</command>
- <option>-t</option>
- <option>-p <replaceable>number</replaceable></option>
- <option>-n <replaceable>namesuffix</replaceable></option>
- <option>-d <replaceable>debuglevel</replaceable></option>
- <option>-V</option>
+ <arg>-t</arg>
+ <arg>-p <replaceable>number</replaceable></arg>
+ <arg>-n <replaceable>namesuffix</replaceable></arg>
+ <arg>-d <replaceable>debuglevel</replaceable></arg>
+ <arg>-V</arg>
</cmdsynopsis>
</refsynopsisdiv>
<programlisting>
{"to":"irc://chat.freenode.net/git-ciabot", "privmsg":"Hello, world!"}
{"to":["irc://chat.freenode.net/git-ciabot","irc://chat.freenode.net/gpsd"],"privmsg":"Multichannel test"}
+{"to":"irc://chat.hypothetical.net:6668/git-ciabot", "privmsg":"Hello, world!"}
</programlisting>
-</para>
+The host part of the URL may have a port-number suffix separated by a
+colon, as shown in the third example; otherwise
+<application>irker</application> sends messages to the the default 6667 IRC
+port of each server.</para>
</refsect1>
-<refsect1 id='authors'><title>AUTHORS</title>
-<para>Eric S. Raymond <esr@snark.thyrsus.com>. See ESR's home
+<refsect1 id='options'><title>OPTIONS</title>
+
+<para><application>irker</application> takes the following options:</para>
+
+<variablelist>
+<varlistentry>
+<term>-n</term>
+<listitem><para>Takes a following value which sets the name suffix
+for the nicks that irker uses. The default suffix is derived from the
+FQDN of the site on which irker is running; the intent is to avoid
+nick collisions by instances running on different sites.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>-p</term>
+<listitem><para>Takes a following value which sets the port on which the
+daemon will listen.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>-t</term>
+<listitem><para>Accept TCP connections. The default is UDP. This choice
+trades slightly increased latency for reliability of delivery.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>-d</term>
+<listitem><para>Takes a following value, seting the debugging level from
+it. This option will generally only be of interest to developers;
+consult the source code for details.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>-V</term>
+<listitem><para>Write the program version to stdout and
+terminate.</para></listitem>
+</varlistentry>
+</variablelist>
+
+</refsect1>
+
+<refsect1 id='authors'><title>AUTHOR</title>
+<para>Eric S. Raymond <esr@snark.thyrsus.com>. See the project
page at <ulink
-url='http://www.catb.org/~esr/'>http://www.catb.org/~esr/</ulink> for
-updates and other resources.</para>
+url='http://www.catb.org/~esr/'>http://www.catb.org/~esr/irker</ulink>
+for updates and other resources. The implementation uses the Python IRC
+library </para>
</refsect1>
<refsect1 id='bugs'><title>LIMITATIONS</title>
-<para></para>
+<para>We accept requests via UDP, optimizing for lowest latency and
+network load by avoiding TCP connection setup time; the cost is that
+delivery is not reliable in the face of packet loss. But see the
+description of the <option>-t</option> option above.</para>
+
+<para>No attempt at a content-based spam-filtering facility has been
+made, since IRC servers have to do that anyway. An
+<application>irker</application> instance with a publicly-accessible
+request socket could complicate spam-blocking by making it easy for
+spammers to submit while hiding their IP addresses; the better way to
+deploy, then, is on places like project-hosting sites where the
+<application>irker</application> socket can be visible from commit-hook
+code but not exposed to the outside world.</para>
</refsect1>
</refentry>