2015-04-30 01:39:08 +02:00
|
|
|
uirc3
|
|
|
|
=====
|
|
|
|
The unethical IRC trinity. This project consists of an experimental IRC client,
|
|
|
|
daemon, and bot. It's all you're ever going to need for chatting.
|
2014-06-14 20:26:28 +02:00
|
|
|
|
2015-04-30 01:39:08 +02:00
|
|
|
All of them have these potentially interesting properties:
|
|
|
|
- full IPv6 support
|
|
|
|
- SSL/TLS support, including client certificates
|
|
|
|
- minimal dependencies
|
|
|
|
- very compact and easy to hack on
|
2014-06-14 20:26:28 +02:00
|
|
|
|
2015-04-30 01:39:08 +02:00
|
|
|
degesch
|
|
|
|
-------
|
|
|
|
The IRC client. I thought it would be interesting to build an IRC client on
|
|
|
|
top of libreadline. At least it's way simpler than doing it in ncurses.
|
|
|
|
The interface should feel familiar for weechat users.
|
|
|
|
|
|
|
|
It's the youngest and largest of them all and currently under heavy development.
|
2014-06-14 20:26:28 +02:00
|
|
|
|
2014-07-09 01:54:50 +02:00
|
|
|
kike
|
|
|
|
----
|
2015-04-30 01:39:08 +02:00
|
|
|
The IRC daemon. It mostly follows RFCs but it can't form networks consisting
|
|
|
|
of multiple servers, or use any services packages, such as Atheme. (Mostly due
|
|
|
|
to the protocol being incredibly ugly and tricky to implement correctly, with
|
|
|
|
the poor quality of the RFCs not helping much). It is designed to be used as
|
|
|
|
a regular user application rather than a system daemon.
|
2014-07-21 05:10:25 +02:00
|
|
|
|
2014-08-09 23:57:54 +02:00
|
|
|
It is complete enough to be useful but there are still some things that need to
|
|
|
|
be resolved before I can consider it stable.
|
2014-07-21 05:10:25 +02:00
|
|
|
|
2015-04-30 01:39:08 +02:00
|
|
|
Notable features:
|
|
|
|
- SSL/TLS autodetection (why doesn't everyone have this?)
|
2014-08-10 03:47:50 +02:00
|
|
|
- IRCop authentication through SSL/TLS client certificates
|
2015-04-30 01:39:08 +02:00
|
|
|
- epoll support on Linux; it should be able to handle quite a number of users
|
2014-08-10 03:47:50 +02:00
|
|
|
|
2015-04-30 01:39:08 +02:00
|
|
|
ZyklonB
|
2015-04-11 21:05:13 +02:00
|
|
|
-------
|
2015-04-30 01:39:08 +02:00
|
|
|
The IRC bot. It builds upon the concept of my other VitaminA IRC bot. The main
|
|
|
|
characteristic of these two bots is that they run plugins as coprocesses, which
|
|
|
|
allows for enhanced reliability and programming language freedom.
|
|
|
|
|
|
|
|
While originally intended to be a simple C99 rewrite of the original bot, which
|
|
|
|
was written in the GNU dialect of AWK, it fairly quickly became a playground
|
|
|
|
where I added everything that seemed nice.
|
|
|
|
|
|
|
|
Notable features:
|
|
|
|
- resilient against crashes, server disconnects and timeouts
|
|
|
|
- SOCKS support (even though socksify can add that easily to any program)
|
2015-04-11 21:05:13 +02:00
|
|
|
|
2015-02-11 01:53:19 +01:00
|
|
|
Building
|
|
|
|
--------
|
2015-03-23 22:53:50 +01:00
|
|
|
Build dependencies: CMake, pkg-config, help2man, awk, sh, liberty (included)
|
2015-04-30 01:39:08 +02:00
|
|
|
Runtime dependencies: openssl, curses (degesch), readline (degesch)
|
2014-07-21 05:10:25 +02:00
|
|
|
|
2015-04-30 01:39:08 +02:00
|
|
|
$ git clone https://github.com/pjanouch/uirc3.git
|
2015-02-28 20:07:37 +01:00
|
|
|
$ git submodule init
|
|
|
|
$ git submodule update
|
2015-02-11 01:53:19 +01:00
|
|
|
$ mkdir build
|
|
|
|
$ cd build
|
2015-02-26 22:55:25 +01:00
|
|
|
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug
|
2014-07-21 05:10:25 +02:00
|
|
|
$ make
|
|
|
|
|
2015-02-11 01:53:19 +01:00
|
|
|
To install the application, you can do either the usual:
|
2015-02-26 22:55:25 +01:00
|
|
|
# make install
|
2015-02-11 01:53:19 +01:00
|
|
|
|
|
|
|
Or you can try telling CMake to make a package for you. For Debian it is:
|
|
|
|
$ cpack -G DEB
|
2015-04-30 01:39:08 +02:00
|
|
|
# dpkg -i uirc3-*.deb
|
2014-07-21 05:10:25 +02:00
|
|
|
|
2015-02-11 01:53:19 +01:00
|
|
|
Note that for versions of CMake before 2.8.9, you need to prefix cpack with
|
|
|
|
`fakeroot' or file ownership will end up wrong.
|
|
|
|
|
|
|
|
Running
|
|
|
|
-------
|
2015-05-03 19:39:30 +02:00
|
|
|
`degesch' has in-program configuration. Just run it and type "/help".
|
|
|
|
|
|
|
|
For the rest you might want to generate a configuration file:
|
2015-02-11 01:53:19 +01:00
|
|
|
$ zyklonb --write-default-config
|
|
|
|
$ kike --write-default-config
|
2014-07-21 05:10:25 +02:00
|
|
|
|
|
|
|
After making any necessary edits to the file (there are comments to aid you in
|
|
|
|
doing that), simply run the appropriate program with no arguments:
|
2015-02-11 01:53:19 +01:00
|
|
|
$ zyklonb
|
|
|
|
$ kike
|
2014-07-21 05:10:25 +02:00
|
|
|
|
2015-05-03 19:39:30 +02:00
|
|
|
`ZyklonB' stays running in the foreground, therefore I recommend launching it
|
|
|
|
inside a Screen or tmux session. `kike', on the other hand, immediately forks
|
2015-02-26 22:55:25 +01:00
|
|
|
into the background. Use something like `killall' if you want to terminate it.
|
2014-07-09 01:54:50 +02:00
|
|
|
|
2014-08-08 01:26:56 +02:00
|
|
|
Client Certificates
|
|
|
|
-------------------
|
|
|
|
`kike' uses SHA1 fingerprints of SSL client certificates to authenticate users.
|
2014-08-13 19:22:43 +02:00
|
|
|
To get the fingerprint from a certificate file in the required form, use:
|
|
|
|
$ openssl x509 -in public.pem -outform DER | sha1sum
|
2014-08-08 01:26:56 +02:00
|
|
|
|
2014-07-09 01:54:50 +02:00
|
|
|
Disclaimer
|
|
|
|
----------
|
|
|
|
I am not an antisemitist, I'm just being an offensive asshole with the naming.
|
2014-07-21 05:10:25 +02:00
|
|
|
And no, I'm not going to change the names.
|
2014-07-09 01:54:50 +02:00
|
|
|
|
2014-06-14 20:26:28 +02:00
|
|
|
License
|
|
|
|
-------
|
2015-04-30 01:39:08 +02:00
|
|
|
`uirc3' is written by Přemysl Janouch <p.janouch@gmail.com>.
|
2014-06-14 20:26:28 +02:00
|
|
|
|
|
|
|
You may use the software under the terms of the ISC license, the text of which
|
|
|
|
is included within the package, or, at your option, you may relicense the work
|
|
|
|
under the MIT or the Modified BSD License, as listed at the following site:
|
|
|
|
|
|
|
|
http://www.gnu.org/licenses/license-list.html
|