-
Notifications
You must be signed in to change notification settings - Fork 5
/
README
99 lines (73 loc) · 4.49 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
This is libsrsirc, version 0.0.14
A lightweight, cross-platform IRC library
Written in portable standard C (C99)
Interface documentation: http://penenen.de/libsrsirc/doxygen/modules.html
Some highlights:
----------------
- Lightweight: libsrsirc is small and uses very little resources; most of
the protocol handling is essentially zero-copy. It does not
try to offer every conceivable feature an IRC lib could
possibly have, if the costs would outweight the gains.
This allows creating thousands of independent instances.
- Portable: libsrsirc is written in portable standard C, with all
platform-specifics cleanly separated from the core library.
It compiles and works on BSD, Linux, Mac OS and even Windows.
Porting it to new platforms is relatively straightforward.
- Robust: libsrsirc is tested against a huge variety of different IRC
networks, and while it is certainly possible for a malicious
IRC server to thoroughly confuse the lib, it will not cause
crashes or security problems. If it does, file a bug report
which will be dealt with promptly.
It will even handle out-of-memory situations gracefully.
- Flexible: libsrsirc supports IPv4 and IPv6. It can optionally link
against OpenSSL for secure IRC connections.
Apart from that, support for connecting to IRC through
HTTP (CONNECT), SOCKS4 and SOCKS5 proxy servers is provided.
- Debuggable: libsrsirc comes with a lot of built-in debug statements,
which can be controlled using an environment variable.
This allows troubleshooting even if using a dedicated
debugger isn't feasible for some reason.
- Useful: libsrsirc should be a decent foundation to build all sort of
IRC-related software upon, from IRC support for a specific
use case in a specific application, to dedicated IRC software
like bots, bouncers, clients.
It comes with 'icat', which implements a netcat-like utility
for writing and reading messages to/from IRC channels.
What libsrsirc does NOT do:
---------------------------
- Servers: libsrsirc can NOT act as an IRC server (currently, anyway,
but it will probably stay that way). While certain functions
might still be useful to help implementing IRC servers
(for example the protocol parser, the casemapping-aware
string comparison and the user and channel maps), the
overall design is clearly that of a client library.
- Transactions: libsrsirc will NOT attempt to keep track of what
client-issued command a given server response refers to.
Doing this involves heuristical approaches because most ircds
aren't exactly pedantic about following the standard -- and
even if they are, there's two standards.
Since libsrsirc cannot possibly know what non-standard
response codes a server could return, it will leave
correlating commands and responses - fortunately rarely
needed for IRC software - to the user.
Quickstart for libsrsirc users:
-------------------------------
- Get a release tarball off the "tar" branch, DO NOT use the
github-internal "release" feature.
I.e. use https://github.com/fstd/libsrsirc/tree/tar
(use "view raw" for downloading)
- Extract the tarball, cd into the resulting directory
- run "./configure && make" to build the lib, "make install" to install.
Quickstart for libsrsirc developers:
------------------------------------
- Clone the repo
- Run ./autogen.sh to setup the autohell.
(This requires autoconf >= 2.69, automake >= 1.14, libtool >= 2.4)
- run "./configure && make" to build the lib, "make install" to install.
- To tear down the autohell, run ./autoclean.sh
See src/helloworld.c for a trivial example application of the lib.
See http://penenen.de/libsrsirc/doxygen/modules.html for documentation
See INSTALL for generic autohell compile/install instructions.
See COPYING for license information (tl;dr: 3-clause BSD)
(C) 2012-2024 Timo Buhrmester <fstd+libsrsirc@pr0.tips>
Contact: #fstd on irc.libera.chat (or by email)