1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-19 14:24:46 +02:00

7407 Commits

Author SHA1 Message Date
Bram Matthys b5f45d0160 Update NULL check in config_item_allowed_for_config_file() - no real issue.
This is unreachable in current code paths, but could be some day.
2026-06-18 19:55:59 +02:00
Bram Matthys 320d2c28ef Fix theoretical OOB write in chmode_str(). In practice this is no issue.
Not in UnrealIRCd itself: it is only used in one place, STATS with a
big buffer. And unrealircd-contrib 3rd party modules has no consumers.
2026-06-18 19:20:26 +02:00
Bram Matthys d7962e1bbb Fix crash (NULL pointer) with old-style set::anti-flood block
(we should actually remove this one day :D)
2026-06-17 20:43:18 +02:00
Bram Matthys e7459df725 Another URL API fix 2026-06-17 20:38:46 +02:00
Bram Matthys 4966b59812 Update release notes
[skip ci]
2026-06-17 19:49:35 +02:00
Bram Matthys c100059fa7 Add new function: append_name_list(). Use it at two places where we
print copy-pastable config blocks. Previously we used add_name_list(),
which uses insert at beginning, which would reverse the order.

Also changed duplicate_name_list() to preserve order. Previously
it reversed the order of all items.
2026-06-17 18:41:09 +02:00
Bram Matthys ce6f078262 Deal better with multiple spkifp, such as ECC + ML-DSA. We now cache them
and "./unrealircd genlinkblock" outputs multiple password ".." { spkifp; }
lines in such a case.

Other than that some cleaning up of recently-added-functions that are
now no longer needed: we now create ctx_link_server and ctx_link_client
that represent set::server-linking::tls-options for incoming and outgoing
links. Which can be NULL, and then we use ctx_server / ctx_client (set::tls).
Also add proper documentation on this.

When using ./unrealircd spkifp, tell ./unrealircd genblock is cooler.
Nah.. it takes more factors into account, genlinkblock, so is preferred :D
2026-06-17 15:45:01 +02:00
Bram Matthys 1162da4a9e * Server linking and certificates: we now treat listener blocks that are
`serversonly` (such as port 6900 in the example.conf) and link { } blocks
  in a different way than regular listen { } blocks:
  * If there are different certificates used in the serversonly listen block
    vs link blocks, then this is almost always means server linking is broken,
    so we now print a warning on boot and rehash.
  * We also print an 'advice' if any of these are not using (long-lived)
    self-signed certificate. This is because CA issued certificates are
    typically not suitable because they typically rotate keys and thus change
    the `spkifp`. Changing spkifp breaks server linking. We will now print
    an advice along with command and config block instructions to fix it.
  * We now use `set::server-linking::tls-options` for link { } blocks
    and listen { } blocks that are `serversonly`. All the rest uses the
    `set::tls` settings by default (eg the regular listen { } block on 6697).
    * This means our guide on
      [Using Let's Encrypt with UnrealIRCd](https://www.unrealircd.org/docs/Using_Let's_Encrypt_with_UnrealIRCd)
      and generic usage is more intuitive. You just set both set settings
      and then no longer need to use any tls-options in listen blocks or link
      blocks. The example conf has also been updated with this.
    * If `set::server-linking::tls-options` is not configured, it defaults
      to `set::tls`, so there is no unexpected behavior change for anyone.
  * In a future release we will make server linking with `spkifp` mandatory,
    so all of this helps with getting people ready for that, making such
    a future transition smooth.

TODO: Update wiki, better wording in release notes, etc.

This also changes the default example conf:

/* RECOMMENDED:
 * Everyone should be using IRC over SSL/TLS on port 6697. However, to use
 * it properly, you have to get a "real" certificate instead of the
 * self-signed default certificate that was generated by the installer.
 * The Let's Encrypt initiative allows you to get a free certificate that is
 * issued by a trusted Certificate Authority. Instructions are at:
 * https://www.unrealircd.org/docs/Using_Let's_Encrypt_with_UnrealIRCd
 *
 * When you follow that guide you will have a "dual certificate" setup:
 * set::tls:
 *   Your trusted CA certificate, served to clients on port 6697.
 *   (key and certificate change and renew every xx days automatically)
 * set::server-linking::tls-options
 *   A long-lived self-signed certificate for server linking, with
 *   a stable 'spkifp' signature that you use in link blocks.
 *   This certificate is used automatically in "serversonly" listen blocks
 *   (port 6900 in this configuration file) and automatically used for all
 *   link { } blocks.
 *
 */
//set {
//      tls {
//              certificate "/etc/letsencrypt/live/irc.example.org/fullchain.pem";
//              key "/etc/letsencrypt/live/irc.example.org/privkey.pem";
//      }
//      server-linking {
//              tls-options {
//                      certificate "tls/server.cert.pem";
//                      key "tls/server.key.pem";
//              }
//      }
//}
2026-06-16 20:50:56 +02:00
Bram Matthys 8d783204dd JSON-RPC: Remote RPC was broken and causing "not authorized" error messages.
This was used by `server.rehash` and `server.module_list`. Plus,
this release `user.get` under some circumstances. This is now
fixed but requires the target server to be on UnrealIRCd 6.2.6.
If the target server does not meet this condition then we error
telling the server "does not support remote JSON-RPC".

This was first reported by AdmiraL- in https://bugs.unrealircd.org/view.php?id=6611
2026-06-13 16:04:43 +02:00
Bram Matthys 2089aa4ec4 In RPC_CALL_ERROR show the actual error 2026-06-13 14:49:11 +02:00
Bram Matthys 7667307b0e JSON-RPC user.get can now expose more fields by forwarding the request
to the server where the user is actually on. Think of idle time etc.

* JSON-RPC: We can now route `user.get` requests to the server that user is
  on. This so we can fetch all fields for that user (including flood
  counters, idle time, snomask) that are normally not available remotely.
  * We do this automatically in `user.get` when `object_detail_level` is 5+.
  * You can force this explicitly with `object_remote_fetch` set to `true`.
    So you can also use it with detail level 2 if you want, e.g. if you
    don't need the flood counters but do want the idle time.
  * When RRPC is not available we answer ourselves (so safe fallback, but
    you won't have the local-only fields).

Oh and we deliberately don't do this in `user.list`, as doing it there
would mean a single request could result in hundreds of semi-`user.get`
calls across multiple servers.
2026-06-13 12:40:44 +02:00
Bram Matthys 65f918e8e9 Add json_expand_flood_counts() and make available in Central Spamreport
and JSON-RPC.

This exposes the newly added flood counters from
4384f1127b and
029675f867 in JSON.

I didn't want to put it in every JSON log message. So right now it
is only in:
* JSON-RPC with object_detail_level >= 5.
* Central Spamreport

I may expand it later to one or a few other areas.
2026-06-13 12:09:09 +02:00
Bram Matthys 3000381493 Fix multiline-concat behavior for fallback clients.
We were merging draft/multiline-concat lines together server-side before
sending them to non-multiline clients. This could truncate oversized merged
lines. We now simply send them as separate lines.

Reported by ProgVal in https://bugs.unrealircd.org/view.php?id=6628
2026-06-13 10:29:46 +02:00
Bram Matthys 029675f867 Similar to previous, add total_channel_flood_count() for +f/+F limits exceeded
* `total_channel_flood_count('..setting..')` returns the number of
  times `+f`/`+F` limits were exceeded by that user in all channels
  the user is or was in. Available are: `nick`, `join`, `knock`, `msg`,
  `ctcp`, `text`, `repeat` and `paste` (and `all` for the sum).
2026-06-13 07:46:51 +02:00
Bram Matthys 4384f1127b Crule: new server_flood_count() for nick, away, join etc floods.
Suggested by westid in https://bugs.unrealircd.org/view.php?id=6477

* New [crule function](https://www.unrealircd.org/docs/Crule) that return
  the number of times a flood was blocked for that user. For example,
  `server_flood_count('away')` returns the number of time away-flood
  was exceeded. Aslo available: `nick`, `join`, `invite`, `knock`,
  `vhost` and `conversations`. Plus, there is `all` for a total of all.
  * This can be used in a security-group::rule or spamfilter::rule.
    Eg: `spamfilter { rule "server_flood_count('nick')>4"; action gline; }`

This also - internally - adds a mechanism to run spamfilter rule-only-
filters after the command handler, whenever a tag value or other thing
changed. That's part of this commit.
2026-06-12 17:43:51 +02:00
Bram Matthys e2ed1ceca2 Load multiline by default and update release notes a little. 2026-06-11 19:57:53 +02:00
Bram Matthys 57ca415c26 Add whitespace deletion in buildvarstring() so template can have a space.
Basically if a $variable is empty, and there is a space before it in the
template string then we delete that space.

May seem (or is) a bit over the top but this way the template stays clean,
and it may be used/useful in other places as well.

This is a behavior change, but I think we can live with it. One can opt-
out via BUILDVARSTRING_KEEP_SPACE_FOR_EMPTY_VAR.
2026-06-11 19:19:53 +02:00
Bram Matthys 5850ec9434 Show TKL IDs (and related spamfilter TKL ID, if any) in TKL_ADD, TKL_DEL,
TKL_EXPIRE and SPAMFILTER_MATCH messages.

This uses the newly added functions log_data_optional_string() and
log_data_optional_name_value(). The first shows the optional string
like "abc" and the second expands to "[name: value]". What's also new
is that both of these will swallow a preceding space if there is no value.
This so you can just use "Something. $optional_string" and it will
expand to "Something." if $optional_string is empty. This makes things
less hacky and more human readable :)
2026-06-10 19:48:38 +02:00
Bram Matthys 62f3cda8f2 Make spamfilter IDs start with "SPAM" to be more visible. And this also
means shun IDs now start with "H". Update release notes.

This, after i realized that for like *LINEs that are added by spamfilter
the two ID fields in "STATS gline" are a bit confusing as to which ID is
what. Now the spamfilter one starts with "SPAM" so there can be no
confusion. The gline one still starts with "G" as before.

Since I kept the generated ID length the same, this means there is less
bits available for the spamfilter ID, but there are rarely more than 1000
spamfilters, and in that scenario there's just as little birthday attack
collision % as with 200k glines, just to illustrate (~0.0015% vs ~0.0018%)
2026-06-10 15:37:20 +02:00
Bram Matthys faecdd66cd Config-file based *LINES/Spamfilter: preserve hit counters between rehashes.
Unlike non-config-based TKLs - which go through tkldb - they are still not
preserved through restarts. But at least they are not lost due to REHASH.
This is done via a save+restore, a bit complicated, but we have little
choice (other than not doing this at all).

This also moves remove_config_tkls() from conf.c to tkl.c
2026-06-10 14:30:39 +02:00
Bram Matthys d5b799d3de Server bans and Spamfilters now track how often they are hit and the time
of the last hit, eg in `STATS gline` for GLINEs. These counts happen on
each individual server and are not network-wide. This allows IRCOps to see
which entries never get any hits and can potentially be removed.
* Important exception: config-based spamfilters/bans lose their counters
  on `REHASH` and restart atm.
* For non-config TKLs, the hit count and last hit timestamp are preserved
  across reboots (via tkldb).
* Again, see *Developers and protocol* for the exact STATS field.

The spamfilter hits already existed but all the rest is new.

Suggested by BlackBishop in https://bugs.unrealircd.org/view.php?id=6304
(in particular, time of the last hit)
2026-06-08 13:44:00 +02:00
LeCoyote 74557f2378 help.fr.conf: translation update, include eline, tline, new snomasks (#342) 2026-06-08 12:21:35 +02:00
Bram Matthys 27a086b03a Add TKL IDs via message tags in S2S.
By default - assuming you don't set set::reject-message things by yourself -
the *LINE id is appended at the end of the rejection that is shown to the
user, like: [ID: G7K2MP9WQX3].

Also new is spamfilter to *LINE mapping, so you can see which *LINE was
set by which SPAMFILTER. For this STATS gline and friends were enhanced.
In fact, multiple fields were added there, including some that are 0
(zero) placeholders at the moment. These will be set in a future commit.
Some things were combined here so we only have to break STATS and tkldb
database format once (unless i made a mistake, then the follow up commit
will correct that i guess :D).

This was requested by Hero in https://bugs.unrealircd.org/view.php?id=4397
in 2015. Again by musk in https://bugs.unrealircd.org/view.php?id=4397
in 2022. And on IRC by Chris and others.

As you can see it was not SUPER easy and a lot of thought went into this
(and in terms of S2S traffic it is part of something bigger too)
2026-06-07 17:19:00 +02:00
Bram Matthys b19573d562 Update release notes
[skip ci]
2026-06-05 18:29:57 +02:00
Bram Matthys 3571c9e75b Create BASEDIR with 0700. Just like we already did for almost all subdirs.
Only for ~/unrealircd/lib/ we had this ommision, and for ~/unrealircd itself.
I doubt this means a change for users, as all subdirs were already 0700
so then tightening of ~/unrealircd is not very important.
And only upsides... making things safer..
2026-06-05 17:24:25 +02:00
Bram Matthys be08bc2e33 Let's call it "./unrealircd mkcert" instead (like mkpasswd). Fix test suite. 2026-06-05 16:51:22 +02:00
Bram Matthys 982325fc82 Move "make pem" to "./unrealircd makecert" and make tools use this
and refer to this as well.

Suggested by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6610

This also moves extras/tls.cnf to doc/conf/tls/tls.cnf which
also gets installed in ~/unrealircd/conf/tls/ (or whatever CONFDIR is)

And just to be clear: this means you can run "./unrealircd makecert"
without needing to go into BUILDDIR (or even having it at all).

At the same time, the generation commands have been modified slightly
so two warnings during certificate generation are no longer there.
2026-06-05 16:08:40 +02:00
Bram Matthys cbc9213d5e Similarly to previous, fix allow channel::except and spamfilter::except
so they actually work.
2026-06-05 10:36:46 +02:00
Bram Matthys 425a9b978a Fix deny channel::mask not working if security group. Reported by PeGaSuS. 2026-06-05 10:06:33 +02:00
Bram Matthys dee26e2e12 Add const to third argument of unreal_create_match() 2026-06-05 10:00:14 +02:00
Bram Matthys f0c0feff4f Set PCRE2 limits explicitly (to more sensible defaults), reported by Link420. 2026-06-05 09:43:22 +02:00
Bram Matthys caa01c9c8c Call update_known_user_cache() right before "Client connecting" log.
This is after PRE_LOCAL_CONNECT hook and can be useful in case some
module in there did something to the user that made them known-users.

And mention explicitly to module devs if they have things like
authentication mods that may move users between known<->unknown
that they should update the cache.
2026-05-20 10:16:29 +02:00
Bram Matthys 5e8a859102 Bump version and add placeholder empty release notes 2026-05-17 10:52:29 +02:00
Bram Matthys cfa1d7614c Another fix in url_unreal for rogue HTTPS servers (not super important) 2026-05-17 10:51:32 +02:00
Bram Matthys b46c0f20ab OutgoingWebRequest max_size is now also obeyed for file-backed URL API.
And the defines are more clear now (if .max_size is not set by caller.

DOWNLOAD_MAX_SIZE_MEMORY_BACKED: 1M
DOWNLOAD_MAX_SIZE_FILE_BACKED: 50M

The file-backed is mostly a defense-in-depth measure, so we don't
store infinite amounts of data in a download. Even though, in practice,
these - at least at the moment in unrealircd itself - all come from
trusted paths like remote includes.

In url_unreal.c we do the counting ourselves. In url_curl.c we use the
option CURLOPT_MAXFILESIZE_LARGE but this does not ensure it in all
cases so we still do our own counting as well in that file as well.
2026-05-17 10:30:11 +02:00
Bram Matthys 8b93339e42 url_unreal: limit chunked transfer header length (hardening) 2026-05-17 10:07:14 +02:00
Bram Matthys 1250b7f014 ** UnrealIRCd 6.2.5 ** 2026-05-15 13:35:12 +02:00
Bram Matthys 75bd6e87d3 Fix set::antimixedutf8::except not working
Reported by Le_Coyote in https://bugs.unrealircd.org/view.php?id=6625
2026-05-15 09:23:19 +02:00
Bram Matthys 9ba54b7eb3 Add +x to HELPOP SNOMASKS 2026-05-15 09:15:04 +02:00
Bram Matthys 69b2116826 Fix typo in linking message, mentioned by Gottem. 2026-05-14 11:24:49 +02:00
Bram Matthys 0f62b20972 Bump maxperip and connthrottle module version to 2.0.0 2026-05-13 15:40:50 +02:00
Bram Matthys 0007ccda47 Connthrottle has a start delay, but this makes no sense for the ipv6 stuff.
The start delay is there for the rate limit (since lots of users may
connect after starting the server). The IPv6 is not a ratelimit but a limit.
2026-05-13 13:34:21 +02:00
Bram Matthys 80771ac3b4 Handle some invalid values. Not an issue now, but if some caller screws up. 2026-05-13 13:09:48 +02:00
Bram Matthys 4af3695347 Show BUG_CT_NEGATIVE_COUNTER also in non-DEBUGMODE and limit to 5:60.
Not only that one, but all BUG_CT_* connthrottle "something isn't
right here" messages.
2026-05-13 13:08:38 +02:00
Bram Matthys 31b43dcb08 Fix CONNTHROTTLE_CHECK and use <addr>/<prefix> in 'STATS maxperip'
just like we do in 'STATS connthrottle'.
2026-05-13 08:30:45 +02:00
Bram Matthys 4c0d830ae1 Write release notes. 2026-05-08 19:24:07 +02:00
Bram Matthys a4361b7c90 Add set::known-cloud-services [yes|no] (enabled by default)
Install default maxperip/connect-flood exception for IRC platforms
that are so big that they are known to trip default maxperip restrictions
(per IPv4 IP or per IPv6 /64: 3 local users, 4 network-wide users)
on dozens of networks and that publish a stable list of IP ranges.
Currently only IRCCloud qualifies for this.

IRCCloud is in example conf since May 2023 (commit 82dbc4a297) as:
except ban { mask *.irccloud.com; type { maxperip; connect-flood; } }.
Unfortunately DNS sometimes fails to resolve. We have seen this happen
during an outage or server restart. People then mass-connect, but DNS
is not fully working (yet), leading to unresolved hostnames.

Recent stricter maxperip treatment for /64 IPv6 and the new /56, /48
and /32 restrictions in connthrottle make this problem worse. Without
these IP exceptions it would cause unwanted rejections.

If you don't want this, use: set { known-cloud-services no; }
(And then presumably you also don't want the except ban block
 that example conf has been shipping since 2023)
2026-05-07 09:15:36 +02:00
Bram Matthys 05ef211900 For connthrottle rate limiting (new-users) now check except tkl type 'c'
(connect-flood). Those users are exempt and not counted towards new users.

And the new ipv6-unknown-users-limit in connthrottle (which has nothing
do with rates, but counts, similar to maxperip, but only on unknown-users)
now checks tkl type 'm' (maxperip). Those are counted as "except unknowns".

This is more of what the admin would expect.
2026-05-06 18:54:10 +02:00
Bram Matthys 8bafd33286 Update example.conf with the new set::connthrottle::ipv6-unknown-users-limit
functionality.
[skip ci]
2026-05-06 10:28:32 +02:00
Bram Matthys 3e6f9f06e2 set::connthrottle::disabled-when::reputation-gathering default of 1 week
was stated in docs at https://www.unrealircd.org/docs/Connthrottle but
if this item was not there then the default was actually zero (0).
Now, that isn't too common, since we ship with example.conf with the
connthrottle block as shown there, so lots of users have the proper
default, but just in case someone hand-writes or removed that connthrottle
settings block ("because they are the default)"... :)
2026-05-06 09:39:40 +02:00
Bram Matthys e5be93a9f8 Suppress high rate events via set::log-throttle (similar to Linux kernel)
And ship with these by default (no need to copy this set block):

set {
	log-throttle {
		CONNTHROTTLE_IPV6_LIMIT 100:60;
		MAXPERIP_LIMIT 100:60;
	};
};

You can do the same for other events, or even override existing ones,
and use the special value "unlimited" to turn default set ratelimits off:

set {
	log-throttle {
		CONNTHROTTLE_IPV6_LIMIT 50:60;
		MAXPERIP_LIMIT unlimited;
	};
};

Suggested in 2020 at https://bugs.unrealircd.org/view.php?id=5523
(and keeping it simple)
2026-05-05 19:07:42 +02:00
Bram Matthys f765905b15 New snomask 'x' (set by default): maxperip/connthrottle connect rejections
When a client is rejected by maxperip (not new) or connthrottle
ipv6-unknown-users-limit (that one is new), a notice to +s +x will be sent.

maxperip ipv4 example:
*** Client testuser4 with IP 1.2.3.4 rejected: maxperip limit exceeded (4 global, max 3)

maxperip ipv6 with /64 example:
*** Client testuser4 with IP 2001:dbe:0:0:0:0:0:4 rejected: maxperip limit exceeded for 2001:dbe::/64 (4 local, max 3)

connthrottle example where /56 limit is exceeded:
*** Client testuser5 with IP 2001:db8:cafe:abcd:0:0:0:5 rejected:
    connthrottle ipv6-unknown-users-limit (cidr-56, max 4) exceeded for
    2001:db8:cafe::/56 (5 unknown / 0 excepted / 0 known)

Oh and this commit also fixes a typo in existing CONNTHROTTLE events,
which previously were CONNTHROTLE (a missing T).
2026-05-05 16:33:19 +02:00
Bram Matthys 0940ed5d13 Update the messages regarding too many (new) connections.
Changed "Too many connections from your IP" to have "[maxperip]" at the end.
Also create new setting and swap it with existing-one-during-development.

Long story short, we now have 3 different messages for these limits:

set::reject-message::too-many-connections
 "Too many connections from your IP [maxperip]"

set::reject-message::too-many-connections-ipv6-range
 "Too many connections from your IPv6 range ($prefix_addr/$prefix_len) [maxperip]"

set::reject-message::too-many-new-connections-ipv6-range
 "Too many new connections from this IPv6 range ($prefix_addr/$prefix_len) [connthrottle]"

So we explicitly mention whether it is maxperip or connthrottle limiting the
user, that should provide enough clue to the IRCOp if the user pastes the
message to them.
2026-05-05 13:24:01 +02:00
Bram Matthys 32e7dbfb3c Add connthrottle self-test that (only) runs in DEBUGMODE.
This verifies state every second. Obviously not for production.
2026-05-05 10:03:26 +02:00
Bram Matthys 2ae69be391 Implement IPv6 CIDR restrictions for unknown-users
Will do more in follow-up commits.
2026-05-05 10:03:25 +02:00
Bram Matthys 46e404f95f Remove setting that never worked and refer to set::default-ipv6-clone-mask 2026-05-05 10:03:25 +02:00
Bram Matthys 3a429dbd42 Add helper functions and start the IPv6 /128 to /64 transition in
connect-flood and maxperip module. This so they actually take
set::default-ipv6-clone-mask into account.

This also changes the maxperip module to a more simple method of
just freeing all entries and rebuilding the hash table on load.
That's necessary since now set::default-ipv6-clone-mask can change.
2026-05-05 10:03:22 +02:00
Bram Matthys 4adaddeee1 set_client_ip() was not updating client->sockhost. That meant in WEBIRC
situations connect-flood may not be working (it used the webirc ip,
which is almost always exempt, instead of the spoofed IP).
2026-05-05 09:51:19 +02:00
Bram Matthys 665d01b7ea Update release notes
[skip ci]
2026-05-02 19:34:30 +02:00
Bram Matthys 99f1f6a047 Update libsodium to 1.0.22. They may have fixed that arm64 compile issue ;)
We previously upgraded to 1.0.21 and then downgraded to 1.0.20.

Benefit of 1.0.22 is that they also claim to have fixed a warning flood
i am getting with clang 22.
2026-05-02 19:15:07 +02:00
Bram Matthys b96c1d2d1e Add autoconf/m4/pkg.m4 for now because otherwise my Ubuntu 26.04
uses their pkg.m4 which made pkg-config a hard requirement.
Such a hard requirement is probably fine later, but.. i don't want
to suddenly require that of users during UnrealIRCd 6 series.
2026-05-02 19:14:10 +02:00
Bram Matthys c0f68bfd08 Deprecate link::verify-certificate, as 'Client Authentication EKU' is being
dropped by public certificate authorities (as per Chrome Root Program).

The fix is to simply use 'spkifp'. The config warning has all the details.
2026-05-01 19:47:28 +02:00
Bram Matthys 17f78de265 Bump version to 6.2.5-git 2026-05-01 19:47:03 +02:00
Bram Matthys 717c9cbfa5 Fix OOB write on URL callback with 2GB+ response. Add new size limit.
The OOB write did not happen on file-backed downloads, such as remote
includes. It only happened for memory-backed requests, which are only
these 4 in standard UnrealIRCd: centralblocklist, central spam report,
other spamreport blocks (eg to dronebl) and the log block with
destination webhook. All those 4 cases are very likely to be trusted
web servers, given the nature of the data you are sending to them.

The fix was to extend the size fields everywhere to 64 bits. It was
applied to both URL backends: url_unreal.c and url_curl.c.

The new API feature is a 'max_size' in OutgoingWebRequest, which
defaults to 1MB. This is only used for memory-backed responses,
so not for real file downloads. This fixes not only the reported
bug but also the case where a rogue webserver was unbounded in
terms of what response it could send back, potentially filling
up gigabytes of server memory.

Reported by Link420.
2026-04-21 19:46:21 +02:00
Bram Matthys abbbcd16a9 ** UnrealIRCd 6.2.4 ** 2026-04-17 06:13:38 +02:00
Bram Matthys bd0dea4a0e Compile fixes for OpenSSL 4.0.0
This does two things:
* We now only compile src/openssl_hostname_validation.c on
  really old OpenSSL's. This was already unused/dead code
  for most OpenSSL's but we always compiled it in until now.
* Added 'const' to please OpenSSL 4.0.0 while not breaking
  OpenSSL 1.0.x. And yeah i'm happy to drop OpenSSL 1.0.x
  support real soon... but not this month yet.
2026-04-15 15:12:34 +02:00
Bram Matthys a89f098a22 Fix mmdb library on Windows and use it by default 2026-04-10 18:44:39 +02:00
Bram Matthys 3c71a03781 Update subdomain URL 2026-04-10 17:44:25 +02:00
Bram Matthys e39ea1f483 Add file_get_contents function (not used atm yet) 2026-04-10 16:53:52 +02:00
Bram Matthys dbc3182462 Update -DTESTSUITE +f/+F exemption.
The "not setting +F" stuff didn't work, as due to netmerge - which
can even happen without a split when joining clients on both sides -
this would revert to +F normal basically.

So we just explicitly exempt in the join and msg code.

All this is for unrealircd-tests.
2026-04-08 17:50:16 +02:00
Bram Matthys babb86818f S2S: Fix memory leak on RRPC with wrong source (either rogue server or very rare) 2026-04-07 17:59:07 +02:00
Bram Matthys 35974ee46d Fix silly missing bufsize-- in xmlescape(). Not exploitable.
This XML code is only used for DroneBL submission with no user-
controlled variables (except $ip). Still, silly mistake to make
and who knows what other XML stuff will happen in the future.
2026-04-06 08:50:58 +02:00
Bram Matthys bc086e3ffe Add and update doxygen docs for module API 2026-04-04 19:40:03 +02:00
Bram Matthys c0597aa82a Another Windows fix 2026-04-04 09:57:40 +02:00
Bram Matthys 945fb65759 Error when using CommandOverrideAdd() before MOD_LOAD,
since in MOD_INIT the command may not have been added yet thus
then you get silly module-load-order issues, such as in
previous commit 281d0cce9b
2026-04-04 09:08:41 +02:00
Bram Matthys 281d0cce9b multiline: mv CommandOverrideAdd() to MOD_LOAD so module order doesn't matter 2026-04-04 08:51:25 +02:00
Bram Matthys 1334304426 Sigh...
[skip ci]
2026-04-04 08:17:34 +02:00
Bram Matthys 778cf4de82 ** UnrealIRCd 6.2.4-rc1 ** 2026-04-04 08:00:48 +02:00
Bram Matthys f47396a7db Keep using geoip_classic on Windows for this rc1.
geoip_mmdb doesn't compile on Windows, will look at it after rc1.
Also almost forgot to set this GEOIP_ENGINE ;)
2026-04-04 07:56:05 +02:00
Bram Matthys 0931008874 Fix Windows compile 2026-04-04 07:37:44 +02:00
Bram Matthys dc6740bfb7 Small code cleanup (identical branches) 2026-04-04 07:06:18 +02:00
Bram Matthys 7aa1157474 Downgrade libsodium to 1.0.20 to fix arm64 compile issue
Version 1.0.21 which we shipped with 6.2.3 has this bug, reported
by PhotoJim at https://bugs.unrealircd.org/view.php?id=6615.

And yes, libsodium also has this weird -stable thing, which does
have the fix, but that's basically just a snapshot of their git
version, it's a .tar.gz that gets updated every X time and it does
not have a GPG signature, while I have the policy nowadays to
verify GPG signatures for libraries we ship. So I am option to just
downgrade a version, for now, which is fine since we shipped with
1.0.20 for quite some time until recently.
2026-04-04 06:51:41 +02:00
Bram Matthys 70a05cb591 Update release notes a bit
[skip ci]
2026-04-03 19:24:10 +02:00
Bram Matthys 781aecf95a Fix batch reference length. We had two with different sizes.
There is no hard cap on batch reference length, so we had to make one up.
It is now a clear #define MAXBATCHREFLEN 48, which should be plenty.
No sane client is going to use like a 64 byte batch reference :D

So we did use 48, but we also accidentally used BATCHLEN at another
place. BATCHLEN is 22 and refers to how many bytes we generate, so
that is not appropritate.

Thanks to Valware for spotting this.
2026-04-03 16:38:34 +02:00
Bram Matthys 71fe07b445 Update release notes (fix link)
[skip ci]
2026-04-03 09:58:22 +02:00
Bram Matthys fa2f78fe94 Optimize multiline delivery to channels (use LineCache)
This wasn't done before, because optimizing stuff can always introduce
nice new issues. But is kinda necessary now since the previous way was
very inefficient. This now builds all the necessary buffers for multiline
clients and for non-multiline clients. And then iterates through both
types of clients, sending what they need. Instead of doing it the other
way around.

I had the dillema to either expose the linecache API and have everything
in multiline.c. Or, i do not expose linecache, and we do everything in
send.c. The downside of the latter is that if there is mistake then we
can't simply reload (or unload) the module to solve it. So, I have chosen
to expose the linecache API (sure, less clean) since that leaves us with
options if we screw up, plus it means everything related to multiline
sending is nicely in multiline.c, which is i guess just as good as an
argument as well ;)
2026-04-03 09:04:33 +02:00
Bram Matthys 36baf946a3 Guard against multiline+history amplification attacks in CHATHISTORY.
Add a little fake lag based on history result: 400ms for 50 lines
under normal conditions where 50 lines = 50 lines. But this can go
up to 5000ms for worst-case amplification attacks where requesting
50 lines actually returns 50*15=750 lines when each line is a multiline
with max-lines, which gets you close to 350k+. This would only happen
if someone on the channel is doing evil stuff (with presumably consent
of the ops).

Also guard against hiting max sendq. If we are too close, then we
reject the CHATHISTORY request rather than quiting with "Max SendQ
exceeded". This protects against an attack where someone would be
tricked into joining a channel with amplified history (as explained
in previous paragraph), their client would do an automatic CHATHISTORY
request and then the victim would exceed max sendq and thus be killed.

And yes, this and maaaaany other multiline + history interactions
and many "buts" and security/flood concerns are why this implemtnation
took (and still takes) a lot of hours to get right :D.
2026-04-03 07:59:11 +02:00
Bram Matthys a1dc459a33 Update +H limit and write release notes regarding draft/multiline support.
For +H we now temporarily allow overshooting. This only matters for low limits.
Multiline batches are atomic so we have to choose to keep them as a whole
or remove the complete batch. So if +H 5:1h and the last message was a 15-line
multiline event, what do we do? We allow temporary overshooting to store the
15 lines. As said, the alternative would be to store 0 lines which would be
worse in terms of functionality, and the small overshoot is defensible.

For higher limits (where the +H line limit is bigger than multiline max-lines),
we always stay under the +H limit. Eg if all history in a channel consists
of 15 line multiline events and we have +H 100 then we will store 90, not 105.
It's only for +H linelimit < max-lines that this matters, because there the
zero-lines consequence sucks too much ;)
2026-04-02 20:24:21 +02:00
Bram Matthys 04ffe335f1 Send CAP NEW multiline=max-lines=.. on unknown-users<->known-users transition 2026-04-02 18:29:12 +02:00
Bram Matthys 46be05d42f Multiline: fix memory leaks and missing inner tags 2026-04-02 17:34:44 +02:00
Bram Matthys 8c0590cda2 Add multiline support in history. 2026-03-30 19:09:20 +02:00
Bram Matthys 72de809548 Add auto-generated translations for HELPOP CHMODEF about 'p'.
To be honest i don't even like the Dutch one myself but at least
it is a placeholder. Translators are free to fix it ;).
2026-03-30 16:28:27 +02:00
Bram Matthys 143882a358 Add a BUG_EFUNCTIONADD_NOT_OFFICIAL if trying to add efunctions from
modules that are not marked as official.
2026-03-30 14:59:25 +02:00
Bram Matthys 1df465a6a5 Add +f subtype 'p' (for 'paste'). So [2p]:15 means max 2 pastes per 15s.
This way you can limit the number of pastes going on in a channel, as
this is from everyone in that channel (like 'm') not individual (like 't').
If it is exceeded then we will simply reject the BATCH, similar to
how action d(rop) works for some other subtypes. You won't see the paste
on the channel, only the sending user receives an error (MULTILINE_PASTE_LIMIT).

Small note: a multiline BATCH of just 2 lines is not considered a paste.
We consider a multiline of 3+ lines as a paste. I think that is reasonable,
since a two-line-multiline is not that much of a paste ;).

In the default anti-flood profile (+F normal) we also set 2p per 15s,
so this means channels are by default limited to 2 pastes per 15s max.
Of course, you can override this with +f [4p]:15 or whatever you like.
In terms of +F profiles, the defaults are (maximum x pastes per 15 seconds):
very-strict: 1p
strict: 1p
normal: 2p
relaxed: 2p
very-relaxed: 3p
2026-03-30 14:55:03 +02:00
Bram Matthys b0dba4bede Add draft/multiline support with a default max-lines of 15 for known-users
and 7 for unknown-users (with max-bytes 5250 and 1500 respectively). This
allows pasting a short snippet of code, config file, text from a site, etc.

With multiline you have the guarantee that:
1) You will see the entire text with no delay between lines
2) You won't see another persons chat half-way through such a paste
3) For multiline supporting clients it is now clear that all the text
   belongs to each other, which can make selecting/copying it easier.
This basically means short snippets/pastes like that can be completely on
IRC again. No need for a pastebin for it. Though, you may still need such
a service if you are pasting more lines.

Regarding the implementation in UnrealIRCd:
* Clients without multiline get individual fallback lines (concat lines
  merged, blank lines skipped, as per spec). And we know that clients like
  weechat - which does support multiline - also shows all lines and not
  only a few plus snippet style "[.."]. That is another reason for only
  allowing 15 lines by default and not something much more. Otherwise all
  those clients would get a big wall of text, which just sucks.
* Spamfilter (also) runs on the full text of all lines together, so
  splitting a phrase across lines does not evade spamfilter.
* Fakelag: a client can send the BATCH start+PRIVMSG (or NOTICE)+BATCH end
  at full speed. We impose no fake lag there. Also, the multiline default
  max-lines and max-bytes are lower than the example class::recvq of 8000,
  so should be perfectly safe. If the entire BATCH is accepted then we
  will impose fake-lag afterwards, with a cap of 15 seconds maximum.
  If the BATCH is rejected, we impose half the fakelag plus 2sec.
* If the time between BATCH start and BATCH end is more than 15 seconds
  then the BATCH is rejected (set::multiline::batch-timeout).
* The BATCH is atomic (either you see it all, or you see none of it):
  * When the client sends it to server, it is buffered first.
  * Only after the batch close the server indicates if it is accepted
    or rejected. This has various reasons, two of them are: 1) The client
    is going to send everything in one go anyway and not wait for a
    response between each PRIVMSG, and 2) we can't do many checks in the
    buffering stage and skip those after, that would cause a TOCTOU
    problem (eg. a banned user still being able to speak).
  * If any line gets rejected due to spamfilter or other case
    (eg +c, +b ~text with block, etc etc), the entire batch is rejected
  * Locally we deliver all or nothing (as said)
  * S2S we buffer the batch as well, so if a server splits after having
    received 10 lines out of 15, then clients will not see anything.
* We send max-lines and max-bytes, this is the hard upper limit.
* A multiline can still be limited more tight if:
  * +f with 't' or 'm' restricts to fewer lines,
    eg +f [5t]:15, which means max 5 lines per 15 seconds,
    means the max accepted multiline is 5 for that channel.
  * +F works the same, except that default +F normal does not
    have a 't' at the moment and 'm' is very high (50) so
    practically not limited by default.
  * There will be a future +f flood subtype for some more control

TODO: we will send CAP NEW on unknown-users <-> known-users to
      indicate the new max-lines value if you transition security groups

TODO: chat history does not yet include multiline batches.
2026-03-30 13:16:48 +02:00
Bram Matthys 8bfc599697 Guard against EfunctionAdd() from outside MOD_TEST.
As this can keep someone busy for half an hour wondering why things crash...
2026-03-28 10:35:05 +01:00
Bram Matthys eb798510fd Pass the fake lag added msec in ClientContext and add subtract_fake_lag() 2026-03-27 07:46:29 +01:00
Bram Matthys f329a64991 The IsFloodLimit() used a hardcoded channel parameter. This was not a problem.
But is dangerous if the macro would be used where it mattered.
2026-03-26 17:28:51 +01:00
Bram Matthys 14cb15c632 Don't call -m upgrade or -m compile-all if zero src/modules/third/*.c
Reported by bss.
2026-03-25 14:01:42 +01:00
Bram Matthys 6ad7f7dccf And use binary search now that we have so many crule functions... 2026-03-24 19:37:12 +01:00
Bram Matthys ed16dad40e Add a bunch of crule functions:
* Boolean checks: is_oper, is_local, has_swhois
* Match functions: match_class, match_server, match_vhost,
  match_realhost, match_away, match_asname, match_operlogin,
  match_operclass, match_sni, match_tls_cipher
* Numeric counters: connections_from_ip, channel_count,
  channel_member_count, idle_time
* Traffic stats: messages_sent, messages_received, bytes_sent,
  bytes_received
* Text analysis: text_byte_count, text_character_count, word_count,
  uppercase_percentage, digit_percentage, non_ascii_percentage,
  max_repeat_count, mixed_utf8_score, unicode_block_count

Will do a more thorough audit and look at adding some kind of
tests tomorrow.
2026-03-24 19:33:55 +01:00
Bram Matthys 3dd449139b Conditional Config: add @warning "aaa" and @error "bbb"
As usual, this is mostly for configuration templates that you use for
multiple servers, that sort of things, eg.

@if !environment("ADMIN")
@error "Environment variable ADMIN is not set"
@endif

This also adds a change in conf.c so @define, @error and
@warning are skipped in @if blocks that evaluate to false
(that's obviously what everyone wants :D). So that fixes a
previous bug with @define in @if.
2026-03-23 18:47:16 +01:00
Bram Matthys 8adfdf95a0 Little code cleanup in config preprocessor. 2026-03-23 18:13:14 +01:00
Bram Matthys 3521d96f9d This adds module-version("examplemod") and using functions in $define,
such as $define ADMIN environment("ADMIN")
2026-03-23 17:58:36 +01:00
Bram Matthys cf101ca114 Conditional Config: add @if environment("VARNAME") == "something"
to check environment variables.

This also means functions can now return values, so some changes
under the hood. This also moves the <=, >=, <, > ops code.
2026-03-23 17:33:02 +01:00
Bram Matthys 93a485db21 Conditional Config: add support for @else
Actually surprisingly easy due to simply flipping item->negative :D
2026-03-22 19:36:54 +01:00
Bram Matthys 100abaa82d Conditional Config: add support for <, >, <= and >= in @if $SOMETHING ...
And also don't require double quotes on the right hand side.

So you now use something like: @if $MAXCONNECTIONS >= 1024
2026-03-22 19:16:51 +01:00
Bram Matthys 2346aa3977 Code cleanup in conf_preprocessor.c (Conditional Config) 2026-03-22 19:02:29 +01:00
Bram Matthys 17a8182efc Condition Config: add minimum-version() and file-exists().
So: `@if minimum-version("6.2.4")` and `@if file-exists("filename")`.
2026-03-22 18:41:30 +01:00
Bram Matthys 9258875d0f Add @if module-exists("third/coolmod") so you can conditionally
loadmodule + set config items

This checks the file on-disk, which is slightly different than
@if module-loaded("third/coolmod") which checks if it is loaded.
2026-03-22 18:20:36 +01:00
Bram Matthys 27864e8d0e Add new variables in Conditional Config (https://www.unrealircd.org/docs/Conditional_config):
$CONFDIR, $DATADIR, $LOGDIR, $TMPDIR, $DOCDIR, $MODULESDIR, $MAXCONNECTIONS.
2026-03-22 18:07:17 +01:00
Bram Matthys 82481cc083 NO_GEOIP_CONFIG => NO_DEFAULT_GEOIP to make it consistent
As we also have NO_DEFAULT_RPC_SOCKET and NO_DEFAULT_LOG_MEMORY_BLOCK
2026-03-22 17:58:36 +01:00
Bram Matthys ba3fa1d7b6 Update GeoIP question in ./Config and use some magic to support both
geoip_classic and geoip_mmdb in modules.default.conf with Conditional
Config, a dynamic loadmodule line, and auto-updates.

Somewhere in a later version, probably 6.2.5, we will default to mmdb
for all cases.
2026-03-22 17:52:57 +01:00
Bram Matthys b7cd383186 Fix nested @if blocks in config file not working correctly
When using nested @if blocks (e.g. @if module-loaded() inside
@if defined()), only the outermost condition was evaluated.
Inner conditions were silently ignored, causing blocks to be
included even when the inner condition was false.

Also walk the full chain in the loadmodule @if module-loaded()
restriction check.
2026-03-22 17:36:28 +01:00
Bram Matthys 9b83fc0db9 Allow @if with loadmodule, just not module-loaded(). We need this. 2026-03-22 17:07:46 +01:00
Bram Matthys d467005816 Bleh :) 2026-03-22 16:20:25 +01:00
Bram Matthys 69c9130da1 Bump version to 6.2.4-git 2026-03-22 13:45:28 +01:00
Bram Matthys d150da8ea5 Make "geoip_mmdb" the default GEOIP module. So it receives testing.
I still need to update ./Config. I guess we will remove that question
entirely.
2026-03-22 13:38:20 +01:00
Bram Matthys f884bfe755 Another workaround for test suite. 2026-03-22 13:25:36 +01:00
Bram Matthys d6f93e8566 Test suite: update extras/tests/tls/testssl_profiles/pqc.txt
Due to commit 7b48fdca1a
2026-03-22 13:13:30 +01:00
Bram Matthys 806c883a7f Rename geoip_maxmind to geoip_mmdb with a backwards-compatible warn.
This is a mmdb backend which supports various GeoIP providers,
and we no longer use the maxmind library, so this makes sense.
2026-03-22 12:29:00 +01: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
Bram Matthys 89bce01c31 Fix OOB write in geoip_csv if the .csv file is bad / malicious.
This module is rarely used but analysis showed that there was an
OOB write in the country name, and two small off-by-ones in code
and continent.

Again, this only matters if the CSV file you are importing is bad
or malicious. And we use stack protection in UnrealIRCd so this
should then "only" cause a crash.
2026-03-16 14:10:29 +01:00
Bram Matthys f944990c54 Fix some flagged stray semicolon in C code (;;) 2026-03-16 09:53:22 +01:00
Bram Matthys 198c9279e1 Fix a check in hash_get_chan_bucket(). The only caller is from list.c
which already ensures in bounds, so not an issue. But who knows in the
future there will be other functions that use it and then the check
is misleading as it doesn't cover all cases.
2026-03-16 09:14:07 +01:00
Bram Matthys e4d6b51d04 Add certificate/key check to CONFIG INIT. So we properly stop booting
or rehashing if there is an error loading them (at least try harder).
Right now they are only in CONFIG LOAD, which is too late to stop things.

Previously "./unrealircd configtest" showed an error but still said
"Configuration test passed OK". And REHASH passed similar. Now, it
is a real error.

This is not to be confused with a "file does not exist" error, which
we already handled properly. It's the less usual ones, like wrong key.

Only downside is more init_ctx() calls, which can be a bit heavy on
various platforms, slowing boot or REHASH down. Should be fine though...
2026-03-15 15:59:09 +01:00
Bram Matthys 08f90d4006 Make certificate_quality_check() work on OpenSSL 3+.
This isn't really important, as you can read below, but was a FIXME item.

This function checks for RSA keys that are less than 2048 bits, so
RSA 1024 is rejected. This was added in UnrealIRCd 5.0.0 (Dec 2019).
RSA 1024 was already looong considered insecure. And those using it
should have been flagged from there on.

OpenSSL 3 changed the API, and this function was never updated to have
the same check with OpenSSL 3+ until now. Fortunately, OpenSSL 3.0.0
onwards reject 1024 bit RSA by default, so that doesn't really matter.
For reference, OpenSSL 3 was released in Sep 2021 and first appeared
in Ubuntu LTS 22.04 (Apr 2022) and Debian 12 (Jun 2023).
However, if you set SECLEVEL to 0 (eg in system-wide openssl.cnf),
it would allow those keys, which is pretty much expected but also not
what we want at UnrealIRCd. From now on, for those rare situations,
we reject it as well.
2026-03-15 10:54:16 +01:00
Bram Matthys 7b48fdca1a Default TLS groups: use tuple syntax with slash to prefer X25519MLKEM768,
even if it costs an extra round-trip due to HRR (Hello Retry Request).
This is IRC after all, where connections live minutes, hours, days,
so that extra round trip is worth it if it means better security.

The TL;DR is: we try harder to use X25519MLKEM768.

The longer story is as follows:

In TLSv1.3, the client will indicate which groups it supports (eg
a list of 4 items) and which ones it speculates to be used (very
often just 2 items). Some TLS clients may not include X25519MLKEM768
in this initial speculation, but only f.e. X25519 and prime256v1
even though X25519MLKEM768 is communicated via their "supported" list.
Without this patch, we would then settle with one of those 2.
With this patch, we will send a Hello Retry Request, allowing to
use X25519MLKEM768.

This is rare, though, most TLS client implementations that have
X25519MLKEM768 will bet on it to be used (the 2 they bet on is
often X25519MLKEM768 & X25519). That's many browsers like Chrome,
OpenSSL, Go, etc.

GnuTLS usually will do this as well, but under some configurations
it may bet on 2 classic crypto to be used. For that specific (type
of) situation, this patch will help to use X25519MLKEM768.
This can be tested with OpenSSL to simulate such an implementation:
openssl s_client -connect 127.0.0.1:6697 -groups X25519MLKEM768:*X25519
Before this patch, it would result in X25519 (because that is the
speculated group, with the asterisk). After this patch it will
cause X25519MLKEM768 to be used.

The tuple syntax is in 3.5.0+ and our UNREALIRCD_DEFAULT_TLS_GROUPS_PRIMARY
with X25519MLKEM768 also requires 3.5.0+ so this is an easy change.

Oh and, this commit comment is rather long for a 1 byte change :D
2026-03-15 07:06:46 +01:00
Bram Matthys 27a3fb8d97 unreal_server_compat: fix always using EXBTYPE_BAN even for +e/+I.
For the extbans that we ship, no problem, as this isn't used in
any of our extbans, but for third party it may matter, or for us
in the future.

Just something we came across while looking into the issue from
previous commit.
2026-03-14 10:20:24 +01:00
Bram Matthys 31005e18b1 Fix extbans in +I not being converted to letter bans to older servers.
This affects servers without NEXTBANS, such as anope 2.0.x series
(anope 2.1.x is not affected as it supports NEXTBANS).

Non-NEXTBANS servers only support letter extbans so we are supposed
to convert ~security-group:known-users to ~G:known-users when sending
to such a server, in unreal_server_compat. And we did this well for
the MODE command for +beI. In SJOIN we did this correctly for +b/+e
but not for +I due to a silly code mistake.

This bug is present since 6.0.0 but wasn't noticed until now.

To be a real problem you need something like:
1. Anope 2.0.x series (or other services without NEXTBANS)
2. A channel with +I extbans
3. KEEPMODES set on that channel

Then what happens is when services boot:
1. UnrealIRCd will sync with anope 2.0.x and incorrectly send
   named bans, which will confuse anope. But nothing strange
   happens yet at this point.
2. Then on next server sync (eg anope restart or unreal restart)
   anope will try to restore these but they end up with weird
   entries like +I *!*@~security-group:known-users
   (note the *!*@ prefix)

And it should be noted that this would also happen in a situation
with UnrealIRCd 5 + UnrealIRCd 6 servers, but UnrealIRCd 5 is
End Of Life anyway.

Reported by BlackBishop and Sadie two days ago. Thanks!
2026-03-13 13:57:41 +01:00
Bram Matthys bcaaaa5949 Fix crash on Windows because of missing MODVAR / __declspec(dllimport)
on 'known_users', which is accessed by the reputation module.
2026-03-11 14:39:15 +01:00
Bram Matthys c3600f0f3a CI: If $USE_SHIPPED_LIBS is 1, then build with shipped libraries from extra/ 2026-03-07 18:34:55 +01:00
Bram Matthys 2d145b0f2c ** UnrealIRCd 6.2.3 ** 2026-03-06 08:23:30 +01:00
Bram Matthys 98709af7a3 modules.optional.conf: extjwt::service::method is required
(which is fine, i think)
2026-03-06 08:22:53 +01:00
Bram Matthys cc1c1c5a73 Update doc/unrealircd_wiki.zim for 6.2.3
[skip ci]
2026-03-06 08:02:19 +01:00
Bram Matthys a841911882 Mention extjwt { } in the release notes: it had API updates, build tests
and we now have documentation on the wiki.

Plus some other textual changes.

[skip ci]
2026-03-06 07:44:13 +01:00
Bram Matthys 7865675917 Fix OOB write if a trusted linked server sends malicious data.
NOTE: Linked servers are considered trusted in UnrealIRCd.

This is not exploitable beyond a crash, due to -fstack-protector-all,
a hardening compiler flag we added many years ago. Even without
that flag it would be rather difficult, and i didn't manage to,
but this should never happen anyway since this flag is only
missing in gcc/clang versions that are more than 15 years old.

This issue was introduced by the move to CMD_BIGLINES in
6c5de62c18 in 6.2.2 release.
2026-03-06 07:14:10 +01:00
Bram Matthys 87e4249a09 extjwt: don't free modes/umodes, they are taken care of by payload. 2026-03-04 17:07:06 +01:00
Bram Matthys c4c082d0b7 And restore this LDFLAGS as well
This completes the fix from e1211adb3b
2026-03-04 11:01:05 +01:00
Bram Matthys e1211adb3b Restore LDFLAGS after setting it in library compiles
But is this enough...?
2026-03-04 10:49:20 +01:00
k4be deff636c74 extjwt: Remove OpenSSL deprecation warnings 2026-03-04 09:38:05 +01:00
Bram Matthys 9289ef7c83 Mention JSON-RPC there as well
[skip ci]
2026-03-04 09:18:20 +01:00
Bram Matthys fc82176cd0 Update README with Mastodon and tell at least something about supported systems.
Mention tested systems as well (which is narrower than supported systems).
And merge documentation and support, since users will usually be after both.
2026-03-04 09:15:36 +01:00
Bram Matthys 7a46caa1da tls-tests: pin to a specific testssl.sh commit hash. 2026-03-03 17:08:35 +01:00
Bram Matthys de2d72b592 Update Build CI. Tightening it down and fail-fast to false. 2026-03-03 07:16:44 +01:00
Bram Matthys 648a10494f Add -DTESTSUITE and use it from extras/build-tests/nix/build.
In particular, this disables default +F for #__SYNC__ channels.
The test suite has a "+F off" but when on 3 servers, each 75
clones are connecting, the MODE is too late and the join limit
is already reached sometimes. Causing tests to fail.
2026-02-28 15:26:57 +01:00
Bram Matthys 426289e377 Drop really verbose logging from build tests as it makes things too slow 2026-02-28 12:18:11 +01:00
Bram Matthys b06a3a34d0 Update extras/build-tests/nix/run-tests.bbwrapper to fix FreeBSD issue. 2026-02-28 12:04:34 +01:00
Bram Matthys 55fda3456d Update TLS tests with pqc_arm.txt (on rpi 5, slightly differs from pqc.txt)
OpenSSL prefering X25519 vs secp521r1 for ECDH and vice versa,
still looks fine.
2026-02-28 10:47:38 +01:00
Bram Matthys cd317e678c Update release notes on latest two changes.
[skip ci]
2026-02-25 15:21:57 +01:00
Bram Matthys 70d6cb2589 If no 3rd party modules are installed, then skip the module upgrade step.
This means we don't do an HTTPS call at build time when unnecessary.
2026-02-25 15:04:49 +01:00
Bram Matthys 17037b0694 Fix build failing if DNS is not working. Building UnrealIRCd should never fail
because it has no internet access, like when fetching the repository
(modules.list file) of 3rd party modules.

Previously I had..
url_start_async(request);
synchronous_http_request_in_progress = 1;
.. which worked fine for the "cannot connect case", like port blocked
or timeout connecting. But if DNS fails then the step of setting
synchronous_http_request_in_progress = -1 (so failed) already happens
during the url_start_async(request); call, and then the line after it
sets 'synchronous_http_request_in_progress = 1;' so we miss that it
failed and wait in the I/O loop forever.
Simply swapping the two lines of code fixes this.

The other change is that when running the ModuleManager in "make" we should
ignore the exit code. I probably broke that while refactoring and adding
non-zero exit codes in de modulemanager past few months for this release.
2026-02-25 14:58:11 +01:00
Bram Matthys bd1ccde9c3 ** UnrealIRCd 6.2.3-rc2 ** 2026-02-25 08:28:20 +01:00
Bram Matthys 2f839c85f7 Reorder some release notes items 2026-02-23 10:54:12 +01:00
Bram Matthys 93c26c2d42 Update release notes. 2026-02-23 10:04:08 +01:00
Bram Matthys 3a96bdf6ec Add set::allow-setident (default: 'no'), set::allow-setname ('yes')
Two new settings that control the use of `SETIDENT` and `SETNAME`:
* [set::allow-setident](https://www.unrealircd.org/docs/Set_block#set::allow-setident)
  now defaults to 'no'. Previously all users were allowed to change their
  ident (taking into account
  [set::allow-userhost-change](https://www.unrealircd.org/docs/Set_block#set::allow-userhost-change)
  restrictions).
* [set::allow-setname])(https://www.unrealircd.org/docs/Set_block#set::allow-setname)
  has a default of 'yes' which matches older UnrealIRCd versions (no change).
  Perhaps some admins who use controlled (web)chats may want to set this
  to 'no' if users are not supposed to change their realname/gecos.
  This is probably rare, but they have the option now.
2026-02-23 08:58:39 +01:00
Bram Matthys a6cdd4b548 Use the exact same approach for argon2 as the other libs
(fixes build)
2026-02-23 08:04:31 +01:00
Bram Matthys d19919df07 Add extras/build-tests/nix/hardening-check.sh so i can use from BuildBot. 2026-02-23 07:48:47 +01:00
Bram Matthys 3e9ce77dc6 Hardening: build the last 2 remaining libs with hardening flags too
Library argon2 uses a makefile without configure, so works a bit different
And GeoIP i forgot because it was in a different autoconf file.
2026-02-23 07:17:02 +01:00
Bram Matthys 4c01372e3b Move orig_cflags="$CFLAGS" to after AC_PROG_CC_C99
As otherwise the shipped libs don't (necessarily) get -O2 -g,
which in turn means _FORTIFY_SOURCE=3 won't work.
2026-02-22 20:15:33 +01:00
Bram Matthys ae245865ea Pass hardening flags to libraries that we build/ship ourselves (if any)
Previously we didn't and that means that if any shipped lib was used,
without hardening, this would cause non-CET libraries to silently disable
CET for the entire process, and partial RELRO on the libs means the
full RELRO in UnrealIRCd is much less useful.

Actually, system libs on Debian/Ubuntu don't even have full RELRO atm,
but hey, we try to do better, also.. some other OS/distro might
have it on and who knows Debian/Ubuntu change their mind later..
2026-02-22 19:50:46 +01:00
Bram Matthys dcd8f738fe Remove -fzero-call-used-regs=used-gpr again. This is apparently not
as useful as initially thought. I thought kernel hardening checker
was in favor of it, and they were, but they dropped it in Oct 2023.

(i added it 2-3hrs ago in 0ab1221a38)
2026-02-22 19:02:31 +01:00
Bram Matthys 5cc59192bc Hardening: add -mbranch-protection=standard for arm64 that support it.
e.g. raspberry pi 5, aws ec2 graviton2 and higher, etc.

This does the same as -fcf-protection on x64 (well, those that support it).
2026-02-22 18:29:17 +01:00
Bram Matthys 4d4a43984c Hardening: add -ftrivial-auto-var-init=zero
This zeroes out variables that COULD be accessed before being set
(so to prevent access to unitialized variables). We are generally
very careful about this in our code, but in 3rd party modules this
is less the case. And still useful in case we ourselves screw up.
2026-02-22 16:38:55 +01:00
Bram Matthys 0ab1221a38 Hardening: add -fzero-call-used-regs=used-gpr
Is defense in depth to make ROP harder. In general this is reported to
have a performance impact of 2% worst-case. Linux kernel reports 1%.
Should be closer to 0% for us, or that 1% if i am wrong.
https://lwn.net/Articles/870045/ has some background on this.
2026-02-22 16:33:38 +01:00
Bram Matthys d668c4b78b Hardening: add -fstrict-flex-arrays=3
This should help gcc/clang with finding more OOB write bugs.

It does mean that 3rd party modules can no longer use the something like:
struct { char name[1]; }
and then alloc(sizeof(struct) + length of name)

instead the struct element needs to be name[];
...and they would need to alloc(sizeof(struct) + length of name + 1)

No 3rd party modules in unrealircd-contrib use this so.. hopefully fine.
2026-02-22 16:26:57 +01:00
Bram Matthys 014925496b Forgot a few more of those [1] that need to be []
(see previous commit)
2026-02-22 16:24:55 +01:00
Bram Matthys 7d45e69fd2 Use C99 flexible array members, like name[], instead of name[1]
in NameList, Tag, Watch and HistoryLogLine.
This does mean the allocation routines need a +1 everywhere, but
I think I got all of them. I also don't see them being used directly
in such a way in 3rd party modules (which is logical, as they
should use the API and not allocate such structs directly).

Also, SpamExcept has been removed as it was not used anywhere.
2026-02-22 16:11:41 +01:00
Bram Matthys fb0649f14a Use full RELRO for modules (use HARDEN_LDFLAGS in MODULEFLAGS)
Previously, due to HARDEN_LDFLAGS missing in MODULEFLAGS we were
only partial RELRO instead of full RELRO. This is a defense-in-
depth measure but is good to have and the ommission was unintended.
2026-02-22 15:37:45 +01:00
Bram Matthys 8be6337e71 Update release notes
[skip ci]
2026-02-22 13:28:56 +01:00
Bram Matthys 19d17832fe Remove set::restrict-extendedbans as it didn't work. Simply don't load
the particular extended ban module if you don't want it.

For example, if you include the default modules.default.conf and, say,
you don't want ~quiet extbans then you add this in your unrealircd.conf:

blacklist-module "extbans/quiet";
2026-02-22 13:07:57 +01:00
Bram Matthys 6933e1839b Update extban_conv_param_nuh_or_extban() to use MAXBANLEN
instead of arbitrary 256 and such. Also makes it so other people
reading this code will understand better that MAXBANLEN is the
real limit here and not 256 (which is never reached because
the cut off already happens at 200).
2026-02-22 12:42:44 +01:00
Bram Matthys d38a106879 Enforce MAXBANLEN (which is MODEBUFLEN) at some more places.
This shouldn't be needed except for some corner cases, like if some
third party module does not limit their stuff properly, in S2S
or if channeldb contains some weird long entry or something.
2026-02-22 12:38:01 +01:00
Bram Matthys ac86029a61 Make convert_regular_ban() and extban_conv_param_nuh() consistently
allow bans of NICKLEN+USERLEN+HOSTLEN+3. Previously NICKLEN was
ommitted for some reason, which also explains why this ban-
simplification-routine exists in the first place. I think we can
make it use this full n!u@h space. Especially since we already allow
this for bans like ~quiet (the full n!u@h) and other extbans can be
quite long as well, it no longer makes sense to limit it here.

Small detail: in extban_conv_param_nuh() we used +32 which i think
is from the times when we had to deal with prefixes like ~quiet,
which is no longer the case, this routine is only about the final
suffix after the last : in a ban.
2026-02-22 11:58:15 +01:00
Bram Matthys 979f44bde4 Linking: upon duplicate server we could SQUIT the wrong one.
This would cause a bit of a mess, that usually would be resolved a few
seconds later, but still a mess. I had this on irc*.unrealircd.org
myself when rerouting a server from a backup-hub to primary-hub
a few months ago.
2026-02-22 11:37:09 +01:00
Bram Matthys d79161019a Clear client->local->proto for users.
This is not an issue now in all code paths, but if someone accidentally uses
SupportXYZ() without checking IsServer() then it would be an issue.

In the past we used client->local->proto for client flags as well, but this
has been split off to client->local->caps a while ago.

I guess we should rename client->local->proto to something more server-ish
in a later major release to indicate this as well.
2026-02-22 10:37:01 +01:00
Bram Matthys 371cb487b9 Fix missing "return;" in "Bad ulines" rejection of a server. 2026-02-22 10:00:32 +01:00
Bram Matthys 43da14f7c6 Get rid of old confusing comment in src/parse.c regarding commands with 0 flags
if (cmptr->flags != 0) { /* temporary until all commands are updated */

But that is impossible, as CommandAdd()->CommandAddInternal() already has:

if (!flags)
{
        config_error("CommandAdd(): Could not add command '%s': flags are 0", cmd);

And this is the case since commit ceb04cc3eb
from July 15, 2015.
2026-02-22 08:05:18 +01:00
Bram Matthys 059abc4b56 "STATS fdtable" is mostly for debugging. Simplify read/write handler display
and callback data in non-DEBUGMODE. Also because exposing pointers like
this can defeat ASLR. These STATS are oper-only though, but hey, defense in
depth... and the pointer values don't make sense to non-devs anyway,
so why show them in the first place.
2026-02-21 19:41:56 +01:00
Bram Matthys b467e4e147 JSON-RPC: Fix missing mtag issued by in user.part
We use mtag_add_issued_by() to prepare it but then pass NULL
in do_cmd() so it was basically useless.

Also compile fix for previous (forgot to git ammend)
2026-02-21 16:22:36 +01:00
Bram Matthys ec4ccbde82 Fix memory leak on JSON-RPC log.send and fix a small auth url parse thing.
Actually that auth url method is not documented, we should probably remove it.
2026-02-21 16:18:34 +01:00
Bram Matthys b93cb14623 Fix crash due to fix from a few hours ago (5580b294f4) 2026-02-21 16:04:50 +01:00
Bram Matthys d22f65364c Make duplicate deny link::rule items an error.
(as otherwise using duplicated generates only a warning and could memleak)
2026-02-21 14:57:41 +01:00
Bram Matthys f81fd965ea Mask item or security-group: add check for duplicate rule / exclude-rule 2026-02-21 14:55:13 +01:00
Bram Matthys b55a4b84e0 Blacklist hit with a soft ban action: fix memory leak if multiple hits occur.
So, if the IP was on multiple blacklists.
2026-02-21 14:43:41 +01:00
Bram Matthys 8740774d25 Not important but.. this did not free element 255. 2026-02-21 14:01:29 +01:00
Bram Matthys f20b62ea3b Fix memory leak on blacklist hit if using soft bans 2026-02-21 13:59:10 +01:00
Bram Matthys fae9dacf5d Fix some small REHASH leaks: tld->channel, link->connect_ip,
allow->server (last one is very rare).
2026-02-21 13:56:30 +01:00
Bram Matthys 28a8bee041 Don't use 'client' in CENTRAL_BLOCKLIST_ERROR, prolly copy-paste error.
Not really important as it is not part of the normal log message (only JSON).
2026-02-21 13:49:26 +01:00
Bram Matthys f59b937f3b Fix leak if central-blocklist returns "error" JSON string (very rare) 2026-02-21 13:45:47 +01:00
Bram Matthys 5580b294f4 Fix memory leak if using spamfilter::except. 2026-02-21 13:20:17 +01:00
Bram Matthys be479aa890 The buffer in spamfilter_build_user_string() was too small causing cut off.
This affects the spamfilter 'u' target. It didn't overflow but was cut off,
potentially causing a NON-MATCH where it could have been a MATCH instead.
2026-02-21 13:18:30 +01:00
Bram Matthys 2ac09de148 Fix central spamfilter with "stop" action, due to using same &var twice. 2026-02-21 13:13:15 +01:00
Bram Matthys 6130c1b5ae Update Windows build because library package with cURL changed
due to switch to 'cmake'. This is for unrealircd-libraries-6.2.3.zip from
https://www.unrealircd.org/docs/Windows_external_libraries_for_UnrealIRCd
2026-01-31 14:35:55 +01:00
Bram Matthys d8e631bacb ** UnrealIRCd 6.2.3-rc1 **
(not 6.2.2-rc1 :D)
[skip ci]
2026-01-31 10:14:21 +01:00
Bram Matthys bb4d1b528f ** UnrealIRCd 6.2.2-rc1 **
(Actually the Windows build is still building :D)
2026-01-31 09:44:57 +01:00
Bram Matthys 287184649c Update doc/unrealircd_wiki.zim to version of 2026-01-31. 2026-01-31 09:43:35 +01:00
Bram Matthys a93ab146b6 Add rpc/message and rpc/security_group modules for Windows build 2026-01-31 07:54:14 +01:00
Bram Matthys 4218010000 Update curl-ca-bundle to latest version (Dec 2 04:12:02 2025 GMT)
[skip ci]
2026-01-30 13:00:33 +01:00
Bram Matthys 6083c039cd Update shipped libs: PCRE2 (10.47), Jansson (2.15.0), Sodium (1.0.21) 2026-01-30 12:58:12 +01:00
Bram Matthys c24424bb50 JSON-RPC: throttle.set did not do anything
Reported by adator in https://bugs.unrealircd.org/view.php?id=6608
2026-01-30 07:39:37 +01:00
Bram Matthys bd1e25d017 Slightly raise default set::handshake-timeout from 30 to 40 seconds. 2026-01-28 09:44:49 +01:00
Bram Matthys 91d5114a1e Whitespace fix
[skip ci]
2026-01-28 09:38:39 +01:00
Bram Matthys ad1b59b4bd Update release notes a bit (what we have so far)
[skip ci]
2026-01-28 09:37:45 +01:00
Bram Matthys 728807d233 Set SSL_OP_NO_RX_CERTIFICATE_COMPRESSION by default.
Every time compression has been used in TLS it has been a source of
trouble. We don't care about such optimizations anyway since connections
are long-lived in IRC. We are not some kind of webserver where every
millisecond counts.
2026-01-27 19:31:25 +01:00
Bram Matthys e083852e86 Create separate resolver channel resolver_channel_https for HTTPS requests.
This one has DNS caching enabled[*], which makes sense for this case.

[*] If using c-ares 1.31.0 or later. That version was released in June 2024.
The shipped-with-UnrealIRCd library version is 1.34.6, so qualifies.
However, if using system c-ares (which is automatically the case, if detected)
then many systems don't have it. The first Linux distro versions that qualify:
* Fedora 40
* Debian 13
* Ubuntu 25.04 (non-LTS) and future Ubuntu 26.04 (LTS)
* Etc...
2026-01-26 09:57:07 +01:00
Bram Matthys a887de92ce Add extra safety in register_user() against shunned users. 2026-01-25 12:56:52 +01:00
Bram Matthys 8467969878 Don't show confusing CENTRAL_BLOCKLIST_TIMEOUT when user is shunned.
Previously it showed this warning and said "Allowing user .. in unchecked"
when the user got shunend by CBL. Usually harmless but.. had a report
where it possibly was not (though that was an older UnrealIRCd version).
In any case, confusing, solved now!
2026-01-25 12:54:30 +01:00
Bram Matthys ef75962a70 We now use a non-zero exitcode if ./unrealircd module install ... fails
Reported by ikci in https://bugs.unrealircd.org/view.php?id=6578
2026-01-23 13:15:17 +01:00
Bram Matthys af0f1fdd6b ModuleManager: check version of local module, don't overwrite if it is newer.
This was a long standing requests by devs.

So if third/something is version 1.2.3 in the repository, and you have
src/modules/third/something.c which is version 1.2.4 then neither
'./unrealircd module upgrade' nor './unrealircd module upgrade third/something'
will overwrite the module. It will stay the local 1.2.4 version.
A new status inst/LOCAL was added "module installed, local version is newer
than available online"

The command './unrealircd install third/something' would still (re)install
the online version, though, i think that makes sense.

When working on this I noticed that './unrealircd module upgrade' previously
always recompiled the module, even if it was not updated. This is no longer so.
2026-01-23 11:56:48 +01:00
Bram Matthys 91930e3631 Bleh, just use "*" in ERR_INVALIDMODEPARAM for the param.
Otherwise you get into trouble if client does things like:
MODE #test +l ::a
MODE #test +l :a b c
And I am too lazy to handle these cases :D
2026-01-23 08:48:34 +01:00
Bram Matthys d413959e57 Chanmode +l: when coming from an IRC client, reject <=0 instead of transforming.
Reject it with an ERR_INVALIDMODEPARAM, just like we do for +k.

I think the higher number transforming is fine, but this <=0 transformation
is odd as it almost never is what the user actually intended.

In S2S traffic we still transform, as rejecting there is more problematic,
(causing a desync) and transforming it there is not a major issue, anyway.

Reported by ProgVal in https://bugs.unrealircd.org/view.php?id=6602
2026-01-23 08:45:34 +01:00
Bram Matthys 2dd23d13b7 Silently drop TAGMSG to users who refuse PRIVMSG/NOTICE also (umode +D, +R),
since the message/notice would not make it through either.
This also means someone can no longer iterate through users to see who
is +D/+R by sending a "silent" TAGMSG. (Silent in the sense that the
end-user usually would not have noticed)

Suggested in https://bugs.unrealircd.org/view.php?id=6579 by zw32h (I think)

This also means HOOKTYPE_CAN_SEND_TO_USER now allows you to NOT to
set errmsg, to silently drop a message. Previously we would crash
deliberately on such a situation to enforce that all modules would
set a proper errmsg.
2026-01-23 08:23:22 +01:00
Bram Matthys 3925cea089 Update release notes a bit
[skip ci]
2026-01-23 08:11:01 +01:00
Bram Matthys c2db2715c0 Fix post-registration SASL not working due to change from a few days ago.
(commit 0cf0c0faa2)

This was caused by register_user() being called twice, while it should
only have been called if !IsUser().

Reported by ProgVal in https://bugs.unrealircd.org/view.php?id=6606
My BuildBot screen was also all red :D.
2026-01-23 07:48:01 +01:00
Bram Matthys a5f1aa7f34 Print a [BUG] line if register_user() is called twice. Deliberately crash
when running in DEBUGMODE.
2026-01-23 07:42:57 +01:00
Bram Matthys eea4cfa762 Modulemanager: support compile-flags and always look at modulemanager block
1) We now always look at the module { } block even for unmanaged modules
   (so .c files that you put manually in src/modules/third)
2) New module::compile-flags to allow specifying compile flags / libraries / etc.

See https://www.unrealircd.org/docs/Special_module_manager_block_in_source_file

So the new stuff is:

module {
        .....
        // Simple library dependency:
        compile-flags "-lsomelib";
        // Can even use:
        compile-flags "$(mysql_config --cflags) $(mysql_config --libs)";
        .....
}

This was requested long ago by various people.

And yes, this allows shell commands to be executed if the 3rd party indicates so.
The added risk should be small, since the module could do similarly evil stuff at
runtime, unless you compile with a totally different user compared to runtime.
The most common case where compile time vs runtime is completely different would
be for packaging (deb/rpm/whatever), which presumably ship with zero 3rd party
modules, so then there shouldn't be a concern either.

Obviously, for 3rd party modules in the unrealircd-contrib repository we screen
modules to make sure they don't do anything evil: "No malicious code or intent"
in https://www.unrealircd.org/docs/Rules_for_3rd_party_modules_in_unrealircd-contrib
2026-01-19 09:48:37 +01:00
Bram Matthys 34e3469f91 Merge branch 'unreal60_dev' of github.com:unrealircd/unrealircd into unreal60_dev 2026-01-19 09:04:51 +01:00
Bram Matthys 96f4954e2b Compile ALL 3rd party modules through modulemanager, including unmanaged.
This gets rid of src/buildmod and unifies the process a little, which
i need later.

We still compile the 3rd party modules unconditionally and twice (during
both make and make install). Which is a quirk that is in there since U6
and maybe U5 already :D. That's because we don't check if header files
have changed. There was previously a "is the .c file newer than the .so"
in there, though, that is gone now. Anyway, that's something for later.

Another quirk is that we do not halt compile if a 3rd party module fails
to compile. Which was sortof intentional at one point but.. is not ideal,
so will probably changed as well.

Anyway, that's not why i am doing all this stuff right now...
2026-01-19 09:02:53 +01:00
Valerie Liu 1dd6e9b07b Fix indentation in sasl.c return statement (PR #333) 2026-01-18 19:32:11 +01:00
Bram Matthys 0cf0c0faa2 Wait for SASL to complete during handshake (success/fail/timeout).
This is to guard against clients that do like CAP LS 302, NICK, USER,
AUTHENTICATE, CAP END, without waiting for the SASL result.

Previously "CAP END" would abort SASL if the response was not in yet.

Now "CAP END" will cause us to wait for SASL success/fail/timeout
and when that happens we will end the handshake and the user will
come online (or not, if e.g. banned).

In other words, SASL is no longer canceled upon premature CAP END.

And yeah, clients should wait, as is mentioned in
https://ircv3.net/specs/extensions/sasl-3.1
"it is RECOMMENDED to only send CAP END when the SASL exchange is
 completed or needs to be aborted"
But since it is a recommendation and not a hard requirement, we'll
be nice and handle this situation server-side.

Of course, clients could still misbehave then by sending stuff
blindly after CAP END, like JOIN events, without even checking
if they got numeric 001 and so on... so in that sense it shifts
the problem a bit.. but.. at least that type of waiting is
hopefully more common :D
2026-01-18 19:06:59 +01:00
Silent 275f04c76c Fix Y2038 bug on Windows in unreal_setfilemodtime (PR #332)
Int32x32To64 macro internally truncates the arguments to int32,
while time_t is 64-bit on most/all modern platforms.
Therefore, usage of this macro creates a Year 2038 bug.
2026-01-11 07:33:49 +01:00
Bram Matthys 1c461db46d Call update_known_user_cache() right before HOOKTYPE_REMOTE_CONNECT.
Set known_users=NULL during a very limited period, just to be safe.
(Note that it can also be NULL during initial boot, which is a
 longer period, which is why we always NULL-check in the code that
 accesses it, but this aside)
2026-01-10 10:36:40 +01:00
Bram Matthys 0cf9fb1cb0 Also update_known_user_cache() from AllowClient(), just before
calling HOOKTYPE_ALLOW_CLIENT and (potentially) allowing the client in.
2026-01-10 10:32:07 +01:00
Bram Matthys 4235a183e3 Call update_known_user_cache() when reputation score reaches known-users
threshold.

* Possible transition to known-users:
* - logged in is already handled by HOOKTYPE_ACCOUNT_LOGIN so we don't care about those
* - score reached (or just over) the minimum reputation score
* Caveat: if having multiple connections from the same IP then
* the first one may theoretically not have crossed in some cases.
* Ah well, it is a cache, not some precise thingy.
2026-01-10 10:15:09 +01:00
Bram Matthys 76aa3a12a6 Add SecurityGroup *known_users, to more quickly fetch those settings.
And use this in a couple of core routines.

This is to speed things up a liiittle.
2026-01-10 10:14:47 +01:00
Bram Matthys 7374fcc83f Add client->known_user_cached as a quick way to determine if the
user is in known-users or in unknown-users. Not used anywhere yet.

Every 2 minutes we rescore all users. Or more specifically: every
5 seconds we rescore 1/24th of all users. That's the slow update path.

On certain events that cause a likely/possible transition, we update
the cache immediately. At the moment that is on IP change and account
login/logout. More will be added later.
2026-01-10 09:57:18 +01:00
Bram Matthys 34ab517d9e Fix possible problem with channel in config-file, such as security group
or elsewhere. I don't think this is an actual problem, but at least the
fix from 1abf73309a was inconsistent,
if we check for b->client further down, then we should not be reading
from it a few lines up. As said, don't think this code is reached in
practice, but hey...
2026-01-04 10:31:38 +01:00
Bram Matthys de05bb9654 Bump version to 6.2.3-git and write some early release notes 2026-01-04 10:20:46 +01:00
Bram Matthys 21d58a7ebd Do the same as previous commit for the help.*.conf translations
This transplants commits 2868c3fedb
to doc/conf/help/help.*.conf
2026-01-04 09:47:37 +01:00
Bram Matthys 2868c3fedb help.conf: try to be consistent by documenting only end-user commands,
thus removing commands that are only supposed to be used by IRC clients.
We don't intend to document things like CAP, PONG, etc here.

Remove ISON, PONG, WATCH. Also remove DALINFO which no longer exists.

Re-index the USERCMDS and OPERCMDS table. This removes no longer existing
commands and may also have added some that were not in the index.

Moved STATS from USERCMDS to OPERCMDS since by default it is Oper-only
(and very likely is so effectively in practice).

Maybe PRIVMSG is a bit inconsistent in all this, since users don't type
that but usually it is like MSG. But yeah.. okay.. i can live with that.

As an aside, I don't like services commands being documented in HELPOP,
but that is another matter. These should be 100% documented in the wiki
first before they are scratched in the HELPOP. Right now some are still
missing.
2026-01-04 09:36:01 +01:00
Bram Matthys 2ca1dd0000 Warn about something like ban user { mask { asn { 12 34; } } reason "go away"; }
Where 12 34; is wrong and should have been 12; 34;
Reported by roger.
2026-01-03 20:17:18 +01:00
Bram Matthys 4e3989f304 Add ban user { ....; soft yes; } as an easy way to add a soft-ban from
the config file, without having to resort to things like mask %~asn:XXX;
Now you can just use:
ban user {
	asn { 11111; 22222; 33333; 44444; }
	soft yes;
	reason "This ASN is not allowed. If you have an account you can still bypass";
}

Requested by nobody but sounds like a good idea :)
2026-01-03 19:59:52 +01:00
Pedro Catalão d0a553790d Fix typo in Windows installation instructions link (PR #331) 2026-01-03 10:34:44 +01:00
Bram Matthys 1abf73309a Fix crash when using Extended Server Ban with invalid syntax in config file.
Reported for 'country', but also applied to 'asn', 'certfp' and 'channel'.
2025-12-26 12:25:05 +01:00
Bram Matthys c85c16f78c JSON-RPC: server_ban and server_ban_exception: expand mask/match items
Previously these showed up as "name":"<match item>", now they show
up properly like this:
        "match": {
          "account": "Syzop"
        },

(... and have no "name" item)

Also expand spamfilter::except while we are at it.
2025-12-14 10:37:50 +01:00
Bram Matthys ded89d1935 JSON-RPC: Make connthrottle.status use config::except and change "state".
* I changed "state":"active" to "state":"monitoring" to make clear it is
  not throttling at that moment but actively monitoring the situation.
* The config::except stuff was previously shown directly under config
  and only 3 particular items (that are most popular). Now we expand to
  sub-item "except" and use json_expand_security_group() to expand all
  the mask items, in a consistent way, just like for security groups.

{
  "jsonrpc": "2.0",
  "method": "connthrottle.status",
  "id": 123,
  "result": {
    "enabled": true,
    "throttling_this_minute": false,
    "throttling_previous_minute": false,
    "state": "monitoring",
    "start_delay_remaining": 0,
    "reputation_gathering": false,
    "counters": {
      "local_count": 0,
      "global_count": 0
    },
    "stats_last_minute": {
      "rejected_clients": 0,
      "allowed_except": 0,
      "allowed_unknown_users": 0
    },
    "config": {
      "local_throttle_count": 20,
      "local_throttle_period": 60,
      "global_throttle_count": 30,
      "global_throttle_period": 60,
      "start_delay": 180,
      "except": {
        "identified": true,
        "reputation_score": 24
      }
    }
  }
}
2025-12-14 10:26:28 +01:00
Bram Matthys c990848d2f Make json_expand_security_groups() really expand all and reorder some.
* Add some missing fields, such as destination, but mostly in the
  exclude- area where a bunch were missing (some of those are a bit
  far fetched, but hey, they exist, so should be shown if in use).
* Re-order fields to more closely match the struct (still not 100%)
* Extended fields, such as "account" and "country", now show up
  directly under the security group, just like the other fields,
  such as "reputation_score". This is also how they show up in the
  config file, so hide the the fact that internally in the struct it
  is stored differently.
* Add a comment in SecurityGroup struct in include/struct.h to make
  it clear you have to add/update stuff at 7 places if you are adding
  something new.
2025-12-14 10:11:09 +01:00
Bram Matthys 426040d870 Move json_expand_security_group() from rpc/security_group to core
and don't include name/priority if it is called for a match item
(which don't have a name or priority).
2025-12-14 09:43:52 +01:00
Bram Matthys 806fa83dd7 ** UnrealIRCd 6.2.2 ** 2025-12-12 12:16:31 +01:00
Bram Matthys 65a1f657b9 Fix testssl profiles to match output of new version of testssl.sh. 2025-12-12 11:57:42 +01:00
Bram Matthys 94d4ded864 Update c-ares to 1.34.6 and update release notes. 2025-12-12 10:13:49 +01:00
Bram Matthys fd52b71081 Setting set::tls::certificate and set::tls::key did not override the default
certificate or key. It added the cert/key to the list of certs, like a
"dual cert" approach.

This was caused by commit 877d151da4,
which indeed adds support for "dual cert" (or more).

I have now deferred setting the default to happen only if no
set::tls::certificate is specified, as you would expect.

We (already) used a similar delayed-initialization / deferred setting
approach in the ::tls-options inheritance code (for blocks like
listen, sni, link, etc.)

Just as a slightly related reminder, we do normally suggest keeping the
conf/tls/server.cert.pem and conf/tls/server.key.pem for server linking
and then use a cert from a trusted CA in the listen block for 6697 etc.
See https://www.unrealircd.org/docs/Using_Let's_Encrypt_with_UnrealIRCd
for more information (and the 'why').
2025-12-10 19:00:12 +01:00
Bram Matthys bda03caf81 modules.default.conf: fix warning of comment in comment, due to rpc/*
Change comment style. Counter-intuitive, but fits the rest of the file.
2025-12-06 17:08:58 +01:00
Valerie Liu 7964345c0b Add RPC methods for security_group and connthrottle (#328)
New RPC methods:
- security_group.list: List all security groups
- security_group.get: Get details of a specific security group
- connthrottle.status: Get full connection throttle status, counters, and config
- connthrottle.set: Enable/disable connection throttling
- connthrottle.reset: Reset connection throttling counts

This also adds json_expand_mask_list(), json_expand_name_list(), and
json_expand_nvplist() to src/json.c for reuse by RPC modules.
2025-12-06 14:58:57 +01:00
Bram Matthys d2586a4b9c Add a blob of text (comment) about JSON-RPC in modules.default.conf
A link to https://www.unrealircd.org/docs/JSON-RPC and such is nice.
And also explain that not all JSON-RPC modules will be in rpc/*.
Sometimes it makes more sense to just put everything in the same
module, such as connthrottle RPC stuff in the connthrottle module.
2025-12-06 09:52:34 +01:00
Valerie Liu 65f85a1b28 JSON-RPC: Add message.* (PR #327 from Valware)
* message.send_privmsg
* message.send_notice
* message.send_numeric
* message.send_standard_reply
2025-11-28 12:24:19 +01:00
Bram Matthys a9ddc3768b Fix some lines ending with \r\r\n instead of \r\n with labeled-response.
Reported by andymandias in https://bugs.unrealircd.org/view.php?id=6406
2025-11-20 11:27:29 +01:00
Bram Matthys 8715e54059 Fix some wording in release notes
[skip ci]
2025-11-19 09:06:56 +01:00
Bram Matthys 1cdf3594ba Make a start with the (very early) release notes
[skip ci]
2025-11-19 08:53:41 +01:00
Bram Matthys 2653b5152e Fix crash if you don't load usermodes/bot or usermodes/noctcp.
It should be perfectly fine if you choose not to load these modules but,
while optimizing / speeding up the find_user_mode() function, i made
it crash in case the hunted user mode does not exist. Oops.
2025-11-19 08:21:27 +01:00
Bram Matthys 242267c280 Fix github CI 2025-11-15 18:40:59 +01:00
Bram Matthys b1210024c6 Bump scratch buffer too, or we would overflow due to previous commit 2025-11-15 18:40:04 +01:00
Bram Matthys 6c5de62c18 Add CMD_BIGLINES support to SJOIN (incoming only)
We still propagate in a non-biglines way, no plan to change that atm.
This is just future-proofing. More testing/auditing needs to be done,
especially to see if buffers are sufficient.
2025-11-15 17:05:45 +01:00
Bram Matthys 3c0046be8b Attempt to fix fight with Gottem's auditorium module.
delayjoin was setting +d if there are invisible users still,
but it should only do that if the channel was +D earlier and
not in all cases (like if some other module is dealing with
invisible users).
2025-11-12 17:51:17 +01:00
Bram Matthys 61ebd34a1e Fix compile error and add URL validation: valid UTF8, no spaces, no low ASCII 2025-11-12 10:53:43 +01:00
Bram Matthys 68f01814be Some minor updates to previous.
* We try to keep the dynconf variables the same name as in the conf
  (well, with hyphens to underscores, and there are some exceptions)
* Remove unnecessary but otherwise harmless second safe_free()
* The URL could have been too long. It is now limited to 360 characters,
  which should be plenty.
2025-11-12 10:14:27 +01:00
Valerie Liu 557595fd1c Implement IRCv3 network icon support (PR #326)
set { network-icon 'https://...........'; }
https://ircv3.net/specs/extensions/network-icon
2025-11-12 10:01:42 +01:00
Valerie Liu f7865140ad Allow '/' in ISUPPORT tokens (PR #325)
Relax requirements for ISUPPORT tokens a little bit, to include '/', which allows for vendor-prefixed isupport tokens. More info:
- https://modern.ircdocs.horse/#rplisupport-005
- https://github.com/ircdocs/modern-irc/issues/250

PR from Valware in https://github.com/unrealircd/unrealircd/pull/325
2025-11-09 09:28:26 +01:00
Valerie Liu c723292ec9 Add HOOKTYPE_MOTD so modules can add their own MOTD lines before RPL_ENDOFMOTD (PR #324) 2025-11-09 09:16:23 +01:00
Bram Matthys 6064fdb054 Small ./Config change to walk through older release directories 2025-11-09 09:04:58 +01:00
Bram Matthys d7a6868950 Bump version to 6.2.2-git 2025-11-09 09:01:34 +01:00
Bram Matthys 4e0eaecb33 Run ./configure for PCRE2 also with original CFLAGS
(and not with the ones we add during ./Config like -Wall -Wextra etc...)

Seen while debugging some other problem
2025-11-07 18:39:40 +01:00
Bram Matthys 8e6ee0ba6a JSON: Make channel.kick check if the user is in channel and
throw an error (JSON_RPC_ERROR_USERNOTINCHANNEL) if this is not the case.
Previously we returned success.

Also, if using DEBUGMODE (never on production servers), the server
would crash if the user is not in the channel.
2025-11-04 17:57:06 +01:00
Bram Matthys 09032ec868 ** UnrealIRCd 6.2.1 ** 2025-11-02 16:10:26 +01:00
Bram Matthys ced1382eab Fix channel messages not showing up on remote servers (6.1.2-rc2 bug).
This required two members on the same server and channel mode +H to be set
(or set::broadcast-channel-messages 'always', then also with -H).

The cause was a (normally harmless) optimization in
1473f52603 which meant we would loop
through remote servers for the case of +H.

And then the real cause a bug in the linecache system, which
caused servers to be seen as LCUT_NORMAL because locally
connected servers are MyConnect()->true.

And then on the wire (S2S) a message would look like..
:nick!user@host PRIVMSG ...
But nick!user@host is not valid in normal S2S traffic and on the receiving
server is seen as a nick@server message (and 'nick!user' is never found
on 'server' where server is actually a user host)... seems like an
old relic, but this aside.
This in turn, causing the message to be dropped (unknown source),
and the PRIVMSG handler is not called at all.

Bug reported by CrazyCat and then PeGaSuS managed to reproduce the
issue later on irc.unrealircd.org. Thanks!

As said, this only affects 6.1.2-rc2 and chmode +H.
2025-11-02 15:53:42 +01:00
Bram Matthys 89d8653583 Fix missing const in check_version()
Arguments were const char * in the EFunction but not in the actual function,
flagged by UBSan. Similar to 8c26cec5fc.
2025-10-31 09:54:36 +01:00
Bram Matthys 3510722cef url_unreal: fix relative redirects not working
When using build-in UnrealIRCds https support, a redirect to
https://etc... was working fine, but an internal redirect to /xyz
would fail.
2025-10-31 09:41:50 +01:00
Val Lorentz 295d0932fb message-tags: Fix length checks (PR #323)
The fix in da703efdf4 (6.2.1-rc1) was
incorrect because it swapped the limits for clients and servers
2025-10-31 09:32:00 +01:00
Bram Matthys 663a33e981 Update release notes a bit on webhooks and other recent improvements.
[skip ci]
2025-10-29 14:07:09 +01:00
Bram Matthys 3a35689a43 Adjust the "To ensure UnrealIRCd automatically starts on system startup" text
at the end of "make install". Previously it mentioned installing a
Cron job, now it also mentions Systemd.
2025-10-29 10:39:36 +01:00
Bram Matthys fea1d2ab8b Add two systemd unit files in extras/startup:
Use extras/startup/unrealircd.service if you want a system-wide unit
file, which is normally what people tend to use. The benefit of this
is that it allows setting some security options.

Use extras/startup/unrealircd_user.service if you want a user unit
file. This works if you don't have root on the machine.
2025-10-29 10:13:04 +01:00
Bram Matthys 82417d0cd2 Don't write PID file if running in foreground mode (-F) and error on
./unrealircd [start|stop|restart] commands if unrealircd is running
but without a pid, which will be the case if running through systemd.

The systemd example unit files will be in a future commit.
2025-10-29 10:04:32 +01:00
Bram Matthys 82f21df20b Make unrealircd binary mention at least -F
Reported by henk in https://bugs.unrealircd.org/view.php?id=6424
2025-10-29 08:17:35 +01:00
Valerie Liu c16d602cc2 Add webhooks functionality to log blocks (PR #322) 2025-10-27 08:50:38 +01:00
Bram Matthys b31c394cd0 When channel flood protection kicks in, tell chanops how to get more info,
namely via "MODE #channel +F".

Enhance "MODE #channel +F" by explaining a bit more (like, actions a chanop
can do to change things).

Example of protection kicking in:

*** Channel CTCPflood detected (limit is 7 per 15 seconds), setting mode +C. Type "/MODE #test +F" to get more information on channel flood protection.

Then if you type "MODE #test +F":

Channel '#test' has effective flood setting '[7c#C15,30j#R10,10k#K15,40m#M10,8n#N15]:15' (flood profile 'normal')
-
You are currently using the default anti-flood profile normal.
If you want to change to a different anti-flood profile, for example because flood protection is kicking in too quickly
or too late, then you can use MODE #test +F <profile>. See the list of profiles below (ordered from lax to strict).
List of available flood profiles for +F:
          off: []:0
 very-relaxed: [7c#C15,60j#R10,10k#K15,90m#M10,10n#N15]:15
      relaxed: [7c#C15,45j#R10,10k#K15,60m#M10,10n#N15]:15
       normal: [7c#C15,30j#R10,10k#K15,40m#M10,8n#N15]:15
       strict: [7c#C15,15j#R10,10k#K15,40m#M10,8n#N15]:15
  very-strict: [7c#C15,10j#R10,10k#K15,30m#M10,5n#N15]:15
See also https://www.unrealircd.org/docs/Channel_anti-flood_settings

(And actually there is some bold text there too)

Indirectly suggested in https://bugs.unrealircd.org/view.php?id=6580
by rafaelgrether and PeGaSuS (being more clear to IRCOps what is happening).
2025-10-25 15:30:17 +02:00
Bram Matthys 5b6037698a Forgot to add 3 modules in Windows makefile.
[skip ci]
2025-10-23 19:05:09 +02:00
Bram Matthys 58c37b67f9 ** UnrealIRCd 6.2.1-rc2 ** 2025-10-23 18:02:43 +02:00
Bram Matthys 1feb7bbbfe Workaround gcc UBSan bug triggering -Wstringop-overread 2025-10-17 17:04:52 +02:00
Bram Matthys 23fc12c71c Update doc/unrealircd_wiki.zim (current wiki) 2025-10-17 11:25:27 +02:00
Bram Matthys f5a5dae4aa Make sanitizer question in ./Config not only enable ASan but also UBSan
(both AddressSanitizer and UndefinedBehaviorSanitizer)

This previously helped finding 8c26cec5fc

Also update the ./Config text a bit, eg about ASan not running OK on FreeBSD,
which only affects <14.2 as per https://bugs.unrealircd.org/view.php?id=6470#c23412
2025-10-17 09:27:43 +02:00
Bram Matthys ad991e9d0b Move "web" too from MODDATATYPE_CLIENT to MODDATATYPE_LOCAL_CLIENT
Since this is always about a local connection
2025-10-17 08:29:09 +02:00
Bram Matthys 8067ee3ad2 Move some modules using MODDATATYPE_CLIENT to MODDATATYPE_LOCAL_CLIENT
authprompt
blacklist
blacklistrecheck

This frees up 3 positions in MODDATATYPE_CLIENT
2025-10-17 08:25:06 +02:00
Bram Matthys 1d774de862 Add MODDATATYPE_* to MODULE for IRCOps 2025-10-17 08:19:15 +02:00
Bram Matthys b3821c3c4f Code cleanup: now that MDInfo is split by [req.type],
we don't need to check for type == req.type anymore.
2025-10-15 08:32:28 +02:00
Bram Matthys c1dff43c8d Make the "ModDataAdd: out of space" error message more helpful 2025-10-15 08:31:27 +02:00
Bram Matthys a52281dc28 Some more attempts to kill a proxy crash bug 2025-10-14 19:52:57 +02:00
Bram Matthys da703efdf4 Fix OOB write in message tag S2S parsing, introduced in 6.2.1-rc1.
This would happen if a remote server (trusted server traffic) would
come up with a 8K message tag (or actually name or value of 8K).
2025-10-14 16:51:31 +02:00
Bram Matthys 5c587e6230 Fix crash in new ISUPPORT command (if sent by remote server)
That is, trusted S2S traffic.
2025-10-14 16:44:17 +02:00
Bram Matthys 7f1d42856f Some minor rewording of release notes / adding links 2025-10-12 15:26:43 +02:00
Bram Matthys 15e367a822 ** UnrealIRCd 6.2.1-rc1 ** 2025-10-12 15:10:32 +02:00
Bram Matthys 058affe028 Fix crash with proxy { } block and if client is killed after parse_proxy_header().
Have not tried to reproduce but this could happen if the client is Z-Lined.
2025-10-11 10:22:41 +02:00
Bram Matthys 0607a63d91 Write a lot more in release notes 2025-10-10 19:21:02 +02:00
Bram Matthys 01ffa1c98f Merge branch 'unreal60_dev' of github.com:unrealircd/unrealircd into unreal60_dev 2025-10-10 08:44:15 +02:00
Bram Matthys 6a837bf669 inetntop() was using a wrong sizeof() which could trigger a message
about an overflow with eg 'STATS maxperip' (IRCOp-only command).
Also, STATS maxperip failed to return 1 in the hook, resulting in
unnecessary STATS help output after the list.
2025-10-10 08:42:38 +02:00
Rafael Grether 1182bd4430 Fix ./Config printing a message about 'make' not installed on OpenBSD (PR #321)
Replace 'make --version' check with 'command -v' for better BSD and non GNU/Linux support.
2025-10-08 09:11:47 +02:00
Bram Matthys 32570ad2f8 And let's add an IsUser() here too. This isn't a problem atm,
since it is only called from JOIN (so always a user), but you
never know in the future...
2025-10-07 18:35:16 +02:00
Bram Matthys 789ef5aa4c Fix crash due to recent commits. Don't call invisible_user_in_channel for servers. 2025-10-07 18:33:27 +02:00
Bram Matthys 99ae01edf8 Fix tls-tests after last chgs 2025-10-06 14:23:04 +02:00
Bram Matthys be8e2f4764 CI: Add -slightlyfast so ban expiry test is skipped (that one runs in BuildBot anyway)
This to keep the CI at GitHub reasonably fast.
2025-10-06 11:52:52 +02:00
Bram Matthys 7cb3b50737 run-test: add $RUNTESTFLAGS 2025-10-06 11:52:04 +02:00
Bram Matthys cfaae0533d Move testssl.sh cloning to tls-tests 2025-10-06 11:34:02 +02:00
Bram Matthys f0b6a648a3 Add CI badge to top of README 2025-10-06 11:14:16 +02:00
Bram Matthys acab7240c9 CI: Whoops.. missed the last line. 2025-10-06 11:05:24 +02:00
Bram Matthys 03423e155c GitHub Actions: add Linux CI (in addition to existing BuildBot)
We already run CI since 2014, first via Travis CI, then when it became
paid we switched to self-hosted BuildBot in 2019. Later that year
GitHub Actions came also in existence, but we already switched over to
BuildBot by then so didn't use it.

We will still use BuildBot on self-hosted to test various Ubuntu and
Debian distro versions, FreeBSD and Windows. Also, in the BuildBot we
have our own pre-build environment where we run Services tests (with
both anope and atheme), we run TLS there (again on all those distros
with various OpenSSL versions). And we also test both clang and gcc.

So what is new? Well, now we will also run a "quick test" via GitHub
Actions, like most projects out there on GitHub. Not the services test,
not the TLS tests, but simply latest Ubuntu and then clang+gcc.
The main benefit of this is that it will also show up on Pull Requests
and makes it "public" as our BuildBot page is restricted.
2025-10-06 11:01:28 +02:00
Bram Matthys 573f65efb5 Add extras/tests/tls/tls-tests.bbwrapper which i use for BuildBot 2025-10-06 10:07:22 +02:00
Bram Matthys 85ce779f93 Use $NOSERVICES instead of $FREEBSD if we want to skip services tests 2025-10-06 09:32:11 +02:00
Bram Matthys 4a3d3bf72f extras/tests/tls/tls-tests: split these off in an additional step
A side-effect is that this will keep unrealircd and services running.
2025-10-06 08:58:17 +02:00
Bram Matthys 07b99d1429 extras/build-tests/nix/build: support additional CPPFLAGS
and output something more useful.
2025-10-06 08:55:17 +02:00
Bram Matthys 326b1cd349 quit_sendto_local_common_channels(): rename some variables
Previous was way too confusing where user was actually a client and
channels was actually a membership struct. And then you got like
user->user and channels->channel. No, let's make this conform to
the same style that we use elsewhere. Who the hell wrote this !??
Oh, it seems I did :D
2025-10-05 16:23:02 +02:00
Bram Matthys 301c7915a7 Optimize +D stuff in quit_sendto_local_common_channels()
1) Similar to sendto_local_common_channels() go through local_members
   instead of all channel members
2) We have the membership info, so use user_can_see_member_fast()
2025-10-05 16:14:28 +02:00
Bram Matthys ef8394c64d Optimization: avoid find_member_link()'s where possible
This mainly affects MODE #channel +vhoaq and such. And as with all these
optimizations it mostly affects channels with more than 10 people (eg
hundreds or thousands).

Also did add_member_mode() and del_member_mode() but those are not
used by our own code because we always use fast versions anyway.
Oh yeah and the +D invisibility shit via set_user_invisible():
that one i didn't benchmark but should be better as well for
large channels.
2025-10-05 16:03:35 +02:00
Bram Matthys 5f2f020183 Make unreal_copyfile() copy in 16k chunks instead of 1k 2025-10-05 14:05:52 +02:00
Bram Matthys aaa3179676 Avoid running make_cloakedhost() twice for remote clients.
This saves around 5% unrealircd CPU in 100k remote clone tests.
2025-10-05 11:18:11 +02:00
Bram Matthys 9310c655b9 We can do the umode change by UID. Not that it matters much :D.
And parv[0] is always NULL in UnrealIRCd.
2025-10-05 11:02:02 +02:00
Bram Matthys 5b6c00946a Optimize set_user_modes_dont_spread(): use _cmd_uid() directly.
Only downside is that mtags would be NULL, but we don't use it in
cmd_uid() so that's okay. This saves us from generating mtags in
do_cmd() when we don't need it. And also a command handler lookup
and all that. Saves around 8% of unrealircd CPU for 100k connects.
2025-10-05 11:00:00 +02:00
Bram Matthys 80189a6ce9 Replace a HasCapability() with HasCapabilityFast()
Since mtags_to_string() is a function that is called a lot, this matters.
2025-10-05 10:34:25 +02:00
Bram Matthys fa8a0b2083 Make IsSynched() check if both the "far" server and the "near" server are
synched. Both need to be checked, because:
* The "far" server may be fully synched to "near" (and thus tagged as synced)
  but the "near" server may be introducing the "far" server, when
  we are connecting to "near"
* The "near" server may be fully synched but the "far" server is connecting
  in and may thus not be synched yet

In reality, things are even more complex, since one would have to verify
the whole chain of links. But.. yeah.

Long-story short: this fixes things like "User xyz joined #xxxxx" logging
where this showed up while the server was linking in. It is not supposed to
log that, similar to how we not log all 1000 users as newly connecting when
a 1000-user-server links in. In fact, it didn't already log that for
directly-connected-servers, but for far servers it did previously.

And... that again gave performance issues if you were connecting like a
100k-user far server.. since you suddenly had 100k * numchannels join events
being logged (which surprisingly still only took 6 seconds for 100k entries,
but still, it is wrong to do so and can be avoided).
2025-10-05 10:26:01 +02:00
Bram Matthys 9b493cfe6a Avoid a get_floodsettings_for_user() call for servers.
This didn't show up in initial profiling, but now that other areas
are faster, this one starts to show up with 15% for 100k-clone remote
server traffic. Easy change :D
2025-10-05 09:02:51 +02:00
Bram Matthys c729d18a8c Add (faster) remove_user_from_channel_withmb() and use it from various places.
We can use this when we already have the Membership struct, which is the
case for PART, (SA)JOIN 0 and QUIT. Saves a couple of iterations.
2025-10-05 09:01:08 +02:00
Bram Matthys af0a784464 Make member & membership point to each other so lookups can be much faster.
This also makes them proper list items, again to make certain fast operations
possible. Main thing is that removing an entry does not require us to walk
all of those lists. Not all code has been modified yet to benefit this,
actually only very little, the most performance-impacting ones.

This fixes SQUIT of a server with 100k users in a single channel taking
40 seconds of 100% CPU. It now takes only 1 second.
Reported by craftxbox in https://bugs.unrealircd.org/view.php?id=6484

(Can't make member & membership one entry atm, that would be too much change in U6)
2025-10-05 08:32:43 +02:00
Bram Matthys 55dd4601f2 Change some find_member_link() to find_membership_link() which is faster.
The first one iterates through all channel members (can be hundreds or thousands)
and the latter goes through the channels a user is in (typically <15).
2025-10-04 20:46:20 +02:00
Bram Matthys 68ef88c0c4 Move from HOOKTYPE_VISIBLE_IN_CHANNEL to invisible setting in member->memb_flags.
This so we can use fast(er) techniques here and there.

New functions are:
channel_has_invisible_users(client)
set_user_invisible(client, channel, 1|0)
Existing functions:
invisible_user_in_channel(client, channel)
user_can_see_member(user, target, channel)
user_can_see_member_fast()

This is work in progress, although the tests seem to pass atm.
2025-10-04 20:33:46 +02:00
Bram Matthys 1473f52603 Another sendto_channel() optimization in case of some PRIVMSGs.
When the channel is +H we broadcast to all servers, so we can simplify
that case and don't need to iterate the channel->members.
The same is true if set::broadcast-channel-messages is set to 'always',
though that is not known to be used much.
2025-10-04 08:50:42 +02:00
Bram Matthys e92b8ef3ad Fix uninitialized variable in sendto_channel() 2025-10-03 19:14:44 +02:00
Bram Matthys 2e21e7fdbf Make sendto_local_common_channels() use channel->local_members.
This too should be a significant performance improvement for multi-
server networks. Especially since this isn't just num_channel_members
of 1 channel, but about common channels, so could easily be like all
channel members of 10 channels combined.

This function is used for NICK, QUIT, and notification for CAP-
enabled clients for setname, account and away changes.
2025-10-03 19:13:39 +02:00
Bram Matthys cfe3ce38b2 testssl_profiles/*txt: TLS 1.2 -> TLSv1.2, etc... 2025-10-03 18:47:32 +02:00
Bram Matthys 569a12055f Add channel->local_members and use it in sendto_channel().
This makes things a lot faster on multi-server networks, especially for
big channels where most of the clients in the channel are remote users.

This should be non-module-API-breaking, as all code uses the
add_user_to_channel() and remove_user_from_channel() functions.

Still need to spread this to other code, more optimizations possible.
2025-10-03 18:11:03 +02:00
Bram Matthys 86e7ab307a Bump dbufs from 4k to 8k. Gives a 5% performance improvement.
That is, during my tests with 1000 TLS clients doing a couple of commands,
including one big one (WHO #channel on a 1000 user channel).

I also tested an SSL_writev() implementation (which would gather up to 16k)
but it gives very comparable speed and caries more risk of doing so in a
stable series. I think we can live with the 4 kilobyte extra per local
client in the year 2025 (and later).
2025-10-03 16:11:52 +02:00
Bram Matthys 902802a8dc I/O engine: don't request write notification if we don't need it.
In testing with 1000 TLS clients this saves around 16% of unrealircd
CPU time (so not 16% CPU, but 16% of whatever % unrealircd cpu is).
2025-10-03 16:02:51 +02:00
Val Lorentz 45ef8d1cf1 Fix multi-prefix (#320) 2025-09-30 23:57:45 +02:00
Bram Matthys d5332ca765 Fix memory leak in JSON-RPC stats.get 2025-09-30 16:50:06 +02:00
Bram Matthys ac9709531a Fix windows compile which was broken on Sep 17 by commit
0c17276039.
2025-09-29 19:41:07 +02:00
Bram Matthys 792eca7d4d Fix chathistory test fail... duh.. accidentally set a local var. 2025-09-29 18:04:41 +02:00
Bram Matthys 15c8b1aa40 Optimization: Use HasCapabilityFast() in whox.c and extended-monitor.c
The whox one saves a lookup for each channel member (so eg 500 for a
channel with 500 members). The extended-monitor saves it on delivering
watch/monitor notifications, so depends on the # of subscriptions.
And that's each time such a command is called. We now only lookup on
MOD_LOAD.
2025-09-29 18:00:14 +02:00
Bram Matthys 80a381c76a Optimization: history: use HasCapabilityFast() instead of HasCapability()
This makes it so the capability bit lookup is done only once on module load
and not on each client JOIN.
2025-09-29 17:20:06 +02:00
Bram Matthys e42610ebba Optimize MONITOR / WATCH to do ModData lookup only at MOD_LOAD()
instead for each MONITOR / WATCH command.
We use the same technique in other modules, eg for websockets.
2025-09-29 16:56:16 +02:00
Bram Matthys c0a46abd60 ModData API: add ModDataInfo .priority item and use it to speed up
things by making the keys with the most lookups first, e.g. "reputation",
"geoip", "certfp". This order is based on actual lookup counts during a
quick test with 250 clones doing some typical IRC traffic.

Key:		Lookups:	Position before:	After split:	After split+order:
"reputation"	20362		37			14		1
"geoip"		10555		44			15		2
"certfp"	9264		23			8		3
"webirc"	7407		27			10		4
"websocket"	7110		55			19		5

We could also consider going for a hash table, but this may be "good enough" for now.
2025-09-29 16:50:44 +02:00
Bram Matthys db6476e1ab ModData API (internal): split the single linked list into 7 lists, to speed
up moddata_client_get() etc -> findmoddata_byname().
Apparently we have 52 moddata registrations (that is without 3rd party modules)
so otherwise it is a loooong linked list.
2025-09-29 16:22:08 +02:00
Bram Matthys 51625592cb Get rid of a memset() of 16k in labeled response implementation.
This was done in lr_pre_command() and lr_post_command().
Nowadays we have BIGLINES stuff from servers that cause MAXLINELENGTH
to be 16k, so the LabeledResponseContext ended up being 16k+.
Although we normally have the policy to zero out complete structs
in UnrealIRCd instead of only individual members (for safety,
easy to overlook security bugs), in this case we will do zeroing
of struct members explicitly. Added some warnings about this too
in the source code. Zeroing 16k twice for each command is a bit
too much waste.
2025-09-28 18:24:23 +02:00
Bram Matthys cf2c3baca5 Whoops.. fix compile. 2025-09-28 18:02:12 +02:00
Bram Matthys 2ee12bf326 Make SHA256 30% faster when used for cloaking and other very small inputs,
simply by re-using the context.

The slowdown happened due to commit a541b8f4ad
in June 2021 when converting to OpenSSL 3+ code. Now it is basically
back to the pre-openssl-v3 speeds.
2025-09-28 17:24:11 +02:00
Bram Matthys b3fd6b9bca Optimization: use umode_letter_to_handler[] for faster has_user_mode()
and find_user_mode(). That's one array of 256 elements, instead of
iterating a linked list where - if you are unfortunate - one may
need like 26 iterations.

In sendto_channel() we did the check for user mode +T before the
sendflags & SKIP_CTCP, that makes no sense and caused useless CPU.
We now do it the other way around, and also only lookup the user
mode just once (if needed).

The umode_letter_to_handler[] code may crash, it is not well tested
yet, only had two runs so far. Seems to work ok even with REHASH tho,
but have not tested delayed module unloading for example.
2025-09-28 16:49:20 +02:00
Bram Matthys e3b92cc084 away_join() optimization: don't bother if user is not away.
Otherwise we are iterating <num channel members> all for nothing.
2025-09-28 16:20:19 +02:00
Bram Matthys 5a02d4f52c Get rid of the *@unrealircd.com mask in the example vhost as it is commented out
now anyway. And thus, get rid of the related comment as well.
2025-09-28 10:41:00 +02:00
Bram Matthys c8431b7cb8 Make client->local->caps a 64 bit unsigned int on all archs.
This was previously a "long", which could cause issues on 32 bit archs.
We ship with 28 CAPs now, and that's without 3rd party modules, so...

This is similar to the client->flags bumping in 2023
(a3ed1eabd9).
2025-09-28 10:03:04 +02:00
Bram Matthys a2e099bf47 Extbans: fix various syntax error / usage examples where old single letter
is used instead of the full name (eg ~S instead of ~certfp).
We have named extended bans since UnrealIRCd 6.0.0 (2021) already...
2025-09-25 19:27:34 +02:00
Bram Matthys ddfe7c535c Make TLINE use server_ban_parse_mask() so it uses the same logic as GLINE.
This fixes something like TLINE ~country:us not automatically converting
to ~country:US, since previously conv_param() was not called. But it also
means other code is used in the same way as GLINE (other type of rejections),
for example invalid server ext ban will print a better error with syntax
info (e.g. TLINE ~certfp:xx).

That ~country issue was reported by adamus1red in https://bugs.unrealircd.org/view.php?id=6581
2025-09-25 19:16:11 +02:00
Bram Matthys 65b69f9164 Sync away_since in S2S traffic from now on.
See also comment in f42bab778e
about away_since in JSON-RPC.
2025-09-24 13:47:53 +02:00
Bram Matthys 995b67f785 Module manager: add "last-updated" property to generated module list. 2025-09-24 09:58:21 +02:00
Bram Matthys 53707f27b9 Fix unitialized variable in link config test, due to commit from yesterday
(4c6e259681).
2025-09-22 08:25:18 +02:00
Bram Matthys 602f6c7238 URL API: add .minimum_tls_version, and use TLS1_3_VERSION for central-blocklist.
Something like:

 #ifdef TLS1_3_VERSION
        w->minimum_tls_version = TLS1_3_VERSION;
 #endif
        url_start_async(w);

Require TLSv1.3 for central-blocklist and spamreport calls, unless your
OpenSSL does not support it, which should be rare.

At some point in the future I will make this endpoint TLSv1.3+ only.
2025-09-21 14:24:06 +02:00
Bram Matthys 507061af46 Add tls-options::signature-algorithms for those who want to override the default.
We don't set it in UnrealIRCd at the moment, so this is just to override
the OpenSSL defaults at the moment. It is good to have this exposed, in
case some vulnerability is discovered or you need some flexibility in
tweaking this.
2025-09-21 13:55:24 +02:00
Bram Matthys b0b6cc81e2 This belongs to the autoconf upgrade too (see previous) 2025-09-21 13:39:12 +02:00
Bram Matthys fd5db98c88 Rebuild ./configure after upgrade of autoconf 2.71 to 2.72 2025-09-21 13:37:31 +02:00
Bram Matthys d1b1a413cf Make code that sets TLS groups also apply to client context.
(groups were previously called ecdh-curves)
2025-09-21 13:32:04 +02:00
Bram Matthys 4c6e259681 You can now use "password" multiple times in the conf (eg in allow::password).
allow {
	mask *;
	password "secret";
	password "letmein";
}

This is always an "OR" type of match, any match means you pass.

I was actually doing this for the dual-cert stuff from previous commit,
where this can come in handy:

link irc1.example.org {
...
    password "AHMYBevUxXKU/S3pdBSjXP4zi4VOetYQQVJXoNYiBR0=" { spkifp; };
    password "jNw8P4QMg9tqjEJ4/lFikXBNHdIGSeN2B4/T322VjIo=" { spkifp; };
...
}
2025-09-21 11:42:59 +02:00
Bram Matthys 877d151da4 Support multiple TLS certificates/keys, e.g. ECDSA + ML-DSA (PQC).
In the past a dual cert/key setup could have been useful for RSA + ECDSA
but nowadays all clients support ECDSA so that makes little sense.
The reason it is added now is so you can use ECDSA + ML-DSA or some
other [regular crypto] + [post quantum crypto] combination.
Actually, you could even use more than two.

To use this in the config file, simply use the certificate and key
directive multiple times. Just be sure to load the certificates and keys
in the same order. We will print a helpful error if you fail to do so.

Note that for Post Quantum Cryptography the most important step today
was/is to protect against the "Harvest now, decrypt later" scenario
https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later which is a
"passive attack". That's why in UnrealIRCd 6.2.0 we enabled
X25519MLKEM768 if it is available (OpenSSL 3.5.0 and later).
While, this commit, and this talk about dual ECDSA and ML-DSA, is about
when a quantum computer exists and actively does a man in the middle
attack. That's not a realistic scenario in 2025 and according to experts
also not in the next few years. We just make the UnrealIRCd code-
base ready to have this feature for when it is needed / will be used,
and to get this tested properly.

For testing the dual ECDSA and ML-DSA setup I used the following
command to create the 2nd cert/key (self-signed):

openssl req -x509 -nodes -newkey mldsa65 \
  -keyout ~/unrealircd/conf/tls/server.key.mdsa65.pem \
  -out ~/unrealircd/conf/tls/server.cert.mdsa65.pem \
  -days 3650

And then:

listen {
        ip *;
        port 6697;
        options { tls; }
        tls-options {
                certificate "ssl/server.cert.pem";
                key "ssl/server.key.pem";
                certificate "ssl/server.cert.mdsa65.pem";
                key "ssl/server.key.mdsa65.pem";
        }
}

When running openssl s_client -connect 127.0.0.1:6697 it shows ML-DSA is used:
...
Peer signature type: mldsa65
Negotiated TLS1.3 group: X25519MLKEM768
...

And with openssl s_client -connect 127.0.0.1:6697 -sigalgs "RSA+SHA256:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA384"
it shows ECDSA is used:
..
Peer signature type: ecdsa_secp384r1_sha384
Negotiated TLS1.3 group: X25519MLKEM768
..

This is just for testing purposes (self signed cert). As of right
now (Sep 2025), you can not get a trusted certificate with ML-DSA,
as the CA/Browser Forum only allows issueing RSA and ECDSA keys.
Also, all the trusted Certificate Authorities use RSA or ECDSA.
And, again, all this is not ML-DSA specific, it should work for
other dual/multi combinations, and.. who knows they even go for
something hybrid.

A downside of dual certs is that this makes the whole spkifp thing more
complicated because if you use 2 certs/keys you now have 2 possible
fingerprints (spkifp) that could match in e.g. server linking.

While coding this, I also changed the 'STATS P' output to use the txt
numeric instead of notice, and be more verbose in its output for TLS
listeners: printing the certificate(s) and key(s).
2025-09-21 10:32:29 +02:00
Bram Matthys ccc80477ef Fix OOB read in UTF8ONLY code from today. 2025-09-20 17:40:34 +02:00
Bram Matthys b4e65b1414 Fix various "too early" cutoffs with new set::utf8-only feature 2025-09-20 15:52:31 +02:00
Bram Matthys dbb2d1a5c8 Move isupport_check_for_changes() to the 'isupport' module.
This function was added a short while ago, and well it seems to be
able to be possible in a module. Since the 'isupport' module is mandatory
and this is ISUPPORT related, it is the right place.
Can't move isupport_snapshot() because modules might not be loaded yet
or things are currently unloading, i think. Not important anyway.

Also, make things work if there are more changes than would fit
on one isupport line. Although I didn't really test this..
Ended up splitting things in 3 helper functions to avoid some
goto and/or duplicate code and stuff. The alternative was, surprisingly,
even more ugly.
2025-09-20 15:44:56 +02:00
Bram Matthys 595f56007b Add the ISUPPORT command, which simply calls the efunction.
Call the efunction from 005 introduction as well, so it uses the
batch, if needed. And yeah we opt to send the 005's always, even
if it was already sent in the handshake (or not).

Some re-indenting (spaces to tabs).

And call the efunction from VERSION as well.

For "VERSION remote.server" we don't send them in a batch as these
are not numeric 005 but 105. These are for information purposes only
and should not confuse the client (eg not to act upon).
2025-09-20 14:56:26 +02:00
Bram Matthys 5cb2428567 Some code cleanup to previous, and apparently the batch type is 'draft/isupport'
and not 'draft/extended-isupport'.
2025-09-20 14:40:16 +02:00
Bram Matthys e78a6a6dbf isupport & extended-isupport module, work in progress.
This is mostly from Valware PR https://github.com/unrealircd/unrealircd/pull/310
Will do more changes in later commits..
2025-09-20 14:34:28 +02:00
Bram Matthys 9e490196a8 set::send-isupport-updates: Valware added this, but this is now expanded
to all ISUPPORT tokens, instead of only CHANMODES, PREFIX and STATUSMSG.
E.g. changing set::min-nick-length would also broadcast the change.

Technically we will call isupport_snapshot() before the rehash (or before
delayed module unload) and then after modules were reloaded/unloaded we
call isupport_check_for_changes(). This uses the ISUPPORT system in a
general way, so works the same for all tokens.

https://www.unrealircd.org/docs/Set_block#set::send-isupport-updates

TODO: Deal with more than X changes (is currently an abort, crash)

TODO: batch for draft/extended-isupport
2025-09-20 14:05:35 +02:00
Bram Matthys f22f8d0dcd Add set::utf8-only: if set to 'yes' this means all IRC traffic is UTF only.
See https://www.unrealircd.org/docs/Set_block#set::utf8-only and the
UTF8ONLY specification at https://ircv3.net/specs/extensions/utf8-only
for more information.

Reported by PeGaSuS, who reported it based on a #unreal-support message
from uMut, who reported it based on a message from itsonlybinary.
This closes https://bugs.unrealircd.org/view.php?id=6458

This feature still needs to go through our internal tests.
2025-09-20 09:00:52 +02:00
Bram Matthys d763b9c1e3 Some crash reporter tweaks like TLSv1.3+ and max size
(will still use TLSv1.2 if OpenSSL does not support TLSv1.3,
 though.. OpenSSL 1.1.1 that introduced it is from Sep 2018)
2025-09-17 20:11:18 +02:00
Bram Matthys 0c17276039 Move https_new_ctx() from src/url_unreal.c to src/tls.c so it is
always available (also w/cURL) so it can be used by the crash
reporter. And delete duplicate code crashreport_init_tls()
function since it is now unused.

As always, duplicate code causes problems when one is changed and
the other is not. This also happened here, where the curves or
TLS groups where set in url_unreal but not in the crash reporter.
Now that one is minor, but the danger is clear.
2025-09-17 19:57:03 +02:00
Bram Matthys 1685d5243f Write some early release notes
[skip ci]
2025-09-17 13:05:00 +02:00
Bram Matthys 5e54ab5ed7 Remove some old #ifdef SO_ERROR. That's always available on POSIX and Windows. 2025-09-17 11:01:46 +02:00
Bram Matthys a6ae945499 Fix built-in https fetcher to also try IPv6.
Without this fix, on an IPv6-only host UnrealIRCd would give you:
[warn] /home/ircd/unrealircd/conf/modules.default.conf:309: Failed to download 'https://www.unrealircd.org/files/geo/classic/GeoIP.dat': Could not connect: Network is unreachable
[warn] Continuing anyway...

This fixes https://bugs.unrealircd.org/view.php?id=6249, which was
also similarly reported by progval in https://bugs.unrealircd.org/view.php?id=6073

This implements only a simple try-IPv4-then-IPv6 approach in case of
clear connect errors. There is no happy eyeball like approach (where it
gives IPv6 a 250ms head start and then tries IPv4 in parallel), if there
is really a 15sec timeout then it doesn't retry IPv6 either (in case you
have IPv4, there is a route, but packets end up blackholed), nor does it
try all IP addresses that the resolver returns (then again, that's not
strictly related to happy eyeballs or IPv4/IPv6).
That would require some major overhaul that is not planned in U6. If you
want better/great protocol support you can always enable cURL in ./Config.
2025-09-17 10:59:04 +02:00
Bram Matthys 82bf4a6beb Add logging category "advice" that is used by best practices (color: blue).
Maybe a bit odd since only <10 things use this category but it makes it
stand out as a separate thing much better. As for a level (not that it
matters) it is between 'info' and 'warn'.
2025-09-15 14:21:51 +02:00
Bram Matthys 2798276316 add -Wno-unterminated-string-initialization
Without this on some new compilers this raises a warning (or error with -Werror):
const char hexchars[16] = "0123456789abcdef";

The alternative is to add __attribute__((nonstring)) at the various places
that need it. But 1) that requires various ifdefs to support old compilers, and
2) This doesn't catch anything meaningful in our code anyway and the odds of
it doing so seem slim.
2025-09-15 07:47:44 +02:00
Bram Matthys 0b147e8044 Probably helps if i include the file that i added in the Makefile
(fix broken compile)
2025-09-14 18:05:09 +02:00
Bram Matthys 817abc4101 Add security-group::server-port and similary in match item, to match
users by server port (eg 6667, 6697, 8000, etc).

This also adds security-group::exclude-server-port for consistency.

And in crules the function server_port() returns the server port number,
so you can use rule 'server_port()>6690' for example.

Note that for remote clients this will only work after previous
commit (b2d0ec1af3) is loaded on all
servers, otherwise all remote clients are seen as having a server_port
of zero (0). Though you probably usually only care about this on local
users anyway.
2025-09-14 17:28:04 +02:00
Bram Matthys b2d0ec1af3 Move/add local_port & server_port to ModData, so remote clients can be tracked.
This is sent over the wire as early moddata, just like "operlogin" and "operclass"
2025-09-14 17:03:34 +02:00
Bram Matthys f73dbfd7ee Remove previous UnrealIRCd PGP key from doc/KEYS (key expired and succeeded) 2025-09-14 15:41:54 +02:00
Valerie Liu a08d1faba7 JSON-RPC: Use issuer in set_by by default (PR #317 from Valware)
In TKLs like server bans, spamfilter, etc.
2025-09-14 15:38:35 +02:00
Bram Matthys f42bab778e Include 'away' information in JSON-RPC users object.
Reported/requested by CrazyCat: https://forums.unrealircd.org/viewtopic.php?p=40990
Inspired by Valware's PR: https://github.com/unrealircd/unrealircd/pull/319

This adds "away_reason" and "away_since". Note that the latter may not be as
reliable for remote users at the moment, because in case there was a split and
the server (re)connects, the away_since will be the time of the server resync
and not the original time that the user went away.
2025-09-14 15:27:10 +02:00
Bram Matthys 7a63239dde Fix memory leak with DEBUGMODE enabled (should only be used by devs).
In debug mode we also - in the JSON log - log the source file and
line number in every log message. This requires special care. A good
start was made earlier but that fix was incorrect.
Should be good now... at least when i ran tests the leak that was
previously there was gone.

The original issue was that I used (again, only in DEBUGMODE):
 #define unreal_log(...) do_unreal_log(__VA_ARGS__, log_data_source(__FILE__, __LINE__, __FUNCTION__), NULL)
But, some functions call unreal_log with something like:
unreal_log(.....
           xyz ? log_data_client("xyz", xyz) : NULL);
And then the expanded function arguments may become:
NULL,
log_data_source(...)
And since it is a vararg list the first NULL already terminates it and the
log_data_source() is never iterated, stays unseen, and thus stays unfreed.

A fix for that was made in 42caa34b5c:
do {
	LogData *lds = log_data_source(__FILE__, __LINE__, __FUNCTION__);
	do_unreal_log(__VA_ARGS__, lds, NULL); log_data_free(lds);
} while(0)

but in practice we still freed at the wrong place... it was still being
freed in the do_unreal_log() (or a child) function and the log_data_free()
actually didn't free anything.

All that is now fixed in this commit.
2025-09-14 15:08:48 +02:00
Bram Matthys 8c26cec5fc Fix 'const' in various functions: various arguments were const char *
in the EFunction but not in the actual function. That's bad since it
means the "const guarantee" got lost. And one or two similar cases with
incorrect parameter types and mismatching return types. This was
found with some analyzer, we had no bugreports with regards to this.
2025-09-14 15:01:39 +02:00
Bram Matthys 13217cc6ff Bump version to 6.2.1-git 2025-09-14 14:57:43 +02:00
Bram Matthys 9042dd21c0 ** UnrealIRCd 6.2.0.2 ** 2025-09-14 14:21:47 +02:00
Bram Matthys 64eab2c6ae antimixedutf8: fix extended latin, like éí accents leading to a high score.
The 4 unicode blocks are now treated as one big Latin block
Latin-1 Supplement, Latin Extended-A, Latin Extended-B ==mapped=to==> Basic Latin

Reported by CrazyCat in https://bugs.unrealircd.org/view.php?id=6576
2025-09-13 18:54:25 +02:00
Bram Matthys 4cc51af280 ** UnrealIRCd 6.2.0.1 **
This version (only) fixes some incorrect "best practices" warnings
2025-09-12 07:55:33 +02:00
Bram Matthys 74538e77d4 Another best practices fix: this one is with listen-nontls-port.
It could cause a spurious
"Your config has NO errors, but you received some best practices tips above, in summary"
even though no best practices were displayed... which was a bit mysterious.

Also, ::listen-nontls-port was actually meant to be called ::listen-tls-only
so accept both forms from now on. The reason it was supposed to be like that
is that all best-practices options are... best practices...
hashed passwords, trusted cert, trusted cert with valid hostname,
listening on a nontls port... ? NOPE! listen-tls-only! Aaaaa.
2025-09-10 16:45:52 +02:00
Bram Matthys 400a6080ab Actually make it possible for set::best-practices::trusted-cert-valid-hostname
to be turned off (it was seen as an unknown option). Reported by PeGaSuS.
2025-09-10 16:30:57 +02:00
Bram Matthys 76934cb815 Fix incorrect message about non-trusted SSL/TLS certificate when you use
the default certificate/key (conf/tls/server.cert.pem) even when that
cert is valid and issued by a trusted CA (like Let's Encrypt).
You would get such an incorrect "best practices advice" on-boot, but
(fortunately) not on each subsequent REHASH.

This was because the TLS system was not yet initialized completely at
the time of the best practices checks, ctx_server was NULL. This is
now solved by re-ordering some function calls.
This does change some win_error() and config_load_failed() stuff for
Windows so I hope that's okay.

Reported by Bun-Bun.
2025-09-10 07:35:50 +02:00
Bram Matthys bc27eb48fb ** UnrealIRCd 6.2.0 ** 2025-09-09 18:10:49 +02:00
Bram Matthys 399dfde33e Update curl-ca-bundle.crt to Tue Aug 12 03:12:01 2025 GMT 2025-09-08 20:10:11 +02:00
Bram Matthys 256308a707 Switch back to OpenSSL for the Windows build:
* In 2016 we switched from OpenSSL to LibreSSL because the OpenSSL
  codebase was in a bit of bad shape and LibreSSL promised to be a
  more modern codebase. Now, almost a decade later, OpenSSL has had
  many code cleanups and is more security aware (code audits etc),
  especially since OpenSSL v3 things are looking OK and it seems
  LibreSSL doesn't have much progress nowadays. Which is understandable
  as they have a lot fewer coders available but has an effect on things
  like how long it took for TLSv1.3 to appear and for other new things
  like PQC. It also seems like security fixes are now slower than
  OpenSSL instead of the other way around. Anyway, I think they did their
  job well (together with other people) in "triggering" the OpenSSL
  project to get things back on track. Let's switch back now.
* For context: it seems several Linux distro's that used to do go for
  LibreSSL have also switched back to OpenSSL.
* LibreSSL is still and will continue to be a supported library to
  use with UnrealIRCd (especially with OpenBSD and FreeBSD in mind).
  So, if there are any issues (compile problems, configuration problems,
  some feature not detected), then please report it on our bug tracker
  at https://bugs.unrealircd.org/ ! We will have to rely more on such
  user-reports now that the main devs will likely only work with OpenSSL.

Also... i have cleaned up the Makefile.windows a bit to be more consistent
Hopefully i didn't make a mistake there...

[skip ci]
2025-09-08 17:02:56 +02:00
Bram Matthys e58768eb65 antimixedutf8: ignore general punctuation block transitions
Since those can happen in ordinary text.
2025-09-06 14:02:31 +02:00
Bram Matthys e8673a06df Fix crash with "STATS tld" if tld::motd is not set. (Only IRCOps can do STATS
requests normally, unless the niche feature set::allow-user-stats is used)

The tld::motd was made optional in Jun 2022 commit 1fe6119026.
Not setting it is probably a bit rare, which explains why this bug was only
reported yesterday (Aug 2025) via the crash reporter.
2025-08-30 08:38:21 +02:00
Bram Matthys ed5bbe6ecb Stop sending 'draft/bot', and only send 'bot' (ratified 26-apr-2022)
This, obviously, only for umode +B users.
2025-08-02 17:15:43 +02:00
Bram Matthys 7603317c9b Fix some potentially confusing wording in release notes.
Just in case someone thinks we are going to msg users on plaintext ports
by default, no we don't that, or at least not this year.
This is purely a "best practices" advice to admins on config load.
[skip ci]
2025-08-01 12:09:30 +02:00
Bram Matthys 5b2c9a9890 Re-order some release notes items (mention spamfilter enhancements earlier)
[skip ci]
2025-08-01 11:43:46 +02:00
Bram Matthys aa8a8ee135 ** UnrealIRCd 6.2.0-beta3 **
This one will also be announced on the mailing list (beta1 and beta2 were not)
2025-08-01 11:28:37 +02:00
Bram Matthys 19e4a6fee9 Crash reporter: shut down TLS session gracefully
It seems like otherwise the request may not come through fully, not sure
but this seems to fix it in my tests.
2025-08-01 11:21:43 +02:00
alice 2c7bcebaca Make spamfilter:input-conversion accept deconfuse and deconfused for confusables (#316) 2025-08-01 07:39:43 +00:00
Bram Matthys 24fde4f889 Fix crash on "REHASH -dns" (IRCOp only)
Reported by vectr0n in https://bugs.unrealircd.org/view.php?id=6538
2025-07-31 17:53:40 +02:00
Bram Matthys 5e6bcaea33 After netsplit, wait for class::connfreq seconds before connecting to server.
Isn't that what it was supposed to do? Well, yes and no, previously
it only guaranteed that between reconnects (so the 2nd try not being
before class::connfreq than the 1st try), but there were no guarantees
for the first time period directly after a squit.

* When a netsplit happens and
  [set::server-linking::autoconnect-strategy](https://www.unrealircd.org/docs/Set_block#set::server-linking)
  is `sequential` (which is the default) or `sequential-fallback`
  (which is a good value for leafs) then we now consistently wait for
  [class::connfreq](https://www.unrealircd.org/docs/Class_block)
  seconds before trying to connect to the (same or next) server.
  By default this is 15 seconds in the example configuration
  server class. The reason for this is to provide a consistent behavior.
  Previously we waited semi-randomly for 0 to class::connfreq seconds.
  The previous behavior caused the picking of 'next server to try' to
  be inconsistent, which especially caused issues for `sequential-fallback`.
  If you want quicker recovery times in case of a netsplit, simply lower
  the value of [class::connfreq](https://www.unrealircd.org/docs/Class_block)
  in your configuration file, e.g. to 5 instead of 15 seconds.

Oh yeah and for connect-strategy 'parallel' things stay as is, with
the wait of 0 to class::connfreq per-server, which seems fine for that.
Unless you want a 'BOOM!' effect of mass reconnects instantly, in
which case you can just set class::connfreq very low.
2025-07-30 09:10:22 +02:00
Bram Matthys 84a1e59a44 Best practices: check if the certificate is actually valid for me::name.
That is, if the set::best-practices::trusted-cert check is on and passed
("certificate is valid and issued by a trusted CA") then we also
do this new set::best-practices::trusted-cert-valid-hostname check:

/* If the trusted-cert check passes, then we do another check to see if
 * the certificate is valid for me::name. Since users usually connect to your
 * server by your server name it is important for the certificate to be
 * valid for that name. Unless you really only care about e.g. irc.example.net,
 * and not about individual irc2.example.net server names, in which case you
 * can turn this off, but not sure if that is good practice.
 */
trusted-cert-valid-hostname yes;
2025-07-28 09:55:01 +02:00
Bram Matthys 44177f8c86 No valid trusted cert: change wording a bit ("you don't have any valid certificate"...)
Expired: this is a warning, not an error (we still want to boot the ircd)
Expired: handle the case for link::verify-certificate explicitly to avoid confusion
2025-07-28 09:19:27 +02:00
Bram Matthys 5abea8d4d2 Update release notes a bit with recent changes
[skip ci]
2025-07-27 09:52:37 +02:00
Bram Matthys 7c66adf196 Don't warn plaintext ports open if set::plaintext-policy::user is 'deny'
(.. since users won't get online then anyway)
2025-07-27 08:38:08 +02:00
Bram Matthys f39269c518 Fix uninitialized variable in config test for listen { }
Caused by previous commit 990fe22e64
2025-07-27 08:33:46 +02:00
Bram Matthys 990fe22e64 Print a best practices message if any plaintext port is open (eg 6667).
Ports that listen on 127.0.0.1 or ::1 are ignored (useful for e.g. services)

Looks like this:
[info] You have at least one IRC plaintext port open (such as 5668). Nowadays, everyone should be using SSL/TLS (on port 6697). See https://www.unrealircd.org/docs/Use_TLS.

See that https://www.unrealircd.org/docs/Use_TLS for more info (feedback welcome)

All this is in addition to somewhat related 29ce0ce29a:
[info] Your SSL/TLS certificate is not issued by a trusted Certificate Authority.
[info] It is highly recommended to use a 'real certificate'. To get a free one, see: https://www.unrealircd.org/docs/Using_Let's_Encrypt_with_UnrealIRCd

If applicable, that message is printed first, the 6667 one comes after ;)

Suggested in https://bugs.unrealircd.org/view.php?id=6500
and numerous times / discussions on IRC over the past years
It's finally time.. no.. it's overdue..
2025-07-26 16:02:33 +02:00
Bram Matthys d468473876 Add a comment about port 6667 in example.conf
/* Standard IRC port 6667:
 * Insecure plaintext (NOT for production servers)
 * This listen block is here only for quick testing.
 * Delete or comment out this listen block on production servers
 * and use TLS on port 6697 instead.
 */

Also throw it in translated example*conf's (in English),
the translators can translate it.
2025-07-26 14:45:09 +02:00
Bram Matthys eae1a2e99a Remove some check for U4 (<4.0.16+). Shouldn't matter but otherwise
one could possibly miss this cert verification warning. And since
that will later become an error, it is even more important to
notice such a (hopefully unusual) case quickly.
2025-07-26 13:34:40 +02:00
Bram Matthys 6b0d81fb77 Make a warning actually a warning 2025-07-26 13:31:50 +02:00
Bram Matthys a73186362b * Add link::options::no-certificate-verification
* Code cleanup: split connect flags in CONNECT_OUTGOING_* and CONNECT_*
* Don't print tls_link_notification_verify() stuff for localhost conns
2025-07-26 13:26:46 +02:00
Bram Matthys 26fb6b70d6 Fix localhost S2S link downgrading link-security.
On the incoming side it was correctly identified as link sec 2,
but on the outgoing side the localhost check failed and caused link sec 1 or 0.

Bug has beent here for a while but I don't think many people
link two UnrealIRCd servers over localhost that are on production
(i do, when dev'ing, but then I don't care about linksec, obviously)

Also, this wouldn't flag services from 2 to 0 because this bug only
affected outgoing UnrealIRCd server connections.
2025-07-26 13:24:00 +02:00
Bram Matthys 8f23550122 Since 2017[*] we warn about active MITM risks if a cert of a server link is
not verified. This changes the wording from "You may want to consider" to
a warning, makes it more strong and that in the future we will reject this
by default.

Actually still pondering to reject it now already by default, but let's start
with this commit first...
2025-07-26 12:22:49 +02:00
Bram Matthys fe569346b0 Call unrealircd_set_tls_groups() from url_unreal (remote includes) as well.
For url_curl it seems too complicated, added a comment there.
2025-07-25 14:03:54 +02:00
Bram Matthys 6178e2b94f *** UnrealIRCd 6.2.0-beta2 *** 2025-07-25 10:31:44 +02:00
Bram Matthys bf7edb5a51 Add extras/tests/tls/testssl_profiles/pqc.txt
Is same as baseline.txt but with this line added:
+"FS_KEMs","127.0.0.1/127.0.0.1","5901","OK","X25519MLKEM768","",""

This so debian 13 test succeeds (and other future distros with OpenSSL 3.5+)
2025-07-24 18:26:37 +02:00
Bram Matthys 11ba1edff1 Update release notes on the Post-quantum cryptography (PQC) enhancements:
* [set::tls](https://www.unrealircd.org/docs/TLS_Ciphers_and_protocols):
    Rename `ecdh-curves` to `groups` (the old name will continue to work)
  * Add (and prefer) the `X25519MLKEM768` hybrid group, which is a mix
    of `X25519` that is commonly used today and quantum-safe `ML-KEM-768`.
    This to protect against
    ["harvest now, decrypt later"](https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later).
  * To benefit from this, OpenSSL 3.5.0 or later (released April 2025)
    is required on the server, and similarly a client that supports this.
    At the time of writing, almost all Linux distros don't have such an
    OpenSSL version yet (which is not a problem, this new feature will simply
    not be available). Notably Debian 13 (when released in August
    2025) will have it. LibreSSL does not support it either yet, so our
    Windows build does not have this feature.
  * Also, change the TLS information on-connect and in WHOIS etc. from
    something like `TLSv1.3-TLS_CHACHA20_POLY1305_SHA256` to
    `TLSv1.3/X25519/TLS_CHACHA20_POLY1305_SHA256`. In other words: using
    slashes as separators and showing the group / key exchange in the middle.
    The group is only shown on newer OpenSSL versions. If someone would
    use the new PQC hybrid group mentioned above then their TLS info would
    start with `TLSv1.3/X25519MLKEM768/`.
  * TL;DR: better secrecy against future quantum attacks, even though
    not many clients or servers support it at the moment.

[skip ci]
2025-07-24 16:00:03 +02:00
Bram Matthys 8a4dae71fb Fix compile problem with LibreSSL (and possibly OpenSSL <3.0.0).
Caused by 31d51fbb04
2025-07-24 15:40:43 +02:00
Bram Matthys d146da4a07 Change the cipherinfo, such as in [secure: TLSv1.3...] and in WHOIS.
Previously this was like:
TLSv1.3-TLS_CHACHA20_POLY1305_SHA256
It is now changed to be like:
TLSv1.3/X25519/TLS_CHACHA20_POLY1305_SHA256

So:
* Changed from '-' to '/' because sometimes the cipher(suite)
  contains a hyphen (TLSv1.2 and earlier)
* Show the key exchange "group" in the middle, such as X25519
  for the usual non-PQC case and X25519MLKEM768 for hybrid group
  with PQC.
* The group is shown in OpenSSL 3.0.0+ (and obviously you need
  OpenSSL 3.5.0 to ever see X25519MLKEM768 there, but that is
  something different)
2025-07-24 15:32:00 +02:00
Bram Matthys 0729382ba2 Rename ::ecdh-curves to groups and add X25519MLKEM768 to group list.
Post-quantum cryptography (PQC). Release notes will follow later.
2025-07-24 14:47:49 +02:00
Bram Matthys 9035859f0e Channel flood protection is now on by default. You can use +F to override.
[Channel flood protection by default](https://www.unrealircd.org/docs/Channel_anti-flood_settings):
This is an important change that IRCOps and chanops should know about:
* By default we now apply the anti-flood profile "normal", which should be fine for most channels.
* If a chanop does not want this they can override this by setting
  `MODE +F` with [another profile](https://www.unrealircd.org/docs/Channel_anti-flood_settings#Channel_mode_F_profiles).
* For example, for a channel with hundreds of users and lots of activity
  `+F relaxed` may be more appropriate. Or, chanops can turn anti-flood
  off entirely by setting `+F off`
* The reason for this change is that many admins and chanops in practice
  don't seem to use `+f` or `+F`. With this change they are now protected "by default"
  when no MODE `+f` or `+F` is set.
* Advanced users can can grab the detailed effective settings with `MODE #test F`
2025-07-16 14:59:42 +02:00
Bram Matthys 31d51fbb04 * UnrealIRCd can now be used if your OpenSSL does not provide MD5
(there will be an error if you use `cloak_md5`, but everything
  will work fine if you use `cloak_sha256`).

We phased out MD5 usage years ago, so it is only contained to
the old cloaking module. In fact that was the only reason we
started to provide the SHA256 cloaking module, simply so it
isn't using old MD5.

Of course, for module coders this means they should not call
DoMD5() or md5hash(), but that would be rare. Currently zero
modules in unrealircd contrib do this and it makes no sense
to start using it nowadays anyway.
2025-07-15 19:09:32 +02:00
Bram Matthys a911497290 Mention Text Analysis in release notes
[skip ci]
2025-07-14 18:48:48 +02:00
Bram Matthys 93980ee004 Include TextAnalysis in antimixedutf8 hit as well. And use "text_analysis"
and not "textanalysis" for the JSON, to keep naming of multi-word stuff
consistent.

Example:
--snip--
  "text_analysis": {
    "antimixedutf8_points": 20,
    "unicode_blocks": 9,
    "num_bytes": 55,
    "num_unicode_characters": 20,
    "deconfused": "Valware is ualwaring",
    "deconfused": "This is a testtestte",
    "unicode_blockmap": {
      "Basic Latin": 2,
      "Latin Extended-B": 2,
      "IPA Extensions": 1,
      "Greek and Coptic": 1,
      "Latin Extended Additional": 2,
      "Greek Extended": 1,
      "Number Forms": 1,
      "Tifinagh": 1,
      "Mathematical Alphanumeric Symbols": 7
    }
  },
2025-07-14 18:41:04 +02:00
Bram Matthys d135e687c3 Add TextAnalysis on spamfilter hit in the JSON logs. 2025-07-14 18:11:59 +02:00
Bram Matthys e8b5a831e1 ** UnrealIRCd 6.2.0-beta1 **
(Possibly some Windows build fixes after this, but..)
2025-07-13 11:39:00 +02:00
Bram Matthys 76358d3f0b Some more release notes updates
[skip ci]
2025-07-13 11:07:23 +02:00
Bram Matthys f85f5899dc Update release notes a bit
[skip ci]
2025-07-13 11:03:08 +02:00
Bram Matthys 93720a9533 Fix OS JUPE still allowing server in.
Since UnrealIRCd 6.0.0 when a server connects, we like to drop the
existing link so they don't need to wait on "Ping timeout".
However, that goes against the JUPE stuff that Services tend to use,
it basically negates it.

We now check if the uplink is u-lined (like for services) and if that
is the case we deny the link with "Server Exists (Juped)". So just
like before U6, and with a slightly more helpful message even.

Reported by Jellis in https://bugs.unrealircd.org/view.php?id=6498
2025-07-13 10:53:46 +02:00
Bram Matthys 97a87bdca8 Fix reputation score not expiring after 30 days of inactivity.
We now expire after 30d if score is <12 (so 1 hour of being online)
and we expire after 90d regardless of score.

Note that for this to work, all servers would need to be running
UnrealIRCd 6.2.0+ because when a score for an IP is still present
on any of the servers on a network, and a user with that IP connects,
then the score will be broadcasted from the server that still has
the score and it will be re-added by all servers with that score.

But eventually it should be like this... :D

Reported by armyn in https://bugs.unrealircd.org/view.php?id=6536
2025-07-13 10:22:40 +02:00
Bram Matthys 369f55063a For bestpractices::trusted-cert add some crude heuristics so hubs and such
are not (always) affected by this. We now check if there is any client port
exposed (to non-localhost). So if you have a hub with no client ports or
only at localhost then you won't get this bestpractices advice.

And also fix compile error on OpenSSL < 1.1.0 (undeclared var, duh)
2025-07-13 09:46:23 +02:00
Bram Matthys 29ce0ce29a Best Practices: If zero SSL/TLS certs are issued by a trusted CA, complain and
suggest to use Let's Encrypt.

This can be turned off via set::best-practices::trusted-cert, see
https://www.unrealircd.org/docs/Set_block#set::best-practices

Oh yeah, and this only works at OpenSSL 1.1.0 and higher, i didn't bother
with people running ancient versions.
2025-07-13 09:26:54 +02:00
Bram Matthys cd2deeb1e7 Add spamreport::on-server-ban. If set to yes, then the spamreport
block runs when a user is *LINEd.

TODO: avoid double sending on spamfilter with action { report; gline; }
2025-07-12 18:14:40 +02:00
Bram Matthys 96a2ea5c02 Add HOOKTYPE_BANNED_CLIENT 2025-07-12 18:06:52 +02:00
Bram Matthys af9014dbd3 Update release notes
[skip ci]
2025-07-12 17:42:52 +02:00
Bram Matthys 301fb911e8 When submitting to Central Spamreport, include TextAnalysis and
bump sending of last commands from "last 10" to "last 20".
2025-07-12 17:21:56 +02:00
Val Lorentz 5aec83b444 Fix mismatched closing parenthesis (#314) 2025-07-06 14:53:00 +00:00
Bram Matthys ba8c587e44 Update to previous commit: disable by default, enable via set { send-isupport-updates yes; }
I totally agree with the goal to have this enabled, but let's do some more
testing with more clients first to see if they misbehave. Last thing I want
is a similar situation to when we were the first IRCd that sent "CAP DEL sasl"
and "CAP NEW sasl" when services went offline and online and it caused all
mIRC clients to reconnect. I don't expect this one to be so bad (also because
users would get the 005's when they typed /VERSION) but... let's test to be sure.

Should probably deploy this with enabled on irc.unrealircd.org and such :)
2025-07-06 09:28:38 +02:00
Valerie Liu eae5bccee1 Tell clients about CHANMODE, PREFIX and STATUSMSG changes at runtime (#311)
This re-sends these ISUPPORT tokens to let users know about important changes that may affect their display, most notably `PREFIX` can be problematic; for example if you have a server running and wish to load a module like ojoin or something else that relies on the client knowing the correlation between the mode and the prefix char, and without it the client just doesn't display the nicklist properly from then on until the client reconnects, which as we know can be a while until that happens.

The expected client reaction to duplicate ISUPPORT tokens according to the spec is to overwrite the current values. I have tested this in mIRC only and it works as expected.
2025-07-06 07:19:53 +00:00
Bram Matthys cb17d58db0 Some small changes to previous commit:
* Calling from source is now in a separate function: int can_use_nick(Client *client, const char *nick)
* For hooks: don't free the reject reason, must use static storage like all other hooks
  (TODO: clarify in all hooks?)
* Move it up a bit, right before find_qline

TODO (not necessarily me :D):
* Make it an efunc
* Also call it from some other places that do find_qline, like rpc/user.c
* You may want to prod 3rd party modules like SANICK
2025-07-06 09:19:04 +02:00
Valerie Liu 6a6dd66c84 Add HOOKTYPE_CAN_USE_NICK to allow modules to reject certain nicks (#313)
* Add `HOOKTYPE_CAN_USE_NICK` for modules to disallow certain "internal-use" nicks
* Run the hook on local NICK commands
2025-07-06 07:10:58 +00:00
Bram Matthys fc835a26f0 Make error shorter if TLS cert or key are missing (1 line instead of 4)
and also give some guidance if the default cert/key is missing (make pem).

(A word on Let's Encrypt will be handled later / differently)
2025-07-04 09:05:28 +02:00
Bram Matthys d81817622a Update doc/unrealircd_wiki.zim (current wiki) 2025-06-25 09:55:27 +02:00
Bram Matthys 45f35f9cd2 For ./unrealircd genlinkblock, for bind-ip detection, skip 127.0.0.1 and ::1. 2025-05-24 16:25:38 +02:00
Bram Matthys c836f394e5 Central Blocklist: make "error contacting CBL" error message more verbose
Show the actual error, like connection timed out, HTTP 500, etc.
2025-04-22 08:00:46 +02:00
Bram Matthys b04c402ce0 Update shipped Jansson to 2.14.1. 2025-04-16 14:18:10 +02:00
Bram Matthys a6d9288a77 Update shipped PCRE2 to 10.45. 2025-04-16 14:16:51 +02:00
Bram Matthys 85b9b4ddc1 Update shipped c-ares to 1.34.5 (8-apr-2025) 2025-04-16 14:00:55 +02:00
Valerie Liu 5d7feff725 Fix HOOKTYPE_PRE_CHANMSG refering to hooktype_can_send_to_user()
as an alternative. It should mention hooktype_can_send_to_channel() instead.
2025-04-14 15:30:51 +00:00
Rafael Grether 12927bca43 Update example.pt.conf to the latest changes (#309) 2025-04-14 15:29:18 +00:00
Bram Matthys f7fd5b013f Update some release notes (no code changes)
[skip ci]
2025-03-30 17:19:28 +02:00
Bram Matthys 30ff1bf09e Add a TODO item 2025-03-27 17:51:32 +01:00
Bram Matthys 641413cfa9 Update Unicode block lists with Unicode 16.0.0 from 2024-02-02.
And provide instructions on how to generate this thing.
2025-03-24 09:32:50 +01:00
Bram Matthys cc75840189 Add unicode_count() crule, e.g. unicode_count('Emoticons')
This will return the number of characters that are in the unicode block
with that name.

spamfilter {
	rule "unicode_count('Emoticons')>2";
	target { private; channel; private-notice; channel-notice; }
	action block;
	reason "Too much emotion";
}

In this commit we also make it so we pass the ClientContext (including
clictx->textanalysis) in crule_context.
2025-03-23 18:14:32 +01:00
Bram Matthys fafe16a673 AntiMixedUTF8: change emoticon transition score from 1 to 0
You will still get a score of +1 if afterwards changing back to Latin
or anything else, but at least the Latin/anything -> Emoticon
transition is free now (score 0). And if ending with an emoji it
also means a score 0 (as far as this is concerned).
2025-03-23 13:21:01 +01:00
Bram Matthys 74e17b7a26 Make SPAMINFO show the UTF8 block names a text uses.
Example output:
*** SPAMINFO ***
This will show the original text and the deconfused text which can be used in a spamfilter block with input-conversion deconfused;
Original spam text: ẔŽŽẐ𝞕ȤℤΖℨℨ𝒁𝓩ẒŹƵᏃŻẒŽℨŹ𝒵𝛧Ż𝝛𝛧ℨℤ𝜡Ƶ𝞕𝘡ŹẐ𝑍ẔẐẐΖ𝜡Ẕ𝜡Ẕ𝞕ꓜ𝚭ᏃẐẔ𝙕
Deconfused spam text: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
AntiMixedUTF8 points: 64
Number of Unicode characters in total: 50
Number of different Unicode blocks used: 8
Unicode Block breakdown (name: bytes [capped at 255]):
- Latin Extended-A: 8
- Latin Extended-B: 3
- Greek and Coptic: 2
- Cherokee: 2
- Latin Extended Additional: 12
- Letterlike Symbols: 6
- Lisu: 1
- Mathematical Alphanumeric Symbols: 16
2025-03-23 13:03:58 +01:00
Bram Matthys 6bd6e974d4 Add num_bytes and num_unicode_characters to TextAnalysis struct.
Also so you can easily put the unicode_blockmap[] in perspective
e.g. if you want to do percentages.
2025-03-23 12:43:01 +01:00
Bram Matthys 3142b57f77 Move text analysis to main command handler (parse2()).
In CommandAdd() the flag CMD_TEXTANALYSIS now means that the last
parameter of the command will run through the text analysis system.

This flag is set in PRIVMSG NOTICE PART QUIT AWAY SETNAME TOPIC
2025-03-23 12:28:43 +01:00
Bram Matthys 9b89166280 Add deconfused to TextAnalysis. Add ClientContext * to match_spamfilter().
Make match_spamfilter use the clictx->textanalysis->deconfused rather than
calculating its own. The latter will probably disappear altogether.

Unrelated but also fixed: properly set e->unicode_blocks.
2025-03-23 12:13:38 +01:00
Bram Matthys 9691a6d819 Create TextAnalysis framework (hook), this counts the unicode block
switches like antimixedutf8 did, and counts the number of characters
used per unicode block. Potentially more can be added later, this is
flexible and modules can add stuff (..well not yet.. the struct is
missing some members..).

Use it from antimixedutf8 so that it now uses the new code, which is
similar to what I made and then reverted in July 2023:
https://github.com/unrealircd/unrealircd/commit/3e2f668f10fccedfd035526d7b20d7ca6819a8ae
..except that it now calculated in src/modules/utf8functions.c.
But yeah, this needs more testing and possibly (default) score
adjustments to deal with false positives !! And a warning in release notes :D

Put the text analysis in ClientContext member textanalysis,
so typically accessed through clictx->textanalysis.
Note that this struct can (and often is) NULL, for example if it is
a remote client, if it is not a PRIVMSG/NOTICE (will improve later)
or if the utf8functions module is not loaded (to keep things optional).

BREAKING CHANGE is that ClientContext is now passed in the
HOOKTYPE_CAN_SEND_TO_CHANNEL and HOOKTYPE_CAN_SEND_TO_USER hooks.

So HOOKTYPE_CAN_SEND_TO_USER prototype changed from:
int hooktype_can_send_to_user(Client *client, Client *target, const char **text, const char **errmsg, SendType sendtype);
To:
int hooktype_can_send_to_user(Client *client, Client *target, const char **text, const char **errmsg, SendType sendtype, ClientContext *clictx);

And HOOKTYPE_CAN_SEND_TO_CHANNEL prototype changes from:
int hooktype_can_send_to_channel(Client *client, Channel *channel, Membership *member, const char **text, const char **errmsg, SendType sendtype);
To:
int hooktype_can_send_to_channel(Client *client, Channel *channel, Membership *member, const char **text, const char **errmsg, SendType sendtype, ClientContext *clictx);

A side-affect of this change for antimixedutf8 purposes is that,
while the analysis is only done once per line, the 'actions' are
performed for each target, so the action will run 4 times for
"PRIVMSG a,b,c,d :text" although that may not be important in
practice. Just mentioning.
2025-03-23 11:44:24 +01:00
Bram Matthys 6fd77ae572 Fix unreal_expand_string declaration 2025-03-23 08:12:40 +01:00
Bram Matthys 2c33103d28 Fix OOB read, write and NULL dereference code from yesterday. 2025-03-23 07:21:00 +01:00
Bram Matthys d137a95606 Update confusables. Generated with a python script from 2 different
generators/sources plus some manual tweaking.
This is not complete and not always correct. Sometimes there are
simple mistakes like ф -> f because that is a cyrillic f but it
should be seen as an o or something like that. Those still need to
be polished out. And some other things are just plain weird but
probably similar cases. In any case, with this commit things are
getting better. It will never be perfect or anything close to perfect
anyway!
2025-03-22 15:40:32 +01:00
Bram Matthys e1fac402d5 Add spamfilter { input-conversion confusables; ..... } for UTF8 conversion
of lookalike characters to simple latin characters.

Also add SPAMINFO command so you can see the result of the conversion.
2025-03-22 08:31:22 +01:00
Bram Matthys 9b3d219743 Add utf8functions with utf8_convert_confusables() from July 16 2023.
I started work on this back then but didn't finalize it. Now I
have to figure out what was left to be done :D. Other than the
obvious case of seeing some debugging code that prints out for
every converted character. Not yet visible / usable by end-users!
2025-03-22 07:56:11 +01:00
Bram Matthys 8c21472d03 Move allow::maxperip to its own module (maxperip), add HOOKTYPE_ALLOW_CLIENT.
Also fix documentation for ~10 hooks to mention the hook name.

Obviously, the maxperip module is loaded by default (in modules.default.conf)
but it is nice to have the 400+ lines contained in a separate module
rather than being in the nick module that does NICK/UID handling.
Will look at moving more later..
2025-03-22 07:42:00 +01:00
Bram Matthys b95c1570a9 Add CONFIG_ALLOW_BLOCK & CONFIG_CLASS in HOOKTYPE_CONFIGTEST and
HOOKTYPE_CONFIGRUN_EX. Allowing to modularize things (for us and
third party modules)
2025-03-22 06:39:44 +01:00
Bram Matthys d15c82346e Pass ClientContext in CMD_FUNC() and friends. So extra arg. Breaking change.
It now passes 'clictx' which at the moment only has clictx->cmd which
points to the command handler. So only useful in very few cases where
you have like a generic command handler and thus have no idea for which
command you are being called. In the future, with this new ClientContext
struct, we can simply add new fields to the struct without breaking
things in the core and in (third party) modules.

If you use the magic functions in your modules CMD_FUNC(cmd_mycmd),
OVERRIDE_FUNC(myoverride), CALL_NEXT_COMMAND_OVERRIDE() and such then
you shouldn't have any compile errors as these will use the correct
prototypes and variable names automatically. In a few cases you can't
use these, in which case you will need to update your modules.
2025-03-21 15:40:42 +01:00
Bram Matthys 5d733d50e5 Bump version to 6.2.0-git 2025-03-21 15:31:44 +01:00
Bram Matthys e9e63e4041 Allow calling mtags_to_string() with a NULL client, eg to store/serialize. 2025-03-14 10:29:24 +01:00
Bram Matthys 77ba83a49b There was still a reference to rc1 at the end of /INFO 2025-03-09 08:35:33 +01:00
Bram Matthys 53febc0faa ** UnrealIRCd 6.1.10 ** 2025-03-07 14:41:41 +01:00
Bram Matthys 47d479b1c9 Import from unrealircd-6.1.9.
[skip ci]
2025-02-16 09:28:35 +01:00
Bram Matthys 8028ca9c4a ** UnrealIRCd 6.1.10-rc1 ** 2025-02-16 09:24:43 +01:00
Bram Matthys e7ec191bf1 Fix crash by IRCOp upon SPAMREPORT <ip> when centralblocklist is loaded.
Reported by Balthazar in https://bugs.unrealircd.org/view.php?id=6497
2025-02-16 08:52:32 +01:00
Bram Matthys d06f797422 Update release notes on the two new spamfilter { } options.
[skip ci]
2025-02-15 12:38:49 +01:00
Bram Matthys 094efeee25 Add spamfilter::show-message-content-on-hit to override on a spamfilter basis.
This works the same as set::spamfilter::show-message-content-on-hit
https://www.unrealircd.org/docs/Set_block#set::spamfilter::show-message-content-on-hit
but per spamfilter { } in the conf.

Indirectly suggested in https://bugs.unrealircd.org/view.php?id=6437
2025-02-15 12:14:44 +01:00
Bram Matthys ae166bd99e Add spamfilter::input-conversion none; to not use StripControlChars()
for matching. Docs and release notes text will follow later.
2025-02-15 11:05:37 +01:00
Bram Matthys 83ddf0c79a TLS tests: don't use color
[skip ci]
2025-02-14 08:23:15 +01:00
Bram Matthys 76ba0495a1 testssl.sh: for some reason ECDSA+SHA1 is in signature algorithms,
even though this makes little sense and I doubt this is getting negotiated.

Depends on the OpenSSL version apparently, this is on Ubuntu 18.04
(and possibly 16.04) but not on Ubuntu 20.04/22.04/24.04.
Also not an issue on Debian 10/11/12.

Added to ignore at the moment.
2025-02-10 15:04:44 +01:00
Bram Matthys 8537b73253 Add new baseline for testssl.sh tests. 2025-02-10 13:47:12 +01:00
Bram Matthys 35bbba2b5b Attempt migration from cipherscan to testssl.sh for SSL/TLS tests.
[skip ci]
2025-02-10 13:18:11 +01:00
Bram Matthys 72af36d2a3 Fix problem with upcoming GCC 15 that assumes C23.
GCC 15 is not released yet and is scheduled for April/May 2025.

We now have a ./configure check. If a func() declaration is interpreted
as meaning 0 arguments, so C23 style, then we now add -std=gnu17 to
CFLAGS. If not, then we don't set an explicit C standard version.

Closes https://bugs.unrealircd.org/view.php?id=6495
2025-02-10 11:31:47 +01:00
Bram Matthys aa31afe388 Update release notes a bit, nothing exciting
[skip ci]
2025-02-08 09:16:03 +01:00
Bram Matthys 3cc06cecb9 Show the message type in target flood log messages (PRIVMSG/NOTICE/TAGMSG).
Changed the log/snomask message from, for example:
Flood blocked (target-flood-user) from evil!xyz@localhost [127.0.0.1] to victim
To:
Flood blocked (target-flood-user) from evil!xyz@localhost [127.0.0.1] to victim (TAGMSG)
2025-02-08 08:33:37 +01:00
Bram Matthys 53e2e9473e Code cleanup 'config_error_flag'.
Maybe a great idea but we use a different errors system.
This config_error_flag thing is unused so only confusing.
2025-01-26 18:12:00 +01:00
Bram Matthys 9aa83edd99 Remove useless \n in calls to config_error() and config_status().
Where did this come from? This isn't printf() or anything.
2025-01-26 17:31:12 +01:00
Bram Matthys 04370d72f9 Minor code cleanup 2025-01-26 17:28:47 +01:00
Bram Matthys d157dc2494 Remove some useless code that is flagged by Coverity.
The set_usermode() result is not used, so useless.

The if (themotd) motdline = ... makes no sense since themotd is
already dereferenced in the code above it (eg: themotd->last_modified.tm_year)
and consequently the motdline = NULL becomes useless too.
2025-01-26 17:14:55 +01:00
Bram Matthys 8d4e9ea9b8 Merge branch 'unreal60_dev' of github.com:unrealircd/unrealircd into unreal60_dev 2025-01-26 13:24:53 +01:00
Bram Matthys ce47440abd Make config_detect_duplicate() externally accessible. Fix some coverity warnings,
mostly with regards to memory leaks if duplicate config directives are used.
Eg using allow::password twice in the same allow block, or using
link::outgoing::tls-options twice in the same link block. Unusual stuff.
2025-01-26 13:23:32 +01:00
TehPeGaSuS 8b8520a183 Update help.conf (#306)
Because we can give access to users with [set::hide-idle-time](https://www.unrealircd.org/docs/Set_block#set::hide-idle-time), I think this wording is more correct.
2025-01-25 16:26:07 +00:00
Bram Matthys 80ac9eb888 Central Blocklist: include web/websocket handshake data 2025-01-12 12:31:35 +01:00
Bram Matthys 0887a5a4bd example conf: comment out link { } and ulines { } as well
These are optional after all. Not everyone links multiple servers
and not everyone uses Services. Fits with the rest that is //'ed
out now. Indirectly suggested by jwheare.
2025-01-03 17:56:30 +01:00
Bram Matthys 6464407a7f In the REMOTEINC ./Config question at least mention cURL when we ask to enable cURL. 2024-12-30 17:39:54 +01:00
Bram Matthys a2b42b081f Update example.tr.conf & help.tr.conf by Serkan Sepetçi
Co-authored-by: Serkan Sepetçi <diablo@unrealircd.org>
2024-12-23 08:46:58 +01:00
Bram Matthys f51e8c0005 Fix make_channel() not checking minimal validity of channel names.
Only an issue for (bad) remote server traffic, since we use
valid_channelname() in JOIN and SAJOIN.
2024-12-13 10:18:02 +01:00
Bram Matthys 42caa34b5c Fix small memory leak if running in DEBUGMODE (mostly for me :D). 2024-12-11 18:25:55 +01:00
Bram Matthys a09320886b Add JSON logging block to example.conf.
In addition to regular logging, also add a JSON log file.
This includes lots of information about every event so is great
for auditing purposes and is machine readable. It is, however
less readable for humans.
2024-12-04 18:54:19 +01:00
Bram Matthys 453729068e Add UnrealIRCd documentation wiki as doc/unrealircd_wiki.zim
This so there is an offline version of the documentation from
https://www.unrealircd.org/docs/.

I'm not 100% satisfied with the layout but it is workable.
The ZIM file can be opened with tools liki Kiwix.
https://en.wikipedia.org/wiki/ZIM_(file_format)
https://en.wikipedia.org/wiki/Kiwix

This does add 1.5 megabyte to the repository (and .tar.gz) but I
doubt anyone cares about that nowadays. The upside is that each
UnrealIRCd release will have the documentation of that time point
included, which can be used for historical purposes but also if
you don't have an internet connection or when for some other
reason the unrealircd wiki is unreachable.

The idea is that the .zim file is rebuild before each release,
i use mwoffliner (dev version) for that.
2024-12-04 13:18:37 +01:00
Bram Matthys ec489e48d2 Create $CONFDIR so ./Config question about copying example conf doesn't fail.
Reported by PeGaSuS on IRC.
2024-11-27 18:41:03 +01:00
Bram Matthys 1f57a606a4 Make binarytohex() from src/misc.c available and use it in certfp code. 2024-11-27 12:37:27 +01:00
Bram Matthys 6c98f7224a Always try to maintain chronological order in chat history, and optimize stuff.
Previously if a new history item was added (because someone sent a message)
we would always append at the end of chat history buffer of the channel.
Now we put the message at the position decided by the "time" message tag,
which could be at the end but also slightly before that.
* Upside: should result in a consistent chat history on all servers
* Downside: if your server time is off for several seconds then it
  could look a little weird. Then again, it would already have looked weird
  in real live chat with timestamps and when replaying chat history probably.

Also add some simple optimizations: in the log line object we now have direct
pointers to the msgid and time strings, so the code doesn't need to do a
find_mtag() all the time. This should lower CPU usage during log playback
and also makes things more simple in the source code.

I did some testing with various history injection variants but this needs
more extensive testing.
2024-11-27 10:34:07 +01:00
Bram Matthys d0173840a4 If conf/unrealircd.conf doesn't exist then propose copying the example conf.
Offering the list of languages, with English being the default.

Hopefully this is portable. I was conservative with my use of cmds anyway.
2024-11-25 17:01:40 +01:00
Bram Matthys 48a69151ef Update example.conf a little to indicate required changes with "CHANGE THIS".
People should preferrably go through the example conf line by line, but
if they are in a hurry or just want to get started quickly initially they
could CTRL+F on that.
2024-11-25 16:34:11 +01:00
Bram Matthys 6940272290 Prevent early UID cut-off. This doesn't happen with current unrealircd traffic
because we send 9 character uids. However, IDLEN is defined as 12 so it is
natural for other people (services and other pseudo server writers) to assume
you could send 12, which failed until now, as it only accepted 11 characters.

Just to be clear:
* We generate and send 9 character uids in UnrealIRCd ourselves, this
  works perfectly fine
* In 114d54ac61 in 2021 (UnrealIRCd 5.2.1) i
  enlarged the buffers to allow INCOMING ids of up to 12 characters.
  The reason for that is that I want the option to allow slightly larger
  uids and could start doing that several years later without causing
  desynchs and other problems.
* That didn't work properly, it only allowed up to 11 chars at this point.
* From now on it allows 12 chars. I do NOT recommend sending that though, if
  you want to send bigger ids from your services/pseudo server then use
  11, or... actually just use 9 like in normal unrealircd traffic at the
  moment.

Reported on IRC by craftxbox
2024-11-24 09:56:06 +01:00
Bram Matthys 47e81fe7d3 Set version to 6.1.10-git 2024-11-24 09:46:21 +01:00
Bram Matthys e782748b40 ** UnrealIRCd 6.1.9.1 ** 2024-11-21 19:30:01 +01:00
Bram Matthys f953c79be4 Update release notes 2024-11-21 19:28:22 +01:00
Bram Matthys 1b4560218a I think this is the correct fix for incorrect TLS ciphers in 6.1.9.
I was dumb: with an RSA cert you need ECDHE-RSA-* and i had
only included ECDHE-ECDSA-*. Long story short: TLSv1.2 didn't work
if you had an RSA certificate. Reported by BlackBishop, and in
hindsight also by Mi_92. Thanks for the quick reports, this should
be a quick fix :-)
2024-11-21 19:01:38 +01:00
Bram Matthys fb9aa72f78 Mention new UnrealIRCd PGP release signing key in release notes
[skip ci]
2024-11-20 11:45:01 +01:00
Bram Matthys 7b0228a2c8 ** UnrealIRCd 6.1.9 ** 2024-11-20 11:17:58 +01:00
Bram Matthys 3aa26ef1f1 Publish new UnrealIRCd release signing key for 2024-2030 (don't use it yet)
pub   rsa4096 2024-11-18 [SC] [expires: 2030-11-17]
      36E6F65706E36B0937280299101001DAF48BB56D
uid           UnrealIRCd releases and patches (for verification of software downloads only!) <releases@unrealircd.org>

The old key is still valid until 2025-06-29:
pub   rsa4096 2015-07-02 [SC] [expires: 2025-06-29]
      1D2D2B03A0B68ED11D68A24BA7A21B0A108FF4A9
uid           UnrealIRCd releases (for verification of software downloads only!) <releases@unrealircd.org>

The new key is signed by the old key and uploaded to keyserver.ubuntu.com.

The old key will still be used for signing releases for now. Somewhere around
the summer of 2025 i will switch to the new key.

Posted in https://forums.unrealircd.org/viewtopic.php?t=9397 for transparency
2024-11-18 13:04:49 +01:00
Bram Matthys 4ef7e4ea8d Read settings from unrealircd-6.1.8.1 2024-11-18 13:04:22 +01:00
Bram Matthys e0ec8dd720 More release notes updates
(also.. sigh.. have mentioned twice now that we 'disable TLSv1.2' when
 instead i meant to write 'require at least TLSv1.2'... ah well...)
[skip ci]
2024-11-17 13:52:02 +01:00
Bram Matthys 170a27e160 Update release notes. Let's call the SSL/TLS changes enhancements :D
[skip ci]
2024-11-17 13:39:42 +01:00
Bram Matthys b3559b5d2c Update release notes a bit
[skip ci]
2024-11-17 13:36:03 +01:00
Bram Matthys 492152f9ea Default TLS ciphers: drop support for AES in CBC mode, only allow AES w/GCM.
For reference, the established TLS connections at irc*.unrealircd.org
over the past 6 months were:
  14379 TLSv1.3-TLS_CHACHA20_POLY1305_SHA256
    368 TLSv1.2-ECDHE-ECDSA-AES256-GCM-SHA384
    160 TLSv1.2-ECDHE-ECDSA-CHACHA20-POLY1305
      3 TLSv1.3-TLS_AES_256_GCM_SHA384

There is nobody connecting with AES CBC in those statistics
(ECDHE-ECDSA-AES256-SHA256 and ECDHE-ECDSA-AES128-SHA384)
2024-11-17 13:08:46 +01:00
Bram Matthys 3317be3069 When using cURL for remote includes we now explicitly disable TLSv1.2
and set our default ciphers and ciphersuites. Note that by default in
UnrealIRCd 6 the built-in (non-cURL) implementation is used for remote
includes, which already uses the same defaults since 6.0.0. Also note
that most distros, like Ubuntu and Debian, already disabled TLSv1.2
in the default openssl conf and thus it was already disabled in cURL.
2024-11-17 12:32:35 +01:00
Bram Matthys cda2bcd930 Fix ecdh-curve X25519 missing when using the defaults.
In config.h we had a:
 #if OPENSSL_VERSION_NUMBER >= 0x10100000L
 #define UNREALIRCD_DEFAULT_ECDH_CURVES "X25519:secp521r1:secp384r1:prime256v1"
 #else
 #define UNREALIRCD_DEFAULT_ECDH_CURVES "secp521r1:secp384r1:prime256v1"
 #endif
...which is fine in theory, but openssl headers are not included at that point,
so OPENSSL_VERSION_NUMBER was not defined.

From now on, we have:
 #define UNREALIRCD_DEFAULT_ECDH_CURVES_PRIMARY "X25519:secp521r1:secp384r1:prime256v1"
 #define UNREALIRCD_DEFAULT_ECDH_CURVES_SECONDARY "secp521r1:secp384r1:prime256v1"
...and we try them in that order. If both fail, we exit with an error (like before).
This because X25519 is not available in OpenSSL before 1.1.0 (so really old)
and may also not be available when running in FIPS mode.
2024-11-17 12:08:23 +01:00
Bram Matthys 116e076f0d Add release notes for upcoming 6.1.9
[skip ci]
2024-11-17 10:22:48 +01:00
Bram Matthys 08435a5674 Bump version to 6.1.9-git 2024-11-17 09:55:05 +01:00
Bram Matthys bace42dd50 Update curl-ca-bundle.crt to Tue Sep 24 03:12:04 2024 GMT
https://curl.se/docs/caextract.html
[skip ci]
2024-11-17 08:54:21 +01:00
Bram Matthys e43b407886 Bump shipped c-ares library from 1.33.1 to 1.34.3
https://c-ares.org/changelog.html
2024-11-17 08:43:11 +01:00
Bram Matthys b49cb1e720 An additional dbuf_delete() in free_client() that should be unneeded.
In all my tests on real servers this was never a reported leak,
because the dbuf_delete() already happens at other places where the
client is marked dead.

However, with my (private) fuzzing patches I need this freeing because
of a slightly different code path.

I'm putting the patch in mainline just in case I'm wrong and it does
trigger in some kind of niche situation.
2024-11-17 08:11:55 +01:00
Bram Matthys 2c6cea2461 Fix problem with unsubscribing I/O, leading to 100% CPU in some cases.
The IRCd is still responsive (as the bad I/O is not prioritzed) but this
isn't good either. Only happens with some rare triggers.

This was previously reported over e-mail in an older UnrealIRCd version
but after 6-8 hours of debugging I was never able to trigger it.
Later it finally happened on one of my servers and I could debug it.
2024-11-17 08:09:50 +01:00
Bram Matthys 08fb2b46ac Fix crash with "STATS S" if having vhosts with autologin (no login).
This crash is only triggerable by IRCOps.

Also, it shouldn't lists vhosts with "STATS S", it should be "STATS V".
2024-11-17 08:03:32 +01:00
Bram Matthys 4e11d81d67 Fix IPv6 hosts not resolving in UnrealIRCd 6.1.8 / 6.1.8.1.
Reported by bss on IRC.

Changed:
r->ipv6 = IsIPV6(client);
To:
r->ipv6 = IsIPV6(client) ? 1 : 0;

The problem is that:
 #define IsIPV6(x)                      ((x)->flags & CLIENT_FLAG_IPV6)
(..so without ?1:0..)
made this effectively:
 r->ipv6 = CLIENT_FLAG_IPV6;

..which is..
 #define CLIENT_FLAG_IPV6                       0x800000000     /**< client is using IPv6 */
.. and 0x800000000 doesn't fit in r->ipv6, which is of size 'char' (so max is 0xff)
2024-11-16 13:17:06 +01:00
Bram Matthys 18b171a071 Some more missing include/windows/setup.h defines.
+#define HAS_ASN1_TIME_diff
+#define HAS_SSL_CTX_SET_MIN_PROTO_VERSION
+#define HAS_SSL_CTX_SET_SECURITY_LEVEL
+#define HAS_X509_check_host
+#define HAS_X509_get0_notAfter

In practice, this only adds that we now do certificate expiry checks
and give warnings, like on *NIX.

The HAS_X509_check_host is good because then OpenSSL/LibreSSL code is
used instead of the one we have from cURL and the ssl conservatory.
To be honest I wanted to rip out this fallback completely at first,
but let's do that in next major version of UnrealIRCd and not during
an existing series.

The HAS_SSL_CTX_SET_* would have given an admin the option to downgrade
to TLSv1.0 or TLSv1.1 but LibreSSL no longer builds with these since
LibreSSL 3.8.1, which is sensible, so... no actual change there.
I'll document the behavior in the docs (wiki), though.

Also the previous claim in b653c68df0 with
regards to what curves were actually enabled in our LibreSSL UnrealIRCd 6
builds was incorrect, an hour ago I claimed X448 would show up as an extra,
but that is not the case (that was with OpenSSL). The correct statement is:
"This also meant the default curves that were offered were up to LibreSSL,
 which meant the following list in practice:
  Elliptic curves offered:     prime256v1 secp384r1 X25519
 Instead of:
  Elliptic curves offered:     prime256v1 secp384r1 secp521r1 X25519"

So it was only missing secp521r1. Nothing major.
2024-11-09 12:55:15 +01:00
Bram Matthys b653c68df0 Fix error on Windows when trying to set set::tls::ecdh-curves.
"[error] ecdh-curves specified but your OpenSSL/LibreSSL library does not
 support setting curves manually by name. Either upgrade to a newer library
 version or remove the 'ecdh-curves' directive from your configuration file"

This also meant the default curves that were offered were up to LibreSSL,
which meant the following list in practice:
 Elliptic curves offered:     prime256v1 secp384r1 secp521r1 X25519 X448
Instead of:
 Elliptic curves offered:     prime256v1 secp384r1 secp521r1 X25519

Not that X448 is considered bad, it just didn't match what we claimed in
the docs at https://www.unrealircd.org/docs/TLS_Ciphers_and_protocols

Fixed by: #define HAS_SSL_CTX_SET1_CURVES_LIST
2024-11-09 12:01:47 +01:00
Bram Matthys 1f3c9b1dd2 Add /HELPOP EXTSERVERBANS and refer to it from GLINE/KLINE/ELINE.
Not from ZLINE/GZLINE since (almost?) extended server bans don't work
from there since it is so early in the connecting process.
2024-10-23 10:09:45 +02:00
Bram Matthys 30b9f66f71 ** UnrealIRCd 6.1.8.1 ** 2024-10-17 18:30:07 +02:00
Bram Matthys 6d60899007 Good idea to bump the vhost module version to 6.1.8.1
[skip ci]
2024-10-17 18:22:16 +02:00
Bram Matthys 019c327821 Fix crash with new auto-vhost code. 2024-10-17 17:44:50 +02:00
Bram Matthys 985a591df2 Previous commit broke "GLINE *@1.2.3.4 0 test" and had a memory leak.
The former was fixed by merging the 'if'. The latter by getting rid
of dynamic memory allocation, long live the stack!
2024-10-16 10:21:16 +02:00
Valerie Liu 8e47aff2cf Make *LINE behave smarter if missing reason or time value (#304)
Now this works like:
if the time param exists, even without a reason, it will be checked if it's a time param. if it's not a time param, it'll be considered to be the reason (or the first part of it anyway)

Reported by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6105
2024-10-16 08:01:12 +00:00
Bram Matthys cf6718fdb2 Fix vhosts and blacklist reasons being lowercased
This was unintentional strtolower() in unreal_expand_string()
2024-10-14 18:56:21 +02:00
Bram Matthys a12ca25f50 Mention donation and shop in the release notes
[skip ci]
2024-10-11 09:24:45 +02:00
Bram Matthys 33276fb2ee ** UnrealIRCd 6.1.8 ** 2024-10-11 07:22:51 +02:00
TehPeGaSuS f7d2683569 Removed an extra { on the listen block syntax example (#303) 2024-09-28 17:33:22 +00:00
Bram Matthys e2400c0270 And some more rewording in release notes
[skip ci]
2024-09-27 10:23:15 +02:00
Bram Matthys 0a4f9af647 Add vhost block link in relnotes
[skip ci]
2024-09-27 10:21:25 +02:00
Bram Matthys 665dd8584a ** UnrealIRCd 6.1.8-rc1 ** 2024-09-27 10:19:18 +02:00
Bram Matthys c86b474ed8 Fix crash on crule "||"; in config file.
Reported by Valware in https://bugs.unrealircd.org/view.php?id=6438
2024-09-25 13:04:30 +02:00
Bram Matthys eae680c773 Update release notes a bit
... and make set::max-inherit-extended-bans::ban-exception default to 0
because that functionality is not implemented
The +e's are already checked when using +b ~inherit though..
2024-09-25 10:14:46 +02:00
Bram Matthys 2c77bc3723 Ok now make it 100% the same as pure IRC. There was still 1 char missing :D 2024-09-25 09:54:29 +02:00
Bram Matthys efbcf1f3b6 Actually test and fix the websocket cutoff bug from
7a43448674
2024-09-25 09:45:55 +02:00
Bram Matthys 918347af9e Fix config test for security-group
(in case of missing parameter for public or priority)
2024-09-25 09:21:44 +02:00
Valerie Liu fff76c4b29 Make authprompt work with recently new "sasl-from-a-module" hooks (#302) 2024-09-25 07:15:31 +00:00
Bram Matthys 7a43448674 Add unrl_utf8_make_valid() special option 2 to fix previous commit.
Without this, the IRC message could be far beyond >510 characters
(excluding message tags).

This code is untested!
2024-09-24 18:32:14 +02:00
Valerie Liu 713414e716 Websockets with type 'text': don't truncate lines to 510 chars when there are message tags (#301)
Allow full mtag messages to be sent over websockets
2024-09-24 16:30:02 +00:00
Bram Matthys 5860172780 Free previous GeoIP result upon IP change. Otherwise if the new geoip
lookup fails the old result stays there which is confusing.

Reported on IRC where 10.x.x.x was shown as "Poland" which was a
leftover from the "real IP" before WEBIRC spoofing was used to set
the IP to 10.x.x.x. Reported by Jellis.
2024-09-23 19:10:33 +02:00
Bram Matthys 7765f226be Detect operclass::parent loops.
Reported by craftxbox in https://bugs.unrealircd.org/view.php?id=6471
2024-09-23 17:25:17 +02:00
Bram Matthys 7d37795353 Don't list security groups by default, add 'public <yes|no>'
* [Security group blocks](https://www.unrealircd.org/docs/Security-group_block)
  are now hidden in lists by default. If you want the security group to be shown
  in things like `MODE #channel +b ~security-group:x` (which shows a list)
  then you need to use `public yes;`. The default security groups
  like known-users, webirc-users, etc. are public by default.
2024-09-23 13:11:24 +02:00
Bram Matthys e238eb7a4f Update release notes a bit
[skip ci]
2024-09-23 12:34:28 +02:00
Bram Matthys afbb0c283b Accept multiple masks in ban ip { } and ban nick { } such as:
ban ip {
	mask { 1.1.1.1; 2.2.2.2; 3.3.3.3; }
	reason "Go away";
}

Or the alternate form:

ban ip {
	mask 1.1.1.1;
	mask 2.2.2.2;
	mask 3.3.3.3;
	reason "Go away";
}

Suggested by magic000 in https://bugs.unrealircd.org/view.php?id=4599

Note that this is not a Mask item, these are special, hence the
special code.
2024-09-23 12:29:35 +02:00
Bram Matthys 403b055756 Fix duplicate_security_group() not inheriting 'ip' entries.
There was a typo where it was inheriting exclude-ip entries as
ip entries. This could have been very dangerous but fortunately
exclude-ip was broken so it was impossible to add exclude-ip
entries and that list was always empty / NULL.

This only affected proxy { } blocks with type forwarded/x-forwarded/
cloudflare. The proxy block worked fine, but we also tried to exempt
these IPs from blacklist checking and connect-flood and this was
NOT effective due to this bug... even though the entries were shown
in "STATS except" with these IPs (because 'printable_list' was
correctly duplicated).

Other than that very particular use-case, this function is not used
at the moment.
2024-09-20 19:28:15 +02:00
Bram Matthys 5ffcefe50a Update release notes on features added today.
[skip ci]
2024-09-20 18:10:39 +02:00
Bram Matthys 7dc3c230a7 Now that we support $variables, add set::oper-vhost so you can set a default
vhost for opers, such as: set { oper-vhost $operclass.admin.example.net; }

If the oper has an oper::vhost then that one will override.

https://www.unrealircd.org/docs/Set_block#set::oper-vhost
2024-09-20 17:54:39 +02:00
Bram Matthys 9a2d54cd01 Support $variables in oper::vhost (for variables see previous commit)
Eg: vhost "$operlogin@$operclass.example.net";

Also add potentially_valid_vhost() function which can be used in
config code to ignore invalid $vars. Then at runtime you use the
real valid_vhost() function after variable expansion by
unreal_expand_string().
2024-09-20 17:26:16 +02:00
Bram Matthys 4557036cd6 Move unreal_expand_string() to an efunc so all code can access it
and use it not only from vhost { } block code but also for like
blacklist::reason.

This so the same variables with the same names are available at
those places.

Supported are:
$nick, $username, $realname, $ip, $hostname, $server, $account,
$operlogin, $operclass, $country_code (xx for unknown),
$asn (0 for unknown).
2024-09-20 17:13:23 +02:00
Bram Matthys 60c0ab8da2 Make vhost::vhost support $variables. Currently supported are:
$nick, $username, $realname, $ip, $account, $operlogin, $operclass,
$country_code (xx for unknown), $asn (0 for unknown).

Note that if a $variable fails to expand, eg $operlogin but the
user is not oper, then the vhost will not be applied. A warning
is sent to the vhost snomask (+s +v) in such a case.

Examples:

/* Set authenticated users to $account.example.org */
vhost { auto-login yes; vhost $account.example.org; mask { identified yes; } }

/* Obviously not really a good idea, but.. to illustrate: */
vhost { auto-login yes; vhost $country_code.example.org; mask *; }

Also, when vhost { } blocks are read and need to be matched, they
are read top-down now, which is the most logical way. First match wins.

All this needs testing :)
2024-09-20 16:48:22 +02:00
Bram Matthys e9ffe5b5e7 Add vhost::auto-login: checks on-connect if user meets ::mask criteria
and if so, it sets the vhost on the user. Except when the user already
has a vhost (eg from anope during SASL).
If vhost::auto-login is 'yes' then you don't need ::login and ::password.

Suggested by PeGaSuS.

Support for variables like $account in vhost::vhost, more examples and
a release notes entry will follow in later commit(s).
2024-09-20 15:43:55 +02:00
Bram Matthys 55c04d9887 vhost: move struct as well, reorder and document. 2024-09-20 14:51:50 +02:00
Bram Matthys fe751fdc9d Move all vhost { } block handling to vhost module.
* Convert to use module-based config handling
* Split part of VHOST command into do_vhost() for later
* Use AppendListItem instead of AddListItem so they are in config-order.
  This is not really important atm but will matter later if we go auto.
* No other code changes at this point
2024-09-20 14:45:52 +02:00
Bram Matthys 51c055d4f0 Mention log.send in release notes
[skip ci]
2024-09-20 13:26:47 +02:00
Bram Matthys a5caf8d625 Update release notes a bit
[skip ci]
2024-09-20 13:20:49 +02:00
Bram Matthys 8e8384628b Fix decode_authenticate_plain() reading OOB.
This is a helper function for modules, it is not actually used by
UnrealIRCd itself.
2024-09-18 15:49:53 +02:00
Valerie Liu 71798963e0 rpc/log: Add ability to send log messages via RPC log.send (#299) 2024-09-17 15:40:03 +00:00
Bram Matthys 7396e6bd77 Fix crash when a server sends an invalid REHASH command.
(This can only be sent by linked trusted servers)

Reported by CaoS in https://bugs.unrealircd.org/view.php?id=6447
2024-09-16 16:42:53 +02:00
Bram Matthys 72c4b718f6 Move remove_dcc_references() to dccallow module. 2024-09-15 17:58:48 +02:00
Bram Matthys c39d763e00 Move 416 lines from src/misc.c to src/modules/quit.c: exit_client() etc.
This so if there is ever an issue, we can hot-patch it. This affects
exit_client(), exit_client_fmt(), exit_client_ex(), banned_client(),
and various (internal) help functions.

This also means you cannot call these functions during TEST/INIT (eg
during REHASH) since the 'quit' module which provides these modules
may not be loaded yet. I don't think that's a situation/problem but
this needs some more testing.
2024-09-15 17:45:25 +02:00
Bram Matthys a41ab32d16 maxperip: use siphash_raw(client->rawip.... 2024-09-14 20:33:57 +02:00
Bram Matthys 2ef39497c7 Similar to previous commit, move maxperip stuff from core to module.
This was in src/hash.c, src/list.c and src/modules/stats.c.
Now all in src/modules/nick.c... or should this go into a new module?

Again, this needs some more testing, like previous commit.
2024-09-14 20:18:22 +02:00
Bram Matthys 710afe7cc7 Move throttling code from src/hash.c to src/modules/connect-flood.c
Better to have this all in one place. Though, must admit, the
config checking is still in src/conf.c and a bit of a hassle to move.

Some testing may be wise to see if everything still works ;)
2024-09-14 19:55:43 +02:00
Bram Matthys fdfe5ba482 Remove raw_client_ip() since we now have client->rawip. 2024-09-14 19:19:21 +02:00
Bram Matthys ca7e4ab966 Prevent +b ~inherit:#chan in #chan. This didn't cause any problem but
doesn't make any sense either, so just reject it. Reported by alice.
2024-09-14 19:07:15 +02:00
Bram Matthys 4504adf149 Remove confusing comment in is_banned...
"Strange things could happen if this is called outside standard ban checking"
that was 15yrs ago when we had global vars like 'ban_ip' and such.
https://github.com/unrealircd/unrealircd/commit/7dee0cdcf17524a072236ff9d27c68c3da665c0a#diff-403251a2e50ed7323ab9c39abb604fd77db527cbb85c2c8ce360249e8ece4907R491-R497

It no longer applies to the current situation.
[skip ci]
2024-09-11 18:44:53 +02:00
Valerie Liu e0459943a3 Show port number in DEBUG_TLS_FATAL_ERROR (#298) 2024-09-10 14:40:33 +00:00
alice 255dfe6bf7 Fix redefinition of struct RPCClient within struct.h, which occurs if you have an old compiler. (#296)
Reported in https://bugs.unrealircd.org/view.php?id=6469 by hughmungus
2024-09-10 14:31:33 +00:00
Bram Matthys b6cdca5525 Fix b->ban_type not being set properly at all places (BanContext).
This probably didn't cause any issues earlier, or maybe it did
with some 3rd party mods, but is relevant now that we have ~inherit.
2024-09-09 16:44:57 +02:00
Bram Matthys 10ec67d163 Fix +I ~inherit:#chan (invite exceptions) 2024-09-09 16:28:22 +02:00
Bram Matthys 1a2d93778e Add small note on +e/+I not working yet for ~inherit. TODO item.
[skip ci]
2024-09-09 16:07:21 +02:00
Bram Matthys 554281d6eb Update curl-ca-bundle.crt to Tue Jul 2 03:12:04 2024 GMT
https://curl.se/docs/caextract.html
[skip ci]
2024-09-09 11:52:31 +02:00
Bram Matthys a9874bc51f Update shipped c-ares to 1.33.1 (Aug 23, 2024) 2024-09-09 11:46:39 +02:00
Bram Matthys bd5c5ca59e In some situations users would hang during the handshake due to forever
waiting DNS lookups. This had to do with c-ares query cache causing a
different (unexpected) code path in UnrealIRCd.
And, somewhat related, c-ares also didn't obey our DNS timeout, as that
value is a "hint" nowadays, so now we set the "max timeout" value.

Fun.
2024-09-08 19:42:11 +02:00
Valerie Liu 879e365ed5 extbans/partmsg.c: Actually check if there's a matching ban before removing the part message (#295) 2024-09-08 16:52:01 +00:00
Bram Matthys 7d62fe9548 Update HELPOP EXTBANS on ~inherit.
[skip ci]
2024-09-08 17:49:01 +02:00
Bram Matthys 8fa8476831 Typoooos in the release notes
[skip ci]
2024-09-08 17:39:42 +02:00
Bram Matthys 70a98d3af2 Update release notes a bit
[skip ci]
2024-09-08 17:36:48 +02:00
Bram Matthys 3c1ef65a00 Add set::max-inherit-extended-bans to configure limits for ~inherit extban:
Looks like this, with the current defaults:
set {
        max-inherit-extended-bans {
                ban 1;
                ban-exception 1;
                invite-exception 1;
        }
}
2024-09-08 17:15:26 +02:00
Bram Matthys decaeec484 HELPOP EXTBANS sorting and some whitespace changes
[skip ci]
2024-09-08 16:41:33 +02:00
Valerie Liu 4c46be691b Update help.conf: Add ~asn to extbans help output (#293) 2024-09-08 14:38:36 +00:00
Valerie Liu ae8b039831 Fix $nick log string in debug message re spamfilter tag (#294) 2024-09-08 14:37:26 +00:00
Bram Matthys c4c72ecaca Fix spamfilter.get unable to retrieve config-based spamfilters.
Reported in https://bugs.unrealircd.org/view.php?id=6467 by adator.
2024-09-08 10:16:15 +02:00
Bram Matthys ee1d6818b4 Add +b/+e/+I ~inherit:#channel to inherit channel bans from another channel
Several notes:
* This only checks on-JOIN (not on nick change, message, etc)
  for performance reasons
* If the #channel in ~inherit:#channel also contains ~inherit
  entries then those are not processed (no recursion and no looping)
* Only a limited number of ~inherit entries is permitted.
  This will be moved to set:: items in a future commit so you
  can set different amounts for +b/+e/+I ~inherit.
* This is work in progress, UnrealIRCd or the entire world could explode
* Documentation will follow later

Developers:
* Sadly, clean_ban_mask() needed to be changed to have two more
  parameters, 'ban_type' and 'channel' were added at different positions.
  This because the module needs the ban type (EXBTYPE_BAN, EXBTYPE_EXCEPT,
  EXBTYPE_INVEX) and channel because it rejects based on number of
  existing ~inherit entries in the channel... and while is_ok() is called
  for local clients and has all this information, for services clients
  is_ok() is not called so the only way to reject the +beI is through
  xxx_conv_param() which comes from clean_ban_mask().
2024-09-07 21:02:15 +02:00
Bram Matthys e17e11dd73 Make "MD" S2S command support BIGLINES. We don't need it now but maybe
in the future we will, or some third party module. And then it would
be nice if all servers on the IRC network support it, of course.
2024-09-05 20:06:58 +02:00
Bram Matthys 99bc061a74 Fix require authentication { } not allowing SASL users in.
It was behaving like a ban user { } block.

Reported by Jellis in https://bugs.unrealircd.org/view.php?id=6464
2024-08-30 20:01:20 +02:00
Bram Matthys bfb41612c8 Sync release notes with upcoming 6.1.7.2 dot release.
6.1.7.2 does not exist in git and will be:
* Version bumped from 6.1.7.1 to 6.1.7.2
* 5092fa985d (cbl-timeout-fix)
* 624d1d189c (remove curlinstall)

[skip ci]
2024-08-24 08:16:04 +02:00
Bram Matthys 21476d6896 Fix ./unrealircd hot-patch in case of zero byte patch file.
Such a file is served if the UnrealIRCd version is unaffected.
It printed "This UnrealIRCd version does not require that patch"
but then instead of stopping it continued.. which wasn't all
that bad before GPG/PGP but now it causes failures and scary
warnings.

(See also 035f487684 which
 introduced GPG/PGP)

[skip ci]
2024-08-20 13:46:36 +02:00
Bram Matthys 5092fa985d Central Blocklist: fix issue with clients being killed if too slow.
We already allow users in after 10 seconds if CBL is too slow, and
that part worked correctly. However 5 seconds later, when the URL
API 15 second timeout hits, it would try to allow the user in AGAIN.
This caused the user to be introduced twice, causing remote servers
to kill the user, and also screwing up user counts.

Reported by multiple people, including Jellis who actually filed
a report with logs, and alice providing logs as well, all when CBL
was temporarily down for a few hours in August 2024. In hindsight
this bug was already reported by k4be back in November 2023 but
was more rare at the time and mistaken for another very similar
bug that was fixed in 6.1.3.

With this patch, we check before we call cbl_allow(), but also
cbl_allow() itself checks the "user already allowed in?".

Oh yeah and this is hot patchable, within the hour I will make
this work: ./unrealircd hot-patch cbl-timeout-fix
2024-08-20 13:29:08 +02:00
Bram Matthys 035f487684 Add GPG/PGP signature verification for ./unrealircd hot-patch/cold-patch.
Similar to what we already do in './unrealircd upgrade' (in fact, code
stolen from that extras/unrealircd-upgrade-script.in file)
2024-08-10 15:58:35 +02:00
Bram Matthys 624d1d189c Remove curlinstall script. As https remote includes work without cURL,
most people don't need cURL support anymore anyway.
For those who do, they can install curl as a system library.

This also warns and unsets curl on ./unrealircd upgrade
and during ./Config when upgrading, but only for the 'curlinstall'
cases. Not for people who use system curl, since that is
totally fine to use :).
2024-08-10 14:54:03 +02:00
Bram Matthys a31394dd52 Shut up a warning related to unchecked set_client_ip() 2024-07-22 08:07:40 +02:00
Bram Matthys 4f3e524602 Add function set_client_ip() and call HOOKTYPE_IP_CHANGE there if needed.
This to replace the scattered IP setting. It is very important to always
use set_client_ip() from this point. Everywhere!

Also, in addition to client->ip, this adds client->rawip that contains
the IP in network byte order. In older UnrealIRCd versions we always had
the raw IP but not the IP as a string, so we moved to IP as a string,
but it can be useful to have both in terms of optimizations.
Of course, then the client->ip and client->rawip always need to 100% match,
hence the set_client_ip().

This also changes IsIPV6() to do A BUGFIX, it changes it from:
* if local user is the user connected over IPv6? Otherwise, does it have ':' in the IP?
To:
* check if the IPv6 flag is set (which is set if IP contains ':')
This may seem insignificant but it means that for spoofed IP addresses,
such as WEBIRC or transparant proxy, we use the correct transport.
Previously, if the proxy was IPv6 then even if the spoofed user was using
IPv4, the ident check would still be tried over IPv6. That sort of fun.
From now in, in such a situation client->local->socket_type will be
SOCKET_TYPE_IPV6 but since client->ip (and rawip) will contain IPv4
the IsIPV6() will actually return false, as it should be.

Also, in the HOOKTYPE_IP_CHANGE, enforce that if HOOK_DENY is returned,
the the user is killed by dead_link(). The user must be killed because
that is what we expect, and you cannot use exit_client() because from
some code paths that would be too much freed structures / hassle,
as a comment in src/modules/connect-flood.c correctly states:
/* There are two reasons why we can't use exit_client() here:
 * 1) Because the HOOKTYPE_IP_CHANGE call may be too deep.
 *    Eg: read_packet -> webserver_packet_in ->
 *    webserver_handle_request_header -> webserver_handle_request ->
 *    RunHook().... and then returning without touching anything
 *    after an exit_client() would not be feasible.
 * 2) Because in HOOKTYPE_ACCEPT we always need to use dead_socket
 *    if we want to print a friendly message to TLS users.
 */
2024-07-20 12:22:26 +02:00
Bram Matthys 191e6ac162 Bump version to 6.1.8-git 2024-07-20 11:53:47 +02:00
Bram Matthys 0030e7849c Mention anope 2.1.x (dev) and different protocol module name.
Reported by DeviL.
[skip ci]
2024-07-20 08:44:43 +02:00
Bram Matthys a686254540 ** UnrealIRCd 6.1.7.1 ** 2024-07-18 10:25:06 +02:00
Bram Matthys 0496c35fc6 Fix io.BUG_FD_SETSELECT_OUT_OF_RANGE [BUG] trying to modify fd -2 in fd table
Because c-ares is now caching request/responses, the DNS result may come in
immediately, causing some events to occur that were previously impossible.

And yeah, the warning was harmless, other than it being a possible nuisance
to IRCOps.
2024-07-18 10:04:56 +02:00
Bram Matthys b39b953b8e Add debugging code to trace source of io.BUG_FD_SETSELECT_OUT_OF_RANGE (fd=-2). 2024-07-18 08:10:49 +02:00
Bram Matthys 9232db12ae Remove an annoying BLACKLIST_RESOLVER_CALLBACK message in DEBUGMODE
[skip ci]
2024-07-18 08:00:06 +02:00
Bram Matthys 5ad5c4cfe2 JSON-RPC whowas.get: add geoip object with country_code, asn and asname.
(only if the information is available, of course)
2024-07-17 17:15:10 +02:00
Bram Matthys 5c810d0c63 In WHOWAS also show country and ASN information to IRCOps 2024-07-17 17:03:49 +02:00
TehPeGaSuS 3ffc54484b Add a mention on how to upgrade to the next RC on the ./unrealircd upgrade command (#291) 2024-07-17 12:22:39 +00:00
Bram Matthys 7fb7c7968a Relnotes: it is require authentication { } and not ban authentication { }
Reported by PeGaSuS
[skip ci]
2024-07-16 18:34:58 +02:00
Bram Matthys 4ab1a4d128 ** UnrealIRCd 6.1.7 ** 2024-07-16 12:36:53 +02:00
Bram Matthys cabd7c1ede Fix memory leak in rpc-user::rpc-class (at least this one is small) 2024-07-16 09:33:45 +02:00
Bram Matthys 34d23c8b5c Fix memory leak in ASN code
Contrary to retrieving country code / country name, the AS organisation
name that was returned needs to be freed by *US*. Makes sense, though
a bit inconsistent, heh.

[skip ci]
2024-07-16 09:32:25 +02:00
k4be e950bb53bc Add ASN support for geoip_maxmind 2024-07-15 19:22:48 +02:00
Bram Matthys 0b253306b3 Add extbans/asn to Windows makefile. (And rebuild 6.1.7-rc1 on Win)
[skip ci]
2024-07-13 10:30:47 +02:00
Bram Matthys 33e9b65ce4 ** UnrealIRCd 6.1.7-rc1 ** 2024-07-13 09:46:03 +02:00
Bram Matthys e5e000508e UNIX sockets: show in boot screen and properly when adding/removing listen block
Was previously shown as like :0 when removing/adding a listen block
with a UNIX socket. Now shows the file, as you would expect.

And in the boot screen it was like:
[info] IPv4: 127.0.0.1:6697(TLS), 127.0.0.1:6667
[info] IPv6: *:6667, *:6697(TLS)
And now also:
[info] Unix Sockets: /home/unrealircd/unrealircd/data/rpc.socket
2024-07-13 08:11:54 +02:00
Bram Matthys f6b448df2c Fix error with ASN lookups for IPv6
This line should not be here, it is for country lookups (also wasn't
there for IPv4, which actually does work)

[skip ci]
2024-07-13 07:48:34 +02:00
Bram Matthys 3efc62fc75 Allow +b ~operclass:xyz checking against remote users too.
Yeah not really important except for like SVSMODE -b nick, which
removes all bans that affect nick. That's the only type of code
that runs bans against external users.
2024-07-12 20:31:56 +02:00
Bram Matthys 3ccfc9ecf2 Rewrite release notes a bit
[skip ci]
2024-07-12 16:57:26 +02:00
Bram Matthys 1b4f987ab7 Move displaying of ASN in WHOIS to separate RPL_WHOISASN (569)
This is the numeric that the inspircd third party module uses
https://github.com/inspircd/inspircd-contrib/blob/master/4/m_asn.cpp
and it does not seem taken at
https://defs.ircdocs.horse/defs/numerics.html or
https://www.alien.net.au/irc/irc2numerics.html

This also means AS displaying is now separately configured via
set::whois-details::asn. By default only IRCOps can see it.
2024-07-12 12:17:39 +02:00
Bram Matthys da6cf4f6fa Add crule function match_asn(64496) 2024-07-12 11:37:18 +02:00
Bram Matthys 156e38f538 Update release notes a bit
[skip ci]
2024-07-12 11:30:21 +02:00
Bram Matthys 34b183c75a Update example in release notes to require authentication { mask { asn...
instead of ban user { }. Has a bit more use.
Also mention that +b/+e is possible but of little use in the
normal / default configuration. It can be if you don't do cloaking
though and change set::whois-details::geo.. eg everyone full;
[skip ci]
2024-07-12 11:21:58 +02:00
Bram Matthys 65c8a6e667 Some minor tweaks here and there
[skip ci]
2024-07-12 11:16:01 +02:00
Bram Matthys 0844f7243f Add ASN as extended server ban, mask item, secgroup. Eg: GLINE ~asn:64496 0 Bye!
This also automatically adds it as a security group and mask item:

ban user {
        mask { asn 64496; }
        reason "Testing ASN ban";
}

And yeah, it is a normal extban too (in +b and +I). Users usually
don't know the AS Number of other users, though, unless you change
the default configuration (at the cost of privacy).

Updated release notes a bit... more will follow.
2024-07-12 11:12:54 +02:00
Bram Matthys f33a0d2c1b Add initial ASN support:
* Including default download via unrealircd.org
* Shown in WHOIS - currently in RLP_WHOISCOUNTRY, not sure
  if that is correct.
* Shown in connect notices [asn: XYZ] [asname: BLAH BLAH]
* Shown in json user expansion (JSON logging and JSON-RPC)
* Only via geoip_classic at the moment
* Structs and serializing in geoip_base done
* Extbans not added yet
2024-07-12 10:31:52 +02:00
Bram Matthys 89e6c2c06f listen::port did not error on comma's.
Reported by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6419

Related feature request to allow it - or some other style:
https://bugs.unrealircd.org/view.php?id=6281
2024-07-12 08:52:00 +02:00
Bram Matthys a9f4656971 Update release notes a bit
[skip ci]
2024-07-11 18:55:55 +02:00
Bram Matthys 1ac9d654b9 Fix crash when removing the websocket option on a websocket listener
To reproduce, boot with:

listen {
	ip *;
	port 6000;
	options { websocket { type text; } }
}

And after that, comment out the options and REHASH. You'll crash.

Reported anonymously through crash reporter.
2024-07-11 18:36:08 +02:00
Bram Matthys 8bb0a934c6 Fix three small memory leaks, together 1KB per REHASH.
The list is as follows with the number of bytes in the test leaked,
but this can vary depending on your configuration:
* charsys with multibyte ranges (112 bytes)
* set::whois-details (909 bytes)
* +F default profile (7 bytes)

The whois one is in the default configuration, so likely
affected everyone. It's nothing catastrophic, as you need a 1000
REHASHes in order to reach 1MB but.. we shouldn't leak, of course.
2024-07-11 18:22:31 +02:00
Bram Matthys 7157e1a578 Mention donation URL in boot screen. This used to be at 'make install'
but was removed several years ago. I think this is a better place.

This also removes doc/Donation which was out of date and probably
not many people knew about it at all.

[skip ci]
2024-07-06 16:14:20 +02:00
Bram Matthys 9cc2918d5f Make set::spamfilter::except a Mask item
* [set::spamfilter::except](https://www.unrealircd.org/docs/Set_block#set::spamfilter::except)
  is now a [Mask item](https://www.unrealircd.org/docs/Mask_item) instead of
  only a list of exempted targets. A warning is created to existing users
  along with a suggestion of how to use the new syntax. Technically, this is
  not really new functionality as all this was already possible via
  the [Except ban block](https://www.unrealircd.org/docs/Except_ban_block)
  with type spamfilter, but it is more visible/logical to have this also.
2024-07-06 10:09:35 +02:00
Bram Matthys e03a5dfd5f Support ::destination and ::exclude-destination in security groups / mask items
at selected places (there needs to be explicit code in place to handle this).
At the moment it is supported at two places only:
* For spamfilters (was already possible via crules via ::rule with
  a destination('xyz') but now non-crule destination "#xyz"; works as well, eg:
  spamfilter {
          ...
          except {
                  destination "#main";
          }
  }
  Note that if you want to exempt a destination in all spamfilters,
  we already have set::spamfilter::except for that!
* In restrict commands for like channel-message and such:
  set {
          restrict-commands {
                  channel-message {
                          except {
                                  connect-time 600;
                                  destination "#test";
                          }
                  }
           }
  }

Allow passing a crule_context via user_allowed_by_security_group_context()
and make user_allowed_by_security_group() call that.

Actually document spamfilter::except online in the docs (yeah you
won't see it in this commit, just mentioning...)

And yeah, by now i wonder if we should really call it crule_context
since it is more like a security group matching context, but.. whatever.
2024-07-06 09:16:53 +02:00
Bram Matthys a804b24150 Add set::hide-killed-by which shortens the quit to "Killed (Reason)".
* New option [set::hide-killed-by](https://www.unrealircd.org/docs/Set_block#set::hide-killed-by):
  We normally show the nickname of the oper who did the /KILL in the quit message.
  When set to `yes` the quit message becomes shortened to "Killed (Reason)".
  This can prevent oper harassment.

Suggested by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6425
2024-07-06 08:12:11 +02:00
Bram Matthys 667eae41dd Add warning when rpc-user::rpc-class is missing. Add default 'full' and 'read-only'.
The reason for the warning is that in some future UnrealIRCd version I want the
rpc-user::rpc-class to become a required item.

This commit also adds rpc-class.default.conf which is by default
included from rpc.modules.default.conf.

This also completes the TODO list from b9de933378
(the rpc.add_timer was never a loophole and i kept rpc.info as-is)
2024-07-05 11:45:49 +02:00
Bram Matthys 0b7162f3cf Free old operclass blocks on REHASH (memory leak)
This wasn't caught by Address Sanitizer because we simply never removed
it from the linked list, and thus it was a reachable pointer.

Found this bug when adding the rpc-class { } stuff.
2024-07-05 11:11:13 +02:00
Bram Matthys b9de933378 Similar to oper and operclass, this adds an rpc-class block.
This so you can restrict the JSON Methods that can be called, eg:

rpc-class limited {
    privileges {
        server { list; get; }
        channel { list; get; }
        user { list; get; }
    }
}

rpc-user xyz {
    match { ip 127.0.0.1; }
    password "test";
    rpc-class limited;
}

NOTE: This is work in progress
1) Things are NOT yet fully contained, as i need to lock down
   rpc.add_timer still :)
2) Some more work, eg rpc.info would be nice to show some
   information about the restriction (??)
3) Need to fix a memory leak
4) Possibly more
2024-07-05 10:21:45 +02:00
Val Lorentz 2a3f5dc500 MODE: Reply with ERR_NOSUCHCHANNEL when the target is a channel (#287) 2024-07-05 07:28:12 +00:00
Bram Matthys 36b6e00701 Windows libs have been updated and libressl stopped using version numbers
so update buildbot vs2019.bat with the SSLLIB names.
[skip ci]
2024-07-03 09:15:22 +02:00
Bram Matthys 3bc1e0c932 Fix tkldb issue caused by making ban user::mask a mask item.
The build tests were failing for tkldb save & restore. Cause was this:

if (tkl->ptr.serverban->match)
^ this is wrong.. because it doesn't check if tkl is a server ban

So it could be tkl->ptr.spamfilter->whatever_is_at_that_memory_offset
which is non-NULL.

Could have updated the code to an if (IsServerBan... && tkl->..etc..)
but decided to ditch this needless code altogether.

As this wasn't needed at all since it already skips config-based.
And all mask items bans are config-based.

One of those rare cases where trying to be extra careful actually
causes a fuckup.
2024-07-01 18:56:29 +02:00
Bram Matthys ad485d1d1f Oh url_unreal.c needs this too, to get rid of the warning. 2024-07-01 16:46:11 +02:00
Bram Matthys 7415101bc3 Update shipped libsodium to 1.0.20. 2024-07-01 15:37:49 +02:00
Bram Matthys d307fef2d5 Update shipped PCRE2 to 10.44 2024-07-01 15:36:07 +02:00
Bram Matthys 25bed9ac1f Update the shipped c-ares to 1.31.0 and silence deprecation warnings for c-ares API.
Ignore these for entire src/dns.c.
Quoting https://github.com/c-ares/c-ares/pull/732#issuecomment-2028454381:
"Those deprecated functions will remain available until there is an ABI
 break, which honestly will likely never happen. It's more to encourage
 integrators to move to the more modern functions."
Also, keep in mind that several of these 'deprecations' happened in early 2024
while the new function was introduced in March 2020, like for ares_getaddrinfo().
That isn't all that long ago, only 4 years. So we would need compatibility code
for both the old and new function for a while.
So: we can look into that in some major new UnrealIRCd version, nothing urgent,
and perhaps by then it is long enough that we don't need the fallback to older
functions.
2024-07-01 15:05:01 +02:00
Bram Matthys c12864f81b Fix crash in server_ban.list JSON-RPC call as well.
Hmm... we should probably use json_expand_tkl() differently for match items
instead of returning "<match-item>" literally. Consider this a TODO item :D
This only happens for config-based bans that can't be removed anyway, so..
2024-06-30 19:59:41 +02:00
Bram Matthys 58d7a274f6 Fix crash in new ban user { } code, as predicted two commits ago. 2024-06-30 19:47:04 +02:00
Bram Matthys 53d97e020f Fix for last commit: except ban { } was not checked for ban user { } blocks 2024-06-30 19:26:02 +02:00
Bram Matthys bc7c69dd20 Make ban user::mask and require authentication::mask a Mask item. Finally.
As requested in
https://bugs.unrealircd.org/view.php?id=6159 by PeGaSuS
https://bugs.unrealircd.org/view.php?id=6319 by BlackBishop
https://bugs.unrealircd.org/view.php?id=6397 by Valware

The mask item https://www.unrealircd.org/docs/Mask_item
means you can use all the power of mask items and security groups and
multiple matching criteria.

This requires a bit more testing as username/hostname are NULL now
so some code paths may have to be adjusted. The function call to add
server bans has changed too. And, really need to check that soft bans
are not broken... because they might be ;D
2024-06-30 19:06:37 +02:00
Bram Matthys f6643f283c Support spamreport::url for type central-spamreport too.
This so you can get the same spamreport data to your own custom system.
It works similar to set::central-blocklist::url but then on a
spamreport { } basis which is better, since then you can still
submit to UnrealIRCd central spamreport too.

So you can have two blocks:
spamreport unrealircd { type central-spamreport; }
spamreport custom { type central-spamreport; url 'https://www.example.org/xyz'; }

And then a /SPAMREPORT or 'report;' action will report it to BOTH.

Requested by Chris
2024-06-26 14:01:13 +02:00
Valerie Liu 54a8fc140b restrict-commands: add option 'channel-create' (channel creation) (#285)
* restrict-commands: add option 'channel-create' for managing who may create new channels.
This has been a commonly requested feature with different requested options, I think it makes sense to do it properly from here
2024-06-14 13:05:34 +00:00
Bram Matthys 58646bafbb Reorder some if's and comment them to make sense.
[skip ci]
2024-06-14 14:36:34 +02:00
Bram Matthys 33c6eb0bcf Destroy channel if 0 users and can_join() rejects the user.
Reported by Valware. E.g. if HOOKTYPE_CAN_JOIN rejects the join
when it is a new channel.

( And yeah... +P channels are not destroyed... handled in
  sub1_from_channel() -> HOOKTYPE_CHANNEL_DESTROY already. )
2024-06-14 14:28:11 +02:00
Bram Matthys 57f93a1ffa Write some initial release notes
[skip ci]
2024-06-14 11:21:27 +02:00
Bram Matthys 9e1fa65a46 Make locop only able to REHASH local server and not remote ones.
As reported in https://bugs.unrealircd.org/view.php?id=6414
2024-06-14 11:15:23 +02:00
Bram Matthys 5897bc2282 Add ./Config -h / -help
Suggested by hnj in https://bugs.unrealircd.org/view.php?id=6417
[skip ci]
2024-06-14 10:50:00 +02:00
Bram Matthys c37dc9334b Attempt to fix KICK OperOverride message if you are not +o but have +h/+a/+q.
There was an incorrect OperOverride message if you were had +h, +a or +q
and was kicking someone that you should normally be able to (without override).

This requires quite a bit of further testing, though, it's so easy to get
this wrong. The FIXME still stands to fix this for good some day.

Reported by Valware in https://bugs.unrealircd.org/view.php?id=6423
2024-06-14 10:45:41 +02:00
Bram Matthys 5e46692bb2 Bump version to 6.1.7-git 2024-06-14 10:00:37 +02:00
Adrian Sandu 2c49668db8 Add option set::tls::certificate-expiry-notification (#286)
This way you can disable the check and notification about TLS certificate expiring. The check is (still) on by default.
2024-06-14 07:57:33 +00:00
henk84 214423564e comment optional, fictional example blocks (#282)
Co-authored-by: Hendrik Jäger <gitcommit@henk.geekmail.org>
2024-06-14 07:27:56 +00:00
henk84 575bbeefd8 remove nonexistant email address in badwords conf (#283)
Co-authored-by: Hendrik Jäger <gitcommit@henk.geekmail.org>
2024-06-14 07:25:32 +00:00
henk84 d98dc2fcc3 Fix comment in example.conf (#281)
fix plural
Co-authored-by: Hendrik Jäger <gitcommit@henk.geekmail.org>
2024-06-14 07:25:04 +00:00
henk84 4ad2a601ac fix comment in modules.optional.conf (#280)
fix repeated preposition
Co-authored-by: Hendrik Jäger <gitcommit@henk.geekmail.org>
2024-06-14 07:24:31 +00:00
alice a77ff1f2c8 Fix OPEROVERRIDE_VERIFY option. (#278)
Reported by hnj in https://bugs.unrealircd.org/view.php?id=6418

Appears to have been introduced as part of the 6.x refactor of secret/private channel modes in 8066c13876

Also adjust message for ERR_OPERSPVERIFY to include channel name.
This is to correspond closer to other similar numerics around this area, as well as agreeing with the definition within modern.
2024-06-14 07:22:19 +00:00
Bram Matthys dd2242b6a8 ** UnrealIRCd 6.1.6 **
The release will be published tomorrow (2024-06-14).
2024-06-13 19:14:28 +02:00
Bram Matthys 89b735f6f2 Update curl-ca-bundle to Mon Mar 11 15:25:27 2024 GMT
https://curl.se/docs/caextract.html
[skip ci]
2024-06-13 18:54:08 +02:00
Bram Matthys e89f3f444c ./Config: import settings from UnrealIRCd 6.1.5
[skip ci]
2024-06-07 18:38:49 +02:00
Bram Matthys f2c92ee4b0 ** UnrealIRCd 6.1.6-rc1 ** 2024-06-07 18:22:48 +02:00
henk84 fdc1cd1902 fix word repetition in operclass.conf (#279) 2024-06-02 14:14:19 +02:00
Bram Matthys 05c946579f Don't put insecure gatewayed/proxied connections in 'tls-users' security group.
For user--proxy--ircserv we don't set +z when user--proxy is not
using SSL/TLS and we should behave the same way with ::tls in
security groups / match items.

See also
https://www.unrealircd.org/docs/FAQ#Why_do_users_on_WEBIRC_gateways_not_get_user_mode_+z?

But also applies to other types in the proxy block.
2024-05-20 11:52:23 +02:00
Bram Matthys a11cfde6cd Fix crash if you first REHASH and have a parse error (failed rehash 1) and
then REHASH again but a remote include fails to load (failed rehash 2).

This was reported by multiple (anonymous) people via the crash reporter.
2024-05-20 10:28:33 +02:00
Bram Matthys 9d91f61206 Crule: forgot a context && context->client check. Just in case the
crule is used outside security groups / spamfilter, like in
deny link { }.

Also update the match_realname() since via the extban code it would
use match_esc() which is rather confusing if you have double (or
perhaps even triple) escaping when using this in the conf.
2024-05-20 09:31:29 +02:00
Bram Matthys 899955b47d Crule: forgot match_realname('*xyz*'). Now we should be at 100% :) 2024-05-20 09:11:25 +02:00
Bram Matthys 0e9280e731 Crule: add match_account(), match_country(), match_certfp(). 2024-05-20 09:06:11 +02:00
Bram Matthys 3c3d8a5605 Add user_matches_extended_server_ban() which works similar to
match_user_extended_server_ban except that it works by name/value.

This can then be used by crules or in other mods, like:
user_matches_extended_server_ban(client, "country", "NL");

If the performance impact isn't too bad (of the extra work) then
this prevents duplicate code in the handler for things like
that: account, country, certfp, and whatever we add in the future..
2024-05-20 08:54:53 +02:00
Bram Matthys dbbcba10e3 Let's get rid of this !strlen(arg)
[skip ci]
2024-05-20 08:29:56 +02:00
Bram Matthys 9d166eed26 Some minor tweaks so these can be used in pre-connect-stage.
Otherwise in pre-connect-stage is_identified(), is_webirc()
and is_websocket() will always return false due to the
IsUser() check.

One should always be careful with accessing things in pre-
connect-stage, but in this case the IsLoggedIn() and
moddata_client_get() are safe to use. The former checks
client->user and the latter does not access anything within
client->user at all.
2024-05-20 07:56:07 +02:00
Valerie Liu 14dd3a9038 Crule: add is_identified(), is_websocket() and is_webirc() (#277)
* Update crule.c: add is_identified(), is_websocket() and is_webirc()
* Update RELEASE-NOTES.md
2024-05-20 05:50:07 +00:00
Valerie Liu ca31150291 Update modules.c - Fix small spelling error (#276)
[skip ci]
2024-05-20 05:47:21 +00:00
Bram Matthys f8b435957f Update release notes a bit
[skip ci]
2024-05-19 18:54:03 +02:00
Bram Matthys b07f02fb11 Fix +b ~forward not taking into account +e (ban exemptions).
Reported by rafaelgrether in https://bugs.unrealircd.org/view.php?id=6410
2024-05-19 18:49:33 +02:00
Bram Matthys 229b3a7f1b Fix ~forward checking IsRegNick() instead of IsLoggedIn() 2024-05-19 18:31:38 +02:00
Bram Matthys f89fd3f8f6 Fix crash on Windows when using crules, central spamfilter or central spamreport.
This is the release notes update, the actual fix is in
c3a7ed2c99

[skip ci]
2024-05-15 17:18:12 +02:00
Bram Matthys c3a7ed2c99 These efuncs need to be MODVAR (dllimport) for Windows... 2024-05-15 17:15:32 +02:00
Bram Matthys 35bf78d105 Forgot to mention https://www.unrealircd.org/docs/Dev:Authentication_module
As said, this isn't a proper authentication framework atm, just something
quick for (third) party module coders so they have something that works.
2024-05-13 17:14:08 +02:00
Bram Matthys e12559ad78 Allow modules to provide SASL locally, by hooking into AUTHENTICATE.
Note that this is still a dumb interface and not a real proper
authentication framework.

This adds HOOKTYPE_SASL_AUTHENTICATE and HOOKTYPE_SASL_MECHS and
also provides 3 functions: sasl_succeeded(), sasl_failed() and
a helper function decode_authenticate_plain() for AUTHENTICATE PLAIN.
2024-05-13 13:23:59 +02:00
Bram Matthys 01a441de84 Add crule functions: is_tls(), in_security_group(), match_mask(), match_ip()
* Add more [Crule](https://www.unrealircd.org/docs/Crule) functions:
  * `is_tls()` returns true if the client is using SSL/TLS
  * `in_security_group('known-users')` returns true if the user is in the
    specified [security group](https://www.unrealircd.org/docs/Security-group_block).
  * `match_mask('*@*.example.org')` or `match_mask('*.example.org')`
    returns true if client matches mask.
  * `match_ip('192.168.*')` or with CIDR like `match_ip('192.168.0.0/16')`
    returns true if IP address of client matches.
2024-05-06 10:06:07 +02:00
Bram Matthys e59e8c99f4 Whoops. Accidentially committed a debug line.
[skip ci]
2024-05-06 10:01:14 +02:00
Bram Matthys e9da1a867b Using @if with a variable like @if $VAR == "something" was always false.
Reported by BlackBishop.

This rename free_config_defines() to init_config_defines and calls it from
config_read_start() so caller doesn't have to think about it.
2024-05-06 09:22:53 +02:00
Bram Matthys 45717d44f4 Fix typo in release notes
[skip ci]
2024-05-05 17:37:07 +02:00
Bram Matthys 576af06857 Remove default security group tls-and-known-users. 2024-05-05 17:34:23 +02:00
Bram Matthys f83967c582 Bump URL_MEMORY_BACKED_CHUNK_SIZE from 128 to 8192 as intended.
This to avoid doing too many realloc() calls (at theexpense of
some wasted bytes, but that should be acceptable nowadays).
2024-05-03 14:34:09 +02:00
Bram Matthys 1d3c5a49a9 Get rid of confusing "REHASH -all" as "REHASH" already does the same.
And this is easily mistaken with "REHASH -global" which rehashes all
the IRC servers on the network.

In fact, who knows some year(s) from now we may map "REHASH -all"
to "REHASH -global", but... not yet...
2024-05-03 14:10:27 +02:00
Bram Matthys fb2381b1ad Deal better with lack of an internet connection when booting the first time.
* When booting for the first time (without any cached files) the IRCd
  downloads GeoIP.dat. If that fails, e.g. due to lack of internet connectivity,
  we now show a warning and continue booting instead of it being a hard error.
  Note that we already dealt with this properly after the file has been cached
  (so after first download), see "What if your web server is down" in
  [Remote includes](https://www.unrealircd.org/docs/Remote_includes#What_if_your_web_server_is_down).
2024-05-03 13:04:16 +02:00
Bram Matthys a24e53c096 Move from -D_FORTIFY_SOURCE=2 to -D_FORTIFY_SOURCE=3
and use -O2 when compiling with ASan instead of -O1
(the near-last question in ./Config).
2024-05-02 09:02:42 +02:00
Bram Matthys 5a17e55120 Bump version to 6.1.6-git 2024-05-01 18:25:10 +02:00
Bram Matthys f2aaeb3215 Add sponsorship info to GitHub sidebar 2024-04-26 07:43:05 +02:00
Bram Matthys bed50dcced Fix bullet points on release notes
[skip ci]
2024-04-22 12:43:30 +02:00
Bram Matthys 728069879f ** UnrealIRCd 6.1.5 ** 2024-04-22 12:19:50 +02:00
Bram Matthys 74a9569b4e Fix two typos in example.es.conf that prevent it from working
[skip ci]
2024-04-12 18:21:32 +02:00
Bram Matthys cfff343d35 Make the check for unedited conf happen before password hashing.
Otherwise you get something like:
[info] /home/irc/unrealircd/conf/unrealircd.conf:166: oper::password: Advice: it is not recommended to use plaintext passwords in the config file. You can replace this password with the following password hash:
[info] password "$argon2id$v=19$m=6144,t=2,p=2$fIxnffmGpvcMkXaLcbttfw$b549yTafLVG27K4fPvre2DSacTm/px2hVMdI0KmQqZU";
[error] /home/irc/unrealircd/conf/unrealircd.conf:156: please change the the name and password of the default 'bobsmith' oper block
[error] 1 errors encountered

Which is a tad confusing, since you shouldn't hash that default dummy password at all :D. Now it is only:
[error] /home/syzop/unrealircd/conf/unrealircd.conf:156: please change the the name and password of the default 'bobsmith' oper block
[error] 1 errors encountered

[skip ci]
2024-04-07 08:44:21 +02:00
Bram Matthys a95825687c crule: has_umode->has_user_mode and add has_channel_mode as well.
And update release notes:

* Add more [Crule](https://www.unrealircd.org/docs/Crule) functions:
 * `is_away()` returns true if the client is currently away
 * `has_user_mode('x')` returns true if all the user modes are set on the
   client.
 * `has_channel_mode('x')` can be used for spamfilters with a destination
   channel, such as messages: it returns true if all specified channel modes
   are set on the channel.
2024-04-05 09:25:25 +02:00
Valerie Liu 4bbe55718a add two new crule functions: has_umode and is_away (#275)
This adds two new functions to Crule:
- `has_umode()` which expects a parameter of one or more mode chars, returns true (1) if all of them match, otherwise returns false (0)
- `is_away()` which expects no parameter which simply matches whether the user is set as away as a boolean
2024-04-05 06:55:41 +00:00
Bram Matthys 585b73158a Add extern void vsendto_one, requested by Valware.
[skip ci]
2024-04-05 08:53:22 +02:00
Bram Matthys 2b328374a5 Fix whowasdb module causing WHOWAS entries to vanish (way too soon) 2024-03-29 09:41:48 +01:00
Valerie Liu ede774f5eb Add ./unrealircd coffee (#274)
:>
2024-03-17 11:05:10 +00:00
Rafael Grether 5fd97ebcf8 example.pt.conf: add note about use of pt-br language (#273)
Co-authored-by: Rafael Grether <rafael.grether@abc71.com.br>
2024-03-13 13:37:59 +00:00
Bram Matthys 2a39a1bdff Rename and mention example.pt.conf - (Brazilian) Portuguese example configuration file. 2024-03-09 15:37:10 +01:00
alice aa453647fc Adjust config parser to log a warning when a block comment starts within another block comment. (#267) 2024-03-09 06:10:34 +00:00
Valerie Liu 222b4bacbf Fix spelling mistake on rehash (#271)
[skip ci]
2024-03-09 06:07:31 +00:00
Bram Matthys 6354445db6 Update README & release notes
[skip ci]
2024-03-09 07:01:54 +01:00
Bram Matthys 4cf06ddb71 Update release notes
[skip ci]
2024-02-11 10:55:47 +01:00
Bram Matthys 92504528c1 Update release notes
[skip ci]
2024-02-11 10:49:38 +01:00
Bram Matthys e098be6d28 Some more moving for previous commit aa9fdd352a 2024-02-11 10:34:14 +01:00
Valerie Liu aa9fdd352a Move giving of set::modes-on-connect to after SASL (#270)
This so account-based security groups work correctly with security-group based set xxxxx { modes-on-connect ....; } settings.
[skip ci]
2024-02-11 09:32:20 +00:00
Bram Matthys 1eb9f578ca Update help.tr.conf - by Serkan Sepetçi 2024-01-31 09:55:32 +01:00
k4bek4be 57d5ae0482 Add example.br.conf (Portuguese Brazilian)
UnrealIRCd Portuguese Brazilian translation
2024-01-24 15:39:32 +01:00
k4bek4be b89c527ffc Remove remnants of using PASS for NickServ identify
Get rid of old/unused PASS 2 NickServ hack, SASL exists now.
2024-01-24 15:37:17 +01:00
Valerie Liu 132ffa91b2 Get rid of old/unused PASS 2 NickServ hack, SASL exists now.
`NickServ` isn't anywhere in the codebase and doesn't do what it says it does re PASS 2 NickServ
2024-01-23 20:40:46 +00:00
Rafael Grether f9031e93b9 Created example.br.conf
Created Portuguese Brazilian example conf file
2024-01-19 15:29:16 -03:00
Bram Matthys 7837600308 Spamfilters with utf8 features in it where not always working and
could result in a crash if you ran the 'SPAMFILTER' command as IRCOp.

Apparently not widespread since nobody reported it and I found it
while debugging another issue. Not sure when it was introduced,
I'm pretty sure it was working before. Or maybe there is/was some
second factor involved.

Anyway, fixed now and previous commit also adds extra code for in
case i screw up again with this, so it is not silently ignored.
2024-01-17 09:56:11 +01:00
Bram Matthys 037889d7ac Add safety rollback of spamfilter if it doesn't compile. Should not be needed
but we (I) tend to screw up in other areas :D
[skip ci]
2024-01-17 09:48:47 +01:00
Bram Matthys b8a8863c19 Get rid of [BUG] message due to no-implicit-names patch if using DEBUGMODE.
main.BUG_CLIENTCAPABILITYBIT_UNKNOWN_TOKEN [warn] [BUG] ClientCapabilityBit() check for unknown token: no-implicit-names
2024-01-10 18:03:43 +01:00
Bram Matthys ae0206a92a Add oper::auto-join. This setting overrides set::oper-auto-join.
Suggested by Chris_dc in https://bugs.unrealircd.org/view.php?id=6255
2024-01-10 17:06:35 +01:00
Bram Matthys 9f3f9522cf Make operclass available in security-group & mask/match.
security-group netadmin { operclass { netadmin; netadmin-with-override; } }

Untested.
2024-01-10 14:14:14 +01:00
Bram Matthys 079e7babef Fix "Central blocklist too slow to respond" message when using softban
or require authentication { } block.

And the connecting user would get a message every second, which was
a bit floody ;D.

Repoerted by GHF in https://bugs.unrealircd.org/view.php?id=6375
2023-12-28 13:30:49 +01:00
Bram Matthys 64ea1d09d6 Move 'reserved clients' stuff to runtime, since 'ulimit -n' could be lower.
This fixes a bug where if you run ./Config with 'auto' file descriptors,
and then have an unusually low 'ulimit -n' of like 150, you would end up
with a negative amount of file descriptors available for use.

This fix moves it from compile-time setting of reserved fd's to runtime
setting.

All this is wrong, by the way, but that is for another major overhaul,
at least this bug is fixed now :D
2023-12-28 09:00:09 +01:00
Bram Matthys 88c2083df9 Fix no-implicit-names to set official flag. As all buildbots failed. 2023-12-26 15:41:06 +01:00
Bram Matthys 600185deba Add support for CAP draft/no-implicit-names
https://github.com/unrealircd/unrealircd/pull/265 by Valware
"This is an IRCv3 extension which lets clients opt-out of receiving /names on join.
 This is useful for bots on large channels who do not need to know who is in the channel.
 Specification: https://ircv3.net/specs/extensions/no-implicit-names"

+ module rename from 'no-implicit-names-cap' to 'no-implicit-names'
  (simply because no other modules has that -cap suffix)
+ update to Makefile.windows
2023-12-26 14:46:54 +01:00
Rafael Grether 1f81344691 removed password 'test'
removed password 'test' since the example password has been replaced with the argon2 hash.
2023-12-23 17:37:31 -03:00
Bram Matthys 48d3673a02 Only do slow spamfilter detection for regexes, not for 'simple' */?
Since it is pointless and this saves some CPU :)
2023-12-22 15:43:11 +01:00
Bram Matthys c5ed4ef9bb Don't call spamfilter for TAGMSG. If you are filtering that, look at 'T'.
Calling spamfilter for TAGMSG makes no sense as the text is "" (empty) :D

If you want to filter message tags, have a look at spamfilter type 'T',
which filters individual message-tags (not just the ones in TAGMSG but
also for PRIVMSG and NOTICE).

[skip ci]
2023-12-22 15:38:14 +01:00
Bram Matthys 5918d70943 Bump version to 6.1.5-git 2023-12-22 15:34:10 +01:00
Bram Matthys 70a59b8b1e central-api: add format check for api-key so people don't use a request-key there.
Reported by DeviL.
2023-12-18 09:37:18 +01:00
Bram Matthys 49e84436b4 Fix +I ~operclass requiring an operclass block name of >3 characters.
Reported by BlackBishop in https://bugs.unrealircd.org/view.php?id=6372

Was an old leftover check from old style extban API
2023-12-17 09:53:36 +01:00
Bram Matthys 5b5a5bca03 Wait longer for a REHASH when running with ASan 2023-12-17 09:41:58 +01:00
Bram Matthys 96be13d68d ** UnrealIRCd 6.1.4 ** 2023-12-16 16:33:15 +01:00
Bram Matthys 68c2114977 Make sure we never use this variable again ;)
[skip ci]
2023-12-15 12:34:25 +01:00
Bram Matthys b0e87dcafa Fix crash issue in websocket server (CVE-2023-50784) 2023-12-15 12:34:06 +01:00
Bram Matthys fa84174d22 Fix the fix for frame assembly in webserver. 2023-12-12 18:05:23 +01:00
Bram Matthys be1467d1a1 ** UnrealIRCd 6.1.3 ** 2023-12-09 09:02:12 +01:00
Bram Matthys 7b8c9e8d72 Fix memory leak due to change from yesterday (duh..)
Caused by 4178cb3f81
[skip ci]
2023-12-08 07:44:45 +01:00
Bram Matthys 4178cb3f81 Fix frame reassembly in webserver_handle_request_header()
Previously the same code caused no problem, but then
2fcb5b4669 changed the read buffer
size to 16384.
Since then (6.1.2.x) the webserver_handle_request_header() function
was sometimes cutting 1 byte off the packet due to sizeof(netbuf)-1
which was 16383 bytes. We now no longer use a fixed value and
allocate memory dynamically on the heap.

This fixes the bug that I was seeing but this change still needs
serious extra testing as it may affect websockets and RPC!
2023-12-06 18:19:17 +01:00
Bram Matthys 49614fc891 Thanks to Koragg for reporting previous issue :D
54ad2d1586
[skip ci]
2023-12-05 18:31:56 +01:00
Bram Matthys 54ad2d1586 Fix crash with 'crule', because it was being checked against Services bots 2023-12-05 18:22:25 +01:00
Bram Matthys 3428551e54 ** UnrealIRCd 6.1.3-rc1 ** 2023-12-01 09:03:13 +01:00
Bram Matthys 99fcf9adf6 Add unrealircd_version in CBL request, mostly for the future.
[skip ci]
2023-12-01 08:03:43 +01:00
Bram Matthys 0cbe6ad090 Makefile.windows: add src/api-apicallback.c to fix build
[skip ci]
2023-12-01 08:02:31 +01:00
Bram Matthys 96b18946ca Include oper name on /SPAMREPORT (for central spamreport) 2023-12-01 07:58:01 +01:00
Bram Matthys 9685d1e052 Fix module manager: if 1 upgrade failed, the remaining were not upgraded.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=6352
2023-11-29 09:08:55 +01:00
PeGaSuS 3894f35b04 Update RELEASE-NOTES.md to fix reference to 6.1.2 (#264)
[skip ci]
2023-11-29 07:35:25 +00:00
Bram Matthys c9adae83fc Doxygen updates, mostly for https://www.unrealircd.org/docs/Dev:URL_API
Or actually: https://www.unrealircd.org/api/6/structOutgoingWebRequest.html

[skip ci]
2023-11-27 18:20:57 +01:00
Bram Matthys 15b2578620 Some minor release notes updates
[skip ci]
2023-11-27 18:06:02 +01:00
Bram Matthys 53f0f0cb94 Fix unitialized variable access caused by earlier commit of today
(only if you use a proxy block)
2023-11-27 17:59:37 +01:00
Bram Matthys cd1b79d3f7 Fetch Central Spamfilter rules with the API Key via alternate URL.
* The [Central Spamfilter](https://www.unrealircd.org/docs/Central_Spamfilter),
  which provides spamfilter { } blocks that are centrally managed, is
  now fetched from a different URL if you have an Central API key set.
  This way, we can later provide spamfilter { } blocks that build on
  central blocklist scoring functionality, and also don't have to reveal
  the central spamfilter blocks to 100% of the world.
2023-11-27 14:33:00 +01:00
Bram Matthys 3803759bf2 Release notes: mention central-api/-blocklist/-spamreport.
[skip ci]
2023-11-27 13:51:33 +01:00
Bram Matthys 628eb4b52e Update release notes a bit
[skip ci]
2023-11-27 12:55:41 +01:00
Bram Matthys 5f767a8fe8 Proxy block: rework and add support for X-Forwarded-For, Cloudflare, etc. 2023-11-27 12:10:17 +01:00
Bram Matthys f8bd45541d Disable some recent debugcode even with DEBUGMODE on ;D
(And yeah this will eventually be removed altogether)
2023-11-27 10:55:56 +01:00
Bram Matthys 026d5522a8 Remove WSU() items forwarded & secure, since these are in webserver nowadays. 2023-11-27 10:07:34 +01:00
Bram Matthys 02ac1fc0b3 Add an option to check websocket Origin header via
listen {
	websocket {
		allow-origin { *.example.net; }
	}
}

This allows you to limit websockets to a particular domain, IF the
user is using a normal browser.

Note that any non-browser (eg a websocket command line program) could
just spoof the Origin header, so for that case it doesn't really add
any security or real restriction.
2023-11-26 20:08:17 +01:00
Bram Matthys 98c264aabf Fix some more warnings, rather minor.
[skip ci]
2023-11-26 18:48:09 +01:00
Bram Matthys 0a7f1adc8b Add value check for blacklist config, well, fix it i mean.
And fix some compiler warning (remove a useless check).
[skip ci]
2023-11-26 16:36:11 +01:00
Bram Matthys 94bf58add9 Fix crash reporter to use SNI.
As for why BIO_set_conn_hostname() does not set and use it... good Q.
2023-11-26 15:52:47 +01:00
Bram Matthys 07cc8eaeaf central-*.c: remove old module manager stuff and bump version.
[skip ci]
2023-11-25 17:29:06 +01:00
Bram Matthys f1a5f5ab97 Remove accidental 'else' that caused modulemgr to freeze / make install to hang.
... when using url_unreal instead of url_curl.
2023-11-25 12:30:44 +01:00
Bram Matthys 4da58dde41 Update central spamreport, https://www.unrealircd.org/docs/Central_spamreport
set::central-blocklist::spamreport and ::spamreport-enabled are now GONE.
We now require a normal spamreport block, just like for other spamreport
functionality. So, if you want to enable this feature, use:
spamreport unrealircd { type central-spamreport; }

See https://www.unrealircd.org/docs/Central_spamreport for all info.

You can use CBL with central spamreport or central spamreport without CBL.
All explained at that URL.
2023-11-25 11:50:25 +01:00
Bram Matthys d08160baca Add option set::central-blocklist::blocklist-enabled yes/no (default yes).
This is mainly for the (less usual) case when someone wants to
use SPAMREPORT but does NOT want to use CBL:

set {
	central-blocklist {
		blocklist-enabled no;
		spamreport-enabled yes;
	}
}

Also documented at https://www.unrealircd.org/docs/Central_spamreport
under 'Configuration'
2023-11-25 10:26:56 +01:00
Bram Matthys bdfc3c97dd Add RegisterApiCallbackResolverHost() and make blacklist module non-PERM.
Hopefully this works OK... still need to test w/REHASH to see.
2023-11-25 09:39:50 +01:00
Bram Matthys 55d1398fca Move dns.h include to unrealircd.h and remove it elsewhere.
Because I need c-ares prototypes in modules.h, for next commit.
[skip ci]
2023-11-25 09:05:55 +01:00
Bram Matthys 6ce1958e1c Add URL API and use it at one place from central-blocklist. Docs at:
https://www.unrealircd.org/docs/Dev:URL_API
2023-11-25 08:31:12 +01:00
Bram Matthys 7d024f8086 URL API: add request->connect_timeout & request->transfer_timeout
... in case you want to do fine-tuning.

Defaults to DOWNLOAD_CONNECT_TIMEOUT (15 seconds) and
DOWNLOAD_TRANSFER_TIMEOUT (20 seconds).

For example, the module manager uses a shorter timeout of 7 and 20.
(that was already the case, but now it uses the generic api so
 it needed an option to set it to those values)
2023-11-24 14:38:20 +01:00
Bram Matthys 9d3af7f22a Fix Windows compile problem
[skip ci]
2023-11-24 14:26:26 +01:00
Bram Matthys 44203caea3 Fix modulemanager issue due to changes from an hour ago.
"./unrealircd module upgrade" is called by "make install" and now that
we use generic URL framework, the src/url_curl.c did not take into
account that at that stage ~/unrealircd/conf/tls/curl-ca-bundle.crt
may not exist yet, so fallback to <source>/doc/conf/tls/curl-ca-bundle.crt.
The src/url_unreal.c already did that. As did the old modulemanager
code that was removed an hour ago.
2023-11-24 14:12:53 +01:00
Bram Matthys 36323f4294 Replace modulemanager HTTPS code with the generic URL code.
We now have a synchronous_http_request() which can be used for that
(NOTE: that function is NOT for use in unrealircd modules)
2023-11-24 13:22:55 +01:00
Bram Matthys 2ae33225d0 In url_curl.c we properly did remove(tmpfile) but in url_unreal.c we did not.
Also add a flag to say not to remove the tmpfile -- not working yet.
[skip ci]
2023-11-24 13:17:21 +01:00
Bram Matthys 1282d2f2be URL API: Response callback is now two structs so we can easily extend.
callback(OutgoingWebRequest *request, OutgoingWebResponse *response)
2023-11-24 12:31:49 +01:00
Bram Matthys eed9d22e3b URL API: work towards callback w/struct -- actually this is an interim step 2023-11-24 12:04:28 +01:00
Bram Matthys 3548b7e2af New URL API (not really a unrealircd module api tho) - work in progress.
No longer url_start_async(a,b,c,d,e,f,g,...) but usings structs so
simply url_start_async(tehstruct);
makes it easy to add fields later without forcing all modules to
change the prototype.

Work in progress....
2023-11-24 11:27:39 +01:00
Bram Matthys c9abf0709a Provide a good error when trying to load third/centralblocklist and the like.
Since people should use the core modules from now on.

We now have a function to provide such migrations / errors / suggestions.
2023-11-24 09:42:32 +01:00
Bram Matthys 8d34987ad1 Bump UNREAL_VERSION_TIME
[skip ci]
2023-11-24 09:26:07 +01:00
Bram Matthys be586531bc Make get_central_api_key() an efunction rather than doing things by hooks.
An efunction with a default that returns NULL, so you don't need to
load the module if you don't want the functionality.
2023-11-24 09:24:10 +01:00
Bram Matthys d73c8b30d2 Fix compile problem with central-blocklist on FreeBSD. 2023-11-24 09:13:13 +01:00
Bram Matthys 6aae3e7a5d Update modules and Makefiles so central-api & central-blocklist compile. 2023-11-24 07:31:22 +01:00
Bram Matthys ebd39f4144 First import these as-is from third/ to track history properly (not compilable)
[skip ci]
2023-11-24 07:26:54 +01:00
Bram Matthys fe8e8e1274 Via JSON-RPC one could place a gzline on ident@host, which is invalid.
The effect it had was actually *@host, so ident@* became *@* -grin-.

Was caused by add=0 at the server_ban_parse_mask() causing a check
not to happen. Fixed now.

Reported by Jellis in https://bugs.unrealircd.org/view.php?id=6358
2023-11-24 07:14:23 +01:00
Bram Matthys d85ed7a51f For set::hide-ban-reason add a new option auto and make it the default.
This will hide the *LINE reason to other users if the *LINE contains the
IP of the user. This to protect the privacy of the user for cases such
as a KLINE due to a blacklist with a DroneBL URL.
Other possible settings are `no` (never hide, the previous default) and
`yes` to always hide the *LINE reason. In all cases the user affected by
the server ban can still see the reason and IRCOps too.

https://bugs.unrealircd.org/view.php?id=6362
2023-11-22 14:48:14 +01:00
Bram Matthys 83dd4bfbf5 Update release notes for 6.1.3-git
[skip ci]
2023-11-22 08:54:13 +01:00
Bram Matthys 36d12d2d82 Bump version to 6.1.3-git 2023-11-22 08:38:27 +01:00
Valerie Liu 7b9aacd609 Fix accidental truncation in SREPLY (#257) 2023-11-20 15:30:08 +00:00
Valerie Liu 8c0243182c Fix server notice about setting -Z, it was sent from the SID instead of server name (#263) 2023-11-20 15:28:23 +00:00
k4be fb6711c671 Improve MONITOR/WATCH extensibility.
The `watch-check` function now has a new argument which can be used to pass data to watch_notify callbacks.
New `watch_add` and `watch_del` hooks are called whenever new entries are created or removed.
New `monitor_notification` hook is called whenever a RPL_MONONLINE or RPL_MONOFFLINE is being sent, so a module can add its own notification besides it.
2023-11-19 14:01:16 +01:00
Bram Matthys 5b6617406e Actually completely fix #6365, replaces previous temporary fix.
Nevermind, the solution to that problem was easy, can just
compare with the 'ircd' binary and in that way, leverage the
Makefile system decisions :D
https://bugs.unrealircd.org/view.php?id=6365
2023-11-13 09:49:56 +01:00
Bram Matthys 8e450bb7fc Fix not recompiling third party modules when running git version 'git pull'
This is a quick fix for https://bugs.unrealircd.org/view.php?id=6365
The quick fix which causes 3rd party modules to be compiled always in
'make' and again in 'make install' (the latter is unintended).
Can look for something better later, I want to work on other stuff now ;D
2023-11-13 09:41:25 +01:00
Bram Matthys 2627d09044 Get rid of compiler check (core vs modules) and clean the modversion check too 2023-11-12 20:05:47 +01:00
Bram Matthys e84e2b30d2 Forward SPAMREPORT command to the server that the target user is on.
That is, if a nick is specified. For an IP address obviously we won't.

This is needed later for when unrealircd api SPAMREPORT becomes
available, since remote servers don't have all the info.

Side-effect is that, if you only configured one server to do
spamreporting, that won't work anymore. But that is an unusual
case anyway, and now unsupported :D.
2023-11-12 17:29:35 +01:00
Bram Matthys d2ccba80c5 Moddata fixes: LoadPersistent*()/SavePersistent*() and removing mdata.
The LoadPersistent*()/SavePersistent*() functions caused moddata to be
tagged with ->unloaded=1. Though it seems it caused no real issues this
is not good... we now properly tag them as 0 and the like. Also did a
code cleanup / overhaul on that system as well.

For other ModData we now handle the case where a module is loaded with
with a newer version and that newer version is no longer having certain
moddata, eg the name changed or it no longer needs it.
KNOWN ISSUE:
Unfortunately we cannot call the free function for the old moddata that
is no longer being handled by the newer version of the module, since the
module is already unloaded. So this will result in a memory leak, but
not in a crash.

KNOWN ISSUE:
Similarly, for SavePersistentPointer() there is a free function, again
this is called just fine if the module is permanently unloaded but NOT
if the module is reloaded with the same name and no longer is interested
in the persistent pointer object. Again, here too, that would result
in a memory leak but not in a crash.

Fortunately the "known issues" are rare. Fixing these is impossible
with the current module API because modules are unloaded after MOD_TEST
and before MOD_INIT, and only after MOD_INIT we know which moddata
is handled by the new version of the module. To change that we would
need to keep the old module around until after MOD_INIT of the new
module (so we can call free functions in the old module), but that
means delaying the MOD_UNLOAD for the old modules until after MOD_INIT
of the new modules, which changes the sequence too much that i don't
dare to do that. For example, it would mean a database save routine
in the old module would only be called after MOD_INIT finished in the
new module, which may be unexpected since right now MOD_UNLOAD is
called before MOD_INIT and maybe the db loading is done in MOD_INIT,
which would need to be moved to MOD_LOAD. That's just one example,
there may be others. I think such a change can only be done on a major
UnrealIRCd version change, so we will have to live this for now.
As said, fortunately it is a corner case.
2023-11-10 10:08:50 +01:00
Bram Matthys ffbf34fb15 Fix ModData bug when unloading a module for good: iterate unknown_list.
When a module was unloaded (for good) that used MODDATATYPE_CLIENT
or MODDATATYPE_LOCAL_CLIENT we walked the client_list/lclient_list
and freed the moddata entry for all these clients, but we did not
walk the unknown_list, so connections in process.
That's bad, because sometimes such moddata is allocated in
HOOKTYPE_HANDSHAKE or in other routines pre-connect and since
we skipped freeing them while the module was still loaded, it
means we leak memory since it is also not freed on user exit.

Since unloading modules permanently is not a common procedure,
combined with the timing of it happening during a handshake, it
took a while before this issue was found (and then easily fixed).

There's also another moddata issue, but that is for next commit.

[skip ci]
2023-11-10 08:09:36 +01:00
Bram Matthys ec4e1d95d8 Don't ask to generate TLS certificate if one already exists.
This is how it always was, but recent commit
f756b7bea6 caused prompting.
2023-11-04 09:38:00 +01:00
Bram Matthys 0e7ef37a5e Detect getsockopt TCP_INFO on FreeBSD and get rid of unnecessary other check
On FreeBSD one of the fields is slightly different, that's all it seems.

This improves 099e99504f
2023-11-01 17:00:46 +01:00
Bram Matthys 7468018a7d Make $client.details follow the ident rules in the handshake too.
Post-handshake this was working fine, but before register_user() it was
always using nick!user@host, never using the ident and never ~ prefixing.

Now it just uses the usual rules that we have, which are: prefixing
with a ~ if ident lookups are enabled and failed, and without a ~
prefix if ident lookup succeeded or set::options::identd-check is off.

Reported by k4be.
2023-10-29 07:05:12 +01:00
Bram Matthys 75a55de785 Make deny channel { } support escaped sequences like channel "#xyz\*";
This so you can match a literal * or ? via \* and \?

And do the same for allow channel { }.

This can break current configs if you have a deny channel for a channel
with a slash in it, since a \ which already sortof needed to be \\ in
the config file, now needs to be \\\\ (doesn't that look great?).
Fortunately slashes are not really common in channel names, let alone
deny channel { } configuration.
2023-10-25 19:49:34 +02:00
Bram Matthys f2f11a4637 Reserve more file descriptors. Eg when 10.000 are available, reserve 250.
Since 10k+ fd's available is the common situation, this means we then have
250 fd's reserved for non-clients, such as HTTPS callbacks and other things.

Previously:
<1024: reserve 4 fd's
1024+: reserve 8 fd's

Now:
<1024: reserve 8 fd's
1024-2047: reserve 16 fd's
2048-10000: reserve 32 fd's
10000+: reserve 250 fd's
2023-10-25 12:08:52 +02:00
Bram Matthys 7649520f63 Fix HOOKTYPE_IS_HANDSHAKE_FINISHED not called at two places where
register_user() is called.
2023-10-23 19:02:03 +02:00
Bram Matthys 099e99504f Make autoconf check for getsockopt TCP_INFO and define HAVE_TCP_INFO
At the moment only for third/centralblocklist

Also bump #define UNREAL_VERSION_TIME    202343
2023-10-23 10:35:15 +02:00
Bram Matthys 5b7e375213 Limit operclass name to a-zA-Z0-9_- and use the same validation in ~operclass extban.
This fixes the issue where +e/+I ~operclass:name gets cut off if the
name contains any digits.

Reported by BlackBishop in https://bugs.unrealircd.org/view.php?id=6353

Also, we previously allowed any characters in the operclass, which is not
a great idea.
2023-10-23 09:51:01 +02:00
Bram Matthys 2e9811ba47 Send central-blocklist hits globally 2023-10-21 16:02:06 +02:00
Bram Matthys a01e77c664 Fix a compile problem on 32-bit archs.
(well not really fix, but move it behind a DEBUGMODE ifdef)
2023-10-13 08:15:36 +02:00
Bram Matthys ac5ba1cfba Fix some markup in release notes
[skip ci]
2023-10-13 07:48:33 +02:00
Bram Matthys 1347ffad1d ** UnrealIRCd 6.1.2.3 ** 2023-10-13 07:45:13 +02:00
Bram Matthys b085da458a Fix ::exclude-security-group not working.
Reported by BlackBishop in https://bugs.unrealircd.org/view.php?id=6350
2023-10-12 18:46:18 +02:00
Val Lorentz a906131689 url_unreal: Fix build (#262)
Broken by 9a6a06b63f
2023-10-12 05:12:56 +00:00
Bram Matthys a04295c588 Add set::dns and increase DNS timeout for DNSBL (3000ms first, then on retry 6000ms).
This is quite a bit higher than client DNS lookups (1500ms first, on retry 3000ms)
and is because some DNSBL are reported to be quite a bit slower than ordinary DNS.
(Maybe just some, but.. the higher timeout does not hurt anyone anyway)

Note that all this has no effect on client handshake times, as DNSBL checks are
done in the background. Only side-effect is that if we do get a "late hit" then
you may now see a kill a few seconds after the client is online (which was actually
already possible before too for quick clients, but.. yeah...)

These settings can be overriden via set::dns, these are the defaults:

set {
        dns {
                client {
                        timeout 1500;
                        retry 2;
                }
                dnsbl {
                        timeout 3000;
                        retry 2;
                }
        }
}

When you REHASH we will check if the values are different than the current
c-ares settings and if so, reinitialize the resolver. Reinitializing the
resolver will destroy outstanding DNS requests, eg DNS lookups for clients
currently connecting, but so be it. Not a super-huge issue since changing
this is rare.

Requested by BlackBishop in https://bugs.unrealircd.org/view.php?id=6306
2023-10-11 19:04:06 +02:00
Bram Matthys 9a6a06b63f Split resolver channel into two: client & dnsbl 2023-10-11 18:08:26 +02:00
Bram Matthys b2030b1a6f Fix UTF8 not working in spamfilter { } blocks, only after the first REHASH.
With error messages about it possibly but also possibly not (silently failing).

This is actually quite bad because when the ircd is running, you could
happily add spamfilters with UTF8 like stuff, REHASH fine, but if you
then restart the IRCd would fail to boot due to a config error.

Reported by BlackBishop.
2023-10-08 18:33:27 +02:00
Bram Matthys c135b71fa3 Fix possible REHASH crash in some circumstances (also in 6.1.*)
If you make a parser mistake in the config file, like a missing semicolon,
then under some circumstances the server may crash. Not always, it seems,
which explains why this bug is not reported that much.
2023-10-07 18:39:49 +02:00
Bram Matthys 552d72cbaa ** UnrealIRCd 6.1.2.2 ** 2023-10-06 09:37:51 +02:00
Bram Matthys 59c11d8b23 Add support for "REHASH -centralspamfilter" (alias "REHASH -cs") to force
an immediate fetch+load of central spamfilter rules, so you don't have
to wait an hour (or whatever is configured).
2023-10-06 08:49:43 +02:00
Bram Matthys 25d1bdfbf5 Make central spamfilters show in STATS spamfilter as "-centralspamfilter-"
rather than "-config-". Suggested by Lord255.
[skip ci]
2023-10-06 08:29:19 +02:00
Bram Matthys 1741da6d2a Fix another instance of "STATS spamfilter" accidentally containing spaces
When using multi-targets like spamfilter { action { report; block; } }
it would output in stats like "report, block". Now changed to "report,block"
2023-10-06 07:44:24 +02:00
Bram Matthys 45002eeb6f Fix STATS output for config-based spamfilters with reasons with spaces.
For config-based spamfilters, the reason was not escaped, meaning that
spaces and underscores did not work as expected.
For example, in "STATS spamfilter" the spaces were displayed as-is
which means that the numeric output was not really parsable.

Apparently this bug exists since UnrealIRCd 5 already...
2023-10-06 07:36:26 +02:00
Bram Matthys 25d5a2ac64 Fix possible crash on SETNAME with spamfilter 'u'.
[skip ci]
2023-10-06 07:19:04 +02:00
Bram Matthys 3d9233baab Fix tkldb storing (and restoring) central spamfilters.
These should not be in tkldb, just like config-based spamfilters are not.
2023-10-06 07:08:22 +02:00
Bram Matthys 43240e4557 Don't allow central spamfilter without 'reason' 2023-10-06 07:00:44 +02:00
Bram Matthys 8398c8cd8d Don't crash when reading spamfilters from tkldb that don't compile (anymore).
For example, because of a different version of PCRE2, or because of the switch
from non-UTF8 to UTF8 (or vice versa) which disallows certain byte sequences.
2023-10-05 17:37:06 +02:00
alice 1d34753f18 Fix minor compiler warning on conflicting types for Auth_Hash (PR #261)
auth.c:569:13: error: conflicting types for 'Auth_Hash' due to enum/integer mismatch; have 'const char *(AuthenticationType,  const char *)' [-Werror=enum-int-mismatch]
  569 | const char *Auth_Hash(AuthenticationType type, const char *text)
In file included from include/unrealircd.h:32, from auth.c:21:
include/h.h:547:26: note: previous declaration of 'Auth_Hash' with type 'const char *(int,  const char *)'
  547 | extern const char       *Auth_Hash(int type, const char *para);
2023-10-05 05:43:17 +00:00
Bram Matthys 931eea475c ** UnrealIRCd 6.1.2.1 ** 2023-10-04 10:22:43 +02:00
Bram Matthys 088d2595d5 Fix crash on REHASH with crule (such as spamfilter::rule).
This happens when !, || or && are used, though the exact requirements
for the crash may also require a function with arguments.

Reported by BlackBishop.
2023-10-04 10:14:09 +02:00
Bram Matthys a780968dee ** UnrealIRCd 6.1.2 ** 2023-10-04 07:11:36 +02:00
Juest Zungo 1705baeb2f Add Windows .gitignore files (#260) 2023-10-04 05:11:12 +00:00
PeGaSuS b5687eb047 Update help.conf (#259)
Added missing action type "~flood"
2023-10-04 05:10:17 +00:00
Bram Matthys 87295deb67 Remove client->local->next_nick_allowed which is unused nowadays.
It was moved to the generic anti-flood framework which is
FloodCounter flood[MAXFLOODOPTIONS];
2023-10-02 14:26:01 +02:00
Bram Matthys f2216fc6c1 Call fd_unnotify() on SetDeadSocket(), since we don't care anymore. 2023-10-02 14:25:24 +02:00
Bram Matthys 9955e32781 Add small caveat for limited score bumping (running mixed net)
[skip ci]
2023-09-23 12:02:31 +02:00
Bram Matthys 31fa1340c7 Almost forgot version bump in setup.h
[skip ci]
2023-09-23 11:46:53 +02:00
Bram Matthys 64a8608a0f ** UnrealIRCd 6.1.2-rc2 ** 2023-09-23 11:40:31 +02:00
Bram Matthys 52d36943b5 Update release notes
[skip ci]
2023-09-23 10:52:29 +02:00
Bram Matthys 311f7397f5 Fix NULL pointer crash due to reputation code changes from yesterday 2023-09-18 09:19:53 +02:00
PeGaSuS 53c3ae6403 Update account extban in help.conf (#254)
Specify the use of `~account:*` and `~account:0` on the usage of ~account extban on the helpop output.
2023-09-17 10:14:32 +00:00
Bram Matthys b234e13358 Don't bump reputation scores anymore for users who are in no channels or
when they are only in channel(s) with very low member counts.

This because some typical bot/drone behavior is not to join any channels.
This kinda forces them to expose themselves a bit more (and if they don't,
they don't get more reputation).

The downside is for the unusual case where a legit chatter would be on
the network but not joining any channels, but that is rare. In any case,
this setting can be adjusted if that is typical or more normal behavior
on your network :D.

* The [reputation score](https://www.unrealircd.org/docs/Reputation_score)
  of connected users (actually IP's) is increased every 5 minutes. We still
  do this, but only for users who are at least in one channel that has 3
  or more members. This setting is tweakable via
  [set::reputation::score-bump-timer-minimum-channel-members](https://www.unrealircd.org/docs/Set_block#set::reputation).
  Setting this to 0 means to bump scores also for people who are in no
  channels at all, which was the behavior in previous UnrealIRCd versions.
2023-09-17 11:47:34 +02:00
Bram Matthys 4e070b8034 Use client:set:reputation oper privilege for latest change
[skip ci]
2023-09-17 09:58:21 +02:00
Bram Matthys f3538f07d9 Support setting of reputation via /REPUTATION <nick|ip> <value>
Useful for testing and.. well.. perhaps other things.
2023-09-17 09:55:59 +02:00
Bram Matthys 97630b4717 Allow setting reputation in https://www.unrealircd.org/docs/Actions via
action { set REPUTATION--; } and similar.

Also enhancement to reputation S2S traffic, to support decreasing:
  *
+ * Since UnrealIRCd 6.0.2+ there is now also asterisk-score-asterisk:
+ * :server REPUTATION 1.2.3.4 *2*
+ * The leading asterisk means no reply will be sent back, ever, and the
+ * trailing asterisk will mean it is a "FORCED SET", which means that
+ * servers should set the reputation to that value, even if it is lower.
+ * This way reputation can be reduced and the reducation can be synced
+ * across servers, which was not possible before 6.0.2.
+ *

So if you are actually decreasing reputation, you need all servers on
6.0.2 or higher for it to work properly, otherwise the other servers
don't decrease it, and next connect the highest wins again, etc.
2023-09-17 09:39:55 +02:00
Bram Matthys d862196d04 Update example.conf with Windows commands for mkpasswd/gencloak/spkifp
These work since UnrealIRCd 6.0.2.
2023-09-13 19:50:24 +02:00
Bram Matthys 55eaa7bbea Add set::blacklist::recheck-time 'never' to disable rechecking and document
this and blacklist::recheck.
2023-09-09 11:20:32 +02:00
Bram Matthys ddf6dea22d Add blacklist::recheck to skip a dnsbl from rechecks.
Suggested by BlackBishop in https://bugs.unrealircd.org/view.php?id=6307
2023-09-09 11:09:01 +02:00
Bram Matthys 35e5d99e32 './unrealircd module upgrade' only showed output for one module upgrade,
even when multiple modules were upgraded.

Actually not sure about the cause and how this is possible, but running
'make install' only once at the end is the solution, which is something
that should be done that way anyway.

Reported by westor in https://bugs.unrealircd.org/view.php?id=5919
2023-09-09 10:40:29 +02:00
Bram Matthys 942b8a604d Config file: when not using quotes, don't silently drop slashes in names/values.
In the config file, when not using quotes, a slash at the beginning of a
variable name or value was silently discarded (eg `file /tmp/xyz;` resulted
in a file `tmp/xyz`).

Reported by BlackBishop in https://bugs.unrealircd.org/view.php?id=6325
2023-09-09 09:41:47 +02:00
Bram Matthys 7ab80543e5 Forgot to mention set::blacklist::recheck-time in release notes.
[skip ci]
2023-09-08 18:22:53 +02:00
Bram Matthys 660a501617 ** UnrealIRCd 6.1.2-rc1 ** 2023-09-08 17:46:18 +02:00
Bram Matthys d909e86aef Update curl-ca-bundle to Tue Aug 22 03:12:04 2023 GMT
[skip ci]
2023-09-08 17:37:28 +02:00
Bram Matthys bcc07b1591 Integrate third/blacklistrecheck functionality (set::blacklist::recheck-time)
https://www.unrealircd.org/docs/Set_block#set::blacklist::recheck-time
2023-09-06 16:31:55 +02:00
Bram Matthys 89b2d91084 In HOOKTYPE_PRE_CHANMSG the mtags is now a MessageTag **,
so a pointer-to-a-pointer rather than a pointer, to allow stripping
message tags by modules. Needed for a module from Valware.
2023-08-19 17:26:14 +02:00
Bram Matthys d63a8cf2d5 Show who actually tried to use a banned nick.
Reported by Amiga600 in https://bugs.unrealircd.org/view.php?id=6300
Inspired by patch from Valware in https://github.com/unrealircd/unrealircd/pull/255
2023-08-19 12:17:00 +02:00
netjester f756b7bea6 Remember answer to "generate certificate" question in ./Config (#256) 2023-08-19 10:06:09 +00:00
Bram Matthys 2665cec73b Fix crash when ~security-group:securitygroup is used in conf (so old style
in eg ban user::mask).
Reported by BlackBishop in https://bugs.unrealircd.org/view.php?id=6319
2023-07-26 12:45:49 +02:00
Bram Matthys 50753b4678 Make central spamfilters require an 'id', and ignore for non-central.
At least for now...
2023-07-21 12:26:02 +02:00
Bram Matthys 89e5309326 Add set::central-spamfilter::feed and update the page at
https://www.unrealircd.org/docs/Central_Spamfilter
2023-07-21 12:03:43 +02:00
Bram Matthys cd19198e3b Spamfilter fixes: prevent actions that are currently config-only from
being added by other servers and being able to spread to areas of
which the code is currently not ready for ('set', 'report', 'stop').
2023-07-20 14:50:40 +02:00
Bram Matthys e54382fe95 Use (*errors)++ consistently.
This fixes one bug from yesterday in securitygroup.c:258,
fixes 2 (harmless) warnings and other than that just style.
2023-07-17 09:03:03 +02:00
Bram Matthys 62503aacae Update release notes a bit
[skip ci]
2023-07-16 19:56:19 +02:00
Bram Matthys 937236126f Add new spamfilter type 'raw' which matches against a raw command/protocol line.
SPAMFILTER add -simple R block - Hi_there! LIST*

Though it is more useful in complex spamfilter rules in the conf, presumably.
2023-07-16 19:47:43 +02:00
Bram Matthys f062d3f178 Fix memory leak if using sni blocks 2023-07-16 18:52:32 +02:00
Bram Matthys 8135a6fdfe Possibly fix Windows build. 2023-07-16 18:29:56 +02:00
Bram Matthys 4a25ce5cf2 Remove antimixedutf8 changes from release notes
[skip ci]
2023-07-16 17:47:08 +02:00
Bram Matthys 3e2f668f10 Revert antimixedutf8 changes from earlier, back to 6.1.1(.1) version again. 2023-07-16 17:27:47 +02:00
Bram Matthys 519af59705 Update release notes
[skip ci]
2023-07-16 12:32:02 +02:00
Bram Matthys 11bd657e8a Fix set unknown-users { } not working
Repoerted by BlackBishop in https://bugs.unrealircd.org/view.php?id=6292
2023-07-16 12:22:16 +02:00
Bram Matthys b272b6700a Add security-group::rule support, see https://www.unrealircd.org/docs/Crule 2023-07-16 12:09:01 +02:00
Bram Matthys 59c6c99ba3 spamfilter::rule: add destination('#xyz') support (supports wildcards) 2023-07-16 11:29:53 +02:00
Bram Matthys 13bb09aa4b crule: add inchannel('#xyz'), and inchannel('@#needopshere') works too 2023-07-16 11:22:02 +02:00
Bram Matthys b1d0a05638 Make 'channel' work in security groups. 2023-07-16 11:06:42 +02:00
Bram Matthys 9b11366a8e crule: code cleanups / conform a bit more to unrealircd style 2023-07-16 10:52:03 +02:00
Bram Matthys b325f88795 crule/spamfilter: pass text in crule context, not used yet, but could
be useful in some future crule function.
[skip ci]
2023-07-16 10:46:39 +02:00
Bram Matthys 2beefcd2ee crule: remove CR_DEBUG, bump some limits and remove collapse() call 2023-07-16 10:40:11 +02:00
Bram Matthys 08cb0fc05d Move crule to a module, so we can hot-patch if needed in the future.
This is a mandatory module to load, and included in modules.default.conf.

This also meant that the crule_test() etc efunctions are available
before running config test routines, so we now have a flag for
early efuncs. I guess we could consider doing that for all efuncs
though, so not sure if this flag is really needed.
2023-07-16 10:33:25 +02:00
Bram Matthys 36fc839022 Support single quotes in spamfilter::rule, for like xyz('bla/bla') 2023-07-16 09:31:02 +02:00
Bram Matthys d5e8e8f324 Add some more spamfilter::rule functions 2023-07-16 09:20:54 +02:00
Bram Matthys c6ae5b05c1 Update release notes a bit
[skip ci]
2023-07-16 09:07:57 +02:00
Bram Matthys cdc14569a9 Warn on plaintext oper::password in conf and even go as far as
generating the password hashes and suggesting using those.

This also starts the initial work on set::best-practices
https://www.unrealircd.org/docs/Set_block#set::best-practices
with hashed-passwords as the first setting there.
2023-07-15 19:02:31 +02:00
Bram Matthys 78c3766038 Showing this "Configuration test passed OK" makes no sense after
"Configuration loaded", i think it was meant for ./unrealircd configtest
only.

[skip ci]
2023-07-15 18:45:57 +02:00
Bram Matthys 202665ec87 For watch away notification, a user who is away could change their nick,
and that nick could be on someones watch list. In such a case we
should not only send RPL_LOGON but also a RPL_GONEAWAY.

Reported by Khaled and fix suggested by Khaled & Sadie.
2023-07-15 16:47:55 +02:00
Bram Matthys 934b0b1ea1 WATCH away notification: fix RPL_GONEAWAY and RPL_REAWAY not being sent
due to wrong event name being used. Noticed this bug in U6 (and
this bug does not exist in U5) after being pointed at watch away
notification again.
2023-07-15 16:41:21 +02:00
Bram Matthys 039dc566ec Lower argon2 parameters so the algorithm runs at a more reasonable speed. 2023-07-15 09:05:59 +02:00
Bram Matthys b3995f48ff Mention password hashing in the example.conf itself.
Suggested by rafaelgrether in https://bugs.unrealircd.org/view.php?id=6303
2023-07-15 09:04:07 +02:00
Bram Matthys 5688825ebd Default to argon2 library shipped with UnrealIRCd, the reason
for this is that system argon2 is often much slower (2x slower
on Ubuntu and Debian, for instance), which is not good.
You can still use the system library with the configure option:
--with-system-argon2
2023-07-15 08:49:11 +02:00
Bram Matthys ab71636390 Fix downloads_in_progress() always returning 0 if using cURL 2023-07-14 17:01:59 +02:00
Bram Matthys a153a2cce3 Change definition of parse_ban_action_config(), was too easy to leak memory.
Often you have default values for the config, and then a subsequent config
parsing run would overwrite the return value (= memory leak), merging/appending
would make no sense either, so it would force a free in all code before
calling us, well... let's just deal with it ourselves instead then ;)
2023-07-14 08:08:47 +02:00
Bram Matthys c2419e0f40 Implement spamreport::rate-limit 2023-07-11 20:19:00 +02:00
Bram Matthys e9716d3ce6 Fix compile problem on Windows
[skip ci]
2023-07-11 16:26:35 +02:00
Bram Matthys 9625a1221b Make Cmode_t an unsigned long long to have more chanmodes on 32 bit archs.
Reported by BlackBishop in https://bugs.unrealircd.org/view.php?id=6301
[skip ci]
2023-07-11 15:27:13 +02:00
Bram Matthys 767f5647cd Add some explicit cast to fix warning on 32 bit archs.
Yeah we could use %z here nowadays but we don't have strict C99 requirements(?),
well we have some :D

[skip ci]
2023-07-11 15:20:16 +02:00
Bram Matthys 22f8eb8729 Central spamfilter: fix memory leak (freeing ce/cfptr)
[skip ci]
2023-07-11 15:14:58 +02:00
Bram Matthys 2440714d13 Fix tkldb crash, had to do with stealing references. 2023-07-11 14:46:19 +02:00
Bram Matthys 4c3d2a6d6d Fix write bug in tkldb and add spamfilter::action stop.
The spamfilter::action stop ill prevent processing other spamfilters.
This would normally be a bit unusual, and potentially dangerous when you
do exclude things this way, but can be useful in some circumstances.

Stopping only affects the same type of spamfilters (general or central
spamfilters), so they don't interfere.

The tkldb write DB bug had to do with that it was processing
central spamfilters, which should be skipped just like config
based spamfilters were already skipped.
2023-07-11 14:32:11 +02:00
Bram Matthys 32701e6f99 Central spamfilter: don't stop processing on 1 bad spamfilter block. 2023-07-11 13:34:28 +02:00
Bram Matthys 018efd8366 Fix crash in spamfilter { } block handling due to unitialized variable 2023-07-11 12:15:01 +02:00
Bram Matthys f333aa0c09 New option set::spamfilter::show-message-content-on-hit:
you can now configure to hide the message content in spamfilter hit
messages. Generally it is very useful to see if a spamfilter hit is
correct or not, so the default is 'always', but it also has privacy
implications so there is now this option to disable it.

Suggested by alice, quite a while ago.

https://www.unrealircd.org/docs/Set_block#set::spamfilter::show-message-content-on-hit

Also as mentioned there:
UnrealIRCd has the following spying countermeasure (for many years) to help
that spamfilters are not abused for spying. When a spamfilter hit happens
that has an action like gline or blocking, it is visible to the user that an
action was taken. There is also the action 'warn', which means: take no
action and only warn IRCOps, that one would be easy to use as a spy tool, so
when this happens and message content was revealed, numeric 659
(RPL_SPAMCMDFWD) is sent to the client to indicate that the message is
allowed through but IRCOps were informed.
With this new set::spamfilter::show-message-content-on-hit feature, when
the message content was hidden due to this setting (eg due to 'never' or
'channel-only'), the warn message will not be sent as there is no need to
inform the user in such a case.
2023-07-11 12:11:26 +02:00
Bram Matthys 4df6ed7f9a Get rid of duplicate "spamfilter hit" code. 2023-07-11 11:42:06 +02:00
Bram Matthys f277880fb3 Add set::central-spamfilter::limit-ban-action and ::limit-ban-time
to limit actions to limit-ban-action as the highest, and limit
ban times to limit-ban-time the highest, see
https://www.unrealircd.org/docs/Central_Spamfilter

This also changes highest_spamfilter_action() to highest_ban_action().
2023-07-11 10:17:51 +02:00
Bram Matthys 95902979dc Central spamfilter: now every 1hr and a default set::central-spamfilter::except
policy is added. This may be tweaked later.
2023-07-10 20:18:07 +02:00
Bram Matthys 15b9255b0e Add spamfilter::except as an alternative for spamfilter::rule and upd rls notes 2023-07-10 12:12:25 +02:00
Bram Matthys c18c79e88b Add spamfilter hits and hits for exempted users.
* This means we always run spamfilters, even if users are exempts
* This way we can gather hits for exempted users on individual
  spamfilter entries, and possibly detect false positives
  (which relies on the assumption that those users are innocent)
* The hit counters are shown in in RPL_STATSSPAMF and also
  exposed via the JSON-RCP API.
* This commit also adds set::central-spamfilter::except but more
  on that later since i still want to set a default for that in
  a future commit.
* This also changes take_action() to take flags and adds the
  option TAKE_ACTION_SIMULATE_USER_ACTION which i intended to
  use but didn't in the end... not sure if i should keep it :D
2023-07-10 11:30:51 +02:00
Bram Matthys 0c622c0a73 Minor code cleanup and remove weird check for cep->name after a CheckNull()
[skip ci]
2023-07-10 09:59:49 +02:00
Bram Matthys 3fecb779a5 Fix double free in url_unreal.c if HTTPS write failed early.
Not sure if that could possibly get triggered, actually, as
it would mean the (async) SSL_connect() would have to succeed
instantly and then the SSL_write() would have to fail, but
better safe than sorry.
2023-07-10 09:48:58 +02:00
Bram Matthys 01893dbc55 Be nice to people using hybrid-like config syntax...... for now..... ;D 2023-07-09 21:18:41 +02:00
Bram Matthys 1073c6289f And some more crule reformatting/cleanups, could not resist 2023-07-09 17:00:43 +02:00
Bram Matthys c67488573a Some other reformating
[skip ci]
2023-07-09 16:52:34 +02:00
Bram Matthys 349e7a2e51 src/crule.c: re-indent this monster (whitespace changes only, except 1 line) 2023-07-09 16:50:31 +02:00
Bram Matthys d25fdeb950 Some more BanAction fixes/improvements:
* stats S one thingy (multi-actions)
* STATS spamfilter (multi-actions)
* warn w/user target ('u') if using multi-actions
* moving some code
2023-07-09 16:27:40 +02:00
Bram Matthys e26ff1e9cf Add antimixedutf8::action warn handling, and fix generic handling in git version. 2023-07-09 16:20:42 +02:00
Bram Matthys 51a97602ee Fix antirandom::action warn handling in current git.
Reported by Han`.
2023-07-09 16:12:19 +02:00
Bram Matthys 9e2232ef72 For DroneBL spam submissions use "Content-Type: text/xml".
This also bumps the request size limit a bit.
2023-07-09 14:03:35 +02:00
Bram Matthys 0618495962 No comment :D :D 2023-07-09 13:40:37 +02:00
Bram Matthys a68fa03ab5 Fix some small memory leaks on REHASH and fix compile warning w/gcc. 2023-07-09 13:39:00 +02:00
Bram Matthys 3250c7c0b4 Add some temporary safety mechanism if too many HTTP(S) requests in progress.
Will allow tweaking in config later. This is separate from rate-limit btw,
which also still needs to be done.
2023-07-09 13:21:16 +02:00
Bram Matthys 93ea44680f Oh yeah... typo reported by BlackBishop... :D
[skip ci]
2023-07-09 13:08:52 +02:00
Bram Matthys dec9aa0341 Reporting spam to DroneBL now works, see https://www.unrealircd.org/docs/Spamreport_block
This uses the RPC2 API. Tested with staging.

Note that there are likely some bugs here or there, like memory leaks,
but the functionality is there.

Also still need to implement various stuff, including spamreport::rate-limit
2023-07-09 13:07:29 +02:00
Bram Matthys 2b14ee3de5 Prepare for future spamfilter::match -> spamfilter::match-string
[skip ci]
2023-07-08 20:14:25 +02:00
Bram Matthys 5d65e4a400 Rename place_host_ban() to take_action() since it is not only about banning... 2023-07-08 19:54:40 +02:00
Bram Matthys 8f4a19978a Deal properly with multi actions in spamfilter (untested) 2023-07-08 19:48:15 +02:00
Bram Matthys 64f57ae243 Add spamfilter::action report (work in progress) 2023-07-08 19:24:15 +02:00
Bram Matthys bee2853ded Add spamreport::type dronebl, actually reports to unrealircd.org atm for testing 2023-07-08 18:13:14 +02:00
Bram Matthys 84786cc005 Add flags argument to buildvarstring_nvp, and add BUILDVARSTRING_URLENCODE
[skip ci]
2023-07-08 18:12:24 +02:00
Bram Matthys 28df14ad43 Add duplicate_nvplist_append()
[skip ci]
2023-07-08 18:10:41 +02:00
Bram Matthys 5f71adeb4d Add urlencode() 2023-07-08 18:10:16 +02:00
Bram Matthys 8b158d214c Fix for change earlier today to buildvarstring/buildvarstring_nvp,
it would stop writing the string after the first variable, not good.
[skip ci]
2023-07-08 17:44:31 +02:00
Bram Matthys 38771b6761 Spamreport: implement POST requests 2023-07-08 16:46:21 +02:00
Bram Matthys 7741065518 Probably helps if i add src/modules/spamreport.c as well 2023-07-08 15:36:10 +02:00
Bram Matthys def77c4d52 Initial work on spamreport { } block. Not really useful yet.
Early commit before i make it actually work and implement the rest
and hunting for memory leaks etc...
2023-07-08 15:35:08 +02:00
Bram Matthys 01dd042089 Add support for spamfilter::id (currently not used or displayed anywhere)
For config-file only atm.
2023-07-08 12:34:21 +02:00
Bram Matthys d1877ae100 Add conditional config defines:
UNREALIRCD_VERSION
UNREALIRCD_VERSION_GENERATION
UNREALIRCD_VERSION_MAJOR
UNREALIRCD_VERSION_MINOR
UNREALIRCD_VERSION_SUFFIX

https://www.unrealircd.org/docs/Defines_and_conditional_config
2023-07-07 21:05:38 +02:00
Bram Matthys a7ab8f7710 Update early release notes a bit (still work in progress)
[skip ci]
2023-07-07 20:28:46 +02:00
Bram Matthys 1006292681 Initial work on central spamfilter with auto refreshing URL / rules 2023-07-07 18:43:29 +02:00
Bram Matthys c6e83be412 Release notes: fix "turn off" to be set { spamfilter { utf8 no; } }
Reported by BlackBishop
[skip ci]
2023-07-07 16:47:45 +02:00
Bram Matthys caf4708597 Update early release notes a bit
[skip ci]
2023-07-07 16:46:56 +02:00
Bram Matthys 662acb2442 Bump UNREAL_VERSION_TIME
[skip ci]
2023-07-07 11:34:16 +02:00
Bram Matthys c8c2657904 Fix build problem with current git due to HOOKTYPE_PLACE_HOST_BAN mismatch 2023-07-07 10:58:06 +02:00
Bram Matthys d998846c64 Support setting tags via spamfilter { } blocks 2023-07-06 18:25:43 +02:00
Bram Matthys cafb180955 Change default of set::spamfilter::stop-on-first-match to 'no'
(Apparently an undocumented feature, by the way)
2023-07-06 18:24:32 +02:00
Bram Matthys c04c185c0b Hmm, why is '=' special in the conf? It isn't! 2023-07-06 18:24:00 +02:00
Bram Matthys 6bbcdfd1b3 Add spamfilter::rule (preconditions), add context to crule parser,
and add the first functions: online_time() and reputation().

The more interesting stuff will follow later...
2023-07-06 16:14:26 +02:00
Bram Matthys 1e572e25b9 Add comparisson operator support to crule (< > ==)
Should probably add >= and <= as well :D
2023-07-06 14:31:36 +02:00
Bram Matthys 656ea105da First go at multi actions... 2023-07-06 11:51:55 +02:00
Bram Matthys 0af88581d3 Add support for restricting config file blocks. 2023-07-06 08:47:02 +02:00
Bram Matthys 5b04177ad7 Update early release notes a bit
[skip ci]
2023-07-06 07:59:16 +02:00
Bram Matthys 41fcdb3264 Set set::spamfilter::utf8 to 'yes' by default. 2023-07-06 07:57:49 +02:00
Bram Matthys f636e114a8 Update antimixedutf8 with a complete list of UTF8 blocks, counter more spam. 2023-07-05 17:21:17 +02:00
Bram Matthys ecad4e32ec Fix rejected_deletes setting in history_delete()
The former didn't make much sense:
 if (!rejected_deletes && *rejected_deletes > max_rejected_deletes)
The most simple fix would have been removing the '!' there.

However, i chose to rewrite part of the function so we only set
*rejected_deletes once, and use normal integers (not pointer to integers)
in all the preceding code. Less room for error.
2023-07-02 10:18:26 +02:00
Bram Matthys f932c21751 Bump MODDATA_MAX_LOCAL_CLIENT from 12 to 24. 2023-06-30 20:34:10 +02:00
Bram Matthys 8d50efd29e Fix documentation confusing regarding rpc-user::match vs ::mask.
Only match was working earlier, and for now both are accepted,
like everywhere else. Reported by BlackBishop.

Also, added a missing check for unknown rpc-user items, so a
proper "Unknown directive" error is thrown.
(this missing check made the first issue worse)
2023-06-30 15:20:10 +02:00
Bram Matthys 3c82dd61e2 Remove UnrealIRCd 5 from supported versions 2023-06-27 20:00:14 +02:00
Bram Matthys 0cc800e736 Fix crash on invalid badword { } block in config file (one without type) 2023-06-27 18:31:53 +02:00
Bram Matthys 89f9659158 Fix doc\conf\aliases\* being twice in unrealinst.iss
[skip ci]
2023-06-25 16:43:57 +02:00
Bram Matthys a8695dfe0b Whoops, removed an important backslash, fix compile error :D 2023-06-17 18:26:42 +02:00
Val Lorentz d5ceb664bc Add 'history_delete' method to HistoryBackend (#253)
This will allow modules to implement deletion of specific messages
(unlike history_destroy, which removes the entire history of a channel)
2023-06-17 16:10:10 +00:00
Bram Matthys 280a1ddb1d Update this file too :D
[skip ci]
2023-06-17 18:09:38 +02:00
Bram Matthys 407bd84c11 Bump version to 6.1.2-git 2023-06-17 18:08:51 +02:00
Bram Matthys 7bce73a697 Some changes to HOOKTYPE_RECONFIGURE_WEB_LISTENER hack from earlier,
that was added late in 6.1.1 development to fix a crash with removing
websocket listeners. Now replaced with a generic HOOKTYPE_CONFIG_LISTENER
that is not only called for removed listeners, but for all listeners.
2023-06-17 18:04:12 +02:00
Bram Matthys 4b23596b4c Code cleanup: some strncmp -> str_starts_with* replaces (less chance of mistakes) 2023-06-17 17:50:37 +02:00
Bram Matthys 4c2bb2ff21 ** UnrealIRCd 6.1.1.1 ** 2023-06-16 18:06:44 +02:00
Bram Matthys cca19fa7f0 Fix maxperip bug when using a WEBIRC proxy/gateway with IPv4 vs IPv6 mismatch.
(more info to follow)

This also adds "/stats maxperip" for debugging purposes (ircop-only).

[skip ci]
2023-06-16 18:03:03 +02:00
Bram Matthys 65da3d7ccd Mention ./unrealircd upgrade
[skip ci]
2023-06-14 09:14:21 +02:00
Bram Matthys 6e2569a9b7 ** UnrealIRCd 6.1.1 ** 2023-06-14 08:53:07 +02:00
Bram Matthys fd7a715e17 Don't use slow socket closing (w/TLS handshake) for (G)ZLINE.
The whole point of (G)ZLINEs is that it rejects instantly upon
accept, that's what makes them different from KLINE/GLINE.

Commit 89075e532a made it
accidentally use the slow path for this as well.
2023-06-07 15:14:00 +02:00
Bram Matthys c315751c2e Fix crash with log destination 'syslog'. 2023-06-04 15:11:58 +02:00
Bram Matthys acbedd5938 Also trigger hi connection warning when near maxconnection limit 2023-06-04 10:06:12 +02:00
Val Lorentz a94884c6a9 Mention that hbm_return_after actually implements BETWEEN (#252) 2023-06-04 07:58:57 +00:00
Bram Matthys 635c4e22dc README: Sync "About UnrealIRCd" with the text on the site
[skip ci]
2023-05-31 18:20:46 +02:00
Bram Matthys 61cd88c710 Update market share percentage in README to match IRCStats Dec'2022 2023-05-31 16:09:56 +02:00
Bram Matthys f1a5e30e8a ** UnrealIRCd 6.1.1-rc1 ** 2023-05-31 08:16:57 +02:00
Bram Matthys 0816cf79bc TOPIC does not need CMD_BIGLINES anymore after commit
c32ff22a3e
[skip ci]
2023-05-31 07:33:08 +02:00
Bram Matthys e3bd914ad8 Add a link in release notes
[skip ci]
2023-05-29 19:18:33 +02:00
Bram Matthys c32ff22a3e Change the meaning of CMD_BIGLINES of yesterday.
Without CMD_BIGLINES: parameters to commands can be 510 bytes max
(but eg. strlen(parv[1])+strlen(parv[2]) can be >510, like 510*2,
 when received from servers with BIGLINES support).
If someone does set CMD_BIGLINES in their CommandAdd() then the
parameter(s) size is not limited an can be up to 16k.

This is a bit more risky than previous but i think most command
handlers can handle parameters of max BUFSIZE/512 just fine
and care less about the grand total. Also, the risk is only
from server traffic and not from user traffic. Still, we will
keep going through the source to check for issues.
2023-05-29 15:16:18 +02:00
Bram Matthys bb419b95d1 Remove set::maxbanlength as it is not useful and only confusing.
https://www.unrealircd.org/docs/Set_block#set::maxbanlength
2023-05-28 20:25:02 +02:00
Bram Matthys 23bddde416 Server w/o BIGLINES: fix line cutting at wrong place in parse2() 2023-05-28 18:37:13 +02:00
Bram Matthys 7820676616 SetDeadSocket() in close_connection()
to avoid a crash in todays code which was like:
1) exit_client gets called
2) close_connection() sets client->direction to NULL
3) a bit further it calls remove_dependents()
4) a sendto is attempted and the new code accesses
   client->direction which is unexpected to be NULL

Actually i should probably trace the cause of the sendto_one()
but that is another story ;)
2023-05-28 18:13:34 +02:00
Bram Matthys e3262c6bd8 Change default for set::topic-setter and set::ban-setter to 'nick-user-host',
previously it was set to 'nick'

Also allow the full topic length for the nick-user-host case, now that
we have BIGLINES support. For non-BIGLINES-servers this could mean a
potential cutoff of the last 20 characters of the topic, which is why we
restricted it to 340 instead of 360 for nick-user-host previously, but
that is really only in the corner case / worst case, like with max NICKLEN,
max USERLEN, max HOSTLEN, max CHANNELLEN, etc... i think we can live
with that small "problem" until all servers upgrade.
2023-05-28 17:54:44 +02:00
Bram Matthys 82dd83f7dc Use BIGLINES in RRPC when possible (and deal with splitting up again
when it is not possible, mixed server scenario).
Now a big RRPC response like server.module_list for a remote server
(44KB) fits in only 3 lines, instead of almost 100 lines.
2023-05-28 16:11:38 +02:00
Bram Matthys 2fcb5b4669 * Server to server lines can now be 16384 bytes in size when
`PROTOCTL BIGLINES` is set. This will allow us to do things more
  efficiently and possibly raise some other limits in the future.
  This 16k is the size of the complete line, including sender,
  message tags, content and \r\n. Also, in server-to-server traffic
  we now allow 30 parameters (MAXPARA*2).
  The original input size limits for non-servers remain the same: the
  complete line can be 4k+512, with the non-mtag portion limit set
  at 512 bytes (including \r\n), and MAXPARA is still 15 as well.
* I chose 16k because I don't want to first raise it to like 8k
  and then realize later that 16k would be better and raise it again.
* To receive BIGLINES in a command, you need to `CommandAdd()` with
  flags `CMD_BIGLINES`, without it you still get regular 512 max.
  This is so, because a lot of the code does not expect longer than
  512 bytes lines or in parameters, so we can gradually change that
  (where needed).
2023-05-28 15:06:32 +02:00
Bram Matthys 5e64991296 Fix CHATHISTORY BETWEEN accidentally including a message too much
Reported by progval in https://bugs.unrealircd.org/view.php?id=5952
2023-05-28 11:08:46 +02:00
Bram Matthys a4d7ca022e Update CHATHISTORY AROUND to include middle message
Reported by progval in https://bugs.unrealircd.org/view.php?id=5953
2023-05-28 10:15:51 +02:00
Val Lorentz f768b34050 chathistory: Advertize MSGREFTYPES ISUPPORT token (#251)
https://ircv3.net/specs/extensions/chathistory#isupport-tokens

The spec says they should be 'in order of decreasing preference'.
As currently the only backend is in-memory, this doesn't matter so I
picked `msgid` first (as it's less ambiguous); but this can be revisited
later if/when adding a backend which is more efficient with timestamps.
2023-05-28 05:57:36 +00:00
Bram Matthys b6179d87d0 Update release notes a bit
[skip ci]
2023-05-27 19:21:59 +02:00
Bram Matthys 1a8653de19 Fix require module not working on one side, sending SMOD too early.
Has to do with running HOOKTYPE_SERVER_CONNECT too soon, before
introducing ourselves to the other side. This bug was created in
commit ddf639836b so exists in
all UnrealIRCd 6 versions (-beta1 and up).

The hook call is now moved further down.
2023-05-27 19:14:27 +02:00
Bram Matthys 8e2527741b Update shipped libraries: c-ares to 1.19.1 2023-05-27 16:03:59 +02:00
Bram Matthys e0bce86445 Fix config check for old webirc { } block (if missing password) 2023-05-27 08:44:17 +02:00
Bram Matthys 55670c5865 Fix memory leak created today on REHASH (free the proxy blocks) 2023-05-26 16:41:02 +02:00
Bram Matthys 257ec35931 Require proxy blocks to have a name, like proxy nginx { }
Not sure yet where/when this will be used or displayed (WHOIS?
connect line?), but better require it straight from the start.
2023-05-26 16:32:23 +02:00
Bram Matthys 995d28cacb Add duplicate_security_group() function, and also:
unreal_duplicate_masks()
duplicate_nvplist()
duplicate_name_list()

And use this for when proxy::type is web, to duplicate the
exact criteria to the ban exception as mentioned in previous
commit.
2023-05-26 16:15:09 +02:00
Bram Matthys f241fef575 For proxy::type web, automatically add proxy::mask to exceptions
for blacklist, connect-flood, handshake-data-flood
(Well, unless mask::ip is used with a wildcard, due to current
 technical limitations, that will be resolved later)
2023-05-26 15:56:17 +02:00
Bram Matthys fa4b39d4aa Fix "function returns an aggregate" to make GCC happy.
Actually I don't think this was really wrong as this is an
enum, which is probably why clang does not complain...
but still... whatever....
2023-05-26 14:40:24 +02:00
Bram Matthys cf5808dc44 Error on listen::options::websocket::forward and tell to use proxy { } block.
[skip ci]
2023-05-26 14:36:20 +02:00
Bram Matthys a7cf24c45d Mention new https://www.unrealircd.org/docs/Proxy_block in release notes
and also for safety when redoing DNS and ident due to IP change,
we now:
ClearIdentLookupSent(client);
ClearIdentLookup(client);
ClearDNSLookup(client);
2023-05-26 14:26:26 +02:00
Bram Matthys fb54d4a2c6 Replace do_parse_forwarded_header() and set WEB(client)->forwarded
depending on what we get from the proxy, so it can be used later
in the websocket module for setting the user secure or not
(the latter similar to what k4be already did in the old code).
2023-05-26 13:31:01 +02:00
Bram Matthys d2f45fcaaf Move webserver proxy handling from the websocket to the webserver module.
This now requires a proxy { } block -- docs follow soon

This uses part of k4be's code still, to do the parsing,
so still only "Forwarded" and quick workaround for bug
when for=XXX is the final item.
2023-05-26 13:05:30 +02:00
Bram Matthys c537a72c10 Make proxy::mask and webirc::mask a generic mask item almost all
others in the config - https://www.unrealircd.org/docs/Mask_item
2023-05-26 12:39:11 +02:00
Bram Matthys 9aafdb7f9c Move handling of webirc { } block into new proxy { } block (allow the old name)
This is untested, as I'm first working on the rest...
2023-05-26 12:23:51 +02:00
Bram Matthys c2d465c5dd Move chunk of code from start_of_normal_client_handshake() to
a function called start_dns_and_ident_lookup(). This can then
be easily called from other places as well, like the code k4be
did in src/modules/websocket.c to handle proxies.

Side-effect is that ident lookups would now be done, if we are
configured to do so, for forwarded webirc stuff (not that I
think many people use that feature at the moment...).
2023-05-26 11:24:01 +02:00
Bram Matthys 52472a9a88 Add support for set unknown-users { } and the like:
It is now possible to override some set settings per-security group by
having a set block with a name, like `set unknown-users { }`
* You could use this to set more limitations for unknown-users:
  ```
  set unknown-users {
          max-channels-per-user 5;
          static-quit "Quit";
          static-part yes;
  }
  ```
* Or to set higher values (higher than the normal set block)
  for trusted users:
  ```
  security-group trusted-bots {
          account { BotOne; BotTwo; }
  }
  set trusted-bots {
          max-channels-per-user 25;
  }
  ```
* Currently the following settings can be used in a set xxx { } block:
  set::auto-join, set::modes-on-connect, set::restrict-usermodes,
  set::max-channels-per-user, set::static-quit, set::static-part.
2023-05-22 12:07:43 +02:00
Bram Matthys e575d0ea05 Update modules.default.conf with more examples of what can go wrong
if you decide to go with your own modules.custom.conf, and why
blacklist-module is a safer approach.
[skip ci]
2023-05-22 08:02:30 +02:00
Bram Matthys 58228e28b3 Prevent people from using an old modules.default.conf.
That file has such a clear warning in it but still people
manage to load old ones. That being said, usually it is not
deliberate, like an cp ../unrealircd.old/conf/* conf/
2023-05-22 07:52:06 +02:00
Bram Matthys 6bbb5dee37 Add str_starts_with* and str_ends_with* functions:
int str_starts_with_case_sensitive(const char *haystack, const char *needle);
int str_ends_with_case_sensitive(const char *haystack, const char *needle);
int str_starts_with_case_insensitive(const char *haystack, const char *needle);
int str_ends_with_case_insensitive(const char *haystack, const char *needle);
[skip ci]
2023-05-22 07:42:26 +02:00
Bram Matthys 3652940c2c Add set::anti-flood::<secgroup>::max-channels-per-user setting to override
the default set::max-channels-per-user (also called set::maxchannelsperuser).

This way you can give known-users a higher max-channels-per-user,
or even a special security group for trusted users (that you may
already have given a more lax flood setting and lower lag-penalty
etc. etc. so that fits in nicely)

And yeah this also:
* Makes it both in set and the anti-flood block accept both
  maxchannelsperuser and max-channels-per-user.
* Removes old MAXCHANNELS= in 005, as we already have CHANLIMIT=
This does not:
* Re-announce the 005 CHANLIMIT= if someone transitions from a security
  group with a different max-channels-per-user. We don't do that for
  IRCOps either, and I think no IRCd does that actually...
  To be honest i wonder if sending the limit in 005 is useful at all,
  do client really track this and limit their GUI based on it?? Doubt it!
2023-05-19 21:47:23 +02:00
Bram Matthys f2015ad865 Fix crash when removing a listen { } block with websocket or rpc
(or changing the port number). Reported by Nini.

Rather complex case: when the listen block is removed, obviously
the config hooks are not called for the (now non-existing) listen
block, and thus the websocket->request_handler and such are not
set to the new address of the websocket handler.
We now use a slightly silly workaround / new hook to fix this
corner case. Ideally there would be an extra layer in-between
like a handler lookup by name, or something like that.
(Or make the websocket module PERM but we don't want that!)
2023-05-19 19:29:46 +02:00
Bram Matthys 9ea1e0e99c Update release notes a bit
[skip ci]
2023-05-18 13:23:22 +02:00
Bram Matthys 815c97c81e Update release notes on the new functionality of today.
[skip ci]
2023-05-18 13:21:44 +02:00
Bram Matthys f804c5ed65 Add detection and set the high connect rate to 1000 per seconds.
https://www.unrealircd.org/docs/FAQ#hi-conn-rate
This finishes https://bugs.unrealircd.org/view.php?id=5532
2023-05-18 13:15:17 +02:00
Bram Matthys 82dbc4a297 Add except ban { } for IRCCloud for maxperip & connect-flood.
In both the release notes to illustrate and in example*.conf
because this is generally a good idea.
2023-05-18 12:01:29 +02:00
Bram Matthys 9b9434e442 Delay throttling check until IP is resolved or failed to resolve.
This so you can use throttling exceptions (eg in ELINE) on hostnames.

That is, the above is during normal circumstances. Similar to previous
commit we will turn this feature of during high connection rates.
That is a TODO item.
2023-05-18 11:51:22 +02:00
Bram Matthys 89075e532a Send throttling and some other error messages to SSL/TLS users (encrypted).
This is the start of "be more friendly to TLS users with disconnect
error messages" from https://bugs.unrealircd.org/view.php?id=5532

As that bug explains:
Consider doing the SSL/TLS handshake even for throttling errors and such
when the (reject) connection rate is below a certain amount per second.  If
it is higher than a certain rate, then fall back to the original behavior to
reject the user instantly without handshake or looking at any data.
Rationale: the current/original behavior is there so the ircd can handle
floods, both in terms of traffic and in terms of CPU usage (the SSL/TLS
handshake is quite costly after all).  The downside of the current behavior
is that TLS users don't see the error message, usually.  This feature
request tries to find a middle ground.

Still a TODO item:
* We don't detect high rates yet, so we only do this new behavior atm
  and not yet the old behavior during high connection rates.
* Verify that error messages/behavior hasn't changed (too) much,
  like the throttling and the banning disconnect messages.
2023-05-18 11:17:37 +02:00
Bram Matthys 40bdef6cd9 Make exceeds_maxperip() use a hash table (performance improvement) 2023-05-17 19:44:10 +02:00
Bram Matthys 63cfe56208 Use LineCache in sendto_local_common_channels() 2023-05-15 17:12:38 +02:00
Bram Matthys b19b70e876 Speed up invisibility checks for delayjoin mode (and when not used too).
This adds user_can_see_member_fast() which is used in at least 3 places
now, more places may follow later. It has extra paramters for membership
and membership modes that is very likely already looked up by the caller
(or if not, it is worth doing so by the caller).

This is work in progress so if everything crashes or people mysteriously
seem not present in channels (or the other way around) i would not be
surprised :D.
2023-05-15 16:58:51 +02:00
Bram Matthys 0874e376bc Add LineCache which is used when sending a message to a channel.
When sending to channel members this will cache full IRC protocol
lines, including message tags and \r\n, for similar clients.
This avoid the need for many mtags_to_string() calls and also
entire parts of sendbuf_to_one() can be skipped as well.
The "Similar clients" cache entries are defined as clients that:
1) Are of the same type: normal local client, ircop local client
   or remote client.
2) Have the same CAPs set, that is: we only look at CAPs that actually
   have anything to do with message tags ('clicaps_affecting_mtag')
3) Optionally there can be an explicit line_opts. It is not used yet
   but could be used when there are different type of lines sent
   depending on other criteria, such as chanop status or something
   else that doesn't fit in #1 and #2.
2023-05-15 15:27:52 +02:00
Bram Matthys 5b071d7bfd Change return value of add_listmode() / add_listmode_ex(). This fixes
a bug when two servers merge, you could see +beI items being set that
already exist, if the timestamp or setter differed between servers.
Now they are updated but no +beI is shown.
https://bugs.unrealircd.org/view.php?id=5681
2023-05-08 18:52:22 +02:00
Bram Matthys 2c73a37ac7 * New setting set::handshake-boot-delay
https://www.unrealircd.org/docs/Set_block#set%3A%3Ahandshake-boot-delay
  which allows server linking autoconnects to kick in (and incoming
  servers on serversonly ports), before allowing clients in. This
  potentially avoids part of the mess when initially linking on-boot.
  This option is not turned on by default, you have to set it explicitly.
  * This is not a useful feature on hubs, as they don't have clients.
  * It can be useful on client servers, if you `autoconnect` to your hub.
  * If you connect services to a server with clients this can be useful
    as well, especially in single-server setups. You would have to set
    a low `retrywait` in your anope conf (or similar services package)
    of like `5s` instead of the default `60s`.
    Then after an IRCd restart, your services link in before your clients
    and your IRC users have SASL available straight from the start.
2023-05-07 11:21:22 +02:00
Bram Matthys be7d1cbed9 Minor update of early release notes
[skip ci]
2023-05-07 10:09:39 +02:00
Bram Matthys a2324268da Update early release notes for 6.1.1-git
[skip ci]
2023-05-07 09:54:54 +02:00
Bram Matthys 8f3db7ba1b Fix crash on FreeBSD/NetBSD when using JSON-RPC interface. 2023-05-07 09:28:48 +02:00
Bram Matthys c352cc2d5f Fix missing 'issued-by-tag' module in windows build. Oops...
[skip ci]
2023-05-06 11:27:49 +02:00
Bram Matthys ef6ba9c0cc Bump max number of DNS cached entries from 241 to 4096.
This may help a little during mass connects.

Also clean up / doxygen the include/dns.h header a bit.
2023-05-06 11:15:38 +02:00
Bram Matthys 8cabbcb59b DNS: add negative caching of unresolved hosts (60 seconds)
Mostly to avoid repeated lookups for like clients that reconnect rapidly.
2023-05-06 10:34:26 +02:00
Bram Matthys e04bde003c DNS: don't use "search domains" to avoid silly lookups for like
4.3.2.1.dnsbl.dronebl.org.mydomain.org which is a waste (and is
compounded if you have multiple search domains and multiple DNSBL's)
2023-05-06 09:48:30 +02:00
Bram Matthys 16531e53db Performance tweak to dbufs: 512 bytes -> 4K
This results in less write calls (lower load) and more data per packet
(more efficient network traffic). It helps for the webserver (JSON-RPC)
but should also help IRC traffic when returning more than a line or so.

Previously the first TCP packet was not always filled fully, eg it was
close to 512 bytes instead of being close to 1500 bytes (MTU). Strange
that this happened in the first place, by the way, as we don't set
TCP_NODELAY. But whatever...
2023-05-06 09:25:49 +02:00
Bram Matthys 63c7fd604d Fourth attempt at fixing 3+ JSON-RPC connections causing the error
"Too many unknown connections from your IP".

Need to check 'c' in the loop, not 'client', duh!

If you have multiple tabs of the webpanel open and the panel is
not hosted on the same machine as the ircd (does not connect over
127.0.0.1) then you will experience this bug. Pages or content
will fail to load or will load very slowly.
2023-05-06 09:17:46 +02:00
Bram Matthys e66824b8a6 Fix some typo or massreplace error in Failed OPER attempt message.
[skip ci]
2023-05-06 09:02:38 +02:00
Bram Matthys 0444a192bb Don't show REMOTE_CLIENT_JOIN for users on a server that is syncing.
Was an overshight. We don't show REMOTE_CLIENT_CONNECT either in such a case.
2023-05-05 17:00:02 +02:00
Bram Matthys 2a70a35f13 Propagate blacklist hit message globally. For snomask 'B',
but also for remote logging and JSON-RPC logging purposes.
[skip ci]
2023-05-05 16:25:29 +02:00
Bram Matthys 4ec2815d0c JSON-RPC: log.list now has a sources argument which allows filtering.
Uses the same filter as log.subscribe.
2023-05-05 15:08:02 +02:00
Bram Matthys 45342c2d33 Don't log join/part/kick by default if memory log is on via
conf/rpc.modules.default.conf. This because:
1) It matches the default in example.conf for ircd.log
2) It is a more privacy-friendly setting
3) The log entries are spammy / fill the memory log buffer quickly
2023-05-05 14:53:29 +02:00
Bram Matthys 4f632125fb JSON-RPC: add log.list call to fetch old(er) log entries from memory. 2023-05-05 12:18:13 +02:00
Bram Matthys d48ccb1ec8 When rpc.modules.default.conf is loaded, remember last 1000 lines of log
entries for a maximum of 7 days, in memory.
[skip ci]
2023-05-05 12:16:54 +02:00
Bram Matthys 1dcef57970 Add safe_json_decref() which sets pointer to NULL after decref. 2023-05-05 09:51:09 +02:00
Bram Matthys 95074410a5 Set version to 6.1.1-git
[skip ci]
2023-05-05 09:50:48 +02:00
Bram Matthys 5d3319d662 Whoops.. fix windows compile issue :D. Let's not add a random x there. 2023-05-05 07:46:32 +02:00
Bram Matthys 1317784de1 ** UnrealIRCd 6.1.0 ** 2023-05-05 07:32:22 +02:00
Bram Matthys c400e9282e Remove CCM ciphers, which are likely unavailable anyway. 2023-04-27 13:16:15 +02:00
Bram Matthys af6d93f584 Fix small memory leak when using JSON-RPC timers. 2023-04-27 09:14:58 +02:00
Bram Matthys 215869b421 Fix memory leak in whowasdb
Caused by fix a01862bf05
which no longer assigns but duplicates string values.
2023-04-26 18:12:53 +02:00
Bram Matthys 9e80487270 JSON-RPC: server_ban.del: more fixes for previous two commits (done) 2023-04-25 15:41:40 +02:00
Bram Matthys 30ed59617e Additional fix for previous: deletion didn't work either, let's move this
fiddling up one layer. Though i should really check if .get works.
2023-04-25 15:28:38 +02:00
Bram Matthys 5ec2701e9d JSON-RPC: server_ban.add: fix softbans not working.
Actually two issues:
* passed the wrong 'type' so it rejected all softbans.
* and fix bans being added with %% instead of %.
2023-04-25 15:23:06 +02:00
Bram Matthys 2e6f3a50d2 Fix-for-fix of remote includes crash of yesterday
(2922a8ae5a)
2023-04-23 07:44:21 +02:00
Bram Matthys f467c031c1 Fix memory leak when an outgoing TLS_connect() fails.
Reported by immibis in https://bugs.unrealircd.org/view.php?id=6263
2023-04-22 14:41:10 +02:00
Bram Matthys 2922a8ae5a Fix crash if there is a parse error in an included file and there are
other remote included files still being downloaded.
This issue exists both with and without cURL, so in both url interfaces.

Was finally able to reproduce this on my own machine. This bug exists
since at least 6.0.0 and perhaps even before that. Just doesn't get
triggered that often due to needing an error and a certain timing
condition (well, and ASan catches it, but on some systems it may
go unnoticed).
2023-04-22 14:08:29 +02:00
Bram Matthys 17e2a17e81 Remove library before 'make install'. Possibly fix a bug.
Actually I presume 'make install' properly removes the file first
before installing a new one, but.. not entirely sure. Better safe
than sorry.

We have had new reports of someone who had the original UnrealIRCd
crash while building the new UnrealIRCd. Similar to what we had
a few years ago, which was caused by a 'cp' instead of an rm+cp.
This because with simple cp the existing file contents is changed
and the processes holding the .so file open (usually mmapped)
suddenly have the new .so file loaded in effect, which causes a
crash whenever next function is called in that library.
We now rm explicit before 'make install' so running processes
simply have that fd point to a deleted file, which is fine.
2023-04-19 18:52:59 +02:00
Bram Matthys 8ddc9bd69c More chgs to last commits: use listener->options & LISTENER_NO_CHECK_CONNECT_FLOOD
as that is the same method we use in connect-flood.

I don't think the client->local && client->local->listener checks
are needed, but since we are post last RC (I hope): better safe
than sorry...
2023-04-17 09:46:58 +02:00
Bram Matthys a01862bf05 whowasdb: fix double free issues 2023-04-17 08:34:30 +02:00
Bram Matthys 172554abd4 Make previous commit actually work 2023-04-17 08:19:22 +02:00
Bram Matthys 76b87ed880 Don't count RPC for set::max-unknown-connections-per-ip.
This fixes you no longer being able to get on to the IRC network if you
also run the webpanel from your same source IP (and other similarly
weird errors, of course)
2023-04-17 08:11:10 +02:00
Val Lorentz ebcfe6a6bc Add sendtaggednumeric/sendtaggednumericfmt (#250)
They are similar to sendnumeric/sendnumericfmt, but allow an array of message
tags are parameter.

sendnumeric/sendnumericfmt are now shorthands for sendtaggednumeric/sendtaggednumericfmt
which pass NULL as mtags.
2023-04-15 14:34:38 +00:00
Bram Matthys 50e5cb7cbe Bleh, fix a warning... 2023-04-15 14:52:06 +02:00
Bram Matthys 2b1fad89be ** UnrealIRCd 6.1.0-rc2 ** 2023-04-15 14:08:47 +02:00
Bram Matthys 4b448f2aaa New option listen::spoof-ip, only valid when using UNIX domain sockets
(so listen::file). This way you can override the IP address that users come
online with when they use the socket (default was and still is `127.0.0.1`).

Add a new guide https://www.unrealircd.org/docs/Running_Tor_hidden_service_with_UnrealIRCd
which uses the new listen::spoof-ip and optionally requires a services account.
2023-04-15 10:37:30 +02:00
Bram Matthys eca416fdc6 Update release notes a bit
[skip ci]
2023-04-15 10:13:12 +02:00
Bram Matthys f1e70fa06c whowasdb: work around -Waddress warning for W_SAFE_PROPERTY()
[skip ci]
2023-04-15 09:44:38 +02:00
Bram Matthys 88e028246e JSON-RPC and JSON Logging: expose client.creation_time for remote clients too
if the information is available (is communicated since UnrealIRCd 6.0.4 in
server to server traffic).
[skip ci]
2023-04-15 09:31:59 +02:00
Bram Matthys 0d2ca78ed8 JSON-RPC: whowas.get: name -> nick rename
[skip ci]
2023-04-15 09:28:09 +02:00
Bram Matthys 7ad160f57a JSON-RPC: WHOWAS fetching is now whowas.get, also expose not only
logon_time/logoff_time but also connected_since.

This also fixes the Makefile for the Windows build (i hope)
2023-04-15 09:24:57 +02:00
Bram Matthys 2184f38e7e Expose more WHOWAS fields in JSON-RPC and change add_history() to take a reason
for the add, like: nick-change, quit, server terminating. Add logon time.

I also think i will move from user.get_whowas to a whowas.XXX since the
returned object is not a user object and getting more different each commit :D.
2023-04-15 09:00:06 +02:00
Bram Matthys e2320cb506 Update release notes a bit
[skip ci]
2023-04-15 08:31:06 +02:00
Bram Matthys e7e2a5a275 whowasdb: write currently online users as well, as if they already
left. This so, if we die, there is still a history of them.
2023-04-15 08:17:54 +02:00
Bram Matthys f0cd1c59c5 JSON-RPC: initial work on user.get_whowas (work in progress) 2023-04-15 07:59:13 +02:00
Bram Matthys 45201fffe7 New module 'whowasdb': persistent WHOWAS history (preserved between reboots) 2023-04-14 19:29:45 +02:00
Bram Matthys 2fd7c9cfc4 Set loop.terminating for RESTART also (so channeldb etc write the db) 2023-04-14 19:22:22 +02:00
Bram Matthys 8aa004271f Ban exempt 127.0.0.1 instead of whole 127.*
* We now only exempt `127.0.0.1` and `::1` by default (hardcoded in the source).
  Previously we exempted whole `127.*` but that gets in the way if you want
  to allow Tor with a
  [require authentication](https://www.unrealircd.org/docs/Require_authentication_block)
  block or soft-ban. Now you can just tell Tor to bind to `127.0.0.2`
  so its not affected by the default exemption.

Reported on IRC and by PeGaSuS in
https://bugs.unrealircd.org/view.php?id=6258
2023-04-14 07:34:53 +02:00
Bram Matthys 66b8259234 JSON-RPC: don't do filtering on low ASCII like we do for JSON logging.
This way things like the TOPIC will keep their color codes if they have it.

Reported by armyn in https://bugs.unrealircd.org/view.php?id=6259

(And yeah i used a global to achieve this, otherwise it has too much
 of a cascading effect in XYZ functions)
2023-04-13 18:53:49 +02:00
Bram Matthys dec834c193 Fix for previous fix (unmasked packets) 2023-04-12 13:17:13 +02:00
Bram Matthys 68171b5582 Websocket: apparently PONG frames are sometimes unmasked, even though
RFC6455 clearly says:
      Defines whether the "Payload data" is masked.  If set to 1, a
      masking key is present in masking-key, and this is used to unmask
      the "Payload data" as per Section 5.3.  All frames sent from
      client to server have this bit set to 1.

But ok, we'll make an exception for PONG.

This caused the websocket connection to be dropped after a while from
the unrealircd-rpc-php library that uses textalk/websocket.
Probably a bug in textalk/websocket or one of its dependencies,
that should be reported...
2023-04-12 12:31:25 +02:00
Bram Matthys 57c90496e8 JSON-RPC: add rpc.add_timer and rpc.del_timer so you can run a command
every <xyz> msec (minimum: 250).
Can be useful to schedule an rpc.stats call every 1000msec for instance.
Of course timers are destroyed if the client exits.

https://www.unrealircd.org/docs/JSON-RPC:Rpc#rpc.add_timer and
https://www.unrealircd.org/docs/JSON-RPC:Rpc#rpc.del_timer
2023-04-12 10:22:33 +02:00
Bram Matthys 9f569078ed Fix bug where a REHASH would cause us to loose track of remote RPC's (RRPC).
Like REHASHing while a module.list is in progress.

This due to missing SavePersistentPointer() in MOD_UNLOAD
2023-04-12 09:08:18 +02:00
Bram Matthys cd3b3ec15d JSON-RPC: Change to previous, don't name it "top_countries" but "countries"
and sort descending so the country with the most users comes first.
(Using silly negative priority tricks, but you won't see that :D)
2023-04-12 08:25:32 +02:00
Bram Matthys 431d2b54c4 JSON-RPC: stats.get now returns "top_countries" (top geo country codes).
It also has an object_detail_level like some other calls.
The "top_countries" are included from object_detail_level 1 and above.
The default object_detail_level is actually 1, so it is included by
default. You can use object_detail_level if you don't want it.

Idea for this was from Valware.

https://www.unrealircd.org/docs/JSON-RPC:Stats#stats.get
will be updated in a minute...
2023-04-12 08:04:20 +02:00
Bram Matthys bea1bb6b94 Add some more warnings/explanations if specifying a custom SSLDIR.
Reported and suggested by Le_Coyote in
https://bugs.unrealircd.org/view.php?id=5980
2023-04-10 19:12:48 +02:00
Bram Matthys 3538b944de Fix missing client info from TLS handshake flood log message.
Reported by musk in https://bugs.unrealircd.org/view.php?id=6251
2023-04-10 18:51:19 +02:00
Bram Matthys 197fd0ca51 Update help.conf on +F and integrate +f/+F CHMODEF helpop docu.
Mentioned by Valware in https://github.com/unrealircd/unrealircd/pull/248
2023-04-09 16:08:33 +02:00
Valerie Pond 78e10e0128 /helpop chmodes: Show channelmode +d (#249)
[skip ci]
2023-04-09 13:53:53 +00:00
Bram Matthys 7c22f37a9f JSON-RPC: add log.subscribe and log.unsubscribe
https://www.unrealircd.org/docs/JSON-RPC:Log
2023-04-08 17:56:59 +02:00
Bram Matthys 4945ac9f7e Minor update of release notes
[skip ci]
2023-04-07 16:12:47 +02:00
Bram Matthys 447ce57009 +F: fixes for if you change the default-profile or unset it,
so these changes are set for all channels without +F.
2023-04-07 15:20:05 +02:00
Bram Matthys 93d825abe5 +F: set default profile if asked to do so via REHASH
[skip ci]
2023-04-07 15:02:40 +02:00
Bram Matthys ec7077f4a1 ** UnrealIRCd 6.1.0-rc1 ** 2023-04-07 14:54:43 +02:00
Bram Matthys f9b986f3c7 Windows build: now that they are compiled, actually install the RPC modules too..
[skip ci]
2023-04-07 14:49:15 +02:00
Bram Matthys a3efb70d31 Fixes for Windows build: add extbans/flood and all the RPC modules.
[skip ci]
2023-04-07 14:41:03 +02:00
Bram Matthys 290c5d4b72 Fix Windows makefile.
[skip ci]
2023-04-07 14:27:14 +02:00
Bram Matthys 854c5976d1 Chanmode +F: re-apply profiles on REHASH (in case anything changed)
TODO: ideally we would only do this if there was a change at all, but ah well.
2023-04-07 14:07:25 +02:00
Bram Matthys 3538ca9547 Fix bug in unrl_utf8_make_valid() where on invalid UTF8 it would use
the replacement character (good) but then stop processing the rest
of the string (bad).
This only happened if called with strict=0, which only happens in
the JSON and logging routines. So not in user-exposed stuff like
the websocket code.
2023-04-05 09:41:12 +02:00
Bram Matthys 4de91d49df Forgot 'git add' 2023-04-05 08:07:18 +02:00
Bram Matthys 254afbb9c6 Make set::hide-ban-reason not affect opers (eg. show full gline reason).
Suggested by Chris_dc in https://bugs.unrealircd.org/view.php?id=6252

This uses unrealircd.org/real-quit-reason internally, but is only
exposed to servers, never to users. It results in using that quit
reason for IRCOps, while using the regular quit reason for normal users.
2023-04-05 07:26:12 +02:00
Bram Matthys e8aef70f03 Fix crash on +f modes merging (SJOIN) due to the 6.1.0 +f/+F changes.
Reported by Valware.
2023-04-05 07:21:52 +02:00
Bram Matthys c5a763de06 mask vs match in webirc 2023-04-04 19:37:07 +02:00
Bram Matthys b07c739fa7 Add new +e ~flood:<floodtype(s)>:<mask> to exempt from +f/+F checks.
For example: +e ~flood:*:~account:TrustedBot

Suggested by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6204

Will refine the checking and perhaps sorting of floodtype(s) later...
2023-04-02 19:23:26 +02:00
Bram Matthys a19b2aebf6 New cmode.flood_type_action which can be used to indicate a channel mode
can be used from +f/+F as an action. You need to specify for which
flood type your mode is, eg `cmode.flood_type_action = 'j';` for joinflood.

Currently a mode can only choose one flood type action due to +f/+F
timer fights that could otherwise occur, but that shouldn't be too
much of an issue since we can live with that in core as well.
2023-04-02 18:14:45 +02:00
Bram Matthys a9b71b58cb Add RPC 'issuer' logging in CHGIDENT, CHGHOST, CHGNAME, SVSMODE
for user.set_username, user.set_vhost, user.set_realname,
user.set_mode. And some early work for other stuff that doesn't
work yet.
2023-04-02 16:18:34 +02:00
Bram Matthys 1e315bb953 Add and use command_issued_by_rpc() helper function for internal logging
of commands issued by JSON-RPC.
2023-04-02 16:04:17 +02:00
Bram Matthys e67f5b6c39 Prepare all user.* with mtag_add_issued_by() for unrealircd.org/issued-by.
The code further up still needs to be changed, though.
2023-04-02 15:56:48 +02:00
Bram Matthys d25d2a23be Minor cleanup: use kick_user() from channel.kick call instead of
emulating an IRC command through do_cmd().
Function was added earlier in a8534a6063
2023-04-02 12:15:32 +02:00
Bram Matthys 9eac6797c6 Add unrealircd.org/issued-by for KICK from JSON-RPC 2023-04-02 12:12:16 +02:00
Bram Matthys 50c3ed2c24 Add unrealircd.org/issued-by if using RPC call channel.set_mode
This also changes the set_channel_mode() function to have
an extra arguments MessageTag *mtags (2nd parameter).
2023-04-02 12:06:52 +02:00
Bram Matthys 0b8f0deb05 SAPART: add unrealircd.org/issued-by, and add RPC-specific logging 2023-04-02 12:01:29 +02:00
Bram Matthys 6ee941fa4c SAJOIN: add unrealircd.org/issued-by, and add RPC-specific logging
(some code will probably be moved to a helper function later)
2023-04-02 11:52:24 +02:00
Bram Matthys f007933348 Document mtag_add_issued_by() and allow for some future case we don't use yet.
[skip ci]
2023-04-02 11:51:50 +02:00
Bram Matthys 4a5b8b3639 +F: the no-flood-limit profile is called "off" now (was: "none") 2023-04-02 11:06:14 +02:00
Bram Matthys cd3cf7e97c Chanmode +F: Lower nick change limit in profiles, now that only real
nick changes are counted and not forced ones like SVSNICK.
2023-04-02 10:59:52 +02:00
Bram Matthys fa4d86009c Move set::modef-boot-delay to set::anti-flood::channel::boot-delay
and the new set::modef-split-delay to set::anti-flood::channel::split-delay.
See https://www.unrealircd.org/docs/Channel_anti-flood_settings#config
2023-04-02 10:25:25 +02:00
Bram Matthys 22a632fb88 Fix memory leak in RPC module on server disconnect.
The "rrpc" moddata was not freed, which contained the list of RPC modules
on a remote server.
2023-04-02 08:36:10 +02:00
Bram Matthys b914997a1c Update cmode.free_param definition to fix memleak due to yesterdays commit.
And update release notes technical note so it actually refers to the
correct channel mode function :D
2023-04-02 08:24:00 +02:00
Bram Matthys 8ea50d38a3 Change a character and force rebuild 2023-04-01 18:55:08 +02:00
Bram Matthys 8776557b3d JSON-RPC: make server.list use a default max detailed level, the
same one as server.get. This list is likely to be small, anyway.
This is how it was with <6.0.8. Reported by Lord255.
2023-04-01 18:17:42 +02:00
Bram Matthys b093ba5375 Set version to 6.1.0-git. 2023-04-01 17:32:34 +02:00
Bram Matthys ce75ddd167 Bump UNREAL_VERSION_TIME (been a while)
[skip ci]
2023-04-01 17:05:33 +02:00
Bram Matthys 8f1dc52c20 Mention that cmode.put_param has an API change
[skip ci]
2023-04-01 17:04:43 +02:00
Bram Matthys 7b7d436bba Add support for set::anti-flood::channel::default-profile
https://www.unrealircd.org/docs/Channel_anti-flood_settings#Default_profile
2023-04-01 17:01:59 +02:00
Bram Matthys 2f7bb2e72d Some reformatting of release notes
[skip ci]
2023-04-01 13:37:50 +02:00
Bram Matthys 22691a458b Don't count forced nick changes in floodtype 'n' in chanmode +f/+F.
These were already not counted for set::anti-flood::xx::nick-flood
and it makes sense.
Benefit of this is that limits for floodtype 'n' can be set tighter,
as now it is really only about manual (voluntarily) nick changes.
2023-04-01 13:26:34 +02:00
Bram Matthys e4cdc4c0dd Update release notes a bit on JSON request logging and unrealircd.org/issued-by
[skip ci]
2023-04-01 13:20:24 +02:00
Bram Matthys a83cd474af Change RPC logging format for rpc.RPC_CALL:
From: [rpc] Client RPC:adminpanel (Syzop): RPC call channel.set_mode: channel='#test', modes='+b', parameters='some!silly@ban'
  To: [rpc] RPC call channel.set_mode by RPC:adminpanel (Syzop): channel='#test', modes='+b', parameters='some!silly@ban'

This so the most important information is shown first (generally a good principle :D)
2023-04-01 13:10:06 +02:00
Bram Matthys 1bf34ae01b Log parameters in rpc.RPC_CALL:
[rpc] Client RPC:adminpanel (Syzop): RPC call channel.set_mode: channel='#test', modes='+b', parameters='some!silly@ban'
2023-04-01 12:59:20 +02:00
Bram Matthys 2b39777815 Logging: Log the issuer in rpc.RPC_CALL, when it is available.
[rpc] Client RPC:adminpanel (Syzop): RPC call channel.set_mode

And move it into a rpc_call_log() function.
2023-04-01 12:41:01 +02:00
Bram Matthys 7d7974f800 Get rid of unneeded buffer copying, if Jansson library >= v2.1 2023-04-01 12:29:59 +02:00
Bram Matthys 275cb97cfc For JSON-RPC with UNIX Domain sockets, split on \n (newline).
This so multiple parallel requests can be handled properly.

JSON-RPC over websockets is unchanged, as every JSON-RPC
requests goes into its own websocket frame there (easy).
2023-04-01 12:25:16 +02:00
Bram Matthys 89f75bd6e7 Fix some warnings: change an int to time_t and vice-versa 2023-04-01 09:52:19 +02:00
Bram Matthys a6820b4a8d Fix weird +F values when two channels merge.
This was a forgotten TODO item for cmodef_dup_struct(),
more netsync tests are still to follow.
Bug reported by Lord255.
2023-04-01 09:06:37 +02:00
Bram Matthys 4e49323e88 Fix crash on rpc-user { } block without a name. 2023-04-01 08:58:17 +02:00
Bram Matthys 7a50f963f8 Make channel.set_topic use the issuer internally. No logging or
other changes yet, just unrealircd.org/issued-by testing.

Tag shows up correctly when setting topic from webpanel now :)
2023-03-31 14:29:14 +02:00
Bram Matthys a3c151a16a RPC: add rpc.set_issuer, eg set to logged in user on the admin panel.
This so UnrealIRCd knows who is issuing the commands.
This information is then passed on to unrealircd.org/issued-by and
is planned to be used by the logging system too.

https://www.unrealircd.org/docs/JSON-RPC:Rpc#rpc.set_issuer
2023-03-31 12:55:31 +02:00
Bram Matthys 5871bd9463 Initial work on unrealircd.org/issued-by message tag.
This will communicate the original issuer of a command.
For example an "SAMODE #test +s" results in a SAMODE coming from
:maintest.test.net MODE ....etc....
And with this feature, we will communicate the IRCOp who did it:
@unrealircd.org/issued-by=OPER:Syzop..etc....
This tag is only sent to servers and to IRCOps, not to ordinary users.

The plan is to support the following variants:
Services: unrealircd.org/issued-by=SERVICES:NickServ@services.test.net
IRCOp:    unrealircd.org/issued-by=OPER:Syzop@maintest.test.net:Operblock_name
JSON-RPC: unrealircd.org/issued-by=RPC:adminpanel@irc1.test.net:Adminpanel_Actual_User

This first commit only adds SERVICES and OPER in the handlers of the
SVSNICK and SAMODE commands. The JSON-RPC variant and all of the other
commands have not been done yet.
2023-03-31 12:17:54 +02:00
Bram Matthys 1ca0b76bb5 Validate value of rpc-user THISNAME { } 2023-03-31 11:54:36 +02:00
Bram Matthys 8c6c9b6206 Fix SAMODE showing tags for the person who executed the SAMODE
instead of the server executing the MODE. Eg unrealircd.org/userhost
was set. This occured because the client = &me; was done after
the message tag preparation, now moved up so it's done before.
2023-03-31 11:22:07 +02:00
Bram Matthys 9ab876133d Add wildcard support to blacklist-module.
This also removes the following warning as a side-effect:
"blacklist-module for '%s' but module does not exist anyway".
2023-03-30 17:42:39 +02:00
Bram Matthys b099033c1b Load RPC modules by default but don't enable webserver or RPC sockets.
See release notes:
+* The RPC modules are enabled by default now. This so remote RPC works
+  from other IRC servers for calls like `modules.list`. The default
+  configuration does not enable the webserver nor does it cause
+  listening on any socket for RPC, for that you need to follow the
+  [JSON-RPC](https://www.unrealircd.org/docs/JSON-RPC) instructions.

[skip ci]
2023-03-30 17:35:11 +02:00
Bram Matthys 553d826ab3 Update release notes
[skip ci]
2023-03-30 17:23:55 +02:00
Bram Matthys bfee61d52d Fix dereferencing the wrong variable in a config_error() 2023-03-30 16:58:44 +02:00
Bram Matthys b51c8315fd Add and use set::modef-split-delay which makes +f ignore join-flood
for this amount of seconds (default: 75) when a server splits.
This helps in case a server dies and the clients reconnect to the
other servers, causing a join-flood to be triggered needlessly.
Of course, OTOH disabling a flood protection temporarily is not
ideal, but after seeing it being triggered too often and requiring
manual intervention in many +f/+F channels, this is the best option
I think, if we want +f/+F to work as painless as possible.

If you have a large network (eg: >5 servers) with equal user
spreading then you could disable this by setting it to 0, since then
1 server dieing may not have enough impact on +f join floods
for this to be needed.

TODO: Documentation and release notes
2023-03-30 16:57:27 +02:00
Bram Matthys aae8306ef6 Do some sanity checking on extban names: max 32 characters and
a-z, 0-9, _, -
2023-03-29 16:39:16 +02:00
Bram Matthys f4755fe587 Do some sanity checks on flood profile names
max length 24, and every character is a-z, 0-9, -, _
2023-03-29 16:38:20 +02:00
Bram Matthys a5b6365ef0 Assume +f profile "normal" always exists, since that is the case.
Also fix some "NULL check but dereferenced before" warnings.
2023-03-29 16:25:33 +02:00
Bram Matthys 8ff5fb62fb Get rid of some shadow (bug in +f config profile handling) 2023-03-29 16:23:47 +02:00
Bram Matthys 55350fe3a3 Fix due to recent +f rewrite: add check for [ at start, fixes OOB read. 2023-03-29 09:50:10 +02:00
Bram Matthys 53aedf2b3f Update release notes
[skip ci]
2023-03-27 13:23:23 +02:00
Bram Matthys abb6fcfcb5 RPC: user.list and user.get now have optional object_detail_level.
This is an integer which decides the amount of details in the response object.

See https://www.unrealircd.org/docs/JSON-RPC:User#Structure_of_a_client_object

Especially for user.list it can be a good idea to ask for less detail if
you don't need all the information. It's up to you...

When 'object_detail_level' is not specified in the request, then:
* For user.list it defaults to 2, which is a "breaking change" in the sense
  that it leaves out the "channels" field. To see the "channels" field you
  would have to use level 4.
* For user.get it defaults to 4, which results in the same output as 6.0.7.
* This makes sense so user.list is shorter than user.get, just like we
  already did in channel.list and channel.get.

By the way, this is all documented in the API calls at
https://www.unrealircd.org/docs/JSON-RPC:User
and for channels at https://www.unrealircd.org/docs/JSON-RPC:Channel
2023-03-27 13:12:27 +02:00
Bram Matthys f9af852c43 Again a fix for JSON logging, so object_detail_level has same result as 6.0.6.
This also changes the Detail level (object_detail_level) for the channel.* calls.
See https://www.unrealircd.org/docs/JSON-RPC:Channel_Object for latest info.

In short: at level 5, we now still hide the members.user.channels because
in general that object is not useful. When you do a channel.* API call
you want a list of users in the channel, and don't really care about
what other channels the user is in, other than the channel you already know.
2023-03-27 12:34:55 +02:00
Bram Matthys 783bdfb741 Fix JSON logging using the correct object_detail_level (same result as 6.0.6) 2023-03-27 10:13:43 +02:00
Bram Matthys a18bb04f45 Bump rpc/channel module version to 1.0.5
[skip ci]
2023-03-27 09:57:07 +02:00
Bram Matthys 957af0909b RPC: channel.get and channel.list now have optional object_detail_level.
This is an integer which decides the amount of details in the response object.

For the channel.* calls the object_detail_level is one of:
0: only return the channel name, nothing else
1: basic channel information only
2: this adds bans, ban_exemptions, invite_exceptions
3: also show members, but only level/name/id
4: also show members, level/name/id/hostname/ip/details/geoip
5: also show members, level and full user details like user.get

When no object_detail_level is specified, the following defaults are used:
For channel.list the default is 1 (matches current 6.0.6 behavior)
For channel.get the default is 3 (matches current 6.0.6 behavior)

Using channel.list with object_detail_level=5 is forbidden because
it would cause way too much output (and processing time).
2023-03-27 09:56:03 +02:00
Bram Matthys 98868dbbe9 Some leftover changes for release notes
[skip ci]
2023-03-27 09:15:00 +02:00
Bram Matthys 5d25888c71 Update release notes
[skip ci]
2023-03-26 19:49:49 +02:00
Bram Matthys 5c84728a32 Update release notes
[skip ci]
2023-03-26 19:44:46 +02:00
Bram Matthys 8e6c38f09a Potentially fix +f 'r' 2023-03-26 18:55:40 +02:00
Bram Matthys ccd9fc4b25 Make MODE #channel +F show the combined effective view of +f and +F.
Actually it accepts the following variations for this query:
MODE #test f
MODE #test +f
MODE #test F
MODE #test +F
As long as it is like that (with no parameter) we will show details.
Details are shown for all of the four possible combinations of having
or not having +f and +F.

For example "+F normal" and "+f [1k,20t]:10" result in this output:

Channel '#test' uses flood profile 'normal', without action(s) 'k' as they are overridden by +f.
Effective flood setting via +F: '[7c#C15,30j#R10,40m#M10,10n#N15]:15'
Plus flood setting via +f: '[1k,20t]:10'
-
List of available flood profiles for +F:
         none: []:0
 very-relaxed: [7c#C15,60j#R10,10k#K15,90m#M10,10n#N15]:15
      relaxed: [7c#C15,45j#R10,10k#K15,60m#M10,10n#N15]:15
       normal: [7c#C15,30j#R10,10k#K15,40m#M10,10n#N15]:15
       strict: [7c#C15,15j#R10,10k#K15,40m#M10,10n#N15]:15
  very-strict: [7c#C15,10j#R10,10k#K15,30m#M10,10n#N15]:15
See also https://www.unrealircd.org/docs/Channel_anti-flood_settings
2023-03-26 17:19:13 +02:00
Bram Matthys 67f61e7444 Retain sorting order when when set_channel_flood_profile() overwrites
an existing +F profile.
2023-03-26 16:43:45 +02:00
Bram Matthys 4ebdc7cd5b Don't allow subtype 't' and 'r' in +F profiles for now due to technical
reasons. If you want those, then use +f. (See source)
2023-03-26 16:03:35 +02:00
Bram Matthys 7f84bf7a39 floodprot minor code cleanup (chp -> fld) 2023-03-26 15:58:02 +02:00
Bram Matthys aa48b4d9d8 Make +F and +f work together (+f subtypes override +F settings) 2023-03-26 15:56:52 +02:00
Bram Matthys 1590628488 Drop the alt-actions +m and +M for the CTCP floodtype.
When a channel CTCP flood happens and there is an +f with the 'c' floodtype,
we set channel mode +C by default. Alternative action possiblities
were +m and +M. I don't think anyone really used those alt actions for CTCP
because makes little sense to set the channel +m/+M on a CTCP flood when
there is +C which has far less impact.

More important, the fact that +m/+M could be set both upon CTCP flood
and upon message flood, this 'dual timer' thing, makes it rather
complex when we now have both +f and +F, so easiest solution is just
to scratch this possibility :)
2023-03-26 15:42:09 +02:00
Bram Matthys 972046448a Channelmode +f code cleanups: make a single parse_channel_mode_flood()
function that handles all of is_ok(), conv_param() and put_param().

Hopefully I merged all the logic correctly :D
2023-03-26 13:42:18 +02:00
Bram Matthys b03b122348 Initial work on set::anti-flood::channel likely with bugs and no validation 2023-03-26 09:34:51 +02:00
Bram Matthys 5db1ce00b1 Handle the HOOKTYPE_CONFIGRUN and TEST for CONFIG_SET_ANTI_FLOOD first. 2023-03-26 09:00:35 +02:00
Bram Matthys c9fddc51f9 Add channel mode +F <flood-profile> 2023-03-25 19:00:48 +01:00
Bram Matthys b9be185f0a Make channel mode +f ban "unknown-users" first on a join flood,
if the join flood is caused by >75% of "unknown-users". This
to see if that will take care of the flood without harming
the "known-users" group. And naturally, do something similar
for message floods and nick floods.

If the flood persists, because they are caused by known-users,
then the +i/+m/etc actions are still taken.

This is work in progress, and some things are set to useful-
for-testing values, such as an unsettime of 1 minute.
2023-03-25 13:31:55 +01:00
Bram Matthys 04ce8f8ed7 Add helper functions 2023-03-25 12:19:44 +01:00
Bram Matthys 748f381d81 Use X509_check_host() in OpenSSL 1.1.0 and later and don't use it
for OpenSSL 1.0.2 anymore, 1.0.2 will use the fallback version.
This changes the include file.

(OpenSSL 1.0.2 is out of support since Jan 1 2020 so one may wonder
 why care at all, but i'm trying not to break that during minor
 UnrealIRCd releases)
2023-03-25 12:18:44 +01:00
Bram Matthys 78ce692357 Move ban_exists() to the core (was a helper function in channeldb) 2023-03-25 10:38:05 +01:00
Bram Matthys 5f36221869 Add OpenSSL include to fix compile warning.
X509_check_host() requires openssl/x509.h -- well except on
newer OpenSSL's apparently :D
2023-03-25 10:32:12 +01:00
Bram Matthys bfd9650abf Don't use X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS to fix compile problems.
I guess it's not that important so not doing #if defined() checks for it.
Compile problem reported by val.
2023-03-25 10:22:28 +01:00
Bram Matthys 24622144b1 Bump version to 6.0.8-git
[skip ci]
2023-03-25 09:19:41 +01:00
Bram Matthys 83d2498ec8 Add configure check for and use X509_check_host() instead of
always using our own implementation (that is not really ours,
by the way).
2023-03-25 08:31:25 +01:00
Bram Matthys d5aa0b61f1 Bump max length of log entries from 8k to 16k
(for example for logging a 8k+512 bytes line during debugging).
2023-03-25 07:39:44 +01:00
Bram Matthys b51a533ccf In WHOWAS show the normal host (vhost/cloakedhost) to IRCOps now that
the realhost/IP is communicated on a separate line. This so you now
can see both vhost/cloakedhost and realhost as an IRCOp in a single
WHOWAS request.
2023-03-25 07:32:43 +01:00
Bram Matthys 89611887cb Previous fix for big tags was insufficient. 4K+4K+512 rule should now be OK.
This also adds the MAXLINELENGTH define which is set to 4K+4K+512,
it can be used when you are dealing with complete lines (quite rare
in the code, mostly in socket code and labeled response).
And now also #define READBUFSIZE MAXLINELENGTH
but it is used beyond read buffers, als in write buffers of course.
2023-03-25 07:30:22 +01:00
Bram Matthys da3c1c6544 ** UnrealIRCd 6.0.7 ** 2023-03-24 13:26:29 +01:00
Bram Matthys 7194799f93 Fix valid_vhost() rejecting user@host.
Reported by Lord255.
2023-03-24 13:19:57 +01:00
Bram Matthys c4059a4b13 Update release notes
[skip ci]
2023-03-24 08:56:46 +01:00
Bram Matthys a743c5956d Buy a brain..
[skip ci]
2023-03-22 15:32:16 +01:00
Bram Matthys ed14d044e9 Fix crash in SVSO due to change from earlier today
[skip ci]
2023-03-22 15:31:21 +01:00
Bram Matthys 2d4c064c59 Makefile.windows: add missing standard-replies.dll
[skip ci]
2023-03-22 15:11:11 +01:00
Bram Matthys 2a719df7f0 Update release notes; mention windows libs
[skip ci]
2023-03-22 14:43:43 +01:00
Bram Matthys 9a171f2c79 Update release notes
[skip ci]
2023-03-22 10:59:22 +01:00
Bram Matthys e83c610b39 Add valid_vhost() and validate oper::vhost too just like vhost::vhost.
Actually make them both use this same function, even thought he original
vhost::vhost check was a bit more informational.

This also checks the vhost in other paths that lead to oper vhost setting.

Reported by ji in https://bugs.unrealircd.org/view.php?id=5910
2023-03-22 10:26:05 +01:00
Bram Matthys 1274e3d142 Update release notes
[skip ci]
2023-03-22 09:48:43 +01:00
Bram Matthys 23254a8b2b Fix for c-ares library bump (forgot to run ./autogen.sh) 2023-03-22 09:45:30 +01:00
Bram Matthys f24b708562 Update curl-ca-bundle to version of 10-jan-2023
from https://curl.se/ca/cacert.pem
2023-03-22 09:44:12 +01:00
Bram Matthys 62f79c3375 Update shipped c-ares library to 1.19.0 (28-jan-2023) 2023-03-22 09:41:24 +01:00
Bram Matthys 6b9cb96787 Update shipped Jansson library to 2.14 (9-sep-2021) 2023-03-22 09:39:42 +01:00
Bram Matthys ed2113e97c Update PCRE2 to 10.42 (12-dec-2022) 2023-03-22 09:38:01 +01:00
Bram Matthys 3d8905dd1c Fix "unknown connection(s)" in LUSERS being rather high.
This was a counting bug in src/socket.c. The socket itself was actually
freed though, so it's purely counting that was wrong.

There could still be counting bugs elsewhere, it's always hard to get
this right, for 20 years already :D
2023-03-22 09:31:26 +01:00
Bram Matthys 6f0757a2d0 Update release notes
[skip ci]
2023-03-22 09:13:50 +01:00
Bram Matthys 852169429d Update release notes
[skip ci]
2023-03-22 09:03:41 +01:00
Bram Matthys 4b4562516c Another attempt at UTF8-aware spamfilter.
This was previously tried at 19-apr-2020 in bc70882bd3
in UnrealIRCd 5.0.5. Sadly it had to be reverted immediately with a quick 5.0.5.1
release, all because of a PCRE2 100% CPU usage. Since then that bug has been fixed,
plus another bug. I'm now readding it "as an option" that is marked experimental.
Hopefully people test it out and can report back if it works well and then we can
make it the default someday.

This makes it a runtime setting so makes it much easier to switch back/forth if
there are any issues without recompiling anything. Had to use a bit more code now
though to handle the recompiling of spamfilters if the setting is changed.

Original issue was https://bugs.unrealircd.org/view.php?id=5187

* [Spamfilter](https://www.unrealircd.org/docs/Spamfilter) can be made UTF8-aware.
  * This is experimental, to enable: `set { spamfilter { utf8 yes; } }``
  * Case insensitive matches will then work better. For example, with extended
    Latin, a spamfilter on `ę` then also matches `Ę`.
  * Other PCRE2 features such as [\p](https://www.pcre.org/current/doc/html/pcre2syntax.html#SEC5)
    can then be used. For example you can then set a spamfilter with the regex
    `\p{Arabic}` to block all Arabic script.
    Please do use these new tools with care. Blocking an entire language
    or script is quite a drastic measure.
  * As a consequence of this we require PCRE2 10.36 or newer. If your system
    PCRE2 is older than this will mean the UnrealIRCd-shipped-library version
    will be compiled and `./Config` may take a little longer than usual.
2023-03-22 09:00:31 +01:00
Bram Matthys 768a08f83b Fixes for remote REHASH of a server: fix both missing and duplicate lines.
Duplicate line reported by Lord255 in https://bugs.unrealircd.org/view.php?id=6082
Missing line(s) may have been mentioned by someone but never reported
on the bug tracker.
2023-03-20 11:45:41 +01:00
Bram Matthys 8a48cfb664 Fix not sending CAP DEL on module unload.
Reported by westor in https://bugs.unrealircd.org/view.php?id=6104
The code was there but the order of which the checks were done was
wrong, so first it was checking which CAP's were unloaded and after
that it was unloading the CAP, instead of the other way around.

Also renamed the function to clicap_check_for_changes()
to be consistent with other runtime change detection functions
like extcmodes_check_for_changes(), umodes_check_for_changes()
and charsys_check_for_changes().
2023-03-20 10:55:22 +01:00
Bram Matthys a7c9ecb4e7 Add deny link::reason (optional) and display it in oper warnings
and to the other side of the link.
2023-03-20 09:18:05 +01:00
Bram Matthys a1e7e9f882 Move deny link { } handling to server module. 2023-03-20 09:09:03 +01:00
Bram Matthys 56478f04aa When an IRCOp uses user mode +H (hide oper) then only hide swhois
entries that have the tag "oper", IOTW: the ones that are added
through the oper { } block, and not the ones added through
different means like a vhost { } block.
Really minor thingy but suggested by JanisB in
https://bugs.unrealircd.org/view.php?id=4233 and actually
possible nowadays when swhois items are tagged.

Hint: if you use SVSO to make someone oper, and then add swhois
entries, be sure to tag them with a setby of "oper" too, that
way they are hidden in +H and also automatically removed from
the user when the user does "MODE nick -o" to de-oper.
2023-03-19 12:29:30 +01:00
Bram Matthys 5a95a19d2d Update release notes
[skip ci]
2023-03-19 12:06:55 +01:00
Bram Matthys 37b2f951fd Update release notes
[skip ci]
2023-03-19 12:03:37 +01:00
Bram Matthys fae628cbdf Fix "Missing snomask logging configuration" REHASH issue
if you do actually have 1 snomask configured (a single one).
Although this is rather rare and unusual, it should be possible.
Previously we required at least 2 snomasks and the counter
did not properly reset during rehashes. Not sure why we required
2 and not 1, and the counter reset was a bug.
Reported by westor in https://bugs.unrealircd.org/view.php?id=5994
2023-03-19 11:51:28 +01:00
Bram Matthys 5c108e0ec3 Don't fetch GeoIP.dat upon blacklist-module geoip_classic;
Reported in https://bugs.unrealircd.org/view.php?id=6100

Actually this only works if you have a:
blacklist-module geoip_classic;
in your conf and that conf is read before modules.default.conf
This is true if you have that blacklist-module line in your
unrealircd.conf, so should cover most cases.
2023-03-19 11:28:23 +01:00
Bram Matthys 15c8da2be8 Send ERR_INPUTTOOLONG (417) on oversized message-tags, as per
https://ircv3.net/specs/extensions/message-tags
Reported by progval in https://bugs.unrealircd.org/view.php?id=5949
2023-03-19 10:13:58 +01:00
Bram Matthys 951b913800 Update crule.c, re-porting it from ircu, to hopefully fix some bug(s).
Reported by 9pfs in https://bugs.unrealircd.org/view.php?id=6248

This is completely untested (other than ./unrealircd start), so
feedback from people who actually use crule like in deny link { }
is very much welcomed.
2023-03-19 08:38:54 +01:00
Bram Matthys 99c3f8688e When we blocked remote requests for CREDITS/INFO/LICENSE 10 years ago
due to flood attacks, back then we changed the argument silently to
point to our own server, eg 'INFO some.remote.server' ended up being
'INFO' (local server) when requested by non-IRCOps.
Now, we simply return "Permission denied" in such cases, which is
more clear and explicit.
Reported by progval in https://bugs.unrealircd.org/view.php?id=6004
2023-03-18 14:14:18 +01:00
Bram Matthys eccf108866 Forgot second part of the patch in previous commit. 2023-03-18 14:01:58 +01:00
Bram Matthys 3bccc63125 Fix +S stripping too much on incorrect color codes.
Reported by semioriginal in https://bugs.unrealircd.org/view.php?id=5908
with the patch also by semioriginal.
2023-03-18 13:58:59 +01:00
Bram Matthys 5cdcb95cdf Fix log message nick.BAD_NICK_REMOTE showing wrong server.
Reported by Valware in https://bugs.unrealircd.org/view.php?id=6060
2023-03-18 13:41:38 +01:00
Bram Matthys 3329cbcf18 Fix @if module-loaded() for modules that are about to be unloaded during REHASH.
Reported by westor in https://bugs.unrealircd.org/view.php?id=6122

This because is_module_loaded() returned the 'current state' rather than
the 'future state', as mentioned in is_module_loaded() in a comment there.
Fix was swappping two lines.
2023-03-18 13:36:15 +01:00
Bram Matthys 80d9b00de2 Possible fix for changes yesterday in moddata websocket_mdata_unserialize,
freeing of old websocket data (probably never called, but hey..)
2023-03-18 07:39:41 +01:00
Bram Matthys 6cb7a12baa Minor rls notes updates
[skip ci]
2023-03-17 19:10:09 +01:00
Bram Matthys 8ed633a452 Update release notes
[skip ci]
2023-03-17 19:05:39 +01:00
Bram Matthys 0428819c03 Add security group "websocket-users" and add security-group options
security-group::websocket and security-group::exclude-websocket,
all similar to how security-group::webirc works but for websocket.
Suggested by PeGaSuS in https://bugs.unrealircd.org/view.php?id=5598
and Nini in https://bugs.unrealircd.org/view.php?id=6222
2023-03-17 18:57:59 +01:00
Bram Matthys 3c64392a86 Sync websocket status over the network (needed for next commits) 2023-03-17 18:53:17 +01:00
Bram Matthys 7c98f10259 Update release notes
[skip ci]
2023-03-17 18:14:59 +01:00
Bram Matthys cdb36e7e30 WHOWAS: Show IP address and account to IRCOps.
Thanks to Noisytoot for https://github.com/unrealircd/unrealircd/pull/227
who suggested displaying account and provided a partial patch, and
armyn in https://bugs.unrealircd.org/view.php?id=6153 suggesting IP.

I chose to use the existing RPL_WHOIS* numerics that we also use for
returning WHOIS data. We already use RPL_WHOISSERVER in WHOWAS for
ages and the use of it is mentioned in RFC1459, so seems like that
was the idea right from the beginning of times. The only change I did
was from "is" to "was" in like "was logged in" and "was connecting from"
in the text of the numerics.
2023-03-17 18:10:46 +01:00
Bram Matthys fcdb059883 Fix whitespace and add some comments, before I go edit this file 2023-03-17 17:36:57 +01:00
Bram Matthys cc97589e47 Update release notes a bit
[skip ci]
2023-03-17 14:27:54 +01:00
Bram Matthys 96a6cf03a1 Probably helps if i add the .c file 2023-03-17 14:20:58 +01:00
Bram Matthys 45757da12e Add CAP standard-replies, and send ACCOUNT_REQUIRED_TO_CONNECT when
a user is soft-banned, from authprompt anyway.
2023-03-17 14:20:02 +01:00
Bram Matthys db23e7ba74 Update a module description (copy-paste error)
[skip ci]
2023-03-17 14:06:42 +01:00
Bram Matthys 4a9dcc6511 Fix mode +d (post delayed +D) not showing invisible users partially.
Or, "invisible_user_in_channel() function doesn't return 1 when channel has +d"
Reported by westor in https://bugs.unrealircd.org/view.php?id=6118
2023-03-17 12:12:20 +01:00
Bram Matthys 2a98802d09 Fix compile warning due to latest additions. 2023-03-17 11:06:12 +01:00
Bram Matthys 395a9dfc41 Update release notes
[skip ci]
2023-03-17 10:54:16 +01:00
Bram Matthys 9a08e39bca Fix modulemanager not working on FreeBSD (./unrealircd module install ...)
and other systems where 'make' was not GNU Make.
It now uses the same detection mechanism as in ./Config, which
should be known to work.

Reported by Valware and rj1 in https://bugs.unrealircd.org/view.php?id=6195
2023-03-17 10:44:10 +01:00
Bram Matthys 5e57228dfb In the FLOOD_BLOCKED log message, add the target of the flood.
Suggested by ComputerTech in https://bugs.unrealircd.org/view.php?id=6148
2023-03-17 09:56:56 +01:00
Bram Matthys 16d6c0efd6 Fix crash if unrealircd.org/json-log is used and a module calls config_warn()
during MOD_INIT, while an IRCOp is listening. Or any log call, really.
This causes the code path: config_warn() -> do_unreal_log_opers() -[..]->
sendto_one() -[..]-> client_accepts_tag() for a client tag handler that is
no longer loaded.

The fix is to unload very late and load very early, a trick
we did earlier with websockets as well (c3824ad47d).
2023-03-15 13:45:49 +01:00
Bram Matthys 96fe6d0fda Fix Windows compile problem with current git 2023-03-14 18:33:00 +01:00
Bram Matthys e767dc5e0e Silence warning on clang 15+ (such as in upcoming Ubuntu 23.04)
with regard to RunHook() and direct hook calls.
2023-03-13 13:56:56 +01:00
Bram Matthys 10b481f2c7 ./Config: don't use 'more doc/Config.header' but use 'cat', it's short enough. 2023-03-13 09:13:53 +01:00
Bram Matthys c43753cd4b Support NO_COLOR environment variable, as per https://no-color.org 2023-03-11 17:58:21 +01:00
Bram Matthys e4571a5bf7 Make the documentation of ulines { } in example.conf more explicit
about ulines for services needing to be added on every UnrealIRCd
server in a network.
[skip ci]
2023-02-08 18:07:28 +01:00
Bram Matthys b80d89dbb2 Update main docs link in example.*conf. Reported by DeviL.
[skip ci]
2023-02-08 17:56:14 +01:00
Bram Matthys c935c97963 Mention ulines { } verification in release notes
[skip ci]
2023-02-08 17:52:43 +01:00
Bram Matthys 2f5fa09187 Mention the last couple of changes in the release notes already.
[skip ci]
2023-02-08 10:52:07 +01:00
Bram Matthys 977c4b433a Make it so services can CHGHOST/CHGIDENT in the SASL / registration phase.
This so users can come online directly with the correct vhost set,
and not first with a standard (usually cloaked) host while auto-(re-)joining
followed by a CHGHOST later.

This is a long outstanding wish from users, I think.

Services can simply send a CHGHOST/CHGIDENT to the UID, for example
right before they send the SASL ... D S message (SASL succeeded)
they can send like: CHGHOST 002ABCDEF some.nice.host

Then UnrealIRCd 6.0.7-git and later will handle the CHGHOST even if
the user is not known yet. Technically, the server where the UID is
on will handle the message. And remote servers that don't know the
user with this UID yet will forward to the server with the SID-portion
of the UID. The CHGHOST will not be a broadcast but the vhost will
show up in the UID protocol message that introduces the user.
For CHGIDENT it is a similar story.

Light testing has been done but more extensive testing is welcomed.
2023-02-08 10:49:15 +01:00
Bram Matthys 47c8a9c1b8 Use find_server_by_uid() in SREPLY so it can deliver during pre-auth/unregistered stage 2023-02-08 10:11:54 +01:00
Bram Matthys c6c8bba311 Add find_server_by_uid() which hunts a server for the SID-portion of A UID.
Not sure if this is the best name, maybe I come up with a better one later.

The purpose of this function is so we can deliver certain messages to
pre-auth users, that is: users that are not fully registered yet.
This would mostly be used (perhaps exclusively) in SASL stage.
2023-02-08 10:10:27 +01:00
Bram Matthys 61970d12b2 Load 'sreply' module by default, fix a compile issue casused by myself
and some minor subjective style changes.
2023-02-08 09:57:20 +01:00
Valerie Pond 2cf6e9ef19 Add S2S command SREPLY for handling IRCv3 standard replies (#236)
This command allows servers to send Standard Replies (https://ircv3.net/specs/extensions/standard-replies) to clients.
2023-02-08 08:43:41 +00:00
Valerie Pond 14035d4dc0 Make qlines for channels work (#247)
This fixes a check which was backwards. A qline on a channel would only stop someone from joining if the person was an oper that had immunity.
2023-02-08 08:21:19 +00:00
Bram Matthys dd830261db Reject a link for anope or atheme if there is no ulines { } for it.
This is checked for both local and remote services linking in.

Naturally, the list can be expanded to include more services that
really need ulines { }, and not statistical services or some other
purpose non-unrealircd servers, which is the reason why cannot
blindly assume all non-unrealircd servers require ulines.

This should hopefully help users a lot with "mysterious" issues
with services that we see too often in the support channel.
Suggested in https://bugs.unrealircd.org/view.php?id=5742

Note that this does require services to communicate their software
version via EAUTH. Anope does this for years already, but atheme only
does so since 10 days ago (git only, presumably not released yet)
after Valware filed a PR.
2023-02-08 09:02:44 +01:00
Bram Matthys b370b89545 Bump version to 6.0.7-git 2023-02-08 08:08:11 +01:00
Bram Matthys cde37246ba Mention the magic ./unrealircd upgrade command, like last time :p
[skip ci]
2023-02-03 07:01:19 +01:00
Bram Matthys 01fd2da627 ** UnrealIRCd 6.0.6 ** 2023-02-03 06:56:16 +01:00
Bram Matthys 2417ed0a46 And my last rls note update of the day
[skip ci]
2023-01-18 19:18:16 +01:00
Bram Matthys b98fa77bbd Update release notes a bit more
[skip ci]
2023-01-18 19:14:55 +01:00
Bram Matthys ba49a130bb Update release notes a bit.
[skip ci]
2023-01-18 18:55:18 +01:00
Bram Matthys 3666d1d728 JSON-RPC: Add some more sanity checking on the 'id'
(Mainly because the id might be used in RRPC)
2023-01-16 11:10:47 +01:00
Bram Matthys b1139769e1 Do some basic filtering on the request by default.
This ensures that strings are of maximum 510 characters in length
and do not contain \n or \r.
Solves a lot of theoretical problems in many modules that .add
things or do other non-list/non-get actions.

This behavior can be turned off per-method (per handler) by setting
handler->flags = RPC_HANDLER_FLAGS_UNFILTERED;
This is currently not done in any of the modules.
2023-01-16 10:59:41 +01:00
Bram Matthys bdb5541def minor code cleanup (do things the libjansson way..) 2023-01-16 10:38:54 +01:00
Bram Matthys 9e887ea728 Add LoadPersistentLongLong() / SavePersistentLongLong() 2023-01-15 14:40:04 +01:00
Bram Matthys 1d1766a895 Send buildid in server version in EAUTH/SINFO and in server.* JSON-RPC.
This reveals the full git version.
2023-01-15 10:13:16 +01:00
Bram Matthys 497a19e7e2 Accept more connections in each listener run. 2023-01-14 20:49:12 +01:00
Bram Matthys 462ce7fcfa JSON-RPC: add stats.get call which can be used in "Network Overview" in
UnrealIRCd Admin panel and for other statistical purposes.
This can be expanded when needed.
2023-01-14 18:48:18 +01:00
Bram Matthys 2fcddd1655 JSON-RPC: Send 401 error response on invalid auth (instead of lingering the connection). 2023-01-14 17:18:00 +01:00
Bram Matthys 194a0b42f7 JSON-RPC: don't log the RPC calls if they are just for listing/getting,
since these are rather noisy and generally not very interesting to log.
Of course, DO log them if they are like add/delete/etc.

The way this works is a new property in the RPCHandler, eg:

        memset(&r, 0, sizeof(r));
        r.method = "server.list";
+       r.loglevel = ULOG_DEBUG;
        r.call = rpc_server_list;
        if (!RPCHandlerAdd(modinfo->handle, &r))

All of the .list and .get (and things like .module_list) now use
the debug facility, which is not logged by default.

You can still log ALL the JSON-RPC calls if you wish, for example
to a separate file, through something like:

log {
	source { rpc; }
	destination {
		file "rpc.log" { maxsize 100M; }
	}
}
2023-01-14 16:40:48 +01:00
Bram Matthys 58db5b0845 Fix crash in JSON-RPC. Reported by multiple people past few days,
including Lord255, armyn and others.
The issue was not there when running with ASan, which is why it
was non-reproducible for so long. Valgrind picked it up correctly.

The bug was that in rpc_response() and rpc_error() I do:
id = json_object_get(request, "id");
[..]
json_object_set_new(j, "id", id);

which is wrong, since json_object_get() "borrows the reference"
and json_object_set_new "steals the reference".
In this particular case it should be:
json_object_set(j, "id", id);

Fixed in both functions. Would have to audit the code if the mistake
is made elsewhere too though. On first sight, it seems not.
2023-01-14 10:36:54 +01:00
Bram Matthys 53150c0e68 Fix double-wrapping of JSON reply for remote RPC (RRPC) calls such as
server.module_list and server.rehash for remote servers.
Reported by Valware.
2023-01-14 09:10:32 +01:00
Bram Matthys 405b59eb07 JSON-RPC: server.list/server.add: new property server->features->rpc_modules
This is an array with name/version elements, eg server.list or.get look like:
      {
        "name": "testlink.test.net",
        "server": {
          "features": {
            "rpc_modules": [
              {
                "name": "rpc",
                "version": "1.0.2"
              },
              {
                "name": "user",
                "version": "1.0.5"
              },
etc. etc.
2023-01-13 19:42:20 +01:00
Bram Matthys a1800f01e9 JSON-RPC / RRPC: Announce all RPC modules and their versions over the wire via moddata.
Needed for rrpc_supported() at a later point, so one can require certain versions etc :p
2023-01-13 18:20:40 +01:00
Bram Matthys b9fcdcdb19 Make server.rehash for remote servers use two possible code paths:
* If the remote server (and all servers in-between) support RRPC
  then forward the RPC request as RRPC and let remote handle the
  response. The response will be the verbose rehash response.
* If not supported, then simply return boolean true as a response,
  and use oldskool :source_server REHASH dest_server over the wire
2023-01-13 18:09:12 +01:00
Bram Matthys c7f9dadb68 Add JSON_RPC_ERROR_REMOTE_SERVER_NO_RPC error which indicates that the
remote server does not have the JSON-RPC module(s) loaded.

Internally this uses the "rrpc" moddata property that each server will
now set on themselves if the rpc/rpc module is loaded.

Actually I am going to make this more verbose and better later...
2023-01-13 17:43:23 +01:00
Bram Matthys a3ed1eabd9 Make client->flags 64 bit on all platforms.
We just reached the 32th bit so it is not a problem yet,
but better bump it now since I will forget otherwise :D
2023-01-13 16:56:23 +01:00
Bram Matthys b8cbe63915 Support server.rehash for remote servers with full detailed response.
(Required RPC modules to be loaded on the remote server, tho)

This adds support for remote async RPC requests that take a little longer,
in such a case we don't call free_client() upon return of rpc_call().
2023-01-13 16:51:47 +01:00
Bram Matthys e2ef83bd6e Fix crash on REHASH 2023-01-13 15:57:45 +01:00
Bram Matthys cbdde31c1d Move client->local->rpc to client->rpc 2023-01-13 15:49:41 +01:00
Bram Matthys 16e4990f83 Fix memory leaks created in commit from 15 minutes ago 2023-01-13 15:45:12 +01:00
Bram Matthys bed40ccdab JSON-RPC: RPC-over-net: track requests and handle timeouts and SQUITs.
Inform the RPC client that the request timed out / server is gone.
The timeout is fixed at 15 seconds, which is fine, I think.

New rpc error codes:
JSON_RPC_ERROR_SERVER_GONE      = -32001, /**< The request was forwarded to a remote server, but this server went gone while processing the request */
JSON_RPC_ERROR_TIMEOUT          = -32002, /**< The request was forwarded to a remote server, but the request/response timed out (15 seconds) */

Unfortunately we cannot say for sure the action did not succeed at all.
It could be that the request never reached the server, but it could also
be that the request DID reach the server and we timed out during
retrieving the response. Nothing we can do about that.
2023-01-13 15:34:00 +01:00
Bram Matthys 6a4ae9d9ec Support RPC calls to remote servers, where the RPC request/response is
sent over the IRC network. This makes it possible to fetch information
from remote servers that is not known locally, and also it makes it
possible to do more things, or do it easier.

This does require the remote servers to enable RPC as well, though,
eg: include "rpc.modules.default.conf";
(They don't need any listener or rpc-user blocks)

Code-wise it looks nice, like from rpc_server_module_list it is a simple:
/* Forward to remote */
rpc_send_request_to_remote(client, targetserver, request);

This is work in progress. In particular, there is no handling yet of
timeouts (eg if the request to the remote server, or the response
from it takes ages). Nor does it handle the case where the server
quits half-way through the request/response... that is: it does free
the request and such, but does not notify the RPC client about it.
That will need to be added, of course, likely soon.

Over the IRC network this uses the new RRPC command:
:<server> RRPC <REQ|RES> <source> <destination> <requestid> [S|C|F] :<request data>
A request looks like this (assuming it is short):
:001 RRPC REQ 001ABCDEF 002 abc SF :..this is the json request...
And then the response (assuming it is long) is like:
:001 RRPC REQ 001ABCDEF 002 abc S :..this is the json response...
:001 RRPC REQ 001ABCDEF 002 abc C :..more...
:001 RRPC REQ 001ABCDEF 002 abc C :..more...
:001 RRPC REQ 001ABCDEF 002 abc F :..and that was it.
There is currently no request/response limit, it is limited by memory.

Right now the only call using this is server.module_list when called
with a param of "server":"some.remote.server"
2023-01-13 12:45:51 +01:00
Bram Matthys 07d2b6745b JSON-RPC: add server.module_list - only works for locally connected server atm 2023-01-13 09:46:02 +01:00
Bram Matthys 00e278c802 Add $tkl->set_in_config property, which is true for config-based TKL entries.
So, ones that cannot be deleted.
[skip ci]
2023-01-13 09:16:19 +01:00
Bram Matthys 6bde7475df JSON-RPC: add new $server->server->ulined property for u-lines (services)
[skip ci]
2023-01-13 09:05:29 +01:00
Bram Matthys a024a17e87 Add strtoken_noskip() and use it from the PROTOCTL EAUTH= code
so we can deal with empty fields that get sent f.e. by anope,
like EAUTH=services.test.net,,,Anope-2.0.11

Apparently this is similar to strsep(), or actually hypothetical
strsep_r(), a function which does not seem to exist.
2023-01-13 08:56:34 +01:00
Bram Matthys 73e1dbca05 JSON-RPC: Add missing client.server.features for &me 2023-01-11 17:42:02 +01:00
Bram Matthys aa2d3c026e JSON-RPC: add server.disconnect 2023-01-11 17:08:34 +01:00
Bram Matthys d6833ae298 JSON-RPC: add server.connect API call
(directly connected server only at the moment)
This also cleans up the linking procedure (now) at 3 places,
to use find_link() and check_deny_link() everywhere.
2023-01-11 16:54:22 +01:00
Bram Matthys 0578346b12 Make server.rehash work for remote servers too, just no real status atm. 2023-01-11 16:24:50 +01:00
Bram Matthys a5bdf317fb JSON-RPC: begin with a server.* API, also fill client->local->rpc for
RPC clients with the RPC user and such.

Most of this work is for server.rehash which causes the request to
be saved, then a rehash begins, and a few seconds later (or whenever)
the entire rehash log and success/failure is indicated in the
JSON-RPC response.

TODO: all documentation for this
2023-01-11 15:43:50 +01:00
Bram Matthys 1c87882d3e Add missing config.RELOAD logging when using ./unrealircd rehash
(via control socket)

Reported by darkex in https://bugs.unrealircd.org/view.php?id=6212
2023-01-11 14:01:21 +01:00
Bram Matthys c5d8bc5d9b Fix ~account:* matching both logged in and logged out users (so quite useless).
This bug exists since 5.2.1 already, so i guess the functionality is
not used much ;). Makes sense, since for simple ~account:* you have +R already,
so it is only useful in stacked bans such as +e ~nickchange:~account:*

We now have a test case so that this bug won't "ever" reoccur.

Reported by rafaelgrether in https://bugs.unrealircd.org/view.php?id=6211
2023-01-09 09:00:58 +01:00
Bram Matthys 5897ce3aad Version bump various modules.
[skip ci]
2023-01-08 15:50:25 +01:00
Bram Matthys 35c49108df JSON-RPC: Add optional "set_by" field when adding/removing TKL's,
so in name_ban, server_ban, server_ban_exception and spamfilter.

This could be used, for example, by an admin panel to tell which
end-user that authenticated to the panel (eg 'OperX') added/removed
the TKL, instead of showing up as 'RPC:xyz' in the logs and bans.
2023-01-08 15:43:00 +01:00
Bram Matthys ed8a3f0336 JSON-RPC add server_ban_exception.* API calls
Docs: https://www.unrealircd.org/docs/JSON-RPC:Server_ban_exception
2023-01-08 15:35:08 +01:00
Bram Matthys d0ad776e93 Minor code cleanup (move error out of params into local vars,
as it didn't belong there..)
[skip ci]
2023-01-08 15:03:18 +01:00
Bram Matthys 0244c31742 Split of some code from cmd_eline() into server_ban_exception_parse_mask(),
similar to how *LINE commands use server_ban_parse_mask().
Now used by ELINE and for JSON-RPC later...
2023-01-08 14:56:56 +01:00
Bram Matthys c95e3f249e JSON-RPC: add name_ban.list, name_ban.get, name_ban.add, name_ban.del 2023-01-08 09:56:41 +01:00
Bram Matthys 5db86cb442 Fix crash in server_ban.* when using non-serverban types such as
qlines and exceptions (for which no interface exists yet, btw :D).
2023-01-08 09:20:12 +01:00
Bram Matthys 9d04710e3a In DEBUGMODE allow for verbose rpc logging with request/responses.
(And also fix a logging statement that had the wrong category)

log {
        source {
                rpc.debug;
        }
        destination {
                file "rpc.log" { maxsize 100M; }
        }
}
2023-01-08 09:02:01 +01:00
Bram Matthys 20d1487922 JSON-RPC: add channel.kick, update struct initalization,
and use REQUIRE_PARAM_* and OPTIONAL_PARAM_* everywhere
in the channel.* API handlers.

For docs see:
https://www.unrealircd.org/docs/JSON-RPC:Channel
2023-01-07 19:05:05 +01:00
Bram Matthys 191553e403 Update early release notes a bit.
[skip ci]
2023-01-07 18:44:22 +01:00
Bram Matthys 998687bf13 Bump version to 6.0.6-git 2023-01-07 18:15:11 +01:00
Bram Matthys 243958f85a Add REQUIRE_PARAM_STRING(), REQUIRE_PARAM_BOOLEAN(),
OPTIONAL_PARAM_STRING, OPTIONAL_PARAM_BOOLEAN()
and use it everywhere in the user.* API calls.
Much cleaner now :)
2023-01-07 17:54:52 +01:00
Bram Matthys fb96e4581b JSON-RPC: add user.part and slightly change user.join
the option is now called 'force':true for consistency.

Docs updated:
https://www.unrealircd.org/docs/JSON-RPC:User#user.part
https://www.unrealircd.org/docs/JSON-RPC:User#user.join
2023-01-07 17:38:38 +01:00
Bram Matthys 046c8654c6 JSON-RPC: add user.join, which uses SVSJOIN (normal join) or SAJOIN (bypass
all channel restrictions).
See https://www.unrealircd.org/docs/JSON-RPC:User#user.join
2023-01-07 17:31:33 +01:00
Bram Matthys 884cc7f04d JSON-RPC: add user.quit. The difference between that and user.kill
is explained at https://www.unrealircd.org/docs/JSON-RPC:User
2023-01-07 16:57:48 +01:00
Bram Matthys 6a2a8e798b JSON-RPC: add user.kill 2023-01-07 16:48:41 +01:00
Bram Matthys 9d65b8a4ed Use better defaults in user.set_oper
Already documented at https://www.unrealircd.org/docs/JSON-RPC:User#user.set_oper
2023-01-07 16:41:52 +01:00
Bram Matthys aef8611f91 Change SVSO to use the prefix "remote:<name>" instead of "services:<name>"
because it can be used by JSON-RPC now and this fits for both :D.
2023-01-07 16:19:17 +01:00
Bram Matthys e7615210a7 JSON-RPC: add user.set_oper
[skip ci]
2023-01-07 16:18:47 +01:00
Bram Matthys 541eba0670 JSON-RPC: add user.set_mode & user.set_snomask 2023-01-07 15:59:52 +01:00
Bram Matthys 619282397e Add json_object_get_boolean():
int json_object_get_boolean(json_t *j, const char *name, int default_value)
[skip ci]
2023-01-07 15:54:49 +01:00
Bram Matthys 9898d332ab JSON-RPC: add user.set_vhost 2023-01-07 15:30:08 +01:00
Bram Matthys 318d183f23 JSON-RPC: add user.set_username and user.set_realname 2023-01-07 15:23:34 +01:00
Bram Matthys 18d7e98d35 Return true from ValidatePermissionsForPath() for &me. 2023-01-07 15:20:48 +01:00
Bram Matthys 4378979ad5 Add valid_username() so we can use it at multiple places.
This gets rid of duplicate code in SETIDENT, CHGIDENT, and soon
in the RPC call. It does not get rid of make_valid_username()
in src/modules/nick.c which does something slightly different.
2023-01-07 15:11:52 +01:00
Bram Matthys a9d0c6fd1a JSON-RPC: make channel.set_mode and channel.set_topic return just result:true.
I don't think it should return the whole channel struct here as if it
was a channel.get. Only thing is that, especially or only with set_mode,
it may actually be 100% success... eg if your mode line is wrong :D.

Also bump API versions on user.* and channel.*
2023-01-07 14:58:00 +01:00
Bram Matthys 5589a78255 JSON-RPC: add user.set_nick
This also makes the "forced nick change" message a bit more
generic, leaving out the "by services" or "due to Services",
since it is now possible to do it via JSON-RPC.
2023-01-07 14:53:01 +01:00
Bram Matthys 7d9dcb5e0a Allow SVS* commands to be sent by non-ulined servers by default,
this is needed by various future JSON-RPC calls.
See https://www.unrealircd.org/docs/Set_block#set::limit-svscmds
2023-01-07 14:21:31 +01:00
Bram Matthys 62d62c4e88 channel.set_mode: mode->modes, parameter->parameters 2023-01-07 10:24:26 +01:00
Bram Matthys b2a6f3cfee JSON-RPC: add channel.set_mode 2023-01-07 10:21:19 +01:00
Bram Matthys 14107d88be Add set_channel_topic() and use it from cmd_topic (TOPIC) 2023-01-07 10:16:18 +01:00
Bram Matthys 66d7fb804d JSON-RPC: add channel.set_mode 2023-01-07 09:41:01 +01:00
Bram Matthys 141c4bc64d Use consts in set_channel_mode()
[skip ci]
2023-01-07 09:39:44 +01:00
Bram Matthys 5a32333360 JSON-RPC: show +vhoaq in "channels" in user.* and in "members" in channel.*
as requested in https://bugs.unrealircd.org/view.php?id=6206
And also for channel.get, in "members", include the UID in "id".

This breaks the current format but we don't have many users yet anyway.
Something tells me that will happen more ;)

This also bumps the user and channel RPC modules from 1.0.0 to 1.0.1

In user.get (and currently user.list too) this shows as:

"channels": [
  {
    "name": "#test",
    "level": "o"
  }
]

And in channel.get (not .list) this shows as:
"members": [
  {
    "name": "abc",
    "id": "00129BP02",
    "level": "o"
  },
  {
    "name": "def",
    "id": "001LFMB05"
  }
]
2023-01-05 17:48:08 +01:00
Bram Matthys bef2f428f4 JSON-RPC: Really show *all* channels a user in.
This because for JSON-RPC you expect all accurate data, while in contrast
with JSON logging the channels are just there for convenience and only
show the first X channels, since otherwise the data gets too long
and gets truncated (JSON logging uses channel detail level 0).
2023-01-05 16:54:37 +01:00
Bram Matthys 143b7262cc JSON-RPC: add channel.get which also includes members and +beI lists.
Documented at https://www.unrealircd.org/docs/JSON-RPC:Channel
under "When using the channel.get API call, more details are available"
2023-01-05 16:39:59 +01:00
Bram Matthys ccbd320338 JSON-RPC over Websocket: don't close websocket connections after ~30s,
keep them open, but do a websocket ping/pong to check if the
connection is alive.
This is usually handled by browsers themselves, but if you are using
websockets from a non-browser then you may have to PONG back on
a PING, see https://www.rfc-editor.org/rfc/rfc6455#section-5.5.2
(note that PING-PONG is a requirement there)
2023-01-04 13:55:08 +01:00
Bram Matthys b33628b765 JSON-RPC over Websockets: Fix bug with >64Kb responses.
Eg if there are 10.000 users online and you do user.list.
The old websocket framing assumed no response was >64Kb.

This also creates a new function websocket_create_packet_ex()
2023-01-04 13:10:09 +01:00
Bram Matthys d6a3db4ad2 Add listener::mode so for file sockets you can specify the mode permissions.
Valid choices are 0700, 0770 and 0777, see the documentation at
https://www.unrealircd.org/docs/Listen_block

Unrelated: this also documents the ConfigItem_listen struct in struct.h.
2023-01-04 10:06:39 +01:00
Bram Matthys 8ca6341f38 When someone includes "rpc.modules.default.conf" create a *NIX
socket listening in data/rpc.socket, because why not... only the
ircd user has access to it by default (well, and root).

Don't add the external listener HTTP(S) port by default though,
because not everyone may want that exposed to the outside world.

The default creation of data/rpc.socket can be prevented by a
@define $NO_DEFAULT_RPC_SOCKET "1"
2023-01-03 19:34:04 +01:00
Bram Matthys dca5680665 Add snomask 'R' for RPC usage (JSON-RPC). 2023-01-03 17:44:29 +01:00
Bram Matthys b5c86981fa JSON-RPC server_ban.add: fix "duration_string" being interpreted totally wrong.
Something like "1h" was intepreted as unixtime 3600 (=expired long ago).
For absolute times there is already "expire_at" (JSON timestamp).

Now, "1h" is properly interpreted as meaning 1 hour from now, as intended.

This bumps the version of rpc/server_ban to 1.0.1.

Reported by armyn.
2023-01-03 10:03:15 +01:00
Bram Matthys 64e5de4c8c ExtBanAdd: Actually enforce conv_param as a required event.
This was documented as optional in include/modules.h but on
https://www.unrealircd.org/docs/Dev:Extended_Bans_API it
was always mentioned as required.
In practice, I know of no module that does not have this,
in UnrealIRCd or third party (doing zero filtering is
quite a bad idea).

Anyway, long story short: this also means we can remove some
(flawed) logic in src/api-extban.c in case conv_param was
NULL, which raised a compiler warning:

api-extban.c: In function ‘extban_conv_param_nuh_or_extban’:
cc1: error: function may return address of local variable [-Werror=return-local-addr]
api-extban.c:382:14: note: declared here
  382 |         char tmpbuf[USERLEN + NICKLEN + HOSTLEN + 32];
      |              ^~~~~~
2023-01-01 09:51:07 +01:00
Bram Matthys 6d81d04036 Re-add --enable-opt to sodium, and remove it from jansson.
This fixes the fix in 8d228f5dbe.

(--enable-opt in sodium enables additional CPU-specific optimization,
 --enable-opt in jansson does not exist and raised a warning)
2022-12-30 11:55:31 +01:00
Bram Matthys 3f197dee36 Fix several mistakes in example conf (all my bad, i think):
* A fatal parse error due to a } too much in Turkish example conf
* In all example*.conf except::connect-delay -> except::connect-time
2022-12-29 19:45:37 +01:00
Bram Matthys 75368e462a ** UnrealIRCd 6.0.5 ** 2022-12-29 10:07:19 +01:00
Bram Matthys 8952666c4f Update release notes
[skip ci]
2022-12-29 09:03:27 +01:00
Bram Matthys 6b7fa40443 Update release notes
[skip ci]
2022-12-29 08:52:32 +01:00
Valerie Pond eda57821ec Fix compile error due to previous commit (#246) 2022-12-26 18:04:37 +00:00
Bram Matthys 895bbd3a35 When authprompt kicks in and the session timeouts, show the original ban reason
from the *LINE (or other ban type).
Eg /GLINE %*@192.168.* 0 :Please authenticate using SASL
would now, if the user has authprompt enabled and the connection times
out, exit the client after ~30 secs with "Please authenticate using SASL",
instead of "Registration timeout" (pre 6.0.5-rc2) or
the generic "Account required to login" (6.0.5-rc2).
This to help clients and users who do not type or display anything.

This is an enhancement to https://bugs.unrealircd.org/view.php?id=6202

This also fixes a bug in 6.0.5-rc2 where "Registration timeout" was
always showing up as "Account required to connect", even if there
was no softban or authprompt intervention at all.
2022-12-26 10:21:59 +01:00
Bram Matthys 7897782747 *** UnrealIRCd 6.0.5-rc2 *** 2022-12-23 08:52:41 +01:00
Bram Matthys 4e171eca0d Update release notes
[skip ci]
2022-12-23 08:33:56 +01:00
Valerie Pond 58e83bbe58 Another fix for set::authentication-prompt::enabled 'no' being ignored (#245) 2022-12-21 16:21:30 +00:00
Bram Matthys eca0035e8d Actually fix previous-previous-commit cdd0e4116d 2022-12-21 10:09:23 +01:00
Bram Matthys eab827688d Fix RPC spamfilter.* (and tkl.*?) not going through fully net-wide
due to bogus sender.
[skip ci]
2022-12-21 10:06:23 +01:00
Bram Matthys cdd0e4116d RPC spamfilter.add: convert reason to underscores internally when adding 2022-12-21 09:57:53 +01:00
Bram Matthys 9b1c24c2fa When timing out on authprompt, error with "Account required to connect".
More ideally it would show the full *LINE reason but that is something
for a later release. Inspired by https://bugs.unrealircd.org/view.php?id=6202

This also fixes a silly typo that prevents compiling btw :D
2022-12-21 09:31:47 +01:00
Valerie Pond 7dedbf1a69 Fix set::authentication-prompt::enabled 'no' being ignored (#243) 2022-12-21 08:01:47 +00:00
Valerie Pond d4dbf62781 Fix link warning about moddata creationtime (#233)
This lets servers share their own creation time. See https://bugs.unrealircd.org/view.php?id=6193
2022-12-21 07:54:55 +00:00
Bram Matthys 2ff03be8a0 Log who actually initiated a /CONNECT (both local and remote).
Reported by Noisytoot in https://github.com/unrealircd/unrealircd/pull/244
2022-12-21 08:50:17 +01:00
Bram Matthys db30b3c7fc Rebuild ./configure due to previous commit 2022-12-18 08:50:14 +01:00
Sam James d9d423ad7a configure.ac: fix -Wimplicit-function-declaration (#242)
Clang 16 makes -Wimplicit-function-declaration error by default.
Unfortunately, this can lead to misconfiguration or miscompilation of software as configure
tests may then return the wrong result.
We also fix -Wstrict-prototypes while here as it's easy to do and it prepares us for C23.
2022-12-18 07:21:46 +00:00
Bram Matthys c31b4836c8 Reorder release notes a bit
[skip ci]
2022-12-14 19:52:35 +01:00
ZarTek @ CREOLE 06f1357698 Get rid of forgotten references to ./unrealircd upgrade-conf (#241) 2022-12-14 18:47:43 +00:00
ZarTek @ CREOLE b53f23416d Unrealircd to UnrealIRCd 2022-12-14 15:24:19 +00:00
ZarTek @ CREOLE 67ec21f4e9 unreal to unrealircd 2022-12-14 15:24:19 +00:00
ZarTek @ CREOLE 4e408d59de ./unreal to ./unrealircd 2022-12-14 14:58:11 +00:00
PeGaSuS 9f8dc9be40 Update help.conf
Adjust some examples to use the 'named' extended bans from UnrealIRCd 6
2022-12-14 14:56:33 +00:00
Bram Matthys 4992804f4e Enhance ./unrealircd start and ./unrealircd restart:
* The `./unrealircd start` command will now refuse to start if UnrealIRCd
  is already running.
* The `./unrealircd restart` command will validate the configuration file
  (it will call `./unrealircd configtest`). If there is a configuration
  error then the restart will not go through and the current UnrealIRCd
  process is kept running.
2022-12-12 14:58:20 +01:00
Bram Matthys 037f9d6dcf Add internal timeout to unrealircdctl, just in case UnrealIRCd hangs.
This because we will soon use that script for 'start' too...
[skip ci]
2022-12-12 14:54:07 +01:00
Bram Matthys b7f2ce9fd8 Show better error on ./unrealircd start when .so files are missing.
And refer to https://www.unrealircd.org/docs/FAQ#shared-library-error
2022-12-12 09:22:24 +01:00
Bram Matthys 165639a007 Fix ExtBanAdd() for bans that are registered in both MOD_TEST and MOD_INIT
leading to duplicates. The effect was that in the 005 EXTBAN= string some
letters showed up twice like EXTBAN=~,aacfjmnpqrrtCCGGOSST.
Reported by jesse in https://bugs.unrealircd.org/view.php?id=6199
2022-12-10 10:39:51 +01:00
Bram Matthys 6ae5c9d77f Fix leak of 1 file descriptor per /REHASH (the control socket).
In "/STATS P" one additional UNIX control socket appeared after
each "/REHASH". Reported by jesse.
2022-12-07 12:33:12 +01:00
Bram Matthys c56d0b7f18 Update release notes: fix browser reference, has to be <1.2 and not =1.2. 2022-12-07 12:26:12 +01:00
Bram Matthys 85537efdbd BuildBot on Windows: Updates for new libraries
[skip ci]
2022-12-07 11:03:17 +01:00
Bram Matthys e29b815c13 Update shipped argon2: change Makefile to use 'lib' directory instead of subdir
Otherwise things get installed in ~/unrealircd/lib/x86_64-linux-gnu/
which confuses the rest of the system and has no added value whatsoever
in our case.
2022-12-07 09:45:59 +01:00
Bram Matthys ac5c517774 *** UnrealIRCd 6.0.5-rc1 ***
Sorry the bb0a50d839 from 30min ago
should not have had that same/similar comment ;)
2022-12-07 09:11:22 +01:00
Bram Matthys 8d228f5dbe Remove unused --enable-opt argument to jansson ./configure 2022-12-07 09:06:42 +01:00
Bram Matthys 8f311bb975 Update shipped argon2 to 20190702 (latest release)
from https://github.com/P-H-C/phc-winner-argon2/releases
2022-12-07 09:00:42 +01:00
Bram Matthys efaba7f91e Rename argon2-20181209.tar.gz to argon2.tar.gz so name keeps consistent
like all the other shipped libs.
2022-12-07 08:57:59 +01:00
Bram Matthys bb0a50d839 ** UnrealIRCd 6.0.5-rc1 ** 2022-12-07 08:53:44 +01:00
Bram Matthys 36a8949d59 Fix "/STATS o" returning (null) items when advanced matching criteria
are being used. This also applies to similar use in some other /STATS
like tld blocks.

Reported by darkex in https://bugs.unrealircd.org/view.php?id=6189
2022-12-07 08:30:52 +01:00
Bram Matthys 7bab7144ed Send empty batch on CHATHISTORY request for a user (non-channel),
which makes it similar behavior to channels that are not +H.
2022-12-07 08:15:41 +01:00
Valentin Lorentz 7bacf25845 Add ACCOUNTEXTBAN ISUPPORT token
To support the draft IRCv3 spec: https://github.com/ircv3/ircv3-specifications/pull/464
2022-12-07 07:00:35 +00:00
Bram Matthys 36d9e8e720 RPC spamfilter.*: fix validations not working due to changes yesterday 2022-12-06 17:20:29 +01:00
Bram Matthys fe8661da3d RPC: implement spamfilter.del and spamfilter.get 2022-12-05 15:41:09 +01:00
Bram Matthys 61e68d65da Update a comment
[skip ci]
2022-12-05 14:51:22 +01:00
Bram Matthys d9ac4cac07 Add RPC 'rpc.info': returns list of RPC methods, RPC module name and version.
This can be useful for checking if a server supports something and what
format it expects or returns things, etc.
2022-12-05 14:48:14 +01:00
Bram Matthys 5b0899ac4f And more release notes updates...
[skip ci]
2022-12-05 09:48:30 +01:00
Bram Matthys 24b3532a83 Update release notes
[skip ci]
2022-12-05 09:24:37 +01:00
Bram Matthys 44306b597d Update release notes for 6.0.5 2022-12-05 09:10:50 +01:00
Bram Matthys 44394e2f35 Update README.md
Get rid of the basic instructions, as people should really follow the installation
guide on the wiki. Too often we see people using these half-instructions (since
they are not fully complete) and get themselves into trouble.
2022-12-01 17:17:11 +00:00
Bram Matthys 6fe5630b1c BuildBot: update cipherscan profiles (all new baseline now? makes it easy..) 2022-11-27 17:44:45 +01:00
Bram Matthys ee1f8d84a0 Require TLSv1.2 or later and require a modern cipher with forward secrecy.
This also fixes a bug with OpenSSL 3.x where, when the ircd was
configured to still allow old TLSv1.0 / TLSv1.1, it would still
only allow TLSv1.2+.

But, as said, allowing TLSv1.0/TLSv1.1 is now no longer the default.

See release notes for more information or the documentation at
https://www.unrealircd.org/docs/TLS_Ciphers_and_protocols
2022-11-27 17:04:22 +01:00
Bram Matthys cfea8b32f0 BuildBot: install modules after and not before 'make install',
and check exit status
2022-11-27 16:16:06 +01:00
Bram Matthys 5ee4c503a7 Update release notes 2022-11-18 18:39:51 +01:00
Bram Matthys 419fff13ec Mention that websocket users must now load the webserver module too.
Reported by PeGaSuS in https://github.com/unrealircd/unrealircd/pull/234
2022-11-18 18:37:37 +01:00
Bram Matthys c756c87be2 Update blacklist::reason changing the $variables there.
This changes the work of commit 2cf60f66a3.
    $ip: IP address of the banned user
    $server: name of the IRC server
    $blacklist: name of the blacklist block (eg. xyz for blacklist xyz { })
    $dnsname: the blacklist::dns::name
    $dnsreply: DNS reply code

Previously there was a $name which was ambigious in the sense that
it could mean blacklist name or dns name, now we simply avoid using
$name altogether and use $dnsname and (new) $blacklist.
2022-11-18 12:25:30 +01:00
Bram Matthys 475fe46d95 Add 6.0.4.2 release notes. 2022-11-18 10:34:52 +01:00
Ron Nazarov 4999ae408c Add TLINE command
Suggested by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6174
2022-11-18 08:53:36 +00:00
Bram Matthys ea5c3922ad Update Makefile.windows for src/modules/svslogin.c
Related to previous commit 1a4b701776
2022-11-14 08:45:33 +01:00
Valerie Pond 1a4b701776 SVSLOGIN: Move to its own file
Moved SVSLOGIN command to its own file.
2022-11-14 07:43:43 +00:00
alice b3f0165773 Adjust tkl too broad ban detection to avoid banning too-wide IPv6 masks.
This adjusts the test to disallow a ban on *@*:*:*:*:*, to bring it into line with similar behaviour for IPv4.
2022-11-14 07:23:55 +00:00
westor 2cf60f66a3 Add on blacklist module two extra variables
Added the ability to specify `$name` and `$reply` variables on ban reason,

`$name` would be filled with blacklist dns name data
`$reply` would be filled with blacklist dns reply data.
2022-11-14 07:21:45 +00:00
Valentin Lorentz b01caa945f Use stable 'extended-monitor' capability name
https://ircv3.net/specs/extensions/extended-monitor was ratified
yesterday: https://github.com/ircv3/ircv3-specifications/pull/508
2022-11-14 07:19:43 +00:00
Valentin Lorentz a7716f8981 Add support for the stable 'bot' mtag
https://ircv3.net/specs/extensions/bot-mode was ratified a few months ago
(https://github.com/ircv3/ircv3-specifications/pull/495)

This commit keeps the draft mtag in addition to the stable one, for now.
2022-11-14 07:19:21 +00:00
Bram Matthys 2d61cded0d Show jansson library version in boot screen and elsewhere IF library version
is 2.13 or newer, as this requires jansson_version_str().

And no, we don't use macro's (eg JANSSON_MAJOR_VERSION). We never do that for
any of the displayed library versions (OpenSSL, libsodium, c-ares, curl, etc)
as macro's only reflect the compile-time library version and not runtime,
and thus are misleading... which can be especially problematic in case of a
security issue. So good that jansson added this function.
2022-11-04 14:16:50 +01:00
Bram Matthys 7a5f83e0b6 Make REHASH always asynchronous (done in the main loop).
This means it is safe to REHASH from modules now, which means
issuing a REHASH from a websocket connection is now possible.
2022-11-04 12:43:02 +01:00
Bram Matthys c3824ad47d Fix potentially sending invalid data over websockets on REHASH.
This makes websocket_common unload last (and near-last: rpc & websocket)
and makes us call Mod_Init for these three modules first.
This way, the period where the websocket handler is unavailable is kept
to a minimum.

This also renames the ModuleSetOptions option MOD_OPT_UNLOAD_PRIORITY
to MOD_OPT_PRIORITY since it dynamically changes the module priority
in the list. For 6.x compatibility, MOD_OPT_UNLOAD_PRIORITY can still
be used.
2022-11-04 10:54:53 +01:00
Bram Matthys 02285f468d Update Turkish example conf & help conf
Provided by Diablo - (Serkan Sepetçi)
2022-10-21 13:42:24 +02:00
Bram Matthys 3de3087c95 Fix read-after-free when linking in a server (that is fully authenticated)
when there is already another established link with a server with the same name.
For example, when there is a network issue and the "old server" is still
waiting to be timed out and the "new server" is already linking in.
2022-10-01 08:48:44 +02:00
Bram Matthys 8b0b3d70ff Fix crash on REHASH with server linked (6.0.5-git only, due to websocket split) 2022-09-26 15:17:27 +02:00
Bram Matthys 8bed87e369 Port 6.0.4.1 release notes which is basically cherry picking
commit 0e6fc07bd9 and
commit 0d139c6e7c from 6.0.5-git
2022-08-29 10:12:06 +02:00
Bram Matthys dc55c3ec9f Add CALL_CMD_FUNC(cmd_func_name) and use it.
This is only for calls within the same module, as otherwise you
should use do_cmd().

Benefit of this way is that it is short and you don't have to worry
about passing the right command parameters, which may change over time.
Example as used in src/modules/nick.c:
-               cmd_nick_remote(client, recv_mtags, parc, parv);
+               CALL_CMD_FUNC(cmd_nick_remote);
2022-08-28 09:04:12 +02:00
Bram Matthys 4e5598b6cf Create and use new CALL_NEXT_COMMAND_OVERRIDE() instead of CallCommandOverride().
This is an easier way to call the next command override handler from command
override functions. It passes the standard parameters so you don't have to
worry about which parameters a CMD_OVERRIDE_FUNC() contains.
This so it is easier to change command parameters in future UnrealIRCd versions,
should it be needed, then it may be possible without any source code changes
on the module developer side.

-       CallCommandOverride(ovr, client, recv_mtags, parc, parv);
+       CALL_NEXT_COMMAND_OVERRIDE();
2022-08-28 08:52:51 +02:00
Bram Matthys 24e3d39aea Update windows setup.h for last change.
[skip ci]
2022-08-20 14:06:54 +02:00
Bram Matthys 401ab6f5a1 Make strlncpy() and strlncat() use strlncat() instead of strlen().
This fixes a possible crash when using RPC with unix domain sockets,
reported by Valware.

This also adds a configure check so we use our own strlncat if the
C library does not have one, e.g. some non-Linux.
2022-08-20 13:50:19 +02:00
Bram Matthys 3ca99ddd52 Fix JSON-RPC response, should be in "result" and not in "response".
This breaks all the current script(s) that depend on it, of course,
but makes us correctly conform to the JSON-RPC specification.
Reported by Valware.
2022-08-17 16:56:33 +02:00
Bram Matthys 0d139c6e7c Make /INVITE bypass (nearly) all channel mode restrictions, as it used to be
and as it should be IMO. Both for invites by channel ops and for OperOverride.

This also fixes a bug where an IRCOp with OperOverride could not bypass +l
and other restrictions. Only +b and +i could be bypassed.

Module coders: HOOKTYPE_OPER_INVITE_BAN is now gone and HOOKTYPE_INVITE_BYPASS
is now new. The HOOKTYPE_INVITE_BYPASS is called when the user is joining
a channel to which they were invited to. If you return HOOK_DENY there then
the join is still blocked, otherwise it is allowed.
Using this hook would be sortof unusual since usually you would want users
to be able to bypass restrictions when they were invited by another user
or when they invited themselves using OperOverride.
The only example where we use it in UnrealIRCd is for +O channels so an
IRCOp cannot use OperOverride to join +O channels when they would otherwise
not be allowed to do so. Actually even that is a corner case that you could
debate about, but.. whatever.
2022-08-06 15:52:16 +02:00
Bram Matthys 55c52c3693 Log file (log::destination::file) now creates directory structure if needed.
You could already have something like:
log { source { !debug; all; } destination { file "ircd.%Y-%m-%d.log"; } }
But now you can also have:
log { source { !debug; all; } destination { file "%Y-%m-%d/ircd.log"; } }

This is especially useful if you output to multiple log files and then
want them grouped by date in a directory.
2022-08-05 13:02:19 +02:00
Bram Matthys 0e6fc07bd9 Update verify_link() to return rather than set the link block in a variable.
Hopefully this fixes a crash when linking (succesfully authenticated) servers,
something which only happens with GCC and only for some people in some cases.
2022-08-03 14:55:37 +02:00
Bram Matthys 7267d81278 RPC: add spamfilter.list and spamfilter.add calls. 2022-08-02 09:28:09 +02:00
Bram Matthys 574419a607 For JSON spamfilter output: add "ban_duration" and "ban_duration_string" 2022-08-02 09:21:36 +02:00
Bram Matthys eb9aff4c1c RPC: user.get: use JSON_RPC_ERROR_NOT_FOUND if user is not found. 2022-08-02 08:31:46 +02:00
Bram Matthys b079aa3498 RPC: Fix "id" not showing up in error responses.
rpc_error() and rpc_error_fmt() were called with a NULL request.
This also fixes logging of RPC errors to show the name of the RPC call.
2022-08-02 08:30:03 +02:00
Bram Matthys 6749ab4e0c RPC: server_ban: add handling of "expire_at".
Was previously always setting expiry to 5 seconds as a placeholder/TODO.
2022-08-02 08:22:28 +02:00
Bram Matthys 970cd60698 Use timestamp_iso8601() from server-time module (less duplicate code). 2022-08-02 08:13:49 +02:00
Bram Matthys 8fae1d9306 Show mode parameters when an IRCOp does MODE #channel, that is:
for a channel they are not in, if they have the channel:see:mode:remote
permission. This permission is included in all operclasses by default,
just like how this is already the case for channel:see:mode:remotebanlist
and other related permissions.

Reported by alice.
2022-07-03 09:07:45 +02:00
Bram Matthys bfcde12338 Fix internal function convert_regular_ban() to actually use the buffer
that it was provided. Duh!

(bug introduced 2 days ago in 7371498ffd)
2022-07-03 08:58:32 +02:00
Bram Matthys 514a1f6430 Clean up the listener code (code deduplication 3x -> 1x helper) and
also fix a small memory leak on rehash due to listener->webserver not
being freed.

Hopefully this doesn't break anything ;)
2022-07-02 08:27:00 +02:00
Bram Matthys 7371498ffd Make auto-expansion work for IPv6 bans as well: +b A:B:C:IP -> *!*@A:B:C:IP.
Reported by armyn in https://bugs.unrealircd.org/view.php?id=6147

This also adds a new function convert_regular_ban() which is now
used by both clean_ban_mask() and extban_conv_param_nuh().
2022-07-01 10:13:57 +02:00
Bram Matthys 8703d883dd Fix crash with ip change vs 'connect-flood' module. 2022-06-28 17:28:44 +02:00
Bram Matthys a3fb6bc07b Remove leftover of a copypaste in json_expand_tkl() causing a memory leak. 2022-06-27 10:51:15 +02:00
Bram Matthys c85f666fed Fix server_ban_parse_mask() returning with variables set to local storage.
More precise, for extended server bans, usermask/hostmask was set to
a local variable that was not defined as static char[]. This would lead
to corrupt data and/or crashes.

Bug introduced a few days ago with 3d9b7e4b70
2022-06-27 10:49:46 +02:00
Bram Matthys 1d701cb7d4 Remove old "TODO" item in conf file.
[skip ci]
2022-06-25 09:52:15 +02:00
Bram Matthys 29dc2e1e47 Fix REMOTE_CLIENT_JOIN not showing up for remote joins.
There was log code for "JOIN" but not for "SJOIN". Added now.
Reported by ComputerTech in https://bugs.unrealircd.org/view.php?id=6141
2022-06-25 09:17:07 +02:00
Bram Matthys c60fdad7eb RPC: add server_ban.add
This also moves some of the adding code (sending notice, broadcasting to
other servers, etc) to a function tkl_added().

We should probably do the same for deletion and not use the tkllayer
anymore for that?
2022-06-24 19:49:32 +02:00
Bram Matthys 2c1457ae6b RPC: add server_ban.del 2022-06-24 19:18:39 +02:00
Bram Matthys 3d9b7e4b70 RPC: remove tkl, split this up.. starting with server_ban.
Currently available:
* server_ban.list
* server_ban.get with params: name="*@1.2.3.4", type="kline"

This also adds server_ban_parse_mask() which is now used by both GLINE/etc
and the RPC API to parse the same way and convey the same error messages.
2022-06-24 18:53:10 +02:00
Bram Matthys 6596741638 Add rpc.modules.default.conf, loads all required modules for JSON-RPC. 2022-06-24 13:44:41 +02:00
Bram Matthys d3697b8684 RPC: add tkl.list 2022-06-24 13:33:20 +02:00
Bram Matthys 36946c6c51 Move JSON stuff from log.c to json.c now that it is more universal. 2022-06-24 13:21:27 +02:00
Bram Matthys 14215e1837 Fix two memory leaks in RPC:
* on REHASH rpc-user block name was not freed
* temporary construct was not freed (if params was missing)
2022-06-22 14:54:51 +02:00
Bram Matthys fdf0d545d7 Split rpc_client_handshake() into rpc_client_handshake_unix_socket()
and rpc_client_handshake_web().

Makes the code easier to follow / less chance of mistakes.
2022-06-22 13:53:56 +02:00
Bram Matthys 25d5ae93e6 Do some sanity checking in webserver (fixes crash) 2022-06-22 13:45:54 +02:00
Bram Matthys faffe7c9a8 Fix crash in webserver 2022-06-21 17:56:25 +02:00
Bram Matthys 7c8918e22d Update rpc_error() to use JsonRpcError (enum) and add more error values. 2022-06-20 19:02:52 +02:00
Bram Matthys b38b0f5086 Set loop.config_state to one of CONFIG_STATE_* so modules (and core)
can track at what step we are during configuration file and module
processing.
2022-06-20 12:54:22 +02:00
Bram Matthys 0a4c6e877d Fix crash if 'websocket' is loaded without 'websocket_common'.
Previously we did show a warning but we could crash a millisecond
later so that wasn't particularly helpful.
Now, is_module_loaded() can be used from HOOKTYPE_CONFIGPOSTTEST
to detect if a module is loaded or not, contrary to us having to
do it in MOD_LOAD when it is too late. So now the requirement is
really enforced and also works for hot-loading as well as
unloading of required modules is now prevented.
2022-06-20 08:54:53 +02:00
Bram Matthys a14609f493 Fix small memory leak in webserver. 2022-06-20 08:25:46 +02:00
Bram Matthys 26ab79132b Fix memory leak in webserver for HTTPS POST. 2022-06-19 20:47:48 +02:00
Bram Matthys bbf9600504 Mention JSON-RPC documentation in early release notes.
https://www.unrealircd.org/docs/JSON-RPC
[skip ci]
2022-06-19 20:28:51 +02:00
Bram Matthys 1fe6119026 Make tld::motd and tld::rules optional.
Suggested by Jellis in https://bugs.unrealircd.org/view.php?id=6072
2022-06-19 20:15:00 +02:00
Bram Matthys 55387a8aa4 RPC: Fix strchr() on non-nul-terminated string (leading to OOB read) 2022-06-19 17:59:05 +02:00
Bram Matthys 85784e8118 Bump version to 6.0.5-git 2022-06-19 16:30:50 +02:00
Bram Matthys 8b2caf5501 Make listen::options::rpc implicitly enable TLS, so nobody
accidentally allows JSON-RPC over insecure HTTP.
2022-06-19 16:17:15 +02:00
Bram Matthys 5301ab5be8 Add some TODO items 2022-06-19 13:13:33 +00:00
Bram Matthys 941439a710 Use RPC_CALL_FUNC() just like how we have CMD_FUNC() 2022-06-19 13:13:33 +00:00
Bram Matthys c24a8e43e3 Fix outdated doxygen information on CMD_FUNC() 2022-06-19 13:13:33 +00:00
Bram Matthys f99085fc03 RPC: add user.get() 2022-06-19 13:13:33 +00:00
Bram Matthys 0e60b8bbfb RPC: Add ?username=xyz&password=zzz authentication as well
FIXME: move URI parsing to 'webserver' and deal with unescaping %xx
2022-06-19 13:13:33 +00:00
Bram Matthys c611f18d56 RPC: Add rpc-user { } block and do authentication 2022-06-19 13:13:33 +00:00
Bram Matthys ab999659fc Remove some FIXME's and cleanup code a little bit. 2022-06-19 13:13:33 +00:00
Bram Matthys feb2c9c418 Don't print "Link to server [..] closed" for RPC and control sockets. 2022-06-19 13:13:33 +00:00
Bram Matthys e718d2021f Make websocket work over RPC 2022-06-19 13:13:33 +00:00
Bram Matthys 853f0685ed Split off big chunk of websocket module into websocket_common module.
And load the websocket_common module by default (which is just an API).
2022-06-19 13:13:33 +00:00
Bram Matthys 7679ec7920 Get rid of cast, do things properly. 2022-06-19 13:13:33 +00:00
Bram Matthys 0eb42155dd Limit request body to 4k by default. 2022-06-19 13:13:33 +00:00
Bram Matthys 3e35b8e96a Small code cleanup 2022-06-19 13:13:33 +00:00
Bram Matthys 467e3d847a Handle chunked encoding in webserver (mostly meant for RPC). 2022-06-19 13:13:33 +00:00
Bram Matthys 4a68008b81 Rename some more:
* WEB() now has handle_request() and handle_body(), makes more sense.
* webserver_handle_body_data() -> webserver_handle_body()
* and similar cases
2022-06-19 13:13:33 +00:00
Bram Matthys 12f2cd8555 Rename webserver_handle_body_data() -> webserver_handle_request_body() 2022-06-19 13:13:33 +00:00
Bram Matthys 9afdcb7ff0 Add request body handler in webserver -- only a beginning, the
chunked encoding stuff is copied from the modulemanager and #if'd out.
The non-chunked is not OK yet either, as it must check the Content-Length,
while we currently assume a single packet == the complete request.
2022-06-19 13:13:33 +00:00
Bram Matthys cf60b22b31 Close RPC web connection immediately when all has been sent. 2022-06-19 13:13:33 +00:00
Bram Matthys f9794c7ed5 Make RPC API work over HTTP(S). Well, first steps, anyway.
* No ACL checking yet
* No chunked encoding support
* No multi-frame support
etc...
2022-06-19 13:13:33 +00:00
Bram Matthys b710fb188b Add get_nvplist() function.
Requested by westor in https://bugs.unrealircd.org/view.php?id=6125
2022-06-19 13:13:33 +00:00
Bram Matthys 5e81a6ee67 Add listener->start_handshake function pointer.
This is start_of_normal_client_handshake() by default, but is
start_of_control_client_handshake() for the control channel
(for './unrealircd rehash' and such). Previously that was hardcoded.

It is also used by the RPC code now.
2022-06-19 13:13:33 +00:00
Bram Matthys 2bf41a47d2 Don't check for connect-flood on RPC connections.
Same for control channel, even though it was harmless to check,
still... can now skip it so why not?
2022-06-19 13:13:33 +00:00
Bram Matthys 46588db89a Fix rehash crash since adding RPC code. 2022-06-19 13:13:33 +00:00
Bram Matthys 2c8fc5e641 Move special handling of control socket to procio_server.c.
Things like setting the client->status to CLIENT_STATUS_CONTROL
and list_add(&client->lclient_node, &control_list);

This does mean that we now add clients earlier to the unknown list,
even ones that are going to be control sockets and clients that are
going to be z-lined etc, but it should be a minimal performance hit
since it are just 1-4 insertions in a circular list.
At the same time it makes the code more cleaner and more maintainable
especially with all the "special cases" and such that are there now
and will only become more and more...
2022-06-19 13:13:33 +00:00
Bram Matthys df8c5cfd76 Add ability to skip connect-flood and zlined checks via listener->options
with LISTENER_NO_CHECK_CONNECT_FLOOD and LISTENER_NO_CHECK_ZLINED.
2022-06-19 13:13:33 +00:00
Bram Matthys 29eb89a528 Attach client->local->listener to a client very early, now that it is safe.
This makes other code safer as well since they can assume that if the
client is local (client->local) that the listener (client->local->listener)
is non-NULL and safe to access until the client is completely destroyed.
2022-06-19 13:13:33 +00:00
Bram Matthys 1d613a592c Remove freeing of client->local->listener and refdec from exit_client()
to free_client().
2022-06-19 13:13:33 +00:00
Bram Matthys 60c83b4ba1 Move connect-flood and max-unknown-connections-per-ip into their own module.
These deal with set::anti-flood::everyone::connect-flood and
set::max-unknown-connections-per-ip respectively.

This adds a new hook HOOKTYPE_ACCEPT, that is mostly meant for internal
usage by UnrealIRCd. Most module coders will want to use the existing
hook HOOKTYPE_HANDSHAKE instead.

This also gets of check_banned() which is now spread over the individual
modules (eg: checking banned is done in tkl on HOOKTYPE_ACCEPT and
HOOKTYPE_IP_CHANGE).
2022-06-19 13:13:33 +00:00
Bram Matthys a09d4a7e88 Add CLIENT_STATUS_RPC and add SetRPC() and IsRPC(). 2022-06-19 13:13:33 +00:00
Bram Matthys 6b30482c04 Don't apply registration timeout to *NIX domain socket connections.
May want to reconsider this but.. for now..
2022-06-19 13:13:33 +00:00
Bram Matthys 1830f3e53f Add RPC channel.list call to show list of channels (with all details) 2022-06-19 13:13:33 +00:00
Bram Matthys 61ba3727df JSON-RPC: Use proper error response with error codes according to
the official specification (one of JSON_RPC_ERROR_*).

Add proper rpc_error() and rpc_error_fmt()

Don't steal reference in rpc_response().
2022-06-19 13:13:33 +00:00
Bram Matthys 4cd520d327 Make user.list() RPC API return a list of all users with details.
This is the 1st RPC API call that actually works :D
2022-06-19 13:13:33 +00:00
Bram Matthys 31fc2843a2 Add "rpc" module. Supports parsing from *NIX domain sockets for starters. 2022-06-19 13:13:33 +00:00
Bram Matthys 53732e0f78 Warn if 'websocket' module is loaded without 'webserver' (= won't work). 2022-06-19 13:13:33 +00:00
Bram Matthys b9d1af8fa0 Call config run hooks for CONFIG_LISTEN and CONFIG_LISTEN_OPTIONS also
for unix domain sockets.
2022-06-19 13:13:33 +00:00
Bram Matthys 0134c435d5 Don't apply handshake-delay to any *NIX domain socket connections,
instead of only exempting *NIX domain socket control channels.
2022-06-19 13:13:33 +00:00
Bram Matthys cbfcfa1428 Create src/modules/rpc directory 2022-06-19 13:13:33 +00:00
Bram Matthys 97c8274695 Add RPC API (the beginning..) 2022-06-19 13:13:33 +00:00
Bram Matthys 2397fb8a49 Split 'websocket' module up in 'webserver' and 'websocket' 2022-06-19 13:13:33 +00:00
Bram Matthys 0c32151be1 Sort modes returned by "MODE #channel" (request) 2022-06-18 15:08:45 +02:00
alice 4b72f375f8 Update help.conf to include ~security-group extban (#220) 2022-06-17 15:06:01 +00:00
Bram Matthys 3a354c3410 Fix some typos in markdown of release notes.
[skip ci]
2022-06-17 13:59:39 +02:00
Bram Matthys 88190d08c4 ** UnrealIRCd 6.0.4 ** 2022-06-17 13:33:13 +02:00
Bram Matthys 8ea7fcfc9f Fix tld::mask not working with the new form.
Reported by musk.
2022-06-08 08:22:14 +02:00
Bram Matthys b5f35dfff5 Fix regular users being able to -o a service bot (that has umode +S).
Reported by ComputerTech in https://bugs.unrealircd.org/view.php?id=6126

HOOKTYPE_MODE_DEOP wasn't called.
2022-06-08 07:37:03 +02:00
Bram Matthys 8fe7b1bc41 Fix wrong security-group example in release notes for auto oper up.
This should be:
security-group Syzop { certfp "1234etc."; }
As this is wrong:
security-group Syzop { mask { certfp "1234etc."; } }

Reported by Han`.

This also makes us throw a config error on the wrong case.
2022-06-05 08:42:05 +02:00
Bram Matthys 28d3875aa9 Make variables in set::reject-message and other buildvarstring() usage
no longer expand shorter versions of a variable. It previously had some
unintended form of magic autocomplete where $serv was handled the same
way as if it was $server. This could cause issues in the long run when
variables are added and the meaning of the short form changes.

Reported by westor in https://bugs.unrealircd.org/view.php?id=6123
2022-06-05 08:17:06 +02:00
Bram Matthys 020c3d1fa3 ** UnrealIRCd 6.0.4-rc2 ** 2022-06-03 18:48:52 +02:00
Bram Matthys 1311c8a963 Fix connthrottle message when throttling (bug introduced in 6.0.4-rc1).
Reported by westor in https://bugs.unrealircd.org/view.php?id=6121
2022-06-01 08:49:35 +02:00
Bram Matthys d5989695e8 Remove last global 'buf' variables. This was already done a lot in time
but it seems there were still a couple left. These are now gone as well.
There seem to be no issues with the ones that were left, but it is just
too easy to get it wrong. Declaring buf in function now. This should be
faster anyway, since it is located on nearby memory (stack).

Inspired by previous find from westor (c708a99955c034e842f913479cc597d87b311394).
2022-06-01 08:34:48 +02:00
Bram Matthys d3f655cb63 Fix space stripping at end of connect and disconnect message, in the
"extended_client_info". Was a typo, 'buf' vs 'retbuf'.
Reported by westor in https://github.com/unrealircd/unrealircd/pull/217
2022-06-01 08:21:03 +02:00
Bram Matthys 731adb308d set::restrict-commands: better error message if you use the same command twice (or more) 2022-05-30 13:05:04 +02:00
Bram Matthys 6ef1a6a708 Update set::antirandom example in modules.optional.conf.
Use the new options in the new ::except block, fix broken English
and trim down the text a bit.
This also lowers the threshold from 7 to 6. It was already 5 in
the example block on the wiki, now the wiki and this are the same
again.
2022-05-30 12:59:44 +02:00
Bram Matthys b4f6c83821 Fix multiline log messages not working, they showed up as single lines
with their content added together.
2022-05-30 08:59:44 +02:00
Bram Matthys c8ef9b2740 Fix set::restrict-commands::except not working. Reported by Rain. 2022-05-29 15:13:12 +02:00
musk cb9ffd9e17 Update example.fr.conf (#216) 2022-05-29 12:27:29 +00:00
musk dc5a7326cd Update example.es.conf (#215)
Add translation of channel history block.
2022-05-29 06:23:34 +00:00
Bram Matthys b183a3ea7a Add -Wno-format-overflow as unfortunately this option is too dumb.
Eg it warns on sprintf() usage even if there is a strlen() check right above it.

Fixes compile warning on Ubuntu 22.04 / GCC 11.
2022-05-28 18:13:35 +02:00
Bram Matthys 965bfa441b Crash reporter: use fclose() and not pclose() since this particular
file descriptor was opened by fopen() and not popen().
Fixes compile warning on Ubuntu 22.04 / GCC 11.
[skip ci]
2022-05-28 18:00:24 +02:00
Bram Matthys 2f31a8800b Add missing blacklist { } blocks to example.fr.conf
copy-paste from the English one, pending translation by... someone.
[skip ci]
2022-05-28 08:06:26 +02:00
Bram Matthys 0495953f55 Update example.tr.conf with 6.0.4 example.conf.
Note that set::conthrottle::except needs a new translation,
and CHANNEL HISTORY needs translation too.
[skip ci]
2022-05-28 08:01:14 +02:00
Bram Matthys 54a2645f21 Update example.fr.conf with 6.0.4 example.conf.
Note that various parts are now in English, pending translation to French.
[skip ci]
2022-05-28 07:59:15 +02:00
Bram Matthys a18316a737 Update example.es.conf with 6.0.4 example.conf.
Note that set::conthrottle::except needs a new translation,
and CHANNEL HISTORY needs translation too.
2022-05-28 07:58:19 +02:00
Bram Matthys 25e7142716 Re-indent this monster (example.es.conf)
[skip ci]
2022-05-28 07:47:43 +02:00
ZarTek @ CREOLE bd7b90354d Remove .asc file after ./unrealircd upgrade (#212) 2022-05-27 14:35:10 +00:00
Bram Matthys 9c8cd52057 Add the oper auto-login example to release notes
[skip ci]
2022-05-26 21:15:56 +02:00
Bram Matthys d47fdbede4 Add oper::auto-login. When set to yes, opers are automatically logged in
if the oper block permits, the user does not have to send "OPER xyz".

Eg:
security-group Syzop { certfp "xyz"; }
oper Syzop {
	auto-login yes;
        mask { security-group Syzop; }
        operclass netadmin-with-override;
        class opers;
}

Then, if you connect with SSL with that certificate fingerprint,
you become IRCOp automatically.
2022-05-26 21:01:13 +02:00
Bram Matthys c183c06d06 Move HOOKTYPE_LOCAL_CONNECT slightly further down.
[skip ci]
2022-05-26 20:56:36 +02:00
Bram Matthys 96897289e0 Allow oper block without password, now that you can use security-group
and other selectors in 'mask'. This allows for things like:

security-group Syzop { certfp "xyz"; }

oper Syzop {
	mask { security-group Syzop; }
	operclass netadmin-with-override;
	class opers;
}

except ban {
	mask { security-group Syzop; }
	type all;
}

allow {
	mask { security-group Syzop; }
	class special;
	maxperip 32;
}

etc...

We do error on the obvious case of mask * and mask *@* when no password
is set, but otherwise try not to stop all cases of user stupidity
(there are just too many...).
2022-05-26 20:31:28 +02:00
Bram Matthys a4902e121c Fix crash when using 'account' in 'except ban'. 2022-05-26 17:31:45 +02:00
Bram Matthys 960c3cc1c1 And a similar fix for multi account, eg security-group xyz { account { a; b; c; } } 2022-05-26 17:21:30 +02:00
Bram Matthys fba0249ec3 Fix for when using security-group xyz { security-group { a; b; c; } } 2022-05-26 17:11:47 +02:00
Bram Matthys c9f8c42281 Fix CIDR not working in match { ip ....; } 2022-05-26 17:03:17 +02:00
Bram Matthys 6802156c02 Document channel history in example.conf as persistent history is likely
something people would want to enable, and perhaps the limits tweaked too.
Suggested by ZarTek-Creole in https://github.com/unrealircd/unrealircd/pull/211
2022-05-26 08:25:34 +02:00
Bram Matthys 82063a48ec Use single quotes in set::webredir::url example.
Suggested by ZarTek-Creole in https://github.com/unrealircd/unrealircd/pull/208
2022-05-26 07:36:11 +02:00
Bram Matthys fe11f77be6 Fix +H not working in set::modes-on-join.
Reported by ZarTek-Creole in https://bugs.unrealircd.org/view.php?id=6114

We now call HOOKTYPE_LOCAL_CHANMODE on the modes we set in modes-on-join,
where 'client' is '&me'. Should be fine, as we already did the same for
+P modes (indirectly) in channeldb.
2022-05-26 07:14:12 +02:00
Bram Matthys 1548137e31 Document SVSO being back again :) 2022-05-25 20:29:09 +02:00
Bram Matthys d1311a124b Make ./Config import settings from 6.0.3 2022-05-25 18:27:10 +02:00
Bram Matthys 3936059768 ** UnrealIRCd 6.0.4-rc1 ** 2022-05-25 17:14:32 +02:00
Bram Matthys c86e5a3c2d Fix memory leak on REHASH when using parameter modes in set::modes-on-join 2022-05-25 16:52:41 +02:00
Bram Matthys 4deeec015b Fix small memory leak in extban API (when unloading module) 2022-05-25 16:46:34 +02:00
Bram Matthys ce6be5df61 Reputation was synced correctly on IP basis (and thus the databases)
across servers if they differed, however the individual IP of users
was not updated until next add_scores() run. So, there would be an
up to 5 minute delay during which scores for individual users were
possibly too low, with all the effects that it could possibly have
nowadays such as restrict-commands, more stringent flood limits, etc.

If your servers are all linked all the time then you would not have
noticed this issue. It mostly matters if you are linking in a new
server or if the server has been delinked or out of order for days
or weeks.
2022-05-25 16:40:06 +02:00
Bram Matthys 9ed38c437a Fix crash on Windows when using the "Rehash" GUI option.
Reported by CaoS in https://bugs.unrealircd.org/view.php?id=6087
[skip ci]
2022-05-25 16:00:58 +02:00
Bram Matthys b28d8aecd7 Add "ip" to mask item and security-group for easy matching on IP.
So you can just use mask { ip { 127.*; 192.168.*; } } without
having to worry about hostnames like 127.example.net.
(Of course you could also have used CIDR notation)

Another benefit is that, since we are dealing with IP's only,
the matching is faster than going through the more universal
match_user() routine.
2022-05-25 08:34:22 +02:00
Bram Matthys 7ff4a3e897 Add the promised support of security group functionality in except ban { }
So now the example in the release notes actually works:
except ban {
    mask { security-group irccloud; }
    type { blacklist; connect-flood; handshake-data-flood; }
}
2022-05-25 08:01:05 +02:00
Bram Matthys d8ff86e739 Fix for compiling on Windows
[skip ci]
2022-05-23 18:48:10 +02:00
Bram Matthys 3ee199fb6f Makefile.windows: add securitygroup.obj
[skip ci]
2022-05-23 17:42:43 +02:00
Bram Matthys b6843488a9 Update release notes
[skip ci]
2022-05-23 14:29:49 +02:00
Bram Matthys b4ac25fba6 Update release notes with all the work that has been done.
[skip ci]
2022-05-23 14:25:40 +02:00
Bram Matthys e8fbe461f0 Document JSON logging changes of today
[skip ci]
2022-05-23 12:56:21 +02:00
Bram Matthys 35b2579dcb Fix compiler warning 2022-05-23 12:55:48 +02:00
Bram Matthys 60eba7c501 Add to JSON logging output, for users: "channels"
The list of channels (which is an array) is limited to a total
of 384 characters after JSON expansion. If it is limited then
the last item will be "...".
2022-05-23 12:45:27 +02:00
Bram Matthys 7280ffdc57 Add to JSON logging output, for users: "idle_since".
Suggested by westor in https://bugs.unrealircd.org/view.php?id=6083

For technical reasons this field is only available for local users.
2022-05-23 11:53:58 +02:00
Bram Matthys af8418fb3e Add to JSON logging output, for users: "vhost" and "cloakedhost"
Suggested by westor in https://bugs.unrealircd.org/view.php?id=6083

The "vhost" field is added if the visible host of the user differs
from the real hostname, such as +x with cloaking or +xt with a vhost.

The "cloakedhost" is always included, even if the user does not
currently have a cloaked host at all (eg is -x or using a vhost).

Both make it easier to search log files based on user reports.
Eg a user mentions a vhost or cloaked host from their user logs
and then a server admin searches the UnrealIRCd logs on this to
retrieve the real host / ip / user based on that.
2022-05-23 11:31:56 +02:00
Bram Matthys c04ad96357 Add to JSON logging output: "geoip" with subitem "country_code".
Suggested by westor in https://bugs.unrealircd.org/view.php?id=6083

(It is not under "user" because the info can be useful before someone
 is considered a user, eg when flooding/rejected/etc)
2022-05-23 11:20:59 +02:00
Bram Matthys 0f7555e4c5 Add to JSON logging output: "tls" with subitems "cipher" and "certfp".
Suggested by westor in https://bugs.unrealircd.org/view.php?id=6083

(It is not under "user" because it is for servers too)
2022-05-23 11:07:08 +02:00
Bram Matthys 16264e944f Add HOOKTYPE_JSON_EXPAND_CLIENT etc. so modules can add more fields when
clients etc. are expanded in the logging routines.

HOOKTYPE_JSON_EXPAND_CLIENT - for all clients
HOOKTYPE_JSON_EXPAND_CLIENT_USER - for clients that are users
HOOKTYPE_JSON_EXPAND_CLIENT_SERVER - for clients that are servers
HOOKTYPE_JSON_EXPAND_CHANNEL - for channels
2022-05-23 11:02:05 +02:00
Bram Matthys 7740d64042 Limit individual JSON strings to 512 bytes and call StripControlCodes()
on each string. Note that the entire JSON dump may still be much larger,
this is just about each individual string item within an object.

This commit also adds a more flexible StripControlCodesEx() function
to the core (which is used by the logging system), the existing
StripControlCodes() function is unchanged and can still be used.

+/** Strip color, bold, underline, and reverse codes from a string.
+ * @param text                 The input text
+ * @param output               The buffer for the output text
+ * @param outputlen            The length of the output buffer
+ * @param strip_all_low_ascii  If set to 1 then all ASCII < 32 is stripped
+ *                             (the ASCII control codes), otherwise we only
+ *                             strip the IRC control- and color codes.
+ * @returns The new string, which will be 'output', or in unusual cases (outputlen==0) will be NULL.
+ */
+const char *StripControlCodesEx(const char *text, char *output, size_t outputlen, int strip_all_low_ascii)
 {
2022-05-23 10:35:52 +02:00
Bram Matthys 3fbdb7fd4b Move StripControlCodes() from message.c to misc.c.
Because I need in the core (again) due to early calls / calls during
rehashes / etc...
2022-05-23 10:10:47 +02:00
Bram Matthys 8c1a858d2e Fix crash on empty set::default-ipv6-clone-mask in config file.
set { default-ipv6-clone-mask; }
2022-05-23 08:36:25 +02:00
westor 111ab9fada Show [shunned] in connect oper notice (#206)
When someone is trying to connect and he/she is shunned , it will be displayed on connection server notice, yeah sometimes it might be helpful, why not..

Suggested by armyn https://bugs.unrealircd.org/view.php?id=6106
2022-05-23 08:18:49 +02:00
Bram Matthys 9075e2fa70 Move all the security group and mask code to src/securitygroup.c 2022-05-16 13:54:52 +02:00
Bram Matthys 5d9a201df8 Don't show security-groups of ulines like NickServ (since it is irrelevant anyway).
Reported by Lord255.
2022-05-16 11:22:57 +02:00
Bram Matthys 5443dff327 Clarify in release notes that the country value is a country code
Reported by westor
[skip ci]
2022-05-16 10:46:54 +02:00
Bram Matthys c09d2e40a3 Update release notes a bit: better markdown, improve TLD example,
mention the 5 modules that now have an ::except which is also a mask item.
[skip ci]
2022-05-16 10:37:22 +02:00
Bram Matthys 2108bb48fa Run labeled-response through the quick path. 2022-05-16 09:53:23 +02:00
Bram Matthys 519d027a62 Fix geoip_base_unserialize() check being the wrong way around.
Could have caused a memory leak but likely did not happen at all
in practice.
2022-05-15 19:34:46 +02:00
Bram Matthys c037486263 Add blacklist::except for exempting users from individual blacklists,
this is a https://www.unrealircd.org/docs/Mask_item so very flexible.

Note that most people would want to use except ban { } instead to
simply exempt from ALL blacklists. (that one does not yet have the
flexible mask capability though.. but it wil have it soon..)
2022-05-15 15:13:19 +02:00
Bram Matthys fc79cbb3f0 Fix memory leak in new security group code from past 48hrs 2022-05-15 07:50:40 +02:00
Bram Matthys 0b45e34e62 Simplifly RPL_HOSTHIDDEN notification.
Pretty much everywhere we had:
0001 userhost_changed(client);
0002 if (MyUser(client))
0003         sendnumeric(client, RPL_HOSTHIDDEN, client->user->virthost);

Lines 2-3 are now integrated in userhost_changed().

Also fix two issues with CHGHOST in make_oper():
* if user was -x, modes had +x and a vhost, it would send the cloaked
  host in the original vhost, while it should have been the real host
* if user was -x and went +x without vhost (so only uncloaked to cloaked)
  then no CHGHOST message was sent at all
2022-05-15 07:45:00 +02:00
Bram Matthys b52c6406de ExtbanAdd(): remove remaining NULL checks for 'module'. It is never NULL. 2022-05-15 06:52:44 +02:00
Bram Matthys a1c8292a1d Fix incorrect sizeof() in commit from yesterday. 2022-05-15 06:49:58 +02:00
Bram Matthys c25582bff2 Mention that this is work in progress
[skip ci]
2022-05-14 19:11:53 +02:00
Bram Matthys 9e0340d4c1 Change restrict-commands to use ::except which is a
https://www.unrealircd.org/docs/Mask_item so has more functionality.

The old style config still works and UnrealIRCd won't complain
about it for now.
2022-05-14 18:50:24 +02:00
Bram Matthys 517d93bea8 Fix crash / support NULL secgroup in user_allowed_by_security_group() 2022-05-14 16:29:38 +02:00
Bram Matthys 5f3931b08d Update modules.optional.conf so it actually loads.
Also fix ::mask style II.
2022-05-14 15:40:09 +02:00
Bram Matthys 3241338cf3 Add set::connthrottle::except, which is a mask item.
Automatically convert the old options ::sasl-bypass, ::webirc-bypass
and ::minimum-reputation-score, so nobody needs to update their config.

The example.conf has been updated.
2022-05-14 15:31:30 +02:00
Bram Matthys 915b603a6a Add set::antirandom::except, which is a mask item.
Automatically convert the old style ::except-hosts and ::except-webirc
so nobody needs to update their config.
2022-05-14 15:17:29 +02:00
Bram Matthys f0ddbdaa44 Add set::antimixedutf8::except, which is a mask item too. 2022-05-14 15:07:33 +02:00
Bram Matthys 1626fda1ef Fix extbans on IRC not working due to latest changes. 2022-05-14 09:21:11 +02:00
Bram Matthys caabfe14e1 Document and give examples in release notes for new mask and security-group functionality. 2022-05-14 09:03:34 +02:00
Bram Matthys 4de3d512b8 Integrate security-group functionality in allow channel::mask and
deny channel::mask.
2022-05-14 08:36:19 +02:00
Bram Matthys e09470b0bd Integrate security-group functionality in link::incoming::mask. 2022-05-14 08:28:26 +02:00
Bram Matthys 67fdd63bc3 Integrate security-group functionality in vhost::mask. 2022-05-14 08:19:05 +02:00
Bram Matthys 8dff79ece2 Fix small memory leak on REHASH when tld block is used, ::mask was not freed.
(this leak was already there, it is unrelated to the activity of last 24hrs)
2022-05-14 08:13:53 +02:00
Bram Matthys ec4df2da7d Integrate security-group functionality in tld::mask. 2022-05-14 08:10:20 +02:00
Bram Matthys 759908ba3a Integrate security-group functionality in oper::mask. 2022-05-14 08:03:12 +02:00
Bram Matthys 510b4b5505 Integrate security-group functionality in allow::mask.
(Also call it allow::match in the future, but accept allow::mask still)

This is the first of several commits to convert all ::mask items.
See https://www.unrealircd.org/docs/Mask_item for the consequences.
In short, you can now use all of the security-group items directly
in a mask, eg:
allow {
    mask { account TrustedUser; }
    class clients;
    maxperip 10;
}
2022-05-14 07:51:51 +02:00
Bram Matthys 10bddc1232 Extended server bans are now more clearly exposed in security-group { }.
The extban module API is used behind the scenes. To the server admin
the functionality appears in a more natural way:
        account { <list>; };
        country { <list>; };
        realname { <list>; };
        certfp { <list>; };
In the same way, they appear as exclude-xxx options too:
        exclude-account { <list>; };
        exclude-country { <list>; };
        exclude-realname { <list>; };
        exclude-certfp { <list>; };

Modules can add additional fields (3rd party modules too!).

Module coders:
See src/modules/extbans/realname.c for a simple example. In short:
1) You need to register your extban in both MOD_TEST and MOD_INIT
2) Other than that, the existing rules for extended server bans apply:
   a) Your req.is_banned_events needs to include BANCHK_TKL
   b) Your req.options needs to include EXTBOPT_TKL
Be advised that for modules that are called in extended server bans
the client may be missing several fields, for example client->user could
be NULL, so be careful with accessing everything in your module.
2022-05-13 20:13:34 +02:00
Bram Matthys 378f1f0044 Split up security-group code for later code re-use. 2022-05-13 14:37:56 +02:00
Bram Matthys efa7fea88e Rename security-group::include-mask to ::mask. Both will work though for
a long long time. Change done to make it consistent with the rest.
2022-05-13 14:11:00 +02:00
Bram Matthys a544001eeb Add security-group::security-group, this as a shorthand for
security-group { mask ~security-group:xyz; }

Module coders (again, slightly unrelated):
Added unreal_add_names() function which can be used to transform
a list of names in the config to a linked list (NameList).
2022-05-13 14:07:05 +02:00
Bram Matthys 6751b066ab Prevent infinite loop (crash due to out of stack) when processing a
security group that references another (or itself), eg:
security-group abc {
	include-mask ~security-group:abc;
}
We now give up after a recursion depth of >8 and log a warning.
2022-05-13 13:37:48 +02:00
Bram Matthys de61fc4b50 Add connect-time to security-group, so you can match on how long a client has
been connected to IRC. See https://www.unrealircd.org/docs/Security-group_block

Slightly unrelated, for modules coders: new function get_connected_time(),
to see how long a client has been online. This works for local clients, in
which case it would just return TStime()-client->local->creationtime.
It also works for remote clients, for which it will use the newly added
"creationtime" moddata (commit f1a18ce37e),
so the info is only available for remote clients on newer servers.
If the info cannot be found it will return 0 (zero).
2022-05-13 13:23:02 +02:00
Bram Matthys 085490d780 Show in WHOIS in which security-group a user is in (to IRCOps only)
The set::whois-details name for this is: security-groups.
https://www.unrealircd.org/docs/Set_block#set::whois-details
By default it is shown ONLY to IRCOps, not even to 'self' for normal users.

If you want to hide it for everyone, even to IRCOps, eg because you
feel it is useless information, then you can use:
set {
        whois-details {
		security-groups { everyone none; self none; oper none; }
	}
}
2022-05-13 13:14:46 +02:00
Bram Matthys f1a18ce37e Communicate "creationtime" of users. Right now this info is only known
locally, as the only timestamp regarding users that is communicated across
the network is about the "last nick change" ("has this nick since...").
2022-05-13 12:27:21 +02:00
Bram Matthys 788c230bdc Support exclusion criteria in security groups.
Suggested by Jobe in https://bugs.unrealircd.org/view.php?id=6096

Also add support for matching a reputation below a value ("<10").

See https://www.unrealircd.org/docs/Security-group_block for info
on all of these.
2022-05-13 11:33:57 +02:00
Bram Matthys 4a03943996 Fix antirandom log message when user is denied (only showed nick).
Reported by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6093
2022-05-13 08:09:46 +02:00
Bram Matthys 06c6eb164e Only validate for local users sending the tag 2022-05-13 07:56:30 +02:00
Valerie Pond 61f7dd746e Add IRCv3 +draft/channel-context (#205)
https://github.com/delthas/ircv3-specifications/blob/feature-channel/client-tags/channel-context.md
2022-05-13 07:39:41 +02:00
Bram Matthys cd48fec826 The /LICENSE command confusingly said that the UnrealIRCd license is GPLv1
or later. This updates the include/license.h file, which is used for the
/LICENSE command, to say "GPLv2 or later".

The 'LICENSE' file shipped with UnrealIRCd since at least the year 2000
has always been the GPLv2.

In the copyright headers of individual .c and .h files we have a mix of
"GPLv1 or later" and "GPLv2 or later", so "GPLv2 or later" is the common
denominator.
2022-05-11 09:23:53 +02:00
Bram Matthys b154591a58 Some source files indicated the license was "GPLv2", which was meant to
be (and is now clarified to be) "GPLv2 or later".
Reported by libsys in https://bugs.unrealircd.org/view.php?id=6099
2022-05-11 06:41:11 +02:00
Bram Matthys 537f5d050e Update HELPOP SVSO documentation, due to previous commit. 2022-05-07 19:03:25 +02:00
Bram Matthys 50e5d91c79 Add SVSO command which services can use to make someone IRCOp.
This existed in UnrealIRCd 3.2.x but was later removed when
switching to the new operclass system.
Requested by Valware in https://bugs.unrealircd.org/view.php?id=6041

Syntax: SVSO <uid|nick> <oper account> <operclass> <class> <modes> <snomask> <vhost>
All these parameters need to be set, you cannot leave any of them out,
HOWEVER some can be set to "-" to skip setting them, this is true for:
<class>, <modes>, <snomask>, <vhost>

In UnrealIRCd the <operclass> will be prefixed by "services:" if not already
present. It is up to you to include or omit it.

If you want to set any swhoises you need to use the SWHOIS s2s command,
other than that this command basically does everything for you,
in fact it uses the same code as the OPER command does.
Most of the "user is now ircop" code has been moved out of cmd_oper() to
a new function make_oper() that is called by both cmd_oper() and cmd_svso().

This function also changes the hook HOOKTYPE_LOCAL_OPER:
It no longer passes a ConfigItem_oper struct, since we can't do that for
remote opers. Instead it passes oper name and oper class.
The complete definition is now:
int hooktype_local_oper(Client *client, int add, const char *oper_block, const char *operclass);
2022-05-07 18:53:59 +02:00
Bram Matthys 84f3efc105 Fix issue with modes-on-join and +f: 3t#b1 would be converted to 3t#b,
thus the 'unset time' would be stripped.
This was because the timedban module was seen as 'unavailable' when
checking the +f syntax so early in the booting process.
We now assume timedban is available during config testing, if it later
turns out it is not available the 'unset time' is still stripped
when setting the mode on JOIN.

Reported by ctcp.
2022-05-07 08:18:05 +02:00
Bram Matthys fea7995a02 Fix crash when using ~security-group in except ban { }
This makes us no longer call the .is_ok() function for extbans
that are added through except ban { }. This because normally
the is_ok() function communicates to 'client', which is NULL
when it is called from the config code.
The alternative would have been to update all the extban modules
to check for a NULL client and deal with that but that would
need stupid amounts of code and it would not be of much value
as the error would not end up displaying on the console.
So, we now only on the .conv_param() function, which was already
only used for cases such as remote bans and such, and is already
known to have a NULL 'client' in TKL cases. Note that conv_param()
could still reject the ban, but it does it generally only in
the more extreme cases.

Reported by musk / PeGaSuS.
2022-05-07 08:06:05 +02:00
Bram Matthys 03c0f24be8 Make autoconnect work with last commit (link::outgoing::file). 2022-05-06 17:17:02 +02:00
Ron Nnn 64e411aa34 Add support for linking servers via UNIX domain sockets (#202) 2022-05-06 17:05:54 +02:00
Bram Matthys 7c988e04e0 Make self-test of "./unrealircd module" check if ./Config has been ran.
That is: it checks if the Makefile is there to avoid a mysterious
"No rule to make target 'custommodule'" error message.
2022-05-04 19:19:11 +02:00
Bram Matthys 71da780490 Module manager: stop on compile failure (fix return value) and also fix
some text (coming from a too broad mass replace).
2022-05-04 18:27:54 +02:00
Bram Matthys 96413cb9f2 Update README
1) Give an exact link to https://www.unrealircd.org/docs/UnrealIRCd_releases
which describes the supported versions and EOL stuff in more detail.
2) Make clear that we have better instructions on the wiki with regards to installation
and that users should use that one instead (the ones in the README are really meant as fall-back)
3) Some nicer formatting here and there (minor)
2022-05-03 09:38:34 +02:00
Bram Matthys 889bcd99dc Actually build and load module for unrealircd.org/geoip-tag by default. 2022-05-01 14:11:24 +02:00
westor a346b4a3e9 Add geoip-tag module (#197)
This module will work the same way as `userip-tag` or `userhost-tag` modules work now, the 90% of this code is part from these modules.
It will help especially the irc bots (AdiIRC/mIRC) to detect the geoip country code directly and easy when someone is talking on a channel and take actions, i hope this will help on most people.

Thanks @Valware for testing it out.

Short Example: `@unrealircd.org/geoip=GR;account=tester;msgid=tPTHDgymv9pgdGdYkI3WBd;time=2022-03-30T16:34:26.780Z :tester!Username@3765DB68:3AE9CB6C:B0540131:IP PRIVMSG #Test :test message`
2022-05-01 14:05:34 +02:00
alicetries 2018502e74 Fix various log messages which had missing $expansions (#198) 2022-05-01 13:52:45 +02:00
musk fcc580017f Update help.es.conf (#199)
Add new snomasks for U6.
2022-05-01 13:48:05 +02:00
musk 153a01ec60 Add example.es.conf (#200) 2022-05-01 13:45:40 +02:00
Bram Matthys b1daf5b832 Fix crash when hideserver module is loaded but LINKS is not blocked. 2022-05-01 13:36:37 +02:00
Bram Matthys 3451919b06 Fix issue with duplicate entries in the +b/+e/+I list of +P channels.
This was caused by the transition from letter extbans (eg ~a) to
named extbans (eg ~account) and a combination of the bug fix in 6.0.2
(60a70acd86) and the 'channeldb' module
not checking for duplicates while reading the database.

Reported by PeGaSuS in https://bugs.unrealircd.org/view.php?id=6091
2022-04-18 08:51:23 +02:00
Bram Matthys a9de2696d4 Allocated too much memory for the watchTable in the 6.0.3 change.
Now back to 256K (sizeof Watch *) instead of 1024K (sizeof Watch).
2022-04-08 08:53:23 +02:00
Bram Matthys c8b8177728 Update example conf to put kline-address value in single quotes.
Indirectly suggested in https://bugs.unrealircd.org/view.php?id=6086
reported by Balthazar.
2022-04-08 08:43:24 +02:00
Bram Matthys 1327fe9bfe Bump version to 6.0.4-git 2022-04-08 08:42:22 +02:00
Bram Matthys cedd23ae9c ** UnrealIRCd 6.0.3 ** 2022-04-01 16:27:18 +02:00
Bram Matthys 707510c1ce Fix crash in WATCH backend after doing /REHASH.
It often takes a while for the actual crash to occur but eventually an
attempt would be made to access inaccessible memory of the previously
freed .so module.

Reported by and traced with the help of both Wick and Krstarica.
2022-04-01 09:39:22 +02:00
Bram Matthys 479e9213ae Fix warning about "sending text to self" reading unitialized memory from
the stack and putting it in the log message.

Bug found internally, was not reported by anyone.
2022-04-01 09:18:14 +02:00
Bram Matthys aba8eb7a2b Fix OOB write in packet sending routine.
Bug found internally, was not reported by anyone.
2022-04-01 09:17:11 +02:00
Bram Matthys 28c1b9cef9 Show operclass in "/STATS o".
Suggested by fo (w/patch) in https://bugs.unrealircd.org/view.php?id=6003
2022-03-23 12:54:27 +01:00
Bram Matthys 640abd9df2 Update relnotes
[skip ci]
2022-03-23 09:11:10 +01:00
Bram Matthys 955d5addb5 Update release notes a bit
[skip ci]
2022-03-23 09:03:32 +01:00
Bram Matthys 488b3e3a6f Fix "unrealircdctl spkifp" usage info on Windows.
On Linux we still show the usage info as for "unrealircd" (not unrealircdctl)
since on Linux we have the "unrealircd" script that manages all this and
"unrealircdctl" is not really meant to be called directly by end-users.
2022-03-23 08:53:20 +01:00
Bram Matthys 89fe8e9227 SVSMOTD lines are now shown in the MOTD-on-connect, unless a shortmotd is used.
What is a SVSMOTD? The SVSMOTD are MOTD lines that are shown at the end of
an existing MOTD. These lines are added remotely through services.

Previously the SVSMOTD lines were never shown in the MOTD-on-connect, which
was a bug. We were only supposed to hide it if a short motd is in use.

Reported by Valware in https://bugs.unrealircd.org/view.php?id=6070
2022-03-23 08:06:23 +01:00
Bram Matthys ba1a88124a Re-indent src/modules/list.c 2022-03-23 07:24:29 +01:00
Bram Matthys da84223217 Make LIST option T<xx and T>xx always available, IOTW remove the need for
defining LIST_USE_T which was never done anywhere.

Reported by progval in https://github.com/unrealircd/unrealircd/pull/193
2022-03-23 07:15:40 +01:00
Val Lorentz f6ecbc6e63 Flip semantics of <xx and >xx in ELIST C and ELIST T (#194)
The spec <https://datatracker.ietf.org/doc/html/draft-hardy-irc-isupport-00#section-4.8>
is a little unclear on the semantics, and Unreal interprets 'C<val' as
a request for all chans created before <val> minutes ago, ditto.

This is a legitimate interpretation, but I think the other on makes more
sense (ie. that 'C<val' means all chans created less than <val> minutes
ago).

Additionally, the documentation for T did not match the implementation
before this commit.

Before this commit, Unreal was consistent with Hybrid/Plexus4 on ELIST C.

After this commit, Unreal will be consistent with Charybdis/Solanum,
InspIRCd, and ircu2 (and Hybrid/Plexus4 on ELIST T).
2022-03-23 07:09:37 +01:00
Robert Scheck a38c2ba491 Require PCRE2 >= 10.00 again (because of commit 329fd07f3a) (#196) 2022-03-22 06:44:02 +01:00
Robert Scheck 28a11a9121 Add missing options to unrealircdctl usage (#195) 2022-03-22 06:42:32 +01:00
Bram Matthys daa0c11f28 Update release notes a bit
[skip ci]
2022-03-18 07:56:57 +01:00
Bram Matthys f169a3cf77 Fix channel ops unable to -h someone, even though they could +h.
Reported by Jaka in https://bugs.unrealircd.org/view.php?id=6077 and
Valware and buayadarat in https://bugs.unrealircd.org/view.php?id=6078

This commit also makes the halfop rules for +h/-h match the ones in U5:

Previously in 6.0.0 - 6.0.2 it was:
* halfops can set +h on others
* halfops cannot set -h on others
* halfops can set -h on themselves

Now in 6.0.3+ it matches 5.x behavior again:
* halfops cannot set -h or +h on others
* halfops can set -h on themselves
2022-03-18 07:26:53 +01:00
Bram Matthys 95549220dd Update wording in release notes a bit
[skip ci]
2022-01-31 11:24:40 +01:00
Bram Matthys ef6ea6ee32 When using "RESTART" the newly started IRCd could possibly not log or been
missing other functionality.
Reported by DarthGandalf in https://bugs.unrealircd.org/view.php?id=5918

The cause was that all fd's were closed, including 0/1/2. We now reopen
those and map them to /dev/null, like we do later again.
2022-01-31 10:24:13 +01:00
Bram Matthys 155b38374a Update release notes
[skip ci]
2022-01-31 09:43:07 +01:00
Bram Matthys 09351beae7 Change default logging format on disk (text, non-json) to include
the server name. Nowadays we receive and log lines from remote servers
so without this extra information it can be unclear where events
(eg: problems) are happening which can be rather confusing.
2022-01-31 09:39:00 +01:00
Bram Matthys 252b856afe Bump version to 6.0.3-git as this is git / work in progress. 2022-01-31 09:36:48 +01:00
Bram Matthys e0cfbe5821 When using remote includes with certain setups, one could get weird
rehash errors such as error: set::geoip-classic::ipv6-database:
cannot open file "/home/xxxx/unrealircd/data/https://www.unrealircd...
and possibly even a crash.
The initial boot of UnrealIRCd, however, was always fine, this only
happened when rehashing.
It also seemed to occur more with ftp:// includes or at least with
multiple parallel includes, that may or may not have different or
more latency. In any case it seemed to affect some remote includes
setups semi-consistently, and others not at all.

The root cause was a complex code path causing a read-after-free.
We now use a simplified code path which can no longer cause this.
The only downside is that rehashing may be delayed up to an extra
250ms (quarter of a second), but that should hardly be noticeable,
if at all.

Issue reported by Bun-Bun.
2022-01-31 08:30:05 +01:00
Bram Matthys 8fe44698df When using the "let unrealircd compile cURL" option, now no longer use c-ares,
as it complicates things too much. The c-ares build options that we use in
UnrealIRCd cause curl not to recongize c-ares, and the other way around is not
good either. Also, self-compiled ("unrealircd shipped") c-ares may not be
used/required by main unrealircd (thus rm'd) while it is still needed by
self-compiled curled. Blehh, what a mess.

Now we simply don't compile curl with c-ares and rely on cURL to enable async
DNS support via system c-ares or via the another way, with the use of threads,
which is standard in curl now for many years and should work on most, if not
all platforms.
If this is somehow problematic for you then install libcurl/libcurl-dev(el)
on your system itself, via your package manager or other means.
2022-01-30 08:01:38 +01:00
Bram Matthys fa15ea2567 ./unrealircd hot-patch: now that we have rehash output and status codes
in 6.0.2+ we can inform the user whether the rehash actually succeeded
or not. This was already shown in the output, but we now also change
the last few lines of output to make very clear if the rehash failed
that the currently running UnrealIRCd is not patched.
2022-01-29 14:57:09 +01:00
Bram Matthys 752ab1abf8 Fix case where people don't use ./unrealircd hot-patch but use something
like /home/xyz/unrealircd/unrealircd hot-patch instead. In other words,
if the current working directory is not the location of the unrealircd
script. Then calling ./unrealircd rehash, so the last step in the patching
process, would fail. Reported by k4be.
[skip ci]
2022-01-29 14:50:01 +01:00
Bram Matthys 17913151ed Fix ./unrealircd hot-patch: if a patch does not cleanly apply then
don't apply it. The dry-run code was missing the most obvious case..
2022-01-29 14:40:32 +01:00
Bram Matthys 6a521e24f7 Strip trailing slash if present in paths since it can confuse some
parts of the code later on, in particular the upgrade code.
Eg: a base path of "/home/xyz/unrealircd/"

Side note: this also assumes no path is / (root), which seems a
reasonable assumption.
2022-01-29 14:29:23 +01:00
Bram Matthys 0877a5dbbe Make ./curlinstall use the same options when building c-ares as the
./configure script from us. That is, using the correct private lib dir
and using --disable-tests and so on.

Should fix a bug on CentOS where c-ares could not be built due to
the test suite requirements from c-ares, reported by Bun-Bun.
2022-01-29 14:14:50 +01:00
Bram Matthys 29fd2e772a ** UnrealIRCd 6.0.2 ** 2022-01-28 17:02:19 +01:00
Bram Matthys cd3b50d2f8 Update ./unrealircd usage info. 2022-01-28 08:57:47 +01:00
Bram Matthys f650239b4f Add "./unrealircd module-status" to show currently loaded modules,
including version, description, author, flags. The output is
pretty much identical to "MODULE -all" on IRC as IRCOp.

Useful for the future if you want to verify a module has been
upgraded from the command line.
2022-01-28 08:45:20 +01:00
Bram Matthys a07db0fffd BuildBot: Give all the build tests a bit more time 2022-01-17 10:43:02 +01:00
Bram Matthys 82bb7567da Update release notes 2022-01-17 09:07:57 +01:00
Bram Matthys 83e74893da Relookup reputation and geo information when client IP changes due to WEBIRC
or another type of proxy request.
This fixes a problem where ban user { } or except ban { } is not working
for ~country:XX when the request comes via a WEBIRC or other proxy.
Reported by CaoS in https://bugs.unrealircd.org/view.php?id=6058
It should also fix security-group being incorrect for ~security-group bans
or exempts.
2022-01-17 08:09:15 +01:00
Bram Matthys d4f09f8fed HOOKTYPE_*_CHANGED -> HOOKTYPE_*_CHANGE to be a bit more consistent with
the rest of the hooks, most of which do not use the past tense.
Only affects HOOKTYPE_USERHOST_CHANGE / HOOKTYPE_REALNAME_CHANGE.

This does, however, make it inconsistent with the userhost_changed()
call, though :D.
2022-01-17 08:02:18 +01:00
Bram Matthys f3d827c577 Add HOOKTYPE_IP_CHANGE and call it when the IP address changes.
Eg for WEBIRC or other proxy.

This does not yet fix any problem, it just changes the way things are
called. More to follow.
2022-01-17 07:55:45 +01:00
i c1ec164a65 fix flat-map display 2022-01-08 03:46:09 +03:00
Bram Matthys 35c3c87dc4 ** UnrealIRCd 6.0.2-rc1 ** 2022-01-07 14:07:36 +01:00
Bram Matthys 7678bc38ed Update shipped c-ares from 1.17.2 to 1.18.1 (27-oct-2021) 2022-01-07 14:03:01 +01:00
Bram Matthys 8536778bcc Don't mention action 'd' in HELPOP CHMODEF for floodtype 'm', as this
is not supported at the moment.
Reported by Valware in https://bugs.unrealircd.org/view.php?id=6034
[skip ci]
2022-01-07 12:37:26 +01:00
Bram Matthys 9e4d6571e5 Update release notes a bit
[skip ci]
2022-01-07 12:13:58 +01:00
Bram Matthys 60a70acd86 channeldb: convert letter extbans to named extbans (.db for +P channels) 2022-01-07 12:10:10 +01:00
Bram Matthys b1e475e0ca Update release notes a bit
[skip ci]
2022-01-06 18:04:36 +01:00
Bram Matthys 329fd07f3a Revert set::spamfilter::utf8-support from yesterday.
This will be for a later release, needs more thought and work.
2022-01-06 18:03:26 +01:00
Bram Matthys 17a4ed1ea9 Update release notes:
Make clear that set::spamfilter::utf8-support is experimental
and the possible side effects/issues, or the ones in the past, anyway.
[skip ci]
2022-01-06 16:08:07 +01:00
Bram Matthys bd05cdf779 Don't do GeoIP lookups for remote users. These are already looked up and
synced by the server the user is on, and this way the country will be
consistently the same on all servers (and not BE on one, and NL on another,
which would be confusing for the ban matching code, giving different
results on each server).
2022-01-06 15:31:54 +01:00
Bram Matthys 7f794aa7d7 Fix log message on vhost-flood 2022-01-06 08:44:59 +01:00
Bram Matthys 856f29ae54 Update release notes a bit
[skip ci]
2022-01-05 18:21:22 +01:00
Bram Matthys dedff543b5 Add option set::spamfilter::utf8-support which defaults to 'no' for now.
When you set this to 'yes' you get more options...
See next (modified) copy-paste from April 2020, which had to be reverted
because PCRE2 was broken. Now it's an opt-in and hopefully matured a bit.

This means:
* Case insensitive matches work better in UTF8 now, such as extended Latin.
  For example, a spamfilter on "ę" now also matches "Ę", while previously
  it did not catch this.
* Other PCRE2 features such as https://www.pcre.org/current/doc/html/pcre2syntax.html#SEC5
  are now available. For example you can now set a spamfilter with the regex
  \p{Arabic} to block all Arabic script, or
  \p{Cyrillic} to block all Cyrillic script (such as Russian)
  Use these new tools with care, of course. Blocking an entire language,
  or script, is quite a drastic measure.

All of this was possible because of the new PCRE2_MATCH_INVALID_UTF
compile time option which was introduced in PCRE2 10.34. Now, that
version turned out to be buggy. As recent as PCRE 10.36 some major bugs
were fixed. This also means we now require at least PCRE2 10.36 version
so everyone can benefit from this new spamfilter UTF8 feature, IF they
enable set::spamfilter::utf8-support, that is.

Many systems come with older PCRE2 versions so this means we will
fall back to the shipped PCRE2 version in UnrealIRCd. This means
./Config will take a little longer to compile things.

For packagers (rpm/deb/ports): if you choose to patch configure to
not require such a recent PCRE2, then please do not allow enabling
of set::spamfilter::utf8-support since it will likely cause crashes
and misbehavior. Check PCRE2 changelog, CTRL+F at PCRE2_MATCH_INVALID_UTF
2022-01-05 18:08:52 +01:00
Bram Matthys b821aa419f Ship with PCRE2 10.39 (29-October-2021) 2022-01-05 17:59:40 +01:00
Bram Matthys ab8fab79e3 Drop --disable-unicode from PCRE2 and require 10.34 for
PCRE2_MATCH_INVALID_UTF support. More commits to follow.
2022-01-05 17:55:33 +01:00
Bram Matthys dd74e1e63d Update release notes
[skip ci]
2022-01-05 17:30:50 +01:00
Bram Matthys fa1493b930 Add 'WHO <300 t' example and information to HELPOP WHO 2022-01-05 17:30:17 +01:00
Bram Matthys d156a18aba Set defaults for vhost-flood
https://www.unrealircd.org/docs/Anti-flood_settings#vhost-flood
2022-01-05 17:26:32 +01:00
Bram Matthys df0884981e Handle empty strings in config_checkval() 2022-01-05 11:36:46 +01:00
Bram Matthys 1e0bddfbab And some more text improvements in ./Config 2022-01-05 09:32:17 +01:00
Bram Matthys 27bfdef1ca Update wording a bit for geoip 'none'. Indirectly suggested by DeviL. 2022-01-05 09:27:40 +01:00
i 6996c7a485 update RPL_MAP numeric 2022-01-05 00:07:22 +03:00
i 66355370e1 fix RPL_MAPUSERS numeric error 2022-01-04 23:56:29 +03:00
i 1c4da04346 add WHO parameter for searching by connect time 2022-01-04 21:25:36 +03:00
i 7430d3718a add support for rate limiting -x/-t (set::anti-flood::<groupname>::vhost-flood) 2022-01-04 21:23:57 +03:00
i d8f440e9e7 add map percentages 2022-01-04 21:21:38 +03:00
i f4239abc5d update help.ru.conf 2022-01-04 21:17:54 +03:00
Bram Matthys b4d92bf232 Typo typo
[skip ci]
2022-01-04 11:24:04 +01:00
Bram Matthys 8dedffa6c0 Update release notes a bit
[skip ci]
2022-01-04 11:16:38 +01:00
Bram Matthys 33dac730c7 When a remote server forgets to send the TS in a MODE message with the
sender being a server, then we now spread it on with a zero TS so we
avoid a potential desync elsewhere, or at least try to limit it.
2022-01-04 11:10:40 +01:00
Bram Matthys 55969d1ff3 Update relnotes a bit more
[skip ci]
2022-01-03 19:28:48 +01:00
Bram Matthys 1ff5c0c51a Update relnotes a bit
[skip ci]
2022-01-03 18:39:17 +01:00
Bram Matthys ca6a3efdb2 Fix for location of unrealircd.ctl when not in ~/unrealircd/
Reported by Han`
2022-01-03 18:24:29 +01:00
Bram Matthys c4126a2d1e Update preliminary release notes
[skip ci]
2022-01-03 17:58:13 +01:00
Bram Matthys 3818b9eb45 Make unrealircdctl spkifp actually work on Windows 2022-01-03 17:49:29 +01:00
Bram Matthys 4d2cefdbed Fix for Windows build (old srandom call). 2022-01-03 17:05:57 +01:00
Bram Matthys 34fda671f8 And some more config priorities (not important yet) 2022-01-03 17:01:56 +01:00
Bram Matthys 8e7eacadfe Swap order of config_run_blocks() and config_test_blocks() since that
makes more sense when reading the source code.
2022-01-03 16:56:25 +01:00
Bram Matthys 9fef375d0a Make reading priority of config blocks a simple array. 2022-01-03 16:55:47 +01:00
Bram Matthys 92c81b194f Move "spkifp" to unrealircdctl, so it is available for Windows users.
For *NIX users no visible change.
2022-01-03 14:48:00 +01:00
Bram Matthys 3dd7c19c77 Move "gencloak" to unrealircdctl, so it is available for Windows users.
For *NIX users no visible change.
2022-01-03 14:28:10 +01:00
Bram Matthys e35c29f3d5 Move mkpasswd operation to unrealircdctl. For *NIX users no change as this
is done behind-the-scenes (the command is still ./unrealircd mkpasswd).
For Windows users it finally means they can generate passwords via the CLI
using: unrealircdctl mkpasswd pwdhere
2022-01-03 14:14:12 +01:00
Bram Matthys 243c6635da Update /STATS P output a little (since it shows the control channel). 2022-01-03 13:51:46 +01:00
Bram Matthys df0a9e4f37 BuildBot: build unrealircdctl.exe 2022-01-03 13:51:32 +01:00
Bram Matthys 5425c8fbb6 Don't fail on versions older than Windows 10 version 1803.
And be a bit more informative on why unrealircdctl fails on those.
2022-01-03 13:31:24 +01:00
Bram Matthys c02eb3f16c Windows code cleanup: WSAStartup() -> init_winsock() 2022-01-03 13:19:22 +01:00
Bram Matthys 98c0e786b5 Make UnrealIRCd compile on Windows again.
Updated the makefile to build unrealircdctl.exe etc.
2022-01-03 13:10:53 +01:00
Bram Matthys c0c265baee Fix some (totally unimportant) resource leaks and fix a case where,
if UnrealIRCd hung up on client communication without saying goodbye,
we would return a 0 exit code (success).
2022-01-03 09:03:23 +01:00
Bram Matthys a4af100ca8 Memory isn't initialized to zero by dbuf_queue_init(), causing
dbuf->length to be unitialized.
This wasn't an actual problem until yesterday in UnrealIRCd code,
since the whole client struct was initialized to zero, including
client->local->sendQ(->length) etc.
However, now we use the dbuf code elsewhere too (on the stack) and
3rd party modules can use it too, so fix this bug.
2022-01-03 09:02:54 +01:00
Bram Matthys 75a2fde672 Merge branch 'unreal60_dev' of github.com:unrealircd/unrealircd into unreal60_dev 2022-01-02 20:19:21 +01:00
Bram Matthys 39688517b0 Make "./unrealircd rehash" show output on the terminal, same for
"./unrealircd reloadtls" and there is now also a "./unrealircd status"

The output is colorized if the terminal supports it (just like on the
boot screen) and also the exit status is 0 for success and non-0 for
failure. The purpose of all this is that you can easily detect rehash
errors on the command line.

These three commands communicate to UnrealIRCd via the new control
UNIX socket, which is in ~/data/unrealircd.ctl.
This also does a lot of other stuff because we now have an internal
tool called bin/unrealircdctl which is called by ./unrealircd for
some of the commands to communicate to the unrealircd.ctl socket.
Later on more of the existing functionality may be moved to that
tool and we may also provide it on Windows in CLI mode so people
have more of the same functionality as on *NIX.
2022-01-02 20:17:36 +01:00
k4be d8bb78677f Add TS to s2s MODE messages generated by SVS(2)MODE
(if the source is a server).
2022-01-02 20:09:57 +01:00
Bram Matthys 834736070e Make "SVS(2)MODE -b user" work properly for extended bans.
It was missing for a lot of extbans (removing too little) and
for ~t it was removing too much (eg quiet bans).
Bug reported and changes suggested by k4be.

Coders:
Setting extban.options to EXTBOPT_CHSVSMODE has no effect anymore,
just didn't want to remove it so modules would still compile.
We now purely match based on .is_banned_events including BANCHK_JOIN.
2022-01-02 13:12:33 +01:00
Bram Matthys 46bdc1c5e1 Print message about outdated release if automatically rejected by crash handler. 2022-01-02 09:32:33 +01:00
Bram Matthys dbef19cd7a Add initial implementation of UNIX domain sockets (listen::file).
Various things still need to be done: a lot more testing, ability to
set permissions on the file, #ifdef's because of lack of support
on Windows (currently won't compile), etc.

One thing that I don't intend to change is that I chose not to display
the socket in the host but have clients show up as 'localhost' (and
ip '127.0.0.1'). Doing it this way keeps things easy, otherwise we risk
a lot of breakage for nearly nothing gained, really.

Things can be tested via:
listen {
        file "/tmp/listen";
}

and then with netcat:
nc -U /tmp/listen
USER x x x x
NICK hai
etc...
2022-01-01 18:48:17 +01:00
Bram Matthys 40c528acde Add missing space in spamfilter log message.
This is a fix-for-fix b98d02817a.

Reported by armyn in https://bugs.unrealircd.org/view.php?id=6049
2021-12-30 16:42:29 +01:00
Bram Matthys 4e209968fe Fix hang on "Loading IRCd configuration" if DNS is not working correctly.
For example if the 1st DNS resolver is refusing or ignoring requests.
We forgot to call unrealdns_timeout() in the waiting loop, so DNS requests
never timed out and c-ares didn't try the 2nd/3rd server either.

Issue reported by Elodie.
2021-12-30 14:49:29 +01:00
Bram Matthys c5c17f2ccf Include "client_port" (eg 6697) and "server_port" (eg 55123) in JSON
output for local clients.
2021-12-30 13:20:37 +01:00
Bram Matthys 4ca9e9b3c2 Also support show-event in log::destination::channel. 2021-12-30 11:39:51 +01:00
Bram Matthys d677ce04de New option set::server-notice-show-event which, if set to 'no', can be used
to hide the event information (eg. connect.LOCAL_CLIENT_CONNECT) in
server notices. This can be overriden in oper::server-notice-show-event.

See https://www.unrealircd.org/docs/Set_block#set::server-notice-show-event
2021-12-30 11:29:30 +01:00
Bram Matthys 0f52ff76e8 Add link to https://www.unrealircd.org/docs/Log_block#Logging_to_a_channel
in the release notes.
Also add the sub-options: color, json-message-tag and oper-only.
2021-12-30 10:40:01 +01:00
Bram Matthys eaded2d12f Use spamfilter::match with single quotes in example spamfilter.conf
and give a hint to do that so they are not misinterpreted by an URL
since that may happen for other spamfilters (not the one included
in this file though). Suggested by Lord255.
2021-12-30 09:57:57 +01:00
Bram Matthys 4cb708117a Initial version of snomask logging to channels (more to follow) 2021-12-30 08:59:00 +01:00
Bram Matthys a35e9f7af9 Bump version to 6.0.2-git (start of dev for next version) 2021-12-30 08:58:08 +01:00
Bram Matthys 34c7727eb1 Error on unknown items in log block, eg a leftover log::flags or log::maxsize
from UnrealIRCd 5, or just some incorrect item that does not exist.
2021-12-30 08:16:01 +01:00
Bram Matthys cdc433f8c0 ** UnrealIRCd 6.0.1.1 ** 2021-12-29 19:30:49 +01:00
Bram Matthys 0242b509b8 Fix compatibility between U5 and U6 for named extended bans in SJOIN
when SJSBY is enabled. This caused named bans not to show up properly
(or not at all) on the U5 side when syncing servers.
2021-12-29 19:21:02 +01:00
Bram Matthys 73dc1a08db ** UnrealIRCd 6.0.1 ** 2021-12-29 15:27:31 +01:00
Bram Matthys faab128472 Bump version to 6.0.1 and create draft release notes (unreleased yet!) 2021-12-29 12:02:57 +01:00
Bram Matthys c5cb19dc5d Fix "./unrealircd upgrade" (and ./Config -quick) problem with local-curl.
First, what we call local-curl is a situation where the system does not have
the cURL library installed and UnrealIRCd offers to compile and use it.

The problem is that CURLDIR in config.settings may refer to an old directory
such as /home/xyz/unrealircd-5.2.1/extras/curl and UnrealIRCd 6 would try to
use it. That would be problematic as it would result in: 1) no cURL updates
anymore since it is only half-detected as local-curl, and 2) once you remove
the unrealircd-5.2.1 directory (since you are on U6) it breaks as well.

So, we now check for this situation and in case of something that looks like
a local-curl situation, change the path to <currentunreal>/extras/curl and
download and compile cURL fresh, as expected.

All this is only for the like 1% users that uses local-curl, which then
used ./unrealircd upgrade or ./Config -quick.

Reported by CrazyCat on the forums.
2021-12-29 10:59:58 +01:00
Bram Matthys 73be662db2 Make "./unrealircd upgrade" return exit codes from stage 2 as well.
Exit status is now documented at https://www.unrealircd.org/docs/Upgrading
and can be used to see the difference between:
* upgrade+configtest OK,
* upgrade OK but configtest failed
* some other failure
* no newer version available
Handy for scripting...
2021-12-29 10:04:00 +01:00
Bram Matthys 607d2bcd62 Make "./unrealircd upgrade" work on FreeBSD.
Suggested by and patches from rafaelgrether in
https://bugs.unrealircd.org/view.php?id=6016

This also cleans up a tiny bit, part of it suggested by Lord255 in
https://bugs.unrealircd.org/view.php?id=5963
2021-12-29 09:31:03 +01:00
Bram Matthys 58551c2d43 When unloading any of the vhoaq channel modes it would cause a crash
later on, because unload_extcmode_commit() would call extcmode_para_delslot()
even though member modes don't use a parameter slot, and hence it
would NULLify a wrong slot, usually for the +H parameter mode. Fun.

We now no longer crash and mass-unset the modes on everyone in the
channel when such a mode is unloaded, just like we do when unloading
any of the other channel modes. It is not done in an efficient way
(one mode per line) but this should be an extremely rare event anyway.

Crash reported by CrazyCat.
2021-12-29 08:41:37 +01:00
Bram Matthys fa5526a44b Add a warning to ./unrealircd spkifp about it using the default certificate
locations, and inform the user that they can specify a file.

This doesn't solve https://bugs.unrealircd.org/view.php?id=6021 completely
but at least makes the user aware of this.

Reported by arcanefeenix and crazycat.
2021-12-28 18:31:38 +01:00
Valerie Pond f4bf9986af Fix some typos in CHGIDENT and CHGNAME log messages (#189) 2021-12-28 18:09:08 +01:00
Bram Matthys 3859c2f477 Error when an invalid (unknown) snomask is encountered in the config file.
This should help users who are upgrading to UnrealIRCd 6 spot silly mistakes
which would cause them to miss server notices.

It now errors and refers to
https://www.unrealircd.org/docs/Upgrading_from_5.x#Update_your_snomasks
2021-12-28 18:04:23 +01:00
Bram Matthys f7719d2de2 Make TKL add/remove/expire oper messages show a [duration: 60m] instead of
the [expires: ZZZZZZZZZZZZZZZZZZZZ GMT] string.

This because most people are interested in the length of the ban (so
relative time) and the exact time a TKL expires is less interesting
(the absolute time) and due to GMT/UTC requires calculating to the
local timezone too.

This also makes the tkl expiry messages be more like the add message,
with []'s, while previous it used more free text at the end of the line.
2021-12-26 09:00:39 +01:00
Bram Matthys d687e310bd Add function pretty_time_val_r(), for which you can specify a buf. 2021-12-26 08:59:44 +01:00
Bram Matthys 7f9c7a0eb4 Remove high cpu load warning, since it is confusing and may very well
not be caused by UnrealIRCd.
Reported by armyn in https://bugs.unrealircd.org/view.php?id=6029
2021-12-25 08:58:46 +01:00
Bram Matthys b98d02817a In SPAMFILTER_MATCH log message, remove leading space in 'destination' JSON.
Reported by armyn in https://bugs.unrealircd.org/view.php?id=6027
2021-12-22 17:11:44 +01:00
Bram Matthys c586c14b9f Fix ~T / ~text ban not working (was not censoring or blocking) 2021-12-22 09:25:59 +01:00
Bram Matthys 8dd1864cee Channel mode +f (flood) could place a timed extban with ~t instead of ~time.
This was only a visual issue, and coincidently these bans were still being
removed after the appropriate time, even without the fix for
0b6a70368c.
2021-12-22 09:10:51 +01:00
Bram Matthys 0b6a70368c Fix timed bans (~t/~time) not expiring if all servers on the net are U6.
Reported by armyn in https://bugs.unrealircd.org/view.php?id=6032
2021-12-22 09:10:05 +01:00
kpcyrd c1732581f8 Add SOURCE_DATE_EPOCH support for build date (#188)
For reproducible builds.
2021-12-19 18:56:37 +01:00
Bram Matthys 3059f3289a Channel is not +H? Send empty response/batch (as per IRCv3 discussion)
Backport of https://github.com/unrealircd/unrealircd/pull/156
(simplified)
2021-12-19 10:45:52 +01:00
alicetries b3c191fc23 Update short_date function to avoid crash if year > 9999 (#174) 2021-12-19 10:29:20 +01:00
crazycatdevs 9e7d4b0122 Small simplification (#185) 2021-12-19 10:24:36 +01:00
Bram Matthys d77f42e4be This one should be the other way around...
Not that anything is this particular code path should trigger it (OK,
maybe if some 3rd party module kills the user from HOOKTYPE_SECURE_CONNECT)
better safe than sorry.
2021-12-17 14:20:39 +01:00
Bram Matthys 35ab4407be Mention U5/U6 series and dates in the README as well 2021-12-17 08:23:14 +01:00
Bram Matthys 893bf864f6 ** UnrealIRCd 6.0.0 ** 2021-12-16 18:18:38 +01:00
Bram Matthys 359f7b4675 Get UnrealIRCd 6.0.0 ready, but don't release *yet*. 2021-12-15 16:54:37 +01:00
Bram Matthys 9ed5638dde SECURITY.md: mention U5 EOL date explicitly in this document as well.
Even though it already contain a reference to the EOL dates.
2021-12-14 17:58:07 +01:00
k4be 26929bedb5 Update help.pl.conf to match help.conf 2021-12-13 20:08:49 +01:00
Bram Matthys fdb7bf68b3 Update release notes a bit
[skip ci]
2021-12-13 19:23:07 +01:00
Bram Matthys 2c73912080 Fix limit for channel modes kicking in too soon. 2021-12-11 10:33:47 +01:00
Bram Matthys 2a574120f5 Rename function to avoid clashes 2021-12-11 10:25:15 +01:00
Bram Matthys bf1860bba8 Send nick!user@host in WALLOPS message from self.
Fix-for-fix 9f56fb4aa7
2021-12-10 19:41:36 +01:00
Bram Matthys 02547610fe Update log block in example.fr.conf.
Reported by armyn in https://bugs.unrealircd.org/view.php?id=6022
2021-12-10 18:53:07 +01:00
Bram Matthys 4bc2848b9e Fix a prototype and change a largely unused log category to avoid clashes. 2021-12-10 10:28:35 +01:00
Bram Matthys cc5f318d27 Add include for snomasks.default.conf in example.*conf
Reported by arcanefeenix in https://bugs.unrealircd.org/view.php?id=6020
2021-12-08 07:17:40 +01:00
Bram Matthys 07c2345af5 Fix throttling only cleaning up old entries every 2 minutes.
That is, until the first REHASH happened, after that all is good.

This was caused by update_throttling_timer_settings() being
called before init_throttling().
2021-12-06 17:40:11 +01:00
Bram Matthys 177f7ef8c0 Add a CONTRIBUTING.md.
Suggested by progval in https://bugs.unrealircd.org/view.php?id=6012
2021-12-06 13:36:12 +01:00
Bram Matthys 7169523d05 Update installer on Windows (.ISS): do signing during the Inno Setup stage
rather than afterwards as a separate step.
Also clean/group the files in the [Files] section a bit.
2021-12-06 09:24:36 +01:00
Bram Matthys 4702185315 Fix authprompt module: was sending trailing NUL byte in SASL, causing
all authentication attempts to fail via the module (/AUTH user:pass).
2021-12-05 10:19:33 +01:00
Bram Matthys c604a3a70e Make soft extended server bans actually work (GLINE %~country:XX)
Reported by musk in https://bugs.unrealircd.org/view.php?id=6019
2021-12-05 09:45:13 +01:00
Bram Matthys dc53818b29 ** UnrealIRCd 6.0.0-rc2 ** 2021-12-04 10:26:57 +01:00
Bram Matthys adc8d5802f Fix +s/+p during netmerge (was on todo) 2021-12-04 10:17:34 +01:00
Bram Matthys b25da63d27 Allow SVSLOGIN also if set::sasl-server is not set.
Because yeah... why not.
2021-12-04 09:42:51 +01:00
Bram Matthys 40723bbce8 Make shipped c-ares version match the one in U5 (1.17.2) 2021-12-04 09:31:35 +01:00
Bram Matthys 09fea29734 Update curl-ca-bundle.crt to version of Tue Oct 26 03:12:05 2021 GMT
[skip ci]
2021-12-04 09:25:50 +01:00
Bram Matthys e78df2461f Fix wrong mode being mentioned in ERR_NOTFORHALFOPS for +L 2021-12-04 09:15:58 +01:00
Bram Matthys b363b2e804 Fix wrong +q vs +a KICK access check. 2021-12-03 18:11:54 +01:00
Bram Matthys 5a80696f62 Remove some confusing examples about extended server bans in (G)ZLINE.
And also remove some references to old oper privilege flags.
Reported by progval.
2021-12-03 16:06:13 +01:00
Bram Matthys 861e761c24 Update HELOPOP SNOMASKS 2021-12-01 10:56:04 +01:00
Bram Matthys bde57af8c5 Update HELPOP EXTBANS: named extbans and some style changes,
reformatting, adding headings, etc.
2021-12-01 10:12:27 +01:00
Bram Matthys d77a5be834 Don't use slashes at start and end in SPAMFILTER example in HELPOP.
Reported by srhuston in https://bugs.unrealircd.org/view.php?id=6002
[skip ci]
2021-12-01 09:00:21 +01:00
Bram Matthys 8c8b4279b8 Ignore case-changes in nicks, even though not clear yet if it should be,
https://bugs.unrealircd.org/view.php?id=6013 reported by progval.
2021-12-01 08:49:41 +01:00
Bram Matthys 4af7a541f8 Add 'oldnick' to HOOKTYPE_POST_LOCAL_NICKCHANGE and HOOKTYPE_POST_REMOTE_NICKCHANGE 2021-12-01 08:40:02 +01:00
Bram Matthys 92820fc2e8 Fix uninitialized memory read on snomask change (oper-only) 2021-11-30 06:34:54 +01:00
Bram Matthys d59537391a Cut off channel for KICK at first comma, as we did in U3.2/U4/U5.
Reported by progval in https://bugs.unrealircd.org/view.php?id=6015
2021-11-29 17:23:45 +01:00
Bram Matthys a71e205185 Lower library version requirement if you choose to use libmaxminddb,
from 1.6.0 to 1.4.3. Suggested by robert-scheck in
https://github.com/unrealircd/unrealircd/pull/183
2021-11-28 08:03:10 +01:00
Bram Matthys 18e3d37b33 Probably a good idea to call the version 6.0.0-rc1 too (thanks Han`) :D 2021-11-27 17:08:10 +01:00
Bram Matthys f85fb7561e Clean up the release notes a bit
[skip ci]
2021-11-27 15:27:19 +01:00
Bram Matthys eb216a6778 Refer to upgrading 5.x to 6.x wiki article.
[skip ci]
2021-11-27 15:26:19 +01:00
Bram Matthys a985b88c52 ** UnrealIRCd 6.0.0-rc1 ** 2021-11-27 14:41:14 +01:00
Bram Matthys 0b7d8f5ebc BuildBot: Update config.settings for latest 2021-11-27 13:56:26 +01:00
Bram Matthys 001c1e7843 Turn AddressSanitizer off by default and ask in ./Config 2021-11-27 13:51:19 +01:00
Bram Matthys 1cd79e381a Fix expansion issue in log message on invalid SJOIN SJSBY (rare)
'$client' was shown as-is instead of expanded, since it was missing.
2021-11-27 10:46:53 +01:00
Bram Matthys cb55931c6e Fix crash on incorrect S2S traffic: "HISTORY" request from remote user.
(This cannot be triggered by clients under normal conditions, only with
deliberate wrong S2S traffic, such as OS RAW, modified source, etc)
2021-11-26 17:06:27 +01:00
Bram Matthys 46d0b4d6bb Actually let's fix this one in -beta4 as well. 2021-11-21 17:34:00 +01:00
Bram Matthys 3320dce301 ** UnrealIRCd 6.0.0-beta4 ** 2021-11-21 17:00:30 +01:00
Bram Matthys 0408c10533 Fix permission check for MODE. Reported by Valware.
This check was accidentally cut out when removing support for bounce
modes in a5b86fcc11.
2021-11-21 16:41:03 +01:00
Bram Matthys d3c98413c1 Websocket module: fix memory leak and also two issues in new forwarder
code (OOB write and a NULL pointer dereference), those last two only
happen for trusted forwarders though.
2021-11-21 16:38:12 +01:00
Bram Matthys e817606ead More of the same. 2021-11-21 10:11:56 +01:00
Bram Matthys dfb7e403e3 Fix issue where an UnrealIRCd 5 server sends one mode line and an
UnrealIRCd 6 server would expand it into two different mode lines
with IDENTICAL msgid values. Obviously message ids must be different
for different events.
Introduced by b078a9c8b5.
2021-11-21 09:35:37 +01:00
Bram Matthys 86b7284e37 Fix another memory leak in SJOIN, similar to the one of an hour ago.
Introduced by b078a9c8b5.
2021-11-21 09:28:13 +01:00
Bram Matthys 75ef181d97 Fix memory leak in SJOIN.
Introduced by b078a9c8b5.
2021-11-21 08:19:40 +01:00
Bram Matthys 11507b3fbb Move export ASAN_OPTIONS to beginning of script so it is used not
only for "./unrealircd start" but also for configtest, genlinkblock, etc.
2021-11-20 17:18:47 +01:00
Bram Matthys c4848250e1 Update ./Config question on "remote includes", now that https:// support
is always available even if you answer "No" here.
2021-11-20 11:52:56 +01:00
Bram Matthys ff5262f1bc Update Turkish example conf & help
Provided by Diablo - (Serkan Sepetçi)
2021-11-20 08:41:13 +01:00
Bram Matthys 8b58218d29 ** UnrealIRCd 6.0.0-beta3 ** 2021-11-19 19:10:39 +01:00
Bram Matthys b42953868b Update parameters of other RunHook()s, other than in mode.c,
for HOOKTYPE_REMOTE_CHANMODE and HOOKTYPE_LOCAL_CHANMODE.
2021-11-19 19:04:48 +01:00
Bram Matthys b078a9c8b5 Fix cut-off and expansion issues with MODE, which is a possible problem when
using mixed UnrealIRCd 5 and UnrealIRCd 6 networks.

This is a slightly complex rewrite of make_mode_str() and do_mode(),
as we nog go from single mode lines to potentially multiple mode lines.

In short: whenever we would be near buffer cut-off point (the famous
512 byte limit) then previously we would prevent the mode, though not
succesfully in all cases where a network consists of mixed 5.x and 6.x.
From this point onward we no longer do that. Instead we convert one
MODE command to two MODE lines if that is needed.
The benefit of this is that we no longer prevent it BEFORE processing
the MODE, which is a flawed method and could be wrong (causing desyncs).
And also, we no longer partially ignore MODE lines from clients when
they would cause the limit to be exceeded, as we replace them with
two MODE lines instead.

These are more changes than I wanted at such a late point but.. they seem
to be necessary to prevent U5-U6 compatibility issues.
2021-11-19 13:53:21 +01:00
Bram Matthys 1857f8cb72 Update ./Config to check for -beta2 (so i don't forget later) 2021-11-13 13:48:27 +01:00
Bram Matthys 36274f7242 Fix nick-flood message appearing even though the user was not changing nicks. 2021-11-13 13:45:39 +01:00
k4be 0cb599be09 extjwt: enable valid "vfy" url checking and update related documentation 2021-11-11 07:55:22 +01:00
k4bek4be 07f98af390 Merge pull request #181 from simplexish/patch-2
Fix a typo in SERVER_LINKED_REMOTE log message
2021-11-11 07:46:58 +01:00
simplexish ec9104a3e1 Fix a typo in SERVER_LINKED_REMOTE log message
Removing ) which doesn't seem to belong
2021-11-11 02:53:16 +03:00
Bram Matthys f9c46f9f10 Add escaping option for URLs.
In the config file if you have a value that is 100% an URL (eg no
spaces and all that) then it is seen as a remote include and will
be fetched. Eg: file "https://something/"
We already had that.

Now we add a new option to make it NOT interpret this as an URL.
Probably only used in rare cases, but, it is needed for modules
like extjwt where you configure an URL.
The solution is simple: use single quotes instead of double:
Eg: url 'https://something/'

Note that single quotes are only supported in this version onwards,
they were not supported in earlier UnrealIRCd versions.

It is also only supported in values at the moment (not names),
since that is the only place where URLs are actually fetched for.
2021-11-10 18:41:22 +01:00
Bram Matthys 717f190336 Fix crash with non-matching link block. 2021-11-10 16:13:02 +01:00
Bram Matthys b3b40e62c5 Fix failed expansion in link.LINK_ERROR_CONNECT. Reported by fo in
https://bugs.unrealircd.org/view.php?id=5992
2021-11-10 16:10:59 +01:00
Bram Matthys 6b87bd1b34 Only allow setting of snomasks that actually exist in the log { } blocks.
Otherwise probably too confusing. Suggested by westor in
https://bugs.unrealircd.org/view.php?id=5995
2021-11-10 15:59:10 +01:00
Bram Matthys 36a06b0011 A few changes to server linking notices:
1) Don't forward link.SERVER_LINKED since we already generate
   link.SERVER_LINKED_REMOTE ourselves.
2) Fix using wrong server name(s) in link.SERVER_LINKED_REMOTE
   reported by flo in https://bugs.unrealircd.org/view.php?id=5988
3) Don't show link.SERVER_LINKED_REMOTE messages when we
   are syncing to a network, otherwise you would get eg 50 of
   such messages for 50 servers when you link in 1 server.
2021-11-10 15:42:10 +01:00
Bram Matthys 9a9b318bfb Add a way to filter in ./unrealircd module generate-repository
so we can generate modules.list better.
2021-11-10 11:36:21 +01:00
Bram Matthys d74ab4cfb1 Add set::server-notice-colors and oper::server-notice-colors so one
can turn colors in snomask server notices on or off.
2021-11-10 08:22:00 +01:00
Bram Matthys 9f56fb4aa7 Make /WALLOPS send the text also back to the person who issued it
reported by PeGaSuS in https://bugs.unrealircd.org/view.php?id=5764
2021-11-10 07:27:47 +01:00
Bram Matthys 585ee5c63f Fix error when using the poll() i/o engine. Reported by Jobe in
https://bugs.unrealircd.org/view.php?id=5999
2021-11-10 07:09:01 +01:00
Bram Matthys eba7e99509 Mention "./unrealircd upgrade" in the release notes.
[skip ci]
2021-11-07 16:58:35 +01:00
Bram Matthys ca2d15360b Make @endif work on Windows.
This is due to \r being replaced with a space in config_parse_with_offset().
Didn't even know that.. yeah.. ugly ugly... but first time i see it
causing a problem in 20 years.
2021-11-07 15:06:17 +01:00
Bram Matthys 4c9a83365c Fix read-after-free due to commit from a few minutes ago.
An URL that did not need to be fetched (due to url-refresh time) could
cause a download complete message ending up in a call to rehash_internal().
This was too soon, as we were still adding and processing other config
files.
2021-11-07 14:23:00 +01:00
Bram Matthys ed1b334f90 Add ::url-refresh <time> option and don't bother downloading GeoIP DB
from unrealircd.org if it is less than 14 days old.

If the file was up to date then it already never fully downloaded it,
thanks to hashing and receiving the "304 Not Modified" HTTP header.
But with this url-refresh it won't even do the HTTP(S) request at all.
2021-11-07 13:25:06 +01:00
k4be d0ccc67881 Merge remote-tracking branch 'origin/unreal60_dev' into unreal60_dev 2021-11-06 19:13:29 +01:00
k4be f665206c4f Don't build libmaxminddb by default, and fail when it's enabled but not present 2021-11-06 19:11:57 +01:00
Bram Matthys f757280a8b Update automatic import of settings from older versions. 2021-11-06 19:11:21 +01:00
Bram Matthys c4a64f4aab ** UnrealIRCd 6.0.0-beta2 ** 2021-11-06 19:05:14 +01:00
Bram Matthys d18f8115f1 Let's bump UnrealProtocol from 5002 to 6000 2021-11-06 18:57:35 +01:00
k4be 48d5af8936 Fix possible null pointer dereferencing 2021-11-06 14:53:08 +01:00
Bram Matthys 761cc8514a Whatever, not important (poison vs unitialized) 2021-11-06 14:17:21 +01:00
Bram Matthys 08f3561ce6 Fix-for-fix from a couple of minutes ago. Duh.. 2021-11-06 14:16:47 +01:00
Bram Matthys 25419700ee Cleanup: remove useless function call to set_usermode()
Probably was still there as a leftover, unfortunately cannot use it
at that moment since modules (and thus user modes) are not fully
initialized yet.
2021-11-06 13:47:08 +01:00
Bram Matthys 2abef3cdfb Don't check for NULL client in match_user() since it cannot or should not be.
(raises false expectations)
[skip ci]
2021-11-06 13:33:37 +01:00
Bram Matthys 700c579ee7 Fix possible crash in set::part-instead-of-quit-on-comment-change. 2021-11-06 13:27:45 +01:00
Bram Matthys c35174db32 Cleanup: don't check for NULL if they can't be NULL (variables
already dereferenced before)
[skip ci]
2021-11-06 13:26:57 +01:00
Bram Matthys 75b213c0db Fix theoretical bug in case a 3rd party module CommandOverride's "CYCLE" and
reads parv[1] after calling the command.
(Then it would have pointed to local storage which is wrong)
2021-11-06 13:10:17 +01:00
Bram Matthys 50b14305cf Get rid of if (module) in HistoryBackendAdd() as it is never NULL.
[skip ci]
2021-11-06 13:04:32 +01:00
Bram Matthys 4cf2940605 Fix-for-fix from a few minutes ago:
Ah okay, the `continue` in the switch was used as a `break 2`.
Changed to a `return` now as no memory is allocated anyway and
nothing further needs to be done. Also makes it immediately clear
(if you read the code) that processing ends there.
2021-11-06 13:01:12 +01:00
Bram Matthys 01c9891757 Fix some more memory leaks (all config related, and a debug one)
[skip ci]
2021-11-06 12:55:45 +01:00
Bram Matthys ff967957f4 Fix two small memory leaks in extjwt (sfilename, b64sig) and change another
one (extjwt_hash_val) to just a simply safe_free() as well which is less
error prone (just needs the value to be initialized to NULL at the beginning
but that is already done).
2021-11-06 12:45:07 +01:00
Bram Matthys 10d2701bfe fclose() before return in geoip_csv.c 2021-11-06 12:39:18 +01:00
Bram Matthys 3c977a4a73 Fix issue when using an URL multiple times in the config.
Was using AddListItem() with the two arguments swapped.
2021-11-06 12:36:32 +01:00
Bram Matthys cae44de110 Fix memory leak if no log { } block that logs to disk and we default
to creating one, also missed a filter.
2021-11-06 12:34:27 +01:00
Bram Matthys 5ae33809de Fix read-after-free in SVSNICK and remote NICK if there is any module
checking 'mtags' in HOOKTYPE_POST_LOCAL_NICKCHANGE.
[skip ci]
2021-11-06 11:31:40 +01:00
Bram Matthys 1e3f6e0128 Need to use ARRAY_SIZEOF() here, of course. (Not that it this bug
will be triggered realisticly)
[skip ci]
2021-11-06 11:28:33 +01:00
Bram Matthys dccab58090 Code cleanup: this just looks too weird otherwise.
[skip ci]
2021-11-06 11:19:51 +01:00
Bram Matthys 509b96b5f7 Clean up: some unimportant control flow issues, eg using 'continue'
instead of 'break' in a while(0) loop.
2021-11-06 11:10:17 +01:00
Bram Matthys abb575bdb6 S2S traffic: Fix using wrong variable in a loop, causing an OOB read. 2021-11-06 10:16:37 +01:00
Bram Matthys e0b9118efe Don't show empty 'via' for link.LINK_DENIED_DUPLICATE_SID_LINKED.
Reported by fo in https://bugs.unrealircd.org/view.php?id=5989
2021-11-05 14:54:10 +01:00
Bram Matthys a52a7304a2 Check for SID collision in SID command as well. We already checked in
PROTOCTL SERVERS=xxx which all servers send, so if these are all
UnrealIRCd servers then we should not reach this, BUT.. you never know
and non-unreal servers don't send this, so it matters for eg services.
2021-11-05 14:47:02 +01:00
Bram Matthys 4ef341769d Don't forward (spam) link.SERVER_LINKED_REMOTE.
Otherwise you get 1 from each server, which can be quite a pain
on a large network.
Reported by fo in https://bugs.unrealircd.org/view.php?id=5988
2021-11-05 14:31:10 +01:00
Bram Matthys 714461b655 Fix TLS debug error missing IP.
Reported in https://bugs.unrealircd.org/view.php?id=5993
2021-11-05 14:02:28 +01:00
westor 0698b04057 Update extban names in modules.default.conf (#175) 2021-11-03 08:54:42 +01:00
westor 888eb40273 Update modules.optional.conf to only use settings for loaded modules (#176)
This so you can just load the whole file but still use blacklist-module to not use some of it. Not sure if that is always a great idea, but it is now an option.
2021-11-03 08:53:57 +01:00
simplexish 2e30b40d9c Fix incorrect SAPART server notice / log message (#177) 2021-11-03 08:52:23 +01:00
Bram Matthys edb33baa22 Make it so set::level-on-join can also specify a mode letter such
as 'v' instead of like 'voice'. This is needed because third party
modules can now add access levels as well (eg: X).
2021-11-03 08:44:39 +01:00
Valerie Pond 571451b1e8 Fix set::level-on-join "none" no longer working 2021-11-03 08:22:35 +01:00
Bram Matthys 1b308c7ca0 Remove seemingly needless looping on SQUITs, as suggested by
Polsaker in https://github.com/unrealircd/unrealircd/pull/158

Have not tested this thoroughly on a larg(er) network, but if
there is any time to apply this patch, then it is now during
6.0.0 beta.
2021-11-01 17:32:58 +01:00
Bram Matthys e08627ead2 Update 'Server protocol' section in release notes.
[skip ci]
2021-11-01 11:08:35 +01:00
Bram Matthys 01815adfba Fix about 8 log messages that were incomplete (due to invalid var expansion) 2021-11-01 10:11:46 +01:00
Bram Matthys 99436ee83c Fix memory leak in /WHOIS 2021-11-01 09:23:45 +01:00
Bram Matthys 9b842140fc Fix missing comma 2021-11-01 07:31:05 +01:00
Bram Matthys d128510ee4 More fixes for $client.detail -> $client.details 2021-11-01 07:11:56 +01:00
Bram Matthys a70eac3293 Fix referencing wrong file in a comment in snomasks.default.conf.
Reported by DeviL.
[skip ci]
2021-11-01 07:11:43 +01:00
Valerie Pond f3db0d5971 Correct chgcmd snotice behaviour (#173)
Fix CHG commands snomask messages ($target.detail -> $target.details)
2021-11-01 07:09:49 +01:00
Bram Matthys 7dd40614dd Fix showing wrong oper login name and operclass in WHOIS (to opers). 2021-10-31 17:34:10 +01:00
Bram Matthys 8f3ef69fae Updates for Windows BuildBot
[skip ci]
2021-10-31 17:33:53 +01:00
Bram Matthys 44e420dc58 Add GeoIP / geoip_classic to Windows build.
Also fix an issue with convert_to_absolute_path() and remotely fetched files.
2021-10-31 14:16:39 +01:00
Bram Matthys 3653de5dfb Move debug notices to debug and suggest not to log them by default.
Also, add a note about AddressSanitizer in the release notes.
(this will be in 6.0.0-beta1)
2021-10-31 09:04:17 +01:00
Bram Matthys b29a9be288 ** UnrealIRCd 6.0.0-beta1 ** 2021-10-31 08:40:09 +01:00
Bram Matthys c196e31c60 Fix using wrong numeric for certfp in /WHOIS 2021-10-31 07:35:02 +01:00
Bram Matthys ca36a5256c Some text updates UnrealIRCd 5 -> UnrealIRCd 6 2021-10-31 07:20:57 +01:00
Bram Matthys 9fcb4ddbe9 Fix some log messages, reported by delta. 2021-10-30 18:41:09 +02:00
Bram Matthys ca238cd76b Make valid_server_name() use valid_host() to accept more characters.
And use the same function when testing the me { } block.
Reported by gerard.
2021-10-30 18:18:07 +02:00
Bram Matthys 57cb9ebc20 Consistently use $existing_client instead of $other_client.
Fixes some expansion issues (too), as reported by delta.
2021-10-30 17:41:15 +02:00
Bram Matthys e3b7ad8fc4 Fix crash in SENDSNO 2021-10-30 17:25:58 +02:00
Bram Matthys e3023cc926 Update release notes
[skip ci]
2021-10-30 12:36:15 +02:00
Bram Matthys 58c3e2940b Add link to JSON logging wiki article with screenshot
[skip ci]
2021-10-30 12:11:08 +02:00
Bram Matthys 5e47073eba Use sections in release notes (convert the remaining ones)
[skip ci]
2021-10-30 11:32:56 +02:00
Bram Matthys aba5817cc0 More release notes updates
[skip ci]
2021-10-30 11:29:00 +02:00
Bram Matthys bfe97a4bde Re-order items in release notes
[skip ci]
2021-10-30 11:17:39 +02:00
Bram Matthys 4be62698c2 Update release notes
[skip ci]
2021-10-30 11:15:05 +02:00
Bram Matthys ccf691e2e1 Update release notes
[skip ci]
2021-10-30 11:00:58 +02:00
Bram Matthys c47d64605a Refer to FAQ entry on log block change, and some other relnotes updates.
[skip ci]
2021-10-30 10:43:29 +02:00
Bram Matthys a6fa68f14a Update release notes (markup)
[skip ci]
2021-10-30 10:24:39 +02:00
Bram Matthys 08287d5740 Update release notes a bit (breaking changes section)
[skip ci]
2021-10-30 10:23:17 +02:00
Bram Matthys 041b169fa6 Use -rpath for geoip modules as well, when needed.
And yeah, should probably not use @VAR@ here directly but pass
it all the way up from other makefiles. Lazy.
2021-10-30 10:11:31 +02:00
Bram Matthys 4ea6c82a5d Move loading of geoip_classic to modules.default.conf
You can still use blacklist-module if you don't want to load it.

In future versions the exact config stuff will likely be different, but
this is just to get more test expore / make things Just work for now (tm)
2021-10-30 10:04:10 +02:00
Bram Matthys ed9f7cfb57 Add /GEOIP command so it's a bit easier to debug these things.
Load geoip_classic with correct settings (for now) in modules.optional.conf.
2021-10-30 09:57:27 +02:00
Bram Matthys 2adbb42ec7 Fix missing symbols in GeoIP modules, move -lXYZ to the end. 2021-10-30 08:51:15 +02:00
Bram Matthys 6918bd4422 Update test repo URL (duh, use https, not ssh) 2021-10-30 08:30:23 +02:00
Bram Matthys 0d468f0950 Update test repo URL
[skip ci]
2021-10-30 08:04:16 +02:00
Bram Matthys b41db3ccb7 Handle NULL in delletterfromstring(). Fixes crash via set_snomask() from SVSSNO. 2021-10-27 16:07:11 +02:00
Bram Matthys 32aa4dc625 Metadata can stay a 3rd party module for now. 2021-10-10 09:39:55 +02:00
Bram Matthys 1d94dc0e71 Some release note update
[skip ci]
2021-10-08 08:40:39 +02:00
Bram Matthys 3b4ed32d71 Use more enums instead of defines 2021-10-08 08:40:16 +02:00
Bram Matthys 53d21a0e56 Update release notes
[skip ci]
2021-10-01 12:04:59 +02:00
Bram Matthys fb08f3c109 Update release notes
[skip ci]
2021-10-01 11:25:24 +02:00
Bram Matthys 93a943e7b9 Update release notes
[skip ci]
2021-10-01 11:15:20 +02:00
Bram Matthys 8057b5755f Add operinfo to Windows Makefile
[skip ci]
2021-09-29 14:55:02 +02:00
Bram Matthys 74a5dbebe2 Update Windows makefile with new cloaking modules and vhoaq chanmodes
[skip ci]
2021-09-29 09:55:54 +02:00
Bram Matthys 520804edc2 Add set::whois-detail which allows you to configure which items
to expose to which users and in what detail.

The default configuration is as follows:

set {
	whois-details {
		basic		{ everyone full; }
		modes		{ everyone none;	self full;	oper full; }
		realhost	{ everyone none;	self full;	oper full; }
		registered-nick	{ everyone full; }
		channels	{ everyone limited;	self full;	oper full; }
		server		{ everyone full; }
		away		{ everyone full; }
		oper		{ everyone limited;	self full;	oper full; }
		secure		{ everyone limited;	self full;	oper full; }
		bot		{ everyone full; }
		services	{ everyone full; }
		reputation	{ everyone none;	self none;	oper full; }
		geo		{ everyone none;	self none;	oper full; }
		certfp		{ everyone full; }
		shunned		{ everyone none;	self none;	oper full; }
		account		{ everyone full; }
		swhois		{ everyone full; }
		idle		{ everyone limited;	self full;	oper full; }
	}
}

Oh, yeah, and for "secure" this also adds displaying of the TLS cipher
in /WHOIS for ircops and self by default. For all others it is limited
to just "is using a Secure Connection".

This also removes the newly added set::geoip::whois-for-anyone since
it is now configured via set::whois-details::geo.

Module coders: HOOKTYPE_WHOIS changed and you may no longer send
directly to the client from this hook. Instead, you should use
add to the NameValuePrioList, usually via the functions
add_nvplist_numeric() and add_nvplist_numeric_fmt().
For inspiration see bot_whois in src/modules/usermodes/bot.c
and reputation_whois in src/modules/reputation.c
2021-09-27 17:27:26 +02:00
Bram Matthys c06f423643 Get rid of ExtBan_Table[] and use a linked list called extbans.
Just like already done for Usermode_Table[] and Channelmode_Table[].

This also adds support for ->unloading=1 and re-use etc etc,
something that seemed to be missing before (but also wasn't
an issue apparently...).
2021-09-26 13:11:21 +02:00
Bram Matthys d6b67bc0a3 Update some unimportant comment(s)
[skip ci]
2021-09-26 12:49:50 +02:00
Bram Matthys ee8cc0e8e2 Get rid of Usermode_Table[] and use a linked list called usermodes.
Just like already done for Channelmode_Table[] -> channelmodes.
2021-09-26 12:46:34 +02:00
Bram Matthys 05f2694685 Add cloak_none module. Also improve warning when loading multiple cloak
modules a bit.
2021-09-26 08:57:40 +02:00
Bram Matthys ab7a56cfbb Add a note about cloaking
[skip ci]
2021-09-26 08:45:16 +02:00
Bram Matthys 1af3f23b9f Default config no longer loads a default cloaking module, since the
admin needs to make a choice.
Also update example conf to load the new cloaking module (cloak_sha256)
and update the text there to require at a key of 80 characters.
2021-09-26 08:36:01 +02:00
Bram Matthys fae7c0fef7 cloak_sha256: require cloaking key to be at least 80 characters.
This may also help with people accidentally loading cloak_sha256
when they previously had cloak keys for cloak_md5.

[skip ci]
2021-09-26 08:32:27 +02:00
Bram Matthys 08723e0e56 Error when no cloaking module is loaded. 2021-09-25 20:46:06 +02:00
Bram Matthys 97ccf29573 Make "./unrealircd gencloak" print the generated keys in a way
so the user can easily copy-paste them to their config file.
Also bump the key length from 50-60 to 80 characters.
2021-09-25 20:25:03 +02:00
Bram Matthys 72fd878664 Add "cloak_sha256" module.
This is based on the old MD5 module, it uses SHA256 instead.
Some re-indenting, replacing hardcoded values with a define,
and some other small changes due to the different hash size.
2021-09-25 20:13:57 +02:00
Bram Matthys e4b449adf8 Add set_channel_mode() which can be used to issue a server mode.
It's usage would be rare, but this is f.e. used from channeldb.
Other uses may be in some 3rd party module.
Example: set_channel_mode(channel, "+k", "key")
2021-09-25 17:42:21 +02:00
Bram Matthys 0e9d7a669f Update HOOKTYPE_LOG to work with new logging system (lots of different args) 2021-09-25 17:33:02 +02:00
Bram Matthys 892a639272 Get rid of big chunk in postconf_defaults() that is unneeded / much
easier now, now that we process the set { } block before all other
blocks (since a few years already).
2021-09-25 17:27:53 +02:00
Bram Matthys 35ae1bcc42 Update a comment about a hook
[skip ci]
2021-09-25 17:23:52 +02:00
Bram Matthys c6ef13b258 Remove HOOKTYPE_REQUIRE_SASL which was never called.
Apparently the other hooks were sufficient after all for authprompt ;D
2021-09-25 17:15:49 +02:00
Bram Matthys 834d38e904 Update HOOKTYPE_PRE_KNOCK to include reason (not used, though) 2021-09-25 17:08:53 +02:00
Bram Matthys 707575bc32 Resolve a number of todo items, most by simply removing them :D 2021-09-25 16:54:29 +02:00
Bram Matthys 38e47b9b62 Rename find_person() to find_user() to be consistent in the naming that
we use since UnrealIRCd 5: we have users (IsUser) and servers (IsServer).
2021-09-25 16:44:11 +02:00
Bram Matthys f2863656ea Remove a number of todo items in conf.c, some by resolving them and
others that can be removed since they are no longer relevant or
deemed not to be an issue.
2021-09-25 16:42:07 +02:00
Bram Matthys 3033fd9b6d Fix some todo items such as validating extban letter and names in ExtbanAdd() 2021-09-25 16:38:15 +02:00
Bram Matthys 73b908e413 Changes to BanContext struct (extended ban API):
* Now ban_check_types (previously checktype):
  this is one or more of BANCHK_* OR'd together, eg BANCHK_JOIN, BANCHK_MSG..
* Now ban_type (previously what2):
  this is the type of the ban, eg EXBTYPE_BAN, EXBTYPE_EXCEPT, etc.
* Now is_ok_check (previously is_ok_checktype)
  this is one of EXBCHK_* for is_ok, eg EXBCHK_PARAM to check parameter.
2021-09-25 16:28:10 +02:00
Bram Matthys b37b190fdd Add enums ExtbanCheck and ExtbanType for use in BanContext. 2021-09-25 16:16:42 +02:00
Bram Matthys fa95735f29 Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-09-25 16:10:39 +02:00
Bram Matthys e18bea2a89 Re-add STATUSMSG in 005 and change the make_prefix() since it now
creates two buffers.
Also remove the placeholder for STATUSMSG and PREFIX in src/api-isupport.c
2021-09-25 16:09:50 +02:00
k4be 063bdc1f5b Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-09-25 16:02:16 +02:00
k4be 11fb778e9d Move METADATA isupport to a correct place 2021-09-25 16:01:27 +02:00
Bram Matthys 3f5d9bf865 member modes / prefix modes (vhoaq) should not show up in CHANMODES= 2021-09-25 16:00:44 +02:00
Bram Matthys bf6d47716e An extra -Wformat-nonliteral fix for clang 3.x (ubuntu 16.04 / debian 8). 2021-09-25 15:55:49 +02:00
k4be ae08cbfb3b Fix isupport PREFIX token generation 2021-09-25 15:40:54 +02:00
Bram Matthys 49e1a8a565 Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-09-25 15:25:00 +02:00
k4be a07f7f2567 extjwt cmodes: generate array of mode characters 2021-09-25 15:23:04 +02:00
Bram Matthys 174459587c Fix crash on CAP-capable TLS client connect.
Crash was introduced couple of weeks ago by proxy stuff.
2021-09-25 15:22:17 +02:00
Bram Matthys 4a4d069f11 Get rid of ignore for -Wformat-nonliteral in two entire files,
now it is only in 5 functions in entire UnrealIRCd. Acceptable.
2021-09-25 15:16:45 +02:00
Bram Matthys 8603c2eb71 Update hunt_server() so command is really the command (eg "LUSERS") and
not a format string (eg ":%s LUSERS %s"). It now simply concats all parv[]'s.
That is, up to parc count. And it automatically does the :stuff for the
last parameter if it contains spaces or starts with a : etc.

This gets rid of a bit sketchy code with an arbitrary maximum etc.

Now it's just:
if (hunt_server(client, NULL, "REHASH", 1, parc, parv) != HUNTED_ISME)
	return;

This has one side effect, though:
Previously we used the format string, so it may be possible for S2S
traffic to now have more arguments then before here and there.
Eg:
* It could be that the caller was using a format string to
  intentionally cut off an extra parameter at the end.
  You can still do that if you call with eg parc-1 instead of parc.
  I don't think there were any such cases though, but hard to rule out.
* Extranous parameters may show up in S2S traffic where it was
  previously unexpected.
2021-09-25 14:49:19 +02:00
Bram Matthys b5375de52d Move some reputation log msgs to ULOG_DEBUG (they already required DEBUGMODE) 2021-09-25 14:24:15 +02:00
Bram Matthys 299c885802 More room for log buffer 2021-09-25 14:23:20 +02:00
Bram Matthys 10ec3c164a Rename the old cloaking module to "cloak_md5" (UnrealIRCd 3.2.1 - 5.2.X)
It was used from July 2004 and served us well it seems.
2021-09-25 11:23:14 +02:00
Bram Matthys ec8f54ec26 Update cloaking key mismatch error and rename some stuff. 2021-09-25 11:19:15 +02:00
Bram Matthys 5100d4863c Guard against multiple log blocks logging to the same file. 2021-09-25 11:12:00 +02:00
Bram Matthys 47279108e4 Use get_operclass() in extbans/operclass as well. 2021-09-25 11:02:39 +02:00
Bram Matthys cac8c34bcc JSON logging: expand operlogin and operclass for users who are ircop.
This uses the new get_operlogin() / get_operclass() functions.
Also updated whois code to use them too.
2021-09-25 10:58:39 +02:00
Bram Matthys b95eb0b3b7 Add get_operlogin() and get_operclass() functions to make things easy.
This retrieves the oper login (/OPER thislogin ...) and operclass of
local and remote users.
2021-09-25 10:57:00 +02:00
Bram Matthys c1378abc32 Initialize variables to NULL (duh) 2021-09-25 10:33:47 +02:00
Bram Matthys 677fcf6b71 Move the HOOKTYPE_LOCAL_OPER back out of remove_oper_privileges().
Can't have it in that function as it may be called even when the
user was not oper before (as a safety precaution). Pitty.
2021-09-25 10:32:25 +02:00
Bram Matthys ce5917e0d9 Expose operlogin and operclass via moddata so they can be seen in WHOIS
and used for auditting purposes across servers (assuming the servers
itself can be trusted).
This is done via the 'operlogin' module which is loaded by default.
Obviously for opers of U5 and below this information is not available.

This also changes the HOOKTYPE_LOCAL_OPER hook to include oper block info:
-int hooktype_local_oper(Client *client, int add);
+int hooktype_local_oper(Client *client, int add, ConfigItem_oper *oper_block);
2021-09-25 10:28:36 +02:00
Bram Matthys b00743fa79 Bump moddata slots
[skip ci]
2021-09-25 10:24:32 +02:00
Bram Matthys edbfaaf95d JSON logging: expand user modes, snomasks, and oper login (if available)
This also adds a function get_usermode_string_r(), which requires
you to specify the buffer (and buffer length) for building the
umode string.
2021-09-25 09:45:30 +02:00
Bram Matthys 6e74cd133b Expand channel modes in JSON logging messages of 'channel' 2021-09-25 09:28:00 +02:00
Bram Matthys 135c5f0747 Use strlcpy()/strlcat()/strlcat_letter() in channel_modes() instead
of pointer calculations. We don't need the speed improvement anymore.
2021-09-25 09:21:31 +02:00
Bram Matthys bf7a72a850 Usermode_Table[].flag -> Usermode_Table[].letter
just like how it is now in U6 in channel modes and extended bans
2021-09-25 09:13:34 +02:00
Bram Matthys fbf3a51517 Add HOOKTYPE_CAN_SET_TOPIC, which works similar to HOOKTYPE_CAN_KICK.
Move checking of +t restrictions to chanmodes/topiclimit.
Move checking for +m restrictions to chanmodes/moderated.
Now the only check remaining in topic is for +b (banned users)
which is fine I think.
2021-09-25 09:04:19 +02:00
Bram Matthys 618049fca1 Add buildnumeric() function, which will only be used sporadically as you
would normally use sendnumeric() instead.

The buildnumeric() function prepares a buffer but does not send it.
It is used in eg CAN_KICK / CAN_SET_TOPIC, where you need to set an
'errbuf' with a full IRC protocol line to reject the request (which
then may or may not be sent depending on operoverride privileges).
2021-09-25 09:03:48 +02:00
Bram Matthys 847f2fc384 Remove is_ip_valid() as we already have is_valid_ip(), and update
the doxygen docs a bit for that function.
2021-09-25 08:17:47 +02:00
Bram Matthys c582a29f09 Update doxygen docs a bit (minimal) for channel access functions. 2021-09-25 08:13:18 +02:00
Bram Matthys fabe16a95c Get rid of has_voice(), is_half_op(), is_skochanop(), is_chan_op(), is_chanadmin(),
is_chanowner(). Using check_channel_access() instead now.
2021-09-25 08:00:57 +02:00
Bram Matthys 0b6336c5f9 Update config.guess and config.sub from 2015-03-04 to 2021-06-03 2021-09-24 18:20:13 +02:00
Bram Matthys ca9132b345 Update geoip-classic.tar.gz. Changes:
In configure remove AC_FUNC_MALLOC and AC_FUNC_REALLOC.
These don't do anything, except they cause a build failure on
Ubuntu 21 and later (together with openssl 3.0.0 anyway).
2021-09-24 18:11:43 +02:00
Bram Matthys 39ead41fae Update notes about release notes a bit
[skip ci]
2021-09-24 17:50:39 +02:00
Bram Matthys 8acd17b0ef Make the error a bit more clear (that the two lines are related)
[skip ci]
2021-09-24 17:46:57 +02:00
Bram Matthys efb16159f3 Add check for missing include "snomasks.default.conf";
Well, not literally, but indirectly :D
2021-09-24 17:44:57 +02:00
Bram Matthys f85732a7e0 When unreal_log() was called incorrectly and wanted to print a BUG
error message about this it crashed. Can't use NULL va and the
null_va trick didn't work either, so.. don't use va stuff at all..
2021-09-24 17:33:30 +02:00
Bram Matthys fa9957ac6b Add GeoIP engine prompt to ./Config 2021-09-24 17:19:02 +02:00
Bram Matthys 3fda96448d Fix crash due to invalid subsystem use in tls.c
[skip ci]
2021-09-24 17:17:03 +02:00
Bram Matthys 4397450bd0 Revert LD_LIBRARY_PATH= in unrealircd script, as we use -rpath for that. 2021-09-24 16:57:52 +02:00
Bram Matthys baa07b179f Get rid of some other old upgrade conf stuff as well. Remove some,
but keep some other errors, since they may still be helpful,
or at least for now.
2021-09-24 16:47:23 +02:00
Bram Matthys a2a9eebf98 Get rid of ./unrealircd upgrade-conf (was for 3.2.x to 4.x) 2021-09-24 16:40:42 +02:00
Bram Matthys 864aef89da LOG_DEST_OTHER => LOG_DEST_DISK 2021-09-24 16:37:24 +02:00
Bram Matthys f29e0fcfe1 Make sure nobody uses a subsystem of like "info" or "debug" etc,
which are reserved for log levels, and would otherwise clash in
the log::sources configuration.
2021-09-24 16:15:05 +02:00
Bram Matthys 4b079dbd1b Add JOIN/PART/KICK logging (snomask 'j').
This also changes the remove_user_from_channel() function to have an
extra parameter to hide it from logs. This is used for KICK (already
logged) and QUIT (which would be stupid to generate 10 part log lines for).
2021-09-24 16:08:41 +02:00
Bram Matthys 4e511da9fb Update default logging conf
[skip ci]
2021-09-24 15:52:41 +02:00
Bram Matthys 8de1adc1c0 Update SECURITY.md to include U6
[skip ci]
2021-09-24 11:33:26 +02:00
Bram Matthys 56c3b4ced6 Automatically add default log block that logs everything if no log
block to disk is present.
Also update the English example.conf.

Both may need some default filtering (or not)...
2021-09-24 11:30:04 +02:00
Bram Matthys 9852ec9991 No longer log everything, so apply source { } on log blocks for disk files.
This also adds the option "all" to log everything (after which you can
use exclusion if you wish, eg "!whatever".
2021-09-24 11:15:52 +02:00
Bram Matthys d3dfa5f40c Make negative matching work in log sources, update default snomasks.
No longer log to all ircops if no matching snomasks.
So yeah, if you don't load snomask.default.conf you will see nothing
(TODO: some warning / error for this)
2021-09-24 11:07:25 +02:00
Bram Matthys 1d73db560c Get rid of modules/snomasks directory, since the snomask module API is gone.
(IRCOps can set any snomask dynamically now)
2021-09-24 10:10:27 +02:00
Bram Matthys b41311ddaf Update default snomask to +bBcdfkqsSoO 2021-09-24 10:03:18 +02:00
Bram Matthys e14b463b60 Major update to default snomask configuration 2021-09-24 09:41:32 +02:00
Bram Matthys bcfe43788d Some unimportant unreal_log() updates.
[skip ci]
2021-09-24 09:41:21 +02:00
Bram Matthys be6bbbcc6b Convert all remaining sendto_umode()/sendto_umode_global() to unreal_log().
Except, of course, the ones that actually need to send to a user mode,
which is only LOCOPS and GLOBOPS.
2021-09-24 08:28:37 +02:00
Bram Matthys 52667445f2 Fix warning on vsendto_prefix_one (my mistake...) 2021-09-23 20:03:33 +02:00
Bram Matthys 43e4c5444f We already got rid of sendto_ops(), now get rid of sendto_realops().
Use the new logging instead.
2021-09-23 19:57:05 +02:00
Bram Matthys 2a7da65574 Fix header: wallops -> usermodes/wallops 2021-09-23 19:31:28 +02:00
Bram Matthys 0439e4f89d Move wallops module from "wallops" to "usermodes/wallops"
(which includes the command)
2021-09-23 19:25:38 +02:00
Bram Matthys 20c4ac2cd1 Move all wallops code out of the core. 2021-09-23 19:21:19 +02:00
Bram Matthys b94707a51b Change (or delete) old sendto_ops() calls. Function is now gone. 2021-09-23 19:14:10 +02:00
Bram Matthys e36c85e4ce I don't understand much from this old code, but.. whatever. 2021-09-23 19:13:55 +02:00
Bram Matthys 6abd74b121 Get rid of REHASH flag handling for staff, just rehash ffs...
And this module is not perm so we can ditch all this code.
2021-09-23 18:55:17 +02:00
Bram Matthys cb31ec97a3 JSON log: expand a bit more for IsMe(), like filling in some client.server
stuff. Also add client.server.info for both IsServer() and IsMe().
2021-09-23 18:50:08 +02:00
Bram Matthys 720f597ad6 Get rid of current snomask system and allow ircops to set any snomask
(that is: a-z A-Z) so to use the dynamic system with the new logging.
Largely untested.
2021-09-22 15:49:20 +02:00
Bram Matthys 7fdd14de95 Remove sendto_snomask() and sendto_snomask_global() as this is no longer
the way we do things with the new logging stuff.

And converted the last few calls to these functions to unreal_log().
2021-09-22 14:27:50 +02:00
Bram Matthys e6bc040402 Update coders in ./Config as well (and restyle a little bit) 2021-09-22 12:46:38 +02:00
Bram Matthys 5175afb598 Update ircd coders 2021-09-22 12:02:46 +02:00
Bram Matthys 8d5ccee2d1 Put arabic-utf8 in the correct group and #if out the hard errror
when mixing UTF8 groups, make it a general warning again as it
may or may not be an issue.
2021-09-22 09:42:42 +02:00
Bram Matthys bcf5b2d4b8 Add support for arabic-utf8 in set::allowed-nickchars. Supplied by Sensiva
in https://bugs.unrealircd.org/view.php?id=3734
2021-09-22 09:42:08 +02:00
Bram Matthys 215677d785 Fix hooks, so gcc compiles again after last few commits. 2021-09-20 18:32:32 +02:00
Bram Matthys 381454bd1d 1) Change from .prefix_priority to .rank.
2) Make higher value = higher ranking
3) Ship with defines for these:
 #define RANK_CHANOWNER  4000
 #define RANK_CHANADMIN  3000
 #define RANK_CHANOP     2000
 #define RANK_HALFOP     1000
 #define RANK_VOICE        -1
2021-09-20 16:09:14 +02:00
Bram Matthys 139098919b Get rid of PREFIX_* in sendto_channel(), message.c and in chanmsg hook.
We use char *member_modes like we now have at all the other places,
which contains eg "o".

TODO: fix prefix sending rules or remove some if 0'd out code

And not sure if we want to do it entirely this way :D
2021-09-20 15:54:57 +02:00
Bram Matthys 6277efd85e Make SAJOIN code use generic prefix framework. Also fix multi-channel
joins in such a case, code was wrong (things being done in the wrong
scope).

This also fixes a bug where an OperOverride message was generated
for SAJOIN nick @#test
2021-09-20 14:19:04 +02:00
Bram Matthys 83f4619e78 Get rid of the choice for/aginst PREFIX_AQ for three reasons:
1) All IRC clients support prefixes nowadays
2) People generally misunderstand the question and think this
   disabled +q (channel owner) and +a (channel admin), when
   in fact it does not. It only enables/disables the showing
   of prefixes, and it changes some of the rules eg requiring
   +qo / +ao for actions that normally only require +q / +a.
3) We now have the modularized +q and +a, so you can actually
   disable channel owner and channel admin, which is what most
   users want(ed) that previously disabled PREFIX_AQ.

For all users (95%+) that enable PREFIX_AQ there is no effective
change. For the other 5% it is likely only for the better.
2021-09-20 13:19:51 +02:00
Bram Matthys 067fb5c830 Fix last detected REHASH memory leak for now (couple of bytes) 2021-09-20 10:06:24 +02:00
Bram Matthys 1e6cce798b Fix memory leak on rehash: free log->sources 2021-09-20 10:04:43 +02:00
Bram Matthys 1631f35e18 Actually free memory of the channel mode, now that we use a linked
list instead of a fixed array.
(since 783cc3ff5b from 1 month ago)
2021-09-20 09:51:26 +02:00
Bram Matthys 3513806e66 Make PREFIX= dynamic by writing it based on the loaded modes. 2021-09-19 18:30:54 +02:00
Bram Matthys dd9f65f585 Add the new modules for vhoaq handling :D 2021-09-13 18:55:06 +02:00
Bram Matthys 187157b5be Fix compiler warnings 2021-09-13 18:50:40 +02:00
Bram Matthys 4cea88645c Modularize member modes (vhoaq).
Still need to clean up a bit after this, but it passes all tests :)
2021-09-13 18:44:18 +02:00
Bram Matthys 6586fe8acd Remove all unused numerics from include/numeric.h. 2021-09-12 16:46:25 +02:00
Bram Matthys cf936078d4 Get rid of the legacy numeric stuff. The file src/numeric.c is removed
as all the numerics are in include/numeric.h now, so we can have
format string checks with a few macro tricks.
(See also previous commits)
2021-09-12 16:31:26 +02:00
Bram Matthys 6237bf5f5f Convert watch code to use new sendnumeric(), getting rid of the temporary
sendnumeric_legacy() calls.

This also fixes some small format string bugs (eg: argument too much and
some time_t fun, like the previous commits elsewhere... nothing fancy).
2021-09-12 16:28:04 +02:00
Bram Matthys 4392468c3e Update HOOKTYPE_CAN_JOIN and HOOKTYPE_CAN_JOIN_LIMITEXCEEDED to take
an extra char **errmsg argument. Upon failure (non zero return value)
this should contain a format string to be sent to the client
(with the return value denoting the number of the numeric).

This gets rid of sendnumeric_legacy() in join.c
2021-09-12 16:09:36 +02:00
Bram Matthys e27749f556 Use long long casts due to time_t difference on Windows vs Linux.
Should now compile without errors on both.
2021-09-12 15:29:26 +02:00
Bram Matthys e046ec7244 Regenerate and mention actual number of the numeric in STR_ERR_*/STR_RPL_*. 2021-09-12 14:46:43 +02:00
Bram Matthys fc9bf5d607 Change sendnumeric() so it can check for format string problems.
This already found a few issues.

As a side-effect, this also means you can only use RPL_xxx and
ERR_xxx in the 2nd argument from now on. You can no longer use
a dynamic integer (eg 'reply') at runtime, since then the format
string cannot be checked.

More to follow, after making sure it works on Windows too.
2021-09-12 14:30:34 +02:00
Bram Matthys 6577721089 Get rid of the option to show modes in /LIST. Always do this.
I don't think there were more than a handful of people who disabled
this, and it clutters the source badly (not to mention that this
should not be a compile time option at all).
2021-09-12 11:28:07 +02:00
Bram Matthys 3543617834 Get rid of some useless #ifdef'd numeric stuff. 2021-09-12 11:25:34 +02:00
Bram Matthys 22bae6ec98 .................
[skip ci]
2021-09-12 11:15:20 +02:00
Bram Matthys 1f8add8868 Some clang 3 specific fixes
[skip ci]
2021-09-12 10:58:37 +02:00
Bram Matthys 58ebadf06b Forgot to run ./autogen.sh... duh. 2021-09-12 10:37:37 +02:00
Bram Matthys da8b70d78c no-no-no... something was not right here ;D 2021-09-12 10:31:14 +02:00
Bram Matthys d35a1baeb2 Can't use -Wno-unknown-pragmas on older compilers, have to resort to
-Wno-pragmas. Well, whatever. We compile with recent compilers in
BuildBot and dev environment so we will not use it there.
2021-09-12 10:26:19 +02:00
Bram Matthys 8e2640683b Compile with -Wparentheses by default. I think most of these are
already enabled by default but some were not.
2021-09-12 10:13:43 +02:00
Bram Matthys a55f2e0c03 Updates for last 2 commits: use a better tactic to deal when
trying to disable warnings in pragma's that are unknown to the
compiler.

We prefer -Wno-unknown-warning-option, which does exactly what
we want. If not available then fallback to -Wno-unknown-pragmas.
That way on recent clang/gcc's we keep the useful pragma warnings,
while still being able to compile on older compiler versions.
2021-09-12 10:10:02 +02:00
Bram Matthys f8811c1f4a Older gcc/clangs need -Wno-unknown-pragmas it seems. 2021-09-12 10:01:17 +02:00
Bram Matthys 3b5b2b5c2f Get rid of -Wno-cast-function-type (well, mostly) and also check for
the existence of -Wno-unknown-warning-option so we can add these since
we use pragma's occasionally to suppress compiler warnings and some
of these may exist in gcc but not in clang or vice versions (and..
versions of course), which would otherwise yield an error.
2021-09-12 09:34:52 +02:00
Bram Matthys 6ce95c3d79 Fixes for previous commit now that we use -Waddress (well, implicitly
through -Wall/-Wextra)
2021-09-12 09:19:46 +02:00
Bram Matthys 62a56b041a Get rid of -Wno-address 2021-09-12 09:06:31 +02:00
Bram Matthys 3517c7a10b Fix a stupid strlcpy mistake where i used sizeof(src) instead of sizeof(dst)
Woah...... caught by -Wstrlcpy-strlcat-size on FreeBSD, nice.
2021-09-11 18:18:29 +02:00
Bram Matthys 7b53af40a1 Temporarily ignore deprecation warnings with OpenSSL 3 in extjwt module.
Obviously these must be fixed at a later point in time, but we don't
want BuildBot to keep failing for now.
2021-09-11 18:16:35 +02:00
Bram Matthys cbe14b0404 Fix SJOIN not working well with channels that don't exist on the other
side. This was due to channel->creationtime being set to TStime() but
then not adjusted/set later, (also) resulting in some adding/removing
action of modes as well.
It *seems* the other few cases were OK though: equal TS, lower TS,
higher TS, just not the "channel only exists on one side"-case.

Guess we need more test coverage!

This also removes the "TS for #channel changed" message that was sent
to channel members. I doubt regular users understand these messages.
I did add a message (unreal_log) to IRCOps, which may or may not be
useful or too noisy... unsure about this one :)
2021-09-11 18:10:25 +02:00
Bram Matthys 0bde5b7070 Randomly getting rid of some strcpy and strcat 2021-09-11 17:43:15 +02:00
Bram Matthys f6c66e5428 Fix windows warning regarding size mismatch (%ld / timestamp)
Due to one of the last commits.
2021-09-11 17:30:33 +02:00
Bram Matthys 4de8456697 Fix compiler warning on Windows 2021-09-11 16:30:23 +02:00
Bram Matthys a4d5341b41 Fix non-debugmode build 2021-09-11 16:12:43 +02:00
Bram Matthys 8353a9e17b Change char *parv[] to const char *parv[] everywhere. This is a BIG change.
It means you can no longer modify eg parv[1] in-place with strtoken and such.

The main reason for this is that as a command handler you have no idea
where the arguments may come from. It could be from a do_cmd() with
read-only storage (eg a string literal) and so on.

It started with an experiment of how far I could get and how annoying the
side-effects would be, but they seem to be quite managable, so I'm
committing this stuff.

Hopefully this catches/solves some stupid bugs somewhere :)
2021-09-11 16:02:44 +02:00
Bram Matthys 39edbd643d Get rid of proto.h and integrate the 20 lines into h.h. 2021-09-11 10:26:18 +02:00
Bram Matthys 5dc6411419 Const const const. This completes the work in h.h. 2021-09-11 10:21:54 +02:00
Bram Matthys 439376b334 Fix compile error when not using cURL, due to recent changes. 2021-09-11 10:04:01 +02:00
Bram Matthys fcf020b99e It's raining consts... 2021-09-11 09:56:22 +02:00
Bram Matthys 9a350169b9 Fix test suite failing occasionally due to cached time in JOINs. 2021-09-11 08:22:22 +02:00
Bram Matthys 7cabd4b79e Const const const 2021-09-11 08:17:12 +02:00
Bram Matthys ac84d4f207 Const const const... modules.c and elsewhere. 2021-09-11 07:53:30 +02:00
Bram Matthys 6f91b2854a Add extra logging for build tests to trace issues. 2021-09-11 07:02:17 +02:00
Bram Matthys 5bc244c1f3 Add a lot more consts. This finishes the work for all hooktypes. 2021-09-10 20:36:38 +02:00
Bram Matthys 74d1481dcb Do the same for RunHookReturn() and RunHookReturnInt().
NOTE: The arguments are swapped, it is now eg:
RunHookReturn(HOOKTYPE_SOMETHING, !=0, a, b, c);
2021-09-10 19:32:17 +02:00
Bram Matthys 7dac12e31e Get rid of RunHook2/3/4/5/6/etc and just have RunHook with __VA_ARGS__ 2021-09-10 19:27:18 +02:00
Bram Matthys cb9b24686b Module API changes:
- For HOOKTYPE_LOCAL_JOIN and HOOKTYPE_REMOTE_JOIN: drop parv[] argument
  as it was useless anyway, it only contained the channel name in parv[1]
  but never the key, sometimes was entirely NULL even.
- For HOOKTYPE_PRE_LOCAL_JOIN instead of char *parv[] we now pass
  const char *key. As predicted more than a year ago when fixing
  0902ed7a99
2021-09-10 19:22:47 +02:00
Bram Matthys 5b091975f5 Get rid of parv[] in HOOKTYPE_CAN_JOIN and HOOKTYPE_CAN_JOIN_LIMITEXCEEDED
as it already has a 'key' argument too.
2021-09-10 19:11:37 +02:00
k4be b2718379d7 Workaround compiler warning with openssl version below 1.1.0-pre3, 2021-09-10 17:02:19 +02:00
k4be e13815b604 Add extjwt module 2021-09-10 16:19:07 +02:00
Bram Matthys c5e0ba7780 Fix build with cURL due to the latest changes. 2021-09-10 15:50:01 +02:00
Bram Matthys 86fa29aaee Add consts in support.c 2021-09-10 15:48:58 +02:00
Bram Matthys 9438ddfd93 Add consts in user.c 2021-09-10 15:40:50 +02:00
Bram Matthys 09a412782d Const stuff for misc.c 2021-09-10 15:25:21 +02:00
Bram Matthys 447555e044 More consts in stats.c 2021-09-10 15:07:17 +02:00
Bram Matthys f085173d46 More const char * stuff... mostly in conf.c but also elsewhere. 2021-09-10 15:01:23 +02:00
Bram Matthys 2e82ab0eca Make CommandOverrideAddEx() the new CommandOverrideAdd():
IOTW, change CommandOverrideAdd() to require a priority argument:
-       CommandOverrideAdd(modinfo->handle, "TEST", override_test);
+       CommandOverrideAdd(modinfo->handle, "TEST", 0, override_test);
2021-09-10 14:13:07 +02:00
Bram Matthys bba0124bd3 Drop the Ex... CallbackAdd*Ex() -> CallbackAdd*() 2021-09-10 14:09:22 +02:00
Bram Matthys 6ebddc8817 Update channel mode API to use more consts 2021-09-10 14:06:57 +02:00
Bram Matthys 08a32429ff Update extban API to use more consts 2021-09-10 13:39:26 +02:00
Bram Matthys d4d4da6a8d Add another const to ValidatePermissionsForPath. Fix Windows build, maybe? 2021-09-10 12:58:15 +02:00
Bram Matthys 66a51fb659 Massive conversions from 'char *' to 'const char *' and 'char **' to 'const char **' 2021-09-10 12:46:31 +02:00
Bram Matthys edfdfe4a03 Add HookAddConstString() and friends.
Also EfunctionAddPChar() -> EfunctionAddString(), and callbacks etc.
2021-09-10 11:59:14 +02:00
Bram Matthys a3bfa210e9 HookAddPChar() -> HookAddString()
and .pcharfunc -> .stringfunc
2021-09-10 11:49:06 +02:00
Bram Matthys fe3907f153 Use more const char * 2021-09-10 11:39:04 +02:00
Bram Matthys d648cd0729 Use strlncpy() everywhere where we previously used strlncat() with a empty
buffer (due to the lack of strlncpy before...).
2021-09-10 11:26:36 +02:00
Bram Matthys c550d95619 Add strlncpy(): works just like strlcpy except that it has an extra
argument which specifies how many characters to copy max.

strlncpy(dest, src, sizeof(dest), maxcopybytes);
vs
strlcpy(dest, src, MIN(sizeof(dest),maxcopybytes+1));

We already had a strlncat() vs strlcat()
2021-09-10 11:19:57 +02:00
Bram Matthys cd88e02f3d Use more const char * 2021-09-10 11:11:54 +02:00
Bram Matthys 463c7d4ddf Spoof remote connecting/disconnecting notices with sender being the
server where the client is (or was) on. Just like we did in UnrealIRCd 5.

Not sure if API-wise and variable-name-wise I want to do it this way,
but whatever...
2021-09-10 08:54:29 +02:00
k4be 59888af8db Fix crash on failed file download while rehashing 2021-09-05 19:56:41 +02:00
Bram Matthys 43f77b8211 BuildBot: log server commands for tracing 2021-09-04 10:55:11 +02:00
Bram Matthys 2951c94ccd Use $MAKE instead of make in extras/build-tests/nix/build too 2021-09-04 09:37:45 +02:00
Bram Matthys 01ec8696d0 FreeBSD hangs with ASan enabled, in OPENSSL_init_ssl(), so disable it in
the build tests (wtf?)
[skip ci]
2021-09-04 09:36:59 +02:00
Bram Matthys 4ef3b9f000 Add BSDmakefile with a note to run 'gmake' for BSD users.
Also, check for GNU make (which can be either 'make' or 'gmake')
early in ./Config and print out an error to install prerequisites
from https://www.unrealircd.org/docs/Installing_from_source

This also replaces 'make' with ${MAKE} (and such) everywhere.
2021-09-04 09:31:30 +02:00
Bram Matthys 894b7e5461 Makefiles: switch from suffix rules to pattern rules. As suffix rules
can't have dependencies, so if you change a .h file, it fails to
recompile the other dependencies. Grmpf!
This does mean that we require GNU Make (gmake) from now on.
2021-09-04 08:25:18 +02:00
Bram Matthys 9ef1d06afd Remove more unused stuff in dynconf.h, and drop set::dns which did
nothing since 3.2 or so.
2021-09-03 21:17:51 +02:00
Bram Matthys 13dc17f5dc Code cleanup: remove unused structs and variables. 2021-09-03 21:07:38 +02:00
Bram Matthys 617288991e Remove find_except(), conf_except and struct ConfigItem_except.
These are all unused since the addition of ELINE.
2021-09-03 20:46:06 +02:00
k4be 8c6f94ffef metadata debug: remove command logging and replace last sendto_snomask with unreal_log.
Also get rid of unused trylater variable.
2021-09-03 18:54:19 +02:00
Bram Matthys 4a82b89793 Code cleanup in tkl.c: get rid of confusing 'whattodo' and use 'add'
which is 1/0 so that the meaning is straightforward.
2021-09-03 11:05:19 +02:00
Bram Matthys 16179b9c00 Don't log add_config_resource() debug code by default. 2021-09-03 10:37:51 +02:00
Bram Matthys a9833ebedf Fix crash on empty remote METADATA (bad S2S traffic). 2021-09-03 08:50:16 +02:00
Bram Matthys c4a4867ca5 More goto's make the world a better place.
Oh and also fix a memory leak in parse_extended_server_ban().
2021-09-03 08:06:03 +02:00
Bram Matthys 7d75b38c26 OpenSSL: Check for lib64
Mostly due to openssl 3 beta if you custom build to a specific dir.
2021-09-03 07:54:25 +02:00
Bram Matthys 1f2e79b64c Fix missing return after exit_client() in PROTOCTL.
This caused client->server to be NULL and then when processing
another PROTOCTL parameter this would cause a crash.
2021-09-02 18:15:12 +02:00
Bram Matthys 725e03e1e9 Simplify identical_ban(), it was never perfect anyway. 2021-09-02 17:20:54 +02:00
Bram Matthys 9cdd90e848 Ignore remote MONITOR requests.
(Fixes crash with faulty S2S traffic)
2021-09-02 17:08:10 +02:00
Bram Matthys 5b9c419041 Add parse_extended_server_ban(). This makes named extended server bans
working now (eg ELINE ~certfp:xyz etc).
Also fixes a crash due to an OOB read.
2021-09-02 17:01:20 +02:00
Bram Matthys 9952a8e98f Be more careful in json_expand_client() when called for a server that is
only partially a server yet: IsServer() is true but client->server is NULL.
Fixes a crash when called from PROTOCTL.
Actually not entirely sure if this happens in practice, but better safe
than sorry.
2021-09-02 15:59:43 +02:00
Bram Matthys fa5c9039a2 Put the same extban rule checks in extban_is_ok_nuh_extban() as they
already were in extban_conv_param_nuh_or_extban().
The recursion check was already there, but not the "rule 2 violation"
if ((extban->options & EXTBOPT_ACTMODIFIER) || (extban->options & EXTBOPT_NOSTACKCHILD))

This also backs out the temporary fix 5df1b1b889.
2021-09-02 15:51:11 +02:00
k4be 459deb3084 Actually, ignore all s2s PROTOCTL from users 2021-08-31 16:35:59 +02:00
k4be 45775d1929 Fix crash on bad s2s INVITE command 2021-08-31 15:18:21 +02:00
k4be f4ad2416a7 Make server name check a bit more strict
(% characters made sendnumeric generate invalid format strings)
2021-08-31 13:38:14 +02:00
k4be 5df1b1b889 Workaround crash with stacked multiple ~f bans
This should probably be fixed properly later.
2021-08-31 13:00:47 +02:00
k4be 7f958b7dad Fix crash for setting channel metadata by unregistered connections 2021-08-31 12:59:46 +02:00
k4be c711bc6dfb Fix named extban name comparison
(was accepting names with extra stuff after a valid name)
2021-08-30 18:35:58 +02:00
k4be 228f6f05af Ignore PROTOCTL EAUTH from users 2021-08-30 09:29:32 +02:00
Bram Matthys 8caeae6f82 Fix crash on PROTOCTL EAUTH= 2021-08-29 14:08:12 +02:00
k4be 420ebd7900 Get rid of NULL va_list compiler error 2021-08-29 12:35:29 +02:00
Bram Matthys f3c7b8c456 Windows: fix an external variable not being MODVAR, causing a funny
"no more connections available" error. Oh Windows.... such a joy!!!
[skip ci]
2021-08-29 12:19:15 +02:00
Bram Matthys 07390d093f Remove modules/mdex which is an example that shouldn't be used/built
(with UnrealIRCd anyway)
[skip ci]
2021-08-29 12:04:54 +02:00
Bram Matthys 340e6016da Windows makefile: update the DLL_FILES list as well.
This is just autogenerated so let's hope there is no mistake :D
At least it is nicely sorted alphabetically now.
[skip ci]
2021-08-29 12:00:18 +02:00
Bram Matthys d0968628c4 More Windows BuildBot updates
[skip ci]
2021-08-29 11:42:46 +02:00
Bram Matthys 36481b1f8e Windows BuildBot: parallel build with JOM, should be 4-5 times faster now.
[skip ci]
2021-08-29 11:28:54 +02:00
Bram Matthys 8476523888 Fix permissions
[skip ci]
2021-08-29 11:24:57 +02:00
Bram Matthys 6b8e51f9b9 Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-08-29 11:23:18 +02:00
Bram Matthys e9738b32f5 Update Windows makefile, incomplete yet.
I wanted to use pattern rules in Makefiles, which worked great, but..
i also want to be able to use parallel builds, and JOM does not seem
to support it. So....
Listing all the objects again, all the module rules are autogenerated
(yeah need to store those scripts somewhere..), though the list itself
needs updating in a later commit.

Using /FS /MP1 when creating the object files for UnrealIRCd.exe,
as due to the parallel JOM build it accesses the intermediate vs140.pdb.

Then, for all the modules, we can do without /FS because we now
explicitly set /Fdsrc/modules/xxxxx.pdb and thus don't have this
file access contention to vs140.pdb.

[skip ci]
2021-08-29 11:21:02 +02:00
k4be 84527768ce Add missing libmaxminddb remark in configure output 2021-08-29 11:20:33 +02:00
Bram Matthys 6a781e782f Windows BuildBot: reorder unrealircd-tests repo so we can use
fakereputation.c from in there while we build.
[skip ci]
2021-08-28 20:53:15 +02:00
Bram Matthys c28239dd68 Set User-Agent in url_curl as well (already done in url_unreal). 2021-08-28 20:37:09 +02:00
Bram Matthys 8b64f44400 Fix Windows BuildBot
[skip ci]
2021-08-28 19:47:27 +02:00
Bram Matthys 3b5caea331 *sigh*
[skip ci]
2021-08-28 18:34:17 +02:00
Bram Matthys a15666d287 Windows build: Ah, shouldn't have quotes at all, otherwise
a mysterious error appears. Great.
[skip ci]
2021-08-28 18:17:58 +02:00
Bram Matthys 9f729b1438 Windows: url.obj -> url_curl.obj
[skip ci]
2021-08-28 18:08:06 +02:00
Bram Matthys cdde22d338 Windows: fix missing quote in vs2019.bat causing make custommodule to fail.
[skip ci]
2021-08-28 17:44:41 +02:00
Bram Matthys be67bdc342 Update Windows installer to include Jansson
[skip ci]
2021-08-28 17:30:38 +02:00
Bram Matthys feb60f7bc6 Windows: fix path in vs2019.bat
[skip ci]
2021-08-28 17:28:06 +02:00
Bram Matthys c455c1ae52 unrealircd-5-libs -> unrealircd-6-libs
[skip ci]
2021-08-28 17:26:15 +02:00
Bram Matthys 880c29e006 Make BuildBot test UnrealIRCd 6 on Windows
[skip ci]
2021-08-28 17:18:12 +02:00
Bram Matthys 4c2aeab75e Windows compile fixes 2021-08-28 16:35:37 +02:00
Bram Matthys 3a9a746577 Update Windows makefile for Jansson library
[skip ci]
2021-08-28 15:22:15 +02:00
Bram Matthys 75d427ea2f Skip tests on Debian 8. It's LTS is EOL and fails at running tests.
We may want to scratch the build tests altogether for it actually..
2021-08-28 10:25:36 +02:00
Bram Matthys 58711d5e5f Test BuildBot again 2021-08-27 20:16:32 +02:00
Bram Matthys 6ab77f30c8 Test BuildBot 2021-08-27 20:05:33 +02:00
Bram Matthys 4cee60840a Compile oldcloak.so now that it was moved from R_MODULES to MODULES
in the src/modules/Makefile
2021-08-27 19:43:18 +02:00
Bram Matthys 1b096b5146 Use good ol suffix rules in Makefile so we can get rid of writing out
every .o and .so rule. Writing each of them out manually is useless
for all except 3 of the ~250 objects.
2021-08-27 19:36:07 +02:00
k4be 23e3d02d01 Document geoip modules 2021-08-27 15:13:04 +02:00
k4be 211995f703 geoip_maxmind: fix indentations 2021-08-27 15:00:20 +02:00
k4be 9c3d5dffb0 Add libmaxminddb support 2021-08-27 14:49:13 +02:00
k4be b67e2e4fb0 Check for duplicate callbacks earlier 2021-08-27 12:20:54 +02:00
k4be ca3bbfeadf Improve handling of missing files 2021-08-27 12:20:36 +02:00
k4be 1f72396442 Initial version of geoip_csv 2021-08-26 20:50:02 +02:00
k4be 5a83c3cd4d geoip_classic: use more efficient calls 2021-08-26 18:57:48 +02:00
k4be da497f0a7a Delete CheckNull defines from modules now that it's defined in h.h 2021-08-26 18:12:56 +02:00
k4be bebeeac0db geoip_base: add configuration, check all users on load
geoip_classic: change config format
2021-08-26 18:08:56 +02:00
k4be 52904ded83 geoip_classic: add configuration 2021-08-26 14:14:52 +02:00
k4be d5f69982eb geoip_classic: ipv6 support 2021-08-26 13:33:40 +02:00
k4be 326c1f5e4a Mention extended-monitor in release notes 2021-08-26 11:48:09 +02:00
k4be 48604b6bd0 geoip_base: support WEBIRC and remote users 2021-08-26 11:47:01 +02:00
k4be b15ddd760a Fix geoip library build and geoip_classic loading 2021-08-26 11:25:26 +02:00
k4be a6643fcd38 Rename efunction handlers to match the convention 2021-08-25 09:06:11 +02:00
k4be f1bc9f37e1 Change watch notification hook to callback.
This fixes duplicate AWAY message with extended-monitor.
2021-08-25 09:02:24 +02:00
k4be 184e7083ea Move client capability code to corresponding modules 2021-08-24 22:34:39 +02:00
k4be a03677023c Change WATCH numerics to valid ones 2021-08-24 20:39:36 +02:00
k4be e7e82ad493 Move host-change-related code to chghost.c 2021-08-24 20:37:02 +02:00
k4be f4a915bbb7 Update watch_notification argument name
Fix WATCH crash caused by that argument
2021-08-24 20:19:50 +02:00
k4be fe51aaf357 Add wATCH_EVENT defines 2021-08-24 19:58:05 +02:00
k4be 502def9401 Add extended-monitor (work in progress) 2021-08-24 19:42:38 +02:00
k4be 3b54cd35b6 metadata: some code cleanup, normalize names 2021-08-24 15:19:57 +02:00
Bram Matthys fd02a662ec Fix compile error when not using DEBUGMODE 2021-08-23 16:25:24 +02:00
k4be 83e6dafc96 metadata: change logging to unreal_log 2021-08-23 16:03:12 +02:00
k4be d8067594be Fix DNS lookup for proxy-forwarded IPs 2021-08-23 12:41:21 +02:00
k4be fb0f5ecab3 Fix hang on METADATA SUB 2021-08-22 23:26:16 +02:00
k4be d69b4394e7 Fix queuing notifications 2021-08-22 21:30:36 +02:00
k4be 9a8889f161 Remove a static variable that was never read 2021-08-22 21:25:06 +02:00
k4be d40853b71c Add basic metadata module (no moderation) 2021-08-22 21:17:19 +02:00
Bram Matthys 58cd2d8bfd Add some comments and add a redundant check for parameter writing.
Better to be safe than to accidentally write OOB.
2021-08-22 19:43:36 +02:00
Bram Matthys 49955670d9 Use do_mode_char_write() at two more places. 2021-08-22 19:38:18 +02:00
Bram Matthys 6f62a967fa More code cleanups in mode.c: this splits do_mode_char() up between
do_mode_char_list_mode() and do_mode_char_member_mode(), which are
two quite different things.
And rewrite do_mode_char_member_mode() to get rid of switch/case
style and the goto.

Also add do_mode_char_write() which is used at 5 places (could be
expanded, probably).
2021-08-22 19:33:33 +02:00
Bram Matthys 52b4a44e94 Massively rename Cmode.flag to Cmode.letter.
(similar to 5a387f9c0b)
2021-08-22 18:45:13 +02:00
Bram Matthys 9838378550 Massive rename of:
* channel->mode.extmode to channel->mode.mode
* channel->mode.extmodeparams to channel->mode.mode_params

This because all channel modes that are set there are extended channel
modes, only lists are still in core atm and they never get set here.
2021-08-22 18:36:00 +02:00
Bram Matthys e0504b2e52 Remove Mode.mode, it now only contains Mode.extmode and Mode.extmodeparams
Also make MODES_ON_JOIN point to iConf.modes_on_join.extmodes instead
of iConf.modes_on_join.mode

Actually in next commit I may reorder again...
2021-08-22 18:33:25 +02:00
Bram Matthys fafa58f8c8 Make gcc happy, even though this is a false positive. 2021-08-22 18:24:31 +02:00
Bram Matthys 7e4399a2ef Some do_mode_char() cleanups, now that it only deals with members/lists. 2021-08-22 18:23:37 +02:00
Bram Matthys 783cc3ff5b Cmode API: change from Channelmode_Table[<num>] to channelmodes linked list.
And now we can easily sort the channel modes too, makes it easier for
our test cases.
2021-08-22 17:57:14 +02:00
k4be b3fce25955 Documentation update 2021-08-22 17:00:59 +02:00
k4be 50ae1ca2df Proxy validation by IP address.
TODO: add optional password too.
2021-08-22 16:46:52 +02:00
Bram Matthys 96b290536e Rename Channelmode_Table.slot to .param_slot since this is only
about parameter slot mapping.
2021-08-22 16:37:18 +02:00
k4be e205e14279 Query DNS for hostname of forwarded users (seems to work) 2021-08-22 15:05:22 +02:00
k4be 7ed45c5921 Make websocket_parse_forwarded_header return a pointer 2021-08-22 14:20:36 +02:00
Bram Matthys d35a90c80f Fix various channel modes showing up as duplicate in 004 and 005.
Yeah I forgot we hardcoded these somewhere, now they are gone.. poof!
2021-08-22 14:06:51 +02:00
Bram Matthys 39ed0520cc Fix compiler warning/crash 2021-08-22 13:50:02 +02:00
Bram Matthys aac3c407bf I forgot a forward declaration.. 2021-08-22 13:45:32 +02:00
Bram Matthys 3a464e34ff Some minor reordering 2021-08-22 13:36:46 +02:00
k4be a2cdb8ff89 Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-08-22 13:36:06 +02:00
k4be be78ecebfc Parse "Forwarded:" header from proxy.
Not (yet) checking source address nor getting a hostname.
2021-08-22 13:34:54 +02:00
Bram Matthys 85d7a2556a Move list mode requests like "MODE #channel b" to list_mode_request()
which uses send_list_mode() and send_user_list_mode() for
+beI and +aq respectively.
2021-08-22 13:32:37 +02:00
Bram Matthys 5c114d0069 Cleanup old channel mode stuff, now that all non-list-modes are gone.
Eg no longer need to walk through the corechannelmodetable for
single param channel modes...

Also fix sjoin comments about "their" and "our" modes. In the merge
case this was not correct, it was "our old" and "merged modes".
2021-08-22 13:15:08 +02:00
Bram Matthys 8a5a0723e9 Fix the default set::modes-on-join (+nt) not working anymore, since
at the time of setting the default settings the channel mode modules
are not fully initialized yet.
2021-08-22 13:12:55 +02:00
Bram Matthys 1a19de2de9 Move channel mode +r to module chanmodes/isregistered 2021-08-22 12:19:07 +02:00
Bram Matthys 57ec565051 Move channel mode +t to module chanmodes/topiclimit
TODO: move code from "topic" module to here, some hook call.
2021-08-22 12:09:53 +02:00
Bram Matthys 6dd539d760 Move channel mode +m to module chanmodes/moderated
(and nearly all the code related to it)
2021-08-22 12:01:54 +02:00
Bram Matthys 24f73c28e4 Move channel mode +l to module chanmodes/limit
(and all the code related to it)
2021-08-22 11:45:08 +02:00
Bram Matthys 1533c6431e Move channel mode +n to module chanmodes/noexternalmsgs
(and all the code related to it)
2021-08-22 11:22:33 +02:00
Bram Matthys 8066c13876 Move +s/+p to chanmodes/secret and chanmodes/private.
To be honest, the modules don't do much other than handling the
mode stuff, but.. we can look at that again later.
2021-08-22 11:11:26 +02:00
Bram Matthys 374069914e Fix memory leak in find_invex() due to extban recode from a few
weeks ago.
2021-08-22 10:44:29 +02:00
Bram Matthys 295b3505ef Move channel mode +i to module chanmodes/inviteonly 2021-08-22 10:37:37 +02:00
Bram Matthys c403a47daf Move channel mode +k to module chanmodes/key 2021-08-22 10:06:51 +02:00
Bram Matthys 1e8c5da6aa Add ERR_INVALIDMODEPARAM which is a bit more informative than
ERR_CANNOTCHANGECHANMODE since it makes clear the problem is the
parameter and not a permissions issue..
2021-08-22 10:05:49 +02:00
Bram Matthys 021ba807bd Fix memory leaks in built-in https client and only build SSL_CTX once. 2021-08-21 20:29:38 +02:00
Bram Matthys ec5f9ee6c3 Add check for missing HTTP/1.X response. Shouldn't happen, but,
otherwise the error would be confusing wrt redirects, this is better.
2021-08-21 18:33:14 +02:00
Bram Matthys 8344327cb4 HTTPS client: support Basic authorization 2021-08-21 16:57:38 +02:00
Bram Matthys 6f087093df Create some more notes regarding the release notes 2021-08-21 16:36:33 +02:00
Bram Matthys ccc0b3397e For a remote include, use the URL[*] in any error messages instead
of the temporary file. That is, ce->file->name contains the URL.

[*] Any user:pass is censored from the URL via displayurl()
2021-08-21 16:15:41 +02:00
Bram Matthys ecc3ffe1e2 Parse error in remote include must be a fatal error. It is now (again). 2021-08-21 16:04:55 +02:00
Bram Matthys 24dec75576 Rename the current cloaking module to 'oldcloak' 2021-08-21 14:32:49 +02:00
Bram Matthys 8dc316bd8d Use SHA256 instead of MD5 in add_entropy_configfile() 2021-08-21 14:28:01 +02:00
Bram Matthys c821efa477 Get rid of old remote include stuff in windows gui.c, we don't
track this anymore.
[skip ci]
2021-08-21 14:14:03 +02:00
Bram Matthys 5b90fd0c0d Get rid of old MOTD downloading code and several USE_LIBCURL defines
that are no longer needed.
2021-08-21 14:13:24 +02:00
Bram Matthys 89b9c2ec32 Deal with HTTP redirects, and add DOWNLOAD_MAX_REDIRECTS to include/config.h
which defaults to 2. Make it use this value for both curl and non-curl.
Previously (with curl) it was set to 1, and nobody complained...
2021-08-21 14:05:43 +02:00
Bram Matthys e28cbb6041 Differentiate between DNS/connect timeout (15s) and transfer timeout (45s).
Already done in curl code, now also in non-curl-code.
2021-08-21 13:36:03 +02:00
Bram Matthys fe08d58dbc Add SNI support. Verify TLS certificate belongs to the host.
(Those were items 7 and 8 on the previously mentioned TODO list)
2021-08-21 13:30:36 +02:00
Bram Matthys 6a6f4120ee Built-in https client: Deal with Transfer-Encoding: chunked
(and also fix a crash if using non-https url)
2021-08-21 13:23:33 +02:00
Bram Matthys c9c2106bb9 Use SHA256 hash for cache/<object> instead of old MD5 2021-08-21 09:45:44 +02:00
Bram Matthys 090fe76739 URL: Make the curl and non-curl implementation use the same timeouts.
These are set in include/config.h to what they already were before:
15 seconds for the connect timeout, 45 for the complete transfer.
2021-08-21 09:37:14 +02:00
Bram Matthys c9e98137a4 Get rid of url.h and stuff the 6 functions there (which were not even
declared as extern) in include/h.h like the rest.
2021-08-21 09:32:17 +02:00
Bram Matthys 182cc7eab4 HTTPS client: add support for timeouts 2021-08-21 09:19:29 +02:00
Bram Matthys 9fe3b3f4d5 Use https_cancel() and get rid of goto's. 2021-08-21 09:09:10 +02:00
Bram Matthys 2a762ee68b Use handle->errorbuf instead of local errorbuf everywhere. 2021-08-21 08:52:47 +02:00
Bram Matthys 2c7d2c8f86 Split url.c into url_curl.c (curl implementation) and url_unreal
(the new fallback https-only implementation).

./configure will set URL= to either url_curl.o or url_unreal.o
depending on whether curl is enabled or not.

The 3 functions that both implementations had in common are now in
src/misc.c: url_is_valid(), displayurl() and url_getfilename().
2021-08-21 08:47:38 +02:00
Bram Matthys 00f3f300f0 Put downloads in a list. 2021-08-21 08:31:30 +02:00
Bram Matthys 1752844824 Built in HTTPS support: support http caching (If-Modified-Since, 304) 2021-08-21 08:24:52 +02:00
Bram Matthys dcfe0885a6 Add functions to conver to/from RFC2616 timestamps, as used in HTTP
in last modified headers.
2021-08-21 08:24:22 +02:00
Bram Matthys d6a074aa34 Support for remote includes without cURL (https only).
This is work in progress. It current lacks a number of features
that we would like to have, but most of them are relatively easy
now that most of the work has been done:
1) Support for caching based on timestamps, like curl ("not modified")
2) IPv6 support
3) HTTP redirects (with limit)
4) Timeouts for connect and reads (15 / 45 for curl atm)
5) HTTP downgrades
6) Chunked transfer encoding
7) Verify openssl hostname check
8) SNI
9) Ideally some progressbar for large transfers such as the geoip db
   (for cURL too by the way)

And.. finally we should use this stuff from the modulemanager so we
don't have duplicate code.
2021-08-20 19:19:04 +02:00
Bram Matthys f95e799397 For failed downloads, where we have a cached copy present, i forgot
to read the (cached) remote include file so it did not check if it
included another remote include.
2021-08-19 09:57:08 +02:00
Bram Matthys 5321dcb81b ConfigResource: get rid of rs->flag.type stuff and just use rs->type.
Also replace local variables 'inc' with 'rs'.
2021-08-19 09:37:28 +02:00
Bram Matthys ae6222e329 Get rid of errorbuf in ConfigResource as this is not used. 2021-08-19 09:34:33 +02:00
Bram Matthys 4e53bf874a Make remote includes caching work again. Both on-boot and on-rehash. 2021-08-19 09:33:46 +02:00
Bram Matthys 7b3c1165f8 Make tld::mask use the generic masks that we use everywhere
(and hence support multiple masks and server bans matching etc)
2021-08-18 18:45:23 +02:00
Bram Matthys e503ad4fd5 Reorder members in ConfigEntry struct a bit (optimize for L1/L2 cache)
Obviously name, value and next should be at the top.
2021-08-18 18:32:05 +02:00
Bram Matthys cdff69db7a Allow people to include the same file multiple times. This will no
longer raise an error and we will simply load the include only once.

I left some tracing code in case we have a bug in the code that
handles this, but testing shows it works well both for files and
URLs.
2021-08-18 17:04:45 +02:00
Bram Matthys a60b9f3176 Handle duplicate URLs/downloads (only download once) 2021-08-18 16:43:42 +02:00
Bram Matthys ce3e23a5d2 Get rid of unnecessary included_from and included_from_line
members in ConfigResource (previously ConfigItem_include).
2021-08-18 16:31:48 +02:00
Bram Matthys 0b5fab1617 Some cleanups in src/url.c and added error message for the very unusual
case where curl may fail to create a handle.
2021-08-18 15:19:51 +02:00
Bram Matthys d8c3da7698 Get rid of download_file(), the synchronous version, is no longer used. 2021-08-18 15:14:14 +02:00
Bram Matthys 6d56145f60 Remove URL support from staff module now that main conf.c already does this.
And re-enable the module, as it was #if'd out.
2021-08-18 15:11:37 +02:00
Bram Matthys e296464b97 Get rid of update_config_resource() and just set the appropriate
values at the four places that used it.
2021-08-18 15:02:18 +02:00
Bram Matthys 756fee58cb Rename ConfigItem_include to ConfigResource and also use it for non-includes
such as other items in the configuration file that are URLs.
2021-08-18 14:54:41 +02:00
Bram Matthys d897ecbc86 Get rid of some if (need_34_upgrade) upgrade_conf_to_34(); stuff
We probably want to get rid of that at all?
Maybe defer until we know whether we want/need it for U5->U6...
2021-08-18 13:36:55 +02:00
Bram Matthys b74d15595b Change int rehash() to void request_rehash(), which is a better name
as it REQUESTS to rehash the server, but it may not be done immediately.
And making it void makes sure nobody relies on some sort of return
value which will differ between with vs without remote includes.

Also get rid of sig and loop.rehash_save_sig, as a NULL client
already indicates the same (or at least does so now).
2021-08-18 13:28:56 +02:00
Bram Matthys 675c1cab55 Rename loop struct members:
* loop.ircd_rehashing -> loop.rehashing
* loop.ircd_terminating -> loop.terminating
* loop.ircd_booted -> loop.booted
* loop.ircd_forked -> loop.forked
2021-08-18 13:08:42 +02:00
Bram Matthys f184472781 Get rid of argument to config_test(), as we have loop.ircd_rehashing for that. 2021-08-18 13:03:31 +02:00
Bram Matthys fe2c834080 Rename lots of config functions (internally used ones, most likely
not used by 3rd party authors):
* conf_start() -> config_read_start()
* conf_check_complete() -> is_config_read_finished()
* load_conf() -> config_read_file()
* config_test() -> config_test_blocks()
* config_run() -> config_run_blocks()
* init_conf() -> config_test()
* run_configuration() -> config_run()

This so things look like:

if (config_read_start() < 0)
        exit(-1);
while (!is_config_read_finished())
	; // do something
if (config_test(1) == 0)
        config_run();
2021-08-18 12:57:38 +02:00
Bram Matthys 7321a66196 Make failed include loading fatal again. And fix a crash related to that. 2021-08-18 12:46:11 +02:00
Bram Matthys 685e0ee073 In ConfigItem_include include->url now always exists, and src/url.c is now
always compiled in, both regardless of cURL support or not.
Obviously the cURL functions are not available without cURL and there
are now some #ifdef USE_LIBCURL in url.c

This also fixes the current build to work without cURL
2021-08-18 12:27:13 +02:00
Bram Matthys f85615518e Make rehashing work again 2021-08-18 12:05:15 +02:00
Bram Matthys 03423a2eb7 Get rid of INCLUDE_NOTLOADED and INCLUDE_USED which AFAICT are
unnecessary. Get rid of load_includes() which did the marking
and unload_notloaded_includes() and unload_loaded_includes()
accordingly. There's now one single free_all_includes().
2021-08-18 11:52:53 +02:00
Bram Matthys 9e887ea4e9 Start with remote includes makeover. First objective is making them
asynchronous on start, which is achieved by this 1st commit.

For this to work, the init_conf() stuff has been split to an
earlier call to conf_start() and then a loop where you can
check for conf_check_complete().
This means init_conf() no longer calls load_conf, as that
is moved to conf_start() and conf_check_complete().
Thus, init_conf() is now only called when all includes are in the
linked list 'conf_include'.

This is work in progress and breaks:
1) rehashes
2) compiling without curl
3) possibly cached remote includes
2021-08-18 11:31:46 +02:00
Bram Matthys 5154038d59 Code cleanup: replace "if(" with "if (" 2021-08-18 09:54:43 +02:00
Bram Matthys 6058090435 Use GeoIPResult * everywhere. Any modules who want to fetch it for
a client can use geoip_client(client).
2021-08-17 17:16:14 +02:00
Bram Matthys 58abc0da5b Add moddata_client_get_raw() to get the ModData *.
This probably should not be used much as normally you
should not rely on structures created by modules in
other modules / other code.
2021-08-17 17:03:00 +02:00
Bram Matthys 796cac7a63 geoip: migrate from simple string to returning a GeoIPResult struct.
(work in progress, 1/2)

This also add supports for callbacks which return pointers (pvoidfunc),
we already had that for efuncs but not in callbacks.
2021-08-17 16:39:39 +02:00
Bram Matthys fe3c86b128 Support ~country:* for unknown country (fix) 2021-08-17 16:14:59 +02:00
Bram Matthys fc6c52db93 Add extbans/country: +b ~country:UK 2021-08-17 16:12:06 +02:00
Bram Matthys a9434d13c7 Add RPL_WHOISCOUNTRY info in /WHOIS requests from IRCOps 2021-08-17 15:53:17 +02:00
Bram Matthys d7561d6b23 Show [country: XX] in connect notice and sync geoip info with other servers. 2021-08-17 15:35:14 +02:00
Bram Matthys 2ea75dfbdb Add geoip_base module, which sets "geo_country" if a geo provider
module is able to lookup the IP and return a country.

Also consistently use geoip_ and GEOIP_ prefixes.
2021-08-17 15:26:29 +02:00
Bram Matthys 0bbad85f84 Add geo_lookup() function. Make geoip_classic do something useful.
NOTE: everything hardcoded atm, just temporarily.
Add CALLBACKTYPE_GEO_LOOKUP which is called from geo_lookup().
2021-08-17 15:11:40 +02:00
Bram Matthys 8cdbc3ae86 Don't build geoip_classic without --enable-geoip-classic=yes.
([I... hate... M4!])
2021-08-17 14:37:48 +02:00
Bram Matthys ed7bf1daf5 Bundle with GeoIP classic library and add geoip_classic placeholder.
This library we can safely bundle because it is GPLv2.
2021-08-17 14:11:36 +02:00
Bram Matthys 9ff56089ad Show TLS cipher in [secure: xyz] in far connects too (+s +F).
This requires both servers to be using UnrealIRCd 6 and there
should be no UnrealIRCd 5 server in-between (eg an old hub).

This also changes tls_cipher() to expect a Client * argument.
And tls_get_cipher() can now safely be called on any client,
including remote clients, and it will return the cipherstring
if it is known via moddata.
2021-08-16 14:30:21 +02:00
Bram Matthys 76da8714a7 Fix using the wrong variable in moddata_extract_s2s_mtags() 2021-08-16 14:26:49 +02:00
Bram Matthys 11167924df Add tls_cipher module which stores/retrieves the TLS cipher of all users. 2021-08-16 14:16:13 +02:00
Bram Matthys f75a9c8544 Sync ModData in UID command if mdata.sync = MODDATA_SYNC_EARLY.
This way we should be able to show certfp and webirc status
in far connect notices, and later various other details too.
2021-08-16 14:01:45 +02:00
Bram Matthys 7500de1060 Permit unknown message tags from trusted servers. 2021-08-16 13:48:09 +02:00
Bram Matthys 48e3901f27 It's probably a good idea to send the channel name in SJOIN
(fix for commit from yesterday, 99d2870870)
2021-08-15 08:59:32 +02:00
Bram Matthys 6134452b82 Fix crash on connect due to wrong reputation logging
(accessing e->ip when e is NULL) in DEBUGMODE.
2021-08-14 21:08:25 +02:00
Bram Matthys 99d2870870 For SJOIN, send the shorter nomode&nopara version when possible.
We used to always send the long version:
SJOIN ts #channel +sntkl key 999 :xxx
From now on we only send that for the first SJOIN for a channel
when syncing. For any subsequent SJOINs (so for larger channels or
with lots of bans/exempts/invexes) we will use the short version:
SJOIN ts #channel :xxx

We now do it that way because the remote side already received
all the modes the first time, so they are redundant in the
subsequent SJOINs for the same channel.
Especially if you have a channel with a large mode string, such as
+lLfH 99 #redirectchan [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15 100:1d
it was previously 1) wasting bandwidth and 2) unnecessary CPU
trying to merge channel modes that were already the same.
2021-08-14 21:03:49 +02:00
Bram Matthys 428c301a94 unreal_server_compat: convert named extbans in SJOIN as well. 2021-08-14 20:05:00 +02:00
Bram Matthys eac417d66a Fix memory leak on +beI 2021-08-14 18:36:01 +02:00
Bram Matthys a43637d55d Add extban->is_banned_events which you need to set to indicate to
which BANCHK_* events you want to listen, eg BANCHK_JOIN, BANCHK_MSG.
You can use BANCHK_ALL to watch on all events.
Only BANCHK_TKL is not included there and needs an explicit
BANCHK_ALL|BANCHK_TKL.

The caller will now take care of BANCHK_* filtering so we won't
waste any CPU on calling an is_banned() function that isn't
interested at all in the event that we have.

Also, no longer require an extban->is_banned function, since some
extbans don't use it. This too saves useless calls.
2021-08-14 18:25:36 +02:00
Bram Matthys 03d78bf95d Fix looking up the wrong extban in some cases.
~T => ~text => starts with ~t => ~time... fun.
2021-08-14 17:57:22 +02:00
Bram Matthys 75dbd99614 I think the code already handles all these "can't stack these" cases.
If I'm wrong we have a regression :D
2021-08-14 17:46:44 +02:00
Bram Matthys 0acc9eef49 Add parameter to clean_ban_mask() that will be put in b->conv_options.
Currently only supported option is:
BCTX_CONV_OPTION_WRITE_LETTER_BANS: always write letter bans

This removes the NULL pointer magic that i was not happy about.
2021-08-14 17:36:49 +02:00
Bram Matthys ca4f4c2575 Add PROTOCTL NEXTBANS. This indicates support for named extended bans.
If you don't indicate NEXTBANS support then we will send old fashioned
extended bans to you.
Note that eventually we will likely require named extended bans support,
but that will be UnrealIRCd 7 / 8.... ;)
2021-08-14 17:28:15 +02:00
Bram Matthys 5f31f7a5cc Add unreal_server_compat module which rewrites named extbans in
server to server traffic to be letter extbans.
Yeah this is a tad ugly, but the alternative was worse, see
header of the file for the full story.

Module is loaded by default (obviously).

Still to do: only do this for non-U6 servers (add some PROTOCTL)

And probably alter clean_ban_mask because I don't like the
magic on NULL client at the moment.
2021-08-14 16:45:18 +02:00
Bram Matthys f6704cfd1c Add empty_mode(modebuf) to check for "", "+" or "-" modes, that is:
modes that are empty/useless. Previously this check was done at
several places in their own way. Ugly and duplicate code.
2021-08-14 15:18:34 +02:00
Bram Matthys c0d31130f8 channel->creationtime is always set, so assume this is always set.
In U5 channel->creationtime could be 0 momentarily, eg for a new
channel, but nowadays we set channel->creationtime to TStime()
if the channel gets created in make_channel() [*]
[*] which was previously called get_channel() by the way

Also update some comments in mode.c to make things more clear.
2021-08-14 15:10:32 +02:00
Bram Matthys 9e0357ad71 Get rid of all the bounce stuff in MODE.
The only stuff we still have is if a bounce servermode is detected
(incoming) then we just ignore it.

All this bounce stuff wasn't used much, and didn't even work
(was always sending empty bounce string). It was only complicating
the code everywhere with stupid stuff like:
*x++ = bounce ? '+' : '-';
what = MODE_DEL;
2021-08-14 14:56:53 +02:00
Bram Matthys ec6062bc53 Slightly change the log message for the other case which previous
caused a bounce, or was supposed to (never really worked either).
We now ignore the mode (which was de-facto what we did anyway)
and also log it in that way.
2021-08-14 14:41:39 +02:00
Bram Matthys a5b86fcc11 Don't try to fix op-desyncs anymore. The bounce code didn't work anyway
(but the -oh did work)
2021-08-14 14:29:32 +02:00
Bram Matthys c7345f41b6 Fix hardcoded ~f: and ~m: to also deal with named bans.
(Actually only made it worse by more hardcoding for now...)
2021-08-14 10:35:15 +02:00
Bram Matthys b80a9adef9 Set extended ban names instead of using module name placeholders. 2021-08-14 10:28:26 +02:00
Bram Matthys a70580cc86 Enable sending of named extended bans. This can be changed via the
configuration file via set::named-extended-bans <yes|no>; and now
defaults to yes.
Still to do:
* explicitly set names instead of using stupid module names
* update test suite to check for these new names (other git tree)
* backwards compatible sending to U5 and lower using ugly shit
2021-08-14 10:12:43 +02:00
Bram Matthys 34bf0d7ec6 Grin... 2021-08-14 09:50:58 +02:00
Bram Matthys a6b5587666 Use prefix_with_extban() at the 3 places, needed for next... 2021-08-14 09:49:22 +02:00
Bram Matthys 34b034ab36 Add named extban support. This only deals with the incoming parsing,
it is not visible outgoing yet. So: ~account:name becomes ~a:name.
2021-08-14 09:27:39 +02:00
Bram Matthys d41e3e0f6e src/modules/extbans/*.c: memset(&req, 0, sizeof(req)); before ExtbanAdd() 2021-08-14 09:27:01 +02:00
Bram Matthys 5a387f9c0b Rename extban.flag to extban.letter.
TODO: Should probably do this for umode/cmode as well ;)
2021-08-14 09:07:22 +02:00
Bram Matthys f23546b27c More conv_param() changes, the +3 rule changed, and matches the rest.
The .conv_param() now receives the ban minus the ~own-extban.
And it should also return the part minus the ~own-extban.

Changes to findmod_by_bantype():
1) Takes a string now, rather than a single char value,
   so it is ready for named extbans.
2) Second parameter added so you can easily jump to the remainder.
   Eg:
   extban = findmod_by_bantype(b->banstr, &nextbanstr);
   [..check if extban is non-NULL and then..]
   b->banstr = nextbanstr;
2021-08-14 08:57:33 +02:00
Bram Matthys 5269b647d5 Round three of extban API overhaul, this changes extban->conv_param().
More changes will follow related to that...
2021-08-13 17:59:45 +02:00
Bram Matthys 163eaa432c ExtBans API: Now we can get rid of the +3 everywhere in is_ok().
When extban->is_ok() is called the banstr now no longer points
to "~x:something" but to "something".
Just like we did for extban->is_banned().
Again, need this for later too...
2021-08-13 16:39:03 +02:00
Bram Matthys b5d948c09c Round two of extban API overhaul, this changes extban->is_ok()
Also cleanup big blob op duplicate code in +beI handling in MODE.
2021-08-13 16:03:15 +02:00
Bram Matthys 98291c9f69 ExtBans API: Now we can get rid of the +3 everywhere in is_banned().
When extban->is_banned() is called the banstr now no longer points
to "~x:something" but to "something". This will be more useful later...
2021-08-13 14:39:34 +02:00
Bram Matthys bff6fdde6f Start of extban API recode. I created the current API in 2003 and..
well.. let's hope I have gained some good insights since then.. :D
2021-08-13 14:17:07 +02:00
Bram Matthys bdef6a2af2 Move stuff from AllowClient() to register_user(), since it deals with
setting hostname and such, which does not belong there (well, mostly)
2021-08-13 13:10:23 +02:00
Bram Matthys a0a95f6cee Get rid of unnecessary check_init() stuff (and the hook) 2021-08-13 13:06:35 +02:00
Bram Matthys da3bdc0437 AllowClient() doesn't need nor use the 2nd argument. 2021-08-13 12:27:23 +02:00
Bram Matthys 68b6f62d88 Convert DNS names to lowercase 2021-08-13 12:23:44 +02:00
Bram Matthys eb171c8e22 Add strtolower(). Note: we already hade strtolower_safe(). 2021-08-13 12:22:49 +02:00
Bram Matthys 9310fd3b4b Move check for valid hostname out of register_user(), we already
have that in dns.c. Also remove verify_hostname() from dns.c and
integrate it in valid_host() which now takes a second argument
named 'strict'. Call valid_host() with strict set to 1 if the
hostname should be checked to be a valid DNS hostname, eg the
host may not contain stuff like ':' or '/'. Use 0 otherwise
for the loose check, eg if you are not sure if the passed host
is an IP address or a host, or if it is for a vhost.
2021-08-13 12:17:24 +02:00
Bram Matthys 7c250188a5 Some moving around 2021-08-13 12:05:37 +02:00
Bram Matthys 72d4973840 Cleanup code that sets client->user->username based on ident config and result 2021-08-13 11:59:54 +02:00
Bram Matthys 1b3376d091 More cleanups in register_user(): Move the username checks to valid_username() 2021-08-13 11:54:43 +02:00
Bram Matthys 3a9976ef53 Get rid of ERR_HOSTILENAME which clutters the code too much
and no other IRCd seems to be using it.
2021-08-13 11:33:34 +02:00
Bram Matthys 3f8538f767 Split off part of register_user() to new function welcome_user() 2021-08-13 11:30:53 +02:00
Bram Matthys 199d7d8e65 cmd_uid: fix setting IP on the wrong client (server instead of user, oops...) 2021-08-13 11:11:05 +02:00
Bram Matthys fa875d6fd4 Cleanup: register_user() now takes only 1 argument (client) instead of 5 arguments.
The last 3 were always NULL after the remote/local split from a few commits ago.
And nick and username were useless as well as client->name and
client->user->username were always already set.
2021-08-13 11:06:30 +02:00
Bram Matthys 77a7b3aca2 More cleanups in nick.c: integrate register_user_remote() in cmd_uid() 2021-08-13 10:57:54 +02:00
Bram Matthys 33db820355 More nick.c (register user) cleanups.. 2021-08-13 10:49:45 +02:00
Bram Matthys 75a7d171b9 Test buildbot 2021-08-13 10:40:53 +02:00
Bram Matthys 8ca735a217 Split remote register_user() off into register_user_remote(),
which may or may not disappear in a future cleanup.
2021-08-13 10:23:50 +02:00
Bram Matthys f90c7a7991 Move IP validation from register_user() to cmd_uid().
This also makes it so the decoded IP is passed to register_user(),
eg "1.2.3.4" instead of binary base64'd stuff.
2021-08-12 20:09:24 +02:00
Bram Matthys 5eb2ac7624 Fix OperOverride message 2021-08-12 17:56:23 +02:00
Bram Matthys 9a2e8613ae For remotely received log messages (via SLOG) show the original server name
as sender in the NOTICE, just like we used to do in the past.
2021-08-12 17:07:12 +02:00
Bram Matthys 0e5f5f7374 Add conf/snomasks.default.conf 2021-08-12 16:58:54 +02:00
Bram Matthys 9f54c9b0d3 Don't send SAPART in SAJOIN (:D) 2021-08-12 16:51:18 +02:00
Bram Matthys 152d24bd73 Don't check for "chathistory" capability yet (only "draft/chathistory")
as this casuses BUG_CLIENTCAPABILITYBIT_UNKNOWN_TOKEN to be triggered.
2021-08-12 16:33:31 +02:00
Bram Matthys 60d970d9af And another fix for previous case. 2021-08-12 16:16:09 +02:00
Bram Matthys 5cc2ef7fba Newlog: free arguments, even if unreal_log_recursion_trap is hit
This was triggered for example when sending logs to remote servers.
2021-08-12 16:11:02 +02:00
Bram Matthys 16527eb6a4 Back out previous change, bad idea :D 2021-08-12 16:03:20 +02:00
Bram Matthys 507f43fc74 Set me.uplink to &me. Not entirely sure if this is what we want.
Without this, I think otherwise we need too many checks everywhere
for the IsMe() case. And this behavior matches me.direction which
also points to &me.
Then again, will doing it this way cause issues? We will see...
2021-08-12 15:57:58 +02:00
Bram Matthys bb4d77b5d0 Fix crash in link-security unreal_log() call..
Interesting... this mistake is easy to make with multiline.
2021-08-12 15:43:26 +02:00
Bram Matthys cc6d1eaf36 Don't crash on bad loglevel/subsystem/event_id but log it instead. 2021-08-12 15:43:03 +02:00
Bram Matthys 689c089a41 Allow dashes in subsystem (eg "link-security") 2021-08-12 15:30:50 +02:00
Bram Matthys 445b47391f Do an #undef on LOG_DEBUG, LOG_INFO, etc.. so they cannot be confused
anymore with the ULOG_DEBUG, ULOG_INFO, etc levels.
2021-08-12 15:27:27 +02:00
Bram Matthys 579988e07e ULOG_INFO, not LOG_INFO, strikes again! 2021-08-12 15:23:07 +02:00
Bram Matthys b48d7f8003 Fix for vhost checking code in cmd_uid, which didn't take into account '*' (no vhost set) 2021-08-12 15:20:14 +02:00
Bram Matthys 7f55159f77 Fix memory leak in new log code 2021-08-12 15:18:18 +02:00
Bram Matthys 8d72aaa0ad Checkout branch 'unreal60' from unrealircd-tests 2021-08-12 15:16:37 +02:00
Bram Matthys 562ed345be Update unrealircd-tests repo URL, temporarily used during early U6 development. 2021-08-12 15:08:19 +02:00
Bram Matthys 01753c67cd Validate hostname and vhost in UID command. And some very minor cleanups. 2021-08-12 09:13:02 +02:00
Bram Matthys 3a752a60fa Fix a remaining instance where client->local->fake_lag was touched
directly, should use add_fake_lag(client, msec) instead.
2021-08-12 08:56:46 +02:00
Bram Matthys be6928df78 Some cleanups in nick.c 2021-08-12 08:55:46 +02:00
Bram Matthys d9c940f65d Update client->flags inheritance code in register_user().
Hopefully correct... if this or ulines inheritance break you know
who did it ;)
2021-08-12 08:38:14 +02:00
Bram Matthys f9086f700e Newlog: nick.c 2021-08-12 08:37:54 +02:00
Bram Matthys f84dd51172 Newlog: link-security, mkpasswd, mode 2021-08-11 21:08:49 +02:00
Bram Matthys 7a4509b289 Newlog: "New record on this server: $num_users connections"
And also make this print the number of users and not (both) users+servers
which is generally a metric nobody is interested in and only causes
confusion when you get a message about a record of 30 and there are only
28 clients connected.
2021-08-11 20:55:42 +02:00
Bram Matthys 2c374395aa Newlog: Use _DENIED instead of _REJECTED everywhere to be consistent,
eg LINK_REJECTED_SID_COLLISION -> LINK_DENIED_SID_COLLISION
since 15+ other ones also start with LINK_DENIED...
Expand it to other areas as well eg antirandom.
2021-08-11 20:48:50 +02:00
Bram Matthys 720cd84ab2 Newlog: convert sendto_realops() to unreal_log() in 9 files. 2021-08-11 20:47:18 +02:00
Bram Matthys a94017c731 Remove sendto_ops_and_log(), use unreal_log() instead! 2021-08-11 19:10:30 +02:00
Bram Matthys edfd0d434f Newlog: convert remaining sendto_ops_and_log() 2021-08-11 19:09:07 +02:00
Bram Matthys ccfad0eed0 Enable high CPU usage detection, not sure yet for production, but
at least for U6 development.
2021-08-11 19:08:46 +02:00
Bram Matthys 609a6600aa Remove ircd_log(), use unreal_log() instead! 2021-08-11 18:01:00 +02:00
Bram Matthys 4968bf84fe Newlog: convert those in include/*.h too 2021-08-11 17:59:40 +02:00
Bram Matthys 4198b380f4 Newlog: convert the last ones to ircd_log 2021-08-11 17:55:15 +02:00
Bram Matthys 8d2f20ef41 Newlog: debug.c, match.c, module.c, random.c and then for
api-*.c log out of space in all circumstances.
2021-08-11 17:45:01 +02:00
Bram Matthys ca3c91ca17 Newlog: channel.c, send.c, support.c, windows/gui.c 2021-08-11 17:12:11 +02:00
Bram Matthys 11755b2093 Some variable renaming in start_listeners() 2021-08-11 16:48:44 +02:00
Bram Matthys 9333d4b264 Newlog: fdlist.c, socket.c 2021-08-11 16:48:26 +02:00
Bram Matthys 82f9dc6355 Newlog: misc.c 2021-08-11 16:42:04 +02:00
Bram Matthys 191f81dd63 Newlog: dispatch (io engine)
Hopefully no typos anywhere, since the compiler only checks about 1/3rd
of the code since it depends on the backend which code is used.
2021-08-11 16:03:54 +02:00
Bram Matthys fe21fd6024 Remove sendto_realops_and_log() and map some remaining temporary
to sendto_ops_and_log() which will soon disappear too.
2021-08-11 15:47:00 +02:00
Bram Matthys 9a620ef687 Newlog: make "Channel modes changed at runtime", "User modes changed at runtime"
match the "Permitted nick characters changed at runtime" log message.
2021-08-11 15:44:26 +02:00
Bram Matthys 9308e5b8a0 Change maximum chanmode +l value to 1 million and "coincidentally" also
change the IsInvalidChannelTS() macro to check for this value or lower.
2021-08-11 15:39:15 +02:00
Bram Matthys 9efe590a8e Newlog and fishy timestamp handling:
* New macro IsInvalidChannelTS() which evaluates to ts < 750000
* Check for faulty creation time ("fishy timestamp") at ALL places
  where channel->creationtime is set.
* Also, important, changed behavior:
  if !IsInvalidChannelTS then:
  1) We print our warning
  2) We pretend ts is our channel creationtime (which may be
     TStime() if the channel did not previously exist)
  3) We allow the command through and allow it to merge (in case of SJOIN)

This makes it so we still log the error (noisy) but on the other hand
we won't get "infected" by fishy timestamps since we will never set
them, no matter what happens.
2021-08-11 15:29:45 +02:00
Bram Matthys 471a97c5f6 Newlog: md, monitor, targetfloodprot, watch-backend, watch 2021-08-11 15:11:24 +02:00
Bram Matthys 2f8d6609d5 Newlog: jumpserver.c 2021-08-11 15:03:39 +02:00
Bram Matthys e5a1a05dcf Newlog: nick: nick collision stuff
Also get rid of server<->nick collision code, as servers are guaranteed
to contain a dot now by valid_server() so this cannot happen anymore.
2021-08-11 13:51:05 +02:00
Bram Matthys 7ef141b06a Newlog: getting rid of ircd_log in join, jointhrottle, message, sasl 2021-08-11 13:50:41 +02:00
Bram Matthys c76aa83baa Newlog: add $client.id (UID / SID) 2021-08-11 13:49:54 +02:00
Bram Matthys 349f5c4823 Newlog: convert kill.c 2021-08-11 13:21:49 +02:00
Bram Matthys a7668d266b Newlog: convert sjoin.c 2021-08-11 13:17:17 +02:00
Bram Matthys 21585980e1 Newlog: convert protoctl.c 2021-08-11 13:05:37 +02:00
Bram Matthys 21a95a13a6 Remove benchmarking from textban, nobody needs this anymore 2021-08-11 09:53:20 +02:00
Bram Matthys 74842a89a4 I suppose OPEROVERRIDE_INVITE is more accurate than OPEROVERRIDE_JOIN,
or at least more consistent.
2021-08-11 09:24:51 +02:00
Bram Matthys c9c78a32ed $client.detail -> $client.details... sigh. 2021-08-11 09:23:27 +02:00
Bram Matthys d38c10fae0 Fix calls to unreal_log().. LOG_INFO -> ULOG_INFO.. so easy to make this
mistake... too easy ;)
2021-08-11 09:21:33 +02:00
Bram Matthys bbf869eada Newlog: expand channel data more 2021-08-11 09:20:25 +02:00
Bram Matthys 78f16710c4 Newlog: convert all OperOverride messages (INVITE, KICK, MODE, TOPIC) 2021-08-11 09:13:13 +02:00
Bram Matthys 3f5fd3d5b8 Newlog: add log_data_channel(). TODO: expand a lot more. 2021-08-11 09:12:57 +02:00
Bram Matthys 94f1a232c8 UnrealDB: write v1 header from now on.
This means you can downgrade from UnrealIRCd 6.0.0 to 5.2.x
but not to 5.0.9 or lower without loosing the .db files.
That should be acceptable.
2021-08-11 08:40:34 +02:00
Bram Matthys 9db40cd4a0 Newlog: update channeldb, reputation, tkldb 2021-08-11 08:24:12 +02:00
Bram Matthys 8cd3647ae0 Rename mtag.can_send() to mtag.should_send_to_client().
This because "can send" is ambigious and could be interpreted to
mean that the client may send this mtag to us, while in fact this
function decided whether to send TO the client.
2021-08-10 18:57:47 +02:00
Bram Matthys 932094de72 Newlog: chgcmds (CHGHOST, CHGIDENT, CHGNAME) 2021-08-10 17:39:52 +02:00
Bram Matthys 48efe353af Newlog: when there are two clients involved with a clear issuer/target
relationship, make the issuer "client" (this was already so) and
the target is "target" (and no longer sometimes "victim").
For consistency, of course :D
2021-08-10 17:34:14 +02:00
Bram Matthys 2d72dd0c00 Newlog: convert blacklist to use newlog 2021-08-10 17:29:23 +02:00
Bram Matthys 798106c805 Avoid logging LINK_DISCONNECTED message twice, and also fix the
IP address in the message. We now use ip:port from the link block
if we failed to connect, and otherwise we use the ip from the
connection if the connection is established (also because it
can be a remote connection, not linked directly to us)
2021-08-10 15:08:07 +02:00
Bram Matthys c5347a554d Remove some old LOG_* loglevels, now that these are using newlog.
Also move SQUIT message to newlog, although this may cause
duplicates, so need to (re-)check later.
2021-08-10 14:54:22 +02:00
Bram Matthys 6e3de0c297 Some reindenting/whitespace in struct.h 2021-08-10 14:48:49 +02:00
Bram Matthys 6e996d7ffb Remove unused structs: ConfigItem_log, ConfigItem_unknown, ConfigItem_unknown_ex 2021-08-10 14:45:20 +02:00
Bram Matthys 4e5dd044f5 Require module header with version "unrealircd-6" now 2021-08-10 14:37:10 +02:00
Bram Matthys 7063cd0c86 Module coders: add UNREAL_VERSION so you can more easily check UnrealIRCd
versions in #ifdef's. Eg: #if UNREAL_VERSION > 0x05020100 to check if >5.2.1
2021-08-10 14:33:10 +02:00
Bram Matthys f742d08643 Remove some whitespace 2021-08-10 14:25:34 +02:00
Bram Matthys 2c011202a4 Integrate iConf.network in iConf itself as the distinction between
these "network settings" and other settings has been lost in time.

Rename some of these variables and macro's.
ircnetwork -> NETWORK_NAME
ircnet005 -> NETWORK_NAME_005
defserv ->? DEFAULT_SERVER
hidden_host -> CLOAK_PREFIX
helpchan -> HELP_CHANNEL

Also one config change (visible to admins):
set::hiddenhost-prefix is now set::cloak-prefix
We still accept the old name, though.
The example conf has been updated as well, but not the wiki yet.
2021-08-10 14:22:42 +02:00
Bram Matthys a4d9ef3947 Get rid of some shorts. Sorry... i hate these :D.
Also get rid of some unused stats struct members.
2021-08-10 14:07:54 +02:00
Bram Matthys cc8b047819 Remove old client->user->flood stuff as it was moved to client->local->flood
a few versions before and is now unused.
2021-08-10 14:00:47 +02:00
Bram Matthys dca7142152 Rename client->user->lastaway to client->user->away_since 2021-08-10 13:57:44 +02:00
Bram Matthys c55e65b47b Remove client->server->timestamp (completely unused) 2021-08-10 13:55:57 +02:00
Bram Matthys 8b19168f1b Get rid of client->server->up, since client->uplink->name provides the
same information.
2021-08-10 13:52:10 +02:00
Bram Matthys cc1e361ba9 More simplifications / code cleanups in stats.c 2021-08-10 13:32:36 +02:00
Bram Matthys fa263570a4 Get rid of some debug stuff in stats which i never look at anyway 2021-08-10 13:26:44 +02:00
Bram Matthys 641d514853 Move traffic stats from client->local->sendM/sendK/receiveM/receiveK/sendB/receiveB
into a client->local->traffic struct.
2021-08-10 13:22:59 +02:00
Bram Matthys 420eb2ffb6 Rename client->serv to client->server: this is set if the client is a server,
just like client->user is set if the client is a user.

Rename client->srvptr to client->uplink: this is the uplink that the client
is connected to. If the client is a user then it is set to the server that
the client is connected to, if the client is a server then it is set to the
server that the server is connected to (the.. tadah.. uplink).
For local clients it is always set to &me.
2021-08-10 12:52:46 +02:00
Bram Matthys 0f71381589 typedef aWhowas -> WhoWas 2021-08-10 12:44:54 +02:00
Bram Matthys 90a01ed7f9 Rename client->local->lasttime to client->local->last_msg_received
(Last time any message was received, i.e. the socket was read)
2021-08-10 12:40:07 +02:00
Bram Matthys 73f8976a3a Rename client->local->firsttime to client->local->creationtime
(Time user was created (connected on IRC))
2021-08-10 12:38:07 +02:00
Bram Matthys 43f42edfb7 Rename client->local->nextnick to client->local->next_nick_allowed 2021-08-10 12:36:48 +02:00
Bram Matthys a076e7a93a Remove client->local->lastsq since it is unused (only written, never read) 2021-08-10 12:36:06 +02:00
Bram Matthys 6b36399533 Rename client->local->last to client->local->idle_since
(Last time a RESETIDLE message was received (PRIVMSG))
2021-08-10 12:34:13 +02:00
Bram Matthys 4dbc2ac860 Rename client->local->since to client->local->fake_lag, since it is used
for fake lag calculations only (well, except for 1 corner case).

As said, modules should use the new function:
void add_fake_lag(Client *client, long msec)
2021-08-10 12:26:19 +02:00
Bram Matthys 4d947c3e51 Convert fake lag changes to use void add_fake_lag(Client *client, long msec) 2021-08-10 12:24:16 +02:00
Bram Matthys d59cfa092a Add terminal_supports_color(), used by logging to terminal code.
We now also correctly disable color support if someone is on
a color-capable terminal but redirects the output of the boot
to a file, eg: bin/unrealircd >boot.log 2>&1
2021-08-10 09:24:08 +02:00
Bram Matthys e2be262088 Some more SSL/TLS -> TLS references (for admins, in modules.default.conf) 2021-08-10 09:19:44 +02:00
Bram Matthys b751588211 Use "TLS" in ./Config too 2021-08-10 09:15:53 +02:00
Bram Matthys 0495022122 Still use "SSL/TLS" in HELPOP docs. 2021-08-10 09:13:35 +02:00
Bram Matthys 7ad7b36312 Remove useless ifdef, this was never reached. 2021-08-10 09:09:21 +02:00
Bram Matthys 532a9becda Massive renames of SSL/TLS and SSL to TLS. People should know the term by now :D 2021-08-10 09:07:32 +02:00
Bram Matthys 3832081eed Rename client->user->svid to client->user->account.
Just as a reminder: don't blindly assume that if anything is set here
that the user is logged in, there is IsLoggedIn(client) for that.
Reason: if the account name starts with a digit or is "*" then the
user isn't actually logged in ;)
2021-08-10 08:14:35 +02:00
Bram Matthys 18762446ac Add show_event_id_console to enable/disable showing subsys.event_id on console
and disable it by default (TODO: make configurable at compile time)
2021-08-09 18:23:09 +02:00
Bram Matthys 6c35a4e907 Newlog: Add coloring of messages on terminal and change order on disk
to match the order on IRC. IOTW: subsystem.EVENT_ID and loglevel are
now swapped. New log format on disk is:
[timestamp] subsystem.EVENT_ID loglevel: message
2021-08-09 18:00:14 +02:00
Bram Matthys 28b0283dc2 Use NameValue for coloring. 2021-08-09 17:44:04 +02:00
Bram Matthys b055b862e4 New: NameValue struct and functions nv_find_by_name() / nv_find_by_value().
These were previously used by the config system as config_binary_flags_search()
but can be useful in other areas as well.
2021-08-09 17:43:15 +02:00
Bram Matthys 595c1fdf42 Some more newlog conversions and cleanups of boot screen. 2021-08-09 17:10:36 +02:00
Bram Matthys d54c005cda Newlog: convert some ircd_log()'s in conf.c 2021-08-09 17:05:27 +02:00
Bram Matthys 61ccd94466 Newlog: convert tls.c to use new log system 2021-08-09 14:41:35 +02:00
Bram Matthys 689c528864 Newlog: add log_data_tls_error() 2021-08-09 14:15:06 +02:00
Bram Matthys f1023b6653 Fix compile warnings with gcc 2021-08-09 13:43:36 +02:00
Bram Matthys bc9525528c Get rid of report_error() and report_baderror() now that the last
function call has been replaced with unreal_log().
2021-08-09 12:20:13 +02:00
Bram Matthys 2d8ae5d43a Move some functions from src/socket.c, that don't belong there,
to src/serv.c and src/misc.c
2021-08-09 12:13:30 +02:00
Bram Matthys 3a9975713a Move connect_server() from src/socket.c to src/modules/server.c (efunc) 2021-08-09 12:10:24 +02:00
Bram Matthys 88e9b51354 Newlog: now really finish server.c conversion. Yeah, there were more... 2021-08-09 11:59:39 +02:00
Bram Matthys d795bd7d39 Newlog: finish server.c conversion... and enjoy the new multiline logging :D 2021-08-09 10:18:25 +02:00
Bram Matthys 8187c4049f Renumber PROTO_'s 2021-08-09 09:36:15 +02:00
Bram Matthys f982d06674 Use json_string_unreal() everywhere instead of json_string()
This because in UnrealIRCd we may encounter non-UTF8 sequences,
which this function will censor out.
Also, this takes care of returning json_null() if the string was
NULL, which is usually what we want as well.
2021-08-09 08:54:50 +02:00
Bram Matthys 4ad7d02ffa Changes to unrl_utf8_make_valid():
1) No longer impose a static maximum length
2) Caller must provide a work buffer and maximum length
3) Add a strict length check option
2021-08-09 08:49:01 +02:00
Bram Matthys 91a3c71d60 We now (try to) kill the "old" server when a server links in with the same
name, handy when the old server is a zombie waiting for ping timeout.

NOTE: atm this only works if someone links directly to us and there is
an existing server local or remote.
There is no code yet for a remote & remote scenario, which requires (or
at least prefers) having a creationtime for server connects, requiring
a SID command change.
2021-08-08 20:15:22 +02:00
Bram Matthys 2c8ef11004 Newlog: finished server.c conversion, yay. 2021-08-08 19:34:46 +02:00
Bram Matthys 93facdcdf4 Newlog: re-add syslog support 2021-08-08 17:39:37 +02:00
Bram Matthys 65e97e4140 Fix crash in set::server-linking::autoconnect-strategy sequential-fallback
when a remote server links to another server.
2021-08-08 15:57:33 +02:00
Bram Matthys a198d99850 Newlog: SLOG: actually use the JSON "msg" instead of parv[4]
And document SLOG command.
2021-08-08 15:27:04 +02:00
Bram Matthys f501772cbe Whoops... remove multi-line logging test code :D 2021-08-08 15:11:34 +02:00
Bram Matthys 53e283082f For IRCOps with unrealircd.org/json-log: in case of a multi-line message
we will now only send the JSON in the first message.

Also fix log file timestamp missing with multiline.

And rename do_unreal_log_ircops() to do_unreal_log_opers()

Add safe_free_message_tags()
2021-08-08 15:10:04 +02:00
Bram Matthys bc9e17aeb0 Add multiline support to unreal_log()
Any \n's will be expanded to multiple lines.
* For JSON disk logging there is no change.
* For text disk logging it will show as:
  [time] facility subsys.CODE+
  [time] facility subsys.CODE+
  [time] facility subsys.CODE
  So a plus sign is added if another message is to follow.
* For notices to opers/snomasks exactly the same (plus sign if needed).

Untested. More changes to follow eg to notice dropping the json
in the followup msgs.

This also changes the logging format for text disk to match
the output on server notices, we no longer log as:
[TS] facility subsystem event_code: msg....
But as:
[TS] facility subsystem.event_code: msg....
2021-08-08 12:04:41 +02:00
Bram Matthys 01542cdf77 Add line2multiline() which takes a string with \n's and returns a MultiLine
linked list.
2021-08-08 11:28:54 +02:00
Bram Matthys 2eb1f97d25 Newlog: server.c: Use SERVER_LINKED_REMOTE for remote links as
they use a slightly different format and you may want to exclude
these from certain logging. Also mention the correct uplink there.
2021-08-08 11:18:51 +02:00
Bram Matthys bac8b297c7 Newlog: more server.c conversions (all local server connect rejects done) 2021-08-08 11:02:44 +02:00
Bram Matthys 12adca5817 Set client->name early to provided servername and drop the servername
argument from verify_link() since now you can just use client->name.

Also more newlog for server.c (more to follow)
2021-08-08 10:15:59 +02:00
Bram Matthys a339efad2a Add exit_client_fmt() which accepts formatting characters. 2021-08-08 10:14:48 +02:00
Bram Matthys f843fc6d23 Serialize json with JSON_COMPACT.
Saves a bit of room, especially when the JSON travels over network this
maybe save some "crucial" bytes (and in that case it looks better too,
since the \s's in message tags only make it less readable).
2021-08-07 18:14:38 +02:00
Bram Matthys d17db626b3 Add some notes for the release notes (:D) 2021-08-07 17:49:33 +02:00
Bram Matthys fbe3d6124b Add unrealircd.org/json-log CAP, which sends JSON logs to IRCOps.
This basically enhances the regular snomask/ircop notices with
JSON logs, the same logs that are logged to disk (with type 'json').
This allows bots/machines to much more easily parse server notices
such as connect notices or.. anything.

Note that JSON logs are quite large, so make sure the ircop has
a BIG class::sendq!

Also, everyone can set the cap but it is only effective for IRCOps.
2021-08-07 17:32:54 +02:00
Bram Matthys ab180b086c Rename recently added mtag: s2s/json -> unrealircd.org/json-log 2021-08-07 17:17:37 +02:00
Bram Matthys adfa81ee07 Get rid of >1024 msg length check in sendbufto_one. 2021-08-07 17:16:34 +02:00
Bram Matthys fb9af08e83 Add coloring to snomask/ircop messages based on log level.
This will later be configurable, of course.
2021-08-07 16:15:29 +02:00
Bram Matthys 9885af1486 Validate and rewrite remotely received JSON via SLOG cmd.
This makes it use OUR timestamp, so timestamps in logs are properly
sequential. The originial timestamp is saved in "original_timestamp".
Finally, we (over)write "log_source" with the remote server name.
2021-08-07 15:49:29 +02:00
Bram Matthys b75f6b4086 Newlog: add "log_source" 2021-08-07 15:49:12 +02:00
Bram Matthys 64180d8a2c Send and receive json as well in SLOG server to server message.
TODO: validate JSON
2021-08-07 15:22:06 +02:00
Bram Matthys bac38926a6 Make compiling with -O0 work again 2021-08-07 15:21:48 +02:00
Bram Matthys 654a88a53a Easy message tags sending restrictions to permit full 4094 bytes.
Needed for next commits.
2021-08-07 15:20:53 +02:00
Bram Matthys 659b553351 Add slog.c, initial version of S2S logging. 2021-08-07 14:40:08 +02:00
Bram Matthys 0739af0812 Add initial remote logging support via SLOG (S2S cmd).
Also call the log::destination "remote" instead of "global".
2021-08-07 14:38:06 +02:00
Bram Matthys 39e45c2be3 Add newlog TODO item 2021-08-07 14:14:19 +02:00
Bram Matthys f4af4acb16 Newlog: fix rehash and memory leak 2021-08-07 14:01:44 +02:00
Bram Matthys e59cd278cd log { } now uses the new log system and is used for logging to disk,
snomasks, opers, global (remote), ..

For disk logs we currently ignore the sources and log everything.

NOTE: REHASH is untested and will memory leak for sure.
2021-08-07 13:04:07 +02:00
Bram Matthys b8837844fb Newlog: new config plan, ditch set::logging and use log blocks soon.
In this commit it is still called logx { }. Will merge them soon
into one log { } block.
2021-08-07 10:39:54 +02:00
Bram Matthys 2aff2727ed Re-order matching in log_sources_match() for performance. 2021-08-07 09:14:32 +02:00
Bram Matthys 839367272a Rename $client.nuh to $client.details as it is generic detailed
client information and not necessarily nick!user@host in all cases.
2021-08-06 20:59:54 +02:00
Bram Matthys 33a9b745a8 Support client.a.b.c.d etc with "infinite" depth (as long as the
variable is max 255 characters).
This fixes the client connecting notice that previous commit
knowingly broke.
2021-08-06 20:55:57 +02:00
Bram Matthys f38a43434e Newlog: expand client.server more, and also move some stuff to client.user
This means we now have $client.user.username but the expansion system
does not allow items more than 2 deep atm (only $client.something
but not $client.something.other). Will fix later. (TODO)
In the meantime the connection notice will look weird :D
2021-08-06 20:32:35 +02:00
Bram Matthys c22207c4ca Drop cf_ prefix from ConfigFile and ce_ prefix from ConfigEntry structs.
Also rename them to describe better what they do.

ConfigFile:
cf_filename -> filename
cf_next -> next
cf_entries -> items

ConfigEntry:
ce_fileptr -> file
ce_varlinenum -> line_number
ce_fileposstart -> file_position_start
ce_fileposend -> file_position_end
ce_sectlinenum -> section_linenumber
ce_varname -> name
ce_vardata -> value
ce_cond -> conditional_config
ce_entries -> items
ce_next -> next
ce_prevlevel -> parent

Also add doxygen docs for both structs.
2021-08-06 17:50:45 +02:00
Bram Matthys 3eef42c385 Let's log everything except ULOG_DEBUG on the console when booting.
Better than missing an important message.
2021-08-06 16:24:44 +02:00
Bram Matthys 6d216c3a90 Validate set::logging better. 2021-08-06 15:47:51 +02:00
Bram Matthys 1b00ea9137 Fix module not loading using config_status() instead of config_error()
which wasn't logged on the console.
2021-08-06 15:47:24 +02:00
Bram Matthys 9c210ba3fa Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-08-06 15:27:46 +02:00
Bram Matthys e75ea8d00e Temporarily send to all opers if there is no matching set::logging::snomask
nor set::logging::all-opers configuration.

This so you at least have logging for now ;D
2021-08-06 15:27:03 +02:00
k4be 50eaee19a7 Merge branch 'unreal60_dev' into unreal60_dev+watch 2021-08-06 15:25:13 +02:00
k4be 55a5574a4b Merge branch 'unreal60_dev' into unreal60_dev+watch 2021-08-06 15:23:37 +02:00
Bram Matthys 4c3fa999a7 use 'all-opers' (not 'all-ircops') to be consistent. 2021-08-06 15:23:17 +02:00
Bram Matthys f34d3bd861 Add set::logging block and the logging to snomask mapping.
Note that without such a block nothing will be sent to ircops at all
(anything that comes from unreal_log anyway).
In a later commit either a snomasks.default.conf will be added and/or
an internal default mapping.

This also moves the recursion trap to earlier in the logging code,
which has the side effect that debug traffic regarding snomasks is
no longer logged.
2021-08-06 15:19:36 +02:00
Bram Matthys e9ffeb2d33 Newlog: validate log level, event id and subsystem now. We crash immediately
when any of these are wrong. Obviously this should probably be changed to
only do it in DEBUGMODE in a final stable release :D

We also crash if 'msg' contains a percent sign ('%'). This is to avoid
mistakes where someone uses eg '%s' in there, which is not supported.
Unfortunately it also prevents stuff like '100%' so this should probably
be removed too at some point.
2021-08-06 11:50:28 +02:00
Bram Matthys bfe9fc49e4 Fix non-JSON logging (set type 'text' by default) 2021-08-06 11:29:49 +02:00
Bram Matthys 065d24e248 In register_user() use client->user->XXX instead of user->XXX.
Has always been annoying me.. :D
2021-08-06 11:11:09 +02:00
Bram Matthys 92757f6d9f Newlog: convert local client connects and disconnects.
Also makes the connect message and the standard log message consistent.
2021-08-06 11:05:59 +02:00
Bram Matthys f3035a49f8 Newlog (JSON): enrich client object with 'reputation' and 'security-groups'.
The former is an integer and may not always be available (eg: very early
before the user is connected). The latter is an array.

TODO: opt-in/out of all these expansions as they come at a performance penalty
2021-08-06 11:04:22 +02:00
Bram Matthys 4a72b8f519 Remove unnecessary debugging/benchmark info from eos, channeldb, reputation, tkldb 2021-08-06 10:32:42 +02:00
Bram Matthys 088996b16e Make ulining an UnrealIRCd server a fatal link error instead of a warning.
https://www.unrealircd.org/docs/FAQ#bad-ulines
2021-08-06 09:39:09 +02:00
Bram Matthys ddf639836b Cleanup server.c: make server_sync() function only do the syncing and
move the parts that deal with adding lists, tagging as uline etc back
to the caller, that is.. cmd_server().
2021-08-06 09:36:38 +02:00
Bram Matthys 4de2fa648f Some more server_sync cleanups 2021-08-06 09:32:59 +02:00
Bram Matthys 64f62adb1b Code cleanup in server_sync(): cptr -> client 2021-08-06 09:29:29 +02:00
Bram Matthys cb14b987b6 Newlog: server.c 2021-08-06 09:26:33 +02:00
Bram Matthys cfccc8f05c Add $client.servername. Also add json_string_possibly_null() which is
a wrapper that will return a 'null' JSON object for null strings and
otherwise a string object for non-NULL. It seems by default this is
not the case which is a bit annoying. Maybe we should re-wrap all
code to use this. We'll see.
The problem is when this is not done, then a $variable won't be
expanded and would show up like literally "$variable" as if the
variable was never passed on.
2021-08-06 09:24:24 +02:00
Bram Matthys 5b44baab1f ULOG_WARN -> ULOG_WARNING. Better be consistent. This was the only
ULOG_* level that used an abbreviated term.
2021-08-06 08:50:45 +02:00
Bram Matthys e29fd0afdc Show [debug] instead of [???] 2021-08-05 20:43:02 +02:00
Bram Matthys 29e4f8d56f Newlog: FLOOD_BLOCKED (+s +f notices) 2021-08-05 20:42:24 +02:00
Bram Matthys 970c138711 Remove fullstatus-on-load from antirandom example conf 2021-08-05 20:24:50 +02:00
Bram Matthys 01e86d547d Cleanup antirandom a bit (hardly used status on load option, and
lots of debugging). Also add newlog.
2021-08-05 20:16:27 +02:00
Bram Matthys 55f2ef502e Newlog: add $client.info (gecos/realname for users, info on servers) 2021-08-05 20:16:09 +02:00
Bram Matthys 0bdf1e3c35 Newlog: tls_antidos 2021-08-05 20:15:54 +02:00
Bram Matthys e341903e53 Newlog: update connthrottle 2021-08-05 17:46:24 +02:00
Bram Matthys d3bd525eef Fix "You were forced to part" message on SAPART that was accidentally deleted 2021-08-05 17:30:36 +02:00
Bram Matthys 4115eaf483 Use memory pool for channels 2021-08-05 17:20:24 +02:00
Bram Matthys 6ba6a8fd9a Fix memory leak due to unreal_log() / unreal_log_raw() last argument
being NULL. This is a vararg argument and it causes a leak when
running in debug mode because we add some magic source file,
source line number and function.

Note to self: don't put NULL there :D
2021-08-05 17:05:25 +02:00
Bram Matthys 3c7112469b Drop 2nd argument to find_channel which was always NULL everywhere anyway. 2021-08-05 17:02:39 +02:00
Bram Matthys 8dd6640bf5 Rename get_channel() to make_channel() to match make_user() and
change some more calls to make_channel() to use find_channel().
Also make it take 1 argument instead of 3.

Needed to be careful in sjoin code since the previous code set
channel->creationtime to 0 if client was a remote. Now merged
a few if's into one. Should be correct :D.
2021-08-05 16:55:28 +02:00
Bram Matthys cf1a5c7090 Replace get_channel() calls with !NOCREATE or 0 with find_channel() 2021-08-05 16:43:33 +02:00
Bram Matthys da07fbf28f Make Channel struct fixed-size rather than the name[1] trick.
Also, do some more validations on remote names now that it is fixed.
2021-08-05 16:40:26 +02:00
Bram Matthys 6bad375ad7 Rename channel->chname to channel->name. 2021-08-05 16:34:45 +02:00
Bram Matthys a118a3313d Newlog: SAPART/SAJOIN and also broadcast SAJOIN now so all servers can log
it appropriately.
2021-08-05 16:30:14 +02:00
Bram Matthys b21048c3e1 Broadcast SAPART so other servers now it is a forced part and can log it
appropriately.
2021-08-05 16:24:38 +02:00
Bram Matthys 149beb10e3 Update sajoin logging: use $channels rather than $channel since it may be a list. 2021-08-05 16:11:43 +02:00
Bram Matthys bda671fa14 Newlog: Add ULOG_DEBUG log level, and update reputation.c to use newlog. 2021-08-05 14:17:39 +02:00
Bram Matthys 53fa3c44f5 Remove /REHASH -motd and -opermotd and get rid of some rehash quirks. 2021-08-05 14:00:37 +02:00
Bram Matthys 5e94b1cddb Newlog updates in serv.c 2021-08-05 13:49:36 +02:00
Bram Matthys b3fca01472 Newlog: update oper.c 2021-08-05 13:27:38 +02:00
Bram Matthys a19135d2a2 Guard against ULOG_INFO / LOG_INFO mixups :D
No such mistakes have been made yet, but.. bound to happen.
2021-08-05 12:15:55 +02:00
Bram Matthys 9889ed386b Newlog: for zero TS, such as a expiry_at of 0 which means never/infinity,
return a timestamp of null in JSON. And also blackhole some shit.
2021-08-05 11:47:21 +02:00
Bram Matthys f5852ce534 Newlog: add log_data_timestamp() and use ISO8601 timestamps in JSON
logging. We already did so for the "timestamp" of the log message,
but now also do it in other log messages that have a timestamp,
such as "set_at" and "expire_at" in TKL entries.
2021-08-05 11:11:21 +02:00
Bram Matthys 91ba0ca441 More updates to TKL for new log system. Also in the spamfilter hit
message we now show the action that was taken.
2021-08-05 10:48:34 +02:00
Bram Matthys dbdfb7c656 Update TKL code to use new logging system. Make the TKL add/del/expiry
messages more consistent at the same time.
2021-08-05 10:19:05 +02:00
Bram Matthys 952cb121c2 ircd.c: use new logging code
Also shorten the timesync messages a bit.. hope that won't cause confusion :D
2021-08-05 08:27:52 +02:00
Bram Matthys c27ed2ed81 Log: CONFIG_LOADED / CONFIG_NOT_LOADED 2021-08-05 08:02:55 +02:00
Bram Matthys 4a62e6ddaa Add log catagory 'config' and use CONFIG_ERROR_GENERIC,
CONFIG_WARNING_GENERIC and CONFIG_INFO_GENERIC from
config_error(), config_warn() and config_status() respectively.

...not that i like these generic ones, but it is a start.
2021-08-05 07:59:10 +02:00
Bram Matthys b23f7e77c7 Add unreal_log_raw() if you want to log a buffer directly without expanding
the $stuff in it. This is unusual, but possible in some cases.
Generally people should use unreal_log(), though.
2021-08-05 07:54:22 +02:00
Bram Matthys 413def178c Add early loglevel to snomask code. Hardcoded atm. 2021-08-05 07:34:03 +02:00
k4be 5c9b7cf15f Add MONITOR command and fix numerous problems with WATCH. 2021-07-21 20:23:07 +02:00
k4be b0c30cd1a6 Remove unused prototypes 2021-07-21 18:06:31 +02:00
k4be 4ec455bf06 Add selective watch removal.
Clean up linked list item deleting.
2021-07-21 18:04:01 +02:00
k4be b01bc76a69 WATCH command should only modify own entries. 2021-07-20 21:38:42 +02:00
k4be 7fab97d364 Add watch notification hook.
This will likely reduce performance, but this should not matter in modern times.
Also added flags to let modules know which one the entry belongs to, and what
to do with it.
Now modules should be able to add their own WATCH methods (like IRCv3 MONITOR),
or extend functionality to notify about other changes than the default log on,
log off and away statuses (like SETNAMEs).
2021-07-20 20:59:36 +02:00
k4be 0700640330 Create "watch-backend" module that will serve for all watch-like commands. 2021-07-20 20:26:31 +02:00
k4be 6ec6c37839 Add watch calls to efunctions.
(Doing nothing useful at this point.)
Also bump MAXEFUNCTIONS.
2021-07-19 21:28:29 +02:00
k4be bcbcc10b9d Move watch code from core to module 2021-07-19 18:16:28 +02:00
k4be 15ac841aea Do not show "Read error" quit message on regularly closed connections 2021-07-19 16:53:05 +02:00
k4be 3a9e4f98ac Add option for notifying chanops about invitations by normal users.
Normally, channel operators are only notified when another chanop
invites someone to their channel - as this would allow the user to
join the channel later if it becomes invite-only. This is still
the default behaviour. But now, it can be configured to notify
operators about any invitation done to their channel, eitner by
another op or by normal user. This will allow them to see whether
someone floods others with invitations to their channels.
Enable the option with set::normal-user-invite-notification yes;
2021-07-17 18:07:02 +02:00
k4be b6bd9a4d97 Fix typo 2021-07-17 10:54:14 +02:00
k4be 47ec109fce Fix crash on /REHASH with exceptionally large number of client capabilities loaded. 2021-07-16 22:58:23 +02:00
k4be 637ef7e99d Add IRCv3 SETNAME support 2021-07-16 18:34:11 +02:00
k4be e294656175 Merge branch 'unreal60_dev+invite' into unreal60_dev 2021-07-16 18:02:44 +02:00
k4be be534a7aa1 Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-07-16 18:02:22 +02:00
k4be 12c2bb42c2 Remove unused piece of code 2021-07-15 19:29:19 +02:00
k4be bbc2bc9cd5 Add IRCv3 invite-notify cap 2021-07-15 19:25:46 +02:00
k4be 036b61dbc6 Rewrite invite notification mechanism 2021-07-15 19:10:07 +02:00
k4be 3ede47c7fa Remove invite moddata access from core (without breaking the api) 2021-07-15 16:13:02 +02:00
k4be db8ff94e7a Free invite moddata properly 2021-07-15 15:52:04 +02:00
k4be cd64a34634 Fix for previous commit 2021-07-15 15:51:47 +02:00
k4be 8e676c1f2a We are never going to store invite for remote clients 2021-07-15 15:22:41 +02:00
Bram Matthys abc80cfdd9 Enable ASan (address sanitizer) during U6 development 2021-07-15 12:51:50 +02:00
k4be c97b9bb494 Move invites from core to module 2021-07-14 20:20:56 +02:00
k4be 6b09b942bf INVITE messages may come from a server too 2021-07-14 19:25:48 +02:00
Bram Matthys d7fcc90014 Change lost_server_link() prototype and log errors properly for both TLS and non-TLS.
Not really satisfied with the way the TLS socket error is logged yet, but ok..
2021-07-14 14:13:02 +02:00
Bram Matthys 9987b6b862 Temporarily send all unreal_log() msgs to sendto_realops() 2021-07-14 14:12:22 +02:00
Bram Matthys eb4ac65125 Update lost_server_link() to use unreal_log() and log the proper
socket error message such as Connection refused.
2021-07-14 13:58:29 +02:00
Bram Matthys 49fe200243 unreal_log(), connect_server and report_error() / report_baderror():
* Converted 90% of the socket and linking errors to use unreal_log()
* Add log_data_socket_error(fd) and $socket_error
* This also makes connect_server() 'void' and removes all of the error
  reporting from the callers (there was 3x code duplication due to that)
* Don't use report_error and report_baderror anymore in socket.c
* More to follow...
2021-07-14 13:33:18 +02:00
Bram Matthys f50d97474e Fix unreal_log() with $vars that are integers not working.
This adds json_get_value().
2021-07-14 11:36:27 +02:00
Bram Matthys 1068960b9a We now compile with -Wformat-nonliteral by default.
This adds __attribute__((format(printf,X,Y))) to several functions.
It also adds checking only for the non-literal case to some functions
such as unreal_log/unreal_do_log.

This so we can more easily detect format string issues. Especially now with
the recoding of the logger and with possible future mistakes in this area
in UnrealIRCd 6 itself or in third party modules.

The check is currently disabled in these files, which are TODO items:
* src/send.c: still much work to do
* src/socket.c: due to report_error and report_baderror().
  I want to get rid of these functions and integrate them
  in the new logger anyway.
* src/serv.c: only disable for hunt_server()
2021-07-14 11:15:49 +02:00
Bram Matthys 01c418c4d5 src/log.c errors should use errno, not ERRNO, as the latter actually
uses WSAGetLastError() on Windows, which obviously makes no sense.
This mistake comes from the original ircd_log() by the way.
2021-07-13 19:58:14 +02:00
k4be c25f4a4538 Fix hang on a module attempting to assign (unusually) large amount of CAPs 2021-07-12 21:00:38 +02:00
Bram Matthys 05aeba9ba9 Get rid of Debug(()) function calls. I never use it anyway. 2021-07-12 18:54:38 +02:00
Bram Matthys a57bdba220 Move CONFIG_TEST/CONFIG_RUN stuff for logging from conf.c to log.c
Still some other stuff to move too eg rehash/freeing stuff etc.
2021-07-12 18:00:41 +02:00
Bram Matthys 76b1d756dd Make ircd_log() call new unreal logger. Start of transition.
Broken now:
- All filtering (log::flags)
- Everything is seen as error unknown UNKNOWN

Working:
- log::type json
- logging still works, other than the limitations of above
2021-07-12 17:49:42 +02:00
Bram Matthys b871d2a177 Add log::type for 'json' (work in progress) 2021-07-12 17:24:16 +02:00
Bram Matthys f2eef5caca Remove old leftover code in logger 2021-07-12 17:01:33 +02:00
Bram Matthys f89348d26c Add JSON logger - initial work 2021-07-12 14:37:25 +02:00
Bram Matthys 757adc76dd Bump version to 6.0.0-git and start release notes with a clean slate. 2021-07-12 14:17:46 +02:00
k4bek4be c5a6f3c549 Make CHATHISTORY subcommands case-insensitive. (#157) 2021-07-11 09:24:56 +02:00
Ramiro Bou 0985728662 Adding sequential-fallback autoconnect strategy (#151)
After successful server connection it will restart from the beginning of the link blocks again.
2021-07-11 09:24:14 +02:00
Val Lorentz 67bfd41e44 chathistory: Use more explicit messages on INVALID_TARGET failure message (#150) 2021-07-11 09:09:18 +02:00
Bram Matthys d726c3aadd Bump version to 5.2.2-git as this is git / work in progress. 2021-07-10 10:03:46 +02:00
Bram Matthys d3c98c73c2 Fix issue where saslmechlist could not be set by services server.
This broke SASL services autodetection and also sasl=x,y,z in CAP.
Reported by Valware in https://bugs.unrealircd.org/view.php?id=5960

Of course the easiest solution would be just to set .remote_write=1
for this, which is what I've just done for the 5.2.1.1 release.
But there seems to be a pattern here. When a server wants to write
its own object (irc1.example.net writing to the MD object of
irc1.example.net) we have the problem that that object is both
"our client" and from the other server POV it is "themselves".
On one hand you may want to allow that (eg for 'saslmechlist'), on
the other hand a server writing its own 'certfp' sounds like a bad
idea in principle.
So we now add a new option for the 'self' case and make some MD
objects use it. In fact, in the core we now have zero MD objects
using remote_write. We keep the option available though, for example
for k4be's geoip modules and possibly future features.

Module API change:
* .self_write added which allows a server to write to its own object
  (irc1.example.net writing to the MD object of irc1.example.net)
* .remote_write still exists too if you want to allow remote servers
  to write to your own objects
* Note that in all cases, servers can always write to their own
  (child) client objects.

Changes:
* The link-security MD changed from .remote_write=1 to .self_write=1
* The salmechslist MD now has .self_write=1, this fixes the actual bug
2021-07-10 09:14:18 +02:00
Bram Matthys 8322a48026 ** UnrealIRCd 5.2.1 ** 2021-07-08 17:42:52 +02:00
Bram Matthys 0971cf7d70 modules.optional.conf: example set::antirandom block: Use CIDR
instead of standard wildcard.
In this case, since it's antirandom, it is not really important
as someone is not going to add DNS records specially to avoid
triggering antirandom. That makes no sense since it is much
easier to avoid using a random looking name.
Main reason of changing it here is to set a good example.
2021-07-07 14:20:15 +02:00
Bram Matthys b398c3d101 Change default exempt from 127.* to 127.0.0.0/8 so it does not match
arbitrary hosts that have a host starting with "127.". A rather stupid
oversight on my part, really.

In the meantime, if this happens, then you can still resort to using
ZLINE/GZLINE as a workaround to ban such a user. (The exemption won't
match against the host because DNS lookups are not done for zlines)

Reported by armyn in https://bugs.unrealircd.org/view.php?id=5957
2021-07-07 09:21:17 +02:00
Bram Matthys 141dd8acd0 Load settings from 5.2.0.x dot releases as well 2021-07-03 15:18:47 +02:00
Bram Matthys 94993a03ca ** UnrealIRCd 5.2.1-rc1 ** 2021-07-03 14:42:34 +02:00
Bram Matthys 1d62ca1153 Send account tag to recipient on INVITE.
Reported by ProgVal in https://bugs.unrealircd.org/view.php?id=5951
2021-07-03 14:18:15 +02:00
Bram Matthys 527726be41 Take message tags into account when calculating fake lag.
This was more of a oversight because the cmdbytes calculation happens
in a different function after message tags have already been processed.
Also, wasn't really important up to now since we only allow quite short
tags at the moment.

Instead of just counting these in cmdbytes, as would be the most logical
and easiest fix, we use a different strategy:
We use a separate counter for message-tags so clients benefit from the
"rounding down rule". In other words: the first xyz bytes give you
no extra penalty compared to before (eg they are "free"). Useful for
clients who use eg @label heavily.
By default this is 90 bytes for unknown-users and 180 bytes for
known-users. See lag-penalty-bytes in set::anti-flood.
2021-07-03 09:33:19 +02:00
Bram Matthys ee9db59d36 Fix two more small memory leaks on REHASH.
Now we are at zero leaks again with ASan, or so it seems.
2021-07-02 11:42:58 +02:00
Bram Matthys 12299b45bf Fix small memory leak on REHASH (<1kb): free set::anti-flood block 2021-07-02 10:56:51 +02:00
Bram Matthys abaed84190 Order CHATHISTORY TARGETS response in descending order (newest first)
https://bugs.unrealircd.org/view.php?id=5904
2021-07-02 10:42:40 +02:00
Bram Matthys 35f8598f3f Fix crash if using persistent channel history: if you had ANY rehash error
(often completely unrelated to channel history) and you then rehashed again
UnrealIRCd would crash. Reported by gh0st.
May be the same issue as reported by adamus1red in
https://bugs.unrealircd.org/view.php?id=5943

This has to do with SavePersistentPointer/LoadPersistentPointer calls
which normally work fine but this particular module uses it in MOD_TEST
causing a certain sequence of events causing a double free or read-
after-free if you do it slightly differently.
2021-07-02 09:16:58 +02:00
Bram Matthys f0db0735a8 Update release notes a bit
[skip ci]
2021-06-30 13:32:20 +02:00
Bram Matthys 696d5f05fb Last argument in fd_open() is now used to indicate what should be done on a
later fd_close() call. This also removes fd_map() since fd_open w/FDCLOSE_NONE
now does that.

* If you use fd_socket() or fd_accept(), then no change.
  When fd_close() is called we call close() on *NIX and closesocket() on Win.
* If you use fd_fileopen(), then no change.
  When fd_close() is called we will call close() on both *NIX and Win.
* If you used fd_open() and then fd_unmap() because you didn't want us
  to close the socket, then use fd_open() with FDCLOSE_NONE and
  just call fd_close() instead of fd_unmap().
  We will not actually close the fd in fd_close() (FDCLOSE_NONE).
* If you called fd_open() with other intentions then either specify a
  FDCLOSE_SOCKET / FDCLOSE_FILE as the last argument, or more likely:
  don't use fd_open() at all and use fd_socket() or fd_fileopen() instead.

For reasons on this change, see previous patch. This way is more sane and
makes it harder to make mistakes even beyond Windows-specific issues.
2021-06-30 11:33:46 +02:00
Bram Matthys 329f48334c I/O engine: track if a fd is a file or socket, needed for Windows.
This fixes a file descriptor leak in Windows that happened in the
logging code. The most visible effect of this was if you had a
log::maxsize set then on Windows you would see:
"Max file size reached, starting new log file"
Every other line, forever (and not actually starting a new log).

fd_close() previously did not close the file descriptor of a file
on Windows because on Windows it needs to call close() for a file
and closesocket() for a socket, and it always did the latter.
On *NIX it's more easy and you can just always close() any fd.
2021-06-30 11:06:44 +02:00
Bram Matthys a44b1cb63e Fix ./unralircd genlinkblock printing out a confusing error message if
you have serversonly listen block without tls.
Reported by Valware in https://bugs.unrealircd.org/view.php?id=5945
2021-06-30 10:06:19 +02:00
Bram Matthys 0bd2cfd0fc Update file_exists() function to work with directories on Windows.
And then let's use the similar (and faster) function on Linux too.
2021-06-28 19:33:14 +02:00
Bram Matthys 137703f04a Add cipherscan profile for OpenSSL 3.0.0. 2021-06-28 15:56:05 +02:00
Bram Matthys c586592516 Add -nodes (no DES) to openssl command so it doesn't ask for a
password on OpenSSL 3.0.0 and later when generating the standard
self-signed certificate.
2021-06-28 13:59:27 +02:00
Bram Matthys 088218817d Whitespace.......
[skip ci]
2021-06-28 13:07:15 +02:00
Bram Matthys 50089d340a Build test updates
[skip ci]
2021-06-28 13:02:36 +02:00
Bram Matthys cf5966cce4 Call early_init_ssl() even more early, fixes './unrealircd module list'
from crashing and other symptoms.
Crash was introduced with the OpenSSL 3.0.0 changes from
a541b8f4ad, so 9 days ago.
2021-06-28 08:18:43 +02:00
Ramiro Bou 26295151a9 Add microsecond precision to TSCTL ALLTIME (#147) 2021-06-28 06:27:02 +02:00
Bram Matthys c667662e9b Windows: Allow UnrealIRCd to be terminated gracefully (without prompt)
via taskill /im unrealircd.exe. Needed for BuildBot.
2021-06-27 19:21:56 +02:00
Bram Matthys ec3407a42f Set -Wno-tautological-compare on clang 3.x (yeah old version),
this to shut up false positives in buildbot.
2021-06-27 18:13:52 +02:00
Bram Matthys 30155ddd7c Only call reinit_tls() when rehashing. 2021-06-27 17:22:15 +02:00
Bram Matthys 79740c4a38 Make "REHASH" and ./unrealircd rehash also run the same code as "REHASH -tls",
if on OpenSSL 1.1.1 or later.

We trust OpenSSL 1.1.1 and later to be good enough to handle all
the reference counting and freeing nowadays, which is something that
was not done correctly in (much) older OpenSSL versions, leading
to crashes on one hand and on memory leaks on the other hand.

In OpenSSL 1.1.0 and earlier we do not rehash tls on simple "REHASH",
since that code has not been vetted. However, nobody should be
running those old OpenSSL versions anyway, since they are out of
official OpenSSL support.
2021-06-27 15:38:40 +02:00
Bram Matthys a8e52fdead Bump sjoin module version to 5.1
[skip ci]
2021-06-27 07:41:21 +02:00
Bram Matthys c37c965506 Fix SJOIN not properly propagated due to a copy-paste error in the SJSBY
vs non-SJSBY code. Reported by puckipedia in
https://bugs.unrealircd.org/view.php?id=5934
2021-06-27 07:39:02 +02:00
Bram Matthys 1347b33c14 Update release notes
[skip ci]
2021-06-26 19:44:47 +02:00
Bram Matthys 2afc57aa38 Use IsLoggedIn() macro everywhere where possible.
Based on previous reports and patches from k4be in
https://github.com/unrealircd/unrealircd/pull/129

Looks much cleaner now.

This also filters out the edge case where user_account_login()
could have been called when a user transitioned from "not logged in"
to "unconfirmed account". It did not cause any issues AFAICT but
it is not really expected either.
2021-06-26 11:47:08 +02:00
Bram Matthys 68d172854d Remove IsARegNick() as we already have IsRegNick() 2021-06-26 11:19:47 +02:00
Bram Matthys 06c0a34ab1 Assume all services use account names (SVID), and drop suport for services
that only set +r on people. To my knowledge, practically no services are
out there anymore that do not use proper SVIDs (and that can link with
UnrealIRCd 5).
2021-06-26 11:14:52 +02:00
Bram Matthys 9f10fa2193 Improve error message when trying to use SASL with an unconfirmed
services account.

This adds set::authentication-prompt::unconfirmed-message with
a default of:
unconfirmed-message "You are trying to use an unconfirmed services account.";
unconfirmed-message "This services account can only be used after it has been activated/confirmed.";
See https://www.unrealircd.org/docs/Set_block#set::authentication-prompt

Note that this is only shown for services which allow SASL from
unconfirmed services account in the first place, like atheme.
Anope does not allow it, which is something that could very well
be considered 'correct' as well. In that case you would simply
get the "Authentication failed" message instead
(set::authentication-prompt::fail-message).
2021-06-26 11:03:53 +02:00
Guillaume Hérail 317b3df01e modules/tkl: Fix wrong tkl names in table (#139) 2021-06-26 09:27:55 +02:00
Bram Matthys f30ce90732 Update release notes a bit
[skip ci]
2021-06-25 15:52:14 +02:00
Ramiro Bou 4dbc1f8771 Allow remote servers to write to the link-security MD object (#145) 2021-06-25 14:50:53 +02:00
Bram Matthys 114d54ac61 Allow larger IDLEN for incoming, but keep sending current length.
I would like a bit more room for this in the future,
but until then we will keep sending UIDs of length 9 in
server to server traffic, so no change at all.
2021-06-25 12:17:33 +02:00
Bram Matthys 26a3444f4e Validate the UID in cmd_uid(). Reported by Valware in
https://bugs.unrealircd.org/view.php?id=5925

This does two things in cmd_uid() now:
* It checks if parameter 6 in UID is a valid UID, using valid_uid()
* It checks if the first 3 characters of the UID match the SID
2021-06-25 11:47:23 +02:00
Bram Matthys e9e2504bf4 Don't allow remote servers to write to our MD client objects by default.
Modules can still opt-in via mreq.remote_write=1 to allow it for
certain moddata.
For example, k4be may want to do this for his geoip-base module which
allows a single server to set moddata "geoip" for all connecting clients,
including remote clients.
If you are a moddata provider then you can enable it like this:
 ModDataInfo mreq;
 [..]
 #if UNREAL_VERSION_TIME >= 202125
 mreq.remote_write = 1;
 #endif
 [..]

See discussion on https://github.com/unrealircd/unrealircd/pull/142
2021-06-25 11:28:32 +02:00
Bram Matthys e80c7b5b65 Add set::anti-flood options lag-penalty and lag-penalty-sec.
This also allows known-users to execute slightly more commands per second.

For people who want their trusted users/bots to allow even more commands
per second (eg 20cmds/sec) we now have a nice FAQ item that uses this:
https://www.unrealircd.org/docs/FAQ#high-command-rate
2021-06-23 16:21:06 +02:00
Bram Matthys 28f98da5f8 Remove debug message "Checking flood_limit_exceeded()" that was logged.
This was a leftover from debugging and should not have been present
in 5.2.0. Reported by westor.
2021-06-23 16:16:47 +02:00
Bram Matthys 3fabc1ef5f New security-group::include-mask item so you can put clients into
security-groups based on masks too.
2021-06-23 13:22:17 +02:00
Bram Matthys 7779a4e353 Show git version hash id in /INFO if you are using git
Suggested in https://bugs.unrealircd.org/view.php?id=5920 by KindOne
2021-06-21 15:08:24 +02:00
Bram Matthys 9fde768201 New block set::server-linking and change autoconnect strategy to 'sequential'
* New block [set::server-linking](https://www.unrealircd.org/docs/Set_block#set::server-linking)
  * For link blocks with autoconnect we now default to the strategy
    'sequential', meaning we will try the 1st link block first,
    then the 2nd, then the 3rd, then the 1st again, etc.
  * We now have different and lower timeouts for the connect and
    the handshake. So we give up a bit more early on servers that
    are currently down or extremely lagged.
2021-06-21 14:53:35 +02:00
Bram Matthys 883a1e02ad Initial work on new set::server-linking block:
set {
        server-linking {
                autoconnect-strategy parallel;
                connect-timeout 10s;
                handshake-timeout 20s;
        }
}

Right now the only autoconnect-strategy is 'parallel', which is simply
the existing behavior since 4.x. A future commit will add other
strategies and may or may not change the default as well.

The bit that is working already is that you can now specify different
timeouts for the connect()/TLS_connect() call and for the rest of
the handshake (when the "SERVER" message is seen), this so the connect
timeout can be relatively short.

All this will be documented later in the wiki and release notes.
2021-06-21 13:23:15 +02:00
Bram Matthys 52297e24b6 Don't send "local" channel modes to remote servers.
They were already ignored in MODE by remote UnrealIRCd servers,
but this makes it so local modes (+Z and +d at the moment)
are not sent across the wire.

This also changes the channel_modes() function to have an additional
'hide_local_modes' argument. Set this to 1 if you are building a
buffer that will be sent to remote servers, otherwise use 0,
which is far more common.

Also, this will skip saving of local channel modes to channeldb
since all of these are temporary, or at the moment anyway.

Thanks to alice for reporting this bug and providing a good test
case to help fix this issue and the previous ones.
2021-06-19 17:25:26 +02:00
Bram Matthys fcc7a2cf06 Channel mode +d is local, so should be tagged as such. 2021-06-19 17:03:26 +02:00
Bram Matthys dd1f572acb The code for -d (so after -D+d) never took QUITs into account. Fun. 2021-06-19 16:59:54 +02:00
Bram Matthys 06633047a2 Remove "HCN" from 005. Nobody uses this anyway. 2021-06-19 14:14:33 +02:00
Bram Matthys a541b8f4ad Add support for OpenSSL 3.0.0 (based on -beta1)
Now compiles fine without any warnings.

Note that certificate_quality_check() is an outstanding TODO item.
2021-06-19 13:10:52 +02:00
Bram Matthys e28895c8a9 Show 'security-groups: known-users' etc in connect notice to opers. 2021-06-19 12:49:09 +02:00
Bram Matthys 6cc50d16d0 Fix security group code seeing remote users as always on TLS.
Likely not that important until now, but fix needed for next...
2021-06-19 12:47:52 +02:00
Bram Matthys 991f9f347e Allow wildcards in ~a extban, also special code for ~a:0 and ~a:*
~a:0: match all unauthenticated users
~a:*: match all authenticated users
~a:SomeUser: match only SomeUser, also allow wildcards here, even
though that is usually a very bad idea :D
2021-06-19 11:13:30 +02:00
Bram Matthys fb4b21982d Start writing early release notes for 5.2.1, in particular the new allow
and mask options that should give people food for thought.
[skip ci]
2021-06-19 10:41:04 +02:00
Bram Matthys 905850a825 Bump version to 5.2.1-git and indicate this is bleeding edge 2021-06-19 10:21:46 +02:00
Bram Matthys b72ea1d945 Change allow block to use allow::mask instead of allow::ip / allow::hostname
We use 'mask' everywhere in the config except here, which is annoying
and also inflexible since mask has several nice options, see
https://www.unrealircd.org/docs/Mask_item

Users upgrading will receive a warning, and a reference to
https://www.unrealircd.org/docs/FAQ#allow-mask
but the IRCd will continue to boot (it is not an error).
2021-06-19 10:17:18 +02:00
Bram Matthys deead90ac3 Allow extended server ban syntax in ::mask entries. Eg mask ~a:Syzop; 2021-06-19 09:12:18 +02:00
Bram Matthys f71f6c8fe3 Another update to positive and negative mask rules, the rules are now:
- If you have only negating entries, like '!abc' and '!def', then
  we assume an implicit * rule first, since that is clearly what
  the user wants.
- If you have a mix, like '*.com', '!irc1*', '!irc2*', then the
  implicit * is dropped and we assume you only want to match *.com,
  with the exception of irc1*.com and irc2*.com.
- If you only have normal entries without ! then things are
  as they always are.

This patch also makes the behavior for unreal_mask_match() and
unreal_mask_match_string() the same.
2021-06-19 08:44:03 +02:00
Bram Matthys f7d115e87c More fixes and enhancements for deny link::mask
( 5d6738b3e8 )
2021-06-19 08:00:04 +02:00
Bram Matthys 360d3f507f Move try_connections() from core to server module 2021-06-18 17:21:08 +02:00
Bram Matthys 497c3059ea Fix to support existing deny link::mask syntax as well. 2021-06-18 16:05:50 +02:00
Ramiro Bou 5d6738b3e8 Allowing multiple masks in "deny link" blocks. (#140) 2021-06-18 15:13:50 +02:00
Bram Matthys f0d00ff109 modules.optional.conf: elaborate a bit more on antimixedutf8 score.
And set the default there to 8 instead of 10, which should be OK.
2021-06-16 13:33:01 +02:00
Bram Matthys 89755ccec6 ** UnrealIRCd 5.2.0.1 **
Note: existing 5.2.0 users on *NIX can upgrade without restart to
have the spamfilter fix by using:
./unrealircd hot-patch wrongspamfilter520
2021-06-16 08:25:07 +02:00
Bram Matthys fb8c7a5a75 Fix weird behavior for users in pre-connect stage, eg showing
up in WHOIS. Reported by armyn and Valware.
2021-06-15 20:26:12 +02:00
Bram Matthys 8a655b8bb4 Fix spamfilter not working with type 'c'.
If you had a spamfilter on type 'c' but not on 'p' then it would not
trigger. Reported by armyn in https://bugs.unrealircd.org/view.php?id=5913
This probably went unnoticed because most people add spamfilters
on 'pc' (or even 'pcnN').
2021-06-15 20:01:58 +02:00
Bram Matthys ce807c4e21 Fix Windows build 2021-06-14 10:22:46 +02:00
Bram Matthys f7933a8d72 Set version to 5.2.0 2021-06-14 10:19:06 +02:00
Bram Matthys de4c09eae4 ** UnrealIRCd 5.2.0 ** 2021-06-14 10:14:23 +02:00
Bram Matthys c60b5f48c2 Update release notes 2021-06-14 09:43:04 +02:00
Bram Matthys 210bb2201e Update release notes
[skip ci]
2021-06-14 09:08:44 +02:00
Bram Matthys f8934a44c8 Update release notes
[skip ci]
2021-06-14 08:06:29 +02:00
Bram Matthys 572b349cbd set::restrict-commands: new option exempt-tls which allows SSL/TLS users
to bypass a restriction.
2021-06-14 08:00:48 +02:00
Bram Matthys 389a971f96 Fix rapid autoconnect protection to work with >120 servers (:D) 2021-06-07 17:11:20 +02:00
Bram Matthys 36097fbdce Fix SQUIT being sent back to where it came from.
Reported by Ariadne Conill in https://bugs.unrealircd.org/view.php?id=5906

This patch applies cleanly against 5.2.0-rc1 and 5.0.9.x.

Needs more testing, though, as fiddling with SQUIT code and the
various directions and far/near server distinctions can be tricky.
2021-06-07 10:22:23 +02:00
Bram Matthys 5237ebaabc Fix crash in 5.2.0-rc1: don't call flood_limit_exceeded_log() if a remote
server causes the target flood protection limit to be hit for a target
user or a channel.
2021-06-07 07:48:03 +02:00
Bram Matthys a22ac547c2 Some markup stuff
[skip ci]
2021-06-06 17:37:51 +02:00
Bram Matthys cc490ca924 When using old set::anti-flood settings it is now a (big) warning instead
of an error. Also the warning will differ depending on whether you use
the defaults that were in example.conf for a long time, or some custom
settings.

It's not perfect but should help people with migrating from 5.0.x to 5.2.x.
2021-06-06 17:35:17 +02:00
Bram Matthys 3335eb3305 Fix a doc URL and a (now) confusing syntax example
[skip ci]
2021-06-06 17:09:31 +02:00
Bram Matthys 46550cf180 Update example conf with new anti-flood block.
Replace it with a reference to the documentation instead of trying
to include some or all of the defaults since 1) the block is huge
nowadays with all the settings, and 2) this way we can tweak the
defaults over time in newer versions rather than having people
change their configuration file.
2021-06-06 09:01:31 +02:00
Bram Matthys 3188b7be2d Small code cleanup for two efuncs, so the names match. 2021-06-06 08:33:20 +02:00
Bram Matthys 20c20b3053 Try to explain to people that symmetric encryption works with keys (:D) 2021-06-05 19:20:11 +02:00
Bram Matthys 173af8c88c ** UnrealIRCd 5.2.0-rc1 ** 2021-06-04 11:13:02 +02:00
Bram Matthys 020421a01c Mention websocket type negotiation (Sec-WebSocket-Protocol) in release notes.
[skip ci]
2021-06-04 10:39:18 +02:00
Bram Matthys f6c2b93c72 Show how many sockets/clients the server can handle in 'STATS S'.
Suggested by westor in https://bugs.unrealircd.org/view.php?id=5838

This also fixes a bug where output from modules for 'STATS S' was
shown twice (eg: modef-default-unsettime shown twice).
2021-06-04 10:09:28 +02:00
Bram Matthys 67deb7ec8c UnrealIRCd script: restart is now identical to stop+start (:D) 2021-06-04 09:16:44 +02:00
Bram Matthys 25db0c73e4 Compiler too dumb to detect this properly... 2021-06-04 09:11:15 +02:00
Bram Matthys 6771c98d76 Move check for secret block to beginning of unrealdb_open() so we don't
end up with a 0 byte file due to an easy-to-avoid error later on.
2021-06-04 09:09:06 +02:00
Bram Matthys 148ea98307 Load chathistory module by default 2021-06-04 08:46:09 +02:00
Bram Matthys a7f2406557 Add security-group "webirc" by default. This matches users who
connect through approved webirc gateways, the ones in
https://www.unrealircd.org/docs/WebIRC_block
2021-06-02 19:32:10 +02:00
Bram Matthys e126d924a5 Somehow DEBUGMODE was turned on by last commit, now off again by default. 2021-06-02 19:31:05 +02:00
Bram Matthys 40bc3ef8cc Bump version to 5.2.0-git. This is still work in progress.
Note that we are on the 'unreal52' branch now and have left 'unreal50'
2021-06-02 15:27:14 +02:00
Bram Matthys d9b80d889f Update curlinstall script for ./configure from cURL 7.77.0 and above. 2021-06-02 14:35:37 +02:00
Bram Matthys d360ae7845 Add some markup in release notes
[skip ci]
2021-05-30 19:37:51 +02:00
Bram Matthys 517298007d If no log { } block is present, we used to only log errors to ircd.log.
From now on we simply enable ALL logging to ircd.log, so also connects,
kills, and so on.
2021-05-30 19:35:52 +02:00
Bram Matthys 3eb0bc24ea Add log::flags "flood" to log flood messages 2021-05-30 19:30:36 +02:00
Bram Matthys f8a732747b Get rid of mempool LOG_DBG which is never used 2021-05-30 19:27:35 +02:00
Bram Matthys 6358a2e5ff Remove this check due to clang complaining. Whatever. 2021-05-30 19:11:50 +02:00
Bram Matthys 5acef88ceb All violatons of target-flood, nick-flood, join-flood, away-flood,
invite-flood, knock-flood, max-concurrent-conversations are now
reported to opers with the snomask 'f' (flood).
2021-05-30 19:10:18 +02:00
Bram Matthys cb604d6df0 Update release notes
[skip ci]
2021-05-30 18:49:18 +02:00
Bram Matthys 6f92233919 The set:anti-flood block has been redone so you can have different limits
for "unknown-users" and "known-users".
As a reminder, by default, "known-users" are users who are identified
to services OR are on an IP that has been connected for over 2 hours
in the past X days.
See https://www.unrealircd.org/docs/FAQ#new-anti-flood-block
for more information on the layout of the new block.

NOTE: This actual feature, the relase notes and the documentation
      are all work in progress.
2021-05-30 18:45:27 +02:00
Bram Matthys 3076ed5a98 Make pretty_time_val() output like "2m30s" instead of "2 minutes 30 seconds".
I think people will understand both and it is currently rather long.
And a bit confusing too with all the spaces, easy to overlook something eg
in /STATS S where it is being used.
2021-05-30 14:50:27 +02:00
Bram Matthys 79ded54df1 Make join-flood use the new framework too, well... partially anyway. 2021-05-28 18:08:07 +02:00
Bram Matthys 36b9faa7cd Code cleanup: move flood control to generic system 2021-05-28 17:59:39 +02:00
Bram Matthys 3e1f092afc Rename FLD_* to CHFDL_* in chanmodes/floodprot.c, so it does
not clash with future stuff.
2021-05-28 15:48:54 +02:00
Bram Matthys 191990b881 Code cleanup: at some places "ClientUser" was used instead of "User". 2021-05-28 15:26:58 +02:00
Bram Matthys d9c0397e25 Code cleanup: this zeroing isn't useful as we already memset. 2021-05-28 15:25:10 +02:00
Bram Matthys da519ae04a Get rid of duplicate checks for anti-flood.
Sorry this is too much effort and i think admins should be smart
enough to figure this out themselves.
2021-05-28 14:52:09 +02:00
Bram Matthys e1e718f982 Update release notes
[skip ci]
2021-05-28 10:38:32 +02:00
Bram Matthys 78ca5ecc3e Add "draft/bot" message tag to messages from +B clients.
As mentioned in https://ircv3.net/specs/extensions/bot-mode
2021-05-28 10:36:38 +02:00
Bram Matthys 0bd813733f Fix file header
[skip ci]
2021-05-28 10:07:26 +02:00
Bram Matthys 845a582d76 Add support for +draft/reply and load the module by default.
See https://ircv3.net/specs/client-tags/reply for the draft.

Can be used by clients to indicate to which message they are writing
a reply. This can be especially useful for bots, to indicate that
a response belongs to a user request, eg a !trigger.
2021-05-28 09:14:40 +02:00
Bram Matthys 4db7866676 Update release notes
[skip ci]
2021-05-26 11:27:27 +02:00
Bram Matthys d3ee89ffa5 Fix help.conf 2021-05-26 07:51:43 +02:00
Bram Matthys a85a38e69d Add the ability to SPAMFILTER message-tags.
The new target type is called 'T' and we match against "name=value"
of each message tag (or just "name" if it is without value).

Example: SPAMFILTER ADD -simple T kill 0 this_is_a_test +typing=active
(No this is not a suggestion :D)

This probably won't be used much at all, but it is good to have the
option available in case there is some massive problem,
especially since more message tags may pop up sooner or later.

Caveat: this is actually a bit slow as we may have to check multiple
message tags for a single line.
If there are zero message-tag spamfilters then we will automatically
short-circuit and save all this CPU, which will be the most common case.
2021-05-25 20:31:10 +02:00
Bram Matthys 264ed614fc Implement Sec-WebSocket-Accept from
https://github.com/ircv3/ircv3-specifications/pull/342
2021-05-24 18:33:55 +02:00
Bram Matthys 872aa93635 Move some string helpers to src/misc.c
skip_whitespace() and read_until()
2021-05-24 18:32:57 +02:00
Bram Matthys cd9ac916de Allow setting set::history::channel::playback-on-join::lines to zero
in case you want to disable this feature.

Note that clients that are using CHATHISTORY will already no longer
receive history-on-join ("push") since they REQ a CAP that will inhibit
this and they will "pull" the history instead when they want/need to.

So... this option is really only there if you want to disable it for
non-CHATHISTORY-clients.
2021-05-24 09:59:20 +02:00
Bram Matthys 3ded34b405 Windows: run db tests
[skip ci]
2021-05-24 09:22:17 +02:00
Bram Matthys 2375c35f2b Fix crashreporter to show big warning if you have 3rd party modules
loaded. The code to raise this warning was already present but it
was not being shown in many cases (when it actually should).

It now looks like this, if you run ./unrealircd start and previously
crashed AND have any 3rd party mods loaded:

The IRCd has been started now (and is running), but it did crash 1 seconds ago.
Crash report generated in: /home/ircd/unrealircd/tmp/crash.report.core.1621838267.txt

** IMPORTANT **
Your UnrealIRCd crashed and you have 3rd party modules loaded (modules created
by someone other than the UnrealIRCd team). If you installed new 3rd party
module(s) in the past few weeks we suggest to unload these modules and see if
the crash issue dissapears. If so, that module is probably to blame.
If you keep crashing without any 3rd party modules loaded then please do report
it to the UnrealIRCd team.
The reason we ask you to do this is because MORE THAN 95% OF ALL CRASH ISSUES
ARE CAUSED BY 3RD PARTY MODULES and not by an UnrealIRCd bug.

Shall I send a crash report to the UnrealIRCd developers?
NOTE: If the crash is caused by a 3rd party module then UnrealIRCd devs can't fix that.
2021-05-24 08:38:07 +02:00
Bram Matthys 842e06d7d3 Possibly fix small memory leak. 2021-05-23 13:59:57 +02:00
Bram Matthys 92b9fa07a1 Make history backend non-PERM so it can be upgraded on the fly.
Tested:
* Rehashing and sending messages before after (multiple times)
* Terminating
* Unloading by commenting out
2021-05-23 13:56:03 +02:00
Bram Matthys 88d7829e5b Allow lower set::restrict-commands::xyz::connect-delay values.
Suggested by Le_Coyote in https://bugs.unrealircd.org/view.php?id=5873
2021-05-23 09:46:33 +02:00
Bram Matthys 137cc7f20b Update some URLs
Suggested by westor in https://github.com/unrealircd/unrealircd/pull/136
2021-05-23 09:44:18 +02:00
Bram Matthys 9c0710a9a4 Adjust +H setting if a channel goes -r and had a high setting
that was only allowed for registered channels (+r).
2021-05-23 09:26:38 +02:00
Bram Matthys 7ccbb6ebf1 Update release notes
[skip ci]
2021-05-22 19:29:23 +02:00
Bram Matthys b6626b2b60 Update module coders section in release notes
[skip ci]
2021-05-22 19:06:49 +02:00
Bram Matthys 3ad6878865 Set new maximums for channel mode +H. If the channel is +r then the maximum
is now 5000 lines / 31 days. For unregistered it is 200 lines / 31 days.
Previous setting was 200 lines / 7 days for both.

Admins can tweak these settings, see:
https://www.unrealircd.org/docs/Set_block#set::history

More code to deal with corner issues will follow later.

UnrealIRCd module coders [!]:
This also changes the channel mode API conv_param. You can use
the UNREAL_VERSION_TIME >= 202120 condition to detect this.
Eg:
 #if UNREAL_VERSION_TIME < 202120
 int my_conv_param(char *para, Client *client);
 #else
 int my_conv_param(char *para, Client *client, Channel *channel);
 #endif
2021-05-22 18:15:26 +02:00
Bram Matthys 7a22ec8b6b Announce CHATHISTORY=xx in 005 2021-05-22 15:32:29 +02:00
Bram Matthys d6b64de162 Silence compiler warning by reordering stuff. 2021-05-22 15:14:29 +02:00
Bram Matthys 8431cd43b2 Fix read-after-free 2021-05-22 14:59:54 +02:00
Bram Matthys c0b86c757c Change chanmode +H parameter to show hours and days when needed and
possible if it rounds off nicely, eg +H 100:7d. Note that the
existing syntax is still accepted, eg +H 20:1440 and +H 20:1440m
are both converted to 20:1d.

With potentially higher time values this change makes the mode
parameter a lot more readable.

Support for translating timevalues is already in UnrealIRCd 5.0.2
and higher, so should be fine for nearly everyone.
2021-05-22 14:49:25 +02:00
Bram Matthys c6873292b9 Implement CHATHISTORY TARGETS...
Except that it still needs to order the result by timestamp,
which it does not do at the moment.
2021-05-22 13:36:16 +02:00
Bram Matthys 937cc94940 Add CAP draft/chathistory and don't send history-on-join if this
CAP is enabled by a client.
2021-05-22 12:16:52 +02:00
Bram Matthys abeb222eed Implement CHATHISTORY BETWEEN 2021-05-22 11:50:51 +02:00
Bram Matthys 188dc7792d Fix crash on remote CHATHISTORY cmd (by servers/services). 2021-05-21 07:20:26 +02:00
Bram Matthys 3543bff286 Update list of donators 2021-05-19 19:24:18 +02:00
Bram Matthys cda145b62a Add initial version of CHATHISTORY command
from https://ircv3.net/specs/extensions/chathistory

Current status of the module in UnrealIRCd:
* A significant part of this is done and working
* Currently in modules.optional.conf to get test exposure,
  not yet loaded by default.
* CHATHISTORY subcommands implemented: BEFORE, AFTER, LATEST, AROUND
* It does not implement the subcommand "BETWEEN" yet
* It does not announce or recognize the (draft) CAP's yet
* It does not announce the ISUPPORT token CHATHISTORY=xx yet
* Testcases need to be written to validate everything
* There will be bugs, now, and also while implementing the rest
  in the days to come.
2021-05-19 16:19:41 +02:00
Bram Matthys ad84a5227a Remove version check for curl and libssl. Nowadays they have ABI
guarantees so it should all be OK. (And nowadays they probably
are true too :D)
2021-05-18 20:35:33 +02:00
Bram Matthys 7f0cae0473 Remove warning in release notes on file corruption,
now that things are more tested. [skip ci]
2021-05-17 16:51:49 +02:00
Bram Matthys 9a7f2b0ea2 Update for DB tests, now finished in test framework. 2021-05-17 16:44:21 +02:00
Bram Matthys c916d1d9ef Allow secret::password-file to only exist on-boot, so after booting
the file is allowed to no longer exist. This so you can do things
like only connecting an USB stick during UnrealIRCd boot and then
pull it out once booted.
2021-05-17 15:18:28 +02:00
Bram Matthys 013184533d Add DB writing/reading tests to BuildBot so it is tested on every commit. 2021-05-17 12:45:35 +02:00
Bram Matthys be81152da7 Move hash generation outside cfg() and do it early just to be safe. 2021-05-17 12:38:43 +02:00
Bram Matthys 8c71cd1a65 * Make channeldb write the db on terminate
* Fix channel history issues with writing on terminate
* Change tkldb and reputation to only write the db
  on terminate and not on every REHASH anymore

..all this thanks to the new loop.ircd_terminating, so modules can
see the difference between regular rehash and terminating.
2021-05-17 11:49:28 +02:00
Bram Matthys c79cc6f430 Add ModuleSetOptions(modinfo->handle, MOD_OPT_UNLOAD_PRIORITY, priority);
so modules can indicate if they wish to be unloaded before or after others.
This is used by the channel and history modules so they can save their
databases before the chanmodes modules are unloaded.

Also, made ModuleSetOptions() a void function. I don't think anyone
used the returned value and it now no longer is strictly bitmask add/del
so returning an unsigned int would be a tad confusing.
2021-05-17 11:43:46 +02:00
Bram Matthys 74083d7440 In AddListItemPrio() explicitly set item->priority to prio. 2021-05-17 11:39:45 +02:00
Bram Matthys 4fa468bd4f on DelListItem set prev/next to NULL on the item itself (not the list) 2021-05-17 11:31:55 +02:00
Bram Matthys d7bf35e0d9 Set loop.ircd_terminating when IRCd is terminating (signal 15, /DIE, etc) 2021-05-17 11:08:54 +02:00
Bram Matthys 61e0ed3d03 Give UnrealIRCd 10 seconds to terminate insteads of just 1, now that
we may have more database writing to do on terminate.

Actually 10 seconds would be really long, but 2-3 seconds may be
quite realistic if you have lots of TKLs, permanent channels,
reputation entries (users), etc.

Oh yeah, and I really hate writing PORTABLE shell code...
2021-05-17 09:05:47 +02:00
Bram Matthys 263593634e Flush any dirty history log files to disk on terminate (eg: ./unrealircd stop) 2021-05-17 08:47:39 +02:00
Bram Matthys cb3c0b48ca Don't call hbm_delete_db() if not running in persistent mode. 2021-05-17 08:10:51 +02:00
Bram Matthys ae873ab25a Compile fixes for Windows 2021-05-16 19:15:01 +02:00
Bram Matthys f79fec62f1 Add CAP unrealircd.org/history-backend which declares the policy/
configuration on how history is stored (in memory and/or on disk).
This is similar to other disclosing policies like
unrealircd.org/link-security and unrealircd.org/plaintext-policy.
The reason for this cap (and similarly the other caps) is that
the user can make an informed decision on whether it finds the
policy/safety/privacy of an acceptable level or not.

Fixes for turning persist on/off on the fly (REHASH)

Make release notes a bit more clear.
2021-05-16 17:52:59 +02:00
Bram Matthys e58b22c45d Write some early release notes.
[skip ci]
2021-05-16 17:26:35 +02:00
Bram Matthys 011cc9e1d5 Persistent channel history: prevent mixing of .db files from elsewhere. 2021-05-16 17:25:36 +02:00
Bram Matthys 5e4d9cdc61 Delete persitent history immediately when channel goes -P.
And also handle -P+P.
2021-05-16 17:18:52 +02:00
Bram Matthys 5c8752dfc6 Get rid of various warnings/errors due to recent work. 2021-05-16 16:57:01 +02:00
Bram Matthys 14a99d755e UnrealDB history: Use SHA256 with pre- and post- hashsecret
for the file names, instead of MD5.
2021-05-15 20:55:08 +02:00
Bram Matthys 13f9afeaf4 Add sha256hash() function for convenience. 2021-05-15 20:48:04 +02:00
Bram Matthys 05dd788dab Add support for secret::password-prompt (entering on console)
This is one of the 3 currently supported methods.
Documentation will follow later.
2021-05-15 18:52:01 +02:00
Bram Matthys 1752afee44 Move running_interactively() from crashreport.c to misc.c 2021-05-15 18:28:21 +02:00
Bram Matthys 55b0422dd0 Bail out sooner, otherwise confusing. 2021-05-15 18:28:03 +02:00
Bram Matthys 3bf0c9e653 Add support for persistent channel history, if the channel is +P and +H.
This is not enabled by default and requires additional configuration,
documentation will follow later.
2021-05-15 15:43:07 +02:00
Bram Matthys 95cfafcd51 Include dirent.h by default. 2021-05-15 15:42:34 +02:00
Bram Matthys 73ae7ccbef Mod API: Add CONFIG_SET_HISTORY_CHANNEL so chanmodes/history
can delegate configuration to history_backend_mem.
2021-05-15 15:41:02 +02:00
Bram Matthys ff84f17f72 Move strtolower_safe() from antirandom to support.c 2021-05-15 15:38:57 +02:00
Bram Matthys 7fa0e07487 UnrealDB: Oops, previous commit broke unrealdb_write_str() w/NULL strings. 2021-05-05 19:20:33 +02:00
Bram Matthys 8783280a68 Make UnrealDB big-endian-proof. Rather rare, but you never know
on what hardware people end up running UnrealIRCd.

Also (unrelated) add a check for >64kb strings in unrealdb_write_str()
and return an API error. That too is unlikely to ever happen, but..
better be correct.
2021-05-05 19:04:11 +02:00
Bram Matthys df3bb510a1 Windows: Ignore compiler warning C6029 in unrealdb.c as it is a false positive.
src/unrealdb.c(462): error C2220: warning treated as error - no 'object' file generated
src\unrealdb.c(379) : warning C6029: Possible buffer overrun in call to 'fread':  use of unchecked value 'c'.

[..fread of c->config->saltlen..]
if (c->config->saltlen > 1024)
{
        unrealdb_set_error(c, UNREALDB_ERROR_HEADER, "Header is corrupt (saltlen=%d)", (int)c->config->saltlen);
        goto unrealdb_open_fail; /* Something must be wrong, this makes no sense. */
}
c->config->salt = safe_alloc(c->config->saltlen);
if (fread(c->config->salt, 1, c->config->saltlen, c->fd) != c->config->saltlen)

VS2019 doesn't understand that this is safe.
2021-05-05 13:44:33 +02:00
Bram Matthys 623745d274 Fix Windows BuildBot
[skip ci]
2021-05-05 11:23:42 +02:00
Bram Matthys bd11d06a39 Windows compile fixes for unrealdb and libsodium. 2021-05-05 10:49:15 +02:00
Bram Matthys 214a98addb Add libsodium to Windows build
[skip ci]
2021-05-05 09:48:17 +02:00
Bram Matthys deffc908e3 Document UnrealDB API and get rid of unrealdb_write_data/unrealdb_read_data.
API users must use specific size/type functions instead, otherwise it is
simply too dangerous / too easy to overlook issues.
2021-05-04 11:03:48 +02:00
Bram Matthys cc348701a2 UnrealDB: check for write errors in all conditions (not just some)
And set the error message/code properly. Didn't set it before because of
'c' being freed, but we have unrealdb_get_error_code() and
unrealdb_get_error_string() now that can (and should) still be used
in such cases.
2021-05-04 09:07:37 +02:00
Bram Matthys a349fa2ae4 UnrealDB: Fix for short read / final end of file (for unencrypted files) 2021-05-04 09:01:04 +02:00
Bram Matthys 4f8ac3c6cf UnrealDB: Fix reading final end of file (crypto-side) 2021-05-04 08:55:08 +02:00
Bram Matthys 282162b4aa Various small UnrealDB fixes 2021-05-04 08:36:45 +02:00
Bram Matthys 576f8b1aae Fix bug with unrealdb caching 2021-05-03 18:25:59 +02:00
Bram Matthys 2a29c2f3b3 Update tkldb to use UnrealDB functions 2021-05-03 18:06:05 +02:00
Bram Matthys 2340f14973 Fix unrealdb reading due to last-minute change earlier today 2021-05-03 18:04:56 +02:00
Bram Matthys 1606f28555 Add unrealdb_write_char() / unrealdb_read_char() 2021-05-03 17:48:23 +02:00
Bram Matthys 6860046b20 Make the "UnrealIRCd 4 is no longer supported" section a bit shorter
in the release notes.
[skip ci]
2021-05-03 15:33:41 +02:00
Bram Matthys eb4d7fb3f0 Set version to 5.0.10-git with disclaimer not to use it yet. 2021-05-03 15:27:30 +02:00
Bram Matthys 30d64f2ebe Use UnrealDB functions in channeldb. 2021-05-03 15:15:25 +02:00
Bram Matthys 40ace27e7d Add UnrealDB reading capability to reputation module.
We still write the old format, unless encryption is enabled.
2021-05-03 15:14:56 +02:00
Bram Matthys dde3e0ccb2 Add unrealdb and secrets API. Documentation and more information will
follow in later commits.
2021-05-03 15:07:10 +02:00
Bram Matthys dd33b38264 Fix extended server ban ~a:accname not working for shun and also
not always kicking in on *line either.
We now check for shuns/*lines in user_account_login(), so upon
SASL or NS IDENTIFY etc. This also means that the client could
now be killed in that function, so callers should take extra
care and take that into account. We check for IsDead() in our
calls now (if it's our client anyway).

Hopefully this doesn't break anything.........
2021-04-17 14:42:40 +02:00
Bram Matthys d6b0981433 Module coders: Update HOOKTYPE_LOCAL_NICKCHANGE and HOOKTYPE_REMOTE_NICKCHANGE.
I forgot to include message tags earlier, so this is a breaking change:
-int hooktype_local_nickchange(Client *client, char *newnick);
-int hooktype_remote_nickchange(Client *client, char *newnick);
+int hooktype_local_nickchange(Client *client, MessageTag *mtags, char *newnick);
+int hooktype_remote_nickchange(Client *client, MessageTag *mtags, char *newnick);

Be sure to update your hooks!
You can use something like: #if UNREAL_VERSION_TIME>=202115
2021-04-17 10:38:25 +02:00
Bram Matthys 85d20e8bd5 Optimize libsodium for current CPU (just like libargon2 does)
Is about 5x speed improvement in practice.
2021-04-10 12:38:20 +02:00
Bram Matthys e497feef24 Add c-ares and libsodium version output to boot screen and /VERSION.
OpenSSL, PCRE2 and cURL were already there.
2021-04-09 19:30:53 +02:00
Bram Matthys 5daf7e7ebe Compile with system libsodium, fallback to shipped version.
This library provides easy to use functions for encryption/decryption
among other things. There is some overlap with things that
OpenSSL also provides but not all.
2021-04-09 13:44:31 +02:00
Bram Matthys e596b730af Move channel history sending from one layer to the other.
This so for example history_backend_mem() does not do any sending.
Less efficient but needed for later when things get more complex.
2021-04-07 09:42:18 +02:00
Bram Matthys 4dc999d2b6 Update some API doc 2021-04-07 09:16:52 +02:00
Bram Matthys 5cddc8d212 If a user answers the curl path manually at the final ./Config question
about curl, then verify that it is actually a correct answer by
checking for <prefix>/bin/curl-config.
2021-03-29 19:24:26 +02:00
Bram Matthys f04697ba7c Add disclaimer to config.settings. 2021-03-29 19:09:37 +02:00
Bram Matthys 775c00c096 Add displaying of reputation score in WHOX (if IRCOp).
The new display field is called 'R', use something like:
WHO * %cuhsnfmdaRr

At the moment only "displaying" is available and not "searching"
on reputation. If you need that, you're stuck with the /REPUTATION
command at the moment. Too much hassle to implement that.

About reputation: https://www.unrealircd.org/docs/Reputation_score
2021-03-28 18:23:02 +02:00
Bram Matthys 0ea86fce83 Forbid using extended server bans in ZLINE/GZLINE as they only work on *@IP.
...and give a hint to use KLINE/GLINE instead.
2021-03-27 09:11:15 +01:00
Bram Matthys d9fbb51a33 Fix error message for /ELINE not working with certain types.
Reported by westor in https://bugs.unrealircd.org/view.php?id=5843

This makes the code more generic so it's just adding a 1/0 in
the TKL types table.
2021-03-27 09:10:56 +01:00
Bram Matthys 4725b5547b Mention correct tag names (which also happen to be URLs) for
unrealircd.org/userip and unrealircd.org/userhost.
Reported by Nav|C.
2021-03-26 15:14:25 +01:00
Bram Matthys e31755bc7c *** UnrealIRCd 5.0.9.1 *** (faster build, lower memory requirements during build)
Note: the only change between 5.0.9 and 5.0.9.1 is:
* Build improvements on *NIX (faster compiling and lower memory requirements)
* Windows version is unchanged and still 5.0.9
2021-03-26 08:30:21 +01:00
Bram Matthys ed50c8fb8c Make shipped c-ares build a lot faster (for systems without system c-ares).
Type:           Parallel build:  Non-parallel build:
Before change   92 seconds       304 seconds
After change     7 seconds        21 seconds

All this thanks to a simple --disable-tests being passed to c-ares' configure.
2021-03-22 08:25:59 +01:00
Bram Matthys 1d0ac57bfa Don't try parallel make if less than 750MB memory is available
(that is, MemAvailable, not MemFree). The ./Config script with
all shipped libs compiled actually has a memory peak of 450M
in my tests with -j4, but let's err on the safe side...

Reason for all this:
This helps on shells with limited memory, especially if they
don't have swap.

We actually don't take swapping into account, so even if you
have plenty of swap but "low" on memory then we won't force a
parallel build. That's okay, since in such a case a parallel
build is not so useful anyway with (slow!) swapping.

This code only works on Linux. Let's hope *BSD guys are smart
enough to have a decent system setup.
2021-03-22 08:13:58 +01:00
LeCoyote 00711f905c Actually read security-group::tls from the conf file (fixes #0005836) (#133) 2021-03-21 07:39:49 +01:00
Bram Matthys 80fbef8b5c *** UnrealIRCd 5.0.9 *** 2021-03-19 20:08:21 +01:00
Bram Matthys 022ed9ae71 Remove explicit setting of send/receive buffer as modern OSs don't
need this and it slows things down for servers.

For clients it's not much of an issue, since traffic rates are low.

However, for server-to-server links it is an entirely different matter.
It is (only) noticeable if you have lots of traffic, such as when there
is a lot to sync while linking two servers, and especially when the two
servers are geographically further apart.
Tested with 100,000 G-lines on both sides being synced (20MB traffic):
* 20ms RTT (same country/state): speed up of x3
* 200ms RTT (transpacific): speed up of x6
2021-03-14 16:04:43 +01:00
Bram Matthys a880532ca7 Update ./Config autodetection of 5.0.8. 2021-03-12 17:53:40 +01:00
Bram Matthys 6761cdd66d UnrealIRCd 5.0.9-rc1 2021-03-12 17:50:52 +01:00
Bram Matthys 2765eaac26 Add find_nvplist() 2021-03-10 17:24:38 +01:00
Bram Matthys 57a6dd3600 Fix windows build. Now that we are using c-ares 1.17.1, the include
directory has changed that needs to be specified on Windows.
[skip ci]
2021-03-10 14:37:33 +01:00
Bram Matthys 01bfe5f7a7 Mention that the Windows build now supports TLSv1.3 too.
We moved from LibreSSL 3.1.4 to 3.2.4.
Support for TLSv1.3 was added in LibreSSL 3.2.2 from Oct 2020,
but it had some issues, hopefully by now they are resolved.
[skip ci]
2021-03-08 17:46:40 +01:00
Bram Matthys d42147d56c Update shipped C-ARES lib to 1.17.1 (19-Nov-2020) 2021-03-08 11:10:11 +01:00
Bram Matthys c352dcb8aa Update shipped PCRE2 lib to 10.36 (04-Dec-2020) 2021-03-08 11:07:10 +01:00
Bram Matthys f4b14330a8 Update curl-ca-bundle: Certificate data from Mozilla as of: Tue Jan 19 04:12:04 2021 GMT
https://curl.se/ca/cacert-2021-01-19.pem
[skip ci]
2021-03-08 11:00:33 +01:00
Bram Matthys 82af21639c Fix for -Werror=unused-result 2021-03-08 10:43:36 +01:00
Bram Matthys 1f47cc7824 Support for dated log files such as log "ircd.%Y-%m-%d.log" { }
Suggested by Amiga600 in https://bugs.unrealircd.org/view.php?id=5784

This also fixes a bug with log::maxsize on Windows (cannot overwrite
existing file with .old).

It simplifies the logging code a little and makes it a tad more readable.

And it adds an unreal_strftime() function to make things easy.
2021-03-08 10:37:28 +01:00
Bram Matthys 28bf68f39b More than 100 lines within an if when you can use if ! w/continue.. pff. 2021-03-08 09:53:28 +01:00
Bram Matthys 8a16a7392f Don't stat() the logfile if user has no log::maxsize 2021-03-08 09:51:00 +01:00
Bram Matthys 7b655a5e17 Merge two identical #ifdef's 2021-03-08 09:49:44 +01:00
Bram Matthys 29e8c2c770 Mention './unrealircd genlinkblock' as it should work in 5.0.8+. 2021-03-08 09:45:11 +01:00
Bram Matthys 44f8bea3c4 Minor crash reporter fixes and add command line crash test to test it. 2021-03-08 09:12:53 +01:00
Bram Matthys 636b068062 New option allow::global-maxperip, defaults to allow::maxperip+1.
Suggested by Jobe and PeGaSuS in https://bugs.unrealircd.org/view.php?id=5802
2021-03-07 11:30:02 +01:00
Bram Matthys 4bd0969583 spamfilter { } blocks caused some confusing whitespace in stats for
the spamfilter. Only after a rehash it showed the me::name as the
setter. From now on we just display -config- in the setter field,
like we do for all the other TKLs as well (ELINE, ban xyz, etc).
2021-03-07 10:43:47 +01:00
Bram Matthys 1854bfffd0 ELINE and except ban for type 'F' (spamfilter) were not working.
Reported by armyn in https://bugs.unrealircd.org/view.php?id=5820
2021-03-07 08:46:24 +01:00
Bram Matthys 17bdd6de1e Use different temporary filename. Not really important normally but
if running multiple ircds from the same directory you sometimes get
weird messages otherwise (not that we really support such a thing
but i use it while dev'ing).
2021-03-06 18:55:10 +01:00
Bram Matthys 94fea88319 CR+LF->LF conversion for help.nl.conf.
[skip ci]
2021-02-28 07:54:33 +01:00
Bram Matthys dc40d27cd8 Move set::anti-flood::unknown-flood-* to set::anti-flood::handshake-data-flood
which is a new block, documented at:
https://www.unrealircd.org/docs/Set_block#set::anti-flood::handshake-data-flood
The reason for this is better naming and allowing to tweak ban-action.
2021-02-28 07:52:33 +01:00
Bram Matthys 94b8f6575e Just some code cleanup (variable renaming) in tkldb, nothing more...
Make it consist tkldb/TKLDB instead of still some tkl_db/TKL_DB.
2021-02-11 08:19:33 +01:00
Bram Matthys 9e82f13c54 Fix bug in tkldb if ircd is rehashed every <300 secs it would never save.
Not reported by anyone, but yeah.. who knows there is someone out there
that does this :D.
Also make it work the same like channeldb by spreading the event.
2021-02-11 08:16:03 +01:00
Bram Matthys f1e3b7dcdf Tweak channeldb saving to be further apart from tkldb saving. 2021-02-11 08:02:58 +01:00
Bram Matthys 06d90a9d46 Behave better when multiple HOOKTYPE_RAWPACKET_IN modules are active.
If a module returns 0 ("UnrealIRCd please do not process this packet")
then don't call the next module in line (also because that one might
then change the return value to something different, which is bad).
2021-02-10 14:24:17 +01:00
Bram Matthys 25f8b8e4c7 Remove unnecessary include (was merged in sys.h a while back) 2021-02-10 14:22:30 +01:00
westor eb76ae7c67 Fix nocodes error message: tell user it blocks color also (#131) 2021-02-06 07:45:27 +01:00
k4bek4be b22e1c1a43 Fix call to HOOKTYPE_UMODE_CHANGE in SVSMODE
Was accidentally called with parameter being source (services, often nickserv) instead of the target user
2021-02-06 07:44:31 +01:00
Bram Matthys c71214cefe Rename nvplist functions to match the rest, fix resource leak,
and move the functions to list.c where they belong.
nvplist_add()		-> add_nvplist()
nvplist_add_fmt()	-> add_fmt_nvplist()
(new)			-> free_nvplist
2021-02-02 18:39:17 +01:00
Bram Matthys d4e0ee9431 *NIX: Bump default MAXCONNECTIONS from 8192 to 16384.
That is, when in "auto" mode, which is like for 99% of the users.
NOTE: the sytem may still limit the actual number of FD's to
a lower value, depending on the value of "ulimit -n -H".
2021-02-01 13:27:08 +01:00
Bram Matthys d84c820d5a Some text changes
[skip ci]
2021-01-31 19:47:01 +01:00
Bram Matthys 9d85b112dc Fix typo
[skip ci]
2021-01-31 18:56:18 +01:00
Bram Matthys 1baf5f9f7d Show reputation score and some other info in "Client connecting"
notices to IRCOps and in ircd.log.
See the release notes for more details.

Module coders:
You can use HOOKTYPE_CONNECT_EXTINFO to add your own additional
information as well. See get_connect_extinfo() for inspiration.
Use nvplist_add() or nvplist_add_fmt() to easily add your info
to the list.

Module coders II:
Small note: this moves the sending of the far connect notice
to /under/ HOOKTYPE_REMOTE_CONNECT instead of /above/.
2021-01-31 18:30:49 +01:00
Bram Matthys 82da314cf4 Dev docs: document svid better
[skip ci]
2021-01-29 19:12:51 +01:00
PeGaSuS e90d661e8d Fixed typo in ELINE example flags, from f to F (spamfilter) (#130) 2021-01-29 19:11:36 +01:00
Bram Matthys a6da4a5823 Small text fix on Windows for unrealsvc.exe usage instructions.
The command is 'unrealsvc' and not 'unreal'.
Also update copyright a bit since I have at least been updating
this file since 2006 (e679a6760b).
2021-01-27 17:11:17 +01:00
Bram Matthys b65584226c win_log(): avoid double LF in win_log() caused by previous commit. 2021-01-23 12:27:43 +01:00
Bram Matthys 9204939a7f Windows: improve logging on-boot, especially when running as a service.
When booting no log files are open yet as we have not parsed any log { }
entries yet. On *NIX we log to stderr during that stage.
On Windows it varies: when running in GUI mode we save the log to a
buffer and display it after booting in a dialog.
When running as a service on Windows we previously wrote SOME entries
to service.log, but other entries were not logged or shown anywhere.

This makes both GUI and Service-mode on windows log all ircd_log()
calls with LOG_ERROR, instead of only config_status(), config_warn()
and config_error() messages.

This also removes config_progress() which isn't used by anything.

Oh, and it also fixes a memory leak in the Windows boot code, a leak
that nobody would have noticed anyway, but still.
2021-01-23 12:22:48 +01:00
Bram Matthys 3a922d6ed5 Disable handshake delay for users that are exempt from blacklist checking.
The handshake delay exists so results from DNSBL's can be checked before
the user is fully online. Whenever someone is exempt from DNSBL checking
it serves no purpose, so we mark it that the user has no handshake delay.
This will speed up connecting by up to 2 seconds (by default).
Also updated WebIRC example to suggest this now:
https://www.unrealircd.org/docs/WebIRC_block#UnrealIRCd-side
2021-01-17 08:25:14 +01:00
Bram Matthys cd967a6ea6 Always exempt 127.* from gline, kline, etc.
The exempted ban types are only ones that will affect other connections as well,
such as gline, and/but not policy decissions such as bypassing qlines or maxperip.
Currently the list is: gline, kline, gzline, zline, shun, blacklist,
                       connect-flood, unknown-data-flood.
Suggested by PeGaSuS and others in https://bugs.unrealircd.org/view.php?id=5806
2021-01-17 08:06:23 +01:00
Bram Matthys 5034c2306b Fix "./unrealircd upgrade" so it actually works with GPG.
And if it is actually used/installed then make it a little bit
harder to bypass the case where the digitale signature does not match.
And yes, the bypass option does exist because in the future we
may have a different signing key. Who knows from what old version
people may upgrade years from now, after all.
2021-01-10 18:27:33 +01:00
Bram Matthys 0fd9c2ee6f Add doc/KEYS which contains the public key(s) used to sign UnrealIRCd releases 2021-01-10 16:26:22 +01:00
Bram Matthys 0e125abc36 New: "./unrealircd upgrade" to upgrade to latest UnrealIRCd release. 2021-01-10 16:22:33 +01:00
Bram Matthys 011ebf3ce7 Fix for previous. "Channel joinfloodflood" -> "Channel joinflood" :D 2021-01-10 08:05:53 +01:00
Bram Matthys ebed68f636 Channel mode +f source code cleanup 2021-01-10 07:55:56 +01:00
Bram Matthys f03f5bd974 Bump version to 5.0.9-git 2021-01-10 07:45:44 +01:00
Bram Matthys 380e039d95 *** UnrealIRCd 5.0.8 *** 2021-01-08 15:32:55 +01:00
Bram Matthys d558ea7ef0 Update release notes
[skip ci]
2021-01-08 15:15:44 +01:00
Bram Matthys 315f2ba4a9 Mention the FAQ URL if a link is rejected due to incorrect clock. 2021-01-04 13:23:00 +01:00
Bram Matthys 9377b66754 UnrealIRCd 4 is no longer supported
[skip ci]
2021-01-01 21:05:27 +01:00
Bram Matthys 646bdbb872 Allow ! in extended server bans, such as /GLINE ~G:!tls-users.
Previously it rejected ! for all type of *LINES to avoid users
making the mistake of banning nick!user@host in a *LINE.
Note that for non-extended-server-bans the ! is still forbidden.
2021-01-01 18:43:24 +01:00
Bram Matthys fa15ec1bec Add default security-group "tls-users" and "tls-and-known-users" 2021-01-01 18:42:27 +01:00
Bram Matthys b383197ae6 UnrealIRCd 4 no longer supported. 2020-12-31 14:27:10 +01:00
Bram Matthys 99defea611 ** UnrealIRCd 5.0.8-rc1 ** 2020-12-30 14:14:33 +01:00
Bram Matthys 5e068a2f28 Add symlink 'source' in the installdir to the UnrealIRCd source.
Useful for scripting purposes.
2020-12-30 13:44:50 +01:00
Bram Matthys 2f7b73fe10 Fix Windows build tests
[skip ci]
2020-12-30 13:16:24 +01:00
Bram Matthys 53d23038e5 Support for security groups and new +b ~G:unknown-users:
* There are two security groups by default: known-users and unknown-users.
  See https://www.unrealircd.org/docs/Security-group_block
* New extended ban ~G:securitygroupname, with the typical usage being
  MODE #chan +b ~G:unknown-users, which will ban all users from the
  channel that are not identified to services and have a reputation
  score below 25.
2020-12-30 12:42:56 +01:00
Bram Matthys f45a3a912f Make the binary print out a helpful message pointing to the script,
in case someone does like 'bin/unrealircd mkpasswd' or something.
2020-12-29 15:07:28 +01:00
Bram Matthys 04a45e8b83 Fix targetfloodprot module not exempting U-Lines (only matters if not +o).
It is highly recommended that services pseudo users all have +o since
there are likely many places where ULines don't bypass a restriction while
opers do. But still, this particular issue has been fixed, it caused
unexplained loss of messages which looked rather mysterious.
Reported by severinmueller in https://bugs.unrealircd.org/view.php?id=5799
2020-12-29 12:44:54 +01:00
Bram Matthys fc159fd131 Change set::modes-on-oper in example confs to +xws
Previously it was +xgws which was confusing since we don't have a +g
Reported by PeGaSuS.
2020-12-27 18:39:23 +01:00
Bram Matthys fff989c46e Make windows compile again by dropping const stuff added 2 commits ago
in reputation commit. Not important anyway.
2020-12-16 15:59:30 +01:00
Bram Matthys b2ceb9c825 Fix warning about certificate expiry appearing every 43 seconds
rather than twice a day. Reported by PeGaSuS in
https://bugs.unrealircd.org/view.php?id=5797
2020-12-16 15:40:02 +01:00
Bram Matthys 9d88bb6fe9 Add /REPUTATION #channel and /REPUTATION <NN
The reputation command (IRCOp-only) has been extended to make it
easier to look for potential troublemakers:
* ```REPUTATION Nick``` shows reputation about the nick name
* ```REPUTATION IP``` shows reputation about the IP address
* ```REPUTATION #channel``` lists users in channel with their reputation score
* ```REPUTATION <NN``` lists users with reputation scores below value NN
2020-12-06 16:37:31 +01:00
Bram Matthys fd41806079 Update release notes a bit (interim update only)
[skip ci]
2020-12-06 16:08:09 +01:00
Bram Matthys 4b53b02299 Add set::max-stats-matches which limits output such as '/STATS gline'
to the specified number of lines. This defaults to 1000.
This will prevent IRCOps from being flooded off ("Max SendQ exceeded")
if they list all *LINES and there are thousands.
In the newly introduced error message, after too many matches,
we also kindly point out to use filters like '/STATS gline +m *.nl'
2020-12-06 15:50:28 +01:00
Bram Matthys 8c04036fd8 Send ERR_ALREADYREGISTRED for USER and PASS rather than ERR_NOTFORUSERS.
Reported by Koragg in https://bugs.unrealircd.org/view.php?id=5766
2020-12-06 09:46:12 +01:00
Bram Matthys adc2a9774f Mention Q-line reason in server notices. Suggested by ivanp in
https://bugs.unrealircd.org/view.php?id=5774
2020-12-06 09:19:11 +01:00
Bram Matthys ece2dc9c12 Remove redundant output on './unrealircd version'. 2020-12-05 16:23:45 +01:00
Bram Matthys d573f77b10 API doc tweak
[skip ci]
2020-12-04 10:10:50 +01:00
Bram Matthys 7002139fad Add self-test to module manager for those who rm -rf their source directory. 2020-11-28 11:31:31 +01:00
Bram Matthys 7a3876e7b2 Doxygen U5 API docs: add examples to sendto_one(), sendto_channel()
and sendnumeric().
2020-11-24 19:27:22 +01:00
Bram Matthys f494707a47 Doxygen: document list_for_each_entry with examples and
add 'channels' to the page as well.
2020-11-23 10:25:49 +01:00
Bram Matthys 10e01aee0a Doxygen U5 API docs: document find functions and send API
See https://www.unrealircd.org/api/5/
And more specific: https://www.unrealircd.org/api/5/modules.html
2020-11-23 08:55:45 +01:00
Bram Matthys ca84a5cfc4 Leave 5.0.7 release notes for historic purposes.
Or: whoops.. shouldn't have deleted that.
[skip ci]
2020-11-22 18:40:14 +01:00
Bram Matthys 180653dce5 Set version to 5.0.8-git 2020-11-22 18:37:37 +01:00
Bram Matthys e15ea8f34d Mention EOL date of U4 in SECURITY.md for clarity. 2020-11-22 18:34:31 +01:00
Bram Matthys 836a3000bd Update some comments in ircd.c, nothing fancy. 2020-11-22 18:34:20 +01:00
Bram Matthys f808e56ffb Fix counting clients twice. Reported by Le_Coyote. 2020-11-22 16:03:42 +01:00
Bram Matthys bde91bcc5c Finish Hook API doxygen docs, ~100% done now. 2020-11-22 12:26:30 +01:00
Bram Matthys 6dcecd7866 Update doxygen index
[skip ci]
2020-11-21 19:13:31 +01:00
Bram Matthys fcb1767500 Update module API doxygen docs: the hook docs are now 80% done. 2020-11-21 19:08:17 +01:00
Bram Matthys 8372224c01 Add vertical spacing to function prototypes
[skip ci]
2020-11-21 18:10:29 +01:00
Bram Matthys f8343c2e2a Move s_die definition to h.h. 2020-11-18 07:47:26 +01:00
Bram Matthys 8d7e25e50e Make get_file_time() and get_file_size() available via h.h.
And move those 2 functions plus file_exists() to misc.c.
2020-11-16 18:21:27 +01:00
Bram Matthys 20b2975a2c Hmm.. genlinkblock is not very useful without this. 2020-11-16 18:14:52 +01:00
Bram Matthys ecabef1654 Fix whitespace in ./Config
Indent properly and use tabs, not spaces.
Hopefully not breaking anything in the process....
2020-11-13 19:29:16 +01:00
Bram Matthys e48cf87d52 Some more explanation on certificate generation if you are first installing.
Users who already have an SSL certificate won't be bothered by this,
just like before.
2020-11-13 19:17:54 +01:00
Bram Matthys 8720c846a1 And some more hook documentation... 2020-11-08 18:48:11 +01:00
Bram Matthys 8f7e40a6dc Compile fix for gcc with previous commits. 2020-11-08 16:42:39 +01:00
Bram Matthys c369551721 Commit first 40% of Hook API Documentation in doxygen.
The remaining 60% consists of placeholders at the moment.

Note: if you are running git then don't try to live-reload these
changes, ircd must restart.
2020-11-08 16:16:59 +01:00
Bram Matthys 0ae05dcd60 Remove unused code in secureonly. This isn't used since the +z/+Z split. 2020-11-08 10:02:27 +01:00
Bram Matthys 132b44219d Create SECURITY.md 2020-11-01 14:57:21 +01:00
k4bek4be da6ccb639d Fix a warning typo (#126)
Deprecated warning mentions set::oficial-channels, which should be set::official-channels
2020-10-22 19:37:41 +02:00
James Park-Watt 45fd0625e5 Fixed a typo in Config script (#127)
Config script referenced conf/tls/server.crt.pem in an informational message.
It should be conf/tls/server.cert.pem
2020-10-22 19:36:53 +02:00
Robert Scheck 831737f13e Exit with a successful return code upon receipt of SIGTERM (#125) 2020-10-20 07:26:57 +02:00
Robert Scheck ebe0a43828 Add $(DESTDIR) support for 'make install' (#124)
When packaging UnrealIRCd as RPM, 'make install' needs to install
the files into $RPM_BUILD_ROOT rather into '/'. Just changing the
paths via ./Config or ./configure does not fit, because otherwise
UnrealIRCd is finally looking for $RPM_BUILD_ROOT/etc/unrealircd/
rather /etc/unrealircd/. It's fully backwards-compatible, because
normally $DESTDIR is not being passed.
2020-10-19 17:12:46 +02:00
Bram Matthys 75efe02040 And add config check for X509_get0_notAfter().
For our Ubuntu 16 friends.
2020-10-11 15:56:06 +02:00
Bram Matthys b3510c5da8 Fix for previous commit with OpenSSL <1.1.0 (Debian 8, Ubuntu 16, ..)
Thank you BuildBot.

This means on older OpenSSL's we are not going to have certificate
expiry checks. Those OpenSSL versions were deprecated by the OpenSSL
team itself, so yeah then you will miss out a few things.
2020-10-11 15:39:27 +02:00
Bram Matthys 6778b3e26d Warn when SSL/TLS certificate is expired or expires soon (<7d).
Since an expired certificate usually means that users cannot connect
we will actively warn all IRCOps about this situation twice a day.
2020-10-11 15:00:09 +02:00
Bram Matthys 8619d1e763 Add optional allow::options::reject-on-auth-failure, as requested
by armyn in https://bugs.unrealircd.org/view.php?id=5769.

The default behavior in 5.x is to continue matching:
allow { ip *@*; class clients; maxperip 2; }
allow { ip *@*; password "iwantmore"; class clients; maxperip 10; }
This so users who provide a password get additional rights,
such as a higher maxperip or a different class, etc.
If the user connects without a password then we simply continue
to the next block and use the general block with only 2 maxperip.

However, some people want to use passwords to keep other users out.
That is entirely understandable as it is an 'allow block' after all.
For example:
allow { ip *@*; class clients; maxperip 2; }
allow { ip *@*.nl; password "tehdutch"; class clients; maxperip 2; options { reject-on-auth-failure; } }
In this case anyone without the correct password will be rejected access.
2020-10-11 09:24:11 +02:00
Bram Matthys 00fa88daee Remove special code for '/who nick' and replace it with generic code
if someone searches explicitly on a nick name and that user exists.

This fixes a bug where doing '/who name a' would return only 1 result
if 'name' exists as a nick, even though multiple people with the
same account 'name' are online and visible to the user, as
reported in https://bugs.unrealircd.org/view.php?id=5761 by Koragg.
2020-10-11 08:37:22 +02:00
Bram Matthys 9c85cd5bc6 *** UnrealIRCd 5.0.7 release *** 2020-10-10 15:04:18 +02:00
Stanley 893dd84aaf Added help.nl.conf (Dutch), contribution from Stanley (#121)
Co-authored-by: DjSxX <46792280+DjSxX@users.noreply.github.com>
2020-09-30 17:49:01 +02:00
Bram Matthys f2d49eed04 Reputation used the score of the WEBIRC IP rather than the end-user IP.
This resulted in high reputation scores for all WEBIRC users.
Reported by DeviL.
2020-09-28 17:41:37 +02:00
Bram Matthys 5286edc0ef Make ./Config import settings from 5.0.6. 2020-09-28 10:23:56 +02:00
Bram Matthys 2d90245626 ** UnrealIRCd 5.0.7-rc1 ** 2020-09-28 10:04:06 +02:00
Bram Matthys 35ee1eb28a Some more small release note changes
[skip ci]
2020-09-28 09:13:48 +02:00
Bram Matthys f424a0560a Update release notes 2020-09-28 09:08:17 +02:00
Bram Matthys e62bad9924 Make it "End of /OPERMOTD command" at end of OPERMOTD.
Reported by bitmaster in https://bugs.unrealircd.org/view.php?id=3895
2020-09-27 20:21:55 +02:00
Bram Matthys b4b7908612 Fix '/STATS b' and '/STATS badword' not working.
Reported by CoreDuo in https://bugs.unrealircd.org/view.php?id=4722
2020-09-27 18:20:34 +02:00
Bram Matthys b01cbff3e1 Add message tags (such as server-time) to PONG.
Requested by GaMbiTo- and KiwiIRC authors in
https://bugs.unrealircd.org/view.php?id=5758
2020-09-27 16:57:28 +02:00
Bram Matthys 42da15bb6e Minor release note updates
[skip ci]
2020-09-27 12:27:47 +02:00
Bram Matthys 61e8c8d851 Fix labeled-response causing two lines in one websocket frame.
This goes against our guarantee of 1 IRC line = 1 websocket frame.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5708
2020-09-27 12:17:02 +02:00
Bram Matthys 9002c92062 Set version to 5.0.7-git and start on some early release notes. 2020-09-26 14:28:41 +02:00
Bram Matthys 57d0efbc58 Recode textbans so voiced users cannot bypass them.
Reported by Adanaran in https://bugs.unrealircd.org/view.php?id=5698

Although voiced users normally bypass bans, it is not really logical
for them to bypass filtering of banned words, since that is normally
a policy decission by channel management. So +v will not bypass it.

1) The problem is that this is enforced at the ban layer API.  The extban
routines, textban in this case, are not called when the user is voiced,
because voiced users bypass bans.  If we would change that in the ban API
then voiced users can also no longer talk through (=bypass) regular +b or
other extended +b such as ~a (account) etc.

2) I figured we would then make +T not use the ban API but the
can_send_to_channel hook instead.  However, then you have to do manual
looping through bans and such, it's rather ugly from a coding point of view,
and you risk "missing" things like ~T stacked with ~t.

3) Then I went back to look if the ban API could be changed by having the
textban module set a flag and then the ban api would call that specific
module still for voiced users.  While starting on that, unfortunately things
(variables, arguments) cascaded quickly into having to change all kinds of
underlying functions that would break the module API.

4) I then went back to option 2 and implemented it, trying to deal
   with all its caveats.
2020-09-26 13:43:46 +02:00
Bram Matthys 5320d54e8e Disallow ~T with any action extban, eg ~n:~T:censor:xyz.
We still allow timed bans though, eg ~t:1:~T:block:*whatever*
2020-09-26 12:49:58 +02:00
Bram Matthys 3701ce9a43 Document existing extended ban options. 2020-09-26 12:49:44 +02:00
Bram Matthys 02f0d059c5 hideserver::disable-links did did not disable /LINKS.
Reported by Apocalypse32 in https://bugs.unrealircd.org/view.php?id=5753
Probably since 5.0.0, due to my mass command api changes.
2020-09-26 12:16:17 +02:00
Bram Matthys a02f94f867 Clean up WHOX a bit and fix WHO hiding yourself if not in any channels,
reported by Koragg in https://bugs.unrealircd.org/view.php?id=5757.

This changes the following in the code of who_global():
1) We initialize all the 'marked' users to zero at the beginning,
   and remove the previously unmarking in the bottom loop that
   shouldn't have anything to do with it. Now there's "no way"
   to screw up initialization of marked users.
2) Check for marked users in the bottom loop.
3) Thanks to #1 and #2 we can now easily add simple logic like
   not skipping when client==acptr.
4) Similarly, we can remove checks for +i/-i in who_common_channel(),
   and as a bonus we will list common channel results altogether
   in the WHO result, rather than first +i on common and then at the
   very end the remaining -i (which may also be in common channels).

All in all, the code is now more like how I would write it, rather
than the original. It's now harder to screw things up if you change
some visibility or searching logic here or there.
2020-09-26 08:43:51 +02:00
Bram Matthys 578f8f248c Warn user when undocumented set::ssl::dh / set::tls::dh is present.
That option specified a Diffie Hellman parameter file. Since
UnrealIRCd 5.0.0 we no longer process this option.
This option has never been documented in the wiki docs.
We prefer and use ECDHE/EECDH with SSL_OP_SINGLE_ECDH_USE since 2015
to provide Forward Secrecy in SSL/TLS. And indeed, by now in 2020,
any properly maintained software uses it and old DH(E) usage has
fallen to less than 1%.

What this patch does is remove the unused code (since Dec 2019) and
show a warning if you have a ::dh config directive, so that at least
you are informed that it is unused/ignored. Since it was undocumented
it probably hardly affects anyone, but still, it is proper to inform.
2020-09-12 09:38:17 +02:00
Bram Matthys fea2522067 Fix memory leak on './unrealircd reloadtls' / '/REHASH -tls'
Reported by NoXPhasma in https://bugs.unrealircd.org/view.php?id=5745
2020-08-29 15:05:41 +02:00
Bram Matthys 8bed1cb42e Channel mode +l is now limited between 1 and 1 billion, so positive
numbers only. This makes things more logical for end-users.
This fixes https://bugs.unrealircd.org/view.php?id=5746,
bug reported by KindOne.
The same issue was also fixed by previous commit, but still:
it is better to limit things to a narrower range, this so you
don't get different behavior depending on the CPU a server uses.
2020-08-29 14:40:09 +02:00
Bram Matthys 10ecbffcaa Fix irc*printf handling of certain negative numbers 2020-08-29 14:13:58 +02:00
Moses f5132176b7 Baltics nickchars support (#119)
This adds support for latvian-utf8, estonian-utf8 and lithuanian-utf8
in set::allowed-nickchars. Patch from moseslecce.

Co-authored-by: David Lecce <3292014+davidlecce@users.noreply.github.com>
2020-08-26 07:17:07 +02:00
Bram Matthys db79823578 If no set::modes-on-connect is present we now default to +ixw.
This should be rare, since modes-on-connect is in the example
configuration file with +ixw since 2003, but still... just in
case someone completely misses the modes-on-connect configuration
item, then make sure that we have a safe and good default.
2020-07-25 19:22:50 +02:00
Bram Matthys 13fff82a56 Update version in Windows manifest 2020-07-15 19:55:19 +02:00
Bram Matthys 145ffb6d37 Fix "HISTORY" before 5.0.6 release. 2020-07-15 14:05:27 +02:00
Bram Matthys 422244a2e5 ** UnrealIRCd 5.0.6 ** 2020-07-15 13:47:49 +02:00
Bram Matthys f9e8df1972 Update release notes, add header.
[skip ci]
2020-07-15 13:44:47 +02:00
Bram Matthys dd57e08b18 UnrealIRCd 5.0.6 release notes
[skip ci]
2020-07-15 13:42:21 +02:00
Bram Matthys 1a349d041d Start writing release notes
[skip ci]
2020-07-15 08:52:41 +02:00
Bram Matthys 24e90c8955 History playback on join was not limited.
set::history::channel::playback-on-join::lines and
set::history::channel::playback-on-join::time were ignored,
the limit in the +H channel mode was used instead.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5707
2020-07-15 08:24:45 +02:00
k4bek4be c81b4b9d9e Call HOOKTYPE_ACCOUNT_LOGIN on UID message too (#112)
Module coders: this will also fire on server-syncs. If you want to skip
such events then check for IsSynched(client->srvptr)
2020-07-14 19:51:46 +02:00
Bram Matthys 5c566053d4 Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2020-07-14 19:33:52 +02:00
Bram Matthys 3894aeba97 Fix double batch on HISTORY #channel.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5709
2020-07-14 19:25:07 +02:00
k4bek4be 812d5bcc73 Fix sending RPL_LOGGEDIN on logout. (#111)
Move all client login notifications into a single place (the SASL module).
Reported by westor in https://bugs.unrealircd.org/view.php?id=5688
2020-07-14 18:39:10 +02:00
Bram Matthys 70496acfbe Fix spamfilter with tempshun action: was not blocking the message.
The tempshun was applied, but the 'trigger' message was let through.
Reported by armyn in https://bugs.unrealircd.org/view.php?id=5723
2020-07-14 08:30:29 +02:00
Bram Matthys ca6630a2fb Fix "called a function you should not call" server linking error that
happens if all of the following are true:
1) You use link::outgoing::tls-options (or ssl-options)
2) You do a REHASH -tls (or REHASH -ssl)
3) You do NOT do a regular REHASH
4) You try to link to the server in such a link block (outgoing!)

In other words: the problem may happen if you try to link after
a Let's Encrypt cert renewal, unless there has been a regular
REHASH between that and the outgoing linking attempt.

Reported by k4be and Le_Coyoto in https://bugs.unrealircd.org/view.php?id=5607
2020-06-26 15:11:01 +02:00
Bram Matthys faeb644b82 Require set::who-limit to be 1 or higher.
Confusion reported by armyn in https://bugs.unrealircd.org/view.php?id=5717
2020-06-26 07:23:47 +02:00
Bram Matthys b23e64cb2e Fix crash if configuration file contains empty set::cloak-method. 2020-06-25 07:29:05 +02:00
Bram Matthys 7901d61e92 Add Spanish help.conf (conf/help/help.es.conf). 2020-06-12 12:10:52 +02:00
Bram Matthys dcb89f933e Fix problem with simultaneous use of websocket and labeled-response,
depending on the module load order. Reported by k4be.
Changes:
* Websocket hooks:
  * Input should be run first
  * Output should be run last
* Labeled-response also had various hook priorities wrong
  * Pre command should be run near-first
  * Post command should be run near-last
  * Close connection (does the flush) should be run near-last
  * Packet should be run near-last
2020-06-10 08:21:20 +02:00
Bram Matthys 53bc8fdf5b Add BOT=B to 005 to indicate the bot user mode.
Suggested in https://github.com/ircv3/ircv3-ideas/issues/43
2020-06-08 08:49:17 +02:00
westor 0e3cfc68bb Fix to display the TLSversion correct on connect (#113)
Previously it didn't display correctly on server notice the TLSv* version on local connection.
Before: TLS_CHACHA20_POLY1305_SHA256
After: TLSv1.3-TLS_CHACHA20_POLY1305_SHA256
2020-06-07 16:13:26 +02:00
Bram Matthys d1d0237f2d ** UnrealIRCd 5.0.5.1 ** 2020-05-29 08:38:20 +02:00
Bram Matthys 3be50cb8d4 Temp quick fix for minor issue as well (#5688).
Proper PR from k4be will be done post-5.0.5.1.
2020-05-29 08:35:10 +02:00
Bram Matthys d2efe01d9b Revert "UTF8 support in spamfilter. We now ship with PCRE2 10.34 and require this"
This reverts commit bc70882bd3.
2020-05-29 08:25:47 +02:00
Bram Matthys 7b211efeb7 Fix NICK change showing up twice with SVSNICK.
Reported by westor in https://bugs.unrealircd.org/view.php?id=5687
2020-05-28 00:31:59 +02:00
Bram Matthys 8213eca7d6 Update release notes 2020-05-26 17:50:48 +02:00
Bram Matthys 9c42c20b3c *** UnrealIRCd 5.0.5 *** (will be published tomorrow) 2020-05-26 17:45:53 +02:00
Bram Matthys df5fd4e537 Adjust default set::anti-flood::target-flood rates to:
set {
    anti-flood {
        target-flood {
            channel-privmsg 45:5;
            channel-notice 15:5;
            channel-tagmsg 15:5;
            private-privmsg 30:5;
            private-notice 10:5;
            private-tagmsg 10:5;
        };
    };
};

Max 45 messages in 5 seconds means max 540 messages per minute,
with a peak of (surprise) 45 messages per 5 seconds...
That should be sufficient for every legit channel, right?
How can you chat if you get more than 9msgs/sec for 5 seconds straight?
Maybe I am even too liberal with these limits?

NOTICE and TAGMSG get lower limits because they are far less used
and have other concerns (eg: ringing a bell for NOTICE).

The default limits may be changed in later versions of UnrealIRCd
based on feedback and more insight in (big) channel rates.
2020-05-25 17:03:36 +02:00
Bram Matthys f56ac9384b Fix for previous... -grin-
Fix for 640caf09a1
2020-05-25 15:09:59 +02:00
Bram Matthys 640caf09a1 Fix silly bug in +f if you lowered the :seconds then it always became :7.
Eg: +f [5m]:30 and then a while later +f [5m]:20 always became [5m]:7.
This due to re-using the same counter in a loop.
2020-05-25 15:00:16 +02:00
Bram Matthys 3acf71458d Module coders: Add CAP_INVERT option. Patch from k4be. 2020-05-25 14:17:22 +02:00
Bram Matthys 15a5905d1b Hardening: add -fcf-protection (Control Flow Enforcement)
This provides ROP hardening, which is actually quite nice.
However, it requires CPU hardware support, which is pretty
non existant at the moment. So, right now, on most systems
this option will do nothing.
2020-05-25 08:21:42 +02:00
Bram Matthys e50b599b2e Hardening: add -fstack-clash-protection
This hardening option is likely not very useful but shouldn't hurt either.
2020-05-25 07:41:39 +02:00
Bram Matthys bf104160d6 Update Windows build to use newest LibreSSL.
[skip ci]
2020-05-24 19:35:42 +02:00
Bram Matthys dff71b9901 Fix Windows build. Yeah, slashes are important. 2020-05-24 19:28:25 +02:00
Bram Matthys efe4fab8a3 Revert "Update PCRE2 to 10.35 (09-May-2020)."
This reverts commit a8e3b2fe59
due to compile issues on Ubuntu 20.04. Bug filed upstream as
https://bugs.exim.org/show_bug.cgi?id=2578
2020-05-24 19:10:58 +02:00
Bram Matthys 740b74df0c Properly export mtaghandlers for clienttagdeny.
[skip ci]
2020-05-24 18:39:02 +02:00
Bram Matthys 60f143acfb Update curl-ca-bundle to Wed Jan 1 04:12:10 2020 GMT
[skip ci]
2020-05-24 17:37:16 +02:00
Bram Matthys a8e3b2fe59 Update PCRE2 to 10.35 (09-May-2020).
The minimum version required is kept at 10.34.
2020-05-24 17:31:59 +02:00
Bram Matthys 30acfcc8c5 UnrealIRCd 5.0.5-rc1 (internal RC, will not be published on site) 2020-05-18 19:28:28 +02:00
Bram Matthys 3bb044dc1c Update a comment
[skip ci]
2020-05-18 15:49:39 +02:00
Bram Matthys af51f6e2b2 Fix ELINE helpop docs regarding antimixedutf8. 2020-05-18 15:29:08 +02:00
Bram Matthys c98eb7c54e Get rid of }; in example and other shipped .conf files.
This is 1,5 years after 459a55245a
and we're on a new series too (5.0), so it was about time.

And YES you may still use }; if you want to. There are no
plans to deprecate or warn about it.
We simply ship with } in the shipped configs because it is
more logical that both { and } don't require a ; rather
than only { not requiring it.
2020-05-18 14:06:57 +02:00
Bram Matthys 5712f0f5d6 Use example.org domain everywhere in example*.conf and help*.conf.
And similarly, use ExampleNET instead of MYNet.
2020-05-18 13:44:52 +02:00
Bram Matthys e7725a3bf2 Reorder things a bit in draft release notes.
[skip ci]
2020-05-17 18:40:12 +02:00
Bram Matthys 528783a2fd Now that we have clienttags, fix this FIXME.
Also, remove unnecessary comment about calling lr_post_command() with
the last two arguments being NULL. We don't use these two variables
inside lr_post_command() after this change anyway.
2020-05-17 08:49:58 +02:00
k4bek4be 0aa5fb6e7c Add CLIENTTAGDENY module. (#108)
It implements the current version of CLIENTTAGDENY isupport token, as defined by IRCv3.
2020-05-16 10:04:33 +02:00
k4bek4be d533483a43 Support both +typing and +draft/typing mtags. (#109) 2020-05-16 09:57:23 +02:00
Bram Matthys 81c7e6ca05 Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2020-05-14 09:15:24 +02:00
Bram Matthys 941b745be2 Give an error when trying to place an *LINE that already exists.
Then the oper may decide if the original entry should indeed be
removed and re-added, or if (s)he should not touch it. These are
usually done by mistake anyway.
Updating existing entries by end-users was never intended and did
not work properly anyway (see bug comments). Issue reported by
Le_Coyote and armyn in https://bugs.unrealircd.org/view.php?id=5603
2020-05-14 09:13:49 +02:00
k4bek4be ec39d3c15b Remove unused message tag handlers on rehash (#106) 2020-05-13 19:19:06 +02:00
Bram Matthys 7a4832d337 Fix missing ERROR when using a @label, reported by k4be.
This had to do with the queued packet (in the labeled-response module)
not being sent because the client was freed before the
post packet hook was called.
2020-05-11 19:18:41 +02:00
Bram Matthys 893cc2db99 Update draft release notes a bit with the changes of past few days.
[skip ci]
2020-05-09 12:20:50 +02:00
Bram Matthys 8d2e05f5ef Fix crash when combining +P with a 3rd party module, or actually
any parameter channel mode module loaded after channeldb.
Reported by GaMbiTo, with help from PeGaSuS, Gottem and k4be
in https://bugs.unrealircd.org/view.php?id=5669

It is not safe to call channel mode parameter functions when
unloading modules. Makes sense I think.

We now no longer write the db on rehash, which is something i
didn't like anyway (wasted CPU cycles). The problem was that
one could not just scratch the write db call, as otherwise if
someone rehashes every minute would cause the db never to
be saved. This is because on each rehash the event to write
the db gets rescheduled to +5 minutes in the future.
We now work around that in the same way as connthrottle does.
Obviously it would be better to make the event system itself
deal with this, but that is (way) too much for now.
2020-05-09 11:58:26 +02:00
Bram Matthys 4832559642 LoadPersistentLong() called the wrong function, always raising a warning/error. 2020-05-09 11:51:59 +02:00
Bram Matthys 606a35bed0 Fix crash when using deny link::rule with oversized argument.
Reported by moody in https://bugs.unrealircd.org/view.php?id=5667
2020-05-08 14:58:49 +02:00
Bram Matthys 6a3a2530b1 Fix echo-message not working for TAGMSG. Reported by k4be. 2020-05-08 11:12:48 +02:00
Bram Matthys ae9f06ebae Fix TAGMSG in the user-to-user case being delivered to clients with
an argument too many (" :"). Reported by k4be.
2020-05-08 11:09:31 +02:00
Bram Matthys 666d5631fe Send TAGMSG only to message-tags people. Duh. 2020-05-07 10:54:38 +02:00
Bram Matthys a80364f55a Use https:// rather than http:// in an example. 2020-05-06 18:08:28 +02:00
Bram Matthys 45624ff2ab Set TARGMAX= for TAGMSG to 1 (same setting as we have for NOTICE). 2020-05-06 16:51:05 +02:00
LeCoyote 8c2df61725 Improve antimixedutf8: detect CJK and other scripts (#105) 2020-05-06 12:39:00 +02:00
Bram Matthys 98930785e5 Copy-paste error which turned NOTICEs into PRIVMSGs. -grin- 2020-05-06 11:26:39 +02:00
Bram Matthys cf2eecb0d1 Add set::anti-flood::target-flood and +draft/typing to release notes.
Again, these are still early release notes drafts.
2020-05-06 11:12:46 +02:00
Bram Matthys bf0d00c2b9 Update makefile for Windows build 2020-05-06 11:11:04 +02:00
Bram Matthys 90485453b7 Load typing-indicator module by default (IRCv3 +draft/typing) 2020-05-06 10:56:03 +02:00
Bram Matthys 31d3af22e2 Don't make channel mode +f 't' and 'm' act on TAGMSG...
otherwise people get kicked just for typing :D

We may add a new +f type later on, if there is a need for it.
2020-05-06 10:53:13 +02:00
Bram Matthys a259227424 New feature set::anti-flood::target-flood, provided by targetfloodprot module.
This limits X per Y messages for targets, regardless of sender. See docs:
https://www.unrealircd.org/docs/Set_block#set%3A%3Aanti-flood%3A%3Atarget-flood
2020-05-06 10:43:26 +02:00
Bram Matthys 2a093bb150 Moved CheckNull() to individual set::anti-flood::xx tests and
HOOK_CONFIGTEST with CONFIG_SET_ANTI_FLOOD, rather than a generic
one before processing these. Needed for set::anti-flood::target-limit.
2020-05-06 10:28:37 +02:00
Bram Matthys b8d4cf7763 Actually call moddata_free_channel(channel);
This was a FIXME item that should have been addressed earlier.
We didn't use any MODDATATYPE_CHANNEL in the core up to now so
this was overlooked. We do use it from now on, though, and it
may very well have been used in 3rd party modules already.
2020-05-06 09:04:43 +02:00
Bram Matthys 4e3817b4d5 Initial version of set::anti-flood::target-flood 2020-05-05 20:27:53 +02:00
Bram Matthys 57f524cbed Support for +draft/typing
This is the work from May 3rd.. need to commit it so i can merge the
flood protection that is related to this...
The final implementation will still need tweaking before pushed.
[skip ci]
2020-05-05 20:16:56 +02:00
k4bek4be 331134649f Add Polish translation for help.conf and update the English one (#104)
In English helpop add ELINE and extended server bans, fix some typo's....
2020-05-03 13:33:04 +02:00
Bram Matthys 166a772951 Fix except ban without type not exempting gline due to wrong character
being used ('g' instead of 'G'). Reported by DeviL.
https://bugs.unrealircd.org/view.php?id=5555
2020-05-03 09:41:32 +02:00
Bram Matthys aba3c8e53f Fix set::who-limit documentation and make IRCOps exempt from this limit.
reported by patphobos in https://bugs.unrealircd.org/view.php?id=5657
2020-04-29 16:30:24 +02:00
Bram Matthys 9c10bca2a2 Some more release note updates.
[skip ci]
2020-04-26 16:13:18 +02:00
Bram Matthys 2c703eba6e Make it possible to restrict a command to identified users only, with
no connect-delay restriction. Also remove the 'disable' option since
it is unneeded. You now simply use:
set {
    restrict-commands {
        somecommand {
        }
    }
}
...and the command is disabled.
And you add exempt-identified or exempt-reputation-score if needed.

See https://www.unrealircd.org/docs/Set_block#set%3A%3Arestrict-commands

Note that this also changes some command blocking logic, so I hope
I made no mistake there... only testing will tell.
2020-04-26 16:04:26 +02:00
Bram Matthys f5b3328103 Some more release note updates
[skip ci]
2020-04-26 15:33:05 +02:00
Bram Matthys 616820e5d8 Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2020-04-26 15:29:48 +02:00
Bram Matthys a4345d6091 Write some early release notes for 5.0.5 (won't be released soon)
[skip ci]
2020-04-26 15:29:02 +02:00
delthas 0c3b8e5d28 Fix trailing space in RPL_NAMREPLY (#100) 2020-04-26 09:00:09 +02:00
Bram Matthys ef5df81917 Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2020-04-26 08:48:56 +02:00
Bram Matthys 097903a246 Anope aliases: remove helpserv. Reported by k4be. 2020-04-26 08:47:42 +02:00
LeCoyote 275dffcd6b French helpop: add missing chmode +D (#102) 2020-04-26 08:45:38 +02:00
Bram Matthys 12ad8003bb Update shipped lib to c-ares 1.16.0 (released 2020-03-13) 2020-04-25 18:39:52 +02:00
Bram Matthys edb0f16942 Make /INVITE bypass ~f:#forward:*!*@* bans. Suggested by Balthazar
in https://bugs.unrealircd.org/view.php?id=5634
2020-04-25 17:06:01 +02:00
Bram Matthys ca2ba56d82 Add is_invited(client, channel) function. 2020-04-25 17:01:41 +02:00
Bram Matthys 0902ed7a99 Fix channel mode +L redirecting even if joining with correct channel key.
Reported by Balthazar in https://bugs.unrealircd.org/view.php?id=5644
2020-04-25 16:43:32 +02:00
Bram Matthys 07d2a92acd Fix build tests. 2020-04-25 09:48:58 +02:00
Bram Matthys 7b7e1a6158 Skip TLS tests on 32 bit due to cipherscan issue (not important to
run on ubuntu 18.04 32-bit anyway since we run these tests on
ubuntu 18.04 64-bit already as well).
2020-04-25 09:41:09 +02:00
Bram Matthys 0c080b3982 Fix crash in tkldb on 32 bit systems. Reported by k4be.
Also, get rid of compiler warnings (we can use C99 types now).
2020-04-25 09:27:31 +02:00
Bram Matthys 29b691f9b6 At least do some parallel compiling by default (make -j4)
if there is no MAKE nor MAKEFLAGS already set.
2020-04-19 19:41:45 +02:00
Bram Matthys bc70882bd3 UTF8 support in spamfilter. We now ship with PCRE2 10.34 and require this
version or newer on the sytem, otherwise we fall back to shipped version.

This fixes https://bugs.unrealircd.org/view.php?id=5187 among others.
It means:
* Case insensitive matches work better in UTF8 now, such as extended Latin.
  For example, a spamfilter on "ę" now also matches "Ę", while previously
  it did not catch this.
* Other PCRE2 features such as https://www.pcre.org/current/doc/html/pcre2syntax.html#SEC5
  are now available. For example you can now set a spamfilter with the regex
  \p{Arabic} to block all Arabic script, or
  \p{Cyrillic} to block all Cyrillic script (such as Russian)
  Use these new tools with care, of course. Blocking an entire language,
  or script, is quite a drastic measure.

All of this was possible because of the new PCRE2_MATCH_INVALID_UTF
compile time option which was introduced in PCRE2 10.34.
This also means we now require at least that PCRE2 version so
everyone can benefit from this new spamfilter UTF8 feature.
Many systems come with older PCRE2 versions so this means we will
fall back to the shipped PCRE2 version in UnrealIRCd. This means
./Config will take a little longer to compile things.

Although there is no indication as of now, but if this feature would
break things heavily then it might get reverted or configurable.
This is also why it was added just after 5.0.4 release and not right
before it, it needs some heavy testing.
2020-04-19 17:45:38 +02:00
Bram Matthys 4d85e162aa Bump git version to 5.0.5-dev. 2020-04-19 17:42:43 +02:00
Bram Matthys a8a8196147 *** UnrealIRCd 5.0.4 *** 2020-04-19 14:14:03 +02:00
Bram Matthys 6b2d0c4b4b Update release notes a bit
[skip ci]
2020-04-19 09:31:47 +02:00
Bram Matthys 775fa47197 Fix crash of currently running IRCd when you are running ./Config.
Reported by k4be and others.
For the crash to occur a few specific things had to happen:
1) The system is missing the argon2 dev library (or it is too old)
   causing us to use the UnrealIRCd-shipped argon2 library.
2) You ran ./Config while there is an existing IRCd running
3) Now some argon2 hash is being checked (eg due to an OPER attempt)
4) Crash

A very similar crash happens (to a LOT more people) when you
run './unrealircd restart' to do the actual upgrade. In such
a case, the old IRCd crashed (the one that was actually supposed
to die anyway). The annoying thing was that the crash reporter
would kick in to report such a crash which was actually quite
harmless. This is actually the same crash as described earlier
so should be fixed as well now.
This variant was reported by Shillos and others.
2020-04-18 16:50:24 +02:00
Bram Matthys 5dda640864 Cipherscan profile for Ubuntu 16.04: uses slightly different order. 2020-04-18 14:46:24 +02:00
Bram Matthys f419a61f94 Ubuntu 20.04 needs this change in order to still allow you to enable
TLSv1.0 or TLSv1.1. Otherwise it is impossible to enable by the application.

We are still going to turn off TLSv1.0 and TLSv1.1 by the end of this year
by default. Ubuntu 20.04 is just a couple of months too early. See also
the various browsers who postponed disabling TLSv1.0/TLSv1.1.

Also, regardless of the above, we want the admins running the IRC server
be able to control this and not having such a breaking change be dependant
on some distro default settings.
2020-04-18 12:40:45 +02:00
Bram Matthys 498f65aaad Improve the error a little bit if unrealircd.conf is missing.
Remove the talk about 3.2.x and and give a bit more context before
providing the link to the docs (which was already there, but still).
2020-04-18 10:22:47 +02:00
Bram Matthys 54a2fad8e3 In configure, swap the order of compiler and make check.
This results in a more general error message that is easy to google.
Also fix the gmake error to complain about make/gmake since it
may also indicate missing make.
2020-04-18 10:06:33 +02:00
Bram Matthys 6d74e64b22 Remove ./Config -clean which was only confusing as it did not clean much. 2020-04-18 08:06:57 +02:00
Bram Matthys e6f34ef22b Remove ./Config -nocache, you can just rm config.settings instead. 2020-04-18 08:05:17 +02:00
Bram Matthys 49d595f60c On *LINE removal it showed the wrong person in the notice sent to IRCOps
(on remote servers). It showed the originally setter and not the remover.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5629
2020-04-17 09:30:59 +02:00
k4bek4be 26c58dce47 Don't suggest old "posix" spamfilter to opers. (#101) 2020-04-16 19:18:37 +02:00
Bram Matthys a3784479a1 UnrealIRCd 5.0.4-rc1 (internal release candidate) 2020-04-15 17:45:17 +02:00
Bram Matthys bc6079c540 Update release notes
[skip ci]
2020-04-15 09:10:40 +02:00
k4bek4be 1b7c03df94 Send RPL_LOGGEDIN numeric to the user on post-registration SASL too (#97) 2020-04-15 09:04:31 +02:00
Ryan Allen 0b350be64c Removing duplicate line in conf prog header (#98) 2020-04-15 09:02:54 +02:00
LeCoyote cd059839c5 Update of the French help text. Quite a few items were pretty outdated (#99)
Fixed a couple of typos too.
2020-04-15 09:01:37 +02:00
Bram Matthys 68642a4e68 Make ./Config auto-import settings from 5.0.3 / 5.0.3.1. 2020-04-15 08:57:49 +02:00
Bram Matthys 9fab197021 Bump version to 5.0.4-dev. 2020-04-15 08:56:57 +02:00
Bram Matthys 682f9598d4 Add section header wrt upgrade from u4
[skip ci]
2020-04-15 08:49:10 +02:00
Bram Matthys abd0d3c04c Add initial version of release notes for 5.0.4
[skip ci]
2020-04-15 08:47:49 +02:00
Bram Matthys 349ee964cc Make the whox module use ModData. 2020-04-15 08:22:55 +02:00
Bram Matthys a6e6e44103 Set default permission for hide-idle-time back to IRCOps only for now.
We will extend the option later in UnrealIRCd 5.0.5.
This purely has to do with keeping the changes for 5.0.4 small and
contained since that will be mostly a bug fix release.
Since 5.0.5 will have more configurable options for hide-idle-time, I
have already renamed the single option that is exposed in 5.0.4
to set::hide-idle-time::policy since set::hide-idle-time is a
configuration block now, see docs at:
https://www.unrealircd.org/docs/Set_block#set%3A%3Ahide-idle-time
2020-04-15 08:17:53 +02:00
Bram Matthys f437593b8d Rewrite and expand notices+logging with regards to server linking / lost link.
When connecting, use slightly different wording (and use it consistently):
"Trying to activate link with server xyz"

When the connection is lost before synced:
"Unable to link with server xyz"

When the connection is lost after fully synced (eg: minutes later):
"Lost server link to xyz"

Important small changes (other than text):
* Log ERRORs from remote servers to the log (previously only shown to ircops)
* Some link errors could have been previously suppressed due to
  old code assuming other parts of the code would send or log the error
  (this would be the case for an error when calling SSL/TLS write functions)
* More?
2020-04-13 13:36:58 +02:00
Bram Matthys 177d017b06 Tiny code cleanup in conf to use allowed_channelchars_strtoval() 2020-04-13 10:06:11 +02:00
Bram Matthys d25f6f6759 Make set::hide-idle-time 'usermode' the default (regular users can set +I).
I think nowadays, with more attention to privacy, we should make this
option settable by users.

See previous commit for more information, or just visit the doc page at
https://www.unrealircd.org/docs/Set_block#set%3A%3Ahide-idle-time
if you want to use a different setting.
2020-04-13 10:02:05 +02:00
Bram Matthys 5dc1502119 New option set::hide-idle-time which configures when/if idle time should
be hidden. The options are: never, always, usermode, oper-usermode.
See https://www.unrealircd.org/docs/Set_block#set::hide-idle-time for
full documentation.

Suggested by Koragg, via https://bugs.unrealircd.org/view.php?id=5355

Module coders: before disclosing idle time, please call this function:
int hide_idle_time(Client *client, Client *target);
In UnrealIRCd we use it from WHOIS and WHO.
2020-04-13 10:00:27 +02:00
Bram Matthys 55ecfee0a4 Show in /WHOIS if a user is currently shunned. Only works for locally
connected users for technical reasons, so you will have to use double
whois to see it for remotes (/WHOIS Nick Nick) just like with idle time.

Suggested in https://bugs.unrealircd.org/view.php?id=5519
2020-04-13 08:50:18 +02:00
Bram Matthys c5ba66fbf6 UnrealIRCd was ignoring set::ident::read-timeout and using
set::ident::connect-timeout for the read timeout also.
This could lead to failed ident lookups on higher latency connections
because it only gave 3 seconds for the entire ident lookup rather than
the (max) 10 seconds that was intended.
Now both values are properly obeyed (3 for connect, 7 for read
timeouts, by default).
2020-04-12 17:46:23 +02:00
Bram Matthys a992b30a6a Fix for previous commit... -grin- 2020-04-12 17:08:33 +02:00
Bram Matthys 9887ef6955 Fix possible crash when unloading a module with moddata.
This only happens in some circumstances.

From now on EventDel() will simply mark the event as deleted.
The actual freeing is started in DoEvents() after the event loop.
This makes it safe to use EventDel() everywhere.

The previous attempt to fix that issue was
d29a55a8db but it introduced a
new crash issue for a slightly different case, as mentioned in
https://bugs.unrealircd.org/view.php?id=5553
2020-04-12 16:52:43 +02:00
Bram Matthys cf53797121 Fix crash if an authenticated server advertises a wrong hop count,
eg due to self-written services / toying around.
2020-04-12 15:49:11 +02:00
Bram Matthys 016dd20e16 Fix /TEMPSHUN -Nick not removing temporary shun on remote users.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5580
2020-04-12 15:10:01 +02:00
Bram Matthys 051fd4aebd Fix message tags (such as msgid) missing for JOIN 0 and SAJOIN 0. 2020-04-10 19:28:50 +02:00
Bram Matthys 891435e811 Fix SAJOIN to 0 (part all channels) resulting in a possible desync
when used on a multi-server network. This was due to the PART event
inadvertently not being sent towards the SAJOIN direction.
Bug reported by Cheiron in https://bugs.unrealircd.org/view.php?id=5616
2020-04-10 19:27:39 +02:00
Bram Matthys afb10be770 Channeldb was not properly restoring all channel modes, such as +P,
after a restart. Possibly depending on the module load order.
2020-03-29 08:42:08 +02:00
Bram Matthys 32170b81e3 Mention https://www.unrealircd.org/docs/FAQ#oper-requires-tls on OPER attempt
form an insecure connection. There we explain a bit on the why and how to
configure some random IRC clients.
This also silently adds support for multi-line messages in
set::plaintext-policy::user-message (for warn) and
set::plaintext-policy::oper-message (for warn and deny).
2020-03-06 08:58:55 +01:00
Bram Matthys 6224efdaf3 src/random.c: remove unused variable and reorder struct on Windows. 2020-02-18 14:55:57 +01:00
Bram Matthys 401fcf14aa Fix forced nick change not showing if you were not in any channels.
Eg with anope with the KILL option turned ON, a minute after taking
a registered a nick.
Very similar to c9b88343e2 which was
fixed in 5.0.0-beta1 for non-forced nick changes.
2020-02-12 00:55:29 +01:00
Bram Matthys 30ed989113 *** UnrealIRCd 5.0.3.1 *** 2020-02-11 18:36:52 +01:00
Bram Matthys a807cf026c Use the damn mod handle, what were you thinking!?? 2020-02-11 18:31:49 +01:00
Bram Matthys f585e895a2 Crash reporter: was missing many crashes due to search for core
files that end in .core, while on many systems it is just 'core'
without the dot. Reverted back to U4-style core file finding now.
Thanks to DeviL for helping to trace this issue.
2020-02-11 17:46:03 +01:00
Bram Matthys 8c0a2a1f96 Fix bug in hook prototype for FREE_USER. In most cases you are better
off not using this and you'll want to use the three other hooks anyway:
* HOOKTYPE_LOCAL_QUIT - for local quits of registered clients
* HOOKTYPE_REMOTE_QUIT - for remote quits of registered clients
* HOOKTYPE_UNKUSER_QUIT - for local quits of unregistered clients
  (that is, before they have completed NICK+USER etc)
2020-02-09 14:53:43 +01:00
Bram Matthys b7e2cbea0f Split off existing account-notify functionality to account-notify module
now that we have a hook, so the functionality of it is nicely contained
in a separate module.
2020-02-09 10:48:23 +01:00
k4bek4be 19e672ac22 Module coders: add ACCOUNT_LOGIN hook (#94) 2020-02-09 10:34:06 +01:00
Bram Matthys a283a1cf51 Add link to original UnrealIRCd 5 announcement, for easier navigation.
[skip ci]
2020-02-08 09:03:32 +01:00
Bram Matthys 88b13fed26 Move general comment about UnrealIRCd 5 up in release notes. 2020-02-08 08:44:26 +01:00
Bram Matthys 3febf6bc90 *** UnrealIRCd 5.0.3 *** 2020-02-08 08:39:15 +01:00
Bram Matthys febc4a45f3 Updated labeled-response: drop the draft/ prefix now that the specification
is ratified and also fix a serious flood bug in the implementation.
Oh, and move the loadmodule line to the correct place in modules.default.conf.
2020-02-08 08:09:53 +01:00
Bram Matthys de44549996 Import settings from 5.0.2. 2020-02-05 08:26:38 +01:00
Bram Matthys e0d70f577b Update release notes a bit
[skip ci]
2020-02-03 14:49:16 +01:00
Bram Matthys 50f916fcd8 Windows compile fixes 2020-02-02 19:34:44 +01:00
Bram Matthys 9211e105eb Add unrealircd.org/userhost message tag. Similar to previous, so IRCOps
can see the real host of a user in each message.
2020-02-02 18:12:07 +01:00
Bram Matthys 65a5943e97 userip tag: inherit from remote servers, if able. 2020-02-02 16:46:51 +01:00
Bram Matthys a05c187a56 Fixes for HISTORY command: default value not working and error if +H is
not set on the channel. Reported by westor.
2020-02-02 16:17:02 +01:00
Bram Matthys ed6a2cf3e3 Add new message tag "unrealircd.org/userip" which will communicate
the user@ip of users to IRCOps if the message-tags capability is
enabled. Idea from westor. This is work in progress.
2020-02-02 15:49:21 +01:00
Bram Matthys 63b61d456b Update wiki link
[skip ci]
2020-02-02 13:12:13 +01:00
Bram Matthys a56e3bee8f Fix double free due to recent changes, now that HOOKTYPE_LOCAL_CHANMODE
and HOOKTYPE_REMOTE_CHANMODE are called from the SJOIN code.
We now set the samode argument to -1 if it is an SJOIN server sync,
so chanmodes/permanent won't destroy the channel while processing
the SJOIN. The SJOIN code already takes care of destroying at the end.
2020-02-02 12:57:10 +01:00
Bram Matthys 43a9e74662 Set version to 5.0.3-git and write some early release notes. 2020-02-02 12:33:46 +01:00
Bram Matthys 1ea8443551 Mark history as official module 2020-02-02 12:23:26 +01:00
Bram Matthys 7a38f485ad It helps if you can compile in non-DEBUGMODE 2020-02-02 12:18:09 +01:00
Bram Matthys a8c191b291 Add new command: HISTORY #chan [lines]. This is meant for end-users
so they can fetch more history than the standard on-join history.

In the future we are also likely to implement IRCv3 CHATHISTORY
once that becomes an official specification. However, until it is
specified and until most major clients support it, several years
are likely to pass. It would be a shame to withhold channel
history to many end-users in the meantime when it takes so little
effort from us to provide an easy command.

See also
https://www.unrealircd.org/docs/Channel_history
And in particular the new section:
https://www.unrealircd.org/docs/Channel_history#Playback_frontends
which explains the relationship between on-join playback,
HISTORY and CHATHISTORY.
2020-02-02 11:57:51 +01:00
Bram Matthys b5a205f4f3 Fix /SQUIT for server 2 hops away not working correctly.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5539
2020-01-31 12:15:36 +01:00
Bram Matthys 63cf5e3d52 Make channeldb/tkldb write errors more uniform.
Use local macro and sendto_realops_and_log()
2020-01-29 09:28:43 +01:00
Bram Matthys 0302ef9733 Operclass permission change: immune:target-limit is now called
immune:max-concurrent-conversations since it bypasses
set::anti-flood::max-concurrent-conversations.
Indirectly reported by westor.
2020-01-29 09:01:25 +01:00
Bram Matthys ead0ad0aa6 Duh.. (fix for previous fixes)
[skip ci]
2020-01-26 10:41:04 +01:00
Bram Matthys 1dc08afa71 Add warning to EventMod() for low every_msec as well. Also, mention the name
of the event to ease debugging.
2020-01-26 10:35:14 +01:00
Bram Matthys eede8d3ff6 Fix warning regarding low ms_every in case of delayed module unloading. 2020-01-26 10:26:07 +01:00
Bram Matthys d482760c6f Fix warning about EventAdd with 2msec value.
Reported by ivanp in https://bugs.unrealircd.org/view.php?id=5540

This cleans things up a bit as well (remove duplicate code).
2020-01-26 10:22:28 +01:00
Bram Matthys 1b07f706bc Remove old STATS Z from stats help. Reported by Lord255 in
https://bugs.unrealircd.org/view.php?id=5541
2020-01-26 10:00:58 +01:00
Bram Matthys c9feaa0b15 Fix : at beginning of gecos being dropped off in intra-WHOIS.
This does NOT "fix" https://bugs.unrealircd.org/view.php?id=5538:
WHOIS nick
:localserver.example.com 311 test nick ident host * :realname
WHOIS nick nick
:remoteserver.example.com 311 test nick ident host * realname
.. because your IRC protocol parser should not care about a :
or a lack of :. For text not containing spaces nor :-prefix there
is no difference in meaning and it should parse to the same.

However, this DOES fix an issue if the realname itself started
with a colon, such as "USER x x x ::something":
WHOIS nick
:localserver.example.com 311 test nick ident host * ::something
WHOIS nick nick
:remoteserver.example.com 311 test nick ident host * :something
.. because that does not have the same meaning and is a real
incorrect drop of a character.
Yeah, I took into account spaces, but not a word starting with :, my bad.
2020-01-26 09:54:54 +01:00
Bram Matthys 6fa7dd8b88 Fix (SA)PART and KICK not being shown to chanops in +D channels for invisible
users (users that have not talked or been otherwise exposed).
Reported by PeGaSuS and LesterClayton in
https://bugs.unrealircd.org/view.php?id=5521 and
https://bugs.unrealircd.org/view.php?id=5542

Bug was due to use of 'CHFL_CHANOP' instead of 'PREFIX_OP' in
the 'prefix' argument of sendto_channel().... fun.
2020-01-26 09:35:04 +01:00
Bram Matthys 21278d2549 ** UnrealIRCd 5.0.2 release ** 2020-01-22 07:11:26 +01:00
Bram Matthys 65afb71111 Fix channel history using the wrong time unit. It is really +H lines:minutes
Release notes:
+* [Channel history](https://www.unrealircd.org/docs/Channel_history) used
+incorrect time internally, resulting in messages expiring too soon.
+The syntax is now really ```/MODE #chan +H lines:time-in-minutes```.
+To make clear that the time is in minutes, an 'm' will be added
+automatically by the server (eg ```+H 15:1440m```).

Bug reported by k4be.
2020-01-21 13:44:51 +01:00
Bram Matthys b5c9ee8ec5 Fix screwing up nearly everything 2020-01-20 18:03:16 +01:00
Bram Matthys 8a6968c933 UnrealIRCd 5.0.2 2020-01-20 17:28:56 +01:00
Bram Matthys fde678aacc Fix clash of CHFL_* flags. Found after bug report from k4be. 2020-01-20 16:00:33 +01:00
Bram Matthys d30f7e006d Specifying multiple channels ("#one,#two") in set::auto-join,
set::oper-auto-join or tld::channel was broken. It worked for the
very first user since boot or rehash, but after that only the
first channel was joined. Reported by PeGaSuS in
https://bugs.unrealircd.org/view.php?id=5535
2020-01-20 15:41:12 +01:00
Bram Matthys f3019f89a1 Fix github hate regarding <>
[skip ci]
2020-01-20 14:13:03 +01:00
Bram Matthys 9aa7b7e52f Update release notes
[skip ci]
2020-01-20 14:12:01 +01:00
Bram Matthys 83db4e07db Always fun that markdown has URI links in reverse order compared to wiki syntax.
[skip ci]
2020-01-20 14:07:29 +01:00
Bram Matthys ce94746898 More release notes updates
[skip ci]
2020-01-20 13:52:06 +01:00
Bram Matthys c65f7101f9 Update ./unrealircd genlinkblock output 2020-01-20 13:46:59 +01:00
Bram Matthys 5b8eba750f Make set::tls::outdated-protocols and set::tls::outdated-ciphers work
again. This ports change 96ee7083c8
from UnrealIRCd 4.x to 5.x. Reported by HeXiLeD.
2020-01-20 13:26:37 +01:00
Bram Matthys 70973ec18b Start writing release notes for 5.0.2. 2020-01-20 13:05:25 +01:00
Bram Matthys 870057d4f3 Add "./unrealircd genlinkblock" which spits out a link { } block. Hmm...
we'll see later if this is a good idea or not.. it has pros and cons.
2020-01-19 19:34:11 +01:00
Bram Matthys ffd0acf5d5 Add ./unrealircd <hot-patch|cold-patch> <nameofpatch> which will be
useful in the future. This would download a specific patch from
the unrealircd.org site, apply it, recompile, and then:
if it's a hot-patch it would rehash
if it's a cold-patch it would print a message that you should restart
the irc server.
2020-01-19 18:16:47 +01:00
Bram Matthys ca22b6282e Fix bounce modes raising a warning to ircops (Unknown channel mode +& from ..)
reported by k4be.
2020-01-18 16:52:01 +01:00
westor 48faed6938 Add information about type on spamfilter add (#90)
On spamfilter add, add  [type: simple] or [type: regex] in the snomask notice and log.
2020-01-17 07:19:13 +01:00
westor abeb5f50d0 Fixes two wrong /ELINE examples bantype (#92)
This should be 'G' and not 'g' :) :D
2020-01-17 07:16:18 +01:00
Bram Matthys e9d8341efd Mention the IRCOp guide in HELPOP OPERCMDS
( https://www.unrealircd.org/docs/IRCOp_guide )
2020-01-12 14:43:21 +01:00
Bram Matthys 094c444250 1) Fix incorrect ELINE documentation for types: gline (G, not g),
spamfilter (F, not f) and qline (Q, not q).
2) Error out when invalid ban exception types are given, so such errors
   don't go undetected anymore. Eg it will now print:
   "ERROR: bantype 'f' is unrecognized (in 'fgkz'). Note that the bantypes are case sensitive. Type /ELINE to see a list of all possible bantypes."
Reported by westor and Mi_01 in https://bugs.unrealircd.org/view.php?id=5528

Also, when at it:
3) Remove type 't' from ELINE syntax docs, which is in fact 'c'
   (which is already present in the list)
2020-01-12 13:19:37 +01:00
Bram Matthys 3456a5f90e Make /ELINE use set::manual-ban-target as well.
(just like KLINE GLINE etc)
2020-01-10 16:16:29 +01:00
Bram Matthys ef9506b95f Add set::manual-ban-target as well (affects /KLINE nick, etc).
Requested by marco500 in https://bugs.unrealircd.org/view.php?id=5029
For more information, see:
https://www.unrealircd.org/docs/Set_block#set::manual-ban-target
2020-01-10 15:54:04 +01:00
Bram Matthys 639c96cc84 https://www.unrealircd.org/docs/Set_block#set::automatic-ban-target
Remove old option set::ban-include-username and replace it with a more
generic option which defines what target a ban should apply to.

Also add some parts of set::manual-ban-target which will follow soon.
2020-01-10 15:43:23 +01:00
Bram Matthys 75eb509344 Make the new extended server bans feature also work in configuration file
Eg:
except ban {
        mask ~S:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;
};
And also in ban user { }

For more information see commit 596cf8e7de
and https://www.unrealircd.org/docs/Extended_server_bans
2020-01-10 13:09:16 +01:00
Bram Matthys bfed0893a9 Nothing important: in eline_type_requires_ip() add 'd'.
Although not entirely true, exempting a user from 'd' when using
an extended server ban or IP or ident is not recommended.
The information needed to exempt the user may not be available
at the time of the flood. Better to reject it than have it partially work.
2020-01-10 11:57:34 +01:00
Bram Matthys 596cf8e7de New: extended server bans: exempt by certificate fingerprint and SASL account.
See https://www.unrealircd.org/docs/Extended_server_bans

Examples with ELINE:
/ELINE ~a:TrustedAccount kg 0 This user can bypass kline/gline when using SASL
/ELINE ~S:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef kgf 0 Trusted user with this certificate fingerprint
It also works with bans, although this would be less common:
/GLINE ~a:EvilAccount
A more useful purpose would be to use ~r (realname):
/GLINE ~r:*some*stupid*real*name*
(Although you could already ban realnames via spamfilter 'u')

For third party module coders:
If you have an extban in group 3 (a "matcher"-extban) then you
can opt-in to support this. You do so at extban registration time:
req.options = EXTBOPT_TKL;
or, if you already had another flag set, like for +I, then:
req.options = EXTBOPT_INVEX|EXTBOPT_TKL;
In any case, you set the .options before you call ExtbanAdd().

Note that if you do indicate support then your is_ok function
will be called like:
extban->is_ok(client, NULL, mask, EXBCHK_PARAM, MODE_ADD, EXBTYPE_TKL);
Important here is the NULL channel (since there is none)

Similarly your is_banned function will be called with BANCHK_CONNECT:
extban->is_banned(client, NULL, banstr, BANCHK_JOIN, &msg, &errmsg);
Here too, it is important to note that channel is NULL.
2020-01-10 11:45:25 +01:00
Bram Matthys 92c5f06e7e Fix incorrect spacing in HELPOP EXTBANS
[skip ci]
2020-01-10 09:06:28 +01:00
Bram Matthys d4826bd5c0 except throttle { } was not working, reported by LesterClayton in
https://bugs.unrealircd.org/view.php?id=5524

On a side note, the new method did work OK:
except ban { mask 127.0.0.1; type connect-flood; }
2020-01-09 18:23:27 +01:00
Bram Matthys edb4bd8cf2 Fix incorrect calls to HOOKTYPE_TKL_DEL causing crashes in modules
that use the parameters of this hook. Reported by Gottem.
2020-01-07 12:34:43 +01:00
westor 11ff177558 Add new option set::connthrottle::webirc-bypass
When set to 'yes' then when ConnThrottle detects a flood it will still
allow WEBIRC users in. The default is 'no'.
Suggested in https://bugs.unrealircd.org/view.php?id=5506
2020-01-05 17:27:11 +01:00
Bram Matthys 07753d112e Update for previous commit. See https://github.com/unrealircd/unrealircd/pull/87 2020-01-05 10:00:34 +01:00
k4bek4be cdea885b32 For ./unrealircd module parse-c-file use real line counts within the C file instead of within the special block 2020-01-05 09:57:29 +01:00
westor 2fa0edf599 Add support for "exempt-webirc" (#88)
Add new config option "exempt-webirc yes;" in set::restrict-commands::<commandname> in order to give exceptions in all WEBIRC user. This closes one of the 3 suggestions in https://bugs.unrealircd.org/view.php?id=5506
2020-01-04 17:39:38 +01:00
Bram Matthys d29a55a8db Update DoEvents() so it is safe to call EventDel() from within
an event handler. Until now it was NOT safe. Now it is.
2020-01-04 16:54:48 +01:00
Bram Matthys bb82138466 UnrealIRCd 5.0.1 2020-01-03 09:38:28 +01:00
Bram Matthys 672153cc4d Last update of release notes for 5.0.1?
[skip ci]
2020-01-03 09:22:12 +01:00
Bram Matthys a2d0194d94 More release note updates
[skip ci]
2020-01-03 09:14:50 +01:00
Bram Matthys 739caa5b88 Some more release note updates
[skip ci]
2020-01-03 09:05:26 +01:00
Bram Matthys ecaec0f062 Update release notes for upcoming 5.0.1 (first part)
[skip ci]
2020-01-03 08:48:09 +01:00
Bram Matthys 27ae0fa340 Fix "ERROR renaming 'data/reputation.db.tmp'" on Windows.
Reported by hc2995, notipa and floffy.
2020-01-02 16:35:24 +01:00
Bram Matthys eca761fcb9 Remove some unused vars in cmd_nick_remote and cmd_nick_local 2020-01-02 15:47:23 +01:00
Bram Matthys d7d673faf2 Multiple fixes related to ban actions:
1) Fix issue if HOOKTYPE_IS_HANDSHAKE_FINISHED rejects the user
2) Fix authprompt issue. We now allow adding the TKL in
   place_ban_host() for soft-kline/etc. Previously all the
   soft-kline/gline/zline/gzline acted like soft-kill.
3) The blacklist module did not allow clients in with action 'warn',
   reported by westor in https://bugs.unrealircd.org/view.php?id=5501
2020-01-02 15:36:42 +01:00
Bram Matthys 7278c9c8f4 @if causes miscounting of line numbers shown in config errors.
Reported by Gottem in https://bugs.unrealircd.org/view.php?id=5509
2020-01-02 13:05:26 +01:00
Bram Matthys b4fb4568fc Possibly fix a hang issue. Reported by westor. 2020-01-02 12:46:37 +01:00
Bram Matthys f8c6996edd Fix SID being shown (eg: 001) when services set the TOPIC. Reported by westor. 2019-12-31 13:26:31 +01:00
Bram Matthys a6b5f17656 Fix WHOX 'm', this should be an AND operation, eg: 'WHO +zo m' lists
IRC Operators (+o) that have +z set.
Similarly, 'WHO +o-z m' lists IRCOps (+o) which are -z.
Issue found while writing the HELPOP WHO documentation.
2019-12-31 13:22:35 +01:00
Bram Matthys 410148ea91 Document the WHOX syntax in /HELPOP WHO 2019-12-31 13:22:01 +01:00
Bram Matthys 77e859459a Add )
[skip ci]
2019-12-31 09:44:33 +01:00
Bram Matthys 114ef14a31 Log who (client) or what (signal) requested a config file /REHASH. 2019-12-31 09:41:19 +01:00
Bram Matthys ca576944e6 Don't test w/services on FreeBSD since it errors mysteriously atm. 2019-12-30 19:06:41 +01:00
Bram Matthys 2c23d4299c Send a better error when JOIN is used for a channel without hash mark (#).
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5514
2019-12-30 19:02:20 +01:00
Bram Matthys fccb3b2f5b Add /ELINE exception type 'm' to bypass allow::maxperip.
In the configuration item you can now achieve the same via:
except ban { mask 1.2.3.4; type maxperip; }
Or even:
except ban { mask { 1.2.3.4; 8.8.8.8; }; type maxperip; }
etc.

Suggested by The_Myth in https://bugs.unrealircd.org/view.php?id=5507

Also, fixed an issue where the IRCd was counting servers as
clients for maxperip, which doesn't make much sense in practice,
so it only counts users now.
2019-12-30 18:23:55 +01:00
Bram Matthys e4d9e001d8 Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2019-12-30 17:54:40 +01:00
Bram Matthys c789ac6abe Add channel:override:mlock operclass permission which allows overriding
MLOCK restrictions when services are down (set::services-server).
Suggested by westor in https://bugs.unrealircd.org/view.php?id=5273
By default all opers with the *-with-override privilege have this,
which sounds OK to me.
2019-12-30 17:52:22 +01:00
GottemHams c2e3c8c8b1 Fix antirandom incorrectly defining its own BAN_ACT_WARN -- which is different from the one defined in include/struct.h and used in banact_stringtoval() -- resulting in kills instead of warns 2019-12-30 12:21:15 +01:00
Bram Matthys c215a3621a Use SNI in modulemanager. Not needed for the default one, but if you add
custom ones you might need it.
2019-12-28 18:50:03 +01:00
Bram Matthys 910f2ad383 Module manager: more error details when it fails to fetch a repository. 2019-12-28 18:05:22 +01:00
Bram Matthys aa7b199a8a Fix crash when reading configuration file with a password that is in
the old and unsupported unrealircd-specific md5/sha1 style.
2019-12-28 15:10:34 +01:00
Bram Matthys 63b77796ed sendto_server(&me, -> sendto_server(NULL,
Not sure where the &me originally came from, but it is used in a few places
and is only confusing since it has no meaning... nowadays anyway.
2019-12-27 17:23:24 +01:00
Bram Matthys 4a547a766e Remove HOOKTYPE_LOCAL_NICKPASS (now useless), see previous commit. 2019-12-23 16:42:10 +01:00
Bram Matthys c9cf74a735 Drop support for sending server pass (PASS xx) to nickserv. Use SASL!
It wasn't working anyway in 5.0.0 and this behavior was non-standard.
2019-12-23 16:40:06 +01:00
Bram Matthys e3b806ec60 Fix command override priorities again. Lowest value is called first,
just like hooks now. Yeah we've messed up a few times by now.
Seems only Gottem uses them :D
So now it would call for example: prio -10, prio 0, 10, 20, cmd.
This matches the behavior of hook priorities (and swhois etc.)
2019-12-23 13:10:33 +01:00
Bram Matthys 595e448239 If do_cmd() is called with NULL mtags then we now generate message tags,
run the command, and free them again right before return.
2019-12-23 10:56:25 +01:00
GottemHams 3a55dd8422 TKL exceptions (E-Lines) were missing an expiration notification =] 2019-12-22 21:33:35 +01:00
GottemHams a1ae90cd16 Fixed incorrect order in which command overrides were processed 2019-12-22 19:01:53 +01:00
Bram Matthys bf379526e1 Test framework: don't run with ASan on Debian 8 due to false positives
[skip ci]
2019-12-22 14:58:02 +01:00
GottemHams fac16fe1c0 match_* functions actually return 1 on match and not 0 :D 2019-12-22 14:48:04 +01:00
GottemHams 35d6e9a067 Fixed mismatch in config variable naming for require-module 2019-12-22 14:47:07 +01:00
Bram Matthys f1b30be34e Print a better error message for users answering the wrong directory in
the first ./Config question.
2019-12-21 10:32:24 +01:00
Bram Matthys d8af0c170b sys/resource.h must be included earlier, otherwise ulimit (the fd limit)
is left unchanged at 1024.
2019-12-14 05:23:10 +01:00
Bram Matthys 4c255ccbd5 Remove some old "release candidate" references in the docs. 2019-12-13 09:15:18 +01:00
Bram Matthys eac9cdc319 UnrealIRCd 5.0.0 release 2019-12-13 08:38:42 +01:00
Bram Matthys 25bc2b7923 Fix crash on nick change. 2019-12-12 16:58:26 +01:00
Bram Matthys a46a2e050d ./Config: import settings from rc2/rc1. 2019-12-12 16:57:51 +01:00
Bram Matthys f118f95ffa Some minor release notes updates (need to quote some stuff) 2019-12-11 19:54:30 +01:00
Bram Matthys 9fc508483f webredir module should not depend on curl (fix symbol not found error) 2019-12-11 19:54:17 +01:00
Bram Matthys 9a96c32706 Release notes: update text since --enable-asan is no longer on by default
[skip ci]
2019-12-11 18:05:13 +01:00
Bram Matthys f3e538170e Minor update in release notes 2019-12-11 17:21:38 +01:00
Bram Matthys 3a4d2d907a Fix tkldb/channeldb causing a 'File exists' error every 5 minutes. 2019-12-11 13:10:26 +01:00
Bram Matthys a078a5d659 Print a warning that upgrade-conf is for 3.2.x to 4.x, and not for 4.x to 5.x
since there are no mandatory changes. For more information why this is
unnecessary, see commit 32ca956e77.
2019-12-11 12:23:43 +01:00
Bram Matthys bc358e7b35 Bump UnrealProtocol to 5000 so I don't forget to do it later ;) 2019-12-08 18:47:51 +01:00
Bram Matthys b9729a4f29 Fix bug in syncing spamfilters: ban act char vs string. Didn't always matter,
but for example 'gzline' became 'gline' on the other link.
Also replace 'unsigned short action' -> 'BanAction action'
2019-12-08 13:45:59 +01:00
Bram Matthys 32ca956e77 There were only 2 breaking changes in 4.x -> 5.x confs. Now there are 0.
Turning these errors into warnings instead should be fine and makes
the upgrade process (and instructions) easier.
* set::oper-only-stats is now a warning
* except tkl is auto-transformed into except ban and is now a warning
Both warnings contain clear instructions on what to do to get rid of
the warning message.
2019-12-08 09:33:38 +01:00
Bram Matthys cad664e749 Fix invalid parameter in jumpserver module 2019-12-07 18:05:50 +01:00
Bram Matthys 4bfdd84712 Document send.c a bit more. 2019-12-07 16:00:03 +01:00
Bram Matthys 55cad6fe05 Fix SASL authentication not working properly on servers 2+ hops away
from services. Reported by Koragg and The_Myth in
https://bugs.unrealircd.org/view.php?id=5485
The test framework has been updated to test these cases better.
2019-12-07 10:08:27 +01:00
Bram Matthys c1b6bebbf4 Add doc/doxygen/ to .gitignore
[skip ci]
2019-12-06 11:00:35 +01:00
Bram Matthys 9e652b95c7 Tweak doxygen output a bit. Drop -rc2 suffix. Make more clear that this
is for developers / module coders only.
[skip ci]
2019-12-06 09:01:21 +01:00
Bram Matthys 7764358eb7 Remove some old URL reference / old deprecation notice for set::scan. 2019-12-06 08:44:51 +01:00
Bram Matthys d7301f1b11 Convert some http:// to https:// that were not previously updated it seems
[skip ci]
2019-12-06 08:43:37 +01:00
Bram Matthys 0bbb935a32 Rename CHECKPROTO() to CHECKSERVERPROTO() to avoid mixing up server caps
and client caps in the future.
2019-12-06 08:32:36 +01:00
Bram Matthys a0b0526556 CAP LIST wasn't outputting anything. Reported by Koragg in
https://bugs.unrealircd.org/view.php?id=5483
2019-12-06 08:29:53 +01:00
Bram Matthys d9166bd62d Disable address sanitizer (ASan) now that we are preparing for 5.0.0 stable.
This can still be enabled during ./Config by answering to the last question:
--with-asan
But it is no longer enabled by default since it causes a slowdown of X and
increases memory by a factor Y.
2019-12-05 20:16:44 +01:00
Bram Matthys bf61973a6d Print a warning when changin me::name that this change is not effective
until you restart the server.
Yeah it's really too much hassle atm to make that particular setting
/rehash'able, this will probably never change.
Fortunately changing that is rather rare. At least printing the
warning should help those users doing it.
2019-12-01 19:06:22 +01:00
Bram Matthys 12af48a433 Typo in release notes, reported by Koragg 2019-12-01 15:02:40 +01:00
Bram Matthys 28539d41e0 Fix incorrect prototype for HOOKTYPE_TOPIC, has mtags. 2019-11-29 12:23:13 +01:00
Bram Matthys 35dd6c66b1 Fix doxygen documentation for sendto_channel 2019-11-29 12:21:58 +01:00
Bram Matthys e5f9061636 Update Config.header a bit and release UnrealIRCd 5.0.0-rc2. 2019-11-29 08:18:50 +01:00
Bram Matthys 0f7f872a97 Update release notes and set version to 5.0.0-rc2. The actual public
release will probably be on Friday, though.
2019-11-27 19:37:38 +01:00
Bram Matthys 7869c31ea5 Add the extras/doxygen directory.
Command to generate is: doxygen extras/doxygen/Doxyfile
Will publish this "soon"... of course it's not 100% complete but it's quite good.
2019-11-27 16:53:49 +01:00
Bram Matthys 1576f8df23 Warn on some limitations of the @if stuff:
* Cannot use include within an @if
  ..but you can just use an include and then within that file use
  an if, to work around it.
* Cannot use loadmodule within an @if

For both this is because include & loadmodule are processed before
the rest. I think most people will be fine with those restrictions,
though.
2019-11-27 16:45:39 +01:00
Bram Matthys 540e7552f9 Fix crash when using conditional configuration (@if $var == ....)
reported in https://bugs.unrealircd.org/view.php?id=5281
It was not removing parts properly if an if didn't match,
leading to a use-after-free bug on-boot (or on rehash).

In the process I renamed config_entry_free to config_entry_free_all
since that is what it does. And I created a new config_entry_free(ce)
to free only 'ce' stuff... which is what we want from the
preprocessor.
2019-11-27 15:44:48 +01:00
Bram Matthys 1a1b9ddada If you changed listen::ip and rehashed it would not apply those changes
if you were switching from a IP-specific listener to a * (all) listener.
Reported by vectr0n in https://bugs.unrealircd.org/view.php?id=5235
2019-11-27 13:25:30 +01:00
Bram Matthys 7fe3407508 Clean up whitespace 2019-11-27 13:10:06 +01:00
Bram Matthys 05f0968ccd Test the various set::tls (and ::tls-options) files for existence
so we properly error and exit/fail when booting.
Reported in https://bugs.unrealircd.org/view.php?id=5350
2019-11-27 13:06:02 +01:00
Bram Matthys 1e3d726df7 Setting user mode +q now requires the self:unkickablemode permission.
This is included in the *-with-override operclasses.
2019-11-27 12:35:58 +01:00
Bram Matthys f6515131aa Handle timed bans in combination with forward, eg: +b ~t:10:~f:#chan:*!*@host 2019-11-27 12:11:26 +01:00
Bram Matthys 0b8d435232 +L can now be set by +o (or higher) instead of requiring +q (channel owner).
Also, update helpop on the new meaning of +L: if unable to join, then
the user is forwarded to the specified channel.
2019-11-27 12:00:57 +01:00
Bram Matthys ae30978680 Fix numeric 470, is now:
:irc.test.net 470 nickname #originalchannel #redirect :[Link] Cannot join channel #originalchannel (you are banned) -- transferring you to #redirect

Previously this was completely incorrect:
:irc.test.net 470 nickname [Link] Cannot join channel ..etc...
(yeah even lacking a colon)
2019-11-27 11:38:48 +01:00
Bram Matthys 332ca4898c Don't send CANNOTSENDTOCHAN (404) twice for dropped repeats in +f. 2019-11-27 10:33:51 +01:00
Bram Matthys a8534a6063 Add new function kick_user() for use by modules. This so KICKs are
done in a consistent way.
2019-11-27 10:33:08 +01:00
Bram Matthys 5d4c474472 Clean up KICK a bit, necessary for next commit which is a bug fix 2019-11-27 10:01:21 +01:00
Bram Matthys 1c3eff4232 Update KNOCK to be sent across servers. This will cause double notices
if you are running a mixed U4 and U5 network, but it solves the situation
where a knock-flood is only detected locally. Since KNOCK usage isn't
that common and flooding is worse than double notices during the
transition period, I went with this change..
2019-11-27 09:56:39 +01:00
Bram Matthys a0a8b6b4eb Fix alias type channel not working properly. Note that the channel needs
to exist and needs to be -n now.
Previously the logic was the wrong way around which made it message
through +n channels and not work if you were actually in the channel.
Fun.
2019-11-24 20:23:34 +01:00
Bram Matthys 72e0f1a8fb Don't send CANNOTSENDTOCHAN (404) if KICK'ed by floodprot 2019-11-22 12:03:38 +01:00
Bram Matthys 48802cd9f3 Fix no error shown on PRIVMSG to +n channel (message is blocked, though) 2019-11-22 10:48:51 +01:00
Bram Matthys 58bb93174c Fix memory leak on 'DNS c' (clear DNS cache) 2019-11-20 16:09:59 +01:00
Bram Matthys 43edef1ad0 Free all set options, some were missing before
(now follows struct order)
2019-11-20 16:07:07 +01:00
Bram Matthys e16064a2a5 Add anope to automated tests (we now have anope & atheme) 2019-11-20 09:51:04 +01:00
Bram Matthys ab42e12002 Make SVSLOGIN a broadcast, so all servers have the same svid information
for the user. Otherwise with post-connect SASL authentication you will
have different login information on server X compared to server Y
(the server with the user on it was always correct, though).

Also, add a function called user_account_login() which is used by both
SVSMODE/SVS2MODE and SVSLOGIN to send ACCOUNT messages to the channel.
This too was missing for SVSLOGIN (post-authentication SASL).

For this fix to be 100% effective, you need 100% UnrealIRCd 5.
2019-11-18 15:39:18 +01:00
Bram Matthys 54513307ec Fix ident check not working with some (most?) clients. Reported by
The_Myth in https://bugs.unrealircd.org/view.php?id=5462.
Now the code is much more generic/liberal. And more ugly.
2019-11-18 15:02:55 +01:00
Bram Matthys 2daa187114 At the end of the automated tests, kill more processes (services) 2019-11-18 10:38:58 +01:00
Bram Matthys 27bc208853 Update tests script to test services (1/2) 2019-11-18 10:14:28 +01:00
Bram Matthys 1930179079 In do_numeric(), don't send UID to local users. 2019-11-18 09:46:34 +01:00
Bram Matthys 22394e8cb3 And another SASL fix on our side for atheme 2019-11-18 09:38:56 +01:00
Bram Matthys bf3ee74659 Fix SASL with atheme 2019-11-18 09:26:51 +01:00
Bram Matthys 99d3d8e450 Fix another direction problem, this one had a clear FIXME :) 2019-11-18 08:43:14 +01:00
Bram Matthys 1b710bc101 Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2019-11-18 08:17:48 +01:00
Bram Matthys b88c8ec804 Fix sending PRIVMSG back to original sender. This made atheme go
in a sending loop if you used a services logging channel.
Reported by The_Myth in https://bugs.unrealircd.org/view.php?id=5469
The same bug was reported and seemingly fixed before, but wasn't
actually.
2019-11-18 08:16:23 +01:00
westor 1a28750fb6 Fixed a typo in servicebot module description (#83) 2019-11-17 19:21:35 +01:00
Vitor Luis 7fadb0667b Update help.conf (#86)
Added the new floodtype 'r' to the list of types and added the 'd' action to the floodtypes 'm' and 't' (not sure about the type 'c').
2019-11-17 19:20:59 +01:00
Bram Matthys 39530ab840 Fix warning on "make pem": Can't load tls.rnd into RNG. Reported by PeGaSuS. 2019-11-17 19:16:17 +01:00
Bram Matthys 74bbc92cf0 Make configure exit when no GNU Make is present (eg no 'gmake' on *BSD).
https://bugs.unrealircd.org/view.php?id=5310
2019-11-17 15:46:45 +01:00
Bram Matthys 84f59226ba Print a clear error if you try to use remote includes without enabling
remote includes support. This rather than "no such file or directory".
2019-11-15 14:41:23 +01:00
Bram Matthys abbc55741a UnrealIRCd 5.0.0-rc1 release 2019-11-15 11:04:39 +01:00
Bram Matthys 0899a734c0 Fix LINKS not showing ourselves. 2019-11-15 09:24:38 +01:00
Bram Matthys 840995d994 Fix bug in Windows crash reporter, was sometimes missing crashes
as it always ignored the first core file.
2019-11-15 09:06:27 +01:00
Bram Matthys 564cf26d56 Comment out some Windows GUI shit that can crash the IRCd.
This is just "About UnrealIRCd" and such, not really important.
2019-11-15 08:07:54 +01:00
Bram Matthys dd38165cb0 Set version to 5.0.0-rc1 and update release notes. NOT RELEASED yet..
there will likely be more fixes within a few hours before -rc1 release.
2019-11-15 07:07:29 +01:00
Bram Matthys 4c4fe038c0 Update warning regarding anope in Config.header too. 2019-11-14 17:38:13 +01:00
Bram Matthys b487b92ac5 Run ./unrealircd module install third/dumpcmds during tests. 2019-11-14 17:37:30 +01:00
Bram Matthys 8c95a8f119 Don't forget to mention ./unrealircd module uninstall... 2019-11-14 17:34:19 +01:00
Bram Matthys ee1e01bec8 Fix small memory leak on config error 2019-11-11 17:27:52 +01:00
Bram Matthys 77e308783f Fix extra whitespace in USERHOST/USERIP (minor) 2019-11-11 14:17:44 +01:00
Bram Matthys 6710e5c047 Fix SILENCE -xyz output (return value error) 2019-11-11 13:42:26 +01:00
Bram Matthys 56bc6f3939 Fix numeric 271 output which has own nick twice. This bug is also
present in UnrealIRCd 4, and possibly in 3.2.x as well.

This changes:
SILENCE
:irc1.test.net 271 self self evilperson!*@*
To:
SILENCE
:irc1.test.net 271 self evilperson!*@*
2019-11-11 13:31:50 +01:00
Bram Matthys 864b15c0d6 Fix another numeric error in MOTD and use ISO date format (Y-m-d). 2019-11-11 12:21:17 +01:00
Bram Matthys a34bb40da4 Fix format of various numerics that use sendnumericfmt(). 2019-11-11 11:31:42 +01:00
Bram Matthys e1163c8734 Windows installer: reindent .iss and fix some end -> end;
[skip ci]
2019-11-11 11:12:40 +01:00
Bram Matthys 788cdd2956 On Windows, if you choose to run UnrealIRCd 5 as a service, it now runs
under the NetworkService account, rather than LocalSystem (SYSTEM).

Something along those lines was suggested long ago in:
https://bugs.unrealircd.org/view.php?id=2330 with a patch
from BuHHunyx.

The more recent pull request from AlexandraBryant suggested to use
the NetworkService account and also fixed the (major) problem with the
original patch that caused UnrealIRCd to hang for 15 seconds when
UnrealIRCd was started in GUI mode (non-services mode).

The installer was changed to automatically set the appropriate
permissions on the UnrealIRCd 5 folder if "Install as a service"
was selected. This so NetworkService can write, otherwise it would
be unable to copy modules to tmp\, write to log files, etc. etc.

We print a clear warning if you manually install the service at
a later stage, suggesting to run the installer instead or to
manually change the permissions.

Better error checking and reporting was added when running 'unrealsvc'
and when we are unable to connect to the service manager. This is
much more common nowadays as you need elevated admin permissions.
2019-11-11 09:44:31 +01:00
Bram Matthys 52dbfc38b7 Fix service on Windows not working in UnrealIRCd 5 now that we
have the bin\ directory.
2019-11-11 09:43:39 +01:00
GottemHams 39fc55dca3 require-module now SQUITs on explicitly required/denied modules (by config), also change version check to require a minimum version (require module::version config directive) 2019-11-07 22:03:02 +01:00
Bram Matthys 8fb125f588 Add some connect and read timeouts to the module manager when
checking repositories and downloading C files (this was a TODO item).

Give a clear hard error if ALL repositories failed
(failed to connect, download or parse).

Make a few commands work regardless of repository status.
In fact, these don't connect to repositories at all since they
don't need to. Thus, these commands are always available:
./unrealircd module [uninstall|generate-repository|parse-c-file]
of which only 'uninstall' is of importance for end-users.

Finally, make parse-c-file print a better error in case the file
could not be opened. Note that this command is only there for
module developers and repository managers, not end-users.
2019-11-04 10:52:51 +01:00
Bram Matthys 31edd45223 Update release notes: require anope 2.0.7 (if using anope, that is) 2019-11-03 16:50:42 +01:00
Bram Matthys 1a6343bff3 Fix missing cloak module on Windows (:D), just in time for 5.0.0-beta1. 2019-11-02 09:13:20 +01:00
Bram Matthys 449f69485f Fix some memory leaks in ./unrealircd module.
Not terribly important at the moment, but still...
2019-11-02 08:14:25 +01:00
Bram Matthys 078c6696af Update release notes a bit
[skip ci]
2019-11-01 21:29:52 +01:00
Bram Matthys 6bb83dc5bc Bump version to 5.0.0-beta1 2019-11-01 20:05:05 +01:00
Bram Matthys 42d4d4a680 Compile fixes for Windows 2019-11-01 19:46:07 +01:00
Bram Matthys 7bf51f36a6 Fix column alignment in './unrealircd module list' 2019-11-01 17:25:36 +01:00
Bram Matthys 6402dfd2fe send_multinotice() -> sendnotice_multiline() 2019-11-01 13:12:40 +01:00
Bram Matthys dfa83aa6e5 Add module manager. See https://www.unrealircd.org/docs/Module_manager
Also update release notes and some unrelated changes.
BIG commits. Lots of work. Requires more testing.
2019-11-01 12:57:12 +01:00
Bram Matthys 801d359ad1 Allow importing build settings from UnrealIRCd 4.x, but don't copy 3rd party
modules as they wouldn't compile anyway.
2019-10-28 13:12:51 +01:00
Bram Matthys c105e6958c Update curl-ca-bundle to version of Wed Oct 16 03:12:09 2019 GMT
from https://curl.haxx.se/docs/caextract.html
2019-10-27 10:23:12 +01:00
Bram Matthys bcfa6389c2 Update shipped PCRE2 library from 10.32 to 10.33 (16 Apr 2019) 2019-10-27 10:18:14 +01:00
Bram Matthys 86ce42103a Make the 'silence' module optional. Suggested by westor in
https://bugs.unrealircd.org/view.php?id=5415
Technically we now provide 3 default efunc handlers that always return 0.
2019-10-27 09:40:55 +01:00
Bram Matthys 8bb5bda47a Pass correct modinfo argument to MOD_UNLOAD(). This fixes a crash
on SavePersistentPointer().
2019-10-27 09:33:37 +01:00
Bram Matthys e1e815bb2f Fix crash if 2+ REHASHes right after each other when also unloading
a channel mode module with parameters or a module with moddata.
2019-10-27 09:18:29 +01:00
Bram Matthys 72d71e30ce Fix unloading of chanmode modules crashing the server. Reported by westor
in https://bugs.unrealircd.org/view.php?id=5412
2019-10-27 09:07:43 +01:00
Bram Matthys 03cdf5043f Fix +f not detecting repeats in case of 1st message, REHASH, 2nd message.
This due to a missing SavePersistentPointer() on the siphash key.
[skip ci]
2019-10-27 08:52:07 +01:00
Bram Matthys be68a72b42 Hostile server: reject nicks that start with a digit in do_remote_nick_name() 2019-10-27 08:44:28 +01:00
Bram Matthys 5d7bd995fa Show correct idle time when a fresh user connects.
Reported by The_Myth in https://bugs.unrealircd.org/view.php?id=5454
2019-10-26 19:18:24 +02:00
Bram Matthys 298e9f2ea6 Advertise 'configtest' in './unrealircd' usage/help.
[skip ci]
2019-10-26 19:02:45 +02:00
Bram Matthys fb8055c6ef Add './unrealircd configtest' which tests the configuration but does
not actually start the server. Any warnings and errors are printed
only to the console.
Suggested in https://bugs.unrealircd.org/view.php?id=5219
2019-10-26 18:55:26 +02:00
Bram Matthys 52c8ef3815 get_sno_str -> get_snomask_string, get_mode_str -> get_usermode_string,
get_snostr -> get_snomask_string_raw, get_modestr -> get_usermode_string_raw
2019-10-26 11:42:05 +02:00
Bram Matthys 9b15c758cd make_virthost() -> make_cloakedhost() and change parameters:
/** Calculate the cloaked host for a client.
 * @param client        The client
 * @param curr          The real host or real IP
 * @param buf           Buffer to store the new cloaked host in
 * @param buflen        Length of the buffer (should be HOSTLEN+1)
 */
void make_cloakedhost(Client *client, char *curr, char *buf, size_t buflen)
2019-10-26 11:38:53 +02:00
Bram Matthys 21ef90e503 Document channel mode api and two other files. 2019-10-26 11:22:10 +02:00
Bram Matthys da5aefaad7 Get rid of class.h 2019-10-26 10:02:00 +02:00
Bram Matthys ab7a4af46a find_command(char *cmd, int flags) / find_command_simple(char *cmd) 2019-10-26 10:00:04 +02:00
Bram Matthys 9aff820d1a Find_* -> find_*, eg Find_alias -> find_alias. 2019-10-26 09:57:15 +02:00
Bram Matthys 64342a0d16 Document api-command.c and command API page. Change find_Command.
(more in next commit)
2019-10-26 09:56:18 +02:00
Bram Matthys 24c60fd85e Fix some doxygen tags (eg @notes to @note) 2019-10-26 09:33:09 +02:00
Bram Matthys 9c79ca6655 Document all functions in src/channel.c 2019-10-26 09:11:09 +02:00
Bram Matthys 9050011300 Document all functions in src/serv.c.
Also remove the DALINFO command.
2019-10-25 19:49:34 +02:00
Bram Matthys 86d15804a8 Document all functions in src/tls.c 2019-10-25 19:31:30 +02:00
Bram Matthys e9ab8fd45e Document all functions in src/support.c
And replace atime(str) with config_checkval(str, CFG_TIME)
2019-10-25 19:30:50 +02:00
Bram Matthys c45181d07f Document (doxygen) src/misc.c entirely 2019-10-25 14:29:14 +02:00
Bram Matthys 845f9ca8ed Uniform spelling: seetle on sync/synced/desync/desynced, rather than
synch/synched/desynch/desynched.
2019-10-25 14:07:58 +02:00
Bram Matthys c0f2e6be6a Remove src/extra.c and move the last function, ircd_log, to src/misc.c 2019-10-25 13:59:59 +02:00
Bram Matthys 47affa7f31 Move some DCCALLOW functions 2019-10-25 13:57:33 +02:00
Bram Matthys 51b0a7a373 Update HOOKTYPE_STATS: will now be called for unknown flags and for
all known flags as well. So you can now add stats via modules.
Only the stats help is currently missing if you do so.
=> Moved dccdeny stats to dccdeny
2019-10-25 13:51:22 +02:00
Bram Matthys 09854abade Move the dcc deny stuff into the dccdeny module, that is:
functions from extra.c, entire undccdeny and svsfline,
large functions that were in message.c and conf.c
2019-10-25 13:39:24 +02:00
Bram Matthys 88f45020d8 Remove outdated STATS Z and STATS R information. 2019-10-25 11:31:06 +02:00
Bram Matthys ec1b2c60f2 Remove src/cloak.c, integrate the function in src/user.c
(also move the related one from src/misc.c to the same place)
2019-10-25 11:26:08 +02:00
Bram Matthys 75fa6a25b8 Remove src/uid.c, integrate those two functions in src/user.c 2019-10-25 11:23:07 +02:00
Bram Matthys 84918ac68f Remove src/md5.c, integrate those two functions in src/misc.c 2019-10-25 11:19:18 +02:00
Bram Matthys 2fca0f9cc3 Remove src/kline.c, integrate these 15 lines in src/serv.c 2019-10-25 11:16:02 +02:00
Bram Matthys 6ffcf62272 Rename src/err.c to src/numeric.c 2019-10-25 11:10:12 +02:00
Bram Matthys cb4d2f9cf0 Get rid of set::new-linking-protocol and __PANGPANG__ stuff for
compatibility with old 3.2.x servers.
2019-10-25 10:58:04 +02:00
Bram Matthys 00aee86b66 Clean up and document all functions in src/socket.c. Also,
remove calls to and the finish_auth() function, which did nothing.
2019-10-25 10:51:18 +02:00
Bram Matthys 599f83cbd4 Move some #define's out of the way, some re-indenting, .. 2019-10-25 09:47:52 +02:00
Bram Matthys 13b5ccda4f Merge bsd.c into socket.c (delete src/bsd.c). 2019-10-25 09:38:27 +02:00
Bram Matthys db85de54ca Remove packet.c, now that it is empty. 2019-10-25 09:33:42 +02:00
Bram Matthys e6c7fcda7d Move "real command" stuff to src/api-command.c and move dopacket() to
src/parse.c. Also re-order functions in parse.c so they appear in
logical order (1->2->3->4) rather than various helper functions first
and some random order.
2019-10-25 09:32:30 +02:00
Bram Matthys 910477c94a Don't apply fake lag to servers 2019-10-25 09:13:05 +02:00
Bram Matthys fb0842216f Remove old bullet point in release notes that is now mentioned
a few lines up. [skip ci]
2019-10-19 18:32:54 +02:00
Bram Matthys 8e3ba03752 Convert remaining GLOBOPS to sendto_umode_global().
Yeah, don't worry, the GLOBOPS command will stay too, this is just
an internal cleanup.
2019-10-19 11:50:35 +02:00
Bram Matthys e0533c5f80 Use client id in SAJOIN and SAPART.
This will break logging and oper notices on U4, but we'll deal with that
later in some U4 release.
2019-10-19 11:45:08 +02:00
Bram Matthys 5960c76102 Fix SETNAME not working, reported by s and The_Myth in
https://bugs.unrealircd.org/view.php?id=5453
It had the match_spamfilter() logic reversed. I audited all other
calls to the function as well and they are fine.

Also, CHGHOST CHGIDENT CHGNAME SETHOST SETIDENT SETNAME are now
tested by the test framework.
2019-10-19 08:52:59 +02:00
Bram Matthys 04171f7f20 Clean up m_message a bit 2019-10-18 15:00:52 +02:00
Bram Matthys a72482bbb2 Fix PRIVMSG/NOTICE showing send UID/SID to end-user due to change from
a few days ago. Reported by westor.
2019-10-18 14:10:01 +02:00
Bram Matthys 5cd7134cc2 Reject invalid SID from PROTOCTL. 2019-10-18 14:00:46 +02:00
Bram Matthys 9171d58ad0 Some unimportant changes
[skip ci]
2019-10-18 13:54:40 +02:00
Bram Matthys b9d432820b Update ./Config and the more/less screen, now that release notes are
online (or in markdown format, anyway) we can skip some stuff.
2019-10-18 08:42:06 +02:00
Bram Matthys 6dffe38bd3 Update release notes a bit
[skip ci]
2019-10-18 08:36:01 +02:00
Bram Matthys e2158e3608 Fix possible lack of string termination (NUL) in buildvarstring() 2019-10-17 21:01:55 +02:00
Bram Matthys 3a3c5b9c55 Remove an abort() 2019-10-17 07:44:43 +02:00
Bram Matthys ff067cd826 More kill path stuff gone now. 2019-10-17 07:32:45 +02:00
Bram Matthys 49c2f7c2c3 Get rid of this whole kill path nonsense. 2019-10-16 11:11:46 +02:00
Bram Matthys bed8a0ca2b Remove set::oper-only-stats from config. Don't mention set::allow-user-stats
there since that is a niche feature that 99% is unlikely to use.
2019-10-14 18:50:24 +02:00
Bram Matthys d0b9b02d05 We no longer use a blacklist for stats (set::oper-only-stats) but
have a whitelist now instead (set::allow-user-stats).
Suggested by tabrisnet, The_Myth and Jobe in
https://bugs.unrealircd.org/view.php?id=3375 and
https://bugs.unrealircd.org/view.php?id=5109
2019-10-14 18:46:14 +02:00
Bram Matthys 63298af6b2 Get rid of BREPORT_xx mess. 2019-10-14 17:36:04 +02:00
Bram Matthys 87406d752b Fix crash on set::official-channels and deprecate it's use. Use +P channels
instead now that all settings are preserved accross restarts.
2019-10-14 16:10:27 +02:00
Bram Matthys 446f9a89c3 Assume password is sent when allow::password is cert/certfp and client
has a SSL/TLS fingerprint. Reported by Stealth in:
https://bugs.unrealircd.org/view.php?id=3372
2019-10-14 15:08:37 +02:00
Bram Matthys 43593d12cb netinfo.c & server.c: use sendto_umode_global() rather than 2 functions. 2019-10-14 12:23:09 +02:00
Bram Matthys e1b0b0bc8e Make tracing bugs easier if you used AddListItem twice - or at least
detect some cases of it (it will not detect the case where it is
a single-item list).
2019-10-14 08:53:05 +02:00
Bram Matthys f9ec129bbd Make hunt_server() use SID/UID for sender and destination.
Hopefully this doesn't break anything...
2019-10-14 08:34:16 +02:00
Bram Matthys 1a1ce5716e Move hunt_server from user.c to serv.c (makes sense). 2019-10-14 08:33:12 +02:00
Bram Matthys cc36b34f93 Remove unnecessary (void) casts everywhere.
Only use (void) for system/library calls that you want to ignore
explicitly, eg (void)close, if the return value is irrelevant.
2019-10-14 08:23:30 +02:00
Bram Matthys c60bd2e441 Try to use more me.id where possible (rather than me.name) 2019-10-14 08:09:57 +02:00
Bram Matthys d724bdc492 Finish up changes from yesterday. 2019-10-14 07:49:23 +02:00
Bram Matthys f40c9f3c88 Change various client->name to client->id in S2S traffic. More to
follow tomorrow, including me.name to me.id changes (though these
are far less important) and send.c + non-sendto_server hunts...
2019-10-13 20:41:13 +02:00
Bram Matthys 44f9423e13 Remove ID() macro as client->id always contains a proper UID now. 2019-10-13 20:11:58 +02:00
Bram Matthys 1dde1721ad Reorder functions in nick.c in a more logical way. No actual code changes.
[skip ci]
2019-10-13 19:47:26 +02:00
Bram Matthys b9a0f938c0 Cleanup cmd_user since it's now client-only and move the server-bits into cmd_uid. 2019-10-13 19:43:41 +02:00
Bram Matthys a970e5ed9b Fix far connect notice to IRCOps being in incorrect format. 2019-10-13 18:48:56 +02:00
Bram Matthys 2c337dc58b Split off cmd_nick in cmd_nick_local and cmd_nick_remote and clean it up.
Also, partially cleanup cmd_uid, but still work to be done there (the
last part).
2019-10-13 18:39:10 +02:00
Bram Matthys 746ea5b558 Clean up cmd_server / cmd_sid now that 100% of the network is SID. 2019-10-13 16:22:56 +02:00
Bram Matthys 154aab6ec4 No need for clear functions since PROTOCTL does not allow it. 2019-10-13 09:42:29 +02:00
Bram Matthys bcfd2ab529 Rip out support for servers lacking TKLEXT/TKLEXT2 (always send TKLEXT2 format) 2019-10-13 09:39:00 +02:00
Bram Matthys 560b73b6f7 Similar to previous commits, but for UMODE2. Actually no change, though,
since lack of UMODE2 was not supported in U4 anyway (maybe even 3.2.x).
2019-10-13 09:35:31 +02:00
Bram Matthys a9890448d8 Rip out support for servers lacking SJ3 2019-10-13 09:33:39 +02:00
Bram Matthys 545c2560e6 Rip out support for servers lacking SIDs/UIDs.
More cleanups will follow later for this one.
2019-10-13 09:24:26 +02:00
Bram Matthys 930ede1c86 Rip out support for servers lacking SJOIN/SJOIN2 2019-10-13 09:09:59 +02:00
Bram Matthys 0670bfffb9 Rip out support for servers lacking NICKIP 2019-10-13 08:59:26 +02:00
Bram Matthys fb4d994f40 Rip out support for servers lacking NOQUIT. 2019-10-13 08:56:05 +02:00
Bram Matthys 8d5f896790 Rip out support for servers lacking NICKv2 2019-10-13 08:54:16 +02:00
Bram Matthys c9b88343e2 Fix not seeing own nick change if not in any channels. Reported by westor. 2019-10-12 17:26:29 +02:00
Bram Matthys bbf2cd3a3e Fix incorrect relaying of numeric replies from remote servers (eg WHOIS nick nick). 2019-10-12 17:18:12 +02:00
Bram Matthys 8383b714ce Fix crash on SASL. Reported by westor. 2019-10-12 15:41:58 +02:00
Bram Matthys 742e27802e Fix 100% CPU issue with message-tags after REHASH. (this fix is in alpha4) 2019-10-12 09:12:17 +02:00
Bram Matthys f5137678ff Update 5.0.0-alpha4 release notes a bit. 2019-10-12 08:42:40 +02:00
Bram Matthys d55eb642e5 Fix 421 in restrict-commands, again. 2019-10-11 20:42:05 +02:00
Bram Matthys 139e5faae6 UnrealIRCd 5.0.0-alpha4 (release tomorrow) 2019-10-11 20:31:15 +02:00
Bram Matthys 03645750f1 Protect against services that don't reply to SASL: time out the SASL
session after a 15 seconds timeout. The exact timeout value can be
changed by adjusting set::sasl-timeout, which should be (quite a bit)
less than set::handshake-timeout by the way. 15<30 now, so fine.
2019-10-11 19:17:59 +02:00
Bram Matthys 3c4d14ca58 Warn about the necessity of an anope patch, which is pending since February... 2019-10-11 18:55:01 +02:00
Bram Matthys 96509f6802 except tkl { } -> except ban { } in example*conf
[skip ci]
2019-10-11 17:57:33 +02:00
Bram Matthys 9f2530fdb7 Fix 421 numeric syntax if command is blocked (commit from yesterday).
Reported by westor.
2019-10-11 17:07:28 +02:00
Bram Matthys ff5f2d97a0 Some release notes markdown changes (always fun when 3 markdown editors
show the output in 3 different ways, and github is even different)
[skip ci]
2019-10-11 16:24:24 +02:00
Bram Matthys 62352c2b70 Update release notes, refer to web/github or the .md file. 2019-10-11 16:19:54 +02:00
Bram Matthys a5e6fb4a12 Convert release notes to markdown (add many links)
[skip ci]
2019-10-11 15:58:55 +02:00
Bram Matthys 65f6b97ea7 Advertise as "draft/labeled-response-0.2" rather than "draft/labeled-response".
[skip ci]
2019-10-11 15:58:23 +02:00
Bram Matthys 98f1974c8f Don't fall through (fix for previous commit). 2019-10-11 15:01:19 +02:00
Bram Matthys 77bee69951 Fix Windows build 2019-10-11 14:46:13 +02:00
Bram Matthys 394168c288 Style fixes: "char* " -> "char *" etc. 2019-10-11 12:23:45 +02:00
Bram Matthys ccaec871bb And some fixes, to previous commits and older issues. 2019-10-11 12:19:04 +02:00
Bram Matthys aec54db360 Add is_extended_ban() which does a quick check for "~x:". This, rather
than scattered checks - which are sometimes different - everywhere in
the source code.
Also extban handler "is_ok" was being called with EXBTYPE_EXCEPT
rather than EXBTYPE_INVEX for +I. (Not reported by anyone)
2019-10-11 11:17:50 +02:00
Bram Matthys 33c176e59e Juse in case pcre2_get_error_message() fails... 2019-10-11 11:17:29 +02:00
Bram Matthys 1d0fa3278f Protect against flawed S2S traffic: more checks for bad base64
encoded IP addresses.
2019-10-11 11:16:16 +02:00
Bram Matthys 3d81c7101c Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2019-10-10 19:51:56 +02:00
Bram Matthys f7a35bd77e Fix for change from yesterday in JOIN: parv[1] would point to
a stack buffer in do_join but it goes out of scope after a return
from that function, still pointing to invalid data. Duh.
2019-10-10 19:46:08 +02:00
GottemHams be571f81c6 Changed snotice to numeric 421 for commands disabled/restricted by the restrict-commands module 2019-10-09 21:00:41 +02:00
Bram Matthys 80353cd7d3 Win......
[skip ci]
2019-10-09 19:24:09 +02:00
Bram Matthys e1fdba7931 Windows....................... 2019-10-09 19:16:34 +02:00
Bram Matthys 62110778dd Silence Windows compiler warning 2019-10-09 18:55:04 +02:00
Bram Matthys 04334f022e Fixes for Windows build 2019-10-09 18:20:06 +02:00
Bram Matthys 22dec96f9a No clean_channelname() anymore but a valid_channelname() function. Also,
deal with servers with different set::allowed-channelchars settings:
* We reject the link if set::allowed-channelchars settings differ between
  UnrealIRCd 5 servers.
* For the case where you have a mixed network consisting of UnrealIRCd 4.x
  and UnrealIRCd 5.x servers we try not to desync, BUT will not allow
  anyone to join the invalid channels locally. For IRCOps a message is
  printed with additional information on such a failed JOIN attempt.
See https://www.unrealircd.org/docs/Set_block#set::allowed-channelchars
for the different settings, which are best and U4<->U5 advice.
2019-10-09 18:11:02 +02:00
Bram Matthys fbbd915403 Reject link if set::allowed-channelchars differ. 2019-10-09 15:59:59 +02:00
Bram Matthys 798b223ee3 Convert some more stuff to enums (config preprocessor mostly). 2019-10-06 07:54:46 +02:00
Bram Matthys d2a93c3a03 websocket module will now only disable show-connect-info on the ports
that have listen::options::websocket. It will no longer disable it
on all ports.
2019-10-06 07:37:55 +02:00
Bram Matthys ba7ff01e0f Remove some unnecessary checks 2019-10-06 07:25:31 +02:00
Bram Matthys 24f73d8c4f Crash fixes for can_send_to_user / can_send_to_channel from earlier. 2019-10-05 18:31:29 +02:00
Bram Matthys c399aab016 Support for labeled-response in LIST (I really wanted this) 2019-10-05 18:21:47 +02:00
Bram Matthys f992a0c1c0 Finish up labeled-response implementation. Load by default to get the
thing tested. Will do at least 1 other commit soon related to this.
2019-10-05 17:33:22 +02:00
Bram Matthys b3947c7a14 Use proper HOOK_* return types in HOOKTYPE_PRE_LOCAL_CONNECT, fixes crashes. 2019-10-05 15:19:40 +02:00
Bram Matthys 9a8fd43873 ISON response was incorrect 2019-10-05 15:04:54 +02:00
Bram Matthys b2705089ce Clean up floodprot_*nickchange now that the prototypes are the same
for local and remote. Suggested by westor.
2019-10-05 13:00:18 +02:00
Bram Matthys 2eecf4f2da Use generic numeric 531 (ERR_CANTSENDTOUSER) for all such cases and use hook
CAN_SEND_TO_USER rather than HOOKTYPE_PRE_USERMSG (which is now removed).

As for the numeric change: this makes it much easier for client devs.
You rarely need to differentiate in the client code between the various
causes. One only cares about detecting that the message was not sent and
that the user needs to be informed.
This replaces various NOTICEs, ERR_NOCTCP, ERR_NONONREG etc. with just the
new numeric 531, which is taken from InspIRCd. The syntax is:
:server 531 yourname targetname :reason for the block
This makes it similar to numeric 404 (ERR_CANNOTSENDTOCHAN) that is used to
indicate that a channel message was blocked.

For module devs, the new hook CAN_SEND_TO_USER prototype is:
int hooktype_can_send_to_user(Client *client, Client *target, char **text, char **errmsg, int notice);
You can replace the text via this, by setting *text in your function.
You can block the message, by returning HOOK_DENY. If doing so, then
you must also set *errmsg to an appropriate value.
Do not send any error message to the user! UnrealIRCd will take care of
sending the error message for you, if you set *errmsg.
Only if you need something special you could violate this rule, but
preferably not!

As you can see, CAN_SEND_TO_USER works just like CAN_SEND_TO_CHANNEL.
2019-10-05 12:53:41 +02:00
Bram Matthys 4a59e66af2 Fix for previous 2019-10-05 09:55:28 +02:00
Bram Matthys df71812707 HOOKTYPE_CAN_SEND and HOOKTYPE_PRE_USERMSG changes:
1) HOOKTYPE_CAN_SEND is now called HOOKTYPE_CAN_SEND_TO_CHANNEL
   The arguments and return values are unchanged
2) similarly can_send() is now called can_send_to_channel()
3) If you want to block or alter a message you must now
   use HOOKTYPE_CAN_SEND_TO_CHANNEL and return HOOK_DENY from
   there with an appropriate *errmsg filled (see nocolor and
   many other modules for an example)
4) You CANNOT use HOOKTYPE_PRE_USERMSG anymore to block a message.
   I actually wanted to rip this hooktype out entirely, but
   delayjoin needs it. HOOKTYPE_PRE_USERMSG is only useful for
   notification that a message is going to be sent BEFORE it is
   actually sent (which is exactly what delayjoin needs, so it
   can send a JOIN if the user is currently invisible).
5) This is all to make things more clean:
   * HOOKTYPE_PRE_USERMSG is only for delayjoin
   * HOOKTYPE_CAN_SEND_TO_CHANNEL is used for exactly what the
     name implies. You can also change the message text there,
     such as for +G, +S, etc.
2019-10-05 09:48:33 +02:00
Bram Matthys 798f502875 Mass change (at least this one could be fully automated): 'chptr' -> 'channel'
to be consistent with the 'sptr' -> 'client' rename earlier.
2019-10-05 08:49:10 +02:00
Bram Matthys c2d7da6e35 Rename channel list to 'channels', for next commit. 2019-10-05 08:47:24 +02:00
Bram Matthys 858debdd01 Protect against duplicate PROTOCTL EAUTH (possible memleak) 2019-10-05 07:49:54 +02:00
Bram Matthys 3a64077f51 Use 'client' everywhere (if there is no confusion) instead of 'sptr' or 'cptr'.
This so I - and others - don't constantly have to wonder whether the client
is called sptr, cptr or acptr in a simple routine.
Insane --> 212 files changed, 6814 insertions(+), 6945 deletions(-)
Couldn't just mass-replace of course since there are places where there
are multiple clients involved. So had to check each function.
Also renamed some 'acptr' to 'target' and such.

I will write a page with new style rules later.. but in short if there is
only 1 client involved it will now be called 'client'.
2019-10-04 15:25:35 +02:00
Bram Matthys 40cd6aa639 Get rid of reference counting in User, which was unused. 2019-10-04 13:25:56 +02:00
Bram Matthys 9d98e6b411 do_join: int -> void 2019-10-04 13:22:53 +02:00
Bram Matthys e8c17e3aed Get rid of pseudo ID's. This also means that SASL with anope won't work
anymore if you run latest anope 2.0.6. You need the fix from Feb 9, 2019:
https://github.com/anope/anope/commit/da6e2730c259d6d6356a0a948e85730ae34663ab
(.. which also fixes SASL problems with anope + UnrealIRCd 4 by the way)
or just run anope latest git (2.0 branch).

Not sure about atheme... should test this.

Technical details: we used a pseudo ID / sasl cookie until recently,
this has always been planned to be phased out when we got UID's.
I didn't phase it out in U4 (but could have done so) but just did now in U5.
This simplifies everything as now you can just refer from the services
side to the user with the UID/SID. This also makes it so services can now
target the user in other functions as well, like NOTICE.
(Feel free to request other functions if something isn't working)
2019-10-04 13:13:46 +02:00
Bram Matthys 999fde8fee Update release notes (the module coders section) on the recent changes. 2019-10-04 12:38:01 +02:00
Bram Matthys 3d5e49e701 Get rid of FLUSH_BUFFER, since we no longer signal things that way.
Merge check_init and AllowClient into one single AllowClient()
and make it use the more logic 1 and 0 return values for allow / deny.
Similarly, use logic 1 / 0 return values for verify_link.

Module coders:
HOOKTYPE_CHECK_INIT and HOOKTYPE_PRE_LOCAL_CONNECT, changed the
return value, you should now use HOOK_*, eg HOOK_DENY to stop
processing (eg client killed).
2019-10-04 12:30:51 +02:00
Bram Matthys 3f18cf5ea1 find_shun() return value change, simply 1 / 0 now. 2019-10-04 11:41:12 +02:00
Bram Matthys 9e4dbf8c89 dead_link() -> dead_socket() since that is more descriptive 2019-10-04 11:36:34 +02:00
Bram Matthys cbe20e1d5a check_unknowns -> handshake_timeout, check_tkls -> match_tkls and inversion
of the return value.
2019-10-04 11:35:51 +02:00
Bram Matthys 92df36a87f Return values of various functions changed, in particular the ones
that deal with finding TKL's or spamfilters etc.
More will likely follow, to make things more logical.
Also, run_spamfilter -> match_spamfilter
place_host_ban, can_privmsg, check_dcc, find_tkline_match all impacted.
2019-10-04 11:30:27 +02:00
Bram Matthys 3126a3fae4 BIG changes internally that will break all modules and required many
code changes in UnrealIRCd itself:
1) Clients are no longer freed directly by exit_client. Most fields
   are freed, but 'sptr' itself is not, so you can use IsDead() on it.
2) exit_client now returns void rather than int
3) ALL command functions return void rather than int.
   Of course this also affects do_cmd, command overrides, etc.

This is a direct consequence of the removal of 'cptr' earlier, as that
was used to signal certain things that are now no longer possible
(and it raises the question if things were always correctly signaled
in the first place, so may fix some bugs).
It also makes the code more resillient against cases where you forgot
to check if the client was freed. Still, you are encouraged to do an
IsDead(sptr) if you are calling functions that may kill clients,
such as command functions or things that may use spamfilter.

More changes will follow, such as the removal of FLUSH_BUFFER.
2019-10-04 10:28:41 +02:00
Bram Matthys ea6651fb26 More Windows fixes
[skip ci]
2019-10-02 15:00:35 +02:00
Bram Matthys 0092263fee Possibly fix Windows build 2019-10-02 14:55:15 +02:00
Bram Matthys ab3feff7c2 exit_client() now takes 3 parameters rather than 5:
** Exit this IRC client, and all the dependents (users, servers) if this is a server.
* @param sptr        The client to exit.
* @param recv_mtags  Message tags to use as a base (if any).
* @param comment     The (s)quit message
* @returns FLUSH_BUFFER is returned if a local client disconnects,
*          otherwise 0 is returned. This so it can be used from
*          command functions like: return exit_client(sptr, ....);
2019-10-02 14:54:09 +02:00
Bram Matthys 1c746afdf1 Fix broken build by last minute change 2019-10-02 14:45:25 +02:00
Bram Matthys 4ac8015f84 Remove 'cptr' from all commands, hooks, etc. It only confuses people and
'sptr' is sufficient and in most cases the only one you should care about.
Should you need it, you can access sptr->direction in cases where you
need the old information (usually only for some sendto_* functions
and some protoctl checks), so 'cptr' was redundant too.

[!] This change likely introduces some bugs. This was many hours of work.
I only cut some corners in 4 functions, which will be fixed at a later
stage..... yes, more major changes to come.

On the plus side, I likely fixed some bugs in the process. Situations
where cptr vs sptr usage was incorrect. Eg using cptr->name (near server)
when sptr->name should be used (the actual source server), etc....
2019-10-02 14:25:40 +02:00
Bram Matthys 396ae3f218 Module coders: rename M_* to CMD_*, eg M_SERVER -> CMD_SERVER.
Also add more doxygen documentation.
2019-09-30 10:25:26 +02:00
Bram Matthys 9d7cf312cf Cleanup main line parsing code, move do_numeric() to parse.c.
Add complete doxygen documentation for parse.c.
2019-09-30 08:56:21 +02:00
Bram Matthys d7ef752888 Detect combination of non-UTF8 nickchars in use and websocket type text.
In such a case we refuse to run since the consequences are too big.
(Actually I may change the non-UTF8 channel warning to an error as well,
 right now it isn't.. simply because I cannot read a certain setting)

From both the non-UTF8 channel and user warning/error, we now refer to:
https://www.unrealircd.org/docs/WebSocket_support#websockets-and-non-utf8
which contains a bit more detailed information as to the WHY.
2019-09-23 10:20:38 +02:00
Bram Matthys 9669e32447 test set { } settings before all the rest 2019-09-23 09:33:57 +02:00
Bram Matthys 0b5a4bf51d Compile fix for Windows 2019-09-23 08:29:46 +02:00
Bram Matthys 3f5ea851cb Do a better job at detecting ASan 2019-09-23 08:14:41 +02:00
Bram Matthys 4ae374477f Add websocket support for 'text' instead of current 'binary'. And change
how you use websockets in the configuration file:
In addition to loading the websocket module you now ALSO have to mark
specific listen blocks with listen::options::websocket, and you have
to specify a type as well. Example:
listen {
	ip *;
	port 1234;
	options {
		websocket { type binary; }
	}
}
The type 'text' is compatible with kiwi although this is currently
completely untested. Also I should add something to the release notes
about this change. Tomorrow...
2019-09-22 20:49:37 +02:00
Bram Matthys d9e8206b80 Fix memory leak in modules.c 2019-09-22 20:20:25 +02:00
Bram Matthys 5a57eec4c7 Channel names must now be valid UTF8 by default.
We actually have 3 possible settings of set::allowed-channelchars:
utf8:  Channel must be valid UTF8, this is the new default
ascii: A very strict setting, for example in use at freenode,
       the channel name may not contain high ascii or UTF8
any:   A very loose setting, which allows almost all characters
       in the channel name. This was the OLD default, up to and
       including UnrealIRCd 4. It is no longer recommended.
For most networks this new default setting of utf8 will be fine, since
by far most IRC clients use UTF8 for many years already.
If you have a network that has a significant portion of chatters
that are on old non-UTF8 clients that use a specific character set
then you may want to use set { allowed-nickchars any; }
Some Russian and Ukrainian networks are known to need this.

Devs: src/utf8.c has been added which will be used by this and
by other functionality later.
2019-09-22 18:42:21 +02:00
Bram Matthys cd713369b1 Update Windows makefile, was missing ident_lookup.
[skip ci]
2019-09-22 15:25:56 +02:00
Bram Matthys 6687591bb0 Fix for build without DEBUGMODE. 2019-09-22 15:06:47 +02:00
Bram Matthys 5b8f393a8f * EventAdd() changed the order of parameters and expects every_msec now
which specifies the time in milliseconds rather than seconds. This
  allows for additional precision, or at least multiple calls per second.
  The minimum allowed every_msec value is 100 at this time.
  The prototype is now: EventAdd(Module *module, char *name,
  vFP event, void *data, long every_msec, int count);
2019-09-22 15:05:00 +02:00
Bram Matthys 4d277ccef8 Clean up and comment SocketLoop. Also preparations for later. 2019-09-22 14:20:22 +02:00
Bram Matthys b17deb7517 Fix for previous commit. See also the notes there :D 2019-09-22 13:35:17 +02:00
Bram Matthys 117a87dd8e I/O engine performance improvements (and fixes)
This is work in progress. The work was already done but the patch was
postponed until after alpha3 since it's not sufficiently stable yet.
2019-09-22 08:43:27 +02:00
Bram Matthys 784ba625ec Fix crash shortly after THROTTLE RESET. Bug was introduced yesterday
with commit b4636f183c
2019-09-22 08:24:05 +02:00
Bram Matthys 97cf32c941 Compile fix for Windows 2019-09-21 18:31:49 +02:00
Bram Matthys e846596b37 UnrealIRCd 5.0.0-alpha3 2019-09-21 18:19:33 +02:00
Bram Matthys c3f250750b Add support for storing ELINEs in tkl.db. Reported by westor in
https://bugs.unrealircd.org/view.php?id=5418
2019-09-21 18:12:20 +02:00
Bram Matthys 953cb774ad ASan: log to tmp/unrealircd_asan.<pid> and attach this if the IRCd
crashes (has a core file) to the crash bug report.
Also, disable leak detection since this is too noisy and would cause
a core dump each time + bothering the user to submit a crash report
+ send this crashreport etc. We still enable this in our own tests
though, but not for end-users.
2019-09-21 18:04:30 +02:00
Bram Matthys 4ecd7cca4c Fix memory leak when unloading an ISupport module. 2019-09-21 16:52:27 +02:00
Bram Matthys b4636f183c connthrottle: use SavePersistentPointer/LoadPersistentPointer rather
than temporary file to dump and read current settings (the old method).
2019-09-21 16:41:23 +02:00
Bram Matthys 330cf9ed24 Remove confusing information regarding /TSCTL. 2019-09-21 16:29:53 +02:00
Bram Matthys 83492a613d Fix memory leak in modules codes. 2019-09-21 16:07:44 +02:00
Bram Matthys dd536b4a92 Fix memory leak with conditional config.
And remove the comment which predicted this memory leak (:D)
2019-09-21 16:05:15 +02:00
Bram Matthys f88f30c815 Mark delayjoin module as perm, as we don't support dynamic unloading this,
which would be too much coding effort for such an unusual event.
(Reloading is fine though, for eg upgrading-on-the-fly)

Issue reported by westor in https://bugs.unrealircd.org/view.php?id=5416
2019-09-21 15:31:46 +02:00
Bram Matthys 4426cdacc9 Disable the warning from 95f9c56a16
that was not supposed to be committed :D
It would also warn about if'd out blocks, which is confusing,
so best to disable the warning altogether for now.
2019-09-18 20:09:10 +02:00
Bram Matthys b24fe0f336 Just in case someone uses a set::anti-flood::connection-flood of X:1... 2019-09-18 19:37:08 +02:00
Bram Matthys 95f9c56a16 Add warning if an unknown $VAR is encountered (without @define).
Also, you can escape a $VAR to $$VAR if you really just mean $VAR literally.
Such usage would be very rare though.
Note that the parser is smart enough to know that $var is never a
global variable, it only warns for valid variable names like $VAR and
even then only if it's at the end or has whitespace/dot/comma/etc.
So... false positives should be extremely low...
2019-09-18 09:43:45 +02:00
Bram Matthys 2c9be4eb97 Conditional conf: syntax is now always @define $VAR "xyz". Also restrict
the variable names to UPPERCASE, digits and underscores (A-Z0-9_).
This makes them easily distinguishable from other items in the conf,
so they don't clash with for example $ip in blacklist::reason.

The @define confusion was reported by Gottem and westor.
2019-09-18 08:49:27 +02:00
Bram Matthys 41f2b5f884 Fix some more numerics with incorrect arguments in U5: WATCH and failed
to JOIN reasons, such as when banned.
2019-09-17 18:53:35 +02:00
Bram Matthys 66345246ef Fix incorrect /ADMIN output, reported by westor. 2019-09-17 18:29:09 +02:00
Bram Matthys b2cfc6de69 Fix double free in AWAY due to changes of past week. 2019-09-16 07:41:33 +02:00
Bram Matthys 70a8985d43 Compile with -fno-common 2019-09-15 16:57:45 +02:00
Bram Matthys 54cb647925 Fix odd looking remote /REHASH message to globops. 2019-09-15 15:47:56 +02:00
Bram Matthys f3ec97ee23 floodprot (+f): fix issue where 't' was kicking innocent users due to
flooding. The 't' action was activated in if no 'r' type was present
because the counter was not reset.
https://bugs.unrealircd.org/view.php?id=5401
2019-09-15 15:33:30 +02:00
Bram Matthys c7c3fbdfa8 struct stats *ircstp; -> IRCStatistics ircstats; (for statistics, /STATS) 2019-09-15 14:48:45 +02:00
Bram Matthys bea2564e5d IRCStatistics ircstats; -> IRCCounts irccounts; (this is used for LUSERS) 2019-09-15 14:39:51 +02:00
Bram Matthys 677afe9ca4 Don't use memory pools when using ASan, since it would miss things.
-> See my comment in src/mempool.c
2019-09-15 14:37:59 +02:00
Bram Matthys f81f221b13 Use memory pool for Client and LocalClient. Also reorder struct a bit. 2019-09-15 12:28:50 +02:00
Bram Matthys 1a24a634e5 Make Link functions (make_link, free_link) use memory pool code.
Also clean up a bit.
2019-09-15 11:33:17 +02:00
Bram Matthys edb199841a Move all the (remaining) LIST stuff to modules/list and use ModData. 2019-09-15 11:07:15 +02:00
Bram Matthys 085c0f0c4e Move jointhrottle data from moddata_client to moddata_local_client
since we only count for local users.
2019-09-15 09:50:27 +02:00
Bram Matthys ffe5abe30b ModData: moddata_localvar -> moddata_local_variable,
moddata_globalvar -> moddata_global_variable,
and the just-added moddata_localclient -> moddata_local_client
..all this so it's more consistent
2019-09-15 09:47:54 +02:00
Bram Matthys b2f32c1746 Add moddata_localclient(), which is for locally connected clients only.
Make the silence module use this.
2019-09-15 09:26:54 +02:00
Bram Matthys 654919f2c4 Make modules/silence use ModData and remove more out of the core.
It uses a Silence struct now, rather than Link.
Also, SILENCE is handled only for local clients now (different
cost/benefit tradeoff nowadays).
2019-09-15 09:03:30 +02:00
Bram Matthys 6cc94b4b11 Move add_silence and del_silence out of the core to modules/silence 2019-09-15 07:52:04 +02:00
Bram Matthys 2b2fb8906e Zero memory in make_link() - needed since memory changes of today. 2019-09-14 21:03:12 +02:00
Bram Matthys 7c9a188cb7 Done. New rule: use safe_alloc, safe_free, safe_strdup,
do NOT use malloc/calloc/free.
2019-09-14 17:26:55 +02:00
Bram Matthys f2e3712d62 Remove various if's and such that are now unneeded
This is part 5 of the memory function / caller changes.
2019-09-14 17:23:07 +02:00
Bram Matthys a75d10d3e4 Some remaining malloc() calls -> safe_alloc()
Unimportant, but this way 100% of those is done.
This is step 4 of X of the memory function / caller changes.
2019-09-14 17:15:15 +02:00
Bram Matthys 950fc5001e Update memory allocation calls, step 3 of X
This changes free() calls to safe_free().
This mass change could be automated and unaudited, fortunately.
2019-09-14 17:12:37 +02:00
Bram Matthys 9fc1e758ab Mass change of dst = strdup(str) to safe_strdup(dst,str) but with a manual
audit since 'dst' must now be initialized memory.
There's still a raw_strdup() if you insist.

This is step 2 of X of memory allocation changes
2019-09-14 16:58:01 +02:00
Bram Matthys de87b439b7 Update memory allocation routines. Step 1 of X. 2019-09-14 16:52:53 +02:00
Bram Matthys 7c6358024c Add 'natural order' string comparison to core: strnatcmp and strnatcasecmp
extern int strnatcmp(char const *a, char const *b);
extern int strnatcasecmp(char const *a, char const *b);
This will be handy for version comparisons. For example they will
return -1 (=lower) for things like ("1.4.9", "1.4.10"), unlike strcmp.

Also, some loosely related spelling fixes elsewhere.
2019-09-14 08:12:47 +02:00
Bram Matthys f1f0acdd25 ident_lookup: reject spaces and control characters early.
...even though in m_nick there is code so it never gets into
sptr->user->username.
2019-09-13 19:37:28 +02:00
Bram Matthys 9b14970c2a Move ident lookups to module 'ident_lookup' and rewrite the code
to be a bit less ugly. The module is loaded by default so you can
still use set::options::identd-check like before, even though I
hate ident... it's old shit... still, other's seem to like it.

More changes will follow later. There is still some ident stuff
in the core at the moment and the module is currently PERM, which
largely (but not entirely) defeats the purpose of being a module.
That will be fixed at a later time as well.
2019-09-13 19:21:29 +02:00
Bram Matthys 3592d8db3a Update name in first few lines of .c files.
Eg: src/modules/m_away.c is src/modules/away.c nowadays.
2019-09-13 15:46:20 +02:00
Bram Matthys baf02e8980 Rename all m_* functions to cmd_* functions. 2019-09-13 15:45:19 +02:00
Bram Matthys bb1bb35f50 MOD_LOAD(xyz) is now just MOD_LOAD(), same for MOD_TEST, MOD_INIT,
MOD_UNLOAD. And MOD_HEADER(xyz) is now MOD_HEADER even without ()
since this isn't a function, really.
To make things understandable I added the following to the
developer section of the release notes:

* The module header is now as follows:
  ModuleHeader MOD_HEADER
    = {
          "nameofmodule",
          "5.0",
          "Some description",
          "Name of Author",
          "unrealircd-5",
      };
  There's a new author field, the version must start with a digit,
  and also the name of the module must match the loadmodule name.
  So for example third/funmod must also be named third/funmod.
* The MOD_TEST, MOD_INIT, MOD_LOAD and MOD_UNLOAD functions no longer
  take a name argument. So: MOD_INIT(mymod) is now MOD_INIT()
2019-09-13 15:27:40 +02:00
Bram Matthys 9114c0ed85 The name of the module must now match the relative path, e.g.
the chanmodes/delayjoin module must be named chanmodes/delayjoin
in the module header.
This because currently we have two module names for each module,
one is the name from the MOD_HEADER and the other is the
relative path, such as used by loadmodule and is_module_loaded().

This commit also (not entirely, but practically) breaks loading
of modules outside the regular modules path. I don't think that's
a problem, although it could use a bit more documentation.
2019-09-13 15:09:07 +02:00
Bram Matthys b40981f0ab Prevent a dlopen() if module is already loaded (instead of ~50 lines
further down). This is in case you have two loadmodule lines, which
isn't particularly unusual. Saves some CPU too....
2019-09-13 14:52:57 +02:00
Bram Matthys 5c209bf6ca require-module: CONFIG_RUN: only return 1 for settings that are for us. 2019-09-13 09:46:41 +02:00
GottemHams 43b03e75a6 Fixed some now-outdated comments in require-module, also send deny module notices globally instead of locally and change the default message for this 2019-09-12 21:45:33 +02:00
GottemHams 4a85e4cd8b Load require-module by default [skip-ci] 2019-09-12 20:54:09 +02:00
GottemHams ab7cdbf2a7 Fix a couple of bugs recently introduced in require-module, also delay SQUITting until after the current SMOD command has been parsed 2019-09-12 19:48:33 +02:00
Bram Matthys 70410b3f33 Remove unused variables (67 files done, will do rest another time). 2019-09-12 17:57:01 +02:00
Bram Matthys 8d2dad4796 chanmodes/floodprot: remove old +f 1:1 conversion code, cleanup a bit
and remove unused variables (unused now, that is).
2019-09-12 16:49:20 +02:00
Bram Matthys c3f7bbd9c0 require-mode: account for a little bit more room in S2S command
(not just hostname but also the command "SMOD" etc.. let's just say
16 bytes for now)
..and some minor cleanups of variables that are not needed.
2019-09-12 07:55:34 +02:00
Bram Matthys cafe3cfd6d Some S2S command changes to new require-modules module:
REQMODS Gmodname:version ....
to:
SMOD G:modname:version ....
Also, call the module require-module to be consistent with the
naming of the configuration directive.
Not sure yet of the set name, but call it set::require-module for
now as well.
2019-09-12 07:38:55 +02:00
Bram Matthys 88cbc38ff2 Do some more syntax checking, even for servers.
This fixes a crash in case of incorrect server to server traffic.
2019-09-12 07:16:18 +02:00
GottemHams 3948c3a74b Forgot to remove a lil' comment :D [skip-ci] 2019-09-11 22:26:53 +02:00
GottemHams 358a31eaee First draft of require-modules module (require modules globally or deny them) 2019-09-11 22:18:03 +02:00
GottemHams daa2441c1c Stray tab in rmtkl :D 2019-09-11 22:14:03 +02:00
Bram Matthys c833ac2082 And some final cleanups of today, nothing important. 2019-09-11 20:07:47 +02:00
Bram Matthys 482c85de44 Get rid of this sptr->serv->user, as we already have sptr->serv->by
to track who initiated the connect. It also didn't seem to be displayed
anywhere but in /TRACE.
2019-09-11 19:46:52 +02:00
Bram Matthys 5659a2b177 Document more core structs.
[skip ci]
2019-09-11 19:44:10 +02:00
Bram Matthys 9b113c27e4 Document some more structs and group them in a logical place. 2019-09-11 19:07:11 +02:00
Bram Matthys c72d848b61 Get rid of MembershipL since there's no difference anymore between
local membership structs (MembershipL) and remote ones (Membership),
so they are now all called... Membership.
2019-09-11 17:53:29 +02:00
Bram Matthys bf2c5110db IsPerson() -> IsUser(), MyClient() -> MyUser(), etc.
This so we have a few simple concepts:
Client: this can be a user, server, or something unknown yet
Then the type of clients:
User: this is a user, someone with a nick name.
Server: this is a server
Etc.
2019-09-11 17:43:17 +02:00
Bram Matthys fcf0ff4e3c Document client statuses (cptr->status) and some more renames. 2019-09-11 16:52:11 +02:00
Bram Matthys 2df5326615 Overhaul of all client flag macros (mass renaming, always use getters/setters/checkers) 2019-09-11 16:00:47 +02:00
Bram Matthys e372e9118d Move cptr->count to cptr->local->identbufcnt since this only used by
the ident reading code nowadays, which obviously only happens for
locally connected users.
2019-09-11 14:36:12 +02:00
Bram Matthys d80e601760 Rename sptr->username to sptr->ident, since that is what it is.
[skip ci]
2019-09-11 14:31:14 +02:00
Bram Matthys c69bdbe175 ->status is now an enum of ClientStatus and STAT_xx -> CLIENT_STATUS_xx 2019-09-11 14:27:32 +02:00
Bram Matthys 792709bf4f Move cptr->fd to cptr->local->fd. This may cause some crashes while
the rest of the code is audited / checked ;)
2019-09-11 14:21:07 +02:00
Bram Matthys 68b7368305 Document Client struct
[skip ci]
2019-09-11 14:14:09 +02:00
Bram Matthys cb236eea88 Rename cptr->from to cptr->direction, since the 'from' is rather misleading
as cptr->from is NOT (necessarily) the server where cptr is connected to.
So we now call it cptr->direction since it indicates the directly connected
server (or &me)... in other words: the direction of the client path.
2019-09-11 14:03:27 +02:00
Bram Matthys 6a019d6188 Let's allow user connections.
*sigh*
(at least we have automated tests for this)
2019-09-11 13:44:55 +02:00
Bram Matthys 628aab3a76 Duh, check NULL pointer properly in Auth_Check() in case of NULL structs.
Fixes crash-on-connect due to an earlier commit last hour.
2019-09-11 13:38:49 +02:00
Bram Matthys 1e6a3bdd55 Bump PASSWDLEN to something "large enough for everyone" (256) rather than current (48). 2019-09-11 13:27:45 +02:00
Bram Matthys 786054e6b7 Remove 'md5', 'sha1' and 'ripemd160' from auth code. These are insecure and
old authentication types that are already deprecated in UnrealIRCd 4.x.
They don't contain any rounds which means they can be cracked at a rate of
millions per second. Use the secure hashing type 'argon2' instead
(or, if you must, use the less secure 'bcrypt' type).
2019-09-11 13:17:28 +02:00
Bram Matthys 04607f5b1a Various auth cleanups: Auth_Check() now returns 1 on allow and 0 on deny (!)
to keep things simple, rather than having 4 different return values
(yes.. FOUR!).
[skip ci]
2019-09-11 13:10:15 +02:00
Bram Matthys 05e776fb71 More cleanups: now mostly auth-related: use better names and use enums
for authentication types. Rename Auth_Make to Auth_Hash. Add docs. etc.
2019-09-11 12:37:34 +02:00
Bram Matthys e8d53ffe8e And more type changes to make things consistent and more readable. 2019-09-11 11:04:31 +02:00
Bram Matthys 2a5ea10453 Lots of changes again. Most notable: Cmdoverride -> CommandOverride,
including things like CallCmdoverride() to CallCommandOverride().
Type changes like aTKline -> TKL and many more (in particular
aSomething to Something etc. such as aWatch to Watch) but these are
less used by 3rd party module coders.
2019-09-11 10:20:00 +02:00
Bram Matthys f55682cbaa More (typedef) struct name changes. Mostly configuration but also
aCommand to RealCommand. Although not sure if this latter makes
things a lot more descriptive :D. Can revisit later.
(more to follow)
2019-09-11 10:04:47 +02:00
Bram Matthys 23116d344a Give structs the same name as the typedefs. Rename aClient to Client,
aChannel to Channel, and some more. Third party module coders will
love this. But.. it makes things more logical and the doxygen output
will look more clean and logical as well.
(More changes will follow)
2019-09-11 09:48:00 +02:00
GottemHams fbd7ff1f5a Implemented set::min-nick-length (default 0 aka no minimum required) and added a line for it to /stats S, as a bonus my editor strips trailing whitespace :D 2019-09-09 20:33:38 +02:00
GottemHams a0db737408 hideserver module still used old-style version string [skip-ci] 2019-09-09 19:46:46 +02:00
Bram Matthys 5b361e69bb Get rid of configure check for strtoul and the src/strtoul.c file. 2019-09-09 17:49:10 +02:00
Bram Matthys ec2fdb82e0 Get rid of configure check for strerror() 2019-09-09 17:45:24 +02:00
Bram Matthys 80bc15c6d3 Apparently our strtoken() is special, don't bother then. Still, get rid of
the configure check.
2019-09-09 17:32:59 +02:00
Bram Matthys 1cdbbe043f Make strtoken() use strtok_r / strtok_s.
And get rid of the config check, as strtoken() never existed anyway.
2019-09-09 17:19:25 +02:00
Bram Matthys e5f73fdbcd Don't use custom inet_pton{4,6} functions
[skip ci]
2019-09-09 17:08:25 +02:00
Bram Matthys 078cfa88ea Get rid of configure check for strtok()
[skip ci]
2019-09-09 16:58:44 +02:00
Bram Matthys 36cb2226cc Get rid of checking inet_pton/net_ntop. Should be available on IPv6-capable
operating systems. And we require IPv6-capable since UnrealIRCd 4 already,
so.. ;)
2019-09-09 16:51:31 +02:00
Bram Matthys c86d03dcca Windows build fixes 2019-09-09 16:46:57 +02:00
Bram Matthys 5f9e919b18 Remove more configure checks: malloc.h, AC_FUNC_SETPGRP, AC_FUNC_SETVBUF_REVERSED
[skip ci]
2019-09-09 16:38:24 +02:00
Bram Matthys 5e4c481d93 Yes, strcasecmp is always available, configure. 2019-09-09 16:30:02 +02:00
Bram Matthys ca2239827e Get rid of NICK_GB2312/NICK_GBK/NICK_GBK_JAP in config.h. I am not aware
of anyone actually using these. So running with this was rather untested
(if it worked at all, which I doubt).
2019-09-09 16:20:26 +02:00
Bram Matthys 7d4b7c2fed Get rid of stricmp/strnicmp (use strcasecmp/strncasecmp) 2019-09-09 16:13:32 +02:00
Bram Matthys 9636f83a2b Always assume POSIX signals (on non-Windows, that is). 2019-09-09 16:08:18 +02:00
Bram Matthys 05af50d1fc Remove some HPUX stuff. We don't support or test this so leaving
this in the source gives a false impression. Also some ULTRIX
stuff (from 1995???).
2019-09-09 15:53:44 +02:00
Bram Matthys 1183e88077 Remove old SunOS / Solaris / AIX code.
And some other outdated things for non-POSIX systems...
2019-09-09 15:46:19 +02:00
Bram Matthys 8d453ffc40 Get rid of index() and some useless casts 2019-09-09 14:54:49 +02:00
Bram Matthys 3f690ec1df Get rid of configure checks for inet_addr and inet_ntoa. 2019-09-09 14:47:42 +02:00
Bram Matthys d434cf948b Get rid of bcmp/bcopy/bzero. 2019-09-09 14:41:40 +02:00
Bram Matthys e34888802a Move check for C99 compiler to the beginning and print some meaningful
hint to the user if it cannot be found.
2019-09-09 14:09:58 +02:00
Bram Matthys 2276185939 Get rid of more ./configure checks.
(Let's see if Windows complains again...)
2019-09-09 13:56:37 +02:00
Bram Matthys a0aec38df2 Get rid of DISABLE_USERMOD, since you can achieve the same in U5 via
the restrict-commands module in a dynamic way (with more options too).
2019-09-09 13:27:25 +02:00
Bram Matthys 5141e3cdfe Fix for Windows due to previous
[skip ci]
2019-09-09 13:16:31 +02:00
Bram Matthys a9e0655650 Remove more old stuff from ./configure 2019-09-09 13:11:30 +02:00
Bram Matthys 90d39d4665 tkldb module: Turn a few config_error() into config_warn() since
we continue, while errors mean we would fail to boot (or fail to rehash)
which is not the case.
2019-09-08 20:50:55 +02:00
Bram Matthys c423f9c8f7 Remove some more ./configure checks that are likely unneeded. 2019-09-08 20:22:45 +02:00
Bram Matthys 7be894bcda Let's see if we can drop unreal_CHECK_TYPE_SIZES in configure.ac.
Saves some ./configure CPU time.
2019-09-08 20:14:35 +02:00
Bram Matthys 0c4502bf79 Define and use SIPHASH_KEY_LENGTH rather than some magic value. 2019-09-08 14:15:23 +02:00
Bram Matthys ebd9c738f2 Some cleanup/rewrites of 'r' (repeat) in the floodprot module (+f).
Use a more simple hashing algorithm and one that uses 64 bits,
don't allocate any memory dynamically, just use an int64_t.
Also, only do the hashing if 'r' is actually enabled in +f
on the channel, as otherwise it's pointless.
2019-09-08 14:06:40 +02:00
Bram Matthys 9fe82e4a9f Fix read-after-free in HOOKTYPE_LOCAL_PART hook. 2019-09-08 08:41:58 +02:00
Bram Matthys e9847a2279 Fix OOB read due to last commit (62c7f67f7a) 2019-09-08 08:38:13 +02:00
Bram Matthys 62c7f67f7a Make StripControlCodes() filter out zero width space as well (U+200B). 2019-09-07 18:32:21 +02:00
Bram Matthys 08a4c489f6 Update HELPOP SPAMFILTER. The syntax was OK but the explanation under it
was confusing since it was explaining the fields in a different order.
2019-09-07 18:00:58 +02:00
Bram Matthys ec5a66ba80 UnrealIRCd 5.0.0-alpha2 release 2019-09-07 15:54:15 +02:00
Bram Matthys 7eb9ed90cb Cleanup sub1_from_channel. Don't kick insecure users on +z channels when we
are merging (equal TS), only kick our users when we are on the losing side
(=if there is a different TS, IOTW: the channel was recreated later).
2019-09-07 14:45:47 +02:00
Bram Matthys ab0608a98c Don't send OperOverride notice if &me (server)
[skip ci]
2019-09-07 11:06:04 +02:00
Bram Matthys c6cfc2f5c8 Fix receiving "+i must be set" twice (for users) or more (for opers)
[skip ci]
2019-09-07 10:52:38 +02:00
Bram Matthys b9e2f1c5fb Fix crash in RMTKL (only possible with rogue server traffic)
[skip ci]
2019-09-07 10:25:36 +02:00
Bram Matthys 62dc1181ba Protect against late bogus PROTOCTL SID=xxx (from authenticated servers) 2019-09-07 10:16:46 +02:00
Bram Matthys d3db771a1b Add some tracing code until a certain RMTKL bug is found. 2019-09-07 09:35:50 +02:00
Bram Matthys 7c9325d8d1 Move get_mode_bitbychar() and get_extmode_bitbychar() to the core
rather than helper functions in floodprot. (I need them)
2019-09-07 09:24:26 +02:00
Bram Matthys 62c0edde12 Partially rewrite SVSMODE #chan code to fix a crash from hostile servers.
Also get rid of the TS parameter in there, which nobody uses anyway.
It didn't even refer to the channel TS.. quite confusing..
it used user->since... so it seems it was against crossing users
(nick changes)... well, we have UID for that now.
2019-09-07 08:02:07 +02:00
Bram Matthys 579c4bd884 Compile with -O1 in ASan mode, rather than -O0. 2019-09-06 20:58:32 +02:00
Bram Matthys dc5fd50a54 Fix potential issues if msgbypass extban module is not loaded.
[skip ci]
2019-09-06 20:55:42 +02:00
Bram Matthys a3e911a174 Make issecure (+Z/-Z) use the same msgids network-wide. 2019-09-06 15:18:45 +02:00
Bram Matthys cf873d826a Add MessageTag *mtags argument to various (channel related) hooks, in case
they need access to those. For more information, see:
https://bugs.unrealircd.org/view.php?id=5343
2019-09-06 14:30:16 +02:00
Bram Matthys 4a6f56e967 Fix list modes not being restored properly from channeldb. 2019-09-06 13:06:53 +02:00
Bram Matthys 758dc74315 Fix memory leak in new ban exception code. 2019-09-06 09:15:27 +02:00
Bram Matthys 9b1fa66434 Duh, I meant, NOREMOVETMP.
[skip ci]
2019-09-06 09:13:19 +02:00
Bram Matthys 46486310dc Obey #define REMOVETMP (for testing) 2019-09-06 09:02:17 +02:00
Bram Matthys 73d320f553 Use enum for BAN_ACT_* and silence a (stupid) clang warning. 2019-09-05 20:54:31 +02:00
Bram Matthys 868895c70a Add except ban type 'all'. For a full list of options, see
https://www.unrealircd.org/docs/Except_ban_block#UnrealIRCd_5
Also, fix shun (s) not being available as an exempt option (bug).
2019-09-04 19:38:23 +02:00
Bram Matthys 750479aa2c Add more /ELINE options to bypass the following types: unknown data flood,
antirandom, antimixedutf8 and ban version. Just type /ELINE to see the
options / syntax. (TODO: more testing)
2019-09-04 18:43:06 +02:00
Bram Matthys 72664fc3df Deal with hostile servers in msgid code 2019-09-02 20:45:58 +02:00
Bram Matthys 0724c0ce13 stfu compiler, you are wrong 2019-09-02 20:16:46 +02:00
Bram Matthys 7ff78b4cf6 Make config test for except ban::type. Also use 'connect-flood'
rather than throttling, since that's the term we use everywhere
in our documentation and for config options.
2019-09-02 20:14:48 +02:00
Bram Matthys a006a9aea9 Recode tkl type table. '/STATS except' works now (lists ELINEs and
except ban in config).
If you want to play with exceptions, type /ELINE for information.
For the configuration file it is important to know that 'except tkl'
is now called 'except ban'.
Also if you do not specify an except ban::type we now default to
exempt from all regular server ban types (but not qline, spamfilters,
blacklist or throttling)
2019-09-02 19:30:23 +02:00
Bram Matthys 58618bf2b6 Add support for ban exceptions, via /ELINE and via the config file.
Still need to fix some FIXME/TODO items and things haven't been
fully tested yet, so server sync issues or crashes are still possible.
Release notes will be updated another day as well..
2019-09-01 20:49:14 +02:00
Bram Matthys 76b1655f9b Add TKL exception type handling (phase 2 of X) 2019-09-01 10:58:29 +02:00
Bram Matthys cdcac52d81 It helps if I git add src/api-efunctions.c... 2019-09-01 09:40:44 +02:00
Bram Matthys 3fcd25b542 Split off efunctions to src/api-efunctions.c, use enums and
a different style of initializing the efunctions table which
is less error-prone.
2019-09-01 09:38:55 +02:00
Bram Matthys 2483376796 Fix crash on adding QLINE (reported by The_Myth) and 'STATS bannick'
should really show QLINEs as well. Up to now it only showed (local)
config banned nicks.
Fixes https://bugs.unrealircd.org/view.php?id=5387
2019-09-01 08:31:03 +02:00
Bram Matthys 8a6c84876e Rewrite/cleanup huge portion of TKL handling (16 files updated, but
src/modules/tkl.c is the main one).
Also move DB writing/reading functions to src/misc.c so they can be
removed out of channeldb and tkldb.

Important note to current tkldb users:
Unfortunately due to the major cleanup I had to remove upgrading
for previously saved tkl db files. That seemed not worth the effort
for maybe <15 current users or so. It also makes the tkldb code
a lot more cleaner. Otherwise it would be a huge mess.

Currently a FIXME item: spamfilter support in RMTKL.
2019-08-31 15:29:04 +02:00
Bram Matthys 0116c4f0d6 Partial TKL recode - (pre) phase 1 2019-08-28 20:21:04 +02:00
Bram Matthys e6c321c7dc Some cleanups / comments added, but no real code changes. 2019-08-28 18:08:38 +02:00
Bram Matthys c1babb7411 Fix reading unitialized memory due to one of the commits from yesterday
(in the crash reporter)
2019-08-28 07:13:31 +02:00
Bram Matthys 19a0d205e6 Enable core dumps if using ASan (applies to alpha/beta and dev builds) 2019-08-27 16:27:56 +02:00
Bram Matthys d477e4930e Crash reporter: include libc for better debugging. 2019-08-27 16:05:32 +02:00
Bram Matthys 308ac85bba UnrealIRCd crash reporter: require TLSv1.2 or later 2019-08-27 14:24:27 +02:00
Bram Matthys 083953ca00 Release notes: Developers: mention ModuleHeader changes.
[skip ci]
2019-08-27 14:15:44 +02:00
Bram Matthys 17c6b5976d Update output of MODULE command (MODULE -all) to include the author,
slightly change the output and use RPL_TXT rather than NOTICE.
2019-08-27 14:12:00 +02:00
Bram Matthys fc69c5300e Windows buildbot fixes
[skip ci]
2019-08-27 12:47:30 +02:00
Bram Matthys fa29e22ea2 Windows build: attempt build tests
[skip ci]
2019-08-27 08:46:54 +02:00
Bram Matthys 10faaf91ba Bump module header version to "unrealircd-5", add author field
and remove old dependency field (never used, was always NULL,
broken since 3.2.x)
I'll add some constraints later on things like names and versions.
IOTW: more changes to follow, don't mass update your own mods yet.
2019-08-26 20:29:47 +02:00
Bram Matthys 526e5e09a4 Fix for commit from an hour ago. One was unable to remove the
+nt modes by f.e. setting set::modes-on-join to "+";
2019-08-26 19:35:40 +02:00
Bram Matthys a72e4f39f2 Fix both duplicate channel messages (reported by The_Myth) and
set::broadcast-channel-messages not having any effect (reported
by FwdInTime). Yes, both fixes from earlier were incomplete.
2019-08-26 19:21:14 +02:00
Bram Matthys 890e4c9acd Set set::modes-on-join to +nt by default and also put it in the
example.conf. Leaving it empty by default is strange and contrasts
with our "secure by default" principle.
2019-08-26 18:22:12 +02:00
Bram Matthys d331f22dbc Windows buildbot updates 2019-08-25 19:00:26 +02:00
Bram Matthys 8d2ac9c50e Fix set::broadcast-channel-messages configuration item not working.
Reported by FwdInTime in https://bugs.unrealircd.org/view.php?id=5367
2019-08-25 18:52:39 +02:00
Bram Matthys e0b941739c Fix problem with PRIVMSG echoing back in S2S. Reported by The_Myth. 2019-08-25 18:49:10 +02:00
Bram Matthys 4e1768d9ed Windows: Blah 2019-08-25 18:41:36 +02:00
Bram Matthys 0e529f75f8 Windows: attempt build tests
[skip ci]
2019-08-25 18:02:50 +02:00
Bram Matthys ebaac5a6b8 Get rid of various never used config options and also port
the U4 fix for Windows where it says "Too many connections"
way too quickly. (Sorry for mixing both in 1 commit..)
2019-08-25 17:48:32 +02:00
Bram Matthys 38b55fb3c5 Not ready for release yet, but bump git version to alpha2 already now that
the Windows build is working (5.0.0-alpha1 had no Windows build).
2019-08-25 14:38:02 +02:00
Bram Matthys 6ead10f42d Windows: build with /WX (equivalent to -Werror) and turn on
/analyze again. Not sure how long I can bear that last one though
as now compilation takes about 15 minutes rather than a few.
2019-08-25 14:03:11 +02:00
Bram Matthys 8484511296 Make Windows build compile without warnings with /W3
Disable these warnings, though:
C4267: downgrade of size_t to int and such. pointless...
C4101: unreferenced local variable
C4018: signed/unsigned mismatch
C4244: implicit conversions with "possible loss of data".
       there are 75+ of them and they are likely all harmless
       and/or intentional (usually plain obvious too)
C4996: fixme! warnings about deprecated functions, currently only for GetVersion..
2019-08-25 13:00:31 +02:00
Bram Matthys 6f884a6f60 Windows build: cannot pass by reference directly.
Solves:
warning C4133: 'function': incompatible types - from 'long *' to 'const time_t *const '
2019-08-25 10:36:17 +02:00
Bram Matthys c7a057cab1 Fix for previous commit (windows makefile etc..). 2019-08-25 10:23:25 +02:00
Bram Matthys 33dc939a6d Windows build: remove more warnings. Update Makefile.windows. 2019-08-25 10:04:57 +02:00
Bram Matthys dea31523e3 Add some (redundant) information regarding the last ./Config question.
[skip ci]
2019-08-24 20:02:47 +02:00
Bram Matthys d357ef8957 More config.h cleanups. Lower kill chase time limit from 90 to 30
which seems more reasonable to me.
2019-08-24 19:57:40 +02:00
Bram Matthys 153e38be10 Get rid of "max sendq" ./Config question, which actually was only
setting the default class::sendq that pretty much everyone overrides
in class (isn't this even required? ;D).
Rename to DEFAULT_SENDQ since we have DEFAULT_RECVQ too.
2019-08-24 19:50:39 +02:00
Bram Matthys d19b4e70ad Remove old and broken option SHOW_INVISIBLE_LUSERS 2019-08-24 19:45:26 +02:00
Bram Matthys d06715d9ee REMOTEINC_SPECIALCACHE is no longer optional 2019-08-24 19:41:14 +02:00
Bram Matthys 9e02ca2b3c More FORMAT_STRING() checking, get rid of old (non-)USE_VARARGS stuff.
Fix some more bugs (type differences) when compiling in DEBUGMODE.
2019-08-24 19:37:25 +02:00
Bram Matthys a3b5f29626 Mass change of time_t in printf-like functions to %lld with an
explicit cast to (long long). On *NIX we could get away with
lazily assuming time_t is of the same length as long (and use %ld),
even though the specification says nothing about it.
Unfortunately on Windows things are not that simple:
'time_t' is 'long long' (64 bits) and both 'int' and 'long'
are 32 bits, even when compiling in 64 bit mode.

This problem could be 'fixed' in multiple ways:
One way would be to minimize the usage of time_t and use 'long long'
or 'uint64_t' everywhere for variables to minimize casting later.
I, however, chose to maintain 'time_t' for most of time grabbing
and time calculations (eg: delta), and do the explicit cast in
any printf-like functions that may be there.
Both solutions work. I mostly like the explicit time_t look, so one
can immediately recognize a variable relates to time.
2019-08-24 18:33:52 +02:00
Bram Matthys 85b3b91b19 Windows build: Add format string verification during build.
(Will be used to hunt and fix those time_t integer type mismatches)
2019-08-24 17:10:44 +02:00
Bram Matthys 1f99b282b0 Similarly, get rid of DISABLE_STACKED_EXTBANS ./Config question since
that define no longer exists...
2019-08-23 20:39:27 +02:00
Bram Matthys 444c4f4381 Get rid of some old/rarely used ./Config shit 2019-08-23 20:37:27 +02:00
Bram Matthys a6eac922ea Remove unused function create_snomask() 2019-08-23 20:28:48 +02:00
Bram Matthys ccf80d16f2 SnomaskAdd(): remove 3rd argument (unset_on_deoper), as all snomasks
are IRCOp-only now, they will always be removed on deoper.

-extern Snomask *SnomaskAdd(Module *module, char ch, int unset_on_deoper, int (*allowed)(aClient *sptr, int what), long *mode);
+extern Snomask *SnomaskAdd(Module *module, char ch, int (*allowed)(aClient *sptr, int what), long *mode);
2019-08-23 20:23:54 +02:00
Bram Matthys e889a07849 Updates to ircvsnprintf(): add %lld and remove special handling of %lu.
And some re-indenting when we're at it...
2019-08-23 08:41:47 +02:00
Bram Matthys 9a562dea24 Windows: Move the uninstaller to bin\uninstaller
Windows: Use generic docs URL for documentation
2019-08-22 20:15:46 +02:00
Bram Matthys d6faa00ae8 Use generic includes 2019-08-22 19:15:16 +02:00
Bram Matthys 02a4bbc348 Get rid of this stupid 'TS' type, just use 'time_t'. 2019-08-22 18:39:28 +02:00
Bram Matthys e65f96a9e0 Windows build: 'clean' should really cleanup..
[skip ci]
2019-08-22 18:07:53 +02:00
Bram Matthys 8c70769bef Windows: Use W7 API (or later) so we have inet_pton/inet_ntop. 2019-08-22 18:01:59 +02:00
Bram Matthys 8007a83020 Get rid of include/inet.h and use system headers properly. 2019-08-22 17:48:39 +02:00
Bram Matthys a1920d7733 Windows installer: require Windows 7 or newer (bye XP/Vista)
[skip ci]
2019-08-22 17:34:41 +02:00
Bram Matthys 1c52557c92 Update makecert.bat for Windows with new paths
[skip ci]
2019-08-22 17:10:09 +02:00
Bram Matthys 02d3364373 More Windows fixes... 2019-08-22 16:43:05 +02:00
Bram Matthys d8f080de67 Drop support for systems without snprintf() and vsnprintf()
Those are in POSIX.1-2001. Even Windows has them nowadays...
"Our" implementation doesn't even work properly under Win64.
2019-08-22 16:41:39 +02:00
Bram Matthys f5168b6323 Buildbot: U5: curl-ssl -> curl (always SSL/TLS after all...) 2019-08-22 15:40:03 +02:00
Bram Matthys b8c6e2e88b Updates for BuildBot on Windows:
32 to 64 bit transition, visual studio 2019 and some directory name
updates as we now put all the shit in c:\dev\unrealircd-5-libs,
or c:\projects\unrealircd-5-libs in case of buildbot..
2019-08-22 15:34:05 +02:00
Bram Matthys 87b8d27648 Windows: move *.exe and libraries to bin\ directory, move LICENSE.txt
and Donation.txt to doc\
2019-08-22 15:08:16 +02:00
Bram Matthys bcceea9065 Windows: build fixes and it is now a 64 bit application.
See https://bugs.unrealircd.org/view.php?id=5320
Expect several more major fixes/changes to follow...
2019-08-22 14:43:19 +02:00
Bram Matthys b87b4dd61a Windows: Fix path in makecert.bat 2019-08-22 14:37:49 +02:00
Bram Matthys 5e0ed6d626 UnrealIRCd 5.0.0-alpha1 2019-08-20 19:39:04 +02:00
Bram Matthys 71935d6d48 Use +f in +f examples (duh)
[skip ci]
2019-08-19 16:41:11 +02:00
Bram Matthys 142289c2de Let's just call it a database rather than persistent storage file.
Also, fix a small memory leak if the database was corrupted.
2019-08-19 16:38:57 +02:00
Bram Matthys 86f7d8c5cc Document new 'r' (repeat) flood type and 'd' (drop) action in release notes.
[skip ci]
2019-08-19 16:28:41 +02:00
Bram Matthys 5a8d231c6d Floodprot changes (floodprot.c):
1) Clean up check_for_chan_flood()
2) Make the new repeat action kick by default (instead of forcing 'b'
   if no action is specified)
3) Also make repeat work with timed bans
2019-08-19 16:12:51 +02:00
Bram Matthys dd5d93ae77 Mostly cleanups / unimportant stuff. 2019-08-19 15:27:03 +02:00
Bram Matthys 7cda4eab53 Fix memory leaks in the new tkldb and channeldb modules. 2019-08-19 15:26:15 +02:00
Bram Matthys cbea57fefe Fix read after free in module API code when unloading channel mode,
client capability, history backend or message tag for good.
2019-08-19 15:25:12 +02:00
Bram Matthys 6f87314bbf Funny mistake :D 2019-08-19 10:10:47 +02:00
Bram Matthys e72845bddf link::options::tls was not working (an alias for link::options::ssl) 2019-08-18 19:25:42 +02:00
Bram Matthys fc0c06621b AppArmor: use a more generic rule for data/ now that we have all these
databases, and who knows what else the user has (think: 3rd party modules).
2019-08-18 18:42:33 +02:00
Bram Matthys d8e121fbc5 Another test commit for buildbot. 2019-08-18 16:51:34 +02:00
Bram Matthys fac5036d5f Test commit 2019-08-18 16:40:38 +02:00
Bram Matthys c27e7fa0dd Some small README updates. 2019-08-18 11:19:18 +02:00
Bram Matthys b312a88b0a Update test framework location 2019-08-18 11:18:52 +02:00
Bram Matthys fdabc7e5ad Fix memory leak on server sync. 2019-08-18 09:40:31 +02:00
Bram Matthys 33fcc5b550 Enough updates on labeled-response and echo-message for today.
Note that the labeled-response implementation currently requires
'batch' and will always start a BATCH if there is any response.
Later on we can implement a simple queue so we don't have to
start a batch for 1-line responses (which works, but looks a bit
silly if you look at raw server traffic). That may be after alpha1,
though, as there are more (important) things to work on right now.
2019-08-18 09:24:43 +02:00
Bram Matthys 4ccb290dac Fix two TODO's. 2019-08-18 08:27:43 +02:00
Bram Matthys bdcee3fcfa Send BATCH even if client is lacking message-tags CAP. 2019-08-18 08:27:07 +02:00
Bram Matthys 1a305b0b45 Remove this old code in hunt_server() or we end up sending message
tags twice. (This code was there before sendto_one() got it's
extra MessageTag * parameter)
2019-08-18 08:06:08 +02:00
Bram Matthys d9694a4644 Fix for history module if 'batch' is negotiated but 'server-time' is
not. Previously this would result in receiving an empty BATCH (with
no history content, that is), which is confusing.
2019-08-18 07:25:26 +02:00
Bram Matthys 448ee87ed4 More and more and more
[skip ci]
2019-08-17 15:45:37 +02:00
Bram Matthys 5bc91a02f9 Some minor text changes in release notes.
[skip ci]
2019-08-17 15:44:49 +02:00
Bram Matthys 52aed93707 Add preliminary release notes for UnrealIRCd 5 2019-08-17 15:41:03 +02:00
Bram Matthys e1822997b8 Make 'webredir' module work if 'websocket' module is loaded,
which is quite likely even.
2019-08-17 13:00:33 +02:00
Bram Matthys 15254470a7 Do some minimal checks on the provided set::webredir::url
[skip ci]
2019-08-17 13:00:09 +02:00
Bram Matthys 9fbd7f33fc The set::webredir block should be commented out by default.
[skip ci]
2019-08-17 12:48:30 +02:00
Bram Matthys c941c529c3 Load 'reputation' and 'connthrottle' by default. Add to example.conf. 2019-08-17 12:46:43 +02:00
Bram Matthys 143d747e66 Rename 'cmdrestrict' to 'restrict-commands'. Load the module by default
so you can use set::restrict-commands without having to loadmodule.
Restrict the LIST and INVITE commands in the example.conf, which is
often a good idea. Finally, document the configuration/usage at:
https://www.unrealircd.org/docs/Set_block#set::restrict-commands
2019-08-17 12:34:14 +02:00
Bram Matthys 6c02c896d9 add +H to HELPOP CHMODES 2019-08-17 12:06:05 +02:00
Bram Matthys 8ae9e85a9a Channel history: set default playback on join lines to 15. 2019-08-17 12:05:23 +02:00
Bram Matthys 5f99586982 And another fix for 0d2d4d5bca. 2019-08-17 09:36:29 +02:00
Bram Matthys f10ec9aebc Fix for previous commit (0d2d4d5bca) 2019-08-17 09:31:58 +02:00
Bram Matthys 0d2d4d5bca Rename match() and _match() to match_simple() -AND- invert the return value
of match_simple() and match_esc(). So, developers, be aware, this is how
you should use the function in a correct way:
if (match_simple("*fun*", str))
    printf("It was fun\n");

Rationale:
I've always been annoyed by the inversed logic, even though it was similar
to strcmp. So I've reverted it.
I could have chosen to maintain match() rather than this match_simple()
name, but this way I force (3rd party module) devs to update their function,
while otherwise everything would mysteriously fail due to the inverted logic.
2019-08-17 09:20:49 +02:00
Bram Matthys e1fcc3a667 Rename match() and _match() both to match_simple()
and get rid of the "bahamut optimized version".
Stage 1 of 2.
2019-08-17 09:15:34 +02:00
Bram Matthys c01c9248f5 Revert e428c77c47 (only to try again later) 2019-08-17 09:05:09 +02:00
Bram Matthys e428c77c47 match() -> match_nuh() and _match -> match_simple() 2019-08-17 08:56:18 +02:00
Bram Matthys 870f10b8a5 Extban ~T:block:something is now auto-converted to ~T:block:*something*
since this is pretty much always what you want. Otherwise it's just
too confusing that things don't match.
2019-08-17 08:36:59 +02:00
Bram Matthys 29a3994d24 Fix some logic in add_listmode_ex(). Probably not terribly important
but theoretically one could have seen a "ban list full" error message
multiple times in rare cases.
2019-08-16 20:16:11 +02:00
Bram Matthys 0f7a172c30 Rename who to who_old, since whox is now loaded by default and
loading who_old should only be done if you want the classic old WHO.
2019-08-16 18:14:30 +02:00
Bram Matthys ccb534c3e9 res.{c,h} -> dns.{c,h} and moddata.c -> api-moddata.c 2019-08-16 18:09:25 +02:00
Bram Matthys dfcd465103 Rename some api-*.c files to be more descriptive. 2019-08-16 18:00:26 +02:00
Bram Matthys fffd459bf9 src/extbans.c -> src/api-extbans.c, and the same for extcmodes and umodes.
I suppose what is and what is not an API can be considered a bit arbitrary
but for us it is the stuff we expose via the module api. We now have:
api-clicap
api-command
api-event
api-extbans
api-extcmodes
api-history-backend
api-isupport
api-mtag
api-umodes
2019-08-16 17:52:49 +02:00
Bram Matthys fd37f050b8 Rename src/events.c to src/api-event.c for consistency. 2019-08-16 17:47:07 +02:00
Bram Matthys 4e0f1f5ffa Re-indent events.c and remove ancient event system locking routines. 2019-08-16 17:45:35 +02:00
Bram Matthys 41051cf3c7 Remove some unused variables
[skip ci]
2019-08-16 17:37:36 +02:00
Bram Matthys a408b61f32 For some unknown reason del_ListItem() iterated the entire list. Weird. 2019-08-16 17:36:15 +02:00
Bram Matthys 08b4844050 Update credits for UnrealIRCd 5. 2019-08-16 15:18:58 +02:00
Bram Matthys 3a454e3eb3 free_mtags() -> free_message_tags() 2019-08-16 14:54:28 +02:00
Bram Matthys 887cf24fd7 Add channeldb module (loaded by default): this saves all channel settings
such as name, creationtime, modes, topic, bans/exempts/invex to a database
and restores it on-boot. It only does this for +P (persistent) channels.
2019-08-16 14:42:25 +02:00
Bram Matthys d8f839ed44 floodprot (source code): use proper variable names. Not sure why I
didn't do this back in 2003... ah well, that was 16 years ago,
I forgive myself :D
2019-08-15 18:56:08 +02:00
Bram Matthys 7193600a08 Force buildbot.. 2019-08-15 12:09:21 +02:00
Bram Matthys e22000ed48 Buildbot test... 2019-08-15 12:02:11 +02:00
Bram Matthys d91f21a687 Update more old references to U4.. 2019-08-15 11:55:18 +02:00
Bram Matthys 9e1556a6f7 Dumdeedum 2019-08-15 11:44:20 +02:00
Bram Matthys 6dc7aac372 Update some unrealircd-4 references to unrealircd-5.
.. or actually I just want to test buildbot :D
2019-08-15 11:26:20 +02:00
Bram Matthys 16f3b797e4 Use different OpenSSL functions that are more of a hassle but
also exist in older versions such as 1.0.1.
2019-08-15 09:02:42 +02:00
Bram Matthys ced8b0935d Check for and refuse to run with <2048 bits RSA keys. I hope nobody is
using 1024 bit RSA keys in 2019, but always better to check and inform
the admin about such a big mistake.
2019-08-15 08:52:28 +02:00
Bram Matthys f58fff47d4 Small text change
[skip ci]
2019-08-14 09:28:14 +02:00
Bram Matthys 2127a36f61 Remove ~R extban as it is redundant now that we have ~a.
All services should have account names by now.
2019-08-13 21:08:22 +02:00
Bram Matthys a32e285d63 Document ~f extban in helpop.
[skip ci]
2019-08-13 21:01:49 +02:00
Bram Matthys e5b40f13df Change the new extban from ~L to ~f:#forward:*!*@*.
... this just to annoy Gottem.
2019-08-13 20:56:38 +02:00
Bram Matthys 4d74ca9d9a Take out labeled-response until it is unbroken (as in: don't load
by default for now). Not a high priority item at the moment.
2019-08-13 18:49:18 +02:00
Bram Matthys 4f4a867b58 Update prototype of HOOKTYPE_CHANMSG to include sendflags, prefix and target.
I needed the target for echo-message, and also in the history module we no
longer save to the history any @#channel messages, since otherwise they
could be played back to people we shouldn't see them ;)
2019-08-13 18:45:38 +02:00
Bram Matthys 4c8fe6e8d9 Add CAP echo-message. 2019-08-13 18:36:25 +02:00
Bram Matthys 912eea52d7 More NULs are always a good thing.
[skip ci]
2019-08-13 18:13:01 +02:00
Bram Matthys 5279212b30 More SSL to TLS changes 2019-08-13 13:09:49 +02:00
Bram Matthys 39bb0299f1 /REHASH -ssl -> /REHASH -tls 2019-08-13 12:59:56 +02:00
Bram Matthys 135b4808d0 Update example configs to use tls instead of ssl 2019-08-13 12:58:10 +02:00
Bram Matthys c4b276d2d8 Windows: another conf\ssl to conf\tls instance (in the installer)
[skip ci]
2019-08-12 14:54:50 +02:00
Bram Matthys 7fa2b8be05 More ssl -> tls moves. Also recommend to use 'certfp' rather than
the longer 'sslcertfp' or 'tlscertfp', we already support this since
4.0 so... updated the documentation as well.
2019-08-12 14:53:29 +02:00
Bram Matthys 8ff6ad17ee Part 4 of ssl/tls rename (not important)
[skip ci]
2019-08-12 14:44:14 +02:00
Bram Matthys b6c786d2c0 gplplusssl.rtf should mention LibreSSL, not OpenSSL.
[skip ci]
2019-08-12 14:43:10 +02:00
Bram Matthys ef739331b0 Rename ssl_antidos to tls_antidos. 2019-08-12 14:40:11 +02:00
Bram Matthys 2b0afacdf0 Rename of "ssl" to "tls" part 2 2019-08-12 14:35:32 +02:00
Bram Matthys 09cf485d6c Mass rename of "ssl" to "tls" everywhere. Including conf/ssl to
conf/tls. If you are upgrading then conf/ssl will be renamed to
conf/tls and a symlink will be added (so certbot etc won't fail).
This is part 1...
2019-08-12 14:26:31 +02:00
Bram Matthys 86844c3c2b Replace UnrealIRCd 4 -> UnrealIRCd 5 2019-08-12 13:49:35 +02:00
Bram Matthys 684baf9e59 Add a note to ./autogen.sh that this is only for devs, not end-users.
[skip ci]
2019-08-12 13:44:45 +02:00
Bram Matthys 2976c488b0 Delete appveyor.yml, as we are now using buildbot.
[skip ci]
2019-08-12 13:43:11 +02:00
Bram Matthys e44f572725 Rename makefile.windows -> Makefile.windows, consistent with Makefile.in
[skip ci]
2019-08-12 13:41:55 +02:00
Bram Matthys 7f903b422c Strip m_ prefix in modules (part II). Bump reported module version
of each module to 5.0 (or the ones that previously were 4.2, anyway).
2019-08-12 13:36:03 +02:00
Bram Matthys fc5569408d Drop the m_ prefix from modules.
So rename src/modules/m_*.c to src/modules/*.c and update makefiles
and modules.default.conf. Also remove m_ at various places in the
source files, but not the CMD_FUNC(), just the module name.
2019-08-12 13:32:58 +02:00
Bram Matthys 5701fbed20 Update installer script to reflect new windows paths
[skip ci]
2019-08-11 18:16:27 +02:00
Bram Matthys 4488819e69 Oops...
[skip ci]
2019-08-11 18:09:06 +02:00
Bram Matthys 61cf5f16d3 Ok.. I get it.
[skip ci]
2019-08-11 18:02:13 +02:00
Bram Matthys 63cfdb4b68 src/windows/win.h -> include/windows/win.h
and update the include name
@skipci
2019-08-11 17:58:53 +02:00
Bram Matthys 3d7117ea77 Whatever this is, I'm not leaving it alone :D
@skipci
2019-08-11 17:56:38 +02:00
Bram Matthys c68b0e9ab4 Rename windows.{c,h} -> win.{c,h} to avoid confusion 2019-08-11 17:51:48 +02:00
Bram Matthys 645989e602 Rename makefile.win32 to makefile.windows, among several other changes.
(Would surprise me if this compiles without failure, tho)
@skipci
2019-08-11 17:46:12 +02:00
Bram Matthys 1498f1e716 Rename directories from 'win32' to 'windows' 2019-08-11 17:40:08 +02:00
Bram Matthys 3a29677c79 Windows build fix, just rename the damn file. 2019-08-11 17:35:44 +02:00
Bram Matthys 6c398c58fc Windows makefile: you are weird. 2019-08-11 17:21:17 +02:00
Bram Matthys a53316d256 Rename src/s_svs.c to src/aliases.c, since that is what it contains. 2019-08-11 17:19:42 +02:00
Bram Matthys 03e095cd92 Rename src/s_*.c files: drop the useless s_ prefix. 2019-08-11 17:15:14 +02:00
Bram Matthys 0cd6b9bea1 Integrate s_auth.c into s_bsd.c (only 200 lines and the place fits well) 2019-08-11 17:09:22 +02:00
Bram Matthys 25687c2bed New efuncs: tkl_ip_hash() and tkl_ip_hash_type(), for the rmtkl module. 2019-08-11 14:48:07 +02:00
GottemHams ae8c0af51c Ported rmtkl (remove TKLs in bulk) while waiting for Syzop to implement some changes (compiles with a warning at the moment) 2019-08-10 21:55:34 +02:00
GottemHams f6df735291 floodprot: Floodtype 'r' for handling per-user repeated PRIVMSGs (CTCP/notice/ACTION/regular message) + action 'd' for dropping stuff for floodtypes 't' (per-user text) and 'r' 2019-08-10 19:25:51 +02:00
Bram Matthys 3c47e22b75 These TODO/FIXME's can be removed (well, except 1)
@skipci
2019-08-10 14:14:54 +02:00
Bram Matthys 5af31c4a30 These FIXME's can be removed.
@skipci
2019-08-10 14:12:29 +02:00
Bram Matthys c50f65c5bf Update two small FIXME's (nothing worth mentioning) 2019-08-10 14:09:00 +02:00
Bram Matthys 1cbfc85352 This FIXME was resolved AFAICT. In message-tags.c we do:
if (m->clicap_handler && (acptr->local->caps & m->clicap_handler->cap))
 return 1;
... so if messagetaghandler->clicap_handler is NULL then this won't be 1.
2019-08-10 13:34:01 +02:00
Bram Matthys 4d105afcf2 Update comments (duplicate words, blah)
@skipci
2019-08-10 13:29:14 +02:00
Bram Matthys a185e341e6 Update client_accepts_tag() to use the mtags API rather than
hardcoded if() statements.
2019-08-10 13:21:04 +02:00
Bram Matthys bcf21c9d7e Add fix for "bug" caught by fuzzer (incorrect @time in S2S traffic). 2019-08-07 17:33:11 +02:00
GottemHams 2c8f909759 Ported a major chunk of m_forward's functionality to chanmodes/link, with a bunch of improvements =] 2019-07-27 21:10:13 +02:00
GottemHams af2ef7d186 Updated cmdrestrict example configuration to reflect recent changes 2019-07-27 14:02:15 +02:00
GottemHams 3a1ae06345 cmdrestrict should be able to override any command, also couple of minor improvements 2019-07-27 13:56:30 +02:00
i 8c11ebd0e7 Make allow {} block always continue when there were no password or wrong password was specified. 2019-07-18 18:47:05 +03:00
i c9908a55c9 Added HOOKTYPE_CONFIGPOSTTEST for webredir module, to check if there is no set::webredir. 2019-07-16 01:18:41 +03:00
i e30de7b7a6 Removed default url for webredir module and refuse to load without url. 2019-07-15 21:59:41 +03:00
GottemHams 1079cded02 Nested comment blocks don't work anymore :D 2019-07-15 18:36:15 +02:00
GottemHams 19aad17d4e cfgstruct is not necessary for cmdrestrict :D 2019-07-14 23:08:42 +02:00
GottemHams 655027f5db Merge branch 'unreal50' of github.com:syzop/unrealircd-next into unreal50 2019-07-14 23:05:08 +02:00
GottemHams e5cfc5d798 cmdrestrict v1.0: Restrict specific commands until certain conditions have been met =] 2019-07-14 23:04:15 +02:00
i 53146f252c New module webredir (do 301 redirect for HEAD/GET/POST/PUT commands to the specified URL). 2019-07-14 22:37:55 +03:00
Bram Matthys 2894c16638 Lower set::ident::read-timeout to 7 seconds, which should be plenty
on the Internet of today.
2019-07-14 19:22:36 +02:00
Bram Matthys 1c5c501dc1 Remove m_nopost module as it is no longer useful.
UnrealIRCd already protects (for maaaany years) with ping cookies against
this attack. Making the m_nopost redundant.
Also, another module may be more useful (more on this soon...).
2019-07-14 19:07:32 +02:00
i d22a2a20f0 Make usermode +T block channel CTCP's as well. 2019-07-14 19:01:31 +03:00
Bram Matthys d9bd18c483 Remove TODO comment, now that it has been done [skip ci] 2019-07-13 16:00:49 +02:00
Bram Matthys c2445fa9c6 Add history_backend_null, which can be useful on servers where you
explicitly do not want to remember any channel history, such as on
a hub server to save memory.
Also, on Windows, ensure to compile all history_backend_*.c
2019-07-13 15:53:23 +02:00
Bram Matthys 3b67e83275 Add some FIXME's to labeled-response. Not going to work on that right now,
since there is more important things to do...
[skip ci]
2019-07-13 15:40:58 +02:00
Bram Matthys 806256e9c2 Move generate_batch_id() to core. Use chathistory BATCH type, if supported. 2019-07-13 15:25:56 +02:00
Bram Matthys ccfeac6eae Don't re-order mtags on history playback
Strictly, this is not a problem, but.. for our test framework it is better
and it looks cleaner too.
2019-07-13 08:20:12 +02:00
Bram Matthys 65b5e21464 Fix double 'time' mtag on history playback 2019-07-13 08:18:53 +02:00
Bram Matthys 0cda60301d Add set::broadcast-channel-messages [auto|always|never]:
This determines when UnrealIRCd will use broadcast instead of multicast
for delivering channel messages to servers.
The default is 'auto' which uses multicast but switches to broadcast
when channel mode +H is set. This is what people should normally use.
If you set it to 'never' then +H will not work properly if there are
servers with 0 users on them.
2019-07-13 07:59:12 +02:00
i 006b7e5a7c Hide serveropts from normal users. 2019-07-12 01:09:33 +03:00
i ca094f0a75 New set::ping-warning option (how fast the server should reply to PING before sending a warning to opers). 2019-07-11 16:47:02 +03:00
i 876758b73e Fix Custom OpenSSL binary path was ignored. 2019-07-11 14:20:01 +03:00
i a601f565e1 Do not override all libs. 2019-07-11 03:06:28 +03:00
i 57f6718086 Update configure script for previous commit. 2019-07-11 02:36:51 +03:00
i 4feba3edd5 Check whether linking with OpenSSL functions requires -ldl or -lpthread or both 2019-07-11 02:33:11 +03:00
i dbbcc6918a Fix Custom OpenSSL library path was ignored 2019-07-11 00:53:41 +03:00
i 60ebc1375e Support channel status prefixes for SAJOIN. 2019-07-10 17:42:46 +03:00
Bram Matthys 769955eab5 Require at least one SSL/TLS port to be open. In other words, change
https://www.unrealircd.org/docs/FAQ#Your_server_is_not_listening_on_any_SSL_ports
from a warning to an error.
2019-07-10 06:53:01 +02:00
Bram Matthys 3cff80ad8d Use SSL_CTX_set_min_proto_version() in a more inteligent way.
It shouldn't matter now, but if OpenSSL some day deprecates the old
way then at least it won't have silent disastrous effects.
2019-07-09 20:24:00 +02:00
Bram Matthys dc2c2c3f89 Re-indent ssl.c 2019-07-09 20:13:02 +02:00
Bram Matthys d09b9d53a4 Make SSL/TLS mandatory for UnrealIRCd to run. Previously you could get
around this by simply having no certs etc. I doubt anyone used it and
that was not a recommended configuration.
(More to come)
2019-07-09 20:06:11 +02:00
Bram Matthys 657985bf53 Make Debian 10 compile with -Werror. Add -Wno-cast-function-type 2019-07-07 18:17:32 +02:00
Bram Matthys efe73de70d -Wno-unused-but-set-parameter
[skip ci]
2019-07-07 18:11:54 +02:00
Bram Matthys 79bd78c0f3 Make it so UnrealIRCd has full control over the SSL/TLS versions in use
and not just the operating system.
This makes us use SSL_CTX_set_min_proto_version(), which unfortunately is
a less fine-grained control for disabling specific SSL/TLS versions.
However, after that we use SSL_CTX_set_options with SSL_OP_NO_xxx.
The latter is deprecated though. Will revisit this change before U5 release..
2019-07-07 10:22:29 +02:00
Bram Matthys 73bbf10170 Build tests: --enable-werror 2019-07-07 09:54:40 +02:00
Bram Matthys fa39bafe99 tls-tests: Check not only against baseline but against all
[skip ci]
2019-07-07 09:34:30 +02:00
Bram Matthys 6a44b002da Add cipherscan profile for openssl 1.0.1, as used by Debian 8 (jessie).
Main difference is that the curve used for ECDHE is fixed at prime256v1
rather than a list of multiple choices (this due to an openssl 1.0.1
limitation).
[skip ci]
2019-07-07 09:27:57 +02:00
Bram Matthys 0235c6f233 Remove 2 cipherscan profiles (only to reintroduce them later)
[skip ci]
2019-07-07 09:24:33 +02:00
Bram Matthys 3b3f63b990 Add HAVE_EXPLICIT_BZERO. Fix compile problems on Debian and other older
systems without explicit_bzero. Current usage is only in the PRNG which
is not very important anyway. We can re-visit later by attempting to
provide a fallback portable version, but from what I've seen this is
pretty ugly.
2019-07-07 09:18:34 +02:00
Bram Matthys 7ac11973d0 Fix crash in TOPIC with certain remote server traffic.
And make sure we don't change topic text if it comes from a remote link.
2019-07-06 17:48:44 +02:00
Bram Matthys 74325280dd Due to new defaults, the baseline for the SSL/TLS changed as well. 2019-07-01 07:45:48 +02:00
Bram Matthys 74cf811759 Failed to initialize a variable in changes last week.
Not caught by tests due to lack of -O2, we should add a buildbot for that..
2019-07-01 07:40:49 +02:00
Bram Matthys fea09b6659 Switch from RSA 4096 to ECC secp384r1 2019-06-30 10:53:58 +02:00
Bram Matthys d3d9b499a7 Move src/ssl.cnf -> extras/ssl.cnf
[skip ci]
2019-06-30 10:25:19 +02:00
Bram Matthys e90f6e0446 Remove 'make encpem'. Nobody uses this as it would mean you always need
to enter the private key password when UnrealIRCd is (re)started.
Similarly, remove all references to it on Windows as well, where people
thought clicking "Encrypt private key" was a good idea. Can't blame them,
it sounds good on first sight :D
[skip ci]
2019-06-30 10:23:15 +02:00
Bram Matthys 696c06b6a6 Load authprompt module by default. 2019-06-29 19:17:52 +02:00
Bram Matthys f0f69bfe48 Change set::ident::read-timeout from 30 to 15 seconds since otherwise
it exceeds set::handshake-timeout which would be very unfortunate for
those (few) poor users that are affected by this.
2019-06-29 18:51:02 +02:00
Bram Matthys 60a89b8c3f Change set::outdated-tls-policy::server and ::oper to deny.
Both servers and IRCOps must not use outdated SSL/TLS protocols or ciphers.
2019-06-29 18:34:27 +02:00
Bram Matthys 94faf02c70 Change set::plaintext-policy::oper to deny. IRCOps really must use SSL/TLS. 2019-06-29 18:31:37 +02:00
Bram Matthys 375b03c132 Fix (just created) bug in extcmode unloading (with param).
Update slot/param mapping. Now unloading should work well...
otherwise it crashed after destroying the channel.
2019-06-29 09:51:23 +02:00
Bram Matthys bbbdba1083 Make chanmodes/link module un-PERM. Thanks due to previous change. 2019-06-29 09:11:20 +02:00
Bram Matthys b605b7fd86 Use delayed module unloading not only for modules with moddata but also
for modules which have extended channelmodes with parameters,
since they have the same problem.
2019-06-29 09:10:18 +02:00
Bram Matthys 96ad3e8f71 Nothing special. Add a comment to blacklist module, in case someone
things it would be wise to make it unPERM ;)
[skip ci]
2019-06-29 08:55:36 +02:00
Bram Matthys 5d6f0a79ad Make jumpserver module non-PERM, thanks to LoadPersistentPointer etc. 2019-06-29 08:52:52 +02:00
Bram Matthys fbf4946777 Update tkldb to use new LoadPersistentInt/SavePersistentInt functions.
And before that, I fixed these functions so they actually work :D
2019-06-29 08:44:12 +02:00
i e03fa760ef update makefile.win32 for extbans/partmsg 2019-06-29 00:53:41 +03:00
i 780d9e95a2 extbans/partmsg: remove unused leftovers 2019-06-29 00:41:23 +03:00
i 7c4bd691fe fix modules.default loadmodule directive for partmsg 2019-06-29 00:39:23 +03:00
i cf3d01da06 extban ~p for hiding part/quit message 2019-06-29 00:30:10 +03:00
Bram Matthys 5182c664d1 Easier API for just-commited persistent variables. Example:
LoadPersistentPointer(modinfo, removefld_list, floodprot_free_removefld_list);
SavePersistentPointer(modinfo, removefld_list);

The above example was for a pointer, there are also functions for int and long,
which are even more simple:
LoadPersistentInt(modinfo, somevar)
SavePersistentInt(modinfo, somevar)
and
LoadPersistentLong(modinfo, somevar)
SavePersistentLong(modinfo, somevar)
both are untested, but will be tested soon...
2019-06-28 22:08:45 +02:00
Bram Matthys 0920967cc4 New module_load_variable / module_save_variable functions
and made floodprot to use these functions.
TODO: 1) Different functions for pointer/int/long, 2) macro?
2019-06-28 21:02:29 +02:00
Bram Matthys c720417487 MOD_UNLOAD() was always called with an invalid modinfo argument. 2019-06-28 21:01:43 +02:00
Bram Matthys 7fe1848340 Make floodprot no longer PERM so it can be reloaded. Useful if we ever
make a mistake in the module so we can upgrade it on-the-fly.
Or if someone wants to get rid of it.
TODO: consider abstracting the saving/restoring of vars.
2019-06-28 20:14:32 +02:00
Bram Matthys 8686bf978e Support for unloading channel modes with parameters (w/o MOD_OPT_PERM) 2019-06-28 20:07:21 +02:00
Bram Matthys 1757abf31a Duh.. 2019-06-28 19:16:21 +02:00
Bram Matthys 1f5acd852b Update tkldb to use (new) MODDATATYPE_LOCALVAR. 2019-06-28 19:11:34 +02:00
Bram Matthys 2a7fc8042d Add new moddata types: MODDATA_LOCALVAR and MODDATA_GLOBALVAR. Untested.
Code using it will soon follow (and then it will be tested :D)
2019-06-28 18:35:37 +02:00
Bram Matthys 38e9c100d4 Get rid of include/threads.h (unused) 2019-06-26 17:27:45 +02:00
Bram Matthys a2510a5dca Delete sock.h, isn't even used anymore.
[skip ci]
2019-06-26 17:25:34 +02:00
Bram Matthys 70cca778cd Test compile w/o sock.h 2019-06-26 17:19:10 +02:00
Bram Matthys c673e5bbc6 Get rid of now meaningless include/hash.h 2019-06-26 17:17:20 +02:00
Bram Matthys 8e44d4d5ab Get rid of weird NullChn, which is now just NULL :D 2019-06-26 17:13:45 +02:00
Bram Matthys ded4a65a60 u_int16_t -> uint16_t and u_int32_t -> uint32_t, remove typedefs for
these types and others, that should no longer be needed thanks to
stdint.h.
2019-06-26 17:06:46 +02:00
Bram Matthys e8f336622a u_int64_t -> uint64_t 2019-06-26 17:03:07 +02:00
Bram Matthys 709c84fff9 Remove stupid hash table layer for channels that only eats 256k+ extra
memory and causes unnecessary slowdown. Stupid ->hits and ->links.
And get rid of "return (xyz)", must be "return xyz" :D
2019-06-26 16:56:17 +02:00
Bram Matthys f1b0b6b76e Make throttling code (connect-flood) use SipHash and increase the
hash table size from 1019 to 8192 to have fewer collisions.
2019-06-26 16:46:28 +02:00
Bram Matthys d5395848b7 Double the size of hash tables to reduce collisions. 2019-06-26 16:16:56 +02:00
Bram Matthys c75a1ebb25 Make src/modules/history_backend_mem.c use SipHash. And also,
make the module permanent.. which is probably a good idea :D
2019-06-26 15:49:54 +02:00
Bram Matthys d2f4f53a4a Document functions in src/random.c 2019-06-26 15:41:47 +02:00
Bram Matthys 000fa08aee Remove FIXME. As there's no need to fix that.
[skip ci]
2019-06-26 15:38:57 +02:00
Bram Matthys 12511940d6 src/random.c: remove rs_stir_pid, since we don't fork anyway.
(or at least not in a way that matters...)
2019-06-26 15:12:43 +02:00
Bram Matthys a843567b70 Update src/random.c to use the ChaCha based random generator. 2019-06-26 15:02:25 +02:00
Bram Matthys 0d7f9e219e Update reputation module to use SipHash 2019-06-26 14:13:12 +02:00
Bram Matthys eafd929e24 Update DNS code to use SipHash 2019-06-26 14:08:03 +02:00
Bram Matthys 703be7eb29 Move some functions from parse.c to hash.c and add documentation
for various functions, such as find_person, find_client, etc.
2019-06-26 13:57:06 +02:00
Bram Matthys f6eac29592 hash_nick_name -> hash_client_name, hash_find_nickserver -> hash_find_nickatserver
Both were confusing :)
2019-06-26 13:45:55 +02:00
Bram Matthys d5b643ceee Rewrite hash table code to use SipHash (more to follow) 2019-06-26 13:24:02 +02:00
Bram Matthys df7bcc1326 Remove temporary FreeBSD workaround.
(reverts adf56ad8fd)
2019-06-26 07:14:35 +02:00
Bram Matthys 2894681c4f Cleanup m_topic. Handle the if's in a smart way rather than indenting X levels. 2019-06-26 06:55:01 +02:00
Bram Matthys e17ba624c7 Fix crash in new get_access(). This crash happens in case of
(malicious) server traffic.
Also seems we have a behvior change here: has_voice and such returned
1 for servers, now it returns 0. I can live with that, but may cause
more issues.
2019-06-24 16:24:01 +02:00
Bram Matthys 849d57be40 Fix msgid inconsistency in KICK. Thank you, new test framework :] 2019-06-24 14:00:47 +02:00
Bram Matthys 4213ca9ab1 Add MyClient() call in QUIT for set::part-instead-of-quit-on-comment-change
handling. Since we shouldn't PART remote users.. ;)
2019-06-23 17:14:35 +02:00
Bram Matthys 6fab82124a Call is_banned with BANCHK_LEAVE_MSG from both PART and QUIT.
The latter only if iConf.part_instead_of_quit_on_comment_change.
2019-06-23 17:10:41 +02:00
Bram Matthys c507db9005 Get rid of Windows compile warning regarding abort(). 2019-06-23 08:57:39 +02:00
Bram Matthys 7875fc9d7d Compile fixes for Windows due to cleanup from yesterday. 2019-06-23 08:03:33 +02:00
Bram Matthys 7161f33311 Code cleanup: make src/*.c use the generic #include "unrealircd.h" file
(with only a few exceptions)
Now, we'll find out later if Windows still compiles, I guess ;)
2019-06-22 21:18:08 +02:00
Bram Matthys e8ff5d77c7 Remove weird option set::snomask-on-connect. Doubt anyone uses it. 2019-06-22 19:36:54 +02:00
Bram Matthys 74586e7ecd Make all snomasks oper only (was just one: +s +k).
Maybe an API change later?
2019-06-22 19:34:04 +02:00
Bram Matthys f9b589d0c6 Remove almost 1000 lines, all functions that are (now) unused.
Also, drop support for snomasks to non-ircops (TODO: more)
2019-06-22 19:32:11 +02:00
Bram Matthys b8d033f11e The blacklist module is missing a call to blacklist_quit. Bug? 2019-06-22 19:11:16 +02:00
Bram Matthys f0f0a93cc5 Makefile: makes no sense to create modules/cap only to remove it later
[skip ci]
2019-06-22 17:57:42 +02:00
Bram Matthys e03c8135a9 CHFL_CHANPROT -> CHFL_CHANADMIN, is_chanprot -> is_chanadmin
These are just remnants of the past, when +a was called channel protection.
It is called channel admin since as long as I can remember, and in 90%
of the code and documentation it is called that way.
2019-06-22 17:32:57 +02:00
Bram Matthys cf29aa8feb Replace various 90% identical functions with some macro's instead. 2019-06-22 17:29:03 +02:00
Bram Matthys 19af2c6b5c Fix return value in can_send() and add tracing for modules that don't behave. 2019-06-22 17:21:57 +02:00
Bram Matthys 05202dd2a4 Move can_send() function from core to m_message. 2019-06-22 16:03:06 +02:00
Bram Matthys bf4d96e991 can_send() now returns 0 (false) or 1 (true), rather than magic values.
Also, the HOOKTYPE_CAN_SEND prototype changed so you can communicate
the error message in a flexible way, similar to what I just did
with extbans.
2019-06-22 15:57:32 +02:00
Bram Matthys f08557f2fd Propagate is_banned() errmsg to m_message layer. 2019-06-22 15:36:21 +02:00
Bram Matthys 7fd794c563 Make /VERSION send 005 properly. 2019-06-22 15:16:16 +02:00
Bram Matthys be49ef0bb8 More extban API changes... fun... 2019-06-22 15:11:16 +02:00
Bram Matthys 383f54a6c9 Fix bug caused last few weeks where user would receive a privmsg with
a SID/UID rather than server-/nickname.
2019-06-22 14:21:07 +02:00
Bram Matthys 086d370704 Change extban API: pass 'msg' in BANCHK_MSG and (new) BANCHK_LEAVE_MSG. 2019-06-17 20:19:34 +02:00
Bram Matthys 1cfebcf05e Add new set::part_instead_of_quit_on_comment_change to convert QUIT to PART
in case of a change in the quit comment, such as color stripping / blocking.
The default is 'no', but some users may like this to be 'yes' so things like
+S only affect the channel and not the quit for all channels.
This hereby also lays the groundwork for some next commits of 'i' :)
The configuration item name may still change if I think of a better one....
2019-06-17 08:20:42 +02:00
Bram Matthys b8cdb21754 Fix crash on "TKL" command without parameters. Due to rewrites from yesterday. 2019-06-17 07:46:32 +02:00
Bram Matthys c2ba6b40b8 Silently force a 'make clean' as otherwise part (or whole) of the
compiled source could be using different settings than the user
just requested when re-running ./Config.
2019-06-16 10:13:57 +02:00
Bram Matthys 7b42c252ea Some documentation updates, nothing important
[skip ci]
2019-06-16 10:08:50 +02:00
Bram Matthys 1d046b6f61 Move ban [nick|user|ip] { } block parsing to m_tkl. 2019-06-16 09:33:30 +02:00
Bram Matthys d106609d89 Move all spamfilter { } block parsing to m_tkl. 2019-06-16 09:21:39 +02:00
Bram Matthys 36808a60ac Remove all tk->flags & TKL_FLAG_CONFIG entries on rehash.
Make local spamfilter blocks use this too. Already did so for
ban xxx types that will cause kline/gline/zline and qline.
This also simplifies handling in the tkldb module.
2019-06-16 09:09:09 +02:00
Bram Matthys d0d454f696 Fix 100% CPU loop problem on REHASH due to bug in history backend (deja-vu). 2019-06-16 08:44:57 +02:00
Bram Matthys bd785a9309 Some initial work for the upcoming TKL 'e'/'E'/TKL_EXCEPT type. 2019-06-16 08:42:41 +02:00
Bram Matthys 18ae7b8925 Document *ALL* functions in m_tkl and remove efuncs that are no longer
needed: tkl_expire and tkl_check_expire, which are now self-contained
in the m_tkl module.
2019-06-16 08:35:56 +02:00
Bram Matthys b102e79f8e Use check_banned() from s_bsd too, less duplicate code. 2019-06-15 18:44:33 +02:00
Bram Matthys 24726d533d Make the require authentication { } block use the TKL layer.
Remove CONF_BAN_UNAUTHENTICATED.
2019-06-15 18:31:06 +02:00
Bram Matthys 8c2ce9a7d5 [tkldb] skip if (tkl->flags & TKL_FLAG_CONFIG) 2019-06-15 18:27:43 +02:00
Bram Matthys 8e6302d003 Rip out CONF_BAN_NICK, CONF_BAN_IP, CONF_BAN_USER, now that they are moved
to the TKL layer.
2019-06-15 18:18:19 +02:00
Bram Matthys 97fc19591c Add support for tkline->flag TKL_FLAG_CONFIG: item from configuration
file that cannot be deleted via commands such as /KLINE -...
And transform some ban XX entries to use the TKL system
TODO: test & rip out the old stuff
2019-06-15 18:08:43 +02:00
Bram Matthys a40cd9fae4 Rename dospamfilter() to run_spamfilter(), which is more meaningful. 2019-06-15 17:43:34 +02:00
Bram Matthys 630ab8f869 Fix some indentation 2019-06-15 17:37:02 +02:00
Bram Matthys 060502aedd Remove unused variables and some shadow... 2019-06-15 17:27:54 +02:00
Bram Matthys 4f4cda7f7d Cleanup part 2 of m_tkl. Splitting up in m_tkl_add / m_tkl_del and
various whitespace / indenting fixes.
2019-06-15 17:18:48 +02:00
Bram Matthys 876fda63ec Export tkl_type_string via efuncs (actually, the name may change...) 2019-06-15 17:06:41 +02:00
Bram Matthys 7542cdeaca Cleanup of m_tkl part 1. New tkl_chartotype (the reverse of tkl_typetochar).
Move stripcrlf() to core instead of at 3 places, rename calls of iCstrip()
to that. Hopefully I didn't break anything.. :D
2019-06-15 16:56:34 +02:00
Bram Matthys 41ba282ed6 Obey MAXMODEPARA under all circumstances. 2019-06-15 15:17:24 +02:00
Bram Matthys ca9b04a0fa Module API: EventAddEx() -> EventAdd() 2019-06-12 19:09:33 +02:00
Bram Matthys e3013ae067 Commit current work of history API and channel history mode (+H count:time)
Note: there are still some TODO items
2019-06-12 18:59:12 +02:00
Bram Matthys ed4bc8e8c5 Prevent running ./Config as root and print out a clear instruction.
Since UnrealIRCd 4 (and probably before) our instructions always mentioned
that you should not build or run UnrealIRCd as root.

Even system integrators are unlikely to build as root, but just in
case, the safety the check is in ./Config and not in ./configure.
2019-06-12 13:16:58 +02:00
Bram Matthys bfebfa1f00 Slightly better wording 2019-06-12 13:11:21 +02:00
Bram Matthys 3b7e959dd7 Merge branch 'unreal50' of github.com:syzop/unrealircd-next into unreal50 2019-06-12 13:09:40 +02:00
Bram Matthys 148dfc53a4 Make clear the user should not compile or run as root. Seems some
people miss this when they only read the README and not the
installation instructions from the wiki
( https://www.unrealircd.org/docs/Installing_from_source )
2019-06-12 13:08:22 +02:00
GottemHams bb4bd4dffc [tkldb] Forgot a check for local Q-Lines, also bail early when reading local spamfilters/Q-Lines 2019-06-11 15:54:53 +02:00
Bram Matthys 66be5a2ca6 Re-indent the FLAGS_* stuff in include/struct.h
And remove FLAGS_PING which was unused.
2019-06-10 18:50:05 +02:00
Bram Matthys fce0253b5a Remove unused FLAGS_CHKACCESS / SetAccess / ClearAccess.
Also, DoAccess() was already commented out in UnrealIRCd 4 or something.
This results in an empty finish_auth() function but that should be OK,
as ident checking takes place before parsing any other input IIRC.
2019-06-10 18:39:03 +02:00
Bram Matthys e5e260eaa1 Remove FLAGS_NONL / NoNewLine(), which isn't used since 4.0.0 or so.
And add a FIXME, or at least a TODO-investigate-this item ;)
2019-06-10 18:33:46 +02:00
Bram Matthys ac19f91eb8 Turns out it's not that easy.. ;) 2019-06-08 16:49:46 +02:00
Bram Matthys 573a601127 Nothing important, just a silly m_dummy :D 2019-06-08 14:37:22 +02:00
Bram Matthys 12dbbca15e Rip out support for changing offsets via TSCTL and tune file. Use NTP!!
Adjustments via TSCTL are never accurate enough.
2019-06-08 09:26:55 +02:00
Bram Matthys 3749f8d674 Remove timesync support. Use your OS time synchronization instead!
Timesync was previously disabled by default in March 2018.
2019-06-08 09:11:46 +02:00
Bram Matthys d796247ddf Re-indent 2019-06-07 15:08:23 +02:00
Bram Matthys a2ee5d67f3 Update a few hooks to include mtags, more will follow later.
This fixes inconsistent mtags accross server links with delayjoin.
2019-06-07 15:05:10 +02:00
Bram Matthys 1f2bb0d89b Delayjoin: if kicking invisible user we used to clear the invisibility
status of the victim (JOIN+KICK). That seems unnecessary to me, since
there is already code in place to handle this -- hopefully it works too.
2019-06-07 14:41:01 +02:00
Bram Matthys 61b4a6ea29 Add mtags in non-chan PRIVMSG. Remove sendto_message_one since you can
just use sendto_prefix_one. Actually it was only used at 1 place (m_message).
2019-06-07 14:25:28 +02:00
Bram Matthys 0e68265e12 Remove sock.h old compatibility code. Shouldn't be needed anymore.
(This provided FD_ZERO and such if the OS/libc did not provide it)
2019-06-07 12:42:28 +02:00
Bram Matthys 5ad0278f9e No longer check for big enough FD_SETSIZE. We all use poll/kqueue/epoll/etc now. 2019-06-07 12:39:39 +02:00
Bram Matthys de89de9558 Fix MODE not sending message tags across servers 2019-06-07 12:34:22 +02:00
Bram Matthys 13f3356963 Merge branch 'unreal50' of github.com:syzop/unrealircd-next into unreal50 2019-06-07 12:24:41 +02:00
Bram Matthys adf56ad8fd Re-enable FreeBSD workaround for mysterious test failures. 2019-06-07 12:24:25 +02:00
GottemHams d292d2ee9c Forgot to change a couple X:Line things to X-Line 2019-06-05 19:27:00 +02:00
GottemHams 8846506292 Might be a good idea to also skip local Q:Lines (ban nick {} blocks) :D 2019-06-05 19:19:03 +02:00
Bram Matthys e423f69082 [tkldb] Add some extra check for trailing DB data.
If everything goes correctly then after reading all TKL entries we
should be at the end of file. If there is still data after that,
something went wrong... quite wrong.. :D
2019-06-05 09:39:59 +02:00
Bram Matthys 673779eab9 Write string lengths as 16-bit rather than 64-bit: saves about 34% space
of the database file, with possible some small speed improvement as well.
2019-06-05 09:35:43 +02:00
Bram Matthys ec5811dc3b [tkldb] Save every 5 minutes now that writing is fast enough :)
And mention the benchmark figures in the .c file.
2019-06-05 09:01:04 +02:00
Bram Matthys eaa1b213b9 [tkldb] Use buffered I/O. Writing the DB is now 29 times faster.
Saving 100k zlines now takes 72ms instead of 2100ms
Loading 100k zlines now takes 510ms instead of 1300ms
2019-06-05 08:53:30 +02:00
Bram Matthys 1f6bb6d3cc Some benchmarking 2019-06-05 08:45:48 +02:00
Bram Matthys 498f728cbb [tkldb] If DB is corrupt then rename to .corrupt and start a new one.
This, rather than having the module not loaded at all, which could mean,
especially if missed the warning on boot, that you run for weeks or
months without having your TKL's stored, which would be a shame ;)
Also a failure to rename() is not fatal, as it likely means that we
don't have permissions, in such a case you will see a repeated error
every X minutes due to the write, which is good.
2019-06-05 08:22:22 +02:00
Bram Matthys 21f24cc596 Fix for NICK+USER order. Should be correct? Should check identd.. 2019-06-04 20:05:27 +02:00
Bram Matthys 5f8dd67051 if( -> if ( :D
[skip ci]
2019-06-04 20:04:22 +02:00
Bram Matthys e9da2eb3cb [tkldb] "skipped".. why? "expired" :D
And don't bother users too much about this, unless in DEBUGMODE.
2019-06-04 20:00:15 +02:00
Bram Matthys 6b1af917fc Do it the other way around than previous commit. Force 32 bit type.
So it's compatible with machines where int is 64bit (ILP64),
mostly for the future I guess.
2019-06-04 19:52:59 +02:00
Bram Matthys 628f367849 tkldb: version field should also be forced 64 bit or you'll have the same
problem with porting 32 to 64 again...
2019-06-04 19:34:37 +02:00
GottemHams 52b39acf78 Fixed return values/checks for helper functions/macros, return empty string instead of NULL when reading zero length strings, discard tkl->subtype and store spamf as a char instead of unsigned int, remove rewriting after DB read, also renamed TKLines/TKLs/etc to *-Lines for uniformity with other code 2019-06-03 20:45:56 +02:00
Bram Matthys bb91ac1c56 Update this a bit. Will take a look again later.
[skip ci]
2019-06-03 18:48:18 +02:00
Bram Matthys 9f64711113 Remove FreeBSD 12 workaround 2019-06-03 15:17:02 +02:00
Bram Matthys 597186d9c3 BuildBot: Fix run-tests on FreeBSD 12 2019-06-03 14:45:56 +02:00
Bram Matthys 253df2c8db BuildBot: -j3 -> -j4
[skip ci]
2019-06-03 13:31:58 +02:00
Bram Matthys 55757a5605 Remove references to old test framework.
[skip ci]
2019-06-03 13:30:15 +02:00
Bram Matthys 73cea64c9f Updates for IRC test framework: changed port to 5901 of irc1 2019-06-03 13:03:43 +02:00
Bram Matthys bc8e4a5c47 Updates for new IRC test framework 2019-06-03 12:59:22 +02:00
Bram Matthys 321cf75fb7 Resolve resolve merge conflict :D
[skip ci]
2019-06-01 08:57:19 +02:00
Bram Matthys 13f96b0a57 Small adjustments to tkldb: convert some to safefree(),
get rid of sizeof(char) - which is guaranteed to be 1 by C99 and
on any decent compiler and always use MyMallocEx even when it's not
necessary :D.
2019-06-01 08:53:17 +02:00
Bram Matthys e78e303314 Re-indent tkldb, sorry could not resist :D 2019-06-01 08:46:22 +02:00
Bram Matthys 2556ae9d70 [tkldb] Allow boot without existing database. Change return values to 1/0 (true/false). 2019-06-01 08:39:32 +02:00
Bram Matthys b8e65a2f7f Buildbot: *NIX build test: add -DNOREMOVETMP to make valgrind do a better
job at printing module information (I hope).
2019-06-01 08:24:31 +02:00
Bram Matthys 7c32e4d63f Windows build: fix makefile.win32 2019-06-01 08:23:33 +02:00
GottemHams 4dbe8a8238 Resolve merge conflict :D 2019-05-31 22:39:27 +02:00
GottemHams c697e2ea99 Renamed m_storetkl to just tkldb 2019-05-31 22:25:18 +02:00
GottemHams bf6f885b98 Storetkl now also supports the hashed *@IP Z:Line thingy, also added errno calls to all error output 2019-05-31 22:06:59 +02:00
GottemHams c43a1b15af Store TS types in a uint64_t before DB writing to prepare the module for a Year 2038 fix, also upgraded num/rewrite ints to 64 bit since they *might* be as big as tklcount 2019-05-31 21:23:19 +02:00
Bram Matthys c6389270f9 Remove a few useless #define's (And final test of buildbot today :D) 2019-05-30 21:02:27 +02:00
Bram Matthys c3add3b41c Windows build: Randomly remove some slashes, for no reason.
[skip ci]
2019-05-30 20:12:25 +02:00
Bram Matthys 7d7d736df3 More windows build fixes
[skip ci]
2019-05-30 20:03:50 +02:00
Bram Matthys 858b63e1d5 Windows: remove .CHANGES.NEW
[skip ci]
2019-05-30 19:56:54 +02:00
Bram Matthys 9af24a56f9 Buildbot: makefile.win32 updates
[skip ci]
2019-05-30 19:42:17 +02:00
Bram Matthys 57e06a7070 Windows: add api-mtag to makefile.win32 2019-05-30 19:36:15 +02:00
Bram Matthys f0a773ee59 Windows: Add conf_preprocessor to makefile.win32 2019-05-30 19:33:21 +02:00
Bram Matthys a2a7acc4bd Buildbot: more windows updates 2019-05-30 19:30:20 +02:00
Bram Matthys e8e113a8c0 Buildbot: ............................. 2019-05-30 19:23:15 +02:00
Bram Matthys 120ec5cea3 ............. 2019-05-30 19:22:14 +02:00
Bram Matthys d02b4de5d3 Buildbot: updates for windows 2019-05-30 19:20:15 +02:00
Bram Matthys 2682d7bc6d Buildbot: Updates for windows 2019-05-30 19:08:33 +02:00
Bram Matthys 9530006e70 BB: Terminate unrealircd at end of test (otherwise it may hang buildbot) 2019-05-30 16:48:05 +02:00
Bram Matthys 03fbc35fb7 Buildbot: Run cipherscan not on FreeBSD for now, so we can test the rest. 2019-05-30 16:14:06 +02:00
Bram Matthys 3f723323d0 BuildBot: Use gmake on FreeBSD and temporarily disable select-config. 2019-05-30 16:08:54 +02:00
Bram Matthys ecac3f9d4a Mention U5 in ./Config -quick restriction 2019-05-30 08:52:08 +02:00
Bram Matthys 1b0a7cb9b8 Fix build tests due to previous change. 2019-05-30 08:51:05 +02:00
Bram Matthys 195cd17d02 Rename LIBDIR to PRIVATELIBDIR in config.settings to avoid confusion. 2019-05-30 08:46:13 +02:00
GottemHams 4004152a7a Updated m_storetkl's descriptions for added clarity 2019-05-28 21:44:27 +02:00
GottemHams 0f97c03487 Probably a good idea to add storetkl stuff to Windows makefile too huh 2019-05-28 21:38:38 +02:00
GottemHams d8ff67d088 Added m_storetkl to modules.default.conf 2019-05-28 21:35:37 +02:00
GottemHams 35600fdfa0 Updated storetkl: write DB on a timer instead of hooking TKL_ADD/DEL, better DB format for improved compatibility with future Unreal versions, configurable .db path, support for softbans, write DB to a tempfile first to prevent corruption of existing DB, also applied some misc optimisations/portability improvements 2019-05-28 21:34:11 +02:00
Bram Matthys 6cf386ee87 ... 2019-05-27 19:22:04 +02:00
Bram Matthys 9e87f92c64 Fix small memory leak in SJOIN. 2019-05-27 19:20:25 +02:00
Bram Matthys f046482761 Freeing memory is usually a good idea (duh) 2019-05-27 07:43:44 +02:00
Bram Matthys 55a183bde4 Add "PROTOCTL MTAGS" to indicate message-tags & big buffer support.
This so we can link to UnrealIRCd 4.x....
2019-05-26 13:56:09 +02:00
Bram Matthys 57fd5f4f2b Add HOOKTYPE_IS_HANDSHAKE_FINISHED: if a module returns 0 then register_user()
will not be called. This is used, for example, by m_cap when the CAP LS
handshake is still in progress. Modules can add their own requirements
as they see fit.
Note that, as for (CAP) functionality, this adds nothing new, it just
implements it in a cleaner way, rather than all over the place,
like in UnrealIRCd 4.x.
2019-05-26 12:07:44 +02:00
Bram Matthys dde1cf3194 Fix some mtag FIXME's. 2019-05-26 11:45:58 +02:00
Bram Matthys 622cb43a48 Manual audit of exit_client() done, for mtags. 2019-05-26 11:36:40 +02:00
Bram Matthys 61b15d9f4d Mass update (automatic) of exit_client().
Next step is manual audit...
2019-05-26 10:45:54 +02:00
Bram Matthys be4ef2e7e3 Add message tags support in exit_client(). Yay.. another API change! 2019-05-26 10:36:39 +02:00
Bram Matthys 9f54a19801 New unified function for common: sendto_local_common_channels()
and make this support mtags so it now works for NICK, ACCOUNT, AWAY.
Still to do: exit client for QUIT.
2019-05-26 10:08:02 +02:00
Bram Matthys 39cd11f504 Fix OOB read due to message tag with trailing backslash. 2019-05-25 15:48:33 +02:00
Bram Matthys b63a67dea0 More parse/parse2 fixes like 6e219cd834.
This fixes an OOB write (NUL byte write) due to trusting 'length'.
It is now removed and renamed to bytes, it's only for adding lag.
2019-05-25 15:40:18 +02:00
Bram Matthys 39af766ced Add a FIXME 2019-05-25 15:40:10 +02:00
Bram Matthys a74bae0447 Some cleaning in m_sajoin. Whitespace and if() order. 2019-05-25 12:32:18 +02:00
Bram Matthys f320e32b7e Clean up compiler flag checker.
(Since we don't need the C++ check, we use C only)
2019-05-25 11:36:13 +02:00
Bram Matthys e0c2ccd99b Remove unused configure checks: HAVE_C99_VARLEN_ARRAY, HAVE_RAND_EGD,
and an AC_SUBST for MKPASSWDLIBS.
2019-05-25 11:27:53 +02:00
Bram Matthys 05e3ed63a0 Default to --with-system-pcre2. Now all shipped libs default to system libs. 2019-05-25 11:01:11 +02:00
Bram Matthys 5513b21936 Remove old extras/regex 2019-05-25 10:50:01 +02:00
Bram Matthys 1108b58951 Remove old TRE regex engine. Hasn't been maintained since 2010
and has various outstanding crash and 100% CPU issues.
We have been encouraging the PCRE2 engine since the start of
UnrealIRCd 4 already.
TRE is being phased out of U4 by the end of the year, so we can
safely remove it in U5 already.
2019-05-25 10:42:46 +02:00
Bram Matthys 185b4e05c0 Whoops, this #comment in 'make install' showed up to end-users. 2019-05-25 10:19:33 +02:00
Bram Matthys 4b45555edd Fix issue if compiling without TRE but with shipped argon2 (or other
combinations). Need to create libdir in ./Config ;)
2019-05-25 10:17:33 +02:00
Bram Matthys 6e219cd834 Remove confusing 'bufend' variable from parse and parse2 functions.
Such a variable suggests that we will never read past that, but that
is not the case, since we (correctly) assume that the buffer is
NUL terminated, which is ensured by dbuf_getmsg().
The 'length' is still available for informational purposes, to avoid
strlen()'s at various places.
Hm, I guess length can cause the same confusion as bufend, but still..
I like it better :D
2019-05-25 09:50:36 +02:00
Bram Matthys a2f37722ae Fix unitialized variable issues in message-tags handling. 2019-05-25 09:08:43 +02:00
Bram Matthys 8b1cd80700 Make labeled-response work again after API change.
TODO: handle both draft/ and without draft/, maybe upstream?
2019-05-25 09:08:26 +02:00
Bram Matthys 427885681d Make account-tag not inherit. I don't think there's a bug right now,
but it's not logical and makes it too easy to make a mistake.
2019-05-25 08:05:26 +02:00
Bram Matthys daab5abc92 Manual audit of sendto_one(): add mtags support where necessary. 2019-05-24 21:09:55 +02:00
Bram Matthys 6e5df1a4c0 Add mtags argument to sendto_one(). Phase 1 (automated), next is manual
audit of all sendto_one's. Also it doesn't work yet...
2019-05-24 17:38:48 +02:00
Bram Matthys c307d6c61b Make WHOX the default. Warn if you try to load both modules.
Now uses CommandAdd() instead of an override, which was just an
interim solution earlier.
2019-05-23 19:08:49 +02:00
i c528b22cdd CIDR support for /WHOX ip matching. 2019-05-22 23:01:55 +03:00
Bram Matthys 418b42e5bf More sendnumeric() and sendnumericfmt() conversions. 2019-05-22 17:09:12 +02:00
Bram Matthys 4a11309344 Transform sendto_one's to sendnumericfmt() - stage 1 2019-05-22 16:39:06 +02:00
Bram Matthys f8bee4941a Some fixes due to the sendnumeric() migration (see previous commits). 2019-05-22 12:58:38 +02:00
Bram Matthys 39029555cb A few more sendnumeric() conversions, putting numerics in main file. 2019-05-22 12:39:01 +02:00
Bram Matthys 7e4bfbc7c3 Move more to sendtxtnumeric()... and some sendnumeric() leftovers. 2019-05-22 12:10:57 +02:00
Bram Matthys 1a4cbb7023 sendnumeric() - phase 2 2019-05-22 11:41:46 +02:00
Bram Matthys c27bb26abc sendnumeric() - stage 1 2019-05-22 10:43:07 +02:00
Bram Matthys 5fb9b12d5e Mass-replace sending of notices with sendnotice(), which exists for quite a while now ;) 2019-05-22 09:34:34 +02:00
Bram Matthys a320bec089 More message tags support in the API. sendto_server() now has mtags
and sendto_match_butone as well.
Still about 15 FIXME's that need to be resolved, but committing early.
2019-05-21 19:00:35 +02:00
Bram Matthys 6d1d3de620 Move .CHANGES.NEW -> doc/Config.header 2019-05-19 16:30:27 +02:00
Bram Matthys f08e662878 Update and document modules.default.conf wrt IRCv3 features (CAPs etc). 2019-05-19 16:06:06 +02:00
Bram Matthys c3a929646c Move src/modules/cap/* to src/modules/ as the meaning got blurred.
For example, msgid / message-ids is not a CAP, while server-time is.
There mere fact of something being in CAP or not shouldn't cause
something to be in different directories ;).
2019-05-19 15:58:34 +02:00
Bram Matthys da31011b30 Move most of the message-tags stuff to the message-tags module. 2019-05-19 15:41:24 +02:00
Bram Matthys 13c59febbf Support for optional efunctions, with a default handler. 2019-05-19 09:49:53 +02:00
Bram Matthys 4e17f85fe6 1) New function new_message() which should be called when a new message is
sent, or at least for channel events.
2) Move adding of msgid/time/account tags to modules,
   which is their proper place.
2019-05-19 09:24:38 +02:00
Bram Matthys 10dcacdb0a @define, @if, @endif are all working.
You can do something like:
@define $SERVERIP "1.2.3.4"
listen {
    ip $SERVERIP;
    port 6667;
}

Supported @if types:
@if $VARIABLE == "something"
@if $VARIABLE != "something"
@if defined($VARIABLE)
@if !defined($VARIABLE)
@if module-loaded("somename")
@if !module-loaded("somename")
2019-05-18 16:06:28 +02:00
Bram Matthys 35fa6cedac Convert some alloc+strlcpy to safestrldup in config code.
-curce->ce_vardata = MyMallocEx(ptr-start+1);
-    strlcpy(curce->ce_vardata, start, ptr-start+1);
+safestrldup(curce->ce_vardata, start, ptr-start+1);
2019-05-18 14:32:36 +02:00
Bram Matthys 1adb02b56b Move new preprocessor from yesterday to it's own file (src/conf_preprocessor.c) 2019-05-18 13:58:27 +02:00
Bram Matthys fad8c35847 Initial support for dynamic configuration, $define, $if, $endif.
Early commit, still cleaning up to do.
But what works is:

$define SERVER      "hub.example.org"

$if SERVER == "hub.example.org"
link .... {
....
}
$endif

$if defined(SERVER)
....
$endif

And also we have mod-loaded() which even works half-way in a block
such as in helpop:
help Chmodes {
[..]
$if module-loaded("chanmodes/stripcolor")
        " c = Block messages containing mIRC color codes [o]";
$endif
$if module-loaded("chanmodes/noctcp")
        " C = No CTCPs allowed in the channel [h]";
$endif
};

As said, still need to cleanups and there are some limitations.
Also the idea is to be able to use defined values in variable names/values
but that has not yet been implemented.
2019-05-17 20:43:36 +02:00
Bram Matthys 7204f156c2 Store relative path and is_module_loaded() now has a small behavior change.
You now call it with a path like is_module_loaded("extbans/timedban").
This, among other reasons, so you can differentiate between modules with
the same name, such as "usermodes/noctcp" and "chanmodes/noctcp".
2019-05-17 18:48:37 +02:00
Bram Matthys 330e4018c3 Comment out hideserver by default 2019-05-17 18:46:52 +02:00
Bram Matthys 83991ae2a7 Fixed issue where REHASH caused 100% CPU loop. 2019-05-17 13:40:01 +02:00
GottemHams 6e5aa1fd93 Added m_storetkl for persisting TKLines across IRCd restarts 2019-05-14 20:48:12 +02:00
Bram Matthys 4ace26ec3f Another test commit 2019-05-13 17:03:50 +02:00
Bram Matthys d9380ce3bc Test commit 2019-05-13 16:09:50 +02:00
Bram Matthys 605c2addcf Update documentation URL already (no it will not exist for the
next couple of months, probably)
2019-05-13 15:44:15 +02:00
Bram Matthys e6d474adae Temporarily remove .travis.yml to make clear that we do not use it
at the moment. Also, write a long multi-line comment. No this has
nothing to do with testing an IRC bot of any kind...
2019-05-13 15:43:01 +02:00
Bram Matthys a81ebd6632 Dumdeedum 2019-05-13 15:03:20 +02:00
Bram Matthys 7aa6c6e167 Test framework: add run-tests.bbwrapper 2019-05-13 13:41:13 +02:00
Bram Matthys cf57b3d09c Revert workaround bac365ef12 from 2 commits ago 2019-05-13 13:13:23 +02:00
Bram Matthys f2a5a143b7 Changes for buildbot infrastructure 2019-05-13 13:07:37 +02:00
Bram Matthys bac365ef12 Turn this off so I can run tests 2019-05-13 12:45:39 +02:00
Bram Matthys aff3c16c08 Provide --enable-asan and --disable-asan to toggle address sanitizer.
Since we are currently pre-alpha I decided to enable it by default
so we as devs don't forget to do so :)
2019-05-12 15:25:11 +02:00
Bram Matthys 5ebd096f16 Initial implementation of message-tags from May 5, 2019.
This also includes buffer modifications to have a larger read buffer
and IRCv3 implementations (partial or not) for:
labeled-response, msgid, server-time, batch and account-tag.

As said, it is the initial and partial implementation.
There are still various FIXME's and TODO's, the API of various
functions may still change (actually that is true for the next
months, even) and some stuff is currently in the core that will
be moved to modules.
2019-05-12 13:46:44 +02:00
Bram Matthys a87d54355a Update version to 5.0.0-dev
I'm sure there will be many other U4 references still...
2019-05-12 13:29:40 +02:00
Bram Matthys 4981bf472c Bump reputation version from 1.0.1 to 1.2 2019-05-11 14:17:45 +02:00
Bram Matthys 3a0d8fc06c Fix another reputation issue: reputation not showing in WHOIS when
a remote user has just connected (could take up to 5 minutes) and
a fix required for previous commit for connthrottle.
2019-05-11 14:15:52 +02:00
Bram Matthys 7a7266bc2f Bump connthrottle version from 1.1 to 1.2 2019-05-11 14:02:42 +02:00
Bram Matthys 64c8096361 Fix connthrottle module counting non-local connecting registered users
always as new users (regardless of reputation), causing the protection
to kick in too quickly for the poor new users. This was noticeable
after for example one server died and new users reconnecting massively
to the remaining servers. Reported by Lord.
2019-05-11 13:58:07 +02:00
Bram Matthys 9f8e73dca7 Make CAP commands case sensitive.
Suggested by Koragg in https://bugs.unrealircd.org/view.php?id=5263
2019-05-10 08:57:16 +02:00
Bram Matthys 872ebca6fa Don't forward PASS to services if the user is already logged in via SASL.
Reported by westor in https://bugs.unrealircd.org/view.php?id=5264
2019-05-10 08:49:40 +02:00
Vitor Luis 92ceb129da Helpop update (#81)
Update help.conf with soft actions and changed *:Lines to be *-Lines which goes more accordingly with the new rewording in UnrealIRCd IRC messages.
2019-05-04 14:45:33 +02:00
Bram Matthys b0d3476176 HELPOP: Update MKPASSWD documentation 2019-05-04 13:47:07 +02:00
Bram Matthys 09d31d8ded Enhance WHOX->WHO auto-conversion for +s serv.er.name, reported by k4be. 2019-05-03 13:15:17 +02:00
Bram Matthys 8a6cbfaaf0 Show linking error messages if these happen during the handshake and we
have already fully authenticated the server (but when it technically is
not fully linked as a server yet, eg post-EAUTH but pre-SERVER).

Also, send ERRORs to junk snomask from untrusted sources. After all,
the junk snomask is precisely there to enable briefly to debug issues.
In case of link errors we always advice to check BOTH sides of the link
as an IRCOp, and this advice still stands. This may just help a little
for people who do not follow our advice.
2019-05-02 09:30:15 +02:00
Bram Matthys 5b63d28e2a Improve error messages in case of failed server linking due to mixed
password types (eg: plaintext on one side, spkifp on the other side).
Refer to https://www.unrealircd.org/docs/FAQ#auth-fail-mixed

Also, unrelated to the above, don't say "Bad password?" if the
password type is not of type plaintext, since it would be confusing.
2019-05-02 08:55:22 +02:00
Bram Matthys 377fa25244 UnrealIRCd 4.2.3 2019-04-30 09:23:44 +02:00
Bram Matthys f9bbeaa6ca [nopost] Send these harmless kill messages to the junk snomask.
Nowadays these are pretty much never proxy attacks. Only scanners and
crawlers trying HTTP commands on IRC connections.. which isn't even that
weird anymore since people tend to open up port 443 for SSL/TLS IRC
to bypass firewall restrictions.
2019-04-28 12:12:53 +02:00
Bram Matthys d3f061bbd9 Updates to example.tr.conf and help.tr.conf by Serkan
[skip ci]
2019-04-28 11:48:11 +02:00
Bram Matthys 8bbc136a66 Updates to help.tr.conf by Serkan 2019-04-27 12:51:27 +02:00
Bram Matthys cc15cd63de [reputation] Disable benchmark, config error should be warning. 2019-04-25 09:56:35 +02:00
Bram Matthys 9bd4f25af5 Handle FLUSH_BUFFER gracefully (only matters in rare cases, such
as in the case of malformed server traffic).
2019-04-22 14:37:37 +02:00
Bram Matthys 15ea9a9347 UnrealIRCd 4.2.3-rc1 2019-04-22 08:25:26 +02:00
Bram Matthys d6e285bdfc AppVeyor: replace wget with curl, since wget mysteriously fails.
[skip travis]
2019-04-22 07:42:04 +02:00
Bram Matthys b1944284bd Trace appveyor issue...
[skip travis]
2019-04-22 07:33:16 +02:00
Bram Matthys 1ada6c09f1 Make clang happy 2019-04-22 07:28:05 +02:00
Bram Matthys 4234400e22 Add 'reputation' and 'connthrottle' modules to fight drones.
See https://www.unrealircd.org/docs/Connthrottle
2019-04-22 07:11:25 +02:00
Bram Matthys 81e2099f7b We already checked for the openssl library but if the openssl binary was
not found then this was not treated as a fatal error. Now it is, since
you will fail later in the installation process when a certificate file
is being made (resulting in mysterious 'req: command not found' errors).
Also, improve the error message both for the missing openssl library
and openssl binary case.
2019-04-15 18:56:11 +02:00
Bram Matthys f3bd95fa42 Create some preliminary release notes.
[skip ci]
2019-04-14 14:12:06 +02:00
Bram Matthys 2ba65ed35c Move previous release notes to doc/RELEASE-NOTES.old
[skip ci]
2019-04-14 13:47:11 +02:00
Bram Matthys 11c6604aeb Print out clear warning/error if using an old spamfilter.conf.
For example for Windows users, or for *NIX users where the automated
patching of the spamfilter.conf did not work.
I've tried to make the error message as clear and big as possible
and the wiki article as clear as possible as to what the user needs
to do. Not much more I can do.... :)
2019-04-14 13:45:11 +02:00
Bram Matthys 4e75af79fa 'make install' will now upgrade the spamfilter.conf examples from
'posix' to 'regex' if the user is using the exact same spamfilter.conf
that shipped with UnrealIRCd 4.x until now. Otherwise, we do not
update anything. Also, custom spamfilters in this file are not touched.
Let's hope this will apply to most of our users to ensure that they
will have no or less issues with the 'posix' to 'regex' conversion
process.
2019-04-14 13:01:31 +02:00
Bram Matthys 3ba5153362 Abort when using list functions on structs with incorrect order.
This is mostly to guard 3rd party module writers against making
such a mistake. Up to now such a mistake would silently corrupt
memory without warning or error. That is, until you crashed :D.
2019-04-14 11:01:20 +02:00
Bram Matthys 570c59b2b2 Bump UNREAL_VERSION_TIME.
[skip ci]
2019-04-12 11:01:15 +02:00
Bram Matthys 3aa5048300 Improve error message if someone uses set::something literally in the
configuration file.
Also, make (global)'unknown directive' errors fatal, as they should be.
2019-04-07 17:09:12 +02:00
Bram Matthys 9d7354147d Add two blacklist blocks in example conf: DroneBL and EFnet RBL. 2019-04-05 21:06:50 +02:00
Bram Matthys 5c30d1af6d * Badword blocks now use PCRE2 if using regex at all (rare,
usually the fast badwords system is used instead)
* Code deduplication in src/modules/{chanmodes,usermodes}/censor.c
  to src/match.c -- which may be moved later again to efuncs.
* Add --without-tre:
  This means USE_TRE will be enabled by default right now
  but if using --without-tre it will be undef'ed. This so we
  can prepare for the TRE phase-out in 2020.
* Remove include/badwords.h, put contents in include/struct.h
2019-04-05 18:19:23 +02:00
Bram Matthys 9e69cd722d Remove unused regex support in antirandom 2019-04-05 16:27:07 +02:00
Bram Matthys 422f76a723 Fix very minor memleak introduced about 2-3 weeks ago. 2019-04-04 19:24:23 +02:00
Bram Matthys f111b5c1ad Update spamfilter.conf: convert some to 'simple' matchers and make clear
that these are just old examples from the year 2005.
Also, no longer include spamfilter.conf from the example*conf by
default as they do not contain any useful spamfilters nowadays.
2019-04-04 18:31:59 +02:00
Bram Matthys 05c4cb5e8f Replace match-type 'posix' with 'regex' in example spamfilter.conf.
Note that I should probably check if they still work now.. ;)
2019-04-02 21:04:40 +02:00
Bram Matthys 83372cc2c8 Bump example.conf server sendq from 5M to 20M. 2019-04-02 20:34:39 +02:00
Bram Matthys bd05cf8e58 Stop accepting /SPAMFILTER add -posix. You should really use PCRE2 by now.
Similarly, raise a warning for spamfilter { } blocks in the configuration
with match-type 'posix'.
See: https://www.unrealircd.org/docs/FAQ#spamfilter-posix-deprecated
2019-04-02 20:33:03 +02:00
Bram Matthys ee342d9b84 Re-indent set_mode and use new paracount_for_chanmode(). 2019-03-27 16:59:42 +01:00
Bram Matthys 8b222a1ed2 -Wno-empty-body 2019-03-27 14:00:35 +01:00
Bram Matthys b2307af8ec Get rid of "unknown option -Wno-invalid-source-encoding" warning when there
is another warning being triggered.
-copy paste comment from configure.ac-
We check for the -Woption even though we are going to use -Wno-option.
This is due to the following (odd) gcc behavior:
"When an unrecognized warning option is requested (e.g.,
 -Wunknown-warning), GCC emits a diagnostic stating that the option is not
 recognized.  However, if the -Wno- form is used, the behavior is slightly
 different: no diagnostic is produced for -Wno-unknown-warning unless
 other diagnostics are being produced.  This allows the use of new -Wno-
 options with old compilers, but if something goes wrong, the compiler
 warns that an unrecognized option is present."
Since we don't want to use any unrecognized -Wno-option, we test for
-Woption instead.
2019-03-27 13:44:29 +01:00
Bram Matthys e7de6cf3a4 Fix compile issue and report error when unable to write to pid file
(data/unrealircd.pid by default).
2019-03-27 13:26:30 +01:00
Bram Matthys dd2af3b31c Enable additional compiler warnings. Update code to conform to these
new standards, possible to compile with -Werror with them.
2019-03-27 09:03:30 +01:00
Bram Matthys 5a38d8ed75 Fix misleading indentation. 2019-03-25 18:37:05 +01:00
Bram Matthys 6d3a98653e The maximum number of clients (MAXCONNECTIONS) no longer defaults to 1024.
The new question in ./Config now defaults to 'auto' (both for new installs
and for upgrades). You can still specify a manual limit but it is no longer
recommended.
A MAXCONNECTIONS of 'auto' means - at present - that UnrealIRCd will try
to set a limit of 8192. This is quite a bump from the original 1024.
On systems where this is not possible we will simply use the highest amount
possible, such as 4096 on many systems, or 1024.
In fact, we now no longer error when MAXCONNECTIONS is higher than the
'ulimit -n' limit but will adjust ourselves to the limit.
Only if the effective limit is below 100 we will print out a fatal error
since running in such a scenario is highly discouraged.
The reason for this change is that nowadays with drone attacks we may need
to be able to handle more concurrent sockets. Also, many Linux distro's
have a default setting of unlimited or 4096 nowadays, out of the box.

For people packaging UnrealIRCd (not end-users):
The ./configure --with-fd-setsize=xx option was removed and the
optional(!!) --with-maxconnections=xx option has been added.
We recommend you NOT to pass this option. Not passing it means that
the previously mentioned 'auto' mode will be used, which is likely
best for most users.

Module coders:
Although it is unlikely you accessed the 'MAXCLIENTS' variable,
if you did, it is now called 'maxclients' (lowercase) since it is
adjusted at runtime and no longer a macro.
2019-03-25 15:43:26 +01:00
Bram Matthys ad173cc5d0 Ignore join flood check in channel mode +f when the server just booted.
This new option is called set::modef-boot-delay (default: 75 seconds).
See https://www.unrealircd.org/docs/Set_block#set::modef-boot-delay
2019-03-25 13:27:28 +01:00
Bram Matthys 5b20716e9b [cleanup] floodprot: move set::modef-* handling from core to module. 2019-03-25 13:10:03 +01:00
Bram Matthys 6c837d3ce4 Cleanup _test_operclass config code. 2019-03-25 09:33:59 +01:00
Bram Matthys 9ca53369e7 Lots of config code checks for "if (!cep->ce_varname)" however this is a
condition that will never happen, as it is already handled by the parser.
2019-03-25 09:21:15 +01:00
Bram Matthys 15d77298fe Empty blacklist::dns::type could lead to a crash (config file error).
All the rest are things that "will never happen" or dead code.
2019-03-25 09:04:31 +01:00
Bram Matthys 4490b8744e Use HAVE_RLIMIT instead of FORCE_CORE. And get rid of error message. 2019-03-24 15:50:56 +01:00
Bram Matthys a9b3e05b0c Brain damage 2019-03-24 15:22:02 +01:00
Bram Matthys b3e9d391d8 More updates to api-command, remove old functions such as del_Command(). 2019-03-24 15:18:41 +01:00
Bram Matthys e19639a1bd Fix compile problem #ifndef DEBUGMODE 2019-03-24 15:13:34 +01:00
Bram Matthys 59e3a42304 For the function declaration of command overrides, module coders are now
encouraged to use CMD_OVERRIDE_FUNC(override_xyz) rather than declaring
the function themselves. This works similar to CMD_FUNC(somecmd).
Example:
/* Forward declaration */
CMD_OVERRIDE_FUNC(override_xyz);
[..]
MOD_LOAD(somemodule)
{
	CmdoverrideAdd(modinfo->module, "XYZ", override_xyz);
[..]
CMD_OVERRIDE_FUNC(override_xyz)
{
	/* Do something useful here */
2019-03-24 08:27:26 +01:00
Bram Matthys 60952328f0 Add function type checking in CommandAdd()
And, for aliases, now use AliasAdd(), CommandAdd() is no longer permitted
for it. Do any modules use this?
2019-03-24 08:16:45 +01:00
Bram Matthys f9db29b768 Smart.. moving code to a separate function resulting in the use
of sizeof() on a char *...
2019-03-24 07:48:08 +01:00
Bram Matthys cb60bf286d Get rid of this useless DLLFUNC junk. This is only needed for symbols
that need to be visible from the outside of the .DLL (symbol export).
Long story short: you never need to use this yourself in a module.
Where needed it is already handled by UnrealIRCd.
2019-03-23 19:53:12 +01:00
Bram Matthys edfc832aa8 Some minor code cleanups, use CMD_FUNC() where possible. 2019-03-23 19:45:34 +01:00
Bram Matthys 7bcf419eda Add references to the technical S2S documentation
@skip-ci
2019-03-23 19:39:56 +01:00
Bram Matthys e4ddc80c2a Code cleanup: m_protoctl. Has always been ugly, just was never bothered
enough to clean it up. Also, remove PROTOCTL -<option> support, which is
not used by anything and was only supported on a handful of options
anyway. Also remove some debugging and PROTOCTL_MADNESS.
Finally, add a reference to the technical documentation.
2019-03-23 19:23:10 +01:00
Bram Matthys a11ee2b1a2 Skip * in PROTOCTL SERVERS=. This probably caused a bug which could be
triggered by doing quick server connects (crossing requests), something
that the PROTOCTL SERVERS= code is supposed to prevent (it should be
safe to connect to X servers at the same time, even every second).
2019-03-23 19:04:59 +01:00
Bram Matthys 5992a759f7 return 0.. 2019-03-23 18:44:00 +01:00
Bram Matthys ab50bf2afc Communicate server featureset (and changes) across server links.
Previously various information was only available for directly attached
servers, since it is communicated via PROTOCTL.
Now, we will also communicate information about leafs behind us.
IRCOps can use the /SINFO command to see these server features.
Services codes don't need to do anything, or at least are not expected
to do anything. They can still receive the information and do something
with it, of course...
Read the following technical documentation for full information,
as it will outline very specific rules for using the command S2S:
https://www.unrealircd.org/docs/Server_protocol:SINFO_command
2019-03-23 17:56:59 +01:00
Bram Matthys 335a7569bb Bugs like this can keep you occupied for a while:
safestrdup(somevar, s+10);
..always caused somevar to be NULL :D.
2019-03-17 20:16:21 +01:00
Bram Matthys 7ad6b15e92 It would be nice if expired TKL's actually get removed (duh).
Caused by fac1e30b91 from March 3, 2019.
2019-03-15 16:34:30 +01:00
Bram Matthys 761ae02935 Change assert() to if..!...abort() so it produces proper core dumps.
Yeah, that's how it works, unfortunately.
2019-03-15 16:03:48 +01:00
Bram Matthys fd73739847 Handle SSL_ERROR_WANT_READ in a better way. 2019-03-10 15:00:45 +01:00
Bram Matthys 872830bdf2 I give up. Test framework will no longer run on Travis-CI, ruby is broken. 2019-03-09 15:38:08 +01:00
Bram Matthys b396dc3c20 .. 2019-03-09 15:33:31 +01:00
Bram Matthys f47dc78418 . 2019-03-09 15:31:48 +01:00
Bram Matthys 2c114d458e ............................... 2019-03-09 15:27:46 +01:00
Bram Matthys f039e08f0b Travis-CI + ruby = .... 2019-03-09 15:17:31 +01:00
Bram Matthys e0a4e7fe71 Travis-CI: :/ 2019-03-09 15:05:47 +01:00
Bram Matthys 2e79c34c11 Travis-CI: more diagnostics 2019-03-09 11:59:33 +01:00
Bram Matthys 99b379fca8 Travis-CI: :( 2019-03-09 11:47:18 +01:00
Bram Matthys 584f3e9d6d Travis-CI: argh argh 2019-03-09 11:32:27 +01:00
Bram Matthys 20550981f8 Travis-CI: argh! 2019-03-09 11:12:55 +01:00
Bram Matthys 5d69fe9d93 Missing return NULL in find_tkline_match_zap_matcher (due to commit from
a few days ago)
2019-03-09 10:23:19 +01:00
Bram Matthys ad063ba36a Fix ./unrealircd spkifp complaining that it could not find the certificate
file if you specified a relative path. Until now only absolute paths worked.
Bug reported by CrazyCat.
2019-03-08 09:32:05 +01:00
Bram Matthys fac1e30b91 Major TKL speed improvements. 2019-03-03 20:25:05 +01:00
Bram Matthys 87c81e7e9f This fsync() call slows things down too much at high connection rates. 2019-03-03 19:03:05 +01:00
Bram Matthys 41c1f01011 Bump version to 4.2.3-dev to make clear that this git version is under development. 2019-03-03 17:14:09 +01:00
Bram Matthys 16659de0b2 Changing set::anti-flood::invite-flood had no effect. It was always 4:60.
Reported by Betaman2k in https://bugs.unrealircd.org/view.php?id=5222
2019-03-03 14:16:49 +01:00
Bram Matthys 766055d5c0 Fix set::ban-setter and set::topic-setter being set to nick-user-host
out of the blue. The classic C mistake where = instead of == was written
in an if statement... duh.
2019-03-02 08:49:47 +01:00
Bram Matthys de1548de73 UnrealIRCd 4.2.2. 2019-03-01 14:38:44 +01:00
Bram Matthys f599ea02cb WHO(X) auto-conversion bug regarding 'a' and 'c' which no longer exist
in WHOX.
2019-03-01 14:34:43 +01:00
Bram Matthys d068cd41ca Fix crash in websocket module. 2019-03-01 14:10:06 +01:00
Bram Matthys d7e5ff82f0 Update curl-ca-bundle.crt (Wed Jan 23 04:12:09 2019 GMT) 2019-03-01 13:57:35 +01:00
Bram Matthys e16e2b36d8 UnrealIRCd 4.2.2-rc2 2019-02-11 09:19:38 +01:00
Bram Matthys c6f01aa3f1 Protect 2 more commands against rogue server to server traffic. 2019-02-11 08:47:51 +01:00
Bram Matthys 294560f944 KILL: Not sure if this fixes anything but at least it's less cryptic. 2019-02-10 17:30:39 +01:00
Bram Matthys 9a0bd31cf8 Fix unlikely crash if you had a spamfilter targetting away that was
only local (so in .conf) and it hit a remote user.
Also, re-indent this monster...
2019-02-10 17:09:48 +01:00
Bram Matthys 1dbef111fb Fix crash if receiving malformed server to server traffic (from an
authenticated server): TKL deleting a spamfilter with insufficient
parameters.
2019-02-10 17:08:47 +01:00
Bram Matthys 1f03dbdd05 CHGNAME and SETNAME: if a remote user used a realname that was banned
on this server then we could possibly crash. (Fortunately most networks
use the same ban realname blocks on all their servers)
2019-02-10 14:54:28 +01:00
Bram Matthys 3712fad891 When a server does not use SID's, set empty id as before.
This bug was post-rc1, caused by dde8f914fb.
2019-02-10 14:48:29 +01:00
Bram Matthys 7e444d3b9f Fix SJOIN bug in rc1: was using an incorrect buffer when SJSBY was
not used, such as in a mixed version scenario.
2019-02-10 14:43:34 +01:00
Bram Matthys 77d3e844dc Fix a bunch of REHASH memory leaks. 2019-02-10 10:36:20 +01:00
Bram Matthys 7d5c3a1b68 Fix hang/crash due to commit from yesterday, reported by k4be.
(cause: dde8f914fb)
2019-02-10 09:56:53 +01:00
Bram Matthys c7f00edd9d Quicker handshake when using many CAP requests and/or AUTHENTICATE.
I was wondering why the handshake took 4 seconds for a client which
authenticates using SASL. Turns out that fake lag was kicking in due
to the many "CAP req" commands combined with the other handshake stuff.
Now the first 15 (or so) "CAP" requests are "free", without fake lag.
2019-02-09 16:47:24 +01:00
Bram Matthys 78cd122a05 Allow SASL post-registration. Unfortunately the anope unreal4 protocol
module also requires an update to support this.
2019-02-09 14:39:34 +01:00
Bram Matthys dde8f914fb Internal: make UID available early (pre-auth). 2019-02-09 14:35:48 +01:00
Bram Matthys a740570710 Fix crash bug (in rc1 only) if ::ssl-options are being used and the
outdated SSL protocols/ciphers are being checked.
2019-02-08 12:02:52 +01:00
Bram Matthys 9c0f1f3505 Fix OOB read in m_whox.
Strange order for a compare, first the 2nd byte, then the 1st byte ;)
Anyway, this issue can only be triggered since rc1, no big issue.
2019-02-06 19:31:10 +01:00
Bram Matthys e443182573 UnrealIRCd 4.2.2-rc1 2019-02-06 16:00:38 +01:00
Bram Matthys 988f64e3b3 Fix crash when linking (caused by commit from 4 days ago). 2019-02-06 12:54:37 +01:00
Bram Matthys f92a6fec79 Release notes: clarify flood limit in older versions
@skip-ci
2019-02-06 12:17:47 +01:00
Bram Matthys 70a9a6f6b2 Added INVITE and KNOCK flood protection (command rate limiting).
set::anti-flood::invite-flood defaults to 4 per 60 seconds.
set::anti-flood::knock-flood defaults to 4 per 120 seconds.
2019-02-06 12:00:51 +01:00
Bram Matthys 57f97a5a43 Removed a debugging message and fixed TARGMAX being broken after a REHASH. 2019-02-06 09:24:31 +01:00
Bram Matthys 1e1f750b44 New set::max-targets-per-command which configures the maximum number
of targets accepted for a command, eg /MSG nick1,nick2,nick3,nick4 hi.
Also changed the following defaults (previously hardcoded):
* PRIVMSG from 20 to 4 targets, to counter /amsg spam
* NOTICE from 20 to 1 target, to counter /anotice spam
* KICK from 1 to 4 targets, to make it easier for channel operators
  to quickly kick a large amount of spambots
See https://www.unrealircd.org/docs/Set_block#set::max-targets-per-command

(actually still need to write the documentation)
2019-02-04 17:51:09 +01:00
Bram Matthys 1e6d8ea536 Fix compile problem due to previous commit. 2019-02-04 14:42:17 +01:00
Bram Matthys 9f4296d648 New set::anti-flood::max-concurrent-conversations which configures the
maximum number of conversations a user can have with other users at the
same time. Until now this was hardcoded at limiting /MSG and /INVITE to
20 different users in a 15 second period. The new default is 10 users,
which serves as a protection measure against spambots.
See https://www.unrealircd.org/docs/Set_block#maxcc for more details.
2019-02-04 09:52:08 +01:00
Bram Matthys 7153468081 UnrealIRCd will now warn if your ulines { } are matching UnrealIRCd servers.
See https://www.unrealircd.org/docs/FAQ#WARNING:_Bad_ulines
2019-02-02 08:44:14 +01:00
Bram Matthys be50ef4a1e Get rid of warning on-boot "Channel modes changed at runtime" 2019-02-02 07:53:07 +01:00
Bram Matthys f9415e1a91 m_whox: now accept and transform most classic UnrealIRCd WHO requests
such as "WHO +s serv.er.name" to "WHO serv.er.name s".
It also does advanced transformation such as "WHO -m z" to "WHO -z m"
**copy paste from comment in code**
Flag a: user is away                                            << no longer exists
Flag c <channel>: user is on <channel>                          << no longer exists
Flag g <gcos/realname>: user has string <gcos> in his/her GCOS  << now called 'r'
Flag h <host>: user has string <host> in his/her hostname       << no change
Flag i <ip>: user has string <ip> in his/her IP address         << no change
Flag m <usermodes>: user has <usermodes> set                    << behavior change
Flag n <nick>: user has string <nick> in his/her nickname       << no change
Flag s <server>: user is on server <server>                     << no change
Flag u <user>: user has string <user> in his/her username       << no change
Behavior flags:
Flag M: check for user in channels I am a member of             << no longer exists
Flag R: show users' real hostnames                              << no change (re-added)
Flag I: show users' IP addresses                                << no change (re-added)
**end of paste**
Of course we cannot convert 100% from classic UnrealIRCd WHO to WHOX-style
because things like "WHO +m r" could mean either "search for +m in realname" (WHOX)
or "search for +r in modes" (classic). In cases like this we assume WHOX, so to not
break any WHOX compatibility.

Added matchers: 'R' (show real host) and 'I' (show IP)

This code will need more testing, both by classic WHO and by WHOX users...
2019-02-01 17:46:59 +01:00
Bram Matthys eecd29bdc8 WHOX: adaptions for UnrealIRCd part 1:
* No longer require a ! prefix for ircops to see users
* "WHO *" is no longer different than the rest
  (previously in m_whox would only list users on 1st channel)
Neither is part of the WHOX specs.
2019-02-01 15:21:53 +01:00
Bram Matthys 52e72c2ed9 Update reference to RELEASE-NOTES.old (link used wrong branch) 2019-02-01 14:27:07 +01:00
Bram Matthys 1790efd05d The message sent to users upon *LINE can now be adjusted completely via
set::reject-message::kline and set::reject-message::gline.
See https://www.unrealircd.org/docs/Set_block#set::reject-message
Suggested by k4be in https://bugs.unrealircd.org/view.php?id=5198
2019-02-01 14:25:52 +01:00
Bram Matthys ff9ca3c8ef Add 005 token DEAF=d 2019-01-31 17:47:06 +01:00
Bram Matthys a999b305a5 Remove 005 CMDS= token, which was an unnecessary abstraction and was
not picked up by any other IRCd. The 005 tokens KNOCK MAP USERIP are
now used instead. We do not announce STARTTLS in 005 anymore as this
is way too late (post-handshake, sensitive info already sent and/or
received). Not to mention STARTTLS is not the preferred method to
setup a secure connection in the first place.
Module coders: this means CommandAdd() with M_ANNOUNCE should no
longer be used. If a 3rd party module does use it, then UnrealIRCd
will now raise a warning. In a later UnrealIRCd version the flag
is likely to be removed completely so would cause a compile error.
(I doubt any module uses this anyway... but still..)
2019-01-31 17:34:07 +01:00
Bram Matthys 6cbd2744d7 * The default maximum topic length has been increased from 307 to 360.
* You can now set more custom limits. The default settings are shown below:
  set {
      topic-length 360; /* maximum: 360 */
      away-length 307; /* maximum: 360 */
      quit-length 307; /* maximum: 395 */
      kick-length 307; /* maximum: 360 */
  };
* A new 005 token has been added: QUITLEN. Works similar to KICKLEN.

The ability to adjust the topic length in the configuration file was
requested by Amiga600 in https://bugs.unrealircd.org/view.php?id=4692
At that place is also additional information on why there is a
"maximum" for topic length.
2019-01-30 17:50:17 +01:00
Bram Matthys 41239119f8 Update release notes a bit. 2019-01-30 16:54:56 +01:00
Bram Matthys 88030c63fb 1) Simplify dealing with isupport (numeric 005) stuff from the config code.
There's now no longer a difference between a rehash or boot.
2) Other cleanups in s_conf.c as well. Looks better now.
3) Sort the 005 tokens alphabetically. Enforcing some other 'logical order'
   was futile and this makes things consistent between rehashes.

For module coders this adds some new functions, such as IsupportSet,
IsupportSetFmt and IsupportDelByName. I'll document them later.
2019-01-30 16:42:19 +01:00
Bram Matthys 98fca7979f Code cleanup: internally rename iConf.nicklen to .nick_length to match the
convention that set::some-name is called iConf.some_name
2019-01-30 10:49:44 +01:00
Bram Matthys 5eaa711969 Update release notes to reflect current state. 2019-01-28 16:06:59 +01:00
Bram Matthys d085fb09c1 Three new config items to make topic and ban setter nick!user@host and
to control synchronization of the +beI setter across server links
(that is, the feature just introduced one commit ago):
set {
     topic-setter [nick|nick-user-host]; /* nick = default */
     ban-setter [nick|nick-user-host]; /* nick = default */
     ban-setter-sync [yes|no]; /* yes = default */
};
This also means that --with-topicisnuhost / TOPIC_NICK_IS_NUHOST
is now removed, since this now goes via set::topic-setter.

Also, moved the "first" PROTOCTL from include/common.h to send_proto()
in src/s_serv.c so the bunch of PROTOCTL lines is all in one place
(and so I could conditionally send SJSBY).
Ok, it's not entirely all in one place, PROTOCTL EAUTH is still sent
at another place (early, duh), but still..
2019-01-28 15:41:44 +01:00
Bram Matthys 874d99e0eb For +beI lists the 'set by' and 'set at' information is now synchronized
when servers link. Thus, you can see the real setter and time also after
a netsplit (/mode #channel b). This, unlike before, when setby was
name.of.server and time was the time of the synch.
This requires the entire network to run UnrealIRCd 4.2.2 or later.
Suggested by k4be in https://bugs.unrealircd.org/view.php?id=5183
Technical details: the PROTOCTL token to enable this is "SJSBY" and see
https://www.unrealircd.org/docs/Server_protocol:SJOIN_command for more
information, in particular the last section there.
2019-01-28 14:36:41 +01:00
Bram Matthys 4aa2d47deb Run test framework with a hub in-between to test command propagation. 2019-01-28 09:29:44 +01:00
Bram Matthys ed1f47f80a Can't stand http:// URLs... 2019-01-25 20:50:05 +01:00
Bram Matthys 2a3dd0e350 what is this 'return 0' doing here... 2019-01-23 16:36:42 +01:00
Bram Matthys ac9463a83f Rename hook HOOKTYPE_CAN_SEND_SECURE to HOOKTYPE_SEND_CHANNEL, which is
more descriptive and AFAICT nobody uses this hook in a public 3rd party
module anyway.
2019-01-21 17:02:14 +01:00
Bram Matthys 083826ee94 modules/usermodes/noctcp (+T): 1) only block CTCP's and not CTCP REPLIES,
2) allow IRCOps to bypass user mode +T restrictions. Reported by St3Nl3y,
HeXiLeD and Koragg in https://bugs.unrealircd.org/view.php?id=5166
2019-01-21 16:55:29 +01:00
Bram Matthys ee20160bc3 Add another type for HOOKTYPE_CONFIGTEST and HOOKTYPE_CONFIGRUN
for CONFIG_LISTEN. This so a module can have custom options in
the listen block. Like all other CONFIG_* options you are supposed
to return 1 if your module handles this option and 0 if not.
From HOOKTYPE_CONFIGTEST you can also return -1 to indicate error
for an option that is handled by the module.
Note that 'cep' is passed, that is the option for the variable
that is being checked, and not the 'ce', the parent of the listen
block. If you want to access the parent, then use ce->ce_prevlevel.
2019-01-21 13:55:20 +01:00
Bram Matthys 7a3ba05c03 Similar to previous commit, fix resolving of temporary modules (.so files)
in crash reports as well... and make them in English, regardless of the
users' locale... better for us ;)
2019-01-21 13:37:52 +01:00
Bram Matthys 6fcacdf148 Fix './unrealircd backtrace' not working correctly in non-English environments.
The script symlinks any missing tmp/xxxx.so's to the real module name but
depends on English statements (ugly, yeah, but it works). With a non-English
locale this did previously not work so the backtrace was screwed.
2019-01-21 13:30:15 +01:00
Bram Matthys 41e6d5b7e9 Fix for strangely formatted 'creation date' if compiled with certain locales.
Reported by k4be.
2019-01-21 13:26:22 +01:00
Bram Matthys bcb667c59e New hook HOOKTYPE_WELCOME (aClient *acptr, int after_numeric): allows you
to send a message at very specific places during the initial welcome
https://www.unrealircd.org/docs/Dev:Hook_API#HOOKTYPE_WELCOME
2019-01-21 10:12:46 +01:00
Bram Matthys 25ede84a04 This makes more sense. Also testing announcement bot :D 2019-01-21 10:10:51 +01:00
Bram Matthys c726df5758 Travis-CI: The job exceeded the maximum log length, and has been terminated.
Fantastic. https://github.com/travis-ci/travis-ci/issues/1382
2019-01-18 15:31:14 +01:00
Bram Matthys 013dd06aee Travis-CI: End of argh. 2019-01-18 14:45:55 +01:00
Bram Matthys 3bacb28555 Travis-CI: no comment 2019-01-18 14:24:19 +01:00
Bram Matthys 8a9971618f Travis-CI: ..or without sudo..
I really love this..
2019-01-18 14:05:45 +01:00
Bram Matthys 3e3da94a41 Travis-CI: new image, have to install bundler again. 2019-01-18 14:00:00 +01:00
Bram Matthys 4d5e627b27 Update release notes: * New set::outdated-tls-policy which describes what to
do with clients that use outdated SSL/TLS protocols (eg: TLSv1.0) and
ciphers.  The default settings are to warn in all cases: users connecting,
opers
/OPER'ing up and servers linking in.  The user will see a message telling
them to upgrade their IRC client.  This should help with migrating such
users, since in the future, say one or two years from now, we would want to
change the default to only allow TSLv1.2+ with ciphers that provide Forward
Secrecy.  Instead of rejecting clients without any error message, this
provides a way to warn them and give them some time to upgrade their
outdated IRC client.
https://www.unrealircd.org/docs/Set_block#set::outdated-tls-policy
2019-01-18 13:38:14 +01:00
Bram Matthys 425571a8d2 Update UnrealIRCd version to 4.2.2-dev 2019-01-18 13:22:58 +01:00
Bram Matthys e82dbdce1a Update doc/RELEASE-NOTES.old. Now contains 4.2.0 and 4.2.1 release notes,
I forgot the 4.2.0 one earlier..
2019-01-18 13:20:28 +01:00
Bram Matthys 4681603c52 Fix bug where "link-security" was downgraded to level 1 if using 'spkifp'. 2019-01-18 13:10:51 +01:00
Bram Matthys 778be86c66 Update HELPOP EXTBANS on ~t (timed bans), ~m (msgbypass) and ~T (textban)
since these are loaded by default since UnrealIRCd 4.2.0.
2019-01-14 15:10:23 +01:00
Bram Matthys f4b432ae94 Add RC4 and 3DES to set::ssl::outdated-ciphers, in case anyone uses some
insecure custom ::ciphers setting, this so RC4 and 3DES still get flagged.
2019-01-12 11:29:16 +01:00
Bram Matthys 67d691fce9 * New set::outdated-tls-policy which describes what to do with clients
that use outdated SSL/TLS protocols (eg: TLSv1.0) and ciphers.
  The default settings are to warn in all cases: users connecting,
  opers /OPER'ing up and servers linking in. The user will see a message
  telling them to upgrade their IRC client.
  This should help with migrating such users since in the future, say one
  or two years from now, we would want to change the default to only allow
  TSLv1.2+ with ciphers that provide Forward Secrecy. Instead of rejecting
  clients without any error message, this provides a way to warn them and
  give them some time to upgrade their outdated IRC client.
  https://www.unrealircd.org/docs/Set_block#set::outdated-tls-policy
2019-01-12 11:08:18 +01:00
Bram Matthys 8e7a085474 AppArmor profile in extras/security/apparmor: no changes but make it
clear that this has been tested on Ubuntu 16.04 and Ubuntu 18.04.
2019-01-12 10:52:05 +01:00
Bram Matthys 5fd673d059 Rename PLAINTEXT_POLICY_* to POLICY_ (and similarly, the struct, etc) 2019-01-11 13:27:29 +01:00
Bram Matthys a1d2698ead Provide get_ssl_options_for_client() to get the SSLOptions * for a client. 2019-01-11 13:16:09 +01:00
Bram Matthys b0c8629284 Travis-CI: remove TLS test for libressl-25 (no longer supported)
[skip ci]
2019-01-11 12:34:43 +01:00
Bram Matthys 72a3a445ee Travis-CI: Update OpenSSL and LibreSSL versions
* Remove LibreSSL versions that are no longer supported (2.5.x and 2.6.x).
* Add LibreSSL 2.8.x (current stable) and 2.9.x (current dev)
* OpenSSL releases only had updates in their 'letter suffixes'
2019-01-11 11:54:13 +01:00
Bram Matthys 9668aaaade Travis-CI: Rename .txt files to match $BUILDCONFIG 2019-01-11 11:42:36 +01:00
Bram Matthys dbeb5af2ea Updates to SSL/TLS tests. 2019-01-11 11:30:40 +01:00
Bram Matthys 227abacdb5 Hm? 2019-01-11 10:52:16 +01:00
Bram Matthys 8e1af5f304 Update SSL/TLS tests and put them in extras/tests/tls 2019-01-11 10:45:20 +01:00
Bram Matthys 9873382e6b Add SSL/TLS tests. 2019-01-11 10:06:21 +01:00
Bram Matthys 7d68ea0570 Update default ciphers, or actually only the ones not providing PFS, by
preferring AES-256 over AES-128 (in contrast to the Mozilla "intermediate"
profile which prefers AES-128). Again, this only affects non-PFS cases, as
all modern clients with PFS already had CHACHA20 and AES-256 negotiated.
The portion of non-PFS clients should only be few percent, if any.
I was actually considering removing non-PFS ciphersuites but it seems a bit
early to do so, at least not without more research on affected clients.
2019-01-11 09:19:44 +01:00
Bram Matthys dbbe6e7248 Travis-CI: another attempt 2019-01-10 20:29:11 +01:00
Bram Matthys 981a5d44b2 Travis-CI: install specific bundler (wtf?) 2019-01-06 20:34:16 +01:00
Bram Matthys 2a9b20369b Travis-CI: use Ubuntu 16.04 instead of 14.04
...since 14.04 seems to fail due to an outdated ruby.
2019-01-06 20:14:04 +01:00
Bram Matthys 8c9e4b8668 Poison unused parv[] elements that code should never access.
The last parv[] array element will be NULL. Accessing any elements after
that is undefined, similar to reading past the nul byte of a string.
This poison will help catch such bugs. Without this poison your code
will also crash, now it just crashes more consistently.
2019-01-06 19:21:59 +01:00
Bram Matthys dbf7aeb386 UnrealIRCd 4.2.1.1: compile fix for Debian stretch if you have a version of
libargon2 installed that does not provide Argon2id.
2019-01-03 08:57:59 +01:00
Bram Matthys 4965fc6741 Fix for systems with libargon2 that don't have Argon2id (Debian 9.6).
Apparently Debian stretch has 20160821's version which just falls short.
20161029 already has it included. We'll now use shipped libargon2 for
versions below 20161029. Thanks to vectr0n for reporting the issue.
2019-01-02 19:20:42 +01:00
Bram Matthys c173b17064 Fix SAJOIN, SAPART and SAMODE not working due to operclass.default.conf
using the 'sacmds' permission, when it should actually be 'sacmd'.
Reported by Stanley.
2018-12-28 17:55:32 +01:00
Bram Matthys 5da3ef8889 UnrealIRCd 4.2.1 (will publish tomorrow) 2018-12-26 23:06:33 +01:00
Bram Matthys 8b0cad3845 Fix for 'require authentication' (duh)
.. yeah I and others were still using 'require sasl' :D
2018-12-22 10:36:48 +01:00
Bram Matthys 56568f4033 Update release notes. This may be final for 4.2.1-rc1. 2018-12-22 10:12:53 +01:00
Bram Matthys 43de2dd747 Update release notes 2018-12-21 18:05:06 +01:00
Bram Matthys 73502ca4b6 Update help.conf with new WHO status flag 's' (secure) 2018-12-21 18:03:57 +01:00
Bram Matthys bb7bc90612 Forgot to update c-ares version in extras/curlinstall.... 2018-12-21 15:59:51 +01:00
Bram Matthys ad9a1b0b94 Import settings from UnrealIRCd 4.2.0
[skip ci]
2018-12-21 15:57:08 +01:00
Bram Matthys e30712f3d4 Update Windows libraries and the Windows build command for build tests.
[skip travis ci]
2018-12-21 15:42:32 +01:00
Bram Matthys f3f397b066 Update shipped libs: c-ares to 1.15.0 and PCRE2 to 10.32 2018-12-21 15:32:23 +01:00
Bram Matthys f1844e40a5 Set version to 4.2.1-rc1. The release notes are still likely to change. 2018-12-21 15:24:12 +01:00
Bram Matthys 54c17aa65d Indicate 's' in WHO reply flags if the user is secure (SSL/TLS). 2018-12-21 14:21:19 +01:00
Bram Matthys bb0530f694 In the authprompt documentation point the user to (possibly) tweaking
the set::handshake-timeout setting as well.
2018-12-21 13:24:25 +01:00
Bram Matthys 7755d10829 [authprompt] Suggest /QUOTE AUTH .. instead of /AUTH .. 2018-12-21 07:58:38 +01:00
Bram Matthys 62e30ec342 Fix typo in config warning. 2018-12-21 07:58:12 +01:00
Bram Matthys 267c2f3e56 Make authprompt work for soft KLINE/GLINE and soft-xx ban actions
(in registration phase anyway), as promised earlier in the documentation.
2018-12-19 17:42:13 +01:00
Bram Matthys 7f8172faef Bump fakelag on failed authentication attempt (SASL, real or emulated) 2018-12-19 17:41:28 +01:00
Bram Matthys 7aaf5e9a42 Update release notes regarding a fix from today.
[skip ci]
2018-12-19 17:13:39 +01:00
Bram Matthys 88fadc134d Fix build issue on Windows
[skip travis ci]
2018-12-19 13:58:44 +01:00
Bram Matthys 0ac56e4444 Fix line number in error messages being off, as reported in
https://bugs.unrealircd.org/view.php?id=5169
caused by commit 51ed51dff1
2018-12-19 13:50:09 +01:00
Bram Matthys 56a964bba1 Hide remote includes auth information in error messages. Reported by Jellis
in https://bugs.unrealircd.org/view.php?id=5172
2018-12-19 13:02:36 +01:00
Bram Matthys 6b089dfcd6 The new module is now called authprompt. Also wrote an article:
https://www.unrealircd.org/docs/Authentication
And "require sasl" is now "require authentication"
(the old name will only raise a warning, not cause an error)

Note that authprompt currently only does the "require authentication"
stuff and not yet the soft-xx actions. That will be something for
later this week, but I've already documented it as such (here and
there anyway).
2018-12-17 17:32:43 +01:00
Bram Matthys b1e1b6d9d5 quick fix for build tests, will fix later. 2018-12-16 16:40:35 +01:00
Bram Matthys ce4aeff63f Add saslemulation to Windows makefile.
[skip travis ci]
2018-12-16 15:53:12 +01:00
Bram Matthys 2ed958f2ee Fix typo in modules.optional.conf. 2018-12-16 15:52:04 +01:00
Bram Matthys 9f3e060a3d This is a better one line description. 2018-12-16 13:56:17 +01:00
Bram Matthys 0254894368 Authentication prompt for non-SASL users:
We previously introduced the "require sasl" block which allows you to
force users from certain IP addresses to authenticate with their nickname
and password via SASL. We now offer a new experimental module called
'saslemulation' which will help non-SASL users by showing a notice and
asking them to authenticate to their account via /AUTH <user>:<pass>.
See https://www.unrealircd.org/docs/Set_block#set::sasl-emulation

Note that this is work in progress, although the functionality of
already works. Still need to do some cleaning and expand the scope.
And more testing...
2018-12-16 13:51:22 +01:00
k4bek4be c124f65027 fix IPv6 DNS blacklist (#78)
Fix IPv6 blacklist checking (DNSBL). Patch from k4be.
2018-12-15 19:53:33 +01:00
Bram Matthys 3774e5661f Fix for *-with-override operclasses. 2018-12-14 18:10:14 +01:00
Bram Matthys a0167c35c0 Major reorganization of operclass privileges:
* The operclass privileges have been redone. Since there were 50+ changes
  to the 100+ privileges it makes little sense to list the changes here.
  If, like 99% of the users, you use default operclasses such as "globop"
  and "admin-with-override" then you don't need to do anything.
  However, if you have custom operclass { } blocks then the privileges
  will have to be redone. For more information on the conversion process,
  see https://www.unrealircd.org/docs/FAQ#New_operclass_permissions
  For the new list of permissions, with much better naming and grouping:
  https://www.unrealircd.org/docs/Operclass_permissions
The inconsistency in the privileges was initially reported by webczat in
https://bugs.unrealircd.org/view.php?id=4771
The subsequent reorganization took two full days, so.. hopefully the
people who are using - or plan to use - custom operclasses will like the
new layout... except that they need to redo their work of course ;)
2018-12-14 17:05:32 +01:00
Bram Matthys e470541a8b Windows............ whatever. 2018-12-10 18:28:13 +01:00
Bram Matthys 267f6adc54 Tadah. Fix vs2017, reported by Gottem. 2018-12-10 18:15:22 +01:00
Bram Matthys 7dcb5a5bb1 The authentication types 'md5', 'sha1' and 'ripemd160' have been
deprecated because they can be cracked at high speeds. They still
work, but a warning will be shown on boot and on rehash.
Please use 'bcrypt' or (even better) the new 'argon2' type instead:
"./unrealircd mkpasswd argon2" or "/mkpasswd argon2 passwd" on IRC.

Also, not in release notes because it would take up too much text:
Unix crypt is a bit more complicated: most types are outright 'bad',
while other types have reasonable security similar to 'bcrypt'.
To be honest these people should probably use 'argon2' since it's
a lot better. Then again, warning about this when it's still such
a common hashing method (now, in 2018) may be a bit overzealous.
So: not warning about crypt types $5/$6 which use SHA256/SHA512
with normally at least 5000 rounds (unless deliberately weakened
by the user), but we do warn about other crypt() usage.

Also, mkpasswd support for those deprecated types has been removed since
there's no good reason to generate new password hashes with these.
2018-12-10 15:46:11 +01:00
Bram Matthys 02184fe3a0 Write release notes (reflecting current state, anyway).
[skip ci]
2018-12-10 09:00:35 +01:00
Bram Matthys b335f8c284 Remove -lrt and -ldl for systems lacking pkg-config and building with
system libargon2.
2018-12-10 08:49:30 +01:00
Bram Matthys 8bbcd94071 Set UnrealIRCd version to 4.2.1-dev 2018-12-10 08:24:57 +01:00
Bram Matthys 9fdd93f0e4 Fix libargon2 autodetection (system lib). 2018-12-10 08:19:41 +01:00
Bram Matthys 942da806dd Make build test compile with Argon2 lib 2018-12-09 17:56:04 +01:00
Bram Matthys a852b480d5 Add support for Argon2 password hashes (argon2id).
Also, make this the default for './unrealircd mkpasswd'.
The Windows version also works.. I just need to create a new library
package, will be done later today or tomorrow.
https://bugs.unrealircd.org/view.php?id=5116
2018-12-09 17:22:12 +01:00
Bram Matthys 459a55245a No longer require "};" in config files, from now on "}" will suffice.
Note that both }; and } forms are accepted now, even mixed, and this
will not raise a warning or error.
I've always found it odd that we required a ; after }. In a language
like C for typedef structs it has some meaning since there could be
an alias between the } and the ;, but in UnrealIRCd there's no such
thing.
2018-12-08 16:03:58 +01:00
Bram Matthys 51ed51dff1 Remove non-standard 'nested comments' features, also known as
"comments within comments are not ignored".
Reported by bekarfel in https://bugs.unrealircd.org/view.php?id=4075
FAQ entry: https://www.unrealircd.org/docs/FAQ#Nesting_comments
2018-12-08 15:51:50 +01:00
Bram Matthys 7cd0bbbcb9 On second thought, for m_whox the priority is not important,
so set it to zero (0).
2018-12-08 15:29:02 +01:00
Bram Matthys 9cfff2d07d In 4.2.0 we added support for priorities in CmdoverrideAddEx(),
however it turns out they were accidentally reversed.
This is now corrected: highest number = highest prioty.
Reported by Gottem in https://bugs.unrealircd.org/view.php?id=5162
2018-12-08 15:23:42 +01:00
Bram Matthys 8d1047d4e9 Remove old function is_irc_banned(). Ahhh, WebTV times.. 2018-12-08 13:06:41 +01:00
Bram Matthys 84686f02bb Fix checking for target nick bans (cannot change to a nick that is banned).
This was and still is the default, set::check-target-nick-bans 'yes', however
the feature was broken since UnrealIRCd 4.0.0 (-betaX) by commit
709c7e890e. Reported by PeGaSuS and St3Nl3y.
2018-12-08 13:01:27 +01:00
Bram Matthys 4bef3a5238 Nothing important. Update comments of place_host_ban() and add an explicit
'case BAN_ACT_SOFT_KILL', even though it is already handled by 'case default'.
2018-11-21 14:26:35 +01:00
Bram Matthys 4a0dcc5f13 Load antimixedutf8 from modules.optional.conf 2018-11-21 12:35:25 +01:00
Bram Matthys 9d5e46c43c Set default score to 10. Prevents innocent Russians from getting caught :D 2018-11-18 20:07:09 +01:00
Bram Matthys 9f7b8997f2 Fix stupid bug for <4.2.0, reported by PeGaSuS 2018-11-18 19:52:54 +01:00
Bram Matthys 112c5d922e Fixes for Cyrillic (false positives when speaking Russian, etc...) 2018-11-18 19:39:39 +01:00
Bram Matthys b89bd719a7 Compatibility... 2018-11-18 18:50:45 +01:00
Bram Matthys d0799a0f04 Build antimixedutf8 2018-11-18 18:28:28 +01:00
Vitor 6f3ef8e3a7 Update help.conf (#76)
Update help.conf with +Z and +D
2018-11-18 18:21:34 +01:00
Vitor 4b5e950ffd Update antimixedutf8.c (#77)
Fix credits in antimixedutf8.
2018-11-18 17:00:55 +01:00
Bram Matthys 793e827218 Add "anti mixed utf8" module (antimixedutf8):
This module will detect and stop spam containing of characters of
mixed "scripts", where some characters are in Latin script and other
characters are in Cyrillic.
This unusual behavior can be detected easily and action can be taken.

loadmodule "antimixedutf8"; /* or third/antimixedutf8 */
set {
        antimixedutf8 {
                score 5;
                ban-action block;
                ban-reason "Possible mixed character spam";
                ban-time 4h; // For other types
        };
};
2018-11-18 15:19:11 +01:00
Bram Matthys d11b3228e6 ** UnrealIRCd 4.2.0 ** 2018-09-29 21:31:35 +02:00
Bram Matthys 98a33f7485 Windows: modules.optional.conf missing 2018-09-29 20:08:26 +02:00
Bram Matthys 02d69e7d83 Update release notes / version 2018-09-28 15:32:31 +02:00
Bram Matthys 2509482e02 Update UnrealIRCd version 2018-09-28 09:31:35 +02:00
Bram Matthys 6acfa3404b UnrealIRCd version updates 2018-09-28 09:26:40 +02:00
Bram Matthys 02c5c8567a Fix rare crash if deleting spamfilter by id that isn't a spamfilter. 2018-09-23 18:41:47 +02:00
Bram Matthys b4b6ebbca3 Similarly, use sptr/acptr to conform to current style. 2018-09-22 12:44:03 +02:00
Bram Matthys 75e2ed38e2 Some re-indenting / codestyle changes, nothing fancy, mostly whitespace
and brackets.
2018-09-22 12:42:14 +02:00
Bram Matthys 1feeb86cd3 Fix crash bug in m_whox. 2018-09-22 11:38:08 +02:00
Bram Matthys 24ea77f507 Update release notes
@skip-ci
2018-09-21 09:32:59 +02:00
Bram Matthys a7af69b887 Use same ciphersuite as decided earlier. 2018-09-21 09:11:09 +02:00
Bram Matthys d56eddd69a 'timedban' and 'nocodes' were (still) marked 3rd party, even though
they are official modules.
2018-09-21 08:58:44 +02:00
Bram Matthys 7d38909126 m_whox: fix -Wparentheses warning 2018-09-21 08:50:04 +02:00
Bram Matthys fb0148a44a New set::ssl::options::ciphersuites option for TLSv1.3.
Since OpenSSL decided not to use the regular ciphers but make this a
separate option, we now make this a separate option as well.
So there is ::ciphers for <=TLSv1.2 and ::ciphersuites for TLSv1.3
More documentation will follow.
Patch from 'i' in https://bugs.unrealircd.org/view.php?id=5149
2018-09-20 20:14:18 +02:00
Bram Matthys bd0821fc41 Add m_whox to Windows build makefile 2018-09-20 20:06:19 +02:00
Bram Matthys c4eac1df0e Add initial version of m_whox from 'i'. This is to get it tested
by the buildfarm / autotesters. More commits will follow.
2018-09-20 20:04:29 +02:00
Bram Matthys 30da2ae553 Module devs: Add priorities for command overrides.
Use: CmdoverrideAddEx(module, name, priority, function)
Suggested by Gottem in https://bugs.unrealircd.org/view.php?id=5143
..and needed by some upcoming stuff.
2018-09-20 20:01:39 +02:00
Bram Matthys 886b67ca8a Merge pull request #73 from digitalcircuit/fix-strip-monostrike-format
m_message: Also strip monospace/strikethrough
2018-09-16 08:12:26 +02:00
Shane Synan dba2081641 m_message: Also strip monospace/strikethrough
Add the ASCII character codes for strikethrough (0x1E, 30) and
monospace (0x11, 17) to the _StripControlCodes function.  This
addresses those formatting characters not being filtered when the
"nocodes" module is loaded.

See https://modern.ircdocs.horse/formatting.html#characters
2018-09-15 16:25:05 -05:00
Bram Matthys 3f7ec605dd The away-notify CAP did not send AWAY status upon join, which is required.
Reported by digitalcircuit in https://bugs.unrealircd.org/view.php?id=5144
2018-09-15 08:46:18 +02:00
Bram Matthys 57a008b808 UnrealIRCd 4.0.19-rc2 2018-09-14 09:51:25 +02:00
Bram Matthys cd2f77defd Update release notes
@skip-ci
2018-09-14 09:45:19 +02:00
Bram Matthys 402958a3c6 Allow slashes in vhost/chghost/sethost/.. (but not through DNS) 2018-09-11 20:25:32 +02:00
Bram Matthys 8738c42b82 Update release notes
@skip-ci
2018-09-10 18:47:01 +02:00
Bram Matthys 05745124f1 Fix tld::options::ssl not detecting remote SSL users.
Reported by HeXiLeD in https://bugs.unrealircd.org/view.php?id=4952
2018-09-10 18:33:40 +02:00
Bram Matthys a4e076c08c Allow ASCII 0xa0 in channels / Fix truncated channel name.
Reported by capitaine in https://bugs.unrealircd.org/view.php?id=4538
2018-09-10 08:38:41 +02:00
Bram Matthys d610dfbe9f Duplicate error messages when trying to set channel modes +O/+P.
Reported by FwdInTime in https://bugs.unrealircd.org/view.php?id=4840
2018-09-09 18:03:54 +02:00
Bram Matthys 5445a009a3 Fix bug preventing (insecure) IRCops from overriding +z.
Reported by capitaine in https://bugs.unrealircd.org/view.php?id=5134
2018-09-09 17:49:32 +02:00
Bram Matthys 5921924297 Update release notes 2018-09-09 17:27:25 +02:00
Bram Matthys f876983cb3 Fix bug where halfops don't see users JOIN if chmode +D is set.
Reported by The_Myth in https://bugs.unrealircd.org/view.php?id=5123
2018-09-09 17:15:49 +02:00
Bram Matthys 681640024a Fix permission issues with minimal IRCOps.
Reported by capitaine in https://bugs.unrealircd.org/view.php?id=5130
2018-09-09 17:01:35 +02:00
Bram Matthys 2935385bf2 allow::options::sasl has been removed. Use the new and more flexible
require sasl { } block instead.
2018-09-09 09:49:03 +02:00
Bram Matthys 3f0d349e2b Update releasenotes: shorten text about compatibility.
@skip-ci
2018-09-08 17:51:43 +02:00
Bram Matthys a66373f74e Add header to release notes 2018-09-08 17:21:37 +02:00
Bram Matthys 77000795c7 Make ./Config import settings from 4.0.18 2018-09-08 17:18:24 +02:00
Bram Matthys bc139098c9 UnrealIRCd 4.0.19-rc1
(The actual release will be ~24hrs from now)
2018-09-07 18:20:04 +02:00
Bram Matthys 73f69ccb11 Fix clang warning 2018-09-07 18:14:14 +02:00
Bram Matthys 2cbcc29a0d Update release notes a bit 2018-09-07 12:20:09 +02:00
Bram Matthys 9ed6a9ae79 Found some more for #3973 2018-09-07 12:07:09 +02:00
Bram Matthys ab321f632b For outgoing server connection attempts there was no message to ircops
nor to the log about connection or handshake timeouts. Now there is.
2018-09-07 11:59:52 +02:00
Bram Matthys bd19e9c87a Log linking attempts and errors. Also report them to IRCOps in an uniform way.
Reported by Mr_Smoke in https://bugs.unrealircd.org/view.php?id=3973
2018-09-07 11:59:12 +02:00
Bram Matthys 8d05951298 Silence a warning 2018-09-07 10:50:55 +02:00
Bram Matthys 858aaa774a 'SVSMODE Nick -t' does not remove vhost (while MODE 'MODE Nick -t' does)
Reported by The_Myth in https://bugs.unrealircd.org/view.php?id=5111
2018-09-07 10:50:00 +02:00
Bram Matthys aa3e66bb5b We now use standard formatted messages for all K-Lines, G-Lines and
any other bans that will cause the user to be disconnected.
For technical details see the banned_client() function.

It's likely I made some mistakes somewhere => testing required!!
2018-09-05 16:24:08 +02:00
Bram Matthys 107d8ccf6a * A new require sasl { } block which allows you to force users on the
specified hostmask to use SASL. Any unauthenticated users matching
  the specified hostmask are are rejected.
  See https://www.unrealircd.org/docs/Require_sasl_block
Feature suggestion: https://bugs.unrealircd.org/view.php?id=5107
2018-09-05 11:34:48 +02:00
Bram Matthys ffcf85f409 Announce the soft bans in release notes. (Best to read that rather
than the million commits before it)
2018-09-05 10:03:42 +02:00
Bram Matthys c4760cc83c Add more soft actions. The full list is available on
https://www.unrealircd.org/docs/Actions
Also, some minor cleanups / simplifications.
2018-09-05 09:39:44 +02:00
Bram Matthys c8c0199095 Fix potential bug if there are both soft and hard tkl's matching the user.
Add soft-shun. Use IsLoggedIn() to detect logged in to services status
rather than repeating the more elaborate if ... isdigit...svid.. etc.. stuff.
2018-09-04 21:08:48 +02:00
Bram Matthys aa45ce11cc ..and the necessary stuff for softbans in the blacklist module. 2018-09-03 20:18:23 +02:00
Bram Matthys b2be1009a0 Second parameter to find_tkline_match() can now be used to skip
soft ban checking. Necessary for blacklist module.
2018-09-03 19:55:48 +02:00
Bram Matthys 1d42ccd973 DNSBL: Fix possible problem where multiple blacklists are not processed.
Also fix a memory leak triggered in some circumstances.
2018-09-03 19:31:27 +02:00
Bram Matthys 1eb09484f1 Add 'soft-kline' and 'soft-gline' to ban actions (more information soon)
If you don't know what ban actions are, they are listed here:
https://www.unrealircd.org/docs/Actions
2018-09-03 17:24:23 +02:00
Bram Matthys 5f116cc64e Part one of soft gline/kline (more information will follow) 2018-09-03 17:07:22 +02:00
Bram Matthys 2537fb5e1c extbans/textban was not working properly on words with dots
Reported by The_Myth in https://bugs.unrealircd.org/view.php?id=4909
2018-09-02 21:55:57 +02:00
Bram Matthys d3dba63f56 AntiRandom: The module will now (by default) exempt WEBIRC gateways
from antirandom checking because they frequently cause false positives.
This new behavior can be disabled via:
set { antirandom { except-webirc no; }; };
Suggested by The_Myth in https://bugs.unrealircd.org/view.php?id=5007
2018-09-02 12:34:03 +02:00
Bram Matthys 5f597c0b08 Sync 'webirc' status of a client with the rest of the network (via ModData).
Also necessary for upcoming commit..
2018-09-02 12:16:45 +02:00
Bram Matthys cab8ea7066 * Potential crash issue when concurrently checking DNSBL for the WEBIRC
gateway and the spoofed host.
2018-09-02 12:16:15 +02:00
Bram Matthys 883a5fe413 * The except throttle { } block now also overrides any limitations from
set::max-unknown-connection-per-ip. Useful for WEBIRC/cgiirc gateways.
Reported by KnuX https://bugs.unrealircd.org/view.php?id=5088
2018-09-02 11:40:15 +02:00
Bram Matthys b1b73e0e56 * Localhost connections are considered secure, so these can be used even
if you have a plaintext-policy of 'deny' or 'warn'. (This was already
  the case for servers, but now also for users and opers)
https://bugs.unrealircd.org/view.php?id=5108
2018-09-02 11:24:19 +02:00
Bram Matthys 3c801ced2e Load by default: extbans/textban, extbans/timedban, extbans/msgbypass.
https://bugs.unrealircd.org/view.php?id=5117
2018-09-02 11:17:14 +02:00
Bram Matthys bf08c5d121 Update instructions on customizing modules.default.conf now that
we have blacklist-module.
2018-09-01 21:08:58 +02:00
Bram Matthys 477694bd11 Update release notes: Add info on 'blacklist-module'. 2018-09-01 21:02:24 +02:00
Bram Matthys d86d4c7c71 Add new option: blacklist-module "<modulename>";
This is meant to blacklist modules that are in modules.default.conf (or
elsewhere). The 'loadmodule' line for any such module is effective ignored.
https://bugs.unrealircd.org/view.php?id=5118
Note: I had to move the loadmodule code. Previously this was done as each
config file (include) was loaded into memory. Now it is done after *ALL*
config files have been read into memory. This shouldn't matter for module
devs, though..
2018-09-01 20:31:14 +02:00
Bram Matthys cf97de890a These should be marked extern. 2018-09-01 19:37:25 +02:00
Bram Matthys c2f9df9e48 Update release notes (no we're not anywhere near a release at this point) 2018-07-15 18:30:52 +02:00
Bram Matthys 26c194d8db Update paths. Again.
Slashes in my editor are special so a replace with \u becomes..
ah well.. long story.
2018-07-15 18:19:11 +02:00
Bram Matthys 4900fb01df Remove Visual Studio 2012 leftovers.
[skip ci]
2018-07-15 18:11:49 +02:00
Bram Matthys 54a6e2f61f Update build command for vs2017 with new deps 2018-07-15 18:11:00 +02:00
Bram Matthys 8fc4f68bcc Make AppVeyor only build VS2017 version (and update library deps) 2018-07-15 17:58:07 +02:00
Bram Matthys 8150c6c237 Change default library paths for Visual Studio 2017 lib build.
Will upload the dependencies in a couple of minutes to:
https://www.unrealircd.org/docs/Windows_external_libraries_for_UnrealIRCd
2018-07-15 17:47:37 +02:00
Bram Matthys 1f4fcb9407 Set version to 4.0.19-dev 2018-07-15 17:40:18 +02:00
Bram Matthys 3bd83829e3 Work towards moving to Visual Studio 2017.
Compiling already works (this is already tested by AppVeyor for quite a
while), but the installer in git required VS 2015. The actual releases
up to now required VS 2012.
To be more precise, either VS 2015 Redist or VS 2017 Redist is enough,
the x86 version that is, as they are binary compatible and both provide
"version 14". So if one of those is installed, the installer just runs.
If neither of these is installed we tell the user to install the VS 2017
Redist package, not mentioning 2015 as it would only cause confusion.
2018-07-15 14:49:24 +02:00
Bram Matthys f3b9753460 Fix compile problem with clang if -Werror is active.
(introduced by previous commit, 98709beee2)
2018-07-08 14:52:43 +02:00
Bram Matthys 98709beee2 ./configure: -Wno-format-truncation 2018-07-08 13:35:53 +02:00
Bram Matthys bc8ac7c7f6 ./Config: For remote includes, suggest /usr when /usr/bin/curl-config
is found. This fixes an issue on Ubuntu 18 where the library is
stored in /usr/include/x86_64-linux-gnu and ./Config doesn't detect
it and thus reverts to using local-curl.
2018-07-08 13:31:23 +02:00
Bram Matthys 25f08d50ac UnrealIRCd 4.0.18 2018-06-23 16:06:12 +02:00
Bram Matthys c4d132c8f9 No longer permit 'require-sasl' or 'require-ssl', as introduced in rcX,
as it would be confusing with the current functionality.
Use 'sasl' or 'ssl' instead. See bug #5107.
2018-06-23 08:16:04 +02:00
Bram Matthys 05dcf18ea6 When importing ./Config settings from a previous UnrealIRCd, with
curl enabled but without system curl, the build could fail with
an libCURL configure error. This is is because it imported the
CURLDIR but it referred to an old UnrealIRCd directory.
Reported by The_Myth (#5106)
2018-06-23 08:13:02 +02:00
Bram Matthys f9f03190f8 ** 4.0.18-rc2 ** 2018-06-16 18:22:31 +02:00
Bram Matthys 14eda9638d curl-ca-bundle.crt: update to latest mozilla (Wed Mar 7 04:12:06 2018 GMT)
[skip ci]
2018-06-16 18:14:06 +02:00
Bram Matthys 0961b95ba9 Move setting of curves (duh) 2018-06-16 17:58:15 +02:00
Bram Matthys 52afbeee50 Travis-CI: cipherscan: it helps if you scan on the right port.. 2018-06-16 09:19:03 +02:00
Bram Matthys da98080860 Travis-CI: add cipherscan test
TODO: fail if certain criterea are not met
2018-06-16 08:40:39 +02:00
Bram Matthys 49bfb1e782 Fix ECDHE not working on 4.0.18-rc1 with older OpenSSL versions.
For example Ubuntu 16.04 LTS with OpenSSL 1.0.2g.
Especially in strict config it would error 'No shared ciphers'.
Had to do with #if(def) ordering. SSL_CTX_set_ecdh_auto() is
still required in 1.0.x even if SSL_CTX_set1_curves_list() is
used. Understandable.
2018-06-16 08:21:13 +02:00
Bram Matthys 18b793db9a UnrealIRCd 4.0.18-rc1 2018-06-11 10:46:44 +02:00
Bram Matthys a236eb0fc1 Update release notes
[skip ci]
2018-06-11 10:17:41 +02:00
Bram Matthys 3aec69192b Build with -Werror except on macOS 2018-06-11 10:11:16 +02:00
Bram Matthys 5461d24124 Update openssl test to 1.1.1-pre7.
[skip ci]
2018-06-11 09:57:49 +02:00
Bram Matthys 93957fc7ee blacklist module: also check the ip of WEBIRC users.
Suggested by jesopo (#0005098).
2018-06-11 08:53:34 +02:00
Bram Matthys cd6d7a2bb7 Add allow::options::sasl (or require-sasl) to require SASL authentication
as suggested in https://bugs.unrealircd.org/view.php?id=5098
The allow block documentation has been updated, including an example at
the end of the page - https://www.unrealircd.org/docs/Allow_block
2018-06-11 08:22:29 +02:00
Bram Matthys 46a60ec795 Fix OOB read (1 byte to the left) 2018-06-11 08:05:14 +02:00
Bram Matthys ad63a499e1 Remove invalid globally declared variables (should be externs). 2018-06-11 08:04:37 +02:00
Bram Matthys 8b988622cd Fix memory leak in channel mode +f 2018-06-11 08:04:10 +02:00
Bram Matthys e456f621ef Fix OOB read in extended bans handling.
(Bug caused by commit dd6f67a266)
2018-06-11 08:02:35 +02:00
Bram Matthys 21af7689c0 Fix memory leak in dead socket handling. 2018-06-11 08:02:07 +02:00
Bram Matthys af46d569f6 Updated Turkish translations from Serkan Sepetçi. 2018-06-09 15:08:00 +02:00
Bram Matthys aebf9691bd Convert example.tr.conf to UTF8 2018-06-09 15:07:03 +02:00
Bram Matthys 362033b73f Drop -xxxbits suffix in on-connect message (and elsewhere).
Change from this TLSv1.2 and TLSv1.3 message:
*** You are connected with TLSv1.2-ECDHE-RSA-AES256-GCM-SHA384-256bits
*** You are connected with TLSv1.3-TLS_AES_256_GCM_SHA384-256bits
To this:
*** You are connected with TLSv1.2-ECDHE-RSA-AES256-GCM-SHA384
*** You are connected with TLSv1.3-TLS_AES_256_GCM_SHA384
Since: 1) those bits are redundant (AES 256 is already mentioned),
and 2) Bits are also not an universal method to measure strength across
algorithms (think: elliptic curve).
2018-06-04 19:45:40 +02:00
Bram Matthys 686fc1b03d Convert /HELPOP translations to UTF-8. 2018-05-25 12:49:01 +02:00
Bram Matthys 8a73b96aee Revert 39e2d88f6c 2018-05-18 18:57:43 +02:00
Bram Matthys 2be4668d9b Travis-CI: 'apt-get update' is required 2018-05-18 18:56:24 +02:00
Bram Matthys 39e2d88f6c Fix Travis-CI 2018-05-18 18:52:40 +02:00
Bram Matthys b597999a34 Update release notes 2018-05-09 22:44:04 +02:00
Bram Matthys 5e8334a9be Use "macOS" in README rather than OS X.
[ci skip]
2018-05-02 19:53:09 +02:00
Bram Matthys 8ac5a49d9d Travis-CI: Swap gcc and clang in initial build matrix, simplifying
things for MacOS and making the LibreSSL/OpenSSL builds use clang.
2018-05-02 19:23:39 +02:00
Bram Matthys 85cfe2a779 Fix travis-ci 2018-05-02 19:19:08 +02:00
Bram Matthys d9c30aaeb8 Further reduce build matrix, since gcc links to clang on OS X anyway 2018-05-02 19:15:11 +02:00
Bram Matthys 53f7ee81b1 Attempt to reduce build matrix 2018-05-02 19:10:14 +02:00
Bram Matthys 717be3afcb Older OpenSSL versions (1.0.2) need an explicit -fPIC... wow. 2018-05-02 16:49:41 +02:00
Bram Matthys 201159c630 I forgot.. openssl is special :D 2018-05-02 16:12:10 +02:00
Bram Matthys cb4be97bdf Add various libressl & openssl versions to build tests. 2018-05-02 15:55:04 +02:00
Bram Matthys 3b0cb5c2a9 .. 2018-05-02 15:37:08 +02:00
Bram Matthys 53c1ea6226 Add libressl-27 to build test matrix. 2018-05-02 15:30:43 +02:00
Bram Matthys 923619ba30 Merge branch 'unreal40' of github.com:unrealircd/unrealircd into unreal40 2018-05-01 15:23:26 +02:00
Bram Matthys 8efcd684d3 Fix /SPAMFILTER add having the regex syntax check backwards.
(Not too surprising when add is 0 and delete is 1)
Not fatal, as error was still handled & send, but it went to
all opers instead of just the one person adding it..
2018-05-01 15:22:39 +02:00
Travis McArthur 83be1571ef Install correct gems on OS X environments 2018-04-28 20:01:02 -07:00
Travis McArthur 49394ed346 Update run-tests 2018-04-28 19:23:02 -07:00
Bram Matthys 04b3dd24f8 Set default ECDH(E) curves to be X25519:secp521r1:secp384r1:prime256v1 with
the following remarks:
* We only set these curves if SSL_CTX_set1_curves_list() is available
  (OpenSSL 1.0.2 or later, LibreSSL 2.5.1 or later)
* The X25519 curve is only added if it is available (OpenSSL 1.1.0+)
2018-04-27 20:08:47 +02:00
Bram Matthys fa9bdcd7df Move detection of SSL_CTX_set1_curves_list to autoconf (CHECK_SSL_CTX_SET1_CURVES_LIST) 2018-04-27 19:27:19 +02:00
Bram Matthys 3809168992 Improve comments in source code to better explain what's going on.
..and so nobody makes the same mistake.
2018-04-27 18:10:17 +02:00
Bram Matthys a6a4196af9 Add set::ssl::ecdh-curve so you can force one or more ECDH(E) curves.
This requires OpenSSL 1.0.2 or newer (released on 22 Jan 2015).
Also fix a bug with OpenSSL 1.1.0+ where - due to removal of an API
function - we accidentally forced curve P-256 rather than automatic
selection. That sucks because the automatic selection (since 1.0.2+)
allows supporting multiple curves and selecting the highest one.
2018-04-27 17:59:53 +02:00
Bram Matthys 3ea67268fc Travis-CI: OS X: try to make system-curl work 2018-04-26 15:17:09 +02:00
Bram Matthys df19b65a78 Travis-CI: system-cares + system-curl test wasn't run properly
because only the first argument was passed to the select-config script.
Also add 'set -x' in select-config for easier debugging.
2018-04-26 12:47:12 +02:00
Bram Matthys 66b2a036d8 Travis-CI: Of course, OS X doesn't have 'ldd' *sigh* 2018-04-26 10:58:16 +02:00
Bram Matthys 94c718dc3d Travis-CI: show 'ldd' output in build logs 2018-04-26 10:36:23 +02:00
Bram Matthys def588917a Travis-CI OS X improvements:
* Enable system curl, system c-ares and local curl tests
* Disable IRC test framework for now
2018-04-26 09:52:30 +02:00
Bram Matthys 40b0a5a9b2 Travis-CI: OS X build test attempt 101 2018-04-26 09:17:11 +02:00
Bram Matthys f615b6fa54 Travis-CI: more adjustments for OSX 2018-04-25 21:55:08 +02:00
Bram Matthys 64367d5d4c OSX: try find right packages to run test framework 2018-04-25 21:40:57 +02:00
Bram Matthys 568a808dbe temporarily disable -Werror to see OS X warnings 2018-04-25 21:21:13 +02:00
Bram Matthys d1d87d4d42 Apparently you need to use -Wl,-rpath,xx and not -Wl,-rpath=xx. Fix OSX compile problem? 2018-04-25 21:09:01 +02:00
Bram Matthys 7fe86ac1d8 Travis-CI: Show config.log on failure to trace osx build issue 2018-04-25 20:57:31 +02:00
Bram Matthys 3a97bc29da Fix bug 2 due to code cleanup yesterday... 2018-04-23 08:50:34 +02:00
Bram Matthys c342b432d1 OpenSSL detection: also check /usr/local/opt/openssl 2018-04-22 20:01:50 +02:00
Bram Matthys 34ae2cb0db OS X build-test: +brew install openssl 2018-04-22 19:49:43 +02:00
Bram Matthys 47e2975f01 Fix crash number 1 due to latest changes (TOPIC). 2018-04-22 19:38:29 +02:00
Bram Matthys 52b785cf4e Let's build (and fail) OS X via Travis-CI. 2018-04-22 18:58:41 +02:00
Bram Matthys 47bfcf7587 -Wno-format-zero-length 2018-04-22 18:58:30 +02:00
Bram Matthys d8c6201fbb Enable -Werror (via --enable-werror) in build tests 2018-04-22 18:36:49 +02:00
Bram Matthys 821a0464c7 Add --with-werror to enable -Werror 2018-04-22 18:35:50 +02:00
Bram Matthys 31409b19a5 Removed useless/unused * (pointer dereference) in increment 2018-04-22 18:06:10 +02:00
Bram Matthys 255223b308 -Wno-invalid-source-encoding:
+dnl This is purely for charsys.c... I like it so we can easily read
+dnl this for non-utf8. We can remove it once we ditch non-utf8 some day
+dnl of course, or decide to ignore me and encode them.
2018-04-22 17:44:11 +02:00
Bram Matthys ecf260dfc2 Only use -Wl,-export-dynamic while linking unrealircd or modules. 2018-04-22 17:36:04 +02:00
Bram Matthys 1c2da25573 Handle return value for truncate() - only for debugging anyway.. 2018-04-22 17:35:36 +02:00
Bram Matthys 33db0bf73e Get rid of a number of clang warnings. 2018-04-22 17:06:31 +02:00
Bram Matthys f535860670 Make check for -fno-strict-aliasing / -Wno-pointer-sign work with clang. 2018-04-22 16:50:51 +02:00
Bram Matthys 9e2f16db9e warn_unused was a good idea once, but doing more harm than good at this point.
Too many useless warnings and no easy way to ignore the result.
2018-04-22 16:11:27 +02:00
Bram Matthys 992bed3c7a Similar to previous commit, change: alter HOOKTYPE_MODE_DEOP function:
-int hooktype_mode_deop(aClient *sptr, aClient *victim, aChannel *chptr, u_int what, char modechar, long my_access, char **badmode);
+int hooktype_mode_deop(aClient *sptr, aClient *victim, aChannel *chptr, u_int what, int modechar, long my_access, char **badmode);
.. this to get rid of a compiler warning and potential problem.
2018-04-22 16:09:10 +02:00
Bram Matthys 4f0f8478cc Update HOOKTYPE_CHANNEL_SYNCED to get rid of compiler warning.
Can't safely use shorts with variable argument functions I think,
or maybe only with reduced type checking which is not what we want.
-void hooktype_channel_synced(aChannel *chptr, unsigned short merge, unsigned short removetheirs, unsigned short nomode);
+void hooktype_channel_synced(aChannel *chptr, int merge, int removetheirs, int nomode);
2018-04-22 16:02:13 +02:00
Bram Matthys bb4758f321 Add strldup() and safestrldup(), reducing ridiculous amount of code in
m_pass and m_topic.c when duplicating strings with a length limit.
+/* strldup(str,max) copies a string and ensures the new buffer
+ * is at most 'max' size, including nul byte. The syntax is pretty
+ * much identical to strlcpy() except that the buffer is newly
+ * allocated.
+ * If you wonder why not use strndup() instead?
+ * I feel that mixing code with strlcpy() and strndup() would be
+ * rather confusing since strlcpy() assumes buffer size including
+ * the nul byte and strndup() assumes without the nul byte and
+ * will write one character extra. Hence this strldup(). -- Syzop
+ */
2018-04-22 15:40:21 +02:00
Bram Matthys 6990b7d9a6 Mass-replace MyMalloc with MyMallocEx, even if it's unnecessary.
Replace century-old custom functions with C standard funcs,
such as AllocCpy -> strdup.
2018-04-22 14:55:07 +02:00
Bram Matthys 61f40a59a7 Remove unused events.h 2018-04-22 14:36:21 +02:00
Bram Matthys 9a1a4f13a4 Remove sjoin.h (was included but contents were unused) 2018-04-22 14:32:28 +02:00
Bram Matthys d5d446c38d More code cleanups to get rid of useless casts and other useless
structures such as:
-       lp->value.cp = (char *)MyMalloc(strlen(mask) + 1);
-       (void)strcpy(lp->value.cp, mask);
+       lp->value.cp = strdup(mask);
2018-04-22 14:28:22 +02:00
Bram Matthys 680715b1b5 Partially rewrite send_channel_modes() (+helper functions).
Although this is only used by servers lacking SJOIN/SJOIN3 so
is of limited use. Still.. got rid of the most ridiculous casts.
2018-04-22 13:51:37 +02:00
Bram Matthys 147ae3012b Get rid of about a million (now) useless casts and some re-indenting. 2018-04-22 10:29:36 +02:00
Bram Matthys 8d7d6d7c4c Get rid of compiler warning 2018-04-22 09:50:13 +02:00
Bram Matthys 6ef9a83c97 Surely this can use the generic #include "unrealircd.h" instead?
Avoids sendto_realops() warning.
2018-04-22 09:48:12 +02:00
Bram Matthys 5044013dd5 Make m_ircops use RPL_TEXT rather than conflicting numeric.
The output of /IRCOPS isn't meant to be client parsable anyway (which
can be seen by the use of bold text and such), so using a generic
numeric rather than wasting two others seems sensible.
Reported by The_Myth in #5066.
2018-04-22 09:42:14 +02:00
Bram Matthys a7bcb637b7 Fix small memory leak if not passing the weak cipher config test (DES/3DES..)
Reported by Sky-Dancer (#5078).
2018-04-22 09:37:06 +02:00
Bram Matthys a235b35633 This code can be a lot simpler, duh. Reported by Sky-Dancer (#5078). 2018-04-22 09:35:05 +02:00
Bram Matthys 04ca88cc1e Fix bug in blacklist module with multiple replies for the same IP.
We only parsed the first A record reply, so if the blacklist returned
multiple results /and/ you would not have all those types in your
blacklist { } block then you could miss a hit (false negative).
2018-04-22 09:04:14 +02:00
Bram Matthys ad9ca5e449 Add support for checking IPv6 addresses in blacklists.
Suggested by k4be (#5040).
2018-04-22 08:30:02 +02:00
Bram Matthys 9b1a79a191 And again a Windows compile fix (hm how did this happen.. :D) 2018-04-21 20:35:54 +02:00
Bram Matthys 4e1e7d6674 Fix windows compile problem due to previous changes. 2018-04-21 20:31:41 +02:00
Bram Matthys f0092fef4e Properly report failure of fork(). Reported by mbw (#5087). 2018-04-21 20:27:53 +02:00
Bram Matthys 74009b88ba Cleanup of init_sys(): remove old stuff for ancient OS's.
On *NIX now always redirect stdin, stdout and stderr to /dev/null for
safety and to prevent any ssh hanging as reported by mbw (#5087).
This code needs some testing on non-Linux though it should be all
POSIX, unless I missed something... :)
2018-04-21 20:12:23 +02:00
Bram Matthys 894491fa32 Change numeric 008 format which reports snomask.
This is for easier parsing of the "MODE yournick" response.
From:
:maintest.test.net 008 testuser :Server notice mask (+kcfjvGqSso)
To:
:maintest.test.net 008 testuser +kcfjvGqSso :Server notice mask
Reported by emerson in #5079.
2018-03-25 13:45:59 +02:00
Bram Matthys 2f4baddf0e Upd relnotes 2018-03-25 13:42:32 +02:00
Bram Matthys 15bf82d3c1 Fix segfault on set { hide-ban-reason; }; reported by Skizzerz (#5052) 2018-03-25 13:41:57 +02:00
Bram Matthys 8f2b77bb2e It's +e ~m:censor and not ~m:filter. Reported by acidvegas (#5054). 2018-03-25 13:31:06 +02:00
Bram Matthys 9f18118f76 Fix './unrealircd reloadtls' not reloading certificates/keys if
listen::ssl-options, sni::ssl-options or link::outgoing::ssl-options
are used. In short: it only reloaded the ones from set::ssl until
now. Bug reported by Mr_Smoke (#5072)
2018-03-25 13:22:19 +02:00
Bram Matthys 54947ed9b5 Add some initial release notes for 4.0.18 (not much..). 2018-03-07 10:40:03 +01:00
Bram Matthys 41b7e1b735 'set::cloak-method ip' not working properly with DNS resolving.
Reported by The_Myth (#5064).
2018-03-07 10:22:24 +01:00
Bram Matthys 386d2aaf8b Disable timesynch by default.
Built-in time synchronization was added in 2006 when many computers did not
do time synchronization by default. Nowadays nearly all operating systems,
including many Linux distro's, Windows and OS X have time synchronization
enabled out-of-the box.
You can still re-enable the built-in timesynch feature via:
set { timesynch { enable yes; }; };
..but you should really use NTP instead.
2018-03-07 09:40:13 +01:00
Bram Matthys afad280a1d Make NTP packet (used by timesynch) more in-line with existing implementations. 2018-03-07 09:39:20 +01:00
Bram Matthys f4b864c7b8 Update list of time servers 2018-03-07 09:38:19 +01:00
Bram Matthys 2bbdf22d76 Set git version to 4.0.18-devel 2017-12-29 09:34:31 +01:00
Bram Matthys 12848b7dae dead_link() was not sending the error message to the user.
This affected the following errors:
* Max SendQ exceeded
* Excess Flood
* Flood from unknown connection
* SSL Handshake flood detected
* Rejected link without SSL/TLS
* Various errors from the websocket module
* Other errors generated by 3rd party modules
2017-12-29 09:15:11 +01:00
Bram Matthys 6c1918bb77 Relnotes reflect 4.0.16.1->4.0.17. 2017-12-22 10:54:21 +01:00
Bram Matthys 3a67809140 Archive 4.0.16.1 release notes. 2017-12-22 10:16:28 +01:00
Bram Matthys 107424de9e Running ./autogen.sh helps when updating versions :D 2017-12-22 10:13:41 +01:00
Bram Matthys 3aa13d2bc3 UnrealIRCd 4.0.17 2017-12-22 09:52:24 +01:00
Bram Matthys 5609b36850 Fix crash with OperOverride 2017-12-22 09:48:42 +01:00
Bram Matthys 7808330176 Use ::mask style in example (even though the previous method still works) 2017-12-17 10:07:54 +01:00
Bram Matthys 0a9306ca5b CIDR support in set::antirandom::except-hosts
Or, to be more precise: converted code to use match_user() framework.
2017-12-17 10:06:39 +01:00
Bram Matthys 888b4f549c Be a bit more liberal, used for antirandom backward-compatible. 2017-12-17 10:06:09 +01:00
Bram Matthys 33ec662205 Remove a junk notice regarding SJOIN 2017-12-17 09:26:19 +01:00
Bram Matthys dc7cb17eff Fix linking problem if only using link::outgoing (and not link::incoming)
which is perfectly legal but caused a confusing error message about
a 'server name mismatch'.
2017-12-13 09:02:32 +01:00
Bram Matthys 079963cdc6 Set prio for HOOKTYPE_CHANNEL_DESTROY to -1mln so other hooks are
called later.
2017-12-06 17:53:26 +01:00
Bram Matthys 847d7d9f7d UnrealIRCd 4.0.17-rc1 2017-12-01 10:06:43 +01:00
Bram Matthys e4ce20466e Bump proto version to 4017. 2017-12-01 10:03:45 +01:00
Bram Matthys a07411217f Apparently individual PROTOCTL tokens were limited at 128 chars.
This posed a limitation with utf8 PROTOCTL NICKCHARS=... and
potentially PROTOCTL SERVERS=... if having more than 32 servers.
The limitation has now been removed (buffer length = 512)
2017-12-01 10:00:15 +01:00
Bram Matthys c603cc52b3 Reject link if we have any utf8 charset enabled and other side doesn't. 2017-12-01 09:56:08 +01:00
Bram Matthys 82659cfecc '/SPAMFILTER del <id>' was not working across servers.
This was actually a read-after-free bug (IRCOp-only)
2017-11-30 21:59:30 +01:00
Bram Matthys fa2afa8d0b vs2012.bat/vs2017.bat: Apparently %* should work on Windows.. 2017-11-27 19:42:44 +01:00
Bram Matthys cc6d7757fa Fix hang when linking servers. Reported by k4be and acidvegas. 2017-11-27 19:36:30 +01:00
Bram Matthys be0b499d94 Add ability to use vs2012/vs2017 command with CUSTOMMODULE:
Visual Studio 2012:
call extras/build-tests/windows/compilecmd/vs2012.bat CUSTOMMODULE MODULEFILE=xyz
Visual Studio 2017:
call extras/build-tests/windows/compilecmd/vs2017.bat CUSTOMMODULE MODULEFILE=xyz
2017-11-27 17:57:57 +01:00
Bram Matthys 7851742bc5 Does this work? ;) 2017-11-27 17:19:20 +01:00
Bram Matthys 40293aaaa7 Move charsys definitions from .h to charsys.c & add some fwd decl 2017-11-27 12:32:14 +01:00
Bram Matthys b923b57b35 Yeah, we need more room. 2017-11-27 12:22:42 +01:00
Bram Matthys 24a1f5ba9f Be more explicit about visually looking characters in Cyrillic script 2017-11-27 12:08:48 +01:00
Bram Matthys 62277dbccf Add note regarding CASEMAPPING and "visually identical character" checks.
Also call the UTF8 charsys support experimental. Not so much because
of issues in UnrealIRCd that are unique to utf8 but because of the many
"but's" such as lack of services support. And people suddenly waking up
and realizing there never was improved CASEMAPPING and "visually identical
character checks" in original charsys either.
2017-11-27 12:03:53 +01:00
Bram Matthys 330498c467 Update makefile.win32 for charsys move. 2017-11-27 11:50:36 +01:00
Bram Matthys abaacb6643 Permit 0xa0, if it appears inside UTF8 (via set::allowed-nickchars).
This is the "non breaking space" outside UTF8 and thus was previously
blacklisted. Keeping it blacklisted even if it appears in UTF8 is not
really an option as it means some UTF8 characters can never be used,
like the letter "nun" in Hebrew, and likely others.
2017-11-27 11:41:07 +01:00
Bram Matthys b5b01c5263 Modularize charsys (set::allowed-nickchars). It's still a mandatory
module but at least the code can be updated on the fly (or replaced
with some other secondary alternative module in the future).
src/charsys.c -> src/modules/charsys.c
This also means everyone needs to load the modules/charsys module.
2017-11-27 11:24:25 +01:00
Bram Matthys 05e289fc59 Make Windows version compile again? 2017-11-27 10:38:47 +01:00
Bram Matthys fb12e1beeb set::allowed-nickchars: added "hebrew-utf8". Supplied by Lion-O. 2017-11-27 10:30:32 +01:00
Bram Matthys e3b91f8b94 Added UTF8 support in set::allowed-nickchars
See https://www.unrealircd.org/docs/Nick_Character_Sets
Example: set { allowed-nickchars { latin-utf8; }; };
Important remarks:
* All your servers must be on UnrealIRCd 4.0.17 (or later)
* Most(?) services do not support this, so users using UTF8 nicknames
  won't be able to register at NickServ.
* In set::allowed-nickchars you must either choose an utf8 language
  or a non-utf8 character set. You cannot combine the two.
* You also cannot combine multiple scripts/alphabets, such as:
  latin, greek, cyrillic and hebrew. You must choose one.
* If you are already using set::allowed-nickchars on your network
  (eg: 'latin1') then be careful when migrating (to eg: 'latin-utf8'):
  * Your clients may still assume non-UTF8
  * If users registered nicks with accents or other special characters
    at NickServ then they may not be able to access their account
    after the migration to UTF8.

[!] Work in progress [!]
2017-11-25 21:12:41 +01:00
Bram Matthys 2a040b40a5 Improve "non-SSL client on SSL port" detection. 2017-11-25 16:01:56 +01:00
Bram Matthys 668e1241b0 Show additional information in SSL errors. Such as:
"SSL_accept(): Internal OpenSSL error or protocol error: tls_process_client_hello: unsupported protocol"
rather than just
"SSL_accept(): Internal OpenSSL error or protocol error"
Perhaps it can be shortened in a later version if this is acceptable.

This can help with tracing server linking errors, and/or
if using the junk snomask (MODE nick +s +j).
2017-11-25 15:48:28 +01:00
Bram Matthys f7df81fd24 Add AppArmor profile in extras/security/apparmor/unrealircd
See: https://www.unrealircd.org/docs/Using_AppArmor_with_UnrealIRCd
2017-11-25 09:54:47 +01:00
Bram Matthys 0d99670391 Update changelog 2017-11-23 07:56:11 +01:00
Bram Matthys 12df5a96ff Fix crash if using anope with old unreal32 mod w/SSL on non-localhost.
Sounds rare and you should really use a more recent version of anope
with the unreal4 protocol module. But, of course, we shouldn't crash.
2017-11-21 11:40:07 +01:00
Bram Matthys e68f31ba34 Update relnotes 2017-11-20 18:57:40 +01:00
Bram Matthys b7bdb1dc40 Move 4.0.16 release notes to doc/RELEASE-NOTES.old 2017-11-20 18:55:38 +01:00
Bram Matthys 87a42edd4b extbans/timedban automatic -e/-I fix (duh)
Should add a testcase for it, but the test would take 1 minute. Hmmm.
2017-11-20 18:50:02 +01:00
Bram Matthys 0cc5eddce2 extbans/timedban (~t): fix unset not working for +e/+I and reduce load
by spreading the unset event over multiple events (process roughly a
quarter each time). Not important for small networks but for big ones..
2017-11-20 16:48:48 +01:00
Bram Matthys e67d49112e Re-indent src/modules/m_mode.c (yuck...) 2017-11-20 13:48:18 +01:00
Bram Matthys e16dfdc6a6 Add release notes entry for timed bans support in +f. 2017-11-20 09:48:25 +01:00
Bram Matthys aa093f3e2b Timedban support in +f [5t#b2]:10 (set 2 minute ban on text flood).
Naturally this is only available if the extbans/timedban module is
loaded and you should do so on all your servers on the same network
if you want to avoid confusion/desynchs.
2017-11-20 09:44:25 +01:00
Bram Matthys d63bc7e187 Module API: New function is_module_loaded("name"): return 1 / 0 2017-11-20 09:43:43 +01:00
Bram Matthys 92afdb56b5 Timed bans: ~t:duration:mask
These are bans that are automatically removed by the server.
The duration is in minutes and the mask can be any ban mask.
=> Note that you need to load the extbans/timedban module!
Some examples:
* A 5 minute ban on a host:
  +b ~t:5:*!*@host
* A 5 minute quiet ban on a host (unable to speak):
  +b ~t:5:~q:*!*@host
* An invite exception for 1440m/24hrs
  +I ~t:1440:*!*@host
* A temporary exempt ban for a services account
  +e ~t:1440:~a:Account
* Allows someone to speak through +m for the next 24hrs:
  +e ~t:1440:~m:moderated:*!*@host
* And any other crazy ideas you can come up with...
2017-11-20 09:16:03 +01:00
Bram Matthys 8b0fd74c37 Bug: set::restrict-extendedbans did not have effect in stacked bans.
For example if you had:
set { restrict-extendedbans "a"; };
Then this would be rejected:
MODE #chan +b ~a:Account
However, you could still set:
MODE #chan +b ~q:~a:Account
Now this is properly rejected as well.
2017-11-19 20:43:15 +01:00
Bram Matthys 2e1e9a0b91 Load extbans/msgbypass from modules.optional.conf 2017-11-19 17:19:35 +01:00
Bram Matthys eb205e04cc Make types future-proof. Fix ~m case for +M.
BypassMessageRestrictionType -> BypassChannelMessageRestrictionType
BYPASS_MSG_* -> BYPASS_CHANMSG_*
2017-11-19 17:12:28 +01:00
Bram Matthys 1b2b28e6c6 New ban exception ~m:type:mask - allows bypassing of message restrictions.
Valid types are: 'external' (bypass +n), moderated (bypass +m/+M),
'filter' (bypass +G), 'color' (bypass +S/+c) and 'notice' (bypass +T).
Some examples:
* Let LAN users bypass +m: +e ~m:moderated:*!*@192.168.*
* Make GitHub commit bot bypass +n: +e ~m:external:*!*@ipmask
* Allow a services account to use color: +e ~m:color:~a:ColorBot
2017-11-19 16:40:39 +01:00
Bram Matthys dd6f67a266 Send errors regarding invalid bans (if available).
Fix case where conv_param() returns NULL (ban rejected)
causing is_ok() function not to be called so the user
never sees the error. We now try to call the is_ok after
conv_param returns NULL.
So not really an API change, more like a fix.
2017-11-18 19:15:44 +01:00
Bram Matthys b046b86a6e Way to customize the reject connection messages. 2017-11-17 11:13:11 +01:00
Bram Matthys e1af5ae6c5 Move AllowClient/check_client/check_init to m_nick module
(apparently one of the previous commits was partial)
2017-11-17 10:45:54 +01:00
Bram Matthys d13c7b20d0 Code cleanups in AllowClient and register_user 2017-11-17 10:37:45 +01:00
Bram Matthys 7b7f492b71 Move AllowClient/check_client/check_init to m_nick module 2017-11-17 10:10:28 +01:00
Bram Matthys cb6a118c4d antirandom sample conf: remove confusing phrase that doesn't apply 2017-11-15 11:49:46 +01:00
Bram Matthys 3c0db9c72f Move HOOKTYPE_SECURE_CONNECT hook and mode setting up a bit. 2017-11-13 17:02:05 +01:00
Bram Matthys cd7d3f0cc6 Rephrase. Still too long, though. 2017-11-13 17:00:36 +01:00
Bram Matthys 527fa9818c UnrealIRCd will no longer give +z to users on WEBIRC gateways, unless
the WEBIRC gateway gives us some assurance that the
client<->webirc gateway connection is also secure (eg: https).

This is the regular WEBIRC format:
WEBIRC password gateway hostname ip

This indicates a secure client connection (NEW):
WEBIRC password gateway hostname ip :secure

Naturally, WEBIRC gateways MUST NOT send the "secure" option if
the client is using http or some other insecure protocol.

https://github.com/ircv3/ircv3-ideas/issues/12
2017-11-13 16:47:22 +01:00
Bram Matthys 512c8fb000 Move the place where we set umode +z (secure). Needed for next. 2017-11-13 16:23:49 +01:00
Bram Matthys 31688fbae8 Update version to 4.0.17-devel to reflect development status. 2017-11-13 08:25:00 +01:00
Bram Matthys 07f056c1a4 Add reference to https://www.unrealircd.org/docs/IRCOp_guide 2017-11-13 08:17:28 +01:00
Bram Matthys d8470bb902 AppVeyor: needs both unrar and unzip 2017-11-12 08:08:41 +01:00
Bram Matthys f86cf68548 UnrealIRCd 4.0.16 2017-11-12 07:59:11 +01:00
Bram Matthys 1425583bed Zip file now. Does this work? 2017-11-11 11:06:48 +01:00
Bram Matthys 1070e43141 Windows: update dependencies (libs). 2017-11-11 11:04:51 +01:00
Bram Matthys 7d6d33a5bc Update c-ares to 1.13.0 (20-jun-2017) 2017-11-11 09:57:35 +01:00
Bram Matthys 67396c808d Update release notes 2017-11-10 19:48:32 +01:00
Bram Matthys 69264175e7 Update conf/ssl/curl-ca-bundle.crt (Wed Sep 20 03:12:05 2017 GMT) 2017-11-10 19:12:39 +01:00
Bram Matthys 1e059ca0e4 Update to PCRE2 10.30 (14-August-2017) 2017-11-10 19:05:36 +01:00
Bram Matthys 6b35aa35a8 Delete UnrealIRCd 3.2.x changelogs (they are in git anyway) 2017-11-10 18:58:21 +01:00
Bram Matthys c5e38b9272 UnrealIRCd 4.0.16-rc1 2017-10-29 12:16:43 +01:00
Bram Matthys 704487e124 Fix numerous crash bugs in server to server code.
In 3.2.x we didn't fix these bugs since servers are trusted and
should send correct commands. In 4.0.x we changed this so we would
fix them when we come across such issues at normal priority (not
consider them security issues). I now took it a step further and
actively checked/looked for these issues and a bunch of them were
found. Almost all are NULL pointer dereferences, with some exceptions.
* S2S: MODE: check conv_param return value (NULL ptr crash)
* S2S: MODE: floodprot: More checks (NULL ptr crash)
* S2S: MODE: OOB write of NULL (write NULL past last element in an array)
* S2S: NICK: old compat fixes (NULL ptr crash)
* S2S: PROTOCTL: Check for double SID=
* S2S: SERVER: require at least 3 parameters (NULL ptr crash)
* S2S: SJOIN: require at least 3 parameters (NULL ptr crash)
* S2S: SJOIN: Fix OOB read (read 1 byte past buffer)
* S2S: TKL: validate set_at and expire_at (NULL ptr crash)
* S2S: TKL: require at least 9 parameters for spamf, not 8 (NULL ptr crash)
* S2S: TKL: ignore invalid spamfilter matching type (remove abort() call)
* S2S: TOPIC: querying for topic is not permitted (NULL ptr crash)
* S2S: UID: require 12 parameters (NULL ptr crash)
* S2S: WATCH: this is not a server command (NULL ptr crash)
* Fix OOB read (1 byte beyond string) for timevals. This was reachable
  from config code, TKL (S2S) and /*LINE (Oper). In practice no crash.
* MODE: make code less confusing (effectively no change)
* TRACE: remove strange output in case of 0 lines of output
* Fix unimportant memory leak on boot (#4713, reported by dg)
* Fix small memory leak upon 'DNS i' (oper only command)
* Always work on a copy in clean_ban_mask(). This fixes a bug that could
  result in a strlcpy(buf, buf, sizeof(buf)). So, overlapping strings,
  which is undefined behavior.
2017-10-29 11:20:52 +01:00
Bram Matthys d574183825 Travis-CI: Use CPPFLAGS instead of CFLAGS 2017-10-23 16:52:28 +02:00
Bram Matthys 0dadba5482 Travis-CI: Use -DFAKELAG_CONFIGURABLE for tests. From 300 to 30s. 2017-10-23 16:37:22 +02:00
Bram Matthys 52a7478bd0 Comment it out like this so we can use -D 2017-10-23 16:37:00 +02:00
Bram Matthys 1dfcac9794 Travis-CI: Blah. 2017-10-23 14:14:58 +02:00
Bram Matthys 0318edbad0 Reinstall git during run-tests (may have been removed earlier in 'local-curl' test) 2017-10-23 13:42:16 +02:00
Bram Matthys cec74b0208 Use MAKE="make -j3" to make ./Config run faster as well. 2017-10-23 12:38:57 +02:00
Bram Matthys 13740a7d13 Travis-CI: Generate TLS certificate during test build (needed for testing further on) 2017-10-23 12:34:41 +02:00
Bram Matthys 821ad6ec06 Add some clear marker between compile tests and other tests 2017-10-23 12:05:33 +02:00
Bram Matthys 5f3f6aa827 Travis-CI: run-tests: install 'rake' 2017-10-23 12:02:52 +02:00
Bram Matthys e1590fc8bc Run make with -j3. Add +x to extras/build-tests/nix/run-tests (:D) 2017-10-23 11:53:50 +02:00
Bram Matthys 866a060533 Use 'set -e' and try to run test framework 2017-10-23 11:49:06 +02:00
Bram Matthys b23a3ff7b9 Travis-CI: path changes 2017-10-23 11:16:05 +02:00
Bram Matthys 4dc5324e57 Travis-CI: cleanup / new dir structure 2017-10-23 11:13:05 +02:00
Bram Matthys 77234b2b8d API change for HOOKTYPE_PRE_INVITE and fix #5023:
* API change for HOOKTYPE_PRE_INVITE:
  (aClient *sptr, aClient *target, aChannel *chptr, int *override)
  Modules must now send the error message instead of only returning
  HOOK_DENY. Also check for operoverride and set *override=1.

This so modules can send their own error messages instead of the
default message being sent ("channel is +V" - which is not true).

Reported by Gottem (#5023).
2017-10-23 10:07:33 +02:00
Bram Matthys d11484c2cf Add build status badge for Windows (AppVeyor) 2017-10-23 09:00:14 +02:00
Bram Matthys 8981b87c72 Update libressl paths for VS2017
(or actually current unreal w/o rollback for vs2012)
2017-10-22 18:11:24 +02:00
Bram Matthys 8a17f5aad2 I've stopped trying to understand this.
Apparently there's a difference between sed 3.x and sed 4.x
2017-10-22 17:11:45 +02:00
Bram Matthys a55aa2a39a 1) From double escaping to single escaping, such joy.
2) Use 'iscc' rather than 'compil32' since the latter pops up a
   dialog box which blocks the entire build process.
3) Apparently the VS2017 image has a broken VS2012 since it bails
   on winsock.h. So try to use different images for both builds.
2017-10-22 16:41:23 +02:00
Bram Matthys a9a94652ec Be consistent when setting WINVER. This fixes a compile issue
with Visual Studio 2017.
2017-10-22 16:23:52 +02:00
Bram Matthys 7527de3820 Silence rar extraction stuff - way too noisy 2017-10-22 16:18:50 +02:00
Bram Matthys 81e8ef3b49 Tell AppVeyor to use VS2017 image, apparently not the default. 2017-10-22 16:17:40 +02:00
Bram Matthys 1a434963b7 Duh 3 2017-10-22 16:11:24 +02:00
Bram Matthys b3480c3b42 Duh 2 2017-10-22 16:07:32 +02:00
Bram Matthys a6049add32 Duh. 2017-10-22 16:06:54 +02:00
Bram Matthys 99f9d1aa7c AppVeyor: restructuring, add vs2017 target, .. 2017-10-22 16:02:48 +02:00
Bram Matthys b941b184f0 Let's try an environment (build config) 2017-10-22 14:47:38 +02:00
Bram Matthys e505a4b99c Something tells me error checking won't work in batch files without this.. 2017-10-22 14:41:54 +02:00
Bram Matthys 5510f6dc0d Ah no. 2017-10-22 14:38:19 +02:00
Bram Matthys 25864b9cb6 Nevermind, use external batch file. 2017-10-22 14:34:41 +02:00
Bram Matthys 5ec84b1629 Try 5001 2017-10-22 14:31:54 +02:00
Bram Matthys 593cacbc90 Hm CRLF shit? 2017-10-22 14:28:23 +02:00
Bram Matthys 40d8fe9376 Initial appveyor file for automated Windows build. 2017-10-22 14:25:54 +02:00
Bram Matthys 6ab81ab7b4 Fix bug caused by 5124e60b7c a few days ago:
channel MODE without parameters being sent when force-rejoin is in use.
2017-10-18 17:39:54 +02:00
Bram Matthys d67de82786 Add extra 6 second fake lag penalty on /INVITE. 2017-10-18 15:56:06 +02:00
Bram Matthys 5bedeaa9bf Set cptr->name after EAUTH. Fixes bug #4915 reported by Eman:
missing server name in link rejection message (clock mismatch).
2017-10-18 15:43:13 +02:00
Bram Matthys f8cab0d093 isupport does not update maxbans. Reported by dyfrgi (#4882). 2017-10-18 15:22:33 +02:00
Bram Matthys a716e3ccaa The default oper snomask now includes 'S' (spamfilter notices). 2017-10-18 15:11:12 +02:00
Bram Matthys 70b64c2ad8 If you have any blacklist { } block then UnrealIRCd will set an
set::handshake-delay of 2 seconds by default. This will allow (most)
DNSBL checking to be finished before the user comes online, while
still allowing a smooth user experience.
If your DNS(BL) is slow then you could raise this setting slightly.
2017-10-18 15:03:12 +02:00
Bram Matthys e4f4336f15 Add set::handshake-delay https://www.unrealircd.org/docs/Set_block#set::handshake-delay 2017-10-18 14:57:35 +02:00
Bram Matthys b56c5b985f This check is already present in parse_client_queued() 2017-10-18 14:31:35 +02:00
Bram Matthys 3aa6adcbfc Rename 'draft/sts' to 'sts'. 2017-10-17 18:12:13 +02:00
Bram Matthys 98b4832b27 clarify 2017-10-12 20:18:24 +02:00
Bram Matthys c2d80028b3 Update release notes to reflect latest changes. 2017-10-12 20:16:42 +02:00
Bram Matthys 307243ff7a Show (previously hidden) umode -r to user on nickchange.
Reported by Mewsito (#4949).
2017-10-11 18:25:58 +02:00
Bram Matthys 1d659296c2 Fix Windows compile problem 2017-10-11 17:33:39 +02:00
Bram Matthys b7b8e41ac4 CAP chghost: also send CHGHOST message to "self" (impacted user)
https://github.com/ircv3/ircv3-specifications/issues/324
2017-10-11 10:29:00 +02:00
Bram Matthys df5ed0884e Use spkifp instead of sslclientcertfp in example conf.
Add example link block for services (but reject if user does not
change the default password)
2017-10-09 15:10:37 +02:00
Bram Matthys 9e1160b74f Add './unrealircd spkifp' which will output the SPKI fingerprint
along with the exact password section to use in the link block
on the other side of the link.
Also used in tutorial now at
https://www.unrealircd.org/docs/Tutorial:_Linking_servers
2017-10-09 14:59:19 +02:00
Bram Matthys 55e4c8ea03 Tell admins to verify the SSL/TLS certificates of their server links.
https://www.unrealircd.org/docs/Link_verification
This is only outputted if both sides are 4.0.16+ so we can use spkifp
and use the same instruction on both sides of the link.
(If we would do it for previous versions then we would only give
 half of the instructions to the users, which makes no sense)
2017-10-09 14:17:35 +02:00
Bram Matthys 16faccb777 Add support for 'spki' authtype. Example:
password "AHMYBevUxXKU/S3pdBSjXP4zi4VOetYQQVJXoNYiBR0=" { spkifp; };
This value will stay the same even for new SSL/TLS certificates,
as long as the key stays the same. This can be useful in case of
Let's Encrypt (if you use a tool that keeps the same key, that is,
certbot does not at the moment). Suggested by grawity (#5014).

Also make auth type 'sslclientcert' available as 'cert' and
make 'sslclientcertfp' available as 'certfp'.
2017-10-09 12:28:08 +02:00
Bram Matthys 75ab9a766c Dumdeedum 2017-10-08 18:21:43 +02:00
Bram Matthys f2603cdc49 When booting the IRCd and the log is full (log::maxfilesize), the IRCd
would not write the appropriate 'Max file size reached' message to the
old log file. Reported by NoMiaus (#4919).
2017-10-08 18:19:16 +02:00
Bram Matthys abd7354bbb A common complaint is that spamfilters are hard to remove. Well, no more!
There is now '/spamfilter del' which will output all spamfilter along with
the appropriate command to delete each spamfilter (by unique ID).
This way it should be easy for anyone to delete an existing spamfilter.

We also refer to this new feature from '/spamfilter', '/stats spamfilter',
etc.
2017-10-08 17:09:28 +02:00
Bram Matthys 16f71e8360 Add option: set { ban-include-username yes; }; which will make bans
places by spamfilters (and some other systems) to be placed not on *@ip
but rather on user@ip. Note that this won't work for ZLINE/GZLINE since
no ident/username lookups are done in such cases.
Bit of a niche feature but okay..
2017-10-08 15:44:42 +02:00
Bram Matthys 1b6d49a9dc Add set { cloak-method ip; }; which will make cloaking only be done
on the IP and thus result in an XX.YY.ZZ.IP cloaked host.
This so you can have "IP cloaking" without disabling DNS lookups.
GLINES on hosts still work and IRCOps (and yourself) can still see
the host in /WHOIS.
Requested in 4957 by Gottem and The_Myth.
2017-10-08 15:14:57 +02:00
Bram Matthys 66143927e0 In /STATS S display throttling as anti-flood::connect-flood, as that
is the new name (since about 2 years).
2017-10-08 09:12:46 +02:00
Bram Matthys b52b82f8a5 Tweaks 2017-10-07 21:42:41 +02:00
Bram Matthys ee2435689c Some initial work on release notes for 4.0.16. 2017-10-07 21:36:22 +02:00
Bram Matthys 87815ad397 Automatically discover SASL server if saslmechlist is sent by services
and set::sasl-server is not set by the administrator. Looks like this:
*** Services server 'services.test.net' provides SASL authentication, good! I'm setting set::sasl-server to 'services.test.net' internally.
Hopefully this will increase SASL availability significantly.
That is, once anope and atheme start sending the saslmechlist to us,
of course ;) (see commit d6e26d59e5)
2017-10-07 21:05:49 +02:00
Bram Matthys 7801dc888d Move CAP NEW "sasl" sending to after EOS (End Of Synch)
This so saslmechs are properly sent in case of services (re)connect,
otherwise the CAP NEW is sent too early when the saslmechs are
not known yet.
NOTE: This makes sending "EOS" mandatory for any SASL servers.
You should be doing this since 14 years ago (it was added
in 3.2beta18 in August 2003) so hopefully that is the case.
Anope is good anyway :)
2017-10-07 19:40:39 +02:00
Bram Matthys d6e26d59e5 Allow services to set the saslmechlist so it can be used by sasl v3.2.
Note to services coders: send something like this:
MD client your.services.server saslmechlist :EXTERNAL,PLAIN
2017-10-07 19:20:06 +02:00
Bram Matthys 5bd9878413 Only send CAP parameters (token=aaaaaa) to clients with CAP proto 302 or higher,
as per CAP specification. (So use "CAP LS 302" to see them)
2017-10-07 19:18:21 +02:00
Bram Matthys 5c7d89a642 Add support for "CAP extended-join". 2017-10-07 18:33:25 +02:00
Bram Matthys 2248699c60 Fix crash due to previous enhancements. 2017-10-07 17:25:37 +02:00
Bram Matthys 5124e60b7c Add "CAP chghost" support. Internal recode of userhost changes.
Fix force-rejoin not working if doing SVSMODE -x/+x (Koragg, #5015).

Note to module coders:
Please use the following procedure in case of an user/host change:
* userhost_save_current(acptr);
* << change username or hostname here (or both) >>
* userhost_changed(acptr);
This function will take care of notifying other clients about
the userhost change, such as doing PART+JOIN+MODE if force-rejoin
is enabled, and sending :xx CHGHOST user host messages to
"CAP chghost" capable clients.

Also, small note to everyone:
If force-rejoin is enabled we will not send the PART+JOIN+MODE to
"CAP chghost" capable clients. Doing so is just a hack to notify
people of a userhost change. "CAP chghost" users can thus benefit
from the reduced noise in this respect.
2017-10-07 13:31:30 +02:00
Bram Matthys 0fd265349a Remove HOSTILENAME config.h option since running without it is
and has never been supported.
2017-10-07 09:33:48 +02:00
Bram Matthys 23ce2eaabe It helps if you also update the *.h files to reflect those changes. Duh. 2017-10-07 09:32:09 +02:00
Bram Matthys 3d38adff4f Rename config.h setting CLIENT_FLOOD to DEFAULT_RECVQ since that is what
it is. You should simply set a class::recvq instead of changing this
in config.h.
2017-10-07 09:29:47 +02:00
Bram Matthys 885e474211 Removed option in config.h to disable NO_FLOOD_AWAY. You can already
tweak or disable this via set::anti-flood::away-flood.
2017-10-07 09:25:45 +02:00
Bram Matthys 1a80309314 Remove strange include/config.h option called CMDLINE_CONFIG which
would allow you to use -f even if the IRCd is suid or sgid.
This is not anything we or you ever want to permit since this is
a major security problem. This setting is now gone. I doubt
anyone used it.
2017-10-07 09:22:32 +02:00
Bram Matthys 08496ec47b Remove various #define's from config.h that don't actually do anything
(or are incorrectly documented).
2017-10-07 09:19:14 +02:00
Bram Matthys 7a33a2c019 Move CONNECTTIMEOUT to set::handshake-timeout and clarify the setting
at https://www.unrealircd.org/docs/Set_block#set::handshake-timeout
Requested by marco500 in #5011.
2017-10-07 08:45:48 +02:00
Bram Matthys d6acbf63b0 Move MAXUNKNOWNCONNECTIONSPERIP to set::max-unknown-connections-per-ip.
Rarely tweaked setting, but for those who need it it's easier in the conf.
Requested by marco500 (#5011). For documentation of this setting see:
https://www.unrealircd.org/docs/Set_block#set::max-unknown-connections-per-ip
2017-10-07 08:15:52 +02:00
Bram Matthys 37dbdfeee3 Bump version to 4.0.16-devel. This version is under development.
You should always use https://www.unrealircd.org/ for stable releases.
In case you wondered what happened with 4.0.15: that version consists
of cherry-picked / backports of the two crash fixes from this 'unreal40'
development branch. The current code simply wasn't ready yet for a
rushed security release.
2017-10-01 19:37:29 +02:00
Bram Matthys 6dd147b941 Fix 2nd crash bug. Found when searching for related crash issues. 2017-10-01 13:19:12 +02:00
Bram Matthys 47eebad53d Fix crash bug, reported by Joseph Bisch. 2017-10-01 13:18:45 +02:00
Bram Matthys 5399e060fa Send CAP DEL sasl if set::sasl-server squits and CAP NEW when it returns.
(Only to cap-notify and v3.2 clients, of course)
Also fix a "bug" where sts parameters were not shown in CAP NEW tls.
2017-09-30 15:19:29 +02:00
Bram Matthys ac65e32a26 Add CAP v3.2 support. Add 'cap-notify' support.
Delete CAP CLEAR as it's use is discouraged (too much trouble).
Delete CAP ACK (from client2server) as this is only for CAP's with
ack modifiers. This is something we don't use, and which has been
deprecated in v3.2 of the spec.
2017-09-30 14:34:06 +02:00
Bram Matthys 461fa9a48a Store CAP version in use in sptr->local->cap_protocol. 2017-09-30 12:50:36 +02:00
Bram Matthys 7d381086ad Remove CLICAP_FLAGS_CLIACK. Never understood this idea. Unused and deprecated it seems. 2017-09-30 12:35:56 +02:00
Bram Matthys 44052b86c0 Remove CLICAP_FLAGS_STICKY. We don't use this anyway. 2017-09-30 12:33:57 +02:00
Bram Matthys fbd4e74663 You can now have multiple webirc { } blocks with the same mask.
This permits multiple blocks like..
webirc {
    mask *;
	password "....." { sslclientcertfp; };
};
..should you need it.
In other words: we don't stop matching upon an authentication failure.
2017-09-30 09:53:04 +02:00
Bram Matthys 638b189804 Users connecting to the IRC server from the same machine could be seen as
"localhost", even though they were using an IP other than 127.0.0.1.
So, they were local but not using loopback. Reported by The_Myth (#5013).
2017-09-20 15:51:41 +02:00
Bram Matthys 838354f155 UnrealIRCd 4.0.14 2017-09-15 10:23:49 +02:00
Bram Matthys de9216a339 * Please do not use UmodeDel, CmdoverrideDel and any other *Del()
functions from MOD_UNLOAD. [..]
2017-09-15 10:19:55 +02:00
Bram Matthys 217ea69fe8 Use ircs:// link instead of irc:// 2017-09-15 08:24:30 +02:00
Bram Matthys 3de335ea0c Update curlinstall link to use https. Previously this wasn't done
because so many people had a broken system/wget/curl, that is: without
the appropriate trusted CA certificates installed.  If this is still
the case, then: too bad.  People who DO have a proper setup shouldn't
be held back with regards to security by such users.
2017-09-15 08:19:39 +02:00
Bram Matthys 91e108499e Convert remaining http:// links to https:// 2017-09-15 08:19:08 +02:00
Bram Matthys a20dc5f8c1 Use static buffer in cipher_check() like in verify_certificate() - duh. 2017-09-10 16:41:34 +02:00
Bram Matthys e7c7b1daff Don't show draft/sts and other unREQ'able CAP's in "CAP LIST" (only in "CAP LS"). 2017-09-09 12:37:50 +02:00
Bram Matthys 3cbf2536b2 Clarify 2017-09-08 08:26:53 +02:00
Bram Matthys 1f856745e5 4.0.14-rc1 2017-09-08 08:16:21 +02:00
Bram Matthys 366a494c00 Last update of release notes before -rc1? 2017-09-08 08:15:54 +02:00
Bram Matthys 2914695681 We can't prevent all user mistakes, but we can at least prevent some.. 2017-09-08 07:53:20 +02:00
Bram Matthys 461ce8016a Some modes in set::modes-on-connect gave an error. These were
old user modes such as +N and +A that were previously forbidden but
may nowadays be (re-)used by 3rd party modules.
Reported by marco500 (#4980).
2017-09-08 07:39:56 +02:00
Bram Matthys ea974ed018 Update Windows makefile (+SRC/OPENSSL_HOSTNAME_VALIDATION.OBJ) 2017-09-06 16:51:18 +02:00
Bram Matthys 296decf648 This code can be removed now that we have a working verify_certificate().
Also broke LibreSSL (SSL_CTX_get0_param undefined).
2017-09-06 16:49:25 +02:00
Bram Matthys a21222a672 Bump MODDATA_MAX_CLIENT from 8 to 12 and move MODDATA_MAX_* to include/config.h 2017-09-06 16:29:48 +02:00
Bram Matthys 05c6dfbb35 Update release notes 2017-09-06 16:22:13 +02:00
Bram Matthys edb144d570 Update cipher suite to include TLSv1.3 ciphers.
This so upcoming UnrealIRCd version will work with TLSv1.3 whenever it
becomes an official standard and is included in OpenSSL/LibreSSL.
(Verified to work with openssl git master branch)
2017-09-06 16:09:22 +02:00
Bram Matthys a5dbd3aa7c SSL/TLS: Use SNI in outgoing server link. 2017-09-06 14:32:21 +02:00
Bram Matthys b757d2eff0 Show set::sasl-server in '/STATS set'. Suggested by Gottem (#0004997). 2017-09-06 08:44:12 +02:00
Bram Matthys 08bc61ec00 We now refuse to enable SSL/TLS with weak ciphers: DES, 3DES, RC4. 2017-09-06 08:21:14 +02:00
Bram Matthys 959195e7d7 Update Windows makefile to match *NIX objects 2017-09-03 16:27:55 +02:00
Bram Matthys 58ebc9c6be Move previous release notes (4.0.13) to doc/RELEASE-NOTES.old 2017-09-03 16:23:05 +02:00
Bram Matthys 788f628403 Update release notes 2017-09-03 16:22:44 +02:00
Bram Matthys 3510a98e50 Shorten the set::plaintext-policy text. Content was good but it was too long. 2017-09-03 16:10:37 +02:00
Bram Matthys 8fad7c563d Add cap/link-security and cap/plaintext-policy modules. 2017-09-03 16:06:39 +02:00
Bram Matthys 1faa91ed0e Add helper function plaintextpolicy_valtochar(). 2017-09-02 15:49:02 +02:00
Bram Matthys 78695f3eea Permit attaching client moddata to servers (and synch properly, if .synch=1) 2017-09-02 15:47:58 +02:00
Bram Matthys 0da1fdb2d2 Fix possible crash in /STATS due to change from yesterday.
Other than that, some minor style and real things.
2017-09-02 08:27:55 +02:00
Bram Matthys 3ade6c7ecb :D 2017-09-01 18:15:47 +02:00
Bram Matthys 199a7e162d Make new functions more generic and use it from crash reporter so
people with older OpenSSL libraries (and LibreSSL) benefit from
the hostname validation code there as well.
2017-09-01 17:28:49 +02:00
Bram Matthys aa829bce12 New option link::verify-certificate [yes|no]. This will cause UnrealIRCd
to validate the certificate of the link, making sure that:
1) The certificate is issued by a trusted Certificate Authority (CA).
2) The name on the certificate matches the name of the link block.
Some things still need to be done: documentation, more testing, and
using the X509_check_host() function when available.
2017-09-01 17:10:29 +02:00
Bram Matthys ac66a0fe12 Add hostname verification code from ssl conservatory & curl
(will be used in next commit)
2017-09-01 17:02:36 +02:00
Bram Matthys 5ff4fb3f87 Remove old code.. this is already set in link->ssl_ctx by init_ctx().
(tested)
2017-09-01 09:32:51 +02:00
Bram Matthys 6d7be72f2b Remove ssl option 'no-self-signed'. Use 'verify-certificate' instead.
Nobody used this option and it only caused the following confusing
(and potentially insecure) behavior:
Previously if you had 'verify-certificate' enabled then the certificate
would be checked, BUT if it was a self-signed certificate (and thus
not passing verify-cert) it was STILL allowed unless you also
specified the 'no-self-signed' option. This might be correct as per
documentation but is way too confusing for the user.
Now you simply have to choose whether you verify the certificate or
not. No special handling for self-signed certificates.
2017-09-01 08:55:01 +02:00
Bram Matthys 08b621aa08 +Minor issues fixed 2017-08-25 20:38:30 +02:00
Bram Matthys 5cf28d0d46 It was possible to have a block named 'link irc1.test.net' and then get
connected to a server introducing himself as irc2.test.net. This
was rather confusing, of course. Wasn't much of a security issue since
this only happened in outgoing connects and naturally all authentication
need to pass as well.
2017-08-25 20:34:27 +02:00
Bram Matthys bfb3e0847b If you had an unknown link::someunknownitem then UnrealIRCd would not
throw an error. Now it does.
2017-08-25 17:48:54 +02:00
Bram Matthys 74466a4065 Consider any client with the same IP as a listen::ip to be loopback.
This is done for users on shared IRCd shells[*] which may be used to (or
forced to) connect services via their alias IP rather than 127.0.0.1
due to bind restrictions. This, in turn, to ease the transition to
set::plaintext-policy::server deny.
[*] Side-note: The UnrealIRCd team recommends using a VPS and not a
    shared shell, as the latter is considerably less secure.
2017-08-20 10:35:45 +02:00
Bram Matthys d490b0ee3e "No log { } block found -- using default: errors will be logged to 'ircd.log'"
Unfortunately it was then logging to tmp/ircd.log rather than logs/ircd.log
2017-08-19 12:12:06 +02:00
Bram Matthys efb344b9b2 duh. 2017-08-19 12:07:54 +02:00
Bram Matthys 6afbc4ee99 Relative paths for sslclientcerts did not work. This has been fixed
so password "ssl/something.crt" { sslclientcert; }; works OK now.
2017-08-19 12:02:25 +02:00
Bram Matthys bfa00e95b7 Set default plaintext-policy to be 'warn' for /OPER and 'deny' for
server linking. Write some draft release notes for later use.
2017-08-19 11:19:33 +02:00
Bram Matthys 361a354c4b If set::plaintext-policy::user is 'deny' and a non-SSL/TLS-user is
trying to connect then SASL is not advertised.
2017-08-16 19:45:17 +02:00
Bram Matthys d53d46fce4 Add set::plaintext-policy block by which you can warn or deny user connections,
ircop /OPER attempts and incoming server linking attempts from connections
that are not encrypted with SSL/TLS.
Documentation: https://www.unrealircd.org/docs/Set_block#set::plaintext-policy
2017-08-16 19:39:28 +02:00
Bram Matthys 40e3e11b61 UnrealIRCd 4.0.13 2017-08-15 12:12:10 +02:00
Bram Matthys 0b5e46cd23 Fix extban_conv_param_nuh not marked as extern. Reported by Gottem (#4975) 2017-08-15 12:08:11 +02:00
Bram Matthys c8a67f9436 Update curl-ca-bundle to Wed Jun 7 03:12:05 2017. Remove CACERT. 2017-08-15 11:48:48 +02:00
Bram Matthys c7457434c4 .. 2017-08-10 09:37:38 +02:00
Bram Matthys 77f8b9ed5a Build fix for cap/sts on Windows 2017-08-10 09:36:18 +02:00
Bram Matthys 74d5f380dd A /REHASH from a WebSocket connection would cause a crash (requires
IRCOp privileges). This is a rather technical issue, we now simply
reject the rehash. See comments in code for more information.
2017-08-10 09:02:05 +02:00
Bram Matthys 18202a0f73 Fix "ban too broad" checking. Reported by Gottem in #4961.
* The 'ban too broad' checking was broken. This permitted glines such
  as 192.168.0.0/1 being set. Now it rejects CIDR of /15 and lower.
  To disable this safety measure you can (still) use:
  set { options { allow-insane-bans; }; };
2017-08-10 08:30:54 +02:00
Bram Matthys f5b29ed7de Add modules/cap directory to Windows installer. 2017-08-10 07:54:01 +02:00
Bram Matthys 8ccf5700f1 Prepare for 4.0.13-rc1 2017-08-10 07:46:17 +02:00
Bram Matthys d222a18286 Fix "simple" spamfilters being synched as "posix" during server linking.
This was due to lack of TKLEXT2 support in the m_tkl_synch() code.
2017-08-10 07:07:37 +02:00
Bram Matthys 69a2e7d994 Whoops. This code cleanup screwed up STS. Should work now. 2017-08-09 19:11:28 +02:00
Bram Matthys 6c539c8566 Bump Websocket module version to 1.0.0 2017-08-09 18:12:03 +02:00
Bram Matthys 06aa2ad79a Websocket module: don't send CR/LF in outgoing frames and don't require
CR/LF in incoming frames (simply ignore them if they are present).
2017-08-09 18:00:44 +02:00
Bram Matthys ab3e65a76f Load cap/sts module by default (only active if set::ssl::sts-policy is set). 2017-08-09 15:49:03 +02:00
Bram Matthys 455420afc1 SNI-specific sts-policy is now possible. (As recommended by IRCv3 draft spec) 2017-08-09 15:39:52 +02:00
Bram Matthys 0f612a3b30 SNI: Fix for wildcard certificates 2017-08-09 15:20:38 +02:00
Bram Matthys 84776eeeb2 Add support for draft/sts http://ircv3.net/specs/core/sts-3.3.html
Docs: https://www.unrealircd.org/docs/Set_block#set::ssl::sts-policy::port
Example:
set {
    ssl {
        certificate "ssl/server.cert.pem";
        key "ssl/server.key.pem";
        sts-policy {
            port 6697;
            duration 180d;
        };
    };
};
IMPORTANT: Only use this if you know what STS is and what the
implications are. The most important things being A) set a correct
port and B) you need a 'real' SSL certificate and not a self-signed
certificate.

More documentation may follow at another place.
2017-08-09 14:16:03 +02:00
Bram Matthys 1cc6dd3d5b Add Makefile and placeholder module. 2017-08-09 13:30:52 +02:00
Bram Matthys 6500af6ba5 * Use free_ssl_options from generic conf.
* Actually free ssl_options in free_ssl_options.
2017-08-09 13:27:50 +02:00
Bram Matthys ea651384f8 Add groundwork for draft/sts (more to follow)
Module coders:
* The cap->visible(void) callback function is now cap->visible(aClient *)
* There is a new cap->parameter(aClient *) callback function.
* Various updates to subfunctions to pass 'sptr' (due to the above),
  including clicap_find(sptr, ...)
* New CLICAP_FLAGS_UNREQABLE flag
Other:
* There is a new (src/)modules/cap directory containing the sts module,
  well.. once I commit it :D
2017-08-09 13:21:36 +02:00
Bram Matthys b2129205f9 Added support for the "Server Name Indication" (SNI) SSL/TLS extension.
See https://www.unrealircd.org/docs/Sni_block
Requested in #4380 by Eman.
2017-08-09 12:00:04 +02:00
Bram Matthys 590e345b8d ./autogen.sh (see previous commits) 2017-07-07 18:15:47 +02:00
Bram Matthys e6a52ec919 Merge pull request #69 from binki/unreal40-moregitignore
Add src/Makefile (built) to .gitignore
2017-07-07 13:57:27 +02:00
Bram Matthys 0a8cd1347e Merge pull request #68 from binki/without-privatelibdir
Support --without-privatelibdir for packagers.
2017-07-07 13:57:06 +02:00
Nathan Phillip Brink 6591e6bcee Do not try to delete libcares when not using PRIVATELIBDIR. 2017-07-06 06:47:49 +00:00
Nathan Phillip Brink 4edcb9226c Add src/Makefile (built) to .gitignore 2017-07-06 06:19:58 +00:00
Nathan Phillip Brink 2b94733cbe Support --without-privatelibdir for packagers. 2017-07-06 06:11:21 +00:00
Bram Matthys 7b092f7aeb Verify certificate when submitting bug report. 2017-06-19 16:28:50 +02:00
Bram Matthys 0c1f299b0b UnrealIRCd 4.0.12.1 release 2017-06-02 08:56:24 +02:00
Bram Matthys d27d3760c7 CAP NAK not sent for unrecognised CAPs in all cases. Reported by
jwheare (#4958).
2017-06-02 08:22:19 +02:00
Bram Matthys 072d8537b8 Prevent /OPER for oper blocks with non-existant operclass, as doing so
would only be confusing. Reported by Gottem (#4950).
2017-06-02 07:41:44 +02:00
Bram Matthys 7b8f17ef5e Rename variable (no other changes) 2017-06-02 07:33:15 +02:00
Bram Matthys 6c3c55b4e5 Fix new user mode +Z (secureonlymsg) not working properly across
server links. Reported by HeXiLeD (#4953).
2017-05-28 09:41:11 +02:00
Bram Matthys ffc5f0ce44 Update modules.optional.conf 2017-05-13 12:33:37 +02:00
Bram Matthys 2838ef6266 Mark all shipped modules as official (non-3rd-party). 2017-05-13 12:29:05 +02:00
Bram Matthys 50801f5068 Add conf/modules.optional.conf. This loads all additional modules that
are not in modules.default.conf.
2017-05-13 12:24:55 +02:00
Bram Matthys 01687486f0 Bump MAXCONNECTIONS for Windows. Due to FD number assignments this
value needs to be much higher than the number of clients the IRCd
should be able to hold. The new value is 10k which should allow
at least 1-2k clients.
2017-05-12 17:12:18 +02:00
Bram Matthys b86419173a Compile secureonlymsg module on Windows 2017-05-12 17:10:53 +02:00
Bram Matthys bbf33b62dc UnrealIRCd will now refuse to run as root, as promised a couple of versions ago.
https://www.unrealircd.org/docs/Do_not_run_as_root
2017-05-12 11:42:01 +02:00
Bram Matthys 3dc27370a1 Prepare for UnrealIRCd 4.0.12 release. 2017-05-12 11:24:36 +02:00
Bram Matthys 5e378fb02b Since 95% of the crash reports are due to bugs in 3rd party modules we now
have to discourage people with 3rd party modules loaded from blindly
submitting crash reports.
2017-05-12 10:25:45 +02:00
Bram Matthys 0412c86d17 Update OpenFiles on listener close (not very common, but..) 2017-05-10 17:18:47 +02:00
Bram Matthys a6f5460ad8 Update OpenFiles upon failed SSL connect to remote server. Reported by Eman (#4948). 2017-05-10 17:03:45 +02:00
Bram Matthys ee9f8441bc Bump lag for remote MOTD requests. 2017-04-07 20:06:36 +02:00
Bram Matthys 0035cafdba Fix server setting +b even if the ban list is full when using +f.
Reported by NoMiaus (#4906).
2017-03-26 15:48:05 +02:00
Bram Matthys e62ea1dedd Module coders: added two functions to search for user modes:
has_user_mode(acptr, 'i'): returns 1 / 0
find_user_mode('i'): returns the user mode (as 'long')

extern int has_user_mode(aClient *acptr, char mode);
extern long find_user_mode(char mode);
2017-03-26 15:40:36 +02:00
Bram Matthys b6f8ddd456 Fix Jumpserver not working for SSL users due to old #ifdef USE_SSL.
Reported by NoMiaus (#4907).
2017-03-26 15:38:04 +02:00
Bram Matthys 0c6fb46704 Minor code cleanup 2017-03-22 16:32:59 +01:00
Bram Matthys fcaa69157b Fix crash when unloading (not reloading) module that uses ModData (#4903). 2017-03-22 10:51:29 +01:00
Bram Matthys e6a02003f5 Delayjoin (chanmode +D): When people are de-oped we now part 'hidden' users.
Prevents client desynch.
2017-03-22 08:25:03 +01:00
Bram Matthys 4c39648b03 Improve source code (setflags -> oldumodes) 2017-03-20 16:18:43 +01:00
Bram Matthys cd0836572f Fix /mode nick -t and force-rejoin. Reported by NoMiaus (#4901). 2017-03-20 16:17:23 +01:00
Bram Matthys ec9db8fd5f Move match_user() to module (efunc in m_tkl) 2017-03-18 15:00:34 +01:00
Bram Matthys 000f9e10fc 'nocodes' module: also strip/block italic. Suggested by The_Myth (#4898). 2017-03-18 14:50:49 +01:00
Bram Matthys af694e0cbd Fix crash in Windows GUI 2017-03-13 08:30:45 +01:00
Bram Matthys 0963cddd28 Vhosts were not synched correctly during linking. Reported by unic0rn (#4890).
This was not really noticeable on 2 server networks, but in A-B-C linking setups
a vhost of user A would not show on server C.
2017-03-11 10:50:00 +01:00
Bram Matthys abd4296d8e Add support for negative ip/hostmask matching in deny channel / allow channel
and at some other places (any place which uses the 'mask' system).
This allows things like:
deny channel { channel "#help*"; };
allow channel { channel "#help-nolan"; mask !192.168.*; };
allow channel { channel "#help-lan"; mask 192.168.*; };
Similarly in vhost blocks etc etc..
2017-03-10 09:20:15 +01:00
Bram Matthys f65d5fce8b Add new option: set { hide-list { deny-channel }; };
This will hide channels in /LIST that are denied by deny channel blocks
(and not exempt via allow channel blocks).
2017-03-10 08:48:08 +01:00
Bram Matthys 5c417b4235 Fix minor memleak on /REHASH (set::sasl-server) 2017-03-08 17:30:28 +01:00
Bram Matthys 176566962a Add support for 'mask' in allow channel { } and deny channel { }.
This so you can easily add allow/deny channel blocks for IP ranges.
Possibly not so useful for services-networks (ban/akick is very similar)
but has some use on serviceless networks.
2017-03-08 17:28:15 +01:00
Bram Matthys 9dc4e7d31b Windows: shut up warning on certificate generation during installation.
WARNING: can't open config file: c:/libressl/ssl/openssl.cnf
2017-03-08 09:03:03 +01:00
Bram Matthys cb59538309 Fix chanmode +f issue where unsetting parts were not effective.
For example: '+f [5j#i1,5m#m1,3n]:3' and then '+f [5j#i1,5m]:3'
In that case the '3n' was not removed and still effective, as
could be seen by a '/MODE #chan'. Reported by The_Myth (#4883).
2017-03-06 10:05:30 +01:00
Bram Matthys 9252ce30e9 Fix *NIX build (non Mac OS) by backing out all changes of past week. 2017-03-06 09:12:22 +01:00
Travis McArthur 2a4714ea73 Adjust curlinstall 2017-02-26 11:18:38 -08:00
Travis McArthur efdf290bd5 Update curl install run path 2017-02-26 10:30:42 -08:00
Travis McArthur 12aa3289b9 Update Makefile to remove dep on private libs 2017-02-25 16:16:58 -08:00
Travis McArthur 97467d2480 Use LD_RUN_PATH instead of rpath 2017-02-25 16:09:00 -08:00
Travis McArthur 67184f506c Support more mac build types, fix more linux build 2017-02-25 15:51:25 -08:00
Travis McArthur 6f90a0d5f9 Update test used for rpath 2017-02-25 14:11:56 -08:00
Travis McArthur d997ec0576 Update to support mac testing 2017-02-25 13:07:10 -08:00
Travis McArthur b1807ea399 Update Travis-Ci to build OSX and Linux 2017-02-25 12:31:47 -08:00
Travis McArthur fbf715af9b Fix configure script 2017-02-25 10:29:05 -08:00
Travis McArthur 0136ac3c83 Finalize check of rpath option 2017-02-25 10:20:10 -08:00
Travis McArthur d3518eb1ee Fix conditionals 2017-02-25 09:55:29 -08:00
Travis McArthur 9a6ef504d0 Update configure for mac/linux compat 2017-02-25 09:50:22 -08:00
Travis McArthur ca9f2ea82e Update make file 2017-02-25 09:34:48 -08:00
Travis McArthur d8b67e0afb Update configure for mac os compat 2017-02-25 09:30:38 -08:00
Travis McArthur 894ff20ddd Add testing submodules 2017-02-25 02:25:02 -08:00
Bram Matthys 7de81c7aa6 Credit 2017-02-18 14:42:14 +01:00
Bram Matthys c97a3e1903 Add user mode +Z: Only allows SSL/TLS users to private message you.
Based on +R, idea seen on the forums (from Stealth ?)
2017-02-18 14:39:32 +01:00
Bram Matthys 06485a07fb Windows: move service.log to logs\ folder. 2017-02-17 15:55:43 +01:00
Bram Matthys cded56f46a Add timestamp in service.log 2017-02-17 15:55:22 +01:00
Bram Matthys 43921b07ac re-indent this monster 2017-02-17 15:51:13 +01:00
Bram Matthys 2a83066f67 Channel modes were not working. 2017-02-10 22:14:41 +01:00
Bram Matthys 906ab61518 Updates to Windows installer for newer Inno Setup 2017-02-10 15:44:04 +01:00
Bram Matthys 1af75e775c Make Config import stuff from 4.0.10. 2017-02-10 15:35:43 +01:00
Bram Matthys e44fb1d355 UnrealIRCd 4.0.11 2017-02-10 15:34:05 +01:00
Bram Matthys 0b78fa71fc Last minute text addition 2017-02-10 14:40:45 +01:00
Bram Matthys e0130ab0b6 Fix silly crash issue. 2017-02-10 14:28:32 +01:00
Bram Matthys 5fcff0dd90 Make +z in set::modes-on-join work (and auto +Z setting). Reported by FwdInTime (#4841). 2017-02-10 14:24:10 +01:00
Bram Matthys a687ab022b Fix 'MODE yournick +r' being interpreted as 'MODE yournick +s' (#4846). 2017-02-10 13:11:12 +01:00
Bram Matthys 027826d451 Document channel mode +D and remove +u. Reported by FwdInTime (#4839). 2017-02-10 13:07:21 +01:00
Bram Matthys eed722a27c Change wording.. Don't just "consider adding" 6697/ssl. Just tell them to do it.
Also, take the IP from the 6667 port. May help some beginners on shell boxes.
2017-02-08 11:48:15 +01:00
Bram Matthys 84e405ebef Show a warning when there are zero listen { } blocks with SSL:
[warning] Your server is not listening on any SSL ports. It is recommended to listen on port 6697.
[warning] Consider adding this to your unrealircd.conf: listen { ip *; port 6697; options { ssl; }; };
2017-02-08 11:19:01 +01:00
Bram Matthys 35c9c08008 Fix crash if TOPIC_NICK_IS_NUHOST is enabled (crash upon TOPIC set by server) 2017-02-03 08:42:16 +01:00
Bram Matthys b9d84054fd Remote WHO requests have never been supported. Apparently some old or custom
services software send this which cause a crash. Now simply rejecting at
the start of the function.
To services coders: you must maintain client lists/state, not do silly things
2017-02-03 08:29:18 +01:00
Bram Matthys e09da031cc UnrealIRCd 4.0.10 release 2017-01-13 09:12:52 +01:00
Bram Matthys 8d0ac37604 Fix some compatibility handling of GLOBOPS. Reported by Jobe (#4836).
Note that you should actually use SENDUMODE instead.
2017-01-12 09:19:07 +01:00
Bram Matthys c7cb19b52c Whoops :D 2017-01-11 13:37:38 +01:00
Bram Matthys 7ade64385d Websocket: reject oversized pings. Version is now 0.9.3 2017-01-11 13:34:18 +01:00
Bram Matthys 08667134ba Fix lack of deadsock check and error flooding throttling. 2017-01-11 13:20:45 +01:00
Bram Matthys b0af3b71f0 More websocket module fixes. Version is now 0.9.2 2017-01-11 13:19:53 +01:00
Bram Matthys 341378008b Bump version number of websocket module to 0.9.1 2017-01-11 11:46:52 +01:00
Bram Matthys 229ceeb87d Fix a memory leak in websocket module and do some final cleanups. 2017-01-11 11:45:40 +01:00
Bram Matthys 8af0172300 Another delayjoin fix (chanmode +D). Duplicate JOIN for remote user (SJOIN). 2017-01-09 20:11:37 +01:00
Bram Matthys 90508c74ae UnrealIRCd 4.0.10-rc2 2017-01-06 13:35:31 +01:00
Bram Matthys 6067202cdf Rewrite SJOIN to fix a bug where modes were sometimes cut-off resulting
in incorrect bans being added.
2017-01-06 11:11:19 +01:00
Bram Matthys 00142f90e9 Give more clients(/services) a clear hint when they try to connect on an SSL
port but are speaking plaintext (non-SSL).
2017-01-02 16:31:01 +01:00
Bram Matthys e6aa557169 Drop useless 'inline' for textban_replace() 2016-12-31 12:28:02 +01:00
Bram Matthys 5d390811fd UnrealIRCd 4.0.10-rc1 2016-12-31 09:30:12 +01:00
Bram Matthys 61265ec226 Write release notes for 4.0.10-rc1 2016-12-30 21:11:58 +01:00
Bram Matthys 01a86a5133 Include url.h in url.c so DLL exports work on Windows 2016-12-30 20:09:03 +01:00
Bram Matthys bdbddfde97 Load jumpserver and usermodes/privdeaf by default 2016-12-30 20:02:12 +01:00
Bram Matthys 780f3d7637 All my 3rd party modules (from vulnscan.org) are in UnrealIRCd now.
Note that they are NOT loaded by default at this time.
The modules are:
* extbans/textban - +b ~T:censor:*badword*
* usermodes/privdeaf - user mode +D: cannot receive PM's
* antirandom - "randomness" detector against drone attacks
* hideserver - hide servers (not real security, but requested)
* jumpserver - redirect users to another server during maintenance
* m_ircops - show which ircops are online (/IRCOPS command)
* m_staff - show custom file (/STAFF command)
* nocodes - don't just strip/block colors, do the same for reverse/bold/..
The existing README and sample configuration files for these modules
will later be added to the official UnrealIRCd documentation on
https://www.unrealircd.org/docs/Main_Page (just search on the module name).
2016-12-30 19:36:59 +01:00
Bram Matthys bff5e39d67 Fix crash on PART if chanmodes/nocolor module is not loaded or loadmodule
line reordered so nocolor is above m_part. Reported by FwdInTime (#4783).
2016-12-30 16:27:35 +01:00
Bram Matthys 03b74f6163 Include string.h / silence warnings. 2016-12-30 15:30:59 +01:00
Bram Matthys d003f8bfe9 Merge pull request #64 from Adam-/unreal40+remove_unknown
remove_unknown: don't send squits for unknown uids and don't leak server ip in quit message
2016-12-29 21:44:51 +01:00
Bram Matthys 8237592f3e Merge pull request #67 from netjester/netjester-bugfix-4826
Fix (harmless) error message on './unrealircd stop' (#0004826)
2016-12-29 21:40:40 +01:00
netjester 1fc6a0efaf Fix #0004826
Fixes #0004826: ./unrealircd stop always says unrealircd.pid: No such file

https://bugs.unrealircd.org/view.php?id=4826
2016-12-29 17:47:11 +00:00
Bram Matthys 9da4c7e5d0 Added DNSBL check exemption: except blacklist { mask 1.2.3.4; }; 2016-12-29 11:38:49 +01:00
Bram Matthys 1b87d0a20e set::ssl::trusted-ca-file now defaults to conf/ssl/curl-ca-bundle.crt as expected 2016-12-29 11:14:12 +01:00
Bram Matthys cbcbdc656a The 'class' block is now always read before 'allow'. No specific order required anymore. 2016-12-29 10:38:10 +01:00
Bram Matthys aae0971cf4 Add the ability to set specific ssl options in listen blocks and link blocks.
This allows you to for example specify a specific certificate/key on an
serversonly port and in link block (a self-signed 10 year valid certificate)
and use a short-lived (XX day) Let's Encrypt certificate on the other ports.
And several other uses, of course.
2016-12-29 08:37:15 +01:00
Bram Matthys 806d80a947 Fix possible crash (very rare?) on Windows. 2016-12-28 13:29:25 +01:00
Bram Matthys 792ef7294e On Windows the first few lines of logging output always showed Jan 1 1970
(or at least close to it) because timeofday was initialized too late. Fixed.
2016-12-28 10:46:33 +01:00
Bram Matthys 1f1ac6c4ee Less duplicate code: add internal function invisible_user_in_channel()
and remove many calls to HOOKTYPE_VISIBLE_IN_CHANNEL + flag checking.
2016-12-27 20:22:12 +01:00
Bram Matthys 5ac4125c6f Use new user_can_see_member() function at two other remaining places 2016-12-27 20:10:22 +01:00
Bram Matthys 99e087d50c Remove temporary workaround and actually fix stuff in QUIT for delayjoin. Add new function user_can_see_member()... 2016-12-27 20:02:35 +01:00
Bram Matthys 70a6d8be94 Merge pull request #65 from Adam-/unreal40+delayjoin
Some delayjoin fixes
2016-12-27 19:40:21 +01:00
Bram Matthys a1ff9fe2c4 Fix crash if invalid crypt password present in configuration file. Reported by k4be. 2016-12-27 19:31:05 +01:00
Bram Matthys 15842b8290 Added "websocket" module. This module provides support for WebSocket (RFC6455)
so you can use IRC directly from HTML5/JS. It is still considered experimental
but feel free to test it out. To do so, add this to your unrealircd.conf:
loadmodule "websocket";
This module was sponsored by Aberrant Software Inc.
2016-12-24 13:35:37 +01:00
Bram Matthys df5ac9a76c Add some debugging option (NOREMOVETMP). 2016-12-24 13:29:32 +01:00
Bram Matthys 1927575bbd Merge pull request #66 from SaberUK/its-2016-ffs
Remove 'gay' from the bad words list.
2016-12-22 09:00:53 +01:00
Peter Powell 89e265e043 Remove 'gay' from the bad words list. 2016-12-22 01:55:13 +00:00
Adam c5af738273 Fix delayjoin 2016-12-19 17:39:25 -05:00
Bram Matthys 9a8645973c Added set::ssl::options::no-client-certificate
This is really NOT a recommended setting but may be necessary to work around
some browser issues for wss://.
2016-12-16 17:20:27 +01:00
Bram Matthys 1004f414aa Module developers: changed return value handling of HOOKTYPE_RAWPACKET_IN:
Previously <= 0 would stop processing. Now this has changed to:
>0: continue and parse as-is (this was already the case)
0: don't parse but continue reading next packet (if there's any data)
-1: stop parsing, don't read any packets (client may be killed/FLUSH_BUFFER)
2016-12-16 17:13:48 +01:00
Bram Matthys 658cbf04da Compile fixes for Ubuntu 16 LTS (gcc 5.4.x?) 2016-12-14 18:42:12 +01:00
Adam 10c038ffc0 remove_unknown: don't send squits for unknown uids, don't leak server ips in quit msg 2016-12-07 08:19:16 -05:00
Bram Matthys 728bd4ba15 Make WHO support multi-prefix (#4686) 2016-12-05 10:31:30 +01:00
Bram Matthys 6f85ec1452 Cleanup src/Makefile as per ohnobinki's suggestion in #3979. 2016-12-05 10:14:47 +01:00
Bram Matthys daa9260e12 Merge pull request #62 from Adam-/master+svsmoded
Services coders: you can now set "SVSMODE Nick +d" to set the 'deaf' user
mode.  Note that "SVSMODE Nick +d svsidhere" also still works.  This should
be a harmless change, unless some services packages are accidentally trying
to set emtpy svsids like "SVSMODE Nick +d "...  if you do, then the target
nick will be deaf now..
2016-12-05 09:46:34 +01:00
Bram Matthys 65caabbb97 Don't send UID's to old non-SJOIN clients (do we really want to support these? hmm..) 2016-12-05 09:33:13 +01:00
Bram Matthys 41bd7ad4b9 UnrealIRCd 4.0.9 2016-12-03 10:58:49 +01:00
Bram Matthys a3cdb49bc9 Another silly nenobug.. 2016-12-03 10:50:02 +01:00
Bram Matthys 79ed5694b2 split part of read_packet() off to new function process_packet().
This will later be used by a new feature.
2016-11-30 08:18:56 +01:00
Bram Matthys 05220642b3 Installer updates for visual studio 2015 2016-11-19 11:03:11 +01:00
Bram Matthys 32a6b7d4e6 Windows build: rename OPENSSL macros to LIBRESSL and make it that you
now need to specify SSLLIB in your nmake command. This because the
version numbers (libcrypto-38.. etc..) change each libressl version.
2016-11-19 10:30:26 +01:00
Bram Matthys 1e313b2e88 Make UnrealIRCd compile on Visual Studio 2015 (yes, 2012 also still works after this) 2016-11-18 21:00:16 +01:00
Bram Matthys 526de46c07 Travis CI: remove system curl prior to local-curl test. 2016-11-18 15:52:26 +01:00
Bram Matthys 7c8da13da5 . 2016-11-18 15:41:07 +01:00
Bram Matthys ffd661ac7f Travis CI 2016-11-18 15:40:47 +01:00
Bram Matthys 21d0af6e88 Fix protection for system curl without system cares. Was kicking in for local
curl due to use of an old path. At least the new autobuild notified me *just*
in time before I put 4.0.8.4 online.
2016-11-18 15:31:24 +01:00
Bram Matthys ac3a27029c Add FreeBSD to build tests (out of travis ci.. shame). 2016-11-18 15:07:09 +01:00
Bram Matthys 9763956f05 UnrealIRCd 4.0.8.4 2016-11-18 13:56:04 +01:00
Bram Matthys 02fec540a1 Apparently github does not permit irc:// links this way. Whatever. 2016-11-18 13:32:47 +01:00
Bram Matthys 6d541442e9 README updates for github site 2016-11-18 13:26:15 +01:00
Bram Matthys f521387cf6 And local-curl 2016-11-18 12:17:41 +01:00
Bram Matthys 2c83cd7dc4 Travis CI: Set CURLDIR for curl tests 2016-11-18 12:16:13 +01:00
Bram Matthys 6ea4c93324 Do more build tests. Now: defaults, system c-ares, system curl, local curl 2016-11-18 12:07:47 +01:00
Bram Matthys 5c1b742e4d Show build status on github 2016-11-18 12:06:52 +01:00
Bram Matthys 07d799fa51 Multiple build options for Travis CI 2016-11-18 11:46:36 +01:00
Bram Matthys 21f33064cd Re-enable hardening for travis build (disabling didn't work anyway, so..) 2016-11-18 11:21:34 +01:00
Bram Matthys 4fd616f940 Fix build problem on CentOS and others.
Only build main binary with -fPIE, not the modules. It's called Position
Independent EXECUTABLE after all. And apparently not all compilers or
linkers ignore the option if building shared objects (mine did..).
2016-11-18 11:13:50 +01:00
Bram Matthys aa7c60b91b Temp travis CI change to see if it builds at all 2016-11-18 09:35:51 +01:00
Bram Matthys d44f09d1a0 This helps. 2016-11-18 09:26:25 +01:00
Bram Matthys 0e44539853 Travis CI fixes 2016-11-18 09:25:55 +01:00
Bram Matthys 0d554284e7 4.0.8.3 - a release a day, keeps the doctor away. 2016-11-17 10:12:26 +01:00
Bram Matthys 60d14e7dcc Fix broken build --with-system-cares. Specifying this option is no longer useful
as it is the default in 4.0.8+. However, it shouldn't break the build if
specified. Fixed damn silly reversed logic at a few places that caused this...
2016-11-17 10:00:42 +01:00
Bram Matthys 3326af498c 4.0.8.2 (more build fixes) 2016-11-16 11:00:57 +01:00
Bram Matthys 63add50931 Make CARES_LIBS point to new location (was still "-L../extras/c-ares/lib")
(Would only affect people who use system tre and system pcre2 but not system c-ares.)
2016-11-16 10:26:39 +01:00
Bram Matthys c8125c33e1 Fix compile problem if remote includes are enabled and no system curl is available.
We now set LDFLAGS during configure with -Wl,-rpath=/home/xyz/unrealircd/lib so
the curl test won't fail (or more precisely, curl's c-ares test).
Could theoretically fix other issues as well, but could not reproduce.
2016-11-16 10:23:11 +01:00
Bram Matthys 223084858b "More and more and more" 2016-11-14 13:12:04 +01:00
Bram Matthys 1bb90bec50 Fixes for './Config -quick' 2016-11-14 12:50:25 +01:00
Bram Matthys 0733751730 Update relnote 2016-11-14 12:42:10 +01:00
Bram Matthys af4c245e4e Add release note 2016-11-14 12:41:43 +01:00
Bram Matthys 3b2cde48c6 No longer support /home/xyz/curl but use the following instead:
First of all, system-wide curl is much preffered, but if not available
then UnrealIRCd will offer to install curl for you during ./Config.
The prompt looks the same as before but we no longer install the curl
library in ~/curl but rather in ~/unrealircd/lib (or wherever you put
your installation).
Basically, it now behaves exactly the same as c-ares, TRE and PCRE.
Downside: curl will be re-compiled each time you re-run ./Config
Upside: curl will be re-compiled each time... :D.. will thus be kept
more up to date.
**
Also: complain if <curlinstall>/bin/curl-config cannot be found.
This ensures we error after ./Config rather than after the whole of
configure has been ran.
2016-11-14 12:34:45 +01:00
Bram Matthys 388497e592 Bump version to 4.0.8.1. 2016-11-14 11:03:42 +01:00
Bram Matthys 00ad832a59 Update TRE to git version because of FreeBSD build problems with clang 2016-11-14 10:40:39 +01:00
Bram Matthys 8c26cbe7f5 Print decent error if you do ./Config -quick but your settings are too old. 2016-11-14 08:35:25 +01:00
Bram Matthys 7bb6856709 Fix build if you install to somewhere other than $HOME/unrealircd. Reported by acidvegas. 2016-11-11 15:24:43 +01:00
Bram Matthys 094dde3c70 UnrealIRCd 4.0.8 2016-11-11 08:47:36 +01:00
Bram Matthys 84424aac06 Build shared, not static. (Or better, don't use this at all, use system curl) 2016-11-11 08:42:34 +01:00
Bram Matthys 72f7138cfb Make "don't run UnrealIRCd as root" warning even more annoying.
Add wiki link. Later versions will simply refuse to start as root.
2016-11-10 10:25:40 +01:00
Bram Matthys f0015ee639 Usermode +d (deaf) was broken. Clients were still receiving channel messages.
Reported by acidvegas, patch from Gottem (#4764).
2016-11-10 09:09:33 +01:00
Bram Matthys 02d000f051 Release notes: re-word things a little and mention Windows signing. 2016-10-30 14:52:36 +01:00
Bram Matthys 69e651aa40 Running ./autogen.sh helps. 2016-10-30 13:17:43 +01:00
Bram Matthys 2f3c34fe9f Lol. Duh :D 2016-10-30 13:16:45 +01:00
Bram Matthys 45545ac3d2 4.0.8-rc1 2016-10-30 13:04:03 +01:00
Bram Matthys d504fbe04c Send PREFIX= in PROTOCTL to servers (#4772). 2016-10-30 11:56:59 +01:00
Bram Matthys 8e149bd503 Fix potential crash in blacklist module if you have several DNSBLs (#4770). 2016-10-22 09:42:41 +02:00
Bram Matthys abb3e225aa Fix regression caused by 6e4cc3e235 2016-10-21 19:04:03 +02:00
Bram Matthys 23c14e56ad If system-wide cURL is OK for us and user has a previous setting of ~/curl
then change the default value to /usr (or similar) during ./Config and
output a warning.
We do this since system-wide cURL is under almost all circumstances
preferred as it is maintained by your OS/distro and hence receives bug
fixes and security updates on a regular basis (or should, anyway).
Experience shows that ~/curl is rarely kept up to date since "it works".

In the past, many years ago, system wide cURL did not have AsynchDNS.
Nowadays nearly all distros build cURL with some sort of AsynchDNS
which makes things much more useable.
2016-10-21 18:27:01 +02:00
Bram Matthys eabf436c2a Use has_system_cares (=reliable result) rather than with_system_cares (=merely requested). 2016-10-21 18:13:04 +02:00
Bram Matthys ebd6e8e1cd Delete libcares from private lib dir when using system-c-ares. 2016-10-21 17:57:13 +02:00
Bram Matthys f526a485c8 Update configure 2016-10-21 17:51:36 +02:00
Bram Matthys 8859cca6b2 Remove old cares/curl hack. 2016-10-21 17:51:08 +02:00
Bram Matthys c133dfd31e Use system c-ares when available (IOTW: --with-system-cares is the default
and hence we now have --without-system-cares if you don't want this)
2016-10-21 17:46:26 +02:00
Bram Matthys 770bb6ac98 Forgot to commit these files, they belong to the hardening patch. 2016-10-21 17:24:13 +02:00
Bram Matthys 6e4cc3e235 During ./Config when configuring with remote includes support for the first
time (and we need to suggest paths) we no longer suggest ~/curl if system-
curl already provides everything we need.
2016-10-21 17:21:42 +02:00
Bram Matthys d51d23e5cb Until now we refused a build with system-curl without --with-system-cares,
this on the basis that cURL may be using one c-ares version and UnrealIRCd
another c-ares version, something which obviously can lead to failure due
to ABI differences..
Many years have passed since then and cURL is now frequently build with
AsynchDNS support but without the help of c-ares (eg: on Debian). We can
support this configuration without requiring --with-system-cares since
c-ares is not used by cURL and there's no conflict.
2016-10-21 17:15:37 +02:00
Bram Matthys bae1dcf147 For increased security UnrealIRCd is now compiled with several hardening
options by default. This enables full RELRO (GOT and PLT being read-only),
stack protection and address space layout randomization (by enabling PIE,
the actual ASLR is left up to kernel).

Will cleanup some silly stuff later.. and have a go at the libs stuff..
2016-10-20 19:16:18 +02:00
Bram Matthys fd35f965a2 Use dynamic linking for our shipped private libraries (c-ares, tre, pcre2). Work in progress, may revert. 2016-10-20 19:02:55 +02:00
Bram Matthys 9be628450c Moved to https://www.unrealircd.org/docs/Compiling_UnrealIRCd_on_Windows 2016-10-20 09:55:48 +02:00
Bram Matthys 8b21562c37 Replace old reference to use md5, should be bcrypt. + some internal dev stuff (bin/unrealircd -s) 2016-10-19 18:38:07 +02:00
Bram Matthys 2d09d18135 Remove some unnecessary stuff to shave 1Mb off our download (PDF developers documentation in c-ares) 2016-10-09 09:40:46 +02:00
Bram Matthys 7e05a29aca ** 4.0.7 ** 2016-10-09 09:25:12 +02:00
Bram Matthys 4e71b31a29 Update curl-ca-bundle to certificate data from Mozilla as of Sep 14 03:12:05 2016 plus CACERT 2016-10-09 09:22:44 +02:00
Bram Matthys 338d874f75 Module coders: fix silly long-standing bug in MOD_LOAD/MOD_UNLOAD so you can use 'modinfo' again, just like you already could in MOD_INIT. 2016-10-03 16:01:23 +02:00
Bram Matthys b9c5254e2b Merge pull request #57 from binki/unreal40-gitignore
Add editor and ./autogen.sh-generated files to .gitignore.
2016-10-01 11:50:56 +02:00
Bram Matthys 11a510843b Import config settings/modules from earlier versions 2016-10-01 11:48:11 +02:00
Bram Matthys 6d63b39d93 +* Windows: remote includes now support IPv6 2016-10-01 11:29:07 +02:00
Bram Matthys 52df9937be Re-indent / conform to existing code style 2016-10-01 10:20:01 +02:00
Bram Matthys 5bc9b63855 Delayjoin (+D): JOIN user before message and not after. 2016-10-01 10:15:04 +02:00
Bram Matthys 2eafff6a51 On Windows cURL is now built with IPv6 enabled, so use updated library path 2016-10-01 09:46:48 +02:00
Bram Matthys e8272e28c2 Updates for LibreSSL 2.5.0 (hmm should be moved to build options I guess) 2016-10-01 09:45:34 +02:00
Bram Matthys 58f4690b03 Don't overwrite the conf files from #4755 on Windows either. 2016-10-01 08:54:01 +02:00
Bram Matthys 1cd0cdcd18 Use Windows' _stricmp/_strnicmp 2016-10-01 08:50:48 +02:00
Bram Matthys f2d21943fe Bump version to 4.0.7-rc1 2016-09-30 15:53:36 +02:00
Bram Matthys 7aaf14c138 Show PCRE2 version on ./unrealircd start and in /VERSION on IRC if oper. 2016-09-30 15:42:19 +02:00
Bram Matthys fbde68ef4a Update pcre2 library from 10.21 to 10.22 2016-09-30 15:31:08 +02:00
Bram Matthys 74ea7af9b7 Upgrade c-ares library to 1.12.0. Add CPPFLAGS support. 2016-09-30 15:23:34 +02:00
Bram Matthys ea3ac462d1 Don't overwrite spamfilter.conf, badwords.conf and dccallow.conf during
'make install'. Reported by ivanp (#4755).
2016-09-30 13:41:44 +02:00
Bram Matthys 64b5d89a98 Remove support for CHROOTDIR, IRC_USER and IRC_GROUP as these caused too much
code clutter and was broken anyway (especially CHROOTDIR)...
For a CHROOTDIR replacement we suggest using AppArmor, SELinux, FreeBSD jails, ..
For a IRC_USER/IRC_GROUP replacement you can use start-stop-daemon or similar.
2016-09-29 20:12:28 +02:00
Bram Matthys 603adb8ec2 Fix "dh" setting requiring absolute path. Reported by capitaine (#4738). 2016-09-29 19:17:49 +02:00
Bram Matthys a7f98af6ed ./Config may show an empty SSL prompt. Reported by ohnobinki (#4749). 2016-09-29 19:11:31 +02:00
Bram Matthys ee97298f4d Fix bug in duplicate ban detection. With +b ~r:xyz you could not set +b ~R:xyz,
reported by ShaneDiamond (#4712). We now have special handling for extbans.
2016-09-29 19:02:19 +02:00
Bram Matthys b4306842b2 Remove SOCALLEDSMARTBANNING config.h option which nobody uses anyway (for good reasons) 2016-09-29 19:01:48 +02:00
Bram Matthys 490abc76c1 Fix crash due to commit from yesterday 2016-09-27 07:37:09 +02:00
Bram Matthys 2de0c4ec80 Use server-side cipher selection and set a reasonable default ciphersuite list
taking into account compatibility with older clients. See the wiki/docs article
https://www.unrealircd.org/docs/SSL_Ciphers_and_protocols for more information
2016-09-26 16:03:24 +02:00
Bram Matthys 9203ee1748 set::ssl::server-cipher-list is now called set::ssl::ciphers (old name still works too) 2016-09-26 15:01:54 +02:00
Bram Matthys 4fe7203091 Use cipher list for connections to other servers as well 2016-09-26 14:58:16 +02:00
Bram Matthys 7f703d8991 Add the ability to enable/disable TLS versions via set::ssl::protocols
Accepted values are: All (enable all), TLSv1, TLSv1.1, TLSv1.2
You can use + and - modifiers, in fact you are encouraged to.
Example: set { ssl { protocols "All,-TLSv1,-TLSv1.1"; }; };
This will only allow TLSv1.2 at time of writing, and later whenever
TLSv1.3 is released it will allow TLSv1.2 and TLSv1.3.
Note that 'SSLv2' and 'SSLv3' do not exist, as UnrealIRCd 4.x never
supported these old versions (and never will).
2016-09-26 14:47:45 +02:00
Bram Matthys bbca690d48 Fix issue with instable SSL connections on FreeBSD (especially server links)
Reported by CoreDuo and weekend (#4720). Thanks weekend for providing a shell
to debug this issue.
2016-09-26 10:26:47 +02:00
Bram Matthys a9db5b8981 DEBUGMODE: improve freebsd kevent debug messages 2016-09-26 10:23:00 +02:00
Bram Matthys f71b173f07 Turn DEBUG_IOENGINE off by default (and move to include/config.h) 2016-09-17 10:06:33 +02:00
Bram Matthys 6a9b32344e Grr forgot a version bump at place nr two in configure 2016-09-03 23:27:57 +02:00
Bram Matthys 6a812924da UnrealIRCd 4.0.6 2016-09-03 20:12:05 +02:00
Bram Matthys f473e355e1 Fix AUTHENTICATE bug 2016-09-03 20:08:21 +02:00
Nathan Phillip Brink 3ab7eb23a0 Add editor and ./autogen.sh-generated files to .gitignore. 2016-08-14 03:14:31 +00:00
Bram Matthys ae0fc98a04 small note ;p 2016-07-28 20:02:32 +02:00
Bram Matthys 26d343861a Fix mass zlining due to "Flood from unknown connection". The limit was specified in Kb rather than bytes, so the pre-registration sendq limit was 4 bytes. Duh. Thanks Digerati & Gottem for the report :D 2016-07-28 19:58:35 +02:00
Bram Matthys e586b5457c * Prevent flood from unknown connection 2016-07-28 15:09:47 +02:00
Bram Matthys be02467b41 UnrealIRCd 4.0.5 release 2016-07-28 14:22:16 +02:00
Bram Matthys 73ec3e3305 Fix IPv6 ban bug + fix a crash bug 2016-07-28 14:15:09 +02:00
Bram Matthys 8873179974 4.0.4 release (:D) 2016-06-26 18:50:49 +02:00
Bram Matthys e26190f80b Fix-for-fix 762c39eb0d 2016-06-26 18:45:45 +02:00
Bram Matthys 0aea33a5a7 Initialize to zero please. Fixes valgrind warnings too. 2016-06-26 18:06:56 +02:00
Bram Matthys 265250bcc1 Fix crash if you try to listen on port 0. (#4707) 2016-06-26 15:19:49 +02:00
Bram Matthys b444116c12 Use exact struct type & remove unnecessary casts. 2016-06-26 15:08:55 +02:00
Bram Matthys 72e089f784 Remove space in KILL log message. 2016-06-25 09:33:34 +02:00
Bram Matthys f30251205f Fix #4702: Pre-Registration VERSION Duplicate Replies (005 AND 105) reported by Jobe. 2016-06-23 20:19:06 +02:00
Bram Matthys 5f232da4bb Fix bug where files { } block only worked with absolute paths. Reported by kwe (#4691). 2016-06-11 20:28:27 +02:00
Bram Matthys 7c1a192709 Prevent installing in the same directory as source (#4697). 2016-06-11 20:22:18 +02:00
Bram Matthys 60e10bb963 Fix possible problem with delayjoin not always JOIN'ing people on +vhoaq.
Tech: MODE_EXCEPT and MODE_INVEX and had a parameter=0 count in cFlagTab
causing parse_chanmode() not to eat the 'e' and 'I' parameters. Thus
causing the wrong parameter (target) to be returned by parse_chanmode().
2016-05-28 11:53:30 +02:00
Bram Matthys 993b5bc721 The HOOKTYPE_PACKET validation code is wrong, making the hook unusable. 2016-05-23 11:26:54 +02:00
Bram Matthys 12f61450d8 Update IT translation (by Francesco) 2016-05-23 11:25:45 +02:00
Bram Matthys 8ddf0a8762 Remove (now) confusing comment regarding local/remote struct members in aClient 2016-05-22 20:11:50 +02:00
Bram Matthys 762c39eb0d Windows: when UnrealIRCd fails to start due to a configuration error apparently some
users didn't read and close the error screen. Instead they hit the "rehash" command
from the sytem tray and this would crash UnrealIRCd. From now on if you do that a
messagebox will show up saying you should pay attention to the error screen ;)
2016-05-22 19:42:42 +02:00
Bram Matthys 2c25833e19 Change numeric 448 text from "Channel is forbidden: [reason]" to "Cannot join channel: [reason]". Inspired by PR from SketchNI. 2016-05-22 16:13:59 +02:00
Bram Matthys f2f63c29e5 Send error message when /SAMODE is used with a non-existent target. Reported by bonnedav (#4556). 2016-05-22 16:08:31 +02:00
Bram Matthys 12c739b806 Reindent 2016-05-22 16:03:56 +02:00
Bram Matthys e6d2fab103 Merge pull request #56 from dboyz/fix1
Fix SQUIT documentation, send ERR_USERSDONTMATCH when trying to change modes for other users, fix some typos, remove old HTM stuff. Resolves #2549, #3691 and more.
2016-05-22 16:01:36 +02:00
Bram Matthys 095330aa36 No infinite loop when operclass::parent is not found. Reported by Digerati and dboyz (#4683).
Should add code in config-tester for this to prevent this in the first place, though..
2016-05-22 15:56:51 +02:00
Bram Matthys ccf1d0e41c Re-indent only. No changes. 2016-05-22 15:54:01 +02:00
Bram Matthys 67c998dc9f Adding a GLINE or KLINE on usermask@ did not have any effect. Reported by soretna (#4680).
Tizen, DBoyz and Valdebrick helped tracing the issue.
Removed MATCH_USE_IDENT since it had no useful purpose.. for all cases one has to check identd first and then non-identd anyway.
2016-05-22 15:44:28 +02:00
Bram Matthys 6d14c95f77 Added help.it.conf 2016-05-19 09:06:08 +02:00
Bram Matthys 78f9c8cff4 Update header (UnrealIRCd 4!) and credits. 2016-05-19 09:05:34 +02:00
Daniel Tan 48e2d2aab3 Remove remaining Htm codes 2016-05-12 16:57:32 +08:00
Daniel Tan b2a00948a3 config.h: Minor typo fix 2016-05-11 16:01:37 +08:00
Daniel Tan d5c6c545cb m_mode.c: Send ERR_USERSDONTMATCH when trying to change modes for others (#3691) 2016-05-10 15:28:06 +08:00
Daniel Tan c16be8f431 help.conf: Fix syntax and example for SQUIT (#2549) 2016-05-09 17:28:25 +08:00
Bram Matthys 51b52f1767 Merge pull request #49 from grawity/ssl
Add an option to hide the notices about TLS parameters and fingerprint (set::options::no-connect-ssl-info)
2016-05-09 10:11:55 +02:00
Bram Matthys 64839a6304 Fix typos ("succes" -> "success"). Patch from GLolol. Original patch from theRoda. 2016-05-09 10:01:20 +02:00
Bram Matthys d1d4f6d430 Fix: when doing /VERSION on IRC as an IRCOp it showed the compile-time OpenSSL/LibreSSL version rather than the runtime version. 2016-05-03 19:32:10 +02:00
Bram Matthys e4d9a5dd43 Text changes 2016-04-24 10:28:54 +02:00
Bram Matthys 089009e121 Bump version to 4.0.3.1: fixes freebsd/openbsd compile problems. 2016-04-24 10:24:40 +02:00
Bram Matthys a886c1ebc6 Check for and include sys/wait.h. Fixes compile problem on OpenBSD (#4663). 2016-04-23 09:55:58 +02:00
Bram Matthys 4ec22ed37b Update release notes 2016-04-16 12:57:13 +02:00
Bram Matthys bcb66894ed 4.0.3 2016-04-16 11:41:40 +02:00
Bram Matthys 493cd647ee Make the upgrade thing actually work if you are upgrading from 4.0.1 & 4.0.2 too -- not just 4.0.0. 2016-04-16 11:38:43 +02:00
Bram Matthys d36988269d Remove RPING 2016-04-16 11:37:00 +02:00
Bram Matthys 8199b26137 Update PCRE2 from 10.20 to 10.21 2016-04-04 16:10:11 +02:00
Bram Matthys 0966e5f859 4.0.3-rc1 2016-04-04 16:03:27 +02:00
Bram Matthys ee79ccea45 Improve bind-ip error message @ link 2016-04-04 13:23:50 +02:00
Bram Matthys 820344f49f Fix crash on Windows upon bind error (eg: incorrect link::outgoing::bind-ip) 2016-04-04 13:23:15 +02:00
Bram Matthys 1474e5d7e2 Crash reporter on Windows: submit minidumps (~300k) 2016-04-04 13:02:40 +02:00
Bram Matthys 1a601bec83 Windows: More useful minidumps
(small one: MiniDumpWithIndirectlyReferencedMemory, big one: MiniDumpWithPrivateReadWriteMemory)
2016-04-04 12:29:39 +02:00
Bram Matthys 9f4496b6a6 Let crash reporter upload core files and binaries on *NIX. Should help
a lot since many people don't have gdb installed, which caused us to
receive reports with just 'gdb: command missing' as a stack trace.
(#4603)
2016-04-04 11:08:54 +02:00
Bram Matthys 2eda1cb285 Windows... 2016-04-03 20:13:58 +02:00
Bram Matthys 89eaa72a8e Windows: if we crash, produce a better stack backtrace. 2016-04-03 19:58:12 +02:00
Bram Matthys db62117f2b Windows: terminate more aggressively when you close UnrealIRCd. 2016-04-03 17:50:57 +02:00
Bram Matthys 67dfa094a7 Windows:
* Updates to make UnrealIRCd use LibreSSL
* Fix HTTPS support in cURL
* Forgot to ship curl-ca-bundle.crt
(Note: all 3 points from above only affect Windows)
2016-04-03 15:55:09 +02:00
Bram Matthys 8d562ededb Remove support for EGD (Entropy Gathering Daemon). Nobody uses this and it only causes issues with LibreSSL. 2016-04-03 15:15:12 +02:00
Bram Matthys 8527f8720b Updates to build with VS2012 / Windows SDK 7.1a 2016-04-03 14:13:24 +02:00
Bram Matthys f95aa13d5b Send RPL_SASLMECHS to clients (#4253, patch from grawity) 2016-04-03 11:53:59 +02:00
Bram Matthys 975996a702 Merge pull request #51 from grawity/sasl-external
Implement SASL EXTERNAL support
2016-04-03 11:44:58 +02:00
Bram Matthys 5d7d957246 Match new defaults with example conf. 2016-04-03 11:40:29 +02:00
Bram Matthys 54ebe14f99 Merge pull request #50 from grawity/defaults
Reduce required settings
2016-04-03 11:40:02 +02:00
Bram Matthys fb26d7ee12 Fix NULL pointer crash on invalid link block, such as link::port without value. (#4617) 2016-04-03 10:29:30 +02:00
Bram Matthys f98a5e69dc When: 1) IPv6 functionality is enabled, and
2) link::outgoing::bind-ip is an IPv4 address, and
3) link::outgoing::hostname is a hostname, and
4) this hostname has both A and AAAA records,
then connect by IPv4 only, which is what the user expects (#4615).
2016-04-03 09:55:51 +02:00
Bram Matthys 8da3e3e1bc Two small changes to improve crash reports from Windows users. 2016-03-11 15:44:08 +01:00
Bram Matthys 93afec781b UnrealIRCd 4.0.2 release 2016-03-11 14:30:58 +01:00
Bram Matthys eef1308888 Fix another Windows warning. 2016-03-11 14:25:00 +01:00
Bram Matthys 3389a99ae1 Get rid of some warnings on Windows (use more CMD_FUNCs & externs for it). 2016-03-11 14:22:07 +01:00
Bram Matthys 28a1fca8dc Move kevent errors to DEBUGMODE until Travis has time to debug these... 2016-03-11 14:07:43 +01:00
Mantas Mikulėnas e818ab1a16 Add an option to hide the notices about TLS parameters 2016-03-09 00:25:33 +02:00
Mantas Mikulėnas a3493a9e0c Provide a default set::maxchannelsperuser = 10
Based on what example.conf has.
2016-03-09 00:25:05 +02:00
Mantas Mikulėnas 5e9a74f0fd Do not require set::services-server
Some places were already treating it as optional.
2016-03-09 00:25:05 +02:00
Mantas Mikulėnas 1121172418 Provide a default set::hiddenhost-prefix = "hidden" 2016-03-09 00:25:05 +02:00
Mantas Mikulėnas 6c1e9fc63b m_sasl: Send user IP address to services
The user is not 'registered' yet at this point, so manually inform
services of their IP address (the syntax is "H <realhost> <ip>").

Services might use this when informing the user of failed auth attempts,
or when ratelimiting bruteforce.
2016-03-09 00:22:58 +02:00
Mantas Mikulėnas b68befc29a m_sasl: Send certfp for SASL EXTERNAL 2016-03-09 00:15:43 +02:00
Bram Matthys cafb08446f Fix ./Config script error caused by a change from January 24, 2016. 2016-03-07 11:16:32 +01:00
Bram Matthys 6f365747cb Permit multiple except throttle::mask's. Reported by blank (#4592). 2016-03-07 11:03:21 +01:00
Bram Matthys 1dacddc944 Interim update 2016-03-04 14:00:13 +01:00
Bram Matthys caa5eba30f Move blacklist hits to snomask +b (new) rather than notifying all ircops.
This snomask is set by default but this can be overridden via
set::snomask-on-oper or oper::snomask. Suggested by hayek (#4566).
2016-03-04 13:50:55 +01:00
Bram Matthys 4cad9cb0c5 SERVER parser error causing uplinks to show bad server description, reported by and patch from OUTsider (#4576).
Patch used only with minor changes: one %i should have been %s, some annoying (char *) casts removed which existed in the original code as well, moved 'tmp' variable, collapsed NULL initalization, ..
2016-03-04 13:27:42 +01:00
Bram Matthys 6307224d89 Update set::modes-on-join restrictions to reflect current status (and be a bit more liberal). Reported by dboyz (#4584). 2016-03-04 13:11:35 +01:00
Bram Matthys bf1e1502ba Use #include "unrealircd.h" in all modules (#4516). 2016-03-04 13:02:06 +01:00
Bram Matthys da9a1be85b set::prefix-quit was not working, reported by capitaine (#4586). 2016-03-04 12:40:26 +01:00
Bram Matthys 99c3fd3c36 Mistake caused by commit from yesterday, strlcpy arguments have always been very logical... 2016-03-02 14:12:30 +01:00
Bram Matthys fa7acafb78 Update release notes a little 2016-03-02 13:46:46 +01:00
Bram Matthys 2f7543f846 Fix NULL pointer crash if sending malformed server-to-server traffic,
in this case an incorrect IP in USER (#4553). Probably someone trying
to write their own services.
2016-03-02 13:44:56 +01:00
Bram Matthys 1e25578c42 Add ability to hide quit messages of *LINEd users. Suggested by Aubrey, patch mostly from Zoddo (#3993). 2016-02-29 14:22:49 +01:00
Bram Matthys d540d65251 Add include for badwords.h to unrealircd.h 2016-02-29 14:00:56 +01:00
Bram Matthys 942f87d886 Merge pull request #43 from fduchene/patch-1
Allow shunned users to use the PING command (not to be confused with CTCP PING)
2016-02-29 13:56:44 +01:00
Bram Matthys 8c53075c92 Merge pull request #47 from blank4/unreal40
Use #include "unrealircd.h" in more files (#4516)
2016-02-29 13:51:01 +01:00
Bram Matthys 9b84f057ab Merge pull request #48 from Adam-/unreal40+svsmodeuid
svsmode: Don't show user their uid in MODE
2016-02-29 13:48:29 +01:00
Adam 2ae7fc2ef6 svsmode: Don't show user their uid in MODE 2016-02-12 09:52:30 -05:00
Bram Matthys d8ffeefd92 Free moddata also for non-clients. 2016-02-03 11:33:40 +01:00
Bram Matthys f7dd3cedd8 Fix minor linking bug which permitted a server to link in which used me::name, IF you had a link block for it. Reported by vNode1 (#4559). 2016-01-31 20:46:52 +01:00
Bram Matthys 0905936622 Merge branch 'unreal40' of github.com:unrealircd/unrealircd into unreal40 2016-01-30 10:46:45 +01:00
Bram Matthys 9f4bd7228a Logging to "syslog" was broken. It was creating a log file called "syslog" instead.
Reported by magic000 (#4562).
2016-01-30 10:45:57 +01:00
Travis McArthur cbf8f9f265 Update Config to use Homebrew OpenSSL by default 2016-01-23 15:04:41 -08:00
Bram Matthys 4d0dbd40c4 Mention MOTD in example.conf and refer to new wiki article. 2016-01-20 10:55:15 +01:00
Bram Matthys 51ef387e89 Some services send SVSJOIN & SVSPART from a user source. Has no benefit in UnrealIRCd but we'll allow it since it was permitted before. 2016-01-15 18:08:12 +01:00
Bram Matthys c6a48bd6be Forgot to bump version number at one of the X places. 2016-01-13 18:33:59 +01:00
Bram Matthys 8357457b7e Fix m_uid not handling collissions of 'unknowns'. 2016-01-13 16:38:09 +01:00
blank4 a225a93800 use #include "unrealircd.h" in modules/usermodes 2016-01-13 11:39:46 +00:00
blank4 4153df7f8f use #include "unrealircd.h" in modules/chanmodes 2016-01-13 11:38:21 +00:00
blank4 c297237a1b Merge remote-tracking branch 'refs/remotes/unrealircd/unreal40' into unreal40 2016-01-13 11:32:31 +00:00
Bram Matthys c5620687c8 Grmpf. 2016-01-13 12:30:30 +01:00
Bram Matthys c9bd3b7982 Bump version to 4.0.1. 2016-01-13 12:11:09 +01:00
Bram Matthys 9fa1b0df43 upd notes 2016-01-13 11:48:40 +01:00
Bram Matthys b3c371ddf4 Add './unrealircd reloadtls' to reload SSL/TLS certificates and keys.
Suggested by Bob_Sheep (#4537) to aid the usage of Let's Encrypt.
Note that this is the same as doing '/REHASH -ssl' on IRC.
2016-01-13 11:37:17 +01:00
Bram Matthys 70a12d154d update notes 2016-01-13 10:36:23 +01:00
Bram Matthys 434e51f69d Fix crash when listen block was removed while it had connected clients on that port. Reported by AnGeLoCaDuTo (#4544).
There were a few flaws in the code: 1) it should close the listener on /rehash,
shouldnt't matter if there are clients or not, 2) then there was a bug where it
would properly close the listener but it would be re-opened by add_listener2.

Also added a "IRCd no longer listening on .." message if you remove a listen block.
2016-01-13 10:30:07 +01:00
Bram Matthys bf06e0825c Delete pidfile on shutdown (warg, #3994). 2016-01-11 18:22:12 +01:00
Bram Matthys 8aa655df3a Remove server wildcard examples from help.conf, reported by GLolol (#4482). 2016-01-11 18:15:25 +01:00
Bram Matthys 916407a453 Add a warning regarding possible allow block silliness. 2016-01-06 11:49:38 +01:00
Bram Matthys 92cf4b24fc Update release notes a bit for later.. 2016-01-04 19:36:27 +01:00
Bram Matthys 3ca644dc9a /MODULE will now only list 3rd party modules by default since that's what most people are interested in.
You can still see the full list of loaded modules by using "/MODULE -all".
Also fix /MODULE <server>, this was broken in earlier versions by nen.... you know who.
2016-01-04 12:54:06 +01:00
Bram Matthys ce7fd99019 Windows: if UnrealIRCd fails to start and an error window is displayed then right-clicking the tray icon can cause a crash. Reported by westor (#4509). 2016-01-04 11:21:31 +01:00
Bram Matthys 293af0bc21 Use #include "unrealircd.h" -- gets rid of warning. 2016-01-03 12:22:33 +01:00
Bram Matthys dd31542e2c Use UID's in MD commands. Add functions / remove duplicate code. Modularize various functions
in src/moddata.c (move them to src/modules/m_md.c as per TODO). Looks good but more testing warranted.
2016-01-03 12:18:55 +01:00
Bram Matthys 3a93c887e4 Use UID's in MD (ModData). 2016-01-03 10:39:25 +01:00
Bram Matthys 208f4a504b SSL Fingerprint wasn't broadcasted correctly to other servers. For Unreal this only affected WHOIS since
extban +e/+I ~S:xxx worked fine (only checked locally). But this also prevented services from being
informed, IOTW: services could not make use of this new certfp feature yet.
2016-01-03 10:28:15 +01:00
Bram Matthys b7a1d50d94 Fix MODE broadcast being screwed up if sender was a server and it contained a timestamp.
Someone changed an %s %lu to %s%lu so ':se.rv.er MODE #test +o Dummy 1444444443' became
':se.rv.er MODE #test +o Dummy1444444443' (missing space).
Re-indent code a little..
2016-01-02 10:51:21 +01:00
Bram Matthys 7610fbcea2 /STATS P (port): Show whether the listener is IPv4 or IPv6. Improve rest of the output as well. 2015-12-29 20:18:14 +01:00
Bram Matthys 655fafcf4e Update helpop on new UnrealIRCd 4 extbans: operclass (~O) and certfp (~S). 2015-12-29 19:51:48 +01:00
Bram Matthys 3ec4cfb2b8 *NIX: Fix ./unrealircd [rehash|stop|restart] not working if you install to somewhere other than ~/unrealircd/, it always said "UnrealIRCd is not running". Reported by Hawk and SmashingX (#4520). 2015-12-29 11:24:53 +01:00
Bram Matthys 34b9797ffc Add buildvarstring() function and make blacklist module support %ip and %server variables in reason field. Suggested by blank (#4507). 2015-12-28 19:03:05 +01:00
Bram Matthys 5ed4492db7 Fix /LIST not showing 0 user channels on mIRC ("LIST <10000"), reported by ctcp (#4517). 2015-12-28 17:36:39 +01:00
Bram Matthys a67d661d36 Fix server linking if link::outgoing::hostname is a CNAME. Reported by pchevee (#4518). 2015-12-28 17:23:29 +01:00
Bram Matthys d41d7bdc46 Suggest cron job in 'make install' 2015-12-28 15:11:51 +01:00
Bram Matthys db70f68f5e Fix module description. Reported by DBoyz. 2015-12-28 15:11:33 +01:00
Bram Matthys 75658591cd An incorrect set::anti-flood::nick-flood setting causes an error message regarding away-flood... rather confusing. 2015-12-28 14:42:19 +01:00
Bram Matthys 7fe85636cf Remove *NIX-specific line re upgrading from Windows version. 2015-12-26 17:03:41 +01:00
Bram Matthys ed082e6265 Remove configure references to old cron script/file 2015-12-26 16:06:14 +01:00
Bram Matthys 3428528684 Add "./unrealircd croncheck" which will start UnrealIRCd if it isn't running and bail out quietly otherwise. This can be used from *surprise!* crontab. The old broken cron script has been removed. (#4508) 2015-12-26 16:00:23 +01:00
Bram Matthys 01aa08c7af /CHGHOST resulted in multiple 'xyz is now your displayed host' messages. Reported by vNode1 (#4505). 2015-12-25 11:43:01 +01:00
Bram Matthys bf516646ec Final touch? 2015-12-24 18:03:14 +01:00
Bram Matthys 067e5bdfce Mention Modules forum in release notes. 2015-12-24 18:01:09 +01:00
Bram Matthys 1bde97174d Change wording re self-compiling windows version a bit. 2015-12-24 14:13:42 +01:00
Bram Matthys c9a21708b0 Update ./Config 2015-12-24 14:05:07 +01:00
Bram Matthys 98b13429a5 Update version to 4.0.0 2015-12-24 14:04:04 +01:00
Bram Matthys ce290f7a9a Remove 3.2.x stuff. Text will change post-release. 2015-12-24 13:04:41 +01:00
Bram Matthys 319f06f0b1 Some last changes to example conf: maxperip default 3, gencloak command, mention forums as support resource. 2015-12-24 13:03:03 +01:00
Bram Matthys d68f63b5fe If an oper whois'ed an oper who didn't use /OPER but OperServ to become oper then the IRCd would crash when trying to resolve the oper login name. Clear, right? 2015-12-18 11:29:30 +01:00
Bram Matthys 06b07e30dc Bump version to 4.0.0-rc6 2015-12-16 13:27:33 +01:00
Bram Matthys 829af871bf Fix empty hostname issue. This off-by-one was caused by "security enhancements" from nenofrienfrien. Thank you very much. 2015-12-16 13:13:09 +01:00
Bram Matthys 6178ca1c6f Fix memleak if you had swhois titles on oper / on vhost / .. 2015-12-16 11:30:19 +01:00
Bram Matthys 4c2323e1a3 Now at the right place.. 2015-12-16 11:22:58 +01:00
Bram Matthys b9a3e54eb7 Fix memory leak (~12 bytes per connect) 2015-12-16 11:13:36 +01:00
Bram Matthys 1ef38b242c Change expiry time of self-signed SSL cert generated by makecert.bat from 1yr to 10yrs to match *NIX Makefile. 2015-12-16 11:00:33 +01:00
Bram Matthys 49384b8903 The 'unrealircd' script was missing if you installed to a directory other than ~/unrealircd. Reported by staticfox. 2015-12-13 15:45:13 +01:00
Bram Matthys fd40bed05f Remove #define EXPERIMENTAL. I'm sure I'll forget about this later otherwise.. 2015-12-13 09:28:31 +01:00
Bram Matthys 3c2c66b168 Give OpenSSL <1.0.0 users a small hint. 2015-12-13 09:21:18 +01:00
Bram Matthys dd50463126 Make extban ~n (nickchange) not apply to voiced users, like in 3.2.x. This was an unintentional change. 2015-12-13 08:22:58 +01:00
Bram Matthys 377ce40ef8 Fix CAP REQ not working with multiple arguments. 2015-12-12 15:28:21 +01:00
Bram Matthys 200ea0e0b2 Channel mode +L and +f were missing in 005 CHANMODES=. Reported by DBoyz. 2015-12-11 12:15:06 +01:00
fduchene ca87684d7f Allow shunned users to use the PING command
When a user is shunned (eg /tempshun user ), the command PING cannot be used (PONG can so answer server PING).
Some clients like irssi are using PING  command to compute the server lag, so when an irssi user is shunned, the lag displayed in irssi start ton increase, giving a way ton know if he is shunned.
After 320 sec of lag, irssi will reconnect, bypassing automatically the tempshun.
2015-12-10 17:54:33 +01:00
Bram Matthys 7f07c3f71b Bump version to 4.0.0-rc5 2015-12-09 20:02:30 +01:00
Bram Matthys f04e95376b /LIST never finished if more than 50-100 channels (#4473). Oh neno... does it ever stop? 2015-12-09 19:42:50 +01:00
Bram Matthys 5b50f080dd Update curl-ca-bundle.crt to: Certificate data from Mozilla as of: Wed Oct 28 22:42:42 2015 (+CACERT) 2015-12-09 19:09:31 +01:00
Bram Matthys 76338b4780 For nick collision #define ASSUME_NICK_IN_FLIGHT. This (only) does a little better, the real fix is to run a 100% UnrealIRCd 4 network. Reported by Eman (#4472). 2015-12-09 18:27:59 +01:00
Bram Matthys 7d43bf1203 SAJOIN ignored set::level-on-join. Reported by blank (#4480). 2015-12-09 17:49:42 +01:00
Bram Matthys f6a58b60af Added workaround for "Cannot accept connections: Operation not supported" problem (#4469). 2015-12-09 17:44:54 +01:00
Bram Matthys a603898688 Fix opers not getting any error messages when they are unable to join a channel.
Remove OperOverride code from JOIN. This should be handled in INVITE, as in 3.2.x.
2015-12-09 16:51:17 +01:00
Bram Matthys 9ac8de5003 OperOverride didn't work (INVITE + JOIN) 2015-12-09 16:49:04 +01:00
Bram Matthys 46581f2bfb Windows: Fix possible crash on connect. Add error message on failed server connect (not perfect yet). Reported by Robben (#4485). 2015-12-09 11:45:31 +01:00
Bram Matthys d50f9468c6 third -> fourth 2015-11-25 19:23:40 +01:00
Bram Matthys 97fb9f1457 Bump version to 4.0.0-rc4 2015-11-25 19:05:30 +01:00
Bram Matthys 4280d57f60 Modes of permanent channels (+P) with 0 members and 0 bans/excepts/.. were not synched correctly. Reported by 'i' (#4459). 2015-11-25 15:37:38 +01:00
Bram Matthys 4dd6be721c Fix crash on linking (#4451). 2015-11-25 15:00:28 +01:00
Bram Matthys 9fbcfe7911 Remove debugging log entry regarding canceled blacklist requests 2015-11-23 21:41:51 +01:00
Bram Matthys c1c1c9b308 Update PCRE2 to 10.20 2015-11-15 16:56:31 +01:00
Bram Matthys b2da8251d8 Fix crash on boot if set::modes-on-join contains channel mode 'f'. Reported by LinkServ (#4461). 2015-11-11 10:23:56 +01:00
Bram Matthys f4d0b7b802 Upd release notes 2015-11-08 10:33:52 +01:00
Bram Matthys 2f2ee0ba03 Bump version to 4.0.0-rc3 2015-11-08 10:29:01 +01:00
Bram Matthys 78a778e3df Add some tracing for hostname setting bug (may never happen) 2015-11-08 09:44:13 +01:00
Bram Matthys c51ba70cc3 Move sptr->user->realhost initalization to make_user() 2015-11-08 09:43:51 +01:00
Bram Matthys 4653879474 Remove invite-notify as the implementation by our nenofriend is completely broken, as usual. Not a really interesting feature anyway. We can still add it properly post-4.0 if want. 2015-11-02 18:33:07 +01:00
Bram Matthys 122a9b6b46 upgrade-conf: in case of link::password-receive/password-connect mismatch try harder to pick the right one. 2015-11-02 14:51:58 +01:00
Bram Matthys 00d0822320 Don't crash on invalid IP from authenticated server link (eg: faulty services). (#4444) 2015-11-02 14:42:23 +01:00
Bram Matthys a45b03e0cc Remote includes: if you /REHASH with a down remote location twice, then the cached version was deleted. 2015-11-02 14:22:25 +01:00
Bram Matthys a5760351fe Remote includes: timeouts were not handled properly. An unresponsive DNS or HTTP(S) server could result in not being able to /REHASH ('rehash already in progress') 2015-11-02 14:04:27 +01:00
Bram Matthys 0dbeab6362 Update release notes a bit (interim?) 2015-11-01 17:02:45 +01:00
Bram Matthys 132d9ec2c5 Add "(SSL)" to SSL ports in bootup message. 2015-11-01 11:17:45 +01:00
Bram Matthys 9b4462f099 Fix incorrect help text in configure. Reported by Fersure (#4123) 2015-10-30 12:53:57 +01:00
Bram Matthys f07e1ae19e Update quarantine kill message. 2015-10-30 09:51:24 +01:00
Bram Matthys d67d9ab6cb link::options::quarantine didn't work anymore. Also fix missing quarantine notice, reported by vonitsanet (#3341). 2015-10-30 09:49:22 +01:00
Bram Matthys 9dc97a0324 Destroy channel when oper does (SA)MODE #channel -P on a channel with 0 users. Reported by blank (#4442). 2015-10-30 09:36:01 +01:00
Bram Matthys c06e3a7ef6 Files in the tld { } block were being loaded from the wrong location, resulting in errors/confusion. Reported by Manuel (#4440). 2015-10-30 09:25:10 +01:00
Bram Matthys e77ebaf26b Add 'map' to default operclass privileges so opers see ulines and the real map (not flat-map). Reported by blank (#4441). 2015-10-30 09:19:11 +01:00
Bram Matthys cdbdd2dce0 On windows replace the UnrealIRCd icon with a simple blue (U). May change later. 2015-10-28 19:38:22 +01:00
Bram Matthys cc54108400 Update Windows GUI at least a little bit for UnrealIRCd 4. 2015-10-28 19:16:25 +01:00
Bram Matthys 46e7e7bb42 No nenolod, arabic is not latin. Not quite. Fix #4437 reported by blank. 2015-10-28 16:18:22 +01:00
Bram Matthys d81c52c5aa Rewrite hunt_server. Our nenofriend made it hunt random users if not found, interesting. Rewrote/improved the function. I think this should fix #4415, #4438, #4439, and possibly more. 2015-10-28 11:16:29 +01:00
Bram Matthys 1533a296fe Update version to 4.0.0-rc2 2015-10-26 14:39:28 +01:00
Bram Matthys 67a9833104 Add notes 2015-10-26 14:36:38 +01:00
Bram Matthys b087f21482 Fix has_channel_mode() for 'k' (unused) 2015-10-26 11:08:59 +01:00
Bram Matthys 4ec8f772d8 Remove useless variable in windows makefile. Reported by warg (#4169). 2015-10-26 11:06:24 +01:00
Bram Matthys cce6eb7586 re-indent 2015-10-26 10:22:28 +01:00
Bram Matthys 243045a887 Workaround for libcurl bug. Fixes #4419. This caused an un-/REHASH'able server if you used remote includes (epoll_ctl error) and were adding new listen blocks at runtime, for example. 2015-10-26 10:17:47 +01:00
Bram Matthys c51c3800c3 Update IPv6 compile check. It should only check if compile-time IPv6 support is available. We can deal with missing IPv6 support at runtime nowadays. 2015-10-26 09:13:44 +01:00
Bram Matthys 10f56911c4 Another fix for #4431 & #4433. Yes, there were two bugs! This one was already pointed out by DBoyz, actually. 2015-10-25 19:44:34 +01:00
Bram Matthys 4d7e84b39a Seems "someone" forgot to include the sender prefix in the format string. Fix crash reported by dboyz (#4431) & Erik (#4433) in invite notify. 2015-10-23 18:43:11 +02:00
Travis McArthur eac9230931 Fix bug in when we set backend flags in kqueue 2015-10-19 10:55:31 -07:00
Bram Matthys 38dbede832 Windows build: fix nmake [..] custommodule to use src/modules/third/ rather than src/modules/ 2015-10-18 10:49:33 +02:00
Bram Matthys f6837d0202 Add has_channel_mode(chptr, 'X') for modules.
Since many channel modes are modular now you can't simply check chptr->mode.mode & SOME_MODE, instead use this function ;)
2015-10-17 19:51:59 +02:00
Bram Matthys 2de3fbf9d0 Remove MODE_NOCOLOR and MODE_STRIP leftovers. 2015-10-17 19:51:39 +02:00
Bram Matthys 240f550e4f Re-indent this damn file. Has been annoying for years.. 2015-10-17 12:35:14 +02:00
Bram Matthys c5ad32e909 Make /GLINE, /ZLINE, etc.. without parameters call /STATS .. internally so we can get rid of duplicate code.
Previously notices were missing if you used f.e. /SHUN without paramers, reported by Dodge_Ram (#2533).
2015-10-17 12:04:03 +02:00
Bram Matthys bc2f58e8dd /NOTICE $* did not work. Fix broken sendto_match_butone(). Reported by blank (#4422). 2015-10-17 11:39:20 +02:00
Bram Matthys 23e65d3ca0 Merge branch 'unreal40' of github.com:unrealircd/unrealircd into unreal40 2015-10-17 11:12:59 +02:00
Bram Matthys f1426e02ee Fix channel mode +P (Permanent) not working if you have set::modes-on-join, reported by blank (#4426). 2015-10-17 11:11:55 +02:00
Travis McArthur 4e8f954db6 Fix error handling in kqueue reload 2015-10-16 15:34:10 -07:00
Travis McArthur b747d00dea Fix kqueue behavior on fork 2015-10-16 15:32:10 -07:00
Travis McArthur c0eb5a1faf Fix removing things from kqueue before adding 2015-10-16 14:05:59 -07:00
Bram Matthys 7637517da2 In UnrealIRCd 4 channel mode j & A no longer exist, same for user modes O, a, A, N, C. Also oper flags no longer exist. 2015-10-14 22:00:29 +02:00
Travis McArthur f1e07feec7 Merge pull request #37 from blindsighttf2/typo
Fix error message in delayjoin
2015-10-13 22:58:10 -07:00
Matt Ullman cf34e4dbe8 Fix error message in delayjoin 2015-10-13 11:49:26 -04:00
Bram Matthys 8b45169f82 Get rid of $Id$ in /MODULE (version) output. Just report as "4.0" 2015-10-11 18:18:31 +02:00
Bram Matthys 14e90955bf Remove old stuff (never used / extra stuff that does not compile) 2015-10-11 18:12:41 +02:00
Bram Matthys 264b43f6a1 Remove crash test on /DIE 2015-10-11 18:03:06 +02:00
Bram Matthys 29e645874e Report properly as 4.0.0-rc1 (not 4.0-rc1) 2015-10-11 17:58:04 +02:00
Bram Matthys 681fd333cc name change 2015-10-11 17:46:41 +02:00
Bram Matthys b428f9b3a3 Windows: wircd.exe -> UnrealIRCd.exe. unreal.exe -> unrealsvc.exe. And some more name changes. 2015-10-11 17:44:49 +02:00
Bram Matthys a565a68f36 Unreal -> UnrealIRCd 2015-10-11 17:31:59 +02:00
Bram Matthys ac21d19daa Windows installer.. details.. 2015-10-11 17:09:48 +02:00
Bram Matthys cd7feca47f Windows installer: check if VC2012 Update 4 is installed. IOTW: remove unnecessary prompt about visual studio redistributable if already installed 2015-10-11 17:03:49 +02:00
Bram Matthys e337d8d526 Update version for Windows (*sigh*.. yet another file..) 2015-10-11 16:49:21 +02:00
Bram Matthys 30d5018c8e Fix URL displayed when no config file is available (Windows) 2015-10-11 16:44:28 +02:00
Bram Matthys 7cab2bd83d Fix crash on boot on Windows 2015-10-11 16:43:04 +02:00
Bram Matthys 01f3d7a03b Bump protocol version to a more appropriate number (3999) for RC series. Will later become 4000 for the 4.0.0 stable release. 2015-10-11 16:14:59 +02:00
Bram Matthys fb0709e0f1 Update libcurl path in windows installer 2015-10-11 16:10:13 +02:00
Bram Matthys 28d3c00805 Update README to reflect version and branch changes 2015-10-10 18:21:57 +02:00
Bram Matthys 0e42c1f5d3 Update release notes 2015-10-10 17:58:27 +02:00
Bram Matthys 537c9a2eea UnrealIRCd. Not Unreal. 2015-10-10 17:50:09 +02:00
Bram Matthys 507d88cf09 Bump version to 4.0.0-rc1 2015-10-10 17:44:52 +02:00
Bram Matthys ccdc948200 Improve epoll error message 2015-10-10 16:09:30 +02:00
Bram Matthys 75fb661361 Don't truncate error message (umode +q & umode +S) 2015-10-10 11:22:37 +02:00
Bram Matthys da7cd5f8cc Blacklist module will now no longer send server notices about users who have already been klined/glined (earlier). 2015-10-04 11:19:24 +02:00
Bram Matthys 792dd9a63c Merge pull request #36 from dboyz/3539
[#3539]: Prevent empty channel message when +S is set and the only text is a color code.
2015-10-01 21:01:16 +02:00
Daniel Tan 20c7e8d825 [#3539]: Validate if return string is NULL
We should send ERR_NOTEXTTOSEND too.
2015-10-02 02:00:56 +08:00
Bram Matthys ec3be52568 - 2015-10-01 18:14:52 +02:00
Bram Matthys d059505c33 return value, now this function has been fixed to return int rather than void 2015-09-22 10:45:31 +02:00
Bram Matthys 2f112c3efa Update hook prototypes (typechecking). Fix build. Forgot.. in 3.4 these return int now... 2015-09-22 10:43:26 +02:00
Bram Matthys bd7aebc81e upd hook prototypes 2015-09-21 13:40:36 +02:00
Bram Matthys 9ba9d65c7e Add GCC typechecking: we now validate HookAdd... calls, making sure the function (pointer) is as it should. This to avoid crashes and weird behavior in case of a mismatch.
This resulted in 5-10 changes in the existing code where parameters were off.
Hopefully I didn't make too many mistakes when writing the hook prototypes as it was a tedious job.
An (unintentional) benefit of this new system is that you can see the hook prototypes in include/modules.h like:
/* Hook prototypes */
int hooktype_local_quit(aClient *sptr, char *comment);
....
Though, the wiki is likely a better place: https://www.unrealircd.org/docs/Dev:Hook_API
2015-09-21 11:52:00 +02:00
Bram Matthys 3280c3639e Add runtime "listening on" message if listener is added. 2015-09-20 17:08:49 +02:00
Bram Matthys cd6f127cfd Split "UnrealIRCd is now listening on.." message into IPv4 & IPv6 lines. Only display on-boot. 2015-09-18 18:15:17 +02:00
Bram Matthys 331cdbc1d6 IRCd was applying set::restrict-usermodes to remote users, it shouldn't do that (#4418). 2015-09-13 09:29:09 +02:00
Daniel Tan ae34c3626b Merge remote-tracking branch 'unrealircd/unreal34' into unreal34 2015-09-13 09:12:41 +08:00
Bram Matthys d0b53a9b09 For non-SID-capable servers: fix nenolod ripping out CLK and NICKIP capability checking. 2015-09-12 11:25:31 +02:00
Bram Matthys 69a121278f De-duplicate code. Make sendto_serv_butone_nickcmd() use sendto_one_nickcmd(). Fixes bug reported by Adam. 2015-09-12 11:16:02 +02:00
Bram Matthys af88bc7e19 Make port ranges work again in the listen block. 2015-09-09 08:21:05 +02:00
Bram Matthys ada38f7ac3 Fix explicit password method in .conf no longer working, eg: password "....." { md5; }; 2015-09-07 16:44:08 +02:00
Bram Matthys 177f102d26 Update example conf translations on new listen block. 2015-09-07 15:45:04 +02:00
Bram Matthys 972ef43a81 Update listen block in example.conf to new format. 2015-09-07 15:40:01 +02:00
Bram Matthys a89d64869b Upd release notes 2015-09-07 13:48:11 +02:00
Bram Matthys 493ac9aec9 Add 'r' to flags if compiled with remote includes support. Suggested by katsklaw (#4002). 2015-09-07 12:59:00 +02:00
Bram Matthys 74f2c10e2e Remote includes cache was only written after the first /REHASH. Now also on-boot, as it should. 2015-09-07 12:37:54 +02:00
Bram Matthys 09191c47b2 Fix remote include caching for URL's that end in a / (#4409 too) 2015-09-07 12:24:19 +02:00
Bram Matthys c12d05182e Fix remote includes cache not working. Reported by Eman (#4409). 2015-09-07 12:14:15 +02:00
Bram Matthys ec8a7215bd Fix /GLINE 'ban too broad' error when the ban was perfectly OK. 2015-09-07 11:58:31 +02:00
Bram Matthys 926bbbcec9 Show remote server IP to ircops in outgoing connects, both on success and failure. Makes things easier to debug. 2015-09-07 11:45:38 +02:00
Bram Matthys 123b91cfe1 Server linking: fix crash on outgoing connect when link::outgoing::hostname is a.. hostname. 2015-09-07 11:42:26 +02:00
Bram Matthys 99fb8dbfd6 Use unrealircd.org and not unrealircd.com in e-mail addresses, URL's, etc.
Also use https://
2015-09-06 10:37:03 +02:00
Bram Matthys 208e93ce8e Update list of donators. 2015-09-06 10:29:21 +02:00
Bram Matthys 13d7da7a7b Update release notes and bump version to 3.4-beta4. 2015-09-06 10:09:19 +02:00
Bram Matthys 15469cae2e Send version information in SERVER command like before (VL). Expand PROTOCTL EAUTH.
PROTOCTL EAUTH=servername,protocolversion,flags,unrealversiontext
This makes deny link { } work again and gives a bit more information too.
Bug reported by GLolol (#4408).
2015-09-05 12:06:55 +02:00
Bram Matthys 8c9ddb4767 Server protocol documentation moved to the wiki at https://www.unrealircd.org/docs/Server_protocol 2015-09-05 09:43:00 +02:00
Bram Matthys 8e87a963a1 Not important, but.. when server linking, send password just once and not twice. 2015-09-04 12:30:07 +02:00
Bram Matthys 9b0bd01749 Fix crash on (outgoing) server linking attempt. 2015-09-04 12:22:39 +02:00
Bram Matthys 01244b1710 Fix OpenBSD compile problem regarding sys/timeb.h. Reported by cman351 (#4398).
More use of unrealircd.h.
2015-09-04 11:59:53 +02:00
Bram Matthys 67fe4479ec Fix (harmless) curl compile warning, reported by warg (#3987). 2015-09-04 11:32:04 +02:00
Bram Matthys 03616cb853 Fix UnrealIRCd hanging on SSL clients, thus freezing the IRCd. Reported by Eman (#4406). 2015-09-04 11:14:06 +02:00
Bram Matthys 237d22249b Apparently forgot to run ./autogen.sh - strange nobody noticed :D 2015-09-03 18:47:41 +02:00
Bram Matthys f44ad7e608 Fix possible crash on boot with bind/listen errors. 2015-08-31 09:30:59 +02:00
Bram Matthys 77e092573d Fix compile problem (without remote includes) caused by yesterday changes. 2015-08-31 09:19:49 +02:00
Bram Matthys 42cec683df Fix crash when you run './unrealircd mkpasswd bcrypt' on the command line. Reported by Eman (#4403). 2015-08-30 09:53:40 +02:00
Bram Matthys f211a5424a Accept relative path if you boot the binary with -f cfgfile 2015-08-30 09:50:47 +02:00
Bram Matthys 281ad03681 Remote includes were broken. Also set::ssl::certificate only worked with absolute paths. Both issues were reported by Eman (#4401, #4402). 2015-08-30 09:40:51 +02:00
Bram Matthys 452aa02737 SSL: use ECDHE key only once (per session) for better forward security. 2015-08-17 11:43:18 +02:00
Bram Matthys 37a6c078ff Disable SSL tickets to improve forward security. Isn't that useful on IRC anyway (hence session cache was already off). 2015-08-17 11:37:27 +02:00
Bram Matthys 4378667303 SSL: Add support for ECDHE for forward secrecy. 2015-08-17 11:10:25 +02:00
Bram Matthys f0bba94144 Disable SSLv3. 2015-08-16 21:10:53 +02:00
Bram Matthys c17d0291c9 Update release notes. 3.4-beta3 release now. 2015-08-16 15:09:30 +02:00
Bram Matthys 0256ea08df Fix SASL crash 2015-08-16 15:08:30 +02:00
Bram Matthys 5755721d5f Last minute change to ./Config 2015-08-16 15:07:17 +02:00
Bram Matthys 502e48bdfa Fix SVSMODE Servers only command. Reported by goXXip (#4391). Similar to previous issue. 2015-08-15 18:36:33 +02:00
Bram Matthys 974ccb1066 SVSKILL may be sent from pseudo user 2015-08-15 18:35:28 +02:00
Bram Matthys e4139a3c79 update release notes (crash reporter) 2015-08-15 18:19:10 +02:00
Bram Matthys 787563beef Change version to 3.4-beta3 (some fixes will follow though, before release) 2015-08-15 18:12:47 +02:00
Bram Matthys 6a5515d4dc Fix crash on outgoing server connect if ident checking was enabled (bug introduced a few weeks ago). 2015-08-15 14:52:39 +02:00
Bram Matthys ad23afc81f Improve (error) messages shown on console while booting. Fatal boot errors are now shown on the console, no need to check ircd.log. 2015-08-10 21:50:23 +02:00
Bram Matthys c5335a6866 Make all bind errors fatal. Log on which ports UnrealIRCd is listening on. 2015-08-10 17:45:55 +02:00
Bram Matthys 351c4a5107 remove debugging inetport() thingy 2015-08-10 17:23:17 +02:00
Bram Matthys 3d60e89e54 When log::maxsize is specified the ircd will now rename the log file to [nameoflogfile].old when it reaches the maximum size (any previous ircd.log.old will be overwritten). This is much more useful than just truncating the log file (= all contents are lost). 2015-08-09 17:26:33 +02:00
Bram Matthys 810feea66f Merge pull request #33 from dboyz/recvq,sendq
[#4382] Fix recvq and sendq unable to specify data size prefix (m,k,G)
2015-08-09 17:12:34 +02:00
Bram Matthys fb157899dc Implemented #1613: When doing a remote /REHASH show the rehash result (such as warnings and errors encountered). 2015-08-09 16:18:27 +02:00
Bram Matthys 54f30886d2 Fix server linking (outgoing) not working after IPv4/IPv6 split a week ago. 2015-08-09 16:12:38 +02:00
Bram Matthys a18596c9b5 Nowadays OpenSSL is using the following official binary compatbility policy: for version A.B.Cd as long as A.B is the same for both runtime & compiled time then it's compatible. 2015-08-09 15:24:20 +02:00
Bram Matthys 20d8f876c8 Fix crash on startup if using the dnsbl block with multiple replies. Reported by Hero (#4392). 2015-08-09 15:10:53 +02:00
Bram Matthys f985f21c54 even better 2015-07-29 18:48:17 +02:00
Bram Matthys ebc61fe603 Reject bans with ASCII < 32. There's no reason to allow these.. 2015-07-29 18:44:39 +02:00
Bram Matthys 13089a6958 Show IPv6 nameservers in '/QUOTE DNS i'. This requires c-ares >=1.7.1. Since 1.7.1 is from March 2010 that should be okay ;) 2015-07-29 17:53:43 +02:00
Bram Matthys a843cec6bc like I said 2015-07-29 17:41:14 +02:00
Bram Matthys 9b97e28ccd Remove unused settings. 2015-07-29 17:39:29 +02:00
Bram Matthys 09895c67f1 set::stats-server is optional, however if it was missing then if an oper did '/STATS S' the ircd would crash. 2015-07-29 16:03:45 +02:00
Bram Matthys e627d3682c pass by ref instead of pass by value for chmode_str() 2015-07-29 16:03:25 +02:00
Bram Matthys 8df16d5a83 kill some warnings (mostly bogus) 2015-07-29 15:55:31 +02:00
Bram Matthys 2bd5345eec quick fix for flood counters being reset on /REHASH. will use moddata later so we can reload ok again. 2015-07-29 13:13:09 +02:00
Bram Matthys 0bcc8494b7 Fix some FIXME's. Remove unused set::dns::nameserver (actually it was a fallback if /etc/resolv.conf etc failed but.. well.. not anymore!) 2015-07-29 13:09:26 +02:00
Bram Matthys 8a3d1b22f1 Move too broad ban checking to ban_too_broad(usermask,hostmask) function. TODO: more config shit. 2015-07-29 13:00:29 +02:00
Bram Matthys b12ee99ab2 like I said. 2015-07-29 12:42:06 +02:00
Bram Matthys 14aca6bcde Remove unused alloca stuff. Fix windows warnings. 2015-07-29 12:30:40 +02:00
Bram Matthys 8c86721c55 Fix some Windows compile warnings 2015-07-29 12:19:29 +02:00
Bram Matthys 49bb80901e Add './unrealircd upgrade-conf' code for upgrading the listen block to the new syntax. 2015-07-29 11:50:23 +02:00
Bram Matthys ff0b4aba75 New style listen block: listen { ip *; port 6667; };. Why? Mainly because the old style looks strange for IPv6 (brackets and stuff). 2015-07-29 11:37:51 +02:00
Bram Matthys 6410f82162 don't care. 2015-07-29 11:01:38 +02:00
Bram Matthys 4a890e3915 Add IPv6 info to release notes. 2015-07-29 11:00:20 +02:00
Bram Matthys c19165c8a6 Remove remaining INET6 defines and questions, as it's now always the default. 2015-07-29 10:42:40 +02:00
Bram Matthys ae23d99e07 Get rid of #if INET6 stuff, as all supported OS's support IPv6 at compile time. Use set::options::disable-ipv6 to disable IPv6 at runtime. Cleanup unused IPv6 structs/vars/functions/.. 2015-07-29 10:31:12 +02:00
Bram Matthys 3b217f083a Make IPv6 work on Windows 2015-07-29 09:50:36 +02:00
Bram Matthys c8a5bfd2b4 like I said.. 2015-07-28 22:26:24 +02:00
Bram Matthys a29baf96f6 upgrade some ipv4-only stuff. Also set::link::bind-ip was broken in multiple ways. 2015-07-28 22:24:17 +02:00
Bram Matthys fa87577918 and some more. 2015-07-28 22:14:58 +02:00
Bram Matthys 49fb284096 finishing up.. 2015-07-28 21:48:25 +02:00
Bram Matthys ea7a080154 remove more unused functions 2015-07-28 21:44:32 +02:00
Bram Matthys 47ec1da3f5 Remove unused functions 2015-07-28 21:42:40 +02:00
Bram Matthys 6f34a8203d Another interim commit for ipv4/ipv6 socket split. Compiles now, and client connects. Still plenty to fix.. 2015-07-28 17:56:40 +02:00
Bram Matthys b072a80638 get rid of local->ip stuff in throttle 2015-07-28 17:47:40 +02:00
Bram Matthys 46ee510da6 ipv4/ipv6 split. interim commit (does not compile) 2015-07-28 17:42:24 +02:00
Bram Matthys 63724c312b Use acptr->ip 2015-07-28 16:21:08 +02:00
Bram Matthys 3577583eaf ipv4/ipv6 split - phase 1 (unstable!!) 2015-07-28 16:20:00 +02:00
Bram Matthys d15701bced Make ident code more ipv4/ipv6 neutral. This will break things until we do the socket split. 2015-07-28 14:44:42 +02:00
Bram Matthys 3ffa547d2e Remove more acptr->local->ip stuff, and fix some code from minutes ago. 2015-07-28 14:19:18 +02:00
Bram Matthys a6a5e93524 We already check for 'too many unknown connections from your IP' in add_connection(). 2015-07-28 14:15:30 +02:00
Bram Matthys 8e30acda41 More local->ip & INET6 stuff removed. 2015-07-28 14:14:52 +02:00
Bram Matthys 80147b2914 Make throttling code work on aClient * structs. Other code may change later (makes it easier). 2015-07-28 14:05:41 +02:00
Bram Matthys 7d98523c48 Remove forward/revdns mapping check as we already do this in res.c. Convert stuff from acptr->local->ip (struct) to acptr->ip (string) 2015-07-28 14:01:01 +02:00
Bram Matthys 925de764ff Make auto-join code use Find_tld(). Guess this means tld::options::ssl was not working for tld-specific auto join channels. 2015-07-28 13:55:00 +02:00
Bram Matthys a049ef22e4 remove unused code due to previous changes 2015-07-28 13:52:17 +02:00
Bram Matthys a444964730 Convert TLD code to use match_user(): MOTD OPERMOTD BOTMOTD RULES etc.. 2015-07-28 13:50:47 +02:00
Bram Matthys 709c7e890e Use match_user() for is banned checking. This also makes CIDR work in bans/exempt/invex.
Remove ban_realhost, ban_virthost, ban_cloakhost and ban_ip stuff. Should be just as fast if you use match_user() now.
2015-07-28 13:39:56 +02:00
Bram Matthys 58b864edd5 Re-do CIDR and at the same time all the user matching stuff. Introducing match_user(mask, acptr, options): this should be used everywhere rather than the many DIY routines everywhere that create a nick!user@host and then run a match() on it.
The match_user() function is not been fully tested yet, at this point I'm happy we can compile again.
2015-07-28 13:26:03 +02:00
Bram Matthys 26bdea371e Start of "try to use IP strings rather than IPv4/6 specific code". Just a start, would do more but my pizza is ready. 2015-07-27 18:51:13 +02:00
Bram Matthys 012413313c fix loopback checking 2015-07-27 18:42:28 +02:00
Bram Matthys 5bfa5c701e Never understood why it's called get_sockhost() if it actually sets it. Renamed to set_sockhost() 2015-07-27 18:30:25 +02:00
Bram Matthys 55af91a4ce ensure acptr->ip is set (probably useless change, but better safe than sorry). fix incorrect comment. 2015-07-27 18:13:13 +02:00
Bram Matthys a613a29b02 Ensure people don't run 'make' from the wrong directory. Reported by hyperi0n. 2015-07-26 14:14:39 +02:00
Travis McArthur 91c6b0025e Fix compile failure on BSD/OSX 2015-07-25 19:52:13 -07:00
Travis McArthur 8597e78038 Fix #0004382 - config_checkval in sendq,recvq 2015-07-25 19:42:20 -07:00
Daniel Tan 8417ddf0b9 Another case of atol -> config_checkval 2015-07-26 09:00:40 +08:00
Bram Matthys 33f1322def Whoops. Back out m_user cleanup from an hour ago. We call m_user() at a few places (ugly ugly). Will take a look at this again another time I guess.. 2015-07-25 20:41:59 +02:00
Bram Matthys 40354d0459 Hmmm. This doesn't work. Look at it again later, I like the warning, just want the option to ignore it. 2015-07-25 20:38:52 +02:00
Bram Matthys 85dceb0bae mark some stuff with __attribute__((warn_unused_result)) 2015-07-25 20:29:04 +02:00
Bram Matthys 2a53499610 Get rid of useless DLLFUNC prefixes (at places where they were not needed) 2015-07-25 20:23:37 +02:00
Bram Matthys fd375ee284 Use CMD_FUNC() everywhere 2015-07-25 20:22:44 +02:00
Bram Matthys 4ad0ef4c65 use pclose after popen and not fclose .. :) 2015-07-25 19:41:15 +02:00
Bram Matthys 80d3205a72 blah. enough small things now. 2015-07-25 19:26:24 +02:00
Daniel Tan 19faef887d This one is supposed to use config_checkval too. Thanks for pointing out 2015-07-26 01:16:23 +08:00
Bram Matthys 35aff98d10 really don't care about return value 2015-07-25 19:13:34 +02:00
Bram Matthys c480ee5b91 fix silly warning. was safe, parv[1] can never exceed BUFSIZE (512), duh. 2015-07-25 19:12:29 +02:00
Bram Matthys b1a1c51f4e wow.. that's a lot of lines to do something simple @ m_vhost :D 2015-07-25 19:10:48 +02:00
Bram Matthys 4573a61518 cleanup m_vhost 2015-07-25 19:08:19 +02:00
Bram Matthys 83a2caea3e cleanup m_user. Remove very old code to deal with remote USER messages from servers 2015-07-25 19:02:42 +02:00
Bram Matthys 652795f2c0 Fix a bug in spamfilter TKL syncing with non-TKLEXT servers (non-unrealircd's). 2015-07-25 18:49:28 +02:00
Bram Matthys e1160a0260 Check FLUSH_BUFFER. 2015-07-25 18:36:47 +02:00
Bram Matthys 9a336fa53b cleanup 2015-07-25 18:36:23 +02:00
Bram Matthys ec504a2e49 parc wasn't decreased in a mode cutoff routine. 2015-07-25 18:29:31 +02:00
Bram Matthys fd3057a462 goto deny; continue; hmmmmm 2015-07-25 18:25:41 +02:00
Bram Matthys 13390250ec more of the same 2015-07-25 18:24:13 +02:00
Bram Matthys 4f8be613b9 cleanup & re-indent m_invite & remove old checks/ifdef's 2015-07-25 18:22:10 +02:00
Bram Matthys 55af9ec0a9 don't +b if banlist is full @ chanmode +f textflood kickban 2015-07-25 18:09:52 +02:00
Bram Matthys f7ba695625 Crash reporter is now working on Windows as well. 2015-07-25 12:31:03 +02:00
Bram Matthys 644ddd43ca Windows: use crash handler for abort() calls as well (this needs to be improved, but in the meantime...) 2015-07-25 10:53:12 +02:00
Bram Matthys 443a8bb734 Fix Windows core dump. Stack trace was broken. 2015-07-25 10:30:31 +02:00
Bram Matthys fb0662f67c crash reporter: use HTTPS 2015-07-24 22:10:26 +02:00
Bram Matthys 2cb395216a First version of crash reporter. TODO: Windows, SSL (HTTPS), prettify code, .. 2015-07-24 21:21:35 +02:00
Daniel Tan 271d116120 Use config_checkval instead of atol 2015-07-25 02:18:39 +08:00
Daniel Tan 8148d43f6e [#4382] Fix recvq and sendq unable to specify data size prefix (m,k,G) 2015-07-25 02:05:22 +08:00
Bram Matthys 8bea346263 In fix_timers(), called for time jumps, also deal with aconf->hold (outgoing autoconnects). Change throttling flush to a more conservative approach. 2015-07-24 11:57:09 +02:00
Bram Matthys 5fce302336 1) Make firsttime ("online since") the real online since (fixes #2174), 2) Reset fakelag when user comes online. 2015-07-23 22:19:28 +02:00
Bram Matthys 7072902844 Update version to 3.4-beta2. 2015-07-23 14:52:16 +02:00
Bram Matthys c088dd61e5 update release notes for 3.4-beta2 2015-07-23 14:48:26 +02:00
Bram Matthys 2164f9ee67 Windows version: fix timers not being called at the right time & incorrect time jumped .. seconds ahead warning. 2015-07-23 14:22:17 +02:00
Bram Matthys ac6fa87e2e Fix (likely) crash if using set::options::flat-map because it was missing an argument to the fmt string. 2015-07-23 14:00:42 +02:00
Bram Matthys ecf71f0d4f fix code <1hr back. duh. 2015-07-23 13:49:14 +02:00
Bram Matthys a83ef4eccf Fix oper::mask { one; two; three; }; not working (#4376). 2015-07-23 13:25:09 +02:00
Bram Matthys eedf7e1eb7 AFAICT all these cases are handled elsewhere (registration timeout, dns timeout, ident timeout) and this code is wrong anyway (and hopefully never triggered) 2015-07-23 13:03:55 +02:00
Bram Matthys 6be099d2b1 Actually wait for the ident response rather than just hope it to arrive in time (which it often won't). 2015-07-23 12:58:33 +02:00
Bram Matthys 5a63808741 Don't flood the auth daemon :D 2015-07-23 12:41:58 +02:00
Bram Matthys bdbca8a8dc Fix crash on certain kills. Interesting bug :D 2015-07-23 10:37:45 +02:00
Bram Matthys 6347b0ca95 Channel mode +O had the join check reversed (rejecting ircops, allowing regular users) 2015-07-22 08:51:41 +02:00
Bram Matthys 2ff4e7857f dumdeedum 2015-07-22 08:31:28 +02:00
Bram Matthys e4a3902d3e Fix OOB read in recurse_send_quits (eg: SQUIT). Hopefully I understand this nenobug and -intentions correctly. 2015-07-20 18:34:25 +02:00
Bram Matthys a8ff8ea18d Rewrite all nick collision code. Use separate function. Use UID for KILL when available. Also use UID for nick changes. 2015-07-20 17:28:26 +02:00
Bram Matthys 74c2ff8723 TODO 2015-07-20 16:48:02 +02:00
Bram Matthys a554984b8e 1) add some code for easy debugging, 2) change a sendto_server call in sendto_serv_butone_nickcmd: wasn't sending new nicks to non-SID servers after previous fix (wtf). 2015-07-20 16:44:14 +02:00
Bram Matthys c478d7d9ef Move some stuff to introduce_user() so we can use it. 2015-07-20 16:42:36 +02:00
Bram Matthys 6f6b713fce sendto_server() w/multiple (combined) caps or nocaps was broken. It matched on ANY cap instead of ALL caps. 2015-07-20 16:42:01 +02:00
Bram Matthys 1452a2821b sendto_server() w/multiple (combined) caps or nocaps was broken. It matched on ANY cap instead of ALL caps. 2015-07-20 16:39:47 +02:00
Travis McArthur 89e675e254 Add configure action 2015-07-19 12:40:31 -07:00
Bram Matthys 87c0bbed3c Send nick collision kill with a winner to the losing side only. Trust the NICK is in-flight to that server and that it will kill his own and assign ours the winner. This fixes a bug until now where it was killing the wrong user (reproduced locally) and prevents re-introducing of our client which we will never do correctly. (#1977). If you can present a legit case where this is wrong, let me know. 2015-07-19 19:47:41 +02:00
Bram Matthys 8b039335d6 set cptr->sockhost for incoming server connections too so you can use hostnames in link::options::incoming, if you wish.. 2015-07-19 19:08:54 +02:00
Bram Matthys 004fd24368 whoops.. wrong order. 2015-07-19 19:08:45 +02:00
Bram Matthys 390a4c2494 Remove "PROTOCTL HCN" as we now include the IP in HCN-alike connecting messages. 2015-07-19 18:20:40 +02:00
Bram Matthys 02c9b7baca Change client connecting/exiting message. Always show IP. Use HCN style with some minimal changes. 2015-07-19 18:18:13 +02:00
Bram Matthys c425952cd6 Textual changes 2015-07-19 17:42:05 +02:00
Bram Matthys b4f3a39af0 Fix SupportNAMESX() on remote client 2015-07-19 17:23:51 +02:00
Bram Matthys 9baffb1b30 done with ip move. 2015-07-19 13:20:56 +02:00
Bram Matthys 173b643412 iwantthisgone 2015-07-19 13:19:06 +02:00
Bram Matthys 6379956521 strip 2 useless args from sendto_connect & sendto_fconnect (maybe useful in the past, not anymore) 2015-07-19 13:14:37 +02:00
Bram Matthys 209a5a3762 Start with moving ip_str stuff 2015-07-19 13:09:51 +02:00
Bram Matthys be5163af31 Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-07-19 12:53:26 +02:00
Bram Matthys 13fffa4e1a split all the local client stuff to acptr->local. makes it a lot easier to catch bugs.
If the IRCd crashes then it's likely not by this change but rather an existing issue that was previously gone unnoticed.
2015-07-19 12:48:18 +02:00
Travis McArthur 0f1840da6d Propogate models throughout app 2015-07-19 03:30:52 -07:00
Bram Matthys 19ad342a73 Start with client/localclient split 2015-07-19 11:50:32 +02:00
Travis McArthur 32557d44e5 generalize observer pattern 2015-07-19 01:41:57 -07:00
Bram Matthys c25c9d8529 Fix OOB write (causing memory corruption). 2015-07-19 10:22:29 +02:00
Travis McArthur 7e23713ace Further revisions to MVC architecture 2015-07-18 23:18:29 -07:00
Travis McArthur 6b2fefeadc Update configuration window 2015-07-18 18:36:10 -07:00
Travis McArthur e60ace66b5 Update configuration window 2015-07-18 14:41:46 -07:00
Travis McArthur 23e68fe649 Add Quit Option 2015-07-18 14:23:57 -07:00
Travis McArthur bc02f47c06 Update UI for config window 2015-07-18 14:23:57 -07:00
Travis McArthur a336e887b9 Move to model based approach 2015-07-18 14:23:56 -07:00
Travis McArthur 1bf2124fa4 Wire up menus correctly 2015-07-18 14:23:56 -07:00
Bram Matthys 421b224d8e Fix SSL client certificate fingerprint authentication not working for server linking. Broken since May 23 already. 2015-07-18 22:05:22 +02:00
Bram Matthys 8b716f337d Get rid of this strange mass-closing stuff that only causes trouble. Fix nothing-being-logged-issue. 2015-07-18 19:24:46 +02:00
Travis McArthur ab4e4bd306 Update menu and hide window in app 2015-07-17 20:01:14 -07:00
Travis McArthur b67d4a0e64 Add temporary logo file 2015-07-17 20:01:14 -07:00
Travis McArthur db9dedace7 Fix .gitignore - only ignore unrealircd in root 2015-07-17 20:01:14 -07:00
Bram Matthys 64540d14aa smart.. 2015-07-17 21:00:13 +02:00
Bram Matthys da9bd09e76 deal with uppercase hex in link::password (and others) -> autodetect as sslclientcertfp 2015-07-17 20:56:34 +02:00
Bram Matthys 7153d8faa8 don't fd_setselect on -1 fd if ident check failed 2015-07-17 18:11:40 +02:00
Bram Matthys 6cf476ff8e crash on invalid fd usage if DEBUGMODE (so we can trace things) 2015-07-17 18:10:06 +02:00
Bram Matthys 5d25c36a6c Add doc/conf/examples/example.tr.conf, translated by Serkan. 2015-07-17 16:22:27 +02:00
Bram Matthys 0fb82352af improve style (no bug) 2015-07-16 21:32:41 +02:00
Bram Matthys 24f3644ecf getting rid of more useless casts 2015-07-16 21:31:02 +02:00
Bram Matthys 0698ba296c various stuff 2015-07-16 21:01:50 +02:00
Bram Matthys 88aa91eb94 rather than copying the string result, why not work on the buffer directly.. 2015-07-16 21:01:27 +02:00
Bram Matthys 03cb78543a hm invalid var used. only a problem if extban module does not provide conv_param() which is mandatory anyway, so no problem I guess, but still.. 2015-07-16 21:00:45 +02:00
Bram Matthys b7cbf108d8 pass by value -> pass by ref 2015-07-16 20:22:05 +02:00
Bram Matthys b3a7774dc1 didn't audit the code, but this seems more proper (heero: check? :p) 2015-07-16 20:18:31 +02:00
Bram Matthys d4d4f5180a useless check 2015-07-16 20:18:25 +02:00
Bram Matthys f8241cede6 not if (fd) but if (fd >= 0).. 2015-07-16 18:14:22 +02:00
Bram Matthys 252538272e Reduce nick@server complexity in m_message and (similarly) make hash_find_nickserver() easier and more tolerant, also accepts just 'nick' in addition to 'nick@server' 2015-07-16 18:09:26 +02:00
Bram Matthys c15d1f90ae Fix crash in do_read_motd(). Strange nobody reported this yet (then again.. this is beta..). 2015-07-16 17:36:54 +02:00
Bram Matthys 083ca38554 :D 2015-07-16 17:36:48 +02:00
Bram Matthys bad3cdbdeb Use MyMallocEx and not malloc/MyMalloc + bzero. 2015-07-16 17:29:24 +02:00
Bram Matthys c06dc9a142 Get rid of #ifdef CLEAN_COMPILE, along with some other shit 2015-07-16 17:22:51 +02:00
Bram Matthys cb18db026f blah 2015-07-16 17:15:09 +02:00
Bram Matthys dd3993008c small unlikely memleaks. and cptr->port being set to a random value (caused few weeks ago).. but we don't ever read it so not terribly important. 2015-07-16 17:13:57 +02:00
Bram Matthys 6ee1773fbe Not sure if this will ever happen as there's a lot of code called beforehand, but ah well.. (memleak). 2015-07-16 16:32:43 +02:00
Bram Matthys b33a461e9a re-indent 2015-07-16 16:28:14 +02:00
Bram Matthys f715ee37cc uninitialized read (won't actually happen as other routines check before this) 2015-07-16 16:27:53 +02:00
Bram Matthys 34d9f0946a Don't prompt to generate SSL certificate if running ./Config -quick (which is meant as a no-prompt mode) 2015-07-16 16:02:14 +02:00
Bram Matthys 3ccb297ba8 in various text: ./unreal -> ./unrealircd 2015-07-16 11:40:54 +02:00
Bram Matthys c6488bb50a Why would anyone want to know this.. got enough on-connect msgs already. 2015-07-16 10:57:55 +02:00
Bram Matthys 9bd211d46e Fix some ununitialized stuff 2015-07-16 10:56:46 +02:00
Bram Matthys 6eddc2685f Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-07-16 09:45:11 +02:00
Bram Matthys 00e028e6f7 alpha -> beta 2015-07-16 09:44:58 +02:00
Bram Matthys 727fdfbfbc Merge pull request #31 from Alef-Burzmali/unreal34+french-conf
Translate the 3.4.x example configuration file in French
2015-07-16 09:40:45 +02:00
Thomas Fargeix 591c322d0f Translate the example conf in French 2015-07-15 22:52:18 +02:00
Bram Matthys dcb0c63bd8 Spamfilter 'u' was broken by nenolod. Literally. snprintf(buf, sizeof(buf), .. where 'buf' is a 'char *'. Fantastic. 2015-07-15 18:34:25 +02:00
Bram Matthys f22cef97d4 Why do we have those unnecessary (SSL *) casts everywhere? Poof. Gone. 2015-07-15 15:54:36 +02:00
Bram Matthys dcb4e382a3 Apparently on newer OpenSSL versions (unreleased) you can't access the read buffer. So use this method instead. Ohh.. we are so helpful to our users.. 2015-07-15 15:48:00 +02:00
Bram Matthys 168ff802c4 Show a meaningful error when connecting to an SSL-only port with STARTTLS (iotw: if you forgot ssl in link::outgoing::options). 2015-07-15 15:09:01 +02:00
Bram Matthys f847d2c9e5 hmm. inconsistency. 2015-07-15 14:55:35 +02:00
Bram Matthys f265e9f970 re-indent without chgs 2015-07-15 14:52:22 +02:00
Bram Matthys 5778e53515 Print a helpful error when trying to link using an SSL-only port and the port isn't actually SSL-only (on the other end). 2015-07-15 14:41:40 +02:00
Bram Matthys 50d1b194df Linking: for outgoing connects, only support SSL/TLS by default (either 'directly' on an ssl port or via STARTTLS 'upgrading'). Set link::outgoing::options::insecure to disable. 2015-07-15 12:42:47 +02:00
Bram Matthys 1ba5f95ecb For ougoing server links, attempt to upgrade the connection via STARTTLS if not using SSL/TLS already. 2015-07-15 12:09:11 +02:00
Bram Matthys ceb04cc3eb CommandAdd(): require flags to be non-zero and fix a minor memleak on-boot 2015-07-15 10:20:07 +02:00
Travis McArthur 8ef62b9f34 Merge pull request #30 from SaberUK/unreal34+notice-auth
Use "NOTICE *" before registration instead of "NOTICE AUTH".
2015-07-14 12:32:51 -07:00
Bram Matthys ef341b1f6d Link to servers faster after boot. Check links for re-linking more often. Allow connfreq of 5 seconds. Set default to 15. Get rid of HANGONGOODLINK/HANGONRETRYDELAY stuff. 2015-07-14 15:23:28 +02:00
Bram Matthys 02645ac4d6 Make sure people use link::outgoing::options::autoconnect, fix code to use it. 2015-07-14 15:07:18 +02:00
Bram Matthys 1978077c79 Use SENDSNO sender in server notices and not me.name, to avoid confusion. 2015-07-14 14:46:58 +02:00
Peter Powell 53bb3c0fb3 Use "NOTICE *" before registration instead of "NOTICE AUTH".
AUTH is a valid nickname so sending notices to it is probably not
a good idea. Use * as the target instead as done with numerics
when the nick is not available.

This mimics the behaviour in Charybdis, IRCD-Hybrid, InspIRCd 2.2,
Plexus 4, etc.
2015-07-14 13:20:32 +01:00
Bram Matthys e9cc914449 Cleanup 2015-07-14 12:54:26 +02:00
Bram Matthys 2e7ad2f9f7 If you write things this way then it's easy to miss a parv[0] fetch.. 2015-07-14 12:48:35 +02:00
Bram Matthys d9756b8254 strange. 2015-07-14 12:40:29 +02:00
Bram Matthys 79c71ea490 'make install' did not install all 3rd party modules. 2015-07-14 12:37:30 +02:00
Bram Matthys 2662c6d1b1 upgrade-conf: for loadmodule, strip unnecessary modules/ prefix 2015-07-14 12:30:12 +02:00
Bram Matthys 3b50d32ec7 fix build-3rd-party-modules script 2015-07-14 12:27:20 +02:00
Bram Matthys 0028f6ad64 Change version to 3.4-beta1. 2015-07-13 20:17:18 +02:00
Bram Matthys 24cf11575d make Windows OK again (part 1?) 2015-07-13 19:57:09 +02:00
Bram Matthys f1a95ffd0b Remove IPList - unused 2015-07-13 14:35:36 +02:00
Bram Matthys cdc6042fa8 Remove example.xx.conf until they are re-translated to the 3.4.x format & example conf rewrites of past month(s). 2015-07-13 13:18:05 +02:00
Bram Matthys 3a8a0450c8 update example conf 2015-07-13 12:28:47 +02:00
Bram Matthys 9bcaac6ac6 oper modes were not broadcasted (bug caused <1wk ago I think), SETHOST may be sent over the wire before the +o so change permission check (caused 1-2d ago). 2015-07-13 10:21:18 +02:00
Bram Matthys fbfb310654 3.4.x code was missing a "Lost connection to ...." server message on disconnect (should be broadcasted to ircops) 2015-07-12 22:10:19 +02:00
Bram Matthys 920e260e89 crash on invalid fd close if in DEBUGMODE 2015-07-12 22:06:57 +02:00
Bram Matthys ec2a04c7a1 Fix OOB read ('i') 2015-07-12 21:03:40 +02:00
Bram Matthys 1eaa389140 Hmm. Missing IsServer() in ValidatePermissionsForPath() :D 2015-07-12 20:58:25 +02:00
Bram Matthys 46f6580171 try not to do too much at the same time 2015-07-12 20:20:15 +02:00
Bram Matthys afb4c7bebe Rip out remainder of HOOKTYPE_GUEST. Whoops.. were not sending "nick in use" errors (bug caused a few hours ago) 2015-07-12 20:02:00 +02:00
Bram Matthys 020bf7db2f this is probably a better idea. 2015-07-12 20:00:57 +02:00
Bram Matthys 9cafe21d8e remove wonderful nenologic 2015-07-12 19:34:14 +02:00
Bram Matthys fd0821bdc3 this is a better place 2015-07-12 18:27:26 +02:00
Bram Matthys 68ba94c136 Make './unreal backtrace' work again. Hmmm. 2015-07-12 18:07:10 +02:00
Bram Matthys 7e78f04058 add src/api-clicap.c and hide 'sasl' when needed (as before) via the clicap->visible callback function 2015-07-12 17:17:19 +02:00
Bram Matthys 372ce82335 Make client capabilities a modular sub-system, as it should have been since the beginning. 2015-07-12 17:10:48 +02:00
Bram Matthys e0a12b54af loosen some magic in isupport api 2015-07-12 16:30:08 +02:00
Bram Matthys d753714abe use enum for module object types 2015-07-12 16:08:28 +02:00
Bram Matthys ec61a75cf6 cleanup m_module 2015-07-12 16:02:06 +02:00
Bram Matthys 95b13123a3 and from sample conf 2015-07-12 15:54:01 +02:00
Bram Matthys 4e39c08a4d Nobody uses this.. 2015-07-12 15:53:12 +02:00
Bram Matthys c7974591b5 remove some comments regarding add_command 2015-07-12 15:48:50 +02:00
Bram Matthys 6221333bfe Use CommandAdd() everywhere, even in core. 2015-07-12 15:47:51 +02:00
Bram Matthys a0aa1032a5 get rid of m_dummy & m_chmodetst, we have wiki for such docs (wasn't compiled nor loaded anyway) 2015-07-12 15:36:09 +02:00
Bram Matthys d33f1ca8f6 Remove /ADDLINE: it's (too) easy to create a broken configuration file this way and then have an un-rehashable and un-bootable IRCd without having shell access. Use SSH or SFTP/SCP instead. Or even better: remote includes, of course :) 2015-07-12 15:34:08 +02:00
Bram Matthys bbb121383b Add who-may-execute-this in many CommandAdd()'s. Trying to remove all "unspecified" (0) ones... hopefully I made no mistake in this ;)
Update remote-permission check in ValidatePermissionsForPath to check at least IsOper.. may save us from some serious mistakes ;)
2015-07-12 15:32:11 +02:00
Bram Matthys da935b7e41 Remove /UNZLINE and /UNKLINE: all these commands did was tell you to use /ZLINE -xx and /KLINE -xx instead. 2015-07-11 11:21:42 +02:00
Bram Matthys 6c0ebb5bd3 Protection against linking race conditions is back again (IOTW: allow very rapid re-linking), but only if your network is fully 3.4.x (actually: current git unreal34 or later)
Re-implemented PROTOCTL SERVERS= which nenolod ripped out (#4355).
Add 2nd argument to PROTOCTL EAUTH=servername,unrealprotocol
Change UnrealProtocol from 2350 to 2351
2015-07-10 21:57:13 +02:00
Bram Matthys 5e23fadefb 26*26 != 36*36 2015-07-10 15:07:17 +02:00
Bram Matthys 2d11c132f8 Replace UID generator: random + counter. This because you can otherwise enumerate users (reported by Adam). 2015-07-10 14:58:53 +02:00
Bram Matthys 145e2880b5 Partially rewrite m_kill. Hope it's all okay. Use UID's too
(why wasn't it using it UID's already? this is like THE first candidate :D)
2015-07-10 13:49:25 +02:00
Bram Matthys e52545c107 update release notes a bit 2015-07-10 13:00:39 +02:00
Bram Matthys 6747653e90 update release notes on parv[0] (under MODULE CODERS) 2015-07-10 12:36:08 +02:00
Bram Matthys 0c516abc76 You can now no longer use parv[0]. Doing so will lead to a crash, this is intentional. Use sptr->name instead.
No UnrealIRCd code reads from parv[0] anymore.
Perhaps later, after a few stable versions, we'll turn this into something more useful. Or not. But not soon.
2015-07-10 12:29:07 +02:00
Bram Matthys e8dfb284a1 Replace parv[0] with sptr->name. Don't use parv[0] anymore.
I went through all 500+ of them by hand as to avoid introducing bugs... we'll see ;)
2015-07-10 12:17:05 +02:00
Bram Matthys 0b13883c69 Make swhois use AddListItemPrio. SWHOIS priorities should work now (untested) 2015-07-10 11:11:37 +02:00
Bram Matthys 71d3e8dbfa New function AddListItemPrio, since we now use priorities in two places already (swhois, hooks). 2015-07-10 11:10:10 +02:00
Bram Matthys 9ca6d10785 fix one more tiny (xx bytes) memory leak on /REHASH 2015-07-10 10:51:27 +02:00
Bram Matthys d542db2aaa Fix invalid /GLOBOPS format string call (introduced a few days ago) 2015-07-10 10:46:09 +02:00
Bram Matthys a9fc2243aa support multiple vhost::swhois items for consistency 2015-07-10 10:44:40 +02:00
Bram Matthys 3cfee0f384 fix a number of /REHASH memleaks 2015-07-10 10:40:07 +02:00
Bram Matthys 405ede44c2 ircfree -> safefree. ircstrdrup -> safestrdrup 2015-07-10 10:22:02 +02:00
Bram Matthys c2f4e0fb2a Support multiple oper::swhois items. 2015-07-10 10:15:36 +02:00
Travis McArthur de1c6330eb Add validation to operclass parsing 2015-07-09 15:44:36 -07:00
Travis McArthur 9241701b0d Update gitignore for 3rd party module makefile 2015-07-09 13:40:05 -07:00
Travis McArthur f9a7cdaeab Update security on register-only messages umode 2015-07-09 13:39:43 -07:00
Travis McArthur 0f84e1c417 Update m_userip security 2015-07-09 13:39:34 -07:00
Travis McArthur 900c51ed13 Add paranoid null check 2015-07-09 13:39:15 -07:00
Travis McArthur fc38b1336a Update security in m_stats 2015-07-09 13:39:08 -07:00
Travis McArthur 7ea4dc1486 Update security in m_setident 2015-07-09 13:39:00 -07:00
Travis McArthur 7caa82e868 Update security in m_nick 2015-07-09 13:38:53 -07:00
Travis McArthur 9e46255922 Update security in m_message 2015-07-09 13:38:44 -07:00
Travis McArthur 50a2eacd97 Update security in m_invite 2015-07-09 13:38:35 -07:00
Travis McArthur 14c4a19d18 Update security in squit 2015-07-09 13:38:25 -07:00
Travis McArthur 9e8f61b2a5 Update security in m_connect 2015-07-09 13:38:17 -07:00
Travis McArthur 925c3585f1 Update permissions in floodprot 2015-07-09 13:18:21 -07:00
Travis McArthur 83720d07d2 Update security in m_mode
Needs a lot more testing before we ship - I'll work on that
2015-07-09 13:12:22 -07:00
Travis McArthur 9cba20fd60 Remove locop/globop distinction 2015-07-09 12:51:15 -07:00
Travis McArthur 97b2bbc819 Add ACL checks to chgname 2015-07-09 12:51:05 -07:00
Travis McArthur 2450909c26 Change name of OperEval... 2015-07-09 12:31:45 -07:00
Bram Matthys a4cd12d932 Fix remote MOTD & RULES (#2103) 2015-07-09 20:04:04 +02:00
Bram Matthys 787cd7c221 Use remove_oper_privileges() 2015-07-09 19:08:36 +02:00
Bram Matthys f3199ec5e5 1) unset the swhois you got via a vhost upon MODE -t. 2) allow MODE yourself -t
which will unset your vhost & give you a cloaked host (#2613, suggested by Stealth)
2015-07-09 18:43:21 +02:00
Bram Matthys 2f8cb55e47 Add extended SWHOIS support. Allows multiple swhoises and tracking of who/what set the swhois.
Added swhois_add / swhois_delete functions which also take care of broadcasting
New remove_oper_privileges() function, will move the rest to use this (svsnoop svsmode etc)
Not finished yet...
2015-07-09 16:26:52 +02:00
Bram Matthys d59b7b4129 add sendto_umode_global() to h.h 2015-07-09 14:52:12 +02:00
Bram Matthys 3cb780bdb3 remove umodes g/h/v from help.conf as they are removed/moved 2015-07-09 14:41:19 +02:00
Bram Matthys f03d865e77 Remove /CHATOPS. We already have /GLOBOPS which does the same.
Update help.conf a bit, in a lazy way.
2015-07-09 14:22:33 +02:00
Bram Matthys abd68c6c9e only send RPL_HOSTHIDDEN for local clients (:D) 2015-07-09 14:16:43 +02:00
Bram Matthys 15977e011d remove umode 'g' (failops), we have snomasks and oper umode for this. 2015-07-09 14:09:02 +02:00
Bram Matthys 00dd10c744 transform more failops call 2015-07-09 14:05:06 +02:00
Bram Matthys 4c3fe8cfc8 make /GLOBOPS and /LOCOPS use sendto_umode(UMODE_OPER.. / sendto_umode_global(UMODE_OPER.. 2015-07-09 14:04:32 +02:00
Bram Matthys 19b06df164 remove sendto_failops, sendto_failops_whoare_opers, sendto_locfailops 2015-07-09 14:04:00 +02:00
Bram Matthys be863a2180 Add sendto_umode_global() - sends to all users with that umode on all servers 2015-07-09 13:48:53 +02:00
Bram Matthys af206b001b Remove strange and broken snomask handling from SENDUMODE. We have SENDSNO for that.
Make notice appear from original server/user, rather than me.name.
2015-07-09 13:48:05 +02:00
Bram Matthys 60356bd97c typo (l -> L) 2015-07-08 18:06:30 +02:00
Bram Matthys fe14e21175 Update all MOD_TEST/MOD_INIT/MOD_LOAD/MOD_UNLOAD calls to new format 2015-07-08 18:02:19 +02:00
Bram Matthys 7b02afb3e5 Make MOD_LOAD and MOD_UNLOAD have a useful argument: pass modinfo, just like in MOD_TEST and MOD_INIT.
Change MOD_TEST/MOD_LOAD/etc macro's (this breaks all modules). Now just use this:
MOD_INIT(modulename)
{
// you can access modinfo here.. or other stuff...
}

(Similar to the CMD_FUNC() macro)

Rather than:
DLLFUNC int MOD_INIT(name)(ModuleInfo *modinfo)
{
//...
}
2015-07-08 17:57:02 +02:00
Bram Matthys 0cad63a232 For some reason this file was in CRLF format 2015-07-08 17:20:23 +02:00
Bram Matthys 83268d31bb Convert all HookAddEx to HookAdd with new priority syntax (and same for HookAddVoidEx.. etc...) 2015-07-08 17:19:47 +02:00
Bram Matthys b37bab0521 Add priority argument to HookAdd... and rename all the ...Ex stuff to just ... 2015-07-08 17:10:37 +02:00
Bram Matthys 95e37a0bd3 Allow not to import any build settings (and 3rd party modules). 2015-07-08 16:11:37 +02:00
Travis McArthur 2ca5480dc0 Reove IsOper uses from m_invite.c 2015-07-07 12:48:26 -07:00
Travis McArthur e48b5207ef Merge branch 'patch-1' of https://github.com/grawity/unrealircd into m2 2015-07-06 18:22:17 -07:00
Travis McArthur 752a34011d Remove IsAnOper 2015-07-06 18:09:37 -07:00
Bram Matthys b52b7afabe Remove local irc operator (locop) 2015-07-06 20:14:02 +02:00
Travis McArthur 52d923b724 Fix typo 2015-07-05 12:17:46 -07:00
Travis McArthur 760fb261fb Update chatops perms 2015-07-05 12:04:40 -07:00
Travis McArthur ad4ab6c5f5 Update close permissions 2015-07-05 12:04:40 -07:00
Travis McArthur a14869cf21 Update lag permissions 2015-07-05 12:04:40 -07:00
Travis McArthur ab7912caf4 Update opermotd permissions 2015-07-05 12:04:40 -07:00
Travis McArthur 3059adf668 Refactor regonlyspeak permissions 2015-07-05 12:04:40 -07:00
Travis McArthur b6d0e23428 Refactor m_addline permissions 2015-07-05 12:04:40 -07:00
Travis McArthur b6ad7a8c0c Refactor m_dccdeny permissions 2015-07-05 12:04:40 -07:00
Travis McArthur 501469cc10 Refactor m_undccdeny permissions 2015-07-05 12:04:40 -07:00
Travis McArthur b971d8b81b Refactor m_rping permissions 2015-07-05 12:04:40 -07:00
Travis McArthur 5250913905 Refactor permissions m_away 2015-07-05 12:04:40 -07:00
Travis McArthur ab571eb7de Refactor m_lusers permissions 2015-07-05 12:04:40 -07:00
Travis McArthur 5a4f971f95 Refactor m_quit permissions 2015-07-05 12:04:39 -07:00
Travis McArthur 3387a7bdac Refactor setname permissions 2015-07-05 12:04:39 -07:00
Travis McArthur b4e353d6e2 Refactor m_stats permission 2015-07-05 12:04:39 -07:00
Travis McArthur e2674fd33a Refactor permissions on chghost 2015-07-05 12:04:39 -07:00
Travis McArthur 026befb6cd Refactor permissions in m_sethost 2015-07-05 12:04:39 -07:00
Travis McArthur 3a87459f91 Refactor permissions in secureonly 2015-07-05 12:04:39 -07:00
Travis McArthur a6075cfc47 Refactor permissions in chgident 2015-07-05 12:04:39 -07:00
Travis McArthur e342acb0a1 Refactor m_part permissions 2015-07-05 12:04:39 -07:00
Travis McArthur 5616f3acf9 Refactor setident permissions 2015-07-05 12:04:39 -07:00
Travis McArthur ee657857fe Refactor permissions in m_join 2015-07-05 12:04:39 -07:00
Travis McArthur 108d3eab9d Refactor permissions in m_topic 2015-07-05 12:04:39 -07:00
Travis McArthur 09386178b2 Fix jointhrottle permissions 2015-07-05 12:04:39 -07:00
Travis McArthur 5f6a09da00 Change permissions checks in message 2015-07-05 12:04:39 -07:00
Bram Matthys 60dd43c8f2 Prompt to import build settings and 3rd party modules from a previous UnrealIRCd installation. 2015-07-05 20:43:06 +02:00
Bram Matthys 1b2849d818 remove 'make custommodule' from other makefiles 2015-07-05 20:07:10 +02:00
Bram Matthys 133d75ebd0 Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-07-05 20:04:43 +02:00
Bram Matthys bd21ea902c Add (src/)modules/third directory for 3rd party modules. Automatically build any .c files in there. 2015-07-05 20:04:09 +02:00
Travis McArthur 95667ca9b8 Add short-circuit for remotes and U:lines 2015-07-05 10:57:58 -07:00
Travis McArthur c377a83657 Update ignore file for SSL & tags 2015-07-05 10:57:49 -07:00
Bram Matthys c5e176f1a8 Fix curlinstall script broken since alpha4. 2015-07-05 17:58:36 +02:00
Bram Matthys 999d530688 move ./curlinstall to extras/ 2015-07-05 17:56:28 +02:00
Bram Matthys f8448145af update release notes a bit 2015-07-05 14:10:36 +02:00
Bram Matthys f58402365c Moved jointhrottle from channel mode +j to set::anti-flood::join-flood
with a default of 3:90 (3 joins per 90 seconds). There's rarely any need
to configure this on a per-channel basis and this way it's enabled by
default for everyone (unless you decide not to load load the module)
2015-07-05 13:31:56 +02:00
Bram Matthys b04776dc3b Broadcast PROTOCTL CHANMODES= on change (eg: module loaded or unloaded) 2015-07-04 20:50:57 +02:00
Bram Matthys 45abd09ba7 Remove some hard-coded channel modes in CHANMODES=.. (duplicate M, S, etc... since alpha series) 2015-07-04 19:32:08 +02:00
Bram Matthys 422b339be1 In 2003 I added PROTOCTL CHANMODES= so other servers (and services) could
easily deal with "parameter eating" of unknown channel modes.
Now, 12 years later, finally added the code to do this.
This prevents some (serious) desynching if you have a parameter-eating
channel mode on one server and not on the other.
Obviously, you should always try to have the same featureset on all
servers, but sometimes this is not possible, like when upgrading..
2015-07-04 19:25:27 +02:00
Bram Matthys dac3c8c2e7 Default is link::hub * (unless you specify link::leaf or link::hub) 2015-07-04 19:11:06 +02:00
Bram Matthys 78c750fb7d memleak if no blacklist configured or they all failed early 2015-07-04 18:25:08 +02:00
Bram Matthys 564ef061bc remove silly bzero() call 2015-07-04 18:11:40 +02:00
Bram Matthys 06db0f250a hm. something isn't right here but.. ah well. this is safest. 2015-07-04 18:10:11 +02:00
Bram Matthys a90b7354b3 Add blacklist module for DNSBL checking. 2015-07-04 15:02:22 +02:00
Mantas Mikulėnas 9485e61102 m_addline: fix inverted ACL check 2015-07-03 23:24:03 +03:00
Bram Matthys 1dd5ebac07 extban ~a (account) and ~S (certfp) are supported in MODE #chan +I (Invite exceptions).
(And they are not "modifiers")
2015-07-03 21:25:19 +02:00
Bram Matthys ffa6e099d7 Updates to previous 2015-07-03 21:24:01 +02:00
Bram Matthys 36b9a84fb3 Merge pull request #28 from dboyz/certfp-extban
[#4358]: Introduce certfp extban
2015-07-03 20:57:45 +02:00
Daniel Tan 8473cc1b1c [#4358]: Introduce certfp extban 2015-07-04 00:39:52 +08:00
Daniel Tan 182879af95 Merge pull request #6 from unrealircd/unreal34
Merge from unreal34
2015-07-04 00:26:52 +08:00
Travis McArthur 847faeab26 Remove more IsAnOp/IsOp 2015-06-30 09:38:01 -07:00
Travis McArthur 54691d76c5 Move to IsOper 2015-06-30 00:46:59 -07:00
Travis McArthur a83be9eb82 Move places we should use IsOper off IsAnOper
These places are probably okay to use IsOper at since we really do want to know if someone is an oper, not grant permission per say.
2015-06-30 00:46:59 -07:00
Travis McArthur b884ed3e8d Remove more IsOp/IsAnOp 2015-06-29 01:55:22 -07:00
Bram Matthys d20c73fda5 Windows: "Unable to write tunefile". Create data/ directory ;) 2015-06-28 19:57:32 +02:00
Bram Matthys 5cdf8c7e8c Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-06-28 10:42:10 +02:00
Bram Matthys 1a1ef4d0d3 Fix MODVAR stuff on Windows. Fixes a crash. 2015-06-28 10:41:49 +02:00
Bram Matthys f0be219f98 forgot to mark 2 modules as official (so unreal runs always 'tainted') 2015-06-28 10:41:24 +02:00
Travis McArthur 7960503398 Fix config not saving paths (reported by Adam) 2015-06-27 17:29:53 -07:00
Travis McArthur e280d2a49f Fix bug in case where use was +o, now is not. 2015-06-27 17:11:19 -07:00
Travis McArthur fd5a79a16e Fix typos 2015-06-27 14:16:25 -07:00
Travis McArthur 58b61ab336 Remove old oper macros not used now 2015-06-27 14:14:01 -07:00
Travis McArthur a1e7fefe94 Remove IsPrivileged 2015-06-27 14:13:26 -07:00
Travis McArthur dc2b09a334 Remove more IsAnOp/IsOp 2015-06-27 14:06:34 -07:00
Travis McArthur 5943dd8c09 Remove some IsOper/IsAnOper 2015-06-27 11:25:22 -07:00
Travis McArthur f053eb62ad Update to run as system agent
Will still manage UnrealIRCd as a pref pane probably and system service, but should have an agent present so it's easier to admin when you're _logged in_
2015-06-27 10:07:54 -07:00
Bram Matthys 7b09e1ca97 Fix example.conf and upgrade spamfilter.conf 2015-06-27 18:29:27 +02:00
Bram Matthys 9161068098 remove some old sections from release notes. 2015-06-27 17:34:13 +02:00
Bram Matthys 7a96e647eb Update windows installer: use different group name by default (so 3.4.x doesn't get installed in Unreal3.2, and easy to remove afterwards) 2015-06-27 17:22:58 +02:00
Bram Matthys 13f4a8613e add stuff on new oper system in release notes 2015-06-27 13:22:25 +02:00
Bram Matthys f0d6f3f550 bump version to 3.4-alpha4 2015-06-27 12:59:00 +02:00
Bram Matthys 2f33ae6588 Total DNS timeout is 1500 + (max) 3000 = 4500ms now (4,5 seconds). 2015-06-27 09:56:52 +02:00
Bram Matthys 6facc2173e 1) If there is no client data, still run main loop a bit more often than once per 1-2secs.
2) Call DNS routines more often, not just once per second.
2) Slightly lower the DNS timeout, max 2500 + 5000 = 7500ms now. Previously was 3000 + 6000 = 9000ms.
2015-06-27 09:50:52 +02:00
Bram Matthys e52971946e delay processing of client data until DNS is resolved 2015-06-27 09:13:02 +02:00
Bram Matthys 7c99a8a5f8 fix DNS (the bug I created a week ago, anyway) 2015-06-27 09:07:33 +02:00
Travis McArthur 51326523cf Remove unnecessary UI elements 2015-06-26 17:30:38 -07:00
Travis McArthur 04ea335f12 Update code sign identity 2015-06-26 17:30:25 -07:00
Travis McArthur 87423247c2 Update to ignore build artifacts 2015-06-26 14:05:28 -07:00
Travis McArthur 2216e4f60a Update git ignore to ignore configure steps 2015-06-26 13:58:51 -07:00
Travis McArthur b0e951e472 Add Mac OSX Project 2015-06-26 13:50:34 -07:00
Travis McArthur 39607fbcde Update git ignore 2015-06-26 13:50:22 -07:00
Bram Matthys dc3eeacbd7 setting of time via TSCTL OFFSET uses the server:tsctl:set privilege 2015-06-26 22:23:35 +02:00
Travis McArthur 81cba1b12d Remove remaining OPCan*
Updates to default operclasses as well
2015-06-26 11:08:00 -07:00
Bram Matthys ae1870020f windows: fix (default) location of ssl keys. ah.. finally.. Windows boots now ;) 2015-06-26 18:17:06 +02:00
Bram Matthys 629a4b957a win32 installer: create conf\ssl or certificate generation will fail 2015-06-26 18:14:44 +02:00
Bram Matthys cebc8f240d win32 batch files & installer: make aware of new ssl certificate locations (conf\ssl rather than root) 2015-06-26 18:09:38 +02:00
Bram Matthys d28b4286cf win32 inst: fix examples\ destination 2015-06-26 18:06:06 +02:00
Bram Matthys 31f430459b temporarily(?) change the note on vstudio redist pkg. was also in alpha3. 2015-06-26 18:01:53 +02:00
Bram Matthys 93833af9a0 upgrade earlier 3.4.x oper blocks as well (we are too nice..) 2015-06-26 18:00:22 +02:00
Bram Matthys 9047ebd4fa typo & create 'logs' directory on windows 2015-06-26 17:56:16 +02:00
Bram Matthys 9def6847a8 fix win32 build (fwd declaration mismatch with actual function) 2015-06-26 17:50:41 +02:00
Bram Matthys 5b3237df8d update win32 makefile for new modules past 1-2wks 2015-06-26 17:49:04 +02:00
Bram Matthys 798da6c61a more conf file magic (otherwise windows doesn't load). show all loadmodule errors instead of stopping at the first one. 2015-06-26 17:45:11 +02:00
Bram Matthys 18524a4446 .. 2015-06-26 17:27:20 +02:00
Bram Matthys 908bdafb24 hm. silly win32 msg screen. 2015-06-26 17:25:01 +02:00
Bram Matthys 9de3516c8c give some hints on the modules.conf -> modules.defaults.conf transition. 2015-06-26 17:22:59 +02:00
Bram Matthys 39312a913d give windows users some more hints about the config file location 2015-06-26 17:15:02 +02:00
Bram Matthys f5b902894a (Windows installer) update innosetup file to reflect new file locations 2015-06-26 17:10:26 +02:00
Bram Matthys 3f29850851 C99 2015-06-26 17:10:12 +02:00
Bram Matthys 8df116f2f1 more win32 fixes 2015-06-26 16:56:59 +02:00
Bram Matthys 84a61c6d8e set PIDFILE on win32 2015-06-26 16:53:53 +02:00
Bram Matthys e5ec2a6487 Rename macro DATADIR -> PERMDATADIR. Windows SDK's.. just freaking amazing.... 2015-06-26 16:50:36 +02:00
Bram Matthys e8d75db5ed upgrade-conf: tell user it would be wise if they read the freshly converted configuration files :) 2015-06-26 16:41:03 +02:00
Bram Matthys eabbdac588 upgrade-conf: ensure operclass.default.conf is included 2015-06-26 16:30:48 +02:00
Bram Matthys aa7553abe2 new extban ~O:operclassname. Enables you to make a netadmin only channel like +iI ~O:netadmin*
&remove old adminonly (+A) channel mode a bit more
2015-06-26 16:08:50 +02:00
Bram Matthys ed4ed2a03d add some more comments in modules.default.conf in extbans section. 2015-06-26 16:08:26 +02:00
Bram Matthys d01ba1b3b6 remove adminonly (+A) channel mode. as there is no admin anymore. 2015-06-26 15:51:02 +02:00
Bram Matthys 15dbacb1b9 show operclass in /WHOIS (if local) 2015-06-26 15:48:47 +02:00
Bram Matthys 92bf3cd33d upgrade-conf: fix bug with oper::flags if using the old format (3.1.x... hmmmmm...) 2015-06-26 15:29:54 +02:00
Bram Matthys 14e6f115ea upgrade-conf: use xxx-with-override operclass if can_override is set (and globop or higher) 2015-06-26 15:25:41 +02:00
Bram Matthys 317f80cdea upgrade-conf: upgrade oper block to new syntax (and a little more to come), remove set::hosts, .. 2015-06-26 15:22:05 +02:00
Bram Matthys e52ab7e2c6 do make clean the official way ;) 2015-06-26 14:45:41 +02:00
Bram Matthys 329968a425 operclass: add map:real-map and map-ulines (show real map even if flat map, and show u-lined servers even if hide ulines is set)
grant map privilege to globop and higher in operclass.default.conf
2015-06-26 11:02:47 +02:00
Bram Matthys 734fd8ad5f grant override:see to globops and above in operclass.default.conf. 2015-06-26 10:58:18 +02:00
Bram Matthys a2a31951dc move 'see' type of overrides (things opers can see from other users because they are oper) to override:see.
Like override:see:names:invisible, override:see:whois, override:see:who:onchannel, etc.
2015-06-26 10:56:57 +02:00
Bram Matthys 2769e4860a default operclasses: allow globop and higher to override whois and names by default (to see users in channels) 2015-06-26 10:49:56 +02:00
Bram Matthys f981843672 add xxx-with-override operclasses. also to show inheritance. 2015-06-26 10:45:40 +02:00
Bram Matthys eca9a0e55e first version of doc/conf/operclass.default.conf. still testing... 2015-06-26 10:38:05 +02:00
Bram Matthys 19dd192bb6 all nested operclass acl's were not working (eg: server:rehash), hope this is the correct fix :) 2015-06-26 10:36:21 +02:00
Bram Matthys 88e52c85d6 server:motd -> server:addmotd, server:omotd -> server:addomotd. hmmmm.. I guess. 2015-06-26 10:16:10 +02:00
Bram Matthys f51d191751 trace:invisible_users -> trace:invisible-users 2015-06-26 10:08:18 +02:00
Bram Matthys 9de109b373 operclass privs: move kline/gline/(g)zline/shun to tkl:.. group 2015-06-26 09:43:19 +02:00
Bram Matthys bf56672249 remove set::hosts. use oper::vhost instead. 2015-06-26 09:22:33 +02:00
Bram Matthys 4e4efd2d38 make oper::vhost actually work 2015-06-26 09:18:18 +02:00
Bram Matthys e3f70594f2 Fix compile problem / upgrade op_can_override() 2015-06-26 09:17:24 +02:00
Travis McArthur 10bfb21321 Remove most of OPCan functionality - more later 2015-06-25 21:46:55 -07:00
Bram Matthys 8fc202a6a6 'make clean' did not clean src/modules/{usermodes,chanmodes,snomasks,extbans} 2015-06-25 22:44:37 +02:00
Bram Matthys 80362e0d9c Fix compile warnings (and possibly a crash in dcc deny code introduced a week or so ago) 2015-06-25 22:38:22 +02:00
Bram Matthys 0f2af3f506 current 3.4.x git is really bleeding edge now, come back in a day or so:
* remove netadmin, services-admin, admin, co-admin.
* remove all oper flags (there are some placeholders for the next... <24hrs..)
* ADMINCHAT and NACHAT are gone, since admin & netadmin no longer exist
* SVSO used oper flags, but this no longer exists, SVSO removed. maybe later we can add some sort of replacement.. maybe..
* re-style the m_oper code a bit
2015-06-25 22:26:53 +02:00
Travis McArthur 1e525cbf93 Update Config to handle directory creation 2015-06-24 17:31:38 -07:00
Travis McArthur 10d6fe2651 Remove old announcements based on "admin" perms 2015-06-24 19:25:45 -04:00
Travis McArthur 527a00dafa More ACL work, rip out *admin support (mostly...)
Not totally tested - I validated it built, I validated ACL validation worked, I validated that most of the ripped out functionality seemed to be absent, eg: we still set the modes (backwards compat w/ services?) but we don't actually check them anywhere, or add them to your whois.
2015-06-24 19:17:40 -04:00
Bram Matthys dfbc913013 The default set of modules (full functionality) is now called modules.default.conf
Added operclass.default.conf which I will later expand after I see more of Heero's work ;)
2015-06-24 18:54:05 +02:00
Bram Matthys bcc95f67d6 Give 3.2.x users some directory hints if they try to do things the 3.2.x way. 2015-06-24 17:57:12 +02:00
Bram Matthys 5d64a2ff43 Update release notes for alpha4 (unfinished) 2015-06-24 17:29:34 +02:00
Bram Matthys 5286b50c19 We already set the IP in add_connection, no need to do that in check_init again.
Fix bug where "insecure link" message was shown despite localhost.
2015-06-22 20:49:40 +02:00
Bram Matthys d7e9d00e57 Update help.conf to reflect the new modes that are available to halfops 2015-06-22 19:31:14 +02:00
Bram Matthys efc63dff81 Permit halfops to set more modes than before. The idea is halfops should be able to help out in case of a flood but not be able to change any 'policy decission' modes such as +G, +S, +c, +s.
The following modes are now permitted to halfops: +iklmntMKNCR (was: +ikmnt)
2015-06-22 19:29:32 +02:00
Bram Matthys 82d21bf2d9 Perhaps it would be wise to PING servers. Just an idea, mr nenolod. 2015-06-22 19:05:02 +02:00
Bram Matthys 2bbe696df9 example.conf: it's link::password and not link::outgoing::password. Reported by Micko_. 2015-06-22 16:59:36 +02:00
Bram Matthys 3a27176969 Fix compile problem on x86 (32 bit): undefined reference to `_BF_body_r', reported by Micko_. 2015-06-22 13:33:57 +02:00
Bram Matthys da8e60bd7e Set permissions on (built-in) UmodeAdd & SnomaskAdd correctly. 2015-06-21 21:04:35 +02:00
Bram Matthys f819004deb Make MODE SVSMODE SVSNOOP SVSO all use remove_oper_modes and remove_oper_snomasks. Much better now. 2015-06-21 20:58:51 +02:00
Bram Matthys dd3c4ac4f4 Insert an extra parameter in UmodeAdd and SnomaskAdd to indicate "unset this on de-oper". Safer and better than in XYZ places in the code. 2015-06-21 20:37:53 +02:00
Bram Matthys 329700f745 Make Snomask +s oper-only. Has always been confusing that it wasn't. 2015-06-21 20:15:26 +02:00
Bram Matthys c0f18b3e8e Replace user mode +v ("victim", receive infected DCC notices) with snomask +D (modules/snomasks/dccreject). 2015-06-21 19:48:13 +02:00
Daniel Tan 3eead2069c Merge pull request #4 from unrealircd/unreal34
Merge from unreal34 branch
2015-06-21 20:42:24 +08:00
Bram Matthys 7f5f26d0d8 Move user mode +R to usermodes/regonlymsg 2015-06-21 11:14:24 +02:00
Bram Matthys 9aa21c205f Whoops. Only hide channels if actually umode +p and not everyone :D 2015-06-21 11:01:39 +02:00
Bram Matthys 8866793bdb Move user mode +p to usermodes/privacy 2015-06-21 10:40:25 +02:00
Bram Matthys 4e748b7635 Make WHO use HOOKTYPE_SEE_CHANNEL_IN_WHOIS as well in first_visible_channel() 2015-06-21 10:37:05 +02:00
Bram Matthys c9523e962d Added HOOKTYPE_SEE_CHANNEL_IN_WHOIS. Make umode +S use it to hide channels.
Also make the '?' and '!' prefixes in channels in /WHOIS output more generic:
both mean you only get to see the channel because you are an ircop, but:
'?' means the channel is +s/+p too (so take extra care)
and '!' means the channel is public but for other reasons hidden in /WHOIS, like umode +p (later) or umode +S.
2015-06-21 10:22:16 +02:00
Bram Matthys 16367b7020 cleanup deop and can kick call code (and fix bugs) 2015-06-21 10:21:46 +02:00
Bram Matthys 8cb381cc8e Move user mode +S to usermodes/servicebot.
TODO: hide channels in /WHOIS and some more testing. Tomorrow.. ;)
2015-06-20 21:09:17 +02:00
Bram Matthys 489230cebf Move user mode +q to usermodes/nokick 2015-06-20 20:05:33 +02:00
Bram Matthys 0ed4171bcc helps if I add the showwhois.c file 2015-06-20 18:58:16 +02:00
Bram Matthys 10dd6267de Move user mode +W to usermodes/showwhois 2015-06-20 18:56:08 +02:00
Bram Matthys 69fa434a0c Removed helpop user mode (not the command) since nowadays it does nothing but add a title to whois. You can use swhois for that, like via vhost::swhois. 2015-06-20 18:42:53 +02:00
Bram Matthys 4ae1eb23f0 Move user mode +B to usermodes/bot module.
Also add HOOKTYPE_WHO_STATUS.
2015-06-20 18:30:57 +02:00
Bram Matthys 8ac3906e1f improve header in modules.full.conf 2015-06-20 15:16:04 +02:00
Bram Matthys 9213d7ca5f some more updates to modules.full.conf 2015-06-20 15:12:08 +02:00
Bram Matthys 35459eedbd modules.conf makeover: group modules a bit more 2015-06-20 14:57:29 +02:00
Bram Matthys bf02cfcc15 update with new conf locations & suggestions from dboyz 2015-06-20 14:10:23 +02:00
Bram Matthys 9e221caa85 remove mysterious keys/ directory 2015-06-20 13:54:07 +02:00
Bram Matthys ed9022b18b remove badword quit { } and simply use badword channel { } instead.
update upgrade-conf to handle the badwords changes
2015-06-20 13:51:21 +02:00
Bram Matthys d99d01e30b ship with modules.full.conf (rather than modules.conf) and add note as to not to edit this file directly.
add updconf stuff for new layout (badwords, help, etc)
2015-06-20 13:40:20 +02:00
Bram Matthys 2a0c806289 mass move doc/example*conf and doc/help*conf 2015-06-20 12:26:40 +02:00
Bram Matthys def73ee72f replace badwords.xxxx.conf with just one badwords.conf 2015-06-20 12:20:24 +02:00
Bram Matthys 7844f70775 make tmp and cache actually use TMPDIR and CACHEDIR 2015-06-20 12:13:08 +02:00
Bram Matthys b1b771c437 unrealircd script:
* detect "ircd not running" situations better
* ./unrealircd stop now kills the ircd in a more friendly matter.
* if you run './unrealircd restart' it will now also start the ircd even if it was not presently running.
2015-06-20 11:27:16 +02:00
Bram Matthys 12dfccf5d1 ircd.pid -> unrealircd.pid 2015-06-20 11:08:13 +02:00
Bram Matthys 0a0a62a9cc If we failed to listen on any IRC port then fatal error.
Apparently neno.. ripped out this code so you could like run './unrealircd
start' 5 times and would then have 5 ircds running, of which 4 were not doing
particularly useful things.
2015-06-20 11:02:18 +02:00
Bram Matthys e76d2fc3c5 ircd.tune should go in data/. debug.log in logs/. Update ./unrealircd failed to start message 2015-06-20 10:49:14 +02:00
Bram Matthys c17e7ef812 actually remember the new settings in config.settings. 2015-06-19 21:17:55 +02:00
Bram Matthys 71e5dba0b9 release notes filename 2015-06-19 21:12:30 +02:00
Bram Matthys 833f8c6a25 update link to docs, use *.unrealircd.org 2015-06-19 21:10:13 +02:00
Bram Matthys 2e9f6c9a6e remove unreal32docs*.html. This is in the wiki now. update translations.txt 2015-06-19 21:08:21 +02:00
Bram Matthys 31066ff480 detect ./Config -quick with old UnrealIRCd settings (incompatible) 2015-06-19 21:01:59 +02:00
Bram Matthys 8a7dda0f38 move ircdcron to extras/ in source tree. remove some old Makefile stuff. 2015-06-19 20:32:36 +02:00
Bram Matthys b7936be96e Move release notes to doc/ 2015-06-19 20:28:08 +02:00
Bram Matthys 9e7e94f7f2 delete/move more files 2015-06-19 20:26:50 +02:00
Bram Matthys cb0fadcba4 unused file 2015-06-19 20:26:04 +02:00
Bram Matthys 39bbab746f delete some files from the root. ./Config now better detects existing ssl certificates (=not prompt you to generate one) 2015-06-19 20:23:07 +02:00
Bram Matthys 3729d9a05a move some file(s) 2015-06-19 14:08:01 +02:00
Bram Matthys 122bb0ed84 old stuff 2015-06-19 14:06:50 +02:00
Bram Matthys 5e94fc9c72 Move to new directory structure, require 'make install'. (Not complete. Work in progress!) 2015-06-19 13:59:08 +02:00
Bram Matthys 9648589d49 fix small memleak on /REHASH 2015-06-18 18:43:27 +02:00
Bram Matthys 1b9915ffa4 Fix link::outgoing::options::autoconnect. 2015-06-18 17:39:06 +02:00
Bram Matthys 7258aa818e Allow '/VHOST loginname' without password (for SSL cert authentication) 2015-06-17 18:57:32 +02:00
Bram Matthys 2ca1784a7c Allow '/OPER username' without password (for SSL cert authentication) 2015-06-17 18:56:03 +02:00
Bram Matthys 249de11ec0 Fix compile issue 2015-06-17 18:55:50 +02:00
Travis McArthur 0a8e395823 Add ACL protection on nick Q:line and flood overrides 2015-06-15 23:54:16 -04:00
Travis McArthur 336892be0a Add who oper ACL 2015-06-15 23:45:06 -04:00
Travis McArthur a128246c65 Add ACL checks to m_trace 2015-06-15 23:39:16 -04:00
Travis McArthur 221bc2a92b Refactor auth ACL to remove superfluous param 2015-06-14 17:59:37 -04:00
Bram Matthys 67d80d84ba upgrade-conf code for cgiirc -> webirc. 2015-06-14 12:12:28 +02:00
Bram Matthys f80951a121 Add some more helpful configuration parse errors. 2015-06-14 11:52:01 +02:00
Bram Matthys 33b5df0a10 Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-06-14 11:39:57 +02:00
Bram Matthys 7e9802c54e * More helpful error messages on parse errors of the configuration file.
Rather than just stating the error, we now also tell the user what to do.
* Change many configuration parse warnings into errors as this is (much)
  more helpful to the user since the config file isn't going to load
  properly anyway. Any subsequent 'missing xyz block' errors are not
  shown on parse errors. That's good as they are often just missing
  because of the parse errors so such errors would be confusing.
* Fix upgrade-conf strange behavior on \\ and \" in spamfilters. Was
  actually caused by config parser (and not the updconf code).
* Remove .tmp file file which may be left if we crashed during upgrade-conf
2015-06-14 11:32:43 +02:00
Travis McArthur 8d8d069b6f Add ACL support to tsctl - may want to change namespace 2015-06-13 19:38:58 -04:00
Travis McArthur 3a83c0e747 Add ACL support to sdesc 2015-06-13 19:37:10 -04:00
Travis McArthur 81e7c05463 Add ACL support to wallops 2015-06-13 19:36:30 -04:00
Travis McArthur 421400f552 Add ACL to adminchat 2015-06-13 19:35:46 -04:00
Travis McArthur 9dffcf6885 Add ACL support to addomotd 2015-06-13 19:34:51 -04:00
Travis McArthur 6578b8bfaa Add ACL Protection to addmotd 2015-06-13 19:33:23 -04:00
Travis McArthur 8bb239bc88 Add ACL checks for sapart 2015-06-13 19:28:11 -04:00
Travis McArthur 2d622996ad Fix typo 2015-06-13 19:28:04 -04:00
Travis McArthur 95edb5aebb Add oper ACL permissions for samode command 2015-06-13 19:22:46 -04:00
Travis McArthur 6d67bc8e79 Add oper permissions for sajoin 2015-06-13 19:22:02 -04:00
Bram Matthys 26e0409c4e Generate larger cloak-keys by default (may not be terribly useful, but why not..). 2015-06-13 16:26:59 +02:00
Bram Matthys a0d3756a8b Removed set::pingpong-warning (warning is always off now) 2015-06-13 16:13:23 +02:00
Bram Matthys 556f40dd6c New syntax is now: webirc { mask 1.2.3.4; password "something"; };
And old style (todo: remove?) is: webirc { type old; mask 1.2.3.4; };
2015-06-12 20:28:51 +02:00
Bram Matthys 501daede0c move cgiirc block to webirc module and rename the block to webirc { } 2015-06-12 20:16:26 +02:00
Bram Matthys c256702c23 Update Donation file. 2015-06-12 10:24:15 +02:00
Bram Matthys e29ef414bd erase src\modules\extbans\*.dll on nmake .. CLEAN 2015-06-11 17:16:18 +02:00
Bram Matthys 66ae6f9f0e whoops.. almost forgot someone ;-) 2015-06-10 12:52:31 +02:00
Bram Matthys d4cd92f359 done now. i hope. 2015-06-10 12:29:20 +02:00
Bram Matthys 801910d916 print out a note to windows non-GUI users (running as a service) & old config file 2015-06-10 12:21:19 +02:00
Bram Matthys 0763355062 Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-06-10 12:14:57 +02:00
Bram Matthys da93d97325 rewrite the first part of release notes 2015-06-10 12:14:35 +02:00
Bram Matthys 7f675a8663 prepare for 3.4-alpha3 2015-06-10 11:52:44 +02:00
Travis McArthur d1b3cb96bc Merge pull request #27 from Zoddo/numeric-396
Send RPL_HOSTHIDDEN on host changes
2015-06-09 10:45:50 -07:00
Bram Matthys f91c87b25e bit more verbose conversion log 2015-06-08 11:05:03 +02:00
Bram Matthys dbda0eb419 Ask Windows users if they want to automatically upgrade the configuration file(s) [GUI mode] 2015-06-08 10:09:51 +02:00
Bram Matthys a3212e0f65 Make windows compile & install again. 2015-06-08 08:53:45 +02:00
Bram Matthys cb1cb2863c Fix Windows compile (C99..) 2015-06-08 08:40:58 +02:00
Bram Matthys e1b7c34c96 Fix various warnings, including one reported by Adam: possible crash in aliases (introduced 1-2wks ago) 2015-06-07 22:07:00 +02:00
Bram Matthys 0a1ce10e2f Detect possibly old 3.2.x style conf, tell user to run ./unreal upgrade-conf 2015-06-07 19:51:18 +02:00
Bram Matthys bd1747f5c4 Added './unreal upgrade-conf': this will upgrade your 3.2.x configuration files to 3.4.x syntax.
Original file is (of course) backed up as .conf.old.
Currently handled changes in this upgrade: loadmodule, me, link, throttle, spamfilter, allow, vhost, oper.
I think those are all right now. Please report any failures / strange issues on bugs.unrealircd.org
2015-06-07 19:34:21 +02:00
Bram Matthys 1dec4c5a98 remove old files: .hg* is unused as we use git,
update/.UPDATE/.CONFIG.RANT/etc is very old,
INSTALL.REMOTEINC is no longer necessary as ./curlinstall takes care of everything
2015-06-05 15:50:39 +02:00
Bram Matthys de59bf47ef Move all built-in extended bans to modules/extbans/... 2015-06-05 15:38:01 +02:00
Bram Matthys 0994c9431f I blame the name.. 2015-06-03 11:11:21 +02:00
Bram Matthys a48a7f81b6 Ensure nobody uses the oper block from the example conf as-is. 2015-06-03 11:10:21 +02:00
Bram Matthys cbc898b4c1 set::throttle has been moved. Use set::anti-flood::connect-flood <connections>:<period> instead. 2015-06-03 11:04:46 +02:00
Bram Matthys 45e46d9bdc blah 2015-06-03 10:41:39 +02:00
Bram Matthys 678268f2a3 Allow multiple masks in link::incoming::mask
Make linking code use unreal_mask functions as well. Some fixes.
2015-06-03 10:39:33 +02:00
Bram Matthys 6ef0069cd6 secure by default: set::oper-only-stats now defaults to "*" 2015-06-03 09:59:20 +02:00
Bram Matthys e49563fc7c Ugly oper::from::userhost is now oper::mask, vhost::from::userhost is now vhost::mask.
Coders: added generic mask functions: unreal_mask_match(), unreal_add_masks() and unreal_delete_masks().
These deal with one or multiple masks and do all the work for you ;)
2015-06-03 09:57:24 +02:00
Bram Matthys c107eeff85 Three allow block changes: 1) require just one of allow::hostname and allow::ip,
2) warn if using both allow::hostname and allow::ip (as in old 3.2.x confs),
3) require allow::maxperip as we don't want anyone forget setting this
2015-06-03 08:51:09 +02:00
Bram Matthys dc4ae019a3 new example conf (work in progress, actually) 2015-06-03 08:49:55 +02:00
Bram Matthys 5d8ffe2aa9 Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-06-02 21:36:36 +02:00
Bram Matthys 0e9bdce4b0 Initial work on 3.4-alpha3 release notes. 2015-06-02 21:35:59 +02:00
Travis McArthur c1a402c85e Add initial permission syste hooks for whois - more later 2015-06-01 22:53:42 -04:00
Travis McArthur 6cb5cbfc06 Remove unnecessary cptr in ACLs 2015-06-01 22:44:49 -04:00
Bram Matthys bb56b6acf2 config.sub & config.guess moved to autoconf/ in previous commit.
Now actually update them (from 2001-06-08 to 2015-03-08, hmm!)
2015-06-01 21:18:23 +02:00
Bram Matthys f81d22076c Add configure check and compile with pthreads 2015-06-01 21:16:44 +02:00
Bram Matthys 93c0521605 Fix silly bug in only-sending-to-3.4.x for 'posix'&'simple' spamfilters. Rename oper priv 'kline:global' to 'gline' 2015-06-01 16:42:02 +02:00
Bram Matthys b96c711aa6 Only send TRE spamfilters ('posix') to 3.2.x servers. Print out a warning if using the new 'regex' or 'simple' types if running a mixed 3.2.x/3.4.x network (or any version older than a few days, actually) 2015-06-01 10:49:04 +02:00
Bram Matthys 44dd384904 Fix /SPAMFILTER del 2015-06-01 10:24:30 +02:00
Bram Matthys 0eb9c9a36b PCRE2: enable JIT, free when no longer needed, fix & improve error message when an invalid regex is specified 2015-06-01 10:09:25 +02:00
Bram Matthys 2b5051710d Merge branch 'unreal34' of github.com:unrealircd/unrealircd into unreal34 2015-06-01 09:52:15 +02:00
Bram Matthys ecd06aa530 Now actually use PCRE2. 2015-06-01 09:51:33 +02:00
Travis McArthur 090faaccf9 Fix raw entry logic, fix descent logic 2015-06-01 03:29:24 -04:00
Travis McArthur 2cacfa1d27 Fix bug with one node paths for oper class 2015-06-01 02:34:25 -04:00
Travis McArthur a72ce0017e Add additional TKL checks 2015-06-01 02:34:13 -04:00
Travis McArthur b6329b3b44 Remove test statements, fix logic error 2015-06-01 02:24:52 -04:00
Travis McArthur d640ca84ee G:line uses operclass along-side classic system 2015-06-01 02:16:04 -04:00
Travis McArthur 1f9677a199 Fix several bugs in operclass system 2015-06-01 02:14:18 -04:00
Travis McArthur 574297054c Modify verification function calls 2015-06-01 00:38:50 -04:00
Travis McArthur 01f997f917 Allow opers to have oper-class 2015-05-31 23:41:57 -04:00
Travis McArthur adf8a61625 Add support for adding/removing validators 2015-05-31 23:19:08 -04:00
Travis McArthur 1726669f67 Fix memory leak 2015-05-31 22:31:55 -04:00
Travis McArthur 8db6d406a1 [0004326] - Fix by hyperi0n for chmode unload prob 2015-05-31 22:04:16 -04:00
Travis McArthur 3b98eac4a9 Remove unnecessary gotos 2015-05-31 21:46:32 -04:00
Travis McArthur 7ca84567fe Add oper ACL evaluation system
Still requires module and core hooks to be added, config test to be added, and to require these for perm validation - this enables core parser and querying of system though
2015-05-31 17:20:28 -04:00
Travis McArthur d4bb75cd39 Add oper class parser and structs 2015-05-31 17:20:28 -04:00
Bram Matthys 547b2d69d0 Build with PCRE2 (not used yet). Enhance SSL build error (may need more fixing). 2015-05-31 21:47:11 +02:00
Travis McArthur ffe6877fbe Clean up unnecessary stuff 2015-05-30 22:14:45 -04:00
Bram Matthys 58bd3cf60b Preparations for #4356 (experimental / on-going):
* add general matching framework (aMatch type, unreal_match_xxx functions)
* change spamfilter { } block syntax
* add support for simple wildcard matching (non-regex, just '?' and '*')
This is the initial commit so the new lib is not in yet, 'regex' is not
functional (but 'posix' and 'simple' are working), linking has not been
fully tested and no warnings are printed yet. IOTW: work in progress!
2015-05-30 21:11:11 +02:00
Bram Matthys 39c3a03d14 found some more old webtv stuff. 2015-05-27 18:05:04 +02:00
Bram Matthys a109bdb0f6 Rip out the final remains of WebTV (/MSG IRC ..) & change handling of VERSION replies for ban version { }. 2015-05-27 18:00:16 +02:00
Bram Matthys 542ef1acbb move aJFlood * stuff from core to jointhrottle module, using ModData. (as per TODO) 2015-05-27 17:33:53 +02:00
Bram Matthys 822f27f34c Remove "We will loose all flood counters!" message upon /REHASH. 2015-05-27 10:41:45 +02:00
Zoddo 9b9a35a155 Send numeric 396 on host changes 2015-05-27 00:15:29 +02:00
Bram Matthys 1f805a247b Add link to https://www.unrealircd.org/docs/Upgrading_from_3.2.x in (likely 3.2.x conf) errors. 2015-05-25 17:16:19 +02:00
Bram Matthys bcbc3fd082 Fix crash with new block (that's 1..). Reported by dg (#4353). 2015-05-25 16:59:48 +02:00
Bram Matthys efdefc4eb8 mute non-SSL warning for localhost (won't bother about other cases) 2015-05-25 13:14:44 +02:00
Bram Matthys 04727556c7 Show warning if non-SSL. Improve link error (on authentication failure). Auto-convert link::incoming::mask from like '1.2.3.4' to '*@1.2.3.4'. 2015-05-25 13:06:18 +02:00
Bram Matthys db97b23bcb move to a single password entry in link block:
"password in link block should be plaintext OR should be the SSL fingerprint of the remote link (=better)"
2015-05-25 10:54:05 +02:00
Bram Matthys a1b3b9e1b9 quickly fix ssl ;) 2015-05-25 10:27:39 +02:00
Bram Matthys 8049136379 Restructure the entire link { } block (#4032). Initial commit (missing autoconnect, ssl, etc). 2015-05-25 10:19:15 +02:00
Bram Matthys 0a42cedf77 Bounce links that have their clock too far out of sync (#4214). Currently set at 1 minute. TODO: make configurable.
This only works with newer servers as it relies on PROTOCTL TS=xyz very early in the synch.
2015-05-24 16:16:31 +02:00
Bram Matthys c2ca896dea Add new flag MOD_OPT_PERM_RELOADABLE. Can be used instead of MOD_OPT_PERM if
you want to permit re-loading but not complete un-loading of your module.
This way you get the benefits of being able to upgrade code on-the-fly but
can still disallow the user to do something potentially unwise.
2015-05-23 20:43:31 +02:00
Bram Matthys 1e8c2c0141 dead_link() can now deal with cases where it's called more than 1 time for the same (soon-to-be-dead) client 2015-05-23 20:08:34 +02:00
Bram Matthys d386650f49 set throttling to 3 per 60 seconds by default (in case you have no set::throttle block) 2015-05-23 19:08:37 +02:00
Bram Matthys 3623ebae05 Add protection against SSL Renegotiation attacks (#4046). Reported by seraph.
Also expose dead_link() to modules, IOTW: make it non-static.
2015-05-23 19:04:41 +02:00
Bram Matthys c66d213748 Module coders: HOOKTYPE_RAWPACKET_IN: third argument is now int * rather than int so you can change the length (and readbuf is of 8K size, so should be plenty). Requested by s0beit in #4250. 2015-05-23 17:47:47 +02:00
Bram Matthys c6fea92257 Port fix #4318 from 3.2.x:
For services who allow you to log in by account name but still allow you to
use a different nick: when you're logged in you are now considered
registered as far as channel mode +M (only registered users may speak and
+R (only registered users may join) are concerned. Same for user mode +R
(only allow private messages from registered users).
Tech: whenever services set SVID and it's not * and does not start with a
      number, then we consider this user to be 'logged in'.
      Whenever a user is set +r (s)he is also considered 'logged in'.
      This way it's compatible with both older and new services and doesn't
      introduce security issues with older services using servicetimestamp
      for nick tracking or other means.
This issue was reported by ShawnSmith (#4318).
2015-05-23 17:06:44 +02:00
Bram Matthys 29f4d5d540 './unreal mkpasswd' now has 3 possible syntaxes:
1) No arguments: UnrealIRCd will prompt you to enter a password and hash
   it with the bcrypt algorithm. This is the recommended method.
2) One argument: It will hash the provided password with bcrypt
3) Two arguments: It will use the hashing algorithm of your choice (1st arg)
   to hash the provided password (2nd arg)
We recommend to use syntax #1 as bcrypt is the best algorithm available and
by using the prompt the password won't end up in your bash history (or
whatever shell you use) and can't be snooped by other people with a shell
on the same machine (by looking at the process list)
2015-05-23 16:49:11 +02:00
Bram Matthys d5caf06ec5 bcrypt password hashing is now implemented (#4335). Not yet documented. 2015-05-23 16:38:48 +02:00
Bram Matthys 56911cad3c Fix windows packager: removed an #endif and removed references to Changes 2015-05-23 16:18:11 +02:00
Bram Matthys d8858458a4 fix win32 build now Changes is gone. Hmm. need to clean this up. 2015-05-23 16:16:32 +02:00
Bram Matthys 6e48ddf3f9 add autodetect for AUTHTYPE_SSL_CLIENTCERTFP 2015-05-23 15:19:44 +02:00
Bram Matthys 4a38d0c838 make auth-type optional for passwords in config (#4334).
Now you can just add password "$ZaJw56to$uSEc[etc..]"; to your configuration file without needing an explicit { md5; }; or { sha1; };.
Naturally you can still specify an auth-type if you want to, and for types like 'sslclientcert' it's still required.
2015-05-23 15:07:37 +02:00
Bram Matthys 10af800c43 ./createchangelog is no longer used 2015-05-23 14:20:58 +02:00
Bram Matthys d12b6962a5 convert to more understandable code 2015-05-23 09:50:45 +02:00
Bram Matthys 6e886d8dac whoops.. final cleanup. really. 2015-05-23 09:31:20 +02:00
Bram Matthys af551ba491 more cleanups in src/auth.c, and don't require 'para' in Auth_Check() if we don't use it (eg: client certs) 2015-05-23 09:27:21 +02:00
Bram Matthys 8e43418775 get rid of win32-dependent code, not needed anymore as we have (Open)SSL on Windows as well 2015-05-23 09:17:21 +02:00
Bram Matthys bd65916b5a more cleanups for AUTHENABLE_* 2015-05-23 09:15:24 +02:00
Bram Matthys 5c0e2b59e1 cleanup part I: remove #ifdef's for AUTHENABLE_*, as all of them will be available now we require (Open)SSL 2015-05-23 09:11:28 +02:00
Bram Matthys 4ca497ffef Merge pull request #26 from dboyz/auth-certfp
Do authentication using certfp obtained from moddata
2015-05-23 09:00:59 +02:00
Bram Matthys fd4acdc832 Document MD server command (module data / meta data). 2015-05-21 19:37:23 +02:00
dboyz a8f2e08ef8 Initialize variable and some fixes (don't blindly copy paste) 2015-05-21 11:00:06 +08:00
dboyz 0361248fc3 Provisional code to authenticate based on certfp based on moddata 2015-05-21 09:25:14 +08:00
Travis McArthur 2dc8cb9e84 Allow win32 SSL inconsistencies
Fix issue in previous commit
2015-05-20 02:57:14 -04:00
Travis McArthur aea09603a4 Remove USE_SSL macro and associated code
We no longer support non-SSL builds, remove related code
2015-05-20 02:48:34 -04:00
Travis McArthur 229bcca996 Remove Custom MD5 Implementation
We no longer support builds without OpenSSL - consequently we have no reason to keep our custom MD5 implementation, and probably shouldn't keep it around
2015-05-20 02:33:48 -04:00
Travis McArthur 68b4f42a52 Merge pull request #24 from dboyz/auth_findtype-fix
Make auth_findtype case insensitive (#4343)
2015-05-19 10:51:31 -07:00
Adam 6b7776cb1c Fix core from parse_v4_netmask parsing invalid cidrs 2015-05-19 13:41:59 -04:00
Adam bc02d95f33 Ignore svsnicks when the new nick is the same as the old one 2015-05-19 13:41:51 -04:00
dboyz 09c71fc5f9 Make auth_findtype case insensitive 2015-05-20 00:42:32 +08:00
Bram Matthys b17245d9a1 remove hate from Makefile 2015-05-19 17:41:51 +02:00
Bram Matthys cafaebff3f update release notes & delete Changes file 2015-05-19 17:41:23 +02:00
Bram Matthys 4b8d5ac3ba Always build with OpenSSL. NON-SSL builds are no longer supported. 2015-05-19 17:32:37 +02:00
Bram Matthys 32aeb1fa6c ModData: only broadcast changes if sync==1. Fix return value of moddata_client_set(). 2015-05-19 12:00:12 +02:00
Bram Matthys b7d11d3e0f Get rid of implicit declarations due to missing header file(s), now including unrealircd.h instead. 2015-05-19 11:57:04 +02:00
Bram Matthys 0391987147 update release notes for alpha2 2015-05-19 11:51:03 +02:00
Bram Matthys 9da1988375 change version to 3.4-alpha2 2015-05-19 11:27:44 +02:00
Bram Matthys 5ff5e01aa2 Rename moddata_client_XXX_string to moddata_client_XXX 2015-05-19 11:22:11 +02:00
Bram Matthys 7ad4b6db67 Module coders: introduce moddata_client_set_string() and moddata_client_get_string(). Will document later in ModData wiki page (which does not exist yet). 2015-05-18 17:15:02 +02:00
Bram Matthys 222c780d64 broadcast cert fingerprint on connect 2015-05-18 17:01:04 +02:00
Bram Matthys e8888bae53 Update windows makefile to build modules/certfp 2015-05-18 16:53:26 +02:00
Bram Matthys f9fb628aed Implemented certificate fingerprint: available through /WHOIS and synch'ed network-wide (via ModData system). Thanks to DBoyz and Nath (#4136) for the contributed patches. Initial commit (but it works). 2015-05-18 16:48:41 +02:00
Bram Matthys 28c2e83cc4 actually call moddata_free_client() :) 2015-05-18 16:48:24 +02:00
Bram Matthys fa38dbf9e6 Added HOOKTYPE_WHOIS. May later be replaced by a more advanced system. 2015-05-18 16:45:31 +02:00
Bram Matthys 6f4ea900c1 Fixed pointer confusing in ModData system and made UnrealIRCd free all client ModData structures on client exit. 2015-05-18 16:42:01 +02:00
Bram Matthys 347609d958 Fix uninitalized read @ censor 2015-05-18 16:26:57 +02:00
Bram Matthys d927dd3cd0 Delete old leftovers: newnet, ircdreg, rehash, killircd. Reported by katsklaw (#4342) and others. 2015-05-18 12:58:04 +02:00
Bram Matthys a5dc160024 Self-signed certificates generated with 'make pem' are now 4096 bits and valid for 10 years. Also use SHA256 for signing. 2015-05-18 12:24:55 +02:00
Bram Matthys 8f7886d9c7 init_ctx_client() was accidentally setting options on ctx_server. Reported by Jobe (#4346). 2015-05-18 12:12:24 +02:00
Travis McArthur 5d42ac844f [0004349] Fix OOB read - reported by dg
Verified it doesn't appear to be security issue
2015-05-17 12:24:02 -04:00
Travis McArthur fb58482c4b [0004348] Reported by janicez - Fix G:line cmd
Parsing of commands based on permissions was incorret - if a command was not a user facing command explicitly, it would be denied for a user, furthermore if it was a server issuing the command, and it also was an oper command, it would be denied for similar reasons - corret parsing now in place.
2015-05-14 02:06:50 -04:00
Travis McArthur 1ea14aa2ea Merge pull request #20 from asterIRC/unreal34
Fix hostmask not being sent as part of delayjoin
2015-04-30 12:28:30 -07:00
Travis McArthur dad74daf0e Merge pull request #18 from dboyz/patch-2
Add missing include, resolves compile error
2015-04-29 18:07:20 -07:00
Unreal3.4 a6403e09b3 Uh. Well, I noticed a compilation error in the Git alpha, decided to mess with permanent.c, noticed that delayjoin.c didn't really work properly, modified delayjoin.c to send hosts with unhiding users, and here you have, a pull request from your worst nightmare. 2015-04-29 20:14:45 +00:00
Bram Matthys 8caec780e4 modules can now simply include "unrealircd.h" rather than include various
files in a specific order and risk missing ones..
2015-04-25 13:34:29 +02:00
Daniel Tan 7be77080ea Add missing include, fixes compile error 2015-04-24 18:31:45 +08:00
Travis McArthur 4f59d6dbe7 Merge pull request #17 from dboyz/patch-1
Add missing permission error message as reported in rabbitircd
2015-04-22 00:27:18 -07:00
dboyz 42214ebdf3 Add missing permission error message as reported in rabbitircd
This is the exact commit I made to rabbitircd two years ago. Since the permission error is still missing, why not port it back to unrealircd. :)
2015-04-22 07:44:53 +08:00
Travis McArthur e535637621 Merge pull request #15 from Sp1l/unreal34
Fix build with LibreSSL
2015-03-10 07:51:36 -07:00
Bernard Spil 07e707ae5b Fix build with LibreSSL
LibreSSL has removed RAND_egd completely, this patch adds RAND_egd
detection to configure and adds HAVE_RAND_EGD checks to the code where
required.
2015-03-10 11:55:37 +01:00
Travis McArthur 6c159756b4 Merge pull request #12 from Adam-/unreal34+secureinitializers
Fix secureonly
2014-08-26 08:12:02 -07:00
Adam 996c084d6f Fix secureonly 2014-08-26 10:46:45 -04:00
Travis McArthur 8035168d5f Move TKL checking back into run loop 2014-08-24 09:43:40 -07:00
Travis McArthur 3c42268604 Fix typo in config - oops 2014-08-23 23:01:24 -07:00
Travis McArthur 496826f42c Make floodprot perm
Modules that take parameters to chanmodes cannot be unloaded at this time, we probably want to investigate adding this capability in the future so we can do dynamic updates of those modules
2014-08-22 21:36:15 -07:00
Travis McArthur b0f6a9e50c Add travis-ci config 2014-08-21 08:47:00 -07:00
Travis McArthur cea0a16bd0 Remove failure case if ircd not booted and logging fails
Modules or other resources could call ircd_log even if we are not fully booted, and we need to not fail in that situation, instead we should just emit the same warnings we usually do.
2014-08-18 08:25:35 -07:00
Travis McArthur 786b650f9c Add additional recursion checking/fix recursion checking 2014-08-18 07:52:04 -07:00
Travis McArthur c780691c43 Reported by Adam-, add recursion checking to ircd_log 2014-08-17 21:12:28 -07:00
Travis McArthur e365d9a721 Merge pull request #9 from hyperi0n/patch-1
Fix example.fr.conf defer-accept example
2014-08-01 11:16:57 -07:00
hyperi0n ef05be9430 add missing ; in listen block 2014-08-01 19:22:41 +02:00
Travis McArthur 5a7358a227 Merge pull request #8 from Adam-/unreal34+uid
Don't allow changing sid from rehash.
2014-08-01 07:41:56 -07:00
Adam 5a90859cee Don't allow changing sid from rehash.
Not sure how this was supposed to originally work, if the sid is changed
the uid generator is not re-initied, and even if it was it would allow
id collisions if it ever uplinked to another ircd with the old id it
had.

I see no reason for this.
2014-07-30 11:31:19 -04:00
Travis McArthur be37004c25 Merge pull request #6 from Adam-/unreal34+ssl
Fix build with no ssl
2014-07-29 15:05:52 -07:00
Travis McArthur 640961201d Merge pull request #7 from Adam-/unreal34+warning
Fix a couple of the worst clang warnings
2014-07-29 15:02:37 -07:00
Adam c25442901b Fix a couple of the worst clang warnings 2014-07-29 17:53:19 -04:00
Adam 7887c1bd60 Fix build with no ssl 2014-07-29 17:48:20 -04:00
Travis McArthur 54578a5287 Merge pull request #4 from Adam-/unreal34+starttls
Fix abort from STARTTLS
2014-07-29 13:02:49 -07:00
Adam 0920c1e160 Fix abort from STARTTLS 2014-07-29 15:58:38 -04:00
Bram Matthys 5428c5cab2 Merge pull request #3 from Adam-/unreal34+cap
Just build the cap list once, fix memory leaks
2014-07-29 21:56:32 +02:00
Bram Matthys f12d8627d0 Merge pull request #1 from Adam-/unreal34+exampleconf
Fix example.conf defer-accept example
2014-07-29 21:35:45 +02:00
Adam d540adbc7f Just build the cap list once, fix memory leaks
Not sure what this originally was supposed to do, but clicap_find is
normally called multiple times per cap request per client, so this makes
no sense at all.
2014-07-29 15:29:28 -04:00
Adam 0e2a15ddab Fix example.conf defer-accept example 2014-07-29 15:26:25 -04:00
Bram Matthys ebdbc91f63 update links 2014-07-29 11:44:29 +02:00
Bram Matthys 32ada3f932 Initial version, for use on github. 2014-07-29 11:43:00 +02:00
Travis McArthur 3f9aef57db Add documentation for set::link::bind-ip 2014-07-28 21:24:43 -07:00
Bram Matthys c3b35366e4 update version to 3.4-alpha1 -- even if docs are not updated, hmm :D 2014-07-26 17:26:48 +02:00
Bram Matthys f92034921e Update curl-ca-bundle from Dec 29 20:03:40 2012 to Tue Jul 15 08:33:20 2014 2014-07-26 17:25:55 +02:00
Travis McArthur 869014ed82 Merge initializer fixes 2014-07-22 06:35:24 -07:00
Travis McArthur f4c68a3a66 Fix initializers 2014-07-22 06:33:33 -07:00
Bram Matthys 20e9da6dff When users connect they will receive a message telling them this IRC Server
software is experimental and that they should report any bugs or problems
on http://bugs.unrealircd.org/
2014-07-22 14:08:05 +02:00
Bram Matthys 8b05f023fa fix no return value being returned from secureonly module: caused windows
version not being able to join any channel...
2014-07-20 21:36:06 +02:00
Bram Matthys 220e0c01e4 fix missing initializers 2014-07-20 21:29:07 +02:00
Bram Matthys ee00bb2801 oh come on... 2014-07-20 21:26:36 +02:00
Bram Matthys 7e1595dacb fix strange re-using of 'i' and uninitialized use of it. 2014-07-20 21:22:04 +02:00
Bram Matthys 4757156f26 mention chan mode +d in release notes 2014-07-20 19:18:59 +02:00
Bram Matthys 40a46f5019 prepare for alpha1 2014-07-20 19:16:17 +02:00
Bram Matthys 927b5f7bf8 update some documentation, but not much... add warning that docs are not up
to date with regards to 3.4.x development, and all translations are out of
date.
2014-07-20 18:57:42 +02:00
Bram Matthys b4519cf3d7 wording.. 2014-07-20 17:49:47 +02:00
Bram Matthys 94a6305880 Added config_report_ssl_error() which is now used when we failed to (re)initialize
SSL, may print a bit more meaningful errors (though rather long and obscure).
2014-07-20 17:45:58 +02:00
Bram Matthys a51479b614 Win32: Fix SSL error not showing up in dialog box (was logged to ircd.log, though..) 2014-07-20 17:31:15 +02:00
Bram Matthys f2db4e4598 Always (attempt to) write config warnings and errors to the log file. This
fixes issues like the IRCd mysteriously not being able to boot up without
any error message, both on *NIX and Windows.
2014-07-20 17:25:22 +02:00
Bram Matthys 9c2d59d99b inno setup: USE_SSL by default 2014-07-20 17:13:26 +02:00
Bram Matthys 1dba0bfc43 forgot to include one module in the win32 makefile (floodprot) 2014-07-20 17:12:44 +02:00
Bram Matthys 11d7b49130 Deny booting/rehashing if using SSL in listen or link blocks. 2014-07-20 17:08:54 +02:00
Bram Matthys 7ba2e3214c First attempt at allowing server to boot if SSL is enabled but the
server/client SSL context failed to load (eg: no cert/key file).
2014-07-20 16:50:29 +02:00
Bram Matthys 1a67489368 update win32 makefile so 3.4 actually compiles 2014-07-20 16:25:59 +02:00
Travis McArthur ec294b1373 Fix build for clang 2014-07-05 12:47:03 -07:00
Travis McArthur 63cb121130 Modularize secureonly (+z) 2014-07-04 21:13:08 -07:00
Travis McArthur 3710fb67c4 Modularize regonlyspeak (+M), slightly modify can_send hook 2014-06-29 12:12:36 -07:00
Travis McArthur fdeb6f06bf Modularize nokicks (+Q) 2014-06-29 00:52:40 -07:00
Travis McArthur 866c835a6f Remove unnecessary CMD_FUNC calls 2014-06-29 00:21:29 -07:00
Travis McArthur 2519f9d3ac Modularize nonickchange (+N) 2014-06-29 00:21:17 -07:00
Travis McArthur 2e10afdd9c Modularize channel mode +R, reg only - temporarily remove some logging 2014-06-29 00:01:50 -07:00
Travis McArthur 334763c21c Modularize nonotice (+T) 2014-06-28 23:34:14 -07:00
Travis McArthur aebab04b21 Fix missed renames 2014-06-28 22:52:33 -07:00
Bram Matthys 110a3f6bfe update coders 2014-06-28 22:28:06 +02:00
Travis McArthur 8169c34a64 Change error messages for bad access in modes 2014-06-07 21:09:49 -07:00
Travis McArthur d18f9ecfa1 Fix bug in module permissions 2014-06-07 20:56:50 -07:00
Travis McArthur f49d4286cf Update permissions to several modules 2014-06-07 20:47:29 -07:00
Travis McArthur 5e657e5985 Modularize adminonly (+A) 2014-06-07 20:35:19 -07:00
Travis McArthur 5924674c3f Remove unnecessary hook added (oops!) 2014-06-07 20:33:57 -07:00
Travis McArthur 74ab4f51c8 Fix permissions for +O 2014-06-07 20:25:17 -07:00
Travis McArthur df4597b869 Modularize operonly (+O) 2014-06-07 19:37:25 -07:00
Travis McArthur e2c40c7880 Mark delayjoin as official 2014-06-07 00:41:43 -07:00
Travis McArthur b91f683800 Modularize noinvite (+V) and noknock (+K) in one commit since they share functionality 2014-06-06 22:02:40 -07:00
Heero 8cc0724e76 delayjoin: fix issue with timing on join causing bug
added hook for after data creation, before channel join complete
2014-06-05 01:04:31 -07:00
Bram Matthys 71ffba5f3b delayjoin: internal: can store (in)visibility in integer with this module. 2014-06-04 21:01:53 +02:00
Bram Matthys 89a38f8eda Load delayjoin (chmode +D) by default.. good for testing ;) 2014-06-04 20:47:02 +02:00
Bram Matthys 9e7c77f84b rename module to delayjoin 2014-06-04 20:42:46 +02:00
Bram Matthys 8a45b22bad move src/modules/m_moded.c to src/modules/chanmodes/delayjoin.c 2014-06-04 20:41:12 +02:00
Heero 4956d01e34 Add +D/+d and remove +u
Permits users to add +D mode to hide join/part notifications except for +vohaq
until a user speaks
[#2906] Reported by Tranqer
2014-06-04 01:13:22 -07:00
Heero e75cb1709d [4246] Add set::link::bind-ip option to set default bind ip for link blocks 2014-06-03 23:39:30 -07:00
Bram Matthys cffca2c840 m_mdex.c: add calls to send_md_* function to show broadcast effect 2014-06-01 20:11:56 +02:00
Bram Matthys de3f9b9cc2 - Add server synching and broadcast functions for new ModData system.
- Also added an example module for coders (m_mdex), not compiled by default.
2014-06-01 20:06:28 +02:00
Bram Matthys 8af557a25c update win32 makefile for moddata 2014-06-01 17:38:27 +02:00
Bram Matthys 9215970b3a actually commit the moddata.c file ;) 2014-06-01 17:37:51 +02:00
Bram Matthys e21298ea71 - First version of ModData system that allows modules to attach data to
structs such as Client, Channel, Member and Membership.
- Modules that define channel modes no longer need to be permanent. This
  was already true for paramless chmodes, but is now true for all.
- Converted floodprot module (chmode +f) to use MoData. This means some
  remains could be purged from the core and the module is now fully
  reloadable (no longer permanent).
- This code is experimental, but seems to work...
2014-06-01 17:34:16 +02:00
Bram Matthys ec0b431e4f just one 'account-notify' in CAP is sufficient ;) 2014-05-31 16:11:14 +02:00
Bram Matthys d2db300fe8 Fix crash if SASL is enabled and ping-cookie is disabled (neither are the
default). Reported by fbi (#4307).
2014-05-30 11:32:18 +02:00
Bram Matthys 184d63094b re-run autoconf (./Config fix after port..) 2014-05-30 22:58:25 +02:00
Bram Matthys 5415c36407 compile fix after porting all the fixes/etc from 3.2.x. 2014-05-30 22:56:07 +02:00
Bram Matthys 2a2322c31a [Port from 3.2.x] Added set::spamfilter::stop-on-first-match -- 2nd part. 2014-05-30 22:55:07 +02:00
Bram Matthys 14c74561c7 Added set::spamfilter::stop-on-first-match [yes|no]:
By default this is set to 'yes' which means that once a spamfilter matches
UnrealIRCd will take action immediately and any additional (other)
spamfilters will not be processed.
When this is set to 'no' then after the first spamfilter match other
spamfilters will still be checked. All of these matches will be logged and a
message will go to IRCOps (snomask +S) for each one. The affected user,
however, will only see one spamfilter action (eg: block or kill) which will
be the spamfilter with the 'gravest action' (gzline is highest, block and
warn are lowest).
2014-01-20 22:10:27 +01:00
Nathan Phillip Brink bd1ec26a8d - Update the documentation about set::dns::nameserver to reflect reality (that the setting is only used if c-ares can’t read /etc/resolv.conf). 2013-01-27 05:59:50 +00:00
Bram Matthys bf3d8161a3 Added SVIDLEN so this value is now separate from NICKLEN. Previously if you
would lower NICKLEN to 9 then services timestamps would be cut off. Reported
by Jobe (#4248).
2014-01-12 16:40:55 +01:00
Bram Matthys 475a9a9c5f When you specified more than 4 servers in set::timesynch::server you could
experience weird issues such as a flood of 'Cannot accept connections:
invalid argument' messages. Reported by hyper_threader (#4242).
2014-01-12 11:26:29 +01:00
Bram Matthys ef17d28a57 Backport from 3.2.x: For silenced users we will now only check the current
nick!user@host, suggested by Stevie (#2226).
2014-05-30 22:37:32 +02:00
Bram Matthys 7d2dea9256 Fix compile problem on OS X 10.9, reported and patch provided by
JustinTArthur (#4251).
2014-01-12 10:20:04 +01:00
Bram Matthys d7c198cc82 Secure server to server links were previously hardcoded at SSLv3. This has
been fixed to be 'SSLv3 or later'.  In practice this means that you will now
see a lot more server-to-server links using TLSv1.2.
2014-01-09 21:39:36 +01:00
Nathan Phillip Brink 2f74d6bdec Describe how channel mode +d (Deaf) still intentionally allows bot commands through, thanks Dan39. 2013-12-05 05:20:51 +00:00
Nathan Phillip Brink 51dbf20dc2 Allow set::channel-command-prefix to be an empty string. 2013-12-05 05:19:45 +00:00
Bram Matthys 564eef1688 Fix './unreal backtrace': on more recent gdb versions or in languages other
than English not always all tmp/*.so files were added. Therefore the
backtrace was often (much) less informative. We now use a different method.
2014-03-30 15:57:16 +02:00
Nathan Phillip Brink 98f7a8a80c Update .hgignore to cover more of autotools and support testing unrealircd by running it out of the repository directory directly. 2013-12-05 05:14:06 +00:00
Bram Matthys f26f9ea6e0 Fix curlinstall script (updated c-ares version) 2013-11-25 20:35:16 +01:00
Bram Matthys 034d2b239d fixed typo preventing a compile, reported by rfrederick (#4245). 2013-11-24 20:22:56 +01:00
Bram Matthys 559bdcbc48 Fix for OS X so it can actually compile. Reported by QIXOZL (#4236). 2013-11-24 11:30:18 +01:00
Bram Matthys 3ac7306c90 Update curl-ca-bundle with a more recent version 2013-11-22 22:16:53 +01:00
Bram Matthys 81c82839cc Port from 3.2.x: Small watch fix 2014-05-30 22:28:52 +02:00
Bram Matthys 1074b18e1f Update c-ares library to 1.10.1 (tar.gz) 2014-05-30 22:27:17 +02:00
Bram Matthys 9da678af45 Update c-ares library to 1.10.1 2013-11-20 12:53:19 +01:00
Bram Matthys ba08bed3cd Port from 3.2.x: "Various fixes, more info later." 2014-05-30 22:26:19 +02:00
Bram Matthys 126795a3e3 Rejoining because of user@host change -> Changing host (Techman, #4232) 2014-05-30 19:31:16 +02:00
Bram Matthys 26b0c6f9e7 some updates for 3.4.x (the commit rules applied mostly to 3.2.x) 2014-05-30 17:59:06 +02:00
Bram Matthys 65d5569ef0 First attempt at parse_chanmode(), meant for 3rd party module coders.. and
who knows it may be useful for ourselves too.
2014-05-29 22:05:15 +02:00
Bram Matthys d4271a0c72 Fix for when DEFAULT_PERMISSIONS is set to 0. 2014-05-19 09:58:57 +02:00
Bram Matthys 101d2dd6a3 Big 3.4.x commit containing bug fixes and enhancements. Modularizing
user & channel modes. Fixing Windows build. Etc..
2014-05-11 20:56:02 +02:00
Thomas Fargeix 4008883f9c French doc:
- document SID config option (r0081b23f5e19)
- Add permanent channel mode.  (#4117) (r6a1cc53d377e)
- Remove AKILL/RAKILL commands. (#3662) (r5ec482aabf80)
2013-05-25 01:50:44 +02:00
William Pitcock 8944ebc093 - m_cap: fix nospoof bypass (#4222) 2013-09-21 06:08:00 +00:00
William Pitcock 1b9ced7332 - another pass at release notes for alpha1 2013-05-25 11:28:52 +00:00
William Pitcock a9415f39d3 - bump UnrealProtocol to 2312 for deny version blocks 2013-05-25 11:19:54 +00:00
William Pitcock 95137d435a - use SIDs and UIDs in server burst entirely if possible 2013-05-25 11:17:17 +00:00
William Pitcock e27e2db8e1 - m_sjoin: do not leak UIDs in netjoin to users 2013-05-25 11:04:35 +00:00
William Pitcock e39903554a - fix vmakebuf_local_withprefix() sizeof bug 2013-05-25 10:57:24 +00:00
William Pitcock 881d79e5b5 - more UID vs. non-UID translation 2013-05-25 09:52:35 +00:00
William Pitcock 8e450fccab - m_part: translate between UID and non-UID. 2013-05-25 09:47:42 +00:00
William Pitcock 56c6c504d1 - m_join: translate between UID and non-UID 2013-05-25 09:45:33 +00:00
William Pitcock cb35cfd306 - m_sjoin: translate between UID and non-UID. 2013-05-25 09:41:40 +00:00
William Pitcock 24363fd276 - fix typo 2013-05-25 08:20:53 +00:00
William Pitcock 91f4e1591d - sendto_message_one(): translate ID to nickname for non-SID servers 2013-05-25 02:03:49 +00:00
William Pitcock bdf6ecf552 - fdlist: do not update the backend if it is not actively tracking an FD 2013-05-25 00:30:38 +00:00
William Pitcock 349259eecb - remove check for -fno-strict-aliasing, we no longer need it 2013-05-24 23:32:55 +00:00
William Pitcock ff2b229663 - fix type-punning in decode_ip(). (#4205) 2013-05-24 23:21:17 +00:00
William Pitcock f5cfafb94e - ssl: include prototype for start_of_normal_client_handshake(). 2013-05-24 23:16:37 +00:00
William Pitcock 17f2ac31c5 - warning fixes 2013-05-24 23:13:32 +00:00
William Pitcock 7193b84876 - remove fdmaxcounter.c which seems not to be connected to anything 2013-05-24 22:54:22 +00:00
William Pitcock 7f01bc731d - use strlcat() instead of strncat() in send.c 2013-05-24 22:49:35 +00:00
William Pitcock 8e74fc64a5 - add valgrind suppressions file 2013-05-24 22:35:00 +00:00
William Pitcock 34cb24c62e - assorted warning fixes from clang 2013-05-24 22:15:20 +00:00
William Pitcock 2fb644e0ba - crule: evaluate currarg correctly 2013-05-24 22:05:18 +00:00
William Pitcock 3ba3e9d859 - GetIP() is used by strlcpy(), which must never be passed NULL. Cop out and use "255.255.255.255" if we don't know the IP. 2013-05-24 22:03:33 +00:00
William Pitcock 77c3cec8ce - sprinkle some asserts 2013-05-24 22:02:48 +00:00
William Pitcock 29027a21b6 - fix arbitrary write in sendto_common_channels(). 2013-05-24 21:50:32 +00:00
William Pitcock 5980dda3d1 - fix some various warnings 2013-05-24 21:02:55 +00:00
William Pitcock 63b56b04fb - clean up exit_client() more 2013-05-24 20:56:04 +00:00
William Pitcock 751306f3e3 - refactor exit_client() 2013-05-24 20:44:20 +00:00
William Pitcock 5cc6b4ae9b - move anUser struct over to memory pool, fix refcounting 2013-05-24 19:53:25 +00:00
William Pitcock c2a79026e2 - clean up an SID leak 2013-05-23 23:10:50 +00:00
William Pitcock 1f3cea4384 - fix UID handler 2013-05-23 23:08:33 +00:00
William Pitcock 85d4ff89b9 - burst: fix translation from UID to NICK message for UID clients 2013-05-23 22:45:42 +00:00
William Pitcock fcc4d96944 - if umodes is blank, send + 2013-05-23 11:00:46 +00:00
William Pitcock ae46850e2b - send UIDs on burst and new user to PROTO_SID servers. 2013-05-23 10:10:53 +00:00
William Pitcock 7297e91c71 - rewrite sendto_one_nickcmd_butone() to use sendto_server(). 2013-05-23 09:53:45 +00:00
William Pitcock b577128320 - Add UID command handler. 2013-05-23 09:19:21 +00:00
William Pitcock 5e11b7edd2 - update protoctl.txt removing numerics and adding SID token 2013-05-23 08:30:57 +00:00
William Pitcock 473a2dfbee - remove obsolete token.txt 2013-05-23 08:29:21 +00:00
William Pitcock c61d4c9079 - add ID() macro for SID vs UID 2013-05-23 08:18:09 +00:00
William Pitcock 37b6a3e919 - Simplify ircsnprintf(). Patch from FalconKirtaran. (#4211) 2013-05-23 03:42:01 +00:00
William Pitcock 3b29c325c6 - SASL: remove dead/unnecessary code found with coverity 2013-05-21 16:20:40 -05:00
William Pitcock bb93b10e67 - m_pingpong: since we manually hunt ourselves, check against ID too 2013-05-21 08:14:35 +00:00
William Pitcock 2ccaea07b5 - SID command: ensure we use non-SID name as origin on SERVER message (since it's for backwards compat) 2013-05-21 07:46:27 +00:00
William Pitcock 1853eaeeae - Quick attempt at cleaning up the mess for SIDs. 2013-05-21 07:17:39 +00:00
William Pitcock 7f156ad566 - add remote SIDs to ID hashtable 2013-05-21 06:52:45 +00:00
William Pitcock d4ea47eadd - do not send KILL to SIDs if they are unknown 2013-05-21 06:33:56 +00:00
William Pitcock afdf5d780a - Replace ircsprintf() with bounds-checking ircsnprintf(), patch from FalconKirtaran. (#4208) 2013-05-21 06:26:52 +00:00
William Pitcock 42a0071b2b - implement SID handler 2013-05-21 03:42:22 +00:00
William Pitcock 6d63a1b90f - fix regression caused by final stage of TOKEN removal 2013-05-21 02:22:39 +00:00
William Pitcock deeadee885 - find_person() and find_client(): make UID aware. if a Person is passed as the aClient ptr, do not check UIDs. 2013-05-21 02:10:14 +00:00
William Pitcock d7497ed79f - ensure callers of parse_client_queued() are aware of FLUSH_BUFFER 2013-05-21 01:49:54 +00:00
William Pitcock cea686b7fa - more reliably ensure we induce FLUSH_BUFFER on SID collision 2013-05-21 01:49:27 +00:00
William Pitcock f9259bf5a5 - avoid corrupting SID hashtable on collision. 2013-05-21 01:36:19 +00:00
William Pitcock 13351e550a - Add PROTO_SID, so that SID/UID messages can be sent with sendto_server(). 2013-05-21 01:16:01 +00:00
William Pitcock 7fa25a3e46 - display SID in MAP if available 2013-05-21 01:01:58 +00:00
William Pitcock 3c38cd42e3 - protoctl: parse SID= token 2013-05-21 00:58:46 +00:00
William Pitcock ef0b09e1f9 - m_nopost: log kills 2013-05-21 00:26:27 +00:00
William Pitcock ee739f4e46 - Include SID in handshake. 2013-05-20 22:01:41 +00:00
William Pitcock b02069f944 - Generate UIDs for local clients. 2013-05-20 22:00:24 +00:00
William Pitcock 01ff7c4a16 - document SID config option 2013-05-20 21:35:33 +00:00
William Pitcock 432afdef0f - initialize uid subsystem when ircd config is loaded 2013-05-20 21:33:18 +00:00
William Pitcock e338c318c3 - add UID generator 2013-05-20 21:14:48 +00:00
William Pitcock 5eac4b95f9 - chm_permanent: use static initializer 2013-05-20 20:08:26 +00:00
William Pitcock 0a1624e24a - m_cap: readd code to break a loop that i removed by accident 2013-05-20 20:03:40 +00:00
William Pitcock af1e9ebcbf - Add permanent channel mode. (#4117) 2013-05-20 19:55:47 +00:00
William Pitcock 01dffdfa46 - Extend HOOKTYPE_CHANNEL_DESTROY to allow cancelling the destroy event. 2013-05-20 19:37:43 +00:00
William Pitcock 06d9bd81ab - Introduce C99 stdbool.h. 2013-05-20 19:36:22 +00:00
William Pitcock b9eb1efd87 - Add missing module cap_invitenotify. 2013-05-20 18:23:48 +00:00
William Pitcock 93737c2f28 - Implement proposed invite-notify CAP. 2013-05-20 18:22:35 +00:00
William Pitcock 1698007836 - Add HOOKTYPE_INVITE 2013-05-20 18:07:25 +00:00
William Pitcock 5b32e5fa79 - m_sasl: take over cap_sasl implementation 2013-05-20 17:33:06 +00:00
William Pitcock c00350b760 - Move tls cap to m_starttls. 2013-05-20 17:28:53 +00:00
William Pitcock 9d78a92976 - Modularize the core of CAP. Now, we have HOOKTYPE_CAPLIST, which allows for ClientCapability
objects to be added to the list.
2013-05-20 17:22:01 +00:00
William Pitcock f5cc654a06 - Initial work on modularizing CAP. 2013-05-20 17:04:16 +00:00
William Pitcock d8d3156f43 - dbuf vestige cleanup: missed a spot 2013-05-20 16:39:34 +00:00
William Pitcock 5a0891a1f7 - Remove some old vestiges of the old dbuf code. 2013-05-20 16:30:10 +00:00
William Pitcock 27bdd21a4a - remove obsolete debug notice from evented i/o conversion 2013-05-20 16:17:01 +00:00
William Pitcock fda8377a02 - Remove AKILL/RAKILL commands. (#3662) 2013-05-20 07:41:51 +00:00
William Pitcock 468f1eddab - make modules loading relative to SPATH. 2013-05-20 07:35:20 +00:00
William Pitcock 37b13dd90c - LISTEN_SIZE should either be 5 or SOMAXCONN if defined. Nothing else. (#4204) 2013-05-20 07:26:34 +00:00
William Pitcock 42d8a95c2c - remove BUFFERPOOL, which is not used by the new dbuf code 2013-05-20 05:11:46 +00:00
William Pitcock 691503dc3e - remove 'trouble reporting system' used by old dbuf code. new dbuf code cannot have a malloc failure due to memory pooling. 2013-05-20 05:08:59 +00:00
William Pitcock 9a4bea10f8 - rewrite dbuf code to use memory pool and list framework
this probably has bugs, consider it to be less than resilient.
2013-05-20 05:07:00 +00:00
William Pitcock 6b9885e08a - mempool: use MyMallocEx() instead of MyMalloc(). 2013-05-20 04:02:27 +00:00
William Pitcock b9c9f9baa8 - Fix va_list usage warnings flagged by Purify. 2013-05-20 02:23:33 +00:00
William Pitcock df1b02adb9 - Allow the ircd to be started without a cloaking module. (#3726) 2013-05-20 02:07:51 +00:00
William Pitcock 61fe014771 - Remove sendto_server_butone() and friends, now everything uses sendto_server(). (#4202)
Patch from FalconKirtaran.
2013-05-20 01:21:45 +00:00
William Pitcock 67aacc7e9b - add memory pool code 2013-05-20 01:18:24 +00:00
William Pitcock b72fc723d9 - start up event manager immediately in main() 2013-05-20 01:16:11 +00:00
William Pitcock a7041c9294 - Clean up remaining minefield of va_start() misuse. (#3641) 2013-05-19 23:24:12 +00:00
William Pitcock 63e1786a7d - Remove no longer used sendto_serv_nickv2 functions.
These look like they were removed in Unreal 3.1!
2013-05-19 23:15:05 +00:00
William Pitcock 47e5ac9734 - Remove sendto_serv_sjoin() and sendto_serv_butone_sjoin(). 2013-05-19 23:12:27 +00:00
William Pitcock 109097b819 - Update m_template to live in a token-free world and clean up remaining deritus. (#4082) 2013-05-19 22:34:39 +00:00
William Pitcock d415c974b2 - Remove sendto_serv_butone_token_opt(). 2013-05-19 22:31:03 +00:00
William Pitcock d570031097 - Replace sendto_server_butone_token_opt() calls with sendto_server(). 2013-05-19 22:27:55 +00:00
William Pitcock 85ff3dd136 - Remove JOIN_INSTEAD_OF_SJOIN_ON_REMOTEJOIN config.h option. 2013-05-19 22:19:12 +00:00
William Pitcock c843ebe36a - Remove sendto_serv_butone_quit() from headers too 2013-05-19 22:17:06 +00:00
William Pitcock befbb8b691 - Replace sendto_serv_butone_quit() with 2013-05-19 22:16:34 +00:00
William Pitcock 1a27e5fc9b - Allow 0 for NOCAPS usage. 2013-05-19 22:02:14 +00:00
William Pitcock 65bbf390ce - Add sendto_server() to replace all the old sendto_foo() crap. 2013-05-19 21:59:45 +00:00
William Pitcock b413848524 - TOK_FOO removal pass 2 2013-05-19 21:40:45 +00:00
William Pitcock 40aeea3f0f - Remove token references from add_Command, msg.h 2013-05-19 21:36:11 +00:00
William Pitcock 8ad50de220 - Finish token removal from Command objects 2013-05-19 21:29:26 +00:00
William Pitcock ca86485927 - Remove token parameter from CommandAdd(). 2013-05-19 21:27:26 +00:00
William Pitcock 5238ce7df6 - Enable V6ONLY on ident sockets for ipv6 connections, patch from FalconKirtaran. (#4193) 2013-05-19 21:04:57 +00:00
William Pitcock a9ce94de9b - Remove sendto_channelprefix_butone_tok(). 2013-05-19 20:59:29 +00:00
William Pitcock ec440be9a3 - remove calls to sendto_channelprefix_butone_tok() in modules 2013-05-19 20:57:30 +00:00
William Pitcock f5adc61da5 - Remove sendto_channelprefix_butone_tok() usage from core. 2013-05-19 20:51:35 +00:00
=?UTF-8?q?Mantas=20Mikul=C4=97nas?= 5b66f7abe6 - Finally remove sendto_server_butone_token().
---
 include/proto.h |  2 --
 src/send.c      | 24 ------------------------
 2 files changed, 26 deletions(-)
2013-05-19 20:37:16 +00:00
=?UTF-8?q?Mantas=20Mikul=C4=97nas?= 3e47992755 - Remove remaining uses of sendto_serv_butone_token() from modules.
---
 src/modules/m_chatops.c    | 10 ++++------
 src/modules/m_chghost.c    |  4 ++--
 src/modules/m_chgident.c   |  5 ++---
 src/modules/m_chgname.c    |  4 ++--
 src/modules/m_globops.c    |  4 ++--
 src/modules/m_join.c       | 13 +++++--------
 src/modules/m_kick.c       |  5 ++---
 src/modules/m_mode.c       | 26 ++++++++++++--------------
 src/modules/m_nachat.c     |  4 ++--
 src/modules/m_nick.c       |  4 ++--
 src/modules/m_oper.c       |  9 ++++-----
 src/modules/m_part.c       |  9 ++++-----
 src/modules/m_sajoin.c     |  3 +--
 src/modules/m_sasl.c       | 20 +++++++++++---------
 src/modules/m_sdesc.c      |  3 +--
 src/modules/m_sendsno.c    |  3 +--
 src/modules/m_sethost.c    |  3 +--
 src/modules/m_setident.c   |  3 +--
 src/modules/m_setname.c    |  2 +-
 src/modules/m_svsfline.c   | 15 ++++-----------
 src/modules/m_svskill.c    |  3 +--
 src/modules/m_svsmode.c    | 12 ++++++------
 src/modules/m_svsmotd.c    | 10 ++++------
 src/modules/m_svsnick.c    |  3 +--
 src/modules/m_svsnline.c   | 15 ++++-----------
 src/modules/m_svssilence.c |  2 +-
 src/modules/m_swhois.c     |  3 +--
 src/modules/m_tkl.c        | 10 +++++-----
 src/modules/m_topic.c      | 14 +++++---------
 src/modules/m_vhost.c      | 12 +++++-------
 30 files changed, 97 insertions(+), 136 deletions(-)
2013-05-19 20:36:56 +00:00
=?UTF-8?q?Mantas=20Mikul=C4=97nas?= cecbf38775 - m_adminchat: Use the correct command.
---
 src/modules/m_adminchat.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
2013-05-19 20:35:24 +00:00
William Pitcock 0e0d4e2959 - Kill some more sendto_serv_butone_token() use. 2013-05-19 10:52:25 +00:00
William Pitcock 853ab1955f - config_warn() when server link block has deprecated/removed zip option (#4189) 2013-05-19 10:46:16 +00:00
William Pitcock 061c405172 - Remove base64enc() and friends, as they are no longer used. Patch from FalconKirtaran (#4199). 2013-05-19 10:36:38 +00:00
William Pitcock a3d24664ca - Ensure we pass a static format string to sendto_one(). Patch from FalconKirtaran (#4200). 2013-05-19 10:33:36 +00:00
William Pitcock 6085877aa7 - Remove TS2ts() and %B usage in formatter strings. Patch from FalconKirtaran (#4197, #4198). 2013-05-19 08:36:49 +00:00
William Pitcock b2214aba9f - Remove SJB64 stuff, patch from FalconKirtaran (#4190). 2013-05-19 08:09:02 +00:00
William Pitcock 9c857d1314 - Fix incorrect parameter use on sendto_serv_butone_token_opt(), reported and patch supplied by FalconKirtaran (#4195) 2013-05-19 08:06:08 +00:00
William Pitcock 55a169cd75 - Remove include/zip.h and src/zip.c 2013-05-19 08:05:11 +00:00
Thomas Fargeix 38888442fb French doc:
- Patch from FalconKirtaran to restrict /TSCTL OFFSET to can_tsctl permission (#2303) (r28f9e289d4df)
- Remove ziplinks support, patch from FalconKirtaran. (#4189) (r529b168ff8c1)
2013-05-18 01:51:59 +02:00
Thomas Fargeix 7c42c025dd French doc: example.fr.conf:
- Update example config for pending commands.so removal. (r0cb592422175)
- Implement support for TCP_DEFER_ACCEPT (synflood-hardening). (#4096) (r2ea87de39063)
- remove global flag from oper block as it is implied by netadmin. (#4092) (r491e69c8ede6)
2013-05-12 01:30:06 +02:00
William Pitcock 922aa6a4af - Fix typos in previous commit. 2013-05-16 08:00:44 +00:00
William Pitcock a1ad90bab4 - Use a unified counter instead of depending on Client.slot for sending 2013-05-16 07:53:19 +00:00
William Pitcock c41ca43145 - Remove ziplinks support, patch from FalconKirtaran. (#4189) 2013-05-16 06:36:13 +00:00
William Pitcock b4424fafb6 - m_adminchat: remove sendto_serv_butone_token() 2013-05-15 05:36:18 +00:00
William Pitcock e2b7389455 - Patch from FalconKirtaran to restrict /TSCTL OFFSET to can_tsctl permission (#2303) 2013-05-14 08:29:42 +00:00
William Pitcock 67669c0299 - core: remove references to sendto_serv_butone_token() and friends 2013-05-14 01:26:41 +00:00
William Pitcock fa4245546d - whois: honour multi-prefix capability (#4192) 2013-05-13 22:48:19 +00:00
William Pitcock 2076fd5023 - Remove hunt_server_token() as it is no longer used. 2013-05-13 22:05:34 +00:00
William Pitcock 4b9370b0a3 - Remove references to hunt_server_token() in modules. 2013-05-13 22:03:07 +00:00
William Pitcock befe488d14 - remove references to hunt_server_token() in core 2013-05-13 21:46:20 +00:00
William Pitcock 32776a4ad1 - remove hunt_server_token_quiet() as it is not in use by anything 2013-05-13 21:39:49 +00:00
William Pitcock 228cf4ae7b - Remove PROTO_TOKEN and IsToken(). 2013-05-13 05:39:00 +00:00
William Pitcock d7989a1b5b - Remove IsToken() references, pass 2. 2013-05-13 05:18:43 +00:00
William Pitcock d1da8aff73 - Remove IsToken() references from modules, pass 1. 2013-05-13 05:10:31 +00:00
William Pitcock 6ac8721c64 - core: remove all references to IsToken() 2013-05-13 05:03:28 +00:00
William Pitcock 6cde7c6ded - fix SO_ACCEPTFILTER build on freebsd 2013-05-13 04:37:12 +00:00
William Pitcock c47c75f103 - parser: remove TokenHash and related code 2013-05-13 04:35:00 +00:00
William Pitcock 04e9199934 - Remove ClearToken(). 2013-05-13 04:18:52 +00:00
William Pitcock 7e9cbe6ef8 - Fix typo, patch supplied by FalconKirtaran (#4175). 2013-05-12 05:28:34 +00:00
William Pitcock 2fafedf265 - squit: use find_server_quickx() 2013-05-10 22:42:32 +00:00
Bram Matthys e92dac1a6f This one is better, and actually compiles ;) 2013-05-10 19:32:14 +02:00
Bram Matthys af47365272 Fix strange issue where linking didn't work because UnrealIRCd would
bind to (for example) the loopback interface before connecting to the
remote server.
In addition to that, we now don't bind() at all when bind-ip is not
present or is set to "*".
2013-05-10 19:27:36 +02:00
William Pitcock 89d36ffbc8 - Fix bug with early ESVID implementations which use * instead of 0. 2013-05-09 01:50:45 +00:00
William Pitcock df65c4bc92 - Early pass at release-notes updating. 2013-05-09 01:45:20 +00:00
William Pitcock 2903ca4bad - Fix state corruption in NOQUIT code due to API changes. 2013-05-09 01:39:23 +00:00
William Pitcock 441c5743a8 - Remove old Servers list maintained by ALN code 2013-05-09 01:24:37 +00:00
William Pitcock 2dd9708699 - Remove me::numeric handling from config parser 2013-05-09 01:24:09 +00:00
William Pitcock f54e8dd3e8 - last pass of killing numeric code. 2013-05-09 01:11:56 +00:00
William Pitcock e73d9dc6cf - remainder of aln: use &global_server_list. 2013-05-09 01:07:16 +00:00
William Pitcock a3b869b80a - Remove numeric support, pass 2. 2013-05-09 01:03:21 +00:00
William Pitcock 2b54f0b617 - m_protoctl: ignore SERVERS= token 2013-05-09 00:56:02 +00:00
William Pitcock 41d5f93171 - send: remove leftover numeric rewriting stuff 2013-05-09 00:55:27 +00:00
William Pitcock bc2d0937f5 - /map: remove numeric stuff 2013-05-09 00:53:52 +00:00
William Pitcock 39c117a695 - Remove numerics from server protocol, part 1 2013-05-09 00:25:02 +00:00
William Pitcock 6d6edb3d43 - Remove MOTD line length limit as allowed by IRCv3. (#3724) 2013-05-07 05:34:58 +00:00
William Pitcock 6fa31c5624 - Add ability to sqline channels. (#3012)
Based in part on Trocotronic's patch in old UnrealIRCd CVS.
2013-05-07 05:02:15 +00:00
wolfsage 3f7577144e - #0003107 feature request by Sakkath regarding new WHO flag: +p <port> 2007-06-09 19:15:18 +00:00
William Pitcock cb775e1586 - Remove some config system vestiges. (#2677) 2013-05-07 04:35:08 +00:00
William Pitcock 6e6e7d1dc4 - Test that a log file can be created with write permissions. (#3075) 2013-05-07 04:19:59 +00:00
William Pitcock 2eb684000f - Add support for configuring a shorter nick-length. (#3042) 2013-05-07 04:12:19 +00:00
William Pitcock b9565cd2f2 - example config: remove global flag from oper block as it is implied by netadmin. (#4092) 2013-05-07 00:18:05 +00:00
William Pitcock a10f48d470 - Keep the log file open and track it on the FD list. (#2943) 2013-05-06 23:49:14 +00:00
William Pitcock 4c2f110e19 - Add fd_fileopen() which wraps open(2) but tracks the FD in the FD table. 2013-05-06 23:16:39 +00:00
William Pitcock 0c091e9434 - Add katsklaw's make distclean patch. (#3989) 2013-05-06 06:53:55 +00:00
William Pitcock 6c2ef637e5 - Fix thinko. 2013-05-06 06:37:44 +00:00
William Pitcock 0912de822f - Allow halfops to set mode +N (which is consistent with extban ~n:*!*@*). (#3728) 2013-05-06 06:07:38 +00:00
William Pitcock 5a4babdb9d - CHGHOST: Switch from part-join-mode to quit-join-mode like charybdis and ircu. (#3038) 2013-05-06 06:00:05 +00:00
William Pitcock daf6cba195 - Typo fix 2013-05-06 05:59:14 +00:00
William Pitcock 601d96e82e - Show usermodes and snomask on /whois self. (#3971)
This is useful for clients which do not track the snomask.
2013-05-06 05:34:17 +00:00
William Pitcock 885c7eba24 - make install: Install the example config as unrealircd.conf. (#4150) 2013-05-06 05:22:27 +00:00
William Pitcock b704ec74ec - Display server-only ports in /stats p only to IRCops. (#4010) 2013-05-06 05:14:24 +00:00
William Pitcock cd0d9af424 - Add documentation on ircd binary command-line options, patch from binki. (#3949) 2013-05-06 05:09:39 +00:00
William Pitcock 13bf48f3b3 - Implement full OperOverride on channel JOIN (#1403) 2013-05-06 05:04:36 +00:00
William Pitcock 7f1e31193b - Remove old vestigal code that is no longer connected to the OperOverride system. 2013-05-06 04:56:37 +00:00
William Pitcock f09c6ef567 - Implement support for TCP_DEFER_ACCEPT (synflood-hardening). (#4096) 2013-05-06 04:49:24 +00:00
William Pitcock 71c471fb33 - Display allow-userhost-change setting in /stats. (#3668) 2013-05-06 04:26:36 +00:00
William Pitcock 366b4bd612 - Show operator login name to other operators when whoising a local operator. (#2301) 2013-05-06 04:06:37 +00:00
William Pitcock 582496be70 - Split out servers into global_server_list.
Now client_list only includes clients, and global_server_list only includes servers.
2013-05-06 03:53:27 +00:00
William Pitcock 95370c6420 - ssl: Clean up no longer needed debug messages. 2013-05-06 02:42:26 +00:00
William Pitcock 595afafd28 - Finish up SSL linking support for evented I/O. 2013-05-06 02:39:18 +00:00
William Pitcock 5bbc40438f - Initial work at making SSL connects work with the evented I/O. 2013-05-06 02:14:31 +00:00
William Pitcock b3208f2332 - Fix STARTTLS replies when the user is unregistered. (#4184) 2013-05-05 17:02:40 +00:00
Bram Matthys c08628d42d Custom modules: move EXLIBS= so shared libraries are always linked.
Reported by DE_Glen (#4182).
2013-04-05 15:36:23 +02:00
Bram Matthys 61cfb5ac3e - Windows: Fix strange linking bug. Outgoing connects from a Windows
IRCd caused a garbled SERVER protocol message, causing 'cannot find
  server' errors and killing of users. Reported by Sunkat (#4183).
2013-04-04 23:07:04 +02:00
William Pitcock 9806ec28e9 - Remove support for negotiating TOKEN support.
At present, the TOKEN support is kept in place.
2013-02-22 02:48:47 -06:00
William Pitcock 9f19b41356 - Remove techadmin deritius. (#4173) 2013-02-22 02:42:07 -06:00
William Pitcock a92b7e0d78 - Fix hunting users when acptr is (nil). (#4165) 2013-02-22 02:36:14 -06:00
Bram Matthys 372ac909df - Don't remove oper-modes such as +S from non-local clients. Reported by
Magiobiwan (#4166). This caused an issue with bots from anope BotServ
  where user modes +Sq were stripped by the IRCd.
2013-02-19 19:31:30 +01:00
William Pitcock 87807ae81a - Replace 'his/her' with 'their' in various notices.
It is more gramatically correct, and looks less awkward while maintaining
political correctness.
2013-02-08 15:42:41 -06:00
William Pitcock 65881a9ae2 - Rework module loading to work like Atheme. Split out modules to modules.conf for brevity, though. (#4163) 2013-01-17 04:55:41 -06:00
William Pitcock cd52331cd0 - Kill IPV6_COMPRESSED. 2013-01-14 06:34:01 -06:00
William Pitcock 0b5fb5903e - SSL: fix some bitrot left over from evented i/o rewrite 2013-01-14 06:23:53 -06:00
William Pitcock 09e4eced35 - Remove resolv.h deritius which hasn't been used since we switched to c-ares a long time ago. 2013-01-14 06:22:06 -06:00
William Pitcock ad25d019b1 - Enable kqueue support on BSDs. 2013-01-14 04:32:39 -06:00
William Pitcock d96652dc84 - CAP: use case-insensitive command lookup. (#4154) 2013-01-14 04:00:50 -06:00
William Pitcock 3bdae5807d - Remove NEWCHFLOODPROT define and old +f code. (#3210) 2013-01-14 03:44:49 -06:00
William Pitcock 6b5d63c25c - WebTV removal, part 2. (#3948) 2013-01-14 03:24:49 -06:00
William Pitcock f9a78be185 - Remove WebTV code, part 1. (#3948) 2013-01-14 03:21:42 -06:00
William Pitcock 1678fc2013 - Revert parts of r5199 that shouldn't have been included yet 2013-01-14 02:41:47 -06:00
William Pitcock 3f2382befa - Implement an IsAnOper() check on M_OPER. 2013-01-14 02:41:09 -06:00
William Pitcock 1ac3413039 - Actually implement M_OPER flag. 2013-01-14 02:30:07 -06:00
William Pitcock 1affa56133 - Temporarily move BACKEND_POLL includes up until stdinc framework is in
effect.
2013-01-14 02:24:49 -06:00
Bram Matthys e1ebbf88ed allow channel: Permit multiple channel items in one block again, was broken by patch from #4125. 2013-01-11 19:05:36 +01:00
Bram Matthys e6f9504ded '/rehash -global' did often not rehash all servers. Reported by Cronus (#4143). 2013-01-09 19:41:18 +01:00
Bram Matthys 803a89151f Fix duplicate user@host in away-notify and account-notify, reported by grawity (#4153). 2012-12-28 17:01:05 +01:00
William Pitcock 424d7afba7 - Remove all references to add_Command(). (#3177) 2012-12-26 19:57:35 -06:00
William Pitcock cb5e155911 - Add support for ISO8859-6 character tables, as "arabic". (#4151)
While here, add a function to mark a range of characters as OK, and close
  a possible integer underflow bug in the character attribute code.
  Character tables derived from Atheme libguess.
2012-12-26 18:15:03 -06:00
William Pitcock f768abc2c2 - Fix typo in previous patch, pointed out by Wolfwood. (#4147) 2012-12-26 13:18:27 -06:00
William Pitcock 39919329f5 - Do not bother unsetting -l, -k, -L fields as they are changed or unset again later. (#3027) 2012-12-26 13:16:20 -06:00
William Pitcock 9532325a24 - Remove lusers.c again. (#2699) 2012-12-26 13:05:39 -06:00
William Pitcock 7641d85d2f - Remove arbitrary helpops messaging stuff like in 3.3. (#2095)
HelpOp usermode is kept around for vanity for right now.
2012-12-26 12:52:48 -06:00
William Pitcock d53e7613b6 - Clarify meaning of ERR_ERRONEOUSNICKNAME. (#2990)
This is technically in violation of RFC1459, however the general consensus
  at the IRC3 discussion meetings is that it's the numeric which actually matters.
2012-12-26 12:38:09 -06:00
William Pitcock 997aae03c4 - Require OPCanOverride to talk through channel bans. (#3410) 2012-12-26 12:31:36 -06:00
William Pitcock 3653d0148d - Clean up some old debug notices. 2012-12-01 23:32:28 -06:00
William Pitcock 0349b143d8 - Only update FD description on local clients (e.g. MyConnect returns true) 2012-12-01 23:23:28 -06:00
William Pitcock d522dbfef9 - Remove building of commands.so. 2012-12-01 23:18:00 -06:00
William Pitcock 8ec1f2245f Update example config for pending commands.so removal. 2012-12-01 23:16:18 -06:00
William Pitcock 614a006900 - Do not attempt to set up DH params if not requested. 2012-12-01 23:11:44 -06:00
William Pitcock 501d93d6ea - Add support for providing a DH parameters file. (#4147)
DH parameters files must be encoded in PEM format, and the path is
  set using the ssl::dh config setting.  This is based on a patch
  submitted by wolfwood, with some modifications to avoid using stdio
  unnecessarily and to avoid code duplication.
2012-12-01 22:49:19 -06:00
William Pitcock f80bfb6d74 - Typo fix in m_server_synch(). 2012-12-01 22:27:09 -06:00
William Pitcock cc4ac836b6 - SVSKILL was setting FLAGS_KILLED twice. 2012-11-25 17:58:43 +00:00
William Pitcock f55d5f0b0f - Allow local opers to CLOSE connections. (#2486) 2012-11-25 17:56:23 +00:00
William Pitcock ec09c447e5 - Remove defines FAST_BADWORDS_REPLACE, THROTTLING, EXTCMODE. (#2937)
The code does not compile without them anyway.
2012-11-25 17:45:45 +00:00
William Pitcock 4a58fd967c - Move TKL update notices to snomask +G, from snomask +j. (#3000) 2012-11-25 17:01:53 +00:00
William Pitcock 1f79ca142f - Remove channel masks. (#3281) 2012-11-25 16:59:27 +00:00
William Pitcock 19f899f1bb - Remove local[] and LastSlot. 2012-11-25 03:23:57 +00:00
William Pitcock 594ca76c00 - SASL: just decode the cookie part of the PUID and assume slot is 0 for now.
This will eventually be replaced with proper TS6-like UIDs.
2012-11-25 03:11:53 +00:00
William Pitcock fb21a87a4b - Compile fix. 2012-11-25 03:10:57 +00:00
William Pitcock aa617df36c - Remove last core dependency on local[]. 2012-11-25 03:05:59 +00:00
William Pitcock 4efcdfe090 - More refactoring related to local[] removal. 2012-11-25 02:59:48 +00:00
William Pitcock 56010d9fb5 - Missed a local[] reference in TRACE. 2012-11-25 02:49:15 +00:00
William Pitcock 2ea5301896 - Rework the listener system to not use Client table entries. 2012-11-25 02:46:39 +00:00
William Pitcock 562c30d58d - More conversion to lclient_list and friends. 2012-11-25 01:52:08 +00:00
William Pitcock 4f8c49d2fb - Stop iterating using LastSlot in m_server. 2012-11-24 23:24:30 +00:00
William Pitcock 5448462f5d - Typo fix. 2012-11-24 23:21:52 +00:00
William Pitcock 2b3a724524 - Use unknown_list instead of iterating local[] in PASS and CLOSE commands. 2012-11-24 23:04:58 +00:00
William Pitcock 8829e89f2e - Remove references to LastSlot and local[] in send.c 2012-11-24 22:47:17 +00:00
William Pitcock c2a9dd3273 - Remove local[] iteration in AllowClient(). 2012-11-24 22:32:00 +00:00
William Pitcock b7aa36e8d1 - Guard against improper use of Client structures, due to legacy dependency on local[]. 2012-11-24 22:28:13 +00:00
William Pitcock 6883909f2a - Split out unknown connection checking into it's own event. 2012-11-24 22:19:43 +00:00
William Pitcock 5e1b5a4dd9 - Be more paranoid about unlinking client entries from linked lists, by doing it
from free_client() which is called directly sometimes.
2012-11-24 22:19:13 +00:00
William Pitcock 90802ddafa - Add unknown_list for tracking unknown clients. 2012-11-24 21:55:37 +00:00
William Pitcock 33bffb336f - Use lists instead of looping on LastSlot in a few places. 2012-11-24 21:19:32 +00:00
William Pitcock 5d586cfc69 - All the remaining code in fdlist.c is mine since rev. 16a9ba0 2012-11-24 21:00:09 +00:00
William Pitcock bae7de47a0 - Remove some more vestiges of the old I/O system I previously missed. 2012-11-24 20:57:33 +00:00
William Pitcock 4ca0156f84 - Remove remainder of fdlist code. 2012-11-24 20:55:38 +00:00
William Pitcock 04362c8783 - Remove default_fdlist. 2012-11-24 20:48:59 +00:00
William Pitcock 275b4f507d - Replace oper_fdlist with oper_list. 2012-11-24 20:45:11 +00:00
William Pitcock 092d928b99 - Remove serv_fdlist. 2012-11-24 20:17:04 +00:00
William Pitcock 024ef23ec6 - Move serv_fdlist accounting over to new server_list. 2012-11-24 19:56:10 +00:00
William Pitcock 3b1984cdd8 - Add special_node to struct Client for iterating unknown / server / oper lists. 2012-11-24 19:52:56 +00:00
William Pitcock 35dcc7287d - Use safe list iteration with loops which may remove clients 2012-11-22 02:16:59 +00:00
William Pitcock 9a577aec61 - Move some things over to the lclient_list. 2012-11-22 00:23:25 +00:00
William Pitcock ffb4fc56f1 - Separate TKL checking from the check_pings event.
Instead, run check_tkls() when TKL changes are made directly.
  While this is technically slower when more than one TKL is placed
  at once, the value of getting it out of the check_pings event is
  greater.
2012-11-21 03:08:27 +00:00
William Pitcock bda05b6876 - Make it possible for nodes which have been delinked to be linked to other lists. 2012-11-21 23:18:18 +00:00
William Pitcock a35fe3ea3b - Add lclient_list and aClient.lclient_node, which iterates local clients. 2012-11-21 23:14:28 +00:00
William Pitcock f09b1ac4d4 - Rename aClient.client_list to aClient.client_node to avoid confusion 2012-11-21 23:03:28 +00:00
William Pitcock 9853fa54f4 - Rework the client management code to use a circular queue and set of
circular queues for hashtable.
2012-11-21 22:49:32 +00:00
William Pitcock d2ef4a9b10 - Add new circular-queue linked list macros based on the ones in the Linux kernel. 2012-11-21 22:48:26 +00:00
William Pitcock eba3b54459 Backed out changeset 67f0becf1fd9 2012-11-24 17:41:20 +00:00
William Pitcock c53dbb87fb - Update Changes file after first merge. 2012-11-24 17:39:20 +00:00
William Pitcock 6f7d41f5c6 - StrEq() macro has no users, so we can remove this too. 2012-11-21 03:35:08 +00:00
William Pitcock ab5e766d9c - Replace calls to strncpyzt() macro with more secure strlcpy().
This was done using Coccinelle, the semantic patch was:

  @@
  expression src, dst, len;
  @@

  - strncpyzt(src, dst, len);
  + strlcpy(src, dst, len);
2012-11-21 03:22:29 +00:00
William Pitcock dbe7039123 - Remove flush_connections(). It is now obsolete via the async i/o.
As a result of removing this, Unreal's CPU usage is reduced by 45% with
  10000 local connections.
2012-11-19 22:37:52 +00:00
William Pitcock 98ad590a7f - Remove nextping, nextconnect, nextblah stuff. Use proper events instead. 2012-11-12 09:35:11 +00:00
William Pitcock 856be31a8d - Exorcize HTM (heavy traffic mode) from Unreal.
This is partially for the sake of Stskeeps, even though he left the
  project long ago, but mainly so we can work towards dynamic ticks in
  the event loop while guaranteeing latencies for connected clients,
  even with fakelag.
2012-11-05 05:49:04 +00:00
William Pitcock 31c357bf76 - Kill busycli_fdlist with fire. 2012-11-05 05:30:34 +00:00
William Pitcock 3254f7ba4c - Kill read_message() and related deritius with fire.
The dreamforge event-loop is now fully exorcized from the codebase.
2012-10-26 02:38:08 +00:00
William Pitcock 054f39cc3d - Hook up remote includes code into the new event loop, and remove references to
url_do_transfers_async() which has been removed.
2012-10-25 23:31:25 +00:00
William Pitcock fb6da590fb - Simplify deliver_it(). 2012-11-05 05:27:23 +00:00
William Pitcock efd5c6ec1a - Removed broken VMS netwrite() code. 2012-10-26 04:10:03 +00:00
William Pitcock ac5d1b9979 - Remove IsBlocked()/SetBlocked()/ClearBlocked() and related deritius. 2012-10-08 16:16:05 +00:00
William Pitcock 25318ec24b - Port the SSL code over to the evented I/O subsystem. 2012-10-05 14:19:54 +00:00
William Pitcock 97b643aad7 - Fix autoconn with evented i/o loop. 2012-10-05 13:31:18 +00:00
William Pitcock 0b186e7622 - Add untested kqueue(2) backend. 2012-10-26 04:05:22 +00:00
William Pitcock 5e427e9f89 - Add eventloop implementation for select(2). 2012-10-26 03:33:26 +00:00
William Pitcock 6a210e34b1 - Add a polling backend that uses epoll(2). 2012-10-26 00:20:57 +00:00
William Pitcock b69b78de4b - Add support for tracking backend state for FD table entries. 2012-10-26 00:06:16 +00:00
William Pitcock 110aeceaec - Add support for oneshot I/O handlers. 2012-10-05 17:55:30 +00:00
William Pitcock ae7a3912e7 - Call fd_refresh() when closing an FD. This way events may be dequeued from the event system. 2012-10-05 13:07:51 +00:00
William Pitcock 38e6793da8 - Fix a socket event leak in the new resolver code by assuming requests that
are neither read nor write means that c-ares is no longer interested in the
  socket.  Thusly we unregister it.  This is probably wrong, but it seems to
  work fine.
2012-10-05 13:01:38 +00:00
William Pitcock 82854f41a6 - Clean up locking in the identd/dns checking subsystem. 2012-10-05 12:56:42 +00:00
William Pitcock 17aa93cf04 - Remove remaining listener-related deritius from read_message(). 2012-10-05 12:45:08 +00:00
William Pitcock 3dbc023245 - Disconnect client packet handling (non-SSL) and listener handling from read_message().
With this change, it is possible to completely disconnect read_message() from the mainloop,
  and have a fairly responsive ircd (noticably more responsive than what we had before I
  started on this).
  The "fakelag" stuff has been replaced with charybdis's deferred command processing logic,
  which is more efficient and does the same thing without punishing behaving clients.
2012-10-05 12:32:56 +00:00
William Pitcock c2eeeb40f2 - Do not invalidate data pointer in FD entry table, unless events are oneshot. 2012-10-05 12:22:12 +00:00
William Pitcock ea48a5db3a - Disconnect identd checking code from monolithic I/O system and port it to
the evented I/O system.
2012-10-05 11:03:00 +00:00
William Pitcock 436eb0030d - Port DNS resolver to run under new evented I/O system. 2012-10-05 10:41:40 +00:00
William Pitcock 3f09c1c459 - Assume all poll notification requests should persist, and that the caller will
deregister interest itself when it is done polling.
2012-10-05 10:36:46 +00:00
William Pitcock 7608e3716f - Give IO event subscribers information on whether or not they are getting read or write events,
or both.
2012-10-05 08:57:52 +00:00
William Pitcock dfe8206c8e - First cut at new evented I/O system. Right now, we only implement support for poll(2).
Nothing is hooked up to it yet, I will cover that in the next few commits.
2012-10-05 08:21:29 +00:00
William Pitcock b26207df50 - Add support for proper FD accounting (rewrite of the fdlist code).
This is the first step to adding evented I/O.  Infact, writing the evented I/O code
  should now be quite easy.
2012-10-05 03:42:44 +00:00
Bram Matthys b1b3f25278 test commit 2012-11-24 10:49:43 +01:00
Bram Matthys 06ea46eea1 Update ./createchangelog to make it only show changes on unreal34 branch. 2012-11-23 19:55:35 +01:00
Bram Matthys 6ddeb0ccb3 Some quick changes to make the IRCd report as version 4.0-dev 2012-11-23 19:45:34 +01:00
Bram Matthys 0772575e48 New branch 'unreal34' for Unreal3.4 development 2012-11-23 19:27:59 +01:00
Bram Matthys 7da12ba3bb - Rename Changes.old to Changes.older
- Rename Changes to Changes.old
- In the Mercurial repository the Changes file no longer exists (except
  for a dummy file). You now need to run ./createchangelog to generate it.
  Of course in official releases the Changes file will be present and
  contain all details.
- From now on, the Changes file is based on the history of the Mercurial
  repository. This means we no longer have to write text manually to the
  Changes file. This simple change helps a lot in future development
  because patches will no longer break when they are being ported from
  one branch to another.
2012-11-23 19:20:40 +01:00
Bram Matthys a831052f22 - Import unreal32docs Spanish translation by Karim Benzema. 2012-11-23 17:51:42 +01:00
Bram Matthys f412e7434f - Argh.. silly Windows symbol crap. 2012-11-12 15:29:38 +01:00
Bram Matthys 3c6f3bd029 - Use a more robust method of learning the server origin for a SASL
agent. Fixes crash reported by Adam.
2012-11-04 17:23:45 +01:00
William Pitcock 2cc9482e18 - Use a more robust method of learning the server origin for a SASL agent. 2012-10-27 22:42:32 +00:00
Bram Matthys 87f52e5939 - Use our own (v)snprintf if not available. 2012-11-04 17:20:31 +01:00
Bram Matthys f964828434 3.2.10-rc1 release was on 2012-10-17 (public on 2012-10-18) 2012-11-04 17:09:14 +01:00
serkan sepetci e7b18e80c9 Updated 3.2.10 and Add Authentication Types documentation 2012-11-02 00:32:22 +02:00
serkan sepetci 6fc134c919 Add allow channel and deny channel documentation. 2012-11-02 00:27:33 +02:00
serkan sepetci 5752aae6d6 Updated Version: 3.2.10 and Add Authentication Types documentation 2012-11-02 00:17:40 +02:00
Anton Samets fda25d1632 I idle hide from regular users in help.ru.conf 2012-10-19 12:34:45 +03:00
Anton Samets 660433ac35 update russian translate for 3.2.10 2012-10-18 19:36:37 +03:00
Bram Matthys 2b7915bfa7 Added tag unreal3_2_10rc1 for changeset 094646e391e6 2012-10-17 15:04:30 +02:00
Thomas Fargeix 3d9359608e French doc: some issues with accents. 2012-10-16 20:16:32 +02:00
Thomas Fargeix 0e39a183c7 French doc: documentation on the new sslclientcertfp
- Moved documentation about auth-types. (r64b3c4006702)
2012-10-16 19:47:10 +02:00
Thomas Fargeix 963872b401 French doc: Add 'class' option to allow/deny channel.
(r3a1f9e484676)
2012-10-16 16:21:57 +02:00
Bram Matthys 734c3c8cdc Added last donator before rc1 2012-10-16 18:49:21 +02:00
Bram Matthys 5a27a51a42 - Remove wircd.def, needs to be re-generated almost each build anyway.. 2012-10-16 18:44:20 +02:00
Bram Matthys d66a4dc14b update e-mail address 2012-10-16 16:12:12 +02:00
Bram Matthys 65b56f0b55 - Removed unreal32docs.es.html (outdated since 2006-12-22),
unreal32docs.gr.html (outdated since 2006-12-02), and
  unreal32docs.nl.html (outdated since 2009-01-18, possibly 2007-07-12).
  These translations are out of date for many years and are causing
  problems for the people who are reading this out of date information.
  If you want to update these translations, or (maybe better) redo
  the translation of unreal32docs in these languages, then send an
  e-mail to syzop@unrealircd.com.
  Note that for all these languages we have had people in the past
  offering to help out, but in the end we never heard back from them,
  so please ONLY contact us if you: 1) are serious, and 2) have
  sufficient time available to work on this project.
  That said, users in your language will greatly appreciate your work!
  Of course, if you want to translate documents in any other language
  then you are welcome to contact us as well.
2012-10-16 16:05:54 +02:00
Bram Matthys 8db9f96bb0 - Bump version number in all translated docs as well (did not change
the 'last update' date, though).
2012-10-16 15:27:04 +02:00
Bram Matthys f70a201715 - Update version to 3.2.10-rc1 2012-10-16 15:25:04 +02:00
Bram Matthys 3fdaf585a0 Added release notes 2012-10-16 15:00:14 +02:00
Bram Matthys 4c30008313 - Windows: fix MOTD file always showing a date of 1/1/1970, reported
by maxarturo (#4102).
2012-10-16 11:33:27 +02:00
Bram Matthys 451dca4522 - 2012-10-15 21:26:27 +02:00
Bram Matthys b600dffdc8 - Added auth method 'sslclientcertfp' which provides an alternative
method to authenticate users with SSL client certificates based
  on SHA256 fingerprints. This can be used instead of the already
  existing 'sslclientcert' so you don't have to use an external file.
  One way to get the SHA256 fingerprint would be:
  openssl x509 -in name-of-pem-file.pem -sha256 -noout -fingerprint
  Suggested and patch supplied by Jobe (#4019).
- Added documentation on the new sslclientcertfp
- Moved documentation on authentication types to one place and refer
  to it from each section (oper::password, vhost::password,
  link::password-receive, etc).
2012-10-15 21:25:38 +02:00
Thomas Fargeix 55a15008f4 French doc: Added set::options::disable-cap (r5066) 2012-10-15 17:54:36 +02:00
Thomas Fargeix 317daa7b79 French doc: use of iso-8859-1 encoding and accents. 2012-10-15 17:52:19 +02:00
Bram Matthys eb12f79ba3 - Added set::options::disable-cap, which can be used to disable the
new CAP support (#4104).
2012-10-15 15:29:52 +02:00
Bram Matthys 96eb692cc6 various win32 fixes:
- Disable USE_POLL on Windows, since it doesn't work with XP and has
  no advantage anyway. Reported by nenolod (#4129).
- Various updates to makefile.win32 and .iss file, found during
  building new versions of zlib, openssl, and curl.
2012-10-15 15:01:35 +02:00
Bram Matthys f1c5f88539 - Upgraded to c-ares 1.9.1. Updated configure & other files. 2012-10-14 12:13:53 +02:00
Bram Matthys e81cf14707 - Fix bug where recursive includes would hang the IRCd, patch from
binki with some minor modifications, reported by warg (#3919).
2012-10-14 11:47:26 +02:00
Bram Matthys 906814a31d - Use poll() in the remote includes functions when USE_POLL is
defined (#4091).
2012-10-14 11:23:14 +02:00
Bram Matthys 3e9d300086 - Add 'class' option to allow/deny channel so you can allow/deny
users based on their class. Patch from fspijkerman (#4125).
2012-10-06 12:48:21 +02:00
Bram Matthys 2c4c190c39 ? 2012-10-06 11:59:09 +02:00
Bram Matthys 7fb0fa1620 - Disable sending of UHNAMES when HTM (High Traffic Mode) is ON,
suggested by driew (#3900).
2012-10-06 11:57:55 +02:00
Bram Matthys aa15c4bfe7 - Disable sending of UHNAMES when HTM (High Traffic Mode) is ON,
suggested by driew (#3900).
2012-10-06 11:55:17 +02:00
Serkan Sepetci f38e3382cc Updated unreal32docs.tr documentation 2012-08-25 18:19:06 +03:00
Thomas Fargeix 3f84b46420 Updated French documentation :
- optional oper::require-modes (r5047)
- hiddenhost-prefix clarification (r5049)
- /silence (r5050)
- some typos
2012-08-23 18:13:28 +02:00
Bram Matthys a292196590 - Remove old reference to networks/ directory from Windows installer 2012-08-17 13:10:15 +02:00
Bram Matthys 2429ad557b - Added missing Mod_Header to m_sasl.c 2012-08-17 13:09:19 +02:00
Bram Matthys 1418ea873b - Install server.*.pem files, patch from katsklaw (#3988).
- The ./Config script will now ask whether to generate an SSL
  certificate when it does not exist (defaults to Yes), instead of
  always generating one.
2012-08-17 12:32:06 +02:00
Bram Matthys 74d519323f a bigger scratch buffer makes me sleep at night ;) 2012-08-17 10:55:40 +02:00
Bram Matthys b8a13305d3 - Show "Ping timeout: XYZ seconds" instead of just "Ping timeout".
Patch from darkex (#3960).
2012-08-17 10:52:40 +02:00
Bram Matthys 97909a4ac0 - Add /SILENCE to HTML documentation (reported by Severus_Snape in
#4072, patch from warg).
2012-08-17 10:45:19 +02:00
Bram Matthys 9e03c16e3a - Clarify that hiddenhost-prefix must be the same on linked servers for
bans to function properly (#4090, patch from warg, reported in #4043
  by maxb).
2012-08-17 10:40:23 +02:00
Bram Matthys d57f3c63cc Changes for #4008 patch. 2012-08-17 10:32:31 +02:00
Nathan Phillip Brink 14315463d1 Add optional oper::require-modes setting to the oper block. (#4008 by katsklaw)
Any attempt to /OPER by someone who doesn't have one of the listed
usermodes is rejected. This can be used to restrict oper blocks to
registered nicks (+r) or secure clients (SSL, +z).
2011-07-13 22:36:04 -04:00
AngryWolf 2d01d8a942 Translated doc changes up to Mon May 07 16:51:03 2012 +0200 (3 months ago). 2012-08-15 17:41:43 +02:00
AngryWolf c279572f22 Translated doc changes up to Sun Jan 22 16:32:28 2012 +0100 (6 months ago). 2012-08-15 10:17:10 +02:00
AngryWolf 91ed924134 Translated doc changes up to Sun Dec 25 13:15:49 2011 +0100 (7 months ago). 2012-08-15 01:13:55 +02:00
Bram Matthys 15667266ab - Module coders: added HOOKTYPE_AWAY (sptr, away-reason). 2012-07-10 16:15:14 +02:00
Bram Matthys 8b8490feb7 - Win32 installer: Latest InnoSetup no longer supports Windows 95/98,
so update Minversion to make the .iss compile.
2012-06-24 16:07:14 +02:00
Bram Matthys 1f8ba91b69 - Win32 installer (SSL): Uncheck 'create certificate' checkbox when
server.cert.pem exists, and check it if the file doesn't exist.
  You can still change the setting, just the default is correct now.
  The code for this was already there but was not working correctly
  causing users to go through the generation process upon each install.
2012-06-24 16:05:07 +02:00
Serkan Sepetci eb392387e7 set::sasl-server setting in the unreal32docs.tr.html documentation. 2012-06-12 01:18:14 +03:00
Thomas Fargeix 1eb1d1da5f - set::sasl-server setting in the documentation. (r5037)
- Fixing various typos.
2012-05-12 01:14:32 +02:00
Bram Matthys 3d8fd3f4be - Changed numeric 307 (RPL_WHOISREGNICK) to 'is identified for this nick',
reported by fbi (#3399).
2012-05-07 17:14:03 +02:00
Bram Matthys 982803a6b8 - SASL now needs to be enabled explicitly by setting a set::sasl-server.
If this is not set, then SASL is off and not advertised.
  If the specified server is not connected, then SASL is off as well.
  This prevents unnecessary delay (and the inability for some clients to
  get online) when SASL is not in use or when the SASL server is down.
2012-05-07 16:51:03 +02:00
Bram Matthys 4207b5e60f - Fixed another SASL crash bug. Always use HookAddEx, not HookAdd!
Crash occured after the first quit of a user after a REHASH.
  Reported by Dave (#4108).
2012-05-07 12:07:43 +02:00
Bram Matthys d439c8906b complete the previous patch (MLOCK).. mostly just bringing it up to date & code-style 2012-05-04 13:05:08 +02:00
William Pitcock 5360e2ffa5 - Add support for server-enforced mode locks (MLOCK).
This allows the IRCd to enforce MLOCKs that are set by services, which
  eliminates clashes between users setting modes and services enforcing
  it's mlock on channels. (#3055)
2012-05-04 12:47:59 +02:00
Bram Matthys 9d6e386f97 - Fix bug caused by new I/O engine (both with and without USE_POLL):
queued data on the receive queue (eg: due to fake lag) was not processed
  unless we got new data from the client.
  Now, better document this. Also, avoid calling dbuf_put with 0 length.
2012-05-02 19:20:52 +02:00
Bram Matthys 3f3b8975e0 - Moved sendto_connectnotice, and thus the call to HOOKTYPE_LOCAL_CONNECT,
so it gets called after the broadcast of NICK to other servers.
2012-05-01 12:10:14 +02:00
Bram Matthys aa206f667f Update donators 2012-04-28 16:00:25 +02:00
Serkan Sepetci 00ce957812 Remove old no-stealth, show-connect-info added. 2012-04-20 00:39:56 +03:00
Thomas Fargeix 2570955e4a - Remove old no-stealth directive from documentation (r5025) 2012-04-14 12:43:46 +02:00
William Pitcock adcb462788 - If set::options::dont-resolve is enabled, then use only the IP information
from a WEBIRC message, reported by Ismat (#4103).
2012-04-09 10:54:17 +02:00
William Pitcock 3563c26a93 - Add support for account-notify client capability (#4098). This capability
can be used to request passive notifications for accountname changes.
2012-04-09 10:48:51 +02:00
Bram Matthys 309dac4f2b - Added 'away-notify' client capability, which informs the client of any AWAY state changes of users on the same channel. Patch from nenolod (#4097). 2012-04-09 10:35:17 +02:00
Bram Matthys 3271ec3a23 - Remove old no-stealth configuration directive from documentation,
reported by katsklaw, patch from warg (#4036).
2012-04-09 10:25:53 +02:00
Bram Matthys 3d728f5f2e - Print out a warning when we can't write to a log file. When booting this
goes to the boot screen. When we are already booted it's sent to all
  IRCOps with a limit of max. 1 message per 5 minutes.
- Refuse to boot when we can't write to any log file.
2012-04-05 21:47:15 +02:00
Bram Matthys 374b79c084 - Win32 compile fix (nenolod) 2012-04-05 21:01:19 +02:00
William Pitcock ad2c969084 Fix Windows build. 2012-03-29 20:05:20 -05:00
Bram Matthys edcadc6c58 - Fix win32 installer: apparently it sometimes complained about not having
- the Visual C++ 2008 redistributable package installed when this was not true.
2012-03-30 20:02:32 +02:00
Bram Matthys 3ada59bc60 - Poll I/O engine: get_client_by_pollfd() may return -1 when there's a race
condition. Don't abort, instead just skip those clients.
  This fixes a crash I had on /SQUIT.
2012-03-26 11:16:10 +02:00
Bram Matthys 46372dc475 - Split up PROTOCTL line, since with the addition of ESVID we exceeded
MAXPARA when using ZIP links.
  This caused an odd charset warning upon link.
2012-03-26 11:08:19 +02:00
Bram Matthys a8000c2efb - Some more SASL fixes, and more... 2012-03-26 10:37:40 +02:00
Bram Matthys 04b68513f8 - Some more SASL fixes 2012-03-25 19:54:56 +02:00
Bram Matthys 40004ef1b3 - Tweak SASL code to conform to current coding style. 2012-03-25 12:32:41 +02:00
Bram Matthys 66b3a7fe6b - Fix crash in AUTHENTICATE (SASL commit from an hour or so ago). 2012-03-25 12:30:51 +02:00
Bram Matthys e88b6477bd Some really minor SASL tweaks 2012-03-25 10:24:40 +02:00
Bram Matthys 61610fe763 - Added support for SASL, patch from nenolod (#4079). 2012-03-25 10:15:28 +02:00
Bram Matthys 1e152a07c0 - Fix for speed optimization a few lines up, was accidentally using ident
username (which might have been 'unknown') instead of effective username.
2012-03-23 20:30:36 +01:00
Serkan Sepetci e40164dcf4 updated again in some places missing. 2012-03-21 14:02:54 +02:00
Serkan Sepetci bfdc7bae73 Updated doc/example.tr.conf - translated by Diablo 2012-03-10 02:32:27 +02:00
Thomas Fargeix 56c263269c - Add set::ping-cookie to French doc (r4995)
- some typos corrections.
2012-03-06 17:50:54 +01:00
Nathan Phillip Brink aa5fe1514d - Call m_cap_Init() when m_cap is loaded through commands.so. Reported by nenolod. 2012-03-06 06:16:53 +00:00
Serkan Sepetci d4d5d46822 Add Bantype ~a documentation and Add usermod +I and remote whois command documentation. 2012-03-06 02:14:55 +02:00
Nathan Phillip Brink 24f2f3b17e merge 2012-03-01 05:27:17 +00:00
Nathan Phillip Brink 72b36e893b - Minor documentation typos, thanks warg (#4094). 2012-03-01 05:12:52 +00:00
Nathan Phillip Brink 4640b4c9ca - Minor documentation typos, thanks warg (#4094). 2012-03-01 05:10:14 +00:00
Bram Matthys 1a76eb59e5 - Speed optimization: First, moved a large part of vsendto_prefix_one into
vmakebuf_local_withprefix. Then use this new function - which creates the
  buffer-to-be-sent - at the top of functions like sendto_channel_butserv
  and sendto_common_channels and send the prepared buffer in the loop that
  comes after it. This means we only prepare the buffer once and then send
  it many times, rather than both building and sending it XYZ times.
  Benchmarking connect-join-quit of 10k clients:
  100 users per channel: no noticeable speed improvement
  1000 users per channel: 18% faster
  10000 users in one channel: 50% faster
  As you can see, unfortunately, for a typical irc network there isn't much
  speed improvement. However, if you have a couple of 500+ user channels or
  get attacked by clones then you may see some improvement in speed and/or lower
  CPU usage.
2012-02-27 15:20:07 +01:00
Bram Matthys 245dea0a70 last change to poll patch for the day.. fixing my own fix ;) 2012-02-26 18:47:33 +01:00
Bram Matthys d1ad60990f changelog entry for all previous commits:
- UnrealIRCd now supports poll() instead of select().
  There are some minor speed benefits if you have more than 1K or 2K
  clients, however the main noticeable difference is that on Linux you can
  now easily enter a higher maximum connection count than 1024 in ./Config,
  without having to edit system header files.
  Of course, you still need to be allowed to use the # of sockets (type
  'ulimit -n' on the shell).
  Support for this is experimental at this stage, but enabled by default
  so it can receive all the testing it deserves. If all goes well, it will
  be the default for 3.2.10.
  Stress testing is very much welcomed!
2012-02-26 18:40:12 +01:00
Bram Matthys 8dd4160c78 make c-ares use 100% poll. and make sure we never deal with negative fds. 2012-02-26 18:25:49 +01:00
Bram Matthys 722064b6f7 Some more changes and fixes regarding poll patch:
* use get_client_by_pollfd() function instead of pollfd_to_client[]
  directly, so we can easily find and debug any mistakes.
* add some commenting
* add extra debugging and core dumping if fd or slot values are out of bounds
* fix race condition in read_authports() where send_authports() 2 lines up
  could have closed the socket, resulting in a read from fd -1.
  NOTE: I've updated the select (non-poll) code as well, should be harmless.
2012-02-26 16:16:06 +01:00
Bram Matthys 02ae61dd29 regarding poll patch:
* move all (re-)initalization to reset_pollfd(), i'm
much more comfortable with that as it aids debugging a lot.
* add parenthesis.

update my own fd check code for poll support
2012-02-26 15:43:02 +01:00
Bram Matthys 5dd1454489 - Added patch from Adam for poll() support (#1245). 2012-02-26 15:28:29 +01:00
Bram Matthys 9c12b0e896 - Even when 'M' was listed in set::oper-only-stats you could still do a
'/STATS m'. Unlike other stats characters, case insensitivity was not
  checked for this one. Reported by and patch from Apocalypse (#4086).
2012-02-26 10:29:20 +01:00
Bram Matthys 719c0f73ae - Moved nospoof to config file, suggested by and patch from nenolod (#4078).
This means ping cookies are now controlled by set::ping-cookie [yes|no].
  The default is 'yes' (enabled).
2012-02-26 10:22:19 +01:00
Bram Matthys c46024fa2d - Make the accept code check if the fd is within bounds instead of relying
on OpenFiles to be correct. This fixes a crash when f.e. 3rd party modules
  have files open but don't increase OpenFiles. Might also fix a curl crash,
  though nobody ever reported one.
2012-02-26 10:09:25 +01:00
Bram Matthys 2e2eea8146 - Added doc/example.es.conf, translated by Severus_Snape. 2012-02-08 18:44:37 +01:00
Bram Matthys 42a30007e7 Donators 2012-02-08 18:16:33 +01:00
Thomas Fargeix 61a94fb5bd - Add usermod +I and remote whois command documentation. (r4988)
- Get rid of networks/ references. (r4990)
2012-01-25 21:04:09 +01:00
Bram Matthys 7ad515fb38 - Get rid of networks/ directory, and all references to it. Suggested by
katsklaw and others (#4056).
2012-01-22 17:09:10 +01:00
Bram Matthys 60bad142e0 - Added remove_oper_modes(), which works just like remove_oper_snomasks(),
and ensures that the user does not have any ircop-only user modes after
  de-opering. This (only) fixes the just added +I umode case, but could
  also prevent future bugs.
2012-01-22 16:52:28 +01:00
Bram Matthys c597c90f4a - New user mode +I (IRCOp only) which hides idle times to other users,
suggested and patch supplied by Nath & binki (#3953).
2012-01-22 16:32:28 +01:00
Bram Matthys b9137af15c - Advertise 'tls' (STARTTLS) capability in CAP. Patch from nenolod (#4081). 2012-01-22 16:03:30 +01:00
Bram Matthys 2df00337d4 - Fix issue with CAP & NOSPOOF. Patch from nenolod (#4077). 2012-01-22 16:01:00 +01:00
Bram Matthys d530dbd43d - Add CAP support. Currently implemented are: multi-prefix (NAMESX), and
userhost-in-names (UHNAMES). Patch from nenotopia (#4018, #4066)
2012-01-20 21:25:59 +01:00
Thomas Fargeix 2b0d66498d - Add Bantype ~a documentation.
- Fix the snomask example.
2012-01-19 19:37:55 +01:00
Nathan Phillip Brink d8a6b6e512 Run ./autogen.sh per 6518968ca480. 2012-01-03 05:50:38 +00:00
Bram Matthys acc011337a - Ditch vsyslog() as it's only a waste of CPU, inspired by #4065. 2012-01-02 22:46:18 +01:00
Nathan Phillip Brink d9e83f70e3 - Fix misuse of stdarg.h macros when calling vsyslog() (#4065 by Jimini). 2012-01-02 20:20:07 +00:00
Bram Matthys 1adc59893d heh ;) 2011-12-28 18:48:46 +01:00
Bram Matthys 9ae963e1fe - Make default service stamp 0 (zero) again, instead of '*' which was
introduced by ESVID changes a few days ago. This makes anope happy,
  and also means nothing will change in a non-ESVID scenario.
2011-12-28 18:39:43 +01:00
Nathan Phillip Brink 23516d8e99 - Enforce matching of unrealircd version and PACKAGE_VERSION macros (#4014).
Now the UNREAL_VERSION_GENERATION, UNREAL_VERSION_MAJOR,
UNREAL_VERSION_MINOR, and UNREAL_VERSION_SUFFIX macros are
autogenerated from PACKAGE_VERSION.
2011-12-26 17:23:36 +00:00
Bram Matthys 9ed1e4fa02 - Throw up an error if a password in the configuration file is too long
(max 48 characters), reported by JasonTik, based on patch from
  WolfSage (#3223).
2011-12-25 16:58:18 +01:00
Bram Matthys 82f9cf54bb extban ~a = also allowed for invex 2011-12-25 16:42:17 +01:00
Bram Matthys 83527ba76d compile fix for just-checked-in patches. 2011-12-25 16:28:58 +01:00
Bram Matthys 3b6bbdc038 - Updated extended ban documentation in help.conf and unreal32docs:
new bantype ~a, and some text about extended bans & invex (+I).
2011-12-25 16:22:07 +01:00
Bram Matthys c1af7ca274 - Added extended ban ~a:<account name> which matches users who are logged
in to services with that account name. This works only on services that
  support ESVID. Patch from nenotopia (#3966).
2011-12-25 14:40:33 +01:00
Bram Matthys d512f79a6a - Show account name in /WHOIS, for ESVID-capable services packages, patch from nenotopia (#3966). 2011-12-25 14:29:03 +01:00
Bram Matthys d272d2d6a0 - Services coders: Added support for ESVID. Instead of a number you can
now store a string (of max NICKLEN size) as service stamp. See
  protoctl.txt and serverprotocol.html in doc/technical for more
  information.
  Patch from nenotopia (#3966).
2011-12-25 14:26:53 +01:00
Bram Matthys e8244902f8 - Tweak: send actual channel name and not user supplied channel in KICK, reported and patch by Stealth (#3298). 2011-12-25 14:06:19 +01:00
Bram Matthys 316828edf8 - Config parser failed to check for invalid set::ssl options, reported and patch by fbi (#4035). 2011-12-25 13:20:19 +01:00
Bram Matthys aa0af2ddd2 - Fix small error in oper block documentation, reported by Stealth (#2318). 2011-12-25 13:15:49 +01:00
Bram Matthys 0e4d604c04 - Added patch from nenotopia to use more modern LUSERS numerics (#3967). 2011-12-25 12:55:02 +01:00
Nathan Phillip Brink 5a57a8f496 - Include CMDS=STARTTLS in ISUPPORT/numeric 005 to let clients discover STARTTLS support through VERSION, before or after registration (#4064). 2011-12-20 22:27:16 +00:00
Nathan Phillip Brink 2ffa9a174f - Fix version string in configure.ac. 2011-11-14 03:40:27 +00:00
Nathan Phillip Brink 0ff0b04a56 - Fix compilation issues with bundled tre and ./curlinstall-ed curl caused by over-generic regexes. Reported by warg. 2011-11-12 06:58:34 +00:00
Nathan Phillip Brink 9299b781f6 - Attempt to make Makefile rules more parallelism friendly. 2011-11-10 05:37:16 +00:00
Nathan Phillip Brink b753c28bec - Fix compilation issue when disabling stacked extbans. https://bugs.gentoo.org/389949 2011-11-09 17:21:39 +00:00
Nathan Phillip Brink cc5e2bc414 - Automatically regenerate Makefile if ./config.status --recheck was run. 2011-11-09 17:16:55 +00:00
Bram Matthys ad81d0b049 Added tag unreal3_2_9 for changeset 9a1784c699d1 2011-11-05 10:24:37 +01:00
Bram Matthys 5298c36d64 some last-minute text fixes 2011-11-05 10:11:58 +01:00
Bram Matthys 095a52e630 Update wircd.def for 3.2.9 release 2011-11-05 10:05:25 +01:00
Bram Matthys 6ab9d06a6c Manually update UNREAL_VERSION_TIME to 201144 2011-11-05 09:58:17 +01:00
Bram Matthys d19bce6c42 ** 3.2.9 release ** 2011-11-05 09:54:12 +01:00
Bram Matthys 9b3e65c6e7 - Updated credits (supporters, coders) 2011-09-11 18:13:35 +02:00
Bram Matthys 879d32064c - Updated credits (donations) 2011-09-07 10:06:27 +02:00
Thomas Fargeix (Alef) deb00ef4ef Add a files {} block to example.fr.conf 2011-07-21 14:12:55 +02:00
Bram Matthys e1574bf1e3 Added tag unreal3_2_9rc2 for changeset 3ada0f7b2163 2011-07-18 21:08:33 +02:00
Bram Matthys 4008e3745f Update curl-ca-bundle.crt & prepare for retag 2011-07-18 21:08:17 +02:00
Bram Matthys ee447742c8 Removed tag unreal3_2_9rc2 2011-07-18 21:07:31 +02:00
Bram Matthys 618da4ab5e Added tag unreal3_2_9rc2 for changeset fa478da23916 2011-07-18 13:00:42 +02:00
Bram Matthys df6e300ecd ** 3.2.9-rc2 release ** + last-minute fix #0004028 2011-07-18 12:55:06 +02:00
Bram Matthys aa6ed2085f - Another fix-for-fix of zip links buffering from a few weeks ago.
Reported by fbi (#0004030).
2011-07-18 12:15:41 +02:00
Bram Matthys 24e14eb26f credits: undo irc2 donation 2011-07-17 23:33:05 +02:00
Nathan Phillip Brink 087b306429 Add a self-documented and commented files {} block to example.conf. 2011-07-13 23:32:05 -04:00
Nathan Phillip Brink 1157b77e5e Add .hgignore, removing replaced .cvsignore files. 2011-07-13 13:11:57 -04:00
Bram Matthys 59fbe14175 - Remove temporary message (Unreal3.2.1) regarding cloaking modules. 2011-07-06 23:41:34 +02:00
Nathan Phillip Brink 4d9482c92b Fix Changes to refer to help.fr.conf instead of help.ft.conf. 2011-07-05 00:23:42 -04:00
Nathan Phillip Brink 371ae17e1c - Add missing quotation to doc/help.ft.conf (#4026 by MewT). 2011-07-05 00:21:58 -04:00
Nathan Phillip Brink f8fbe5e4f0 - Support installing the ircd binary for people who set --with-spath=<dpath>/bin/ircd. 2011-07-05 00:15:23 -04:00
Serkan Sepetci 2cbb7a4a00 Translation of the title. 2011-06-16 00:33:27 +03:00
Serkan Sepetci 8e72ba376b Translation of the title. 2011-06-16 00:29:48 +03:00
Bram Matthys cb8e31af86 update credit in Changelog 2011-06-10 20:34:04 +02:00
Nathan Phillip Brink 7ddb51c09f Clean up Donation file, fixing URL, extraneous apostrophe, and donate URL. 2011-06-08 22:13:36 -04:00
Bram Matthys 5eb7e9eead - Added aliases/atheme.conf, provided by katsklaw and CuleX (#0003990). 2011-06-06 18:14:50 +02:00
Nathan Phillip Brink 80806af8bd Check that the automatically-generated cloak keys fit unrealircd's own criteria before printing them out. (#4017) 2011-06-05 23:03:36 -04:00
Nathan Phillip Brink ceba1d07c6 - Fix compile failure introduced by fdb2fd1f8963 when zip links are disabled. 2011-06-05 23:02:13 -04:00
Bram Matthys 143858cc5b - Zip links: once a link was zipped, the error message when closing the
connection was never actually sent (due to buffering). Hence, things like
  the /SQUIT reason was never seen on the other side (just 'server closed
  the connection'). This has now been fixed.
2011-06-05 21:36:53 +02:00
Bram Matthys 08871c1e6a - The unreal32docs translations in Greek, Spanish and Dutch are marked as out of date.
- CRLF conversion of unreal32docs.gr.html
2011-06-05 21:30:32 +02:00
Bram Matthys 1470edd1f7 - Updated doc/compiling_win32.txt a bit. 2011-06-02 18:17:56 +02:00
Bram Matthys c92df824a5 Add .h/.bat/.iss to LF<->CRLF conversion list 2011-06-01 11:35:03 +02:00
Bram Matthys 8ef4e93bc1 Added .hgeol to take care of LF<->CRLF conversion (for our poor windows users)... 2011-06-01 11:30:32 +02:00
Bram Matthys 57fcb26be2 test ;) 2011-06-01 11:25:16 +02:00
Bram Matthys 5dda9cb79d Convert line endings of doc/example.tr.conf from CRLF to LF. 2011-06-01 11:03:31 +02:00
Bram Matthys 3fe7955615 test ;) 2011-05-30 12:28:39 +02:00
Bram Matthys f72574ae22 Moved from cvs to hg: add big changelog item & update references to CVS. 2011-05-30 10:13:19 +02:00
Nathan Phillip Brink 29b319cb99 Merge all changes into default. 2011-05-23 22:39:05 -04:00
cvs2hg 10d8bd7ba8 convert CVS tags 2011-05-23 04:43:46 +02:00
autoupdate cfec5bb08a Automatic weekly version update: 201120 2011-05-15 23:00:03 +00:00
autoupdate 7ed4b2cac9 Automatic weekly version update: 201119 2011-05-08 23:00:02 +00:00
diablo 9a7ec92d48 Add id attribute for referring to set::anti-spam-quit-message-time. 2011-05-08 21:34:40 +00:00
bock a70e82c418 changes of 18 week 2011-05-07 17:49:16 +00:00
alef 1b60d7c763 Translation of the title. 2011-05-06 15:31:37 +00:00
alef b3398d709c Add id attribute for referring to set::anti-spam-quit-message-time. 2011-05-06 15:27:55 +00:00
autoupdate 1a1cb25c98 Automatic weekly version update: 201118 2011-05-01 23:00:02 +00:00
binki 5a847b490c Add id attribute for referring to set::anti-spam-quit-message-time. 2011-05-01 20:44:59 +00:00
autoupdate aac9b61d9c Automatic weekly version update: 201117 2011-04-24 23:00:02 +00:00
autoupdate 49ad2b388d Automatic weekly version update: 201116 2011-04-17 23:00:02 +00:00
autoupdate b0914f9a44 Automatic weekly version update: 201115 2011-04-10 23:00:03 +00:00
autoupdate 2f0cab1ac1 Automatic weekly version update: 201114 2011-04-03 23:00:02 +00:00
Bram Matthys 64776556a9 - Module coders: Added HOOKTYPE_HANDSHAKE which is called before the client
handshake, IOTW: as soon as the connection is established. This can be
  used to do things prior to accepting any commands, such as sending some text.
2011-04-03 07:45:57 +00:00
autoupdate 71102b1d41 Automatic weekly version update: 201113 2011-03-27 23:00:03 +00:00
autoupdate 0db5417b83 Automatic weekly version update: 201112 2011-03-21 00:00:03 +00:00
binki 34cab7caff - Fix empty/nonexistent short MOTD being shown instead of the full MOTD on user registration. Thanks WakiMiko (#4011). 2011-03-14 19:03:41 +00:00
binki 938b591358 Remove unused local variable. 2011-03-14 18:51:23 +00:00
autoupdate 8a39b26e56 Automatic weekly version update: 201111 2011-03-14 00:00:02 +00:00
autoupdate 26847b8692 Automatic weekly version update: 201110 2011-03-07 00:00:02 +00:00
alef 3acf7b2faa - Fix documentation about channel mode +t and halfops. 2011-02-28 22:32:33 +00:00
diablo 16bd395632 Fix documentation about channel mode +t and halfops. 2011-02-28 21:46:53 +00:00
autoupdate 39dd1eaca8 Automatic weekly version update: 201109 2011-02-28 00:00:02 +00:00
bock 17b5922cea Update of last update docs (about chanmode +t). 2011-02-26 22:13:48 +00:00
binki a5e7197daf - Fix documentation about channel mode +t and halfops, thanks warg (#4007). 2011-02-23 01:24:26 +00:00
autoupdate f1d9606b4f Automatic weekly version update: 201108 2011-02-21 00:00:02 +00:00
autoupdate c68c7918dd Automatic weekly version update: 201107 2011-02-14 00:00:03 +00:00
autoupdate 5a71b706c3 Automatic weekly version update: 201106 2011-02-07 00:00:03 +00:00
autoupdate abae8bad84 Automatic weekly version update: 201105 2011-01-31 00:00:02 +00:00
autoupdate 627bfd9cf7 Automatic weekly version update: 201104 2011-01-24 00:00:02 +00:00
autoupdate e67274fc69 Automatic weekly version update: 201103 2011-01-17 00:00:02 +00:00
autoupdate 7e24744601 Automatic weekly version update: 201102 2011-01-10 00:00:02 +00:00
Bram Matthys cf1a52a927 - Bump server protocol version to 2310, due to the various changes and so
you can use deny link { } blocks if you want to deny older versions than
  this release.
2011-01-08 10:51:58 +00:00
autoupdate 5268649357 Automatic weekly version update: 201101 2011-01-03 00:00:03 +00:00
binki 6c69183d5a - Fix pointer handling in remote MOTD code, fixing a crash on REHASH
reported by goldenwolf (#3992).
2010-12-30 21:05:18 +00:00
binki 6baddddc8e - Fix set::ssl::options::no-starttls not being recognized. 2010-12-29 18:38:28 +00:00
Bram Matthys 0414d09660 - Updated credits a bit (#3980). 2010-12-29 17:10:48 +00:00
Bram Matthys 2883eea6c7 - Update doc/compiling_win32.txt a bit (#3975). 2010-12-29 16:48:34 +00:00
Bram Matthys bcb97efdb3 - Windows installer: if an SSL certificate already exists, then don't check
the 'create SSL certificate' by default. Patch from goldenwolf (#3965).
2010-12-29 16:29:19 +00:00
autoupdate 751584bbcb Automatic weekly version update: 201052 2010-12-27 00:00:03 +00:00
angrywolf 4927abe5b4 Changes from 2010/09/15 to 2010/12/15. 2010-12-26 12:55:40 +00:00
binki 48bc3b2f74 - Fix remote MOTDs for URLs whose path components contain
subdirectories, in the process much simplifying my remote MOTD
  code. Reported by goldenwolf (#3986).
2010-12-25 15:33:01 +00:00
binki 91c3283cfa - Fix bundled TRE compilation error on OpenBSD with pkg-config-0.21
where pkg-config can't find 'tre.pc'. Reported by CuleX. (#3982)
  Also properly escape the sed expression used in the pkg-config call.
2010-12-24 02:29:53 +00:00
diablo f6c843d38f Last unreal32docs.tr.html update 2010-12-22 22:05:38 +00:00
binki df37d83f8b - Fix invalid use of 'wc -l' when detecting the AsynchDNS feature of
libcurl which breaks compilation on FreeBSD; instead use 'grep
  -q'. Reported by Jobe (#3981), solution proposed by satmd.
2010-12-22 16:02:39 +00:00
binki 9f710925f8 - Fix missing #include <stdint.h>. Fixes compile error on OpenBSD
reported by CuleX (#3977).
2010-12-21 04:53:05 +00:00
binki 7041116ec0 - Fix typo 'alias::spampfilter' in German docs, reported by seraphim (#3978). 2010-12-20 05:24:41 +00:00
autoupdate 311efc56b4 Automatic weekly version update: 201051 2010-12-20 00:00:03 +00:00
Bram Matthys 9c30f7b685 - Fixed bug with curl not finding libcares, reported by katslaw.
- Added workaround for 'curl-config' depending on 'bc'.
2010-12-19 16:38:07 +00:00
binki b994ad33bd - Enable parallel building of modules. 2010-12-15 18:45:31 +00:00
cvs2hg 6e837537a8 fixup commit for tag 'unreal3_2_9rc1' 2010-12-15 15:00:54 +00:00
Bram Matthys 4cb6ed06c8 credit 2010-12-15 15:00:53 +00:00
Bram Matthys 84007d4c16 nothing happened, no.. really ;) 2010-12-15 14:59:21 +00:00
Bram Matthys 0c8f523e1d ** 3.2.9-rc1 release ** 2010-12-15 12:50:48 +00:00
Bram Matthys 13a946d0e0 Update credits.. (hosters) 2010-12-15 12:25:23 +00:00
binki 805f1988ec Clarify wording in Makefile.in about how to set the FD_SETSIZE macro using the Makefile variables. 2010-12-15 01:31:16 +00:00
autoupdate aa0f869213 Automatic weekly version update: 201050 2010-12-13 00:00:03 +00:00
Bram Matthys cb60ae3442 compile fix 2010-12-12 21:13:43 +00:00
Bram Matthys dcb34f43f6 make it compile 2010-12-12 17:19:43 +00:00
Bram Matthys d603a53e4e - Win32: show missing /INFO in GUI 2010-12-12 17:08:23 +00:00
Bram Matthys baa7d5f4f3 -include win32/ares/setup.h, -HAVE_INET_PTON etc... ..... ... a r g h 2010-12-12 16:44:27 +00:00
Bram Matthys ef64b411c8 ... 2010-12-12 16:39:12 +00:00
Bram Matthys 1309531df8 forgot to remove an #ifndef 2010-12-12 16:37:34 +00:00
Bram Matthys 58260b3917 Major win32 build system cleanup:
- Win32: Attempt to move to 100% winsock2 (the include, to be precise),
  this means includes have to be in a very particular order (!)
- Win32: #define _WIN32_WINNT 0x0501 and force our own inet_ntop/pton,
  otherwise you get an ntop runtime error on XP and earlier.
- Win32: Get rid of c-ares includes and library in our tree, and use the
  DLL instead of static LIB, just like we do for ssl and zlib.
- Win32: Get rid of TRE lib and includes
- Win32: reorder includes to fix winsock errors with curl
2010-12-12 16:32:55 +00:00
Bram Matthys b8026bbc50 - Fix return values in src/auth.c on Win32. 2010-12-08 10:13:14 +00:00
Bram Matthys 6dab6c11b1 - Error on zero sendq in class::sendq, reported by jonbeard. 2010-12-06 12:47:25 +00:00
autoupdate f6e12c316b Automatic weekly version update: 201049 2010-12-06 00:00:03 +00:00
Bram Matthys 59e35dc066 +Better document 'sslclientcert' in the Oper Block documentation. 2010-12-05 16:49:42 +00:00
Bram Matthys 7f8009c4c1 corrected a typo in changelog x months ago 2010-12-05 16:31:33 +00:00
Bram Matthys 08d8c52885 minor edits 2010-12-05 15:08:24 +00:00
Bram Matthys e821be52d3 - Added release notes. 2010-12-05 14:51:14 +00:00
autoupdate 202318cb12 Automatic weekly version update: 201048 2010-11-29 00:00:03 +00:00
bock b36a576461 Update docs for Russian before 3.2.9 2010-11-22 19:56:12 +00:00
Bram Matthys 5a3e54c385 - Fixed Windows compile problem with current CVS due to m_issecure,
reported and fix provided by therock247uk (#3970).
2010-11-22 10:55:34 +00:00
Bram Matthys 292b6ae15c Bring donations up to date. Last donator: 2010-10-21 2010-11-22 10:51:44 +00:00
diablo 0ae8d7c075 - Added <REHASH -global> & <CHANMODE +Z> & <EXCEPT BAN> & <EXCEPT TKL> & <ALLOW-INSANE-BAN> 2010-11-22 02:24:26 +00:00
autoupdate 7c86c421c9 Automatic weekly version update: 201047 2010-11-22 00:00:02 +00:00
diablo e5502a3ca0 Added '/REHASH -global' command which will rehash all servers on the network 2010-11-21 23:50:43 +00:00
alef 196a4e323e Typo 2010-11-20 23:00:19 +00:00
alef f56639bff0 - mode +Z
- /rehash -global
- except tkl::type all & difference between except tkl and except ban
- set::options::allow-insane-bans
2010-11-20 21:19:23 +00:00
angrywolf c13ab74144 Doc changes from 2009/05/13 to 2009/12/22. 2010-11-20 11:50:46 +00:00
angrywolf c46205e79d Doc changes from 2009/12/06 to 2010/09/15. 2010-11-20 11:04:11 +00:00
Bram Matthys a4f69bee1a typo 2010-11-17 20:39:50 +00:00
Bram Matthys 07b2fbb35e - Windows: When trying to load a module (DLL) windows can give us the
mysterious error 'The specified module could not be found' even though the
  file exists. This usually means that it depends on another DLL, but
  apparently Microsoft decided not to mention that in the error message.
  We now append some small text when such an error happens, saying that it
  could be because of a missing dependency. Reported by Phil.
2010-11-17 18:25:56 +00:00
Bram Matthys 28c19679b2 changelog edit: one SHUN less ;P 2010-11-16 19:40:08 +00:00
Bram Matthys 643355b387 - Added set::options::allow-insane-bans which makes it possible to set
really broad bans such as *@*.xx. Needless to say this can be very
  dangerous. Reported and patch provided by Stealth (#0003963).
2010-11-15 16:23:02 +00:00
Bram Matthys 779444448c - Clarified the difference between 'except ban' (which exempts from KLINE
and ZLINE) and 'except tkl' (which can exempt from GLINE, GZLINE, SHUN,
  QLINE, GQLINE and SHUN). Reported by Digerati (#0002535).
- Added except tkl::type 'all', which exempts from all TKL types (except
  KLINE).
2010-11-15 16:14:20 +00:00
Bram Matthys d107a4a6a8 - Added '/REHASH -global' command which will rehash all servers on the
network. You can also specify options like '/REHASH -global -motd' to
  rehash only the MOTD/RULES/etc. Just like /REHASH <servername> this is a
  NetAdmin-only command. This command is fully backwards compatible with
  older UnrealIRCd version in the sense that it will also REHASH old
  Unreal's. Suggested by 'P' in #0001522.
2010-11-15 15:50:52 +00:00
Bram Matthys d5167c69ad update credits/bugid of install as service vs enccert 2010-11-15 14:11:46 +00:00
Bram Matthys da0d21fe57 - Little tweak to +Z: when the last insecure user parts and the channel is
set +Z (secure), the parting user saw the MODE too, which was silly.
  Reported by Robby22 (#0003720).
2010-11-15 14:00:57 +00:00
Bram Matthys 372fbe7af9 - Win32 installer: Make it so a user can no longer accidentally check both
'install as service' and 'encrypt SSL certificate', as they are
  incompatible (a service cannot ask a user to enter a password).
- Win32 installer: Fixed long outstanding problem with some Vista / Windows 7
  installations, which has to do with file permissions of the Unreal3.2
  folder. Symptoms were error messages such as:
  Unable to create file 'tmp/10D9D743.commands.dll': Permission denied
  But also failing to create SSL certificates, nothing being logged, etc.
  This is now fixed by setting write access on the Unreal3.2 folder to the
  user running the install, unless the user chooses not to use this new
  option (it can be unchecked), in which case the user is warned that he
  should take care of this himself.
  Reported by various persons, special thanks to Bock and goldenwolf for
  helping us to track down this issue (#0003943).
2010-11-15 13:41:04 +00:00
autoupdate d53d7156ae Automatic weekly version update: 201046 2010-11-15 00:00:02 +00:00
Bram Matthys 64dcfe6073 Forgot to remove a FIXME comment which was already fixed ;) 2010-11-13 19:26:59 +00:00
Bram Matthys a2137bda71 local chanmode, chan mode +Z, operoverride with key 'override', sorting HELPOP CHMODES, fishy timestamps:
- Some small updates to the extended channel mode system: it now has minimal
  support for 'local channel modes'. This is really only meant for channel
  mode +Z (upcase z), see next.
- Added Channel Mode Z which indicates if a channel is 'secure' or not.
  This mode works in conjunction with +z (lower case z).
  If +z is set ('only secure users may join'), then the IRCd scans to see
  if everyone in the channel is connected through SSL. If so, then the
  channel is set +Z as well ('channel is secure').
  Whenever an insecure user manages to join, the channel is -Z. And whenever
  all insecure users leave, the channel is set +Z.
  The 'insecure user being present in a +z channel' can be because:
  - An IRCOp joined the channel, and he's not secure
  - When servers link together and a user on the other side is not secure
    This only happens on net merge (equal time stamp).
    On different time stamp, we still kick insecure users on the new side.
  - At the time when +z is set, there are insecure users present.
  This feature was implemented after a heavy discussion in bug #3720 by fez
  and others, and was suggested by Stealth.
  Tech note: +Z/-Z is handled locally by each server. Any attempt to
  remotely set +Z/-Z (eg: by services) will be ignored.
- As mentioned above, +z can now be set even if any insecure users are
  present. Previously, this was not permitted. Now, as soon as the last
  non-SSL user leaves, the channel will be set +Z.
- An oper not connected through SSL previously had to /INVITE himself
  to a channel and then /JOIN the channel with the key 'override'.
  This 'override' key is no longer required, a simple JOIN will suffice.
- Sorted channel modes in /HELPOP ?CHMODES
- Re-enabled 'fishy timestamp' errors in MODE. For some reason this was
  commented out, even though the (more annoying and less useful) code in
  JOIN was enabled so that did not make a lot of sense. It also now logs to
  ircd.log (or whatever you configure). This enables people to easier find
  the cause of any timestamp issues (which usually is badly coded services).
2010-11-13 19:23:05 +00:00
autoupdate 6e8b77aa86 Automatic weekly version update: 201045 2010-11-08 00:00:04 +00:00
autoupdate a741b152c3 Automatic weekly version update: 201044 2010-11-01 00:00:04 +00:00
binki 4237409031 - And another m_nopost makefile.win32 fix. 2010-10-27 20:32:15 +00:00
diablo 820fae9054 *** empty log message *** 2010-10-26 18:35:28 +00:00
autoupdate 78952aed40 Automatic weekly version update: 201043 2010-10-24 23:00:03 +00:00
Bram Matthys 81dd721ed1 - Updated doc/compiling_win32.txt with current free MS SDK information,
patch from goldenwolf.
2010-10-24 12:43:21 +00:00
alef ba262c4a56 - fix typos 2010-10-22 21:16:17 +00:00
Bram Matthys 028f6ff83b - Fix missing OperOverride notices for +u and +L if not chanowner, reported
by Mareo (#0003358), partial patch from DJ.
2010-10-22 13:08:25 +00:00
Bram Matthys 73c2f8174d (interim) fix, not worth mentioning 2010-10-22 13:08:05 +00:00
autoupdate e089980d2a Automatic weekly version update: 201042 2010-10-17 23:00:02 +00:00
alef b09466c8ee - fix some accents issues
- connection -> connexion where needed
2010-10-17 10:20:28 +00:00
alef 639fc51d59 Translate spamfilter 'warn' action. 2010-10-17 09:48:04 +00:00
Bram Matthys 77bc5ab29d - Document spamfilter 'warn' action in unreal32docs. 2010-10-16 09:14:43 +00:00
diablo 6933245997 *** empty log message *** 2010-10-12 19:05:32 +00:00
autoupdate 4a66f658f7 Automatic weekly version update: 201041 2010-10-10 23:00:02 +00:00
alef 685517eadb Mistranslation of +G mode + set::allowed-nickchars 2010-10-09 20:18:48 +00:00
autoupdate 4cb8605d95 Automatic weekly version update: 201040 2010-10-03 23:00:02 +00:00
binki e95ef070d1 - Add m_nopost to makefile.win32 in the hopes that it may work (#3961). 2010-09-30 22:50:30 +00:00
diablo 64ef568a48 *** empty log message *** 2010-09-30 20:44:58 +00:00
autoupdate 492e30676c Automatic weekly version update: 201039 2010-09-26 23:00:02 +00:00
Bram Matthys ed8b8da20b - Fixed braindamage in stacked bans. 2010-09-25 11:21:37 +00:00
binki 08f86d9b2e - Always display the real host of successful OPERing up. Reported by Josh. (#3950) 2010-09-20 12:30:59 +00:00
binki 574ebf6eed - Fix ordering of `9. FAQ'' and `10. Modules'' in HTML docs. 2010-09-20 00:33:31 +00:00
autoupdate b19cb1dcae Automatic weekly version update: 201038 2010-09-19 23:00:02 +00:00
Bram Matthys bf40486341 reworded... as it was already showing the proper error in many cases... but not all :p 2010-09-19 14:34:20 +00:00
Bram Matthys 63dd326113 - SSL errors are now more descriptive. 'Underlying syscall error' is now
gone and shows the actual (surprise!) underlying syscall error.
  Reported by vonitsanet, patch from ohnobinki (#0003157).
2010-09-19 14:26:47 +00:00
Bram Matthys 17c97c8442 - Fixed notices to opers about server delinks not being broadcasted to all
other servers if they were on SSL links. Reported by chotaire (#0003957).
2010-09-19 14:10:43 +00:00
alef ef7a94164c Typo 2010-09-19 13:58:54 +00:00
alef 2d11cf09b9 Updating to r1.1.2.144.2.147 (Modules section, m_nopost + set options, badword block)
+ various html markup fixes
+ some mistranslation
2010-09-19 13:56:18 +00:00
alef 6ee99cde84 Mistranslation 2010-09-19 12:41:43 +00:00
Bram Matthys d717e0fc62 Clarify relationship between nopost and NOSPOOF (in Changelog) 2010-09-19 11:33:13 +00:00
binki a87f26d911 Add missing </b>. 2010-09-15 22:43:51 +00:00
binki 1a01e725c7 - Add the m_nopost module written by syzop and compile it into
commands.so. This module was written to help IRCd maintainers deal
  with some sort of ``XPS'' attack in which javascript-initiated HTTP
  POST form submissions were able to act as dummy IRC bots. These
  simple bots were the cause of much spam. (#3893)
- Add a modules section to the documentation. This was created to put
  all documentation specific to the m_post module in one, easy to find
  place. The documentation on m_post is likely incomplete, however.
2010-09-15 16:22:25 +00:00
binki 1605db3ced - Document the badword block more explicitly and clearly. (#3959) 2010-09-15 16:09:34 +00:00
autoupdate ae6415afa0 Automatic weekly version update: 201037 2010-09-12 23:00:03 +00:00
alef 3dc7f640b8 Updating example.fr.conf - new translator 2010-09-11 20:52:34 +00:00
alef 0bbd7a58cf Update of help.fr.conf - new translator 2010-09-11 18:25:29 +00:00
alef 7bb6728af4 rehash -flags and translation for "garbage collection" 2010-09-11 18:23:29 +00:00
alef c305b860b5 Fixing typos. 2010-09-11 15:30:20 +00:00
Bram Matthys bcd89f7db8 - Reverted an IPv6/Config fix I did on July 17. Reported by chotaire (#3958). 2010-09-08 15:17:46 +00:00
alef fface35935 Major docs update, new translator. 2010-09-08 13:23:50 +00:00
Bram Matthys b83f096e48 - Fixed another compile problem on QNX, reported by chotaire (#3955 too).
- Fixed incorrect messages regarding clock going backwards on QNX 6 and
  later, reported by chotaire (#0003956).
2010-09-08 11:07:22 +00:00
binki a744b9b212 - Don't use sys/errno.h, as it's not POSIX and breaks on QNX-6.5.0. (#3955) 2010-09-07 15:39:47 +00:00
autoupdate ffda323d9d Automatic weekly version update: 201036 2010-09-05 23:00:02 +00:00
diablo 27e4c6f3f7 New translator: diablo. Major update: documentation is now up to date again (week 33) 2010-08-30 09:05:01 +00:00
diablo 2c0e131dc7 changes of week 32 2010-08-30 09:03:04 +00:00
autoupdate 8895f1e60d Automatic weekly version update: 201035 2010-08-29 23:00:03 +00:00
binki 9643607334 - Fix segfault by checking if RESTRICT_USERMODES is NULL in the code for bug #3329. 2010-08-25 04:36:28 +00:00
binki c144008217 - Fix /msg IRC WHOIS response for persons with secure connections. (#3947) 2010-08-24 16:46:29 +00:00
autoupdate 35ec730f8b Automatic weekly version update: 201034 2010-08-22 23:00:02 +00:00
Bram Matthys 9a5c536cce hm :) 2010-08-20 12:16:40 +00:00
Bram Matthys da48cfc039 *** empty log message *** 2010-08-20 12:15:27 +00:00
binki 36c0bdde2e - Remove snomasks upon deopering when it seems like the user shouldn't have snomasks. (#3329) 2010-08-20 11:15:22 +00:00
binki 9f823be20b - Warn users against running UnrealIRCd as root without setting IRC_USER. (#3053 reported by Stealth) 2010-08-20 11:10:00 +00:00
binki 964bb656c7 - Prepend a `0' to the begining of --with-permission, working around a Mac OS X bug and hiding the fact that chmod()'s params are octal from users. (#3189) 2010-08-19 00:58:24 +00:00
bock 96da66cf7a Updated documentation to actual state. 2010-08-18 22:18:57 +00:00
binki d46bdd4841 - Update .cvsignore for Mac OSX's *.dSYM files. 2010-08-17 16:50:42 +00:00
binki e473fbc44c - Actually initialize m_starttls when it's included into commands.so. 2010-08-16 17:00:42 +00:00
Bram Matthys 6dcb276f8d - Get rid of any setsockopt(IPV6_V6ONLY) errors in ircd.log (#3944).
(oh and yeah I removed the prototype of our_crc32 which is totally unrelated...)
2010-08-16 09:31:04 +00:00
binki d012c49f1b - Install ircdcron scripts. (#2620)
- Autogenerate ircdcron/ircd.cron based on ./configure settings.
2010-08-16 02:29:34 +00:00
binki 7272715cec - Upgrade to tre-0.8.0, adding hack similar to the one for c-ares to ensure that the bundled tre is compiled against even when a system libtre is installed. (#3916) 2010-08-16 02:09:51 +00:00
autoupdate 30c5236f25 Automatic weekly version update: 201033 2010-08-15 23:00:02 +00:00
binki 2d10ab189d - IPv6 clones detection support (#2321). allow::ipv6-clone-mask determines the number of bits used when comparing two IPv6 addresses to determine if allow::maxperip is exceeded. This allows an admin to recognize that most IPv6 blocks are allocated to individuals, who might each get a /64 IPv6 block. set::default-ipv6-clone-mask defaults to 64 and provides default value for the allow blocks. 2010-08-15 04:44:16 +00:00
Bram Matthys fae4629c46 un-hi 2010-08-14 18:35:32 +00:00
Bram Matthys a71a1a394f teh hi 2010-08-14 18:35:05 +00:00
Bram Matthys 75d4fecb4b ..This is actually an update of earlier code from CVS, but now it works ok:..
- Added support for "stacked" extbans. Put simply this allows extban combinations
  such as ~q:~c:#test to only silence users on #test, for example. This feature
  is enabled by default, but can be disabled during ./Config -advanced.
  This feature was suggested by Shining Phoenix (#0003193), was then coded
  by aquanight for U3.3, and later on backported and partially redone by Syzop.
  Module coders:
  In an extban ~x:~y:something where we call ~x the 1st, and ~y the 2nd extban:
  Since stacked extbans only makes sense where the 1st one is an action
  extended ban like ~q/~n/~j, most modules won't have to be changed, as
  their extban never gets extended (just like ~c:~q: makes no sense).
  However, you may still want to indicate in some cases that the extban your
  module introduces also shouldn't be used as 2nd extban.
  For example with a textban extban ~T it makes no sense to have ~n:~T.
  The module can indicate this by setting EXTBOPT_NOSTACKCHILD in
  the ExtbanInfo struct used by ExtbanAdd().
  For completeness I note that action modifier extbans are indicated by
  EXTBOPT_ACTMODIFIER. However, note that we currently assume all such
  extbans use the extban_is_ok_nuh_extban and extban_conv_param_nuh_or_extban
  functions. If you don't use these and use EXTBOPT_ACTMODIFIER, then things
  will go wrong with regards to stack-counting.
  Module coders should also note that stacked extbans are not available if
  DISABLE_STACKED_EXTBANS is defined.
- Added extended ban ~R:<nick>, which only matches if <nick> is a registered
  user (has identified to services). This is really only useful in ban
  exemptions, like: +e ~R:Nick would allow Nick to go through all bans if he
  has identified to NickServ. This is often safer than using +e n!u@h.
- Added Extended Invex. This is very much like extended bans, in fact it
  supports some of the same flags. Syntax: +I ~character:mask
  Currently supported are: ~c (channel), ~r (realname) and ~R (registered).
  This can be useful when setting a channel invite only (+i) and then
  setting invite exceptions such as +I ~c:#chan (or even ~c:+#chan), while
  still being able to ban users.
  Because action modifiers (~q/~n/~j) make no sense here, extended invex
  stacking (+I ~a:~b:c) makes no sense either, and is not supported.
  Suggested by DanPMK (#0002817), parts based on patch from ohnobinki.
  Module coders: set EXTBOPT_INVEX in the ExtbanInfo struct used by
  ExtbanAdd() to indicate that your extban may also be used in +I.
- Invex (+I) now always checks cloaked hosts as well. Just like with bans,
  it checks them also when the user is not currently cloaked (eg: did -x, or
  is currently using some VHOST).
- Fixed client desynch caused by (un)banning, reported by Sephiroth (#2837).
2010-08-14 18:27:19 +00:00
binki a0b4fe90ec - Add a missing double-quote to help.conf. 2010-08-13 14:29:55 +00:00
Bram Matthys 0b54bd259e Usage example of +b ~j (from aquanight) 2010-08-13 13:11:28 +00:00
Bram Matthys d8b2069bce - Make extended bans documentation more clear by splitting the extbans in
two groups: one that specifies ban actions (~q/~n/~j) and one that
  introduces new criteria (~c/~r). Also added documentation for ~R which
  does not exist yet, but will soon...
2010-08-13 11:44:24 +00:00
Bram Matthys aaa52b3443 - Uniform naming for 'stacked extbans' in Changelog/etc. 2010-08-13 10:18:27 +00:00
binki f584875279 - Remove extras/c-ares before each time c-ares is compiled. 2010-08-11 03:53:46 +00:00
bock 14472ae09b release update 2010-08-10 20:54:27 +00:00
bock bea978de96 deleted "kline" from logging 2010-08-10 20:34:42 +00:00
autoupdate 58151df3b7 Automatic weekly version update: 201032 2010-08-08 23:00:02 +00:00
binki a6c7bb1043 - Force compilation with bundled c-ares to statically link using more sed hackery in configure.ac. 2010-08-06 03:59:57 +00:00
binki 901b9c272a Make that c-ares-1.6.0. 2010-08-04 01:38:30 +00:00
binki e540730751 - Upgraded c-ares to 1.7.3. API seems compatible with c-ares-1.6.3. (#3932) 2010-08-04 01:36:11 +00:00
binki 0a34af8720 - Define intptr_t in win32's setup.h. (#3939) 2010-08-04 00:03:40 +00:00
binki 94c2b58366 - Fix a few compiler warnings with some double-casting and another const. (#3939) 2010-08-03 23:57:44 +00:00
binki a1d076367e - Fix src/Makefile's lack of depencencies for module.c, related to #3938. 2010-08-03 17:06:05 +00:00
autoupdate eb1f41bd9c Automatic weekly version update: 201031 2010-08-01 23:00:03 +00:00
autoupdate 27c437c953 Automatic weekly version update: 201030 2010-07-25 23:00:02 +00:00
binki 889dd73f15 I forgot a bug number again; extban ~j is for (#3192). 2010-07-22 12:33:09 +00:00
binki 46668768cf - Add an extban of the schema +b ~j:*diff | less@* which _only_ prevents a user from joining a channel. 2010-07-22 12:32:06 +00:00
Bram Matthys 85904c2277 - Fix the detection for curl-without-c-ares a little (#0003940). ** fun.. autoconf 2.61** 2010-07-22 09:59:36 +00:00
Bram Matthys d0cb4dc5f5 Really really minor tweaks ;p 2010-07-22 09:41:56 +00:00
binki c4abef39cd - Remove browser compatibility listing from HTML docs.
- Added information about ``oper::password::auth-type sslclientcert'' and the same for link::password-receive::auth-type. (#3133)
- A little bit more of interlinking and using id="" instead of <a  name="" />
2010-07-21 23:19:53 +00:00
binki 7a3bf15558 - Now define _SOLARIS, USE_LIBCURL, and ZIP_LINKS in setup.h instead of the Makefiles. This means better automatic rebuilds if the latter settings change. 2010-07-20 16:09:10 +00:00
autoupdate 48b76358f4 Automatic weekly version update: 201029 2010-07-18 23:00:03 +00:00
Bram Matthys 48b270347a Signing of comments, removal of comment, not worth mentioning in Changelog 2010-07-17 11:19:48 +00:00
Bram Matthys 7c23a98292 - Same for IPv6 2010-07-17 11:15:37 +00:00
Bram Matthys 8b6967d8b9 - Fixed similar bug like nospoof with ./Config, but now with prefixaq. 2010-07-17 11:05:15 +00:00
Bram Matthys c40fc340b8 - Initialize ARG parameter properly in ./Config, otherwise everything fails. 2010-07-17 10:58:09 +00:00
Bram Matthys 35c30baace - The configure.ac change silently changed the nospoof parameter in
./configure. This meant that the answer to NOSPOOF in ./Config was ignored
  and it was always enabled.
2010-07-17 10:38:36 +00:00
binki b2e4cf82f8 - Support compiling with a bundled c-ares again, the hacky way. (#3931) 2010-07-16 13:14:44 +00:00
binki 45aeb1e61d - Give more clear error to users who use make custommodule'' without MODULEFILE. (#3935) 2010-07-16 12:04:34 +00:00
Bram Matthys 2510f2c94b - Added some checks in ./Config which (often) ensures that the self-compiled
curl version is new enough and is not using a c-ares which is binary
  incompatible. If the self-compiled curl version is (too) outdated, then we
  now suggest to rename it and have the installer re-download and compile
  it automatically. This avoids some potential crashes.
2010-07-16 10:55:45 +00:00
binki 4eff1e8493 - Remove extraneous `I' from configure.ac, run ./autogen.sh. (#3930) 2010-07-15 21:33:54 +00:00
Bram Matthys c9acb9d1c7 - The patch from #0003888 made ./Config favor the curl in /usr, even if it
was not compiled with c-ares, which is clearly a bad idea as then the
  entire IRCd can hang for several seconds or more...
  We now check if they support asynch DNS, and skip them if they don't.
2010-07-15 11:01:34 +00:00
Bram Matthys 6b3132e0c6 This file is out of date ;) 2010-07-14 18:54:52 +00:00
Bram Matthys c514288a0a - Fixed some odd behavior with SVSMODE and +z/-z, reported by TehRes (#0003498), fixed a strange SVSMODE +d <non-number> bug where it would act as a +x too. 2010-07-14 18:54:38 +00:00
Bram Matthys f4630c24e0 - Updated doc/coding-guidelines 2010-07-14 09:26:17 +00:00
binki f72ad19637 - helpop documentation for stacked extbans. 2010-07-13 22:14:45 +00:00
binki d09b68a942 - Prevent stacked bans (like +b ~q:~q:~n:~c:#chanel) from crashing unrealircd due to over-recycling a static buffer. Discovered by syzop. 2010-07-13 14:24:08 +00:00
binki c2279a9298 Added bug reference to changes for #0003918. 2010-07-12 05:02:10 +00:00
binki 4cc0244c58 - Remove remaining nameser.h references from Makfiles. 2010-07-12 01:25:14 +00:00
autoupdate 4238fff401 Automatic weekly version update: 201028 2010-07-11 23:00:02 +00:00
binki d421282cf5 - Remove include/nameser.h and reference to nameser.h from s_bsd.c. The associated functionality has been provided by c-ares for a long time. 2010-07-10 13:52:52 +00:00
binki 649818d4ad - Fix references to motd and friends in src/win32. 2010-07-09 17:46:38 +00:00
binki ac81a9cd9a - Fix references in src/win32 to aMotd to now be to aMotdFile. 2010-07-09 17:25:33 +00:00
binki bd636c4e6d - Attempt to make up for Windows not having mode_t and not complying to POSIX. 2010-07-09 15:40:58 +00:00
binki 7dbf154d04 - Move configure.ac to the project's root.
- Separate m4 macros into *.m4 files (it is much easier to run aclocal now).
- Remove unused DOMAINNAME macro and --with-hostname= options as the DOMAINNAME macro isn't used anywheres and its use shouldn't be encouraged.
- autogen.sh to bootstrap the buildsystem. We now maintain setup.h with autoheader.
- --disable-blah now does the opposite of --enable-blah. The same for --with-blah and --without-blah. (This makes Gentoo users happier).
2010-07-08 02:51:43 +00:00
autoupdate 5cf8ee21a0 Automatic weekly version update: 201027 2010-07-04 23:00:03 +00:00
binki 2a6a4b31ff - Fixed a few trivial compilation warnings. 2010-06-29 03:00:34 +00:00
autoupdate c3ea2568b2 Automatic weekly version update: 201026 2010-06-27 23:00:02 +00:00
binki 7fdd8cce96 - Fixed desynchronized prototype. 2010-06-26 04:36:56 +00:00
binki 11d84d8534 - Replaced some coders@lists.unrealircd.org references with bugs.unrealircd.org.
- Update/add some .cvsignore files.
2010-06-21 21:57:42 +00:00
Bram Matthys 1e5e60d635 - Fixed race condition / reference count issue where an outgoing server connect
would cause the IRCd to crash. Reported by Monk (#0003913).
2010-06-21 12:27:45 +00:00
Bram Matthys a523cec997 blah 2010-06-21 09:27:34 +00:00
autoupdate 2980fe011f Automatic weekly version update: 201025 2010-06-20 23:00:02 +00:00
binki 8ee34484b4 - When removing a SHUN, check if users who were blocked by this SHUN are still blocked by another SHUN. Previously, if multiple shuns covered a single user, removing one of these shuns would mark the user as un-SHUN-ed. (#0003906) 2010-06-20 06:28:38 +00:00
binki c1ca937861 Updated the correct Changes file. 2010-06-19 22:01:39 +00:00
binki aa0c706bff - Handle bad flags in set::ssl::options better (#0003896). 2010-06-19 22:00:05 +00:00
binki 2828e7f8b2 - Rename configure.in to configure.ac and modernize AC_INIT. 2010-06-19 03:22:51 +00:00
binki 9faa5a6d2b - Fix files::shortmotd to by accepted by unrealircd like the docs say it is.
- Fix remote includes download handling which I broke for remote includes ;-).
- Recursively add more consts.
2010-06-17 02:41:43 +00:00
binki d7835d959e - Fix typo 2010-06-16 14:14:08 +00:00
Bram Matthys 6e34938c59 - Forgot to commit the REMOTEINC_SPECIALCACHE stuff to config.h which means
it wasn't actually enabled until now...
2010-06-16 11:47:42 +00:00
binki 06e807130c - Added error message for unknown directives in the "files" block
- Remote MOTD support. Not adequately tested. Required restructuring of the asynchronous download callback and handler.
- Added some consts throughout url.c, etc.
- Fix segfault where the an include directive specifies a URL and cURL follows redirects, resulting in a different resultant URL. The remote includes code would look for the an include block using the resultant URL and assume that it would be found. The new code searches differently, has new checks, and ignores the resultant URL.
- Removed duplicated m_motd() and friends that were both in modules and s_serv.c. The copies in s_serv.c (core) were overriding the in-module functions.
2010-06-16 05:44:15 +00:00
binki fc1e848a2a - Throw out old USE_POLL code which 1. has no buildsystem support and 2. has comments which claim it doesn't work.
- Removed extraneous apostrophe from a module loader error message.
2010-06-15 02:37:50 +00:00
autoupdate 5cf1dc144a Automatic weekly version update: 201024 2010-06-13 23:00:02 +00:00
autoupdate 304e3ad0d4 Automatic weekly version update: 201023 2010-06-06 23:00:03 +00:00
autoupdate 6ab3862520 Automatic weekly version update: 201022 2010-05-30 23:00:02 +00:00
binki 9e64a0121c - More strict sockhost (hostmask) checking in m_nick.c:_register_user(). Fixed some bad string handling as well. See comments in bug (#0003907). 2010-05-28 21:31:36 +00:00
binki f1ec26a07c - Partially fixed bug where IPv4 addresses were randomly mishandled by the cgiirc code, resulting in the sockhost/hostmask being set to something like ::ffff:127.0.0.1, which confused the s2s protocol. Reported by tabrisnet (#0003907). Also, reject incorrectly formed hostnames from WEBIRC command. 2010-05-28 04:30:22 +00:00
Bram Matthys 625102cacd - Fixed bug in CVS where the ban exempt (+e) handling was reversed: if a
non-matching +e was present, one could walk through bans. Reported by
  tabrisnet (#0003909). Bug was caused by chained/stacked extbans.
2010-05-24 12:01:07 +00:00
Bram Matthys a9e547614b send people to the web, and scratch stskeeps ;p 2010-05-24 11:58:55 +00:00
autoupdate a4fc53fc3a Automatic weekly version update: 201021 2010-05-23 23:00:03 +00:00
Bram Matthys ab7957a6a8 docs: credit changes (permanent), the rest: interim credit changes -- needs to be finalized before 3.2.9 release, as always... 2010-05-17 10:01:08 +00:00
binki f4e4df6d6a - ./Config now remembers extra/custom ./configure parameters. 2010-05-17 04:36:43 +00:00
binki df9d102d98 - Added chmode +r to HTML documentation 2010-05-17 03:33:41 +00:00
binki 9f6492169b - SVSMODE now triggers HOOKTYPE_UMODE_CHANGE and HOOKTYPE_REMOTE_CHANMODE. 2010-05-17 02:41:43 +00:00
autoupdate fe33820f02 Automatic weekly version update: 201020 2010-05-16 23:00:11 +00:00
binki 1f89c2f6df Removed ugly ``files {} got initialized!'' message. 2010-05-15 21:23:29 +00:00
binki 38b7350f7c Remove m_addline from commands.so 2010-05-15 21:17:57 +00:00
autoupdate 80c21aac2e Automatic weekly version update: 201019 2010-05-09 23:00:08 +00:00
binki 046eb67100 - Fix -DDEFAULT_PERMISSIONS=0 support. Previously, support.c:unreal_copyfile() would create files with no permissions, breaking loadmodule. (#0003905) 2010-05-05 23:59:27 +00:00
binki 23f72648c4 - Clarify/expand alias block documentation, especially for alias::type=command; (#0003902) 2010-05-05 22:50:31 +00:00
binki c0790e90de - Remove the Compile as hub/leaf'' concept as I'm quite sure this doesn't actually do anything (#0003891) 2010-05-05 22:39:18 +00:00
binki 5f05b3c80b - Update Unreal.nfo with information about new support network setup (#0003904) 2010-05-05 21:55:13 +00:00
autoupdate 0c939fa194 Automatic weekly version update: 201018 2010-05-02 23:00:10 +00:00
autoupdate 24d0463d4c Automatic weekly version update: 201017 2010-04-25 23:00:15 +00:00
Bram Matthys 8e26c4b540 linking bug & ipv6 thing (the latter is completely untested):
- IPv6: it seems some recent Linux dists decided to make IPv6 sockets
  IPv6-only, instead of accepting both IPv4&IPv6 on them like until now.
  FreeBSD (and other *BSD's) already did that move a few years back,
  requiring server admins to sysctl.
  We now make use of a new option to explicitly disable "IPv6-only".
  This should work fine on Linux.
  Whether it provides a complete solution for FreeBSD, I don't know, testing
  is welcome! In theory setting net.inet6.ip6.v6only to 0 should no longer
  be needed, but you might still need to enable ipv6_ipv4mapping.
- Fix stupid issue where current CVS would no longer link TO an earlier
  Unreal server (eg: outgoing connect to a 3.2.8 hub). Reported by ohnobinki
  (#0003901).
2010-04-25 19:14:55 +00:00
autoupdate cd3dd80c54 Automatic weekly version update: 201016 2010-04-18 23:00:17 +00:00
autoupdate e3be08d5d1 Automatic weekly version update: 201014 2010-04-04 23:00:21 +00:00
autoupdate 84a19ab091 Automatic weekly version update: 201013 2010-03-28 23:00:16 +00:00
autoupdate e422f24d52 Automatic weekly version update: 201012 2010-03-22 00:00:10 +00:00
autoupdate a7ea2f49b3 Automatic weekly version update: 201011 2010-03-15 00:00:04 +00:00
Bram Matthys b245850fb0 update donators. 2010-03-08 16:24:22 +00:00
autoupdate 86d8796b77 Automatic weekly version update: 201010 2010-03-08 00:00:12 +00:00
Bram Matthys e47baea5da - Made '/REHASH -motd' really rehash *all* MOTD, OPERMOTD, BOTMOTD and RULES
files. Reported by bitmaster (#0003894).
2010-03-03 13:56:28 +00:00
autoupdate 982e5a82c0 Automatic weekly version update: 201009 2010-03-01 12:14:53 +00:00
Bram Matthys 1af446e5a3 clarify UNREAL_VERSION_TIME: the week # is ISO week. 2010-03-01 12:08:38 +00:00
Bram Matthys fb68c66f31 - Updated ./Config description for NOSPOOF, it already said it protects
against HTTP POST proxies, now added some extra text to say it also
  protects against the Firefox XPS IRC Attack. Also made NOSPOOF enabled by
  default on *NIX (this was already the case on Windows).
- Updated ./Config description for DPATH. Seems quite some people answer
  this question wrong, and when that happens, you only get some obscure
  error when running './unreal start'.
- Fixed 'unreal' script to give a better error if it cannot find the IRCd
  binary.
2010-03-01 11:49:30 +00:00
Bram Matthys a41384b37f - Removed old dgets() and crc32 function (code cleanup) 2010-02-13 13:09:46 +00:00
Bram Matthys ef745b3423 - We now no longer treat \ (backslash) in *MOTD and RULES files as special.
Previously this caused some really odd behavior. Backslashes are now
  treated as-is, so no special escaping is necessary. Reported by DelGurth
  (#0003002).
- Removed old dgets() function
2010-02-13 13:07:19 +00:00
Bram Matthys d4d58c1247 - Better document /REHASH flags. No longer document some flags as they are
redundant and confusing. Also removed an old statement saying k-lines would
  be erased on rehash which is not true. Documented '/rehash -dns'.
  Reported by ohnobinki (#0003881).
2010-02-13 12:48:33 +00:00
Bram Matthys bd999808d7 - Updated pkg-config m4 macro (now 0.23) for configure, patch from ohnobinki (#0003889). 2010-02-13 11:22:53 +00:00
Bram Matthys ee078bb165 Removed old coders, pretty outdated... 2010-02-11 17:38:41 +00:00
Bram Matthys ab2776eb6b - Another c-ares fix for Solaris 10, this time it had to do with
PATH_SEPARATOR, the exact error was: error: PATH_SEPARATOR not set.
  Reported by j0inty, patch provided by ohnobinki (#0003887).
2010-02-08 17:04:42 +00:00
Bram Matthys b2332556ac - Fix for --with-system-cares, reported and patch provided by ohnobinki (#0003890). 2010-02-08 16:59:06 +00:00
Bram Matthys 3bcb2fe524 - Reverted the revert and updated one line to fix the fix. 2010-02-08 16:50:35 +00:00
Bram Matthys d794786ec0 - Patch from above is (temp.) reverted, Unreal wouldn't compile without curl. 2010-01-27 09:13:20 +00:00
Bram Matthys 8171ea4fd8 - Added patch from ohnobinki (#0003888), only slightly edited, which improves
curl detection, added checks to see if curl actually works (print out a
  clear curl error during configure, instead of getting an error during
  'make'), and we now error when using --enable-libcurl without
  --with-system-cares if the system curl depends on c-ares. This is because
  this can cause ABI incompatability between curl's c-ares and our c-ares,
  which leads to odd issues such as:
  Could not resolve host: www.example.net (Successful completion)
  And possibly other weird issues, perhaps even crashes.
2010-01-25 20:23:59 +00:00
Bram Matthys 89e70ff23f woops.. set -x ;) 2010-01-25 10:55:21 +00:00
lowdigit a19e31dbd0 update doc 2010-01-23 12:59:54 +00:00
lowdigit 75ce9d27e7 again doc update 2010-01-18 14:05:04 +00:00
lowdigit 9c22c743c6 doc update 2010-01-18 14:03:38 +00:00
lowdigit 1defbfc962 *** empty log message *** 2010-01-18 13:56:16 +00:00
lowdigit 1d79699c0d another test 2010-01-16 19:13:55 +00:00
lowdigit 341bb11423 test 2010-01-16 19:13:34 +00:00
Bram Matthys 9259ddee06 - Added set::uhnames setting which can be used to disable uhnames by setting
it to 'no', the default is 'yes' (on). Requested by Robin (#0003885) as
  UHNAMES may increase the time of the nick list being loaded from 1 to 4
  seconds when joining several channels with more than 1000 users. As this
  problem is only present on some networks, we keep UHNAMES enabled by
  default.
2010-01-12 18:30:36 +00:00
Bram Matthys 9d3c5ce8e1 - Fixed a /RESTART issue on Linux: Unreal did not properly close all file-
descriptors. Because of this, Unreal did not restart properly as you would
  get an "Address already in use" error. This only seemed to happen when
  logging to syslog, or when there was something wrong with syslogd.
  Reported by Mouse (#0003882).
2010-01-04 13:22:34 +00:00
Bram Matthys 32ab3cba8b woops.. credit ;) 2010-01-04 13:12:29 +00:00
Bram Matthys 7ad6dcd977 - Fixed a /RESTART issue on Linux: Unreal did not properly close all file-
descriptors. Because of this, Unreal did not restart properly as you would
  get an "Address already in use" error. This only seemed to happen when
  logging to syslog.
- Fixed a similar issue with syslog (and debugmode) and closing fd's as well:
  the first port we listened on would not open up, ircd did not log any error.
2010-01-04 13:11:03 +00:00
Bram Matthys 6b28bfd1b7 curl auto-installation:
- Made ./Config description about remote includes a bit more clear.
- When you now answer Yes to Remote includes in ./Config and $HOME/curl does
  not exist, it now asks you if you want to automatically download and
  install curl (which is done by ./curlinstall).
  This has been tested on Linux, further testing on f.e. FreeBSD is
  required.
2010-01-03 16:24:48 +00:00
Bram Matthys cb7c1a821b test 2010-01-01 20:23:37 +00:00
Bram Matthys e3da8c7ebe test 2010-01-01 20:22:41 +00:00
Bram Matthys 55fbab833b test 2010-01-01 20:22:23 +00:00
Bram Matthys ee2f4f5f22 empty line 2010-01-01 20:02:15 +00:00
Bram Matthys dddc8f07e4 PROTOCTL EAUTH/SERVERS/new linking protocol:
- Server protocol: added PROTOCTL EATH=servername, which allows us to
  authenticate the server very early in the handshake process. That way,
  certain commands and PROTOCTL tokens can 'trust' the server.
  See doc/technical/protoctl.txt for details.
- Server protocol: between new Unreal servers we now do the handshake a
  little bit different, so it waits with sending the SERVER command until
  the first PROTOCTL is received. Needed for next.
- Server protocol: added PROTOCTL SERVERS=1,2,3,4,etc by which a server can
  inform the other server which servers (server numeric, actually) it has
  linked. See doc/technical/protoctl.txt and next for details.
- When our server was trying to link to some server, and at the same time
  another server was also trying to link with us, this would lead to a
  server collision: the server would link (twice) ok at first, but then a
  second later or so both would quit with 'Server Exists' with quite some
  mess as a result. This isn't unique to Unreal, btw.
  This happened more often when you had a low connfreq in your link blocks
  (aka: quick reconnects), or had multiple hubs on autoconnect (with same
  connfreq), or when you (re)started all servers at the same time.
  This should now be solved by a new server handshake design, which detects
  this race condition and solves it by closing one of the two (or more)
  connections to avoid the issue.
  This also means that it should now be safe to have multiple hubs with low
  connfreq's (eg: 10s) without risking that your network falls apart.
  This new server handshake (protocol updates, etc) was actually quite some
  work, especially for something that only happened sporadically. I felt it
  was needed though, because (re)linking stability is extremely important.
  This new feature/design/fix requires extensive testing.
  This feature can be disabled by: set { new-linking-protocol 0; };
2010-01-01 19:49:06 +00:00
autoupdate 080a2d6810 Automatic weekly version update: 200952 2009-12-28 05:00:05 +00:00
stylus740 cb385bc103 changes of week52: unreal3_2_fixes doc/example.de.conf doc/unreal32docs.de.html 2009-12-27 08:48:28 +00:00
Bram Matthys feb5d81406 update unreal-notify mailinglist link (old one 404'd), add forums link. 2009-12-24 09:30:50 +00:00
Bram Matthys 0039f7db25 - Removed log target 'kline' from documentation, as it didn't do anything
(use 'tkl' instead). Reported by nephilim and Stealth (#0003849).
2009-12-22 13:49:05 +00:00
autoupdate 75685b1684 Automatic weekly version update: 200951 2009-12-21 05:00:03 +00:00
angrywolf 1eb2a21b49 Typo correction in Files Block 2009-12-15 13:04:59 +00:00
angrywolf 8f1f47aece - Added missing section 'Files block' (for some reason I missed the diff mail for it).
- Grammar correction (removed the affix from irc.unrealircd.org so it's easier to update correctly).
2009-12-15 12:59:46 +00:00
angrywolf 20c00d3697 Changes of week 50 2009-12-15 12:23:15 +00:00
autoupdate 086d464c8a Automatic weekly version update: 200950 2009-12-14 05:00:03 +00:00
stylus740 49fa3ed3d8 unreal32docs.de.html changes of week 50 2009-12-12 11:45:00 +00:00
autoupdate 8b637e344b Automatic weekly version update: 200949 2009-12-07 05:00:04 +00:00
Bram Matthys f5d9a87f08 - Use RPL_STARTTLS/ERR_STARTTLS numerics 2009-12-06 16:59:15 +00:00
Bram Matthys 5a0a71de03 - Added support for STARTTLS. This allows users to switch to SSL without
having to use a special SSL-only port, they can simply switch to SSL on
  any port. This is currently only supported by few clients (such as KVIrc 4).
  This functionality can be disabled by setting set::ssl::options::no-starttls,
  for example if you don't want to offer SSL to your users and only want it
  to be used for server to server links.
  Naturally, the IRCd must be compiled with SSL support for STARTTLS to work.
- Fixed SSL_ERROR_WANT_READ in IRCd_ssl_write()
2009-12-06 16:52:52 +00:00
Bram Matthys a5bd782cdf - Made the timesynch log output more clear and understandable.
- Added an 'UnrealIRCd started' log message on startup.
2009-12-06 16:31:42 +00:00
autoupdate 829247a272 Automatic weekly version update: 200948 2009-11-30 05:00:07 +00:00
Bram Matthys 6aab6d748d hmmm... dilemma... 2009-11-29 16:12:44 +00:00
Bram Matthys 7dee0cdcf1 - Added support for "chained" extbans. Put simply this allows extban combinations
such as ~q:~c:#test to only silence users on #test, for example. This feature
  is enabled by default, but can be disabled during ./Config -advanced. Module
  support for this feature must note the following:
  - For is_ok function, the extban can either assign extban_is_ok_nuh_extban, which
    will deal checking a chained extban (including checking for restricted extbans),
    or it can call that function from its own is_ok routine. For the latter case,
    remember to pass only the mask part of your ban format (ie, don't just pass para as
    otherwise it'll just call your is_ok again).
  - For conv_param function, the extban can either assign extban_conv_param_nuh_or_extban,
    which will automatically call conv_param for a chained extban, or pretty up a n!u@h mask.
  - For is_banned, the extban should call ban_check_mask with the mask part of the parameter.
    This will automatically call is_banned for a stacked extban, or match against a n!u@h. n!u@h
    is checked against the current user (ie, with the info in the globals ban_ip, etc), so things
    can get weird if you call this outside a normal ban check.
  Modules must keep in mind that chained extban support is not available (and neither are the three
  functions above) if DISABLE_STACKED_EXTBANS is #defined (this is controled by Config). Modules will
  not compile/load if they try to use them anyway.
  This change should not break extban modules, and should need some more extensive testing.
- Misc fix for disabling extban chains, should've done stuff in our autoconf
  stuff instead of hacking configure directly :P .
2009-11-29 12:46:29 +00:00
Bram Matthys 0ebf84d100 this is not the way it should be done... but i have no time to fix the real issue. 2009-11-29 11:56:54 +00:00
stylus740 aceb72f52e doc/unreal32docs.de.html Last Chanes of week 48 2009-11-28 18:54:48 +00:00
stylus740 a28d62c5f0 doc/unreal32docs.de.html - Changes of week 48 2009-11-28 18:49:44 +00:00
Bram Matthys 236808d8b4 - set::level-on-join now also supports voice, halfop, protect and owner.
Requested by katsklaw (#0003852). Partial patch provided by katsklaw and
  morpheus_pl.
2009-11-23 15:11:20 +00:00
Bram Matthys 9c234ffdf8 - Added special caching of remote includes. When a remote include fails to
load (for example when the webserver is down), then the most recent
  version of that remote include will be used, and the ircd will still boot
  and be able to rehash. Even though this is quite a simple feature, it
  can make a key difference when deciding to roll out remote includes on
  your network. Previously, servers would be unable to boot or rehash when
  the webserver was down, which would be a big problem (often unacceptable).
  The latest version of fetched urls are cached in the cache/ directory as
  cache/<md5 hash of url>.
  Obviously, if there's no 'latest version' and an url fails, the ircd will
  still not be able to boot. This would be the case if you added or changed
  the path of a remote include and it's trying to fetch it for the first time.
  To disable this new behavior, check out REMOTEINC_SPECIALCACHE in
  include/config.h.
2009-11-23 09:43:10 +00:00
Bram Matthys 22bf17ddc7 - When an incorrect command line argument is passed, the IRCd will no longer
boot. Previously it said 'Server not started' but started anyway.
  Reported and patch provided by ohnobinki (#0003870).
2009-11-23 08:41:53 +00:00
autoupdate 355cc16d32 Automatic weekly version update: 200947 2009-11-23 05:00:04 +00:00
Bram Matthys 2ed84ed506 - Fixed bug reported by mut80r (#0003867) where locops didn't get a
proper vhost when set::hosts::local had a 'user@host' syntax instead of
  just 'host'. Also fixed a bug with regards to +x on-oper with locops.
2009-11-22 13:34:12 +00:00
Bram Matthys e92e2c22c3 - Applied patch from ohnobinki (#0003863) which makes run-time configuration
of files (tune, pid, motd) possible.
2009-11-22 12:23:00 +00:00
Bram Matthys 51d30af3fd - Applied patch from k4be (#0003866) which introduces a new packet hook
(HOOKTYPE_PACKET). Replacing the 'text to be sent' to a client is
  supported, which allows character(set) conversion in a module.
  Note that modifying an incoming message by the hook is not supported.
2009-11-22 12:10:56 +00:00
autoupdate 945bceb218 Automatic weekly version update: 200946 2009-11-16 05:00:03 +00:00
autoupdate 169f754f01 Automatic weekly version update: 200945 2009-11-09 05:00:04 +00:00
Bram Matthys c7ea6217e5 - Fixed IPv4 ip's in link::bind-ip on IPv6 builds. This caused issues ranging
from not binding to that ip when linking, to not being able to link at
  all. Also fixed a very small memory leak upon /REHASH. Bug reported by
  Mr_Smoke (#0003858).
2009-11-04 10:46:57 +00:00
autoupdate f60c2574d3 Automatic weekly version update: 200944 2009-11-02 05:00:04 +00:00
autoupdate c6c2cf9371 Automatic weekly version update: 200943 2009-10-26 05:00:04 +00:00
autoupdate 4d79d9f5d2 Automatic weekly version update: 200942 2009-10-19 05:00:03 +00:00
autoupdate 8bf078190e Automatic weekly version update: 200941 2009-10-12 05:00:04 +00:00
autoupdate 1922d94bf9 Automatic weekly version update: 200940 2009-10-05 05:00:03 +00:00
autoupdate 4ea0a642ff Automatic weekly version update: 200939 2009-09-28 05:00:04 +00:00
autoupdate 110b0aa9ac Automatic weekly version update: 200938 2009-09-21 05:00:03 +00:00
autoupdate d9a77b8112 Automatic weekly version update: 200937 2009-09-14 05:00:03 +00:00
autoupdate c6ca269538 Automatic weekly version update: 200936 2009-09-07 05:00:03 +00:00
autoupdate 2921b50e00 Automatic weekly version update: 200935 2009-08-31 05:00:04 +00:00
Bram Matthys 125102aad7 - class name 'default' is reserved. Using it caused the ircd to crash
on-boot, reported by Dragon_Legion (#0003864).
2009-08-26 10:27:04 +00:00
autoupdate a5deb6bb23 Automatic weekly version update: 200934 2009-08-24 05:00:04 +00:00
autoupdate 6319b36e2a Automatic weekly version update: 200933 2009-08-17 05:00:03 +00:00
Bram Matthys 660f7d97c4 #3865 -- reported by fbi 2009-08-15 15:10:57 +00:00
autoupdate 7ca4d97ae9 Automatic weekly version update: 200932 2009-08-10 05:00:03 +00:00
autoupdate 4558c380c5 Automatic weekly version update: 200931 2009-08-03 05:00:03 +00:00
autoupdate fa0060ed27 Automatic weekly version update: 200930 2009-07-27 05:00:03 +00:00
autoupdate 147b5013aa Automatic weekly version update: 200929 2009-07-20 05:00:04 +00:00
autoupdate 9b7033b9fe Automatic weekly version update: 200928 2009-07-13 05:00:03 +00:00
autoupdate cd19366da1 Automatic weekly version update: 200927 2009-07-06 05:00:04 +00:00
autoupdate 57618c1c6d Automatic weekly version update: 200926 2009-06-29 05:00:04 +00:00
autoupdate 698660b485 Automatic weekly version update: 200925 2009-06-22 05:00:03 +00:00
autoupdate dc6eebbe09 Automatic weekly version update: 200924 2009-06-15 05:00:03 +00:00
Bram Matthys b070d8805c - Fixed issue where a negative time offset (either caused by ircd.tune or
timesynch) made autoconnect not work for the duration of the offset
  (eg: -60 would make autoconnect wait 60 seconds after boot, instead of
  autoconnecting almost immediately). Reported by aragon (#0003853).
2009-06-08 08:49:07 +00:00
autoupdate 69b7a3c35d Automatic weekly version update: 200923 2009-06-08 05:00:03 +00:00
autoupdate dfcdaaa152 Automatic weekly version update: 200922 2009-06-01 05:00:04 +00:00
autoupdate 3fbec6bf4e Automatic weekly version update: 200921 2009-05-25 05:00:04 +00:00
angrywolf 8ebb8dfbd6 Updated my email address. (The old one discontinued working.) 2009-05-19 04:15:50 +00:00
autoupdate 2efc764311 Automatic weekly version update: 200920 2009-05-18 05:00:04 +00:00
stylus740 ec7429fb4b doc/example.de.conf doc/unreal32docs.de.html - changes of week 20 2009-05-16 16:50:57 +00:00
Bram Matthys 6ff6367008 - Fix /VERSION output on Windows, especially for Vista and newer Windows,
patch from BuHHunyx and Bock (#0003846).
2009-05-13 13:02:57 +00:00
Bram Matthys f3733c32ca - Comitted Windows Installer fix that was put in 3.2.8.1, fixing
#0003845 and #0003809 (MS Visual Studio Redistributable package automatic
  installation).
2009-05-13 12:54:50 +00:00
Bram Matthys 66e4674f3f - Comitted windows fix that was put in 3.2.8.1 for installer 2009-05-13 12:14:45 +00:00
Bram Matthys d45a18d7b2 - Fixed crash on Linux (with a 'new' dynamic linker) when a module has
been updated and then reloaded. From now on we just copy to a tempfile,
  and never hardlink. (bug #3557).
2009-05-13 10:33:52 +00:00
Bram Matthys 5d8532eb86 /* Prevent crashes due to invalid prototype/ABI.
* And force the use of at least the version shipped with Unreal
 * (or at least one without known security issues).
 */
this text is fcked btw.. whatever...
2009-05-13 10:30:57 +00:00
Bram Matthys 5f727eec74 - Applied another patch from ohnobinki which adds --with-system-cares
(#0003847).
2009-05-13 10:28:06 +00:00
Bram Matthys 70ec1b1ef8 - Added ./configure option called --with-system-tre by which you can specify
a path to the TRE library (instead of using the TRE we ship with Unreal).
  Patch provided by ohnobinki (#0003842).
2009-05-13 09:35:44 +00:00
Bram Matthys fb60748df2 - Update some urls 2009-05-13 09:25:23 +00:00
Bram Matthys 68ec992861 - Print out an error if a user uses standard ./configure stuff instead of
./Config. Won't catch all cases, but will definitely catch most problems.
2009-05-13 09:24:30 +00:00
autoupdate 433760a916 Automatic weekly version update: 200919 2009-05-11 05:00:04 +00:00
autoupdate 891daa18b4 Automatic weekly version update: 200917 2009-04-27 05:00:04 +00:00
Bram Matthys 76c107edba changelogupdate:- Fixed crash on Linux (with a 'new' dynamic linker) when a
module has
  been updated and then reloaded. From now on we just copy to a tempfile,
  and never hardlink. (bug #???????).
2009-04-22 11:50:29 +00:00
Bram Matthys cd30253ea2 - Fixed crash on Linux when a module has been updated and then reloaded.
From now on we just copy to a tempfile, and never hardlink. (bug #???????).
2009-04-22 11:42:38 +00:00
Bram Matthys c7b782693c changelog-only: - Don't do show-connect-info on serversonly ports 2009-04-22 11:14:14 +00:00
Bram Matthys f692661583 - Don't do show-connect-info on servers-only ports 2009-04-22 11:13:21 +00:00
autoupdate e794eaa393 Automatic weekly version update: 200916 2009-04-20 05:00:05 +00:00
Bram Matthys 16d9810740 - Fixed compile issue on Solaris regarding c-ares (-lrt), reported and
test shell provided by fraggeln (#0003854).
- Improved automatic SSL detection on Solaris (/usr/sfw), reported by
  fraggeln (also #0003854).
2009-04-15 11:10:06 +00:00
Bram Matthys 762bbd407b - Fixed (serious) security issue regarding allow::options::noident,
reported by meepmeep (#0003852).
** 3.2.8.1 release **
2009-04-12 12:40:36 +00:00
autoupdate 6df508b06a Automatic weekly version update: 200914 2009-04-06 05:00:03 +00:00
autoupdate 6687c3188d Automatic weekly version update: 200913 2009-03-30 05:00:03 +00:00
autoupdate c51039b750 Automatic weekly version update: 200912 2009-03-23 05:00:03 +00:00
autoupdate c811a925a4 Automatic weekly version update: 200911 2009-03-16 05:00:03 +00:00
stylus740 8c13a60907 Changes week 11 doc/unreal32docs.de.html 2009-03-14 12:34:02 +00:00
autoupdate 6dfb1a7847 Automatic weekly version update: 200910 2009-03-09 05:00:03 +00:00
autoupdate f6e1a74fca Automatic weekly version update: 200909 2009-03-02 05:00:06 +00:00
Bram Matthys ac00905029 last-minute change before real 3.2.8 rls 2009-03-01 16:26:20 +00:00
Bram Matthys be55051f44 ** 3.2.8 release ** 2009-03-01 15:00:32 +00:00
Bram Matthys 6196abbf7b UHNAMES & WATCHOPTS, other fixes, copyright 2009-03-01 14:49:03 +00:00
Bram Matthys a0e4982335 protover 2309 = Unreal 3.2.6, 3.2.7, 3.2.8 2009-03-01 14:48:38 +00:00
Bram Matthys bd4292e301 - Updated credits (donations) 2009-02-28 15:44:59 +00:00
Bram Matthys 0ae378c5ce stskeeps did contribute to 3.2.8, not with direct commits but by me using a few
backports. However, I think it would be confusing to list him in the active
coders list... so moved to 'past unreal3.2 coders/contributors'.
2009-02-28 15:08:01 +00:00
autoupdate a094103c67 Automatic weekly version update: 200908 2009-02-23 05:00:04 +00:00
Bram Matthys de4eb8ec75 - Fixed harmless (but silly) message which happened on every IRCd boot
(time jump message).
(correction)
2009-02-20 13:19:36 +00:00
Bram Matthys cc8a592557 - Fixed very silly 'time jumped .. seconds ahead (0 -> ..)' message which
happened on every IRCd boot.
2009-02-20 13:00:07 +00:00
Bram Matthys 529bd19465 - 'link xx with SSL option enabled on non-SSL compile' was incorrectly
printed out as a warning, when in fact it's an error (and was treated as
  such). Same for ZIP on non-zip compile. Reported by Stealth (#0003833).
..& updated credits..
2009-02-18 19:19:53 +00:00
autoupdate 7dced92085 Automatic weekly version update: 200907 2009-02-16 05:00:03 +00:00
angrywolf fc5f1c0042 Changes of week 04 2009-02-13 14:09:53 +00:00
autoupdate 4a4f518380 Automatic weekly version update: 200906 2009-02-09 05:00:03 +00:00
Bram Matthys d051624476 ** 3.2.8-rc2 *NIX downloads replaced ** 2009-02-08 12:26:55 +00:00
Bram Matthys 2fd46b9cd7 Update from Serkan of 2009-02-02 2009-02-08 10:47:43 +00:00
stylus740 0fba832934 Repaired help.conf.de 2009-02-02 22:10:48 +00:00
autoupdate 144d2dcd82 Automatic weekly version update: 200905 2009-02-02 05:00:04 +00:00
Bram Matthys 662af43a45 - Fix for compile problem on FreeBSD (and possibly other OS's):
- When pkg-config is present but does not recognize --static, use
    default c-ares library options.
  - Set default c-ares library options to -lcares on FreeBSD and others.
    Set to -lcares -lrt on Linux (previously was -lcares -lrt for all).
  Thanks to goldenwolf for the bugreport (#0003803) and providing a test-
  shell to trace this issue down.
2009-02-01 16:43:33 +00:00
Bram Matthys fd043453b9 - Some text fixes regarding time shift feature 2009-02-01 10:12:49 +00:00
stylus740 a62456b243 Changes week 05 doc/unreal32docs.de.html 2009-02-01 09:05:27 +00:00
bock 49f05da55c fixed typo. 2009-01-31 10:24:14 +00:00
autoupdate bccb8dba2a Automatic weekly version update: 200904 2009-01-26 05:00:05 +00:00
Bram Matthys 46deee2cdc - Smallll fix for time shift protection <- now hopefully rc2 for real.. 2009-01-25 11:25:15 +00:00
Bram Matthys 09cf365162 ** 3.2.8-rc2 release ** 2009-01-25 11:19:34 +00:00
stylus740 6426b73838 Changes of week 04: doc/unreal32docs.de.html 2009-01-25 07:49:11 +00:00
Bram Matthys 8918b99248 - Throttling time is now more accurate, especially with larger time values
such as 3 connections per 60 seconds. Previously that could result in 3
  per 90 seconds due to timer inaccuracy, now max 65 seconds (max 5s
  inaccuracy).
2009-01-24 15:38:20 +00:00
Bram Matthys 98db288079 - Added some big warnings regarding big timeshifts.
In the IRCd world correct time is very important. This means that time
  should be correct when the IRCd is booted, either by running ntpd/ntpdate
  on the system or some other synchronization software, or by using the
  built-in timesync feature.
  Whenever the clock is adjusted for more than a few seconds AFTER the IRCd
  has booted, it can lead to dangerous effects ranging from unfair
  timestamps
  for nicks and channels (and hence the possibility to takeover channels),
  to even completely stalling the IRCd (negative timeshift) or making it so
  nobody can connect anymore due to throttling (positive timeshift).
  We now try to 'fix' the worst effects such as the IRCd freeze and
  throttling. This does not fix the whole problem, so I've added some big
  warnings when the clock is adjusted, including an annoying one every 5
  minutes if the clock was set backwards, until the time is OK again
  (catches up with the original time).
  This fixes #0003230 reported by Stealth, and #0002521 reported by durrie.
2009-01-24 15:16:15 +00:00
bock 72c0cb09e9 changes of week 4 2009-01-24 12:37:37 +00:00
Bram Matthys 651add103b Updated credits to reflect coders, contributors and testers of this 3.2.8 release. 2009-01-20 20:49:21 +00:00
Bram Matthys 3aa9afefeb +operoverride fixes 2009-01-20 19:53:35 +00:00
Bram Matthys 8f00cf9dd1 - Updated regex documentation in unreal32docs, it had some incorrect
statements regarding wildcards. Reported by james2vegas (#0003800).
2009-01-19 10:03:24 +00:00
Bram Matthys 20b66249ca bump - too late 2009-01-19 10:03:06 +00:00
autoupdate c6661334a9 Automatic weekly version update: 200903 2009-01-19 05:00:03 +00:00
mark 4a431863c6 Changes of week 01/09 2009-01-18 19:19:02 +00:00
Bram Matthys df508ff00c - Added note to release notes regarding Suse 10.3 on amd64 causing a crash
on-boot. #0003725, #0003653, #0003791.
2009-01-18 13:21:02 +00:00
autoupdate ada0607eb7 Automatic weekly version update: 200902 2009-01-12 05:00:04 +00:00
angrywolf aedce0405f Changes of week 01 2009-01-10 17:48:52 +00:00
Bram Matthys c6b0eb6987 +- Remote includes (constant) crash with new curl/c-ares versions
..something like that... xref #3785
2009-01-09 19:59:26 +00:00
bock 90a548c310 3.2.8-rc1 2009-01-05 18:07:21 +00:00
Bram Matthys ffef7193bb ispell 2009-01-05 11:35:37 +00:00
Bram Matthys f982828981 - Fixed OperOverride bug: if you are halfop you couldn't -q/-a, reported
by Strawberry_Kittens (#0003758).
2009-01-05 11:31:23 +00:00
autoupdate d6aafe4a7b Automatic weekly version update: 200901 2009-01-05 05:00:04 +00:00
Bram Matthys eac36b6344 changelog edit:
from:
mac os x unconfirmed thing
to:
- Fix for Mac OS X compile problem (in setpgrp), reported by Bock / Jckf
  (#0003767).
2009-01-04 15:08:21 +00:00
stylus740 5674d8b607 Changes week 01 in doc/example.de.conf doc/unreal32docs.de.html 2009-01-04 11:24:39 +00:00
bock 2fe59ca280 Updates for 3.2.8 2009-01-03 23:52:06 +00:00
Bram Matthys f0367674e7 - Bump docdate.. 2009-01-03 15:32:45 +00:00
Bram Matthys 28872c4570 - (#0003761).
+  (#0003761). Patch provided by Stealth.
2009-01-03 15:15:07 +00:00
Bram Matthys 6539f0bb92 - Added documentation for set::spamfilter::slowdetect-warn,
set::spamfilter::slowdetect-fatal, set::ssl::server-cipher-list,
  set::ssl::renegotiate-bytes, set::ssl::renegotiate-timeout,
  set::watch-away-notification and ./unreal gencloak. Reported by Bock
  (#0003764).
- set::ssl::renegotiate-bytes: fix when specifying a value such as 10m.
- './unreal gencloak' now actually works
- Fix typo in user mode q notice, reported by Strawberry_Kittens and others
  (#0003761).
- Possible fix for MAC OS X compile problem - UNCONFIRMED.
2009-01-03 15:13:59 +00:00
bock 08e6b37957 Missed ";" in line 22. 2009-01-02 12:47:40 +00:00
autoupdate 734d37feda Automatic weekly version update: 200852 2008-12-29 05:00:05 +00:00
Bram Matthys 559376cbf1 ** 3.2.8-rc1 release ** 2008-12-28 14:31:34 +00:00
Bram Matthys e689ab0888 - A notice is now sent when listing spamfilters through /SPAMFILTER just
like /stats f. Bug #0003752 reported by Strawberry_Kittens, similar to
  #0002533.
2008-12-28 11:33:38 +00:00
Bram Matthys bd9c1afce3 - New HOOKTYPE_LOCAL_NICKPASS: the 2 parameters are: sptr (client) and nsptr
(NickServ client, NULL if not present). You can return 1 (HOOK_DENY) to
  make the IRCd not send IDENTIFY to NickServ. Suggested by tabrisnet
  (#0003739).
(sorry, previous half-commit to src/modules/m_nick.c was accidental)
2008-12-28 10:01:13 +00:00
Bram Matthys fa328676c6 update... 2008-12-28 09:55:56 +00:00
Bram Matthys 73114abc47 - Fixed crash which could happen when rehashing while linking to a server,
this could be #0003689 reported by Monk.
2008-12-27 12:19:38 +00:00
Bram Matthys 4c81ce30e8 - Added set::watch-away-notification which can be set to 'no' to disable
WATCH away notification. The default is 'yes' (=enabled).
2008-12-27 11:14:01 +00:00
Bram Matthys c7172fefd3 - Added release notes (not finished yet). 2008-12-24 17:08:58 +00:00
Bram Matthys 56eddc1547 - Win32: rebuild TRE for Vstudio 2008 (and ditch C++ / MSVCP... dependency). 2008-12-24 12:55:17 +00:00
Bram Matthys cc0641ee00 The following patch has been REVERSED - causes a 15s delay on-boot in non-service mode:
- Win32: Made UnrealIRCd run as a service under non-privileged accounts
  (ones that do not belong to the Administrator group). Reported by
  skyflash, Bock, zer, etc... Thanks to BuHHunyx for some hints on how to
  fix this.
2008-12-24 12:15:44 +00:00
Bram Matthys a77b8c4da2 - Win32: Made UnrealIRCd run as a service under non-privileged accounts
(ones that do not belong to the Administrator group). Reported by
  skyflash, Bock, zer, etc... Thanks to BuHHunyx for some hints on how to
  fix this.
2008-12-23 15:47:04 +00:00
Bram Matthys aaae2532ea blah 2008-12-23 15:43:27 +00:00
Bram Matthys 5daa5216ac - Added some countermeasures against crash-on-boot, #0003725 and #0003653,
reported by Ablom2008 and mist26.
2008-12-22 16:17:17 +00:00
Bram Matthys cdd38d79f4 - Fix OOB read caused by UHNAMES support. 2008-12-22 16:12:30 +00:00
Bram Matthys f17c5cc9e1 - Fix NAMES with UHNAMES support, screwed it up at 'Win32 compile fixes' a
few lines up...
2008-12-22 12:19:06 +00:00
autoupdate 5899dd9596 Automatic weekly version update: 200851 2008-12-22 05:00:04 +00:00
Bram Matthys 024a63587a - Fix crash if settime/expirytime is out of range in TKL, set by another
server.
  Should never happen except when using faulty services or when something
  else
  got horrible wrong (like a date which is 40 years ahead). Reported by
  Darth Android (#0003738).
2008-12-21 14:28:09 +00:00
Bram Matthys ac157694c5 - except ban { } is now also effective against Z:lines. It already protected
when the user was connected, but not once he/she tried to reconnect, this
  is now fixed. Reported several times, last by Stealth in #0003377.
2008-12-21 13:34:54 +00:00
Bram Matthys 62df06ea1a - Win32: build w/manifest. Looks like Unreal@Win32 now actually works again
:).
2008-12-19 16:51:30 +00:00
Bram Matthys 5cd7ab9f06 - Upgraded c-ares on windows to 1.6.0 as well. 2008-12-19 16:17:04 +00:00
Bram Matthys 5ce5d49c89 - Win32 compile fixes. 2008-12-17 16:46:20 +00:00
autoupdate 6e221c61c4 Automatic weekly version update: 200850 2008-12-15 05:00:04 +00:00
Bram Matthys fcbeeea502 - Win32 makefile: removed /MAPINFO:LINES, since visual studio 2005 and up
don't support this and will fail to compile UnrealIRCd. This fixes #3680,
  reported by therock247uk.
- Upgraded c-ares to 1.6.0 (also now using pkg-config).
  If you get a "undefined reference to `clock_gettime'" error, then you
  might consider installing 'pkg-config' on your system, and then simply
  re-run
  ./Config and make, should fix things.
__TODO__: win32 c-ares upgrade to 1.6.0 (and copy & fix header files).
__TODO__: testing! testing! i'd like to be sure this c-ares is stable!
2008-12-14 19:16:24 +00:00
Bram Matthys 58a2f012eb CRLF to LF? 2008-12-14 11:32:14 +00:00
autoupdate 3a3962e7ba Automatic weekly version update: 200849 2008-12-08 05:00:04 +00:00
autoupdate 7b6905b5a9 Automatic weekly version update: 200848 2008-12-01 05:00:04 +00:00
autoupdate c79642e840 Automatic weekly version update: 200847 2008-11-24 05:00:03 +00:00
autoupdate 111891aac3 Automatic weekly version update: 200845 2008-11-10 05:00:03 +00:00
autoupdate 6080f1da73 Automatic weekly version update: 200844 2008-11-03 05:00:03 +00:00
autoupdate 6f823465ef Automatic weekly version update: 200843 2008-10-27 05:00:03 +00:00
autoupdate 35baca56a6 Automatic weekly version update: 200842 2008-10-20 05:00:03 +00:00
autoupdate 38f1772942 Automatic weekly version update: 200841 2008-10-13 05:00:04 +00:00
autoupdate 8ed0a98738 Automatic weekly version update: 200840 2008-10-06 05:00:03 +00:00
autoupdate 69d733c02a Automatic weekly version update: 200839 2008-09-29 05:00:03 +00:00
autoupdate b8417a1e60 Automatic weekly version update: 200838 2008-09-22 05:00:03 +00:00
autoupdate 54c4c0960a Automatic weekly version update: 200837 2008-09-15 05:00:03 +00:00
autoupdate f7c87ee208 Automatic weekly version update: 200836 2008-09-08 05:00:03 +00:00
autoupdate c0d56f5aa2 Automatic weekly version update: 200835 2008-09-01 05:00:03 +00:00
autoupdate ced7d9ab6c Automatic weekly version update: 200834 2008-08-25 05:00:04 +00:00
Bram Matthys 638e557bee - /REHASH -all not case sensitive 2008-08-19 13:14:43 +00:00
Bram Matthys 693b5634d5 - #0003313 reported by Stealth, regarding not erroring/warning when me::name
is bigger than HOSTLEN, from now it will error on config read. [Backport, sts]
2008-08-19 13:09:49 +00:00
Bram Matthys c20f785012 - #0001924 - requested by syzop: Added ./unreal gencloak, which generates
random keys 10 ~ 20 characters in length (*NIX only). [Backport, aquanight]
2008-08-19 13:01:29 +00:00
Bram Matthys 291bc5c8c3 - #0002833 reported and patched by tabrisnet, implementing UHNAMES
[Backport, only slightly modified for speed]
2008-08-19 12:43:54 +00:00
Bram Matthys b52906461c - #0002172 reported by Stealth, patched by WolfSage, fixing if you have an
admin block, and forget a semicolon on a line, Unreal will proceed to use
  the block with no error, but the information will be incorrect/incomplete.
2008-08-19 11:45:17 +00:00
Bram Matthys b488517226 - #0002475 reported by aquanight on detecting \'s in module filenames on
win32 and not do ./module for it [Backport]
2008-08-19 11:38:49 +00:00
autoupdate 70d5d8ba51 Automatic weekly version update: 200833 2008-08-18 05:00:04 +00:00
Bram Matthys ebf40ab6e6 - Added set::ssl::server-cipher-list, #002368 requested by Beastie
[Backport, sts]
- Added set::ssl::renegotiate-bytes, set::ssl:renegotiate-timeout, #0002971
  suggested by tabrisnet. Gets activated when >0. Please set sane values.
  [Backport, sts]
2008-08-11 13:54:35 +00:00
Bram Matthys c48ea59940 - #0001740 reported by Trocotronic, making the IRCd send ERROR : to all
links with possible reason for RESTART; like /die does it. [BACKPORT]
2008-08-11 13:04:06 +00:00
Bram Matthys 450021dec8 compile fix for win32 2008-08-11 12:16:13 +00:00
autoupdate 637122b021 Automatic weekly version update: 200832 2008-08-11 05:00:04 +00:00
Bram Matthys cadd4230e9 - configure script is now generated by autoconf 2.61 (was: 2.59), hopefully
that won't cause any issues, perhaps it even helps to fix some bugs...
2008-08-10 13:18:08 +00:00
Bram Matthys d10223fc2e - The OS version output is now taken from uname() at runtime instead of
'uname -a' at compile time. This fixes bug #1438 and #3320 reported by
  Mouse and Monk, where because of previous behavior the IRCd sometimes
  would not compile in certain environments.
2008-08-09 14:56:34 +00:00
Bram Matthys 0af8ede2f1 + Reported by ash11. 2008-08-09 11:20:33 +00:00
Bram Matthys 6a641aa5f5 - Limit watch status requests to one per time, more will often flood you off
and is stupid/useless.
2008-08-09 11:17:50 +00:00
Bram Matthys b809428392 - Added another Mac OS X hack, such as one that should help against
'error setting max fd's to 9223372036854775807' which prevents the ircd
  from booting up. Reported by btcentral and Bock. This hack might not be
  totally correct though ;).
2008-08-08 10:14:14 +00:00
Bram Matthys 06c209ffce - Added slow spamfilter detection. For each spamfilter, Unreal will check,
each time it executes, how LONG it takes to execute. When a certain
  threshold
  is reached the IRCd will warn or even remove the spamfilter. This will
  prevent
  a spamfilter (regex) from slowing down the IRCd too much, though it's
  still not
  a guarantee that it will never go to a halt (eg: in case it takes several
  minutes to execute a regex or loops forever).
  Warning can be configured via set::spamfilter::slowdetect-warn (default:
  250 milliseconds) and automatic deletion of spamfilters if it takes too
  long is set through set::spamfilter::slowdetect-fatal (default: 500 ms).
  NOTE: slow spamfilter detection is currently not available on Windows.
  NOTE 2: to disable slow detection you can set the warn and fatal settings
  to 0 (zero). OR to really disable all code, remove SPAMFILTER_DETECTSLOW
  from include/config.h and recompile.
2008-08-08 09:19:03 +00:00
autoupdate 7b92553909 Automatic weekly version update: 200828 2008-07-14 05:00:04 +00:00
autoupdate f3a4e11355 Automatic weekly version update: 200827 2008-07-07 05:00:03 +00:00
autoupdate 3364e1fb47 Automatic weekly version update: 200826 2008-06-30 05:00:04 +00:00
autoupdate 36ca3f55bc Automatic weekly version update: 200825 2008-06-23 05:00:03 +00:00
autoupdate 330fcd4f82 Automatic weekly version update: 200824 2008-06-16 05:00:03 +00:00
autoupdate 686ad9e52b Automatic weekly version update: 200823 2008-06-09 05:00:03 +00:00
autoupdate 3c3fb28955 Automatic weekly version update: 200822 2008-06-02 05:00:04 +00:00
autoupdate c5b7417e39 Automatic weekly version update: 200821 2008-05-26 05:00:04 +00:00
Bram Matthys 99ba7c9acd - Upgraded c-ares to 1.5.1, thanks to aegis for the partial patch (#0003671).
This also fixed a curl compile/run issue, reported by static-x (#0003545).
2008-04-07 15:03:31 +00:00
autoupdate 747d84334a Automatic weekly version update: 200811 2008-03-17 05:00:03 +00:00
autoupdate 15b25a5afc Automatic weekly version update: 200810 2008-03-10 05:00:04 +00:00
autoupdate a698c401c7 Automatic weekly version update: 200809 2008-03-03 05:00:03 +00:00
Bram Matthys 7c400e7dc1 - Ok, finished away notification in WATCH. It now shows the away reasons too.
This new feature (away notify) is announced in 005 (ISUPPORT) as: WATCHOPTS=A

  Format is: WATCH A +UserOne +UserTwo

  New numerics to cope with away notification in WATCH are:
  RPL_NOWISAWAY: to indicate the user is away _when adding_ it to WATCH list
  RPL_GONEAWAY:  user was not away, but is now
  RPL_NOTAWAY:   user was away, but is no longer away
  RPL_NOWISAWAY: user was away, and still is, but the reason changed
  Example:

  WATCH A +Target
  Request to add user 'Target' to the watch list with away notification

  :maintest.test.net 609 MySelf Target ~blih test.testnet 1204309588 :not here atm
  Reply to watch add: user is online and away, reason is provided

  :maintest.test.net 599 MySelf Target ~blih test.testnet 1204309588 :is no longer away
  User is back (no longer away)

  :maintest.test.net 598 MySelf Target ~blih test.testnet 1204309722 :lunch
  State change: user is now away, reason is provided

  :maintest.test.net 597 MySelf Target ~blih test.testnet 1204309738 :shopping, bbl
  User is still away, but reason changed.

  The syntax for each numeric is:
  <nickname> <username> <hostname> <awaysince> :<away reason>
  In case of 599 (RPL_NOTAWAY) it is:
  <nickname> <username> <hostname> <awaysince> :is no longer away

  For the record, this is all based on a draft from codemastr from 2004, which was
  implemented in Unreal3.3 (devel branch) in 2006. Today, in 2008 it was updated
  with away reason support and backported to Unreal3.2. Because away notification
  hasn't been used until now (due to it only being in Unreal3.3) we felt it was
  safe to break some numerics.
2008-02-29 18:44:07 +00:00
Bram Matthys 635ab4858e - Backport from 3.3 away notification from Oct 2006, this is v0, a further
patch will follow soon and the numerics will be changed.
2008-02-29 13:58:59 +00:00
autoupdate 9a81a2a67f Automatic weekly version update: 200808 2008-02-25 05:00:03 +00:00
Bram Matthys 7cd21aa28a extending vl a bit.. 2008-02-23 16:15:24 +00:00
Bram Matthys 9635c45fd0 HOOKTYPE_RAWPACKET_IN: not very useful, it's not meant for packet manipulation but for inspection before stuff is even parsed. keeping undocumented for now... 2008-02-23 16:10:38 +00:00
autoupdate e80c63cf22 Automatic weekly version update: 200807 2008-02-18 05:00:03 +00:00
Bram Matthys 38fd630d9f - Fixed (G)ZLINE check.. it was incorrectly rejecting many IPv6 bans.
Reported by guigui (#0003572).
2008-02-11 16:05:12 +00:00
Bram Matthys f966682883 - So called 'smart' banning is now disabled by default, this means you can
now set a ban on *!*@*h.com and then later add one on *!*@*blah.com
  without
  any trouble. Previously the second one was rejected due to the former
  already matching it. To change it back edit the include/config.h setting
  SOCALLEDSMARTBANNING.
2008-02-11 16:00:13 +00:00
autoupdate 301452efb7 Automatic weekly version update: 200806 2008-02-11 05:00:03 +00:00
autoupdate 1cc2a6b355 Automatic weekly version update: 200805 2008-02-04 05:00:03 +00:00
autoupdate c81820b958 Automatic weekly version update: 200804 2008-01-28 05:00:03 +00:00
autoupdate 56eff93642 Automatic weekly version update: 200803 2008-01-21 05:00:04 +00:00
autoupdate 7eef11db14 Automatic weekly version update: 200802 2008-01-14 05:00:03 +00:00
babass 1c2fd041ae Correction syntaxique dans help.fr.conf 2008-01-13 15:18:03 +00:00
autoupdate a7c8428cc4 Automatic weekly version update: 200801 2008-01-07 05:00:04 +00:00
autoupdate 41ee204108 Automatic weekly version update: 200753 2007-12-31 05:00:03 +00:00
bock b9c4ba0d2f fixed, added, documented changes from original unreal32docs.html 2007-12-30 13:22:06 +00:00
Bram Matthys 10fd56d4e8 - ChanMode +S/+c: reverse is now stripped/blocked as well, because it's
similar to color, and is just as annoying (..if not worse).
2007-12-30 11:27:06 +00:00
autoupdate dd09869ef2 Automatic weekly version update: 200752 2007-12-24 05:00:04 +00:00
babass f4ff22b7d0 Clarirication 2007-12-21 16:45:02 +00:00
autoupdate 45d335a225 Automatic weekly version update: 200751 2007-12-17 05:00:04 +00:00
angrywolf 90fbe18a95 Changes of week 50 2007-12-15 14:47:40 +00:00
stylus740 7f22468f5f Changes week 50 of doc/unreal32docs.de.html 2007-12-15 13:57:00 +00:00
Bram Matthys 9881318847 - unreal32docs.html: doubt it will help much but at least this makes it a
little bit more clear (#3548), chatops vs globops.
2007-12-10 14:10:20 +00:00
autoupdate a26f959aad Automatic weekly version update: 200750 2007-12-10 05:00:04 +00:00
autoupdate 6220be843b Automatic weekly version update: 200749 2007-12-03 05:00:03 +00:00
angrywolf 8211dcfdb5 Changes of week 47 2007-11-26 10:47:16 +00:00
autoupdate d381a74959 Automatic weekly version update: 200748 2007-11-26 05:00:04 +00:00
babass 41696810a2 Doc pour set::level-on-join 2007-11-24 16:41:51 +00:00
stylus740 61f7edbf70 Update doc/unreal32docs.de.html week 47 2007-11-24 11:01:12 +00:00
Bram Matthys e3abcabdfb docs for set::level-on-join 2007-11-19 13:24:29 +00:00
Bram Matthys c97e538442 - Added set::level-on-join: which level should the user get when (s)he's is
the first to enter a channel. Currently only 'none' and 'op' are supported.
2007-11-19 13:19:28 +00:00
autoupdate 49fe2c12aa Automatic weekly version update: 200747 2007-11-19 05:00:03 +00:00
autoupdate 259e03dbcb Automatic weekly version update: 200746 2007-11-12 05:00:03 +00:00
autoupdate 949f96492f Automatic weekly version update: 200745 2007-11-05 05:00:04 +00:00
Bram Matthys 2a498427bf - Fixed bug (in all Unreal versions) with parameter channelmodes, any 3rd
party module which adds an extra parameter chanmode could cause crashes.
2007-11-04 18:03:47 +00:00
Bram Matthys 481c374af8 - Channelmode modules without parameters (like: +X, but not: +X 1) no longer
have to be permanent. Channelmodes with parameters still have to be PERM
  however, and there are currently no plans to change it.
2007-11-01 16:46:07 +00:00
Bram Matthys bcf6941b4b - Usermode modules now no longer have to be permanent (#3174), this was
simply a bug that was introduced when adding remote includes support years
  ago.
2007-11-01 13:40:26 +00:00
autoupdate 0609cc8ea1 Automatic weekly version update: 200744 2007-10-29 05:00:03 +00:00
Bram Matthys ba517c3f2c - Minor source cleanup in src/modules/m_map.c, suggested by fez (#0003540). 2007-10-24 15:44:36 +00:00
autoupdate 1f4279d417 Automatic weekly version update: 200743 2007-10-22 05:00:03 +00:00
autoupdate 383cce9bb6 Automatic weekly version update: 200742 2007-10-15 05:00:04 +00:00
Bram Matthys 75706516ab - Fixed set::modes-on-join: could crash or disfunction with certain
parameter mode combinations.
2007-10-13 13:24:27 +00:00
Bram Matthys 8cd5d09b16 copyright 2007-10-13 10:59:31 +00:00
autoupdate c1a2f7e185 Automatic weekly version update: 200741 2007-10-08 05:00:03 +00:00
Bram Matthys 5f60a0d949 - Remove part reason when user is banned, suggested by vonitsanet (#0003354). 2007-10-02 09:30:34 +00:00
Bram Matthys 48dc0d824a - Hopefully fixed 'Overflowed unzipbuf increase UNZIP_BUFFER_SIZE' issue,
reported by Monk (#0003453). It should be large enough now. Also changed the
  way we deal with this when it happens (if it ever happens again..): we now
  close the server connection, instead of trying to continue, because continueing
  is too dangerous.
2007-10-02 09:14:25 +00:00
Bram Matthys ce5c2b3800 - Hopefully fixed 'Overflowed unzipbuf increase UNZIP_BUFFER_SIZE' issue,
reported by Monk (#0003453). It should be large enough now.
2007-10-01 19:27:46 +00:00
autoupdate 409bb73a1d Automatic weekly version update: 200740 2007-10-01 05:00:04 +00:00
stylus740 0eb5980d15 Changes of week 38 unreal32docs.de.html 2007-09-27 15:51:13 +00:00
angrywolf 3dd887ec05 Changes of week 38 2007-09-27 09:22:43 +00:00
Bram Matthys 62af4dd7a0 - Fixed Mac OS X issue where "access denied" errors were encountered when
trying to read unrealircd.conf. All due to strange chmod() behavior. We now no
  longer try to set permissions on Mac OS X. Patch provided by Tibby (#3489).
2007-09-25 15:23:27 +00:00
babass ab3bc3d45a - Documentation de CHROOTDIR dans unreal32docs, rapporté par Beastie (#0002446) 2007-09-25 15:10:51 +00:00
autoupdate 3e24e69fa3 Automatic weekly version update: 200739 2007-09-24 05:00:04 +00:00
Bram Matthys 29680132b9 - Document CHROOTDIR in unreal32docs, reported by Beastie (#0002446). 2007-09-19 09:02:01 +00:00
Bram Matthys 75bf27a52b rephrase...
- CGI:IRC + IPv6: Fixed cgiirc block hostname never matching ipv4 cgiirc
  gateway properly (..again..), this was previously reported by pv2b.
2007-09-19 08:47:59 +00:00
Bram Matthys 9e3ae2b758 - CGI:IRC + IPv6: Fixed cgiirc block hostname never matching ipv4 gateway
properly (..again..), this was previously reported by pv2b.
- CGI:IRC + IPv6: Fixed issue where all cgiirc ipv4 clients were rejected with
  the message 'Invalid IP address', reported by stskeeps (#0003311), nate
  (#0003533) and others.
2007-09-19 08:46:45 +00:00
autoupdate 835b3779bf Automatic weekly version update: 200738 2007-09-17 05:00:05 +00:00
Bram Matthys 56d1bdfe67 - Fixed oper block bug where ip masks in oper::from::userhost did not always
work succesfully (ex: 192.168.* worked, but 192.168.*.* didn't). Issue was
  introduced in 3.2.7, reported by tabrisnet (#0003494).
2007-09-16 19:02:27 +00:00
Bram Matthys 3160f385a8 - Fixed CHROOTDIR, which was broken in 3.2.7: IRC_USER/IRC_GROUP did not work
properly when CHROOTDIR was in use (#0003454).
2007-09-16 16:18:54 +00:00
autoupdate 5d23e3ed71 Automatic weekly version update: 200737 2007-09-10 05:00:07 +00:00
Bram Matthys 68c5bf4f66 - Now allowing '1.2.3.4' ips again in IPv6 mode as well (instead of enforcing
'::ffff:1.2.3.4' ips in the conf, they are now auto-converted to that).
  Based on patch from tabrisnet.
- Fixed issue where the cgiirc block did not work with IPv6, reported by
  djGrrr, fixed by previous change.
2007-09-05 19:03:06 +00:00
Bram Matthys 15008285aa ok, I don't mind the new 'design' much, but don't rip codemastr completely out of credits! he did a substantial amount of work on UnrealIRCd. Added some other original credits back in as well (even though I don't know these people, they have been credited in 3.2* since the start). 2007-09-05 15:50:50 +00:00
autoupdate 08e6d2562b Automatic weekly version update: 200736 2007-09-03 05:00:05 +00:00
Bram Matthys a9069600c5 - Fixed bug in SJOIN, possibly causing things like odd bans showing up in
some circumstances. Reported by Hurga, patch provided by fbi.
2007-09-02 19:30:14 +00:00
autoupdate 9d7ab14167 Automatic weekly version update: 200735 2007-08-27 05:00:03 +00:00
autoupdate 4331a913cd Automatic weekly version update: 200734 2007-08-20 05:00:04 +00:00
autoupdate 30ad92ade3 Automatic weekly version update: 200733 2007-08-13 05:00:04 +00:00
autoupdate a167693904 Automatic weekly version update: 200732 2007-08-06 05:00:03 +00:00
autoupdate f7f5b203e3 Automatic weekly version update: 200731 2007-07-30 05:00:04 +00:00
autoupdate 43594c811c Automatic weekly version update: 200730 2007-07-23 05:00:04 +00:00
wolfsage fd84dc2c12 Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.677
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.677 Changes
--- Changes	17 Jul 2007 23:47:30 -0000	1.1.1.1.2.1.2.1.2.2234.2.677
+++ Changes	17 Jul 2007 23:54:24 -0000
@@ -1531,3 +1531,5 @@
 - Updated release notes
 *** 3.2.7 release ***
 - Fix aquanight's email
+- #0003351 reported by Mareo regarding m_addmotd.so and m_svslusers.so
+  not being created
2007-07-17 23:54:28 +00:00
wolfsage ba83f978fa Fix aquanight's email 2007-07-17 23:47:30 +00:00
autoupdate 2062bd4137 Automatic weekly version update: 200729 2007-07-16 05:00:06 +00:00
stylus740 3005cafeca Changes week 28 for doc/help.de.conf doc/unreal32docs.de.html 2007-07-14 08:42:15 +00:00
oepidus 302bb75217 *** empty log message *** 2007-07-13 23:02:47 +00:00
stskeeps d26692e6f8 done 2007-07-13 14:24:12 +00:00
stskeeps 3e5aba5117 version fix 2007-07-13 14:18:39 +00:00
stskeeps 3f0d91dc34 Unreal.nfo update 2007-07-13 13:29:19 +00:00
stskeeps 71fd0f0af6 Documentation update 2007-07-13 12:09:19 +00:00
oepidus 3320b9a150 *** empty log message *** 2007-07-13 11:55:53 +00:00
stskeeps 37a896df79 3.2.7 release 2007-07-13 10:43:04 +00:00
mark 7436ba747e Changes of week 24/07 2007-07-12 07:15:37 +00:00
babass 4cca75b0cb Préparation à la sortie de la release 3.2.7 2007-07-11 17:13:00 +00:00
stskeeps acda817d3d - Updated release notes 2007-07-11 17:12:11 +00:00
angrywolf 61b7a1277b Changes of week 28 2007-07-11 16:57:30 +00:00
stskeeps 06ea24e88b - Fixed wolfsage eff-up in c-ares.tar.gz, not running make distclean 2007-07-11 16:36:43 +00:00
bock 8cb6d662e1 Update for 3.2.7, added helpop for new commands 2007-07-11 07:33:37 +00:00
stskeeps 1ae33ddbfb - Fix, fix #0003421 patch 2007-07-10 19:35:25 +00:00
stskeeps d67697b7a2 - Entering 3.2.7 RC2 phase 2007-07-10 13:16:59 +00:00
stskeeps 7bc78fae1e - Applied #0003392 patch by Bock, adding some stuff to help.conf 2007-07-10 10:43:21 +00:00
stskeeps e1b48b7d3b - Applied #0003144 patch by Bock, fixing win32 install and such 2007-07-10 10:41:24 +00:00
stskeeps 686732b674 Applied 2999 2007-07-10 10:28:07 +00:00
stskeeps 20d84edaa5 - Applied #0003422 help.conf patches by Bock 2007-07-10 10:11:06 +00:00
stskeeps ddbb84682d - Fixed fixed #003244 fix. 2007-07-10 09:49:02 +00:00
stskeeps 74349aa334 - #0003429 reported by Bock about appearing to accept multiple auth blocks. 2007-07-09 19:46:28 +00:00
autoupdate 9987ec884e Automatic weekly version update: 200728 2007-07-09 05:00:03 +00:00
autoupdate 23d91c269f Automatic weekly version update: 200727 2007-07-02 05:00:04 +00:00
stskeeps d9fbd32352 More .hs 2007-06-27 15:51:47 +00:00
stskeeps e1e037c1b1 - Win32 library updates from Bock 2007-06-27 15:47:32 +00:00
stskeeps 8805dae525 - #0003405 repoted by Stealth regarding wildcards and autoconnect being an
||
- Fixed irc_uid|gid being defined on win32
2007-06-27 11:36:31 +00:00
stskeeps dad8477cb3 - Applied patch to fix some win32 problems reported by Bock, fixed by fez 2007-06-27 10:54:51 +00:00
stskeeps a705ceaa86 - Entering 3.2.7 RC1 phase 2007-06-26 11:27:07 +00:00
autoupdate 21a54860d3 Automatic weekly version update: 200726 2007-06-25 05:00:04 +00:00
stskeeps a9682b7ae2 - #0003244 reported by CuLpA about grammar errors in webtv outputs 2007-06-22 08:42:23 +00:00
autoupdate 0f0ffc9580 Automatic weekly version update: 200725 2007-06-18 05:00:05 +00:00
stskeeps 0e50f34167 - #0003363 patched by adrianp, changing IRC_UID and IRC_GID into
defines IRC_USER, IRC_GROUP which is a string specifiying what user name/
  group name that should be changed into, instead of a hardcoded gid/uid.
  This should make it easier for packaged binary releases to work (even
  though this probably means Debian will take us in, ick .. Can't we pull
  a new fight with debian-legal again?)

- #0003363 patched by adrianp, changing IRC_UID and IRC_GID into
  defines IRC_USER, IRC_GROUP which is a string specifiying what user name/
  group name that should be changed into, instead of a hardcoded gid/uid.
  This should make it easier for packaged binary releases to work (even
  though this probably means Debian will take us in, ick .. Can't we pull
  a new fight with debian-legal again?)
2007-06-17 12:43:52 +00:00
stylus740 121c4b73ab Canges week 24 for doc/example.de.conf doc/help.de.conf doc/unreal32docs.de.html 2007-06-16 14:01:57 +00:00
angrywolf 6ee7e51b40 Little grammar fix for the directive link::ciphers 2007-06-16 12:48:04 +00:00
angrywolf 465c9ed9ae Forgot the example.conf part of 'Changes of week 24' :) 2007-06-16 12:26:15 +00:00
bock 1fd1f3a7b2 Changes of week 24 2007-06-16 10:09:39 +00:00
angrywolf b3dbc78b8c - Changes of week 24
- Retranslated the whole CDIR section (3.15)
- According to http://forditas.fsf.hu/html/node3.html the Hungarian expression for 'Internet Service Provider' should be written with a hypen (all occurrences fixed).
2007-06-16 10:00:16 +00:00
babass b930545ae7 Correction typo 2007-06-16 09:21:12 +00:00
stskeeps 182df5db2d - #0003232 reported by vonitsanet patched by djGrr, regarding /map is not
shown u:lined servers to local opers and /links does
2007-06-15 19:58:45 +00:00
stskeeps f3fce00218 - #0003092 reported by tabrisnet, patched by WolfSage, regarding
documentation says
  link::bind-ip is optional, but not specifying it produces an error
2007-06-15 19:53:54 +00:00
stskeeps a3d2b68abd - #0003382 reported by stealth regarding nested C-style comments messing
up example.conf parsing
2007-06-15 19:50:22 +00:00
stskeeps f3a2d7f6a4 - #0001317 reported by thilo regarding removal of (username) being
appended to topics set by U:Lined servers.
2007-06-15 19:47:26 +00:00
babass 02da9dd0a3 Ajout de l'oper CIDR 2007-06-14 21:05:48 +00:00
stskeeps 451a05d951 - Added oper CIDR 2007-06-14 18:23:38 +00:00
stskeeps 0748ba0aa5 - #0002420 reported by KnuX fixed by WolfSage
- #0003147 reported by vonitsanet, fixed by djGrrr regarding making
  spamfilters work in case of /setname
2007-06-14 18:20:38 +00:00
stskeeps db04a13bbe #0003216 patched by djGrrr, regarding when you run ./Config for a second 2007-06-14 18:15:52 +00:00
stskeeps 797b6f428c - Fixed SVSKILL sending an illegal QUIT 2007-06-14 18:12:10 +00:00
stskeeps 92bd444ac2 - #0002040 reported by aquanight, removing dependancy on +l for +L. This
will be backwards compatible as well, SJOIN doesn't care (TM) and mode
  doesn't either in case of a server sending it. So this will be just a
  client protocol modification.
2007-06-14 18:10:34 +00:00
stskeeps 8cf43a9596 - #0003139 reported by vonitsanet, improving error messages on /connect
when trying to /connect to a server with wildcards (* and ?) in the link
  block. We also raise an error if link::options::autoconnect is used
  together with wildcards in hostname.
2007-06-14 18:06:04 +00:00
stskeeps d673c88159 - Now using #0003028, with more intelligent accept() handling. The IRCd
will now attempt to accept() up to LISTEN_SIZE (possibly saving CPU
  through this under load, and speeding up connection).
- IRCd now also sets the &me fd as being non blocking (wasn't before, that
  was odd..)
2007-06-14 18:02:30 +00:00
stskeeps ee24127381 - #0002533 reported by Dodge_Ram, patched by WolfSage, regarding notices
not being sent when /*line and /shun are used to request stats
2007-06-14 18:01:01 +00:00
stskeeps df0e2ac4de #0003368 patched by Stealth giving users access to do /module on remote
servers
2007-06-14 17:29:36 +00:00
stskeeps 48c9c21708 - #0003027 reported by Trocotronic, regarding doing -l <para> on SJOIN,
and not -l as supposed. This may have caused desyncs
2007-06-14 17:25:57 +00:00
wolfsage 2857f3efe9 Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.644
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.644 Changes
--- Changes	12 Jun 2007 00:06:32 -0000	1.1.1.1.2.1.2.1.2.2234.2.644
+++ Changes	12 Jun 2007 00:13:02 -0000
@@ -1468,3 +1468,4 @@
 - #0003264 reported by Robby22 regarding help.conf typo
 - Updated c-ares to version 1.4.0
 - Updated tre to version 0.7.5
+- help.conf updates. Missing some ;'s.
2007-06-12 00:13:07 +00:00
wolfsage b4a879621e Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.643
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.643 Changes
--- Changes	11 Jun 2007 23:52:32 -0000	1.1.1.1.2.1.2.1.2.2234.2.643
+++ Changes	12 Jun 2007 00:06:09 -0000
@@ -1467,3 +1467,4 @@
 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage
 - #0003264 reported by Robby22 regarding help.conf typo
 - Updated c-ares to version 1.4.0
+- Updated tre to version 0.7.5
2007-06-12 00:06:33 +00:00
wolfsage 4935dfa45e Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.642
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.642 Changes
--- Changes	10 Jun 2007 12:25:06 -0000	1.1.1.1.2.1.2.1.2.2234.2.642
+++ Changes	11 Jun 2007 23:52:00 -0000
@@ -1466,3 +1466,4 @@
 - #0002844 reported by RandomNumber: make spamfilter actions case insensitive
 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage
 - #0003264 reported by Robby22 regarding help.conf typo
+- Updated c-ares to version 1.4.0
2007-06-11 23:52:33 +00:00
autoupdate f97577ae76 Automatic weekly version update: 200724 2007-06-11 05:00:03 +00:00
wolfsage 2ff21308f9 Index: Changes
===================================================================
RCS file: /home/cmunk/ircsystems/cvsroot/unreal/Changes,v
retrieving revision 1.1.1.1.2.1.2.1.2.2234.2.641
diff -u -r1.1.1.1.2.1.2.1.2.2234.2.641 Changes
--- Changes	30 Apr 2007 19:47:15 -0000	1.1.1.1.2.1.2.1.2.2234.2.641
+++ Changes	10 Jun 2007 12:25:03 -0000
@@ -1465,3 +1465,4 @@
 - #0002560 reported and patched by w00t, regarding a typo in /SAMODE
 - #0002844 reported by RandomNumber: make spamfilter actions case insensitive
 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage
+- #0003264 reported by Robby22 regarding help.conf typo
2007-06-10 12:25:07 +00:00
autoupdate e33a0d9a09 Automatic weekly version update: 200723 2007-06-04 05:00:03 +00:00
autoupdate 4762baa11a Automatic weekly version update: 200722 2007-05-28 05:00:03 +00:00
autoupdate fc714fc288 Automatic weekly version update: 200721 2007-05-21 05:00:03 +00:00
autoupdate b6ea1ab479 Automatic weekly version update: 200720 2007-05-14 05:00:03 +00:00
babass 9e5a922ca3 Correction de typo pouvant créer un problème à l'installation de l'help.fr.conf 2007-05-12 13:44:41 +00:00
angrywolf 25f5036c35 Changes of week 18 2007-05-12 00:38:49 +00:00
mark 7506b322a5 Changes of week 18/07 2007-05-11 14:35:29 +00:00
autoupdate 87134d99e7 Automatic weekly version update: 200719 2007-05-07 05:00:03 +00:00
Bram Matthys 9505a1f520 turkish doc updates (by Serkan) 2007-05-06 11:33:22 +00:00
babass 9be37f7979 Ajout de AddMOTD et AddoMOTD dans help.fr.conf plus correction syntaxique dans la doc. 2007-05-05 10:56:39 +00:00
stylus740 de9e60bc03 Changes week 18 doc/help.de.conf doc/unreal32docs.de.html 2007-05-05 10:49:04 +00:00
Bram Matthys 152283b769 - help.conf updates... #0002420 reported by KnuX fixed by WolfSage 2007-04-30 19:47:16 +00:00
Bram Matthys 1b587dcbff - #0002844 reported by RandomNumber: make spamfilter actions case insensitive 2007-04-30 19:45:44 +00:00
Bram Matthys 2b9dd64bb3 - #0002560 reported and patched by w00t, regarding a typo in /SAMODE 2007-04-30 19:43:24 +00:00
Bram Matthys 0e5206ea7d - #0003159 reported by aegis and Bock, regarding typos in documentation 2007-04-30 19:42:48 +00:00
Bram Matthys de1fea75f4 - xx reported and fixed by WolfSage (addmotd, addomotd in help.conf) 2007-04-30 19:41:42 +00:00
Bram Matthys e9bb00fec3 - Fixed SVSKILL sending an illegal (wrong direction) QUIT right after, #0003307 2007-04-30 19:37:30 +00:00
autoupdate cfdd3c2889 Automatic weekly version update: 200718 2007-04-30 05:00:05 +00:00
Bram Matthys 1eeae26719 - #3272 patched by w00t, regarding remove restrictions on NOTICE/PRIVMSG $* for opers. 2007-04-25 12:45:39 +00:00
Bram Matthys 043948990c - #0002846 reported by alex323, patched by WolfSage, regarding local ircop cannot issue CLOSE command 2007-04-25 12:43:20 +00:00
Bram Matthys 91391a46b5 - #0003212 patched by Grunt, regarding /userip <someone_else> seemingly
shows your own (cloaked) IP.
2007-04-25 12:36:42 +00:00
Bram Matthys 33bbe5ea8f - #0002932 reported by therock247uk, patched by WolfSage, regarding Local
opers can /chghost /chgident /chgname on someone thats on another server on
  the network.
2007-04-25 12:33:43 +00:00
Bram Matthys f6a0ef0cc2 - #0003146 reported by vonitsanet, regarding Modes O,S (etc) not rejected for modes-on-connect
fixed by djGrrr
2007-04-25 12:30:38 +00:00
Bram Matthys fe3eb0db7d - Fixed #0003171 reported by danieldg (typo) doc/technical 2007-04-25 12:20:13 +00:00
autoupdate 2f49eb5aaf Automatic weekly version update: 200717 2007-04-23 05:00:03 +00:00
autoupdate 2a7f21124f Automatic weekly version update: 200716 2007-04-16 05:00:03 +00:00
autoupdate e5a40f1045 Automatic weekly version update: 200715 2007-04-09 05:00:07 +00:00
autoupdate 48d766e308 Automatic weekly version update: 200714 2007-04-02 05:00:09 +00:00
autoupdate 1a694d14f5 Automatic weekly version update: 200713 2007-03-26 05:00:05 +00:00
autoupdate 996775f16d Automatic weekly version update: 200712 2007-03-19 05:00:04 +00:00
autoupdate fc58297eb0 Automatic weekly version update: 200711 2007-03-12 05:00:03 +00:00
autoupdate dba2097cdd Automatic weekly version update: 200710 2007-03-05 05:00:03 +00:00
autoupdate 3b0f6ea0ac Automatic weekly version update: 200709 2007-02-26 05:00:03 +00:00
aquanight 68595e2d22 Fixed serverprotocol.html typo. 2007-02-19 19:34:38 +00:00
autoupdate 5285c52084 Automatic weekly version update: 200708 2007-02-19 05:00:03 +00:00
Bram Matthys f00fd6eaef maths is teh hard 2007-02-16 14:09:39 +00:00
Bram Matthys 6b370c9c67 - Fixed file descriptor leakage on rehash. This resulted in [number of modules loaded]
file descriptors being leaked upon every /REHASH.
  So if you, for example, had 3 modules loaded and rehashed 30 times, it would cause
  the ircd to consume 60 useless file descriptors (which often means 60 less file
  descriptors being available to clients).
2007-02-16 14:05:44 +00:00
autoupdate 231d06c48d Automatic weekly version update: 200707 2007-02-12 05:00:03 +00:00
Bram Matthys 8c6bb314c5 - Changed password length from 32 to 48, is allocated dynamically anyway. 2007-02-06 15:33:12 +00:00
autoupdate fe34c10de2 Automatic weekly version update: 200706 2007-02-05 05:00:03 +00:00
autoupdate 1846da7c5a Automatic weekly version update: 200705 2007-01-29 05:00:04 +00:00
Bram Matthys 83dda85a6a - Fixed SAPART causing a flood of notices from all servers, fun. Reported and patch
provided by djGrrr.
2007-01-22 13:01:16 +00:00
Bram Matthys 9feef46dae - Fixed SDESC not messaging +s +s clients on local server when it is used, reported by
dre, patch provided by djGrrr.
2007-01-22 12:50:55 +00:00
Bram Matthys c88832d960 - Added ability to enable "no fake lag" for a user through through services via the
new commands SVSNOLAG/SVS2NOLAG (syntax: SVSNOLAG [+|-] NickName). Obviously, care
  should be taken when giving such access to a user since he/she will be able to flood
  at full speed and could possibly take down the entire IRCd (well, everyone on it).
  Suggested by avb, coded by djGrrr.
2007-01-22 12:46:54 +00:00
Bram Matthys d1827e1835 - /WHOIS now shows the ident of local users - if ident enabled and they had an ident -
instead of always "*" in the 'is connecting from' line. Suggested and patch provided
  by djGrrr (#0002888).
2007-01-22 12:36:51 +00:00
Bram Matthys 30bab73c03 - Fixed bug where SVSO was unable to give various operflags such as q, d, X, reported
by prodigy2k7 (#0003203).
2007-01-22 12:25:40 +00:00
autoupdate 35d668ad31 Automatic weekly version update: 200704 2007-01-22 05:00:03 +00:00
autoupdate 1053948bed Automatic weekly version update: 200703 2007-01-15 05:00:03 +00:00
autoupdate 686c7e2f21 Automatic weekly version update: 200702 2007-01-08 05:00:03 +00:00
autoupdate 3f47c89846 Automatic weekly version update: 200701 2007-01-01 05:00:03 +00:00
aquanight c834a47f32 italic fix in serverprotocol 2006-12-28 16:34:06 +00:00
oepidus d99b03660b Changes of week 51 2006-12-25 22:16:37 +00:00
autoupdate 4807a7330c Automatic weekly version update: 200652 2006-12-25 05:00:03 +00:00
stylus740 1e73667155 Correction: doc/help.de.conf 2006-12-24 09:37:08 +00:00
aquanight 42c3227864 Fixed STATS description for server senders 2006-12-23 22:19:53 +00:00
stylus740 6532706da0 doc/help.de.conf Change of week 51 2006-12-23 22:11:59 +00:00
aquanight f738943493 Added WHOIS (#) and STATS (2) to serverprotocol.html. 2006-12-23 20:05:20 +00:00
stylus740 9a5dbf345e Changes of week 51: doc/unreal32docs.de.html 2006-12-23 10:35:49 +00:00
Bram Matthys e5f921e186 - Updated release notes, mass-change of version number, no code changes.
** 3.2.6 release **
2006-12-22 20:19:39 +00:00
Bram Matthys c6c0345b36 Updated release notes (no version change yet) 2006-12-22 20:04:00 +00:00
Bram Matthys 1114003d93 hrmmhrmhrmmmmmm changed leaf-depth to leafdepth 2006-12-22 20:03:47 +00:00
Bram Matthys a34ecabee0 ** 3.2.6-rc3 release ** 2006-12-20 21:05:55 +00:00
Bram Matthys ef8ffdda04 - Showing even more SSL server errors now, hopefully all of them, also changed the
error notice a bit so it's much more like non-SSL server link errors. Reported by
  vonitsanet (#0003150).
2006-12-19 19:37:41 +00:00
Bram Matthys 0f53a33401 - Fixed possible crash with using quarantine, reported by Sephiroth (#0003151). 2006-12-19 12:52:53 +00:00
Bram Matthys 6373b83c39 Updates of week 50 2006-12-18 11:51:56 +00:00
autoupdate f7ca612817 Automatic weekly version update: 200651 2006-12-18 05:00:04 +00:00
babass c06f591878 Changements de la semaine 50 2006-12-17 20:07:02 +00:00
stylus740 72c6875a80 changes of week 50 doc/help.de.conf 2006-12-17 09:15:10 +00:00
Bram Matthys 6c193b7cbe ** 3.2.6-rc2 release ** 2006-12-16 13:36:02 +00:00
Bram Matthys 20603ada50 spellllllingggg 2006-12-16 13:26:26 +00:00
Bram Matthys 4e3745922e plok 2006-12-16 13:22:50 +00:00
mark 298d28940b Changes of week 48/06 2006-12-16 13:18:38 +00:00
Bram Matthys 4f54a7e982 - Post-3.2.5 CVS-only bug: Fixed spamfilter on user target not working properly when
changing nicks (was still trying to match on the old nick), reported by vonitsanet
  (#0003143).
2006-12-12 17:25:19 +00:00
bock c9e5cc23ff Updated SVSNLINE syntax in help.ru.conf (the remove-syntax). 2006-12-12 07:40:05 +00:00
Bram Matthys a314130ca6 - Updated SVSNLINE syntax in help.conf (the remove-syntax). 2006-12-11 12:13:20 +00:00
autoupdate 9fcd92d297 Automatic weekly version update: 200650 2006-12-11 05:00:04 +00:00
angrywolf 4212f96ebc One more little fix. :) 2006-12-06 18:30:43 +00:00
angrywolf e51ac78a93 Changes of week 48 + various grammar corrections 2006-12-06 18:25:53 +00:00
Bram Matthys 0537a49be6 - Fixed SSL bug where an outgoing connect (either autoconnect, or /connect), would not
show any error message when it failed. Error information has also been slightly
  improved. Reported by vonitsanet (#0003138).
2006-12-06 14:33:42 +00:00
babass a1016d0a8e Changements de la semaine 48 2006-12-05 16:11:03 +00:00
Bram Matthys bb265f6c41 - Improved detection of bad set::modes-on-oper and oper::modes, now rejecting things like
'o', 'z', and more.
- Fix from above fixes an /OPER announce problem reported by Bock (#0003135).
2006-12-05 13:50:57 +00:00
autoupdate c62d326a7a Automatic weekly version update: 200649 2006-12-04 05:00:04 +00:00
stylus740 f71fd34887 Changes of week 48 doc/help.de.conf doc/unreal32docs.de.html 2006-12-03 07:40:30 +00:00
Bram Matthys 41efaa9fd8 - Don't show silence list to others 2006-12-02 23:20:57 +00:00
trocotronic 590c7388cb Cambios semana 48 / 2006 2006-12-02 11:11:39 +00:00
gsf db03b6173e Week 48 Changes :) 2006-12-02 09:56:07 +00:00
Bram Matthys 3e134cbb0a - Setting set::pingpong-warning didn't work, reported by vonitsanet, patch supplied by
avb (#0003131).
2006-12-01 15:39:44 +00:00
Bram Matthys a6b8d8ff35 - Added donators since 3.2.5 2006-12-01 15:32:51 +00:00
Bram Matthys ba8cf14b9b - Get rid of some old stuff in release notes 2006-11-30 23:56:45 +00:00
Bram Matthys af0b379650 ** 3.2.6-rc1 release ** 2006-11-30 23:02:02 +00:00
aquanight 6a44b8c3e5 Backport serverprotocol.html updates from 3.3 + 3.2.6 info 2006-11-29 20:03:13 +00:00
babass 0390c6c64f Changements de la semaine 47 (help.fr.conf) 2006-11-28 16:08:44 +00:00
Bram Matthys 7c9ea959f4 updates 2006-11-28 12:04:18 +00:00
bock 974454764f Fixed typo 2006-11-27 14:58:16 +00:00
Bram Matthys 4faaf63e82 - Fixed help.conf typo 2006-11-27 14:39:45 +00:00
autoupdate 63635918f7 Automatic weekly version update: 200648 2006-11-27 05:00:04 +00:00
bock ace157556b Improved description of link::hub/leaf/leafdepth in unreal32docs.ru.html, also fixed typo (leafdepth, not leaf-depth) 2006-11-26 19:33:49 +00:00
Bram Matthys ef7344d586 - Added release notes for 3.2.6 2006-11-26 18:44:59 +00:00
Bram Matthys 8d68e6fa19 - fix for above (c-ares win32 lib) 2006-11-26 14:37:17 +00:00
Bram Matthys a3b32fdedb updated changelog comment, giving more credit
- Made SAPART work for mulitple channels, just like SAJOIN. Reported by Snake and
  SeigHart, patch provided by Bock (#0003064). This also fixes SAPART now being
  announced to all opers globally, just like SAJOIN.
2006-11-26 12:54:06 +00:00
Bram Matthys c29ad02587 - upgraded windows c-ares (areslib.lib) as well. 2006-11-25 22:57:45 +00:00
Bram Matthys 545c641fe8 - c-ares resolver: upgrade to 1.3.2. 2006-11-25 19:39:39 +00:00
Bram Matthys a962ad2877 backport from aquanight:
- Improved description of link::hub/leaf/leafdepth in unreal32docs.html reported by Bugz (#2623),
  also fixed typo (leafdepth, not leaf-depth), reported by monas (#3083).
2006-11-25 19:10:14 +00:00
Bram Matthys 628abf114c FIXFORFIX
- Fixed bug where omitting class::connfreq would result in a huge connection attempt
  flood when autoconnect was enabled. We now set class::connfreq to 60 if it's not
  specified. Reported by Milliways (#0003018).
2006-11-25 16:48:43 +00:00
Bram Matthys ea2b4a1698 spellllling.... (changelog only) 2006-11-25 16:43:23 +00:00
Bram Matthys d9098e44e3 - Fixed bug where ommitting class::connfreq would not give a config error, and would
cause a huge connection attempt flood when autoconnect was enabled. Reported by
  Milliways (#0003018).
2006-11-25 16:42:17 +00:00
bock 08e5ee49d1 Ooops, some more help staff info was added on last commit. Removed to correct. 2006-11-25 15:59:56 +00:00
stylus740 9b47129ad7 Chandes week47 doc/help.de.conf 2006-11-25 10:42:30 +00:00
Bram Matthys b6bed50471 - Fixed compile bug on Solaris due to missing INADDR_NONE, fix provided by Schak
(#0003125).
2006-11-24 21:20:48 +00:00
Bram Matthys c48ab26b0e - Fixed charsys config error message sometimes saying stuff about set::accept-language,
which should be set::allowed-nickchars (the former does not exist). Reported and
  patch provided by avb (#0003122).
2006-11-24 21:07:11 +00:00
bock 97c561715a Added information about extbans to help.ru.conf (/HELPOP EXTBANS) 2006-11-24 21:00:13 +00:00
Bram Matthys 803a67d4c7 - Fixed belarussian-w1251 charset.. accidently copied a "'" which caused an internal
error, reported by Bock (#0003114).
- Added information about extbans to help.conf (/HELPOP ?EXTBANS). Patch from Bock
  (#0003113).
- Made SAPART work for mulitple channels, just like SAJOIN. Patch provided by Bock
  (#0003064). This also fixes SAPART now being announced to all opers globally, just
  like SAJOIN.
- Finally fixed /RESTART issue on windows for good, should now always restart correctly.
  Patch provided by BuHHunyx and Bock (#0002734).
2006-11-24 19:34:05 +00:00
Bram Matthys 697eb2c3e4 - Changed some minor Makefile stuff
- Fixed belarussian-w1251 charset.. accidently copied a "'" which caused an internal
  error.
2006-11-22 15:37:34 +00:00
sinameki d3ca3fb0c4 changes of week 46 2006-11-20 23:28:48 +00:00
autoupdate 31c15ebb93 Automatic weekly version update: 200647 2006-11-20 05:00:03 +00:00
trocotronic 2126961b4b Cambios semana 46 / 2006 2006-11-19 12:35:15 +00:00
babass e50f9f92a4 Changements de la semaine 46 2006-11-19 11:00:48 +00:00
angrywolf cd1889ce93 Changes of week 36 & 46 2006-11-19 08:32:21 +00:00
mark b58fb7e859 Changes of week 46: doc/unreal32docs.html 2006-11-18 15:09:19 +00:00
gsf 38607d32ce Week 46 2006-11-18 12:52:56 +00:00
stylus740 003de86893 Changes of week 46 in: doc/example.de.conf doc/help.de.conf doc/unreal32docs.de.html 2006-11-18 09:04:31 +00:00
bock f4b75de32e Changes of week 46: removed some typo. 2006-11-18 08:54:39 +00:00
autoupdate 3c60bf826d Automatic weekly version update: 200646 2006-11-13 05:00:04 +00:00
bock 0910bdfd81 Corrected doc about set::dns behavior and added set::pingpong-warning 2006-11-12 22:43:14 +00:00
Bram Matthys f3d578f2ec - Fixed a couple of typos and other one-line-text fixes at various places: reported by
aegis (#3081), DanPMK (#2818), tabrisnet (#2974, #2970, #2467), penna (#2721),
  Brad (#2488), vonitsanet (#2467).
- Made OpenSSL version dynamic, reported by buildsmart (#0002975).
- Rejecting fake +z modes in conf, reported by rve (#0002532).
2006-11-12 21:49:52 +00:00
Bram Matthys 34e54c958b - /INVITE's from people on the silence list are now (silently) ignored, suggested by
White_Magic (#0002478).
2006-11-12 20:27:22 +00:00
Bram Matthys ed9e2ccd64 - Snomask N: Don't show nickchanges for U-lines, reported by seneces (#0002636).
- Fixed set::dns::bind-ip directive seen as duplicate, reported by aegis (#0003074).
- set::dns::* block is now no longer mandatory. All info has always been read from
  /etc/resolv.conf (*NIX) or the registry (Win32), and the set::dns block is ignored
  (except for set::dns::bind-ip, but that's a special case). Suggested by many including
  djGrrr to make things slightly more logical (#0003019).
- As a consequence of the above, set::dns blocks were removed from doc/example*conf.
- Added two more characters to Catalan charset, reported by rmh (#0002995).
- Added set::pingpong-warning [yes|no] which decides whether to send the "** If you are
  having problems connecting due to ping timeouts, please type /quote pong .." message
  to each client when NOSPOOF is enabled (usually on Win32). The default is NO.
  Previously this message was always sent if NOSPOOF was on, which often caused
  confusion among users. The message was intended for non-confirming clients, but these
  should be fixed by now, and those that were not fixed (self-made bots/etc) did often
  not understand the message anyway. Anyway, you can still turn it on ;). (#2680).
2006-11-12 19:38:17 +00:00
Bram Matthys f33a2c0d06 - Fixed 'SVSMOTD !' not deleting the services motd in memory, reported by avb (#0003110). 2006-11-12 18:58:18 +00:00
Bram Matthys c4adb49bbb extern int file_exists(char* file); 2006-11-11 20:34:10 +00:00
Bram Matthys 5c8e1da371 - loadmodule now reports proper errors when the actual file can't be found, instead of blaming
it on the temp file, reported in #3015.
(aquanight backport)
2006-11-11 20:33:41 +00:00
Bram Matthys 1d03d16fcb - Cutoff webtv whois at MAXTARGETS (#0003004). 2006-11-11 20:25:03 +00:00
Bram Matthys 0848c29f5e - Fixed set::allowed-nickchars causing a segfault for some unknown charsets, reported
by avb (#0003069).
(aquanight backport)
2006-11-11 20:15:42 +00:00
Bram Matthys 013c376c91 - Moved failed oper snotices to snomask +o, and are sent out to all servers. Also now shows
the uid attempted (like [FAILEDAUTH] does) for incorrect host or maxlogin.
2006-11-11 20:13:00 +00:00
autoupdate 313113cfbf Automatic weekly version update: 200645 2006-11-06 05:00:03 +00:00
Bram Matthys 0bc77f25f9 - Made win32 compile again, reported by Bock (#0003106). 2006-11-05 20:13:10 +00:00
Bram Matthys 3fa0b692ce #if defined(DEBUGMODE) && !defined(_WIN32) 2006-11-05 00:28:39 +00:00
Bram Matthys a7fbab3cb9 - Win32: Fixed a few compiler warnings, suggested by Zell (#0002890). 2006-11-05 00:21:12 +00:00
Bram Matthys 078e26b128 - If the 'crypt' algorithm is used, then passwords were/are truncated to 8 characters.
We now print a warning when this happens (both on the IRC command and command-line).
  Suggested by JasonTik (#0002953).
2006-11-04 23:53:41 +00:00
Bram Matthys ab7c44f251 - Services timestamps are now always treated as an unsigned long (0..2^32-1), instead
of accidently as signed long during netsynchs. This bug caused issues with values
  larger than 2147483647. Reported by avenger (#0002980).
2006-11-04 22:25:27 +00:00
Bram Matthys 45ec1c7c51 - Win32: we now no longer crash if no access to write to service.log, suggested and
patch by Xuefer (#0002886).
2006-11-04 21:40:57 +00:00
Bram Matthys fe77be7070 - Win32: SSL private key prompt should now no longer crash. Patch provided by Alexey
Markevich (#0002866).
2006-11-04 13:23:37 +00:00
Bram Matthys af598b644f - [internal] Made a spamfilter_build_user_string function that will build the spamfilter
user target string (nick!user@host:info), insteaf of doing it at like 5 places.
- Spamfilter target 'u' (user): the host field (nick!user@HOST:realname) is now escaped
  with brackets if it's an IPv6 address, eg: blah!blah@[1:2:3:4:5:6:7:8]:hello, reported
  by aquanight and others (#0003010).
2006-11-04 00:10:53 +00:00
Bram Matthys 691a5ef783 - Using SVSMODE (or SVS2MODE) to set -x will now actually remove the vhost from memory,
instead of letting it magically reappear whenever +x is set. This means services can
  now properly "unvhost" a user by sending a "SVSMODE User -x+x" (then any existing vhost
  will be removed and user will have a cloaked host). Reported by avenger and others
  (#0002933).
2006-11-03 23:32:24 +00:00
Bram Matthys 54c7b1f322 - Fixed m_names.so not being build (a problem for people not using commands.so),
reported by aegis (#0003085).
2006-11-03 22:40:30 +00:00
Bram Matthys f53a8e204d - Fixed deny link {} blocks being ignored by autoconnect. Reported by a couple people,
also see #0003084.
(backport from aquanight)
2006-11-03 20:36:27 +00:00
Bram Matthys 4ba5134d52 - Fixed SVSO - not removing coadmin (+C). Reported by Muisje (#0003077). 2006-11-03 20:33:56 +00:00
Bram Matthys 25684239fa - Fixed some unitialized pointer things for win32 w/ssl on keyprompt, no idea if it
helps, though. Would appreciate it if another code looks into this. -- Syzop
2006-11-03 19:31:21 +00:00
Bram Matthys fc3f121cf7 - Made it so that when 'java' is enabled for a listen block, then the 2nd parameter to
NICK is not seen as a password on this port. Patch from afolentes (#0003097).
2006-11-03 19:23:30 +00:00
Bram Matthys 4b3d9c126e - Updated ukrainian-w1251 and belarussian-w1251 charsets: some characters were previously
included that shouldn't. Reported by avb (#0003102), patch supplied by Bock.
2006-11-03 13:41:09 +00:00
autoupdate 61ebb53352 Automatic weekly version update: 200644 2006-10-30 05:00:04 +00:00
Bram Matthys b31f629d43 Update... Linebreaks fixed and all. 2006-10-28 17:17:15 +00:00
Bram Matthys 7c3fb9ee6b - Fixed a couple of add_Command/del_Command lines in m_chgname and m_helpop trying to
add the same token twice. Didn't cause any trouble, normally, though...
2006-10-28 14:10:31 +00:00
autoupdate 8c8938a88d Automatic weekly version update: 200643 2006-10-23 05:00:04 +00:00
autoupdate d4c9f5432a Automatic weekly version update: 200642 2006-10-16 05:00:05 +00:00
Bram Matthys 78ce3ffe4f updates.. ;p 2006-10-12 20:59:57 +00:00
Bram Matthys 57ec52f274 Updates 2006-10-10 12:18:59 +00:00
autoupdate 271a62162d Automatic weekly version update: 200641 2006-10-09 05:00:04 +00:00
autoupdate 765fc3bde1 Automatic weekly version update: 200640 2006-10-02 05:00:04 +00:00
Bram Matthys 9aed223b17 - Fixed zlib version check: 1.x is compatible with all 1.*, etc. (#0002966). 2006-09-28 20:43:52 +00:00
Bram Matthys 6ee4cf1ab5 credit.. Emre -> ironic ;P 2006-09-27 17:41:04 +00:00
Bram Matthys 38d5833c5b - Added doc/example.tr.conf (Turkish), translated by Emre. 2006-09-27 15:42:07 +00:00
Bram Matthys 1c1b90a801 - Added doc/help.tr.conf (Turkish), translated by Diablo. 2006-09-26 12:23:57 +00:00
autoupdate 9dc8f5fce1 Automatic weekly version update: 200639 2006-09-25 05:00:03 +00:00
Bram Matthys 1db0cc7dcd - Fixed cloak cutoff problem with long hosts. 2006-09-22 18:34:45 +00:00
Bram Matthys 262e2b2ca6 - Windows 2003: Fixed UnrealIRCd unable to boot if no DNS server is configured, we now
fallback to set::dns::nameserver in such a case. Thanks to Romeo (reporter, #0002802)
  and Bock for tracing this down.
2006-09-19 12:45:18 +00:00
autoupdate 4154d3ff5e Automatic weekly version update: 200638 2006-09-18 05:00:04 +00:00
Bram Matthys ac79932314 - Kick non-SSL users when the channel turns out to be +z during netmerge, reported by
Ron2K (#0002942).
(patch 90% by Trocotronic)
2006-09-15 12:29:01 +00:00
bock 45dd5b37f4 *Changes of week 36 2006-09-11 18:16:28 +00:00
autoupdate b30ff15c65 Automatic weekly version update: 200637 2006-09-11 05:00:05 +00:00
sinameki 6012a6e473 doc update of week 36 2006-09-10 20:19:59 +00:00
mark a138c0efb2 * Changes of week 36/06 2006-09-10 16:43:07 +00:00
trocotronic bffba7fc75 Cambios semana 36/06 2006-09-09 13:03:48 +00:00
stylus740 a3807a8d0a Changes of week 36 unreal32docs.de.html 2006-09-09 11:13:16 +00:00
babass 1adfad22f5 Ajout du support de FreeBSD 6.* 2006-09-08 15:46:45 +00:00
Bram Matthys 30dbdaa750 - Fixed small memory leak in resolver (~40 bytes when connecting to a server)
- Made Unreal use the original name in case of a CNAME, instead of the forwarded name,
  reported by jerrcsnet (#0003054).
- The "looking up your hostname" message was always sent, regardless of show-connect-info.
2006-09-06 12:24:05 +00:00
autoupdate 40d234d182 Automatic weekly version update: 200636 2006-09-04 05:00:03 +00:00
Bram Matthys c81b7595ab - Fix for channel mode +f: It incorrectly didn't eat a paramter on unset (ouch!), even
though it always acted like it did in the MODE line sent to the channel. This bug caused
  desynchs in some cases. Bug reported by Korfio (#0003048).
- Fixes to SVSNICK: case-change no longer causes a collision, don't return the value from
  exit_client (which would be FLUSH_BUFFER), fix QUIT not being sent back on collision.
- Fix for above so it doesn't -r the client.
2006-09-03 20:50:12 +00:00
Bram Matthys 31aaee7652 - Fixed bug in MODE #channel showing extended channel mode parameters when not in #channel.
- Made 'MODE #channel b' and friends show bans to ircops even when not in channel.
2006-08-29 13:22:58 +00:00
Bram Matthys 745dbfcfe0 - Module coders: Fixed CALLBACKTYPE_CLOAK_EX, it was not working properly at all. 2006-08-29 11:57:24 +00:00
autoupdate 198abda16c Automatic weekly version update: 200635 2006-08-28 05:00:04 +00:00
stylus740 4ae3b7071b doc/unreal32docs.de.html Changes of week 34 2006-08-26 08:27:05 +00:00
Bram Matthys 078915c8bd - Fixed some bugs in webtv code that could have caused trouble in the future (off by one),
reported by Ilja van Sprundel.
2006-08-23 11:15:23 +00:00
Bram Matthys 601eb71ba7 - Fixed SSL crash problem due to previous SSL change. 2006-08-23 10:43:02 +00:00
autoupdate 78d7291dcb Automatic weekly version update: 200634 2006-08-21 05:00:04 +00:00
Bram Matthys 1c993b2b24 - Fixed /SAJOIN able to join insecure users to +z channels, reported by phedny (#0002601). 2006-08-20 23:32:26 +00:00
Bram Matthys 38f4a154f3 - Small compile fix for above 2006-08-20 23:24:41 +00:00
Bram Matthys 05f5cfe02b - The server SSL certificate and private key can now be reloaded without requiring a server
restart, simply use: /REHASH -ssl
2006-08-20 23:05:55 +00:00
Bram Matthys c97cfd7a32 - Removed server numeric output from /MAP for normal users (still visible to ircops).
- Renamed unreal32docs.tk.html to unreal32docs.tr.html
- Module coders: Added HOOKTYPE_POST_SERVER_CONNECT (1 param: cptr) which is called when
  a server connects, just like HOOTYPE_SERVER_CONNECT but this is actually called *after*
  all clients and channels are synched. Obviously needed for some modules which must synch
  data that refers to clients/channels that would otherwise not exist yet on the other side.
2006-08-19 13:34:20 +00:00
autoupdate 30af83b7e3 Automatic weekly version update: 200633 2006-08-14 05:00:04 +00:00
autoupdate 06630b734d Automatic weekly version update: 200632 2006-08-07 05:00:04 +00:00
Bram Matthys c17fc7053d Mark 3.3* fork 2006-08-05 13:48:05 +00:00
Bram Matthys d57fda84df - Fixed SVSMODE -b [user] not always removing all bans (specificly, bans on the cloaked
host when you have a vhost), a code cleanup was also done. Based on patch from tabrisnet.
  Reported by Rob (#0002981).
2006-08-03 12:11:15 +00:00
Bram Matthys 9ea2326637 - Fixed operoverride message if oper is +h and -h's himself, reported by Bock (#2889). 2006-08-03 11:10:58 +00:00
Bram Matthys 4e26a3d494 - Fixed forgotten operoverride logmessage (kick if chan +Q), reported in #2889. 2006-08-03 10:51:05 +00:00
Bram Matthys 21eb4e5b5d - Fixed problem with oper as chanadmin kicking himself causing an operoverride notice,
reported by Bock (as part of #2889).
- Fixed desynch problem with +Q, reported by tabrisnet (#0002992).
- Updated doc/coding-guidelines
- Added bugs.* url to /info, was still showing some email address.
2006-08-03 10:44:55 +00:00
Bram Matthys f5b302c007 plok.. pre-commit. 2006-08-02 19:10:37 +00:00
Bram Matthys 9a804de95b Documented outdated for 69 days. Warning about document being out of date was sent 6 weeks ago. 2006-07-31 11:26:42 +00:00
autoupdate b2007fb08f Automatic weekly version update: 200631 2006-07-31 05:00:03 +00:00
gsf 85e36fda8d added OpenBSD 3.9 2006-07-28 09:50:14 +00:00
autoupdate 7ef365b991 Automatic weekly version update: 200630 2006-07-24 05:00:04 +00:00
Bram Matthys 78463e7d1d - Fixed tld::options:: not working properly, reported by DelGurth (#0003003). 2006-07-21 10:40:22 +00:00
sinameki 198e1c0dd1 doc update of week 27 2006-07-17 22:35:58 +00:00
autoupdate 909fda772b Automatic weekly version update: 200629 2006-07-17 05:00:03 +00:00
mark 18bbcb6dbe - Added a closing comment 2006-07-10 16:36:24 +00:00
autoupdate a4152ff15f Automatic weekly version update: 200628 2006-07-10 05:00:05 +00:00
babass 8eccfa7a33 Ajout du support de OpenBSD 3.9 2006-07-09 17:03:03 +00:00
mark f5a7d5e78b Changes week 27/06 2006-07-08 20:45:47 +00:00
stylus740 8e59f0c60e Changes of week 27: doc/example.de.conf doc/unreal32docs.de.html 2006-07-08 14:14:51 +00:00
angrywolf ed22d43bd2 Changes of week 27 2006-07-08 11:52:42 +00:00
trocotronic dbddfa8376 Cambios semana 27/06 2006-07-08 10:44:28 +00:00
bock 4e575921a1 changes of week 27 2006-07-08 10:28:17 +00:00
Bram Matthys e1dd8acd72 - Made it so undefining SHOW_SECRET (not the default) properly hides +s channels from ircops
(except netadmins), as it should. Reported and patch supplied by Jason (#0002965).
2006-07-04 10:05:18 +00:00
Bram Matthys 32495af164 - Added OpenBSD 3.9 to the supported OS list. 2006-07-04 10:03:27 +00:00
autoupdate b171bb498f Automatic weekly version update: 200627 2006-07-03 05:00:03 +00:00
Bram Matthys 1827f1d59b - Added HOOKTYPE_SILENCED: this is called whenever a message did not get delivered to a user
because the user was on the silence list.
2006-06-27 12:47:53 +00:00
autoupdate 401a8f7f97 Automatic weekly version update: 200626 2006-06-26 05:00:04 +00:00
Bram Matthys 11e6da7c3d - c-ares resolver: upgrade from 1.3.0 to 1.3.1. This mainly fixes compile problems,
including one reported by frigola on an old Sun Cobalt RAQ3.
  It will probably also fix an issue with the just released curl 7.15.4, if compiling
  with remote includes.
  TODO: Update win32 (not urgent)
2006-06-25 12:40:31 +00:00
mark 8953f00c1f -- Changed contact information (unreal32docs.nl.html) 2006-06-23 15:50:44 +00:00
mark 622dd2e02e Added end-comment on line 23, it wasn't there and giving errors 2006-06-22 13:42:42 +00:00
gsf ff8d65b110 Latest Update for 3.2.5 2006-06-21 21:46:42 +00:00
stylus740 c57310b809 corrected little mistake in doc/unreal32docs.de.html 2006-06-20 04:10:41 +00:00
babass 5f22c1acde Correction dans help.fr.conf 2006-06-19 17:26:44 +00:00
autoupdate 2c06dbc9d7 Automatic weekly version update: 200625 2006-06-19 05:00:05 +00:00
aquanight a8079fc9d0 Late commit on 2308. Ugh. 2006-06-18 21:55:20 +00:00
Bram Matthys e7595588d0 testest 2006-06-16 23:37:16 +00:00
Bram Matthys bf66d7d2df test2 2006-06-16 23:15:20 +00:00
Bram Matthys c42713b0de test ;p 2006-06-16 23:04:44 +00:00
Bram Matthys 2b3e89ab01 ** 3.2.5 release ** 2006-06-16 18:12:26 +00:00
Bram Matthys f7a0338e6c - Updated doc/technical/005.txt
- Mass version change
2006-06-15 19:20:39 +00:00
autoupdate 6c1273b311 Automatic weekly version update: 200624 2006-06-12 05:00:05 +00:00
stylus740 fd5d2342e0 unreal32docs.de.html : changes of week 23 2006-06-10 09:04:38 +00:00
angrywolf 21b8a31aec Use the right word for 'update'. 2006-06-08 16:25:22 +00:00
Bram Matthys 73ccaa0cf5 ** 3.2.5-rc3 release ** 2006-06-08 12:17:06 +00:00
Bram Matthys c0d8bf3330 then again, that didn't work 2006-06-08 11:10:28 +00:00
Bram Matthys 9d8854164f This is easier :P 2006-06-08 11:08:46 +00:00
Bram Matthys 4badd8fbd1 - On certain (newer?) FreeBSD's you get "make: Permission denied" after ./Config, but when
you do 'cd ..' and then 'cd -' again, make works just fine. This is going to be the most
  stupid workaround in history... Reported by vonitsanet and others (#0002926).
2006-06-08 10:56:42 +00:00
Bram Matthys c592701f91 - Disable /RESTART if running chrooted since that won't work anyway, reported by kayelem
(#0002956).
2006-06-07 11:31:52 +00:00
Bram Matthys 74c38ca2b5 - Made people with can_override able to change the topic again if not chanop and banned/+m-t,
reported by vonitsanet (#0002952).
2006-06-07 10:40:12 +00:00
Bram Matthys e70055008b reported -> reported and bugfix provided 2006-06-06 23:02:40 +00:00
Bram Matthys 7369f15b40 - Got rid of qline notice that could happen if using services holds (semi-race condition),
reported by tabrisnet (#0002950).
2006-06-06 22:57:07 +00:00
Bram Matthys 0a9cf5420e - Updated release notes, bleh.. I forgot :P 2006-06-06 19:30:06 +00:00
Bram Matthys bc90935c77 ** 3.2.5-rc2 release ** 2006-06-06 18:47:56 +00:00
Bram Matthys 5c53931125 - Removed PATCH5 from module version incompatibility system, so it can be used if we ever
need to update stuff and not enforce modules to recompile.. Might be useful one day ;p
- Updated list of donators
2006-06-06 18:41:56 +00:00
Bram Matthys d430eeb58e - Updated release notes a bit (will be updated more later): backrefs (\1) in regexes are
kinda scary, or at least at the moment.
2006-06-06 11:52:49 +00:00
Bram Matthys c65b46f966 - Fixed problem if c-ares library is already installed system-wide, reported by Trystan.
fix for fix
2006-06-05 23:16:34 +00:00
Bram Matthys d1b7ac4e40 - Fixed problem if c-ares library is already installed system-wide, reported by Trystan. 2006-06-05 23:10:01 +00:00
Bram Matthys 48c6df3558 - Fixed problem with IRCd using old link block settings if using a low connfreq, this made it
for example near-impossible to remove autoconnect for such a server. Reported by mixx941
  (#0002836).
2006-06-05 18:11:18 +00:00
Bram Matthys da44d389ab - Added translated Turkish docs (doc/unreal32docs.tk.html), translated by tt and Timaeus. 2006-06-05 12:59:42 +00:00
autoupdate 738cbdabc6 Automatic weekly version update: 200623 2006-06-05 05:00:04 +00:00
Bram Matthys 1d5742dbcf - Fixed compile (well, configure) problem on FreeBSD if compiling with remote includes
enabled. Reported by psadi (#0002941).
2006-06-03 21:52:59 +00:00
Bram Matthys f584c1f321 2>/dev/null plz 2006-06-03 21:43:52 +00:00
Bram Matthys 5a78c38632 try this ~ 2006-06-03 21:14:16 +00:00
stylus740 f49f6ed4dd unreal32docs.de.html - changes of week 22 2006-06-03 16:06:57 +00:00
Bram Matthys d6de099c2a commentaddedtoprevious: Saves some useless file reads. 2006-06-03 16:01:51 +00:00
Bram Matthys 72ce893ad4 - Made the resolver no longer check /etc/hosts, since that's how it used to be and should be.
and... config.h comment change..
2006-06-03 16:01:24 +00:00
Bram Matthys 329ce537ee it would help if I commit
- #undef STRIPBADWORDS did not work, reported by penna (#0002944).
2006-06-03 15:35:47 +00:00
Bram Matthys 429d6137e6 - #undef STRIPBADWORDS did not work, reported by penna (#0002944). 2006-06-03 15:15:32 +00:00
Bram Matthys abf11b8e66 - Made the "voice needed when channel is +m but -t" actually work, reported by Trystan and
Ron2K (#0002940).
2006-06-01 17:08:12 +00:00
Bram Matthys 41ac3a1907 - Deal with unsupported regexes added by remote servers (possible crash otherwise)
- Fixed crash problem on win32 if TKL times were <0. Obviously it's hard to protect from such
  invalid server traffic, but figured in this case it might be a good idea since *NIX does
  not crash.
- Made a note about possessive quantifiers, they are scary :P.
2006-05-31 23:42:18 +00:00
Bram Matthys b6baf5db33 - Added doc/example.ru.conf, translated by Bock. 2006-05-29 23:57:55 +00:00
angrywolf 91c49f0615 Changes of week 21 2006-05-29 12:43:45 +00:00
angrywolf 9d5b6e5a27 Changes of week 21 + grammar corrections 2006-05-29 12:38:34 +00:00
autoupdate 5d1487756f Automatic weekly version update: 200622 2006-05-29 05:00:04 +00:00
Bram Matthys 71dd4a775c ** 3.2.5-rc1 release ** 2006-05-28 20:57:36 +00:00
Bram Matthys d1626291ef - Win32 makefile/installer updates for new curl/ssl 2006-05-28 20:36:40 +00:00
Bram Matthys ad693eebcb - Fixed crash in /STATS Z (possibly rare), reported by yasinbey (#0002929). 2006-05-28 18:08:48 +00:00
stylus740 b78db0393e Changing of week21 and correcting some spelling mistakes doc/example.de.conf doc/unreal32docs.de.html 2006-05-28 07:52:43 +00:00
bock 6e256359c2 Changes of week 21: doc/unreal32docs.html
Äîáàâëåíà äîêóìåíòàöèÿ ïî "äåéñòâèòåëüíî ïñåâäîíèìàì" ("real alias").
Èñïðàâëåíû íåêîòîðûå íåòî÷íîñòè.
2006-05-27 15:00:25 +00:00
trocotronic 5d0d903809 Cambios semana 21/06 2006-05-27 12:06:13 +00:00
mark 94408ad5f3 -- Changes of week 21
-- Changed my contact information
2006-05-27 08:43:30 +00:00
babass e310ad6fc2 Ajout des 'vrais' alias 2006-05-25 13:19:33 +00:00
Bram Matthys 944f0880a7 - Updated release notes: more modulization and real command alias support.
+- Moved another 2K lines from core to modules, this means 31K lines are now in modules
+  and can be upgraded on the fly.
+- Real Command Aliases: This makes it possible to, for example, alias '/GLINEBOT' to
+  'GLINE <param> 2d Bots are not permitted on this network, etcetc'. For more information,
+  see the docs on the alias block and/or search for "glinebot" in doc/example.conf.
2006-05-25 00:55:18 +00:00
aquanight f46486ebc4 Fix NETINFO parameters. 2006-05-23 18:22:19 +00:00
Bram Matthys 25f0f2a069 - Fixed win32 compile problem cause by timesynch. 2006-05-22 18:30:23 +00:00
Bram Matthys e03b664abf win32 fix attempt 2006-05-22 18:24:11 +00:00
Bram Matthys 6fc5cb169b - Fixed compilation error on FreeBSD and others caused by timesynch, reported by tigra
(#0002921).
2006-05-22 18:15:04 +00:00
Bram Matthys a5dd4e6b77 notexttosend->needmoreparam @ aliases
added glinebot example @ real command aliases / updated description...
- Added 'real' aliases, this are aliases that map to real commands, so you can for example
  map the command '/GLINEBOT <x>' to 'GLINE <x> 2d Bots are not allowed on this server, blabla'.
  See the documentation on the alias block for more information. doc/example.conf contains an
  example as well (search for "glinebot").
2006-05-22 14:01:46 +00:00
autoupdate 206a2c62d6 Automatic weekly version update: 200621 2006-05-22 05:00:04 +00:00
Bram Matthys fdb256ddcb NOTE: WIN32 DOES NOT COMPILE AT THE MOMENT 2006-05-21 23:32:57 +00:00
Bram Matthys 5757c1a50e +extern MODVAR char modebuf[BUFSIZE], parabuf[BUFSIZE]; 2006-05-21 23:26:12 +00:00
Bram Matthys fe4c8b4a83 - Added 'real' aliases, this are aliases that map to real commands, so you can for example
map the command '/BLAH 5' to 'NICK idiot5'. More info in docs on alias block.
- Modulized: badwords system (src/badwords.c is now gone) and StripColors/StripControlCodes
  to m_message, multiple netsynch routines to m_server, send_list to m_list, a certain mode
  routine to m_svsmode, all /MSG IRC.. webtv stuff to src/modules/webtv.c which is compiled
  with m_message.
  This means another ~1500 lines of code are now in modules (and thus can be upgraded on
  the fly), which brings the total of modulized lines at 32K.
2006-05-21 23:16:53 +00:00
bock a0fc4bb5e3 Óñòðàíåíû íåêîòîðûå íåòî÷íîñòè è îøèáêè (íàïðèìåð ïåðåõîäû íà #). 2006-05-21 16:49:25 +00:00
bock c69121e001 Íåáîëüøàÿ êîððåêöèÿ âèäà html, èñïðàâëåíèå îïå÷àòîê è îøèáîê, äîáàâëåíèå
äîêóìåíòàöèè ïî ñèíõðîíèçàöèè âðåìåíè è cgiirc.
2006-05-21 13:49:48 +00:00
Bram Matthys 0625c384a2 - Updated windows compile instructions again.
- Updated release notes
2006-05-21 13:44:11 +00:00
Bram Matthys 8004d10a65 - Fixed some compile warnings for Windows 2006-05-21 00:38:46 +00:00
Bram Matthys d4c9e0af27 - Added MINIMAL time synchronization support. This is enabled by default and will try to
synchronize the IRCd clock (TSOffset) with a few good time servers. It currently only does
  this on-boot, but it will hopefully help a lot of people with most of their time differences.
  I still keep recommending anyone who can to run proper time-synchronization software such as
  ntpd/ntpdate on their servers.
  To disable time synchronization (eg: because you are already running ntp), you can simply
  set set::timesynch::enabled to no.
  The boot timeout for the timeserver response (=causes boot delay) can be configured via
  set::timesynch::timeout and is set to 3 seconds by default (range is 1s-5s), there should
  be no reason to change this.
  The time server can be configured by setting set::timesynch::server, the default is to
  use 3 time servers on 3 continents (US, EU, AU) which should be sufficient for anyone but
  if you got a good one near you you can use that one instead.
  The time protocol we use is (S)NTP v4.
2006-05-21 00:35:45 +00:00
Bram Matthys 0b0c06fa14 - Fixed oper count bug which happened on /mode, this was our fault (can't blame services in
this case ;p). Reported by KnAseN and many others (#0002581).
  There might still be other operator count bugs, but these are triggered by a different bug
  and may or may not be caused by services.
2006-05-19 11:49:35 +00:00
Bram Matthys e7e32993af - Made empty command aliases work (no more "no text to send" error) if the alias finds it ok,
which basically means if it allows .*. If you want to require a parameter, use .+ (or
  anything other in regex that requires at least one character). Suggested and patch provided
  by Nazzy (#0002722).
2006-05-17 12:46:26 +00:00
Bram Matthys 9c71708529 - Allow *lining of literalident@* such as clones@* (but not *clones@*), this is also as
far as we want to go with regards to relaxing "too broad" checking... Just continue to use
  services AKILL for (other) "too broad cases", as many people (correctly) do. Change
  suggested by salama (#0002911).
2006-05-17 12:12:03 +00:00
Bram Matthys 1ed25f94a6 - Fixed implicit declaration compiler warning if compiling for ipv6.
- Fixed some small memory leak on rehash.
- Removed spamfilter-oversized-checking when trying to REMOVE one.. duh.. reported by satmd
  (#00029160).
2006-05-17 11:46:24 +00:00
trocotronic 479e06e01e Revisión 2006-05-15 19:37:17 +00:00
trocotronic a43388c2b6 Revisión 2006-05-15 19:31:40 +00:00
autoupdate 93ed724447 Automatic weekly version update: 200620 2006-05-15 05:00:03 +00:00
aquanight 154bbc0ca3 Just one of those days... 2006-05-13 21:41:42 +00:00
aquanight 1654ced15d Format error + forgot PONG token. D'oh. 2006-05-13 21:14:22 +00:00
aquanight 346b947794 You know, maybe I should update the Update Date? 2006-05-13 21:07:33 +00:00
aquanight a8d421d3cc Added PING and PONG. 2006-05-13 21:06:27 +00:00
autoupdate 1efd22d161 Automatic weekly version update: 200619 2006-05-08 05:00:03 +00:00
Bram Matthys 98cd2c254e - Added error checking to (main) setuid/setgid calls. 2006-05-05 23:02:11 +00:00
Bram Matthys 6b6933c1b9 - (multiple?) IPv6 listen blocks could cause a crash in config parser. Reported by Robby22
(#0002868).
2006-05-04 12:08:59 +00:00
autoupdate 6a2e196acf Automatic weekly version update: 200618 2006-05-01 05:00:04 +00:00
Bram Matthys 6a5677c335 unreal.exe -> debugging symbols 2006-04-29 19:43:43 +00:00
Bram Matthys e679a6760b win32 service bugfix 2006-04-29 19:41:18 +00:00
Bram Matthys abfdc9050d - set::ssl::egd does not require a parameter per-se (bug caused few days ago), reported
by Trocotronic (#0002899).
2006-04-29 16:51:38 +00:00
Bram Matthys bdf968e11a - Made it so me::numeric can be changed (when not linked to any servers) so no server restart
is needed anymore (#0002896).
2006-04-29 15:17:39 +00:00
Bram Matthys acbcd3cdd3 - Fixed bug with chinese-* charsets not getting detected properly by config parser.
Reported and patch provided by Xuefer (#0002891).
2006-04-29 14:58:38 +00:00
Bram Matthys 1c4b21e129 - Updated sendnotice() so it sends a proper notice if the user is in pre-connect stage. 2006-04-29 14:51:37 +00:00
Bram Matthys e265c08729 - Module coders: For cloaking, added a new callback type CALLBACKTYPE_CLOAK_EX (which replaces
CALLBACKTYPE_CLOAK). This passes 'aClient *sptr, char *host' instead of only 'char *host'
  to the cloaking module, which can be useful if you need to cloak on something other than
  IP/host. Suggested by fez (#0002275).
  Module may still provide only CALLBACKTYPE_CLOAK though, in fact this is what the official
  cloaking module does. So no updating of cloaking modules needed.
  A side-effect of this "extra cloaking" callback is that we needed to change make_virthost()
  which now has an extra parameter in front, and another side-effect is that calling the
  CALLBACKTYPE_CLOAK may not work since only *_EX might be available. To my knowledge there
  are very few modules (only 1 I know) that will have a problem due to this, so sounds like
  an affordable tradeoff.
2006-04-29 14:49:36 +00:00
Bram Matthys 40f1ad1cfe - Added compiler version checking to "module binary incompatability"-check. This should fix
some more odd problems from people (eg: people switching from GCC 3.x to 4.x and wondering
  why they are crashing or getting other errors).
** actually, this was already comitted, but forgot to commit Changes :p **
2006-04-29 14:36:58 +00:00
Bram Matthys 46a65d553d - Added compiler version checking to "module binary incompatability"-check. This should fix
some more odd problems from people (eg: people switching from GCC 3.x to 4.x and wondering
  why they are crashing or getting other errors).
2006-04-28 14:08:06 +00:00
Bram Matthys 72b530c149 - Fixed null pointer config parser crash, reported by alkalinex (#0002894). 2006-04-28 13:07:15 +00:00
Bram Matthys f0e14f7847 credit zell for vc2005 thing for his help... -> Also thanks to Zell for his help. 2006-04-25 02:10:22 +00:00
autoupdate de2e10619d Automatic weekly version update: 200617 2006-04-24 05:00:04 +00:00
Bram Matthys cf6da5b6d0 "DEBUGEXTRA=0" -> "#DEBUGEXTRA=1": No idea if it's needed, but it's better I guess... 2006-04-19 12:48:47 +00:00
Bram Matthys dabbe786be - Fixed Microsoft Visual Studio 2005 (8.x) unable to compile, and, after fixing that, causing
a lot of crashes. Both are now fixed. Reported by Zell, Yamake, and others (#2875, #2704).
  Fix provided by Xuefer. This also gets rid of some annoying and useless compile warnings
  as well.
2006-04-19 12:38:47 +00:00
aquanight 76350e1319 Fixed a wrong compile flag info. 2006-04-17 06:16:51 +00:00
aquanight 49ee17db5d Updated protocol information about the new PROTOCTL CLK. 2006-04-17 06:02:10 +00:00
autoupdate fc4d4b8ec5 Automatic weekly version update: 200616 2006-04-17 05:00:05 +00:00
Bram Matthys bfb9b91467 - Fixed set::maxdccallow setting to <=0 still allowing one entry to be set, reported by
RSCruiser (#0002883).
2006-04-16 23:58:01 +00:00
Bram Matthys 8607d950b7 - Made the IRCd calculate the cloaked host only once upon connect, and store (cache) it.
- When checking if a user is banned, we always check the cloakhost too. Previously we could
  not do this if the user had a /VHOST (=a minority of the cases, but still...). In short,
  this is some extra protection to combat ban evasion.
- Performance of is_banned() *slightly* improved (just 1-2 usec, but 7 usec if no bans).
- [Module coders] For extban routines, we now offer a routine extban_is_banned_helper(buf)
  which can be used instead of the ban_realhost/etc static chars stuff, see
  extban_modeq_is_banned for a (real-life) example of how this is used.
- [Services coders!] Added PROTOCTL CLK (requires NICKv2) which adds an extra field in the
  NICK command (when a user connects) right before the infofield (gecos).
  The added field contains the cloaked host, that is: the masked host if +x would have been
  set. This field is ALWAYS sent, regardless of whether the user is actually +x or not.
  Services can then store this field in memory, to know the host of the user if the user
  is set +x (+x-t). This is a (better) alternative to PROTOCTL VHP, with no race conditions,
  and avoids some other VHP problems.
  VHP will stay supported though... so it's not mandatory to switch over.
2006-04-16 23:27:56 +00:00
mark e636820eba Added CGI:IRC sections 2006-04-16 20:59:58 +00:00
Bram Matthys f69fd6bf11 win32 changes for this commit:
- c-ares (currently, a forked off version) enhancements:
  - '/quote dns i' now shows the nameserver settings (which is taken from /etc/resolv.conf
    on *NIX, and from the registry on Windows)
  - We no longer depend on a C++ compiler (was useless c-ares dependency caused by libtool)
  - '/REHASH -dns' now rereads the resolver data from resolv.conf/registry, no IRCd restart
    needed anymore. It's currently kinda experimental however, but I *think* it will work ok.
  Unfortunately the above features required some ugly hacks if curl was enabled, so if you
  use curl (Remote includes), feel free to test on your OS (Linux, but especially FreeBSD
  and the other *NIXes) to see if things still compile (make clean; ./Config && make).
2006-04-11 22:27:35 +00:00
Bram Matthys 8ff913a2db - c-ares (currently, a forked off version) enhancements:
- '/quote dns i' now shows the nameserver settings (which is taken from /etc/resolv.conf
    on *NIX, and from the registry on Windows)
  - We no longer depend on a C++ compiler (was useless c-ares dependency caused by libtool)
  - '/REHASH -dns' now rereads the resolver data from resolv.conf/registry, no IRCd restart
    needed anymore. It's currently kinda experimental however, but I *think* it will work ok.
  Unfortunately the above features required some ugly hacks if curl was enabled, so if you
  use curl (Remote includes), feel free to test on your OS (Linux, but especially FreeBSD
  and the other *NIXes) to see if things still compile (make clean; ./Config && make).
2006-04-11 22:00:01 +00:00
Bram Matthys 4826668565 - Made doc/compiling_win32.txt a bit more ugly (mention that only vstudio 7.x actually works
at this moment).
2006-04-10 18:31:15 +00:00
Bram Matthys 97eff14af2 - Made the windows installer better compress things (SolidCompression=true), suggested
by Trocotronic (#0002877).
2006-04-10 14:06:45 +00:00
autoupdate 37e52ffa2d Automatic weekly version update: 200615 2006-04-10 05:00:04 +00:00
Bram Matthys 4530ee5219 - Made it so if the channel is +m but -t, you need at least voice (+v) to change the topic.
Reported by aquanight (#0002233).
[commit accidently happened earlier btw...]
2006-04-09 20:17:25 +00:00
Bram Matthys e0b116a663 - Hide stats request if requested by an U-lined client. Suggested by vonitsanet (#0002865). 2006-04-09 19:34:36 +00:00
Bram Matthys 3c529c7ee1 - Fixed CHROOTDIR compilation problem, reported by toshio (#0002854).
- Improved CHROOTDIR documentation in include/config.h
- Added error if CHROOTDIR is defined but IRC_UID isn't (in include/config.h).
2006-04-09 19:28:30 +00:00
Bram Matthys 5f6f296cac - Removed some odd code causing a 'my port is' message to appear in (f.e.) syslog, reported
by rsc (#0002853).
2006-04-09 18:40:42 +00:00
Bram Matthys eee6d3c8d1 - Local opers may now use /TRACE (local only), suggested by GSF19 (#0002365). 2006-04-09 18:37:38 +00:00
Bram Matthys ae03d2e4e8 - Added chained SSL certificates support, patch provided by justdave (#0002848). 2006-04-09 16:51:04 +00:00
Bram Matthys e88ee5180b tyoos 2006-04-04 19:54:26 +00:00
Bram Matthys a95f26b1c9 - Added minidump support for crashes to aid debugging a bit. 2006-04-04 19:46:22 +00:00
autoupdate d3fc59b08e Automatic weekly version update: 200614 2006-04-03 05:00:04 +00:00
Bram Matthys 6b982f7aae - Fixed (unimportant) DNS resolver problem if using some LAN domains with digits at end,
reported by Bock (#0002843).
2006-04-02 20:13:23 +00:00
Bram Matthys 17b201793c - Changed default PREFIX_AQ behavior to ON instead of OFF. Since basically all major IRC
clients support it now (mIRC, xchat, epic, eggdrop, Klient, PJIRC, irssi, CGI:IRC, etc).
  It has always been weird that win32 had it ON by default and *NIX OFF, anyway.
  Naturally this change will be mentioned clearly in next release notes.
2006-03-30 23:11:08 +00:00
autoupdate 82a65df46c Automatic weekly version update: 200613 2006-03-27 05:00:04 +00:00
mark 2cdfbe6530 - Added doc/example.nl.conf 2006-03-25 13:38:32 +00:00
bock 5f6e18d6a7 Changes since release 3.2.4 2006-03-21 14:46:32 +00:00
autoupdate f87bee6382 Automatic weekly version update: 200612 2006-03-20 05:00:04 +00:00
stylus740 0fc6e26be4 doc/example.de.conf doc/unreal32docs.de.html
Changes of week 11
2006-03-19 19:42:52 +00:00
mark a62cb8de7a Updated to 1.1.2.144.2.101 2006-03-19 11:27:48 +00:00
angrywolf 8c59e918b7 Changes of week 11 (+ grammar corrections) 2006-03-18 20:21:37 +00:00
Bram Matthys 2134f91309 updated credits (requested by Bock) 2006-03-18 19:25:54 +00:00
angrywolf 6c1df13565 Changes of week 11 2006-03-18 18:09:58 +00:00
trocotronic 66a4fb57d4 Cambios semana 11, 2006 2006-03-18 10:40:38 +00:00
babass 424520d2cf Réécriture de certains passages de example.fr.conf et unrealdocs.fr 2006-03-15 19:50:05 +00:00
Bram Matthys 54c2296dae - CGI:IRC: gzlines, zlines, throttling, and unknown connect floods are now all checked for
clients connecting trough a CGI:IRC gateway that is in cgiirc { }. This might also fix a bug
  where (g)zlines were not applied to CGI:IRC clients, reported by devil (#0002850).
2006-03-14 19:47:08 +00:00
autoupdate edaec98025 Automatic weekly version update: 200611 2006-03-13 05:00:03 +00:00
Bram Matthys 898ff7855d - Partially redid m_message, moved some stuff to a subroutine, etc to avoid duplicate code
- Rephrased/editted part of example.conf and unreal32docs to make it a littttttle bit easier
  for beginners / try to mention the FAQ a bit more explicitly.
2006-03-12 20:56:09 +00:00
autoupdate 9db31d4032 Automatic weekly version update: 200610 2006-03-06 05:00:03 +00:00
Bram Matthys 996381ec47 - Fixed possible netsplit problem (#0002790). 2006-03-05 23:35:48 +00:00
autoupdate 161624723c Automatic weekly version update: 200609 2006-02-27 05:00:04 +00:00
Bram Matthys 3109c877aa - Actually committed src/modules/m_names.c... This tends to help with the compiling process. 2006-02-26 13:29:21 +00:00
Bram Matthys bc0465ebfe - Updated win32 makefile due to m_names modulization, reported by Trocotronic (#0002838). 2006-02-26 13:15:22 +00:00
Bram Matthys 69dc0cfe91 changelog comment.. mirc 5.17 -> 6.17 2006-02-26 13:11:41 +00:00
Bram Matthys fd5c1f778f - Fixed bug in currently unused code, reported by DeadNotBuried (#0002835).
- Modulized NAMES command (can now be upgraded on the fly, if ever needed).
- Added NAMESX support, seeing both mIRC (5.17) and XChat support this. What this does is
  send all rights of all users on the channel in the NAMES reply (eg: @+Syzop if the user is +ov)
  instead of only the highest one (@Syzop in previous example). We only do so if the client
  explicitly requested this via a NAMESX in a PROTOCTL message (eg: 'PROTOCTL NAMESX').
  Note that there is a glitch: since most clients only send the PROTOCTL NAMESX after they
  see NAMESX listed in the 005 announce message this has the effect that if there are
  set::auto-join channels present (where users are automatically joined to by the server) the
  extended NAMES reply will not be sent for those channels, because from the IRC server' point
  of view the join happened before the PROTOCTL and hence it does not know the client wanted
  NAMESX at that point (the result is not catastrophic: the old-style NAMES is sent for those
  channels). Anyway, for all non-autojoin channels this works great. So still worth adding IMO.
  Originally suggested in #0000606.
  Side note: this does not mean we dropped the idea of (also) having a challenge-response
  system for good ;).
2006-02-26 01:06:10 +00:00
stylus740 404a5df740 Changes of week08: doc/unreal32docs.de.html 2006-02-25 08:41:20 +00:00
babass 7a7c5bebaa Refonte totale du support CGI:IRC 2006-02-21 19:17:59 +00:00
autoupdate a52dd18f85 Automatic weekly version update: 200608 2006-02-20 05:00:05 +00:00
angrywolf ae29de76d4 *** empty log message *** 2006-02-19 15:52:43 +00:00
angrywolf bd7520b12d Corrected the translation of the word 'feature', as it was pointed out in a radio show (http://www.modemidok.hu/mohh_3-20_050925.shtml, 2005-09-15) that 'featúra' is a weird, slangy and therefore wrong expression for that hard-to-translate word. 2006-02-19 15:31:31 +00:00
angrywolf 65383f4355 Changes of week 07 2006-02-19 12:55:00 +00:00
trocotronic 7ecabaeae3 Cambios semana 07, 2006 2006-02-18 19:38:30 +00:00
Bram Matthys 5d2dc222f2 BLAH! EHM I REMOVED SOMETHING !!1111 OK!!!? 2006-02-18 13:06:23 +00:00
trocotronic bdc18debdc Cambios semana 07, 2006 2006-02-18 12:51:22 +00:00
stylus740 67ea00419a unreal32docs.de.html - Changes of week 07 2006-02-18 10:13:45 +00:00
Bram Matthys d3fc895063 - Fixed (serious) bug in CGI:IRC code, IP's were often not right, reported by 3rror (#2824). 2006-02-16 20:34:09 +00:00
Bram Matthys aca2a5061d - Added error message if c-ares failed to initialize, might help in case something is buggy
(either with Unreal or the OS/environment).
2006-02-16 17:18:00 +00:00
Bram Matthys 6267898f3e REFIX 2006-02-16 16:33:16 +00:00
Bram Matthys 6623b10a16 socket.h? 2006-02-16 16:30:22 +00:00
Bram Matthys 3e0b0f2e18 - Fixed *BSD compile problem caused by changes of above, reported by 3rror (#0002823). <-- credit 2006-02-16 16:26:11 +00:00
Bram Matthys 13f99d6bc1 inet.h! 2006-02-16 16:24:50 +00:00
Bram Matthys ca069a7c88 'usually cgiirc.conf' -> 'cgiirc.conf' 2006-02-16 15:43:34 +00:00
Bram Matthys 07ccc74036 - Redid whole CGI:IRC support. Configuration is now moved to cgiirc { } blocks.
We now support the webirc ('webirc_password' in CGI:IRC) method, which is kinda superior
  to the older method ('realhost_as_password').
  See the Unreal documentation (section '4.36 - Cgiirc Block') for details on how to configure.
- Changed quoting color in unreal32docs.. looks better now IMO (only English docs updated).
2006-02-16 15:32:16 +00:00
Bram Matthys 3d3c59be40 - Fixed win32 compile problem due to CGI:IRC support, reported by therock247uk (#0002821). <-- changelog edit only 2006-02-15 11:29:08 +00:00
Bram Matthys 22921c1b1f - Fixed win32 compile problem due to CGI:IRC support (?) 2006-02-15 11:26:47 +00:00
Bram Matthys b6c75bf985 rephrased CGI:IRC talk 2006-02-14 17:02:47 +00:00
Bram Matthys a47df87139 slightly rephrased CGI:IRC host spoofing explanation 2006-02-14 17:00:16 +00:00
Bram Matthys 99b6f2ea38 - Added CGI:IRC host spoofing support. This means you can mark specific CGI:IRC gateways as
"trusted" and the IRCd will show the users' _real_ host/ip everywhere on IRC, instead of the
  _CGI:IRC-gateway_ host/ip.
  To do so you must set 'realhost_as_password' to 1 in your cgiirc.conf. And add the
  CGI:IRC gateway(s) you fully trust to set::cgiirc::hosts.
2006-02-14 16:58:43 +00:00
Bram Matthys 612c52c7a3 win32compile w/free --> mention it's untested. 2006-02-14 12:39:39 +00:00
Bram Matthys c8bc986778 - Updated win32 compiling instructions; mention the free MS stuff that can be used to compile
UnrealIRCd.
2006-02-14 12:38:51 +00:00
Bram Matthys 5f8bf556e1 - When set::options-show-connect-notice was enabled the "*** Looking up your hostname..."
message was not being shown (all others were). Reported by fbi (#0002820).
2006-02-14 12:36:21 +00:00
Bram Matthys 41bdfc3b29 - When set::options-show-connect-notice was enabled the "*** Looking up your hostname..."
message was not being shown (all others were). Reported by fbi (#0002820).
2006-02-14 12:19:18 +00:00
autoupdate e65c17e2e1 Automatic weekly version update: 200607 2006-02-13 05:00:03 +00:00
stylus740 8bdd8cb5a5 unreal32docs.de.html Changes of week06 2006-02-11 14:11:22 +00:00
Bram Matthys 2487621092 - Updated autoconf/configure.in again (does not produce different ./configure output) 2006-02-07 13:02:14 +00:00
Bram Matthys 545d087a99 - Updated autoconf/configure.in to make newer autoconf's work (developers only), reported
and patch provided by Xuefer (#0002798). Also rebuilt ./configure from configure.in with
  autoconf 2.59 from my own machine.
2006-02-06 19:35:38 +00:00
autoupdate 9422a9ffd1 Automatic weekly version update: 200606 2006-02-06 05:00:04 +00:00
Bram Matthys decce0d11f clarifications regarding fixed version 2006-02-05 17:43:19 +00:00
Bram Matthys 050846cd02 - Added unreal32docs.ru.html, translated by Bock. 2006-02-05 17:32:58 +00:00
Bram Matthys fa9cf506e7 - The '?' wildcard was completely broken in 3.2.4, reported by tabrisnet (#0002797). 2006-02-05 17:20:36 +00:00
Bram Matthys 5dcddc4404 - Updated example.bg.conf, the one shipped with 3.2.4 had several errors. 2006-02-04 21:17:36 +00:00
Bram Matthys d223da8a26 - Fixed amd64 problem regarding /*LINE always saying 'The time you specified is out of range',
reported and test shell provided by Tauop.
2006-02-04 20:30:02 +00:00
Bram Matthys 356c492c49 ** 3.2.4 release ** 2006-02-03 13:42:55 +00:00
Bram Matthys 8364783817 clarified some release notes text 2006-01-30 23:28:39 +00:00
Bram Matthys 43749211fe ** public 3.2.4-rc3 release ** 2006-01-30 21:52:33 +00:00
Bram Matthys dc19350c70 - Redid glob matching. Escaping is now ripped out for normal bans (as it should be), this
means no longer weird issues with +b *\* etc not banning nicks with \ in it.
  ExtBan ~c/~r get special treatment and will use our match_esc [match with escaping]
  routine, that way you can ban channels such as "#f*ck" via "+b ~c:#f\*ck".
  Fix triggered by bugreport of vonitsanet (#0002782).
2006-01-30 20:14:39 +00:00
autoupdate f21bbdadf5 Automatic weekly version update: 200605 2006-01-30 05:00:04 +00:00
aquanight 731b77f206 Minor formatting "whoops". 2006-01-28 21:54:18 +00:00
aquanight bd6979e842 More #2778 fun ;p . 2006-01-28 21:49:42 +00:00
aquanight a50455c225 Knew I forgot something... fixed JOIN 0 bit now. 2006-01-28 19:49:05 +00:00
aquanight 4b2da6f3d0 Base64 info added. 2006-01-28 19:31:18 +00:00
aquanight ca7f59a473 Most of #2778 (will do b64 table later :P) 2006-01-28 17:11:33 +00:00
stylus740 5298931dd8 Changes of week 04 in unreal32docs.de.html 2006-01-28 08:49:00 +00:00
Bram Matthys 08fbbff0f6 updated contact info 2006-01-27 22:00:35 +00:00
Bram Matthys 8a0ebfdab7 - Added unreal32docs.nl.html, translated/maintained by Mark. 2006-01-27 21:07:55 +00:00
Bram Matthys 0d05df5237 changelog-only text change:
- Updated help.ru.conf (corrections by CS-Help / Bock)
- Updated example.bg.conf (by Peace)
2006-01-27 15:47:48 +00:00
Bram Matthys 762e6c7050 changelog-only textfix 2006-01-27 15:46:18 +00:00
Bram Matthys f8194daa68 - Updated help.ru.conf (corrections by CS-Help) and example.bg.conf (by Peace) 2006-01-27 15:42:58 +00:00
Bram Matthys b30301ecfe - Sometimes if an oper was connected trough SSL and had the junk snomask (+s +j) set it
would cause a crash. Reported by chasingsol (#0002777).
2006-01-27 15:25:31 +00:00
cvs2hg dbd9932635 fixup commit for tag 'unreal3_2_4rc2' 2006-01-26 15:22:47 +00:00
Bram Matthys 6c8c7f36a3 - Fixed localhost crash (if no dns record for 127.0.0.1), reported by Trocotronic (#2773). 2006-01-26 15:22:46 +00:00
angrywolf f6ae3f8844 Changes of week 03 2006-01-26 15:03:18 +00:00
Bram Matthys 8dac61a435 ** public 3.2.4-rc2 release ** 2006-01-26 14:57:24 +00:00
Bram Matthys 6e70facb1e - Fixed(?) bug due to match() rewrite: we now use our old rules with escaping again, due to
the switchover we were accidently using different ones which caused funny kill messages
  like "You were killed by a.b.c (a!a.b.c (SOMENICK[N\A](?) <- d.e.f))." This also broke
  some bans in pre2/rc1. Bug reported by HERZ (#0002772).
2006-01-26 14:02:21 +00:00
Bram Matthys 35ce9949d9 added release candidate header to release notes 2006-01-25 20:40:41 +00:00
Bram Matthys 8b42fad320 ** public 3.2.4-rc1 release ** 2006-01-25 20:25:37 +00:00
Bram Matthys 242f66ed6c +- For users using remote includes w/ssl (https, ftps): the CA certificates are now stored
+  in curl-ca-bundle.crt (shipped with Unreal) which contains most major CA's plus CACert.
2006-01-25 16:26:26 +00:00
Bram Matthys 88da136dda copy curl-ca-bundle.crt 2006-01-25 15:10:50 +00:00
Bram Matthys c916651eb4 - Curl users using https/ftps/etc: UnrealIRCd now ships with a 'curl-ca-bundle.crt' which
contains the (root) certificates of most major Certificate Authorities. It is basically
  the default curl ca-bundle.crt plus cacert's certificates.
  The 'curl-ca-bundle.crt' will be copied to the installation dir if needed.
  It will from now on be used by Unreal for all remote includes (curl) related certificates.
  If you want to use https but don't want to buy a certificate, we suggest you to apply for
  a free certificate at CACert (www.CACert.org). Or, alternatively, add your own certificate
  (PEM encoded) to curl-ca-bundle.crt, see 'SSLCERTS' in the curl package for more info.
2006-01-25 15:08:55 +00:00
Bram Matthys 326a981c0a added... 2006-01-25 13:21:39 +00:00
Bram Matthys 6990888040 curl-ca-bundle.crt 2006-01-25 13:19:23 +00:00
Bram Matthys 4efd5e60f6 curl-ca-bundle.crt stuff 2006-01-25 13:17:14 +00:00
Bram Matthys 3c0309a98d Nazzy = supporter 2006-01-24 16:48:31 +00:00
Bram Matthys 93cb84f67c - Fixed SVS2SNO not always notifying the user of the snomask change, reported by decoder
(#0002767).
2006-01-24 13:29:13 +00:00
aquanight 1113088f1a More 3.2.3 -> 3.2.4 updates 2006-01-24 01:46:02 +00:00
Bram Matthys 1d70016ef8 - Made it so a set::maxbanlength and/or set::maxbans of 0 denies all bans properly, and
fixes the first-ban-can-be-as-long-as-you-want bug, both reported by Trocotronic (#2762).
2006-01-24 00:41:08 +00:00
Bram Matthys ea02baae7b Creditted Voodoohosting 2006-01-24 00:18:02 +00:00
Bram Matthys ddd6b8876f ** internal 3.2.4-pre2 release ** 2006-01-23 23:32:23 +00:00
Bram Matthys a73a12c898 - Removed some old config.h stuff + clarified some text, reported by Jason (#2765, #2766). 2006-01-23 23:20:19 +00:00
Bram Matthys 02227c7696 some changes/release notes text updates 2006-01-23 23:18:46 +00:00
Bram Matthys 5f272b56e7 - Switched over to an older match() routine based on hybrid, this one is a bit less optimized
but is actually understandable and has less bugs. This fixes +b ~c:#c\*t not properly
  matching #c*t, reported by Jason (#0002752). Initial results look good, but this needs
  some good testing ;).
2006-01-23 22:05:50 +00:00
Bram Matthys 950ba7c702 - Made set::maxbanlength also count the "to be set" ban in, otherwise you could exceed the
limit by (max) NICKLEN+USERNAME+HOSTNAME+2, reported by Trocotronic (#0002762).
2006-01-23 20:42:07 +00:00
Bram Matthys b38f4fce10 - set::maxbans / set::maxbanlength were reported as duplicates when they were not, reported
by Jason and trystanscott (#0002753).
- Made it so bans on normal users work with +mu, reported by Nazzy (?).
2006-01-23 20:32:30 +00:00
babass 4bf143993b Préparation pour la version pre-1 2006-01-23 20:27:57 +00:00
autoupdate 00933ef23b Automatic weekly version update: 200604 2006-01-23 05:00:03 +00:00
trocotronic 58872ce250 Cambios semana 03, 2006 2006-01-22 14:52:25 +00:00
aquanight e382a3ac95 3.2.3 -> 3.2.4 2006-01-21 17:01:34 +00:00
stylus740 7e2eb48cea unreal32docs.de.html - Changes of week 03 2006-01-21 09:12:24 +00:00
cvs2hg b0e527ec87 fixup commit for tag 'unreal3_2_4pre1' 2006-01-20 16:28:15 +00:00
Bram Matthys 6feeafa7bc bleh.. version -> pre1 2006-01-20 16:28:14 +00:00
Bram Matthys 66686bd310 ** internal 3.2.4-pre1 release ** 2006-01-20 16:09:18 +00:00
Bram Matthys a38b5ad538 updated... for help.ru.conf 2006-01-20 16:08:46 +00:00
Bram Matthys ea1ecd25ab - Added doc/help.ru.conf, translated by Slyder. 2006-01-20 14:49:52 +00:00
gsf 6499bc6a29 Latest Update 2006-01-20 12:14:38 +00:00
Bram Matthys 379fc66e8b bleh.. changes typo 2006-01-19 21:48:17 +00:00
Bram Matthys 9109d9a8a3 - Update wircd.def (for developers). 2006-01-19 21:47:31 +00:00
Bram Matthys 6f7cc9ba88 - Updated makefile.win32: apparently libcurl.dll is now libcurl_imp.dll (import library)
- Updated unrealinst.iss: made it easier for me to have 2 curl versions, this is so we can
  ship the SSL version of unreal with a curl that supports SSL (https, etc).
- Preperations for pre-1 (version change, etc)
2006-01-19 21:38:11 +00:00
Bram Matthys 53741c5c48 - Updated /CREDITS (forums/mainsite hosting and update of current active supporters). 2006-01-19 00:34:28 +00:00
Bram Matthys 383c2ef7c0 - Removed small comment from docs, which no longer applies (sorry translators ;p). 2006-01-17 22:06:29 +00:00
aquanight 8c8d89a763 Added a little blurb for SVSNICK. 2006-01-17 22:03:48 +00:00
Bram Matthys 055ab13080 - Nick Character System: Silently not advertising danish if using latin1, circumventing link
problems if using latin1.
2006-01-17 22:03:29 +00:00
angrywolf ee918eb576 Changes of week 01 & 02 2006-01-17 03:06:38 +00:00
Bram Matthys 443e9cdcd6 - Empty (but existing) include files no longer cause an error. Reported by w00t (#0002460). 2006-01-16 22:13:13 +00:00
babass deafe60ff4 Ajout du "Nombre de bans maximum" par salon 2006-01-16 22:06:44 +00:00
babass 0ab55be3d0 Nickchar update 2006-01-16 21:48:09 +00:00
Bram Matthys 1b690bb64a changelog text only edit...
- Changed the default maxbanlength from 1K to 2K, which means people can set more bans because
  in pracitce the 60 (maxbans) limit was never met because the maxbanlimit was set so low.
2006-01-16 21:32:24 +00:00
Bram Matthys ceb75b7a7a - Made the "max bans per channel" setting dynamic. This can be changed by setting
set::maxbans in the configfile, note that you probably also want to enlarge set::maxbanlength
  as well (see docs) or else you will hit that limit first.
- Changed the default maxbanlength from 1K to 2K, which in practice will mean people can set
  a lot more bans since in practice the 60 (maxbans) limit was never met because the
  maxbanlimit was set so low.
2006-01-16 21:30:07 +00:00
Bram Matthys c9648673fd - Made it so banned users cannot change the topic, suggested by aquanight and Stealth (#2233). 2006-01-16 21:11:48 +00:00
Bram Matthys 979eacdaf5 - Fixed complex command aliases not working properly, patch from Nazzy (#2722). 2006-01-16 20:53:03 +00:00
Bram Matthys 44375e1dd5 - Little /STATS v tweak: should display 'v' in output, not 'V'. Reported by Robby22 (#2700). 2006-01-16 20:46:48 +00:00
Bram Matthys be917865c3 - If you now use /(G)ZLINE usermask@something instead of /(G)ZLINE *@something you get
an error, since specifying usermask should not be done and is useless, since a (G)ZLINE
  takes place BEFORE ident lookups.
- Did the same for /(G)ZLINE *@hostmask (should be *@ipmask), this already was a warning
  in 3.2.3, and is an error now in 3.2.4.
2006-01-16 20:32:38 +00:00
Bram Matthys f24d4495a2 - Fixed (well, workaround) win32 /RESTART bug that caused it to popup a window instead
of actually restarting the server properly (#0002734).
2006-01-16 19:30:27 +00:00
autoupdate d7969a5272 Automatic weekly version update: 200603 2006-01-16 05:00:04 +00:00
codemastr 34f6b6b058 Updated the list of donators. 2006-01-15 18:33:38 +00:00
Bram Matthys 1c7c7573be - Fixed some more memleaks, thanks to valgrind. 2006-01-15 14:42:16 +00:00
trocotronic bb7f0d9261 cambios semana 2/06 2006-01-14 13:21:37 +00:00
Bram Matthys bc6445b8ad - Crashbug fix for above 2006-01-14 12:39:25 +00:00
stylus740 7eb7de369e Changes of week 02: unreal32docs.de.html 2006-01-14 09:50:39 +00:00
Bram Matthys 4d47acdbfd - Made the charsys mismatch during linking a warning instead of an error (temp. fix,
until a good solution is implemented without false positives).
2006-01-14 00:16:40 +00:00
Bram Matthys ec754b69c1 - Added new charsys languages: belarussian-w1251 and ukrainian-w1251. Patch provided
by Bock (#0002724).
- Fixed memory leak in new resolver.
[ATTEMPT II]
2006-01-14 00:02:02 +00:00
Bram Matthys f56080324a - Added new charsys languages: belarussian-w1251 and ukrainian-w1251. Patch provided
by Bock (#0002724).
- Fixed memory leak in new resolver.
2006-01-14 00:01:42 +00:00
autoupdate 1393a4c509 Automatic weekly version update: 200602 2006-01-09 05:00:04 +00:00
Bram Matthys db1f1aa3f8 - Fixed bug in chinese-* charset implementation that would cause crashes, reported
and patch supplied by Xuefer (#0002744).
2006-01-07 14:01:13 +00:00
Bram Matthys acad82bd3d - Fixed invalid servername in quarantine kill, reported by pinstrate (#0002743). 2006-01-07 12:41:50 +00:00
stylus740 d3b4892bb8 unreal32docs.de.html changes of week 01 2006-01-07 09:41:33 +00:00
babass 97f46cef5c Modification du principe de quarantaine 2006-01-06 22:32:22 +00:00
Bram Matthys 356f52c0f7 slight ./Config text change regarding prefixes 2006-01-06 21:57:48 +00:00
Bram Matthys 364bf0f605 - Fixes for an amd64 crash problem, reported by Peter Laur (OpenBSD.se).
- Redid some net synching code to make it more efficient (#2716).
- Fixed spamfilter crash problem: the action 'viruschan' is now no longer incompatible
  with target 'user'. Reported by Monk (#0002570).
2006-01-06 19:53:41 +00:00
aquanight 4f4fdccf3b Added table of contents. Fixed a few typos. 2006-01-06 19:27:09 +00:00
Bram Matthys 38692b1b4b - Made the link::options::quarantine actually do something... People that get global
oper privileges on quarantined servers will be instantly killed. Bit ugly perhaps, but
  then it actually does what it should (prevent opers on quarantine from getting GLOBAL
  oper privileges). This "fixes" #2510, #2163 and #1968.
[forgot docs commit]
2006-01-04 00:14:30 +00:00
Bram Matthys 054160a74a - Made the link::options::quarantine actually do something... People that get global
oper privileges on quarantined servers will be instantly killed. Bit ugly perhaps, but
  then it actually does what it should (prevent opers on quarantine from getting GLOBAL
  oper privileges). This "fixes" #2510, #2163 and #1968.
2006-01-02 19:44:33 +00:00
autoupdate d7865be511 Automatic weekly version update: 200601 2006-01-02 05:00:03 +00:00
autoupdate ad2b35ac0f Automatic weekly version update: 200552 2005-12-26 05:00:04 +00:00
autoupdate 30f6fc4cb3 Automatic weekly version update: 200550 2005-12-19 00:00:03 +00:00
babass 5d4c820ce3 Changements de la semaine 49 2005-12-13 19:50:32 +00:00
angrywolf 3f01c4d60c Minor fix to previous change 2005-12-13 07:36:57 +00:00
angrywolf 03d541bc7f Doc update (week 49) 2005-12-13 07:31:41 +00:00
autoupdate 3e6ca38667 Automatic weekly version update: 200549 2005-12-12 00:00:04 +00:00
stylus740 30eb0d1460 Changes of week 49 in: doc/unreal32docs.de.html 2005-12-11 08:01:46 +00:00
trocotronic 4cd3df56c0 Cambios semana 49 2005-12-10 12:55:49 +00:00
Bram Matthys 1ee84a198a - Made the "strict aliasing"-warning-disabler use $CC instead of gcc.
- Made ./Config better react to errors (no longer print a "everything is a big success"
  kind of message when in fact everything went wrong).
- Made ./Config (configure) exit on openssl or zlib not found errors, instead of
  silently continueing and then causing trouble later on. Also now printing _a bit_
  more helpful error message.
2005-12-09 21:15:57 +00:00
Bram Matthys fb5c4c7214 let's try this... exiting on zlib/ssl not found error. 2005-12-09 20:29:14 +00:00
Bram Matthys b930f9a2fc - Added option to apply spamfilters to aliases as well (such as /MS, etc). To do so,
you have to put 'spamfilter yes;' in every alias block you want to get filtered.
  This is so you can have for example /MS filtered (due to heavy spam), while keeping
  /NS and /CS unfiltered. Reported by Homer (#0002496).
- The memoserv aliases (/MS and /MEMOSERV) now have spamfiltering enabled by default.
2005-12-09 20:21:37 +00:00
Bram Matthys 704918754c - Reverting "Changed the way we build most of the .so's" feature, this caused m_*.so
to be build incorrectly. So now back at normal compile speed :p.
2005-12-08 23:42:35 +00:00
autoupdate a456bccf38 Automatic weekly version update: 200548 2005-12-05 00:00:03 +00:00
angrywolf 38abf2ef7f Doc update (week 46) 2005-11-23 05:54:04 +00:00
Bram Matthys 893ecd68e9 - [CVS Only] Refixed name<->ip mapping check in new resolver, reported by Darko. 2005-11-22 19:48:47 +00:00
autoupdate b70036ed0f Automatic weekly version update: 200547 2005-11-21 00:00:03 +00:00
trocotronic 8b06a451dd Cambios semana 46 2005-11-19 12:15:56 +00:00
stylus740 a7c177bbe3 Changes of week46 doc/unreal32docs.de.html 2005-11-19 09:23:08 +00:00
Bram Matthys 91ada621e6 - Added proper "not enough parameters" message for /SETNAME and cleaned up some whitespace
in the function, reported by Robby22 (#0002696).
- Fixed set::static-part set to 'no' not working properly. Reported by Robby22 (#0002698).
- Fixed crash in new resolver, reported by firstof9.
2005-11-16 23:58:02 +00:00
babass 9d6801b271 cvs:
Il est maintenant impossible de changer son pseudo pour un pseudo banni
2005-11-16 19:19:09 +00:00
Bram Matthys 7bda74183a - Fixed serious flood of notices to opers if link::options::dnscache was present.
Reported by firstof9.
2005-11-15 22:08:31 +00:00
angrywolf 27a993751a Doc update (week 45) 2005-11-15 20:59:44 +00:00
babass 5f34265ded Il est maintenant impossible de changer son pseudo pour un pseudo banni 2005-11-15 20:41:20 +00:00
autoupdate b7a7d63223 Automatic weekly version update: 200546 2005-11-14 00:00:04 +00:00
Bram Matthys 675ef5b54d - Made it so coadmins can use /ADCHAT (makes sense, since they already *received*
adchats). Reported by RandomNumber (#0002557).
2005-11-13 00:19:28 +00:00
trocotronic b5a8e0245f cambios semana 45 2005-11-12 11:12:35 +00:00
stylus740 fa49ef8cfa Changes of week 45 unreal32docs.de.html 2005-11-12 08:18:47 +00:00
Bram Matthys db0c18dd1e - Removed useless (unused) WATCH code that was still present in the core. 2005-11-11 16:07:34 +00:00
Bram Matthys a7e3aa01b7 - Made it so you no longer can change your nick to a banned one in a channel, suggested
by vonitsanet (#0002388), partial patch provided by Nazzy.
  This option can be turned off by setting set::check-target-nick-bans to 'no'.
2005-11-10 23:39:12 +00:00
Bram Matthys 184dedf72a - Couple of source code cleanups (svsnick, a *line msg, kill, and some useless l_commands
code), suggested by Nazzy and Requi3m.
- Fixed extbans no longer working properly in CVS, fix provided by Nazzy (#0002681).
2005-11-09 14:29:32 +00:00
autoupdate 82e437d366 Automatic weekly version update: 200545 2005-11-07 00:00:04 +00:00
Bram Matthys ee4860fd6c - Fixed OpenBSD crash on /REHASH. Thanks to Peter Laur (OpenBSD.se) for providing us
a shell account to trace this issue down.
2005-11-04 21:45:10 +00:00
autoupdate 32cad72182 Automatic weekly version update: 200544 2005-10-31 00:00:03 +00:00
Bram Matthys d313bec95b Added a check for idiots trying to update from 3.2.3 -> CVS/3.2.4 without running ./Config.. HA! 2005-10-29 01:18:29 +00:00
Bram Matthys e4d352f1f2 - Fixed issue that could cause an alias to be added that would override a command. 2005-10-25 15:28:00 +00:00
autoupdate 541e253598 Automatic weekly version update: 200543 2005-10-24 00:00:04 +00:00
Bram Matthys 4307ca8ade - Fixed crash bug (due to new resolver) if not using 1 general *@* / *@* allow block,
reported by Daniel.
2005-10-18 20:16:05 +00:00
autoupdate c60ea26271 Automatic weekly version update: 200542 2005-10-17 00:00:03 +00:00
Bram Matthys 8b741865c3 - Added 4 UNREAL_VERSION_* macro's that can be useful for 3rd party modules to find out the
unreal version that the user is using. I presume this can be helpful (although nobody ever
  suggested it ;p). The macros (#define's) are:
  UNREAL_VERSION_GENERATION    The generation version number        eg: 3 for 3.2.4
  UNREAL_VERSION_MAJOR         The major version number             eg: 2 for 3.2.4
  UNREAL_VERSION_MINOR         The minor version number             eg: 4 for 3.2.4
                               This can be negative for unstable,
                               alpha and beta versions.
  UNREAL_VERSION_TIME          Year + week of the day (starting     eg: 200541
                               on Monday), this is updated on
                               the CVS server every week.
  The first 3 are for nicely identifiying the version, the 4th can be useful in case
  you want to support CVS and/or want some more control.
2005-10-16 14:40:26 +00:00
Bram Matthys 35a8c00214 - When OPEROVERRIDE_VERIFY is enabled, we now allow opers to still join any channels listed
in set::auto-join or set::oper-auto-join, even if they are +s/+p. Suggested by ultrotter
  (#0002644).
2005-10-15 23:26:57 +00:00
Bram Matthys 607625bf91 - Fixed SSL + new resolver problem, would cause an "interesting flood" of messages / 100% CPU.
Reported by Trocotronic (#0002659).
- Fixed a problem with entries in the hosts file (such as, usually, localhost), this would
  cause an unresolved host and a 30s delay for the user, even though resolving succeeded.
2005-10-11 21:42:06 +00:00
Bram Matthys dc59ba4f5f re-commit include/win32/ares/*.h 2005-10-10 18:09:04 +00:00
Bram Matthys eddb406807 - Removed all old resolver code and switched over to c-ares (+our caching routines).
This should get rid of some annoying untracable (and usually rare) crashbugs in the
  old resolver. Besides that, it makes things look more clean and understandable.
  This should be the fix for the following bugids (all the same issue): #2499, #2551, #2558,
  #2559, #2603, #2642, #2502, #2501, #2618, #2616.
  Feedback and testing is very much welcomed (syzop@unrealircd.com).
2005-10-10 14:32:12 +00:00
angrywolf 6b1e7807ce Doc update (week 39) 2005-10-06 15:56:34 +00:00
babass 75ce361222 changements semaine 39 2005-10-03 17:45:50 +00:00
trocotronic c0f00df2c5 cambios semana 39 2005-10-01 09:08:14 +00:00
stylus740 38c1ad2eb7 Changes of week 39: doc/unreal32docs.de.html 2005-10-01 07:09:01 +00:00
Bram Matthys 62d8a8343f - Some m_restart cleanups, suggested by w00t (#2652). 2005-10-01 01:07:11 +00:00
aquanight 357b1879e9 syzop-undercover-test ;p 2005-09-30 19:56:38 +00:00
Bram Matthys b5fd4a816f - Documented set::channel-command-prefix a bit more, and also changed the default from
"" to "!." which seems much more reasonable / widespread :).
2005-09-28 21:34:40 +00:00
Bram Matthys beb891a24b - Added doc/technical/serverprotocol.html created by aquanight (updates will follow soon). 2005-09-27 16:16:49 +00:00
Bram Matthys dc7554e227 - Changed the way we build most of the .so's: the .o files of individual modules that were
generated (for linkage by commands.so), are now used to generate the .so files of the
  individual modules as well (eg: m_setname.o -link-> m_setname.so). This reduces compile
  time ('make') on my machine by 33%, so it's quite noticable ;).
2005-09-26 22:57:44 +00:00
Bram Matthys f535167cf9 - Added 'warn' target which is basically the same as 'block' except it does not block ;).
It also sends a numeric to the user saying the command has been processed, but a copy
  has been sent to ircops. I feel this is a good idea for privacy reasons (anti-spy),
  though I don't know how users will react to this. If you are using this on your network
  and get users bothering you about it (or before that ;p), it's probably a good idea
  to explain it somewhere on your site or FAQ :).
  Example usage:
   /spamfilter add p warn - Testing_mirc_decode_filter \$decode\(.*\)
  [WARNING] The numeric text is likely to change in the next few weeks (early-cvs-commit).
- If a class block was removed and any other blocks would be referencing the class block
  (such as: allow::class, oper::class, link::class), then this would cause a crash.
  Reported by Mike_ (#0002646).
2005-09-25 21:49:19 +00:00
Bram Matthys e31b23ee8a - Fixed an invalid badword block in the conf causing a crash, reported by Monk (#2639). 2005-09-13 22:43:51 +00:00
Bram Matthys 7ebd0debd7 - Fixed (important?) reference count bug regarding sptr->serv->conf. I don't know what
effects this caused (memory corruption?), but it didn't look good ;).
2005-09-12 16:33:46 +00:00
Bram Matthys 3cb4be0ad6 TYPO! 2005-09-05 18:24:18 +00:00
766 changed files with 203434 additions and 144709 deletions
-20
View File
@@ -1,20 +0,0 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for Unreal3.2.3
This program will help you to compile your IRC server, and ask you
questions regarding the compile-time settings of it during the process.
regarding the setup of it, during the process.
If you have problems regarding the setup & compile, read Unreal.nfo to get
more information on where to get help. Please, before running this setup,
read the documentation in the "doc" folder. Docs are also avail online @
http://www.unrealircd.com/unreal32docs.html
-35
View File
@@ -1,35 +0,0 @@
Configuration rant, by Stskeeps
--------------------------------
Right.. so you think you are done now, you can boot your IRCd and be happy,
and it just works. No, you still got a lot to do. You need to read all of
the documentation through. Would you even have made it this far without
makeconf?.
Well, today, people think they can be 3 months on IRC, and be ready to run
an IRC daemon. I hate to say this, but I don't think so.
If you cannot read an IRC help file, or understand what stuff like "desynch",
"masskill", "k-line", or what "mode # +l 5" means - or you got no experince
in the UNIX field at all, like, you MUST know how to invoke a editor in a
shell, or to unzip a file. If you don't know/can do these things, I suggest
you stop trying to set this up, and go read on some UNIX tutorials, and IRC
tutorials. It takes a LOT of work to run a IRC server good.
I mean. I sit on the #unreal-support support channel each day, and I see
countless questions about stuff that IS IN the documentation. Numerous
people don't even bother to look at the config files (CONFIG_FILE_STOP
problem).
You need to look at the documentation now. You need to see how to "include"
other configuration files. You need to know how to work out how to use
doc/example.settings. I can only tell you, if you ask for support, and it
is for errors that you could solve by reading the first lines of a document,
then you'll be firmly ignored. I'm sorry, we cannot help your laziness.
Anyhow, good luck with setting this up. Hope you understand what I am saying
here. You will learn a lot more reading, than just ignoring what we are
saying.
--Stskeeps
-116
View File
@@ -1,116 +0,0 @@
Unreal3.2.3 Release Notes
==========================
==[ GENERAL INFORMATION ]==
- If you are upgrading on *NIX, make sure you run 'make clean' and './Config'
first before doing 'make'
- The official UnrealIRCd documentation is doc/unreal32docs.html
online version at: http://www.vulnscan.org/UnrealIrcd/unreal32docs.html
FAQ: http://www.vulnscan.org/UnrealIrcd/faq/
Read them before asking for help.
- Report bugs at http://bugs.unrealircd.org/
- When upgrading a network, we assume you are upgrading from the previous
version (3.2.2). If you got a net running with servers that are several
versions behind (eg: 3.2.1) then you might experience (desynch) problems.
Also, if you try to use the new features, some might not work properly
until all your servers are upgraded. It is therefore recommended to
upgrade all servers in a 'short' time span (x day[s], not weeks).
==[ NEW ]==
- Channel mode +I (invex, invite exceptions). Users on this list can join +i channels
without needing an /invite.
- Channel mode +j (jointhrottle). If you set +j X:Y you limit each user (individually)
to X joins per Y seconds to the channel.
- Nick Character System: this allows you to choose which additional characters to
allow in nicknames by language (and codepage). Currently available are:
catalan, dutch, french, german, swiss-german, icelandic, italian, spanish,
swedish, hungarian, polish, romanian, slovak, czech, greek, turkish, russian,
hebrew and chinese. There are also several 'groups' available, for more info see:
http://www.vulnscan.org/UnrealIrcd/unreal32docs.html#feature_nickchars
- *NIX: ./Config -advanced, allows you to choose more options
- tld::botmotd and tld::opermotd
- Using /INVITE with no parameters will a list of channels you are invited to
but have not yet joined.
- set::gline-address, works just like set::kline-address but then for glines.
- Added a basic regex tutorial in unreal32docs.html
- /SAJOIN now supports multiple channels (and '0') again.
- Spamfilter topic support ('t' in spamfilter, 'topic' in conf).
- Added a feature to +b/+e ~c: ~c:[prefix]<#channel>. This can be used if you for
example trust all ops of #leet: mode #x +e ~c:@#leet.
- Various translated documents in doc/: unreal32docs.gr.html (Greek), help.fr.conf
and example.fr.conf (French), help.de.conf & example.de.conf (German), and
example.hu.conf (Hungarian).
==[ CHANGED ]==
- Updated auspice.conf
- The usual doc updates, help.conf, spamfilter.conf, dccallow.conf, etc.
- The config parser got (mostly) recoded. This makes it rehash much faster,
additionally "duplicate item" checking is now available.
- Added a 'B' flag to /who output for bots. Also normal users can now /who +m B.
- Support in configfiles for \\ (= a \)
- set::dns::bind::ip, hardly useful for anyone
- If a user is +b on a channel, and set::allow-userhost-change force-rejoin is
in use, then a part/join is not sent in order to prevent flooding.
- OperOverride INVITE notices are now sent out globally to all +s +e users.
- User mode 'g' is now operonly, it hardly did anything for non-opers.
- Made CIDR no longer accept bitmasks with less than 16bits for /*line commands.
- Modulized a lot of commands (~5000 lines of code).
- Made channel modes +c/+S deal with RGB color codes.
- If no log { } block is present, then a warning will be printed and we will log
by default to ircd.log (errors only).
- If an invalid character is found in a nick then the whole nick is rejected now.
- Changed numeric&text of 'is a Secure Connection' to 'is using a Secure Connection',
client coders are encouraged to add support for this new numeric 671. Until then,
in-window-/whois's will probably be broken.
- A locops with can_override/can_gkline/can_gzline is now automatically converted
to a globop, just like we do with can_globalroute/can_gkline. These privileges
are GLOBAL and therefore are not meant to be granted to locops.
- A warning is now sent to an oper if (s)he tries to use /(G)ZLINE on a host.
(G)ZLINES should be placed on *@ipmasks because they are processed before any
ident and host lookups.
- Made (fast) badwords work better with word boundaries, in practice this means
blocking of words with accents/umlauts/es-zett/etc now works properly.
- Made it so halfops can now -h themselves and chanadmins can -a themselves.
- Made spamfilter 'u' also check nickchanges.
==[ MAJOR BUGS FIXED ]==
- Serious crashbug [this is the same fix that was fixed by the hotfix/3.2.2b]
- TRE mem corruption- & crash-bugs (eg: in backreferences).
==[ MINOR BUGS FIXED ]==
- Made kline/shun/zline/gzline without parameters report the correct stats(flag).
- Made a few more errors send out to all opers, such as link::bind-ip problems.
- A few missing operflags in /STATS O (and SVSO)
- DCC Spamfilter was not always working correctly
- OperOverriding to, for example, a +zi channel did not print the special join notice.
- Servers behind ulines were not properly ulined, one effect that had was causing
an odd view in /MAP if you had flat-map + hide ulines + a juped server in services.
- Made SVSMODE -b/-e remove bans/excepts placed on IPs
- The set::htm::incoming-rate config item was not working correctly
- If a user was +R then remote server notices were accidently also filtered.
- A locop setting MODE #CHAN +O caused a desynch
- Resolver sometimes incorrectly aliased names, causing incorect TTLs etc.
- Fixed SVSNOOP not removing ALL oper status properly.
- 'shun' target was not working for spamfilter and ban version { }
- Removing of shuns placed on IP's did not take effect immediately (had to reconnect).
- Fixed a bug in mode skipping (eg: '+qk a b' if not +q) and error msgs.
- Chanmode +f #t (per-user text limit) now no longer affects halfops.
- Opers w/can_override can now +qa/-qa if they are not netadmins, also affected +L/+u.
Be sure you upgrade all servers to 3.2.3 if using these new abilities, or else you
will get desynch issues.
- Fixed several /SAMODE bugs as well, regarding non-netadmins, being halfop'ed, etc.
- /GZLINE [nick] was placing a *line on *@host instead of *@IP, fixed.
- alias::format in combination with ::type 'command' caused a crash
- zlib upgraded to 1.2.2, curl upgraded to 7.13.1, both fix various issues.
- Win32 installer now also installs doc\technical\*.*
- Desynch issues regarding +s/+p and +c/+S
- /SAMODE causing a 'fishy timestamp' if a cmode with a digit parameter was used.
==[ REMOVED ]==
- NAZIISH_CHBAN_HANDLING (did not work at all)
- The 'oldcloak' cloaking module is now removed, since this old algorithm got broken
8 months ago, nobody should be using it anymore.
==[ ADDITIONAL INFO ]==
* See Changelog for more details
-15
View File
@@ -1,15 +0,0 @@
|-------------------------------------------------------------------------|
| Congratulations on your new SSL self-signed certificate for your IRCd. |
| However, wouldn't it be better that you get your certifcate signed by |
| some kind of Certification Authority (CA), so your users can check that |
| they are really connected to the real server, so they feel secure? |
| |
| There is an initiative at CACert.org - They offer SSL Certificates |
| for use with your IRCd for free, so your users can be sure that they |
| can trust you and your server. |
| |
| To get a free signed certificate please visit http://www.CACert.org |
| _________________________|
| | Press enter to continue |
---------------------------------------------------------------------------
-17
View File
@@ -1,17 +0,0 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _` | | | | | / | | / _` |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Update Script v2.0
What download program do you want to use?
-----------------------------------------
Type "wget" for wget
Type "lynx" for lynx
>
-77
View File
@@ -1,77 +0,0 @@
#
# UnrealIRCd Bug Reporting Script
# Copyright (c) 2001, The UnrealIRCd Team
# All rights reserved
#
# Redistribution and use in source and binary forms, with or without modification, are permitted
# provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this list of conditions
# and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
# and the following disclaimer in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of the The UnrealIRCd Team nor the names of its contributors may be used
# to endorse or promote products derived from this software without specific prior written permission.
# * The source code may not be redistributed for a fee or in closed source
# programs, without expressed oral consent by the UnrealIRCd Team, however
# for operating systems where binary distribution is required, if URL
# is passed with the package to get the full source
# * No warranty is given unless stated so by the The UnrealIRCd Team
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# First we define some nice settings and some nice functions
set print pretty on
# dumplist <linked list> <structure format>
define dumplist
echo Dumping linked list $arg0 in format $arg1\n
set $p = $arg0
while $p
print *($arg1 *) $p
set $p = $p->next
end
end
# dumparray <name> <size>
define dumparray
echo Dumping array $arg0 size $arg1\n
set $p = 0
while $p < $arg1
if $arg0[$p]
print *$arg0[$p]
end
set $p = $p + 1
end
end
echo Full backtrace:\n
echo ---------------\n
echo \n
bt full
echo \n
echo Backup parse() buffer:\n
echo ----------------------\n
echo \n
print backupbuf
echo \n
echo me output:\n
echo ----------------------\n
print me
echo \n
echo IRCstats:\n
echo ----------------------\n
print IRCstats
echo \n
echo Modules:\n
echo ----------------------\n
dumparray Modules 50
quit
-6
View File
@@ -1,6 +0,0 @@
ircdcron/ircd.cron
ircdcron/ircdchk
src/modules/Makefile
src/ssl.rnd
src/win32/devel/StackTrace.lib
src/win32/gnu_regex.lib
+2
View File
@@ -0,0 +1,2 @@
github: [syzop]
patreon: UnrealIRCd
+59
View File
@@ -0,0 +1,59 @@
name: Linux CI
on:
push:
branches: ["unreal60_dev"]
pull_request:
branches: ["unreal60_dev"]
permissions:
contents: read
packages: read
env:
NOSERVICES: 1
RUNTESTFLAGS: "-slightlyfast"
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
compiler:
- { c: gcc, cpp: g++ }
- { c: clang, cpp: clang++ }
env:
CC: ${{ matrix.compiler.c }}
CXX: ${{ matrix.compiler.cpp }}
steps:
- name: Checkout
#uses: actions/checkout@v4
#no, pin to v4.2.2 for security reasons:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
#and we don't need the credentials later..
with:
persist-credentials: false
fetch-depth: 1
- name: Install dependencies
run: |
sudo rm -f /var/lib/man-db/auto-update
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential pkg-config libssl-dev libpcre2-dev libargon2-dev \
libsodium-dev libc-ares-dev libcurl4-openssl-dev libjansson-dev
- name: Install python dependencies
run: |
python -m pip install --break-system-packages pyasyncore pyasynchat
- name: Build
run: extras/build-tests/nix/build
- name: Run tests
run: extras/build-tests/nix/run-tests
+93
View File
@@ -0,0 +1,93 @@
# Ignore configure step
aclocal.m4
autom4te.cache
config.log
conftest.*
config.settings
extras/pcre2*
extras/c-ares*
config.status
extras/ircdcron/ircd.cron
extras/ircdcron/ircdchk
src/modules/chanmodes/Makefile
src/modules/extbans/Makefile
src/modules/usermodes/Makefile
src/modules/Makefile
src/modules/third/Makefile
/Makefile
/src/Makefile
/unrealircd
include/setup.h
# Ignore tags file
tags
# Ignore editor files
*\#*
*~
# Ignore SSL Stuff
server.cert.pem
server.key.pem
server.req.pem
tls.rnd
# Ignores for platform stuff
.DS_Store
[D|d]esktop.ini
# Ignores for build artifacts
*.so
*.o
*.dSYM
*.dylib
src/ircd
src/version.c
src/include
# Ignores for windows stuff
## Binaries
*.dll
*.exe
*.map
*.pdb
*.lib
## Build artifacts
*.obj
*.exp
*.ilk
*.res
##Other
*.tmp
UnrealIRCd.def*
*.nativecodeanalysis.xml
# Ignores for mac stuff
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
src/macosx/build/
DerivedData
src/macosx/pods/
# Doxygen generated files
doc/doxygen/
+4
View File
@@ -0,0 +1,4 @@
.DONE:
@echo "Please use GNU Make (gmake) to build UnrealIRCd"
.DEFAULT:
@echo "Please use GNU Make (gmake) to build UnrealIRCd"
+5
View File
@@ -0,0 +1,5 @@
Help out and make UnrealIRCd a better product!
You can do so by reporting issues, testing, programming, documenting,
translating, helping others, and more.
See https://www.unrealircd.org/docs/Contributing
-861
View File
@@ -1,861 +0,0 @@
/*
* UnrealIRCd Changes File - (C) Carsten Munk 1999-2005 &
* The UnrealIRCd Team
*
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
[Unreal 3.2.1]
- Replaced tre.dll/tre.lib, previous versions caused a crash (eg: if you included
spamfilter.conf).
- Fixed a problem when compiling with GUEST enabled. Reported by dvzion (#0001758)
- Fixed a documentation typo reported by Konc
- Fixed a little problem in ./unreal to move ircd.pid.bak to ircd.pid of starting failed.
Fixed by fez (#0001739)
- Made it so chg* command usage is not logged from U:lines. Reported by diskman1 (#0001718)
- Changed int_to_base64() warning so it has less false positives (#0001797).
- Fixed a bug where if set::ssl::options was empty, a crash could occur. Reported by
spider312 (#0001799)
- Include openssl/md5.h and openssl/ripemd.h if compiled w/SSL, this seems how it
should be done and also makes unreal w/SSL able to compile on OpenBSD (3.5).
- Added module support for Windows!
To module coders:
-Building your module on Windows is almost exactly the same as on *nix
nmake -f makefile.win32 custommodule MODULEFILE=thefile
-Also, as I'm sure most module developers will begin distributing .dll files for their
modules, it is important to note that just like the modules on *nix, the dlls will need
to be recompiled each time a new version of Unreal is released. This is simply due to
the potential for binary incompatibility which at this point can not be avoided.
-Most modules already do this, but it is now a requirement for Windows support. At the
very minimum, the Mod_Test function must have the DLLFUNC specifier in order to work
Unreal will automatically add DLLFUNC to the other functions, but it does not hurt if
you use it for all of them.
NOTE: It is expected that there will probably be a few bugs to work out with this, so
please consider testing it! And module coders, please report any problems you experience!
- Modulized cloaking:
- Currently there are 2 cloaking modules: 'cloak' and 'oldcloak'.
- You MUST load at least 1 of them (like: loadmodule "src/modules/cloak.so";).
- 'oldcloak' is just the <=3.2 cloaking algorithm.
- 'cloak' is the new, recommended, and much more secure cloaking algorithm that uses
md5 internally and requires 3 keys of 5-100 characters (10-20 is fine) consisting of
mixed lowcase (a-z), upcase (A-Z) and digits (0-9) [eg: "AopAS6WQH2Os6hfosh4SFJHs"].
- Note that 'oldcloak' is only ment for use during the upgrade process (it will give
a warning if you use it), you should switch to the much more secure 'cloak' module
as soon as all your servers are upgraded.
- Module coders can code 3rd party cloak modules that use other algorithms or cloak
in a different way (have a look at src/modules/cloak.c).
- spamfilter: Added Bloodhound.Exploit.6 sig
- Compile fixes for win32 modules with ssl/zip/curl
- Changed 'Services operator' in /whois (back) to 'Services administrator', this was
requested by many people and seems to be the best after all (#0001634).
- Local opers can now also join +O (operonly) channels (#0001694).
- Changed the way MSG/NOTICE <prefix>#chan works:
- It now goes to <prefix> and higher, so '/notice +#chan hi!' goes to +vhoaq
- You need at least voice in order to be able to msg/notice +#chan, %#chan or @#chan
- You need at least ops in order to be able to msg/notice &#chan or ~#chan
- Any multi-prefix targets will be converted automatically (eg: ~&@#chan to @#chan).
- internal: use of the CHANOPPFX macro is now deprecated.
All of this was done to make it a bit more 'safe' and userfriendly (#0001812).
- Fixed a remote include bug that would cause unnecessary blocking
- Fixed a /credits typo
- Imported TRE 0.6.7 for win32
- Imported TRE 0.6.7 for *nix and made use of tre_version to report the version of TRE
in use at startup
- Fixed a Win32 module bug
- Added set::spamfilter::virus-help-channel-deny. This allows you to block any
normal joins to the virus-help-channel. This way you could prevent users into
accidental (or tricked) joining of the virus-help-channel and becomming infected.
This feature is disabled by default. Requested by bleepy (#0001811).
- German doc updates (week 20).
- Added optional parameter to SVSJOIN to deal with channel keys. Reported by
DukePyrolator (#0001822).
- Added zlib+SSL version check on boot to make sure the runtime version is the same
as the 'compiled for' (header) version. If they mismatch, UnrealIRCd could crash,
so a big warning is posted if it happends.
- Improved the above: made it work on windows and also added a check for curl.
- spamfilter.conf: Added yet another sig for a site that causes Backdoor.Delf.lq
infection (reported by nexus), also changed LOI trojan and Bloodhound.Exploit.6
action to gline.
- Fixed a win32 module bug that broke strcasecmp/stricmp
- German doc updates (week 21)
- Fixed a permanent modules bug: custom allow/except/ban/deny types were lost
after /rehash. Reported by AngryWolf (#0001837).
- Fixed a problem with NICK collisions not using NICKv2 (#0001773) reported by thilo
- Added NICKIP (#0000605 & #0001376)
- Compile warning cleanups
- Added release notes (no, we won't release 3.2.1 anytime soon.. just updating ;p).
- Added various extra messages to make it a bit more easier for people who are
upgrading (win32 commands.dll, cloaking mod).
- Made win32 ssl<->non-ssl modules binary compatible.
- Added ssl/non-ssl check in Mod_Version on *NIX.
- Added set::options::flat-map: This makes all servers look like they are linked
directly to the server you are on (/map, /links), thus you cannot see which server
is linked to which ("hopcount"). This can make it a bit harder for kiddies to find
any 'weak spots' (which server to attack/[D]DoS). Obviously opers will always
see the real map.
- unreal32docs.html: added flat-map and set::restrict-usermodes "s"; security tips.
- Fixed a compile error regarding AF_MAX (#0001839) reported by Rocko
- Imported TRE 0.6.8 for *nix
- Added NICKIP to doc/technical/protoctl.txt
- Imported TRE 0.6.8 for windows
- Redid the win32 version to use a dynamically linked libc. This solves memory issues
arising from the fact that dlls do not share the same heap as the exe. As a side effect,
however, there is now a dependency on msvcr70d.dll. This DLL does not come with any
versions of Windows except 2003. It also comes with any .NET application and the .NET
framework. Unreal will automatically download th DLL if it is needed. Reported by Bugz
(#0001833)
- Fixed some other win32 crashes due to modulizing: WHOWAS, STATS [some], SVSMOTD.
All caused by missing "MODVAR"s. Reported by Troco (#0001841).
- Fixed SSL problem caused by a fix of 2 days ago. Reported by Fury (#0001842).
- And one more.
- Made socket errors correctly reported under Win32. Thanks to Microsoft for deciding
that having a way to get a socket error string was unnecessary.
- Fixed a NICKIP bug regarding passing along IPs (#0001846) reported by Troco
- And another one, should be fixed now.
- Added snomask +S to the documentation (#0001835) reported by medice.
- Made a bunch of TKL parameters case insensitive (#0001766) reported by medice.
- Made Unreal create the tmp/ dir at startup, rather than configure (#0001824) suggested by
LinDevel
- Added /dns c to clear the DNS cache (#0001852) suggested by samson.
- Seems I forgot to del_Command() SPAMFILTER and TEMPSHUN.
- Made the win32 socket error reporting also handle regular system errors (#0001851)
reported by Troco
- Added a doc/translations.txt which describes the (current) translation process
and requirements a bit.
- Fixed a synch bug, reported by Troco (#0001857).
- Split up the /who oper and user help messages
- Added /who +i (search by IP) and /who +I (show IP), oper only.
- Made it so /who +m doesn't default to /who if a user uses modes they aren't allowed to
use (#0001858) reported by Bugz
- Added a couple donators to /credits
- Module coders: if CmdoverrideAdd() is called for an override that is already in place, it
now sets MODERR_EXISTS as errorcode and returns NULL (previously it added duplicates).
In the past module coders had many issues with PERM mods... you had to use weird tricks,
but now you can (and should!) just override on INIT and on HOOKTYPE_REHASH_COMPLETE.
- Moved register_user declaration to h.h, updated call in m_pingpong.c (due new 'ip' field).
- Usermode +v ('receive dcc send rejection notices') is oper-only now for privacy reasons.
- Added dcc allow { }, which allows one to make exceptions over deny dcc { }.
- Added deny dcc::soft and allow dcc::soft item, if set to 'yes' it allows someone
to explicitly override it per-person via /DCCALLOW (see next).
- Added DCCALLOW system, taken directly from bahamut.
With this system you can block certain (or all) DCC SENDs and then allow the user to
'override' this limit for every user he/she trusts via '/DCCALLOW +User'.
This is an attempt to stop (or at least limit) the spreading of viruses/etc.
See '/DCCALLOW HELP' for more info.
- Added example dccallow.conf which filters everything except some known
'safe types' (jpg, jpeg, png, gif, etc). Note that the purpose of this file
is NOT to get a complete list, rather to limit it to a few 'known safe' entries.
- Added set::maxdccallow: max number of entries of the DCCALLOW list (default: 10).
- Various (non-critical) fixes for dccallow reported by Rocko (incorrect nick in deny msg,
added set::maxdccallow in docs, added bmp/vob/log/ to dccallow.conf).
- Made extbans desynchs a bit more friendly: if a bantype is unknown for the server
it will just accept it if it's from a remote server, and also ops/etc will be allowed
to REMOVE any unknown extbans (but not add new unknown ones).
- Added extended ban type ~n (nickchange ban), if a user matches this (s)he can not
change nicks (eg: +b ~n:*!*@*.aol.com) unless (s)he has voice or higher.
This can be useful as an overall measure for some +m chans (+b ~n:!*@*) or against
specific 'good' people that are just nickflooding due to a wrongly configured script.
- Added set::restrict-extendedbans by which you can disallow normal users to use
any extendedbans ("*") or disallow only certain ones (eg: "qc").
- Made the negative TS message a bit more annoying if time is off more than 10 seconds.
- Minor doc tweakers, reported by AngryWolf (#0001871).
- Win32: Readded /J compiler flag (was accidentally lost in December). This could cause
some weird issues. Reported by Troco (#0001877).
- Fixed compile problem with debugmode + ipv6
- Added CIDR support (#0001296) suggested by many people.
- Imported the latest CIDR functions from Hybrid 7.0.1 (and fixed numerous bugs)
- Implemented CIDR support for ban ip, ban user, allow, except ban/tkl/throttle, and TKL
- Note: This needs testing
- To be able to use /ADDLINE you now need the (new) 'can_addline' operflag (oper::flags),
reason for this is that it's such a powerful/dangerous command.
- Fixed find_qline crashes regarding except tkl 'type qline', reported by Gilou (#0001882).
- Fixed some CIDR bugs causing things not to match.
- Fixed a CIDR bug when compiled without IPv6 support
- Fixed an SVSNICK bug that could lead to duplicate users in very rare circumstances
(#0001874) reported by Jiuka.
- internal: Added GetIP() which we will now use instead of all the Inet_ia2p() stuff
because it's slightly faster (already replaced all of them in src/s_kline.c).
GetIP(acptr) will return the ip for local users and remote users that support NICKIP,
it returns NULL for remote users that are on non-NICKIP servers (or have non-NICKIP
servers along their path).
- internal: tkl_add_line now returns aTKline *
- Added some more hooks:
- HOOKTYPE_TKL_ADD [aClient *cptr, aClient *sptr, aTKline *tk]
- HOOKTYPE_TKL_DEL [aClient *cptr, aClient *sptr, aTKline *tk]
NOTE: 'NULL, NULL, tk' is used for *lines that are removed due to expiring
- HOOKTYPE_LOCAL_KILL [aClient *sptr, aClient *target, char *comment]
- Added support for the ELIST 005 token with MNUCT options
- Made Mod_Version required (this should be no problem since it's done automatically).
- Added HOOKTYPE_LOG [int type, char *timebuf, char *logbuf]
- Updated the release notes.
- Fixed a CIDR bug reported by poisoner (#0001892)
- Documented numerics in use by other IRCds
- Converted several notices to numerics (#0001599) suggested by olene
- Added a donator to /credits
- Fixed '/stats P' negative usercount bug (#0001691).
- Made IPv6 bans work the way they should again, reported by al5001 (#0001876).
- Added new logtype 'spamfilter' to log spamfilter matches
- Updated example.conf: added all new flags we added in the example block, removed
old confusing comment on SEGV logging, config.h: ripped out lPATH since that define
isn't anywhere used and is only confusing.
- Made the new numerics use nicknames (#0001896) suggested by Dukat.
- Fixed a problem where the tmp directory was created in the current directory rather than
the correct path (#0001898) reported by AngryWolf
- Updated HOOKTYPE_TKL_ADD/HOOKTYPE_TKL_DEL to cptr, sptr, tk, parc, parv, else it was
impossible to tell *who* removed a *line. Again, parc/parv are 0/NULL for expires.
- Fixed "quickly-rehashing + autoconnect linkblocks = crash"-bug. This involved fixing
multiple reference count bugs, one related to sptr->serv->conf, and another one related
to sptr->serv->class. Both caused problems when someone did a /rehash when a server
was in the process of connecting (so it might also happen when connfreq was hit and you
did a /rehash). Original bug was reported by sh0 (#0001872).
- spamfilter.conf: Added sig for a mIRC decode worm, submitted by nexus.
- Some release notes updates.
- Changed version to 3.2.1-pre1 and updated protocol # to 2304.
- Updated wircd.def
** internal 3.2.1-pre1 release **
- Various (>15) small fixes for unreal32docs.html, reported by AngryWolf (#0001906).
- Added spanish docs, translated by Trocotronic.
- Fixed serious crashbug due to quick-rehashing bugfix! Basically if you did a /REHASH and
the clientcount for a class reached 0 (due to quits) it would crash.
** internal 3.2.1-pre2 release **
- Added hungarian docs, translated by AngryWolf.
- Fixed a problem with the win32 installer as a result of MSVCR70D.DLL, reported by
aquanight
- Updated /Credits and added a donator.
- Made release notes a bit more scary + some minor english-only doc updates
- Changed version to 3.2.1
- Moved the 3.2 changes to Changes.old
** 3.2.1 release **
- Fixed a win32 module problem where file not found errors would display random characters,
reported by STING
- Fixed a bug where the allow-userhost-change force-rejoin setting was not applied to users
who /oper and receive an oper-host (#0001901) reported by hypnetric.
- Removed the /hs alias pointing to HelpServ for Anope since this conflicts with HostServ
(#0001709) reported by DukePyrolator
- Fixed ban bug: halfops were also prevented from doing nickchanges if banned, plus..
+b ~n:*!*@* also made nickchanges impossible for voiced(&halfop'ed) people (so like half
of the purpose of it was defeated @$#&@#). Reported by Rocko.
- Fixed a bug where an ident in a vhost {} was never sent out to other servers and added
user@host support for set::hosts (#0001834) reported/suggested by bleepy.
- Fixed defizzer module. Reported by Rocko and netrixtardis.
- Removed the * and ^ flags from /whois if PREFIX_AQ is not enabled (requested by many people)
- Updated the /who docs to use correct English
- Added documentation for the /who and /whois flags (#0001881) reported by AngryWolf and Bugz.
- Added src/win32/win32.c for generic win32 helper functions
- Renamed src/win32/win32gui.c to src/win32/gui.c
- Reorganized much of the Windows code
- Fixed a whois bug when PREFIX_AQ is undefined, reported by Shaun
- Moved the RTF win32 code to a seperate file
- More win32 code cleanups
- Added src/win32/editor.c (woops), (#0001932) reported by Troco
- Fixed a problem with /who incorrectly showing the ? flag to opers even when the user should
be visible (#0001888) reported by Bugz and aquanight
- Added SAPART and SVSPART reasons. Note, to fully work it requires all servers to upgrade,
and due to a bug in older versions, it could cause problems if linked to 3.2 or earlier
(#0001859) suggested by Bugz
- Fixed a minor issue where Unreal registered itself as an NT service incorrectly
(#0001950) reported by rocafella
- Possibly fixed a bug that could cause Unreal to eat 100% CPU at startup on Windows.
(#0001635) reported by eggburt. Thanks to STING for helping to debug this.
- Implemented a new modules Makefile written by fez (#0001930).
- Added oper::modes to specify modes to be set for a particular oper (overrides
set::modes-on-oper), suggested by parker182 (#0001899).
- doc/example.conf now simply refers to unreal32docs.html for oper flags (#0001973)
reported by vonitsanet and AngryWolf.
- Fixed crash-on-first-connect if SSL was enabled. This seemed to happen on Mac OS X,
Sun Solaris, Opteron@Linux and perhaps others (#1982, #1984, #2110), reported by bit,
lion and liverbugg.
- Fixed a bug if me::info was set to "".
- Added a missing error message for ModuleGetErrorStr. Additionally added error checking to
ensure NULL is returned when an invalid error code is specified (#0001986) reported by
AngryWolf.
- Applied patch from slePP for bug #0001252: if IPv6 was enabled then in some cases names
were not properly resolved. Original bug reported by kormat.
- Fixed bugs regarding HOOKTYPE_SERVER_QUIT: was sometimes called twice and could cause
crashes due read-after-free. Reported by SET (#0001988).
- Fixed possible crash if /rehash'ing and a servername was just resolving (due to
/connect or autoconnect) and was not present in the cache. Reported and traced by sh0
(#0001976).
- Fixed compile bug at *NIX caused by ModuleGetErrorStr fix.
- Improved doc/compiling_win32.txt a lot: now VC7 only, and has instructions on:
compiling modules and their (binary) compatability, zip links (zlib), ssl (OpenSSL)...
Remote includes (curl and c-ares) instructions still need to be added.
- Made 'Install as a service' unchecked by default, this should help beginners a lot.
- Updated doc/compiling_win32.txt again with curl build instructions.
Also linked to a page with an unreal dev package which contains zlib+ssl+curl
precompiled. This basically means many people no longer need to compile zlib/ssl/curl
anymore themselves (which is a pain to do and takes a lot of time).
- Windows: the 'notice' parameter in the usermsg callback was always 0 due some windows/vc
weirdness, this also affected spamfilter (so any spamfilters added only at notice
and not at msg on windows would not work). Now using the real 'notice' parameter.
- unbroke spamfilter not working for msgs/notices (oops..).
- Made zip/non-zip modules on win32 binary compatible. Since it was nowhere documented
that you should pass the ZIP_LINKS etc options to 'nmake -f makefile.win32 custommodule'
many people didn't do this which caused odd problems when reading certain clientstructs.
Module coders: in the meantime, for 3.2.1 mods, use something like:
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib"
ZLIB_LIB_DIR="c:\dev\zlib\dll32" custommodule MODULEFILE=m_mymodule
For 3.2.2+ these additional parameters will no longer be needed (but wouldn't harm either).
- Some doc/example.conf clarifications, mainly for modules @ win32.
- Made /whois show the user's modes to opers regardless of +e
- Added snomask to the /whois umode output
- Added a patch by rocafella to fix a crash when installing Unreal on Win2003 (#0001949).
- Moved the Command API functions to a separate file.
- Redesigned the 005 token:
- Now renamed to RPL_ISUPPORT.
- Replaced KNOCK and MAP tokens with new CMDS token (see doc/technical/005.txt)
- Implemented most tokens from the isupport draft (STATUSMSG, EXCEPTS, CHANLIMIT,
CHANNELLEN, MAXLIST).
- Removed MAXBANS.
- Made the isupport system dynamic and provide an API for modules to add tokens, may need
testing.
- Added an M_ANNOUNCE flag for CommandAdd to add the command to the CMDS token, may need
testing.
- Fixed some compile warnings.
- Fixed a bug where bans were not matched against IPs in all circumstances (#0002045)
reported by heper.
- Fixed a bug with IP based except tkl {} lines did not validate the ident portion of the mask
(#0002049) reported by Rocko.
- Fixed a problem where a local TKL could be sent to remote servers when it is being changed
(#0002048) reported by AngryWolf.
- Added documentation for link::ciphers to unreal32docs.html (#0002019) reported by Bugz.
- Updated documentation to reflect that cmode +M allows voiced users to talk, not just
registered users (#0002020) reported by crazy.
- Made it so WATCH will not respond with an erroneous reply if the parameter was simply + or -
(#0002017) reported by GouraudShading.
- SVSO now removes +v (#0002023) reported by w00t and aquanight.
- Exported the isupport functions for use in Windows modules.
- Added a new snomask, +o to show oper-up notices (oper only), (#0001965) suggested by
vonitsanet.
- Added a /userip command that works just like ircu's.
- Fixed a typo in the *nix Makefile reported by Troco (#0002059)
- Added french docs, translated by Kolibot & Babass.
- Changed some stuff to use the release version of MS libraries.
- Updated installer for msvcr70.dll
- Fixed prefix bug caused by previous 'fix'/behavior change. Reported by aquanight (#0002067).
- Updated doc/technical/token.txt and resolved 2 token conflicts. SVSWATCH is now Sw and
SVSJOIN is now BX (#0002073) reported by trystanscott.
- Fixed a bug regarding chanmode +mu where the <IRC> messages were not properly relayed
to all servers. Reported by Aenox (#0002079).
- Added salted passwords. Salts are useful because it "protects" against stored-plaintext
attacks (eg: rainbow) and prevents cracking of several passwords at once.
This change means /MKPASSWD will now just generate a different string than before.
Do note however, that the old syntax/encrypted passwords will still work and _will continue
to work_ in the future, for at least the whole 3.2* series.
If you are concerned with security and have some time, then converting your passwords
is probably a good idea... Just in case your configuration file gets stolen one day ;).
- MD5 password encryption is now always available on *NIX, even if SSL is disabled.
- Temporary fix for ircsprintf %lu 1..6 issue.
- Fixed a problem with +u for some clients that have a strict interpretation of the RFC.
- Added TRE 0.7.0, fixes #0001952 reported by Praetorian
- Fixed an (unimportant) cloak typo / made it a few nanosec faster. Reported by Martin Brulisauer.
- Fixed resolver not working in FreeBSD jail, reported & patch provided by urkel (#0002097).
- Added a %n specifier to command aliases that is replaced by the user's nickname,
requested by many people.
- Added the ability for an alias {} to send to a channel (#0001686) requested by JasonTik
- As a result, alias[::format]::nick is now called alias[::format]::target to avoid
confusion. ::nick is maintained for backwards compatibility.
- Fixed a problem where IsupportAdd did not return a value.
- Module coders: Added HOOKTYPE_REMOTE_JOIN, HOOKTYPE_REMOTE_PART, HOOKTYPE_REMOTE_KICK (all
work just the same as the HOOKTYPE_LOCAL_* variants).
- Module coders: HOOKTYPE_REMOTE_CONNECT is now also called during net-merge. You can use
IsSynched(sptr->srvptr) to find out if it's called due to a net merge (0) or a connect (1).
- Added spamfiler 'user' (u) target. This regex is checked against nick!user@host:realname
when a user connects. This makes it easy to ban drones with simple patterns.
For example: '/spamfilter add u gzline 86400 Drone[0-9]+!.+@.+:Drone[0-9]'
would kill any drones that have both a nick and realname with 'Drone' followed by digits.
- If a nick is qlined, the user is now lagged up to limit qline floods a bit (#0001335).
- Made docs a bit more clear on spamfilter targettypes.
- Fix for too broad regex in badword::word causing the IRCd to hang, reported by Flop
(#0002101).
- IPv6: Fixed hostnames in link::hostname not working, reported by Jasmin (#0001990).
- Fixed OOB read/write on user quit (did no harm on Linux&FreeBSD).
- Fixed some tiny memory leaks (~100 bytes) on rehash.
- Updated chinese&japanese GBK nick code, fix supplied by Xuefer (#0002051).
- Added release notes (unfinished).
- Added file: include/macros.h and a new macro, ARRAY_SIZEOF.
- Added the ability to specify multiple types in a tkl except, suggested by Bugz (#0002085).
- Added spamfilter 'away' ('a') target (#0002057).
- Fixed a qline duplicate msg bug I think
- Windows version can now hold ~4096 connections instead of ~1024
- help.conf: clarified MKPASSWD documentation, reported by hypnetric (#0001926).
- Some modeskip handling for future versions
- Fixed serious heap corruption bug if remote users were using qlined nicks, thanks to
Gilou and Trankill for making me able to trace this issue down (#0002032).
- Fixed qline notices again: now gives msg #1 for local qlined-nick attempts, and
another msg in case of a remote client (eg: oper) using a qlined nick.
- Added some future SJOIN skip stuff.
- Updated version to 3.2.2-pre1 already.
** internal 3.2.2-pre1 release **
- Fixed some doc & release notes typos. Reported by Rocko, HiT.
- French doc updates, hopefully synched now.
- (revert of badsyntax fix)
- Forgot to mention away spamfilter target in helpop, reported by Rocko.
- Changed version to 3.2.2
** 3.2.2 release **
- Fixed a typo in the makefile for USERIP
- Made the WATCH command work for WebTV users (#0002121) suggested by White_Magic.
- Some text updates... docs: now 3.2.2-CVS, also got rid of double version to avoid
confusion. credits: fixed typo.
- Added updated auspice.conf from Rocko since previous one was outdated (#0002147).
- Recoded the config parsing code
- The new system is much faster, for the programmers out there, the
old system averaged O(MN) where N was the number of sub-directives for a block, and
M was the number of sub-directives actually contained in the block in the config file.
The new system averages O(N), so the number of sub-directives no longer has a significant
impact on performance.
- Added duplicate config entry detection (#0002126) suggested by brain2
- May have a few bugs (easily fixed)
- Corrected numerous -Wall warnings
- Fixed a bug with /rehash and classes due to the config parser rewrite
- Modified the module symbol dependency code to do more accurate searching for the module
that contains the necessary symbol (#0002123) suggested by Xuefer.
- Unreal will now prepend the pathname to the module and append the appropriate extension
(.so or .dll) to the end)
- The new module system version is "3.2.3" to allow for backwards compatibility
- Documented the default behavior of snomasks when /mode nick +s is used (#0002141) suggested
by Bugz.
- Added "const" to the functions in match.c, (#0002116) suggested by Xuefer.
- Made ./Config better handle command line arguments
- Removed NAZIISH_CHBAN_HANDLING as it didn't do anything
- Added -advanced flag to ./Config to configure advanced options (#0002145) suggested by
Bugz. As a result, some config.h options are now in ./Config -advanced.
- Small fix for above
- Added the ability to specify a botmotd and opermotd in a tld {} (#0000176) suggested by
swissSolaris.
- Fixed crashbug on /rehash due to config rewrite, also made DEBUGMODE working again.
- Removed an excess space from the SAMODE notice when a mode without a parameter was set
(#0002134) reported by Bugz.
- Fixed small memory leak on /rehash (post-3.2.2).
- Fixed botmotd crash due to last change (post-3.2.2).
- Updated the Donation file
- Added a 'B' flag to /who output for bots, and allowed normal users to /who +m B
(#0002096) suggested by White_Magic
- Added support for using \\ in the config file to indicate a \ (#0002178) reported by
TimeFX
- Added documentation for set::options::fail-oper-warn (#0002166) reported by Snake
- Removed an extra ) in the Throttle disconnect message (#0002165) reported by Snake
- Fixed a bug where the "looking up your hostname" message could still be displayed even
if hostname resolving was disabled (#0002161) reported by Xuefer
- Made typing /kline, /shun, /zline, and /gzline correctly report the correct /stats flag,
and these commands now produce the same output as the respective /stats flag they emulate
(#0002149) reported by Snake
- Renamed some calls from report_error() to report_baderror() since otherwise the errors are
hardly ever seen (unless you have +s +j set). For example a bad link::bind-ip only caused
"Couldn't connect to xxxxxx" without any meaningful error message. Additionally, errors
sent to report_baderror() are now logged.
- Win32 installer: Apparently 'install as a service' was still not the default, reported
by fez (#0002191, #0002189).
- Fixed the crule parser to treat - and : as valid 'word' characters rather than separators
(#0002188) reported by diskman1.
- Fixed bug in remote version reply, reported by DukePyrolator (#0002180).
- Added set::dns::bind-ip (rarely ever needed, but might be useful for paranoid people).
- Some unreal32docs->security section improvements.
- Fixed a minor bug in the new config system when displaying link {} and set::hosts errors
(#0002194) reported by AngryWolf.
- Renamed RPL_INVITELIST/RPL_ENDOFINVITELIST to RPL_INVEXLIST/RPL_ENDOFINVEXLIST
- Using /invite with no parameters now lists the channels you are invited to but have not
yet joined (#0002190) suggested by sac.
- Added some missing operflags to /stats O and SVSO (#0002193) reported by Bugz.
- If a user is +b on a channel, and set::allow-userhost-change force-rejoin is used, a
part/join is not sent in order to prevent flooding (#0001933) suggested by Z3l3zT.
- Rewrote some of the previous change to deal with some strange issues found by aquanight
- Introduced two new macros DYN_LOCAL and DYN_FREE to allow creation/deletion of dynamically
sized arrays in the most efficient manner (C99 variable length, alloca, or malloc)
- Changed the +z cannot join message to be a bit more descriptive (#0002148) suggested by cust.
- Added a config.h options, IPV6_COMPRESSED to make Unreal use compressed IPv6 addresses where
possible (#0002107) suggested by Neo-Vortex.
- Fixed alloca warning @ Linux (post-3.2.2)
- Numeric audit: 15 small changes (int/long mismatches etc). This might have fixed some
bugs on architectures where 'long' and 'int' have different sizes (eg: opteron).
- Added a set::gline-address which works like set::kline-address (#0001298) suggested by
Bugz.
- Added missing documentation for spamfilter away target (#0002205) reported by Dukat.
- Fixed dcc spamfilter problem reported by TimeFX and Deadalus (#2177, #2204).
- Fixed Oper Override not giving a 'special join notice' if +z is set along with another mode
(eg: +i/+k), reported by tabrisnet (#0001487).
- help.conf: Fixed a typo, updated *CMDS indexes a bit, reported crazy (#0002208),
added long flags to OFLAGS.
- OperOverride INVITE notices are now also global (if you have the eyes snomask set) (#2212).
- Module coders: New function: sendto_snomask_global().
- Speedup sendto_snomask/sendto_connectnotice/sendto_fconnectnotice code.
- spamfilter.conf: fixed mIRC exploit sigs
- Fixed all spamfilters in configfile not working due to configrewrite (post-3.2.2).
- Module coders: sendto_snomask* now only sends to opers, sendto_snomask_normal* can be used
to send to normal users w/the snomask set.
- Fixed dcc filtering a bit more.
- Made usermode 'g' operonly since it didn't do much, reported by DukePyrolator (#0002024).
- Fixed tkl except { } not working (post-3.2.2).
- Fixed bug where servers behind ulines were not ulined, causing for example juped servers to
show up if flat-map was enabled, reported by GSF19 (#0002230).
- Some doc/ updates: removed: Unreal31_to_32.html & example.settings, updated: Authors &
translations.txt.
- Added a basic regex tutorial to unreal32docs.html (#0000920)
- Updated wircd.def
- Made CIDR no longer accept bitmasks with less than 16bits for /*line commands (#0002240)
reported by aquanight.
- Made the (?) kill message not show IP addresses (#0002227) reported by neothematrix.
- Added some error checking to /sapart (#0002253) suggested by Troco.
- Imported TRE 0.7.2 for Windows
- Imported TRE 0.7.2 for *nix
- Got rid of wma/wmv in dccallow.conf, better to require an explicit select here due to
recent DRM exploits (spyware etc).
- Fixed /restart reasons, reported by SouL-FoRTuNe.
- Partial (incomplete!) fix for alloca warnings during compile (especially w/SSL).
- Fixed serious crashbug that can be triggered by users, released a hotfix and a seperate
version called 3.2.2b (which is just 3.2.2+patch+version change to '3.2.2b',
nothing else).
- Fixed 'make install' error due to example.settings remove.
- Fixed a minor typo in the "now an oper" announcement (#0002284) reported by Rocko.
- Made SVSMODE -b and -e remove bans/excepts placed on IPs (#0002270) reported by Snake.
- Fixed a couple of problems introduced with the ./Config -advanced changed (#0002239).
- Made the win32 installer include the dccallow.conf (#0002269) reported by Ron2K.
- Made the win32 installer work with the latest version of Inno Setup (5.0.6).
- Made /sajoin support multiple channels and using 0 (#0002231) suggested by acemi.
- Fixed a problem where doing ./unreal restart multiple times would not actually restart
the ircd (#0002120) reported by SineSwiper.
- Made it so +f notices are sent to %#chan, not @%#chan (#0002248) reported by aquanight.
- Hopefully fixed the last of the alloca warnings (#0002202) reported by Stoebi.
- Fixed a problem with set::htm::incoming-rate being interpreted incorrectly (#0002266)
reported by tabrisnet.
- Fixed a resolver cache bug regarding CNAME's. Thanks to insiderZ.DE for tracing down
this issue.
- Fixed a bug related to the sajoin recode regarding notices displayed (#0002293) reported
by Troco.
- Reworded a cloak-key error message to make it clearer (#0002297) reported by Bugz.
- Fixed a bug where /whois notices were not sent to users who are +R if the sender is -r
and on a remote server (#0002288) reported by Freadon.
- Made /stats E include tkl except stats as well (#0001524) suggested by Cnils.
- Added an options member to the ExtbanInfo structure. This currently supports one flag,
EXTBOPT_CHSVSMODE. When set, this extban will be removed when an SVSMODE -b [nick] is
executed (#0002222) suggested by Snake.
- Fixed a bug where specifying a reason to SVSPART would cause it to fail (#0002210) reported
by tabrisnet.
- Moved channel mode +G to extcmode to make room for invex.
- Added debug code to trace proto-check bugs in DEBUGMODE [IsToken() etc]
- [Module coders] Added new function: do_cmd(cptr, sptr, cmd, parc, parv) which is an
uniform method to call any other commands. For more info, see description in src/packet.c.
This will be used for any further modulization of commands that need to call other
commands, like NICK (will be done soon).
- Added invite exceptions (+I). This prevents users from needing a /invite in for a +i
channel (#0002044) suggested by medice.
- Updated help.conf's +f documentation for the new syntax
- Fixed some problems with the /stats help and documentation (#0002299) reported by Rocko.
- Corrected the help.conf documentation for /invite (#0002306) reported by White_Magic.
- Fixed a documentation inconsistency with me::numeric (#0002290) reported by Bugz.
- Fixed a problem when compiling Unreal with GUEST support (#0001758) dvzion.
- Fixed a win32 GUI problem where the tray menu's config submenu was not updated when new
files were loaded or files were unloaded (#0002084) reported by Troco.
- Made m_template.c use CommandAdd() and CMD_FUNC()
- Modulized a lot of commands and related subfunctions: NICK (750 lines), USER (200),
MODE (2300), WATCH (250), JOIN (600), PART (250), MOTD (100), OPERMOTD (100),
BOTMOTD (100), LUSERS (100). More will follow soon (probably including more subfunctions
related to existing commands).
- Various (important) fixes to above, also made win32 compile work again.
- And some more.
- Made unreal_copyfile try hardlinking first, if that fails.. it will try to copy
(perhaps this should be a different function?). Anyway, this means less diskspace
is needed (~1.5mb or more), and it also makes it a bit easier for RBAC (#2300).
- Made a new function DoMD5() which is ssl/non-ssl independent. Also made the cloaking
module and the auth functions use it. Hopefully I didn't break anything ;). Suggested
by Bugz (#2298).
- Fixed mode #chan +O set by locop causing a desynch, reported by Unim4trix0 (#0001946).
- Added spamfilter topic support ('t' in /spamfilter, or 'topic' in conf), suggested
by Z3l3zT (#0001929).
- Updated makefile to fix compile problem, reported by vonitsanet (#0002317) [?].
Also made loading m_*.so work again.
- Added unreal_copyfileex() which works just like unreal_copyfile() but has an additional
param to try hardlinks first.
- Win32 crash fixes due to modulizing
- Made channel mode +c block RGB color codes.
- Fixed a bug with channel alias{}'s where using the format syntax caused a crash (#0002323)
reported by Snake.
- Made channel mode +S strip RGB color codes.
- Added channelmode +j (jointhrottle), syntax: /mode #chan +j X:Y, and then it will
throttle the number of joins per-user to X in Y seconds. Idea from Angrywolf (who
wrote a module that did this before). This needs testing :).
It's enabled by default but can be #undef'ed in include/config.h (line 449).
- Added a feature to +b ~c, ~c:[prefix]<#channel>, prefix can be +/%/@/&/~ and will
check if the user is voiced/halfoped/etc.. Especially useful for +e ~c. Idea from
Bugz (#0002198). Obviously all servers need to be upgraded to make this work.
- Fixed SVSNOOP bug where remote servers still thought the opers had privileges, reported
by Zell (#0002185)
- Docs: log { } from 'optional' -> 'recomended'
- If no log { } block is present a warning will be printed out and we will fallback
to a default of logging errors to ircd.log. Suggested by w00t (#0002327).
- Fixed shuns not working as target in spamfilter and ban version { }, reported by Bugz
(#0002223).
- Fixed a bug where shuns placed on IP's did not take effect to currently connected users.
- Fixed a small doc bug regarding shun in spamfilter, reported by KnuX (#0002338).
- Added greek docs, translator: GSF.
- Some help.conf/005.txt updates, reported by Ron2K (#0002354).
- No longer cutoff nick upon illegal character -- just reject the whole nick. The nick is
still cutoff if the nick is too long. Basically this is the same way as Hybrid does it
so it should work ok :).
- Added nick character system. This allows you to choose which (additional) characters
to allow in nicks via set::allowed-nickchars. See unreal32docs.html -> section 3.16
for a list of available languages and more info on how to use it.
Current list: dutch, french, german, italian, spanish, euro-west, chinese-trad,
chinese-simp, chinese-ja, chinese.
If you wonder why your language is not yet included or why a certain mistake is present,
then please understand that we are most likely not experienced (at all) in your language.
If you are a native of your language (or know the language well), and your language
is not included yet or you have some corrections, then contact syzop@vulnscan.org or
report it as a bug on http://bugs.unrealircd.org/
- Added swedish support for nicks, supplied by Tank.
- Various updates to unreal32docs from Ron2K (#0002354).
- set::allowed-nickchars:
- Renamed 'euro-west' to 'latin1' since that's more descriptive/fair ;)
- Added 'hungarian' [supplied by AngryWolf]
- Added category 'latin2': just Hungarian for now
- Added 'catalan' [supplied by Trocotronic]
- Added 'greek' [supplied by GSF]
- Added category 'latin7': alias for 'greek'
- Added category 'gbk': alias for 'chinese'
- Removed 2 unneeded characters from 'catalan'.
- Added NICKCHARS= in PROTOCTL. This indicates which languages are accepted in nicks.
If 2 servers try to link and the allowed nick characters do not fully match, then
the link will be rejected. Note that this will not prevent you from 3.2.2<->3.2.3/CVS
charsets mistakes, but only with linking CVS/3.2.3+ servers. Suggested by Troco (#0002360)
This might need some additional testing, but initial results are positive :).
- NickChars:
- Got rid of 'latin7', tiny mistake ;)
- Removed e' accent from German (used in borrow-words only), reported by Dukat.
- Added 'swiss-german', which is just German without es-zett, reported by Dukat.
- Added 'turkish', supplied by Ayberk Yancatoral.
- Build in some additional checks (especially for Chinese).
- Fixed a bug in chinese character range (affecting 3.2*)
- Relaxed nick character checking from remote servers (rely on NICKCHARS= PROTOCTL
to deal with problems). This is useful to prevent any kills in case we slightly
change the characters that are allowed in a language.
- Added 'polish' (latin2), supplied by k4be.
- Added 'hebrew' (iso8859-8I / windows-1255), supplied by PHANTOm.
- Added French example.fr.conf and help.fr.conf, translated/maintained by Babass.
- Fixed a doc typo, reported by SDF_of_BC.
- NickChars: Updated polish a bit, and added polish-w1250 which is unfortunately more
common than real latin2 (iso-8859-2), supplied by k4be as well.
- NickChars: Added 'icelandic', supplied by Saevar.
- Updated wircd.def
- Fixed a bug where USERIP would say USERHOST in the not-enough-parameters numeric
(#0002366) reported by vonitsanet.
- Fixed a bug causing SVSNICK not to send out a snomask +n notice (#0002359) reported by
Rob_.
- Fixed a bug where SAJOIN would list channels multiple times in the notices (#0002325)
reported by vonitsanet.
- Fixed a bug in mode-skipping (eg '+qk a b' if not +q) and error msgs, reported by brain2
(#0002372).
- Fixed bug where chanmode +f #t (per-user text kick[ban]) was also affecting halfops,
reported by seneces (#0002333).
- Fixed doc bug reported by Dukat (#0002374). Also fixed 2 error msgs related to
the nickchars system printing out incorrect set:: directives.
- spamfilter.conf and dccallow.conf are now also copied upon make install, reported by
TommyTheKid (#0002313).
- Made CHGIDENT, CHGHOST and CHGNAME use more numerics (where possible) (#0002358).
- Fixed halfop trying to set chanmode +G/+T/+j not getting an error message, reported
by Ron2K (#Ron2K).
- Module coders: using extcmode_default_requirechop is now depricated, check src/extcmodes.c
ctrl+f extcmode_default_requirechop for more details (solution: copy+paste & fill in modechar).
- Nicks with ~ are now also not cutoff anymore but rejected like any other illegal char (#0002074).
- Fixed bug in +G where with not-really-matching-words color was needlessly stripped,
reported by SpeedFire (#0002375).
- Changed the 'is a Secure Connection' msg/numeric in /whois from RPL_WHOISSPECIAL to
a slightly changed RPL_WHOISSECURE, namely: ':%s 671 %s %s :is using a Secure connection',
I'm sure some client coders will bitch at this, but the current way is brok in 2 ways:
- RPL_WHOISSPECIAL is meant for 1 line of additional whois info, usually an IRCOp title or
description. Having a dedicated numeric for it allows for client-side interpretations
and/or translations.
- The 'is a Secure Connection' was incorrect English, this has been reported numerous times.
The PRO's of this change are clear, the only CON is that in-window-/whois's are now
likely not to show this line properly in-window but rather in the status window, until client
coders implement this numeric.
If you wonder why we didn't use RPL_USINGSSL, that's because this numeric collides with
RPL_STATSDLINE (which we are already using for >5 years).
If you wonder why we didn't use the RPL_WHOISSECURE numeric as-is (even though I haven't
seen it in use anywhere), then that's because we wanted to minimize display problems in
the transition period and the extra parameter would not be used by us anyway.
- If a locop now has can_override/can_gkline/can_gzline we will print out a warning and
convert it to globops. This is also what we always did for can_globalroute/can_gkill
(well, except the warning). Giving such NETWORK (GLOBAL) privileges to a LOCAL operator
does not make any sense and is therefore no longer allowed.
- NickChars:
- Added 'russian-w1251', supplied by Roman Parkin. There are like 7 standards
in Russia (and like 2-3 main ones), so I didn't dare to call this one 'russian' ;).
- Added 'czech-w1250' and 'slovak-w1250' (both might miss a few characters).
- Added 'windows-1250' group which contains czech-w1250, slovak-w1250, polish-w1250
and hungarian.
- Hungarian characters show both fine in w1250 and latin2, hence hungarian is included
both in 'windows-1250' and 'latin2'.
- Fixed bug: polish was not included in latin2
- Fixed various OperOverride issues:
- Opers with can_override can now +qa/-qa even if they are not netadmins,
and they can also (un)set L/u.
- Fixed several SAMODE bugs, such as not completely working for non-netadmins and
not working if you were halfop'ed, etc.
Bugs reported by pak, aquanight, niphler, Bugz, and more.
If there are still any bugs left, please report them on http://bugs.unrealircd.org/
NOTE: some of these enhancements will produce desynchs if your net is not 100%
on current CVS / Unreal3.2.3 and an oper tries to use these 'new features'.
So use with care on mixed-version nets.
- Fixed /(G)ZLINE [nick] placing the *line on *@host instead of *@IP, reported by
Snake (#0002246).
- A warning is now sent to the oper if (s)he tries to add a (G)ZLINE on *@host.
(G)ZLINES should have an ipmask, not a hostmask, because they are processed BEFORE
any dns lookups are done. Therefore any (g)zlines placed will probably work
(but not necessarily) for like an hour (or whatever TTL), but after that the
(ab)user can get in again so this is usually not what you want ;).
I suppose I'll add a FAQ entry about this.
- Made badwords (+G) now work with hardcoded word boundaries. Also made the fastbadwords
system accept more characters. Basically what this means is that the (fast) badwords
system can now be used to properly block words with accents and things like that, just
the way you block English words. Bug reported by MJ12Helios (#0002311).
- Fixed 'russian-w1251', was not working ok at all.
- Made it so halfops can -h themselves, and chanadmins can -a themselves, reported
by fez (#0001503).
- Made spamfilter 'u' also check nickchanges, reported by Gilou (#0002251).
- Updated doc/technical/token.txt, reported by webfox (#0002373).
- NickChars: Added 'romanian', supplied by crazytoon.
- Added 3.2.3 release notes (expected to be changed later on).
- Updated russian-w1251 (added 2 chars).
- Made the (G)ZLINE warning only happen on add, as it should. Reported by crazy.
- Made some (incorrect) -Wall warnings dissapear.
- Renamed version to 3.2.3-pre1, for Thursday. I'll keep the doc version numbers
at 3.2.2-CVS to avoid confusion with the online semi-realtime docs ;).
** internal 3.2.3-pre1 release **
- Fixed a bug with /invite with no parameters (accidentily broken when +I was added)
(#0002383) reported by trystanscott.
- Fixed a bug where /SAJOIN user 0 caused a desynch, reported by trystanscott (#0002384).
- Merged NICKCHARS= in PROTOCTL for now, since a seperate one is not (yet!) needed,
reported by SolutechUK and psadi (#0002386).
- Fixed various (major) problems that the '-h yourself' caused, reported by Trocotronic
(#0002387).
- Fix for above, also reported by Trocotronic.
** internal 3.2.3-pre2 release **
- Fixed a couple of typos in doc/example.conf (#0002393) reported by AngryWolf.
- Added documentation about channel mode +j (#0002392) suggested by Dukat.
- Added doc/help.de.conf and doc/example.hu.conf
- Fixed +s/+p and +c/+S desynch issue during netmerge, reported by Ron2K (#0002391).
- Fixed a bug where an unknown operflag would cause a crash.
- Windows versions will now be compiled with zlib 1.2.2 and curl 7.13.1.
- Made windows installer also install doc\technical\*
- Removed oldcloak cloaking module, everyone should be using the new cloak one by now.
- Updated release notes (translated docs, zlib, doc\technical, sp/cS desynch).
- Made +g get removed when an oper sets -o (#0002399) reported by Ron2K.
- Made it so the win32 version shows channel modes in /list (#0002397) reported by Ron2K.
- Fixed /SAMODE with no can_override not always working with +G/+j/+T (extcmodes), reported
by Ron2K (#0002398).
- Added doc/example.de.conf
** internal 3.2.3-pre3 release **
- Some spelling fixes in unreal32docs.html, reported by alex323 (#2412).
- Updated the list of donators
- /SAMODE could cause 'fishy timestamp' if digit parameters were used (eg: SAMODE #chan +l 5),
this has now be fixed by sending an explicit TS 0.
- Fixed an important channelmode +j memory corruption bug that would cause crashes, reported
by Bergee (#0002416).
- Some clarifications on /RESTART, remote restarts were well never supported, so the docs
are now updated on that (no code changes).
** internal 3.2.3-pre4 release **
- Corrected small doc typo in unreal32docs, reported by arbiter.
** 3.2.3 release **
- Fixed incorrect badword { } in conf causing a crash (should give an error).
- spamfilter.conf Gaggle worm sigs were broken causing odd things to match, this is because
\\ now needs to be escaped as \\\\ due to the 3.2.3 conf change... didn't think of updating sigs.
- Clarified some nickchar stuff in the docs
- Added 'danish' nickchars, supplied by klaus (#0002436).
- Module coders: Added HOOKTYPE_LOCAL_SPAMFILTER: catches (local) spamfilter matches.
- Fixed chanmode G showing up twice in 005, reported by Snake (#0002466).
- Fixed a TKL crash on incorrect *line, reported by nanookles1234 (#0002524).
- Redid include dependencies in Makefile, this makes things safer because on any .h change it
would force a recompile of all files, but it could mean things will be a bit slower for us
coders unless we tweak it later on.
- Changed whois a bit to print less useless results.
- Added several indicators to the "detect binary incompatible modules"-system such as detecting
of a ziplinks module on non-ziplinks (on windows this is ok however), nospoof module on a
a server without nospoof server, etc. Hopefully this will help some people preventing odd
crashes because they did not recompile or (re)install modules properly.
- Added './unreal backtrace', so far this has only been tested on Linux and FreeBSD.
- Fixed a bug making ./Config not load the previously stored settings on Solaris 10 and
probably other Unixes, reported by lion-o (#0002474).
- Cosmetic bug in set::modes-on-join: now rejecting +I in it. Reported by Ron2K (#0002508).
- Moved all TKL code and register_user to modules (using efuncs), that means 20 functions
and 2000 lines total that can be hotfixed if needed ;). The effort involved in moving all
this sucks a lot though :/. This might need some more testing to make sure it doesn't break
anything.
- Updated support OS list in documentation.
- Fixed various major bugs due to TKL move from 13h ago.
- Fixed 2 problems caused by TKL move: 1 windows crash, 1 problem with loading m_*.so,
reported by Trocotronic (#0002553, #0002554).
- Added some TSCTL logging (this reminds me we need to add new log levels for 3.3 ;p).
- Attempt to fix bug #2431: 3.2.3 broke CNAME delegation for reverse dns. I'm sorry it took
so long, but this stuff just plain sucks...
- Made '?*' work correctly in wildcard matches ('1 or more characters'), reported by
Bugz (#2585).
- Added -fno-strict-aliasing.. this might well be temporary, but we get tons of strict-
aliasing warnings, so it sounds good to disable this type of optimization for now.
- Fixed problem with crash-on-link if compiled with GCC 4, reported by jonneyboy (#2573)
and PHANTOm (#2590).
- IPv6: Added configure check for in6addr_any to fix Fedora Core 4 compile problem,
reported by wheatie80 (#2594).
- Added -Wno-pointer-sign (if available) to get rid of those stupid warnings that are
enabled by default even without -Wall (!?) on GCC4.
- Fixed a bug where allow channel::channel generated a warning when specified multiple times
(#0002427) reported by matridom.
- Fixed ~c not working properly with * and ?'s in channel names.. Now you just need to
escape them like in all bans (eg: to ban #* you need to +b ~c:#\*). As an additional
bonus, real wildcards are now accepted and processed (eg: +b ~c:#*sex*, just don't
forget to specify the #). Reported by PhantasyX (#2605).
- Sidenote on above: ~c:*chan* is not supported (use ~c:#*chan* instead) because it would
cause "hidden bans", therefore it now prints a message (which is useful anyway), but
does accept such remote bans. In 3.2.5 or so we could enable support for it, it's
not that important though... ;)
- Added ifdefs for mass closing of file descriptors on start, can now be disabled by
adding -DNOCLOSEFD as a compile option. Useful for valgrind w/--db-attach=yes, mpatrol,
and some other debugging tools (not useful for anyone normally running a server).
- Fixed a read-after-free: sptr->serv->aconf was freed but not NULL'ed in exit_client,
causing close_connection to read from it (when deciding on doing a quick reconnect).
Could have caused a crash, although nobody ever reported one...
- Removed useless strncpyzt with dest==src.
- Temporary workaround for spamfilter bug: action 'viruschan' in combination with the
'u' (user) target can cause severe problems (crashes, etc). For now, we have disabled
'viruschan' in combination with 'u'. A real fix will require quite some work, sorry.
- Fixed crash with invalid set::network-name (eg: high ascii), reported by galahad
(#0002584), now printing an error instead (the network name is limited by the 005 spec).
- Added Bulgarian example.bg.conf, translated by Peace.
- Spamfilter: regexes (and reasons) are now more limited in size, this is to combat "I set
a spamfilter, but cannot remove it" problems. In practice this means - depending on the
length of your spamfilter reason - regexes will be max ~300 characters.
Spamfilters set in the .conf can be slightly longer (which still causes them to be
truncated in '/stats f', but they don't have to be removed anyway so it's kinda
acceptable if it's really needed). This should fix bug #2083, reported by White_Magic.
- Fixed a bug where an invalid /*line could cause a crash, reported by Gilou (#2629).
- (5 minutes later..) Small update for above, fix was incorrect for ipv6.
- CMDLINE_CONFIG behavior change: command line configuration is now still permitted
if #undef'ed (which is the default) if uid==euid && gid==egid, since it doesn't make
any sense to disable it then and is in fact just plain annoying.
- Added FAKELAG_CONFIGURABLE option in include/config.h, this enables an option called
class::options::nofakelag, which disables "fake lag" for a certain class (that is:
the artificial delay introduced by the ircd to prevent flooding is turned off,
allowing the user to flood at full speed).
IT'S USE IS DISCOURAGED UNLESS YOU REALLY KNOW WHAT YOU ARE DOING.
Sorry, option is not in ./Config -advanced since I don't get autoconf working, but it's
such a scary option that this might as well be a good idea to keep in config.h anyway.
This feature has been suggested for several years (and refused), but the final
suggestion (with implementation specific hints) came from Gilou in bug #0002207.
- Fixed win32 makefile, now compiles fine.
-4844
View File
File diff suppressed because it is too large Load Diff
+727 -653
View File
File diff suppressed because it is too large Load Diff
-32
View File
@@ -1,32 +0,0 @@
UnrealIRCd is a free program, but we do put a lot of time, effort, and money
into creating and maintaining Unreal. To make it easier for user's to show their
appreciation, the Unreal team has decided to accept donations through PayPal. If
you like Unreal, and you'd like to see it continue to exist, please consider making
a donation. We're not asking for anything huge, whatever you can afford is fine.
PayPal Donation Link:
<https://www.paypal.com/xclick/business=donation%40unrealircd.org&
item_name=UnrealIRCd+Donation&no_shipping=1&cn=Comments&tax=0&currency_code=USD>
Or simply send a payment through PayPal to:
donation@unrealircd.org
If you don't want to use PayPal, or you want to donate something other than money
(old computer hardware, etc.), contact Stskeeps (stskeeps@unrealircd.com) and send
your donation to:
UnrealIRCd Project
C/O Carsten Munk
P.O.Box 52
7400 Herning
Denmark
All those who donate at least $10 USD will have their name and/or company listed in /credits.
Additionally, all donators will be listed on the website (regardless of the amount). To make
this possible, please include along with your donation the name (or nickname) you want to
appear in the list as well as the company name (or IRC server) to list.
Thank you for your support,
The UnrealIRCd Team
[ $Id$ ]
-23
View File
@@ -1,23 +0,0 @@
**** Remote Includes ****
Setting up UnrealIRCd to work with remote includes is not very difficult. The first step is to
download c-ares. C-ares can be downloaded from <http://daniel.haxx.se/projects/c-ares/>
download the latest version of c-ares and extract the .tar.gz somewhere.
Now, download the latest version of curl, available at <http://curl.haxx.se/download.html>
again, extract the tar.gz somewhere.
Next, go to the Unreal3.2 directory and run the curlinstall script. You run the script
as follows:
./curlinstall ares_path curl_path
Paths should be complete pathnames. If you extracted c-ares to /home/username/c-ares-1.0.0
and curl to /home/username/curl-7.11.0 then you would run:
./curlinstall /home/username/c-ares-1.0.0 /home/username/curl-7.11.0
Lastly, run ./Config. When asked whether to enable remote includes say "yes" and when asked
for the path curl was installed to include the path that is printed out after ./curlinstall
completes. Then simply run make to compile Unreal as usual and remote includes should work
fine.
+132 -107
View File
@@ -20,7 +20,7 @@
#*/
CC=@CC@
INCLUDEDIR=../include
INCLUDEDIR=@UNRLINCDIR@
NETWORKSDIR=
FROMDOS=/home/cmunk/bin/4dos
@@ -34,11 +34,11 @@ FROMDOS=/home/cmunk/bin/4dos
#
#XCFLAGS=-O -g -export-dynamic
IRCDLIBS=@IRCDLIBS@ @TRELIBS@
IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @JANSSON_LIBS@ @PTHREAD_LIBS@
CRYPTOLIB=@CRYPTOLIB@
OPENSSLINCLUDES=
XCFLAGS=-I@TREINCDIR@ @CFLAGS@
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @JANSSON_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
#
# use the following on MIPS:
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
@@ -89,30 +89,18 @@ XCFLAGS=-I@TREINCDIR@ @CFLAGS@
# you are not defining CMDLINE_CONFIG
IRCDMODE = 711
# [CHANGEME]
# IRCDDIR must be the same as DPATH in include/config.h
#
IRCDDIR=@IRCDDIR@
# Objects that are optional due to optional libraries:
URL=@URL@
# [CHANGEME]
# If you get a link-time error dealing with strtoul, comment out
# this line.
# STRTOUL= strtoul.o
STRTOUL=@STRTOUL@
# [CHANGEME]
# If you get crashes around a specific number of clients, and that client
# load comes close or a little over the system-defined value of FD_SETSIZE,
# override it here and see what happens.
FD_SETSIZE=@FD_SETSIZE@
GEOIP_CLASSIC_OBJECTS=@GEOIP_CLASSIC_OBJECTS@
GEOIP_CLASSIC_LIBS=@GEOIP_CLASSIC_LIBS@
GEOIP_CLASSIC_CFLAGS=@GEOIP_CLASSIC_CFLAGS@
# Where is your openssl binary
OPENSSLPATH=@OPENSSLPATH@
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) @LDFLAGS@ $(FD_SETSIZE)
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS)
XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@
LDFLAGS=$(XLDFLAGS)
SHELL=/bin/sh
SUBDIRS=src
@@ -127,43 +115,39 @@ all: build
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
'INCLUDEDIR=${INCLUDEDIR}' 'IRCDDIR=${IRCDDIR}' \
'INCLUDEDIR=${INCLUDEDIR}' \
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
'SHELL=${SHELL}' \
'CRYPTOLIB=${CRYPTOLIB}' \
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' 'URL=${URL}'
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
'URL=${URL}' \
'GEOIP_CLASSIC_OBJECTS=${GEOIP_CLASSIC_OBJECTS}' \
'GEOIP_CLASSIC_LIBS=${GEOIP_CLASSIC_LIBS}' \
'GEOIP_CLASSIC_CFLAGS=${GEOIP_CLASSIC_CFLAGS}'
custommodule:
cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
@if test -z "${MODULEFILE}"; then echo "Please set MODULEFILE when calling \`\`make custommodule''. For example, \`\`make custommodule MODULEFILE=callerid''." >&2; exit 1; fi
+cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
server:
build:
server: Makefile
build: Makefile
-@if [ ! -f include/setup.h ] ; then \
echo "Hmm...doesn't look like you've run Config..."; \
echo "Doing so now."; \
sh Config; \
fi
@for i in $(SUBDIRS); do \
@+for i in $(SUBDIRS); do \
echo "Building $$i";\
( cd $$i; ${MAKE} ${MAKEARGS} build; ) \
done
@echo ' __________________________________________________ '
@echo '| Compile is now complete. |'
@echo '| You should now read the documentation and learn |'
@echo '| how to configure your IRCd. |'
@echo '| |'
@echo '| If you really like UnrealIRCd, and would like to |'
@echo '| make a donation, please read the Donation file in|'
@echo '| this archive. :) |'
@echo '| |'
@echo '| Thanks for using Unreal IRCd! If you are in need |'
@echo '| for any kind of help regarding the IRCd please |'
@echo '| read the Unreal.nfo file. |'
@echo '|__________________________________________________|'
@echo ''
@echo '* UnrealIRCd compiled successfully'
@echo '* YOU ARE NOT DONE YET! Run "${MAKE} install" to install UnrealIRCd !'
@echo ''
clean:
$(RM) -f *~ \#* core *.orig include/*.orig
@for i in $(SUBDIRS); do \
@+for i in $(SUBDIRS); do \
echo "Cleaning $$i";\
( cd $$i; ${MAKE} ${MAKEARGS} clean; ) \
done
@@ -172,76 +156,117 @@ clean:
fi
cleandir: clean
rm -rf include/networks.h include/setup.h Makefile Settings
makex:
chmod +x Config newnet ircd ircdcron/ircdchk killircd
chmod +x rehash ircdreg
fromdos: cleandir
$(FROMDOS) -dv *
$(FROMDOS) -dv src/*
$(FROMDOS) -dv include/*
$(FROMDOS) -dv doc/*
$(FROMDOS) -dv crypt/*
$(FROMDOS) -dv ircdcron/*
makedist: makex
echo "Stamping.."
stamp: makedist
echo "/* Auto created release stamping */" > include/stamp.h
echo "#define RELEASEID2 \"`date +%s`\"" >> include/stamp.h
echo "#define RELEASESTUFF \"`hostname`\"" >> include/stamp.h
echo "" >> include/stamp.h
rm -rf include/setup.h Makefile Settings
distclean: cleandir
rm -rf extras/*.bak extras/*.tar extras/c-ares
rm -rf extras/c-ares-* extras/tre-*
rm -rf config.log config.settings *.pem ircd.* unrealircd
rm -rf Makefile config.status
depend:
@for i in $(SUBDIRS); do \
@+for i in $(SUBDIRS); do \
echo "Making dependencies in $$i";\
( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \
done
install: all
$(INSTALL) -m 0700 -d $(IRCDDIR)
$(INSTALL) -m 0700 src/ircd $(BINDIR)
$(INSTALL) -m 0700 -d $(IRCDDIR)/networks
$(INSTALL) -m 0600 networks/*.network $(IRCDDIR)/networks
$(INSTALL) -m 0700 networks/makenet $(IRCDDIR)/networks
$(INSTALL) -m 0600 networks/networks.ndx $(IRCDDIR)/networks
$(INSTALL) -m 0700 -d $(IRCDDIR)/doc
$(INSTALL) -m 0600 doc/Authors doc/example.conf doc/coding-guidelines doc/tao.of.irc doc/unreal32docs.html $(IRCDDIR)/doc
$(INSTALL) -m 0700 -d $(IRCDDIR)/aliases
$(INSTALL) -m 0600 aliases/*.conf $(IRCDDIR)/aliases
$(TOUCH) $(IRCDDIR)/unrealircd.conf
chmod 0600 $(IRCDDIR)/unrealircd.conf
$(INSTALL) -m 0600 spamfilter.conf dccallow.conf $(IRCDDIR)
$(INSTALL) -m 0600 badwords.*.conf help.conf LICENSE Donation $(IRCDDIR)
$(INSTALL) -m 0700 unreal $(IRCDDIR)
$(INSTALL) -m 0700 -d $(IRCDDIR)/modules
$(INSTALL) -m 0700 src/modules/*.so $(IRCDDIR)/modules
pem: src/ssl.cnf
@echo "Generating certificate request .. "
$(OPENSSLPATH) req -new \
-config src/ssl.cnf -out server.req.pem \
-keyout server.key.pem -nodes
@echo "Generating self-signed certificate .. "
$(OPENSSLPATH) req -x509 -days 365 -in server.req.pem \
-key server.key.pem -out server.cert.pem
@echo "Generating fingerprint .."
$(OPENSSLPATH) x509 -subject -dates -fingerprint -noout \
-in server.cert.pem
@echo "Setting o-rwx & g-rwx for files... "
chmod o-rwx server.req.pem server.key.pem server.cert.pem
chmod g-rwx server.req.pem server.key.pem server.cert.pem
@echo "Done!. If you want to encrypt the private key, run"
@echo "make encpem"
encpem: server.key.pem
@echo "Encrypting server key .."
$(OPENSSLPATH) rsa -in server.key.pem -out server.key.c.pem -des3
-@if [ -f server.key.c.pem ] ; then \
echo "Replacing unencrypted with encrypted .." ; \
cp server.key.c.pem server.key.pem ; \
rm -f server.key.c.pem ; \
$(INSTALL) -m 0700 -d $(DESTDIR)@BINDIR@
$(INSTALL) -m 0700 src/ircd $(DESTDIR)@BINDIR@/unrealircd
$(INSTALL) -m 0700 src/unrealircdctl $(DESTDIR)@BINDIR@/unrealircdctl
$(INSTALL) -m 0700 extras/unrealircd-upgrade-script $(DESTDIR)@BINDIR@/unrealircd-upgrade-script
$(INSTALL) -m 0700 -d $(DESTDIR)@DOCDIR@
$(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc doc/KEYS doc/RELEASE-NOTES.md $(DESTDIR)@DOCDIR@
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@
$(INSTALL) -m 0600 doc/conf/*.default.conf $(DESTDIR)@CONFDIR@
$(INSTALL) -m 0600 doc/conf/*.optional.conf $(DESTDIR)@CONFDIR@
-@if [ ! -f "$(DESTDIR)@CONFDIR@/modules.sources.list" ] ; then \
$(INSTALL) -m 0600 doc/conf/modules.sources.list $(DESTDIR)@CONFDIR@ ; \
fi
-@if [ ! -f "$(DESTDIR)@CONFDIR@/spamfilter.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/spamfilter.conf $(DESTDIR)@CONFDIR@ ; \
fi
-@extras/patches/patch_spamfilter_conf "$(DESTDIR)@CONFDIR@"
-@if [ ! -f "$(DESTDIR)@CONFDIR@/badwords.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/badwords.conf $(DESTDIR)@CONFDIR@ ; \
fi
-@if [ ! -f "$(DESTDIR)@CONFDIR@/dccallow.conf" ] ; then \
$(INSTALL) -m 0600 doc/conf/dccallow.conf $(DESTDIR)@CONFDIR@ ; \
fi
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/aliases
$(INSTALL) -m 0600 doc/conf/aliases/*.conf $(DESTDIR)@CONFDIR@/aliases
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/help
$(INSTALL) -m 0600 doc/conf/help/*.conf $(DESTDIR)@CONFDIR@/help
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/examples
$(INSTALL) -m 0600 doc/conf/examples/*.conf $(DESTDIR)@CONFDIR@/examples
$(INSTALL) -m 0700 unrealircd $(DESTDIR)@SCRIPTDIR@
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@
@rm -f $(DESTDIR)@MODULESDIR@/*.so 1>/dev/null 2>&1
$(INSTALL) -m 0700 src/modules/*.so $(DESTDIR)@MODULESDIR@
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/usermodes
@rm -f $(DESTDIR)@MODULESDIR@/usermodes/*.so 1>/dev/null 2>&1
$(INSTALL) -m 0700 src/modules/usermodes/*.so $(DESTDIR)@MODULESDIR@/usermodes
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/chanmodes
@rm -f $(DESTDIR)@MODULESDIR@/chanmodes/*.so 1>/dev/null 2>&1
$(INSTALL) -m 0700 src/modules/chanmodes/*.so $(DESTDIR)@MODULESDIR@/chanmodes
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/extbans
@rm -f $(DESTDIR)@MODULESDIR@/extbans/*.so 1>/dev/null 2>&1
$(INSTALL) -m 0700 src/modules/extbans/*.so $(DESTDIR)@MODULESDIR@/extbans
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/rpc
@rm -f $(DESTDIR)@MODULESDIR@/rpc/*.so 1>/dev/null 2>&1
$(INSTALL) -m 0700 src/modules/rpc/*.so $(DESTDIR)@MODULESDIR@/rpc
@#If the conf/ssl directory exists then rename it here to conf/tls
@#and add a symlink for backwards compatibility (so that f.e. certbot
@#doesn't randomly fail after an upgrade to U5).
-@if [ -d "$(DESTDIR)@CONFDIR@/ssl" ] ; then \
mv "$(DESTDIR)@CONFDIR@/ssl" "$(DESTDIR)@CONFDIR@/tls" ; \
ln -s "$(DESTDIR)@CONFDIR@/tls" "$(DESTDIR)@CONFDIR@/ssl" ; \
fi
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/tls
$(INSTALL) -m 0600 doc/conf/tls/curl-ca-bundle.crt $(DESTDIR)@CONFDIR@/tls
$(INSTALL) -m 0600 doc/conf/tls/tls.cnf $(DESTDIR)@CONFDIR@/tls
@# delete modules/cap directory, to avoid confusing with U4 to U5 upgrades:
rm -rf $(DESTDIR)@MODULESDIR@/cap
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/third
@rm -f $(DESTDIR)@MODULESDIR@/third/*.so 1>/dev/null 2>&1
@#This step can fail with zero files, so we ignore exit status:
-$(INSTALL) -m 0700 src/modules/third/*.so $(DESTDIR)@MODULESDIR@/third
$(INSTALL) -m 0700 -d $(DESTDIR)@TMPDIR@
$(INSTALL) -m 0700 -d $(DESTDIR)@CACHEDIR@
$(INSTALL) -m 0700 -d $(DESTDIR)@PERMDATADIR@
$(INSTALL) -m 0700 -d $(DESTDIR)@LOGDIR@
@rm -f $(DESTDIR)@SCRIPTDIR@/source
ln -s @BUILDDIR@ $(DESTDIR)@SCRIPTDIR@/source
@echo ''
@echo '* UnrealIRCd is now installed.'
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
echo '* Leave this directory and run "cd @SCRIPTDIR@" now' ; \
fi
@echo '* Directory layout:'
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
echo ' * Base directory: @SCRIPTDIR@' ; \
fi
@echo ' * Configuration files: @CONFDIR@'
@echo ' * Log files: @LOGDIR@'
@echo ' * Modules: @MODULESDIR@'
@echo '* To start/stop UnrealIRCd run: @SCRIPTDIR@/unrealircd"'
@echo ''
@echo '* Consult the documentation online at:'
@echo ' * https://www.unrealircd.org/docs/'
@echo ' * https://www.unrealircd.org/docs/FAQ'
@echo ''
@echo '* To ensure UnrealIRCd automatically starts on system startup:'
@echo ' * Install a cron job: https://www.unrealircd.org/docs/Cron_job'
@echo ' * Or, use systemd: https://www.unrealircd.org/docs/Using_systemd_with_UnrealIRCd'
@echo ''
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \
fi
pem:
@echo "The command 'make pem' is no longer used to generate the TLS certificate."
@echo "Please run './unrealircd mkcert' instead."
Makefile: config.status Makefile.in
./config.status
+1465
View File
File diff suppressed because it is too large Load Diff
-24
View File
@@ -1,24 +0,0 @@
==[ COMPILING ]==
To build the ircd, run:
./Config
make
If you specified an alternative location during ./Config you also need
to run "make install".
==[ MAKING A CONFIG FILE ]==
If you are new, then you need to create your own configfile:
copy doc/example.conf to your main UnrealIRCd directory and call
it unrealircd.conf .
Then open it in an editor and carefully modify it, consult the docs
(doc/unreal32docs.html, or online: www.unrealircd.com/unreal32docs.html)
for more information about every block/setting.
Common problems are explained in the FAQ, which is located at:
http://www.vulnscan.org/UnrealIrcd/faq/ .
==[ BOOTING YOUR IRCD ]==
Just type: ./unreal start
Note that after booting the errors are usually logged to ircd.log,
so check that file if you have any problems.
Again, check the FAQ (and docs) if you have any boot problems.
+50
View File
@@ -0,0 +1,50 @@
[![Mastodon Follow](https://img.shields.io/mastodon/follow/110769722108208212?domain=https%3A%2F%2Ffosstodon.org&style=social&label=Follow)](https://fosstodon.org/@unrealircd)
[![Twitter Follow](https://img.shields.io/twitter/follow/Unreal_IRCd.svg?style=social&label=Follow)](https://twitter.com/Unreal_IRCd)
[![Linux CI](https://github.com/unrealircd/unrealircd/actions/workflows/linux-ci.yml/badge.svg)](https://github.com/unrealircd/unrealircd/actions/workflows/linux-ci.yml)
## 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%](https://www.ircstats.org/servers). 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](https://www.unrealircd.org/docs/About_UnrealIRCd).
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](https://www.unrealircd.org/docs/UnrealIRCd_releases) on the wiki
## How to get started
Follow the installation guide on the wiki. See:
* [Installing from source for *NIX](https://www.unrealircd.org/docs/Installing_from_source)
* [Installation instructions for Windows](https://www.unrealircd.org/docs/Installing_(Windows))
## 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`](ircs://irc.unrealircd.org:6697/unreal-support)
or ask your question on the [forums](https://forums.unrealircd.org).
## 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.
## Other links ##
* https://www.unrealircd.org - Main website
* https://bugs.unrealircd.org - Bug tracker
* https://fosstodon.org/@unrealircd - Mastodon
* https://twitter.com/Unreal_IRCd - Twitter
+21
View File
@@ -0,0 +1,21 @@
# Security Policy
## Supported Versions
* The latest *stable* release of UnrealIRCd 6
See [UnrealIRCd releases](https://www.unrealircd.org/docs/UnrealIRCd_releases) for information on older versions and End Of Life dates.
## Reporting a Vulnerability
Please report issues on the [bug tracker](https://bugs.unrealircd.org) and in the bug submit form **set the 'View Status' to 'private'**.
Do not report security issues on the forums or in a public IRC channel such as #unreal-support.
If you insist on e-mail then you can use syzop@unrealircd.org or security@unrealircd.org. Again, the bug tracker is preferred.
If you are *unsure* if something is a security issue, then report it at the bug tracker as a 'private' bug anyway. Better safe than sorry.
Do not ask around in public channels or forums.
You should get a response or at least an acknowledgement soon. If you don't hear back within 24 hours, then please try to contact us again.
## Full policy
See https://www.unrealircd.org/docs/Policy:_Handling_of_security_issues for full information.
-70
View File
@@ -1,70 +0,0 @@
===============================================
= UnrealIRCd v3.2.3 =
===============================================
Was brought to you by:
The core team:
==============
* Stskeeps <stskeeps@tspre.org>
* codemastr <codemastr@unrealircd.com>
* Syzop <syzop@unrealircd.org>
* Luke <luke@unrealircd.com>
Contributors
============
* McSkaf <mcskaf@unrealircd.org>
* Zogg <zogg@unrealircd.org>
* NiQuiL <niquil@unrealircd.org>
* assyrian <assyrian@unrealircd.org>
* nighthawk <nighthawk@unrealircd.com>
* DrBin <drbin@unrealircd.com>
* llthangel <llthangel@unrealircd.org>
* Griever <griever@unrealircd.com>
Documentation:
==============
* CKnight^ <cknight@unrealircd.com>
Precenses on the Internet:
* http://www.unrealircd.com
CVS
====
To get anonymous access: (read only)
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
press enter when asked for password
Then, choose the appropiate branch you want:
latest 3.2 release ("stable"):
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
latest 3.2 fixes / development ("unreal3_2_fixes"):
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r unreal3_2_fixes -d Unreal-stable unreal"
To get support
================
Before asking others for help you MUST:
* read the docs (doc/unreal32docs.html or online: www.unrealircd.com/unreal32docs.html)
* check the FAQ (www.vulnscan.org/UnrealIrcd/faq/)
Means of support:
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
[Note: Follow the bots instructions in order to get voice.
Please be patient after asking questions, we may do other stuff
or we're away. Don't repeat questions, we heard you first time,
READ THE TOPIC before you ask anything. We do this on a free
base so we are volunteeringly helping you, but we are humans
like you, and we got to have peace at times as well.]
* Forum: http://forums.unrealircd.com/
* Mailing list: unreal-users@lists.sourceforge.net
(http://lists.sourceforge.net/lists/listinfo/unreal-users also
has links to the archive).
UnrealIRCd Bugtracker (Where to report bugs or make suggestions)
==================================================================
http://bugs.unrealircd.org
Want to discuss, chat, etc?
=============================
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
-18
View File
@@ -1,18 +0,0 @@
/* Anope Aliases */
alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
alias botserv { type services; };
alias bs { target botserv; type services; };
alias hostserv { type services; };
alias hs { target hostserv; type services; };
include "aliases/aliases.conf";
-33
View File
@@ -1,33 +0,0 @@
/* Auspice Aliases */
/* Uncomment this, if you have enabled "MassServ, W and X" in auspice */
# alias massserv { type services; };
# alias ma { target massserv; type services; };
# alias W { type services; };
# alias X { type services; };
/* Uncomment this, if you have enabled "WebServ" in auspice */
# alias webserv { type services; };
# alias ws { target webserv; type services; };
alias agent { type services; };
alias adminserv { type services; };
alias as { target adminserv; type services; };
alias botserv { type services; };
alias bs { target botserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias helpserv { type services; };
alias hs { target helpserv; type services; };
alias hostserv { type services; };
alias ho { target hostserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias rootserv { type services; };
alias rs { target rootserv; type services; };
include "aliases/aliases.conf";
-12
View File
@@ -1,12 +0,0 @@
/* Cygnus Aliases */
alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias rootserv { type services; };
alias rs { target rootserv; type services; };
include "aliases/aliases.conf";
-16
View File
@@ -1,16 +0,0 @@
/* Epona Aliases */
alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
alias hs { target helpserv; type services; };
alias botserv { type services; };
alias bs { target botserv; type services; };
include "aliases/aliases.conf";
-14
View File
@@ -1,14 +0,0 @@
/* Generic Aliases */
alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
alias hs { target helpserv; type services; };
include "aliases/aliases.conf";
-4
View File
@@ -1,4 +0,0 @@
/* Generic StatServ Aliases */
alias statserv { type stats; };
alias ss { target statserv; type stats; };
-17
View File
@@ -1,17 +0,0 @@
/* IRCServices Aliases */
alias nickserv { type services; };
alias ns { target nickserv; type services; };
alias chanserv { type services; };
alias cs { target chanserv; type services; };
alias memoserv { type services; };
alias ms { target memoserv; type services; };
alias operserv { type services; };
alias os { target operserv; type services; };
alias helpserv { type services; };
alias hs { target helpserv; type services; };
alias irciihelp { type services; };
alias statserv { type services; };
alias ss { target statserv; type services; };
include "aliases/aliases.conf";
-6
View File
@@ -1,6 +0,0 @@
/* OperStats Aliases */
alias operserv { type stats; };
alias os { target operserv; type stats; };
alias statserv { type stats; };
alias ss { target statserv; type stats; };
-141
View File
@@ -1,141 +0,0 @@
dnl aclocal.m4 generated automatically by aclocal 1.4-p4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
dnl Macro: unet_CHECK_TYPE_SIZES
dnl
dnl Check the size of several types and define a valid int16_t and int32_t.
dnl
AC_DEFUN(unreal_CHECK_TYPE_SIZES,
[dnl Check type sizes
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
if test "$ac_cv_sizeof_int" = 2 ; then
AC_CHECK_TYPE(int16_t, int)
AC_CHECK_TYPE(u_int16_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 2 ; then
AC_CHECK_TYPE(int16_t, short)
AC_CHECK_TYPE(u_int16_t, unsigned short)
else
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
fi
if test "$ac_cv_sizeof_int" = 4 ; then
AC_CHECK_TYPE(int32_t, int)
AC_CHECK_TYPE(u_int32_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 4 ; then
AC_CHECK_TYPE(int32_t, short)
AC_CHECK_TYPE(u_int32_t, unsigned short)
elif test "$ac_cv_sizeof_long" = 4 ; then
AC_CHECK_TYPE(int32_t, long)
AC_CHECK_TYPE(u_int32_t, unsigned long)
else
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
fi
AC_CHECK_SIZEOF(rlim_t)
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
AC_DEFINE(LONG_LONG_RLIM_T)
fi
])
AC_DEFUN(CHECK_LIBCURL,
[
AC_ARG_ENABLE(libcurl,
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
[
CURLCFLAG=`$enableval/bin/curl-config --cflags`
CFLAGS="$CFLAGS $CURLCFLAG -DUSE_LIBCURL"
CURLLIBS=`$enableval/bin/curl-config --libs`
dnl curl-7.11.0 and up will include the ares info, older versions do not
if test "x`echo $CURLLIBS |grep .*ares.*`" = x ; then
CURLLIBS="$CURLLIBS -lares"
fi
IRCDLIBS="$IRCDLIBS $CURLLIBS"
URL="url.o"
AC_SUBST(URL)
])
])
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
AC_DEFUN([CHECK_SSL],
[
AC_ARG_ENABLE(ssl,
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr])],
[
AC_MSG_CHECKING(for openssl)
for dir in $enableval /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do
ssldir="$dir"
if test -f "$dir/include/openssl/ssl.h"; then
AC_MSG_RESULT(found in $ssldir/include/openssl)
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break;
fi
if test -f "$dir/include/ssl.h"; then
AC_MSG_RESULT(found in $ssldir/include)
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break
fi
done
if test x_$found_ssl != x_yes; then
AC_MSG_RESULT(not found)
AC_WARN(disabling ssl support)
else
CRYPTOLIB="-lssl -lcrypto";
if test ! "$ssldir" = "/usr" ; then
LDFLAGS="$LDFLAGS -L$ssldir/lib";
fi
AC_DEFINE(USE_SSL)
fi
],
)
])
AC_DEFUN([CHECK_ZLIB],
[
AC_ARG_ENABLE(ziplinks,
[AC_HELP_STRING([--enable-ziplinks],[enable ziplinks will check /usr/local /usr /usr/pkg])],
[
AC_MSG_CHECKING(for zlib)
for dir in $enableval /usr/local /usr /usr/pkg; do
zlibdir="$dir"
if test -f "$dir/include/zlib.h"; then
AC_MSG_RESULT(found in $zlibdir)
found_zlib="yes";
if test "$zlibdir" = "/usr" ; then
CFLAGS="$CFLAGS -DZIP_LINKS";
else
CFLAGS="$CFLAGS -I$zlibdir/include -DZIP_LINKS";
fi
break;
fi
done
if test x_$found_zlib != x_yes; then
AC_MSG_RESULT(not found)
AC_WARN(disabling ziplink support)
else
IRCDLIBS="$IRCDLIBS -lz";
if test "$zlibdir" != "/usr" ; then
LDFLAGS="$LDFLAGS -L$zlibdir/lib";
fi
HAVE_ZLIB=yes
fi
AC_SUBST(HAVE_ZLIB)
],
)
])
+1748
View File
File diff suppressed because it is too large Load Diff
+1884
View File
File diff suppressed because it is too large Load Diff
-461
View File
@@ -1,461 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/ircd.c)
if test $# = 0; then
echo "You might want to run ./Config or provide some parameters to this script."
echo "./configure --help for information about this script"
exit 0
fi
AC_CONFIG_HEADER(include/setup.h)
AC_PROG_CC
if test "$ac_cv_prog_gcc" = "yes"; then
CFLAGS="$CFLAGS -funsigned-char"
AC_CACHE_CHECK(if gcc has a working -pipe, ac_cv_pipe, [
save_cflags="$CFLAGS"
CFLAGS="$CFLAGS -pipe"
AC_TRY_COMPILE(,, ac_cv_pipe="yes", ac_cv_pipe="no")
CFLAGS="$save_cflags"
])
if test "$ac_cv_pipe" = "yes"; then
CFLAGS="-pipe $CFLAGS"
fi
fi
dnl (the gcc flag detection trick is taken from xemacs/Vin Shelton)
dnl UnrealIRCd might not be strict-aliasing safe at this time
case "`gcc -v --help 2>&1`" in
*-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
esac
dnl Pointer signedness warnings are really a pain and 99.9% of the time
dnl they are of absolutely no use whatsoever. IMO the person who decided
dnl to enable this without -Wall should be shot on sight.
case "`gcc -v --help 2>&1`" in
*-Wpointer-sign* ) CFLAGS="$CFLAGS -Wno-pointer-sign" ;;
esac
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(TOUCH,touch)
AC_PATH_PROG(OPENSSLPATH,openssl)
AC_PATH_PROG(INSTALL,install)
AC_CHECK_PROG(MAKER, gmake, gmake, make)
AC_PATH_PROG(GMAKE,gmake)
AC_PATH_PROG(GUNZIP, gunzip)
AC_PATH_PROG(PKGCONFIG, pkg-config)
dnl Checks for libraries.
AC_CHECK_LIB(descrypt, crypt, [AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-ldescrypt " MKPASSWDLIBS="-ldescrypt"],
AC_CHECK_LIB(crypt, crypt,[ AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-lcrypt " MKPASSWDLIBS="-lcrypt"]))
AC_CHECK_LIB(socket, socket,IRCDLIBS="$IRCDLIBS-lsocket " SOCKLIB="-lsocket")
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl " INETLIB="-lnsl")
AC_SUBST(IRCDLIBS)
AC_SUBST(MKPASSWDLIBS)
dnl module checking based on Hyb7's module checking code
AC_DEFUN(AC_ENABLE_DYN,
[
AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS -ldl",
[
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
AC_DEFINE(STATIC_LINKING)
]))
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -export-dynamic"
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
if test "$ac_cv_export_dynamic" = "no"; then
CFLAGS=$hold_cflags
fi
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
if test "$ac_cv_prog_gcc" = "yes"; then
ac_cv_pic="-fPIC -DPIC -shared"
case `uname -s` in
Darwin*[)]
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
;;
HP-UX*[)]
ac_cv_pic="-fPIC"
;;
esac
else
case `uname -s` in
SunOS*[)]
ac_cv_pic="-KPIC -DPIC -G"
;;
esac
fi
])
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
cat >uscore.c << __EOF__
int main() {
return 0;
}
__EOF__
$CC -o uscore $CFLAGS uscore.c 1>&5
if test -z "`strings -a uscore |grep '^_main$'`"; then
ac_cv_underscore=no
else
ac_cv_underscore=yes
fi
rm -f uscore uscore.c
])
if test "$ac_cv_underscore" = "yes"; then
AC_DEFINE(UNDERSCORE)
fi
MODULEFLAGS=$ac_cv_pic
AC_DEFINE(DYNAMIC_LINKING)
])
AC_DEFUN(AC_ENABLE_INET6,[
AC_CACHE_CHECK(if your system has IPv6 support, ac_cv_ip6, [
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
int main() {
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
exit(1);
exit(0);
}
], ac_cv_ip6=yes, ac_cv_ip6=no)
])
if test "$ac_cv_ip6" = "no"; then
AC_MSG_WARN(Your system does not support IPv6 so it will not be enabled)
else
AC_DEFINE(INET6)
dnl in6addr_any detection code taken from ratbox
AC_MSG_CHECKING([for struct in6addr_any])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[#define IN_AUTOCONF
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>]],
[[struct in6_addr a = in6addr_any;]]
)],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT(no)
AC_DEFINE(NO_IN6ADDR_ANY)
]
)
fi
LIBS="$save_libs"
])
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(PARAMH))
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(STDLIBH))
AC_CHECK_HEADER(stddef.h,AC_DEFINE(STDDEFH))
AC_CHECK_HEADER(sys/syslog.h,AC_DEFINE(SYSSYSLOGH))
AC_CHECK_HEADER(unistd.h,AC_DEFINE(UNISTDH))
AC_CHECK_HEADER(string.h,AC_DEFINE(STRINGH))
AC_CHECK_HEADER(strings.h,AC_DEFINE(STRINGSH))
AC_CHECK_HEADER(malloc.h,AC_DEFINE(MALLOCH,<malloc.h>))
AC_CHECK_HEADER(sys/rusage.h,AC_DEFINE(RUSAGEH))
AC_CHECK_HEADER(glob.h,AC_DEFINE(GLOBH))
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_TYPE_UID_T
unreal_CHECK_TYPE_SIZES
AC_CACHE_CHECK(what kind of nonblocking sockets you have, ac_cv_nonblocking,[
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef O_NONBLOCK
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}
],ac_cv_nonblocking=O_NONBLOCK,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(0);
}
int main() {
#ifdef O_NDELAY
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}],ac_cv_nonblocking=O_NDELAY,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef FIONBIO
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
AC_DEFINE(NBLOCK_POSIX)
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
AC_DEFINE(NBLOCK_BSD)
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
AC_DEFINE(NBLOCK_SYSV)
fi
LIBS="$save_libs"
dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(snprintf,AC_DEFINE(HAVE_SNPRINTF))
AC_CHECK_FUNCS(vsnprintf,AC_DEFINE(HAVE_VSNPRINTF))
AC_CHECK_FUNCS(strlcpy, AC_DEFINE(HAVE_STRLCPY))
AC_CHECK_FUNCS(strlcat, AC_DEFINE(HAVE_STRLCAT))
AC_CHECK_FUNCS(strlncat, AC_DEFINE(HAVE_STRLNCAT))
AC_CHECK_FUNCS(inet_pton, AC_DEFINE(HAVE_INET_PTON))
AC_CHECK_FUNCS(inet_ntop, AC_DEFINE(HAVE_INET_NTOP))
dnl Check if it supports C99 style variable length arrays
AC_CACHE_CHECK(if C99 variable length arrays are supported, ac_cv_varlen_arrays, [
AC_TRY_COMPILE(,[
int main() {
int i = 5;
int a[i];
a[0] = 1;
return 0;
}], ac_cv_varlen_arrays=yes, ac_cv_varlen_arrays=no)
])
if test "$ac_cv_varlen_arrays" = "yes" ; then
AC_DEFINE(HAVE_C99_VARLEN_ARRAY)
fi
AC_CACHE_CHECK(if we can set the core size to unlimited, ac_cv_force_core,[
AC_TRY_RUN([
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
int main() {
struct rlimit corelim;
corelim.rlim_cur = corelim.rlim_max = RLIM_INFINITY;
if (setrlimit(RLIMIT_CORE, &corelim))
exit(1);
exit(0);
}
],ac_cv_force_core=yes,ac_cv_force_core=no)
])
if test "$ac_cv_force_core" = "yes"; then
AC_DEFINE(FORCE_CORE)
fi
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(GETTIMEOFDAY),[AC_CHECK_FUNCS(lrand48,AC_DEFINE(LRADN48))])
AC_CHECK_FUNCS(getrusage,AC_DEFINE(GETRUSAGE_2),[AC_CHECK_FUNCS(times,AC_DEFINE(TIMES_2))])
AC_CHECK_FUNCS(setproctitle,AC_DEFINE(HAVE_SETPROCTITLE),[
AC_CHECK_LIB(util,setproctitle,AC_DEFINE(HAVE_SETPROCTITLE) IRCDLIBS="$IRCDLIBS-lutil",[
AC_EGREP_HEADER([#define.*PS_STRINGS.*],sys/exec.h,AC_DEFINE(HAVE_PSSTRINGS),[
AC_CHECK_FUNCS(pstat,AC_DEFINE(HAVE_PSTAT))
])
])
])
AC_CACHE_CHECK(what type of signals you have, ac_cv_sigtype, [
AC_TRY_RUN([
#include <signal.h>
int main() {
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
}
], ac_cv_sigtype=POSIX, [
AC_TRY_RUN([
#include <signal.h>
int calls = 0;
void handler()
{
if (calls)
return;
calls++;
kill(getpid(), SIGTERM);
sleep(1);
}
int main() {
signal(SIGTERM, handler);
kill(getpid(), SIGTERM);
exit(0);
}
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
if test "$ac_cv_sigtype" = "POSIX"; then
AC_DEFINE(POSIX_SIGNALS)
elif test "$ac_cv_sigtype" = "BSD"; then
AC_DEFINE(BSD_RELIABLE_SIGNALS)
else
AC_DEFINE(SYSV_UNRELIABLE_SIGNALS)
fi
AC_CHECK_FUNCS(strtoken,,AC_DEFINE(NEED_STRTOKEN))
AC_CHECK_FUNCS(strtok,,AC_DEFINE(NEED_STRTOK))
AC_CHECK_FUNCS(strerror,,AC_DEFINE(NEED_STRERROR))
AC_CHECK_FUNCS(index,,AC_DEFINE(NOINDEX))
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
AC_CHECK_FUNCS(bcopy,,AC_DEFINE(NEED_BCOPY))
AC_CHECK_FUNCS(bcmp,,AC_DEFINE(NEED_BCMP))
AC_CHECK_FUNCS(bzero,,AC_DEFINE(NEED_BZERO))
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(GOT_STRCASECMP))
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB $INETLIB"
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE(NEED_INET_ADDR))
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE(NEED_INET_NTOA))
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE(NEED_INET_NETOF))
LIBS="$save_libs"
AC_CHECK_FUNCS(syslog,AC_DEFINE(HAVE_SYSLOG))
AC_CHECK_FUNCS(vsyslog,AC_DEFINE(HAVE_VSYSLOG))
AC_SUBST(STRTOUL)
AC_SUBST(CRYPTOLIB)
AC_SUBST(MODULEFLAGS)
AC_ARG_WITH(listen, [AC_HELP_STRING([--with-listen=backlog],[Specify the listen backlog value])],
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
AC_ARG_WITH(nick-history, [AC_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
AC_ARG_WITH(sendq, [AC_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
AC_ARG_WITH(bufferpool, [AC_HELP_STRING([--with-bufferpool=size],[Specify the size of the buffer pool])],
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(18 * MAXSENDQLENGTH)]))
AC_ARG_WITH(hostname, [AC_HELP_STRING([--with-hostname=host],[Specify the local hostname of the server])], AC_DEFINE_UNQUOTED(DOMAINNAME,"$withval"),AC_DEFINE_UNQUOTED(DOMAINNAME,"`hostname`"))
AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`")
AC_ARG_WITH(permissions, [AC_HELP_STRING([--with-permissions=permissions],[Specify the default permissions for
configuration files])], AC_DEFINE_UNQUOTED(DEFAULT_PERMISSIONS,$withval), AC_DEFINE(DEFAULT_PERMISSIONS, 0600))
AC_ARG_WITH(dpath, [AC_HELP_STRING([--with-dpath=path],[Specify the path where configuration files are stored])],
AC_DEFINE_UNQUOTED(DPATH, "$withval") IRCDDIR="$withval", AC_DEFINE_UNQUOTED(DPATH,"`pwd`") IRCDDIR="`pwd`")
AC_ARG_WITH(fd-setsize, [AC_HELP_STRING([--with-fd-setsize=size],[Specify the max file descriptors to use])],
ac_fd=$withval, ac_fd=1024)
AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $ac_fd)
AC_ARG_WITH(spath, [AC_HELP_STRING([--with-spath],[Specify the location of the executable])],
AC_DEFINE_UNQUOTED(SPATH,"$withval") BINDIR="$withval",AC_DEFINE_UNQUOTED(SPATH,"`pwd`/src/ircd") BINDIR="`pwd`/src/ircd")
AC_ARG_ENABLE(nospoof, [AC_HELP_STRING([--enable-nospoof],[Enable spoofing protection])], AC_DEFINE(NOSPOOF))
AC_ARG_ENABLE(prefixaq, [AC_HELP_STRING([--enable-prefixaq],[Enable chanadmin and chanowner prefixes])], AC_DEFINE(PREFIX_AQ))
AC_ARG_ENABLE(hub, [AC_HELP_STRING([--enable-hub],[Compile as a hub server])], AC_DEFINE(HUB))
AC_ARG_WITH(showlistmodes, [AC_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
AC_DEFINE(LIST_SHOW_MODES))
AC_ARG_WITH(topicisnuhost, [AC_HELP_STRING([--with-topicisnuhost], [Display nick!user@host as the topic setter])],
AC_DEFINE(TOPIC_NICK_IS_NUHOST))
AC_ARG_WITH(shunnotices, [AC_HELP_STRING([--with-shunnotices], [Notify a user when he/she is no longer shunned])],
AC_DEFINE(SHUN_NOTICES))
AC_ARG_WITH(no-operoverride, [AC_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
AC_DEFINE(NO_OPEROVERRIDE))
AC_ARG_WITH(disableusermod, [AC_HELP_STRING([--with-disableusermod], [Disable /set* and /chg*])],
AC_DEFINE(DISABLE_USERMOD))
AC_ARG_WITH(operoverride-verify, [AC_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
AC_DEFINE(OPEROVERRIDE_VERIFY))
CHECK_SSL
CHECK_ZLIB
CHECK_LIBCURL
AC_ARG_ENABLE(dynamic-linking, [AC_HELP_STRING([--enable-dynamic-linking],[Make the IRCd dynamically link shared objects rather than statically])], AC_ENABLE_DYN, AC_DEFINE(STATIC_LINKING))
AC_ARG_ENABLE(inet6, [AC_HELP_STRING([--enable-inet6],[Make the IRCd support IPv6])], AC_ENABLE_INET6)
AC_SUBST(IRCDDIR)
AC_SUBST(BINDIR)
AC_MSG_CHECKING(if FD_SETSIZE is large enough to allow $ac_fd file descriptors)
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
int main() {
if (FD_SETSIZE >= $ac_fd)
exit(0);
exit(1);
}
], AC_MSG_RESULT(yes), [
FD_SETSIZE="-DFD_SETSIZE=$ac_fd"
AC_MSG_RESULT(no)
])
AC_SUBST(FD_SETSIZE)
case `uname -s` in
*SunOS*)
CFLAGS="$CFLAGS -D_SOLARIS"
IRCDLIBS="$IRCDLIBS -lresolv "
;;
*solaris*)
CFLAGS="$CFLAGS -D_SOLARIS"
IRCDLIBS="$IRCDLIBS -lresolv "
;;
esac
dnl REMEMBER TO CHANGE WITH A NEW RELEASE!
tre_version="0.7.2"
AC_MSG_RESULT(extracting TRE regex library)
cur_dir=`pwd`
cd extras
dnl remove old tre directory to force a recompile...
rm -rf tre-$tre_version
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz tre.tar.gz
else
cp tre.tar.gz tre.tar.gz.bak
gunzip -f tre.tar.gz
cp tre.tar.gz.bak tre.tar.gz
tar xf tre.tar
fi
AC_MSG_RESULT(configuring TRE regex library)
cd tre-$tre_version
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp
AC_MSG_RESULT(compiling TRE regex library)
$ac_cv_prog_MAKER
AC_MSG_RESULT(installing TRE regex library)
$ac_cv_prog_MAKER install
TREINCDIR="$cur_dir/extras/regexp/include"
AC_SUBST(TREINCDIR)
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
TRELIBS="-L../extras/regexp/lib -ltre"
else
TRELIBS=`$ac_cv_path_PKGCONFIG --libs tre.pc`
fi
AC_SUBST(TRELIBS)
cd $cur_dir
AC_OUTPUT(Makefile src/modules/Makefile unreal ircdcron/ircdchk)
chmod 0700 unreal
chmod 0700 ircdcron/ircdchk
View File
+72
View File
@@ -0,0 +1,72 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the current language's compiler
# or gives an error. (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the current language's default
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
# force the compiler to issue an error when a bad flag is given.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 2
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS
+71
View File
@@ -0,0 +1,71 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the linker or gives an error.
# (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
# when the check is done. The check is thus made with the flags: "LDFLAGS
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
# issue an error when a bad flag is given.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 2
AC_DEFUN([AX_CHECK_LINK_FLAG],
[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS $4 $1"
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
LDFLAGS=$ax_check_save_flags])
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_LINK_FLAGS
+332
View File
@@ -0,0 +1,332 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
#
# DESCRIPTION
#
# This macro figures out how to build C programs using POSIX threads. It
# sets the PTHREAD_LIBS output variable to the threads library and linker
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
# flags that are needed. (The user can also force certain compiler
# flags/libs to be tested by setting these environment variables.)
#
# Also sets PTHREAD_CC to any special C compiler that is needed for
# multi-threaded programs (defaults to the value of CC otherwise). (This
# is necessary on AIX to use the special cc_r compiler alias.)
#
# NOTE: You are assumed to not only compile your program with these flags,
# but also link it with them as well. e.g. you should link with
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
#
# If you are only building threads programs, you may wish to use these
# variables in your default LIBS, CFLAGS, and CC:
#
# LIBS="$PTHREAD_LIBS $LIBS"
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# CC="$PTHREAD_CC"
#
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
#
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
# PTHREAD_CFLAGS.
#
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
# is not found. If ACTION-IF-FOUND is not specified, the default action
# will define HAVE_PTHREAD.
#
# Please let the authors know if this macro fails on any platform, or if
# you have any other suggestions or comments. This macro was based on work
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
# grateful for the helpful feedback of numerous users.
#
# Updated for Autoconf 2.68 by Daniel Richard G.
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 21
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_LANG_PUSH([C])
ax_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
# requires special compiler flags (e.g. on True64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
AC_MSG_RESULT([$ax_pthread_ok])
if test x"$ax_pthread_ok" = xno; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
fi
# We must check for the threads library under a number of different
# names; the ordering is very important because some systems
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are
# C compiler flags, and other items are library names, except for "none"
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
# pthreads: AIX (must check this before -lpthread)
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
# -pthreads: Solaris/gcc
# -mthreads: Mingw32/gcc, Lynx/gcc
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads too;
# also defines -D_REENTRANT)
# ... -mt is also the pthreads flag for HP/aCC
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
case ${host_os} in
solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
# a function called by this macro, so we could check for that, but
# who knows whether they'll stub that too in a future libc.) So,
# we'll just look for -pthreads and -lpthread first:
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
;;
darwin*)
ax_pthread_flags="-pthread $ax_pthread_flags"
;;
esac
# Clang doesn't consider unrecognized options an error unless we specify
# -Werror. We throw in some extra Clang-specific options to ensure that
# this doesn't happen for GCC, which also accepts -Werror.
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
save_CFLAGS="$CFLAGS"
ax_pthread_extra_flags="-Werror"
CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
[AC_MSG_RESULT([yes])],
[ax_pthread_extra_flags=
AC_MSG_RESULT([no])])
CFLAGS="$save_CFLAGS"
if test x"$ax_pthread_ok" = xno; then
for flag in $ax_pthread_flags; do
case $flag in
none)
AC_MSG_CHECKING([whether pthreads work without any flags])
;;
-*)
AC_MSG_CHECKING([whether pthreads work with $flag])
PTHREAD_CFLAGS="$flag"
;;
pthread-config)
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
if test x"$ax_pthread_config" = xno; then continue; fi
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;;
*)
AC_MSG_CHECKING([for the pthreads library -l$flag])
PTHREAD_LIBS="-l$flag"
;;
esac
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
# need a special flag -Kthread to make this header compile.)
# We check for pthread_join because it is in -lpthread on IRIX
# while pthread_create is in libc. We check for pthread_attr_init
# due to DEC craziness with -lpthreads. We check for
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
static void routine(void *a) { a = 0; }
static void *start_routine(void *a) { return a; }],
[pthread_t th; pthread_attr_t attr;
pthread_create(&th, 0, start_routine, 0);
pthread_join(th, 0);
pthread_attr_init(&attr);
pthread_cleanup_push(routine, 0);
pthread_cleanup_pop(0) /* ; */])],
[ax_pthread_ok=yes],
[])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
AC_MSG_RESULT([$ax_pthread_ok])
if test "x$ax_pthread_ok" = xyes; then
break;
fi
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
done
fi
# Various other checks:
if test "x$ax_pthread_ok" = xyes; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
AC_MSG_CHECKING([for joinable pthread attribute])
attr_name=unknown
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
[int attr = $attr; return attr /* ; */])],
[attr_name=$attr; break],
[])
done
AC_MSG_RESULT([$attr_name])
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
[Define to necessary symbol if this constant
uses a non-standard name on your system.])
fi
AC_MSG_CHECKING([if more special flags are required for pthreads])
flag=no
case ${host_os} in
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
osf* | hpux*) flag="-D_REENTRANT";;
solaris*)
if test "$GCC" = "yes"; then
flag="-D_REENTRANT"
else
# TODO: What about Clang on Solaris?
flag="-mt -D_REENTRANT"
fi
;;
esac
AC_MSG_RESULT([$flag])
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
[ax_cv_PTHREAD_PRIO_INHERIT], [
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
[[int i = PTHREAD_PRIO_INHERIT;]])],
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
[ax_cv_PTHREAD_PRIO_INHERIT=no])
])
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
# More AIX lossage: compile with *_r variant
if test "x$GCC" != xyes; then
case $host_os in
aix*)
AS_CASE(["x/$CC"],
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
[#handle absolute path differently from PATH based program lookup
AS_CASE(["x$CC"],
[x/*],
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
;;
esac
fi
fi
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
AC_SUBST([PTHREAD_LIBS])
AC_SUBST([PTHREAD_CFLAGS])
AC_SUBST([PTHREAD_CC])
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$ax_pthread_ok" = xyes; then
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
:
else
ax_pthread_ok=no
$2
fi
AC_LANG_POP
])dnl AX_PTHREAD
+343
View File
@@ -0,0 +1,343 @@
# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*-
# serial 12 (pkg-config-0.29.2)
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2 of the License, or
dnl (at your option) any later version.
dnl
dnl This program is distributed in the hope that it will be useful, but
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
dnl 02111-1307, USA.
dnl
dnl As a special exception to the GNU General Public License, if you
dnl distribute this file as part of a program that contains a
dnl configuration script generated by Autoconf, you may include it under
dnl the same distribution terms that you use for the rest of that
dnl program.
dnl PKG_PREREQ(MIN-VERSION)
dnl -----------------------
dnl Since: 0.29
dnl
dnl Verify that the version of the pkg-config macros are at least
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
dnl installed version of pkg-config, this checks the developer's version
dnl of pkg.m4 when generating configure.
dnl
dnl To ensure that this macro is defined, also add:
dnl m4_ifndef([PKG_PREREQ],
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
[m4_define([PKG_MACROS_VERSION], [0.29.2])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
dnl ----------------------------------
dnl Since: 0.16
dnl
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
dnl first found in the path. Checks that the version of pkg-config found
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
dnl used since that's the first version where most current features of
dnl pkg-config existed.
AC_DEFUN([PKG_PROG_PKG_CONFIG],
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=m4_default([$1], [0.9.0])
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
PKG_CONFIG=""
fi
fi[]dnl
])dnl PKG_PROG_PKG_CONFIG
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
dnl -------------------------------------------------------------------
dnl Since: 0.18
dnl
dnl Check to see whether a particular set of modules exists. Similar to
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
dnl
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
dnl only at the first occurrence in configure.ac, so if the first place
dnl it's called might be skipped (such as if it is within an "if", you
dnl have to call PKG_CHECK_EXISTS manually
AC_DEFUN([PKG_CHECK_EXISTS],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
if test -n "$PKG_CONFIG" && \
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
m4_default([$2], [:])
m4_ifvaln([$3], [else
$3])dnl
fi])
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
dnl ---------------------------------------------
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
dnl pkg_failed based on the result.
m4_define([_PKG_CONFIG],
[if test -n "$$1"; then
pkg_cv_[]$1="$$1"
elif test -n "$PKG_CONFIG"; then
PKG_CHECK_EXISTS([$3],
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes ],
[pkg_failed=yes])
else
pkg_failed=untried
fi[]dnl
])dnl _PKG_CONFIG
dnl _PKG_SHORT_ERRORS_SUPPORTED
dnl ---------------------------
dnl Internal check to see if pkg-config supports short errors.
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi[]dnl
])dnl _PKG_SHORT_ERRORS_SUPPORTED
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
dnl [ACTION-IF-NOT-FOUND])
dnl --------------------------------------------------------------
dnl Since: 0.4.0
dnl
dnl Note that if there is a possibility the first call to
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
AC_DEFUN([PKG_CHECK_MODULES],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
AC_MSG_CHECKING([for $2])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
and $1[]_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
AC_MSG_RESULT([no])
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
else
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
m4_default([$4], [AC_MSG_ERROR(
[Package requirements ($2) were not met:
$$1_PKG_ERRORS
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
_PKG_TEXT])[]dnl
])
elif test $pkg_failed = untried; then
AC_MSG_RESULT([no])
m4_default([$4], [AC_MSG_FAILURE(
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
_PKG_TEXT
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
])
else
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
AC_MSG_RESULT([yes])
$3
fi[]dnl
])dnl PKG_CHECK_MODULES
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
dnl [ACTION-IF-NOT-FOUND])
dnl ---------------------------------------------------------------------
dnl Since: 0.29
dnl
dnl Checks for existence of MODULES and gathers its build flags with
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
dnl and VARIABLE-PREFIX_LIBS from --libs.
dnl
dnl Note that if there is a possibility the first call to
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
dnl configure.ac.
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
_save_PKG_CONFIG=$PKG_CONFIG
PKG_CONFIG="$PKG_CONFIG --static"
PKG_CHECK_MODULES($@)
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
])dnl PKG_CHECK_MODULES_STATIC
dnl PKG_INSTALLDIR([DIRECTORY])
dnl -------------------------
dnl Since: 0.27
dnl
dnl Substitutes the variable pkgconfigdir as the location where a module
dnl should install pkg-config .pc files. By default the directory is
dnl $libdir/pkgconfig, but the default can be changed by passing
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
dnl parameter.
AC_DEFUN([PKG_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
m4_pushdef([pkg_description],
[pkg-config installation directory @<:@]pkg_default[@:>@])
AC_ARG_WITH([pkgconfigdir],
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
[with_pkgconfigdir=]pkg_default)
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
])dnl PKG_INSTALLDIR
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
dnl --------------------------------
dnl Since: 0.27
dnl
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
dnl module should install arch-independent pkg-config .pc files. By
dnl default the directory is $datadir/pkgconfig, but the default can be
dnl changed by passing DIRECTORY. The user can override through the
dnl --with-noarch-pkgconfigdir parameter.
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
m4_pushdef([pkg_description],
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
AC_ARG_WITH([noarch-pkgconfigdir],
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
[with_noarch_pkgconfigdir=]pkg_default)
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
])dnl PKG_NOARCH_INSTALLDIR
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
dnl -------------------------------------------
dnl Since: 0.28
dnl
dnl Retrieves the value of the pkg-config variable for the given module.
AC_DEFUN([PKG_CHECK_VAR],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl
])dnl PKG_CHECK_VAR
dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
dnl [DESCRIPTION], [DEFAULT])
dnl ------------------------------------------
dnl
dnl Prepare a "--with-" configure option using the lowercase
dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
dnl PKG_CHECK_MODULES in a single macro.
AC_DEFUN([PKG_WITH_MODULES],
[
m4_pushdef([with_arg], m4_tolower([$1]))
m4_pushdef([description],
[m4_default([$5], [build with ]with_arg[ support])])
m4_pushdef([def_arg], [m4_default([$6], [auto])])
m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
m4_case(def_arg,
[yes],[m4_pushdef([with_without], [--without-]with_arg)],
[m4_pushdef([with_without],[--with-]with_arg)])
AC_ARG_WITH(with_arg,
AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
[AS_TR_SH([with_]with_arg)=def_arg])
AS_CASE([$AS_TR_SH([with_]with_arg)],
[yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
[auto],[PKG_CHECK_MODULES([$1],[$2],
[m4_n([def_action_if_found]) $3],
[m4_n([def_action_if_not_found]) $4])])
m4_popdef([with_arg])
m4_popdef([description])
m4_popdef([def_arg])
])dnl PKG_WITH_MODULES
dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
dnl [DESCRIPTION], [DEFAULT])
dnl -----------------------------------------------
dnl
dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
dnl check._[VARIABLE-PREFIX] is exported as make variable.
AC_DEFUN([PKG_HAVE_WITH_MODULES],
[
PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
AM_CONDITIONAL([HAVE_][$1],
[test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
])dnl PKG_HAVE_WITH_MODULES
dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
dnl [DESCRIPTION], [DEFAULT])
dnl ------------------------------------------------------
dnl
dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
dnl and preprocessor variable.
AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
[
PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
[AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
])dnl PKG_HAVE_DEFINE_WITH_MODULES
+475
View File
@@ -0,0 +1,475 @@
#serial 1
dnl Macro: unreal_CHECK_TYPE_SIZES
dnl originally called unet_CHECK_TYPE_SIZES
dnl
dnl Check the size of several types and define a valid int16_t and int32_t.
dnl
AC_DEFUN([unreal_CHECK_TYPE_SIZES],
[dnl Check type sizes
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
if test "$ac_cv_sizeof_int" = 2 ; then
AC_CHECK_TYPE(int16_t, int)
AC_CHECK_TYPE(u_int16_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 2 ; then
AC_CHECK_TYPE(int16_t, short)
AC_CHECK_TYPE(u_int16_t, unsigned short)
else
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
fi
if test "$ac_cv_sizeof_int" = 4 ; then
AC_CHECK_TYPE(int32_t, int)
AC_CHECK_TYPE(u_int32_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 4 ; then
AC_CHECK_TYPE(int32_t, short)
AC_CHECK_TYPE(u_int32_t, unsigned short)
elif test "$ac_cv_sizeof_long" = 4 ; then
AC_CHECK_TYPE(int32_t, long)
AC_CHECK_TYPE(u_int32_t, unsigned long)
else
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
fi
AC_CHECK_SIZEOF(rlim_t)
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
AC_DEFINE([LONG_LONG_RLIM_T], [], [Define if rlim_t is long long])
fi
])
AC_DEFUN([CHECK_LIBCURL],
[
AC_ARG_ENABLE(libcurl,
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
[enable_curl=$enableval],
[enable_curl=no])
AS_IF([test "x$enable_curl" != "xno"],
[
dnl sane, default directory for Operating System-managed libcURL
dnl (when --enable-libcurl is passed without any arguments). On
dnl systems with stuff in /usr/local, /usr/local/bin should already
dnl be in PATH. On sane systems, this will invoke the curl-config
dnl installed by the package manager.
CURLCONFIG="curl-config"
AS_IF([test "x$enable_curl" != "xyes"],
[CURLCONFIG="$enable_curl/bin/curl-config"])
AC_MSG_CHECKING([$CURLCONFIG])
AS_IF([$CURLCONFIG --version 2>/dev/null >/dev/null],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([Could not find curl-config, try editing --enable-libcurl])])
CURLCFLAG="`$CURLCONFIG --cflags`"
CURLLIBS="`$CURLCONFIG --libs`"
dnl This test must be this way because of #3981
AS_IF([$CURLCONFIG --libs | grep -q -e ares],
[CURLUSESCARES="1"],
[CURLUSESCARES="0"])
dnl sanity warnings
AS_IF([test -z "${CURLLIBS}"],
[AC_MSG_WARN([CURLLIBS is empty, that probably means that I could not find $enable_curl/bin/curl-config])])
dnl Ok this is ugly, basically we need to strip the version of c-ares that curl uses
dnl because we want to use our own version (which is hopefully fully binary
dnl compatible with the curl one as well).
dnl Therefore we need to strip the cares libs in a weird way...
dnl If anyone can come up with something better and still portable (no awk!?)
dnl then let us know. -- Syzop
dnl
dnl It is dangerous to mix and match cURL with potentially ABI-incompatible versions of
dnl c-ares, just use --with-system-cares.
dnl Thus, make sure to use --with-system-cares when using system-cURL. If the user
dnl wants bundled c-ares + system libcURL, then we should filter out c-ares
dnl flags. _Only_ in that case should we mess with the flags. -- ohnobinki
AS_IF([test "x$has_system_cares" = "xno" && test "x$BUILDDIR/extras/curl" != "x$enable_curl" && test "$CURLUSESCARES" != "0" ],
[
AC_MSG_ERROR([[
You have decided to build unrealIRCd with libcURL (remote includes) support.
However, you have system-installed c-ares support has either been disabled
(--without-system-cares) or is unavailable.
Because UnrealIRCd will use a bundled copy of c-ares which may be incompatible
with the system-installed libcURL, this is a bad idea which may result in error
messages looking like:
error downloading ... Could not resolve host: example.net (Successful completion)
Or UnrealIRCd might even crash.
Please build UnrealIRCd with --with-system-cares when enabling --enable-libcurl
]])
])
dnl Make sure that linking against cURL works rather than letting the user
dnl find out after compiling most of his program. ~ohnobinki
IRCDLIBS="$IRCDLIBS $CURLLIBS"
CFLAGS="$CFLAGS $CURLCFLAG"
AC_DEFINE([USE_LIBCURL], [], [Define if you have libcurl installed to get remote includes and MOTD support])
AC_MSG_CHECKING([curl_easy_init() in $CURLLIBS])
LIBS_SAVEDA="$LIBS"
CFLAGS_SAVEDA="$CFLAGS"
LIBS="$IRCDLIBS $IRCDLIBS_CURL_CARES"
CFLAGS="$CFLAGS $CFLAGS_CURL_CARES"
AC_LINK_IFELSE(
[
AC_LANG_PROGRAM(
[[#include <curl/curl.h>]],
[[CURL *curl = curl_easy_init();]])
],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([You asked for libcURL (remote includes) support, but it can't be found at $enable_curl])
])
LIBS="$LIBS_SAVEDA"
CFLAGS="$CFLAGS_SAVEDA"
dnl Finally, choose the cURL implementation of url.c
URL="url_curl.o"
],[
dnl Choose UnrealIRCds internal implementation of url.c
URL="url_unreal.o"
]) dnl AS_IF(enable_curl)
AC_SUBST(URL)
])
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
AC_DEFUN([CHECK_SSL],
[
AC_ARG_ENABLE(ssl,
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/opt/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr])],
[],
[enable_ssl=no])
AS_IF([test $enable_ssl != "no"],
[
AC_MSG_CHECKING([for OpenSSL])
for dir in $enable_ssl /usr/local/opt/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr; do
ssldir="$dir"
if test -f "$dir/include/openssl/ssl.h"; then
AC_MSG_RESULT([found in $ssldir/include/openssl])
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break
fi
if test -f "$dir/include/ssl.h"; then
AC_MSG_RESULT([found in $ssldir/include])
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break
fi
done
if test x_$found_ssl != x_yes; then
AC_MSG_RESULT(not found)
echo ""
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
echo "The following packages are required:"
echo "1) The library package is often called 'openssl-dev', 'openssl-devel' or 'libssl-dev'"
echo "2) The binary package is usually called 'openssl'."
echo "NOTE: you or your system administrator needs to install the library AND the binary package."
echo "After doing so, simply re-run ./Config"
exit 1
else
CRYPTOLIB="-lssl -lcrypto";
if test ! "$ssldir" = "/usr" ; then
if test -d "$ssldir/lib64" ; then
LDFLAGS="$LDFLAGS -L$ssldir/lib64";
else
LDFLAGS="$LDFLAGS -L$ssldir/lib";
fi
dnl check if binary path exists
if test -f "$ssldir/bin/openssl"; then
OPENSSLPATH="$ssldir/bin/openssl";
fi
fi
dnl linking require -ldl?
AC_MSG_CHECKING([OpenSSL linking with -ldl])
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB -ldl"
AC_TRY_LINK([#include <openssl/err.h>], [ERR_clear_error();],
[
AC_MSG_RESULT(yes)
CRYPTOLIB="$CRYPTOLIB -ldl"
],
[
AC_MSG_RESULT(no)
dnl linking require both -ldl and -lpthread?
AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread])
LIBS="$SAVE_LIBS $CRYPTOLIB -ldl -lpthread"
AC_TRY_LINK([#include <openssl/err.h>], [ERR_clear_error();],
[
AC_MSG_RESULT(yes)
CRYPTOLIB="$CRYPTOLIB -ldl -lpthread"
],
[
AC_MSG_RESULT(no)
])
])
LIBS="$SAVE_LIBS"
fi
])
])
AC_DEFUN([CHECK_SSL_CTX_SET1_SIGALGS_LIST],
[
AC_MSG_CHECKING([for SSL_CTX_set1_sigalgs_list in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[SSL_CTX *ctx = NULL; SSL_CTX_set1_sigalgs_list(ctx, "test");],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_SSL_CTX_SET1_SIGALGS_LIST], [], [Define if ssl library has SSL_CTX_set1_sigalgs_list])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_SSL_CTX_SET1_CURVES_LIST],
[
AC_MSG_CHECKING([for SSL_CTX_set1_curves_list in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[SSL_CTX *ctx = NULL; SSL_CTX_set1_curves_list(ctx, "test");],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_SSL_CTX_SET1_CURVES_LIST], [], [Define if ssl library has SSL_CTX_set1_curves_list])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_SSL_CTX_SET1_GROUPS_LIST],
[
AC_MSG_CHECKING([for SSL_CTX_set1_groups_list in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[SSL_CTX *ctx = NULL; SSL_CTX_set1_groups_list(ctx, "test");],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_SSL_CTX_SET1_GROUPS_LIST], [], [Define if ssl library has SSL_CTX_set1_groups_list])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_SSL_GET_NEGOTIATED_GROUP],
[
AC_MSG_CHECKING([for SSL_get_negotiated_group in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[SSL *ssl = NULL; SSL_get_negotiated_group(ssl);],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_SSL_GET_NEGOTIATED_GROUP], [], [Define if ssl library has SSL_get_negotiated_group])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_SSL_CTX_SET_MIN_PROTO_VERSION],
[
AC_MSG_CHECKING([for SSL_CTX_set_min_proto_version in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[SSL_CTX *ctx = NULL; SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION);],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_SSL_CTX_SET_MIN_PROTO_VERSION], [], [Define if ssl library has SSL_CTX_set_min_proto_version])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_SSL_CTX_SET_SECURITY_LEVEL],
[
AC_MSG_CHECKING([for SSL_CTX_set_security_level in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[SSL_CTX *ctx = NULL; SSL_CTX_set_security_level(ctx, 1);],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_SSL_CTX_SET_SECURITY_LEVEL], [], [Define if ssl library has SSL_CTX_set_security_level])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_ASN1_TIME_diff],
[
AC_MSG_CHECKING([for ASN1_TIME_diff in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[int one, two; ASN1_TIME_diff(&one, &two, NULL, NULL);],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_ASN1_TIME_diff], [], [Define if ssl library has ASN1_TIME_diff])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_X509_get0_notAfter],
[
AC_MSG_CHECKING([for X509_get0_notAfter in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/ssl.h>],
[X509_get0_notAfter(NULL);],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_X509_get0_notAfter], [], [Define if ssl library has X509_get0_notAfter])
else
AC_MSG_RESULT([no])
fi
])
AC_DEFUN([CHECK_X509_check_host],
[
AC_MSG_CHECKING([for X509_check_host in SSL library])
AC_LANG_PUSH(C)
SAVE_LIBS="$LIBS"
LIBS="$LIBS $CRYPTOLIB"
AC_TRY_LINK([#include <openssl/x509v3.h>],
[X509_check_host(NULL, NULL, 0, 0, NULL);],
has_function=1,
has_function=0)
LIBS="$SAVE_LIBS"
AC_LANG_POP(C)
if test $has_function = 1; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAS_X509_check_host], [], [Define if ssl library has X509_check_host])
OPENSSL_HOSTNAME_VALIDATION_OBJ=""
else
AC_MSG_RESULT([no])
OPENSSL_HOSTNAME_VALIDATION_OBJ="openssl_hostname_validation.o"
fi
AC_SUBST(OPENSSL_HOSTNAME_VALIDATION_OBJ)
])
dnl For geoip-api-c
AC_DEFUN([CHECK_GEOIP_CLASSIC],
[
AC_ARG_ENABLE(geoip_classic,
[AC_HELP_STRING([--enable-geoip-classic=no/yes],[enable GeoIP Classic support])],
[enable_geoip_classic=$enableval],
[enable_geoip_classic=no])
AS_IF([test "x$enable_geoip_classic" = "xyes"],
[
dnl First see if the system provides it
has_system_geoip_classic="no"
PKG_CHECK_MODULES([GEOIP_CLASSIC], [geoip >= 1.6.0],
[has_system_geoip_classic=yes
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libGeoIP.*])],
[has_system_geoip_classic=no])
dnl Otherwise fallback to our own..
AS_IF([test "$has_system_geoip_classic" = "no"],[
dnl REMEMBER TO CHANGE WITH A NEW GEOIP LIBRARY RELEASE!
geoip_classic_version="1.6.12"
AC_MSG_RESULT(extracting GeoIP Classic library)
cur_dir=`pwd`
cd extras
dnl remove old directory to force a recompile...
dnl and remove its installation prefix just to clean things up.
rm -rf GeoIP-$geoip_classic_version geoip-classic
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz geoip-classic.tar.gz
else
cp geoip-classic.tar.gz geoip-classic.tar.gz.bak
gunzip -f geoip-classic.tar.gz
cp geoip-classic.tar.gz.bak geoip-classic.tar.gz
tar xf geoip-classic.tar
fi
AC_MSG_RESULT(configuring GeoIP Classic library)
cd GeoIP-$geoip_classic_version
save_cflags="$CFLAGS"
save_ldflags="$LDFLAGS"
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
LDFLAGS="$HARDEN_LIB_LDFLAGS"
export CFLAGS LDFLAGS
./configure --prefix=$cur_dir/extras/geoip-classic --libdir=$PRIVATELIBDIR --enable-shared --disable-static || exit 1
CFLAGS="$save_cflags"
LDFLAGS="$save_ldflags"
AC_MSG_RESULT(compiling GeoIP Classic library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing GeoIP Classic library)
rm -f "$PRIVATELIBDIR/"libGeoIP.so*
$ac_cv_prog_MAKER install || exit 1
dnl Try pkg-config first...
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
[GEOIP_CLASSIC_LIBS="`$ac_cv_path_PKGCONFIG --libs geoip.pc`"
GEOIP_CLASSIC_CFLAGS="`$ac_cv_path_PKGCONFIG --cflags geoip.pc`"])
dnl In case the system does not have pkg-config, fallback to hardcoded settings...
AS_IF([test -z "$GEOIP_CLASSIC_LIBS"],
[GEOIP_CLASSIC_LIBS="-L$PRIVATELIBDIR -lGeoIP"
GEOIP_CLASSIC_CFLAGS="-I$cur_dir/extras/geoip-classic/include"])
cd $cur_dir
])
AC_SUBST(GEOIP_CLASSIC_LIBS)
AC_SUBST(GEOIP_CLASSIC_CFLAGS)
GEOIP_CLASSIC_OBJECTS="geoip_classic.so"
AC_SUBST(GEOIP_CLASSIC_OBJECTS)
AC_DEFINE([GEOIP_ENGINE], ["geoip_classic"], [Classic GeoIP engine])
]) dnl AS_IF(enable_geoip_classic)
])
Executable
+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
echo "Regenerating 'configure' and headers..."
echo "NOTE: Normally only UnrealIRCd developers run this command!!"
cd "$(dirname "${0}")"
ACLOCAL_AMFLAGS=(-I autoconf/m4)
aclocal "${ACLOCAL_AMFLAGS[@]}"
autoconf
autoheader
-52
View File
@@ -1,52 +0,0 @@
/*
Unreal Internet Relay Chat Daemon
Copyright (C) Carsten V. Munk 2000
NOTE: Those words are not meant to insult you (the user)
but is meant to be a list of words so that the +G channel/user mode
will work properly. You can easily modify this file at your will.
If you got words to add to this file, please mail badwords@tspre.org
This is some filling space, scroll down to see the words
*/
badword channel { word "pussy"; };
badword channel { word "fuck"; };
badword channel { word "whore"; };
badword channel { word "slut"; };
badword channel { word "shit"; };
badword channel { word "asshole"; };
badword channel { word "bitch"; };
badword channel { word "cunt"; };
badword channel { word "vagina"; };
badword channel { word "penis"; };
badword channel { word "jackass"; };
badword channel { word "*fucker*"; };
badword channel { word "faggot"; };
badword channel { word "fag"; };
badword channel { word "horny"; };
badword channel { word "gay"; };
badword channel { word "dickhead"; };
badword channel { word "sonuvabitch"; };
badword channel { word "*fuck*"; };
badword channel { word "tits"; };
-52
View File
@@ -1,52 +0,0 @@
/*
Unreal Internet Relay Chat Daemon
Copyright (C) Carsten V. Munk 2000
NOTE: Those words are not meant to insult you (the user)
but is meant to be a list of words so that the +G channel/user mode
will work properly. You can easily modify this file at your will.
If you got words to add to this file, please mail badword messages@tspre.org
This is some filling space, scroll down to see the words
*/
badword message { word "pussy"; };
badword message { word "fuck"; };
badword message { word "whore"; };
badword message { word "slut"; };
badword message { word "shit"; };
badword message { word "asshole"; };
badword message { word "bitch"; };
badword message { word "cunt"; };
badword message { word "vagina"; };
badword message { word "penis"; };
badword message { word "jackass"; };
badword message { word "*fucker*"; };
badword message { word "faggot"; };
badword message { word "fag"; };
badword message { word "horny"; };
badword message { word "gay"; };
badword message { word "dickhead"; };
badword message { word "sonuvabitch"; };
badword message { word "*fuck*"; };
badword message { word "tits"; };
-52
View File
@@ -1,52 +0,0 @@
/*
Unreal Internet Relay Chat Daemon
Copyright (C) Carsten V. Munk 2000
NOTE: Those words are not meant to insult you (the user)
but is meant to be a list of words so that quit message censoring
will work properly. You can easily modify this file at your will.
If you got words to add to this file, please mail badword badwords@tspre.org
This is some filling space, scroll down to see the words
*/
badword quit { word "pussy"; };
badword quit { word "fuck"; };
badword quit { word "whore"; };
badword quit { word "slut"; };
badword quit { word "shit"; };
badword quit { word "asshole"; };
badword quit { word "bitch"; };
badword quit { word "cunt"; };
badword quit { word "vagina"; };
badword quit { word "penis"; };
badword quit { word "jackass"; };
badword quit { word "*fucker*"; };
badword quit { word "faggot"; };
badword quit { word "fag"; };
badword quit { word "horny"; };
badword quit { word "gay"; };
badword quit { word "dickhead"; };
badword quit { word "sonuvabitch"; };
badword quit { word "*fuck*"; };
badword quit { word "tits"; };
-1360
View File
File diff suppressed because it is too large Load Diff
Vendored
-1375
View File
File diff suppressed because it is too large Load Diff
Vendored
+10011 -10251
View File
File diff suppressed because it is too large Load Diff
+994
View File
@@ -0,0 +1,994 @@
dnl Process this file with autoconf to produce a configure script.
dnl When updating the version, remember to update the following files
dnl appropriately:
dnl include/windows/setup.h
dnl src/windows/unrealinst.iss
dnl doc/Config.header
dnl src/version.c.SH
AC_INIT([unrealircd], [6.2.6], [https://bugs.unrealircd.org/], [], [https://unrealircd.org/])
AC_CONFIG_SRCDIR([src/ircd.c])
AC_CONFIG_HEADER([include/setup.h])
AC_CONFIG_AUX_DIR([autoconf])
AC_CONFIG_MACRO_DIR([autoconf/m4])
if test "x$enable_dynamic_linking" = "x"; then
echo "Please use ./Config instead of ./configure"
exit 1
fi
dnl Save build directory early on (used in our m4 macros too)
BUILDDIR_NOW="`pwd`"
dnl Calculate the versions. Perhaps the use of expr is a little too extravagant
# Generation version number (e.g.: X in X.Y.Z)
UNREAL_VERSION_GENERATION=["6"]
AC_DEFINE_UNQUOTED([UNREAL_VERSION_GENERATION], [$UNREAL_VERSION_GENERATION], [Generation version number (e.g.: X for X.Y.Z)])
# Major version number (e.g.: Y in X.Y.Z)
UNREAL_VERSION_MAJOR=["2"]
AC_DEFINE_UNQUOTED([UNREAL_VERSION_MAJOR], [$UNREAL_VERSION_MAJOR], [Major version number (e.g.: Y for X.Y.Z)])
# Minor version number (e.g.: Z in X.Y.Z)
UNREAL_VERSION_MINOR=["6"]
AC_DEFINE_UNQUOTED([UNREAL_VERSION_MINOR], [$UNREAL_VERSION_MINOR], [Minor version number (e.g.: Z for X.Y.Z)])
# The version suffix such as a beta marker or release candidate
# marker. (e.g.: -rcX for unrealircd-3.2.9-rcX). This macro is a
# string instead of an integer because it contains arbitrary data.
UNREAL_VERSION_SUFFIX=["-git"]
AC_DEFINE_UNQUOTED([UNREAL_VERSION_SUFFIX], ["$UNREAL_VERSION_SUFFIX"], [Version suffix such as a beta marker or release candidate marker. (e.g.: -rcX for unrealircd-3.2.9-rcX)])
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(TOUCH,touch)
AC_PATH_PROG(OPENSSLPATH,openssl)
AS_IF([test x"$OPENSSLPATH" = "x"],
[
echo ""
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
echo "The following packages are required:"
echo "1) The library package is often called 'openssl-dev', 'openssl-devel' or 'libssl-dev'"
echo "2) The binary package is usually called 'openssl'."
echo "NOTE: you or your system administrator needs to install the library AND the binary package."
echo "After doing so, simply re-run ./Config"
exit 1
])
AC_PATH_PROG(INSTALL,install)
AC_PATH_PROG(GUNZIP, gunzip)
AC_PATH_PROG(PKGCONFIG, pkg-config)
dnl Check for compiler
AC_PROG_CC_C99
AS_IF([test "$ac_cv_prog_cc_c99" = "no"],
[AC_MSG_ERROR([No C99 compiler was found. Please install gcc or clang and other build tools. Eg, on Debian/Ubuntu you probably want to run the following as root: apt-get install build-essential ])])
dnl Save CFLAGS, use this when building the libraries like c-ares
orig_cflags="$CFLAGS"
dnl Check for make moved down, so the above compiler check takes precedence.
AC_CHECK_PROG(MAKER, gmake, gmake, make)
AC_PATH_PROG(GMAKE,gmake)
AS_IF([$MAKER --version | grep -q "GNU Make"],
[GNUMAKE="0"],
[AC_MSG_ERROR([It seems your system does not have make/gmake installed. If you are on Linux then install make, otherwise install gmake.])])
dnl Checks for libraries.
AC_CHECK_LIB(descrypt, crypt,
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
IRCDLIBS="$IRCDLIBS-ldescrypt "],
[AC_CHECK_LIB(crypt, crypt,
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
IRCDLIBS="$IRCDLIBS-lcrypt "])])
dnl Check for big-endian system, even though these hardly exist anymore...
AS_CASE([$host_cpu],
[i?86|amd64|x86_64],
[ac_cv_c_bigendian=no]
)
AC_C_BIGENDIAN(
AC_DEFINE(NATIVE_BIG_ENDIAN, 1, [machine is bigendian]),
AC_DEFINE(NATIVE_LITTLE_ENDIAN, 1, [machine is littleendian]),
AC_MSG_ERROR([unknown endianness]),
AC_MSG_ERROR([universal endianness is not supported - compile separately and use lipo(1)])
)
dnl HARDENING START
dnl This is taken from https://github.com/kmcallister/autoharden
dnl With some very small modifications (to remove C++ checking for instance)
# We want to check for compiler flag support, but there is no way to make
# clang's "argument unused" warning fatal. So we invoke the compiler through a
# wrapper script that greps for this message.
saved_CC="$CC"
saved_CXX="$CXX"
saved_LD="$LD"
flag_wrap="$srcdir/extras/wrap-compiler-for-flag-check"
CC="$flag_wrap $CC"
CXX="$flag_wrap $CXX"
LD="$flag_wrap $LD"
# We use the same hardening flags for C and C++. We must check that each flag
# is supported by both compilers.
AC_DEFUN([check_cc_flag],
[AC_LANG_PUSH(C)
AX_CHECK_COMPILE_FLAG([$1], [$2], [$3], [-Werror $4])
AC_LANG_POP(C)])
AC_DEFUN([check_link_flag],
[AX_CHECK_LINK_FLAG([$1], [$2], [$3], [-Werror $4])])
AC_ARG_ENABLE([hardening],
[AS_HELP_STRING([--enable-hardening],
[Enable compiler and linker options to frustrate memory corruption exploits @<:@yes@:>@])],
[hardening="$enableval"],
[hardening="yes"])
HARDEN_CFLAGS=""
HARDEN_LDFLAGS=""
AS_IF([test x"$hardening" != x"no"], [
check_cc_flag([-fno-strict-overflow], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fno-strict-overflow"])
# This one will likely succeed, even on platforms where it does nothing.
check_cc_flag([-D_FORTIFY_SOURCE=3], [HARDEN_CFLAGS="$HARDEN_CFLAGS -D_FORTIFY_SOURCE=3"])
check_cc_flag([-fstack-protector-all],
[check_link_flag([-fstack-protector-all],
[HARDEN_CFLAGS="$HARDEN_CFLAGS -fstack-protector-all"
check_cc_flag([-Wstack-protector], [HARDEN_CFLAGS="$HARDEN_CFLAGS -Wstack-protector"],
[], [-fstack-protector-all])
check_cc_flag([--param ssp-buffer-size=1], [HARDEN_CFLAGS="$HARDEN_CFLAGS --param ssp-buffer-size=1"],
[], [-fstack-protector-all])])])
# Added in UnrealIRCd 5.0.5 (default on Ubuntu 19.10)
check_cc_flag([-fstack-clash-protection], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fstack-clash-protection"])
# Control Flow Enforcement (ROP hardening) - requires CPU hardware support (x64)
check_cc_flag([-fcf-protection], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fcf-protection"])
# Similar to above but for arm64
check_cc_flag([-mbranch-protection=standard], [HARDEN_CFLAGS="$HARDEN_CFLAGS -mbranch-protection=standard"])
# Since we have moved from name[1] to name[], setting this should help bounds checking:
check_cc_flag([-fstrict-flex-arrays=3], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fstrict-flex-arrays=3"])
# This zeroes out variables that COULD be accessed before being set.
# We are generally very careful about this in our code, but 3rd party
# modules are not always so careful. And still useful in case we ourselves
# screw up.
check_cc_flag([-ftrivial-auto-var-init=zero], [HARDEN_CFLAGS="$HARDEN_CFLAGS -ftrivial-auto-var-init=zero"])
# At the link step, we might want -pie (GCC) or -Wl,-pie (Clang on OS X)
#
# The linker checks also compile code, so we need to include -fPIE as well.
check_cc_flag([-fPIE],
[check_link_flag([-fPIE -pie],
[HARDEN_BINCFLAGS="-fPIE"
HARDEN_BINLDFLAGS="-pie"],
[check_link_flag([-fPIE -Wl,-pie],
[HARDEN_BINCFLAGS="-fPIE"
HARDEN_BINLDFLAGS="-Wl,-pie"])])])
check_link_flag([-Wl,-z,relro],
[HARDEN_LDFLAGS="$HARDEN_LDFLAGS -Wl,-z,relro"
check_link_flag([-Wl,-z,now], [HARDEN_LDFLAGS="$HARDEN_LDFLAGS -Wl,-z,now"])])])
AC_SUBST([HARDEN_CFLAGS])
AC_SUBST([HARDEN_LDFLAGS])
AC_SUBST([HARDEN_BINCFLAGS])
AC_SUBST([HARDEN_BINLDFLAGS])
# Hardening flags to be used for libraries
# These are the same of what we have, except we leave out -fstrict-flex-arrays=3
# since that would break in some cases of code, and we don't control the libs..
HARDEN_LIB_CFLAGS=$(echo "$HARDEN_CFLAGS" | sed 's/-fstrict-flex-arrays=3//')
HARDEN_LIB_LDFLAGS="$HARDEN_LDFLAGS"
# End of flag tests.
CC="$saved_CC"
CXX="$saved_CXX"
LD="$saved_LD"
dnl HARDENING END
dnl UnrealIRCd might not be strict-aliasing safe at this time
check_cc_flag([-fno-strict-aliasing], [CFLAGS="$CFLAGS -fno-strict-aliasing"])
dnl UnrealIRCd should be able to compile with -fno-common
dnl This also makes ASan (if it is in use) able to instrument these variables.
check_cc_flag([-fno-common], [CFLAGS="$CFLAGS -fno-common"])
dnl Previously -funsigned-char was in a config check. It would always
dnl be enabled with gcc and clang. We now unconditionally enable it,
dnl skipping the check. This will cause an error if someone uses a
dnl non-gcc/non-clang compiler that does not support -funsigned-char
dnl which is good. After all, we really depend on it.
dnl UnrealIRCd should never be compiled without char being unsigned.
CFLAGS="$CFLAGS -funsigned-char"
dnl Compiler -W checks...
dnl == ADD THESE WARNINGS ==
dnl We should be able to turn this on unconditionally:
CFLAGS="$CFLAGS -Wall"
dnl More warnings (if the compiler supports it):
check_cc_flag([-Wextra], [CFLAGS="$CFLAGS -Wextra"])
check_cc_flag([-Waggregate-return], [CFLAGS="$CFLAGS -Waggregate-return"])
check_cc_flag([-Wformat-nonliteral], [CFLAGS="$CFLAGS -Wformat-nonliteral"])
dnl The following few are more experimental, if they have false positives we'll have
dnl to disable them:
dnl Can't use this, too bad: check_cc_flag([-Wlogical-op], [CFLAGS="$CFLAGS -Wlogical-op"])
check_cc_flag([-Wduplicated-cond], [CFLAGS="$CFLAGS -Wduplicated-cond"])
check_cc_flag([-Wduplicated-branches], [CFLAGS="$CFLAGS -Wduplicated-branches"])
check_cc_flag([-Wparentheses], [CFLAGS="$CFLAGS -Wparentheses"])
dnl == REMOVE THESE WARNINGS ==
dnl And now to filter out certain warnings:
dnl [!] NOTE REGARDING THE check_cc_flag used by these:
dnl We check for the -Woption even though we are going to use -Wno-option.
dnl This is due to the following (odd) gcc behavior:
dnl "When an unrecognized warning option is requested (e.g.,
dnl -Wunknown-warning), GCC emits a diagnostic stating that the option is not
dnl recognized. However, if the -Wno- form is used, the behavior is slightly
dnl different: no diagnostic is produced for -Wno-unknown-warning unless
dnl other diagnostics are being produced. This allows the use of new -Wno-
dnl options with old compilers, but if something goes wrong, the compiler
dnl warns that an unrecognized option is present."
dnl Since we don't want to use any unrecognized -Wno-option, we test for
dnl -Woption instead.
dnl Pointer signedness warnings are really a pain and 99.9% of the time
dnl they are of absolutely no use whatsoever. IMO the person who decided
dnl to enable this without -Wall should be shot on sight.
check_cc_flag([-Wpointer-sign], [CFLAGS="$CFLAGS -Wno-pointer-sign"])
dnl This is purely for charsys.c... I like it so we can easily read
dnl this for non-utf8. We can remove it once we ditch non-utf8 some day
dnl of course, or decide to ignore me and encode them.
check_cc_flag([-Winvalid-source-encoding], [CFLAGS="$CFLAGS -Wno-invalid-source-encoding"])
check_cc_flag([-Wformat-zero-length], [CFLAGS="$CFLAGS -Wno-format-zero-length"])
check_cc_flag([-Wformat-truncation], [CFLAGS="$CFLAGS -Wno-format-truncation"])
check_cc_flag([-Wformat-overflow], [CFLAGS="$CFLAGS -Wno-format-overflow"])
dnl While it can be useful to occasionally to compile with warnings about
dnl unused variables and parameters, we often 'think ahead' when coding things
dnl so they may be useless now but not later. Similarly, for variables, we
dnl don't always care about a variable that may still be present in a build
dnl without DEBUGMODE. Unused variables are optimized out anyway.
check_cc_flag([-Wunused], [CFLAGS="$CFLAGS -Wno-unused"])
check_cc_flag([-Wunused-parameter], [CFLAGS="$CFLAGS -Wno-unused-parameter"])
check_cc_flag([-Wunused-but-set-parameter], [CFLAGS="$CFLAGS -Wno-unused-but-set-parameter"])
dnl We use this and this warning is meaningless since 'char' is always unsigned
dnl in UnrealIRCd compiles (-funsigned-char).
check_cc_flag([-Wchar-subscripts], [CFLAGS="$CFLAGS -Wno-char-subscripts"])
check_cc_flag([-Wsign-compare], [CFLAGS="$CFLAGS -Wno-sign-compare"])
dnl Don't warn about empty body, we use this, eg via Debug(()) or in if's.
check_cc_flag([-Wempty-body], [CFLAGS="$CFLAGS -Wno-empty-body"])
dnl This warns about all our hook calls - RunHook() and others
check_cc_flag([-Wdeprecated-non-prototype], [CFLAGS="$CFLAGS -Wno-deprecated-non-prototype"])
dnl This warns about const char hexchars[16] = "0123456789abcdef";
check_cc_flag([-Wunterminated-string-initialization], [CFLAGS="$CFLAGS -Wno-unterminated-string-initialization"])
dnl Yeah this old clang version is a bit problematic
dnl (ships in Ubuntu 16.04 for example)
dnl -Wtautological-compare has false positives
dnl -Wno-pragmas is needed, despite -Wno-unknown-warning-option
AS_IF([$CC --version | grep -q "clang version 3."],
[CFLAGS="$CFLAGS -Wno-tautological-compare -Wno-pragmas"])
dnl This one MUST be LAST!!
dnl It disables -Wsomeunknownoption being an error. Which is needed for
dnl the pragma's in individual files to selectively disable some warnings
dnl on clang/gcc (that may exist in eg gcc but not in clang or vice versa).
check_cc_flag([-Wpragmas], [no_pragmas=1],[no_pragmas=0])
check_cc_flag([-Wunknown-warning-option], [unknown_warning_option=1], [unknown_warning_option=0])
if test "$unknown_warning_option" = "1"; then
dnl This is the best option
CFLAGS="$CFLAGS -Wno-unknown-warning-option"
else
if test "$no_pragmas" = "1"; then
dnl This is a fallback needed for older gcc/clang, it also
dnl disables several other useful warnings/errors related
dnl to pragma's unfortunately.
CFLAGS="$CFLAGS -Wno-pragmas"
fi
fi
dnl End of -W... compiler checks.
dnl module checking based on Hyb7's module checking code
AC_DEFUN([AC_ENABLE_DYN],
[
AC_CHECK_FUNC(dlopen,, [AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS -ldl",
[
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
AC_DEFINE(STATIC_LINKING)
])])
hold_cflags=$CFLAGS
DYNAMIC_LDFLAGS=""
CFLAGS="$CFLAGS -Wl,-export-dynamic"
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
CFLAGS=$hold_cflags
if test "$ac_cv_export_dynamic" = "yes"; then
DYNAMIC_LDFLAGS="-Wl,-export-dynamic"
fi
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
if test "$ac_cv_prog_gcc" = "yes"; then
ac_cv_pic="-fPIC -DPIC -shared"
case `uname -s` in
Darwin*[)]
ac_cv_pic="-std=gnu89 -bundle -flat_namespace -undefined suppress"
;;
HP-UX*[)]
ac_cv_pic="-fPIC"
;;
esac
else
case `uname -s` in
SunOS*[)]
ac_cv_pic="-KPIC -DPIC -G"
;;
esac
fi
])
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
cat >uscore.c << __EOF__
int main(void) {
return 0;
}
__EOF__
$CC -o uscore $CFLAGS uscore.c 1>&5
if test -z "`strings -a uscore |grep '^_main$'`"; then
ac_cv_underscore=no
else
ac_cv_underscore=yes
fi
rm -f uscore uscore.c
])
dnl libtool has built-in tests that determine proper underscorage
if test "$ac_cv_underscore" = "yes"; then
AC_DEFINE([UNDERSCORE], [], [Define if your system prepends an underscore to symbols])
fi
MODULEFLAGS="$ac_cv_pic $DYNAMIC_LDFLAGS $HARDEN_LDFLAGS"
dnl DYNAMIC_LINKING is not meant to be defined in include/setup.h, it's
dnl defined in the Makefiles using -D. Having it defined globally will
dnl only cause braindamage and symbol collisions :-D.
dnl AC_DEFINE([DYNAMIC_LINKING], [], [Link dynamically as opposed to statically. (Dynamic linking is the only supported method of linking atm)])
])
AC_CACHE_CHECK([if your system has IPv6 support], [ac_cv_ip6], [
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
int main(void) {
int s = socket(AF_INET6, SOCK_STREAM, 0);
exit(0); /* We only check if the code compiles, that's enough. We can deal with missing runtime IPv6 */
}
],
[ac_cv_ip6=yes],
[ac_cv_ip6=no])
])
if test "$ac_cv_ip6" = "no"; then
AC_MSG_ERROR([Your system does not support IPv6])
fi
AC_MSG_CHECKING([if you have getsockopt TCP_INFO])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#include <sys/types.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <sys/socket.h>]],
[[
socklen_t optlen = sizeof(struct tcp_info);
struct tcp_info ti;
ti.tcpi_rtt = 0;
ti.tcpi_rttvar = 0;
#if defined(__FreeBSD__)
ti.__tcpi_pmtu = 0;
#else
ti.tcpi_pmtu = 0;
#endif
ti.tcpi_snd_cwnd = 0;
ti.tcpi_snd_mss = 0;
ti.tcpi_rcv_mss = 0;
getsockopt(0, IPPROTO_TCP, TCP_INFO, &ti, &optlen);
]])],
[AC_DEFINE(HAVE_TCP_INFO, 1, [Have getsockopt TCP_INFO])
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
AC_CHECK_HEADER(sys/syslog.h,
AC_DEFINE([SYSSYSLOGH], [], [Define if you have the <sys/syslog.h> header file.]))
AC_CHECK_HEADER(sys/rusage.h,
AC_DEFINE([RUSAGEH], [], [Define if you have the <sys/rusage.h> header file.]))
AC_CHECK_HEADER(glob.h,
AC_DEFINE([GLOBH], [], [Define if you have the <glob.h> header file.]))
AC_CHECK_HEADERS([stdint.h inttypes.h])
dnl Checks for library functions.
AC_CHECK_FUNCS(strlcpy,
AC_DEFINE([HAVE_STRLCPY], [], [Define if you have strlcpy. Otherwise, an internal implementation will be used!]))
AC_CHECK_FUNCS(strlcat,
AC_DEFINE([HAVE_STRLCAT], [], [Define if you have strlcat]))
AC_CHECK_FUNCS(strlncat,
AC_DEFINE([HAVE_STRLNCAT], [], [Define if you have strlncat]))
AC_CHECK_FUNCS(strlncpy,
AC_DEFINE([HAVE_STRLNCPY], [], [Define if you have strlncpy]))
AC_CHECK_FUNCS([getrusage],
[AC_DEFINE([GETRUSAGE_2], [], [Define if you have getrusage])],
[AC_CHECK_FUNCS([times],
[AC_DEFINE([TIMES_2], [], [Define if you have times])])])
AC_CHECK_FUNCS([setproctitle],
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])],
[AC_CHECK_LIB([util],
[setproctitle],
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])
IRCDLIBS="$IRCDLIBS-lutil"],
[
AC_EGREP_HEADER([#define.*PS_STRINGS.*],[sys/exec.h],
[AC_DEFINE([HAVE_PSSTRINGS],[], [Define if you have PS_STRINGS])],
[AC_CHECK_FUNCS([pstat],
[AC_DEFINE([HAVE_PSTAT], [], [Define if you have pstat])])])
])
]
)
AC_CHECK_FUNCS(explicit_bzero,AC_DEFINE([HAVE_EXPLICIT_BZERO], [], [Define if you have explicit_bzero]))
AC_CHECK_FUNCS(syslog,AC_DEFINE([HAVE_SYSLOG], [], [Define if you have syslog]))
AC_CHECK_FUNCS(strnlen,AC_DEFINE([HAVE_STRNLEN], [], [Define if you have strnlen]))
AC_SUBST(CRYPTOLIB)
AC_SUBST(MODULEFLAGS)
AC_SUBST(DYNAMIC_LDFLAGS)
AC_ARG_WITH(nick-history, [AS_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
[AC_DEFINE_UNQUOTED([NICKNAMEHISTORYLENGTH], [$withval], [Set to the nickname history length you want])],
[AC_DEFINE([NICKNAMEHISTORYLENGTH], [2000], [Set to the nickname history length you want])])
AC_ARG_WITH(permissions, [AS_HELP_STRING([--with-permissions=permissions], [Specify the default permissions for
configuration files])],
dnl We have an apparently out-of-place 0 here because of a MacOSX bug and because
dnl we assume that a user thinks that `chmod 0600 blah' is the same as `chmod 600 blah'
dnl (#3189)
[AC_DEFINE_UNQUOTED([DEFAULT_PERMISSIONS], [0$withval], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])],
[AC_DEFINE([DEFAULT_PERMISSIONS], [0600], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])])
AC_ARG_WITH(bindir, [AS_HELP_STRING([--with-bindir=path],[Specify the directory for the unrealircd binary])],
[AC_DEFINE_UNQUOTED([BINDIR], ["$withval"], [Define the directory where the unrealircd binary is located])
BINDIR="$withval"],
[AC_DEFINE_UNQUOTED([BINDIR], ["$HOME/unrealircd/bin"], [Define the directory where the unrealircd binary is located])
BINDIR="$HOME/unrealircd/bin"])
AC_ARG_WITH(scriptdir, [AS_HELP_STRING([--with-scriptdir=path],[Specify the directory for the unrealircd start-stop script])],
[AC_DEFINE_UNQUOTED([SCRIPTDIR], ["$withval"], [Define the directory where the unrealircd start stop scripts is located])
SCRIPTDIR="$withval"],
[AC_DEFINE_UNQUOTED([SCRIPTDIR], ["$HOME/unrealircd"], [Define the directory where the unrealircd start stop scripts is located])
SCRIPTDIR="$HOME/unrealircd"])
AC_ARG_WITH(confdir, [AS_HELP_STRING([--with-confdir=path],[Specify the directory where configuration files are stored])],
[AC_DEFINE_UNQUOTED([CONFDIR], ["$withval"], [Define the location of the configuration files])
CONFDIR="$withval"],
[AC_DEFINE_UNQUOTED([CONFDIR], ["$HOME/unrealircd/conf"], [Define the location of the configuration files])
CONFDIR="$HOME/unrealircd/conf"])
dnl We have to pass the builddir as well, for the module manager
AC_ARG_WITH(builddir, [AS_HELP_STRING([--with-builddir=path],[Specify the build directory])],
[AC_DEFINE_UNQUOTED([BUILDDIR], ["$withval"], [Define the build directory])
BUILDDIR="$withval"],
[AC_DEFINE_UNQUOTED([BUILDDIR], ["$BUILDDIR_NOW"], [Specify the build directory])
BUILDDIR="$BUILDDIR_NOW"])
AC_ARG_WITH(modulesdir, [AS_HELP_STRING([--with-modulesdir=path],[Specify the directory for loadable modules])],
[AC_DEFINE_UNQUOTED([MODULESDIR], ["$withval"], [Define the location of the modules])
MODULESDIR="$withval"],
[AC_DEFINE_UNQUOTED([MODULESDIR], ["$HOME/unrealircd/modules"], [Define the location of the modules])
MODULESDIR="$HOME/unrealircd/modules"])
AC_ARG_WITH(logdir, [AS_HELP_STRING([--with-logdir=path],[Specify the directory where log files are stored])],
[AC_DEFINE_UNQUOTED([LOGDIR], ["$withval"], [Define the location of the log files])
LOGDIR="$withval"],
[AC_DEFINE_UNQUOTED([LOGDIR], ["$HOME/unrealircd/logs"], [Define the location of the log files])
LOGDIR="$HOME/unrealircd/logs"])
AC_ARG_WITH(cachedir, [AS_HELP_STRING([--with-cachedir=path],[Specify the directory where cached files are stored])],
[AC_DEFINE_UNQUOTED([CACHEDIR], ["$withval"], [Define the location of the cached remote include files])
CACHEDIR="$withval"],
[AC_DEFINE_UNQUOTED([CACHEDIR], ["$HOME/unrealircd/cache"], [Define the location of the cached remote include files])
CACHEDIR="$HOME/unrealircd/cache"])
AC_ARG_WITH(tmpdir, [AS_HELP_STRING([--with-tmpdir=path],[Specify the directory where private temporary files are stored. Should not be readable or writable by others, so not /tmp!!])],
[AC_DEFINE_UNQUOTED([TMPDIR], ["$withval"], [Define the location of private temporary files])
TMPDIR="$withval"],
[AC_DEFINE_UNQUOTED([TMPDIR], ["$HOME/unrealircd/tmp"], [Define the location of private temporary files])
TMPDIR="$HOME/unrealircd/tmp"])
AC_ARG_WITH(datadir, [AS_HELP_STRING([--with-datadir=path],[Specify the directory where permanent data is stored])],
[AC_DEFINE_UNQUOTED([PERMDATADIR], ["$withval"], [Define the location of permanent data files])
PERMDATADIR="$withval"],
[AC_DEFINE_UNQUOTED([DATADIR], ["$HOME/unrealircd/data"], [Define the location of permanent data files])
PERMDATADIR="$HOME/unrealircd/data"])
AC_ARG_WITH(docdir, [AS_HELP_STRING([--with-docdir=path],[Specify the directory where documentation is stored])],
[AC_DEFINE_UNQUOTED([DOCDIR], ["$withval"], [Define the location of the documentation])
DOCDIR="$withval"],
[AC_DEFINE_UNQUOTED([DOCDIR], ["$HOME/unrealircd/doc"], [Define the location of the documentation])
DOCDIR="$HOME/unrealircd/doc"])
AC_ARG_WITH(pidfile, [AS_HELP_STRING([--with-pidfile=path],[Specify the path of the pid file])],
[AC_DEFINE_UNQUOTED([PIDFILE], ["$withval"], [Define the path of the pid file])
PIDFILE="$withval"],
[AC_DEFINE_UNQUOTED([PIDFILE], ["$HOME/unrealircd/data/unrealircd.pid"], [Define the path of the pid file])
PIDFILE="$HOME/unrealircd/data/unrealircd.pid"])
AC_ARG_WITH(controlfile, [AS_HELP_STRING([--with-controlfile=path],[Specify the path of the control socket])],
[AC_DEFINE_UNQUOTED([CONTROLFILE], ["$withval"], [Define the path of the control socket])
CONTROLFILE="$withval"],
[AC_DEFINE_UNQUOTED([CONTROLFILE], ["$HOME/unrealircd/data/unrealircd.ctl"], [Define the path of the control socket])
CONTROLFILE="$HOME/unrealircd/data/unrealircd.ctl"])
dnl Ensure that this “feature” can be disabled as it makes it harder to package unrealircd.
dnl Users have always been able to specify “./configure LDFLAGS=-Wl,-rpath,/path/to/blah”—binki
AC_ARG_WITH(privatelibdir, [AS_HELP_STRING([--with-privatelibdir=path],[Specify the directory where private libraries are stored. Disable when building a package for a distro])],
[],
[with_privatelibdir="yes"])
AS_IF([test "x$with_privatelibdir" = "xno"],
[PRIVATELIBDIR=],
[test "x$with_privatelibdir" = "xyes"],
[PRIVATELIBDIR="$HOME/unrealircd/lib"],
[PRIVATELIBDIR="$with_privatelibdir"])
AS_IF([test "x$PRIVATELIBDIR" = "x"],
[LDFLAGS_PRIVATELIBS=""],
[AC_DEFINE_UNQUOTED([PRIVATELIBDIR], ["$PRIVATELIBDIR"], [Define the location of private libraries])
# Create the private library directory now with restrictive permissions.
# This must happen here rather than in the Makefile because the bundled
# libraries are installed into it during configure. It must also work when
# configure is run directly without ./Config having created it first.
mkdir -p "$PRIVATELIBDIR" && chmod 0700 "$PRIVATELIBDIR"
LDFLAGS_PRIVATELIBS="-Wl,-rpath,$PRIVATELIBDIR"
LDFLAGS="$LDFLAGS $LDFLAGS_PRIVATELIBS"
export LDFLAGS])
AC_SUBST(BUILDDIR)
AC_SUBST(BINDIR)
AC_SUBST(SCRIPTDIR)
AC_SUBST(CONFDIR)
AC_SUBST(MODULESDIR)
AC_SUBST(LOGDIR)
AC_SUBST(CACHEDIR)
AC_SUBST(TMPDIR)
dnl Why o why PERMDATADIR and not DATADIR you ask?
dnl well, Because DATADIR conflicts with the Windows SDK header files.. amazing.
AC_SUBST(PERMDATADIR)
AC_SUBST(DOCDIR)
AC_SUBST(PIDFILE)
AC_SUBST(CONTROLFILE)
AC_SUBST(LDFLAGS_PRIVATELIBS)
AC_ARG_WITH(maxconnections, [AS_HELP_STRING([--with-maxconnections=size], [Specify the max file descriptors to use])],
[ac_fd=$withval],
[ac_fd=0])
AC_DEFINE_UNQUOTED([MAXCONNECTIONS_REQUEST], [$ac_fd], [Set to the maximum number of connections you want])
AC_ARG_WITH(no-operoverride, [AS_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([NO_OPEROVERRIDE], [], [Define if you want OperOverride disabled])])])
AC_ARG_WITH(operoverride-verify, [AS_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
[AS_IF([test $withval = "yes"],
[AC_DEFINE([OPEROVERRIDE_VERIFY], [], [Define if you want opers to have to use /invite to join +s/+p channels])])])
AC_ARG_WITH(system-pcre2, [AS_HELP_STRING([--without-system-pcre2], [Use the system pcre2 package instead of bundled, discovered using pkg-config])], [], [with_system_pcre2=yes])
AC_ARG_WITH(system-argon2, [AS_HELP_STRING([--with-system-argon2], [Use system argon2 instead of bundled version. Normally we prefer the one shipped with unrealircd because it is much faster])], [], [with_system_argon2=no])
AC_ARG_WITH(system-sodium, [AS_HELP_STRING([--without-system-sodium], [Use bundled version instead of system sodium library. Normally autodetected via pkg-config])], [], [with_system_sodium=yes])
AC_ARG_WITH(system-cares, [AS_HELP_STRING([--without-system-cares], [Use bundled version instead of system c-ares. Normally autodetected via pkg-config.])], [], [with_system_cares=yes])
AC_ARG_WITH(system-jansson, [AS_HELP_STRING([--without-system-jansson], [Use bundled version instead of system jansson. Normally autodetected via pkg-config.])], [], [with_system_jansson=yes])
CHECK_SSL
CHECK_SSL_CTX_SET1_SIGALGS_LIST
CHECK_SSL_CTX_SET1_CURVES_LIST
CHECK_SSL_CTX_SET1_GROUPS_LIST
CHECK_SSL_GET_NEGOTIATED_GROUP
CHECK_SSL_CTX_SET_MIN_PROTO_VERSION
CHECK_SSL_CTX_SET_SECURITY_LEVEL
CHECK_ASN1_TIME_diff
CHECK_X509_get0_notAfter
CHECK_X509_check_host
AC_ARG_ENABLE(dynamic-linking, [AS_HELP_STRING([--disable-dynamic-linking], [Make the IRCd statically link with shared objects rather than dynamically (noone knows if disabling dynamic linking actually does anything or not)])],
[enable_dynamic_linking=$enableval], [enable_dynamic_linking="yes"])
AS_IF([test $enable_dynamic_linking = "yes"],
[AC_ENABLE_DYN],
[AC_DEFINE([STATIC_LINKING], [], [Link... statically(?) (defining this macro will probably cause the build tofail)])])
AC_ARG_ENABLE([werror],
[AS_HELP_STRING([--enable-werror],
[Turn compilation warnings into errors (-Werror)])],
[ac_cv_werror="$enableval"],
[ac_cv_werror="no"])
AC_ARG_ENABLE([asan],
[AS_HELP_STRING([--enable-asan],
[Enable address sanitizer and other debugging options, not recommended for production servers!])],
[ac_cv_asan="$enableval"],
[ac_cv_asan="no"])
AC_CHECK_FUNCS([poll],
AC_DEFINE([HAVE_POLL], [], [Define if you have poll]))
AC_CHECK_FUNCS([epoll_create epoll_ctl epoll_wait],
AC_DEFINE([HAVE_EPOLL], [], [Define if you have epoll]))
AC_CHECK_FUNCS([kqueue kevent],
AC_DEFINE([HAVE_KQUEUE], [], [Define if you have kqueue]))
dnl c-ares needs PATH_SEPARATOR set or it will
dnl fail on certain solaris boxes. We might as
dnl well set it here.
export PATH_SEPARATOR
dnl Use system pcre2 when available, unless --without-system-pcre2.
has_system_pcre2="no"
AS_IF([test "x$with_system_pcre2" = "xyes"],[
PKG_CHECK_MODULES([PCRE2], libpcre2-8 >= 10.36,[has_system_pcre2=yes
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libpcre2*])],[has_system_pcre2=no])])
AS_IF([test "$has_system_pcre2" = "no"], [
dnl REMEMBER TO CHANGE WITH A NEW PCRE2 RELEASE!
pcre2_version="10.47"
AC_MSG_RESULT(extracting PCRE2 regex library)
cur_dir=`pwd`
cd extras
dnl remove old pcre2 directory to force a recompile...
dnl and remove its installation prefix just to clean things up.
rm -rf pcre2-$pcre2_version pcre2
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz pcre2.tar.gz
else
cp pcre2.tar.gz pcre2.tar.gz.bak
gunzip -f pcre2.tar.gz
cp pcre2.tar.gz.bak pcre2.tar.gz
tar xf pcre2.tar
fi
AC_MSG_RESULT(configuring PCRE2 regex library)
cd pcre2-$pcre2_version
save_cflags="$CFLAGS"
save_ldflags="$LDFLAGS"
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
LDFLAGS="$HARDEN_LIB_LDFLAGS"
export CFLAGS LDFLAGS
./configure --enable-jit --enable-shared --prefix=$cur_dir/extras/pcre2 --libdir=$PRIVATELIBDIR || exit 1
CFLAGS="$save_cflags"
LDFLAGS="$save_ldflags"
AC_MSG_RESULT(compiling PCRE2 regex library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing PCRE2 regex library)
rm -f "$PRIVATELIBDIR/"libpcre2*
$ac_cv_prog_MAKER install || exit 1
PCRE2_CFLAGS="-I$cur_dir/extras/pcre2/include"
AC_SUBST(PCRE2_CFLAGS)
PCRE2_LIBS=
dnl See c-ares's compilation section for more info on this hack.
dnl ensure that we're linking against the bundled version of pcre2
dnl (we only reach this code if linking against the bundled version is desired).
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
[PCRE2_LIBS="`$ac_cv_path_PKGCONFIG --libs libpcre2-8.pc`"])
dnl For when pkg-config isn't available -- or for when pkg-config
dnl doesn't see the libpcre2-8.pc file somehow... (#3982)
AS_IF([test -z "$PCRE2_LIBS"],
[PCRE2_LIBS="$PRIVATELIBDIR/libpcre2-8.so"])
AC_SUBST(PCRE2_LIBS)
cd $cur_dir
])
dnl Use system argon2 when available, unless --without-system-argon2
has_system_argon2="no"
AS_IF([test "x$with_system_argon2" = "xyes"],[
PKG_CHECK_MODULES([ARGON2], [libargon2 >= 0~20161029],[has_system_argon2=yes
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libargon2*])],[has_system_argon2=no])])
AS_IF([test "$has_system_argon2" = "no"],[
dnl REMEMBER TO CHANGE WITH A NEW ARGON2 RELEASE!
argon2_version="20190702"
AC_MSG_RESULT(extracting Argon2 library)
cur_dir=`pwd`
cd extras
dnl remove old argon2 directory to force a recompile...
dnl and remove its installation prefix just to clean things up.
rm -rf argon2-$argon2_version argon2
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz argon2.tar.gz
else
cp argon2.tar.gz argon2.tar.gz.bak
gunzip -f argon2.tar.gz
cp argon2.tar.gz.bak argon2.tar.gz
tar xf argon2.tar
fi
save_cflags="$CFLAGS"
save_ldflags="$LDFLAGS"
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
LDFLAGS="$HARDEN_LIB_LDFLAGS"
export CFLAGS LDFLAGS
AC_MSG_RESULT(compiling Argon2 library)
cd argon2-$argon2_version
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing Argon2 library)
$ac_cv_prog_MAKER install PREFIX=$cur_dir/extras/argon2 || exit 1
# We need to manually copy the libs to PRIVATELIBDIR because
# there is no way to tell make install in libargon2 to do so.
# BUT FIRST, delete the old library so it becomes an unlink+create
# operation rather than overwriting the existing file which would
# lead to a crash of the currently running IRCd.
rm -f "$PRIVATELIBDIR/"libargon2*
# Now copy the new library files:
cp -av $cur_dir/extras/argon2/lib/* $PRIVATELIBDIR/ || exit 1
CFLAGS="$save_cflags"
LDFLAGS="$save_ldflags"
ARGON2_CFLAGS="-I$cur_dir/extras/argon2/include"
AC_SUBST(ARGON2_CFLAGS)
ARGON2_LIBS="-L$PRIVATELIBDIR -largon2"
AC_SUBST(ARGON2_LIBS)
cd $cur_dir
])
dnl Use system sodium when available, unless --without-system-sodium
has_system_sodium="no"
AS_IF([test "x$with_system_sodium" = "xyes"],[
PKG_CHECK_MODULES([SODIUM], [libsodium >= 1.0.16],[has_system_sodium=yes
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libsodium*])],[has_system_sodium=no])])
AS_IF([test "$has_system_sodium" = "no"],[
dnl REMEMBER TO CHANGE WITH A NEW SODIUM RELEASE!
sodium_version="1.0.22"
AC_MSG_RESULT(extracting sodium library)
cur_dir=`pwd`
cd extras
dnl remove old sodium directory to force a recompile...
dnl and remove its installation prefix just to clean things up.
rm -rf sodium-$sodium_version sodium
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz libsodium.tar.gz
else
cp libsodium.tar.gz libsodium.tar.gz.bak
gunzip -f libsodium.tar.gz
cp libsodium.tar.gz.bak libsodium.tar.gz
tar xf libsodium.tar
fi
AC_MSG_RESULT(compiling sodium library)
cd libsodium-$sodium_version
save_cflags="$CFLAGS"
save_ldflags="$LDFLAGS"
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
LDFLAGS="$HARDEN_LIB_LDFLAGS"
export CFLAGS LDFLAGS
./configure --prefix=$cur_dir/extras/sodium --libdir=$PRIVATELIBDIR --enable-shared --disable-static --enable-opt || exit 1
CFLAGS="$save_cflags"
LDFLAGS="$save_ldflags"
AC_MSG_RESULT(compiling sodium resolver library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing sodium resolver library)
rm -f "$PRIVATELIBDIR/"libsodium*
$ac_cv_prog_MAKER install || exit 1
SODIUM_CFLAGS="-I$cur_dir/extras/sodium/include"
AC_SUBST(SODIUM_CFLAGS)
SODIUM_LIBS=
dnl See c-ares's compilation section for more info on this hack.
dnl ensure that we're linking against the bundled version
dnl (we only reach this code if linking against the bundled version is desired).
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
[SODIUM_LIBS="`$ac_cv_path_PKGCONFIG --libs libsodium.pc`"])
dnl For when pkg-config isn't available
AS_IF([test -z "$SODIUM_LIBS"],
[SODIUM_LIBS="-L$PRIVATELIBDIR -lsodium"])
AC_SUBST(SODIUM_LIBS)
cd $cur_dir
])
dnl Use system c-ares when available, unless --without-system-cares.
has_system_cares="no"
AS_IF([test "x$with_system_cares" = "xyes"],[
PKG_CHECK_MODULES([CARES], libcares >= 1.6.0,[has_system_cares=yes
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libcares*])],[has_system_cares=no])])
AS_IF([test "$has_system_cares" = "no"], [
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
cares_version="1.34.6"
AC_MSG_RESULT(extracting c-ares resolver library)
cur_dir=`pwd`
cd extras
dnl remove old c-ares directory to force a recompile...
rm -rf c-ares-$cares_version c-ares
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz c-ares.tar.gz
else
cp c-ares.tar.gz c-ares.tar.gz.bak
gunzip -f c-ares.tar.gz
cp c-ares.tar.gz.bak c-ares.tar.gz
tar xf c-ares.tar
fi
AC_MSG_RESULT(configuring c-ares library)
cd c-ares-$cares_version
save_cflags="$CFLAGS"
save_ldflags="$LDFLAGS"
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
LDFLAGS="$HARDEN_LIB_LDFLAGS"
export CFLAGS LDFLAGS
./configure --prefix=$cur_dir/extras/c-ares --libdir=$PRIVATELIBDIR --enable-shared --disable-tests || exit 1
CFLAGS="$save_cflags"
LDFLAGS="$save_ldflags"
AC_MSG_RESULT(compiling c-ares resolver library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing c-ares resolver library)
rm -f "$PRIVATELIBDIR/"libcares*
$ac_cv_prog_MAKER install || exit 1
CARES_CFLAGS="-I$cur_dir/extras/c-ares/include"
AC_SUBST(CARES_CFLAGS)
CARES_LIBS="-L$PRIVATELIBDIR"
dnl Set default library parameters for when pkg-config is not available
dnl Ugly cd'ing out of extras/c-ares-xxx ;)
dnl Note: must be a full path, not relative path.
cd ../..
CARESLIBSALT="$PRIVATELIBDIR/libcares.so"
cd -
case `uname -s` in
*FreeBSD*)
CARESLIBSALT="$CARESLIBSALT"
;;
*Linux*)
CARESLIBSALT="$CARESLIBSALT -lrt"
;;
*SunOS*)
CARESLIBSALT="$CARESLIBSALT -lrt"
;;
esac
dnl Use pkg-config for c-ares libraries, and if not available use defaults
dnl from above (also if pkg-config returns an empty result).
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
else
CARES_LIBSPRE="$CARES_LIBS"
dnl the sed expression forces an absolute path to the .so file to be generated
dnl because this is what libtool would do. If this wasn't done and /usr/lib*/libcares.so
dnl exists, then unrealircd would still try to link against the system c-ares.
dnl The [] quotation is needed because the sed expression has [] in it.
[CARES_LIBS="$CARES_LIBS `$ac_cv_path_PKGCONFIG --libs libcares.pc | sed -e 's,-L\([^ ]\+lib\) -lcares,\1/libcares.so,'`"]
if test "$CARES_LIBS" = "$CARES_LIBSPRE " ; then
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
fi
fi
AC_SUBST(CARES_LIBS)
cd $cur_dir
])
dnl Use system jansson when available, unless --without-system-jansson
has_system_jansson="no"
AS_IF([test "x$with_system_jansson" = "xyes"],[
PKG_CHECK_MODULES([JANSSON], [jansson >= 2.0.0],[has_system_jansson=yes
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libjansson*])],[has_system_jansson=no])])
AS_IF([test "$has_system_jansson" = "no"],[
dnl REMEMBER TO CHANGE WITH A NEW JANSSON RELEASE!
jansson_version="2.15.0"
AC_MSG_RESULT(extracting jansson library)
cur_dir=`pwd`
cd extras
dnl remove old jansson directory to force a recompile...
dnl and remove its installation prefix just to clean things up.
rm -rf jansson-$jansson_version jansson
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz jansson.tar.gz
else
cp jansson.tar.gz jansson.tar.gz.bak
gunzip -f jansson.tar.gz
cp jansson.tar.gz.bak jansson.tar.gz
tar xf jansson.tar
fi
AC_MSG_RESULT(compiling jansson library)
cd jansson-$jansson_version
save_cflags="$CFLAGS"
save_ldflags="$LDFLAGS"
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
LDFLAGS="$HARDEN_LIB_LDFLAGS"
export CFLAGS LDFLAGS
./configure --prefix=$cur_dir/extras/jansson --libdir=$PRIVATELIBDIR --enable-shared --disable-static || exit 1
CFLAGS="$save_cflags"
LDFLAGS="$save_ldflags"
AC_MSG_RESULT(compiling jansson resolver library)
$ac_cv_prog_MAKER || exit 1
AC_MSG_RESULT(installing jansson resolver library)
rm -f "$PRIVATELIBDIR/"libjansson*
$ac_cv_prog_MAKER install || exit 1
JANSSON_CFLAGS="-I$cur_dir/extras/jansson/include"
AC_SUBST(JANSSON_CFLAGS)
JANSSON_LIBS=
dnl See c-ares's compilation section for more info on this hack.
dnl ensure that we're linking against the bundled version
dnl (we only reach this code if linking against the bundled version is desired).
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
[JANSSON_LIBS="`$ac_cv_path_PKGCONFIG --libs jansson.pc`"])
dnl ^^^ FIXME FIXME this is likely incorrect the .pc etc
dnl For when pkg-config isn't available
AS_IF([test -z "$JANSSON_LIBS"],
[JANSSON_LIBS="-L$PRIVATELIBDIR -ljansson"])
AC_SUBST(JANSSON_LIBS)
cd $cur_dir
])
AX_PTHREAD()
CHECK_LIBCURL
CHECK_GEOIP_CLASSIC
dnl This does not do much anymore but..
AC_ARG_ENABLE(mmdb,
[AC_HELP_STRING([--enable-mmdb=no/yes],[enable GeoIP mmdb support])],
[enable_mmdb=$enableval],
[enable_mmdb=no])
AS_IF([test "x$enable_mmdb" = "xyes"],
[AC_DEFINE([GEOIP_ENGINE], ["geoip_mmdb"], [MMDB GeoIP engine])])
dnl Set to include dir
UNRLINCDIR="`pwd`/include"
dnl This is at the end so the (potential) -std=gnu17 is not used
dnl when compiling libraries, as their requirements may be different.
AC_MSG_CHECKING([if explicit -std=gnu17 is needed])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#include <sys/types.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <sys/socket.h>]],
[[
void (*test)();
test = exit;
test(0);
]])],
[AC_MSG_RESULT(no)],
[CFLAGS="$CFLAGS -std=gnu17"
AC_MSG_RESULT(yes)])
dnl Moved to the very end to ensure it doesn't affect any libs or tests.
if test "$ac_cv_werror" = "yes" ; then
CFLAGS="$CFLAGS -Werror"
fi
dnl Address sanitizer build
if test "$ac_cv_asan" = "yes" ; then
CFLAGS="$CFLAGS -O2 -fno-inline -fsanitize=address,undefined -fno-omit-frame-pointer -DNOCLOSEFD"
IRCDLIBS="-fsanitize=address $IRCDLIBS"
fi
AC_SUBST(IRCDLIBS)
AC_SUBST(UNRLINCDIR)
AC_CONFIG_FILES([Makefile
src/Makefile
src/modules/Makefile
src/modules/chanmodes/Makefile
src/modules/usermodes/Makefile
src/modules/extbans/Makefile
src/modules/rpc/Makefile
src/modules/third/Makefile
extras/unrealircd-upgrade-script
unrealircd])
AC_OUTPUT
chmod 0700 unrealircd
-66
View File
@@ -1,66 +0,0 @@
#!/bin/sh
if test "x$1" = x -o "x$2" = x ; then
echo "Syntax:"
echo "curlinstall ares_path libcurl_path"
echo ""
exit 1
fi
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
c="\c"
else
n="-n"
fi
save_PWD=`pwd`
echo "Installing ares"
cd $1
./configure --prefix=$HOME/ares && make && make install
SSLFLAG=""
while [ -z "$SSLFLAG" ] ; do
echo ""
echo "Should libcurl be built with SSL support?"
echo $n "-> " $c
read cc
case "$cc" in
[Yy]*)
SSLFLAG="--with-ssl"
;;
[Nn]*)
SSLFLAG="--without-ssl"
;;
*)
echo ""
echo "You must enter either Yes or No"
;;
esac
done
if [ -f $HOME/ares/lib/libcares.a ] ; then
if [ -f $HOME/ares/lib/libares.a ] ; then
rm -f $HOME/ares/lib/libares.a
fi
cp $HOME/ares/lib/libcares.a $HOME/ares/lib/libares.a
fi
echo "Installing libcurl"
cd $2
CPPFLAGS="-I$HOME/ares/include" ./configure --prefix=$HOME/curl --disable-shared \
--disable-thread --enable-ares=$HOME/ares --disable-ipv6 $SSLFLAG
cp -R $HOME/ares/lib ares
make && make install
if [ -f $HOME/curl/lib/libares.a ] ; then
rm -f $HOME/curl/lib/libares.a
fi
cp $HOME/ares/lib/libares.a $HOME/curl/lib
cd $save_PWD
echo ""
echo ""
echo "libcurl has been installed. When running ./Config specify:"
echo "$HOME/curl"
echo "for the directory you installed libcurl to."
+7 -6
View File
@@ -119,12 +119,13 @@ Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
lines worth. :)
UnrealIRCd Coders
Carsten Munk <stskeeps@unrealircd.com> / May 1999, date
Dominick Meglio <codemastr@unrealircd.com> / June 1999, date
David Flynn / March 2000, June 2000
McSkaf / June 2001, September 2001
Finny Merrill <griever@unrealircd.com> / November 2001, December 2002
Bram Matthys <syzop@unrealircd.com> / January 2002, date
Carsten Munk <stskeeps@unrealircd.com> / May 1999 - December 2008
Dominick Meglio <codemastr@unrealircd.com> / June 1999 - August 2005
David Flynn / March 2000 - June 2000
McSkaf / June 2001 - September 2001
Finny Merrill <griever@unrealircd.com> / November 2001 - December 2002
Bram Matthys <syzop@unrealircd.com> / January 2002 - date
This list is incomplete, type /INFO on IRC to find the updated list.
Thanks go to those persons not mentioned here who have added their advice,
opinions, and code to IRC.
+32
View File
@@ -0,0 +1,32 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for UnrealIRCd 6.2.6
This program will help you to compile your IRC server, and ask you
questions regarding the compile-time settings of it during the process.
A short installation guide is available online at:
https://www.unrealircd.org/docs/Installing_from_source
Full documentation is available at:
https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
--------------------------------------------------------------------------------------
The full release notes are available in doc/RELEASE-NOTES.md
For easier viewing, check out the latest online release notes at:
https://github.com/unrealircd/unrealircd/blob/unreal60_dev/doc/RELEASE-NOTES.md
UnrealIRCd 6 is compatible with the following services:
* anope 2.0.x (stable) with the "unreal4" protocol module - anope 2.0.7 or higher required
* anope 2.1.x (dev) with the "unrealircd" protocol module
* atheme with the "unreal4" protocol module - tested with version 7.2.9
--------------------------------------------------------------------------------------
+33
View File
@@ -0,0 +1,33 @@
pub rsa4096 2024-11-18 [SC] [expires: 2030-11-17]
36E6F65706E36B0937280299101001DAF48BB56D
uid UnrealIRCd releases and patches (for verification of software downloads only!) <releases@unrealircd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGc7EBEBEADDZzlLVArYr2kE9NlhnuUF31rW3wvZ4avjhzhmO6bL0I0RESZC
PrtiFVJyjcSScObOVONFSC2YQiLVpezkKX4AYoqfnsuWfHg3xlGqCY8Ip+V5XJ6v
8G5haFFEgTL10UtqzPNymygWmoEr11u3BUKIzAJAuec7dl7PyfGU2JDkl+NtWm31
WyKCMuK3TKaD8UjGd5PPQR4jA6k1Hn8kvUl53EmkJjRyJc1XVz4AjZFywyUENGJv
HVdVFOPDaKzIx6N6+2dm0ZxXIPOISycwEQuk1++E7NyOS5u+lzlFN7RAXR/5Ogv5
pZzdcsPXp0RHHVeM8qgV7kvRTG9xhfFcXjs9Hanp2siy80HWs56o7nNN2eQNA31W
5lfGIWaA3pY4rpBoiQc3IMGD+vkACfRFH468+cx50zP9gbqSaxUaj6Z0e/jBNf26
7MIEKUjVCunQjO0Lob346FTAvdnXEXCwwJdQFF2tkxnpUBs6sSXjJwVgsfrkizXS
X0qsX7DTn9QpF9Z+0czqdoyJuLLPOFx+6Xj7l2riBYyzMAa8c6odLXTReMaVxFN+
clIVMCrfYXuURb4QGKB0ewW/wZd1fgsPAV4D1qypFAnM0D+qsfpKFI1QQY7WEUcC
YVMkzjZHPWaBdRQf7KLXasx7/ouM5nIlZdRrPDrCXXiqAlA20aWqvZ8N1wARAQAB
tGhVbnJlYWxJUkNkIHJlbGVhc2VzIGFuZCBwYXRjaGVzIChmb3IgdmVyaWZpY2F0
aW9uIG9mIHNvZnR3YXJlIGRvd25sb2FkcyBvbmx5ISkgPHJlbGVhc2VzQHVucmVh
bGlyY2Qub3JnPokCVAQTAQoAPhYhBDbm9lcG42sJNygCmRAQAdr0i7VtBQJnOxAR
AhsDBQkLRzUABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEBAQAdr0i7Vt1hoQ
ALCuqTuVqYOiwBsccS8Qt52l+8pOr0hcF49GM+eBM7Evq2tlwL4FOEyzbsO94yRH
qTxGg/0puYkF74+vZnS2Vlo/F90FTmypy4oVQr+K/dd11ZEVLEpNcdaXuj68vP4c
UCsUPmQyPGERCIlKMe1U+n6yQWgx7xLbuqlOuxcwKDddYa6hhToogUxBbdOZZrYl
I4LN38ztSr0xjp0b67gdrMgOByS/r1AOX61L4DL2/glGOCt4GpKWPj8bOrK+Y/eK
HRK72TezQ+XPFAqsXNmeaLBVVFM8L3fPBBEmVV5tULZ7+/3Qlyub78/OK3Y1/fV7
qFY1S0WnTWY5mBNtUSgF9bGK/UyySNtPFtihmyg0xGQ/cNwiH7QXp38LboEBDoTF
lRT42nX1Nw9KpIWqGPTowB4qhN7znAseYkuH1XtDJHm1OKQjUB8lyBupq3cXYUju
JJH4zfdpWeLWQktb3D8uQsvEBcIyaVRs8wlPdAQBZBL0cLvE0ACpcsbsua26ihzB
ZCGzYmdZvBPpRo2e5xzC9ur3VOQzHqsebFrRKzDD6PgYCgnqJ+03vMToGua9MVX+
FFd2BSLO3UGUPdZESNzik2cILyZPRucwGWnL4wh+v+eOP9ZS4QpACye38VkGWUVR
YqzzK4QaI3m1xrRbcuCXdiMymWnWV3yW6AU+eGB8aEDW
=p0TV
-----END PGP PUBLIC KEY BLOCK-----
+2761
View File
File diff suppressed because it is too large Load Diff
+100 -18
View File
@@ -1,21 +1,72 @@
Rules about patches & modifications to UnrealIRCd
Some minor rules about patches & modifications to UnrealIRCd
1. When making a change, always add a small description in the commit log.
Don't forget to mention the bug# and credit the reporter (if any).
1. When making a change, always add a small description in Changes, in the
BOTTOM
2. If new files are made, they must contain proper copyright headers.
2. If new files are made, it must contain proper copyright headers,
and a $Id$ somewhere.
3. Each bug or feature should have a bug# so people can have a discussion
about it. This has a few implications (read!!):
* People must report bugs/feature requests to bugs.unrealircd.org and
not on IRC, e-mail, etc.
* That means other people can see the bug# and comment on it. This means
discussion is easy to read back for each issue and not spread between
several IRC logs.
Furthermore, by using the bugtracker instead of directly committing,
people could point out that there might be a better way to do things
than you originally thought, or it might be that other devs don't like
it at all.
* If a head coder has 'acknowledged' or 'confirmed' the issue or stated
in a comment that it's OK to implement, then any dev may take the issue.
The dev should change the status to 'assigned' and work on it, then
commit and change it to 'resolved', set 'fixed in version' to the
correct release, and add a comment pasting the relevant commit log.
Of course other guidelines, in particular rule #7, still applies.
3. /*
* These kind of comments
*/
4. If you don't have direct write access to the repository then you can
submit changes as as PR on github. It is very much preferred to also
have a bugs.unrealircd.org entry for it as well (see previous item).
5. For the stable branch, in general, only commit changes that have an
associated bugid# and/or were discussed.
For branches currently in development (alpha/beta) there's more freedom
and if you think the change will be small and is fine without a
discussion then feel free to commit.
6. Regarding reidenting, restructuring or other major code cleanups: please
discuss before doing so. The other devs might not agree with you on the
particular cleanup you have in mind which would result in another
clean-up-the-cleanup commit.
You may, however reindent and clean up individual sections when you are
working on fixing a particular bug# or implementing a new feature. In fact
you're encouraged to do so if the code is confusing without it. However,
obey the style of Unreal's code (mostly outlined in this document)
and do not introduce yet another (new) style. Also, be careful with doing
any cleanup: if you're unsure in any way about the use of something,
or something that looks redundant on first sight, then look more
carefully... it might indeed be useless and/or redundant, but it might
also be a subtle thing that can create great bugs when 'cleaned up'.
7. During the Release Candidate stage (from RC1 until the final release)
only the head coder may commit directly, all others should ask and
present their patch before committing. Yes, even if you are changing
only 1 line of code or text.
9. UnrealIRCd should compile on all supported operating systems and
platforms, using GCC 3 or higher on *NIX, and Visual Studio 2008 or
higher on Windows. This means you cannot blindly use all C99 extensions.
10. Coders must test their code before committing.
11. /*
* These kind of comments
*/
NOT
// These kind of comments
4. if (something == 1)
12. if (something == 1)
{
moo; /* comment */
/* This does what what what */
@@ -27,15 +78,46 @@ Some minor rules about patches & modifications to UnrealIRCd
if (something == 1) {
}
5. Do not touch version.c.SH or version.h, unless you are a head coder
if you need a credit in, contact us
13. Do not touch version.c.SH or version.h, unless you are a head coder.
If you need a credit in, contact us
6. Patches are submitted to coders@lists.unrealircd.org,
using "cvs diff -u > patchname". A submision must contain description of
what it does, etc.
7. Protocol changes must be discussed before making patches for it.
14. Protocol changes must be discussed before making patches for it.
8. We do NOT rip people off. If we use other people's code, it MUST be
properly credited.
15. We do NOT rip people off. If we use other people's code, it MUST be
properly credited.
16. We use tabsize 8 and we use tabs AND NOT SPACES.
Some code is old and horrible and has a mix of tabs and spaces used for
spacing, that's something we do not want to have ;)
17. Be careful about overflows. Do not do any unchecked string copies.
Instead of strcpy, strcat and sprintf/ircsprintf, use the following
functions: strlcpy, strlcat, snprintf/ircnsprintf.
If you are copying/writing character-by-character or word-by-word in a
loop, eg using *p++ = x; then be very sure about your size counting.
Often it's better to avoid such code altogether, by simply using
strlcat for everything.
18. Speed. When optimizing or writing code, keep in mind that readability and
stability comes FIRST, and after that comes speed. So we'd rather prefer some
readable code (even if difficult) over some odd highly optimized routine which
nobody understands, is difficult to extend, and might have several bugs.
As mentioned earlier: use ircsnprintf, not snprintf (this is because
ircsnprintf is optimized for simple strings like the ones we use).
ircsnprintf calls snprintf when it finds a (non-simple) format specifier it
can't handle. Simple format specifiers do not have prefixes other than
h and l.
19. Initialize your structs and use the proper memory calls.
In UnrealIRCd we use safe_alloc, safe_free, safe_strdup and safe_strldup.
Do NOT use malloc, calloc or strdup.
20. Comment your code! This should speak for itself...
Put comments wherever you think they are needed, to aid any further coders
with reading your code.. and, in fact, it will aid yourself as well if you
would look back at your code 2 years later.
If there's some obscure pitfall, DO mention it! Don't just "hope" a next
author will see it like you did.
21. Use enums whenever possible, rather than #define constants. Besides making
things more clean, it also aids debugging.
+2 -153
View File
@@ -1,153 +1,2 @@
==[ IMPORTANT MESSAGE ABOUT DISABLING NOSPOOF ]==
Disabling NOSPOOF at windows (w9x, nt, w2k, xp) is NOT recommended since this
WILL allow users to use "spoofed hosts" (like the IP of someone you trust).
If you got problems with NOSPOOF fix your client (bot?) instead (you should
PONG back to the initial PING at connect).
==[ GENERAL GUIDELINES ]==
First of all you need Microsoft Visual C++, compiling with cygwin
is not supported.
VC++ 7.x (.NET) is highly recommended. VC 6 might work but it requires
the Platform SDK (PSDK), it also has quite some bugs (there are 5 servicepacks!).
Basically VC7 is just much easier and known to work, therefore we'll assume
in this text that you are using it.
== Simple compile (no SSL/ZIP/Remote includes) ==
1. Start the Visual Studio .NET Command Prompt
2. Go to your UnrealIrcd dir (like: cd \dev\unreal3.2) and then compile with:
nmake -f makefile.win32
This will generate a wircd.exe and unreal.exe
3. Copy the src\win32\tre.dll to your UnrealIrcd main dir.
4. Done!
== Compiling modules ==
1. Put your module (the .c file) in src\modules (eg: c:\dev\unreal3.2\src\modules).
2. Start the Visual Studio .NET Command Prompt
3. Go to your UnrealIrcd dir (like: cd \dev\unreal3.2).
4. Compile the module with:
nmake -f makefile.win32 custommodule MODULEFILE=<name>
<name> is the name of the module WITHOUT the .c suffix, so if your
module has the filename 'm_crappymod.c', then you use:
nmake -f makefile.win32 custommodule MODULEFILE=m_crappymod
5. Done. A .dll file should have been created.
If you compiled with VC7 and used the official source (not a CVS version,
but for example 3.2.1 source) then the module should work on all these
versions (binary compatible) and you could for example put them on
your website so users can download them.
Such a module will work on both SSL and non-SSL, there should be no need
for separate versions... unless, of course, you use SSL-specific code in your mod.
DO NOT download a CVS version & compile your mod and then start
distributing the .dll for use at another (non-CVS) version!!
Every time we change a struct (and in some other cases) it makes the
binary/module binary incompatible which practically means your module
will CRASH or cause memory corruption and other subtle errors.
== COMPILING WITH ZIP LINKS / SSL / REMOTE INCLUDES SUPPORT ==
First of all, DO NOT use any precompiled libs from the official
zlib/openssl/curl sites. We require certain compile parameters.
Versions downloaded from such sites will often CRASH.
The easiest is to download the UnrealIRCd development package
which contains zlib, openssl and curl precompiled for you.
See: www.vulnscan.org/unrealwin32dev/
Just extract it somewhere (eg: to c:\dev).
Then, use compile flags to enable the features + specify where to look.
Here are examples if you used c:\dev:
ZIP: nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" ZLIB_LIB_DIR="c:\dev\zlib\dll32"
SSL: nmake -f makefile.win32 USE_SSL=1 OPENSSL_INC_DIR="c:\dev\openssl\include" OPENSSL_LIB_DIR="c:\dev\openssl\lib"
CURL: nmake -f makefile.win32 USE_REMOTEINC=1 LIBCURL_INC_DIR="c:\dev\curl\include" LIBCURL_LIB_DIR="c:\dev\curl\lib"
Obviously you can (and probably will) combine all these options, like
to build a zip+ssl+curl version (all in 1 line):
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib" ZLIB_LIB_DIR="c:\dev\zlib\dll32"
USE_SSL=1 OPENSSL_INC_DIR="c:\dev\openssl\include" OPENSSL_LIB_DIR="c:\dev\openssl\lib" USE_REMOTEINC=1
LIBCURL_INC_DIR="c:\dev\curl\include" LIBCURL_LIB_DIR="c:\dev\curl\lib"
== COMPILING ZLIB/SSL/CURL YOURSELF ==
This is quite some work.. With the precomiled method shown above it
just takes like 5-10 minutes to have a zlib+ssl+curl Unreal version.
But if you want to compile each of these libs manually then it will
probably take an hour or so.
** THE INFORMATION BELOW IS OUTDATED, WE GOT RID OF MDd, USE MD INSTEAD
AND DONT COMPILE OPENSSL W/DEBUG ***
== ZIP LINKS (zlib) ==
[NOTE: precompiled dlls should NOT be used because they will cause a crash
(this is due to different compile parameters / api call systems]
To compile with ziplinks support you need to do the following:
Download the SOURCE from http://www.winimage.com/zLibDll/
(at the time of writing, http://www.winimage.com/zLibDll/zlib121.zip)
and extract it to somewhere, for example c:\dev\zlib-1.2.1
Then, edit win32\makefile.msc:
- Change -MD to -MDd
- Add -D ZLIB_WINAPI to CFLAGS
- so the result will be like:
CFLAGS = -nologo -MDd -O2 $(LOC) -D ZLIB_WINAPI
- Then compile: nmake -f win32\Makefile.msc
- Assuming the above step went fine, your zlib is now ready.
- Now, to compile UnrealIRCd with ziplinks you do something like this:
nmake -f makefile.win32 USE_ZIPLINKS=1 ZLIB_INC_DIR="c:\dev\zlib-1.2.1" ZLIB_LIB_DIR="c:\dev\zlib-1.2.1"
Obviously, change the paths if needed [1st = *.h files, 2nd=*.dll/*.lib]
== SSL (OpenSSL) ==
[note: openssl requires perl to configure/compile!]
- Download latest openssl (eg: openssl-0.9.7d.tar.gz) and extract it somewhere
(we'll use c:\dev\openssl-0.9.7d in this example)
- Open util\do_masm.bat, add 'debug' to the lines with 'mk1mf.pl' BUT be careful
since it should NOT be the last word, so add it somewhere before that.
For example: perl util\mk1mf.pl dll debug VC-W31-32 >ms\w31dll.mak
- Start the
- Now we go build openssl, run:
ms\do_masm
nmake -f ms\ntdll.mak
- Assuming the above step went fine, your OpenSSL is now ready.
- Now, to compile UnrealIRCd with ziplinks you do something like this:
nmake -f makefile.win32 USE_SSL=1 OPENSSL_INC_DIR="c:\openssl\inc32\openssl" OPENSSL_LIB_DIR="C:\Dev\openssl\out32dll.dbg"
Obviously, change the paths if needed [1st=*.h files, 2nd=*.dll/*.lib]
== REMOTE INCLUDES (curl, c-ares) ==
- Download latest c-ares source from http://daniel.haxx.se/projects/c-ares/
Download latest curl source from http://curl.haxx.se/download.html
Extract both somewhere (eg: c:\dev\c-ares-1.2.0 and c:\dev\curl-7.12.0)
- Open vc\vc.dsw from your ares directory. Assuming you have VC7 it will ask
whether it should convert the project, choose 'Yes to all'.
- (solution explorer) areslib -> properties
C/C++ -> code generation -> runtime library: Change to
'Multi-threaded Debug DLL (/MDd)'
- at the time of writing 'ares_free_errmem.c' should be removed from the
project file (solution explorer -> source files -> find the file + press
delete). Also 'ares_version.c' and 'ares_cancel.c' should be added
(solution explorer -> source files -> rightclick -> add -> add existing ->
go down a few directories if needed and choose the file).
- right click at 'areslib' in the solution explorer and select 'Build'.
Assuming it compiled fine, we are done with c-ares.
- Now go to the curl directory and open lib\curllib.dsw. Choose 'Yes to all'
again when asked about converting.
- Open config-win32.h (@header files in solution explorer) and add:
#define USE_ARES 1
- Open include\curl\multi.h and change the line with:
#include <winsock2.h>
to:
#include <winsock.h>
- (solution explorer) curllib -> properties
- C/C++ -> code generation -> runtime library: Change to
'Multi-threaded Debug DLL (/MDd)'
- C/C++ -> general -> additional include directories:
add the path to your <c-ares-directory> (eg: C:\Dev\c-ares-1.2.0).
- linker -> general -> additional library directories:
add the path to your <c-ares-directory>\vc\areslib\Debug,
for example C:\Dev\c-ares-1.2.0\vc\areslib\Debug.
- linker -> input -> additional dependencies:
add: areslib.lib
- linker -> input -> Module defenition file:
set to: libcurl.def
Done with editting properties.
- Now: Build -> rebuild solution, everything should compile fine.
- Now, to compile UnrealIRCd with remote includes you do something like this:
nmake -f makefile.win32 USE_REMOTEINC=1 LIBCURL_INC_DIR="C:\Dev\curl-7.12.0\include" LIBCURL_LIB_DIR="C:\Dev\curl-7.12.0\lib\Debug"
For information on how to compile UnrealIRCd (modules) on Windows, see:
https://www.unrealircd.org/docs/Compiling_UnrealIRCd_on_Windows
@@ -5,39 +5,39 @@ alias identify {
target chanserv;
type services;
parameters "IDENTIFY %1-";
};
}
format "^[^#]" {
target nickserv;
type services;
parameters "IDENTIFY %1-";
};
}
type command;
};
}
alias services {
format "^#" {
target chanserv;
type services;
parameters "%1-";
};
}
format "^[^#]" {
target nickserv;
type services;
parameters "%1-";
};
}
type command;
};
}
alias register {
format "^#" {
target chanserv;
type services;
parameters "REGISTER %1-";
};
}
format "^[^#]" {
target nickserv;
type services;
parameters "REGISTER %1-";
};
}
type command;
};
}
+17
View File
@@ -0,0 +1,17 @@
/* Anope Aliases */
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias memoserv { type services; spamfilter yes; }
alias ms { target memoserv; type services; spamfilter yes; }
alias operserv { type services; }
alias os { target operserv; type services; }
alias botserv { type services; }
alias bs { target botserv; type services; }
alias hostserv { type services; }
alias hs { target hostserv; type services; }
include "aliases/aliases.conf";
+26
View File
@@ -0,0 +1,26 @@
/* Atheme Aliases */
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias memoserv { type services; spamfilter yes; }
alias ms { target memoserv; type services; spamfilter yes; }
alias operserv { type services; }
alias os { target operserv; type services; }
alias helpserv { type services; }
alias botserv { type services; }
alias bs { target botserv; type services; }
alias hostserv { type services; }
alias hs { target hostserv; type services; }
alias saslserv { type services; }
alias sss { target saslserv; type services; }
alias gameserv { type services; }
alias gms { target gameserv; type services; }
alias groupserv { type services; }
alias grs { target groupserv; type services; }
alias alis { type services; }
alias ls { target alis; type services; }
include "aliases/aliases.conf";
+33
View File
@@ -0,0 +1,33 @@
/* Auspice Aliases */
/* Uncomment this, if you have enabled "MassServ, W and X" in auspice */
# alias massserv { type services; }
# alias ma { target massserv; type services; }
# alias W { type services; }
# alias X { type services; }
/* Uncomment this, if you have enabled "WebServ" in auspice */
# alias webserv { type services; }
# alias ws { target webserv; type services; }
alias agent { type services; }
alias adminserv { type services; }
alias as { target adminserv; type services; }
alias botserv { type services; }
alias bs { target botserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias helpserv { type services; }
alias hs { target helpserv; type services; }
alias hostserv { type services; }
alias ho { target hostserv; type services; }
alias memoserv { type services; spamfilter yes; }
alias ms { target memoserv; type services; spamfilter yes; }
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias operserv { type services; }
alias os { target operserv; type services; }
alias rootserv { type services; }
alias rs { target rootserv; type services; }
include "aliases/aliases.conf";
+12
View File
@@ -0,0 +1,12 @@
/* Cygnus Aliases */
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias memoserv { type services; spamfilter yes; }
alias ms { target memoserv; type services; spamfilter yes; }
alias rootserv { type services; }
alias rs { target rootserv; type services; }
include "aliases/aliases.conf";
+16
View File
@@ -0,0 +1,16 @@
/* Epona Aliases */
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias memoserv { type services; spamfilter yes; }
alias ms { target memoserv; type services; spamfilter yes; }
alias operserv { type services; }
alias os { target operserv; type services; }
alias helpserv { type services; }
alias hs { target helpserv; type services; }
alias botserv { type services; }
alias bs { target botserv; type services; }
include "aliases/aliases.conf";
+14
View File
@@ -0,0 +1,14 @@
/* Generic Aliases */
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias memoserv { type services; spamfilter yes; }
alias ms { target memoserv; type services; spamfilter yes; }
alias operserv { type services; }
alias os { target operserv; type services; }
alias helpserv { type services; }
alias hs { target helpserv; type services; }
include "aliases/aliases.conf";
+4
View File
@@ -0,0 +1,4 @@
/* Generic StatServ Aliases */
alias statserv { type stats; }
alias ss { target statserv; type stats; }
+17
View File
@@ -0,0 +1,17 @@
/* IRCServices Aliases */
alias nickserv { type services; }
alias ns { target nickserv; type services; }
alias chanserv { type services; }
alias cs { target chanserv; type services; }
alias memoserv { type services; spamfilter yes; }
alias ms { target memoserv; type services; spamfilter yes; }
alias operserv { type services; }
alias os { target operserv; type services; }
alias helpserv { type services; }
alias hs { target helpserv; type services; }
alias irciihelp { type services; }
alias statserv { type services; }
alias ss { target statserv; type services; }
include "aliases/aliases.conf";
+6
View File
@@ -0,0 +1,6 @@
/* OperStats Aliases */
alias operserv { type stats; }
alias os { target operserv; type stats; }
alias statserv { type stats; }
alias ss { target statserv; type stats; }
+50
View File
@@ -0,0 +1,50 @@
/*
Unreal Internet Relay Chat Daemon
Copyright (C) Carsten V. Munk 2000
NOTE: Those words are not meant to insult you (the user)
but is meant to be a list of words so that the +G channel/user mode
will work properly. You can easily modify this file at your will.
This is some filling space, scroll down to see the words
*/
badword all { word "pussy"; }
badword all { word "fuck"; }
badword all { word "whore"; }
badword all { word "slut"; }
badword all { word "shit"; }
badword all { word "asshole"; }
badword all { word "bitch"; }
badword all { word "cunt"; }
badword all { word "vagina"; }
badword all { word "penis"; }
badword all { word "jackass"; }
badword all { word "*fucker*"; }
badword all { word "faggot"; }
badword all { word "fag"; }
badword all { word "horny"; }
badword all { word "dickhead"; }
badword all { word "sonuvabitch"; }
badword all { word "*fuck*"; }
badword all { word "tits"; }
+20 -20
View File
@@ -17,26 +17,26 @@
*/
/* first.. deny everything, then allow known-good stuff... */
deny dcc { filename "*"; reason "Possible executable content"; soft yes; };
deny dcc { filename "*"; reason "Possible executable content"; soft yes; }
/* common image formats */
allow dcc { filename "*.jpg"; soft yes; };
allow dcc { filename "*.jpeg"; soft yes; };
allow dcc { filename "*.gif"; soft yes; };
allow dcc { filename "*.png"; soft yes; };
allow dcc { filename "*.bmp"; soft yes; };
allow dcc { filename "*.jpg"; soft yes; }
allow dcc { filename "*.jpeg"; soft yes; }
allow dcc { filename "*.gif"; soft yes; }
allow dcc { filename "*.png"; soft yes; }
allow dcc { filename "*.bmp"; soft yes; }
/* audio / video (but not scripted/playlists!) */
allow dcc { filename "*.mp1"; soft yes; };
allow dcc { filename "*.mp2"; soft yes; };
allow dcc { filename "*.mp3"; soft yes; };
allow dcc { filename "*.mpg"; soft yes; };
allow dcc { filename "*.mpeg"; soft yes; };
allow dcc { filename "*.m1v"; soft yes; };
allow dcc { filename "*.m2v"; soft yes; };
allow dcc { filename "*.vob"; soft yes; };
allow dcc { filename "*.wav"; soft yes; };
allow dcc { filename "*.mp1"; soft yes; }
allow dcc { filename "*.mp2"; soft yes; }
allow dcc { filename "*.mp3"; soft yes; }
allow dcc { filename "*.mpg"; soft yes; }
allow dcc { filename "*.mpeg"; soft yes; }
allow dcc { filename "*.m1v"; soft yes; }
allow dcc { filename "*.m2v"; soft yes; }
allow dcc { filename "*.vob"; soft yes; }
allow dcc { filename "*.wav"; soft yes; }
/* text / misc */
allow dcc { filename "*.txt"; soft yes; };
allow dcc { filename "*.log"; soft yes; };
allow dcc { filename "*.pdf"; soft yes; };
allow dcc { filename "*.c"; soft yes; };
allow dcc { filename "*.cpp"; soft yes; };
allow dcc { filename "*.txt"; soft yes; }
allow dcc { filename "*.log"; soft yes; }
allow dcc { filename "*.pdf"; soft yes; }
allow dcc { filename "*.c"; soft yes; }
allow dcc { filename "*.cpp"; soft yes; }
+747
View File
@@ -0,0 +1,747 @@
/* Configuration file for UnrealIRCd 6
*
* Simply copy this file to your conf/ directory and call it 'unrealircd.conf'
*
* If you are in a hurry then you can CTRL+F for: CHANGE THIS
* The items that must be changed are indicated with those two words.
* However, we actually recommend going through the file line by line
* and edit it where needed, so you can see all the basic items and
* what they are set to.
*
* BEFORE YOU PROCEED:
* Important: all lines, except { and } end with an ;
* This is very important, if you miss a ; somewhere then the
* configuration file parser will complain and the file will not
* be processed correctly!
* If this is your first experience with an UnrealIRCd configuration
* file then we really recommend you to read a little about the syntax,
* this only takes a few minutes and will help you a lot:
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
*
* UnrealIRCd 6 documentation (very extensive!):
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
*
* Frequently Asked Questions:
* https://www.unrealircd.org/docs/FAQ
*/
/* This is a comment, all text here is ignored (comment type #1) */
// This is also a comment, this line is ignored (comment type #2)
# This is also a comment, again this line is ignored (comment type #3)
/* UnrealIRCd makes heavy use of modules. Modules allow you to completely
* customize the featureset you wish to enable in UnrealIRCd.
* See: https://www.unrealircd.org/docs/Modules
*
* By using the include below we instruct the IRCd to read the file
* 'modules.default.conf' which will load more than 150 modules
* shipped with UnrealIRCd. In other words: this will simply load
* all the available features in UnrealIRCd.
* If you are setting up UnrealIRCd for the first time we suggest you
* use this. Then, when everything is up and running you can come
* back later to customize the list (if you wish).
*/
include "modules.default.conf";
/* Now let's include some other files as well:
* - help/help.conf for our on-IRC /HELPOP system
* - badwords.conf for channel and user mode +G
* - spamfilter.conf as an example for spamfilter usage
* (commented out)
* - operclass.default.conf contains some good operclasses which
* you can use in your oper blocks.
*/
include "help/help.conf";
include "badwords.conf";
//include "spamfilter.conf";
include "operclass.default.conf";
include "snomasks.default.conf";
/* Load the default cloaking module (2021 onwards): */
loadmodule "cloak_sha256";
/* Or load the old module from UnrealIRCd 3.2/4/5 instead: */
//loadmodule "cloak_md5";
// CHANGE THIS (the 'name' and the 'info'):
/* This is the me { } block which basically says who we are.
* It defines our server name, some information line and an unique "sid".
* The server id (sid) must start with a digit followed by two digits or
* letters. The sid must be unique for your IRC network (each server should
* have it's own sid). It is common to use 001 for the first server.
*/
me {
name "irc.example.org";
info "ExampleNET Server";
sid "001";
}
// CHANGE THIS:
/* The admin { } block defines what users will see if they type /ADMIN.
* It normally contains information on how to contact the administrator.
*/
admin {
"Bob Smith";
"bob";
"email@example.org";
}
/* Clients and servers are put in class { } blocks, we define them here.
* Class blocks consist of the following items:
* - pingfreq: how often to ping a user / server (in seconds)
* - connfreq: how often we try to connect to this server (in seconds)
* - sendq: the maximum queue size for a connection
* - recvq: maximum receive queue from a connection (flood control)
*/
/* Client class with good defaults */
class clients
{
pingfreq 90;
maxclients 1000;
sendq 200k;
recvq 8000;
}
/* Special class for IRCOps with higher limits */
class opers
{
pingfreq 90;
maxclients 50;
sendq 1M;
recvq 8000;
}
/* Server class with good defaults */
class servers
{
pingfreq 60;
connfreq 15; /* try to connect every 15 seconds */
maxclients 10; /* max servers */
sendq 20M;
}
/* Allow blocks define which clients may connect to this server.
* This allows you to add a server password or restrict the server to
* specific IPs only. You also configure the maximum connections
* allowed per IP here.
* See also: https://www.unrealircd.org/docs/Allow_block
*/
/* Allow everyone in, but only 3 connections per IP */
allow {
mask *;
class clients;
maxperip 3;
}
/* Example of a special allow block on a specific IP:
* Requires users on that IP to connect with a password. If the password
* is correct then it permits 20 connections on that IP.
*/
// allow {
// mask 192.0.2.1;
// class clients;
// password "somesecretpasswd";
// maxperip 20;
// }
/* Oper blocks define your IRC Operators.
* IRC Operators are people who have "extra rights" compared to others,
* for example they may /KILL other people, initiate server linking,
* /JOIN channels even though they are banned, etc.
*
* For more information about becoming an IRCOp and how to do admin
* tasks, see: https://www.unrealircd.org/docs/IRCOp_guide
*
* For details regarding the oper { } block itself, see
* https://www.unrealircd.org/docs/Oper_block
*/
/* Here is an example oper block for 'bobsmith'
* YOU MUST CHANGE THIS!! (the oper name and the password)
*/
oper bobsmith {
class opers;
mask *@*;
/* Technically you can put oper passwords in plaintext in the conf but
* this is HIGHLY DISCOURAGED. Instead you should generate a password hash:
* On *NIX, run: ./unrealircd mkpasswd
* On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
* .. and then paste the result below:
*/
password "$argon2id..etc..";
/* See https://www.unrealircd.org/docs/Authentication_types for
* more information, including even better authentication types
* such as 'certfp', and how to generate hashes on Windows.
*/
/* Oper permissions are defined in an 'operclass' block.
* See https://www.unrealircd.org/docs/Operclass_block
* UnrealIRCd ships with a number of default blocks, see
* the article for a full list. We choose 'netadmin' here.
*/
operclass netadmin;
swhois "is a Network Administrator";
vhost netadmin.example.org;
}
/* Listen blocks define the ports where the server should listen on.
* In other words: the ports that clients and servers may use to
* connect to this server.
*
* Syntax:
* listen {
* ip <ip>;
* port <port>;
* options {
* <options....>;
* }
* }
*/
/* Standard IRC port 6667:
* Insecure plaintext (NOT for production servers)
* This listen block is here only for quick testing.
* Delete or comment out this listen block on production servers
* and use TLS on port 6697 instead.
*/
listen {
ip *;
port 6667;
}
/* Standard IRC SSL/TLS port 6697 */
listen {
ip *;
port 6697;
options { tls; }
}
/* Special SSL/TLS servers-only port for linking */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
/* NOTE: If you are on an IRCd shell with multiple IP's and you use
* the above listen { } blocks then you will likely get an
* 'Address already in use' error and the ircd won't start.
* This means you MUST bind to a specific IP instead of '*' like:
* listen { ip 1.2.3.4; port 6667; }
* Of course, replace the IP with the IP that was assigned to you.
*/
/*
* Link blocks allow you to link multiple servers together to form a network.
* See https://www.unrealircd.org/docs/Tutorial:_Linking_servers
*/
//link hub.example.org
//{
// incoming {
// mask *@something;
// }
//
// outgoing {
// bind-ip *; /* or explicitly an IP */
// hostname hub.example.org;
// port 6900;
// options { tls; }
// }
//
// /* We use the SPKI fingerprint of the other server for authentication.
// * Open a shell on the OTHER SERVER and run the command to get the fingerprint:
// * On *NIX, run: ./unrealircd spkifp
// * On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp
// */
// password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
//
// class servers;
//}
/* The link block for services is usually much simpler.
* For more information about what Services are,
* see https://www.unrealircd.org/docs/Services
*/
//link services.example.org
//{
// incoming {
// mask 127.0.0.1;
// }
//
// password "changemeplease";
//
// class servers;
//}
/* U-lines give other servers (even) more power/commands.
* If you use services you MUST add them here. You must add the
* services server name in ulines { } in the config file on
* every UnrealIRCd server on your network.
* IMPORTANT: Never put the name of an UnrealIRCd server here,
* it's only for Services!
*/
//ulines {
// services.example.org;
//}
/* Here you can add a password for the IRCOp-only /DIE and /RESTART commands.
* This is mainly meant to provide a little protection against accidental
* restarts and server kills.
*/
drpass {
restart "restart";
die "die";
}
/* The log block defines what should be logged and to what file.
* See also https://www.unrealircd.org/docs/Log_block
*/
/* This is a good default, it logs everything except
* debug stuff and join/part/kick.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.log" { maxsize 100M; }
}
}
/* In addition to regular logging, also add a JSON log file.
* This includes lots of information about every event so is great
* for auditing purposes and is machine readable. It is, however
* less readable for humans.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.json.log" { maxsize 250M; type json; }
}
}
/* With "aliases" you can create an alias like /SOMETHING to send a message to
* some user or bot. They are usually used for services.
*
* We have a number of pre-set alias files, check out the alias/ directory.
* As an example, here we include all aliases used for anope services.
*/
include "aliases/anope.conf";
/* Ban nick names so they cannot be used by regular users */
// ban nick {
// mask "*C*h*a*n*S*e*r*v*";
// reason "Reserved for Services";
// }
/* Ban ip.
* Note that you normally use /KLINE, /GLINE and /ZLINE for this.
*/
// ban ip {
// mask 195.86.232.81;
// reason "Hate you";
// }
/* Ban server - if we see this server linked to someone then we delink */
// ban server {
// mask eris.berkeley.edu;
// reason "Get out of here.";
// }
/* Ban user - just as an example, you normally use /KLINE or /GLINE for this */
// ban user {
// mask *tirc@*.saturn.bbn.com;
// reason "Idiot";
// }
/* Ban realname allows you to ban clients based on their 'real name'
* or 'gecos' field.
*/
// ban realname {
// mask "Swat Team";
// reason "mIRKFORCE";
// }
// ban realname {
// mask "sub7server";
// reason "sub7";
// }
/* Ban and TKL exceptions. Allows you to exempt users / machines from
* KLINE, GLINE, etc.
* If you are an IRCOp with a static IP (and no untrusted persons on that IP)
* then we suggest you add yourself here. That way you can always get in
* even if you accidentally place a *LINE ban on yourself.
*/
/* except ban with type 'all' protects you from GLINE, GZLINE, QLINE, SHUN */
// except ban {
// mask *@192.0.2.1;
// type all;
// }
/* This allows IRCCloud connections in without maxperip restrictions
* and also exempt them from connect-flood throttling.
*/
except ban {
mask *.irccloud.com;
type { maxperip; connect-flood; }
}
/* With deny dcc blocks you can ban filenames for DCC */
// deny dcc {
// filename "*sub7*";
// reason "Possible Sub7 Virus";
// }
/* deny channel allows you to ban a channel (mask) entirely */
// deny channel {
// channel "*warez*";
// reason "Warez is illegal";
// class "clients";
// }
/* VHosts (Virtual Hosts) allow users to acquire a different host.
* See https://www.unrealircd.org/docs/Vhost_block
*/
/* Example vhost which you can use. On IRC type: /VHOST test test
*/
// vhost {
// vhost i.hate.microsefrs.com;
// mask *@*;
// login "test";
// password "test";
// }
/* Blacklist blocks will query an external DNS Blacklist service
* whenever a user connects, to see if the IP address is known
* to cause drone attacks, is a known hacked machine, etc.
* Documentation: https://www.unrealircd.org/docs/Blacklist_block
* Or just have a look at the blocks below.
*/
/* DroneBL, probably the most popular blacklist used by IRC Servers.
* See https://dronebl.org/ for their documentation and the
* meaning of the reply types. At time of writing we use types:
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
* 16: Autorooting worms.
*/
blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone detected. Check https://dronebl.org/lookup?ip=$ip for details.";
}
/* EFnetRBL, see https://rbl.efnetrbl.org/ for documentation
* and the meaning of the reply types.
* At time of writing: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
*
* NOTE: If you want to permit TOR proxies on your server, then
* you need to remove the '4;' below in the reply section.
*/
blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone/TOR detected. Check https://rbl.efnetrbl.org/?i=$ip for details.";
}
/* You can include other configuration files */
/* include "klines.conf"; */
/* Network configuration */
set {
// CHANGE THIS, ALL 4 ITEMS:
network-name "ExampleNET";
default-server "irc.example.org";
services-server "services.example.org";
stats-server "stats.example.org";
/* Normal defaults */
help-channel "#Help";
cloak-prefix "Clk";
prefix-quit "Quit";
/* Cloak keys should be the same at all servers on the network.
* They are used for generating masked hosts and should be kept secret.
* YOU MUST CHANGE THIS!
* The keys should be 3 random strings of 80 characters each (or more).
* and must consist of lowcase (a-z), upcase (A-Z) and digits (0-9).
* On *NIX, you can run './unrealircd gencloak' in your shell to let
* UnrealIRCd generate 3 random strings for you.
* On Windows, you can run "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
*/
cloak-keys {
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
"and another one";
"and another one";
}
}
/* Server specific configuration */
set {
// FINALLY, YOU MUST CHANGE THIS NEXT ITEM:
kline-address 'set.this.to.email.address'; /* e-mail or URL shown when a user is banned */
modes-on-connect "+ixw"; /* when users connect, they will get these user modes */
modes-on-oper "+xws"; /* when someone becomes IRCOp they'll get these modes */
modes-on-join "+nt"; /* default channel modes when a new channel is created */
oper-auto-join "#opers"; /* IRCOps are auto-joined to this channel */
options {
hide-ulines; /* hide U-lines in /MAP and /LINKS */
show-connect-info; /* show "looking up your hostname" messages on connect */
}
maxchannelsperuser 10; /* maximum number of channels a user may /JOIN */
/* The minimum time a user must be connected before being allowed to
* use a QUIT message. This will hopefully help stop spam.
*/
anti-spam-quit-message-time 10s;
/* Or simply set a static quit, meaning any /QUIT reason is ignored */
/* static-quit "Client quit"; */
/* static-part does the same for /PART */
/* static-part yes; */
/* Flood protection */
anti-flood {
/* There are lots of settings for this and most have good defaults.
* See https://www.unrealircd.org/docs/Anti-flood_settings
*/
channel {
/* For channel-specific anti-flood settings, see
* https://www.unrealircd.org/docs/Channel_anti-flood_settings
* In UnrealIRCd 6.2.0+ the default is profile "normal".
* Chanops can override this via "MODE #channel +F relaxed"
* or "+F off". If you are afraid of too many false positives
* then you could set this to "relaxed" instead. Note that
* doing so would reduce protection for everyone. Another
* option is to set it here to "off" to disable this default
* channel protection entirely (not recommended).
*/
default-profile normal;
}
}
/* Settings for spam filter */
spamfilter {
ban-time 1d; /* default duration of a *LINE ban set by spamfilter */
ban-reason "Spam/Advertising"; /* default reason */
virus-help-channel "#help"; /* channel to use for 'viruschan' action */
/* except "#help"; channel to exempt from Spamfilter */
}
/* Restrict certain commands.
* See https://www.unrealircd.org/docs/Set_block#set::restrict-commands
*/
restrict-commands {
list {
except {
connect-time 60; /* after 60 seconds you can use LIST */
identified yes; /* or immediately, if you are identified to services */
reputation-score 24; /* or if you have a reputation score of 24 or more */
}
}
invite {
except {
connect-time 120;
identified yes;
reputation-score 24;
}
}
/* In addition to the ability to restrict any command,
* such as shown above. There are also 4 special types
* that you can restrict. These are "private-message",
* "private-notice", "channel-message" and "channel-notice".
* They are commented out (disabled) in this example:
*/
//private-message {
// except { connect-time 10; }
//}
//private-notice {
// except { connect-time 10; }
//}
}
}
/* RECOMMENDED:
* Everyone should be using IRC over SSL/TLS on port 6697. However, to use
* it properly, you have to get a "real" certificate instead of the
* self-signed default certificate that was generated by the installer.
* The Let's Encrypt initiative allows you to get a free certificate that is
* issued by a trusted Certificate Authority. Instructions are at:
* https://www.unrealircd.org/docs/Using_Let's_Encrypt_with_UnrealIRCd
*
* When you follow that guide you will have a "dual certificate" setup:
* set::tls:
* Your trusted CA certificate, served to clients on port 6697.
* (key and certificate change and renew every xx days automatically)
* set::server-linking::tls-options
* A long-lived self-signed certificate for server linking, with
* a stable 'spkifp' signature that you use in link blocks.
* This certificate is used automatically in "serversonly" listen blocks
* (port 6900 in this configuration file) and automatically used for all
* link { } blocks.
*
*/
//set {
// tls {
// certificate "/etc/letsencrypt/live/irc.example.org/fullchain.pem";
// key "/etc/letsencrypt/live/irc.example.org/privkey.pem";
// }
// server-linking {
// tls-options {
// certificate "tls/server.cert.pem";
// key "tls/server.key.pem";
// }
// }
//}
/*
* The following will configure connection throttling of "unknown users".
*
* When UnrealIRCd detects a high number of users connecting from IP addresses
* that have not been seen before, then connections from new IP's are rejected
* above the set rate. For example at 10:60 only 10 users per minute can connect
* that have not been seen before. Known IP addresses can always get in,
* regardless of the set rate. Same for users who login using SASL.
*
* See also https://www.unrealircd.org/docs/Connthrottle for details.
* Or just keep reading the default configuration settings below:
*/
set {
connthrottle {
/* First we configure which users are exempt from the
* restrictions. These users are always allowed in!
* By default these are users on IP addresses that have
* a score of 24 or higher. A score of 24 means that the
* IP was connected to this network for at least 2 hours
* in the past month (or minimum 1 hour if registered).
* We also allow users who are identified to services via
* SASL to bypass the restrictions.
*/
except {
reputation-score 24;
identified yes;
/* for more options, see
* https://www.unrealircd.org/docs/Mask_item
*/
}
/* New users are all users that do not belong in the
* known-users group. They are considered "new" and in
* case of a high number of such new users connecting
* they are subject to connection rate limiting.
* By default the rate is 20 new local users per minute
* and 30 new global users per minute.
*/
new-users {
local-throttle 20:60;
global-throttle 30:60;
}
/* For IPv6 users, on top of 'maxperip' (which limits
* connections per /64), connthrottle also limits how
* many unknown users can be online from wider IPv6
* prefixes (/56, /48, /32). This is an additional
* security measure, separate from the rate-throttle
* above. People in the security-group "known-users"
* bypass this, as well as set::connthrottle::except.
* The defaults below should fit most networks unchanged.
* Uncomment to tune. Set a cidr-xx item to max 0;
* to disable it.
*/
//ipv6-unknown-users-limit {
// cidr-56 { max 8; }
// cidr-48 { max 32; }
// cidr-32 { max 256; }
//}
/* This configures when this module will NOT be active.
* The default settings will disable the module when:
* - The reputation module has been running for less than
* a week. If running less than 1 week then there is
* insufficient data to consider who is a "known user".
* - The server has just been booted up (first 3 minutes).
*/
disabled-when {
reputation-gathering 1w;
start-delay 3m;
}
}
}
/* CHANNEL HISTORY:
* UnrealIRCd has channel mode +H which can be used by users to read back
* channel history, such as from before they joined. For general information
* on this feature, see https://www.unrealircd.org/docs/Channel_history
*
* The history limits can be configured via set::history. The defaults are
* probably already good for you, but if you are on a low-memory system
* or have thousands of channels then you may want to double check. See
* https://www.unrealircd.org/docs/Set_block#set::history for the options.
*
* In addition to that, you can have "persistent channel history", which
* means channel history is stored encrypted on disk so it is preserved
* between IRC server restarts, see
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
* The persistent history feature is NOT enabled by default because you
* need to configure a secret { } block for it. The following is a simple
* example with passwords stored directly in the configuration file.
* To get better security, read https://www.unrealircd.org/docs/Secret_block
* on alternative ways so you don't store passwords directly in the config.
*/
//secret historydb { password "somepassword"; }
//set { history { channel { persist yes; db-secret "historydb"; } } }
/* Finally, you may wish to have a MOTD (Message of the Day), this can be
* done by creating an 'ircd.motd' text file in your conf/ directory.
* This file will be shown to your users on connect.
* For more information see https://www.unrealircd.org/docs/MOTD_and_Rules
*/
/*
* Problems or need more help?
* 1) https://www.unrealircd.org/docs/
* 2) https://www.unrealircd.org/docs/FAQ <- answers 80% of your questions!
* 3) If you are still having problems then you can get support:
* - Forums: https://forums.unrealircd.org/
* - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
* Note that we require you to read the documentation and FAQ first!
*/
+659
View File
@@ -0,0 +1,659 @@
/* Archivo de configuración para UnrealIRCd 6
*
* Simplemente copie este archivo a su directorio conf/, llámelo
* 'unrealircd.conf' y revíselo línea por línea (¡edítelo!)
*
* Importante: Todas las líneas, excepto { y } terminan con ;
* Esto es muy importante, si pierde un ; en algún lugar entonces el
* el analizador del archivo de configuración se quejará y el archivo no
* ser procesado correctamente!
* Si esta es tu primera experiencia con una configuración de UnrealIRCd
* entonces te recomendamos que leas un poco sobre la sintaxis,
* esto solo toma unos minutos y te ayudará mucho:
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
*
* Documentación de UnrealIRCd 6 (¡muy extensa!):
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
*
* Preguntas frecuentes:
* https://www.unrealircd.org/docs/FAQ
*
*/
/* Esto es un comentario, todo el texto aquí es ignorado (tipo de comentario #1) */
// Esto también es un comentario, esta línea se ignora (tipo de comentario #2)
# Esto también es un comentario, nuevamente esta línea se ignora (tipo de comentario #3)
/* UnrealIRCd hace un uso intensivo de los módulos. Los módulos le permiten completamente
* personaliza el conjunto de características que deseas habilitar en UnrealIRCd.
* Ver: https://www.unrealircd.org/docs/Modules
*
* Al usar el incluir a continuación, le indicamos al IRCd que lea el archivo
* 'modules.default.conf' que cargará más de 150 módulos
* enviado con UnrealIRCd. En otras palabras: esto simplemente cargará
* todas las funciones disponibles en UnrealIRCd.
* Si está configurando UnrealIRCd por primera vez, le sugerimos
* utilizar esta. Luego, cuando todo esté funcionando, puedes venir
* volver más tarde para personalizar la lista (si lo desea).
*/
include "modules.default.conf";
/* Ahora incluyamos algunos otros archivos también:
* - help/help.conf para nuestro sistema on-IRC /HELPOP
* - badwords.conf para canal y modo de usuario +G
* - spamfilter.conf como ejemplo para el uso de spamfilter
* (Comentado)
* - operclass.default.conf contiene algunas buenas operclasses que
* puedes usar en tus bloques operativos.
*/
include "help/help.conf";
include "badwords.conf";
//include "spamfilter.conf";
include "operclass.default.conf";
include "snomasks.default.conf";
/* Cargar el módulo de encubrimiento predeterminado (2021 en adelante): */
loadmodule "cloak_sha256";
/* O cargue el módulo antiguo de UnrealIRCd 3.2/4/5 en su lugar: */
//loadmodule "cloak_md5";
/* Este es el bloque yo { } que básicamente dice quiénes somos.
* Define el nombre de nuestro servidor, alguna línea de información y un "sid" único.
* La identificación del servidor (sid) debe comenzar con un dígito seguido de dos dígitos o
* cartas. El sid debe ser único para su red IRC (cada servidor debe
* tener su propio sid).
*/
me {
name "irc.example.org";
info "ExampleNET Server";
sid "001";
}
/* El bloque admin { } define lo que verán los usuarios si escriben /ADMIN.
* Normalmente contiene información sobre cómo contactar con el administrador.
*/
admin {
"Bob Smith";
"bob";
"email@example.org";
}
/* Los clientes y servidores se colocan en bloques de clase { }, los definimos aquí.
* Los bloques de clase constan de los siguientes elementos:
* - pingfreq: con qué frecuencia hacer ping a un usuario/servidor (en segundos)
* - connfreq: con qué frecuencia intentamos conectarnos a este servidor (en segundos)
* - sendq: el tamaño máximo de cola para una conexión
* - recvq: máxima cola de recepción de una conexión (control de inundación)
*/
/* Clase de cliente con buenos valores predeterminados */
class clients
{
pingfreq 90;
maxclients 1000;
sendq 200k;
recvq 8000;
}
/* Clase especial para IRCOps con límites más altos */
class opers
{
pingfreq 90;
maxclients 50;
sendq 1M;
recvq 8000;
}
/* Clase de servidor con buenos valores predeterminados */
class servers
{
pingfreq 60;
connfreq 15; /* intenta conectarte cada 15 segundos */
maxclients 10; /* maximo de servidores */
sendq 20M;
}
/* Permitir que los bloques definan qué clientes pueden conectarse a este servidor.
* Esto le permite agregar una contraseña de servidor o restringir el servidor a
* IP específicas solamente. También configuras las conexiones máximas
* permitido por IP aquí.
* Ver también: https://www.unrealircd.org/docs/Allow_block
*/
/* Permitir el ingreso de todos, pero solo 3 conexiones por IP */
allow {
mask *;
class clients;
maxperip 3;
}
/* Los bloques Oper definen sus operadores IRC.
* Los operadores de IRC son personas que tienen "derechos adicionales" en comparación con otros,
* por ejemplo, pueden /MATAR a otras personas, iniciar la vinculación del servidor,
* /ÚNETE a los canales aunque estén prohibidos, etc.
*
* Para obtener más información sobre cómo convertirse en un IRCOp y cómo ser administrador
* tareas, ver: https://www.unrealircd.org/docs/IRCOp_guide
*
* Para obtener detalles sobre el propio bloque oper { }, consulte
* https://www.unrealircd.org/docs/Oper_block
*/
/* Aquí hay un bloque de operación de ejemplo para 'bobsmith'.
* ¡DEBES cambiar esto!
*/
oper bobsmith {
class opers;
mask *@*;
/* Technically you can put oper passwords in plaintext in the conf but
* this is HIGHLY DISCOURAGED. Instead you should generate a password hash:
* On *NIX, run: ./unrealircd mkpasswd
* On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
* .. and then paste the result below:
*/
password "$argon2id..etc..";
/* See https://www.unrealircd.org/docs/Authentication_types for
* more information, including even better authentication types
* such as 'certfp', and how to generate hashes on Windows.
*/
/* Los permisos de operación se definen en un bloque 'operclass'.
* Ver https://www.unrealircd.org/docs/Operclass_block
* UnrealIRCd se envía con una serie de bloques predeterminados, consulte
* el artículo para una lista completa. Elegimos 'netadmin' aquí.
*/
operclass netadmin;
swhois "is a Network Administrator";
vhost netadmin.example.org;
}
/* Los bloques de escucha definen los puertos donde el servidor debe escuchar.
* En otras palabras: los puertos que los clientes y servidores pueden usar para
* conectarse a este servidor.
*
* Sintaxis:
* listen {
* ip <ip>;
* port <port>;
* options {
* <options....>;
* }
* }
*/
/* Puerto IRC estándar 6667
* Insecure plaintext (NOT for production servers)
* This listen block is here only for quick testing.
* Delete or comment out this listen block on production servers
* and use TLS on port 6697 instead.
*/
listen {
ip *;
port 6667;
}
/* Puerto IRC estándar 6697 */
listen {
ip *;
port 6697;
options { tls; }
}
/* Puerto especial solo para servidores SSL/TLS para vincular */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
/* NOTA: Si está en una shell IRCd con múltiples IP y usa
* los bloques de escucha anteriores { } entonces probablemente obtendrás un
* Error 'Dirección ya en uso' y el ircd no se iniciará.
* Esto significa que DEBE vincularse a una IP específica en lugar de '*' como:
* escucha { ip 1.2.3.4; puerto 6667; }
* Por supuesto, reemplaza la IP con la IP que te fue asignada.
*/
/*
* Los bloques de enlace le permiten vincular varios servidores para formar una red.
* Ver https://www.unrealircd.org/docs/Tutorial:_Linking_servers
*/
link hub.ejemplo.org
{
incoming {
mask *@algo;
}
outgoing {
bind-ip *; /* o explícitamente una IP */
hostname hub.ejemplo.org;
port 6900;
options { tls; }
}
/* Usamos la huella digital SPKI del otro servidor para la autenticación.
* Ejecute './unrealircd spkifp' en el otro lado del linkeo para obtenerlo.
* ( Windows: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp )
*/
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
class servers;
}
/* El bloque de enlace para servicios suele ser mucho más simple.
* Para más información sobre qué son los Servicios,
* ver https://www.unrealircd.org/docs/Services
*/
link services.ejemplo.org
{
incoming {
mask 127.0.0.1;
}
password "cambiameporfavor";
class servers;
}
/* Las líneas U dan a otros servidores (incluso) más poder/comandos.
* Si usas servicios debes agregarlos aquí.
* ¡NUNCA pongas el nombre de un servidor UnrealIRCd aquí!
*/
ulines {
services.ejemnplo.org;
}
/* Aquí puede agregar una contraseña para los comandos /DIE y /RESTART exclusivos de IRCOp.
* Esto está destinado principalmente a proporcionar un poco de protección contra accidentes
* reinicios y muertes del servidor.
*/
drpass {
restart "restart";
die "die";
}
/* El bloque de registro define qué debe registrarse y en qué archivo.
* Ver también https://www.unrealircd.org/docs/Log_block
*/
/* Este es un buen valor predeterminado, registra todo excepto
* cosas de depuración y unión/parte/kick.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.log" { maxsize 100M; }
}
}
/* In addition to regular logging, also add a JSON log file.
* This includes lots of information about every event so is great
* for auditing purposes and is machine readable. It is, however
* less readable for humans.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.json.log" { maxsize 250M; type json; }
}
}
/* Con "aliases" puedes crear un alias como /ALGO para enviar un mensaje a
* algún usuario o bot. Suelen utilizarse para servicios.
*
* Tenemos una cantidad de archivos de alias preestablecidos, consulte el directorio alias/.
* A modo de ejemplo, aquí incluimos todos los alias utilizados para los servicios de anope.
*/
include "aliases/anope.conf";
/* Prohibir los apodos para que no puedan ser utilizados por usuarios regulares */
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reservado para Servicios";
}
/* Baneo por ip.
* Tenga en cuenta que normalmente usa /KLINE, /GLINE y /ZLINE para esto.
*/
ban ip {
mask 195.86.232.81;
reason "Te odio";
}
/* Baneo del servidor: si vemos que este servidor está vinculado a alguien, lo desvinculamos */
ban server {
mask eris.berkeley.edu;
reason "Sal de aquí.";
}
/* Baneo de usuario: solo como ejemplo, normalmente usa /KLINE o /GLINE para esto */
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
}
/* Baneo del nombre real le permite prohibir clientes en función de su 'nombre real'
* o campo 'gecos'.
*/
ban realname {
mask "Equipo Swat";
reason "mIRKFORCE";
}
ban realname {
mask "sub7server";
reason "sub7";
}
/* Excepciones de baneo y TKL. Le permite eximir a los usuarios/máquinas de
* KLINE, GLINE, etc.
* Si es un IRCOp con una IP estática (y no hay personas que no sean de confianza en esa IP)
* entonces te sugerimos que te añadas aquí. Así siempre puedes entrar
* incluso si accidentalmente colocas una prohibición de *LINE en ti mismo.
*/
/* excepto el baneo con el tipo 'todos' (all) te proteja de GLINE, GZLINE, QLINE, SHUN */
except ban {
mask *@192.0.2.1;
type all;
}
/* This allows IRCCloud connections in without maxperip restrictions
* and also exempt them from connect-flood throttling.
*/
except ban {
mask *.irccloud.com;
type { maxperip; connect-flood; }
}
/* Con los bloques de denegación de DCC puede prohibir los nombres de archivo para DCC */
deny dcc {
filename "*sub7*";
reason "Posible Sub7 Virus";
}
/* denegar canal le permite prohibir un canal (máscara) por completo */
deny channel {
channel "*warez*";
reason "Warez es ilegal";
class "clients";
}
/* Los VHosts (hosts virtuales) permiten a los usuarios adquirir un host diferente.
* Ver https://www.unrealircd.org/docs/Vhost_block
*/
/* Ejemplo de vhost que puede usar. En el tipo de IRC: prueba de prueba /VHOST
* NOTA: solo las personas con un host 'unrealircd.com' pueden usarlo para
* asegúrese de cambiar el vhost::mask antes de probar.
*/
vhost {
vhost odio.microsefrs.com;
mask *@unrealircd.com;
login "test";
password "test";
}
/* Los bloques de la lista negra consultarán un servicio de lista negra de DNS externo
* cada vez que un usuario se conecta, para ver si se conoce la dirección IP
* para causar ataques de drones, es una máquina pirateada conocida, etc.
* Documentación: https://www.unrealircd.org/docs/Blacklist_block
* O simplemente eche un vistazo a los bloques a continuación.
*/
/* DroneBL, probablemente la lista negra más popular utilizada por los servidores IRC.
* Ver https://dronebl.org/ para su documentación y el
* significado de los tipos de respuesta. Al momento de escribir usamos tipos:
* 3: IRC Drone, 5: Embotellador, 6: Spambot o drone desconocido,
* 7: Drone DDoS, 8: Proxy SOCKS, 9: Proxy HTTP, 10: ProxyChain,
* 11: Proxy de página web, 12: Open DNS Resolver, 13: Atacantes de fuerza bruta,
* 14: Proxy Wingate abierto, 15: Enrutador / puerta de enlace comprometidos,
* 16: Gusanos autoenraizadores.
*/
blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone Detectado. Chequea https://dronebl.org/lookup?ip=$ip para más detalles.";
}
/* EFnetRBL, consulte https://rbl.efnetrbl.org/ para obtener la documentación
* y el significado de los tipos de respuesta.
* Al momento de escribir: 1 es proxy abierto, 4 es TOR, 5 es drones/inundaciones.
*
* NOTA: Si desea permitir proxies TOR en su servidor, entonces
* necesita eliminar el '4;' abajo en la sección de respuesta.
*/
blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone/TOR detected. Check https://rbl.efnetrbl.org/?i=$ip for details.";
}
/* Puede incluir otros archivos de configuración */
/* include "klines.conf"; */
/* Configuración de la red */
set {
network-name "EjemploNET";
default-server "irc.ejemplo.org";
services-server "services.ejemplo.org";
stats-server "stats.ejemplo.org";
help-channel "#Ayuda";
cloak-prefix "Clk";
prefix-quit "Quit";
/* Las claves de ocultación deben ser las mismas en todos los servidores de la red.
* Se utilizan para generar hosts enmascarados y deben mantenerse en secreto.
* Las claves deben ser 3 cadenas aleatorias de 80 caracteres cada una (o más).
* y debe constar de minúsculas (a-z), mayúsculas (A-Z) y dígitos (0-9).
* SUGERENCIA: En *NIX, puede ejecutar './unrealircd gencloak' en su shell para dejar
* UnrealIRCd genera 3 cadenas aleatorias para ti.
* On Windows, you can run "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
*/
cloak-keys {
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
"y otra llave";
"y otra llave";
}
}
/* Configuración específica del servidor */
set {
kline-address 'agrega.una.dirección.de.correo-electrónico'; /* correo electrónico o URL que se muestra cuando un usuario está baneado */
modes-on-connect "+ixw"; /* cuando los usuarios se conecten, obtendrán estos modos de usuario */
modes-on-oper "+xws"; /* cuando alguien se convierte en IRCOp obtendrá estos modos */
modes-on-join "+nt"; /* modos de canal predeterminados cuando se crea un nuevo canal */
oper-auto-join "#opers"; /* Los IRCOps se unen automáticamente a este canal */
options {
hide-ulines; /* ocultar líneas U en /MAP y /LINKS */
show-connect-info; /* mostrar mensajes de "buscando su nombre de host" al conectarse */
}
maxchannelsperuser 10; /* número máximo de canales que un usuario puede /JOIN */
/* El tiempo mínimo que un usuario debe estar conectado antes de que se le permita
* use un mensaje SALIR. Con suerte, esto ayudará a detener el spam.
*/
anti-spam-quit-message-time 10s;
/* O simplemente establezca una salida estática, lo que significa que se ignora cualquier razón /QUIT */
/* static-quit "Salida del cliente"; */
/* static-part hace lo mismo para /PART */
/* static-part yes; */
/* Protección contra inundaciones:
* Hay muchas configuraciones para esto y la mayoría tiene buenos valores predeterminados.
* Ver https://www.unrealircd.org/docs/Set_block#set::anti-flood
*/
anti-flood {
}
/* Configuración del filtro de spam */
spamfilter {
ban-time 1d; /* duración predeterminada de una prohibición de *LINE establecida por spamfilter */
ban-reason "Spam/Publicidad"; /* razón por defecto */
virus-help-channel "#Ayuda"; /* canal a usar para la acción 'viruschan' */
/* except "#Ayuda"; canal para eximir de Spamfilter */
}
/* Restringir ciertos comandos.
* Ver https://www.unrealircd.org/docs/Set_block#set::restrict-commands
*/
restrict-commands {
list {
except {
connect-time 60;
identified yes;
reputation-score 24;
}
}
invite {
except {
connect-time 120;
identified yes;
reputation-score 24;
}
}
/* Además de la capacidad de restringir cualquier comando,
* como se muestra arriba. También hay 4 tipos especiales.
* que puedes restringir. Estos son "mensajes privados",
* "aviso privado", "mensaje de canal" y "aviso de canal".
* Están comentados (deshabilitados) en este ejemplo:
*/
//private-message {
// except {
// connect-time 10;
// }
//}
//private-notice {
// except {
// connect-time 10;
// }
//}
}
}
/*
* Lo siguiente configurará la limitación de conexión de "usuarios desconocidos".
*
* Cuando UnrealIRCd detecta una gran cantidad de usuarios que se conectan desde direcciones IP
* que no se han visto antes, entonces se rechazan las conexiones de nuevas IP
* por encima de la tarifa establecida. Por ejemplo a las 10:60 solo se pueden conectar 10 usuarios por minuto
* que no se han visto antes. Las direcciones IP conocidas siempre pueden entrar,
* independientemente de la tarifa establecida. Lo mismo para los usuarios que inician sesión con SASL.
*
* Ver también https://www.unrealircd.org/docs/Connthrottle para más detalles.
* O simplemente siga leyendo los ajustes de configuración predeterminados a continuación:
*/
set {
connthrottle {
/* Primero debemos configurar lo que llamamos "usuarios conocidos".
* De forma predeterminada, estos son usuarios en direcciones IP que tienen
* una puntuación de 24 o superior. Una puntuación de 24 significa que el
* La IP estuvo conectada a esta red durante al menos 2 horas
* en el último mes (o mínimo 1 hora si está registrado).
* La opción sasl-bypass es otra configuración. Significa
* que los usuarios que se autentican en los servicios a través de SASL
* también se consideran usuarios conocidos.
* Usuarios en el grupo de "usuarios conocidos" (ya sea por reputación
* o por SASL) siempre están permitidas en este módulo.
*/
except {
reputation-score 24;
identified yes;
}
/* Los nuevos usuarios son todos los usuarios que no pertenecen al
* grupo de usuarios conocidos. Se consideran "nuevos" y en
* caso de un alto número de tales nuevos usuarios que se conectan
* están sujetos a limitación de velocidad de conexión.
* Por defecto la tarifa es de 20 nuevos usuarios locales por minuto
* y 30 nuevos usuarios globales por minuto.
*/
new-users {
local-throttle 20:60;
global-throttle 30:60;
}
/* Esto configura cuando este módulo NO estará activo.
* La configuración predeterminada deshabilitará el módulo cuando:
* - El módulo de reputación se ha estado ejecutando durante menos de
* una semana. Si se ejecuta menos de 1 semana, entonces hay
* datos insuficientes para considerar quién es un "usuario conocido".
* - El servidor acaba de iniciarse (primeros 3 minutos).
*/
disabled-when {
reputation-gathering 1w;
start-delay 3m;
}
}
}
/* HISTORIAL DE UN CANAL:
* UnrealIRCd tiene el modo de canal +H que los usuarios pueden usar para volver a leer
* los mensajes del canal, antes de que se unieran. Para información general
* en esta función, lee https://www.unrealircd.org/docs/Channel_history
*
* El historial del canal puede ser configurado vía set::history. Los valores predeterminados
* son probablemente buenos para ti, pero si está en un sistema con poca memoria
* o tiene miles de canales, entonces es posible que debas volver a verificar. Lee
* https://www.unrealircd.org/docs/Set_block#set::history para las opciones.
*
* Además de eso, puedes tener "persistent channel history", cual
* significa que el historial del canal se almacena encriptado en el disco
* para que se conserve entre reinicios del servidor IRC, lee
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
* La función de historial persistente NO está habilitada de manera predeterminada
* porque usted necesita configurar un bloque de secreto { } para ello. Un sencillo
* ejemplo con contraseñas almacenadas directamente en el archivo de configuración.
* Para obtener una mejor seguridad, lee https://www.unrealircd.org/docs/Secret_block
* las diferentes alternativas para que no almacenes contraseñas directamente en la configuración.
*/
//secret historydb { password "somepassword"; }
//set { history { channel { persist yes; db-secret "historydb"; } } }
/* Finalmente, es posible que desee tener un MOTD (Mensaje del día), esto puede ser
* se hace creando un archivo de texto 'ircd.motd' en su directorio conf/.
* Este archivo se mostrará a tus usuarios al conectarse.
* Para obtener más información, consulte https://www.unrealircd.org/docs/MOTD_and_Rules
*/
/*
* Problemas o necesita más ayuda?
* 1) https://www.unrealircd.org/docs/
* 2) https://www.unrealircd.org/docs/Main_Page/es <- ¡responde el 80% de tus preguntas!
* 3) Si aún tiene problemas, puede obtener soporte:
* - Foros: https://forums.unrealircd.org/
* - IRC: irc.unrealircd.org (SSL en el puerto 6697) / #unreal-support
* ¡Tenga en cuenta que primero le pedimos que lea la documentación y las preguntas frecuentes!
*/
+666
View File
@@ -0,0 +1,666 @@
/* Fichier de configuration pour UnrealIRCd 6
*
* Copiez ce fichier dans le répertoire conf/, renommez le
* 'unrealircd.conf' et parcourez-le ligne par ligne (modifiez le !)
*
* Important : Toutes les lignes, sauf celles ne comportant qu'un {
* ouvrant, doivent finir par un ; y compris };. C'est très important,
* car si vous oubliez un ; quelque part, alors le parser du fichier de
* configuration se plaindra et votre fichier ne sera pas lu correctement !
* S'il s'agit de votre première expérience avec le fichier de configuration
* d'UnrealIRCd, nous vous recommandons de vous documenter un peu à propos
* de la syntaxe. Ça ne vous prendra que quelques minutes et vous aidera
* beaucoup :
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
*
* Documentation pour UnrealIRCd 6 (très complète !) :
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation/fr
*
* Foire Aux Questions :
* https://www.unrealircd.org/docs/FAQ
*
*/
/* Ceci est un commentaire, ici, tout le texte est ignoré (type #1) */
// Ceci est aussi un commentaire, cette ligne est ignorée (type #2)
# Ceci est aussi un commentaire, cette ligne est ignorée (type #3)
/* UnrealIRCd utilise beaucoup les modules. Ceux-ci vous permettent
* de personnaliser complètement les fonctionnalités que vous voulez
* activer sur UnrealIRCd.
* Voir : https://www.unrealircd.org/docs/Modules
*
* En utilisant la ligne include ci-dessous, nous indiquons à l'IRCd de
* lire le fichier 'modules.default.conf' ce qui activera plus de 150
* modules fournis avec UnrealIRCd. En d'autres termes, ceci activera
* toutes les fonctionnalités disponibles d'UnrealIRCd.
* Si vous configurez UnrealIRCd pour la première fois, nous vous
* conseillons d'utiliser cette ligne. Après, lorsque tout fonctionnera
* vous pourrez revenir personnaliser la liste (si vous le souhaitez).
*/
include "modules.default.conf";
/* Incluons aussi d'autres fichiers :
* - help/help.conf pour le système d'aide sur IRC via /HELPOP
* - badwords.conf pour le mode utilisateur et de salon +G
* - spamfilter.conf comme exemple d'utilisation de spamfilter
* - operclass.default.conf qui contient les classes d'opérateurs
* par défaut à utiliser dans vos blocs oper.
*/
include "help/help.conf";
include "badwords.conf";
//include "spamfilter.conf";
include "operclass.default.conf";
include "snomasks.default.conf";
/* Load the default cloaking module (2021 onwards): */
loadmodule "cloak_sha256";
/* Or load the old module from UnrealIRCd 3.2/4/5 instead: */
//loadmodule "cloak_md5";
/* Le bloc me { } indique qui est le serveur.
* Il définit le nom du serveur, une ligne d'informations et un identifiant
* "sid" unique. L'id du serveur (sid) doit commencer par un chiffre suivit
* de deux chiffres ou lettres. Le sid doit être unique sur votre réseau IRC
* (chaque serveur doit avoir un sid différent).
*/
me {
name "irc.example.org";
info "Serveur ExampleNET";
sid "001";
}
/* Le bloc admin { } définit ce que les utilisateurs verront en faisant
* /ADMIN. C'est généralement des infos de contact de l'administrateur.
*/
admin {
"Bob Smith";
"bob";
"adresse.email@example.org";
}
/* Les clients et serveurs sont placés dans des classes, que nous
* définissons dans ces blocs class { }.
* Les blocs de classe comportent les éléments suivants :
* - pingfreq: à quelle fréquence envoyer un ping à l'utilisateur ou au
* serveur (en secondes)
* - connfreq: à quelle fréquence on essaye de se connecter à ce serveur
* (en secondes)
* - sendq: la taille maximale de la queue d'émission pour une connexion
* - recvq: la taille maximale de la queue de réception pour une connexion
* (contrôle du flood)
*/
/* Classe pour des clients */
class clients
{
pingfreq 90;
maxclients 1000;
sendq 200k;
recvq 8000;
}
/* Classe spéciale pour des IRCOps avec des limites plus hautes */
class opers
{
pingfreq 90;
maxclients 50;
sendq 1M;
recvq 8000;
}
/* Classe pour des serveurs */
class servers
{
pingfreq 60;
connfreq 15; /* essayer de se connecter toutes les 15 sec */
maxclients 10; /* nombre max de serveurs */
sendq 5M;
}
/* Les blocs allow définissent quels clients peuvent se connecter au
* serveur. Ils vous permettent d'ajouter un mot de passe ou de restreindre
* le serveur à certaines IP seulement. C'est aussi là que vous configurez
* le nombre maximum de connexions par IP.
* Voir : https://www.unrealircd.org/docs/Allow_block
*/
/* Accepter tout le monde, mais seulement 5 connexions par IP */
allow {
mask *;
class clients;
maxperip 5;
}
/* Exemple de bloc allow spécial pour une IP donnée :
* Les utilisateurs sur cette IP doivent se connecter avec un mot de passe.
* S'il est correct, alors autoriser 20 connexions sur cette IP.
*/
allow {
mask 192.0.2.1;
class clients;
password "unmotdepassesecret";
maxperip 20;
}
/* Les blocs oper définissent vos Opérateurs IRC.
* Les Opérateurs IRC sont des utilisateurs avec des "droits en plus"
* par rapport aux autres, par exemple, ils peuvent /KILL (déconnecter)
* d'autres utilisateurs, faire se connecter des serveurs entre eux,
* /JOIN des salons même s'ils sont bannis, etc ...
* Voir aussi : https://www.unrealircd.org/docs/Oper_block
*/
/* Voici un exemple de bloc oper pour 'bobsmith'.
* Vous DEVEZ le modifier !!
*/
oper bobsmith {
class opers;
mask *@*;
/* Technically you can put oper passwords in plaintext in the conf but
* this is HIGHLY DISCOURAGED. Instead you should generate a password hash:
* On *NIX, run: ./unrealircd mkpasswd
* On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
* .. and then paste the result below:
*/
password "$argon2id..etc..";
/* See https://www.unrealircd.org/docs/Authentication_types for
* more information, including even better authentication types
* such as 'certfp', and how to generate hashes on Windows.
*/
/* Les permissions Oper sont définies dans un bloc 'operclass'.
* Voir https://www.unrealircd.org/docs/Operclass_block
* UnrealIRCd est fourni avec des classes par défaut, voir la doc
* pour une liste complète. Nous avons choisi 'netadmin' ici.
*/
operclass netadmin;
swhois "est un Administrateur du Réseau";
vhost netadmin.example.org;
}
/* Les blocs listen définissent les ports sur lesquels le serveur écoute.
* C'est-à-dire les ports que les clients et les serveurs utilisent pour
* se connecter à ce serveur.
*
* Syntaxe :
* listen {
* ip <adresse ip>;
* port <numéro de port>;
* options {
* <options....>;
* }
* }
*/
/* Port standard pour IRC 6667
* Insecure plaintext (NOT for production servers)
* This listen block is here only for quick testing.
* Delete or comment out this listen block on production servers
* and use TLS on port 6697 instead.
*/
listen {
ip *;
port 6667;
}
/* Port standard pour IRC sur SSL/TLS 6697 */
listen {
ip *;
port 6697;
options { tls; }
}
/* Port SSL/TLS spécial pour la connexion entre serveurs */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
/* NOTE : Si vous utilisez un serveur IRC avec plusieurs IP et que vous
* utilisez les blocs listen ci-dessus, vous aurez peut-être une
* erreur 'Address already in use' et l'IRCd ne démarrera pas.
* Celle-ci indique que vous devez préciser une IP spécifique
* au lieu de '*'. Exemple :
* listen 1.2.3.4:6667;
* Bien sûr, remplacez 1.2.3.4 par l'IP qui vous est assignée.
*/
/*
* Les blocs link vous permettent de connecter plusieurs serveurs ensemble
* pour former un réseau IRC.
* Voir https://www.unrealircd.org/docs/Tutorial:_Linking_servers
*/
link hub.example.org
{
incoming {
mask *@something;
}
outgoing {
bind-ip *; /* ou une IP précise */
hostname hub.example.org;
port 6900;
options { tls; }
}
password "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF"; /* Empreinte SSL de l'autre serveur */
class servers;
}
/* Les U-lines donnent encore plus de pouvoir à certains serveurs.
* Si vous utilisez des Services, vous devez les indiquer ici.
* NE JAMAIS indiquer le nom d'un serveur UnrealIRCd normal ici !!!
* (Si vous ne savez pas ce que sont les Services, voir :
* https://www.unrealircd.org/docs/Services )
*/
ulines {
services.example.org;
}
/* Ici vous pouvez indiquer un mot de passe pour les commandes /DIE et
* /RESTART, qui sont restreintes aux IRCops.
* Il s'agit surtout d'une petite protection contre les redémarrages et
* les coupures de serveur accidentels.
*/
drpass {
restart "restart";
die "die";
}
/* Le bloc log indique ce qui doit être journalisé et dans quel fichier.
* Voir aussi https://www.unrealircd.org/docs/Log_block
*/
/* Ceci est une bonne valeur par défaut, elle journalise presque tout */
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.log" { maxsize 100M; }
}
}
/* In addition to regular logging, also add a JSON log file.
* This includes lots of information about every event so is great
* for auditing purposes and is machine readable. It is, however
* less readable for humans.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.json.log" { maxsize 250M; type json; }
}
}
/* Avec des "alias", vous pouvez créer un alias comme /UNTRUC pour envoyer
* un message à un utilisateur ou à un bot. Ils sont souvent utilisés pour
* les services.
*
* Nous fournissons un certain nombre d'alias par défaut, voir les fichiers
* du répertoire aliases/.
* Pour exemple, ici nous ajoutons les alias pour les Services Anope.
*/
include "aliases/anope.conf";
/* Bannir des nicks pour qu'ils ne soient pas utilisables par des
* utilisateurs normaux
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Réservé aux Services";
}
/* Bannir une IP.
* NB : vous pouvez aussi utiliser /KLINE, /GLINE et /ZLINE pour ça.
*/
ban ip {
mask 195.86.232.81;
reason "Je vous hais !";
}
/* Bannir un serveur - si ce serveur est connecté au réseau, nous nous
* déconnecterons
*/
ban server {
mask eris.berkeley.edu;
reason "Va-t-en d'ici.";
}
/* Bannir un utilisateur - juste pour l'exemple, on utilise normalement
* /KLINE or /GLINE pour ça
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
}
/* Bannir un realname (ou 'gecos') */
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
}
ban realname {
mask "sub7server";
reason "sub7";
}
/* Exceptions de ban et TKL. Vous permet d'exempter des utilisateurs des
* KLINE, GLINE, etc ...
* Si vous êtes un IRCOp avec une IP statique (et qu'il n'y a que des
* personnes de confiance sur cette IP), alors vous pouvez vous ajouter ici.
* Ainsi, vous pourrez toujours vous connecter même si vous vous bannissez
* accidentellement.
*/
/* except ban avec le type 'all' vous protège des GLINE, GZLINE, QLINE, SHUN */
except ban {
mask *@192.0.2.1;
type all;
}
/* This allows IRCCloud connections in without maxperip restrictions
* and also exempt them from connect-flood throttling.
*/
except ban {
mask *.irccloud.com;
type { maxperip; connect-flood; }
}
/* Avec un bloc deny dcc vous pouvez interdire des noms de fichiers dans
* les échanges DCC
*/
deny dcc {
filename "*sub7*";
reason "Possible virus Sub7";
}
/* deny channel vous permet d'interdire des masques de noms de salons */
deny channel {
channel "*warez*";
reason "Le warez est illegal";
class "clients";
}
/* Les VHosts (Virtual Hosts - Hôtes Virtuels) permettent aux utilisateurs
* d'avoir un nom d'hôte différent.
* Voir https://www.unrealircd.org/docs/Vhost_block
*/
/* Vhost d'exemple. Sur IRC, entrez /VHOST test test
* NOTE : seuls les utilisateurs avec un nom d'hôte 'unrealircd.com'
* peuvent l'utiliser, donc modifiez vhost::mask avant de tester.
*/
vhost {
vhost i.hate.microsefrs.com;
mask *@unrealircd.com;
login "test";
password "test";
}
/* Les blocs de liste noire interrogeront un service de liste noire DNS externe
* chaque fois qu'un utilisateur se connecte, pour voir si l'adresse IP est connue
* pour provoquer des attaques de drones, est une machine piratée connue, etc..
* Documentation: https://www.unrealircd.org/docs/Blacklist_block
* Ou regardez simplement les blocs ci-dessous.
*/
/* DroneBL, probablement la liste noire la plus populaire utilisée par les serveurs IRC.
* Voir https://dronebl.org/ pour leur documentation et les
* significations des types de réponse. AAu moment de la rédaction, nous utilisons des types:
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
* 16: Autorooting worms.
*/
blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone detected. Check https://dronebl.org/lookup?ip=$ip for details.";
}
/* EFnetRBL, voir https://rbl.efnetrbl.org/ pour la documentation
* et la signification des types de réponse.
* Au moment de la rédaction: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
*
* REMARQUE: Si vous souhaitez autoriser les proxys TOR sur votre serveur, alors
* vous devez supprimer le '4;' ci-dessous dans la section de réponse.
*/
blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone/TOR detected. Check https://rbl.efnetrbl.org/?i=$ip for details.";
}
/* Vous pouvez inclure d'autres fichiers de configuration */
/* include "klines.conf"; */
/* Configuration du réseau */
set {
network-name "ExampleNET";
default-server "irc.example.org";
services-server "services.example.org";
stats-server "stats.example.org";
help-channel "#Help";
cloak-prefix "Clk";
prefix-quit "Quit";
/* Les clés de cloaking doivent être identiques sur tous les serveurs
* d'un réseau. Elles sont utilisées pour générer les noms d'hôtes
* masqués et doivent être gardées secrètes. Les clés doivent être
* 3 chaînes de 80 caractères aléatoires et ne comporter que des
* minuscules (a-z), des majuscules (A-Z) et des chiffres (0-9).
* (voir l'exemple)
* NB : sur *NIX, vous pouvez exécuter './unrealircd gencloak' sur votre
* serveur pour que Unrealircd génère 3 clés aléatoires pour vous.
* On Windows, use "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
*/
cloak-keys {
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
"et une autre";
"et une troisième";
}
}
/* Configuration spécifique au serveur */
set {
kline-address 'indiquez.une.adresse.email'; /* e-mail ou URL indiquée lorsqu'un utilisateur est banni */
modes-on-connect "+ixw"; /* modes utilisateur ajoutés lorsqu'un utilisateur se connecte */
modes-on-oper "+xws"; /* modes utilisateur ajoutés lorsqu'un utilisateur devient IRCOp */
oper-auto-join "#opers"; /* salon que les IRCOps joignent automatiquement */
options {
hide-ulines; /* cacher les U-lines de /MAP et /LINKS */
show-connect-info; /* afficher les messages "looking up your hostname" à la connexion */
}
maxchannelsperuser 10; /* nombre max de salons par utilisateur */
/* Temps minimum qu'un utilisateur doit rester connecter avant de pouvoir
* utiliser un message de QUIT. Le but est pour réduire le spam.
*/
anti-spam-quit-message-time 10s;
/* Ou indiquez un message de QUIT constant, ce qui fait que les raisons
* de /QUIT sont ignorées.
*/
/* static-quit "Le client a quitté"; */
/* static-part fait la même chose pour /PART */
/* static-part yes; */
/* Protections anti-flood.
* Voir: https://www.unrealircd.org/docs/Set_block#set::anti-flood
*/
anti-flood {
}
/* Paramètres de Spamfilter */
spamfilter {
ban-time 1d; /* durée par défaut des bans *LINE ajoutés par spamfilter */
ban-reason "Spam/Publicité"; /* raison par defaut */
virus-help-channel "#help"; /* salon par défaut pour l'action 'viruschan' */
/* except "#help"; salon à exempter de Spamfilter */
}
/* Restreindre certaines commandes.
* Voir https://www.unrealircd.org/docs/Set_block#set::restrict-commands
*/
restrict-commands {
list {
except {
connect-time 60; /* après 60 secondes, vous pouvez utiliser LIST */
identified yes; /* ou immédiatement, si vous êtes identifié aux services */
reputation-score 24; /* ou si vous avez un score de réputation de 24 ou plus */
}
}
invite {
except {
connect-time 120;
identified yes;
reputation-score 24;
}
}
/* En plus de la possibilité de restreindre toute commande,
* tel qu'illustré ci-dessus. Il existe également 4 types spéciaux
* que vous pouvez restreindre. Ceux-ci sont "private-message",
* "private-notice", "channel-message" and "channel-notice".
* Ils sont commentés (désactivés) dans cet exemple :
*/
//private-message {
// except { connect-time 10; }
//}
//private-notice {
// except { connect-time 10; }
//}
}
}
/*
* Ce qui suit configurera la limitation de connexion de "unknown users".
*
* Quand UnrealIRCd détecte un nombre élevé d'utilisateurs se connectant à partir d'adresses IP
* qui n'ont pas été vus auparavant, les connexions des nouvelles IP sont rejetées
* au-dessus du taux fixé. Par exemple à 10:60 seuls 10 utilisateurs par minute peuvent se connecter
* qui n'ont pas été vus auparavant. Les adresses IP connues peuvent toujours entrer,
* quel que soit le tarif fixé. Idem pour les utilisateurs qui se connectent avec SASL.
*
* Voir également https://www.unrealircd.org/docs/Connthrottle pour les détails.
* Ou continuez simplement à lire les paramètres de configuration par défaut ci-dessous:
*/
set {
connthrottle {
/* Nous configurons d'abord quels utilisateurs sont exemptés de la
* restrictions. Ces utilisateurs sont toujours autorisés!
* Par défaut, ce sont des utilisateurs sur des adresses IP qui ont
* un score de 24 ou plus. Un score de 24 signifie que l'IP
* était connecté à ce réseauk pendant au moins 2 heures
* au cours du mois passé (ou minimum 1h si inscrit).
* Nous permettons également aux utilisateurs qui sont identifiés aux services via
* SASL contourner les restrictions.
*/
except {
reputation-score 24;
identified yes;
/* pour plus d'options, voir restrictions
* https://www.unrealircd.org/docs/Mask_item
*/
}
/* Les nouveaux utilisateurs sont tous les utilisateurs qui n'appartiennent pas au
* groupe d'utilisateurs connus. Ils sont considérés comme "nouveaux" et dans
* le cas d'un nombre élevé de ces nouveaux utilisateurs se connectant
* ils sont soumis à une limitation du débit de connexion.
* Par défaut, le taux est de 20 nouveaux utilisateurs locaux par minute
* et 30 nouveaux utilisateurs global par minute.
*/
new-users {
local-throttle 20:60;
global-throttle 30:60;
}
/* Ceci configure quand ce module ne sera PAS actif.
* Les paramètres par défaut désactiveront le module lors que:
* - Le module de réputation fonctionne depuis moins d'une
* semaine. Si vous courez moins d'une semaine, il y a
* données insuffisantes pour déterminer qui est un "utilisateur connu".
* - Le serveur vient d'être démarré (3 premières minutes).
*/
disabled-when {
reputation-gathering 1w;
start-delay 3m;
}
}
}
/* HISTORIQUE DES CANAUX:
* UnrealIRCd a le mode canal +H qui peut être utilisé par les utilisateurs pour relire
* historique de la chaîne, comme avant leur adhésion. Pour des informations générales
* sur cette fonctionnalité, voir https://www.unrealircd.org/docs/Channel_history
*
* Les limites de l'historique peuvent être configurées via set::history.
* Les valeurs par défaut sont probablement déjà bien pour toi, mais si vous êtes sur un
* système à faible mémoire ou ayant des milliers de canaux, vous voudrez peut-être re vérifier.
* Voir https://www.unrealircd.org/docs/Set_block#set::history pour les options.
*
* En plus de cela, vous pouvez avoir "persistent channel history", qui
* signifie que l'historique des chaînes est stocké crypté sur le disque
* afin qu'il soit préservé entre les redémarrages du serveur IRC, voir
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
* La fonction d'historique persistant n'est PAS activée par défaut car vous
* devez de configurer un bloque de secret { }. Ce qui suit est un simple
* exemple avec des mots de passe stockés directement dans le fichier de configuration.
* Pour une meilleure sécurité, voir https://www.unrealircd.org/docs/Secret_block
* sur des moyens alternatifs pour ne pas stocker les mots de passe directement dans la configuration.
*/
//secret historydb { password "somepassword"; }
//set { history { channel { persist yes; db-secret "historydb"; } } }
/* Enfin, vous souhaiterez peut-être avoir un MOTD (Le message du jour), cela peut être
* fait en créant un archive de text 'ircd.motd' dans votre répertoire conf/.
* Ce fichier sera montré à vos utilisateurs lors de la connexion.
* Pour plus d'informations, voir https://www.unrealircd.org/docs/MOTD_and_Rules
*/
/*
* Un problème ou besoin d'aide supplémentaire ?
* 1) https://www.unrealircd.org/docs/
* 2) https://www.unrealircd.org/docs/FAQ <- répond à 80% des questions !
* 3) Si vous avez toujours des problèmes, vous pouvez aller sur
* irc.unrealircd.org #unreal-support,
* mais nous exigeons que vous lisiez LA DOCUMENTATION et la FAQ d'abord !
*/
+684
View File
@@ -0,0 +1,684 @@
/* Arquivo de configuração para o UnrealIRCd 6
* OBSERVAÇÃO: Este arquivo utiliza a tradução Português do Brasil (pt-br).
*
* Apenas copie este arquivo para seu diretório conf/ e renomeie-o para 'unrealircd.conf'
*
* Se você estiver com pressa, pode CTRL+F (localizar) pelo termo ALTERAR ISTO
* Os pontos que obrigatoriamente devem ser alterados estão indicados por essas duas palavras.
* No entanto, recomendamos que você revise este arquivo linha por linha
* e o altere conforme necessário, para que possa ver todos os pontos básicos e seus valores.
*
* ANTES DE PROSSEGUIR:
* Importante: Todas as linhas, exceto { e } terminam com ;
* Isto é muito importante, visto que se você esquecer um ; em algum lugar,
* a checagem do arquivo de configuração irá criticar e o arquivo não será processado!
* Se esta é sua primeira experiência com o arquivo de configuração do UnrealIRCd
* então nós recomendamos fortemente que você se dedique um pouco para ler sobre a sintaxe,
* isto levará apenas alguns minutos e o ajudará consideravelmente:
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
*
* Documentação completa do UnrealIRCd 6 (bem extensa!):
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
*
* Questões Frequentes:
* https://www.unrealircd.org/docs/FAQ
*/
/* Este é um comentário, todo o texto aqui será ignorado (comentário de tipo #1) */
// Este também é um comentário, e esta linha será ignorada (comentário de tipo #2)
# Este também é um comentário, e novamente esta linha será ignorada (comentário de tipo #3)
/* O UnrealIRCd faz um intenso uso dos Módulos, que permitem que você personalize completamente
* o conjunto de recursos que você deseja habilitar no UnrealIRCd.
* Veja: https://www.unrealircd.org/docs/Modules
*
* Utilizando o include abaixo, nós instruímos o IRCd a ler o arquivo
* 'modules.default.conf' que carregará mais de 150 módulos
* que vem com o UnrealIRCd. Em outras palavras: Isso simplesmente irá carregar
* todos os recursos disponíveis no UnrealIRCd.
* Se você está configurando o UnrealIRCd pela primeira vez, nós sugerimos que você
* o use. Então, quando tudo estiver configurado e rodando, você poderá retornar
* e personalizar a lista (se você desejar).
*/
include "modules.default.conf";
/* Agora vamos incluir alguns outros arquivos de configuração também:
* - help/help.conf para nosso sistema de ajuda /HELPOP
* - badwords.conf para os modos de usuário e canal +G
* - spamfilter.conf como um exemplo para filtragem de spam
* (comentado)
* - operclass.default.conf contém algumas boas classes de operadores que
* você pode usar em seus blocos de operadores.
*/
include "help/help.conf";
include "badwords.conf";
//include "spamfilter.conf";
include "operclass.default.conf";
include "snomasks.default.conf";
/* Carrega por padrão o módulo de cloaking em SHA256 (implementado em 2021): */
loadmodule "cloak_sha256";
/* Ou carrega o antigo módulo de clocking em MD5 que veio do UnrealIRCd 3.2/4/5: */
//loadmodule "cloak_md5";
// ALTERAR ISTO (o 'name' e 'info')
/* Este é o bloco me { } que basicamente diz quem somos.
* Ele define o nome do nosso servidor, algumas linhas informativas e um "sid" único.
* O id do servidor (sid) precisa iniciar com um dígito numérico seguido por dois dígitos numéricos
* ou alfanuméricos de A à Z. O sid precisa ser único para a sua rede de IRC (cada servidor
* deve ter seu próprio sid). É comum utilizar 001 para seu primeiro servidor.
*/
me {
name "irc.exemplo.org";
info "Servidor ExemploNET";
sid "001";
}
// ALTERAR ISTO:
/* O bloco admin { } define quem os usuário verão quando eles digitarem /ADMIN.
* Normalmente contém infomações de como eles podem contatar o administrador.
*/
admin {
"Bob Smith";
"bob";
"email@exemplo.org";
}
/* Clientes e servidores são colocados no bloco class { }, e os definimos aqui.
* Blocos Class consistem nos seguintes itens:
* - pingfreq: com que frequência será efetuado ping em um usuário / servidor (em segundos)
* - connfreq: quantas vezes tentamos nos conectar a este servidor (em segundos)
* - sendq: o tamanho máximo da fila para uma conexão
* - recvq: o recebimento máximo da fila para uma conexão (controle de flood)
*/
/* Classe Client padrão, com valores de limites aceitáveis */
class clients
{
pingfreq 90;
maxclients 1000;
sendq 200k;
recvq 8000;
}
/* Uma classe Especial para IRCOps com valores de limites mais altos */
class opers
{
pingfreq 90;
maxclients 50;
sendq 1M;
recvq 8000;
}
/* Classe Server padrão, com valores de limites aceitáveis */
class servers
{
pingfreq 60;
connfreq 15; /* tenta se conectar a cada 15 segundos */
maxclients 10; /* máximo de servidores */
sendq 20M;
}
/* Blocos allow definem quais classe clients podem se conectar a este servidor.
* Isto permite que você adicione uma senha ao servidor ou restrinja o acesso ao servidor
* apenas por IPs específicos. Você também pode configurar o máximo de conexões
* permitidas por IP.
* Veja também: https://www.unrealircd.org/docs/Allow_block
*/
/* Permite todos entrarem, mas apenas 3 conexões simultâneas por IP */
allow {
mask *;
class clients;
maxperip 3;
}
/* Exemplo de um bloco especial allow em um IP específico:
* Requer que usuários neste IP conectem por uma senha. Se a senha
* estiver correta, então permite 20 conexões simultâneas deste IP.
*/
//allow {
// mask 192.0.2.1;
// class clients;
// password "alguma_senha_secreta";
// maxperip 20;
//}
/* Blocos oper definem os Operadores de IRC.
* Operadores de IRC são pessoas com "privilégios extras" comparado a outros,
* eles podem por exemplo dar /KILL (derrubar) outras pessoas, iniciar uma conexão com server,
* dar /JOIN (entrar) em canais ainda que eles estejam banidos, etc.
*
* Para mais informações sobre como se tornar um IRCOp e como executar
* tarefas administrativas, veja: https://www.unrealircd.org/docs/IRCOp_guide
*
* Para obter mais detalhes sobre o bloco oper { } , veja
* https://www.unrealircd.org/docs/Oper_block
*/
/* Aqui está um exemplo de um bloco oper para o 'bobsmith'
* VOCÊ DEVE ALTERAR ISTO!! (o nome do operador e a senha)
*/
oper bobsmith {
class opers;
mask *@*;
/* Tecnicamente você pode deixar as senhas de oper em texto puro no arquivo de configuração, mas
* isto é ALTAMENTE DESENCORAJADO. No lugar disso, você deve gerar uma senha hasheada:
* No *NIX, execute: ./unrealircd mkpasswd
* No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
* ... e então cole a senha no campo abaixo:
*/
password "$argon2id..etc..";
/* Veja https://www.unrealircd.org/docs/Authentication_types para
* mais informações, incluindo formas melhores de autenticação
* como por exemplo o 'certfp', e como gerar hashes no Windows.
*/
/* Permissões de oper são definidos no bloco 'operclass'.
* Veja https://www.unrealircd.org/docs/Operclass_block
* O UnrealIRCd vem com um número padrão de blocos, leia
* o artigo acima para ver a lista completa. Nós escolhemos o 'netadmin' aqui.
*/
operclass netadmin;
swhois "é o Administrador da Rede";
vhost netadmin.exemplo.org;
}
/* Blocos listen definem as portas onde o servidor irá escutar.
* Em outras palavras: as portas que os clientes e servidores podem usar
* para se conectar a este servidor.
*
* Sintaxe:
* listen {
* ip <ip>;
* port <port>;
* options {
* <options....>;
* }
* }
*/
/* Porta padrão 6667 do IRC
* Insecure plaintext (NOT for production servers)
* This listen block is here only for quick testing.
* Delete or comment out this listen block on production servers
* and use TLS on port 6697 instead.
*/
listen {
ip *;
port 6667;
}
/* Porta padrão 6697 do IRC sob tunel SSL/TLS */
listen {
ip *;
port 6697;
options { tls; }
}
/* Porta especial padrão para uso de servidores sob tunel SSL/TLS para vincular a outros servidores */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
/* OBSERVAÇÃO: Se você está em uma shell IRCd com múltiplos IPs e você usa
* os blocos listen { } acima, então você provavelmente receberá o erro
* 'Address already in use' e o IRCd não iniciará.
* Isto significa que você DEVE colocar em escuta um IP específico no lugar do '*', como por exemplo:
* listen { ip 1.2.3.4; port 6667; }
* Claro, substituindo o IP pelo IP que foi fornecido a você.
*/
/*
* Blocos link permitem que você vincule múltiplos servidores uns aos outros para formar uma rede.
* Veja https://www.unrealircd.org/docs/Tutorial:_Linking_servers
*/
//link hub.exemplo.org
//{
// incoming {
// mask *@alguma_coisa;
// }
//
// outgoing {
// bind-ip *; /* ou especificar um IP */
// hostname hub.exemplo.org;
// port 6900;
// options { tls; }
// }
//
// /* Nós usamos a impressão digital SPKI do outro servidor para autenticação.
// * Abra uma shell no OUTRO SERVIDOR e execute o comando abaixo para obter a impressão digital:
// * No *NIX, execute: ./unrealircd spkifp
// * No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp
// */
// password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
//
// class servers;
//}
/* O Bloco link para o services é muito mais simples.
* Para mais informações sobre o que são o Services,
* leia https://www.unrealircd.org/docs/Services
*/
//link services.exemplo.org
//{
// incoming {
// mask 127.0.0.1;
// }
//
// password "me_altere_por_favor";
//
// class servers;
//}
/* U-lines dão a outros servidores (ainda) mais poderes/comandos.
* Se você usa o services, você DEVE adicioná-los aqui. Você deve adicionar o
* nome do servidor do services no bloco ulines { } no arquivo de configuração
* em todo servidor UnrealIRCd da sua rede.
* IMPORTANTE: Jamais insira o nome do servidor do UnrealIRCd aqui,
* é apenas para o Services!
*/
//ulines {
// services.exemplo.org;
//}
/* Aqui você pode adicionar uma senha (apenas para IRCOps) para os comandos /DIE e /RESTART.
* Isto para que se tenha uma pouco mais de proteção contra reinicio acidental
* do servidor e ele seja derrubado inadvertidante.
*/
drpass {
restart "reiniciar";
die "matar";
}
/* O bloco log define o que deve ser registrado (logado) e em qual arquivo.
* Leia também https://www.unrealircd.org/docs/Log_block
*/
/* Este é um bom padrão, ele registra tudo, exceto
* coisas de depuração e comandos join/part/kick.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.log" { maxsize 100M; }
}
}
/* Além do log regular, também adicionamos um arquivo de log em JSON.
* Isso inclui muitas informações sobre cada evento, sendo ótimo
* para fins de auditoria e legível por máquinas. No entanto,
* é menos legível para humanos.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.json.log" { maxsize 250M; type json; }
}
}
/* Com o "aliases" você pode criar um atalho como /ALGUMACOISA para enviar uma mensagem para
* algum usuário ou bot. Eles são usados normalmente por services.
*
* Nós temos um arquivo com um número pré-definido de atalhos, confira o diretório alias/ .
* Como exemplo, aqui nós incluímos todos os atalhos utilizados pelo services anope.
*/
include "aliases/anope.conf";
/* Bane nicks para que eles não sejam utilizados por usuários comuns */
//ban nick {
// mask "*C*h*a*n*S*e*r*v*";
// reason "Reservado para Services";
//}
/* Bane um IP
* Observe que você normalmente usa /KLINE, /GLINE e /ZLINE para isto.
*/
//ban ip {
// mask 195.86.232.81;
// reason "Te odeio";
//}
/* Bane um servidor - se observarmos este servidor vinculado a alguém, então o expulsaremos */
//ban server {
// mask pedro.usp.br;
// reason "Caia fora daqui.";
//}
/* Bane um usuário - mas você normalmente usa /KLINE ou /GLINE para isso */
//ban user {
// mask *usuariotroll@*.saturn.bbn.com;
// reason "Idiota";
//}
/* Este tipo de banimento permite que clientes sejam banidos com base no seu nome real (realname)
* ou campo 'gecos'.
*/
//ban realname {
// mask "Time Swat";
// reason "FORCAOSTENSIVA";
//}
//ban realname {
// mask "sub7server";
// reason "sub7";
//}
/* Exceções de banimento e TKL. Permite que você crie exceções a usuários/IPs a um
* KLINE, GLINE, etc.
* Se você é um IRCOp com IP estático (e não há ninguém não confiável utilizando este IP),
* então nós sugerimos que você seja adicionado aqui. Desta forma, você sempre poderá entrar
* mesmo se acidentalmente você colocar um *LINE em si mesmo.
*/
/* Exceções de banimento de tipo 'all' protegem você de GLINE, GZLINE, QLINE, SHUN */
//except ban {
// mask *@192.0.2.1;
// type all;
//}
/* Isto permite que clientes do IRCCloud não tenham restrição de IP por conexão
* e também cria exceção a eles de flood por conexão.
*/
except ban {
mask *.irccloud.com;
type { maxperip; connect-flood; }
}
/* deny dcc permite você possa banir nomes de arquivos transferidos por DCC */
//deny dcc {
// filename "*sub7*";
// reason "Possível Virus Sub7";
//}
/* deny channel permite a você banir um canal (por máscara) */
//deny channel {
// channel "*warez*";
// reason "Warez é ilegal";
// class "clients";
//}
/* VHosts (Hosts Virtuais) permite aos usuários adquirirem um vhost diferente.
* Veja https://www.unrealircd.org/docs/Vhost_block
*/
/* Exemplo de vhost que você pode usar. No IRC digite: /VHOST teste teste
* OBSERVAÇÃO: apenas pessoas com o host 'unrealircd.com' podem usá-lo, então
* tenha certeza de modificar o vhost::mask antes de seu teste.
*/
//vhost {
// vhost eu.odeio.microsefrs.com;
// mask *@unrealircd.com;
// login "teste";
// password "teste";
//}
/* Blocos blacklist irão consultar um serviço externo de blacklist
* sempre que um usuário se conectar, para saber se seu endereço de IP é conhecido
* por ataques de drone, como uma máquina hackeada, etc.
* Documentação: https://www.unrealircd.org/docs/Blacklist_block
* Ou apenas dê uma olhada nos blocos abaixo.
*/
/* DroneBL é provavelmente o serviço de blacklist mais popular usada por servidores de IRC.
* Veja https://dronebl.org/ para ler a documentação e
* o significado dos tipos de resposta. No momento em que este arquivo foi escrito, nós usamos os tipos:
* 3: IRC Drone, 5: Flooder, 6: Drone ou bot de spam desconhecido,
* 7: Drone de DDoS, 8: Proxy SOCKS, 9: Proxy HTTP, 10: ProxyChain,
* 11: Proxy de página web, 12: Resolvedor de DNS aberto, 13: Atacantes de força bruta,
* 14: Proxy Wingate público, 15: Roteador/Gateway comprometido,
* 16: Virus que tentam conseguir root.
*/
blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone detectado. Confira https://dronebl.org/lookup?ip=$ip para detalhes.";
}
/* EFnetRBL, veja https://rbl.efnetrbl.org/ para ler a documentação
* e o significado dos tipos de resposta.
* No momento em que este arquivo foi escrito: 1 é proxy público, 4 é TOR, 5 é drones/flooders.
*
* OBSERVAÇÃO: Se você deseja permitir proxies TOR no seu servidor, então
* você precisa remover o '4;' abaixo da seção reply.
*/
blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone/TOR detectado. Confira https://rbl.efnetrbl.org/?i=$ip para detalhes.";
}
/* Você pode incluir outros arquivos de configuração */
/* include "klines.conf"; */
/* Configuração da Rede */
set {
// ALTERAR ISTO, todos os 4 itens abaixo
network-name "ExemploNET";
default-server "irc.exemplo.org";
services-server "services.exemplo.org";
stats-server "stats.exemplo.org";
/* Valores Padrão */
help-channel "#ajuda";
cloak-prefix "Clk";
prefix-quit "Saindo";
/* Chaves cloak devem ser a mesma em todos os servidores da rede.
* Eles são usados para geração de hosts mascarados e devem ser mantidos em segredo.
* VOCÊ PRECISA ALTERAR ISTO!
* As chaves devem ser 3 strings (ou mais) de 80 caracteres randômicos
* e devem se constituir de letras minúsculas (a-z), maiúsculas (A-Z) e números (0-9).
* No *NIX, você pode executar './unrealircd gencloak' na sua shell para que o
* UnrealIRCd gere 3 strings randômicas para você.
* No Windows, você pode executar "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
*/
cloak-keys {
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
"adicione a outra";
"adicione a outra";
}
}
/* Configurações específicas do servidor */
set {
// POR ÚLTIMO, VOCÊ PRECISA ALTERAR ISTO:
kline-address 'definir.seu.endereco.de.email'; /* e-mail ou URL exibido quando um usuário é banido */
modes-on-connect "+ixw"; /* quando os usuários conectam, esses modos de usuário é atribuído a eles */
modes-on-oper "+xws"; /* quado alguém se torna IRCOp, esses modos de usuário é atribuído a ele */
modes-on-join "+nt"; /* modos de canal padrão, quando um novo canal é criado */
oper-auto-join "#opers"; /* IRCOps entram automaticamente neste canal */
options {
hide-ulines; /* esconde U-lines do /MAP e /LINKS */
show-connect-info; /* exibe a mensagem "looking up your hostname" ao se conectar */
}
maxchannelsperuser 10; /* número máximo de canais que um usuário pode entrar com /JOIN */
/* O tempo mínimo que um usuário precisa estar conectado antes de ser permitido
* utilizar a mensagem de QUIT. Isto irá ajudar no combate a SPAM.
*/
anti-spam-quit-message-time 10s;
/* Ou simplesmente defina um quit estático, de forma que qualquer motivo de /QUIT seja ignorado */
/* static-quit "Cliente saindo"; */
/* static-part faz com que o mesmo acima aconteça ao comando /PART */
/* static-part yes; */
/* Proteção contra Flood:
* Há uma série de configurações para isso, e a maioria delas tem bons padrões.
* Veja https://www.unrealircd.org/docs/Set_block#set::anti-flood
*/
anti-flood {
}
/* Configurações para filtragem de SPAM */
spamfilter {
ban-time 1d; /* duração padrão de um ban *LINE definido pelo filtro de spam */
ban-reason "Spam/Propaganda"; /* motivo padrão */
virus-help-channel "#help"; /* canal utilizado para usar em uma ação de 'virus de canal' */
/* except "#help"; exceção de canal ao filtro de spam */
}
/* Restringindo certos comandos
* Veja https://www.unrealircd.org/docs/Set_block#set::restrict-commands
*/
restrict-commands {
list {
except {
connect-time 60; /* após 60 segundos, o usuário pode usar o comando /LIST */
identified yes; /* ou imediatamente, se estiver identificado ao services */
reputation-score 24; /* ou se tiver um score de reputação maior ou igual a 24 */
}
}
invite {
except {
connect-time 120;
identified yes;
reputation-score 24;
}
}
/* Somando a possibilidade de restringir qualquer comando,
* também existem 4 tipos especiais
* que você pode restringir. Eles são "private-message",
* "private-notice", "channel-message" e "channel-notice".
* Eles estão todos comentados neste exemplo:
*/
//private-message {
// except { connect-time 10; }
//}
//private-notice {
// except { connect-time 10; }
//}
}
}
/*
* A seguir será configurado o limite de conexão para "unknown users".
*
* Quando o UnrealIRCd detecta um número elevado de usuários conectando de um endereço IP
* que nunca viu antes, então conexões do novo IP são rejeitadas quando estiverem
* acima da taxa abaixo especificada. Por exemplo, na taxa 10:60 apenas 10 usuários por minuto podem conectar
* por este IP que nunca foi visto antes. Endereços de IP conhecidos sempre podem entrar,
* independente da taxa definida. O mesmo para usuários que se conectam via SASL.
*
* Leia também https://www.unrealircd.org/docs/Connthrottle para detalhes.
* Ou apenas continue lendo a configuração abaixo:
*/
set {
connthrottle {
/* Primeiro nós configuramos quais usuários serão excluídos
* das restrições. Estes usuários sempre conseguirão acessar.
* Por padrão, entra como exceção usuários identificados com o services
* com um score igual ou maior a 24. Um score 24 significa que
* este IP foi conectado a esta rede por pelo menos 2 horas em algum momento
* no mês passado (ou no mínimo por 1 hora se registrado).
* Nós também permitimos usuários que se identificaram através do services via
* SASL para passar por cima destas restrições.
*/
except {
reputation-score 24;
identified yes;
/* Para mais informações, leia
* https://www.unrealircd.org/docs/Mask_item
*/
}
/* Novos usuários são todos os usuários que não pertencem
* ao grupo known-users. Eles são considerados "novos" e no
* caso de um número elevado de novos usuários se conectando,
* eles serão sujeiros ao limite de taxa de conexão.
* Por padrão a taxa é 20 novos usuários locais por minuto
* e 30 novos usuários globais por minuto.
*/
new-users {
local-throttle 20:60;
global-throttle 30:60;
}
/* Esta seção configura quando este módulo não será ativado.
* As configurações padrão desabilitarão o módulo quando:
* - O módulo reputation esteja em execução a menos de
* uma semana. Se estiver rodando há menos de 1 semana, então ainda temos
* dados insuficientes para considerar quem é um "known user" (usuário conhecido).
* - O servidor acabou de ser inicializado (primeiros 3 minutos).
*/
disabled-when {
reputation-gathering 1w;
start-delay 3m;
}
}
}
/* HISTÓRICO DE CANAL:
* UnrealIRCd possui modo de canal +H que pode ser usado pelos usuários para recuperar
* o histórico do canal antes deles terem entrado. Para informações gerais
* sobre esta funcionalidade, leia https://www.unrealircd.org/docs/Channel_history
*
* Os limites do histórico podem ser configurados pelo set::history. Os padrões são
* provavelmente bons para você, mas se você estiver em um sistema com pouca memória
* ou tem centenas de canais, então você pode querer verificar esses padrões novamente. Leia
* https://www.unrealircd.org/docs/Set_block#set::history
* para ver as opções disponíveis.
*
* Além disso, você pode definir um "histórico de canal persistente", o que
* significa que o histórico do canal é armazenado de modo criptografado no disco e é preservado
* entre os reinícios do servidor. Leia
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
* A funcionalidade de histórico persistente NÃO é habilitado por padrão porque você
* precisa configurar o Bloco secret { } para ele antes. A seguir um exemplo simples
* de senhas armazenadas diretamente no arquivo de configuração:
* Para obter uma melhor segurança, leia https://www.unrealircd.org/docs/Secret_block
* como formas alternativas para não armazenar senhas diretamente no arquivo de configuração.
*/
//secret historydb { password "algumasenha"; }
//set { history { channel { persist yes; db-secret "historydb"; } } }
/* Finalmente, você pode querer ter um MOTD (Mensagem do Dia), isto pode ser
* feito criando um arquivo de texto 'ircd.motd' no seu diretório conf/ .
* O texto dentro deste arquivo será exibido aos usuários ao se conectarem.
* Para mais informações, veja https://www.unrealircd.org/docs/MOTD_and_Rules
*/
/*
* Problemas ou precisa de ajuda?
* 1) https://www.unrealircd.org/docs/
* 2) https://www.unrealircd.org/docs/FAQ <- responde a 80% das suas perguntas!
* 3) Se ainda assim você está enfrentando problemas, você pode obter ajuda em:
* - Fóruns: https://forums.unrealircd.org/
* - IRC: irc.unrealircd.org (SSL na porta 6697) / #unreal-support
* Observe que pedimos que você leia a documentação e as perguntas frequentes (FAQ) primeiro!
*/
+692
View File
@@ -0,0 +1,692 @@
/* UnrealIRCd 6 için yapılandırma dosyası
*
* Türkçe Çeviri: Diablo - (Serkan Sepetçi)
* İletişim: irc.turkirc.net:6667 - diablo@unrealircd.org
*
* Bu dosyayı conf/ dizininize kopyalayın ve 'unrealircd.conf' olarak adlandırın.
*
* Aceleniz varsa CTRL+F tuşlarına basıp şunu yapabilirsiniz: BUNU DEĞİŞTİRİN
* Değiştirilmesi gereken maddeler bu iki kelimeyle belirtilir.
* Ancak aslında dosyayı satır satır incelemenizi ve gereken yerde
* düzenlemenizi öneririz. Böylece tüm temel öğeleri ve bunların nasıl
* ayarlandığını görebilirsiniz.
*
* DEVAM ETMEDEN ÖNCE:
* Önemli: { ve } dışındaki tüm satırlar ; ile biter
* Bu çok önemlidir. Eğer bir şeyi yanlış yaparsanız,
* yapılandırma dosyası ayrıştırıcısı hata verecek ve
* dosya doğru şekilde çalışmayacaktır!
*
* Eğer bu UnrealIRCd yapılandırma dosyasıyla ilk deneyiminizse
* sözdizimi hakkında biraz okumanızı öneririz.
* bu yalnızca birkaç dakika sürer ve size çok yardımcı olacaktır:
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
*
* UnrealIRCd 6 belgeleri (çok kapsamlı!):
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
*
* Sıkça Sorulan Sorular:
* https://www.unrealircd.org/docs/FAQ
*
*/
/* Bu bir açıklamadır, burada tüm metin göz ardı edilir (açıklama tipi #1) */
// Bu da bir açıklamadır, bu satır göz ardı edilir (açıklama tipi #2)
# Bu da bir açıklamadır, bu satır yine göz ardı edilir (açıklama tipi #3)
/* UnrealIRCd yoğun modul kullanımını kolaylaştırır. UnrealIRCd'de
* etkinleştirmek istediğiniz özellikleri tamamen moduller ile aktif edebilirsiniz.
* Görmek için; https://www.unrealircd.org/docs/Modules
*
* Biz 'modules.default.conf' dosyasını okumak için IRCd talimatı altında kullanarak
* UnrealIRCd ile birlikte gelen 150'den fazla modülleri yükleyecektir.
* Başka bir deyişle: Bu sadece UnrealIRCd'de mevcut tüm özelliklerini yükleyecektir.
* İlk kez UnrealIRCd kuruyorsanız size bunu kullanmanızı öneririz.
* UnrealIRCd'yi ilk kez kuruyorsanız bunu kullanmanızı öneririz.
* Daha sonra her şey hazır olduğunda ve çalışıyorsa (eğer isterseniz)
* listeyi özelleştirmek için geri dönebilirsiniz.
*/
include "modules.default.conf";
/* Şimdi de diğer bazı dosyaları dahil edelim:
* - help/help.conf /HELPOP sistemi
* - badwords.conf kanal ve kullanıcı modu için +G
* - spamfilter.conf için örnek olarak spamfilter kullanımı
* (yorumlandı)
* - operclass.default.conf oper bloklarında kullanabileceğiniz
* oper sınıflarını görüntüler.
*/
include "help/help.conf";
include "badwords.conf";
//include "spamfilter.conf";
include "operclass.default.conf";
include "snomasks.default.conf";
/* Varsayılan gizleme modülünü yükleyin (2021'den itibaren): */
loadmodule "cloak_sha256";
/* Veya eski modülü UnrealIRCd 3.2/4/5'ten yükleyin: */
//loadmodule "cloak_md5";
// BUNU DEĞİŞTİRİN ('ad' ve 'bilgi'):
/* me { } bloğu genelde kim olduğumuzu belirtir.
* Sunucumuz için isim, birkaç satır bazı bilgileri belirler "sid".
* Sunucu kimliği (sid) iki basamağı veya harf tarafından izlenen bir rakam ile
* başlamalıdır. Sid IRC ağı için benzersiz olmalıdır (her sunucu için
* kendi sid olmalıdır). İlk sunucu için 001 kullanılması uygundur.
*/
me {
name "irc.example.org";
info "ExampleNET Server";
sid "001";
}
// BUNU DEĞİŞTİRİN:
/* admin { } bloğu /ADMIN sorgusunda kullanıcılara görüntülenecek metni belirler.
* Normalde yöneticiye ulaşma konusunda bilgi içerir.
*/
admin {
"Bob Smith";
"bob";
"email@example.org";
}
/* Kullanıcılar ve sunucular için class { } bloğu belirtilir.
* Class blokları aşağıdaki işlemlerden oluşur:
* - pingfreq: kullanıcı/sunucu için ping'ler arası zaman belirtir (saniyede)
* - connfreq: sunucuya bağlanmaya çalıştığınızda tekrar için zaman belirtir (saniyede)
* - sendq: bir bağlantı için maksimum veri boyutu
* - recvq: bir bağlantı için maksimum alınan veri boyutu (flood kontrol)
*/
/* Kullanıcılar için varsayılan class ayarları */
class clients
{
pingfreq 90;
maxclients 1000;
sendq 200k;
recvq 8000;
}
/* IRCOp'lar için varsaylan yüksek limitli özel class ayarları */
class opers
{
pingfreq 90;
maxclients 50;
sendq 1M;
recvq 8000;
}
/* Sunucular için varsayılan class ayarları */
class servers
{
pingfreq 60;
connfreq 15; /* Her 15 saniyede bir bağlanmayı dener */
maxclients 10; /* maksimum kullanıcı */
sendq 20M;
}
/* Allow blockları sunucunuza kimlerin bağlanabileceğini belirtir.
* Bir sunucu şifresi eklenebilir veya belirlitilen bir IP adresi için
* giriş izini verilebilir. Ayrıca IP başına ne kadar bağlantıya izin
* verileceğini belirtir.
* Görmeniz için: https://www.unrealircd.org/docs/Allow_block
*/
/* IP başına sadece 3 bağlantı izini verir */
allow {
mask *;
class clients;
maxperip 3;
}
/* Örnek olarak özel bir IP bloğu izini:
* Bu IP bir şifre ile bağlantı yapması olduğunu gerektirir.
* Şifre doğru ise o zaman bu IP 20 bağlantıya izin verecektir.
*/
// allow {
// mask 192.0.2.1;
// class clients;
// password "somesecretpasswd";
// maxperip 20;
// }
/* Oper bloğu, IRC Operatorleri tanımlar.
* IRC Operatörler, diğer kullanıcılara göre "ekstra haklara" sahip kullanıcılardır.
* örneğin diğer kullanıcılara /KILL uygulayabilmesi, sunucu birleştirmesinin başlatılması,
* /JOIN yaptığı odalardan banlansa bile tekrar giriş yapabilmesi, vs.
*
* IRCOp olmak ve nasıl Admin olunacağı hakkında daha fazla bilgi için
* https://www.unrealircd.org/docs/IRCOp_guide
*
* Oper {} bloğunun kendisi ile ilgili ayrıntıları görmeniz için
* https://www.unrealircd.org/docs/Oper_block
*/
/* İşte 'bobsmith' için örnek bir oper bloğu
* BUNU DEĞİŞTİRMELİSİN!! (oper adı ve şifre)
*/
oper bobsmith {
class opers;
mask *@*;
/* Teknik olarak oper şifrelerini conf'a düz metin olarak koyabilirsiniz, ancak bu
* KESİNLİKLE ÖNERİLEN bir durum değildir. Bunun yerine bir şifre karması oluşturmalısınız:
* *NIX'te şunu çalıştırın: ./unrealircd mkpasswd
* Windows'ta şunu çalıştırın: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
* .. ve ardından sonucu aşağıya yapıştırın:
*/
password "$argon2id..etc..";
/* 'Certfp' gibi daha iyi kimlik doğrulama türleri ve Windows'ta
* karmaların nasıl oluşturulacağı da dahil olmak üzere daha fazla bilgi için
* https://www.unrealircd.org/docs/Authentication_types adresine bakın.
*/
/* Oper izinleri bir "operclass 'bloğunda tanımlanır.
* Görmeniz için: https://www.unrealircd.org/docs/Operclass_block
* UnrealIRCd varsayılan bloklar makalesi için,
* tam listesine bakınız. Buradan 'netadmin' seçiyoruz.
*/
operclass netadmin;
swhois "is a Network Administrator";
vhost netadmin.example.org;
}
/* Listen blokları sunucu portu için gereken bağlantı noktalarını tanımlar.
* Diğer bir deyişle: Bu portlar kullanıcılar ve serverlar için
* sunucuya bağlantı kurmasını sağlar.
*
* Kullanımı:
* listen {
* ip <ip numarası>;
* port <port numarası>;
* options {
* <seçenekler....>;
* }
* }
*/
/* Standard IRC port 6667
* Insecure plaintext (NOT for production servers)
* This listen block is here only for quick testing.
* Delete or comment out this listen block on production servers
* and use TLS on port 6697 instead.
*/
listen {
ip *;
port 6667;
}
/* Standard IRC SSL/TLS port 6697 */
listen {
ip *;
port 6697;
options { tls; }
}
/* Özel SSL/TLS sadece sunucuları bağlamak için port */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
/* DiKKAT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız
* logunuzda olası 'Address already in use' hatasını alacaksınız
* ve ircd başlamayacaktır.
* Bunun anlamı '*' yerine belirli bir IP yazmanız GEREKİR anlamına gelir:
* listen 1.2.3.4:6667;
* Açıkçası, IP yi önceden koyduğunuz IP ile değiştirin.
*/
/*
* Link blockları bir ağ oluşturmak için birden fazla sunucu bağlamaya izin verir.
* Görmek için: https://www.unrealircd.org/docs/Tutorial:_Linking_servers
*/
link hub.example.org
{
incoming {
mask *@something;
}
outgoing {
bind-ip *; /* veya açıkça bir IP */
hostname hub.example.org;
port 6900;
options { tls; }
}
/* Kimlik doğrulaması için diğer sunucunun SPKI parmak izini kullanıyoruz.
* Kullanmamız için diğer tarafda './unrealircd spkifp' uygulayıp çalıştırıyoruz.
* *NIX'te şunu çalıştırın: ./unrealircd spkifp
* Windows'ta şunu çalıştırın: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp
*/
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
class servers;
}
/* Servis'ler için bağlantı bloğu genellikle çok daha basittir.
* Servis'lerin ne olduğu hakkında daha fazla bilgi için,
* https://www.unrealircd.org/docs/Services
*/
link services.example.org
{
incoming {
mask 127.0.0.1;
}
password "changemeplease";
class servers;
}
/* U-lines satırları sunuculara daha güç/komut kazandırır.
* Eğer hizmetlerini kullanmak istiyorsanız onları buraya eklemeniz gerekir.
* ÖNEMLİ: ASLA buraya (normal) UnrealIRCd sunucunun adını yazmayınız!!!
*/
ulines {
services.example.org;
}
/* Bu blok /DIE ve /RESTART için şifre tanımlamanızı sağlar. Sadece IRCOp'lar içindir.
* Bu genelde kazara sunucuyu yeniden başlatma ve kapanmasına karşı biraz
* koruma sağlamak içindir.
*/
drpass {
restart "restart";
die "die";
}
/* Bu log bloğu hangi dosyaya ve nelerin olması gerektiğini tanımlar.
* Görmeniz için: https://www.unrealircd.org/docs/Log_block
*/
/* Bu iyi bir varsayılandır, hata ayıklama ve
* join/part/kick dışındaki her şeyi günlüğe kaydeder.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.log" { maxsize 100M; }
}
}
/* Düzenli günlük kaydına ek olarak bir JSON günlük dosyası ekleyin.
* Bu her olayla ilgili birçok bilgi içerir dolayısıyla denetim amaçları
* için mükemmeldir ve makine tarafından okunabilir. Ancak insanlar için daha az okunabilir.
*/
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
file "ircd.json.log" { maxsize 250M; type json; }
}
}
/* Bazı kullanıcılara veya botlara bir mesaj göndermek için "aliases"
* takma ad oluşturmanızı sağlar. Genellikle servisler için kullanılır.
*
* Biz önceden ayarlanmış bir takma adı dosyaları dizini oluşturduk, alias/ dizini kontrol ediniz.
* Örnek olarak, burada anope servisler ve kullanılan tüm diğer servisler adları bulunmaktadır.
*/
include "aliases/anope.conf";
/* Ban nick bloğu bir nickin sunucuda kullanımını yasaklamanıza olanak sağlar */
// ban nick {
// mask "*C*h*a*n*S*e*r*v*";
// reason "Servisler için ayrılmış";
// }
/* Ban ip.
* Normalde bunun için /KLINE, /GLINE ve /ZLINE kullanıldığını unutmayınız.
*/
// ban ip {
// mask 195.86.232.81;
// reason "Senden nefret ediyorum";
// }
/* Ban server - bir sunucunun bağlanmasını devredışı kılar */
// ban server {
// mask eris.berkeley.edu;
// reason "Defol buradan.";
// }
/* Ban user - normalde /KLINE veya /GLINE kullanıldığını unutmayınız */
// ban user {
// mask *tirc@*.saturn.bbn.com;
// reason "Aptal";
// }
/* Ban realname bloğu bir kullanıcıyı, GECOS kısmı esas alınarak
* banlamanıza olanak sağlar.
*/
// ban realname {
// mask "Swat Team";
// reason "mIRKFORCE";
// }
// ban realname {
// mask "sub7server";
// reason "sub7";
// }
/* Ban ve TKL istisnaları. Kullanıcıları / makineleri gözetmeksizin
* KLINE, GLINE, gibi banlardan muaf tutmanıza olanak sağlar.
* Eğer statik IP (ve bu IP üzerinde güvenilmeyen kişiler) ile bir IRCOp
* iseniz o zaman kendinizi burada eklemenizi öneririz. Yanlışlıkla kendinize
* bir *LINE ban koyarsanız bile yinede muaf tutulacaksınız.
*/
/* except ban bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
// except ban {
// mask *@192.0.2.1;
// type all;
// }
/* This allows IRCCloud connections in without maxperip restrictions
* and also exempt them from connect-flood throttling.
*/
except ban {
mask *.irccloud.com;
type { maxperip; connect-flood; }
}
/* Deny dcc bloğu, sunucu üzerinden DCC yoluyla dosya gönderilmesine izin vermeyecektir */
// deny dcc {
// filename "*sub7*";
// reason "Possible Sub7 Virus";
// }
/* Deny channel bloğu, kullanıcıların belirtilen kanallara girmesini engeller */
// deny channel {
// channel "*warez*";
// reason "Warez is illegal";
// class "clients";
// }
/* VHosts (Virtual Hosts) bloğu, kullanıcının yeni bir host alabilmesine olanak sağlar.
* Görmeniz için; https://www.unrealircd.org/docs/Vhost_block
*/
/* Kullanabileceğiniz örnek vhost. IRC tipi: /VHOST test test
* DiKKAT: Güvenlik açısından aşağıdaki vhost::mask yönergesinde
* maske 'unrealircd.com' olarak belirlenmiştir.
*/
// vhost {
// vhost i.hate.microsefrs.com;
// mask *@unrealircd.com;
// login "test";
// password "test";
// }
/* Blacklist blokları, bir kullanıcı bağlandığında IP adresinin drone saldırılarına
* neden olduğunu, bilinen bir saldırıya uğramış bir makine olup olmadığını görmek
* için harici bir DNS Kara Liste hizmetinden sorgulayacaktır.
* Belgeleme: https://www.unrealircd.org/docs/Blacklist_block
* veya aşağıdaki bloklar satırına bakınız.
*/
/* DroneBL, muhtemelen IRC Sunucuları tarafından kullanılan en popüler kara liste.
* Belgeler ve cevap (reply) tiplerin anlamlarını görmek için https://dronebl.org/
* adresine bakınız. Bu zamanda aşağıdaki cevap (reply) tiplerini kullanıyoruz:
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
* 16: Autorooting worms.
*/
blacklist dronebl {
dns {
name dnsbl.dronebl.org;
type record;
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone belirlendi. Ayrıntılar için https://dronebl.org/lookup?ip=$ip adresine bakınız.";
}
/* EFnetRBL, belgeler ve cevap (reply) tiplerini görmek için https://rbl.efnetrbl.org/
* adresine bakınız.
* Yazma sırasında: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
*
* NOT: Sunucunuzda TOR proxy'lerine izin vermek istiyorsanız,
* cevap (reply) tiplerinden '4;' öğesini kaldırmanız gerekiyor.
*/
blacklist efnetrbl {
dns {
name rbl.efnetrbl.org;
type record;
reply { 1; 4; 5; }
}
action gline;
ban-time 24h;
reason "Proxy/Drone/TOR tespit edildi. Ayrıntılar için https://rbl.efnetrbl.org/?i=$ip adresine bakınız.";
}
/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
/* include "klines.conf"; */
/* Ağ yapılandırması */
set {
// BU 4 ÖĞENİN TÜMÜNÜ DEĞİŞTİRİN:
network-name "ExampleNET";
default-server "irc.example.org";
services-server "services.example.org";
stats-server "stats.example.org";
/* Normal varsayılanlar */
help-channel "#Help";
cloak-prefix "Clk";
prefix-quit "Quit";
/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
* Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
* Anahtarlar 80 karakterlik 3 rastgele diziden oluşmalı ve küçük harf (a-z),
* büyük harf (A-Z) ve rakamlardan (0-9) meydana gelmelidirler.. [ilk örneğe bakınız].
* IPUCU: './unrealircd gencloak' Unrealircd sizin için rastgele 3 adet dizin oluşturur.
* Bunu NIX üzerinde çalıştırabilirsiniz.
* On Windows, use "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
*/
cloak-keys {
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
"ve diğeri";
"ve diğeri";
}
}
/* Sunucunun kendine özgü yapılandırması */
set {
// SON OLARAK, BU SONRAKİ ÖĞEYİ DEĞİŞTİRMENİZ GEREKİR:
kline-address 'set.this.to.email.address'; /* bir kullanıcı banlandığında e-mail yada URL satırı gösterir */
modes-on-connect "+ixw"; /* kullanıcılar bağlandığında, bu modları alacaktır */
modes-on-oper "+xws"; /* Birisi IRC Operatör olduğunda bu modları alacaktır */
modes-on-join "+nt"; /* yeni bir kanal oluşturulduğunda varsayılan kanal modlarını alacaktır */
oper-auto-join "#opers"; /* IRCoplar bu kanala otomatik olarak giriş yapacaktır */
options {
hide-ulines; /* U-lines satırları /MAP ve /LINKS komutunda gözükmez */
show-connect-info; /* sunucuya bağlanırken "looking up your hostname" mesajı görüntülenecektir */
}
maxchannelsperuser 10; /* bir kullanıcının maksimum girebileceği kanal sayısı */
/* QUIT mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması
* gereken süre. Bu durum umarım spamları durdurmak için yardımcı olacaktır.
*/
anti-spam-quit-message-time 10s;
/* Kullanıcı sunucudan ayrılırken çıkış sebebini sabitler. /QUIT sebeb gözardı edilecektir. */
/* static-quit "Client quit"; */
/* static-part /PART komutu ile aynı işi görür */
/* static-part yes; */
/* Flood Koruması:
* Bunun için birçok ayarları vardır ve çoğu iyi varsayılanlara sahiptir.
* Görmeniz için: https://www.unrealircd.org/docs/Set_block#set::anti-flood
*/
anti-flood {
}
/* Spam filter Ayarları */
spamfilter {
ban-time 1d; /* varsayılan spamfilter tarafından ban süresini belirtir */
ban-reason "Spam/Advertising"; /* varsayılan sebep */
virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
/* except "#help"; Spamfilter'den muaf tutulacak kanal */
}
/* Belirli komutları kısıtlayın.
* See https://www.unrealircd.org/docs/Set_block#set::restrict-commands
*/
restrict-commands {
list {
except {
connect-time 60;
identified yes;
reputation-score 24;
}
}
invite {
except {
connect-time 120;
identified yes;
reputation-score 24;
}
}
/* Yukarıda gösterildiği gibi herhangi bir komutu kısıtlama
* yeteneğine sahiptir. Ayrıca kısıtlayabileceğiniz 4
* özel tip vardır. Bunlar "private-message",
* "private-notice", "channel-message" ve "channel-notice".
* Bu örnekte olduğu gibi (kapalı) yorumlanmıştır:
*/
//private-message {
// except { connect-time 10; }
//}
//private-notice {
// except { connect-time 10; }
//}
}
}
/*
* Aşağıdaki ayar "bilinmeyen kullanıcılar" için bağlantı kısıtlamasını yapılandıracaktır.
*
* UnrealIRCd, IP adreslerinden bağlanan çok sayıda kullanıcı tespit ettiğinde
* daha önce görülmemişse, yeni IP'lerden gelen bağlantılar ayarlanan
* hızın üzerinde reddedilir. örneğin 10:60'ta dakikada sadece 10 kullanıcı daha önce
* görülmemiş şekilde bağlanabilir. Bilinen IP adresleri, ayarlanan orandan bağımsız olarak
* her zaman girebilir. SASL kullanarak giriş yapan kullanıcılar için de aynıdır.
*
* Ayrıntılar için https://www.unrealircd.org/docs/Connthrottle adresine bakınız.
* Veya aşağıdaki varsayılan yapılandırma ayarlarını okumaya devam edin:
*/
set {
connthrottle {
/* ilk önce "bilinen kullanıcılar" dediğimiz şeyi yapılandırmalıyız.
* Varsayılan olarak bunlar, IP adresleri üzerinde 24 veya
* daha yüksek puana sahip kullanıcılardır. 24 puan IP'nin geçen ay
* en az 2 saat (veya kayıtlıysa en az 1 saat) boyunca bu sunucuya
* bağlı olduğu anlamına gelir.
* Sasl-bypass seçeneği başka bir ayardır. Bu ayar
* SASL aracılığıyla hizmetlere kimlik doğrulaması yapan
* kullanıcıların da bilinen kullanıcılar olarak kabul edildiği anlamına gelir.
* "known-users" grubundaki kullanıcılar (herhangi bir reputation
* veya SASL) modülleri tarafından her zaman izin verilir.
*/
except {
reputation-score 24;
identified yes;
/* daha fazla seçenek için bkz.
* https://www.unrealircd.org/docs/Mask_item
*/
}
/* Yeni kullanıcılar, aşağıdakilere ait olmayan tüm
* bilinen-kullanıcılar grubundandır. Bunlar "yeni" ve
* bu tür yeni kullanıcıların çok sayıda bağlanması durumunda
* bağlantı hızı sınırlamasına tabidirler.
* Varsayılan bu oran dakikada 20 yeni yerel kullanıcı
* ve dakikada 30 yeni global kullanıcı olarak belirlenmiştir.
*/
new-users {
local-throttle 20:60;
global-throttle 30:60;
}
/* Bu modülün ne zaman aktif OLMAYACAĞINI yapılandırır.
* Varsayılan ayarlar, şu durumlarda modülü devre dışı bırakacaktır:
* - Reputation modülü 1 haftadan kısa bir süredir çalışıyor ise.
* 1 haftadan az çalışıyorsa, kimin "bilinen kullanıcı"
* olduğunu düşünmek için yeterli veri yoktur.
* - Sunucu yeni açıldı (ilk 3 dakika).
*/
disabled-when {
reputation-gathering 1w;
start-delay 3m;
}
}
}
/* KANAL GEÇMİŞİ:
* UnrealIRCd, kullanıcılar tarafından bir kanala katılmadan önce
* kanal geçmişini okumak için, kullanılabilen +H kanal moduna sahip olmalıdır.
* Bu özellik hakkında bilgi için bkz. https://www.unrealircd.org/docs/Channel_history
*
* Geçmiş limitleri set::history aracılığıyla yapılandırılabilir. Varsayılan ayarlar
* muhtemelen sizin için zaten iyidir, ancak düşük bellekli bir sistemdeyseniz veya
* binlerce kanalınız varsa, iki kez kontrol etmek isteyebilirsiniz. Seçenekler için
* https://www.unrealircd.org/docs/Set_block#set::history adresine bakın.
*
* Buna ek olarak "kalıcı kanal geçmişine" sahip olabilirsiniz. Bu kanal
* geçmişinin diskte şifreli olarak depolandığı ve böylece IRC sunucusu yeniden
* başlatılması halinde korunması anlamına gelir.
* bkz. https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
* Kalıcı geçmiş özelliği varsayılan olarak ETKİNLEŞTİRİLMEMİŞTİR bunun için
* bir secret { } bloğu yapılandırmanız gerekir. Aşağıdaki yapılandırma dosyasında
* saklanan parolalar doğrudan bunlara basit bir örnektir.
* Daha iyi güvenlik elde etmek için https://www.unrealircd.org/docs/Secret_block
* adresini okuyun böylece şifreleri doğrudan yapılandırmada saklamazsınız.
*/
//secret historydb { password "somepassword"; }
//set { history { channel { persist yes; db-secret "historydb"; } } }
/* Son olarak, bir MOTD'ye (Günün Mesajı) sahip olmak isteyebilirsiniz, bunu
* conf/ dizininizde bir 'ircd.motd' metin dosyası oluşturarak yapabilirsiniz.
* Bu dosya bağlantıda kullanıcılarınıza gösterilecektir.
* Daha fazla bilgi için bkz. https://www.unrealircd.org/docs/MOTD_and_Rules
*/
/*
* Sorun mu yaşıyorsunuz veya daha fazla yardıma mı ihtiyacınız var?
* 1) https://www.unrealircd.org/docs/
* 2) https://www.unrealircd.org/docs/FAQ <- sorularınızın %80 ini kapsamakta!
* 3) Eğer probleminiz hala devam ediyorsa:
* - Forums: https://forums.unrealircd.org/
* - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
* İlk önce Dökümantasyon ve FAQ kısmını okumanızı gerektirdiğini unutmayın!
*/
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+339
View File
@@ -0,0 +1,339 @@
/* [6.2.6-git]
* This file will load (nearly) all modules available on UnrealIRCd.
* So all commands, channel modes, user modes, etc..
*
* If you want to have all UnrealIRCd functionality, then include this
* file from your unrealircd.conf by using:
* include "modules.default.conf";
*
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* If you want to customize the modules to load you have two options:
* 1) Keep the include for modules.default.conf as usual and make use
* of blacklist-module "xyz"; to selectively disable modules.
* See https://www.unrealircd.org/docs/Blacklist-module_directive
* This is the highly recommended approach of doing customizations!
* 2) OR, make a copy of this file (eg: name it modules.custom.conf)
* and edit it. Then include that file from your unrealircd.conf
* instead of this one.
* The problem with this option #2 is that you need to track ALL
* changes in UnrealIRCd, that means: every loadmodule line that
* we add or remove in each and every release. If you don't do this
* or forget one little loadmodule line then you will end up with:
* * Missing functionality (that could have been useful)
* * Breaking of existing functionality, like the (in)famous example
* of when the existing svslogin command got split off in a separate
* new svslogin module and people who didn't load that new module
* would have services who would not set users as 'logged in'.
* Or the existing anti connect-flood feature being split off into
* the 'connect-flood' module, so your server suddenly being
* vulnerable to connect flooding because you failed to load it.
* So please do know what you are doing if you choose option #2.
* Again, best is to go for option #1 and opt-out.
*/
/*** Commands ***/
// User commands (MINIMAL)
// These provide just the minimal set of IRC commands that are
// required by RFC1459 along with WATCH and MAP.
loadmodule "admin";
loadmodule "away";
loadmodule "invite";
loadmodule "ison";
loadmodule "join";
loadmodule "kick";
loadmodule "links";
loadmodule "list";
loadmodule "lusers";
loadmodule "map";
loadmodule "message";
loadmodule "mode";
loadmodule "motd";
loadmodule "names";
loadmodule "nick";
loadmodule "part";
loadmodule "pass";
loadmodule "pingpong";
loadmodule "protoctl";
loadmodule "quit";
loadmodule "rules";
loadmodule "topic";
loadmodule "user";
loadmodule "userhost";
loadmodule "watch";
loadmodule "whox";
loadmodule "whois";
loadmodule "whowas";
// User commands (EXTENDED)
// These are commands that provide extended functionality.
loadmodule "botmotd";
loadmodule "cap";
loadmodule "cycle";
loadmodule "dccallow";
loadmodule "help";
loadmodule "knock";
loadmodule "lag";
loadmodule "sasl";
loadmodule "setname";
loadmodule "silence";
loadmodule "starttls";
loadmodule "time";
loadmodule "userip";
loadmodule "vhost";
loadmodule "history";
// IRC Operator commands
// Note: several of these like kill are also server-to-server commands
// which are required if you link to other servers.
loadmodule "addmotd";
loadmodule "addomotd";
loadmodule "chghost";
loadmodule "chgident";
loadmodule "chgname";
loadmodule "close";
loadmodule "connect";
loadmodule "squit";
loadmodule "dccdeny";
loadmodule "globops";
loadmodule "kill"; /* also server-to-server */
loadmodule "locops";
loadmodule "mkpasswd";
loadmodule "oper";
loadmodule "operinfo"; /* not really a command but for whois */
loadmodule "opermotd";
loadmodule "sajoin";
loadmodule "samode";
loadmodule "sapart";
loadmodule "sdesc";
loadmodule "sethost";
loadmodule "setident";
loadmodule "stats";
loadmodule "tkl"; /* also server-to-server */
loadmodule "tline";
loadmodule "trace";
loadmodule "tsctl";
loadmodule "unsqline";
loadmodule "jumpserver";
// Server-to-server commands
// Don't remove these, unless you never link to other servers.
loadmodule "eos";
loadmodule "md";
loadmodule "netinfo";
loadmodule "server";
loadmodule "sjoin";
loadmodule "sqline";
loadmodule "swhois";
loadmodule "umode2";
loadmodule "sinfo";
loadmodule "require-module";
loadmodule "slog";
loadmodule "creationtime";
loadmodule "sreply";
loadmodule "unreal_server_compat";
// Services commands
// You could disable these if you don't use Services
// https://www.unrealircd.org/docs/Services
loadmodule "sendsno";
loadmodule "sendumode";
loadmodule "svsjoin";
loadmodule "svskill";
loadmodule "svslusers";
loadmodule "svsmode";
loadmodule "svsmotd";
loadmodule "svsnick";
loadmodule "svsnline";
loadmodule "svsnolag";
loadmodule "svsnoop";
loadmodule "svspart";
loadmodule "svssilence";
loadmodule "svssno";
loadmodule "svswatch";
loadmodule "svso";
loadmodule "svslogin";
/*** Channel modes ***/
loadmodule "chanmodes/chanowner"; /* +q */
loadmodule "chanmodes/chanadmin"; /* +a */
loadmodule "chanmodes/chanop"; /* +o */
loadmodule "chanmodes/halfop"; /* +h */
loadmodule "chanmodes/voice"; /* +v */
loadmodule "chanmodes/key"; /* +k */
loadmodule "chanmodes/limit"; /* +l */
loadmodule "chanmodes/inviteonly"; /* +i */
loadmodule "chanmodes/secret"; /* +s */
loadmodule "chanmodes/private"; /* +p */
loadmodule "chanmodes/moderated"; /* +m */
loadmodule "chanmodes/noexternalmsgs"; /* +n */
loadmodule "chanmodes/topiclimit"; /* +t */
loadmodule "chanmodes/floodprot"; /* +f */
loadmodule "chanmodes/nocolor"; /* +c */
loadmodule "chanmodes/noctcp"; /* +C */
loadmodule "chanmodes/stripcolor"; /* +S */
loadmodule "chanmodes/isregistered"; /* +r */
loadmodule "chanmodes/issecure"; /* +Z */
loadmodule "chanmodes/permanent"; /* +P */
loadmodule "chanmodes/link"; /* +L */
loadmodule "chanmodes/censor"; /* +G */
loadmodule "chanmodes/delayjoin"; /* +D */
loadmodule "chanmodes/noknock"; /* +K */
loadmodule "chanmodes/noinvite"; /* +V */
loadmodule "chanmodes/operonly"; /* +O */
loadmodule "chanmodes/nonotice"; /* +T */
loadmodule "chanmodes/regonly"; /* +R */
loadmodule "chanmodes/nonickchange"; /* +N */
loadmodule "chanmodes/nokick"; /* +Q */
loadmodule "chanmodes/regonlyspeak"; /* +M */
loadmodule "chanmodes/secureonly"; /* +z */
loadmodule "chanmodes/history"; /* +H */
/*** User modes ***/
loadmodule "usermodes/wallops"; /* +w (listen to /WALLOPS messages) */
loadmodule "usermodes/bot"; /* +B (mark yourself as a bot) */
loadmodule "usermodes/servicebot"; /* +S (service bot) */
loadmodule "usermodes/noctcp"; /* +T (block CTCP's) */
loadmodule "usermodes/censor"; /* +G (censor bad words) */
loadmodule "usermodes/showwhois"; /* +W (show if someone does /WHOIS) */
loadmodule "usermodes/privacy"; /* +p (privacy, hide channels in /WHOIS) */
loadmodule "usermodes/nokick"; /* +q (unkickable oper) */
loadmodule "usermodes/regonlymsg"; /* +R (only registered users may private message you) */
loadmodule "usermodes/secureonlymsg"; /* +Z (only TLS users may private message you) */
loadmodule "usermodes/privdeaf"; /* +D (don't let other user PM you) */
/*** Extended Bans ***/
loadmodule "extbans/join"; /* +b ~join (old ~j mode, prevent only joins) */
loadmodule "extbans/quiet"; /* +b ~quiet (old ~q mode, prevent only messaging) */
loadmodule "extbans/nickchange"; /* +b ~nickchange (old ~n mode, prevent only nick changes) */
loadmodule "extbans/realname"; /* +b ~realname (old ~r mode, ban by real name) */
loadmodule "extbans/account"; /* +b ~account (old ~a mode, ban/exempt if logged in with services account) */
loadmodule "extbans/inchannel"; /* +b ~channel (old, ~c mode, ban/exempt if in channel) */
loadmodule "extbans/operclass"; /* +b ~operclass (old ~O mode, ban/exempt by operclass) */
loadmodule "extbans/certfp"; /* +b ~certfp (old ~S mode, ban/exempt by certfp) */
loadmodule "extbans/textban"; /* +b ~text (old ~T mode, censor or block text) */
loadmodule "extbans/timedban"; /* +b ~time (old ~t mode, timed bans / temporary bans) */
loadmodule "extbans/partmsg"; /* +b ~partmsg (old ~p mode, hide part/quit message) */
loadmodule "extbans/securitygroup"; /* +b ~security-group (old ~G mode, security group) */
loadmodule "extbans/country"; /* +b ~country (country via geoip) */
loadmodule "extbans/msgbypass"; /* +e ~msgbypass (old ~m mode, bypass message restrictions) */
loadmodule "extbans/flood"; /* +e ~flood (flood exemption for chanmode +f/+F) */
loadmodule "extbans/asn"; /* +b ~asn (ASN via geoip) */
loadmodule "extbans/inherit"; /* +b ~inherit (inherit bans from another channel) */
/*** IRCv3 extensions ***/
loadmodule "account-notify"; /* send ACCOUNT message upon services account login */
loadmodule "message-tags"; /* add tags to messages, required for various IRCv3 features */
loadmodule "batch"; /* also required for several IRCv3 features */
loadmodule "server-time"; /* adds server timestamp to various messages */
loadmodule "message-ids"; /* adds unique msgid to various messages */
loadmodule "account-tag"; /* adds services account information to messages */
loadmodule "echo-message"; /* shows clients if their messages are altered/filtered */
loadmodule "labeled-response"; /* correlate requests and responses easily */
loadmodule "bot-tag"; /* indicate the message comes from a bot (draft/bot) */
loadmodule "typing-indicator"; /* typing indicator in PM and channels (+typing) */
loadmodule "channel-context";
loadmodule "reply-tag"; /* indicate to which message you are responding (+draft/reply) */
loadmodule "clienttagdeny"; /* informs clients about supported client-only message tags */
loadmodule "sts"; /* strict transport policy (set::tls::sts-policy) */
loadmodule "link-security"; /* link-security announce */
loadmodule "plaintext-policy"; /* plaintext-policy announce */
loadmodule "chathistory"; /* CHATHISTORY client command, 005 and a CAP (draft) */
loadmodule "monitor"; /* MONITOR command with functionality similar to WATCH */
loadmodule "extended-monitor"; /* add away status, gecos and userhost changes to MONITOR (draft) */
loadmodule "standard-replies"; /* Standard Replies */
loadmodule "no-implicit-names"; /* Opt out of receiving implicit NAMES when joining a channel */
loadmodule "extended-isupport"; /* draft/extended-isupport */
loadmodule "multiline"; /* draft/multiline */
/*** RPC modules ***/
// There's a JSON-RPC interface that can be used to communicate with UnrealIRCd
// outside of IRC. See https://www.unrealircd.org/docs/JSON-RPC for more info.
// Or, more technical, for a list of all JSON-RPC Methods, have a look at
// https://www.unrealircd.org/docs/JSON-RPC:Technical_documentation
// (Don't just look at the list of rpc/* modules below, occasionaly some rpc
// functionality is together in a regular module which has no rpc/* prefix)
//
// By loading the following modules, we enable RRPC for intra-server JSON-RPC,
// so calls like modules.list work properly accross the network. It DOES NOT
// enable the webserver, nor does it listen on any RPC socket. For that, you
// need to include "conf/rpc.modules.default.conf";
loadmodule "rpc/rpc";
loadmodule "rpc/stats";
loadmodule "rpc/user";
loadmodule "rpc/server";
loadmodule "rpc/channel";
loadmodule "rpc/server_ban";
loadmodule "rpc/server_ban_exception";
loadmodule "rpc/name_ban";
loadmodule "rpc/spamfilter";
loadmodule "rpc/log";
loadmodule "rpc/whowas";
loadmodule "rpc/message";
loadmodule "rpc/security_group";
/*** Other ***/
// These are modules that don't fit in any of the previous sections
loadmodule "ident_lookup"; /* Ident lookups if set::options::identd-check is set*/
loadmodule "certfp"; /* TLS certificate fingerprint in /WHOIS (& more) */
loadmodule "tls_cipher"; /* Store and retrieve TLS cipher of local and remote clients */
loadmodule "tls_antidos"; /* prevent TLS DoS (renegotiate floods) */
loadmodule "connect-flood"; /* throttling against connection flooding */
loadmodule "max-unknown-connections-per-ip"; /* limit number of connections in 'unknown state' */
loadmodule "webirc"; /* WEBIRC command. See webirc block. */
loadmodule "blacklist"; /* Blacklist support (DNSBL). See blacklist block. */
loadmodule "jointhrottle"; /* set::anti-flood::join-flood (previously chanmode +j) */
loadmodule "charsys"; /* Provides set::allowed-nickchars (must always be loaded!) */
loadmodule "authprompt"; /* Authentication prompt, see set::authentication-prompt */
loadmodule "history_backend_mem"; /* History storage backend (used by chanmodes/history) */
loadmodule "tkldb"; /* Write TKLines to .db file */
loadmodule "channeldb"; /* Write channel settings to .db file (+P channels only) */
loadmodule "rmtkl"; /* Easily remove *-Lines in bulk with /RMTKL */
loadmodule "restrict-commands"; /* Provides set::restrict-commands settings */
loadmodule "reputation"; /* used by Connthrottle and others, see next */
loadmodule "connthrottle"; /* see https://www.unrealircd.org/docs/Connthrottle */
loadmodule "userip-tag"; /* unrealircd.org/userip tag for ircops (IP address) */
loadmodule "userhost-tag"; /* unrealircd.org/userhost tag for ircops (real host) */
loadmodule "geoip-tag"; /* unrealircd.org/geoip tag for ircops (country) */
loadmodule "json-log-tag"; /* unrealircd.org/json-log tag and CAP for ircops */
loadmodule "issued-by-tag"; /* unrealircd.org/issued-by tag for servers and ircops */
loadmodule "real-quit-reason"; /* unrealircd.org/real-quit-reason for servers only */
loadmodule "targetfloodprot"; /* set::anti-flood::target-flood protection */
loadmodule "watch-backend"; /* used by watch and other modules */
loadmodule "geoip_base"; /* needed for ALL geoip functions */
loadmodule "websocket_common"; /* helper functions for websocket (internal) */
loadmodule "spamreport"; /* Spam reporting to a blacklist */
loadmodule "crule"; /* Rules in spamfilter::rule and deny link::rule */
loadmodule "maxperip"; /* allow::maxperip restrictions */
loadmodule "utf8functions"; /* Various UTF8 helper functions */
loadmodule "utf8only"; /* UTF8ONLY via set::utf8-only */
loadmodule "portinfo"; /* storing local_port and server_port of users */
loadmodule "isupport"; /* ISUPPORT / numeric 005 handling */
@if !defined(NO_DEFAULT_GEOIP)
@if $GEOIP_ENGINE != "none"
loadmodule "$GEOIP_ENGINE";
@endif
@if module-loaded("geoip_classic")
set {
geoip-classic {
ipv4-database "https://geoip.unrealircd.org/classic/GeoIP.dat" { url-refresh 14d; url-fail warn; }
ipv6-database "https://geoip.unrealircd.org/classic/GeoIPv6.dat" { url-refresh 14d; url-fail warn; }
asn-ipv4-database "https://geoip.unrealircd.org/classic/GeoIPASNum.dat" { url-refresh 14d; url-fail warn; }
asn-ipv6-database "https://geoip.unrealircd.org/classic/GeoIPASNumv6.dat" { url-refresh 14d; url-fail warn; }
}
}
@endif
@if module-loaded("geoip_mmdb")
set {
geoip-mmdb {
database "https://geoip.unrealircd.org/mmdb/GeoIP.mmdb" { url-refresh 14d; url-fail warn; }
asn-database "https://geoip.unrealircd.org/mmdb/GeoIP-ASN.mmdb" { url-refresh 14d; url-fail warn; }
}
}
@endif
@endif
+249
View File
@@ -0,0 +1,249 @@
/* This file will load all optional modules. These are features that
* not everyone will use or are considered experimental.
* You can include this file from your unrealircd.conf like this:
* include "modules.optional.conf";
* OR... and this is probably a better idea... you can copy-paste it
* to another file where you do your own customizations.
*
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* If you want to customize, make a copy of this file (for example
* name it modules.custom.conf) and edit it.
* Then include that file from your unrealircd.conf instead of this one.
*/
/*** Commands ***/
// This add the /IRCOPS command: A more visual way for users
// to see which IRCOps are online.
loadmodule "ircops";
// This adds the /STAFF command: This command simply displays
// a text file that you can configure here:
loadmodule "staff";
@if module-loaded("staff")
set { staff-file "network.staff"; }
@endif
/*** Channel modes ***/
// The following module ('nocodes') is not a true channel mode.
// It simply enhances the existing channel mode +S/+c to include
// stripping/blocking of bold, underline and italic text.
loadmodule "nocodes";
/*** Other ***/
// The hideserver module will hide /MAP and /LINKS to regular users.
// It does not truly enhance security as server names can still be
// seen at other places.
// Comment out the following line to enable this:
// loadmodule "hideserver";
// The antirandom module will kill or *line users that have a nick,
// ident and/or realname that is considered "random".
// This helps to combat simple botnets/drones.
// Note that failure to set the right settings may ban innocent users.
// This is especially true if you are on a non-English network where
// the module may consider a sequence of characters "random" even though
// it is a perfectly pronounceable word in your language.
loadmodule "antirandom";
@if module-loaded("antirandom")
set {
antirandom {
/* THRESHOLD:
* This is the most important setting of all.
* For every randomly looking item the user gets a certain amount of
* 'points'. If the points reach the 'threshold' then the appropriate
* action is taken (killed, *lined, see later on).
* lower = more randomly looking users will be caught
* (but also more innocent users).
* higher = less chance of innocent users getting killed
* (but also less chance on bots getting caught).
* <2: DON'T!!
* 4: Works good, probably a few more innocent kills, but if you have a
* big problem with drone attacks then this might be a good setting.
* 5: Works well with few innocent kills, probably good to begin with.
* 6: If you want to be a tad more careful
* >6: For the paranoid. Module can still be quite effective, though :)
*/
threshold 6;
/* BAN-ACTION:
* Action to take whenever the user is caught as random, options:
* warn, kill, gline, gzline, kline, zline, shun, tempshun
*/
ban-action kill;
/* BAN-TIME:
* Time to ban the user (irrelevant for tempshun/kill).
* Something between 1 hour and 2 days is recommended.
* If you set it higher than 3 or 4 days then you get quite a risk
* of catching innocent users due to dynamic IP, not to mention
* your *line list gets filled up... so choose it wisely.
*/
ban-time 4h;
/* BAN-REASON:
* The ban or kill reason to use.
* Tip: you might want to put in an entry to a FAQ or an email address where
* users can mail if they have been caught and don't know what to do.
* NOTE: One of the various reasons that "innocent users" are blocked is when
* they randomly type in info for their nick, ident, or realname.
*/
ban-reason "You look like a bot. Be sure to fill in your nick/ident/realname properly.";
/* CONVERT-TO-LOWERCASE:
* Convert nicks, idents, and realnames to lowercase before doing random checks?
* Useful to catch GnStA5FYhiTH51TUkf style random nicks as random.
* Enabled by default.
*/
convert-to-lowercase yes;
/* SHOW-FAILEDCONNECTS:
* This will send out a notice whenever a randomly looking user has been caught
* during connecting. This can be pretty noisy.
* Especially recommended to enable during the first few days you use this module.
*/
show-failedconnects yes;
/* EXCEPT:
* Don't do antirandom checks for these users.
*/
except {
/* Exempt WEBIRC gateways because these frequently
* cause false positives. So the default is yes.
*/
webirc yes;
/* Exempt LAN users */
ip { 192.168.*; 127.*; }
// Or by hostname:
//mask { *.example.net; }
/* You can also exempt security groups: */
// security-group known-users;
/* For all options, see https://www.unrealircd.org/docs/Mask_item */
}
}
}
@endif
// This module will send a HTTP 301 redirect to any client which sends
// a HTTP request to us. This is commented out by default:
//loadmodule "webredir";
//set {
// webredir {
// url 'https://...';
// }
//}
// Load the webserver module, needed for websocket (see next)
loadmodule "webserver";
// This adds websocket support. For more information, see:
// https://www.unrealircd.org/docs/WebSocket_support
loadmodule "websocket";
// This module will detect and stop spam containing characters of
// mixed "scripts", where (for example) some characters are in
// Latin script and other characters are in Cyrillic script.
loadmodule "antimixedutf8";
@if module-loaded("antimixedutf8")
set {
antimixedutf8 {
/* Take action at this 'score' (lower = more sensitive)
*
* A score of 2 or 3 will catch a lot but also
* catch innocent users who are not using a pure
* Latin script, such as Russian people who
* commonly use a mix of Latin and Cyrillic.
*
* A score of 8 is a safe default.
*/
score 8;
/* Action to take, see:
* https://www.unrealircd.org/docs/Actions
*/
ban-action block;
/* Block/kill/ban reason (sent to user) */
ban-reason "Mixed character spam";
/* Duration of ban (does not apply to block/kill) */
ban-time 4h; // For other types
/* Except these users - see
* https://www.unrealircd.org/docs/Mask_item for options.
*/
//commented out by default:
//except {
// security-group known-users;
// webirc yes;
//}
}
}
@endif
// This module will add support for /EXTJWT command,
// used for generating authorization tokens for external services.
// The feature is based on a specification described here:
// https://github.com/ircv3/ircv3-specifications/pull/341
// Please create your configuration block based on the example below.
// Do not uncomment the example.
//
// Supported JWT methods: NONE (not recommended), HS256, HS384, HS512,
// ES256, ES384, ES512, RS256, RS384, RS512
// Method NONE does not use any cryptography to sign the token. This
// is only useful for checking whether the service works when initially
// setting it up. HS* methods use a password that must be shared with
// the verification service. ES* and RS* methods use public-private key
// pairs, so the verification service, knowing your public key, can't
// generate own valid tokens.
//
// For methods requiring a key, place it in your "conf" directory.
//
// Use following shell commands to create keys if needed:
// To generate RS256, RS384 or RS512 private key (for UnrealIRCd):
// openssl genrsa -out privkey.pem 4096
// To generate matching public key (for the external service to verify
// the token):
// openssl rsa -in privkey.pem -pubout > pubkey.pem
//
// To generate ES256, ES384 or ES512 private key (for UnrealIRCd):
// openssl ecparam -genkey -name secp521r1 -noout -out privkey.pem
// To generate matching public key (for the external service to verify
// the token):
// openssl ec -in privkey.pem -pubout -out pubkey.pem
//
// In all cases, substitute your preferred file names for "pubkey.pem"
// and "privkey.pem".
//loadmodule "extjwt";
//extjwt {
// /* The configuration below is used when no service name is
// * provided by the user command.
// */
// method "HS256"; /* described above */
// expire-after 30; /* seconds */
// secret "somepassword"; /* required for HS* methods */
// /* Optional service blocks for generating different tokens.
// * Add as many of these as you need.
// */
// service "service1" {
// method "ES512";
// //secret "anotherpassword"; /* required for HS* method */
// key "es512.pem"; /* required for ES* and RS* methods */
// //verify-url 'https://example.com/verify/?t=%s'; /* URL for your validation service - optional; use single quotes here! */
// expire-after 60; /* seconds, will be inherited from main if not given */
// };
// /* Another service block. */
// service "service2" {
// method "RS256";
// key "RS256.pem";
// };
//};
+21
View File
@@ -0,0 +1,21 @@
#
# This file contains the list of repositories that are used
# by the './unrealircd module' command.
# Note that 3rd party modules are NOT written by the UnrealIRCd team.
# Use such modules at your own risk. In case of problems, contact
# the module author. For more information, see:
# https://www.unrealircd.org/docs/Module_manager
#
#
# This is the unrealircd-contrib repository which is added by default in
# UnrealIRCd to make it easy for users to install 3rd party modules.
# If you are a module coder and want to add your module to this repository
# as well, then read the rules and procedure at:
# https://www.unrealircd.org/docs/Rules_for_3rd_party_modules_in_unrealircd-contrib
#
https://modules.unrealircd.org/modules.list
# You can add more repositories here. However, do note that all
# URLs MUST start with https://
+144
View File
@@ -0,0 +1,144 @@
/* This file defines a number of default operclass blocks which you can
* use in your oper blocks (via oper::operclass).
*
* This file is normally included from your unrealircd.conf through:
* include "operclass.default.conf";
*
* The operclass block is extensively documented at:
* https://www.unrealircd.org/docs/Operclass_block
* And the permissions itself (operclass::permissions) at:
* https://www.unrealircd.org/docs/Operclass_permissions
*
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* Instead, if you want to change the permissions in an operclass block,
* you should copy the definition, or this entire file, to either your
* unrealircd.conf or some other file (eg: operclass.conf) that you
* will include from your unrealircd.conf.
* Then edit it, and while doing so don't forget to change the name
* of your custom operclass block(s), so operclass <name>.
*/
/* Local IRC Operator */
operclass locop {
permissions {
chat;
channel { operonly; override { flood; } }
client { see; }
immune;
self { getbaddcc; opermodes; set; }
server { opermotd; info; close; module; dns; rehash { local; } }
route { local; }
kill { local; }
server-ban {
kline;
zline { local; }
}
}
}
/* Global IRC Operator */
operclass globop {
permissions {
chat;
channel { operonly; see; override { flood; } }
client;
immune;
self { getbaddcc; opermodes; set; }
server { opermotd; info; close; module; dns; rehash;
remote; tsctl { view; } }
route;
kill;
server-ban { dccdeny; shun; zline; kline; gline; }
}
}
/* Server administrator */
operclass admin {
permissions {
chat;
channel { operonly; see; override { flood; } }
client;
immune;
self { getbaddcc; opermodes; set; }
server { opermotd; info; close; module; dns; rehash;
remote; description; addmotd;
addomotd; tsctl { view; } }
route;
kill;
server-ban;
}
}
/* Services Admin */
operclass services-admin {
permissions {
chat;
channel { operonly; see; override { flood; } }
client;
immune;
self { getbaddcc; opermodes; set; }
server { opermotd; info; close; module; dns; rehash;
remote; description; addmotd;
addomotd; tsctl { view; } }
route;
kill;
server-ban;
sacmd;
services;
}
}
/* Network Administrator */
operclass netadmin {
permissions {
chat;
channel { operonly; see; override { flood; } }
client;
immune;
self { getbaddcc; opermodes; set; }
server { opermotd; info; close; module; dns; rehash;
remote; description; addmotd;
addomotd; tsctl; }
route;
kill;
server-ban;
sacmd;
services;
}
}
/* Same as 'globop' operclass, but with OperOverride capabilities added */
operclass globop-with-override {
parent globop;
permissions {
channel { operonly; see; override; }
self { getbaddcc; opermodes; set; unkickablemode; }
}
}
/* Same as 'admin' operclass, but with OperOverride capabilities added */
operclass admin-with-override {
parent admin;
permissions {
channel { operonly; see; override; }
self { getbaddcc; opermodes; set; unkickablemode; }
}
}
/* Same as 'services-admin' operclass, but with OperOverride capabilities added */
operclass services-admin-with-override {
parent services-admin;
permissions {
channel { operonly; see; override; }
self { getbaddcc; opermodes; set; unkickablemode; }
}
}
/* Same as 'netadmin' operclass, but with OperOverride capabilities added */
operclass netadmin-with-override {
parent netadmin;
permissions {
channel { operonly; see; override; }
self { getbaddcc; opermodes; set; unkickablemode; }
}
}
+39
View File
@@ -0,0 +1,39 @@
/* This file defines a number of default rpc-class blocks which you can
* use in your rpc-user blocks (via rpc-user::rpc-class).
*
* This file is normally included via rpc.modules.default.conf, or you
* can do so from your unrealircd.conf through:
* include "rpc-class.default.conf";
*
* The rpc-class block is documented at:
* https://www.unrealircd.org/docs/Rpc-class_block
*
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* If you want to tweak rpc-class { } blocks, simply define your own
* and optionally use 'parent read-only' or the like if you want to inherit.
* Do not edit the build-in rpc-classes from below ('full' and 'read-only').
*/
rpc-class full {
permissions {
all;
}
}
rpc-class read-only {
permissions {
rpc;
stats;
log;
user { list; get; }
whowas { get; }
server { list; get; }
channel { list; get; }
server_ban { list; get; }
server_ban_exception { list; get; }
spamfilter { list; get; }
name_ban { list; get; }
}
}
+65
View File
@@ -0,0 +1,65 @@
/* This file will load all UnrealIRCd modules needed for JSON-RPC,
* this allows remote (web) endpoints to query and control UnrealIRCd.
* To actually use it, you would also need one or more rpc-user blocks
* and one or more special listen blocks, see the documentation at
* https://www.unrealircd.org/docs/JSON-RPC.
*
* You can include this file from your unrealircd.conf, using:
* include "rpc.modules.default.conf";
*
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* If you want to customize the modules to load you have two options:
* 1) Keep the include for rpc.modules.default.conf as usual and make use
* of blacklist-module "xyz"; to selectively disable modules.
* See https://www.unrealircd.org/docs/Blacklist-module_directive
* 2) OR, make a copy of this file (eg: name it rpc.modules.custom.conf)
* and edit it. Then include that file from your unrealircd.conf
* instead of this one.
* The downside of option #2 is that you will need to track changes
* in the original rpc.modules.default.conf with each new UnrealIRCd
* release to make sure you don't miss any new functionality (as new
* important modules may be added you need to add them to your conf).
* You don't have this problem with option #1.
*/
/* The RPC modules are loaded in modules.default.conf nowadays,
* so we only need to load the web server and add the default
* local RPC UNIX socket socket.
*/
/* These are required for RPC to work */
loadmodule "webserver";
loadmodule "websocket_common";
/* And a RPC listen socket */
@if !defined($NO_DEFAULT_RPC_SOCKET)
listen {
file "rpc.socket";
options { rpc; }
}
@endif
/* And a memory log block */
@if !defined($NO_DEFAULT_LOG_MEMORY_BLOCK)
log {
source {
all;
!debug;
!join.LOCAL_CLIENT_JOIN;
!join.REMOTE_CLIENT_JOIN;
!part.LOCAL_CLIENT_PART;
!part.REMOTE_CLIENT_PART;
!kick.LOCAL_CLIENT_KICK;
!kick.REMOTE_CLIENT_KICK;
}
destination {
memory {
max-lines 1000;
max-time 7d;
}
}
}
@endif
/* Also load the default rpc-class { } blocks */
include "rpc-class.default.conf";
+270
View File
@@ -0,0 +1,270 @@
/* Default snomask configuration.
*
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
* If you want to customize it, make a copy of this file
* (eg: name it snomasks.custom.conf) and edit it.
* Then include that file from your unrealircd.conf instead of this one.
*/
/* Server bans snomask - 'b' */
log {
source {
tkl.BAN_REALNAME;
tkl.TKL_ADD;
tkl.TKL_DEL;
tkl.TKL_ADD_TEMPSHUN;
tkl.TKL_DEL_TEMPSHUN;
tkl.TKL_EXPIRE;
tkl.RMTKL_COMMAND;
}
destination {
snomask b;
}
}
/* Blacklist snomask: 'B' */
log {
source {
blacklist;
}
destination {
snomask B;
}
}
/* Local client connects snomask - 'c' */
log {
source {
connect.LOCAL_CLIENT_CONNECT;
connect.LOCAL_CLIENT_DISCONNECT;
}
destination {
snomask c;
}
}
/* Remote client connects snomask - 'C' */
log {
source {
connect.REMOTE_CLIENT_CONNECT;
connect.REMOTE_CLIENT_DISCONNECT;
}
destination {
snomask C;
}
}
/* DCC rejections snomask - 'd' */
log {
source {
dcc;
}
destination {
snomask d;
}
}
/* Debug snomask (not recommended) - 'D' */
log {
source {
debug;
}
destination {
snomask D;
}
}
/* Floods snomask - 'f' */
log {
source {
flood;
}
destination {
snomask f;
}
}
/* Join, parts, kicks - 'j' */
log {
source {
join.LOCAL_CLIENT_JOIN;
join.REMOTE_CLIENT_JOIN;
part.LOCAL_CLIENT_PART;
part.REMOTE_CLIENT_PART;
kick.LOCAL_CLIENT_KICK;
kick.REMOTE_CLIENT_KICK;
}
destination {
snomask j;
}
}
/* Kill snomask */
log {
source {
kill;
}
destination {
snomask k;
}
}
/* Local nick changes snomask - 'n' */
log {
source {
nick.LOCAL_NICK_CHANGE;
}
destination {
snomask n;
}
}
/* Remote nick changes snomask - 'N' */
log {
source {
nick.REMOTE_NICK_CHANGE;
}
destination {
snomask N;
}
}
/* Deny nick (QLINE) rejections snomask - 'q' */
log {
source {
nick.QLINE_NICK_LOCAL_ATTEMPT;
nick.QLINE_NICK_REMOTE;
}
destination {
snomask q;
}
}
/* Spamfilter hits snomask - 'S' */
log {
source {
tkl.SPAMFILTER_MATCH;
}
destination {
snomask S;
}
}
/* IRCOp overriding in channels (OperOverride) - 'o' */
log {
source {
operoverride;
}
destination {
snomask o;
}
}
/* IRCOp changing user properties or forcing users to do things - 'O' */
log {
source {
chgcmds;
sacmds;
}
destination {
snomask O;
}
}
/* VHOST usage - 'v' */
log {
source {
vhost;
}
destination {
snomask v;
}
}
/* JSON-RPC usage - 'R' */
log {
source {
rpc;
}
destination {
snomask R;
}
}
/* Spam reports - 'r' */
log {
source {
spamreport;
}
destination {
snomask r;
}
}
/* Connection-limit rejections (maxperip / connthrottle) - 'x' */
log {
source {
connthrottle.CONNTHROTTLE_IPV6_LIMIT;
maxperip.MAXPERIP_LIMIT;
}
destination {
snomask x;
}
}
/* Snomask s (server notices) - the "catch all" snomask for all other things */
log {
source {
link;
oper;
!debug;
nomatch;
}
destination {
snomask s;
}
}
/* These log sources are sent to all servers (globally).
* These are generally two categories:
* 1) Things that affect the network as a whole, eg linking
* 2) Things that otherwise cannot be logged by a remote server
* that may interest ircops. Eg: a spamfilter match,
* since that would otherwise not be propagated.
*/
log {
source {
/* All link messages affect the network so
* these should be global. Except for the
* link connecting... and timeout while
* connecting.. messages, which can be noisy.
*/
link;
!link.LINK_CONNECTING;
!link.LINK_CONNECT_TIMEOUT;
!link.SERVER_LINKED_REMOTE;
!link.SERVER_LINKED;
/* All oper up/downs */
oper;
/* Flood messages, important to keep an eye on, network-wide */
flood;
/* TEMPSHUN: these are otherwise missing for snomask 'b' */
tkl.TKL_ADD_TEMPSHUN;
tkl.TKL_DEL_TEMPSHUN;
/* Spamfilter matches: needed for snomask 'S' */
tkl.SPAMFILTER_MATCH;
/* Critical issue: */
tls.TLS_CERT_EXPIRING;
/* SAMODE: needed for snomask 'o' */
samode.SAMODE_COMMAND;
/* Blacklist hits */
blacklist;
/* Central blocklist hits and errors */
central-blocklist;
/* Never any debug messages */
!debug;
}
destination {
remote;
}
}
+154
View File
@@ -0,0 +1,154 @@
/*
* This configuration file contains example spamfilter rules.
* They are real rules that were useful a long time ago.
* Since 2005 these rules are no longer maintained.
* The main purpose nowadays is to serve as an example
* to give you an idea of how powerful spamfilters can
* be in real-life situations.
*
* Documentation on spamfilter is available at:
* https://www.unrealircd.org/docs/Spamfilter
*/
/* General notes:
* 1) We use match 'xyz' instead of match "xyz". When using single quotes
* you don't risk it being interpreted as an URL for remote includes.
* 2) If you want to use a \ in a spamfilter, or in fact anywhere in the
* configuration file, then you need to escape this to \\ instead.
*/
/* First some spamfilters with match-type 'simple'.
* The only matchers available are * and ?
* PRO's: very fast, easy matching: everyone can do this.
* CON's: limited ability to fine-tune spamfilters
*/
spamfilter {
match-type simple;
match 'Come watch me on my webcam and chat /w me :-) http://*:*/me.mpg';
target private;
action gline;
reason "Infected by fyle trojan: see http://www.sophos.com/virusinfo/analyses/trojfylexa.html";
}
/* This signature uses a \ which has to escaped to \\ in the configuration file */
spamfilter {
match-type simple;
match 'C:\\WINNT\\system32\\*.zip';
target dcc;
action block;
reason "Infected by Gaggle worm?";
}
spamfilter {
match-type simple;
match 'Speed up your mIRC DCC Transfer by up to 75%*www.freewebs.com/mircupdate/mircspeedup.exe';
target private;
action gline;
reason "Infected by mirseed trojan: see http://www.sophos.com/virusinfo/analyses/trojmirseeda.html";
}
spamfilter {
match-type simple;
match 'STOP SPAM, USE THIS COMMAND: //write nospam $decode(*) | .load -rs nospam | //mode $me +R';
target private;
action gline;
reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
}
/* Now spamfilters of type 'regex'.
* These use powerful regular expressions (Perl/PCRE style)
* You may have to learn more about "regex" first before you
* can use them. For example the dot ('.') has special meaning.
*/
/* This regex shows a pattern which requires 20 paramaters,
* such as "x x x x x x x x x x x x x x x x x x x x"
*/
spamfilter {
match-type regex;
match '\x01DCC (SEND|RESUME)[ ]+\"(.+ ){20}';
target { private; channel; }
action kill;
reason "mIRC 6.0-6.11 exploit attempt";
}
/* Similarly, this regex shows a pattern that matches
* against at least 225 characters in length.
*/
spamfilter {
match-type regex;
match '\x01DCC (SEND|RESUME).{225}';
target { private; channel; }
action kill;
reason "Possible mIRC 6.12 exploit attempt";
}
/* Earlier you saw an example of a $decode exploit which used
* match-type 'simple' and - indeed - the filter was quite simple.
* The following uses a regex with a similar example.
* Regular expressions are very powerful but here you can see
* that it actually complicates writing a filter quite a bit.
* With regex in this filter we need to escape the ( and all
* the dots, question marks, etc. if we want to match these
* characters in literal text.
*/
spamfilter {
match-type regex;
match '^Want To Be An IRCOp\? Try This New Bug Type: //write \$decode\(.+=.?,m\) \| \.load -rs \$decode\(.+=.?,m\)$';
target private;
action block;
reason "Spamming users with an mIRC trojan. Type '/unload -rs newb' to remove the trojan.";
}
spamfilter {
match-type regex;
match '^http://www\.angelfire\.com/[a-z0-9]+/[a-z0-9]+/[a-z_]+\.jpg <- .*!';
target private;
action block;
reason "Infected by fagot worm: see http://www.f-secure.com/v-descs/fagot.shtml";
}
/* This shows a regex which specifically matches an entire line by
* the use of ^ and $
*/
spamfilter {
match-type regex;
match '^!login Wasszup!$';
target channel;
action gline;
reason "Attempting to login to a GTBot";
}
/* An example of how to match against an IP address in text (IPv4 only) */
spamfilter {
match-type regex;
match '^!packet ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15}';
target channel;
action gline;
reason "Attempting to use a GTBot";
}
/* A slightly more complex example with a partial OR matcher (|) */
spamfilter {
match-type regex;
match '(^wait a minute plz\. i am updating my site|.*my erotic video).*http://.+/erotic(a)?/myvideo\.exe$';
target private;
action gline;
reason "Infected by some trojan (erotica?)";
}
/* In regex a \ is special and needs to be escaped to \\
* However in this configuration file, \ is also special and
* needs to be escaped to \\ as well.
* The result is that we need double escaping:
* To match a \ you need to write \\\\ in the configuration file.
*/
spamfilter {
match-type regex;
match 'C:\\\\WINNT\\\\system32\\\\(notes|videos|xxx|ManualSeduccion|postal|hechizos|images|sex|avril)\.zip';
target dcc;
action dccblock;
reason "Infected by Gaggle worm";
}
File diff suppressed because it is too large Load Diff
+2 -8
View File
@@ -1,12 +1,9 @@
# create RSA certs - Server
RANDFILE = ssl.rnd
[ req ]
default_bits = 1024
encrypt_key = yes
# Note: RSA bits is ignored, as we use ECC now
default_bits = 2048
distinguished_name = req_dn
x509_extensions = cert_type
[ req_dn ]
countryName = Country Name
@@ -28,6 +25,3 @@ organizationalUnitName_default = IRCd
0.commonName = Common Name (Full domain of your server)
1.commonName_value = localhost
[ cert_type ]
nsCertType = server
-764
View File
@@ -1,764 +0,0 @@
/*
* example.conf by Alexander Ganchev AKA Peace (unrealirc@gmail.com).
* $Id$
*
* Prednaznachen e za Unreal3.2 i versii sled nego
* Dobre priqteli. Tova e noviqt example.conf.Izglejda kato nqkoi fail C++ (shega).
* Kakto i da e..vreme e da go configurirame. Trudnichko e kato za purvi put, no
* sus malko praktikuvane i chetene shte mu sviknete.
*
* Kopiraite tozi fail vuv vashata glavna direktoriq i go prekrustete na 'unrealircd.conf'.
* VAJNO: Vsichki linii (tova sa zavurshvashtite na vseki red),
* {trqbwa da zavurshvat sus ; a kraq na samata liniqta slagate i } - demek nakraq stava };
* MOLQ PROCHETETE doc/unreal32docs.html!Online versiqta shte namerite tuk -
* www.vulnscan.org/UnrealIrcd/unreal32docs.html
* Sudurja dosta informaciq za config faila: dava vi informaciq za vseki blok,stoinost, i taka natatuka..
*/
/* Tipove Komentari */
#Comment type 1 (Shell type)
// Comment type 2(C++ style)
/* Comment type 3 (C Style) */
#tezi linii shte budat ignorirani ot ircd-to.
/*
* UnrealIRCd poddurja modulite,clock.dll & commands.dll
* zavisimost ot vashata operacionna sistema izberete za Windows ili za *NIX shte izpolzvate
* Nezavisimo ot Operacionnata vi sistema trqbva da mahnete //- predi loadmodule i na 2-ta reda.
*/
/* FOR *NIX, uncomment the following 2lines: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* FOR Windows, uncomment the following 2 lines: */
loadmodule "modules/commands.dll";
loadmodule "modules/cloak.dll";
/*
* Sushto taka moje da vkliuchite i drugi configuracionni failove.
* help.conf vi se qvqva komadata /helpop text. The badwords.*.conf
* falovete sudurjat vsichki "badword kato slojite mod +G v kanal
* spamfilter.conf sudurja nqkoi dobri pravila za zabrani za puskane na troianski kone.
* Ako iskate mojete da gi vkliuchite tqh :
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/* NEW: me {}
* OLD: M:Line
* me {} opredelq imeto,opisanie i cifrata na vashiqt unrealircd server.
* Sintaksisut e kakto sledva :
* me {
* name "server.name";
* info "Server Description";
* numeric (server numeric*);
* };
* Ako linkvate Servera si,Cifrata moje bi nqma da bude izpolzvaema ot drugite serveri vuv mrejata
*/
me
{
name "Imeto Na Servera vi";
info "Opisanie Na Servera";
numeric Cifra po izbor(po malka e po dobre);
};
/*
* NEW: admin {}
* OLD: A:Line
* Admin dava informaciq za server admin-a na mrejata.
* Mojete da slojite mnogo linii pod grafata 'admin {' ako iskate.
* Sintaksisa kakto sledva:
* admin {
* "Purva liniq";
* "Vtora liniq";
* [drugi]
* };
*/
admin {
"TUk Slojete informaciq za admina";
"Tuk mojete da slojite i ime ili email";
};
/*
* NEW: class {}
* OLD: Y:line (old was confusing)
* Class e grupa nastroiki za vashata vruzka.Primer,Server connect-vane,max clienti i drugi.
* delqt se na 2 Class-a. Class Cliends & Servers.
* {
* pingfreq ((kolko chesto da pignesh user/server v sekundi);
* maxclients (vuzmojnite connekcii za opredelen 'Class');
* sendq (maksimuma ot hora v edna opashka);
* recvq (maximum receive queue from a connection [flood control]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Maksimum serveri koito moje da se link-nat */
sendq 1000000;
connfreq 100; /* Sekundite mejdu vseki opit za connect-vane */
};
/*
* NEW: allow {}
* OLD: I:Line
* Tazi Opciq opredelq koi shte ima pravo da vliza na servera vi...
* Mojete da kontrolirate vashite klienti,da im slagate paroli i drugi.
* control and/or set a password.
* Syntax is as follows:
* allow {
* ip (razresheno ip za izpolzvane);
* hostname (host mask);
* class (class to send them to [see class {}]);
* password "(parola)"; (po izbor)
* maxperip (pozvoleni vruzki ot edno ip); (optional)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Passworded allow line */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "Test";
maxperip 1;
};
/*
* NEW: allow channel {}
* OLD: chrestrict
* Razreshenie na userite da vlizat v opredelen kanal...
* Syntax:
* allow channel {
* channel "imeto na kanala";
* };
*/
allow channel {
channel "#Free";
};
/*
* NEW: oper {}
* OLD: O:Line
* Opredelete koi da bude IRC Operator na servera vi
* IRC operators tova sa tochno tezi hora koito da se grijat za servera,
* da go poddurjat i da se connect-vat redovno.
* Sinktaksisut e kakto sledva :
* oper (login) {
* class (class to put them in, if different from I, moves them to new
* class);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (tuk shte slagate flagovete*);
* };
* OR
* flags "old type flags, like OAaRD"; (sushto moje da slagate i samo bukvite)
* };
*/
/* Za lista s oper flagovete, poglednete doc/unreal32docs.html#operblock
*[Zaduljitelno da se prochete]
*/
oper admin {
class clients;
from {
userhost *@*;
};
password "Test";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
coadmin;
can_globalkill;
can_ungline;
can_gline;
can_kline;
can_unkline;
can_rehash;
can_globops;
can_localroute;
can_wallops;
can_localkill;
can_localnotice;
can_globalroute;
can_globalnotice;
can_dccdeny;
can_setq;
services-admin;
};
};
/*
* NEW: listen {}
* OLD: P:Line
* Tuk shte opredelite porta na vasheto ircd prez koito
* da vlizat useri/serveri.
* Siktaksisut e kakto sledva :
* listen (ip):(nomera na porta)
* {
* options {
* (options here);
* };
* };
* or for a plain
* listen: listen (ip):(port);
*
* NOTICE: for ipv6 ips (3ffe:b80:2:51d::2 etc), use listen [ip]:port;
*
* That works also.
*/
/* Options for listen:
OLD | NEW
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* BELEJKI ZA SSL PORTOVE : SSL portovete sa dosta nestandartni,
* osven nomera na 'high-SSL portovete', nqkoi hora kazvat che mojej da gi startirash
* na 994 port, zashtoto tova e oficialniqt SSL port..no tova izskva root!Osven tova port 194
* e oficialniqt irc port i mojete nqkoi put da probvate da vidite dali ircd-to e startirano
* na tozi port.
* Nashiqt suvet e da izpolzvate port 6697 za SSL, toi se izpolzva vuv nqkoi mreji i
* mojete da otvorite mnogo SSL portove ako iskate, no izpolzvaite i 6697 po standart.
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/*
* NEW: link {}
* OLD: C/N:Lines
* Tezi opcii sa za link-vane na serveri
* BELEJKA: Dva servera se nujdaqt ot LINK {} za da budat linknati bez problemi!
* Sintaksisut e kakto sledva:
* link (server name)
* {
* username (username, moshete da slojite sushto i * );
* hostname (ip nomer/hostmask);
* bind-ip (kum koe ip da bude svurzano sled kato se connect-ne, ili slojete * );
* port (port za svurzvane (moje da slojite vseki);
* hub (ako servera vi e hub,slojete * , ili servermask-a);
* [ili leaf *;]
* password-connect "(parola za svurzvane)";
* password-receive "(povtorete parolata)";
* class (class);
* options {
* (options here*);
* };
* /* Ako izpolzvate SSL,vie mojete da izberete shifur za da izpolzvate SSL mode
* * Lista shte namerite vuv "openssl ciphers",samostoqtelen shifur sus :'s
* */
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
options:
OLD | NEW
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
link services.Test.com
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Belejka: vie ne mojete da izpolzvate autoconnect kogato linkvate serveri
autoconnect;
ssl;
zip;
};
};
/*
*
* NEW: ulines {}
* OLD: U:Line
* U-liniite davat poveche komandi na serverut vi,Uliniite se slagat samo za services/stats
* serveri i NIKOGA za normalnite UnrealIRCd serveri!
* Sintaksisut e kakto sledva:
* ulines {
* (server to uline);
* (server to uline);
* [etc]
* };
*/
ulines {
services.Test.org;
stats.Test.org;
};
/*
* NEW: drpass {}
* OLD: X:Line
* Tuk shte slagate parolite za /die i /restart na servera.
* Sintaksusut e kakto sledva:
* drpass {
* restart "(parola za restart na servera)";
* die "(parola za die na servera)";
* };
*/
drpass {
restart "restart";
die "die";
};
/*
* NEW: log {} OLD: nishto ne se kazva otnosno tova kude i kakvo da logva.Mojete
* gi slagate ako iskate
*
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
*
* Syntax:
* log "log file"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Iztriite log faila i napravete nov koito da stiga do 2MB.
*/
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* NEW: alias {}
* OLD: N/A
* Chrez tezi nastroiki moje da napravite prehod ot /nickserv,/chanserv i drugi kum drugi nickove.
* FLAGS: services,stats,normal
*
** Syntax:
* alias "Ime" {
* target "points to";
* type aliastype;
* };
* [BELEJKA: Mojete da vkliuchite i opredeleniq,za celta poglednete doc/unreal32docs.html section 2.9]
*/
// Tova posochva komandata /nickserv-a na user-a NickServ koito e svurzan s set::services-server server
/*alias NickServ {
target "NickServ";
type services;
};*/
// Ako iskate komandite da sa na drug nick mojete da promenite nick-a
//alias ChanServ {type services; };
// Posochva /StatServ na user-a StatServ koqto svurzva set::stats-server server
//alias StatServ {type stats; };
// Posochva /superbot na user-a SuperBot
//alias SuperBot {type normal; };
/* Standart Aliases */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* NEW: alias {}
* OLD: N/A
* Tezi moje da posochite zamestiteli na /identify,/services, i drugi...
* Syntax:
* alias "Ime" {
* format "format string" {
* target "points to";
* type aliastype;
* parameters "parameters to send";
* };
* type command;
* };
*/
/* Tova se pokazva otdelno, zashtoto vypreki che ima syshtoto ime kato predishnata direktiva
*e dosta razlichno po otnoshenie na sintaksis, vypreki che osigurqva prosta funkciq i raz4ita na standartni alias-i za da raboti.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* alias::format ditektivata e obichaen izraz.Pyrviq format se svyrzva s
* komandata /identify kogato pyrviq simvol e "#". Sled tova se izprashta do chanserv
* alias-a s parametri identify. %1-. Togava vtoriq ormat se svyrzva s komandata /identify
* kogato pyrviq simvol ne e "#".
* Togava se izprashta do nickserv alias-a s parametri identify %1-.
/* Standard aliases */
alias "services" {
format "^#" {
target "chanserv";
type services;
parameters "%1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "%1-";
};
type command;
};
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
/*
* NEW: tld {}
* OLD: T:Line
* Tezi nastroki sa za razlichni 'motd' i 'rules' failove
* v zavisimost ot klientskata hostmask-a.
* Sintaksisut e kakto sledva:
* tld {
* * mask (ident@host);
* motd "(motd file)";
* rules "(rules file)";
* };
*/
tld {
mask *@*;
motd "ircd.motd";
rules "ircd.rules";
};
/* BELEJKA: vzemete nqkoi fail primer - vzemete tao.of.irc.doc..sled tova go kopiraite v
* glavnata direktoriq na Unrealircd-to vi.Prekrustete go na irc.motd..Napravete po sushtiq
* nachin i ircd.rules (FAILOVETE SA ZADULJITELNI)
*/
/*
* NEW: ban nick {}
* OLD: Q:Line
* Ako slojite ban na nickname to veche tozi nick stava neizpolzvaem.
* Sintaksisut e kakto sledva :
* ban nick {
* mask "(nick koito jelaete da zabranite)";
* reason "(prichina)";
* };
*/
ban nick {
mask "Test";
reason "Test Nickname";
};
/*
* NEW: ban ip {}
* OLD: Z:Line
* Ban na ip.
* Sintaksis:
* ban ip { mask (ip nomer/hostmask); reason "(prichina)"; };
*/
ban ip {
mask 100.100.200.300;
reason "Wrong Ip";
};
/*
* NEW: ban server {}
* OLD: Server Q:Line
* Slagane na ban na server.Ako servera e link-nat kum otdalecheniq server
* (toest tozi) localniqt server shte se diskonect-ne avtormatichno.
* Syntax is as follows:
* ban server {
* mask "(Imeto na servera)";
* reason "(Prichina)";
* };
*/
ban server {
mask irc.microsoft.com;
reason "Get out of here";
};
/*
* NEW: ban user {}
* OLD: K:Line
* Tazi opciq pozvolqva da zabranite dostupa na user do vashiqt server
* Sintaksis:
* ban user { mask (hostmask/ip nomer); reason "(Prichina)"; };
*/
ban user {
mask *tirc@*.microsoft.com;
reason "Idiot";
};
/*
* NEW: ban realname {}
* OLD: n:Line
* Tazi opciq vi dava pravo da zabranite dostupa na user ot opredeleno 'realname'.
* Sintaksis:
* ban realname {
* mask "(real name)";
* reason "(prichina)";
* };
*/
ban realname {
mask "test";
reason "mIRKFORCE";
};
ban realname {
mask "sub7";
reason "virus";
};
/*
* BELEJKA ZA VSICHKI BANOVE, mojete da povtarqte procedurata sus razlichni nickove!
*
* NEW: except ban {}
* OLD: E:Line
* Nick koito ne moje da bude bannat.
* Sintaksis:
* except ban { mask (ident@host); }
*/
except ban {
/* don't ban stskeeps */
mask *stskeeps@212.*;
};
/*
* NEW: deny dcc {}
* OLD: dccdeny.conf
* Izpolzvaite go za da zabranite dcc.Predpazva vi ot virusi
* Syntax:
* deny dcc
* {
* filename "Fail koito shte blokirate (ie, *exe)";
* reason "prichina";
* };
*/
deny dcc {
filename "Sub7";
reason "Possible Sub7 Virus";
};
/*
* NEW: deny channel {}
* OLD: N/A (NEW)
* Zabranqva kanali po vash izbor.
* Syntax:
* deny channel {
* channel "(kanal)";
* reason "prichina";
* };
*/
deny channel {
channel "hackers";
reason "Warez is illegal";
};
/*
* NEW: vhost {}
* OLD: Vhost.conf file
* Tazi nastroika vi slaga Falshivo ip.Slaga se za hora koito ne sa operatori
* ili puk za operatori (za po murzelivite /sethost :P
* Sintaksis:
* vhost {
* vhost (vhost.com);
* from {
* userhost (ident@host to allow to use it);
* };
* login (login name);
* password (password);
* };
* then to use this vhost, do /vhost (login) (password) in IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Mojete da vkliuchite i drugi konfiguracionni failove */
/* vkliuchete "klines.conf"; */
/* Network configuration */
set {
network-name "Imeto na Mrejata vi";
default-server "Imeto na Servera";
services-server "Services.servera";
stats-server "Stats.Servera";
help-channel "#Kanal za pomosht";
hiddenhost-prefix "skrithost";
/* prefix-quit "quit na userite"; */
/* Cloak Keys se slagat na vsichki serveri ot mrejata.
* Te se izpolzvat za po golqma sigurnost.Trqbva da budat izbrani 3 reda
* ot 5-100 simvola i da sudurjat SMESENI golemi,malki bukvi i cifri...
* V primera e posocheno edin takuv 'Cloak Key'..napishete oshte 2
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"Slojete Tuk Vashi Razburkani";
"Slojete Tuk Vashi Razburkani";
};
/* on-oper host */
hosts {
local "Host za localen operator";
global "Host za globalen operator";
coadmin "Host za coadmin";
admin "Host za admin";
servicesadmin "Host za services-admin";
netadmin "Host za netadmin";
host-on-oper-up "yes\no";
};
};
/* Server specific configuration */
set {
kline-address "slojete adres za kline";
auto-join "#kanal za auto-join";
modes-on-connect "+iw";
modes-on-oper "+wgs";
oper-auto-join "#Kanal za auto-join na operatorite";
dns {
nameserver 127.0.0.1;
timeout 2s;
retries 2;
};
options {
hide-ulines;
/* Ako jelaete da proverqva identa mahnete */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Tova e minimalnoto vreme v koeto user moje da se svurje sled kato izleze ot servera.
* Tova shte pomogne da se spre spam-a */
anti-spam-quit-message-time 10s;
/* Napravete statichen quit koito da zamestva drugite quit-ove na userite.
custom quits are allowed on local server */
/* static-quit "Client quit"; */
/* Mojete da blokirate 'Part-reason-ite' kato slojite nqkakuv text po vash izbor */
/* static-part yes; */
/* Mojete da slagate 'stats' ili inache kazano nqkoi flagove da budat razresheni i
* izpolzvaemi samo ot operite. Primer za tova sa - klines,glines i shuns
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttling: Dolniqt primer pokazva che mojete da slojite limit 3 svurzvaniq
za 60 sec (na host). */
throttle {
connections 3;
period 60s;
};
/* Anti flood protection */
anti-flood {
nick-flood 3:60; /* 3 smenqniq na nicka za 60 seconds (po default) */
};
/* Spam filter */
spamfilter {
ban-time 1d; /* vremetraeneto e po default *line ban set by spamfilter */
ban-reason "Spam/Advertising"; /* default prichina */
virus-help-channel "#help"; /* Kanal za skanirane na virusi */
/* s izkliuchenie "#help"; drugite kanali se osvobojdavat ot filtrirane */
};
};
/*
* Ako imate problem ili nujda ot pomosht?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- sudurja 80% ot vuprosite vi!
* 3) Ako imate problem moje da se oburnete i kum irc.ircsystems.net #unreal-support,
* no purvo PROCHETETE HELP FAILA i 'FAQ'.
*/
-783
View File
@@ -1,783 +0,0 @@
/*
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* $Id$
*
* Works for Unreal3.2 and up
*
* Okay guys. This is the new example.conf. Its look is much like C++, kinda.
* Anyway it is time to go over this. It's hard to pick up at first, but
* with some pratice and reading you'll understand.
*
* Just copy this file to your main unrealircd dir and call it 'unrealircd.conf'.
*
* NOTE: All lines, except the opening { line, end in an ;, including the
* closing } line. The IRCd will ignore commented lines.
*
* PLEASE READ doc/unreal32docs.html! The online version is also available at:
* www.vulnscan.org/UnrealIrcd/unreal32docs.html
* It contains a lot information about the configfile: gives information about
* every block, variable, etc..
*/
/* Type of comments */
#Comment type 1 (Shell type)
// Comment type 2(C++ style)
/* Comment type 3 (C Style) */
#those lines are ignored by the ircd.
/*
* UnrealIRCd supports modules, loading some of them is required.
* You need at least the commands module and a cloaking module.
*/
/* FOR *NIX, uncomment the following 2lines: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* FOR Windows, uncomment the following 2 lines: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* You can also include other configuration files.
* help.conf contains all the /helpop text. The badwords.*.conf
* files contain all the badword entries for mode +G...
* spamfilter.conf contains some good rules for current trojans.
* You probably want to include them:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* NEW: me {}
* OLD: M:Line
* me {} defines the name, description and unreal server numeric for
* this server. Syntax is as follows:
* me {
* name "server.name";
* info "Server Description";
* numeric (server numeric*);
* };
* If linking, this numeric may not be used by any other server on the network.
*/
me
{
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
/*
* NEW: admin {}
* OLD: A:Line
* Admin gives information on the server admin. you
* may put as many lines under admin { as you wish.
* Syntax is as follows:
* admin {
* "first line";
* "second line";
* [etc]
* };
*/
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
/*
* NEW: class {}
* OLD: Y:line (old was confusing)
* These define settings for classes. A class is a group setting for
* connections. Example, server connections, instead of going to a client's
* class, you direct it to the server class. Syntax is as follows
* class (class name)
* {
* pingfreq (how often to ping a user/server in seconds);
* maxclients (how many connections for this class);
* sendq (maximum send queue from a connection);
* recvq (maximum receive queue from a connection [flood control]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Max servers we can have linked at a time */
sendq 1000000;
connfreq 100; /* How many seconds between each connection attempt */
};
/*
* NEW: allow {}
* OLD: I:Line
* This defines allowing of connections...
* Basically for clients, it allows them to connect so you can have some
* control and/or set a password.
* Syntax is as follows:
* allow {
* ip (ip mask to allow);
* hostname (host mask);
* class (class to send them to [see class {}]);
* password "(password)"; (optional)
* maxperip (how many connections per ip); (optional)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Passworded allow line */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
/*
* NEW: allow channel {}
* OLD: chrestrict
* Allows a user to join a channel...
* like an except from deny channel.
* Syntax:
* allow channel {
* channel "channel name";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* NEW: oper {}
* OLD: O:Line
* Defines an IRC Operator
* IRC operators are there to keep sanity to the server and usually keep it
* maintained and connected to the network.
* The syntax is as follows:
* oper (login) {
* class (class to put them in, if different from I, moves them to new
* class);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (flags here*);
* };
* OR
* flags "old type flags, like OAaRD";
* };
*/
/* For a list of oper flags, see doc/unreal32docs.html#operblock
* [HIGHLY recommended to read]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* NEW: listen {}
* OLD: P:Line
* This defines a port for the ircd to bind to, to
* allow users/servers to connect to the server.
* Syntax is as follows:
* listen (ip number):(port number)
* {
* options {
* (options here);
* };
* };
* or for a plain
* listen: listen (ip):(port);
*
* NOTICE: for ipv6 ips (3ffe:b80:2:51d::2 etc), use listen [ip]:port;
*
* That works also.
*/
/* Options for listen:
OLD | NEW
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* NOTE ON SSL PORTS: SSL ports are pretty non-standardized,
* besides numerous high-SSL ports, some people say you should run
* it at 994 because that's the official SSL port.. but that
* requires root! Besides, port 194 is the official irc port and
* have you ever seen an ircd running on that?
* So, our suggestion is to use port 6697 for SSL, this is used by
* quite some networks and is recognized by for example StunTour.
* You are free to open up as many SSL ports as you want, but
* by (also) using 6697 you help the world standardize a bit ;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* NOTE: If you are on an IRCd shell with multiple IP's you are
* likely to get 'Address already in use' errors in your log
* and the ircd won't start. This means you MUST bind
* to a specific IP instead of '*', so for example:
* listen 1.2.3.4:6667;
* Obviously, replace the IP with the IP that was assigned to you.
*/
/*
* NEW: link {}
* OLD: C/N:Lines
* This defines an okay for a server connection.
* NOTE: BOTH SERVERS NEED A LINK {} SETTING TO CONNECT PROPERLY!
* Syntax is as follows:
* link (server name)
* {
* username (username, * works too);
* hostname (ip number/hostmask);
* bind-ip (What IP to bind to when connecting, or *);
* port (port to connect to, if any);
* hub (If this is a hub, * works, or servermasks it may bring in);
* [or leaf *;]
* password-connect "(pass to send)";
* password-receive "(pass we should receive)";
* class (class to direct servers into);
* options {
* (options here*);
* };
* /* If we use SSL, we can choose what cipher to use in SSL mode
* * Retrieve a list by "openssl ciphers", seperate ciphers with :'s
* */
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
options:
OLD | NEW
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
link hub.mynet.com
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Note: You should not use autoconnect when linking services */
autoconnect;
ssl;
zip;
};
};
/*
*
* NEW: ulines {}
* OLD: U:Line
* U-lines give servers more power/commands, this should ONLY be set
* for services/stats servers and NEVER for normal UnrealIRCd servers!
* Syntax is as follows:
* ulines {
* (server to uline);
* (server to uline);
* [etc]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* NEW: drpass {}
* OLD: X:Line
* This defines the passwords for /die and /restart.
* Syntax is as follows:
* drpass {
* restart "(password for restarting)";
* die "(password for die)";
* };
*/
drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};
/*
* NEW: log {} OLD: N/A Tells the ircd where and what to log(s). You can have
* as many as you wish.
*
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
*
* Syntax:
* log "log file"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Delete the log file and start a new one when it reaches 2MB, leave this out to always use the
same log */
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* NEW: alias {}
* OLD: N/A
* This allows you to set command aliases such as /nickserv, /chanserv etc
* FLAGS: services, stats, normal
*
* Syntax:
* alias "name" {
* target "points to";
* type aliastype;
* };
*
* [NOTE: You could also include a pre-defined alias file here, see doc/unreal32docs.html section 2.9]
*/
// This points the command /nickserv to the user NickServ who is connected to the set::services-server server
/*alias NickServ {
target "NickServ";
type services;
};*/
// If you want the command to point to the same nick as the command, you can leave the nick entry out
//alias ChanServ { type services; };
// Points the /statserv command to the user StatServ on the set::stats-server server
//alias StatServ { type stats; };
// Points the /superbot command to the user SuperBot
//alias SuperBot { type normal; };
/* Standard aliases */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* NEW: alias {}
* OLD: N/A
* This allows you to set command aliases such as /identify, /services, etc
*
* Syntax:
* alias "name" {
* format "format string" {
* target "points to";
* type aliastype;
* parameters "parameters to send";
* };
* type command;
* };
*/
/* This is shown seperately because even though it has teh same name as the previous directive, it is very
* different in syntax, although it provides a similar function and relys on the standard aliases to work.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* The alias::format directive is a regular expression. The first format matches the /identify command when
* the first character is a #. It then passes this along to the chanserv alias with the parameters IDENTIFY
* %1-. The second format matches then /identify command when the first character is not a #. It then
* passes the command to the nickserv alias with parameters IDENTIFY %1-.
*/
/* The alias::format::parameters is similar to scripting languages. %N (where N is a number) represents a
* parameter sent to the command (in this case /identify). If you specify %N- it means all parameters from
* N until the last parameter in the string. You may also specify %n which is replaced by
* the user's nickname.
*/
/* Standard aliases */
alias "services" {
format "^#" {
target "chanserv";
type services;
parameters "%1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "%1-";
};
type command;
};
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
/*
* NEW: tld {}
* OLD: T:Line
* This sets a different motd and rules files
* depending on the clients hostmask.
* Syntax is as follows:
* tld {
* mask (ident@host);
* motd "(motd file)";
* rules "(rules file)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* note: you can just delete the example block above,
* in which case the defaults motd/rules files (ircd.motd, ircd.rules)
* will be used for everyone.
*/
/*
* NEW: ban nick {}
* OLD: Q:Line
* Bans a nickname, so it can't be used.
* Syntax is as follows:
* ban nick {
* mask "(nick to ban)";
* reason "(reason)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reserved for Services";
};
/*
* NEW: ban ip {}
* OLD: Z:Line
* Bans an ip from connecting to the network.
* Syntax:
* ban ip { mask (ip number/hostmask); reason "(reason)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Delinked server";
};
/*
* NEW: ban server {}
* OLD: Server Q:Line
* Disables a server from connecting to the network.
* if the server links to a remote server, local server
* will disconnect from the network.
* Syntax is as follows:
* ban server {
* mask "(server name)";
* reason "(reason to give)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Get out of here.";
};
/*
* NEW: ban user {}
* OLD: K:Line
* This makes it so a user from a certain mask can't connect
* to your server.
* Syntax:
* ban user { mask (hostmask/ip number); reason "(reason)"; };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};
/*
* NEW: ban realname {}
* OLD: n:Line
* This bans a certain realname from being used.
* Syntax:
* ban realname {
* mask "(real name)";
* reason "(reason)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* NOTE FOR ALL BANS, they may be repeated for addition entries!
*
* NEW: except ban {}
* OLD: E:Line
* This makes it so you can't get banned.
* Syntax:
* except ban { mask (ident@host); };
* Repeat the except ban {} as many times
* as you want for different hosts.
*/
except ban {
/* don't ban stskeeps */
mask *stskeeps@212.*;
};
/*
* NEW: deny dcc {}
* OLD: dccdeny.conf
* Use this to block dcc send's... stops
* viruses better.
* Syntax:
* deny dcc
* {
* filename "file to block (ie, *exe)";
* reason "reason";
* };
*/
deny dcc {
filename "*sub7*";
reason "Possible Sub7 Virus";
};
/*
* NEW: deny channel {}
* OLD: N/A (NEW)
* This blocks channels from being joined.
* Syntax:
* deny channel {
* channel "(channel)";
* reason "reason";
* };
*/
deny channel {
channel "*warez*";
reason "Warez is illegal";
};
/*
* NEW: vhost {}
* OLD: Vhost.conf file
* This sets a fake ip for non-opers, or
* opers too lazy to /sethost :P
* Syntax:
* vhost {
* vhost (vhost.com);
* from {
* userhost (ident@host to allow to use it);
* };
* login (login name);
* password (password);
* };
* then to use this vhost, do /vhost (login) (password) in IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* You can include other configuration files */
/* include "klines.conf"; */
/* Network configuration */
set {
network-name "ROXnet";
default-server "irc.roxnet.org";
services-server "services.roxnet.org";
stats-server "stats.roxnet.org";
help-channel "#ROXnet";
hiddenhost-prefix "rox";
/* prefix-quit "no"; */
/* Cloak keys should be the same at all servers on the network.
* They are used for generating masked hosts and should be kept secret.
* The keys should be 3 random strings of 5-100 characters
* (10-20 chars is just fine) and must consist of lowcase (a-z),
* upcase (A-Z) and digits (0-9) [see first key example].
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"and another one";
"and another one";
};
/* on-oper host */
hosts {
local "locop.roxnet.org";
global "ircop.roxnet.org";
coadmin "coadmin.roxnet.org";
admin "admin.roxnet.org";
servicesadmin "csops.roxnet.org";
netadmin "netadmin.roxnet.org";
host-on-oper-up "no";
};
};
/* Server specific configuration */
set {
kline-address "set.this.email";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
dns {
nameserver 127.0.0.1;
timeout 2s;
retries 2;
};
options {
hide-ulines;
/* You can enable ident checking here if you want */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* The minimum time a user must be connected before being allowed to use a QUIT message,
* This will hopefully help stop spam */
anti-spam-quit-message-time 10s;
/* Make the message in static-quit show in all quits - meaning no
custom quits are allowed on local server */
/* static-quit "Client quit"; */
/* You can also block all part reasons by uncommenting this and say 'yes',
* or specify some other text (eg: "Bye bye!") to always use as a comment.. */
/* static-part yes; */
/* This allows you to make certain stats oper only, use * for all stats,
* leave it out to allow users to see all stats. Type '/stats' for a full list.
* Some admins might want to remove the 'kGs' to allow normal users to list
* klines, glines and shuns.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttling: this example sets a limit of 3 connections per 60s (per host). */
throttle {
connections 3;
period 60s;
};
/* Anti flood protection */
anti-flood {
nick-flood 3:60; /* 3 nickchanges per 60 seconds (the default) */
};
/* Spam filter */
spamfilter {
ban-time 1d; /* default duration of a *line ban set by spamfilter */
ban-reason "Spam/Advertising"; /* default reason */
virus-help-channel "#help"; /* channel to use for 'viruschan' action */
/* except "#help"; channel to exempt from filtering */
};
};
/*
* Problems or need more help?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- contains 80% of your questions!
* 3) If you still have problems you can go irc.ircsystems.net #unreal-support,
* note that we require you to READ THE DOCUMENTATION and FAQ first!
*/
-789
View File
@@ -1,789 +0,0 @@
/*
* example.conf von Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* $Id$
*
* Arbeitet mit Unreal3.2 und darüber
*
* Dies hier ist die neue example.conf. Sie ähnelt irgendwie ein wenig C++ und sie
* soll sie jedenfalls einmal erläutert werden. Es ist ein wenig schwer, erstmals
* damit umzugehen, aber mit ein Wenig Übung und sorgfältigem Lesen sollte das zu
* verstehen sein.
*
* Diese Datei ist einfach in das Hauptverzeichnis des UnrealIRCD zu kopieren und in
* 'unrealircd.conf' umzubenennen.
*
* ZU BEACHTEN: Sämtliche Zeilen außer der mit einer '{' zu Beginn werden mit dem Zeichen
* ';' beendet, auch die Zeile mit '}'. (Beliebter Syntaxfehler!)
* Kommentar Zeilen werden vom IRCd ignoriert.
*
* BITTE LESE die doc/unreal32docs.html! Sie ist auch online erhältlich bei:
* www.vulnscan.org/UnrealIrcd/unreal32docs.html
* Diese Datei enthält zahlreiche ergänzende Informationen über jeden Block, Variablen usw.
* Übersetzung durch stylus740@smart-irc.de (bei irc.smart-irc.net)/
/* Kommentar Typen */
#Kommentar Typ 1 (Shell Typ)
// Kommentar Typ 2(C++ Stil)
/* Kommentar Typ 3 (C Stil) */
#Solche Zeilen vom Typ 1, 2 oder 3 werden vom ircd ignoriert.
/*
* UnrealIRCd arbeitet mit Modulen, die geladen werden, wenn sie benötigt werden.
* Man benötigt mindestens das commands Modul und ein cloaking Modul.
*/
/* FÜR *NIX (Unix, Linux, Xenix etc.), sind diese 2 Zeilen auszukommentieren: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* FÜR Windows sind diese 2 Zeilen auszukommentieren: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Man kann über eine 'include' Anweisung auch weitere Konfigurationsdateien einfügen.
* help.conf enthält sämtliche /helpop Texte. Die badwords.*.conf filtert alle badword
* Einträge für den Modus +G...
* Die spamfilter.conf enthält einige wirksame Regeln für aktuelle Trojaner.
* Falls man diese Dateien mit einfügen möchte:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* NEU: me {}
* ALT: M:Line
* me {} legt Name, Beschreibung und eindeutige Nummer ('numeric') für diesen Server fest.
* Syntax ist wie folgt:
* me {
* name "server.name";
* info "Server Beschreibung";
* numeric (server numeric*);
* };
* Falls der Server mit anderen gelinkt wird, darf muss die Nummer bei 'numeric' eindeutig
* sein, darf also von keinem anderen Server im Netzwerk verwendet werden.
*/
me
{
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
/*
* NEU: admin {}
* ALT: A:Line
* Admin liefert Informationen über den Server Administrator. Man kann
* so viele Zeilen unter 'admin {' angeben, wie man will.
* Syntax ist wie folgt:
* admin {
* "erste Zeile";
* "zweite Zeile";
* [usw]
* };
*/
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
/*
* NEU: class {}
* ALT: Y:line (alte Form war verwirrend)
* Hiermit werden Klassen und ihre Einstellungen festgelegt. Eine Klasse ist eine Gruppen
* Einstellung für Verbindungen. So kann man beispielsweise Server Verbindungen in einer
* eigenen Klasse behandeln, statt zusammen mit Clients.
* Syntax ist wie folgt:
* class (class name)
* {
* pingfreq (wie oft in Sekunden wird ein user/server angepingt);
* maxclients (wie viele Verbindungen sind in dieser Klasse möglich);
* sendq (maximale send Queue einer Verbindung);
* recvq (maximale Empfangs Queue einer Verbindung [Flood Kontrolle!]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Wieviele Servers können gleichzeitig gelinkt sein */
sendq 1000000;
connfreq 100; /* Wieviele Sekunden zwischen jedem Verbindungsversuch */
};
/*
* NEU: allow {}
* ALT: I:Line
* Hier wird festgelegt, welche Verbindungen erlaubt sind...
* Grundlegend kann man damit Clienten erlauben, zu verbinden und hat etwas Kontrolle
* Syntax ist wie folgt:
* allow {
* ip (ip Maske für allow);
* hostname (host Maske);
* class (Klasse, die zugewiesen wird [siehe class {}]);
* password "(password)"; (optional)
* maxperip (wie viele Verbindungen je IP); (optional)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Passworded allow line */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
/*
* NEU: allow channel {}
* ALT: chrestrict
* Erlaubt es Usern, einen Channel zu betreten...
* Ist wie eine Ausnahme von 'deny channel'.
* Syntax ist wie folgt:
* allow channel {
* channel "channel name";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* NEU: oper {}
* ALT: O:Line
* Legt einen IRC Operator fest
* IRC Operatoren halten den Server in Ordnung, warten ihn und halten die Verbindung
* zum Netzwerk.
* Syntax ist wie folgt:
* oper (login) {
* class (Klasse, die zugewiesen wird, falls anders als meine, wird eine neuee Klasse
* zugewiesen);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (Flags hier*);
* };
* ODER
* flags "alte Form von Flags, wie OAaRD";
* };
*/
/* Die Liste möglicher Oper Flags kann in doc/unreal32docs.html#operblock nachgelesen werden
* [WIRKLICH empfehlenswert, zu lesen!]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* NEU: listen {}
* ALT: P:Line
* Legt den Port fest, an dem der ircd 'lauscht', um Usern/Servern zu erlauben, eine
* Verbindung zum Server aufzunehmen.
* Syntax ist wie folgt:
* listen (ip number):(port number)
* {
* options {
* (options here);
* };
* };
* oder für ein einfaches listen:
* listen (ip):(port);
*
* ACHTUNG: für ipv6 ips (3ffe:b80:2:51d::2 etc), benutze listen [ip]:port;
*
* Das funktioniert ebenfalls.
*/
/* Options for listen:
OLD | NEW
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* ZU BEACHTEN BEI SSL PORTS: SSL Ports sind nicht standardisiert.
* Es wird oft gesagt, man solle den Port 994 benutzen, weil dies der
* offizielle SSL Port sei. Aber das erfordert root Rechte! Andererseits
* ist der Port 194 der offizielle Port und wann hat man je einen Ircd
* auf diesem Port laufen gesehen?
* Unsere Empfehlung ist, den Port 6697 für SSL zu benutzen, wie es auch
* bei vielen anderen Netzwerken gemacht wird und für z.B. StunTour benutzt wird.
* Man kann so viele SSL Ports öffnen, wie man will, aber wenn man (auch) den Port
* 6697 benutzt, hilft man mit, die Welt ein klein wenig zu standardisieren ;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* ACHTUNG: Wird der IRCd auf einer Shell mit verschiedenen IP's ausgeführt, kann
* die Fehlermeldung 'Address already in use' ('Adresse wird schon benutzt')
* in den Logfiles auftauchen und der IRCd startet nicht.
* Das bedeutet, dass man eine spezifische Adresse anstelle von '*' definieren
* MUSS, wie z.B.:
* listen 1.2.3.4:6667;
* Es sollte klar sein, dass die IP durch die zu ersetzen ist, die einem
* zugewiesen ist.
*/
/*
* NEU: link {}
* ALT: C/N:Lines
* Hiermit wird ein okay für eine Server Verbindung festgelegt.
* ACHTUNG: BEIDE SERVER MÜSSEN EINE LINK {} EINSTELLUNG HABEN, UM KORREKT ZU VERBINDEN!
* Syntax ist wie folgt:
* link (server name)
* {
* username (username, * funktioniert auch);
* hostname (ip Nummer/Hostmaske);
* bind-ip (Welche IP soll zum Verbinden benutzt werden, oder *);
* port (Port, zu dem verbunden werden soll);
* hub (Wenn dies ein Hub ist, funktioniert * , oder Servermasken);
* [oder leaf *;]
* password-connect "(Passwort zu senden)";
* password-receive "(Passwort, welches wir emfangen sollten)";
* class (Klasse, in die Server sollen);
* options {
* (options hier*);
* };
* /* Wird SSL benutzt, kann bestimmt werden, welche Verschlüsselung im SSL
* * Modus zu benutzen ist
* * Bei mehreren "openssl ciphers" sind die einzelnen Verschlüsselungen
* * durch ':' zu trennen
* */
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
options:
OLD | NEW
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
link hub.mynet.com
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Achtung: autoconnect sollte nicht benutzt werden, wenn man Services linkt */
autoconnect;
ssl;
zip;
};
};
/*
*
* NEU: ulines {}
* ALT: U:Line
* U-lines geben Servern mehr Möglichkeiten/Befehle, sie sollten NUR für Services/Stats
* gesetzt werden und NIEMALS für normale UnrealIRCd Server!
* Syntax ist wie folgt:
* ulines {
* (server to uline);
* (server to uline);
* [etc]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* NEU: drpass {}
* ALT: X:Line
* Hiermit werden die Passworte für /die und /restart festgelegt.
* Syntax ist wie folgt:
* drpass {
* restart "(Passwort für Restart)";
* die "(Passwort für die (die = 'sterben' = Abschaltung))";
* };
*/
drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};
/*
* NEU: log {} ALT: N/A Festlegung von Namen und Speicherort der Logfiles. Man kann
* beliebig viele festlegen.
*
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
*
* Syntax:
* log "log file"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Lösche das Logfile und starte ein neues, wenn 2MB erreicht wurden,
nichts festlegen, wenn man immer das gleiche Log will */
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* NEU: alias {}
* ALT: N/A
* Hier kann man Befels Aliasse festlegen, wie z.B. /nickserv, /chanserv usw.
* FLAGS: services, stats, normal
*
* Syntax:
* alias "name" {
* target "points to";
* type aliastype;
* };
*
* [ACHTUNG: Mann kann hier auch eine Datei mit vordefinierten Aliassen per include
* einfügen. Siehe auch: doc/unreal32docs.html Abschnitt 2.9]
*/
// Hiermit wird der Befehl /nickserv an den User NickServ geleitet, welcher zur Einstellung set::services-server server verbunden ist
/*alias NickServ {
target "NickServ";
type services;
};*/
// Soll der Befehl auf denselben Nick wie das der Befehl leiten, kann man den Nick auslassen
//alias ChanServ { type services; };
// leitet den /statserv Befehl an den User StatServ aus set::stats-server server
//alias StatServ { type stats; };
// leitet den /superbot Befehl an den User SuperBot
//alias SuperBot { type normal; };
/* Standard Aliasse */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* NEU: alias {}
* ALT: N/A
* Hier können Befehls Aliase, wie z.B.: /identify, /services, usw festgelegt werden.
*
* Syntax:
* alias "name" {
* format "format string" {
* target "zeigt auf";
* type aliastype;
* parameters "zu sendende Parameter";
* };
* type command;
* };
*/
/* Die nachfolgenden Zeilen eigens deshalb, um zu zeigen, dass trotz gleichem Namens die vorherige Anweisung
* völlig unterschiedlich in der Syntax ist, obwohl eine ähnliche Funktion unterstützt wird.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* Die alias::format Anweisung ist ein regulärer Ausdruck. Das erste Format passt auf den /identify Befehl,
* wenn das erste Zeichen ein # ist. Dann wird dies an den chanserv alias mit dem Parameters IDENTIFY
* %1- übergeben. Das zweite Format passt auf den /identify Befehl, wenn das erste Zeichen kein # ist. Danach
* wird der Befehl an den nickserv alias mit den Parameters IDENTIFY %1- geleitet.
*/
/* Die alias::format::parameters Scripting Sprachen ähnlich. %N (wobei N einen Nummer ist) repräsentiert einen
* Parameter, der an den Befehl (in diesem Fall /identify) zu senden ist. Wird %N- angegeben, bedeutet dies
* alle Parameter vom N bis zum letzten Parameter des Strings. Man kann ebenso %n angeben, welches durch den
* Nicknamen des users ersetzt wird.
*/
/* Standard Aliasse */
alias "services" {
format "^#" {
target "chanserv";
type services;
parameters "%1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "%1-";
};
type command;
};
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
/*
* NEU: tld {}
* ALT: T:Line
* Hiermit werden unterschiedliche motd und rules Dateien in Abhängigkeit
* von der Hostmaske des Clients eingestellt.
* Syntax ist wie folgt:
* tld {
* mask (ident@host);
* motd "(motd file)";
* rules "(rules file)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* zu beachten: Will man nur die default motd/rules Dateien (ircd.motd, ircd.rules)
* für jedermann benutzen, genügt es, den obigen Beispiel Block einfach zu löschen.
*/
/*
* NEU: ban nick {}
* ALT: Q:Line
* Bannt einen Nicknamen, so dass dieser nicht benutzt werden kann.
* Syntax ist wie folgt:
* ban nick {
* mask "(nick to ban)";
* reason "(reason)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reserviert für Services";
};
/*
* NEU: ban ip {}
* ALT: Z:Line
* Bannt eine IP, so dass diese nicht mehr zum Netzwerk verbinden kann.
* Syntax:
* ban ip { mask (ip Nummer/Hostmaske); reason "(Grund)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Server nicht mehr gelinkt";
};
/*
* NEU: ban server {}
* ALT: Server Q:Line
* Nimmt einem Server die Möglichkeit, zum Neztwerk zu verbinden.
* Wenn der Server zu einem anderen Server des Netzwerkes linkt, wird der
* lokale server die Verbindung zum Netzwerk trennen.
* Syntax ist wie folgt:
* ban server {
* mask "(Server Name)";
* reason "(angegebener Grund)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Hau ab hier.";
};
/*
* NEU: ban user {}
* ALT: K:Line
* Bewirkt, dass ein User mit einer bestimmten Maske nicht mehr zum Server verbinden kann.
* Syntax:
* ban user { mask (Hostmaske/ip Nummer); reason "(Grund)"; };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};
/*
* NEU: ban realname {}
* ALT: n:Line
* Verhindert, dass ein bestimmter Realname benutzt werden kann.
* Syntax:
* ban realname {
* mask "(Realname)";
* reason "(Grund)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* Sämtliche Banns dürfen durch zusätzliche Einträge wiederholt werden!
*
* NEU: except ban {}
* ALT: E:Line
* Diese Maske ist von Banns ausgenommen.
* Syntax:
* except ban { mask (ident@host); };
* except ban {} kann so oft angegeben werden, wie man für verschiedene Hosts will.
*/
except ban {
/* don't ban stskeeps */
mask *stskeeps@212.*;
};
/*
* NEU: deny dcc {}
* ALT: dccdeny.conf
* Mit diesem Block können dcc send's geblockt werden... Gut, um Virten aufzuhalten.
* Syntax:
* deny dcc
* {
* filename "zu sperrende Datei(ie, *exe)";
* reason "Grund";
* };
*/
deny dcc {
filename "*sub7*";
reason "Möglicherweise Sub7 Virus";
};
/*
* NEU: deny channel {}
* ALT: N/A (NEW)
* Verhindert, dass angegebene Channels benutzt werden können.
* Syntax:
* deny channel {
* channel "(channel)";
* reason "Grund";
* };
*/
deny channel {
channel "*warez*";
reason "Warez sind illegal";
};
/*
* NEU: vhost {}
* ALT: Vhost.conf file
* Setzt eine Fake IP für Nicht-Opers, oder opers, die zu bequem für /sethost sind.... :P
* Syntax:
* vhost {
* vhost (vhost.com);
* from {
* userhost (ident@host um die Nutzung zu gestatten);
* };
* login (Loginname);
* password (Passwort);
* };
* um den vhost zu nutzen, mache /vhost (login) (password) im IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Man kann hier weitere Config Dateien einfügen */
/* include "klines.conf"; */
/* Network configuration */
set {
network-name "ROXnet";
default-server "irc.roxnet.org";
services-server "services.roxnet.org";
stats-server "stats.roxnet.org";
help-channel "#ROXnet";
hiddenhost-prefix "rox";
/* prefix-quit "no"; */
/* Cloak keys müssen angegeben sein und sie müssen die selben auf allen Servern
* im Netzwerk sein. Sie werden zur Generierung der maskierten Hosts verwendet
* und sie sollten geheim gehalten werden.
* Die Keys sollten 3 zufällige Strings von 5-100 Zeichen Länge sein (10-20 Zeichen
* (sind ganz ok) und müssen aus Kleinbuchstaben(a-z), Großbuchstaben (A-Z) und
* Ziffern (0-9) bestehen [wie im ersten Key Beispiel].
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"und noch einer";
"und noch einer";
};
/* on-oper Host */
hosts {
local "locop.roxnet.org";
global "ircop.roxnet.org";
coadmin "coadmin.roxnet.org";
admin "admin.roxnet.org";
servicesadmin "csops.roxnet.org";
netadmin "netadmin.roxnet.org";
host-on-oper-up "no";
};
};
/* Server spezifische Configuration */
set {
kline-address "setze.diese.email";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
dns {
nameserver 127.0.0.1;
timeout 2s;
retries 2;
};
options {
hide-ulines;
/* Man kann hier ident checking aktivieren, wenn man will */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Die Mindestzeit, die ein User verbunden sein muss, bevor er eine QUIT Meldung
* senden darf (Das wird offentlich helfen, Spam zu verhindern */
anti-spam-quit-message-time 10s;
/* Macht die Meldung statisch, die in allen Quit Meldungen angezeigt wird.
Somit sind keine individuellen Quts auf dem lokalen Server mehr erlaubt */
/* static-quit "Client quit"; */
/* Man kann auch sämtliche Part Meldungen blocken, indem man dies auskommentiert
* und 'yes' sagt oder einen anderen Text angibt (z.B. "Bye bye!")
/* static-part yes; */
/* Hiermit kann man bestimmte stats auf ausschliesslich Opers beschränken. Für
* alle Stats kann man * benutzen. Wenn man es weglässt, können alle User alle
* Stats abfragen. Eine vollständige Liste erhält man mit dem Befehl '/stats'.
* Manche Admins entfernen 'kGs' und erlauben so normalen Usern die Anzeige von
* klines, glines and shuns.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttling: Dieses Beispiel setzte ein Limit von 3 Verbindungen je 60s (pro Host). */
throttle {
connections 3;
period 60s;
};
/* Anti Flood Schutz */
anti-flood {
nick-flood 3:60; /* 3 Nickänderungen pro 60 Sekunden (Default) */
};
/* Spam Filter */
spamfilter {
ban-time 1d; /* Default Dauer eines *line Banns durch Spamfilter */
ban-reason "Spam/Belästigung"; /* default Grund */
virus-help-channel "#help"; /* Channel, der für die 'viruschan' action benutzt wird*/
/* except "#help"; Channel, der von Filtern ausgenommen wird */
};
};
/*
* Probleme? Weitere Hilfe nötig?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- enthält 80% deiner Fragen - Wetten Dass?
* 3) Hat man dann noch Probleme, kann man den Chat bei irc.ircsystems.net
* #unreal-support aufsuchen. Dabei ist zu beachten, dass wir voraussetzen,
* dass zuvor DIE DOKU GELESEN WURDE (genauso, wie die FAQ!)!
*/
-793
View File
@@ -1,793 +0,0 @@
/*
* example.conf par Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* $Id$
* Traduction française par babass (babass@unrealircd.org).
*
* Fonctionne pour Unreal3.2 et supérieur
*
* Okay les mecs. Voici la nouvelle version de l'example.conf. Cela ressemble plus à du C++.
* Peu importe, il est temps de se lancer. Il est difficile de l'attaquer pour la première fois, mais
* avec un peu d'expérience et en lisant vous comprendrez.
*
* Copiez juste ce fichier dans votre répertoire unrealircd principal et appellez le 'unrealircd.conf'.
*
* NOTE: Toutes les lignes, excepté la ligne d'ouverture { , les lignes finissant par un ;,
* et celle de fermeture } incluses.
* L'IRCd ignorera les lignes commentées.
*
* LISEZ S'IL VOUS PLAIT doc/unreal32docs.fr.html! La version en ligne est aussi disponible à :
* www.vulnscan.org/UnrealIrcd/unreal32docs.fr.html
* Elle contient beaucoup d'informations à propos du fichier de configuration : fournis des informations
* à propos de chaque blocs, variable, etc..
*/
/* Type de commentaires */
#Commentaire type 1 (type Shell)
// Commentaire type 2 (style C++)
/* Commentaire type 3 (style C) */
#Ces lignes sont ignorées par l'ircd.
/*
* UnrealIRCd supportes des modules, en charger certains est requis.
* Vous aurez besoin au moins du module commands et du module cloaking.
*/
/* POUR *NIX, décommentez les 2 lignes suivantes : */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* POUR Windows, décommentez les 2 lignes suivantes : */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Vous pouvez également inclure d'autres fichiers de configuration.
* help.conf contient tous le texte de /helpop. Les fichiers badwords.*.conf
* contiennent tous les badwords pour le mode +G...
* spamfilter.conf contient quelques bonnes règles pour les trojans courrants.
* Vous voudrez probablement les inclure:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* ACTUEL : me {}
* ANCIEN : M:Line
* me {} definit le nom, la description et le numeric du serveur unreal
* pour ce serveur. La syntaxe est la suivante :
* me {
* name "nom.du.serveur";
* info "Description du Serveur";
* numeric (numeric* serveur);
* };
* En cas de link, ce numeric ne peut être utilisé pour aucun autre serveur du réseau.
*/
me
{
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
/*
* ACTUEL : admin {}
* ANCIEN : A:Line
* Admin donne des informations sur les server admins.
* Vous pouvez mettre autant de lignes que vous voulez après admin {.
* La syntaxe est la suivante :
* admin {
* "première ligne";
* "deuxième ligne";
* [etc]
* };
*/
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
/*
* ACTUEL : class {}
* ANCIEN : Y:line (l'ancien était déroutant)
* Défini les réglages pour les classes. Une classe est un groupe de réglages pour
* des connexions. Par exemple, les connexions serveurs, au lieu de passer par une classe
* client, vous utilisez directement une classe serveur. La syntaxe est la suivante :
* class (nom de la classe)
* {
* pingfreq (fréquence des pings utilisateurs/serveurs en secondes);
* maxclients (combien de connexions pour cette classe);
* sendq (file d'attente maximum pour l'envoie depuis une connexion);
* recvq (file d'attente maximum pour la réception depuis une connexion [contrôle du flood]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Nombre maximum de serveurs pouvant être reliés en même temps */
sendq 1000000;
connfreq 100; /* Combien de secondes entre chaque tentatives de connexions */
};
/*
* ACTUEL : allow {}
* ANCIEN : I:Line
* Défini les autorisations de connexions...
* Principalement pour les clients, cela leur permet de se connecter, vous pouvez donc avoir un certain
* contrôle et/ou mettre un mot de passe.
* La syntaxe est la suivante :
* allow {
* ip (ip mask à autoriser);
* hostname (host mask);
* class (classe à laquelle les renvoyer [voir class {}]);
* password "(mot de passe)"; (optionnel)
* maxperip (nombre de connexions par ip); (optionnel)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* connexion autorisée avec mot de passe */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
/*
* ACTUEL : allow channel {}
* ANCIEN : chrestrict
* Autorise un utilisateur à joindre un salon...
* comme une exception au deny channel.
* Syntaxe :
* allow channel {
* channel "nom du salon";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* ACTUEL : oper {}
* ANCIEN : O:Line
* Défini un IRC Operateur
* Les IRC operateurs sont là pour préserver la qualité du serveur mais aussi d'en assurer
* la maintenance et sa connexion au réseau.
* La syntaxe est la suivante :
* oper (login) {
* class (classe à laquelle les associer, si différent de moi, déplacez les vers une
* nouvelle classe);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (flags ici*);
* };
* OU
* flags "ancien type de flags, comme OAaRD";
* };
*/
/* Pour avoir la liste des flags oper, voir doc/unreal32docs.fr.html#operblock
* [lecture HAUTEMENT recommendée]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* ACTUEL : listen {}
* ANCIEN : P:Line
* Défini un port à rattacher à l'ircd, pour autoriser
* des utilisateurs/serveurs à se connecter au serveur.
* La syntaxe est la suivante :
* listen (ip):(port)
* {
* options {
* (options ici);
* };
* };
* ou pour une écoute
* indifférente : listen (ip):(port);
*
* NOTICE : pour les ips ipv6 (3ffe:b80:2:51d::2 etc), utilisez listen [ip]:port;
*
* Cela fonctionne également.
*/
/* Options de listen:
ANCIEN | ACTUEL
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* NOTE SUR LES PORTS SSL: les ports SSL sont plutôt non standardisés,
* A côté des nombreux ports high-SSL, certaines personnes disent que vous devez
* l'utiliser sur le port 994 car c'est le port SSL officiel.. mais cela
* requière d'être root! D'un autre coté, le port 194 est le port irc officiel et
* avez vous déjà vu un ircd fonctionner sur celui-ci ?
* Donc, notre suggestion est d'utiliser le port 6697 pour le SSL, ceci est utilisé par
* assez bien de réseaux et est reconnu par exemple par StunTour.
* Vous êtes libre d'ouvrir autant de ports SSL que vous le désirez mais
* en utilisant (au moins) 6697 vous aidez le monde à standardiser un peu a bit ;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* NOTE: Si vous êtes sur un shell shell avec de multiples IP's vous êtes
* susceptibles d'avoir l'erreur 'Address already in use' (adresse déjà utilisée)
* dans vos logs et l'ircd refusera de démarer.
* Cela signifie que vous devrez utiliser une IP spécifique au lieu de '*',
* Donc par exemple :
* listen 1.2.3.4:6667;
* Evidemment, remplacez l'IP par celle qui vous a été assignée.
*/
/*
* ACTUEL : link {}
* ANCIEN : C/N:Lines
* Défini un accord pour la connexion d'un serveur.
* NOTE : CHACUN DES SERVEURS NECESSITE UN PARAMETRE LINK {} POUR SE CONNECTER CORRECTEMENT !
* La syntaxe est la suivante :
* link (nom du serveur)
* {
* username (username, * fonctionne aussi);
* hostname (ip/hostmask);
* bind-ip (Quelle IP à laquelle se relier lors de la connexion, ou *);
* port (port auquel se connecter, si il y en a un);
* hub (Si c'est un a hub, * fonctionne, ou les servermasks qu'il doit porter);
* [ou leaf *;]
* password-connect "(mot de passe à envoyer)";
* password-receive "(mot de passe que l'on doit recevoir)";
* class (classe à affecter aux serveurs);
* options {
* (options ici*);
* };
* /* Si vous utilisez le SSL, vous pouvez choisir quel cryptage (cipher) utiliser dans le mode SSL
* * Retrouvez une liste "crytages openssl", séparez les cryptages par des :
* */
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
options:
ANCIEN | ACTUEL
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
link hub.mynet.com
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Note : Vous ne devriez pas utiliser autoconnect lorsque vous linkez des services */
autoconnect;
ssl;
zip;
};
};
/*
*
* ACTUEL : ulines {}
* ANCIEN : U:Line
* Les U-lines donnent aux serveurs plus de pouvoir/commandes, ceci doit UNIQUEMENT être appliqué
* aux serveurs de services/stats et JAMAIS pour des servuers UnrealIRCd normaux !
* La syntaxe est la suivante :
* ulines {
* (serveur auquel appliquer la uline);
* (serveur auquel appliquer la uline);
* [etc]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* ACTUEL : drpass {}
* ANCIEN : X:Line
* Défini les mots de passe pour les commandes /die et /restart.
* La syntaxe est la suivante :
* drpass {
* restart "(mot de passe pour relancer)";
* die "(mot de passe pour arrêter)";
* };
*/
drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};
/*
* ACTUEL : log {}
* ANCIEN : N/A
* Dit à l'ircd où et quoi loguer. Vous pouvez en avoir
* autant que vous le souhaitez.
*
* FLAGS : errors, kills, tkl, connects, server-connects, kline, oper
*
* Syntaxe :
* log "fichier de log"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Efface le fichier de log et commence un nouveau lorsqu'il dépasse 2MB,
retirez ceci pour toujour utiliser le même fichier de log */
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* ACTUEL : alias {}
* ANCIEN : N/A
* Ceci vous permet de définir des alias pour les commandes telles que /nickserv, /chanserv etc
* FLAGS: services, stats, normal
*
* Syntaxe :
* alias "nom" {
* target "pointe vers";
* type typedalias;
* };
*
* [NOTE : Vous pouvez également inclure un fichier d'alias prédéfinis ici, voir
* doc/unreal32docs.fr.html section 2.9]
*/
// Ceci fait pointer la commande /nickserv vers l'utilisateur NickServ qui est connecté au serveur set::services-server
/*alias NickServ {
target "NickServ";
type services;
};*/
// Si vous voulez que la commande pointe vers le même nom que la commande, vous pouvez ignorez l'entré du nom
//alias ChanServ { type services; };
// Faire pointer la commande /statserv vers l'utilisateur StatServ sur le serveur set::stats-name
//alias StatServ { type stats; };
// Faire pointer la commande /superbot vers l'utilisateur SuperBot
//alias SuperBot { type normal; };
/* Alias Standards */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* ACTUEL : alias {}
* ANCIEN : N/A
* Ceci vous permet de définir des alias pour les commandes telles que /identify, /services, etc
*
* Syntaxe :
* alias "nom" {
* format "format string" {
* target "pointer vers";
* type typedalias;
* parameters "paramètres à envoyer";
* };
* type command;
* };
*/
/* Ceci est expliqué séparément car même si elle a le même nom que la directive précédente, elle est très
* différente dans sa syntaxe, bien que elle a une fonction similaire et dépend des alias standards pour
* fonctionner.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* La direcitive alias::format est une expression régulière. Le premier format correspond à la commande
* /identify command lorsque le premier caractère est un #. Cela renvois donc à l'alias chanserv avec
* les paramètres IDENTIFY %1-. Le second format correspond à la commanden /identify lorsque le premier
* caractère n'est pas un #. Cela envoies alors la commande à l'alias nickserv avec les paramètres
* IDENTIFY %1-.
*/
/* L'alias::format::parameters est similaire aux languages de programmation. %N (où N est un nombre)
* représente un paramètre envoyé à la commande (dans ce cas /identify). Si vous spécifiez %N- cela
* signifie que tous les paramètres depuis N jusqu'au dernier paramètre dans la chaîne de caractères.
* Vous pouvez également spécifier %n qui est remplacé par le pseudo de l'utilisateur.
*/
/* Alias Standards */
alias "services" {
format "^#" {
target "chanserv";
type services;
parameters "%1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "%1-";
};
type command;
};
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
/*
* ACTUEL : tld {}
* ANCIEN : T:Line
* Ceci applique une motd et des fichiers de règles différents
* en fonction de l'hostmask des clients.
* La syntaxe est la suivante :
* tld {
* mask (ident@host);
* motd "(motd file)";
* rules "(rules file)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* note : vous pouvez juste effacer le bloc d'exemple ci-dessus,
* en quel cas les fichiers motd/règles par défaut (ircd.motd, ircd.rules)
* seront utilisés pour tout le monde.
*/
/*
* ACTUEL : ban nick {}
* ANCIEN : Q:Line
* Banni un pseudo, il ne peut donc être utilisé.
* La syntaxe est la suivante :
* ban nick {
* mask "(pseudo à bannir)";
* reason "(raison)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reservé aux Services";
};
/*
* ACTUEL : ban ip {}
* ANCIEN : Z:Line
* Empêche une ip de se connecter au réseau.
* Syntaxe :
* ban ip { mask (ip/hostmask); reason "(raison)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Serveur délinké";
};
/*
* ACTUEL : ban server {}
* ANCIEN : Server Q:Line
* Empêche un serveur de se connecter au réseau.
* Si le serveur est linké à un serveur distant, le serveur local
* sera déconnecté du réseau.
* La syntaxe est la suivante :
* ban server {
* mask "(nom du serveur)";
* reason "(raison à donner)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Va-t-en d'ici.";
};
/*
* ACTUEL : ban user {}
* ANCIEN : K:Line
* Fait qu'un utilisateur avec un certain masque ne peut se connecter
* à votre serveur.
* Syntaxe :
* ban user { mask (hostmask/ip); reason "(raison)"; };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};
/*
* ACTUEL : ban realname {}
* ANCIEN : n:Line
* Ceci empêche un certain realname d'être utilisé.
* Syntaxe :
* ban realname {
* mask "(realname)";
* reason "(raison)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* NOTE POUR TOUS LES BANS, ils peuvent être répetés pour ajouter des entrées !
*
* ACTUEL : except ban {}
* ANCIEN : E:Line
* Fait que vous ne pouvez être banni.
* Syntaxe :
* except ban { mask (ident@host); };
* Répétez l'except ban {} autant de fois
* que vous voulez pour différents hosts.
*/
except ban {
/* ne banni pas stskeeps */
mask *stskeeps@212.*;
};
/*
* ACTUEL : deny dcc {}
* ANCIEN : dccdeny.conf
* Utilisez ceci pour bloquer l'envoie de dcc... stope
* mieux les virus.
* Syntaxe :
* deny dcc
* {
* filename "fichier à bloquer (ex : *exe)";
* reason "raison";
* };
*/
deny dcc {
filename "*sub7*";
reason "Possible Sub7 Virus";
};
/*
* ACTUEL : deny channel {}
* ANCIEN : N/A (NEW)
* Ceci empêche des salons d'être joins.
* Syntax:
* deny channel {
* channel "(salon)";
* reason "raison";
* };
*/
deny channel {
channel "*warez*";
reason "Warez is illegal";
};
/*
* ACTUEL : vhost {}
* ANCIEN : Vhost.conf file
* Applique une ip factice aux non-opers, ou aux
* opers trop flemmards pour utiliser /sethost :P
* Syntaxe :
* vhost {
* vhost (vhost.com);
* from {
* userhost (ident@host à autoriser à utiliser);
* };
* login (login);
* password (mot de passe);
* };
* ensuite pour utiliser ce vhost, tapez /vhost (login) (mot de passe) sur l'IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Vous pouvez utiliser d'autres fichiers de configuration */
/* include "klines.conf"; */
/* Configuration du réseau */
set {
network-name "ROXnet";
default-server "irc.roxnet.org";
services-server "services.roxnet.org";
stats-server "stats.roxnet.org";
help-channel "#ROXnet";
hiddenhost-prefix "rox";
/* prefix-quit "no"; */
/* Les Cloak keys doivent être les mêmes sur tous les serveurs du réseau.
* Ils sont utilisés pour générer des hosts masqués et doivent être gardés secrets.
* Les clés doivent être 3 chaînes de 5-100 caractères melangés.
* (10-20 caractères est parfait) et elles doivent être constituées de minuscules (a-z),
* majuscules (A-Z) et chiffres (0-9) [voir le premier exemple de clé].
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"et une autre";
"et un autre";
};
/* host à l'identification oper */
hosts {
local "locop.roxnet.org";
global "ircop.roxnet.org";
coadmin "coadmin.roxnet.org";
admin "admin.roxnet.org";
servicesadmin "csops.roxnet.org";
netadmin "netadmin.roxnet.org";
host-on-oper-up "no";
};
};
/* Configuration spécifique d'un serveur */
set {
kline-address "mettre.cet.email";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
dns {
nameserver 127.0.0.1;
timeout 2s;
retries 2;
};
options {
hide-ulines;
/* Vous pouvez enclencher la vérification des idents si vous voulez */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Durée maximum pendant laquelle un utilisateur doit rester connecté avant de pouvoir utiliser
* un message de QUIT.
* Ceci devrait aider à stoper le spam */
anti-spam-quit-message-time 10s;
/* Applique le message de static-quit à tous les quits - cela signifie qu'aucun
message de quit personalisé ne sera autorisé sur le serveur local */
/* static-quit "Client quit"; */
/* Vous pouvez également bloquer toutes les raisons de part en décommentant ceci et en disant
* 'yes', ou spécifiez un autre texte (ex: "Bye bye!") pour qu'il soit toujours utilisé.. */
/* static-part yes; */
/* Vous permet de restreindre certaines stats aux opers, utilisez * pour toutes les stats,
* enlevez le pour autoriser les utilisateurs à voir toutes les stats. Tapez '/stats' pour
* une liste complète.
* Certains admins pourront vouloir bloquer 'kGs' pour que les utilisateurs normaux ne puissent
* lister les klines, glines et shuns.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttling: cet exemple applique une limite de 3 connexions en 60s (par host). */
throttle {
connections 3;
period 60s;
};
/* Protection Anti flood */
anti-flood {
nick-flood 3:60; /* 3 changements de pseudo en 60 secondes (la valeur par défaut) */
};
/* Filtre anti-spam */
spamfilter {
ban-time 1d; /* durée par défaut d'un ban *line appliqué par le spamfilter */
ban-reason "Spam/Advertising"; /* raison par défaut */
virus-help-channel "#help"; /* salon à utiliser pour l'action 'viruschan' */
/* excepté "#help"; salon à exempter de filtrage */
};
};
/*
* Problèmes ou besoin de plus d'aide ?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.fr.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- contient 80% de vos questions !
* 3) Si vous avez encore des problèmes vous pouvez aller sur irc.ircsystems.net #unreal-support,
* notez que vous devez avoir LU LA DOCUMENTATION ET LA FAQ d'abord !
*/
-812
View File
@@ -1,812 +0,0 @@
/*
* example.conf Daniel Hawton avagy Osiris jóvoltából (osiris@unrealircd.org).
* A magyar fordítást AngryWolf <angrywolf@flashmail.com> készítette.
* $Id$
*
* Felhasználható Unreal3.2 és későbbi verziókhoz
*
* Oké, emberek! Ez az új példa konfiguráció. A kinézete nagyon hasonló
* a C++-hoz, olyasformán. Mindenesetre itt az ideje végigmennünk rajta. Eleinte
* nehéz nekilendülni, de kis gyakorlással és olvasgatással meg fogjuk érteni.
*
* Csak másoljuk be ezt a fájlt a fő unrealircd könyvtárunkba, és nevezzük
* 'unrealircd.conf'-nak.
*
* MEGJEGYZÉS: Minden sor, kivéve a nyitó { sort, ;-vel végződik, beleértve
* a záró } sort is. Az IRCd figyelmen kívül hagyja a megjegyzéssorokat.
*
* KÉRLEK, OLVASD EL A doc/unreal32docs.html-T! Az online verzió is elérhető
* a www.vulnscan.org/UnrealIrcd/unreal32docs.html címen.
* Rengeteg információt tartalmaz a konfigurációs fájlról: tájékoztatást ad
* minden blokkról, változóról stb.
*/
/* Megjegyzések típusai */
#1. Megjegyzéstípus (Shell típusú)
// 2. Megjegyzéstípus (C++ stílusú)
/* 3. Megjegyzéstípus (C stílusú) */
#ezeket a sorokat az ircd figyelmen kívül hagyja.
/*
* Az UnrealIRCd támogat modulokat, néhányuk betöltése kötelező is.
* Legalább a parancsokat biztosító és egy álcázó modulra lesz szükségünk.
*/
/* *NIX-BAN vegyük ki a megjegyzésből a következő két sort: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* Windows-BAN vegyük ki a megjegyzésből a következő két sort: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Azt is megtehetjük, hogy befűzünk más konfigurációs fájlokat.
* A help.conf tartalmazza az összes /helpop szöveget. A badwords.*.conf
* fájlok tartalmazzák az összes csúnyaszó bejegyzést a +G módhoz...
* A spamfilter.conf néhány jó szabályt a jelenlegi trójai vírusokra.
* Valószínűleg be akarjuk tölteni őket:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* ÚJ: me {}
* RÉGI: M:Line
* A me {} határozza meg ennek a szervernek a nevét, a leírását és az unrealbeli
* szerverazonosító-számát. A szintaktikája a következő:
* me {
* name "szerver.név";
* info "A szerver leírása";
* numeric (szerverazonosító*);
* };
* Ha linkelünk, ezt az azonosítószámot nem használhatja semmilyen más szerver
* a hálózaton.
*/
me
{
name "irc.valaminet.com";
info "ValamiNet Szerver";
numeric 1;
};
/*
* ÚJ: admin {}
* RÉGI: A:Line
* Ez a blokk információt ad a szerver adminisztrátorairól. Annyi sort tehetünk
* az admin { alá, amennyit kívánunk.
* A szintaktikája a következő:
* admin {
* "első sor";
* "második sor";
* [stb]
* };
*/
admin {
"Bob Smith";
"bob";
"szeleskorben@hasznalt.nev";
};
/*
* ÚJ: class {}
* RÉGI: Y:line (a régi zavarbaejtő volt)
* Ezek az osztályokat állítják be. Az osztályok a kapcsolatok egy csoportjának
* beállításai. Például a szerver kapcsolatokat, ahelyett, hogy egy kliens
* osztályába kerülnének, beleirányítjuk a szerverek osztályába. Szintaktika:
* class (osztálynév)
* {
* pingfreq (hány másodpercenként pingeljünk egy felhasználót/szervert);
* maxclients (mennyi kapcsolat lehet ebben az osztályban);
* sendq (egy kapcsolat küldési sorának maximális mérete);
* recvq (egy kapcsolat fogadási sorának maximális mérete [árvízvédelem]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Legfeljebb ennyi szervert linkelhetünk egyszerre */
sendq 1000000;
connfreq 100; /* Ennyi másodpercet várjon, mielőtt újra kapcsolódik */
};
/*
* ÚJ: allow {}
* RÉGI: I:Line
* Ez a kapcsolatok engedélyezését határozza meg...
* Alapvetően kliensekre használjuk; megengedi nekik, hogy kapcsolódjanak, így
* némileg van lehetőség a szabályozásra, valamint jelszót is beállíthatunk.
* A szintaktika a következő:
* allow {
* ip (ip maszk az engedélyezéshez);
* hostname (gazdanév maszk);
* class (osztály, ahová küldjük őket [lásd: class {}]);
* password "(jelszó)"; (nem kötelező)
* maxperip (mennyi kapcsolatot engedjünk ip címenként); (nem kötelező)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Jelszavas allow blokk */
allow {
ip *@255.255.255.255;
hostname *@*.jelszavas.csunya.emberkek;
class clients;
password "V4lami";
maxperip 1;
};
/*
* ÚJ: allow channel {}
* RÉGI: chrestrict
* Megengedi egy felhasználónak, hogy belépjen egy csatornára...
* mint egy csatornáról letiltás alóli kivétel.
* Szintaktika:
* allow channel {
* channel "csatornanév";
* };
*/
allow channel {
channel "#AWarezSzívás";
};
/*
* ÚJ: oper {}
* RÉGI: O:Line
* Definiál egy IRC operátort
* Az IRC operátorok feladata, hogy épségben tartsák a szervert; rendszerint
* ügyelnek a karbantartottságára és arra, hogy kapcsolatban maradjon
* a hálózattal. A szintaktika a következő:
* oper (bejelentkezőnév) {
* class (osztály, ahová berakjuk őket; ha eddig más osztályban voltak,
* átteszi őket ebbe az új osztályba);
* from {
* userhost (azonosító@gazdanév);
* userhost (azonosító@gazdanév);
* };
* flags
* {
* (flagek ide*);
* };
* VAGY
* flags "régi típusú flagek, mint pl. OAaRD";
* };
*/
/* Az oper flagek listáját lásd a doc/unreal32docs.hu.html#operblock szekcióban
* [ERŐSEN ajánlott elolvasni]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* ÚJ: listen {}
* RÉGI: P:Line
* Meghatároz egy olyan portot, amelyet az ircd megnyit, és engedélyt ad
* a felhasználóknak/szervereknek, hogy kapcsolódjanak a szerverre.
* A szintaktika a következő:
* listen (ip cím):(portszám)
* {
* options {
* (opciók ide);
* };
* };
* vagy egy síma portnyitáshoz:
* listen (ip):(port);
*
* MEGJEGYZÉS: ipv6-os ip-kre (3ffe:b80:2:51d::2 stb.) használjuk a
* listen [ip]:port;
* szintaktikát. Az is működik.
*/
/* Opciók a listenhez:
RÉGI | ÚJ
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* MEGJEGYZÉS SSL PORTOKRA: az SSL portok eléggé szabványosítatlanok, emellett
* sok a magas SSL port. Néhányan azt mondják, a 994-en célszerű futtatni,
* mert az a hivatalos SSL port... de a rendszergazdát igényel! Ezenkívül,
* a 194 a hivatalos irc port, de láttunk valaha egy ircd-t azon futni?
* Így mi a javaslatunk az, hogy használjuk a 6697-et SSL-hez, ezt használja
* jónéhány hálózat, és ezt ismeri fel például a StunTour is.
* Szabadon megnyithatunk annyi SSL portot, amennyit akarunk, de ha a 6697-et
* (is) használjuk, kicsit segítjük a világot szabványosodni ;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* MEGJEGYZÉS: Ha egy több IP címes IRCd shellen vagyunk, előfordulhat, hogy
* "Address already in use" ("A cím már használatban van") hibaüzeneteket
* találunk a naplóban, és az ircd nem indul el. Ez azt jelenti, hogy
* az ircd-nek egy meghatározott IP címre KELL bindelnie a "*" helyett
* vagyis például így:
* listen 1.2.3.4:6667;
* Természetesen cseréljük ki az IP címet arra az IP-re, amelyet nekünk
* osztottak ki.
*/
/*
* ÚJ: link {}
* RÉGI: C/N:Line-ok
* Ez a blokk "igen"-t mond egy szerver kapcsolódására.
* MEGJEGYZÉS: MINDKÉRT SZERVEREN KELL EGY LINK {} BEÁLLÍTÁS A HELYES
* KAPCSOLÓDÁSHOZ!
* A szintaktika a következő:
* link (szervernév)
* {
* username (felhasználónév, * is működik);
* hostname (ip cím/gazdanév maszk);
* bind-ip (amilyen IP címre bindeljen kapcsolódáskor, vagy *);
* port (port, ahová kapcsolódjon, ha van);
* hub (Ha ez egy hub; * működik, vagy szervermaszkokat is beírhatunk);
* [vagy leaf *;]
* password-connect "(elküldendő jelszó)";
* password-receive "(fogadandó jelszó)";
* class (osztály, ahová betesszük a szervereket);
* options {
* (opciók ide*);
* };
* /* Ha SSL-t használunk, kiválaszthatjuk, milyen rejtjelező algoritmusok
* * legyenek használatban SSL módban. Listát kapunk az "openssl ciphers"
* * paranccsal. Az egyes rejtjeleket :-tal válasszuk el.
* */
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
opciók:
RÉGI | ÚJ
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
link hub.sajatnet.com
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Megjegyzés: szolgáltatások linkelésekor célszerű nem
* használni az autoconnect opciót.
*/
autoconnect;
ssl;
zip;
};
};
/*
*
* ÚJ: ulines {}
* RÉGI: U:Line
* Az U-line-ok több hatalmat/parancsot adnak a szervereknek. CSAK
* szolgáltatásokat és statisztikákat nyújtó szerverekre érdemes beállítani,
* és SOHA rendes UnrealIRCd szerverekre!
* A szintaktika a következő:
* ulines {
* (uline-ra teendő szerver);
* (uline-ra teendő szerver);
* [stb.]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* ÚJ: drpass {}
* RÉGI: X:Line
* Meghatározza a jelszavakat a /die és /restart parancsokhoz.
* A szintaktika a következő:
* drpass {
* restart "(újraindítás jelszava)";
* die "(leállítás jelszava)";
* };
*/
drpass {
restart "Imádok-újraindítani";
die "Halj-te-buta";
};
/*
* ÚJ: log {}
* RÉGI: N/A
* Megmondja az ircd-nek, hová és mit naplózzon. Annyi naplófájlunk lehet,
* amennyit szeretnénk.
*
* FLAGEK: errors, kills, tkl, connects, server-connects, kline, oper
*
* Szintaktika:
* log "naplófájl"
* {
* flags
* {
* (flag);
* (flag);
* [stb.]
* };
* };
*/
log "ircd.log" {
/* Törölje a naplófájlt, és kezdjen egy újat, ha eléri a 2 MB-ot;
* hagyjuk ki ezt a beállításból, ha mindig ugyanazt a naplót
* szeretnénk használni
*/
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* ÚJ: alias {}
* RÉGI: N/A
* Ezzel olyan álparancsokat készíthetünk, mint a /nickserv, /chanserv stb.
* FLAGEK: services (szolgáltatás), stats (statisztika), normal (közönséges
* felhasználó)
*
* Szintaxis:
* alias "név" {
* target "ahová mutasson";
* type álparancstípus;
* };
*
* [MEGJEGYZÉS: Beilleszthetünk ide egy előre beállított álparancsfájlt is,
* lásd: doc/unreal32docs.html, 2.9-es szekció]
*/
// Ez a /nickserv parancsot a NickServ felhasználóra irányítja, aki a set::services-server szerverre kapcsolódott.
/*alias NickServ {
target "NickServ";
type services;
};*/
// Ha a parancsot ugyanarra a nicknévre szeretnénk irányítani, ami a parancs neve, kihagyhatjuk a nick bejegyzést.
//alias ChanServ { type services; };
// A /statserv parancsot a set::stats-server szerveren lévő StatServ felhasználóra irányítja
//alias StatServ { type stats; };
// A /superbot parancsot a SuperBot felhasználóra irányítja.
//alias SuperBot { type normal; };
/* Szabványos álparancsok */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* ÚJ: alias {}
* RÉGI: N/A
* Ezzel olyan álparancsokat készíthetünk, mint az /identify, /services stb.
*
* Szintaktika:
* alias "név" {
* format "formátumsztring" {
* target "ahova mutasson";
* type álparancstípus;
* parameters "küldendő paraméterek";
* };
* type command;
* };
*/
/* Ezt azért mutatjuk külön, mert még ha ugyanaz is a neve, mint az előző direktívának, a szintaktikája nagyon
* más, habár hasonló feladatot lát el, és a szabványosok álparancsokra van szüksége, hogy működjön.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* Az alias::format direktíva egy reguláris kifejezés. Az első formátum akkor illeszkedik az /identify parancsra,
* ha az első karakter egy #. Azután elküldi ezt a chanserv álparancshoz az IDENTIFY %1- paraméterekkel.
* A második formátum akkor illeszkedik az /identify parancsra, ha az első karakter nem egy #. Azután
* elküldi a parancsot a nickserv álparancshoz az IDENTIFY %1- paraméterekkel.
*/
/* Az alias::format::parameters hasonló a scriptnyelvekhez. Az %N (ahol N egy szám) a parancshoz küldött egyik
* paramétert ábrázolja (ebben az esetben az /identify-ét). Ha azt írjuk, hogy %N-, a sztring N-edik
* paraméterétől az utolsóig minden paramétert fog jelenteni. Megadhatunk egy %n-et is, amely ki lesz cserélve
* a felhasználó nicknevével.
*/
/* Szabványos álparancsok */
alias "services" {
format "^#" {
target "chanserv";
type services;
parameters "%1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "%1-";
};
type command;
};
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
/*
* ÚJ: tld {}
* RÉGI: T:Line
* Beállít más motd és rules fájlt
* a kliens hostmaszkjára.
* A szintaktikája a következő:
* tld {
* mask (azonosító@gazda);
* motd "(motd fájl)";
* rules "(rules fájl)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* megjegyzés: a fenti példa blokkot akár le is törölhetjük; ebben az esetben
* mindenkire az alapértelmezett motd/rules fájlok (ircd.motd, ircd.rules)
* lesznek használatban.
*/
/*
* ÚJ: ban nick {}
* RÉGI: Q:Line
* Kitilt egy nicknevet, így az nem használható.
* A szintaktikája a következő:
* ban nick {
* mask "(kitiltandó nick)";
* reason "(indoklás)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Fenntartva a szolgáltatásoknak";
};
/*
* ÚJ: ban ip {}
* RÉGI: Z:Line
* Megtiltja egy ip-nek, hogy a hálózatra kapcsolódjon.
* Szintaktika:
* ban ip { mask (ip cím/gazdanévmaszk); reason "(indoklás)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Lecsatolt szerver";
};
/*
* ÚJ: ban server {}
* RÉGI: Q:Line szerverekre
* Megtiltja egy szervernek, hogy a hálózatra kapcsolódjon.
* Ha egy szerver távoli szerverre linkel, a helyi szerver
* szétkapcsolja a hálózatról.
* A szintaktikája a következő:
* ban server {
* mask "(szervernév)";
* reason "(indoklás)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Mars ki innen!";
};
/*
* ÚJ: ban user {}
* RÉGI: K:Line
* Elintézi, hogy egy felhasználó egy bizonyos maszkról ne tudjon kapcsolódni
* a szerverünkre.
* Szintaktika:
* ban user { mask (gazdanévmaszk/ip cím); reason "(indok)"; };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idióta";
};
/*
* ÚJ: ban realname {}
* RÉGI: n:Line
* Letiltja egy bizonyos valós név használatát.
* Szintaktikája:
* ban realname {
* mask "(valós név)";
* reason "(indok)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* MEGJEGYZÉS MINDEN BANRA: ezek ismételhetőek további bejegyzésekhez!
*
* ÚJ: except ban {}
* RÉGI: E:Line
* Elintézi, hogy ne lehessen minket kibannolni.
* Szintaktika:
* except ban { mask (azonosító@gazda); };
* További gazdákhoz annyiszor ismételjük az except ban {}-t,
* amennyiszer szükséges.
*/
except ban {
/* ne tiltsuk ki stskeeps-t */
mask *stskeeps@212.*;
};
/*
* ÚJ: deny dcc {}
* RÉGI: dccdeny.conf
* Használjuk dcc küldések blokkolására... Jobban
* megállítja a vírusokat.
* Szintaktika:
* deny dcc
* {
* filename "blokkolandó fájl (pl. *exe)";
* reason "indok";
* };
*/
deny dcc {
filename "*sub7*";
reason "Valószínűleg Sub7 Virus";
};
/*
* ÚJ: deny channel {}
* RÉGI: N/A (ÚJ)
* Letiltja bizonyos csatornákon a belépést.
* Szintaktika:
* deny channel {
* channel "(csatorna)";
* reason "indok";
* };
*/
deny channel {
channel "*warez*";
reason "A warez törvényellenes";
};
/*
* ÚJ: vhost {}
* RÉGI: Vhost.conf fájl
* Beállít egy hamis ip címet közönséges felhasználókon, vagy
* olyan operátorokon, akik lusták a /sethost-ot használni :P
* Szintaktika:
* vhost {
* vhost (vhost.com);
* from {
* userhost (azonosító@gazda, aki használhatja);
* };
* login (bejelentkezőnév);
* password (jelszó);
* };
* azután e vhost használatához adjuk ki
* a /vhost (bejelentkezőnév) (jelszó) parancsot IRC-n
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Befűzhetünk más konfigurációs fájlokat */
/* include "klines.conf"; */
/* Hálózati beállítások */
set {
network-name "ROXnet";
default-server "irc.roxnet.org";
services-server "services.roxnet.org";
stats-server "stats.roxnet.org";
help-channel "#ROXnet";
hiddenhost-prefix "rox";
/* prefix-quit "no"; */
/* Az álcázó kulcsoknak a hálózat minden szerverén azonosnak kell
* lenniük. Álcázott gazdanevek előállításában van szerepük, ezért
* legyenek titokban tartva! Mind 3 kulcs legyen egy-egy véletlenszerű
* sztring 5-100 karakterből (10-20 karakter kitűnő), valamint
* tartalmazniuk kell kisbetűket (a-z), nagybetűket (A-Z) és számokat
* (0-9) [ahogy az első kulcsos példában látható].
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"írjunk hozzá még egyet";
"írjunk hozzá még egyet";
};
/* gazdanevek opereléskor */
hosts {
local "locop.roxnet.org";
global "ircop.roxnet.org";
coadmin "coadmin.roxnet.org";
admin "admin.roxnet.org";
servicesadmin "csops.roxnet.org";
netadmin "netadmin.roxnet.org";
host-on-oper-up "no";
};
};
/* Szerverszintű beállítások */
set {
kline-address "állítsuk.be.ezt.az.emailt";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#operek";
dns {
nameserver 127.0.0.1;
timeout 2s;
retries 2;
};
options {
hide-ulines;
/* Itt engedélyezhetjük az ident ellenőrzést, ha szeretnénk */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Legkevesebb ennyi ideig kell a felhasználónak kapcsolatban lennie,
* mielőtt engedélyt kap a QUIT üzenetek használatára. Remélhetőleg
* ez leállítja a spamot. */
anti-spam-quit-message-time 10s;
/* A static-quit a neki megadott üzenetet megjeleníti minden
* kilépésben - avagy egyéni kilépési szövegek nem engedélyezettek
* a helyi szerveren */
/* static-quit "Kliens kilépés"; */
/* Hasonlóan blokkolható minden lelépési indok, úgy, hogy kivesszük
* a megjegyzésből ezt, és "yes"-t írunk vagy megadunk valamilyen
* más szöveget (pl. "Bye bye!"), hogy mindig az legyen a lelépés
* indoklószövege. */
/* static-part yes; */
/* Ezzel megmondhatjuk, mely statisztikákat szeretnénk csak operátorok
* számára engedélyezni. Használjunk *-ot, ha az összeset kívánjuk,
* és hagyjuk el a direktívát, ha a felhasználók mindet láthatják. Írjuk
* be a "/stats" parancsot a teljes listáért.
* Lehet, hogy néhány adminisztrátor törölni fogja a "kGs"-t, hogy
a közönséges felhasználók láthassák a kline-okat, gline-okat és
* shunokat.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Elfojtás: ez a példa 60 másodpercenként (gazdánként) legfeljebb
* 3 kapcsolatot engedélyező korlátozást állít be. */
throttle {
connections 3;
period 60s;
};
/* Árasztásellenes védelem */
anti-flood {
nick-flood 3:60; /* 3 nicknévváltás 60 másodpercenként
(az alapértelmezés) */
};
/* Spamszűrő */
spamfilter {
ban-time 1d; /* a spamszűrő által beállított *line-ok
alapértelmezett kitiltási ideje */
ban-reason "Spam/Reklámozás"; /* alapértelmezett indok */
virus-help-channel "#help"; /* a "viruschan" tevékenységhez
használt csatorna */
/* except "#help"; kivesszük a szűrés alól ezt a csatornát */
};
};
/*
* Problémák akadtak, vagy szükség van további segítségre?
* 1) www.vulnscan.org/UnrealIrcd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIrcd/faq/ <- a kérdéseid 80%-át tartalmazza!
* 3) Ha még mindig gondod van, felmehetsz az irc.ircsystems.net #unreal-support
* csatornájára. Fontos: kérjük, hogy előbb OLVASD EL A DOKUMENTÁCIÓT és
* a GYIK-ot!
*/
-1333
View File
File diff suppressed because it is too large Load Diff
+36 -16
View File
@@ -1,5 +1,6 @@
Numeric 005 Documentation (c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2.3)
Numeric 005 Documentation
(c) 2002-2005 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(c) 2005-2009 syzop (Bram Matthys) [syzop@vulnscan.org]
Numeric 005 allows the server to inform the client of any protocol specific features in the
IRCd. The numeric is sent at connection time immediately after numeric 004. Additionally
@@ -17,15 +18,15 @@ by this server"
Currently UnrealIRCd supports several tokens that are included in numeric 005. A list of
all tokens, their respective value and a brief description are listed below.
Unreal attempts to follow the proposed ISupport standard as much as possible. Unreal only
ignores the standard in one regard, the TARGMAX token. This token is believed to be
UnrealIRCd attempts to follow the proposed ISupport standard as much as possible. UnrealIRCd
only ignores the standard in one regard, the TARGMAX token. This token is believed to be
impractical and technically impossible to correctly implement due to existing limitations
in the standard. Therefore, this token is not currently supported.
Unreal does additionally provide a few tokens which are not specified in the standard, these
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, and CMDS. Unreal also maintains a few
legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure compatibility until the ISupport
standard is more widely accepted by clients.
UnrealIRCd does additionally provide a few tokens which are not specified in the standard, these
include: HCN, AWAYLEN, WATCH, SILENCE, EXTBAN, ELIST, CMDS, NAMESX, UHNAMES, and WATCHOPTS.
UnrealIRCd also maintains a few legacy tokens such as MAXCHANNELS and WALLCHOPS to ensure
compatibility until the ISupport standard is more widely accepted by clients.
Token Value Default Value Description
------------------------------------------------------------------------------------------------
@@ -107,7 +108,7 @@ CASEMAPPING string ascii Specifies what defini
characters are upper/lowercase
of eachother.
EXTBAN prefix,types ~,cqr Specifies what extbans are
EXTBAN prefix,types ~,cqnr Specifies what extbans are
supported by the server. The prefix
defines which character indicates
an extban and the types defines
@@ -124,7 +125,7 @@ ELIST flags MNUCT Specifies the set of
flag allows topic set time
searching.
CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of commands that
CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of commands that
can be useful for the client to know
exist as they may provide a more
efficient means for the client to
@@ -132,29 +133,48 @@ CMDS commands MAP,KNOCK,DCCALLOW,USERIP Specifies a series of
token replaces the MAP and KNOCK
tokens.
STATUSMSG flags ~&@%+ Specifies the mode flags that may
STATUSMSG flags ~&@%+ Specifies the mode flags that may
prefix a channel name in a PRIVMSG
or NOTICE to limit who receives the
message to only those with a certain
level of access. This token will
replace the WALLCHOPS token.
EXCEPTS none none Indicates that channel ban exceptions
EXCEPTS none none Indicates that channel ban exceptions
(+e) are supported by the server.
INVEX none none Indicates that channel invite
INVEX none none Indicates that channel invite
exceptions (+I) are supported by
the server.
MAXLIST mode:num,... b:60,e:60,I:60 Specifies the maximum number of
MAXLIST mode:num,... b:60,e:60,I:60 Specifies the maximum number of
entries that may be added to a
particular mode list (type A modes).
This token replaces MAXBANS.
CHANLIMIT pfx:num,... #:10 Specifies the maximum number of
CHANLIMIT pfx:num,... #:10 Specifies the maximum number of
channels with the specified prefix
that a user may join at one time.
This token will replace MAXCHANNELS.
CHANNELLEN number 32 Provides the maximum length of a
CHANNELLEN number 32 Provides the maximum length of a
channel name that a user can create.
NAMESX none none Indicates that extended /NAMES info
is available on this server. If the
client sends "PROTOCTL NAMESX" then
the server will, from then on, send
all channel rights in a NAMES reply
instead of only the highest right
(eg: @+Person instead of @Person).
UHNAMES none none Indicates that (other) extended
/NAMES info is available on the
server. If the client sends
"PROTOCTL UHNAMES" then the server
will, from then on, send user@host
information in a NAMES reply
(eg: @nick!ident@hostname).
WATCHOPTS flags A WATCH options supported. 'A' means
Away Notification is available.
-141
View File
@@ -1,141 +0,0 @@
PROTOCTL Documentation (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
The PROTOCTL command allows servers to negotiate protocol specific features when a link
occurs. The PROTOCTL command is sent during a link before the SERVER and PASS commands. The
command contains tokens that list what protocols the server supports.
PROTOCTL SPACE <token> SPACE ...
UnrealIRCd supports several tokens that add additional protocol support to the server. A
list of all supported tokens and their function listed below.
Token Description
------------------------------------------------------------------------------------------------
NOQUIT Informs the server it need not send out a QUIT for each user on the server
when an SQUIT occurs. Instead an SQUIT is sent out for each server that has
been disconnected from the network and the server can then assume all users
that were on those servers have left as well.
TOKEN Informs the server that it may send "tokenized commands", that is a shortened
name for the commands. This allows the server to save bandwidth by sending
less information to other servers. See doc/technical/token.txt for a list of
all commands and their respective token.
NICKv2 Notifies the server that it supports the extended NICK command (version 2),
this command allows the server to specify more information in the NICK
command rather than having to send out a NICK, MODE, and CHGHOST
command. This token only affects a NICK command introducing a client, not one
in which a client is changing his/her nickname. The format for a NICKv2 NICK
command is:
:<sender> NICK <nickname> <hops> <TS> <username> <host> <server>
<servicestamp> <umodes> <vhost> :<info>
If the user has no modes set the umodes parameter is a +, if the user has no
vhost set the vhost parameter is an *.
SJOIN SJOIN is an obsolete token that is only supported for backwards
compatibility. It should not be used.
SJOIN2 SJOIN2 is an obsolete token that is only supported for backwards
compatibility. It should not be used.
UMODE2 Informs the server that support for the UMODE2 command exists. The UMODE2
command is a shortened form of the MODE command but only applys to
usermodes. In a normal MODE command, when applied to usermodes, the nickname
is specified two times. Both as the sender prefix and as the first parameter,
UMODE2 solves this problem in order to save bandwidth, the format for UMODE2
is as follows:
:<sender> UMODE2 <modes>
VL Notifies the server that Vline information is included in the info field of
the SERVER command. Vline information consists of the protocol number of the
server and compiletime options supported. This allows denial of a server
based on version and/or features supported. The VL information is passed only
during connection, it is not filtered to other servers on the network, only
the uplink. The syntax for a VL supporting SERVER command is:
SERVER <servername> <hops> :U<protocol>-<versionflags> <info>
If an * appears for either protocol and/or versionflags no Vline checking is
done, this is often used by services programs where support for all versions
is desired. See doc/technical/vl.txt for a list of version flags and protocol
numbers.
SJ3 Notifies the server that the SJOIN command with SJ3 syntax is
supported. SJOIN is used at link time to inform servers about the channels on
the server. It is a combination of the JOIN commands, and MODE commands
associated with distribution of channel information. The syntax for the SJOIN
command with SJ3 syntax is:
:<sender> SJOIN <ts> <chname> [<modes>] [<mode para> ...] :<[[*~@%+]member] ...
[&"ban/except] ...>
The ts parameter is the time at which the channel, chname, was created. The
modes parameter is only included if modes are set, if not modes and mode para
are excluded. If modes exists and modes requiring parameters (+klLf) are set,
one mode para parameter is included for each value. The last parameter
specifies a list of channel members and the channel ban and except list. The
members are listed with the prefixes they have. * = +q, ~ = +a, @ = +o, % =
+h, + = +v. If no prefix is specified for the member then the user is a
normal user. The & prefix is used to denote a +b, and the " prefix denotes a
+e. It is important that if a & or " is encountered that you do not continue
to check that entry for other prefixes as a ban/except may contain *~@
characters which will intefere with prefixes.
When synching, if ts lower than the local value, the information supplied by
the remote server replaces the local (ie remove local +ohv that are not
recorded on the remote server). The opposite is true when the ts is
higher. Bans/excepts do not apply to the previous rule. If the ts is the
same, information is merged therefore the modes from both servers are added
together. If +l is set and both servers have different values, the highest is
choosen, for +f the highest of each param, N:M is chosen, and if one server
has * set, then it is included. For +k and +L the "highest" in a string
comparison is used.
NS When specified informs the server that numeric server names are
supported. Numeric server names are a base64 number that is associated with
each server. This number is used as a shorthand name for the server. It is
used in the server parameter of the NICK command and can also be used in the
prefix for a message. In the event that the prefix is an NS, rather than
using :<sender>, the format is @<ns> the ns should be translated into the
server name so that the message can be processed. The format for a SERVER
message (at sync time) that supports NS is:
SERVER <servername> <hops> :U<protocol>-<versionflags>-<numeric> <info>
The VL protocol must also be supported. The numeric is passed to all servers
on the network through the SERVER command using the syntax:
:<sender> SERVER <servername> <hops> <numeric> :<info>
Note: anywhere a :<sender> is expected an @<ns> may be received if the source
is a server. See doc/technical/base64.txt for information on the base64
system used.
SJB64 This token allows timestamps to be specified in base64 notation to conserve
bandwidth. When SJB64 is supported, anywhere a timestamp can appear may be in
base64 notation. A base64 timestamp is preceeded by a ! to identify that it
is an sjb64 rather than a regular timestamp, if this is the case the
characters following the ! represent the timestamp in base64. See
doc/technical/base64.txt for information on the base64 system used.
ZIP If both servers have this set then the link will be (zlib) compressed after
the SERVER message. If one of the servers does not have ZIP in his PROTOCTL
message then the link stays uncompressed.
TKLEXT This allows 10 instead of 8 parameters in TKL's for spamfilter, see s_kline.c
function m_tkl for more info on this (added in 3.2RC2).
NICKIP This token indicates that a (standard) base64 encoded IP address is included
in the NICK command. The IP is in binary network byte order formated and
encoded using the standard base64 algorithm. '*' is used if no IP is available.
NICKCHARS This specifies a list of language characters that are allowed in nicks.
USMARC codes are used, with a suffix if needed. See src/charsys.c for the full
list (ctrl+f, static LangList) of possible languages (2nd column).
The items in the list sent as NICKCHARS=.. must always be sorted.
If a server sends NICKCHARS= and if the remote parameters do not match the
charsets in use locally, then the server link is rejected.

Some files were not shown because too many files have changed in this diff Show More