1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-07 06:03:12 +02:00
Bram Matthys 172ace9750 geoip_maxmind: use our own mmdb implementation
This is mainly due to licensing. The libmaxminddb library uses the
Apache license, which meant if we would compile it in by default it
would effectively transform our "GPLv2 or later" to "GPLv3 or later".
Our implementation is ISC licensed, so we can include and enable it
by default and keep things at "GPLv2 or later". This is also why we
used geoip_classic in the first place as default and compiled in,
and not the mmdb variant.

The mmdb.c is based on the specification, using the Go implementation
as a reference during development (ISC licensed), initially implemented
with the help of Claude Opus 4.6. After that substantial changes were
made to make it match UnrealIRCd's style and to make things less error
prone: C style changes, allocation and zero termination of strings in
the library, auto-NULL in variadic functions so the caller cannot
forget NULL there (similar to our unreal_log/do_unreal_log), using
enums as the return type instead of int (similar to curl), adding
doxygen docs, etc.

This also means the old mmdb library dependency has been dropped,
including from configure/autoconf.

At the moment we still use the geoip classic library by default,
including those DB files. The idea is we will switch over sometime
later after this current new MMDB stuff has received more testing.

This also makes us more flexible, since .mmdb files have become the
de-facto standard for pretty much all geoip vendors.
2026-03-22 12:10:18 +01:00
2026-03-06 08:23:30 +01:00
2023-10-04 05:11:12 +00:00
2026-03-06 08:23:30 +01:00
2021-12-06 13:36:12 +01:00
2000-02-28 22:45:44 +00:00
2026-03-04 09:18:20 +01:00

Mastodon Follow Twitter Follow Linux CI

About UnrealIRCd

UnrealIRCd is an Open Source IRC Server, serving thousands of networks since 1999. It runs on Linux, OS X and Windows and is currently the most widely deployed IRCd with a market share of 37%. UnrealIRCd is a highly advanced IRCd with a strong focus on modularity and security. It uses an advanced and highly configurable configuration file. Other key features include: full IRCv3 support, SSL/TLS, cloaking, JSON-RPC, advanced anti-flood and anti-spam systems, GeoIP, remote includes, and lots of other features. We are also particularly proud on our extensive online documentation.

Versions

  • UnrealIRCd 6 is the stable series since December 2021. It is the only supported version.
  • For full details of release scheduling and EOL dates, see UnrealIRCd releases on the wiki

How to get started

Follow the installation guide on the wiki. See:

Documentation and Support

You can find all documentation online at: https://www.unrealircd.org/docs/

We also have a good FAQ: https://www.unrealircd.org/docs/FAQ

If you are in need of support, you can pop up on #unreal-support on irc.unrealircd.org or ask your question on the forums.

Supported systems

We try to support all major *NIX systems: all Linux distros but also NetBSD, OpenBSD and macOS, provided the OS version was released within the past ~5 years.

We use a private BuildBot instance to test each commit. The tested systems are (others are likely to work too):

  • Linux: Debian (10, 11, 12, 13), Ubuntu (18.04, 20.04, 22.04, 24.04, 26.04)
  • FreeBSD: 15
  • Windows: Visual Studio 2019

UnrealIRCd is architecture-agnostic. Most of the BuildBot workers run on x64 but we also have some on x86 and arm64 to ensure these work as well.

S
Description
Languages
C 94.7%
M4 1.7%
Shell 1.5%
Rich Text Format 1%
Makefile 0.6%
Other 0.5%