-# charybdis
+# solanum ![Build Status](https://github.com/solanum-ircd/solanum/workflows/CI/badge.svg)
-Charybdis is a reference implementation of the IRCv3.1 server component. It is meant to be
-used with an IRCv3-capable services implementation such as [Atheme][atheme] or [Anope][anope].
+Solanum is an IRCv3 server designed to be highly scalable. It implements IRCv3.1 and some parts of IRCv3.2.
- [atheme]: http://www.atheme.net/
+It is meant to be used with an IRCv3-capable services implementation such as [Atheme][atheme] or [Anope][anope].
+
+ [atheme]: https://atheme.github.io/
[anope]: http://www.anope.org/
# necessary requirements
* A supported platform
- * A working dynamic load library.
- * A working lex. Solaris /usr/ccs/bin/lex appears to be broken, on this system flex should be used.
+ * A working dynamic library system
+ * A working lex and yacc - flex and bison should work
+
+# platforms
+
+Solanum is developed on Linux with glibc, but is currently portable to most POSIX-compatible operating systems.
+However, this portability is likely to be removed unless someone is willing to maintain it. If you'd like to be that
+person, please let us know on IRC.
+
+# platform specific errata
+
+These are known issues and workarounds for various platforms.
+
+ * **macOS**: you must set the `LIBTOOLIZE` environment variable to point to glibtoolize before running autogen.sh:
+
+ ```bash
+ brew install libtool
+ export LIBTOOLIZE="/usr/local/bin/glibtoolize"
+ ./autogen.sh
+ ```
+
+ * **FreeBSD**: if you are compiling with ipv6 you may experience
+ problems with ipv4 due to the way the socket code is written. To
+ fix this you must: `sysctl net.inet6.ip6.v6only=0`
+
+ * **Solaris**: you may have to set your `PATH` to include `/usr/gnu/bin` and `/usr/gnu/sbin` before `/usr/bin`
+ and `/usr/sbin`. Solaris's default tools don't seem to play nicely with the configure script. When running
+ as a 32-bit binary, it should be started as:
+
+ ```bash
+ ulimit -n 4095 ; LD_PRELOAD_32=/usr/lib/extendedFILE.so.1 ./solanum
+ ```
+
+# building
+
+```bash
+./autogen.sh
+./configure --prefix=/path/to/installation
+make
+make check # run tests
+make install
+```
+
+See `./configure --help` for build options.
# feature specific requirements
* For SSL/TLS client and server connections, one of:
- * OpenSSL 1.0 or newer
- * LibreSSL
- * mbedTLS
- * GnuTLS
+ * OpenSSL 1.0.0 or newer (`--enable-openssl`)
+ * LibreSSL (`--enable-openssl`)
+ * mbedTLS (`--enable-mbedtls`)
+ * GnuTLS (`--enable-gnutls`)
- * For certificate-based oper CHALLENGE, OpenSSL 1.0 or newer.
+ * For certificate-based oper CHALLENGE, OpenSSL 1.0.0 or newer.
(Using CHALLENGE is not recommended for new deployments, so if you want to use a different TLS library,
feel free.)
- * For ECDHE, OpenSSL 1.0.0 or newer is required. RHEL/Fedora and derivatives like CentOS
- will need to compile OpenSSL from source, as ECC/ECDHE-functionality is removed from
- the OpenSSL package in these distributions.
+ * For ECDHE under OpenSSL, on Solaris you will need to compile your own OpenSSL on these systems, as they
+ have removed support for ECC/ECDHE. Alternatively, consider using another library (see above).
# tips
- * To report bugs in charybdis, visit us at irc.freenode.net #charybdis
+ * To report bugs in Solanum, visit us at `#solanum` on [Libera Chat](https://libera.chat)
- * Please read doc/index.txt to get an overview of the current documentation.
+ * Please read [doc/index.txt](doc/index.txt) to get an overview of the current documentation.
- * The files, /etc/services, /etc/protocols, and /etc/resolv.conf, SHOULD be
- readable by the user running the server in order for ircd to start with
- the correct settings. If these files are wrong, charybdis will try to use
- 127.0.0.1 for a resolver as a last-ditch effort.
+ * Read the [NEWS.md](NEWS.md) file for what's new in this release.
- * FREEBSD USERS: if you are compiling with ipv6 you may experience
- problems with ipv4 due to the way the socket code is written. To
- fix this you must: "sysctl net.inet6.ip6.v6only=0"
-
- * SOLARIS USERS: this code appears to tickle a bug in older gcc and
- egcs ONLY on 64-bit Solaris7. gcc-2.95 and SunPro C on 64bit should
- work fine, and any gcc or SunPro compiled on 32bit.
-
- * SUPPORTED PLATFORMS: this code should compile without any warnings on:
+ * The files, `/etc/services`, `/etc/protocols`, and `/etc/resolv.conf`, SHOULD be
+ readable by the user running the server in order for ircd to start with
+ the correct settings. If these files are wrong, Solanum will try to use
+ `127.0.0.1` for a resolver as a last-ditch effort.
- * FreeBSD 10
- * Gentoo & Gentoo Hardened ~x86/~amd64/~fbsd
- * RHEL 6 / 7
- * Debian Jessie
- * OpenSuSE 11/12
- * OpenSolaris 2008.x?
- * Solaris 10 sparc.
-
- Please let us know if you find otherwise.
- It probably does not compile on AIX, IRIX or libc5 Linux.
+# git access
- * Please read NEWS for information about what is in this release.
+ * The Solanum git repository can be checked out using the following command:
+ `git clone https://github.com/solanum-ircd/solanum`
- * Other files recommended for reading: BUGS, INSTALL
+ * Solanum's git repository can be browsed over the Internet at the following address:
+ https://github.com/solanum-ircd/solanum