Experimental IRC client, daemon and bot
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.adoc 5.0KB

4 years ago
5 years ago
4 years ago
4 years ago
5 years ago
4 years ago
4 years ago
5 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. uirc3
  2. =====
  3. :compact-option:
  4. The unethical IRC trinity. This project consists of an experimental IRC client,
  5. daemon, and bot. It's all you're ever going to need for chatting, as long as
  6. you can make do with minimalist software.
  7. All of them have these potentially interesting properties:
  8. - full IPv6 support
  9. - TLS support, including client certificates
  10. - minimal dependencies
  11. - very compact and easy to hack on
  12. - permissive license
  13. degesch
  14. -------
  15. The IRC client. It is largely defined by being built on top of GNU Readline
  16. that has been hacked to death. Its interface should feel somewhat familiar for
  17. weechat or irssi users.
  18. This is the largest application within the project. It has most of the stuff
  19. you'd expect of an IRC client, such as being able to set up multiple servers,
  20. a powerful configuration system, integrated help, text formatting, CTCP queries,
  21. automatic splitting of overlong messages, autocomplete, logging to file,
  22. command aliases and rudimentary support for Lua scripting.
  23. kike
  24. ----
  25. The IRC daemon. It is designed to be used as a regular user application rather
  26. than a system-wide daemon. If all you want is a decent, minimal IRCd for
  27. testing purposes or a small network of respectful users (or bots), this one will
  28. do it just fine.
  29. Notable features:
  30. - TLS autodetection (why doesn't everyone have this?), using secure defaults
  31. - IRCop authentication via TLS client certificates
  32. - epoll/kqueue support; this means that it should be able to handle quite
  33. a number of user connections
  34. - partial IRCv3 support
  35. Not supported:
  36. - server linking (which also means no services); I consider existing protocols
  37. for this purpose ugly and tricky to implement correctly; I've also found no
  38. use for this feature yet
  39. - online changes to configuration; the configuration system from degesch could
  40. be used to implement this feature if needed
  41. - limits of almost any kind, just connections and mode `+l`
  42. ZyklonB
  43. -------
  44. The IRC bot. It builds upon the concept of my other VitaminA IRC bot. The main
  45. characteristic of these two bots is that they run plugins as coprocesses, which
  46. allows for enhanced reliability and programming language freedom.
  47. While originally intended to be a simple rewrite of the original AWK bot in C,
  48. it fairly quickly became a playground, and it eventually got me into writing
  49. the rest of the package.
  50. It survives crashes, server disconnects and timeouts, and also has native SOCKS
  51. support (even though socksify can add that easily to any program).
  52. Building
  53. --------
  54. Build dependencies: CMake, pkg-config, help2man, awk, sh, liberty (included) +
  55. Runtime dependencies: openssl, curses (degesch),
  56. readline >= 6.0 or libedit >= 2013-07-12 (degesch),
  57. lua >= 5.3 (degesch, optional)
  58. $ git clone --recursive https://github.com/pjanouch/uirc3.git
  59. $ mkdir uirc3/build
  60. $ cd uirc3/build
  61. $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug \
  62. -DWANT_READLINE=ON -DWANT_LIBEDIT=OFF -DWANT_LUA=ON
  63. $ make
  64. To install the application, you can do either the usual:
  65. # make install
  66. Or you can try telling CMake to make a package for you. For Debian it is:
  67. $ cpack -G DEB
  68. # dpkg -i uirc3-*.deb
  69. Note that for versions of CMake before 2.8.9, you need to prefix `cpack` with
  70. `fakeroot` or file ownership will end up wrong.
  71. Running
  72. -------
  73. 'degesch' has in-program configuration. Just run it and read the instructions.
  74. For the rest you might want to generate a configuration file:
  75. $ zyklonb --write-default-config
  76. $ kike --write-default-config
  77. After making any necessary edits to the file (there are comments to aid you in
  78. doing that), simply run the appropriate program with no arguments:
  79. $ zyklonb
  80. $ kike
  81. 'ZyklonB' stays running in the foreground, therefore I recommend launching it
  82. inside a Screen or tmux session.
  83. 'kike', on the other hand, immediately forks into the background. Use the PID
  84. file or something like `killall` if you want to terminate it. You can run it
  85. as a `forking` type systemd user service.
  86. Client Certificates
  87. -------------------
  88. 'kike' uses SHA1 fingerprints of TLS client certificates to authenticate users.
  89. To get the fingerprint from a certificate file in the required form, use:
  90. $ openssl x509 -in public.pem -outform DER | sha1sum
  91. Contributing and Support
  92. ------------------------
  93. Use this project's GitHub to report any bugs, request features, or submit pull
  94. requests. If you want to discuss this project, or maybe just hang out with
  95. the developer, feel free to join me at irc://anathema.irc.so, channel #anathema.
  96. Disclaimer
  97. ----------
  98. I am not an antisemitist, I'm just being an offensive asshole with the naming.
  99. And no, I'm not going to change the names.
  100. License
  101. -------
  102. 'uirc3' is written by Přemysl Janouch <p.janouch@gmail.com>.
  103. You may use the software under the terms of the ISC license, the text of which
  104. is included within the package, or, at your option, you may relicense the work
  105. under the MIT or the Modified BSD License, as listed at the following site:
  106. http://www.gnu.org/licenses/license-list.html