118 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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.
 | |
| 
 | |
| 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
 | |
| 
 | |
| 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.
 | |
| 
 | |
| kike
 | |
| ----
 | |
| 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.
 | |
| 
 | |
| It is complete enough to be useful but doesn't support online configuration
 | |
| changes or limits of almost any kind yet.
 | |
| 
 | |
| Notable features:
 | |
|  - SSL/TLS autodetection (why doesn't everyone have this?)
 | |
|  - IRCop authentication through SSL/TLS client certificates
 | |
|  - epoll support on Linux; it should be able to handle quite a number of users
 | |
| 
 | |
| ZyklonB
 | |
| -------
 | |
| 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)
 | |
| 
 | |
| Building
 | |
| --------
 | |
| Build dependencies: CMake, pkg-config, help2man, awk, sh, liberty (included)
 | |
| Runtime dependencies: openssl, curses (degesch),
 | |
|                       readline or libedit >= 2013-07-12 (degesch)
 | |
| 
 | |
|  $ git clone https://github.com/pjanouch/uirc3.git
 | |
|  $ git submodule init
 | |
|  $ git submodule update
 | |
|  $ mkdir build
 | |
|  $ cd build
 | |
|  $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug \
 | |
|             -DWANT_READLINE=ON -DWANT_LIBEDIT=OFF
 | |
|  $ make
 | |
| 
 | |
| To install the application, you can do either the usual:
 | |
|  # make install
 | |
| 
 | |
| Or you can try telling CMake to make a package for you.  For Debian it is:
 | |
|  $ cpack -G DEB
 | |
|  # dpkg -i uirc3-*.deb
 | |
| 
 | |
| 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
 | |
| -------
 | |
| `degesch' has in-program configuration.  Just run it and type "/help".
 | |
| 
 | |
| For the rest you might want to generate a configuration file:
 | |
|  $ zyklonb --write-default-config
 | |
|  $ kike --write-default-config
 | |
| 
 | |
| 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:
 | |
|  $ zyklonb
 | |
|  $ kike
 | |
| 
 | |
| `ZyklonB' stays running in the foreground, therefore I recommend launching it
 | |
| inside a Screen or tmux session.  `kike', on the other hand, immediately forks
 | |
| into the background.  Use something like `killall' if you want to terminate it.
 | |
| 
 | |
| Client Certificates
 | |
| -------------------
 | |
| `kike' uses SHA1 fingerprints of SSL client certificates to authenticate users.
 | |
| To get the fingerprint from a certificate file in the required form, use:
 | |
|  $ openssl x509 -in public.pem -outform DER | sha1sum
 | |
| 
 | |
| Contributing and Support
 | |
| ------------------------
 | |
| Use this project's GitHub to report any bugs, request features, or submit pull
 | |
| requests.  If you want to discuss this project, or maybe just hang out with
 | |
| the developer, feel free to join me at irc://anathema.irc.so, channel #anathema.
 | |
| 
 | |
| Disclaimer
 | |
| ----------
 | |
| I am not an antisemitist, I'm just being an offensive asshole with the naming.
 | |
| And no, I'm not going to change the names.
 | |
| 
 | |
| License
 | |
| -------
 | |
| `uirc3' is written by Přemysl Janouch <p.janouch@gmail.com>.
 | |
| 
 | |
| 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
 |