1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-15 08:14:47 +02:00

3596 Commits

Author SHA1 Message Date
Bram Matthys a0ae1a5a66 Update release notes header to conform to style 2022-05-03 11:45:58 +02:00
Bram Matthys fc3711fcbe Refer to UnrealIRCd 6 module api page from the UnrealIRCd 5 module api page. 2022-02-06 07:42:59 +01:00
Bram Matthys 6604856973 ** UnrealIRCd 5.2.4 ** 2022-01-28 17:03:07 +01:00
Bram Matthys 0843ac64c0 Handle outdated version in the crash reporter:
1) Warn when >= July 1, 2022 that we only do security fixes (but continue the report)
2) Error when >= July 1, 2023 that all support ceased (do not send a report)
3) Handle HTTP 403 condition
2022-01-02 09:47:35 +01:00
Bram Matthys 5b3b50c084 Add variable declaration in innosetup file. 2021-12-29 20:09:59 +01:00
Bram Matthys 9ea7aebef2 Add link to UnrealIRCd 6 "what's new" 2021-12-29 15:29:00 +01:00
Bram Matthys 8f2e31f911 ** UnrealIRCd 5.2.3 **
This release will be put online at a later date, together with 6.0.1.
2021-12-29 12:18:02 +01:00
Bram Matthys fb3becb30e Make ./unrealircd upgrade work on FreeBSD as well
(fix ported from U6)
2021-12-29 12:15:56 +01:00
k4bek4be 311cdc4639 Make CHATHISTORY not FAIL on a -H channel, sending empty history instead (#156) 2021-12-19 10:41:54 +01:00
Bram Matthys 191ecc0e11 Fix EOL date, apparently I promised July and not June :D. 2021-12-15 07:12:09 +01:00
Bram Matthys 8584058a61 Update release notes a bit more
[skip ci]
2021-12-13 19:02:08 +01:00
Bram Matthys 08afb5ce3a Update release notes for 5.2.3
[skip ci]
2021-12-13 18:59:24 +01:00
musk 26ad4b48f7 Add example.es.conf (#187) 2021-12-13 18:53:22 +01:00
Bram Matthys fb0aeb14c0 Mention 6.x (already) as a supported version and mention U5 EOL date
explicitly in this document as well. (Even though it already contains
a reference to the EOL dates)
2021-12-13 18:49:56 +01:00
Val Lorentz da34552027 Send nick!user@host in WALLOPS message from self. 2021-12-10 19:42:38 +01:00
Bram Matthys de31964738 Update release notes
[skip ci]
2021-12-06 17:50:51 +01:00
Bram Matthys e1b3016426 Fix set::anti-flood::connect-flood not obeying the 'per XX seconds'
configuration. It was always cleaning up old entries after 2 minutes.
That is, until the first REHASH happened, after that the correct
connect-flood setting was applied.
In practice, with the default configuration, this means that instead
of 3:60 it was 3:120 until the first REHASH, and after that 3:60.

This was caused by update_throttling_timer_settings() being
called before init_throttling().
2021-12-06 17:46:40 +01:00
Bram Matthys 343c4834ba Add CONTRIBUTING.md file 2021-12-06 12:55:24 +01:00
Bram Matthys 59ac6b8218 This looks better. Less = more.
[skip ci]
2021-12-06 12:29:18 +01:00
Bram Matthys 4a91f8c33a Update release notes a bit more
[skip ci]
2021-12-06 12:09:47 +01:00
Bram Matthys ca9fa7c2cc Update release notes a bit: dot dot dot
[skip ci]
2021-12-06 12:04:46 +01:00
Bram Matthys 7d4cafd068 Bump version to 5.2.3-git and write some early release notes 2021-12-06 11:54:06 +01:00
Bram Matthys fd81a98364 Add more warnings 3/6/9 months before EOL date (June 1, 2023)
Just like we did in UnrealIRCd 4.
2021-12-06 11:40:20 +01:00
Bram Matthys 40161cad0c Show EOL warning in 2023 2021-12-06 11:21:52 +01:00
Bram Matthys 14dadac9ff 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:07:47 +01:00
Bram Matthys f65a2ba3d1 Backport fix for memory leak in websocket module. 2021-12-01 09:08:07 +01:00
Bram Matthys 22f5039180 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:03:20 +01:00
Ramiro Bou a35b476b05 Sending WALLOPS back to the oper that issued it. (#159) 2021-11-28 10:54:05 +01:00
Bram Matthys dbdac4e304 ** UnrealIRCd 5.2.2 ** 2021-10-03 15:59:13 +02:00
Bram Matthys 98fa3a63c8 Update release notes a bit more
[skip ci]
2021-10-03 15:54:06 +02:00
Bram Matthys 8e3c3a1bd7 Also mention possible OpenBSD c-ares fix in release notes
[skip ci]
2021-10-03 12:17:05 +02:00
Bram Matthys d48acf638a Update text a bit
[skip ci]
2021-10-03 12:13:26 +02:00
Bram Matthys 82c8c9aed4 BuildBot: FreeBSD hangs with ASan enabled, in OPENSSL_init_ssl(),
which calls qsort(). So disable it in the build tests (wtf?).
[skip ci]
2021-10-03 12:12:47 +02:00
Bram Matthys 3715ae6789 Update release notes
[skip ci]
2021-10-03 11:02:19 +02:00
Bram Matthys a21168928f Update shipped c-ares from 1.17.1 to 1.17.2 (10-aug-2021) 2021-10-03 10:37:03 +02:00
Bram Matthys 745f3fbb06 Update release notes, get ready for 5.2.2. 2021-10-03 10:33:14 +02:00
Bram Matthys d2ef328147 Update curl-ca-bundle.crt to version of Thu Sep 30 03:12:05 2021 GMT
from https://curl.se/ca/cacert.pem. Has a few changes, but the most
notable change is that they removed DST Root CA X3. This fixes
verifying Let's Encrypt certificates if you use the "DST Root CA X3"
chain (which is currently the default in certbot and all) on:
* OpenSSL 1.0.2 or earlier (old but in use on eg: Debian 8, Ubuntu 16.04, ..)
* LibreSSL below 3.3.5/3.2.7 (so until a day ago)

This only affects outgoing connections, so for remote includes and
for server linking. Server linking is only affected if you use the
link::verify-certificate option, which most people don't use.

On a side note, ISRG Root X1, so the "real root" for Let's Encrypt is
already included since August 2017 (c8a67f9436)
2021-10-03 10:13:40 +02:00
Bram Matthys 3feac27c43 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:31:47 +02:00
Bram Matthys c51a3d96be 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:20:19 +02:00
Bram Matthys 871b581a06 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:32:32 +02:00
Bram Matthys 41d8a13b19 Fix crash in set::server-linking::autoconnect-strategy sequential-fallback
when a remote server links to another server.
2021-08-08 15:56:29 +02:00
Bram Matthys 0593dc4b73 Allow SVSLOGIN also if set::sasl-server is not set.
Because yeah... why not.
2021-07-15 10:30:23 +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
626 changed files with 137111 additions and 152979 deletions
-20
View File
@@ -1,20 +0,0 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for Unreal3.2.10-rc1
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
-86
View File
@@ -1,86 +0,0 @@
Unreal3.2.10-rc1 Release Notes
===============================
==[ GENERAL INFORMATION ]==
- If you are upgrading on *NIX, then make sure you run 'make clean' and
'./Config' first, before running '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/
- The purpose of the sections below (NEW, CHANGED, MINOR, etc) is to be a
SUMMARY of the changes in this release. There have been 79 changes in
total, for the full list of changes see the Changelog.
==[ NEW ]==
- Improved socket engine. This brings some performance improvements and
also makes it easier to configure a system to hold more than 1024
clients (no more editing of header files on Linux!).
- ESVID support: services can communicate the account name of the user
back to the IRCd. This only works on ESVID-capable services:
- Extban ~a:<accountname>: matches users who are logged in to services
with that account name.
- Show account name in /WHOIS
- CAP support: this enables clients to enable certain features more easily.
Can be disabled through set::options::disable-cap.
- Now that STARTTLS is advertised in CAP it is likely to be used more often.
- away-notify: informs clients of AWAY state changes of users on the same
channels, for clients that support this.
- account-notify: similar to away-notify, inform clients of changes in the
login status and account name used by other clients on the same channels.
- SASL support. To use this, and if your services support this, you point
set::sasl-server to your services server.
- Server-side MLOCK support: the IRCd will prevent channel mode changes
depending on the MLOCK setting in services. Requires special support
from services for this feature.
- User Mode +I (IRCOp only): hide idle time
- auth-method 'sslclientcertfp': authenticate users using an SSL client
certificate by the SHA256 fingerprint of that certificate.
The documentation has a new section (3.19) called 'Authentication Types'
which contains an (improved) example of how to use SSL client certificate
authentication instead of regular passwords.
- oper::require-modes: an optional setting, which can be used to require
users to have certain user modes (such as 'z') before they can /OPER up.
- allow/deny channel: you can now optionally specify a class here as an
extra filter.
- doc/example.es.conf: Spanish translation of example configuration file.
- There have also been some behavior changes, which can be considered NEW,
see next section (CHANGED).
==[ CHANGED ]==
- Anti-spoof protection (ping cookies) can now be enabled/disabled at
run-time through set::ping-cookie [yes|no]. The default is 'yes' (enabled).
- A quit with 'Ping timeout' now shows the number of seconds since the ping.
- Print out a warning if we can't write to a log file.
- Refuse to boot if we can't write to ANY log file.
- Windows: if an SSL certificate exists, then uncheck the 'generate SSL
certificate' checkbox by default.
- *NIX with SSL: We now ask in ./Config if you want to generate an SSL
certificate. The certificate is then copied when you run 'make install'.
==[ MAJOR BUGS FIXED ]==
- None?
==[ MINOR BUGS FIXED ]==
- Various compile problems, in particular with remote includes enabled.
- Windows: the installer sometimes insisted that the Visual C++ 2008
redistributable package was not installed, when it actually was there.
- Windows: MOTD file date/time was always showing up as 1/1/1970.
- And more... see Changelog
==[ REMOVED / DROPPED ]==
- Windows 9X is no longer supported
- The networks/ directory has been removed
==[ KNOWN ISSUES ]==
- Regexes: Be careful with backreferences (\1, etc), certain regexes can
slow the IRCd down considerably and even bring it to a near-halt.
In the spamfilter user target it's usually safe though.
Slow spamfilter detection can help prevent the slowdown/freeze, but
might not work in worst-case scenario's.
- Regexes: Possessive quantifiers such as, for example, "++" (not to be
confused with "+") are not safe to use, they can easily freeze the IRCd.
==[ 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
+75
View File
@@ -0,0 +1,75 @@
# 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/snomasks/Makefile
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
# Ignores for build artifacts
*.so
*.o
*.dSYM
*.dylib
src/ircd
src/version.c
src/include
# 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/
-16
View File
@@ -1,16 +0,0 @@
[repository]
native = LF
[patterns]
.RELEASE.NOTES = native
README = native
Unreal.nfo = native
makefile.win32 = native
Changes = native
**.c = native
**.h = native
**.conf = native
**.html = native
**.txt = native
**.bat = native
**.iss = native
-22
View File
@@ -1,22 +0,0 @@
syntax: regexp
# particular targets
^ircdcron/ircdchk$
^ircdcron/ircd\.cron$
^src/ircd$
^src/include$
^src/version\.c$
^unreal$
# General
\.(o|so|orig|rej)$
~$
# autotools
^config\.(status|log)$
# not quite autotools
^config\.settings$
^include/setup\.h$
^Makefile$
^src/modules/Makefile$
+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
-6
View File
@@ -1,6 +0,0 @@
If you are reading this, then this means you have checked out the Mercurial
repository. The change log is now generated from the Mercurial version
history.
Simply run the following command to generate this 'Changes' file:
./createchangelog
-2532
View File
File diff suppressed because it is too large Load Diff
-4844
View File
File diff suppressed because it is too large Load Diff
+587 -752
View File
File diff suppressed because it is too large Load Diff
-18
View File
@@ -1,18 +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 users 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: http://unrealircd.com/donate.php
If you don't want to use PayPal, or you want to donate something other than money,
contact Syzop (syzop@unrealircd.com).
All those who donate at least a certain minimum amount will have their name
and/or company listed in /CREDITS.
Additionally, all donators will be listed on the website (regardless of the amount).
Please check the website for details.
Thank you for your support,
The UnrealIRCd Team
-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.
+118 -102
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@ @TRE_LIBS@ @CARES_LIBS@
IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @PTHREAD_LIBS@
CRYPTOLIB=@CRYPTOLIB@
OPENSSLINCLUDES=
XCFLAGS=@TRE_CFLAGS@ @CARES_CFLAGS@ @CFLAGS@
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
#
# use the following on MIPS:
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
@@ -89,32 +89,14 @@ XCFLAGS=@TRE_CFLAGS@ @CARES_CFLAGS@ @CFLAGS@
# you are not defining CMDLINE_CONFIG
IRCDMODE = 711
# [CHANGEME]
# IRCDDIR must be the same as DPATH in include/config.h
#
IRCDDIR=@IRCDDIR@
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. You may override
# the system FD_SETSIZE by setting the FD_SETSIZE Makefile variable to
# -DFD_SETSIZE=<some number>.
FD_SETSIZE=@FD_SETSIZE@
# 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
@@ -129,9 +111,9 @@ 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}'
@@ -151,19 +133,10 @@ build: Makefile
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
@@ -178,26 +151,12 @@ clean:
cleandir: clean
rm -rf 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
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 \
echo "Making dependencies in $$i";\
@@ -205,56 +164,113 @@ depend:
done
install: all
$(INSTALL) -m 0700 -d $(IRCDDIR)
$(INSTALL) -m 0700 src/ircd $(BINDIR) 2>/dev/null || { $(INSTALL) -m 0700 -d "$$(dirname '$(BINDIR)')"; $(INSTALL) -m 0700 src/ircd $(BINDIR); }
$(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
$(INSTALL) -m 0700 -d $(IRCDDIR)/ircdcron
$(INSTALL) -m 0600 ircdcron/ircd.cron $(IRCDDIR)/ircdcron
$(INSTALL) -m 0700 ircdcron/ircdchk $(IRCDDIR)/ircdcron
-@if [ ! -f "$(IRCDDIR)/curl-ca-bundle.crt" ] ; then \
$(INSTALL) -m 0700 curl-ca-bundle.crt $(IRCDDIR) ; \
$(INSTALL) -m 0700 -d $(DESTDIR)@BINDIR@
$(INSTALL) -m 0700 src/ircd $(DESTDIR)@BINDIR@/unrealircd
$(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 [ server.cert.pem -nt "$(IRCDDIR)/server.cert.pem" ] ; then \
$(INSTALL) -m 0600 server.req.pem $(IRCDDIR) ; \
$(INSTALL) -m 0600 server.key.pem $(IRCDDIR) ; \
$(INSTALL) -m 0600 server.cert.pem $(IRCDDIR) ; \
-@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@/snomasks
@rm -f $(DESTDIR)@MODULESDIR@/snomasks/*.so 1>/dev/null 2>&1
$(INSTALL) -m 0700 src/modules/snomasks/*.so $(DESTDIR)@MODULESDIR@/snomasks
$(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
@#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
@# 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@
-@if [ ! -f "$(DESTDIR)@CONFDIR@/tls/server.cert.pem" ] ; then \
$(INSTALL) -m 0600 server.req.pem $(DESTDIR)@CONFDIR@/tls ; \
$(INSTALL) -m 0600 server.key.pem $(DESTDIR)@CONFDIR@/tls ; \
$(INSTALL) -m 0600 server.cert.pem $(DESTDIR)@CONFDIR@/tls ; \
fi
@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 '* You may also wish to install a cron job to ensure UnrealIRCd is always running:'
@echo ' * https://www.unrealircd.org/docs/Cron_job'
@echo ''
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \
fi
pem: src/ssl.cnf
@echo "Generating certificate request .. "
pem: extras/tls.cnf
@echo "Generating server key..."
$(OPENSSLPATH) ecparam -out server.key.pem -name secp384r1 -genkey
@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 \
-config extras/tls.cnf -sha256 -out server.req.pem \
-key server.key.pem -nodes
@echo "Generating self-signed certificate..."
$(OPENSSLPATH) req -x509 -days 3650 -sha256 -nodes -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... "
@echo "Setting permissions on server.*.pem 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 ; \
fi
Makefile: config.status Makefile.in
./config.status
+1130
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.
+58
View File
@@ -0,0 +1,58 @@
[![Twitter Follow](https://img.shields.io/twitter/follow/Unreal_IRCd.svg?style=social&label=Follow)](https://twitter.com/Unreal_IRCd)
## 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 42%. UnrealIRCd is a highly advanced IRCd with a strong
focus on modularity, an advanced and highly configurable configuration file.
Key features include SSL/TLS, cloaking, its advanced anti-flood and anti-spam systems,
swear filtering and module support. We are also particularly proud on our extensive
online documentation.
## How to get started
Please consult our excellent online documentation at https://www.unrealircd.org/docs/
when setting up the IRCd!
### Step 1: Installation
#### Windows
Simply download the UnrealIRCd Windows version from www.unrealircd.org
Alternatively you can compile UnrealIRCd for Windows yourself. However this is not straightforward and thus not recommended.
#### *BSD/Linux/macOS
Do the following steps under a separate account for running UnrealIRCd,
[do NOT compile or run as root](https://www.unrealircd.org/docs/Do_not_run_as_root).
### Step 1: Compile the IRCd
* Run `./Config`
* Run `make`
* Run `make install`
* Now change to the directory where you installed UnrealIRCd, e.g. `cd /home/xxxx/unrealircd`
### Step 2: Configuration
Configuration files are stored in the conf/ folder by default (eg: /home/xxxx/unrealircd/conf)
#### Create a configuration file
If you are new, then you need to create your own configuration file:
Copy conf/examples/example.conf to conf/ and call it unrealircd.conf.
Then open it in an editor and carefully modify it using the documentation and FAQ as a guide (see below).
### Step 3: Booting
#### Linux/*BSD/macOS
Run `./unrealircd start` in the directory where you installed UnrealIRCd.
#### Windows
Start -> All Programs -> UnrealIRCd -> UnrealIRCd
## Documentation & FAQ
You can find the **documentation** online at: https://www.unrealircd.org/docs/
We also have a good **FAQ**: https://www.unrealircd.org/docs/FAQ
## Website, support, and other links ##
* https://www.unrealircd.org - Our main website
* https://forums.unrealircd.org - Support
* https://bugs.unrealircd.org - Bug tracker
* ircs://irc.unrealircd.org:6697/unreal-support - IRC support
+22
View File
@@ -0,0 +1,22 @@
# Security Policy
## Supported Versions
* The latest *stable* release of the 5.x branch (until 2023-07-01)
* The latest *stable* release of the 6.x branch
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.
-80
View File
@@ -1,80 +0,0 @@
===============================================
= UnrealIRCd v3.2.10-rc1 =
===============================================
This release was brought to you by:
Head coder:
============
* Syzop
Coders:
========
* binki
Contributors:
=============
* nenolod
* Adam
* warg
* Stealth
* WolfSage
* katsklaw
* darkex
* fspijkerman
* fbi
* Apocalypse
RC Testers:
===========
<<TODO>>
Previous coders:
================
* Stskeeps
* codemastr
* Many more..
Internet Presence:
* http://www.unrealircd.com/
UnrealIRCd Bugtracker (Where to report bugs, make suggestions, and submit patches)
===================================================================================
http://bugs.unrealircd.org/
To get support
================
Before asking others for help you MUST:
* read the docs (doc/unreal32docs.html or online: http://unrealircd.com/unreal32docs.html)
* check the FAQ (http://vulnscan.org/UnrealIrcd/faq/)
Means of support:
* IRC: /server irc.unrealircd.com 6667 - /join #unreal-support
[Note: Follow the bot's instructions in order to get voice.
Please be patient after asking questions, we may be busy
or we're away. Don't repeat questions, we will have heard
you first time.
READ THE TOPIC before you ask anything. We give support
on a free basis. We are volunteering to help you, but we
are humans like you. We sometimes just need some peace.]
* Forum: http://forums.unrealircd.com/
Development version
====================
To access the latest development version of UnrealIRCd you need to use mercurial (hg).
Note that because you are accessing a development version it may not compile, the
server may crash, or other problems can occur since the code is likely to be only
lightly tested (or not at all). On the other hand, using the development version may
help you to get rid of that single nasty bug that is haunting you, plus if you test
it and give us feedback (report bugs) then you actually help us with developing Unreal.
The command to grab the development version is:
hg clone http://hg.unrealircd.org/unreal
If you get something like 'hg: command not found' then you need to install mercurial.
Most *NIX systems have such a 'mercurial' package, but if you don't, or you are on
Windows or Mac OS X, then see http://mercurial.selenic.com/
Want to discuss, chat, etc?
=============================
* IRC: /server irc.unrealircd.com 6667 - /join #chat
(NOT for support! If you want support then use #unreal-support instead!)
-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; 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; };
include "aliases/aliases.conf";
-26
View File
@@ -1,26 +0,0 @@
/* 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
@@ -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; 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
@@ -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; 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
@@ -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; 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
@@ -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; 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
@@ -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; 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
@@ -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; };
+1438
View File
File diff suppressed because it is too large Load Diff
+601 -166
View File
File diff suppressed because it is too large Load Diff
+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
+138 -77
View File
@@ -65,11 +65,9 @@ AC_DEFUN([CHECK_LIBCURL],
CURLLIBS="`$CURLCONFIG --libs`"
dnl This test must be this way because of #3981
AS_IF([$CURLCONFIG --features | grep -q -e AsynchDNS],
AS_IF([$CURLCONFIG --libs | grep -q -e ares],
[CURLUSESCARES="1"],
[CURLUSESCARES="0"])
AS_IF([test "$CURLUSESCARES" = "0"],
[AC_MSG_WARN([cURL seems compiled without c-ares support. Your IRCd will possibly stall when REHASHing!])])
dnl sanity warnings
AS_IF([test -z "${CURLLIBS}"],
@@ -88,12 +86,13 @@ AC_DEFUN([CHECK_LIBCURL],
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$with_system_cares" = "xno" && test "x$HOME/curl" != "x$enable_curl" && test "x/usr/share/unreal-curl" != "x$enable_curl" && test "$CURLUSESCARES" != "0" ],
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 disabled system-installed c-ares support (--with-system-cares).
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:
@@ -106,25 +105,6 @@ AC_DEFUN([CHECK_LIBCURL],
]])
])
AS_IF([test "x`echo $CURLLIBS |grep ares`" != x && test "x$with_system_cares" = "xno"],
[
dnl Attempt one: Linux sed
[XCURLLIBS="`echo "$CURLLIBS"|sed -r 's/[^ ]*ares[^ ]*//g' 2>/dev/null`"]
AS_IF([test "x$XCURLLIBS" = "x"],
[
dnl Attempt two: FreeBSD (and others?) sed
[XCURLLIBS="`echo "$CURLLIBS"|sed -E 's/[^ ]*ares[^ ]*//g' 2>/dev/null`"]
AS_IF([test x"$XCURLLIBS" = x],
[
AC_MSG_ERROR([sed appears to be broken. It is needed for a remote includes compile hack.])
])
])
CURLLIBS="$XCURLLIBS"
IRCDLIBS_CURL_CARES="$CARES_LIBS"
CFLAGS_CURL_CARES="$CARES_CFLAGS"
])
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"
@@ -160,13 +140,13 @@ dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostl
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/sfw /usr/local /usr])],
[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/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr; do
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])
@@ -189,65 +169,146 @@ AS_IF([test $enable_ssl != "no"],
AC_MSG_RESULT(not found)
echo ""
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
echo "You have two options:"
echo "a) Install the needed binaries and libraries"
echo " and run ./Config"
echo "OR"
echo "b) If you don't need SSL..."
echo " Run ./Config and say 'no' when asked about SSL"
echo " (or pass --disable-ssl to ./configure)"
echo ""
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
LDFLAGS="$LDFLAGS -L$ssldir/lib";
dnl check if binary path exists
if test -f "$ssldir/bin/openssl"; then
OPENSSLPATH="$ssldir/bin/openssl";
fi
fi
AC_DEFINE([USE_SSL], [], [Define if you want to allow SSL connections])
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_ZLIB],
AC_DEFUN([CHECK_SSL_CTX_SET1_CURVES_LIST],
[
AC_ARG_ENABLE([ziplinks],
[AC_HELP_STRING([--enable-ziplinks=DIR],[enable ziplinks. will check /usr/local /usr /usr/pkg. Note that SSL does its own compression, so you won't need this for SSL links.])],
[],
[enable_ziplinks=no])
AS_IF([test $enable_ziplinks != "no"],
[
AC_MSG_CHECKING([for zlib])
for dir in $enable_ziplinks /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 -I$zlibdir/include";
fi
AC_DEFINE([ZIP_LINKS], [], [Define if you have zlib and want zip links support.])
break
fi
done
if test x_$found_zlib != x_yes; then
AC_MSG_RESULT([not found])
echo ""
echo "Apparently you do not have the zlib development library installed."
echo "You have two options:"
echo "a) Install the zlib development library"
echo " and run ./Config"
echo "OR"
echo "b) If you don't need compressed links..."
echo " Run ./Config and say 'no' when asked about ziplinks support"
echo ""
exit 1
else
IRCDLIBS="$IRCDLIBS -lz"
if test "$zlibdir" != "/usr" ; then
LDFLAGS="$LDFLAGS -L$zlibdir/lib"
fi
HAVE_ZLIB=yes
fi
AC_SUBST([HAVE_ZLIB])
])
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_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
])
+2
View File
@@ -1,4 +1,6 @@
#!/bin/bash
echo "Regenerating 'configure' and headers..."
echo "NOTE: Normally only UnrealIRCd developers run this command!!"
cd "$(dirname "${0}")"
-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
+3971 -2723
View File
File diff suppressed because it is too large Load Diff
+542 -429
View File
File diff suppressed because it is too large Load Diff
-10
View File
@@ -1,10 +0,0 @@
#!/bin/sh
# This will generate a Changelog similar to our original style.
# New are: the name of the author, the date, and the short hash
# We still filter translated doc changes as to not polute the
# changelog too much.
hg log -r a673dd0f7b37: --style changelog --template '[{date|shortdate}] {author} ({node|short}):\n- {desc}\n\n' \
-X 'doc/unreal32docs.*.html' -X 'doc/help.*.conf' -X 'doc/example.*.conf' -X 'include/version.h'|sed 's/^- - /- /g' >Changes
echo "Done. File 'Changes' now contains the full version history"
-4074
View File
File diff suppressed because it is too large Load Diff
+31
View File
@@ -0,0 +1,31 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for UnrealIRCd 5.2.4
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_5_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/unreal52/doc/RELEASE-NOTES.md
UnrealIRCd 5 is compatible with the following services:
* anope with the "unreal4" protocol module - version 2.0.7 or higher required!
* atheme with the "unreal4" protocol module - tested with version 7.2.9
--------------------------------------------------------------------------------------
+14
View File
@@ -0,0 +1,14 @@
Although UnrealIRCd is a free program, we do put a great deal of time,
effort, and money into keeping UnrealIRCd alive. If you like UnrealIRCd and
want to support us then please consider making a donation.
PayPal Donation Link: https://unrealircd.org/index/donations
If you don't want to use PayPal, or you want to donate something other than
money, then please contact Syzop (syzop@unrealircd.com).
All those who donate at least a certain minimum amount will have their name
and/or company listed in /CREDITS and will be listed on the website.
Thank you for your support,
The UnrealIRCd Team
+47
View File
@@ -0,0 +1,47 @@
pub rsa4096 2015-07-02 [SC] [expires: 2025-06-29]
1D2D2B03A0B68ED11D68A24BA7A21B0A108FF4A9
uid UnrealIRCd releases (for verification of software downloads only!) <releases@unrealircd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBFWVOFYBEACsWFWM25VDaGXq22GSTJo1O53bgAMCZsqj9VKDriUmj7uvozlp
BGHgYFVM4ZT1FUAsWedeIP2aLLkYGmH4odVaAk7IeUa7HfpE45/F6+End6bCpYGe
1UdVQM/Bu3VHoUtVvtIFg788JwbplroapA/D0pi/EAN8WYnN9etgLM2lvzwbjBz9
xTOefwvgRsKbCH63VW7NCyquEcdEJxnMHB7JZUEuzrOUvhAiIkwKw8wbcn36zX0i
wcAFtVO5uVTA/Tdu6nWsZvqVc6R1E3usJzWSwbmoUtPUM5Mk9I9gL73EsqEbgs5N
trT00r75RcfiThNEP8NtDtB8AFum6OCSg/+8bdJmKcWVKpuB+lUvP0d4UAqm5vmH
/KQh/nyHXKvAvhWqHizozP1WGevpxLFHMjm/+1T167Iil/3UcUyn9qd0CuYSszJw
y5Vp6iJHkVo8qxI89rkzSDRi+ppLCBTwuN01ducftDxvIQMVrphdKZLPGzQrltkh
lIN4XNS6cOOsrbbk5+Kc2xih6qt+DyiRHaNFQnoMdRVeIrmf4u4ClMcHlzELV8gF
D+s0BbVqhVwAhbKMfKaVmvVlj8bSET0z2s0vhZODwlgANpDBLNsIU6leiYRAzub5
WY5Hz1m7P8ZXSMPh4/vGh1kg3E9IRKLZDZ65gEYr8nNCzbAYmDQ3IkplIwARAQAB
tFxVbnJlYWxJUkNkIHJlbGVhc2VzIChmb3IgdmVyaWZpY2F0aW9uIG9mIHNvZnR3
YXJlIGRvd25sb2FkcyBvbmx5ISkgPHJlbGVhc2VzQHVucmVhbGlyY2Qub3JnPokC
PgQTAQIAKAUCVZU4VgIbAwUJEswDAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA
CgkQp6IbChCP9KlFzQ/+ObuBgCtXvLcbpq7C2usHxgtEB1rV9khLGugJXevjMaf3
+vo4d5cd5go665po8oqDnSUfq+8LPDj/nnroKQcS5Kb4KdHz6rn+53rHWtw6PPGN
KswFS05Vy2AkYg4nVXvrGm0oV173qOms2REoStP0mEm7F7ZTJ6k1qgmZ8tcFgfMm
fqEl94O5zDWycaJx7K0h3n+xUyhh+lT9Zl3duzVzCc+YI+dD6UOIXBF9TF9fIb8m
300MBLwTTHq64nGsZbhfzCHNHAO6hTy5XmE+d1g4R87rKim6lP0V1LTbvhOhYhZg
0JrVOr9dhHY4tw1xglz++nMM24t2O9zoRoZjDMHBzzBm3gJq3G160kxVZKKcVaQd
nfYvPOBNtyEyaIIJD8vs2Z9jiJLjpoz0LhnE2TmE4M6YqBsSWfFuPrHE+PJQyEQg
2zEoTRCSFSLaq+5kl3vKM/cblwkQeKkNe8u6bDNk7bEPUCQstyOqcvoTWE2gs3f2
n7wI7BzW3uX5YUp1CcdPig1XxveI4XaKKrhRacvGvvNHdXw1scj1K0SCXvy4EPpf
dLthTC6BHwO2P56wlxK0MRL/GD72ttBCcsyLWYdL9OIT6Lx4bZVhvEjKDapWAL04
X1mXMHUK1iO4lunbqP3lu6F8qsuI/B2sIiJK7aSjv4bjVRw/jcESrhmCvnN3B3mI
RgQQEQIABgUCVZU9NQAKCRBpsoj7n/A5N4E2AJ4i5z98+mA8Ug9utdslGvHFRq+s
PgCeILJ7/dJFYZFz1YpaNTbRCHIesaWIXgQQEQgABgUCVZU9ZwAKCRBuZ21Ff+GZ
pueXAP9bJ1hPWa3ITIoapW9eTT1eNv+17KqcclwZzxCopbUkFAD+NptTuXpeivM+
USWsQJFpFlLdDckcv8QzLQwgzZ8TXtKJAhwEEAEIAAYFAlg796cACgkQ3pO4tH50
XrMyWQ/+NJyhO5yibAhN4RgCJ+qFdp9Llm+SQGFjVtw8L7nv3M0Us8xspmVlX7TZ
/OK6AhUyaqAmg3ZXruaetrBVIAlP675cXJ1NIPfyT+PvMUbupvqBhyPZKqdnh2WT
ZMYdQrvw503h+BlyjGeAWd34tLhtiM1A69tntFu2A7bKhkoxE7KoyCjKmLgUb30M
r5guxb6DCUXK8m5ooHl58kLtJrTpW9l3YYXpKe/POYPIK6ULZN7TChtFOTJ+ebx1
2LaQGGdRKaCSM1OX7mfvBG8GtljQcGoP+f5TmvRbCGGfiR9r6MdgG6LYTuYf7pR7
NBwxveqwJV4iOmd9b+doIra5tRX0TqEKdEqpVHhm4UTZlHVyIpg97Lc/7WiWS1Z5
UIhT4YxlztPUvWmCXlleNEqBYK86OsVFqryHDVKtPbH65k/xKfu8w/hHkv7TQ23r
eoMs1uBlaUWe3orgUOr0tnFLXz809SAwC9sxQq9TWTm50NqiaQvBVInSUssFYPkG
qBljIXtdUzFGBn3sTpFRY6p2yzIo54EQmQAvMQPEJkQ8JQJ47au82DxFUBZYKci5
lsJfRueGnn5A36eUZdkhZ6Dm61M3YldYcpRa4Xfi0AWbg5yW/uUipc36Ey+vwWyl
x+1IZgjnIIMsyDLuq2tm5p1tiJK2N9L0rxQb/DIK7j8+ZvmlFZQ=
=foLZ
-----END PGP PUBLIC KEY BLOCK-----
+1162
View File
File diff suppressed because it is too large Load Diff
+123 -141
View File
@@ -1,141 +1,123 @@
Rules about patches & modifications to UnrealIRCd
1. When making a change, always add a small description in Changes, in the
BOTTOM. Don't forget to mention the bug# and credit the reporter (if any).
2. If new files are made, it must contain proper copyright headers.
3. If you want to submit patches (f.e. if you don't have CVS write access)
then submit them to http://bugs.unrealircd.org/ (shortly called bugs*)
using "cvs diff -u > patchname". A submission must contain description of
what it does, etc.
4. 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* 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 bug or stated in
a comment that it's OK to implement, then a 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 next
release, and add a comment pasting the relevant Changelog item and the
releaseid (.XYZ).
Of course other guidelines, like #7 and #8 still apply.
5. Do not commit changes that do not have an associated bug# and have not
had any discussion.
Small/tiny bugfixes that do not change any functionality, are very
unlikely to break anything and definitely don't require any prior
discussion may be exempted.
6. Regarding reidenting, restructuring or other 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. Prior to a release: be very careful with any restructuring of a subsystem
or doing any major commits that may break things. Stuff like this can be
perfectly fine if there are many months to go, but are not good to do a
month before release. The head coder may impose additional restrictions
during such a period.
8. 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 should test their code before committing.
11. /*
* These kind of comments
*/
NOT
// These kind of comments
12. if (something == 1)
{
moo; /* comment */
/* This does what what what */
cow(go(moo));
}
NOT
if (something == 1) {
}
13. Do not touch version.c.SH or version.h, unless you are a head coder
if you need a credit in, contact us
14. Protocol changes must be discussed before making patches for it.
15. We do NOT rip people off. If we use other people's code, it MUST be
properly credited.
16. We generally use tabsize 4 and 8. In any case, 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. As you know a line from a user can never be longer
than 511 (510?) characters, sometimes you can use this knowledge to your
advantage. Whenever it's not safe or when you don't know what input size you
can expect, use strlcpy instead of strcpy. Do not ever use strncpy, this is
older, slower, and does not add proper zero termination.
For the same reason, use snprintf if really needed. Note though, that using
ircsprintf with a bigger buffer (eg: 1024 bytes) is MUCH faster, so preferably
use that instead of snprintf. The same can be true for strcpy vs strlcpy in
some circumstances as well.
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 ircsprintf, not sprintf (this is because ircsprintf
is optimized for simple strings like the ones we use).
Prefer ircsprintf with a bigger buffer over the use of snprintf, since
ircsprintf is much faster.
19. Initialize your structs and use the proper memory calls.
In UnrealIRCd we use MyMalloc, MyMallocEx and MyFree (so not malloc/free).
MyMalloc usually maps to malloc, and MyMallocEx is a malloc plus filling
the memory area (eg: the struct) with zero's (a la calloc).
Use of MyMallocEx is suggested. In general you should not be using MyMalloc.
"But MyMalloc is faster!" you might say. This is true, but using MyMallocEx
has very little speed impact and enormous benefits: people tend to forget
to set certain fields in the struct to NULL, or much more common: when
someone later on (eg: 1 year later) adds a field to a struct, there could
be several places he/she needs to update to make sure x->something is NULL
after allocating a new struct. Bad idea.
Little speed impact, huge stability benefits, easy decision ;).
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.
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).
2. If new files are made, they must contain proper copyright headers.
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.
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
12. if (something == 1)
{
moo; /* comment */
/* This does what what what */
cow(go(moo));
}
NOT
if (something == 1) {
}
13. Do not touch version.c.SH or version.h, unless you are a head coder.
If you need a credit in, contact us
14. Protocol changes must be discussed before making patches for it.
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 -118
View File
@@ -1,118 +1,2 @@
==[ GENERAL GUIDELINES ]==
First of all you need Microsoft Visual C++ (see below), compiling with
cygwin is not supported.
Compatible compilers:
cygwin NOT supported. Will not work. Should be no reason to use this anyway
as cygwin is an emulation layer. It's obviously much better to run
native (Windows) code on Windows.
msvc 6.x Microsoft Visual Studio 6 does not work, this compiler is too old.
msvc 7.x Microsoft Visual Studio 7.x (.NET), works.
msvc 8.x Microsoft Visual Studio 8.x (.NET 2005), including the free kit, works.
msvc 9.x Microsoft Visual Studio 9.x (.NET 2008), is used for official compile.
mssdk Microsoft Windows SDK for Windows 7
If you don't have the paid version of Microsoft Visual Studio 7.x, then you can
use the FREE development kit available for Windows 7 explained below:
1. Download the 'MS SDK for Windows 7 and .NET Framework 3.5 SP1' at:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en
2. NOTE: Whenever you need to compile something we say 'Start the Visual Studio
.NET Command Prompt' below, but you - a person using the free version - will
actually have to start the CMD Shell instead (check out the
Start Menu under Microsoft Windows SDK v7.0). Users on x64 environment will have
to change their environment to x86 by typing 'SETENV /x86'.
3. Download http://www.vulnscan.org/tmp/dlltool.exe and put the file somewhere
in your path (eg: put it in c:\windows\system32).
==[ EXTERNAL LIBRARIES ]==
Fetch the external libraries (c-ares, tre, openssl, zlib, curl) from:
http://www.vulnscan.org/unrealwin32dev/
==[ COMPILING ]==
1. Start the Visual Studio .NET Command Prompt
2. Go to your UnrealIRCd dir (like: cd \dev\unreal3.2)
3. Have a look at 'makefile.win32' to look at what parameters you need to
use, this depends on what libraries you want to link in and their location.
4. Two options, use either one (B is preferred), and read step 5 too:
A. Edit makefile.win32 directly to reflect your configuration and run
'nmake -f makefile.win32'
B. Don't edit makefile.win32 but instead create a one-line command (which
you can put in a batch file), like this (all on one 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:\openssl\include" OPENSSL_LIB_DIR="c:\openssl\lib"
USE_REMOTEINC=1 LIBCURL_INC_DIR="c:\dev\curl-ssl\include"
LIBCURL_LIB_DIR="c:\dev\curl-ssl\lib\dll-release"
CARES_LIB_DIR="C:\dev\c-ares\vc\cares\dll-release"
CARES_INC_DIR="C:\dev\c-ares" CARESLIB="cares.lib"
TRE_LIB_DIR="C:\dev\tre\win32\release" TRE_INC_DIR="C:\dev\tre"
TRELIB="tre.lib"
5. You are likely to encounter an error like
M_OPER.obj : error LNK2019: unresolved external symbol _sendto_snomask_global
referenced in function _m_oper
(the exact name and symbol will differ!!)
In that case you need to generate a symbols file:
nmake -f makefile.win32 SYMBOLFILE
And after that simply re-run your nmake -f makefile.win32 [options]
command, the same command you ran before the error occured.
You should not get any unresolved external symbol error again.
If you still do, then something is wrong.
6. Your compile is now done, you can package unreal if you have InnoSetup,
in that case check out src\win32\unrealinst.iss
Otherwise, manually copy over the necessary files (and the dll files
from the external libraries).
==[ 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 <YOUR OPTIONS> 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 <YOUR OPTIONS> custommodule MODULEFILE=m_crappymod
Note that <YOUR OPTIONS> is the whole lot of options explained in
previous section under 4B. If you use method 4A then there aren't any.
Note 2: If you get any symbol file errors, see the section 'SYMBOL FILES'
5. Done. A .dll file should have been created.
If you compiled with the same Visual Studio version that we use to compile
the official UnrealIRCd version, and use the same Unreal3.2.X.tar.gz as the
official version (and not CVS!), then your module is fully binary compatible
and you can put it on your website (or ours) so users can use them.
If you do anything else, this won't work.
So, again, it will NOT work properly, if:
1. You use a different UnrealIRCd source (like CVS, or a previous version).
2. You use another compiler... this might still work but may require an
additional .DLL file to be put in your UnrealIRCd directory (MSVxxxxxx.DLL).
3. You compile with different options, such as compiling with SSL but trying
to load the module on non-SSL.
NOTE: unless your module uses SSL-specific code, you should compile
without SSL as it will run on both SSL and non-SSL UnrealIRCd's.
==[ SYMBOL FILES ]==
If you get something like this:
Creating library L_COMMANDS.lib and object L_COMMANDS.exp
M_OPER.obj : error LNK2019: unresolved external symbol _sendto_snomask_global re
ferenced in function _m_oper
(note: the exact name of the symbol will vary!)
Then you will have to rebuild the wircd.def symbol file. You do this by
downloading http://www.vulnscan.org/tmp/dlltool.exe and putting the file somewhere
in your path (eg: c:\winnt\system32).
Then, to compile you do this:
nmake -f makefile.win32 [your other options here]
nmake -f makefile.win32 SYMBOLFILE
nmake -f makefile.win32 [your other options here]
So basically you just run 'nmake -f makefile.win32 SYMBOLFILE' and then restart
compiling again.
==[ COMPILING ZLIB/SSL/CURL YOURSELF ]==
This is off-topic and not explained here.
Again, use the stuff from the win32 development pack unless you have a good
reason to do otherwise.
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; }
+51
View File
@@ -0,0 +1,51 @@
/*
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 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; }
+592
View File
@@ -0,0 +1,592 @@
/* Configuration file for UnrealIRCd 5
*
* Simply copy this file to your conf/ directory, call it
* 'unrealircd.conf' and walk through it line by line (edit it!)
*
* 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 5 documentation (very extensive!):
* https://www.unrealircd.org/docs/UnrealIRCd_5_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";
/* 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).
*/
me {
name "irc.example.org";
info "ExampleNET Server";
sid "001";
}
/* 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 IP's 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' with password 'test'.
* You MUST change this!!
*/
oper bobsmith {
class opers;
mask *@*;
password "test";
/* 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 */
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.
* Run './unrealircd spkifp' on the other side to get it.
*/
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.
* NEVER put the name of an UnrealIRCd server here!!!
*/
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 */
log "ircd.log" {
flags {
oper;
connects;
server-connects;
kills;
errors;
flood;
sadmin-commands;
chg-commands;
oper-override;
tkl;
spamfilter;
}
}
/* 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 protects you from KLINE and ZLINE */
except ban {
mask *@192.0.2.1;
// you may add more mask entries here..
}
/* except ban with type 'all' protects you from GLINE, GZLINE, QLINE, SHUN */
except ban {
mask *@192.0.2.1;
type all;
}
/* 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
* NOTE: only people with an 'unrealircd.com' host may use it so
* be sure to change the vhost::mask before you test.
*/
vhost {
vhost i.hate.microsefrs.com;
mask *@unrealircd.com;
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 {
network-name "ExampleNET";
default-server "irc.example.org";
services-server "services.example.org";
stats-server "stats.example.org";
help-channel "#Help";
hiddenhost-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.
* The keys should be 3 random strings of 50-100 characters
* and must consist of lowcase (a-z), upcase (A-Z) and digits (0-9).
* HINT: On *NIX, you can run './unrealircd gencloak' in your shell to let
* UnrealIRCd generate 3 random strings for you.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"and another one";
"and another one";
}
}
/* Server specific configuration */
set {
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:
* There are lots of settings for this and most have good defaults.
* See https://www.unrealircd.org/docs/Set_block#set::anti-flood
*/
anti-flood {
}
/* 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 {
connect-delay 60;
exempt-identified yes;
exempt-reputation-score 24;
}
invite {
connect-delay 120;
exempt-identified yes;
exempt-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 {
// connect-delay 10;
//}
//private-notice {
// connect-delay 10;
//}
}
}
/*
* 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 must configure what we call "known users".
* 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).
* The sasl-bypass option is another setting. It means
* that users who authenticate to services via SASL
* are considered known users as well.
* Users in the "known-users" group (either by reputation
* or by SASL) are always allowed in by this module.
*/
known-users {
minimum-reputation-score 24;
sasl-bypass yes;
}
/* 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;
}
/* 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;
}
}
}
/* 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/UnrealIRCd_4_documentation
* 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!
*/
+610
View File
@@ -0,0 +1,610 @@
/* Archivo de configuración para UnrealIRCd 5
*
* Simplemente copie este archivo a su directorio conf /, llámelo
* 'unrealircd.conf' y recorrerlo línea por línea (¡edítalo!)
*
* Importante: Todas las líneas, excepto { y } terminan con un;
* Esto es muy importante, si pierde un; en algún lugar entonces el
* el analizador de archivos de configuración se quejará y el archivo no
* ¡será procesado correctamente!
* Si esta es su primera experiencia con una configuración de UnrealIRCd
* entonces realmente le recomendamos que lea 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 5 (¡muy extensa!):
* https://www.unrealircd.org/docs/Main_Page/es
*
* Preguntas frecuentes:
* https://www.unrealircd.org/docs/FAQ
*
*/
/* Esto es un comentario, todo el texto aquí se ignora (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 módulos. Los módulos le permiten
* personalizar el conjunto de funciones que desea habilitar en UnrealIRCd.
* Vea más: https://www.unrealircd.org/docs/Modules
*
* Al usar la inclusión a continuación, le indicamos al IRCd que lea el archivo
* 'modules.default.conf' este cargará más de 150 módulos
* cargados con UnrealIRCd. En otras palabras: esto simplemente cargará
* todas las funciones disponibles en UnrealIRCd.
* Si está configurando UnrealIRCd por primera vez, le sugerimos
* utilizar este. Entonces, cuando todo esté en funcionamiento, puedes venir
* volver más tarde para personalizar la lista (si así lo desea).
*/
include "modules.default.conf";
/* Ahora incluyamos algunos otros archivos:
* - help / help.conf para nuestro sistema on-IRC /HELPOP
* - badwords.conf para canal y modo de usuario +G
* - spamfilter.conf como ejemplo de uso de filtro de texto.
* (comentado)
* - operclass.default.conf contiene algunas buenas operclasses que
* puedes usarlo en tus bloques operativos.
*/
include "help/help.conf";
include "badwords.conf";
//include "spamfilter.conf";
include "operclass.default.conf";
/* Este es el bloque me {} 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
* letras. El sid debe ser único para su red IRC (cada servidor debe
* tiene su propio sid).
*/
me {
name "irc.ejemplo.org";
info "Servidor EjemploNET";
sid "001";
}
/* El bloque admin {} define lo que los usuarios verán si escriben /ADMIN.
* Normalmente contiene información sobre cómo contactar al administrador.
*/
admin {
"Bob Smith";
"bob";
"correo-electrónico@ejemplo.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: cola de recepción máxima de una conexión (control de inundaciones)
*/
/* Clase de cliente con buenos valores predeterminados */
class clients
{
pingfreq 90;
maxclients 1000;
sendq 200k;
recvq 8000;
}
/* Clase especial para IRCOps con límites superiores */
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; /* máximo de servidores */
sendq 20M;
}
/* Bloques de permitir definen qué clientes pueden conectarse a este servidor.
* Esto le permite agregar una contraseña de servidor o restringir el servidor a
* IP específicas únicamente. También configuras las conexiones máximas
* permitido por IP aquí.
* Ver también: https://www.unrealircd.org/docs/Allow_block
*/
/* Permitir que todos entren, pero solo 3 conexiones por IP */
allow {
mask *;
class clients;
maxperip 3;
}
/* Ejemplo de un bloque de permiso especial en una IP específica:
* Requiere que los usuarios de esa IP se conecten con una contraseña. Si la contraseña
* es correcto, entonces permite 20 conexiones en esa IP.
*/
allow {
mask 192.0.2.1;
class clients;
password "algunacontraseña";
maxperip 20;
}
/* Los bloques de operaciones definen sus operadores de IRC.
* Los operadores de IRC son personas que tienen "derechos adicionales" en comparación con otros,
* por ejemplo, pueden /KILL a otras personas, iniciar la vinculación del servidor,
* /JOIN a canales aunque estén prohibidos, etc.
*
* Para obtener más información sobre cómo convertirse en un IRCOp y cómo administrar
* tareas, consulte: https://www.unrealircd.org/docs/IRCOp_guide
*
* Para obtener detalles sobre el bloque oper {} en sí, consulte
* https://www.unrealircd.org/docs/Oper_block
*/
/* Aquí hay un ejemplo de bloque de operador para 'bobsmith' con contraseña 'test'.
* ¡¡DEBES cambiar esto !!
*/
oper bobsmith {
class opers;
mask *@*;
password "test";
/* Los permisos de operador se definen en un bloque 'operclass'.
* Ver https://www.unrealircd.org/docs/Operclass_block
* UnrealIRCd viene con una serie de bloques predeterminados, consulte
* el artículo para una lista completa. Elegimos 'netadmin' aquí.
*/
operclass netadmin;
swhois "es un Administrador de Red";
vhost netadmin.ejemplo.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 <puerto>;
* options {
* <opciones....>;
* }
* }
*/
/* Puerto estándar para IRC 6667 */
listen {
ip *;
port 6667;
}
/* Puerto estándar para IRC SSL/TLS 6697 */
listen {
ip *;
port 6697;
options { tls; }
}
/* Puerto especial SSL/TLS servers-only/(Solo servidores) para enlaces */
listen {
ip *;
port 6900;
options { tls; serversonly; }
}
/* NOTA: Si está en una shell IRCd con varias IP y usa
* los bloques listen {} anteriores, es probable que obtenga un
* Error "address is already in use" y el ircd no se inicia.
* Esto significa que DEBE vincularse a una IP específica en lugar de '*' como:
* escuchar { ip 1.2.3.4; puerto 6667; }
* Por supuesto, reemplace la IP con la IP que se le asignó.
*/
/*
* Los bloques de enlaces le permiten enlazar 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 para obtenerlo.
*/
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
class servers;
}
/* El bloqueo de enlaces para servicios suele ser mucho más sencillo.
* Para obtener más información sobre qué son los Servicios,
* ver https://www.unrealircd.org/docs/Services
*/
link servicios.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 utiliza servicios debe agregarlos aquí.
* ¡¡¡NUNCA ponga aquí el nombre de un servidor UnrealIRCd !!!
*/
ulines {
servicios.ejemplo.org;
}
/* Aquí puede agregar una contraseña para los comandos solo IRCOp /DIE y /RESTART.
* Esto está destinado principalmente a proporcionar una pequeña protección contra accidentes
* se reinicia y el servidor se mata.
*/
drpass {
restart "reiniciar";
die "muere";
}
/* El bloque de registros define qué se debe registrar y en qué archivo.
* Ver también https://www.unrealircd.org/docs/Log_block
*/
/* Este es un buen valor predeterminado, registra todo */
log "ircd.log" {
flags {
oper;
connects;
server-connects;
kills;
errors;
flood;
sadmin-commands;
chg-commands;
oper-override;
tkl;
spamfilter;
}
}
/ * Con "aliases" puedes crear un alias como /ALGO para enviar un mensaje
* algún usuario o bot. Suelen utilizarse para servicios.
*
* Tenemos varios archivos de alias preestablecidos, consulte el directorio alias /.
* Como 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 habituales. */
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reservado para Servicios";
}
/* Prohibir ip.
* Tenga en cuenta que normalmente se usa /KLINE, /GLINE y /ZLINE para esto.
*/
ban ip {
mask 195.86.232.81;
reason "Te odio";
}
/* Ban server - if we see this server linked to someone then we delink */
ban server {
mask eris.berkeley.edu;
reason "Sal de aquí.";
}
/* Banear un user - solo como ejemplo, normalmente usa /KLINE or /GLINE para esto */
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiota";
}
/* Banear realname te 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 prohibición 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 le sugerimos que se agregue aquí. De esa manera siempre puedes entrar
* incluso si accidentalmente te aplicas una prohibición de * LINE.
*/
/* Excepciones, te protege de KLINE and ZLINE */
except ban {
mask *@192.0.2.1;
// puede agregar más entradas de máscara aquí..
}
/* excepto prohibir con tipo 'all' te protege de GLINE, GZLINE, QLINE, SHUN */
except ban {
mask *@192.0.2.1;
type all;
}
/* Con deny dcc puedes prohibir nombres de archivo para DCC */
deny dcc {
filename "*sub7*";
reason "Posible Sub7 Virus";
}
/* deny channel te perimte banear un canal entero (mascará) */
deny channel {
channel "*warez*";
reason "Warez es ilegal";
class "clients";
}
/* VHosts (Virtual Hosts) permite 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: /VHOST test test
* NOTA: solo las personas con un host 'unrealircd.com' pueden usarlo así
* asegúrese de cambiar vhost :: mask antes de realizar la prueba.
*/
vhost {
vhost odio.microsefrs.com;
mask *@unrealircd.com;
login "testeo";
password "testeo";
}
/* Los bloques de 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
* por causar ataques con 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.
* Consulte https://dronebl.org/ para obtener su documentación y el
* significado de los tipos de respuesta. En el momento de escribir este artículo utilizamos tipos:
* 3: IRC Drone, 5: Embotellador, 6: Spambot o drone desconocido,
* 7: DDoS Drone, 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 comprometido,
* 16: Gusanos de autorooting.
*/
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. Consulte https://dronebl.org/lookup?ip=$ip para más detalles.";
}
/* EFnetRBL, consulte https://rbl.efnetrbl.org/ para obtener documentación
* y el significado de los tipos de respuesta.
* Al momento de escribir este artículo: 1 es proxy abierto, 4 es TOR, 5 es drones/flooding.
*
* NOTA: Si desea permitir proxies TOR en su servidor, entonces
* necesita eliminar el '4;' a continuación 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 detectado. Consulte https://rbl.efnetrbl.org/?i=$ip para más detalles.";
}
/* 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";
hiddenhost-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 50-100 caracteres
* 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/Vps para
* que UnrealIRCd genere 3 cadenas aleatorias para ti.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"uno más";
"y otro más";
}
}
/* Configuración específica del servidor */
set {
kline-address "setea.un.correo.electrónico"; /* Correo electrónico o URL que se muestra cuando un usuario está baneado */
modes-on-connect "+ixw"; /* cuando los usuarios se conectan, 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"; /* Las IRCOps se unen automáticamente a este canal. */
options {
hide-ulines; /* ocultar las líneas U en /MAP and /LINKS */
show-connect-info; /* muestra "looking up your hostname" cuando conectas */
}
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
* usar un mensaje QUIT. Con suerte, esto ayudará a detener el spam.
*/
anti-spam-quit-message-time 10s;
/* O simplemente setea un quit estático, significa que cualquier /QUIT es ignorado */
/* static-quit "Client quit"; */
/* static-part hace lo mismo para /PART */
/* static-part yes; */
/* Protección contra flood:
* Hay muchas configuraciones para esto y la mayoría tienen buenos valores predeterminados.
* Ver https://www.unrealircd.org/docs/Set_block#set::anti-flood
*/
anti-flood {
}
/* Opciones de Filtro de texto */
spamfilter {
ban-time 1d; /* la duracion por defecto de un *LINE seteado por el filtro de texto */
ban-reason "Spam/Publicidad"; /* razón por defecto */
virus-help-channel "#ayuda"; /* canal de uso para 'viruschan' */
/* except "#ayuda"; inmunidad para el canal Ayuda del filtro de texto */
}
/* Restringir ciertos comandos.
* Ver https://www.unrealircd.org/docs/Set_block#set::restrict-commands
*/
restrict-commands {
list {
connect-delay 60;
exempt-identified yes;
exempt-reputation-score 24;
}
invite {
connect-delay 120;
exempt-identified yes;
exempt-reputation-score 24;
}
/* Además de la capacidad de restringir cualquier comando,
* como se muestra arriba. También hay 4 tipos especiales
* que puede restringir. Estos son "private-message",
* "private-notice", "channel-message" y "channel-notice".
* Están comentados (desactivados) en este ejemplo:
*/
//private-message {
// connect-delay 10;
//}
//private-notice {
// connect-delay 10;
//}
}
}
/*
* Lo siguiente configurará la limitación de la conexión de "unknown users".
*
* Cuando UnrealIRCd detecta una gran cantidad de usuarios que se conectan desde direcciones IP
* que no se han visto antes, se rechazan las conexiones de las nuevas IP
* por encima de la configuración establecida. Por ejemplo, 10:60 solo pueden conectarse 10 usuarios por minuto
* que no se hayan visto antes. Las direcciones IP conocidas siempre pueden ingresar,
* independientemente de la configuración establecida. Lo mismo para los usuarios que inician sesión con SASL.
*
* Consulte también https://www.unrealircd.org/docs/Connthrottle para obtener más detalles.
* O simplemente siga leyendo los ajustes de configuración predeterminados a continuación:
*/
set {
connthrottle {
/* Primero debemos configurar lo que llamamos "known users".
* De forma predeterminada, estos son usuarios en direcciones IP que tienen
* una puntuación de 24 o más. Una puntuación de 24 significa que
* 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 del grupo "known users" (ya sea por reputación
* o por SASL) siempre están permitidos por este módulo.
*/
known-users {
minimum-reputation-score 24;
sasl-bypass yes;
}
/* Los nuevos usuarios son todos los usuarios que no pertenecen al
* grupo de usuarios conocidos. Se consideran "nuevos" y en
* caso de un gran número de nuevos usuarios que se conectan
* están sujetos a limitación de velocidad de conexión.
* Por defecto, la configuración 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;
}
/* Esta configuración es para cuando este módulo NO este 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 "known users".
* - El servidor acaba de iniciarse (primeros 3 minutos).
*/
disabled-when {
reputation-gathering 1w;
start-delay 3m;
}
}
}
/* Finalmente, es posible que desee tener un MOTD (Mensaje del día), esto puede ser
* hecho creando un archivo de texto 'ircd.motd' en su directorio conf /.
* Este archivo se mostrará a sus 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/Main_Page/es
* 2) https://www.unrealircd.org/docs/FAQ <- ¡responde el 80% de sus preguntas!
* 3) Si aún tiene problemas, puede obtener asistencia:
* - 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.
*/
+455
View File
@@ -0,0 +1,455 @@
/* Fichier de configuration pour UnrealIRCd 5
*
* 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 5 (très complète !) :
* https://www.unrealircd.org/docs/UnrealIRCd_5_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";
/* 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' avec le mot de
* passe 'test'.
* Vous DEVEZ le modifier !!
*/
oper bobsmith {
class opers;
mask *@*;
password "test";
/* 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 */
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 "ircd.log" {
flags {
oper;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
tkl;
spamfilter;
}
}
/* 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 vous protège des KLINE et ZLINE */
except ban {
mask *@192.0.2.1;
// vous pouvez ajouter d'autres lignes mask à la suite
}
/* except ban avec le type 'all' vous protège des GLINE, GZLINE, QLINE, SHUN */
except ban {
mask *@192.0.2.1;
type all;
}
/* 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";
}
/* 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";
hiddenhost-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 5 à 100 caractères aléatoires (entre 10 et 20 suffisent)
* 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 './unreal gencloak' sur votre
* serveur pour que Unreal génère 3 clés aléatoires pour vous.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"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 */
}
}
/*
* Un problème ou besoin d'aide supplémentaire ?
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation/fr
* 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 !
*/
+504
View File
@@ -0,0 +1,504 @@
/* UnrealIRCd 5 için yapılandırma dosyası
* Türkçe Çeviri: Diablo - (Serkan Sepetçi)
* İletişim: irc.trirc.com:6667 - diablo@unrealircd.org
*
* Biz buna basit bir 'unrealircd.conf' dosyası diyoruz.
* Bu dosyası satır satır editleyip conf/ dizinine kopyalayınız. (düzenleyin!)
*
* Önemli: Satırların hepsi, açılış başına { satır sonuna ;
* }; dahil edin. Bu çok önemli, eğer siz ayrıştırıcıyı ;
* eksik koyarsanız yapılandırma dosyası hata verecek
* ve dosya doğru işlemde olmayacaktır!
* Bu sizin UnrealIRCd yapılandırması ile ilk deneyiminiz ise
* dosyayı okumanız için birkaç dakika ayırmanızı öneniriz,
* bu size bilgi edinmeniz açısından yardımcı olacaktır:
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
*
* UnrealIRCd 5 belgeleme (çok geniş!):
* https://www.unrealircd.org/docs/UnrealIRCd_5_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ı
* - 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";
/* 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).
*/
me {
name "irc.example.org";
info "ExampleNET Server";
sid "001";
}
/* 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 5M;
}
/* 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 5 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
*/
/* Örnek bir oper bloğu için 'bobsmith' ile şifresi 'test'.
* Bunu değiştirmeniz GEREKİR!!
*/
oper bobsmith {
class opers;
mask *@*;
password "test";
/* 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 */
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.
*/
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.
* 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
*/
/* Varsayılan ayarlar, neredeyse her şeyi kaydedecektir */
log "ircd.log" {
flags {
oper;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
tkl;
spamfilter;
}
}
/* 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 git buradan.";
}
/* Ban user - normalde /KLINE veya /GLINE kullanıldığını unutmayınız */
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Salak";
}
/* 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 KLINE ve ZLINE gibi banlardan koruyacaktır */
except ban {
mask *@192.0.2.1;
// burada daha fazla mask girdileri ekleyebilirsiniz..
}
/* except ban bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
except ban {
mask *@192.0.2.1;
type all;
}
/* Deny dcc bloğu, sunucu üzerinden DCC yoluyla dosya gönderilmesine izin vermeyecektir */
deny dcc {
filename "*sub7*";
reason "Olası Sub7 Virüsü";
}
/* 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 belirlendi. 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 {
network-name "ExampleNET";
default-server "irc.example.org";
services-server "services.example.org";
stats-server "stats.example.org";
help-channel "#Help";
hiddenhost-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 5-100 karakterlik (10-20 karakter yeterli) 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: './unreal gencloak' Unreal sizin için rastgele 3 adet dizin oluşturur.
* Bunu NIX üzerinde çalıştırabilirsiniz.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"ve diğeri";
"ve diğeri";
}
}
/* Sunucunun kendine özgü yapılandırması */
set {
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 */
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; */
/* Anti flood Koruması
* 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 */
}
}
/* Son olarak, bir MOTD (Günün Mesajı) oluşturabilirsiniz, bu
* conf/ dizininde 'ircd.motd' metin dosyası oluşturarak yapabilirsiniz.
* Bu dosyanın içeriği bağlantı kuran kullanıcılara gösterilecektir.
* Daha fazla bilgi için https://www.unrealircd.org/docs/MOTD_and_Rules bölümünü inceleyiniz.
*/
/*
* Sorununuza veya daha fazla yardımamı ihtiyacınız var?
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
* 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
+237
View File
@@ -0,0 +1,237 @@
/* 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
* 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 downside of option #2 is that you will need to track changes
* in the original 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.
*/
/*** Cloaking (for user mode +x) ***/
loadmodule "cloak";
/*** 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 "opermotd";
loadmodule "sajoin";
loadmodule "samode";
loadmodule "sapart";
loadmodule "sdesc";
loadmodule "sethost";
loadmodule "setident";
loadmodule "stats";
loadmodule "tkl"; /* also server-to-server */
loadmodule "trace";
loadmodule "tsctl";
loadmodule "unsqline";
loadmodule "wallops";
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";
// 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";
/*** Channel modes ***/
loadmodule "chanmodes/floodprot"; /* +f */
loadmodule "chanmodes/nocolor"; /* +c */
loadmodule "chanmodes/noctcp"; /* +C */
loadmodule "chanmodes/stripcolor"; /* +S */
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/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 SSL/TLS users may private message you) */
loadmodule "usermodes/privdeaf"; /* +D (don't let other user PM you) */
/*** Server notice masks */
loadmodule "snomasks/dccreject"; /* +D (rejected DCC's) */
/*** Extended Bans ***/
loadmodule "extbans/join"; /* +b ~j (prevent only joins) */
loadmodule "extbans/quiet"; /* +b ~q (prevent only messaging) */
loadmodule "extbans/nickchange"; /* +b ~n (prevent only nick changes) */
loadmodule "extbans/realname"; /* +b ~r (ban by real name) */
loadmodule "extbans/account"; /* +b ~a (ban/exempt if logged in with services account) */
loadmodule "extbans/inchannel"; /* +b ~c (ban/exempt if in channel) */
loadmodule "extbans/operclass"; /* +b ~O (ban/exempt by operclass) */
loadmodule "extbans/certfp"; /* +b ~S (ban/exempt by certfp) */
loadmodule "extbans/textban"; /* +b ~T (censor or block text) */
loadmodule "extbans/msgbypass"; /* +e ~m (bypass message restrictions) */
loadmodule "extbans/timedban"; /* +b ~t (timed bans / temporary bans) */
loadmodule "extbans/partmsg"; /* +b ~p (hide part/quit message) */
loadmodule "extbans/securitygroup"; /* +b ~G (security group) */
/** 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 "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) */
/*** 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"; /* SSL/TLS certificate fingerprint in /WHOIS (& more) */
loadmodule "tls_antidos"; /* prevent TLS DoS (renegotiate floods) */
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 */
loadmodule "userhost-tag"; /* unrealircd.org/userhost tag for ircops */
loadmodule "targetfloodprot"; /* set::anti-flood::target-flood protection */
+183
View File
@@ -0,0 +1,183 @@
/* 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";
set { staff-file "network.staff"; }
/*** 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";
set {
antirandom {
/* THRESHOLD:
* This is pretty much the most important setting of all.
* For every randomly looking ident the user gets a certain amount of
* 'points', if this value reaches 'threshold' then the appropriate
* action is taken (killed, *lined, see later on).
* lower = more randomly looking users will be catched (but also more
* innocent users)
* higher = less chance of innocent users getting killed, but also less
* chance on bots getting catched.
* <2: DON'T!!
* 4: Works good, probably a few more innocent kills but if you got
* quite a bot problem then this might be a useful 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 7;
/* BAN-ACTION:
* Action to take whenever the user is catched 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.
* You might want to put in an entry to a FAQ or an email address
* where users can mail if they have been catched and don't know what to do.
* NOTE: One of the various reasons that ""innocent users"" are catched is
* if they just 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?
* This has not been tested extensively for false positives, but might be (very)
* helpful to catch GnStA5FYhiTH51TUkf style random nicks as random.
* Enabled by default.
*/
convert-to-lowercase yes;
/* FULLSTATUS-ON-LOAD:
* If enabled, then upon loading it will check all users that are currently
* connected and give a status report about who it would have killed.
* Note that it doesn't actually kill any currently connected users, it is for
* informative purposes only.
* This can be (very) useful if you use the module for the first time.
* But you probably want to disable it after a while, since once the module
* is actively dealing with randomly looking persons, it shouldn't report any
* users anymore on load and then this check only eats useless CPU on /REHASH.
* Enabled by default.
*/
fullstatus-on-load yes;
/* SHOW-FAILEDCONNECTS:
* This will send out a notice whenever a randomly looking user has been catched
* during connecting. Obviously this can be pretty noisy.
* Especially recommended to enable during the first few days you use this module.
*/
show-failedconnects yes;
/* EXCEPT-HOSTS:
* Hostmasks on this list are matched against the IP and hostname of the connecting
* user. If it matches then we do not check if the nick/ident/realname is random.
* NOTE: Use the REAL host or IP here, not any cloaked hosts!
*/
except-hosts {
mask 192.168.0.0/16;
mask 127.0.0.0/8;
}
/* EXCEPT-WEBIRC:
* This will make antirandom not check connections from WEBIRC gateways.
* ( see https://www.unrealircd.org/docs/WebIRC_block )
* It seems WEBIRC connections frequently cause false positives so the
* default is 'yes'.
*/
except-webirc yes;
}
}
// 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://...";
// }
//}
// 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 of characters of
// mixed "scripts", where (for example) some characters are in
// Latin script and other characters are in Cyrillic script.
loadmodule "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
}
}
+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 5 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
* 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; }
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; }
}
}
+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 note:
* 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
-845
View File
@@ -1,845 +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..
* If you try to edit this file without reading the documentation properly
* then you are pretty much guaranteed to fail!
*/
/* 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";
* class "clients"; (optional)
* };
*/
allow channel {
channel "#WarezSucks";
class "clients";
};
/*
* 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", separate 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, 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;
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;
};
/* This is an example of a real command alias */
/* This maps /GLINEBOT to /GLINE <parameter> 2d etc... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";
};
type command;
};
/*
* NEW: files {}
* OLD: include/config.h
*
* This block overrides the IRCd's default paths for loading things
* like the MOTD, saving its PID, or writing/loading its tunefile. The
* existence of this block allows one UnrealIRCd installation to
* support multiple running instances when combined with the -c
* commandline option.
*
* As usual, relative paths are interpreted relative to the directory
* where UnrealIRCd would find unrealircd.conf if -c is _not_
* specified on the commandline.
*/
files
{
/* The Message Of The Day shown to users who log in: */
/* motd ircd.motd; */
/*
* A short MOTD. If this file exists, it will be displayed to
* the user in place of the MOTD. Users can still view the
* full MOTD by using the /MOTD command.
*/
/* shortmotd ircd.smotd; */
/* Shown when an operator /OPERs up */
/* opermotd oper.motd; */
/* Services MOTD append. */
/* svsmotd ircd.svsmotd; */
/* Bot MOTD */
/* botmotd bot.motd; */
/* Shown upon /RULES */
/* rules ircd.rules; */
/*
* Where the IRCd stores and loads a few values which should
* be persistent across server restarts. Must point to an
* existing file which the IRCd has permission to alter or to
* a file in a folder within which the IRCd may create files.
*/
/* tunefile ircd.tune; */
/* Where to save the IRCd's pid. Should be writable by the IRCd. */
/* pidfile ircd.pid; */
};
/*
* 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";
* class "clients"; (optional)
* };
*/
deny channel {
channel "*warez*";
reason "Warez is illegal";
class "clients";
};
/*
* 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].
* HINT: On *NIX, you can run './unreal gencloak' in your shell to let
* Unreal generate 3 random strings for you.
*/
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";
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 connection attempts 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.unrealircd.org #unreal-support,
* note that we require you to READ THE DOCUMENTATION and FAQ first!
*/
-786
View File
@@ -1,786 +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, 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;
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 Viren 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].
* TIPP: Auf *NIX, kann man in der Shell './unreal gencloak' aufrufen und durch
* Unreal 3 Zufalls Stings erzeugen und anzeigen lassen.
*/
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";
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.unrealircd.org
* #unreal-support aufsuchen. Achtung, wir setzen voraus, dass zuvor die
* DOKU GELESEN WURDE (genauso, wie die FAQ!)!
*/
-842
View File
@@ -1,842 +0,0 @@
/*
* example.conf por Danial Hawton, alias Osiris (osiris@unrealircd.org).
* Traducido al castellano por Severus_Snape (javiersnape@gmail.com).
*
* Funciona desde Unreal3.2 hacia adelante
*
* Ok. Este es el nuevo example.conf. Es muy similar a C++.
* De todas formas lleva tiempo hacer esto. En un principio, es dificil de comprender pero
* con un poco de práctica y lectura lo comprenderás.
*
* Simplemente copia este archivo al directorio principal de unrealircd y cambiale el nombre a 'unrealircd.conf'.
*
* NOTA: Todas las líneas, a excepción de la línea de apertura ( { ) terminan en ;, incluyendo la
* línea de cierre ( } ). El IRCd ignorará las lineas comentadas.
*
* ¡POR FAVOR LEE doc/unreal32docs.es.html! La versión online esta disponible en:
* www.vulnscan.org/UnrealIRCd/unreal32docs.es.html
* Contiene mucha información acerca del archivo de configuración: Da información acerca de
* cada bloque, variable, etc.
* ¡Si intentas editar este archivo sin leer bien la documentación
* estas destinado a fallar!
*/
/* Tipos de Comentarios */
#Comentario tipo 1 (Estilo Shell)
// Comentario tipo 2 (Estilo C++)
/* Comentario tipo 3 (Estilo C) */
#Estas líneas son ignoradas por el IRCd.
/*
* UnrealIRCd soporta módulos, cargar algunos de ellos es requerido.
* Al menos debes cargar el módulo de los comandos y un módulo de cifrado (cloaking).
*/
/* PARA *NIX, descomenta las siguientes 2 líneas: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* PARA Windows, descomenta las siguientes 2 líneas: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Además pudes incluir otros archivos de configuración.
* help.conf contiene todo el contenido de /helpop. Los archivos badwords.*.conf
* contienen todas las entradas de badwords para el modo +G...
* spamfilter.conf contiene algunas buenas reglas para los troyanos actuales.
* Probablemente quieres incluirlos:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* NUEVO: me {}
* VIEJO: M:Line
* me {} define el nombre, la descripción y el número de servidor
* para este server. La Sintaxis es:
* me {
* name "nombre.del.servidor";
* info "Descripción del Servidor";
* numeric (número del servidor*);
* };
* * = Si estas enlazando este server, el número no debe ser usado por otro server en la red.
*/
me
{
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
/*
* NUEVO: admin {}
* VIEJO: A:Line
* /Admin te da la información acerca del administrador del servidor. Tu
* puedes poner cuantas líneas quieras debajo de admin {.
* La sintaxis es:
* admin {
* "primera línea";
* "segunda línea";
* [etc]
* };
*/
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
/*
* NUEVO: class {}
* VIEJO: Y:line (old was confusing)
* Esto define la configuración para las clases. Una clase es una configuración en grupo para las
* conexiones. Por ejemplo, las conexiones de los servidores, en vez de ir a la clase de los clientes.
* la diriges a la clase de servidores. La sintaxis es la siguiente:
* class (nombre de la clase)
* {
* pingfreq (que tan seguido pingueara a el servidor/cliente en segundos);
* maxclients (cuantas conexiones para esta clase);
* sendq (cola máxima de envios para la conexión);
* recvq (cola máxima de mensajes recibidos desde la conexión [Control de Flood]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Cantidad máxima de servers que podemos enlazar a la vez */
sendq 1000000;
connfreq 100; /* Cuentos segundos entre cada intento de conexión */
};
/*
* NUEVO: allow {}
* VIEJO: I:Line
* Esto define los permisos de las conexiones...
* Fundamentalmente para los clientes, les permite conectarse así tu puedes tener un poco de
* control y/o poner una contraseña.
* La sintaxis es la siguiente:
* allow {
* ip (IP/IPs a permitir);
* hostname (nombre de host);
* class (clase asignada a esta conexión [ver class {}]);
* password "(contraseña)"; (opcional)
* maxperip (cuantas conexiones por IP); (opcional)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* allow {} con contraseña */
allow {
ip *@255.255.255.255;
hostname *@*.gente.fea.con.clave;
class clients;
password "f00Ness";
maxperip 1;
};
/*
* NUEVO: allow channel {}
* VIEJO: chrestrict
* Permite a un usuario unirse a un canal...
* como una expeción de deny channel.
* Sintaxis:
* allow channel {
* channel "#nombredelcanal";
* };
*/
allow channel {
channel "#WarezApestan";
};
/*
* NUEVO: oper {}
* VIEJO: O:Line
* Define a un Operador de IRC
* Los Operadores de IRC estan para mantener al servidor "sano" y usualmente
* mantenerlo y tenerlo conectado a la red.
* La sintaxis es la siguiente:
* oper (login) {
* class (clase para ponerlos, si es difirente de la que esta en allow {], los mueve a la nueva clase);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (las flags aqui*);
* };
* O
* flags "flags antiguas como, OAaRD";
* };
*/
/* Para una lista de banderas de operador, lea doc/unreal32docs.es.html#operblock
* [lectura ALTAMENTE recomendada]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* NUEVO: listen {}
* VIEJO: P:Line
* Esto define el puerto/IP a el que el IRCd debe escuchar y unirse, esto
* permite a los usuarios/servidores conectarse al servidor.
* La sintaxis es:
* listen (Dirección IP):(número de puerto)
* {
* options {
* (opciones aqui);
* };
* };
* o simplemente
* listen: listen (ip):(puerto);
*
* NOTA: para IPs IPv6 (3ffe:b80:2:51d::2, etc.), use listen [ip]:puerto;
*
* Eso también funciona.
*/
/* Opciones para listen {}:
VIEJAS | NUEVAS | SIGNIFICADO
S serversonly Sólo Servidores
C clientsonly Sólo Clientes
J java Sólo Clientes Java
s ssl Conexion Cifrada (SSL)
* standard Standard
*/
/* NOTA EN PUERTOS SSL: Los puertos SSL no están estandarizados,
* muchos puertos SSL estan en números muy altos, algunas personas dicen que deberias hacerlo
* en el puerto 994 por que ese es el puerto SSL oficial... ¡pero eso
* requiere acceso root! Además, el puerto 194 es el puerto oficial de IRC... y
* has visto alguna vez ver un IRCd corriendo en ese puerto? Usan el 6667.
* Asi que, nuestra sugerencia es que uses el puerto 6697 para SSL, ese puerto es usado por
* una cantidad de redes decente y es reconozido por ejemplo: por StunTour.
* Además eres libre de abrir cuantos puertos SSL quieras, pero
* correr uno en 6697 ayudaría al mundo a estandarizarlo un poco mas :).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* NOTA: Si estas en shell IRCd con multiples IPs, normalmente
* obtendras un error como 'La dirección ya esta en uso/Address already in use' en tus logs
* y el IRCd no iniciará. Esto significa que tu DEBES unir el IRCd
* a una IP específica en vez de '*', por ejemplo:
* listen 1.2.3.4:6667;
* Obviamente, reemplaza esa IP con la IP que se te fue asignada.
*/
/*
* NUEVO: link {}
* VIEJO: C/N:Lines
* Esto define los enlazes entre servidores.
* NOTA: ¡LOS DOS SERVIDORES NECESITAN UN BLOQUE LINK {} PARA ENLAZARSE BIEN!
* La sintaxis es:
* link (nombre.del.servidor)
* {
* username (nombre de usuario, * también funciona);
* hostname (dirección IP/máscara de host);
* bind-ip (A que IP unirse cuando se estan enlazando, o *);
* port (Puerto al cual conectarse);
* hub (Si esto es un hub, * funciona.);
* [o leaf *;]
* password-connect "(contraseña a enviar)";
* password-receive "(contraseña que deberiamos)";
* class (Clase a donde dirigir los servers);
* options {
* (las opciones van aqui*);
* };
* // Si tu uses SSL, debes escoger que cifrado usar en el modo SSL
* // Obtiene una lista con "openssl ciphers", separa los métodos de cifrados con ":"
*
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
opciones:
VIEJAS | NUEVAS | SIGNIFICADO
S ssl Usar SSL
Z zip Comprimir los datos enviados.
N/A autoconnect su servidor intentará conectar automáticamente.
El tiempo usado entre intentos es el que especificó en class::connfreq
(se recomienda para un sólo lado, de leaf a hub)
N/A quarantine Aislar
N/A nodnscache No usar Caché DNS (Muy útil para DDNS)
*/
link hub.mynet.com
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Nota: No deberias usar autoconnect cuando conectas servicios */
autoconnect;
ssl;
zip;
};
};
/*
*
* NUEVO: ulines {}
* VIEJO: U:Line
* Las ulines {} le dan a los servidores mas poder/comandos, ¡esto SOLO debe ser usado
* para los servidores de servicios/estadísticas y NUNCA para servidores UnrealIRCd normales!.
* (Para un buen funcionamiento, todos los servidores deberían tener los mismos U:Lines)
* La Sintaxis es la siguiente:
* ulines {
* (servidor a ulinear);
* (servidor a ulinear);
* [etc]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* NUEVO: {}
* VIEJO: X:Line
* Esto define las contraseñas para /die y /restart.
* La sintaxis es:
* drpass {
* restart "(contraseña para reiniciar)";
* die "(contraseña para matar al IRCd)";
* };
*/
drpass {
restart "amo-reiniciar";
die "muere-inepto";
};
/*
* NUEVO: log {}
* VIEJO: N/A
* Le dice al IRCd donde y que loguear. Puedes tener cuantos tu quieras.
*
* FLAGS: errors, kills, tkl, connects, server-connects, oper
*
* Sintaxis:
* log "archivo.log"
* {
* flags
* {
* flag;
* flag;
* etc...
* };
* };
*/
log "ircd.log" {
/* Borra el archivo e inicia uno nuevo cuando logre 2MB, no uses esto para siempre usar el mismo log */
maxsize 2097152;
flags {
oper;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* NUEVO: alias {}
* VIEJO: N/A
* Esto te permite hacer aliases de comandos como /nickserv, /chanserv, etc.
* FLAGS: services, stats, normal
*
* Sintaxis:
* alias "nombre" {
* target "apunta a";
* type aliastype;
* };
*
* [NOTA: Tu también puedes usar un archivo de aliases-predefinidos, lea doc/unreal32docs.es.html sección 2.9]
*/
// Esto apunta el comando a /nickserv a el usuario NickServ el cual esta conectado con el servidor de set::services-server.
/*alias NickServ {
target "NickServ";
type services;
};*/
// Si tu quieres el comando que apunta al el mismo nick que el comando, puedes dejar la entrada "nick" vacia.
//alias ChanServ { type services; };
// Apunta el comando /statserv a el usuario StatServ en el servidor set::stats-server.
//alias StatServ { type stats; };
// Apunta el comando /superbot a el usuario SuperBot
//alias SuperBot { type normal; };
/* Aliases Standard */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* NUEVO: alias {}
* VIEJO: N/A
* Esto te permite configurar aliases de comandos como /identify, /services, etc.
*
* Sintaxis:
* alias "nombre" {
* format "Formato de la Cadena" {
* target "apunta a";
* type tipodealias;
* parameters "parametros a enviar";
* };
* type command;
* };
*/
/* Esto es mostrado separadamente por que hasta tiene el mismo nombre que la directiva anterioir as, es muy diferente en sintaxis,
* pero provee una función muy similar.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* La directiva alias::format es una expresión regular. El primer formato coincide con el comando /identify cuando
* el primer carácter es #. Luego pasa esto a ChanServ con los parámetros IDENTIFY
* %1-. El segundo formato coincide con /identify cuando el primer caracter no es un #. Entonces
* el comando pasa a nickserv con los parámetros IDENTIFY %1-.
*/
/* El alias::format::parameters es similar a los lenguajes de scripting. %N (donde N es un número) representa el
* parámetro enviado al comando (en este caso, /identify). Si especificas %N- significa "todos los parámetros desde
* N hasta el último parámetro en la cadena". También puedes especificar %n que es reemplazado por el nick del usuario.
*/
/* Aliases Standard */
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;
};
/* Este es un ejemplo de un alias de comando real */
/* Esto redirije /GLINEBOT a /GLINE <parámetro> Los Bots 2D... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 Los Bots 2D no están permitidos en este servidor, para mas información lea la faq en http://www.ejemplo.com/faq/123";
};
type command;
};
/*
* NUEVO: files {}
* VIEJO: include/config.h
*
* Este bloque se sobrepone con el dirctorio principal del IRCd para cargar cosas
* como el MOTD, el PIPfile, o escribir/cargar el tunefile. La
* existencia de este bloque permite una instalación de UnrealIRCd a
* soportar múltiples instancias corriendo cuando es combinado con la opción -c
* en la línea de comandos.
*
* Usualmente. Los directorios relativos son interpretados relativamente a el directorio
* donde UnrealIRCd encuentra unrealircd.conf si -c -no-
* es especificado en la línea de comandos.
*/
files
{
/* El Mensaje del Dia (MOTD - Message of the Day) mostrado a los usuarios que se conectan: */
/* motd ircd.motd; */
/*
* Un MOTD corto. Si el archivo existe, sera mostrado a
* el usuario en vez del MOTD. Los usuarios todavia podrán ver el
* MOTD completo usando el comando /MOTD.
*/
/* shortmotd ircd.smotd; */
/* Mostrado cuando un operador usa /OPER y se loguea exitosamente. */
/* opermotd oper.motd; */
/* El MOTD de los Servicios. */
/* svsmotd ircd.svsmotd; */
/* El MOTD de los Bots */
/* botmotd bot.motd; */
/* Las reglas que se muestran al usar /RULES */
/* rules ircd.rules; */
/*
* Donde el IRCd guarda y carga algunos parámetros que deberían
* ser persistentes entre reinicios del servidor. Debe apuntar a un
* archivo existente el cual el IRCd tiene permiso para alterarlo o un
* archivo en una carpeta donde el IRCd puede crear archivos.
*/
/* tunefile ircd.tune; */
/* Donde guardar el PID del IRCd. Debería ser modificable por el IRCd. */
/* pidfile ircd.pid; */
};
/*
* NUEVO: tld {}
* VIEJO: T:Line
* Esto configura MOTDs y RULES distintos
* dependiendo en la máscara de host del cliente.
* La sintaxis es:
* tld {
* mask (ident@host);
* motd "(archivo-motd)";
* rules "(archivo-rules)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* NOTA: tu puedes simplemente borrar el bloque de ejemplo aqui arriba,
* en ese caso los MOTD/RULES normales (ircd.motd, ircd.rules)
* serán usados para todos.
*/
/*
* NUEVO: ban nick {}
* VIEJO: Q:Line
* Banea a un nick, así no puede ser usado.
* La sintaxis es la siguiente:
* ban nick {
* mask "(nick a banear)";
* reason "(rasón)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reservado para los Servicios";
};
/*
* NUEVO: ban ip {}
* VIEJO: Z:Line
* Banea una IP de conectarse a la red.
* Sintaxis:
* ban ip { mask (ip/hostmask); reason "(rasón)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Servidor delinkeado";
};
/*
* NUEVO: ban server {}
* VIEJO: Server Q:Line
* Prohibe a un servidor de conectarse a la red.
* Si el servidor se linkea a un servidor remoto, el servidor local
* se desconectará de la red.
* La sintaxis es la siguiente:
* ban server {
* mask "(nombre.del.servidor)";
* reason "(Rasón)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Fuera de aca.";
};
/*
* NUEVO: ban user {}
* VIEJO: K:Line
* Esto hace que un usuario con una máscara de host determinada no se pueda conectar
* a tu servidor.
* Sintaxis:
* ban user { mask (hostmask/ip); reason "(rasón)"; };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiota";
};
/*
* NUEVO: ban realname {}
* VIEJO: n:Line
* Este bloque banea a un determinado realname (nombre real) de ser usado.
* Sintaxis:
* ban realname {
* mask "(nombre real)";
* reason "(rasón)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* NOTA PARA TODOS LOS BANS, puedes repetirlos para agregar mas!
*
* NUEVO: except ban {}
* VIEJO: E:Line
* Eso hace que no puedas ser baneado.
* Sintaxis:
* except ban { mask (ident@host); };
* Repite el except ban {} cuantas veces quieras
* para diferentes bans.
*/
except ban {
/* no banees a stskeeps */
mask *stskeeps@212.*;
};
/*
* NUEVO: deny dcc {}
* VIEJO: dccdeny.conf
* Use este block para denegar DCC SENDs...
* detiene a los virus mejor.
* Sintaxis
* deny dcc
* {
* filename "(archivo a bloquear (por ejemplo: *.exe"));
* reason ("rasón");
* };
*/
deny dcc {
filename "*sub7*";
reason "Posiblemente un virus Sub7";
};
/*
* NUEVO: deny channel {}
* VIEJO: N/A (NUEVO)
* Esto bloquea canales de ser creados.
* Sintaxis:
* deny channel {
* channel "(canal)";
* reason "rasón";
* };
*/
deny channel {
channel "*warez*";
reason "El Warez es ilegal";
};
/*
* NEW: vhost {}
* OLD: Vhost.conf file
* Setea una IP para los no-operadores, o
* para opers muy flojos para hacer /sethost :P
* Sintaxis:
* vhost {
* vhost (vhost.com);
* from {
* userhost (ident@host.a.permitir.usar.el.vhost);
* };
* login (nombre del login);
* password (contraseña);
* };
* para usar este vhost, usa /vhost (login) (contraseña) en IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Puedes incluir otros archivos de configuración */
/* include "klines.conf"; */
/* Configuración de la red */
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"; */
/* Las llaves de cifrado (cloak keys) deberían ser las mismas en toda la red.
* Son usadas para generar hosts "enmascarados" y mantenerlos secretos.
* Las llaves deben ser 3 cadenas aleatorias de 5 a 100 carácteres
* (de 10 a 20 es aceptable también) y deben tener una minúscula (a-z),
* mayúscula (A-Z) y dígitos (0-9) [mira el ejemplo de la primera llave].
* CONSEJO: En *NIX puedes ejecutar './unreal gencloak' en tu shell para hacer que
* Unreal genere tres cadenas aleatorias por ti.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"and another one";
"and another one";
};
/* host para los operadores */
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";
};
};
/* Configuración específica del servidor */
set {
kline-address "configura.este@email";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
options {
hide-ulines;
/* Puedes habilitar el chequeo de ident si quieres*/
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* El tiempo mínimo que un usuario debe estar conectado antes de usar un mensaje QUIT,
* Esto podria detener el spam */
anti-spam-quit-message-time 10s;
/* Hace que el mensaje en static-quit se muestr en todos kis quits - significando que
no se permiten quits personalizados en este servidor */
/* static-quit "El Cliente se desconectó"; */
/* También puedes bloquear todas las razones de part, descomentando el siguiente comentario y poniendo 'yes',
* o especificar otro mensaje (ejemplo: "¡Adiós!") para usar siempre como razón. */
/* static-part yes; */
/* Esto permite que pudas hacer algunos comandos de /stats solo para uso de los operadores, use * para ocultar todos los stats,
* dejelo en blanco para permitir a los usuarios ver todos los /stats. Escriba '/stats' para una lista completa.
* Algunos administradores querrán remover los stats "kGs" para prohibir a los usuarios normales ver los
* klines, glines y shuns.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Regulación de Conexiones: este ejemplo setea un límite de 3 intentos de conexión cada 60 segundos (por host). */
throttle {
connections 3;
period 60s;
};
/* Protección anti-flood */
anti-flood {
nick-flood 3:60; /* 3 cambios de nick por cada 60 segunos (por defecto) */
};
/* Filtro de Spam */
spamfilter {
ban-time 1d; /* duración de un *line puesto por spamfilter (filtro de spam) */
ban-reason "Spam/Publicidad"; /* razón */
virus-help-channel "#help"; /* canal para usar para la acción "viruchan" */
/* exceptuar "#help"; el canal "#help" esta libre de filtro */
};
};
/*
* Problemas o necesitas mas ayuda?
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.es.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ (en inglés)<- ¡contiene el 80% de tus preguntas!
* 3) Si sigues teniendo problemas, ve a irc.unrealircd.org #unreal-support,
* ¡nótese que NECESITAMOS que leas la DOCUMENTACIÓN y la FAQ antes de preguntarnos!
*/
-858
View File
@@ -1,858 +0,0 @@
/*
* example.conf par Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* Ancien traducteur français : babass
* Tradution française : Alef Burzmali - http://www.burzmali.com
* Dernière mise à jour : 2010-09-11
* $Id$
*
* Fonctionne pour Unreal3.2 et supérieur
*
* Okay les gars, 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 de lecture vous comprendrez.
*
* Copiez juste ce fichier dans votre répertoire unrealircd principal et appellez le 'unrealircd.conf'.
*
* NOTE: Toutes les lignes, exceptées les ligne d'ouvertures { , se terminent par un ;, en particulier
* celles de fermeture }.
* L'IRCd ignorera les lignes commentées.
*
* LISEZ S'IL VOUS PLAIT doc/unreal32docs.fr.html !
* La version en ligne est aussi disponible à : http://www.unrealircd.com/files/docs/unreal32docs.fr.html
* Elle contient beaucoup d'informations à propos du fichier de configuration : fournit des informations
* à propos de chaque bloc, variable, etc..
* Si vous essayez de modifier ce fichier sans avoir bien lu la documentation,
* vous êtes presque sûr de vous tromper.
*/
/* Type de commentaires */
#Commentaire type 1 (type Shell)
// Commentaire type 2 (style C++)
/* Commentaire type 3 (style C) */
# Toutes ces lignes sont ignorées par l'ircd.
/*
* UnrealIRCd supporte des modules et certains sont obligatoires.
* 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.
* doc/help.fr.conf contient tout le texte de /helpop en français.
* help.conf contient la version anglaise.
* 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 "doc/help.fr.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 l'identifiant numérique pour ce serveur.
* La syntaxe est la suivante :
* me {
* name "nom.du.serveur";
* info "Description du Serveur";
* numeric (numeric* serveur);
* };
* En cas de link, cet identifiant 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éfinit les réglages pour les classes. Une classe est un groupe de réglages pour
* des connexions. Par exemple, pour 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éfinit 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 : oper {}
* ANCIEN : O:Line
* Définit 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 du bloc allow, les déplace 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éfinit 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
* beaucoup 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 à se standardiser un peu ;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* NOTE: Si vous êtes sur un shell avec de multiples IP 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éfinit 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 (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 algorithme de hash utiliser dans le mode SSL
* // Utilisez la commande "openssl ciphers" pour obtenir la liste des algorithmes disponibles, séparez les 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 serveurs 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, 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;
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 qu'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 directive alias::format est une expression régulière. Le premier format correspond à la commande
* /identify command lorsque le premier caractère est un #. Cela renvoit donc à l'alias chanserv avec
* les paramètres IDENTIFY %1-. Le second format correspond à la commande /identify lorsque le premier
* caractère n'est pas un #. Cela envoie 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;
};
/* Ceci est un exemple de véritable alias de commande*/
/* Ceci renvoye /GLINEBOT à /GLINE <parameter> 2d etc... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Les bots ne sont pas permis sur ce serveur, lisez s'il-vous-plait la faq sur http://www.example.com/faq/123";
};
type command;
};
/*
* ACTUEL : files {}
* ANCIEN : include/config.h
*
* Ce bloc écrase les chemins utilisés par défaut par l'IRCd pour charger des choses
* comme le MOTD, enregistrer son PID ou écrire ou lire son fichier de sauvegarde (tunefile).
* L'existence de ce bloc permet à une installation de UnrealIRCd de supporter
* plusieurs instances tournant simultanément lorsque combinée à l'option de ligne
* de commande -c
*
* Comme d'habitude, les chemins relatifs sont interprétés à partir du répertoire
* dans lequel UnrealIRCd trouverait unrealircd.conf si -c N'est PAS spécifiée
* sur la ligne de commande.
*/
files
{
/* Le message du jour (Message Of The Day) affiché aux utilisateurs se connectant : */
/* motd ircd.motd; */
/*
* Un MOTD court. Si ce fichier existe, il sera affiché aux
* utilisateurs à la place du MOTD. Ceux-ci peuvent toujours voir
* le MOTD complet en utilisant la commande /MOTD
*/
/* shortmotd ircd.smotd; */
/* Affiché lorsqu'un opérateur utilise /OPER */
/* opermotd oper.motd; */
/* MOTD des services. */
/* svsmotd ircd.svsmotd; */
/* MOTD des bots */
/* botmotd bot.motd; */
/* Affiché par la commande /RULES */
/* rules ircd.rules; */
/*
* Fichier dans lequel l'IRCd sauvegarde et charge quelques valeurs qui devraient
* être conservées malgré les redémarrages du serveur. Doit pointer vers un fichier
* existant que l'IRCd peut modifier ou vers un fichier dans un dossier dans
* lequel l'IRCd peut créer des fichiers.
*/
/* tunefile ircd.tune; */
/* Fichier dans lequel l'IRCd stocke son pid. L'IRCd doit pouvoir le modifier. */
/* pidfile ircd.pid; */
};
/*
* ACTUEL : tld {}
* ANCIEN : T:Line
* Ceci applique un 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,
* auquel 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
* Bannit 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 bannit pas stskeeps */
mask *stskeeps@212.*;
};
/*
* ACTUEL : deny dcc {}
* ANCIEN : dccdeny.conf
* Utilisez ceci pour bloquer l'envoi de dcc ...
* Utile pour bloquer 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 joints.
* Syntaxe :
* deny channel {
* channel "(salon)";
* reason "raison";
* class "clients"; (optionnel)
* };
*/
deny channel {
channel "*warez*";
reason "Warez is illegal";
class "clients";
};
/*
* ACTUEL : allow channel {}
* ANCIEN : chrestrict
* Autorise un utilisateur à joindre un salon...
* comme une exception au deny channel.
* Syntaxe :
* allow channel {
* channel "nom du salon";
* class "clients"; (optionnel)
* };
*/
allow channel {
channel "#WarezSucks";
class "clients";
};
/*
* 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é].
* Astuce : Sur *NIX, vous pouvez utiliser la commande './unreal gencloak' dans votre shell pour que
* Unreal génère 3 chaînes aléatoires pour vous.
*/
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 "définir.cet.email";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
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 tentatives de connection 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) http://www.unrealircd.com/files/docs/unreal32docs.fr.html
* 2) http://www.vulnscan.org/UnrealIRCd/faq/ <- contient 80% de vos questions !
* 3) Si vous avez encore des problèmes vous pouvez aller sur irc.unrealircd.org #unreal-support,
* notez que vous devez avoir LU LA DOCUMENTATION ET LA FAQ d'abord !
*/
-823
View File
@@ -1,823 +0,0 @@
/*
* example.conf Daniel Hawton avagy Osiris jóvoltából (osiris@unrealircd.org).
* A magyar fordítást AngryWolf <angrywolf2009@gmail.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.
* Ha megpróbálod szerkeszteni ezt a fájlt anélkül, hogy megfelelően elolvastad
* volna a dokumentációt, jó eséllyel kanyarodsz a biztos kudarc felé!
*/
/* 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 algoritmusokat :-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, 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;
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;
};
/* Példa egy valódi álparancsra */
/* A /GLINEBOT parancsot leképezi arra, hogy /GLINE <paraméter> 2d stb... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Botok tilosak ezen a szerveren, kérlek, olvasd el a faq-ot a http://www.example.com/faq/123 címen";
};
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. Az á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ó].
* TIPP: *NIX alatt az './unreal gencloak' parancsot futtatva
* a parancsértelmezőnkben, az Unreal 3 véletlen sztringet
* generál nekünk.
*/
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";
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 legfeljebb 3 kapcsolódási
* kísérletet engedélyező korlátozást állít be (gazdánként). */
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.unrealircd.org #unreal-support
* csatornájára. Fontos: kérjük, hogy előbb OLVASD EL A DOKUMENTÁCIÓT és
* a GYIK-ot!
*/
-816
View File
@@ -1,816 +0,0 @@
/*
* example.conf door Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* $Id$
* Vertaald door Mark
*
* Werkt voor Unreal3.2 en hoger
*
* Dit is de nieuwe example.conf. Het lijkt veel op C++.
* Het begin is wellicht moeilijk, maar met wat ervaring en lezen
* zul je het wel begrijpen.
*
* Kopieer dit bestand naar je hoofd UnrealIRCd dir en noem het 'unrealircd.conf'.
*
* OPMERKING: Alle regels, behalve de openings { regel, eindingen met een ;, dus
* ook de sluitende } regel. Commentaar regels worden door de IRCd niet verwerkt.
*
* LEES doc/unreal32docs.html! De online versie is tevens te bereiken op:
* www.vulnscan.org/UnrealIRCd/unreal32docs.html
* Er staat heel veel informatie in over het configbestand: informatie over
* elk block, variabele, etc..
* Wanneer je dit bestand aanpast zonder de documentatie grondig te lezen,
* zul je gegarandeerd falen!
*/
/* Type van commentaar */
#Commentaar type 1 (Shell type)
// Commentaar type 2(C++ style)
/* Commentaar type 3 (C Style) */
#Deze regels worden niet verwerkt door de IRCd.
/*
* UnrealIRCd ondersteunt modules, het laden van sommige is benodigd.
* Je hebt tenminste een commands module en een cloacking module nodig.
*/
/* VOOR *NIX, haal de commentaartekens weg bij de volgende 2 regels: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* VOOR Windows, haal de commentaartekens weg bij de volgende 2 regels: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Je kan tevens andere configuratiebestanden toevoegen.
* help.conf bevat alle /helpop tekst. De badwords.*.conf
* bestanden bevatten alle badword instellingen voor mode +G..
* spamfilter.conf bevat enkele goede regels voor huidige trojans.
* Je wilt deze waarschijnlijk laden:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* NIEUW: me {}
* OUD: M:Line
* me {} definieert de naam, beschrijving en unreal numeriek voor deze server.
* De syntax is als volgt:
* me {
* name "server.naam";
* info "Server Beschrijving";
* numeric (server numeric*);
* };
* Waneer je servers linkt, mag de numeric niet door een andere server in gebruik zijn.
*/
me
{
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
/*
* NIEUW: admin {}
* OUD: A:Line
* Admin geeft informatie over de server admin. Je mag hier
* zo veel regels opgeven als je wilt.
* De syntax is als volgt:
* admin {
* "eerste regel";
* "tweede regel";
* [etc]
* };
*/
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
/*
* NIEUW: class {}
* OUD: Y:line (de oude was verwarrend)
* Hiermee stel je de classes in. Een class is een groepsinstelling voor
* connections. Server connecties stuur je naar een andere class dan
* gebruikers.
* De syntax is als volgt:
* class (class naam)
* {
* pingfreq (hoe vaak er gepingt moet worden naar een gebruiker/server in seconden);
* maxclients (hoeveel connecties er maximaal in deze class mogen zijn);
* sendq (maximale send queue voor 1 connectie);
* recvq (maximale receive queue voor 1 connectie [flood control]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Hoeveel servers we maximaal tegelijk gelinkt kunnen hebben */
sendq 1000000;
connfreq 100; /* Hoeveel seconden tussen een poging to verbinden */
};
/*
* NIEUW: allow {}
* OUD: I:Line
* Hiermee stel je het toestaan van connecties in.
* Gebruikers kunnen verbinden, en jij hebt wat controle en kan eventueel
* een wachtwoord instellen.
* De syntax is als volgt:
* allow {
* ip (ip mask dat toegestaan moet worden);
* hostname (host mask);
* class (class waarnaar ze gestuurd moeten worden [see class {}]);
* password "(wachtwoord)"; (optioneel)
* maxperip (hoeveel connecties per IP); (optioneel)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Allow met wachtwoord */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
/*
* NIEUW: allow channel {}
* OUD: chrestrict
* Geeft de mogelijkheid een kanaal te joinen,
* als uitzondering voor een deny channel {}
* De syntax is als volgt:
* allow channel {
* channel "kanaal naam";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* NIEUW: oper {}
* OUD: O:Line
* Stelt een IRC Operator in
* IRC Operators zorgen voor orde op de server en zorgen er
* tevens voor dat de server verbonden blijft met het netwerk.
* De syntax is als volgt:
* oper (login) {
* class (class waarin ze geplaatst moeten worden.);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (flags hier*);
* };
* OF
* flags "oud type flags, zoals OAaRD";
* };
*/
/* Voor een lange lijst van oper flags, zie doc/unreal32docs.html#operblock
* [wordt ten zeerste aangeraden te lezen!]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* NIEUW: listen {}
* OUD: P:Line
* Hiermee stel je een poort in voor de IRCd, zodat
* gebruikers/servers kunnen verbinden met je server.
* De syntax is als volgt:
* listen (ip nummer):(port nummer)
* {
* options {
* (opties hier);
* };
* };
* of een gewone:
* listen: listen (ip):(port);
*
* OPMERKING: voor IPv6 IPs (3ffe:b80:2:51d::2 etc), gebruik listen [ip]:port;
*
* Dat werkt ook.
*/
/* Opties voor listen:
OUD | NIEUW
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* Opmerking voor SSL poorten: SSL poorten zijn niet echt
* standaard. Mensen zeggen dat je SSL op poort 994 moet laten
* lopen, omdat dit de standaard SSL poort is.. Maar meestal worden
* hogere poorten gebruikt. Om poort 994 te gebruiken, moet je root
* zijn! Tevens is poort 194 de officiele IRC poort. Maar heb je daar
* ooit een IRCd op zien lopen?
* Wij raden je aan om poort 6697 voor SSL te gebruiken. Dit wordt op
* vrijwel alle netwerken gebruikt en wordt herkend door bijvoorbeeld
* StunTour. Je mag zoveel SSL poorten openen als je wil, maar als je
* (tevens) 6697 gebruikt, help je mee de wereld meer uniform te maken ;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* Opmerking: Als je een IRCd shell gebruikt met meerdere IPs, krijg
* je wellicht een "Address already in use" error in je log
* en de IRCd zal niet starten. Dit betekent dat je MOET binden
* naar een specifiek IP in plaats van '*', bijvoorbeeld:
* listen 1.2.3.4:6667l
* Natuurlijk moet je het IP vervangen door het IP dat je toewezen is.
*/
/*
* NIEUW: link {}
* OUD: C/N:Lines
* Geeft een server toegang om te verbinden.
* OPMERKING: Beiden servers hebben een link { } nodig om goed te kunnen verbinden!
* De syntax is als volgt:
* link (server naam)
* {
* username (username, * werkt ook);
* hostname (ip number/hostmask);
* bind-ip (welk IP te binden wanneer je connect, of *);
* port (poort om naar te verbinden);
* hub (Als dit een hub is, werkt '*');
* [of leaf *;]
* password-connect "(wachtwoord te zenden)";
* password-receive "(wachtwoord te ontvangen)";
* class (class waarin de server geplaatst moet worden);
* options {
* (opties hier*);
* };
* // Als we SSL gebruiken, kunnen we kiezen welke cipher we willen gebruiken in SSL mode
* // Verkrijg een lijst door "openssl ciphers", onderscheid ciphers met :'s
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
opties:
OUD | NIEUW
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 {
/* Opmerking: Gebruik geen autoconnect naar Services */
autoconnect;
ssl;
zip;
};
};
/*
*
* NIEUW: ulines {}
* OUD: U:Line
* U:Lines geven servers meer macht/commando's. Gebruik het alleen voor
* services en stats, en NOOIT voor normale UnrealIRCd servers!
* De syntax is als volgt:
* ulines {
* (server to uline);
* (server to uline);
* [etc]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* NIEUW: drpass {}
* OUD: X:Line
* Stelt de wachtwoorden voor /die en /restart in.
* De syntax is als volgt:
* drpass {
* restart "(wachtwoord voor herstart)";
* die "(wachtwoord voor beeindigen)";
* };
*/
drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};
/*
* NIEUW: log {}
* OUD: N/A
* Laat de IRCd weten wat en waar te loggen. Je kan er
* zoveel instellen als je wilt.
*
* FLAGS: errors, kills, tkl, connects, server-connects, kline, oper
*
* De syntax is als volgt:
*
* log "log file"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Verwijder het logbestand en begint een nieuwe wanneer de oude 2MB groot is. Laat dit leeg om altijd
hetzelfde bestand te gebruiken */
maxsize 2097152;
flags {
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* NIEUW: alias {}
* OUD: N/A
* Hiermee stel je commando's zoals /nickserv, /chanserv etc in.
* FLAGS: services, stats, normal
*
* De syntax is als volgt:
* alias "naam" {
* target "wijst naar";
* type aliastype;
* };
*
* [Opmerking: Je kan ook een standaard alias bestand gebruiken, zie doc/unreal32docs.nl.html sectie 2.9]
*/
// Dit wijst het commando /nickserv naar de gebruiker NickServ welke verbonden is met set::services-server
/*alias NickServ {
target "NickServ";
type services;
};*/
// Als je het commando naar dezelfde nick als het commando wil sturen, kun je "target" weglaten.
//alias ChanServ { type services; };
// Wijst het /statserv commando naar de gebruiker Statserv verbonden met set::stats-server
//alias StatServ { type stats; };
// Wijst het /superbot commando naar de gebruiker SuperBot
//alias SuperBot { type normal; };
/* Standaard aliases */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* NIEUW: alias {}
* OUD: N/A
* Hiermee stel je commando's zoals /identify, /services in.
*
* De syntax is als volgt:
* alias "naam" {
* format "format string" {
* target "wijst naar";
* type aliastype;
* parameters "parameters te verzenden";
* };
* type command;
* };
*/
/* Hier wordt apart notitie van gemaakt, hoewel het dezelfde naam heeft als het vorige block. Het verschilt veel
* in syntax, maar het maakt gebruik van dezelfde functies.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* De alias::format is een reguliere expressie. Het eerste formaat matcht het /identify commando wanneer
* het eerste teken een # is. Daarna wordt het doorgezonden naar de chanserv alias met de parameters
* IDENTIFY %1-. Het tweede formaat matcht het /identify commando wanneer het eerste teken geen # is. Daarna
* wordt het commando doorgestuurd naar de nickserv alias met de parameters IDENTIFY %1-.
*/
/* Het alias::format::parameters is gelijk aan script-talen. %N (N is een nummer) staat voor de parameter die
* gezonden is naar het commando (in dit geval /identify). Wanneer je %N- opgeeft, betekent dat alle parameters
* vanaf N tot de laatste paramater in de string. Je kan ook %n gebruiken, waar %n vervangen wordt door de nick.
*/
/* Standaard 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;
};
/* Dit is een voorbeeld van een echt commando alias */
/* Dit verwijst /GLINEBOT naar /GLINE <parameter> 2d etc... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Bots are not allowed on this server, please read the faq at http://www.example.com/faq/123";
};
type command;
};
/*
* NIEUW: tld {}
* OUD: T:Line
* Hiermee stel je verschillende MOTD en RULES bestanden in,
* afhangend van de gebruikers hostmask.
* De syntax is als volgt:
* tld {
* mask (ident@host);
* motd "(motd bestand)";
* rules "(rules bestand)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* Opmerking: je kan het bovenstaande voorbeeld verwijderen.
* In dat geval worden de standaard motd/rules bestanden (ircd.motd, ircd.rules).
* gebruikt voor iedereen.
*/
/*
* NIEUW: ban nick {}
* OUD: Q:Line
* Bant een nickname zodat deze niet gebruikt kan worden.
* De syntax is als volgt:
* ban nick {
* mask "(nick om te bannen)";
* reason "(reden)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reserved for Services";
};
/*
* NIEUW: ban ip {}
* OUD: Z:Line
* Bant een IP van de server
* De syntax is als volgt:
* ban ip {
* mask (ip number/hostmask);
* reason "(reden)";
* };
*/
ban ip {
mask 195.86.232.81;
reason "Delinked server";
};
/*
* NIEUW: ban server {}
* OUD: Server Q:Line
* Zorgt ervoor dat een server niet kan verbinden met het netwerk.
* Als de server naar een andere server linkt, zal de lokale server
* de verbinding met het netwerk verbreken.
* De syntax is als volgt:
* ban server {
* mask "(server naam)";
* reason "(reden)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Get out of here.";
};
/*
* NIEUW: ban user {}
* OUD: K:Line
* Zorgt ervoor dat een gebruiker met een bepaalde mask niet
* kan verbinden met je server.
* De syntax is als volgt:
* ban user {
* mask (hostmask/ip number);
* reason "(reden)";
* };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};
/*
* NIEUW: ban realname {}
* OUD: n:Line
* Belet het gebruik van een bepaalde realname.
* De syntax is als volgt:
* ban realname {
* mask "(real name)";
* reason "(reden)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* OPMERKING VOOR ALLE BANS: Ze mogen herhaald worden voor extra toevoegingen!
*
* NIEUW: except ban {}
* OUD: E:Line
* Zorgt ervoor dat jij niet gebanned kan worden.
* De syntax is als volgt:
* except ban { mask (ident@host); };
* Herhaal de except ban {} zo vaak als je wilt
* voor andere hosts.
*/
except ban {
/* don't ban stskeeps */
mask *stskeeps@212.*;
};
/*
* NIEUW: deny dcc {}
* OUD: dccdeny.conf
* Wordt gebruikt om DCC sends te blokkeren..
* Stopt virii beter.
* De syntax is als volgt:
* deny dcc
* {
* filename "bestand te blokkeren (bv, *exe)";
* reason "reden";
* };
*/
deny dcc {
filename "*sub7*";
reason "Possible Sub7 Virus";
};
/*
* NIEUW: deny channel {}
* OUD: N/A (NIEUW)
* Belet het gebruik van een kanaal.
* De syntax is als volgt:
* deny channel {
* channel "(kanaal)";
* reason "reden";
* };
*/
deny channel {
channel "*warez*";
reason "Warez is illegal";
};
/*
* NIEUW: vhost {}
* OUD: Vhost.conf file
* Dit zet een nep ip voor niet-opers, of voor opers
* die te lui zijn /sethost te gebruiken ;)
* De syntax is als volgt:
* vhost {
* vhost (vhost.com);
* from {
* userhost (ident@host toegestaan de vhost te gebruiken);
* };
* login (login name);
* password (password);
* };
* Om je vhost te gebruiken, typ /vhost (login) (password) op IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Je kan ook andere configuratiebestanden laden */
/* include "klines.conf"; */
/* Netwerk configuratie */
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 moeten op alle servers in het netwerk hetzelfde zijn.
* Ze worden gebruikt voor het maken van gemaskte hosts en moeten geheim blijven.
* De keys moeten 3 willekeurige strings zijn, bestaande uit 5-100 tekens
* (10-20 tekens is genoeg) en moeten bestaan uit kleine letters (a-z),
* hoofdletters (A-Z) en getallen (0-9) [zie de eerste key als voorbeeld].
* Tip: Wanneer je met een *NIX systeem werkt, kun je './unreal gencloak' gebruiken in
* je shell. Dit genereert 3 willekeurige strings die je kunt gebruiken.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"en nog eentje";
"en nog eentje";
};
/* 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 gerelateerde configuratie */
set {
kline-address "stel.dit.adres.in";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
options {
hide-ulines;
/* Je kan hier ident checking aanzetten als je wilt */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Hoelang een gebruiker minimaal verbonden moet zijn voordat hij toegestaan wordt het
* QUIT bericht te gebruiken. Dit stopt spam hopelijk. */
anti-spam-quit-message-time 10s;
/* Stelt een tekst in die standaard wordt gebruikt voor een quit.
* Houdt in dat er geen eigen quits gebruikt mogen worden op deze server. */
/* static-quit "Client quit"; */
/* Je kan ook alle part-redenen blokkeren door hieronder het commentaar weg te halen
* en er 'yes' neer te zetten. Je kan ook een standaard tekst gebruiken (bijvoorbeeld
* "Bye bye!") om deze tekst altijd te gebruiken..
*/
/* static-part yes; */
/* Stelt in dat stats alleen door opers gebruikt mogen worden. Gebruik * voor alle stats,
* en laat het weg zodat gebruikers alle stats kunnen zien. Typ '/stats' voor een lijst
* van alle stats.
* Sommige admins willen 'kGs' wellicht verwijderen zodat gewone gebruikers een lijst van
* klines, glines en shunts kunnen zien.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttle: dit voorbeeld zet een limie van 3 conneties per 60s (per host). */
throttle {
connections 3;
period 60s;
};
/* Anti flood protectie */
anti-flood {
nick-flood 3:60; /* 3 naamsveranderingen per 60 seconden (standaard) */
};
/* Spam filter */
spamfilter {
ban-time 1d; /* standaard duur van een *line gezet door spamfilter */
ban-reason "Spam/Advertising"; /* standaard reden */
virus-help-channel "#help"; /* kanaal te gebruiken voor 'viruschan' actie */
/* except "#help"; kanaal waar niet gefilterd wordt */
};
};
/*
* Problemen of meer hulp nodig?
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- hier staat 80% van je vragen!
* 3) Als je nog steeds problemen hebt, kun je naar irc.unrealircd.org #unreal-support,
maar je moet wel eerst de documentatie en FAQ gelezen hebben!
*/
-791
View File
@@ -1,791 +0,0 @@
/*
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* example.ru.conf by Samets Anton aka Bock (bock@bynets.org).
* $Id$
*
* (Encoding): Windows-1251
*
* Работает для Unreal3.2 и выше
*
* Итак, это русскоязычный пример example.conf. По синтаксису похож на C++.
* По началу будет тяжело понять, что тут написано, однако во время практики и чтения
* вы научитесь это делать.
*
* Просто скопируйте этот файл в главную директорию unrealircd и переименуйте в 'unrealircd.conf'.
*
* Замечание: Все линии, кроме тех, которые начинаются с {, заканчиваются ; включая и закрывающую }.
* IRCd проигнорирует закомментированные линии.
*
* ПРОЧТИТЕ doc/unreal32docs.ru.html! Версия в интернете доступна по адресу:
* www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html
* Она содержит большинство информации о конфигурировании, даёт представление о каждом блоке,
* переменной и так далее...
* Если вы пытаетесь редактировать этот файл без прочтения документации, вы гарантированно
* потерпите неудачу!
*/
/* Типы комментариев */
# Первый тип (Shell type)
// Второй тип (C++ style)
/* Третий тип (C Style) */
# данные линии игнорируются ircd.
/*
* UnrealIRCd поддерживает модули, загрузка некоторых необходима для запуска.
* Вам необходимо загрузить как минимум модули команд и скрытия хоста.
*/
/* Для *NIX систем раскомментируйте следующие 2 линии: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* Для Windows систем раскомментируйте следующие 2 линии: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Вам необходимо подключить и другие конфигурационные файлы.
* help.ru.conf содержит весь текст команды /helpop. Файлы badwords.*.conf
* содержат все включения матных слов для режима +G...
* spamfilter.conf содержит правила для защиты от троянских коней.
* Вы вероятно захотите подключить эти файлы:
*/
include "help.ru.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* НОВОЕ: me {}
* СТАРОЕ: M:Line
* me {} определяет имя, описание и нумерик сервера unreal для данного сервера.
* Синтаксис:
* me {
* name "Имя.сервера";
* info "Описание сервера";
* numeric (нумерик сервера*);
* };
* При соединении с другими серверами, нумерик должен быть уникальным в сети. Имя сервера - англоязычное.
*/
me
{
name "irc.foonet.com";
info "Сервер FooNet";
numeric 1;
};
/*
* НОВОЕ: admin {}
* СТАРОЕ: A:Line
* Данный блок предоставляет информацию об администраторе сервера.
* Вы можете поместить сколько угодно линий после admin {.
* Синтаксис:
* admin {
* "первая линия";
* "вторая линия";
* [так далее]
* };
*/
admin {
"Вася Пупкин!";
"vasya_pupkin";
"haker@lamer.ru";
"ICQ: 987654321";
};
/*
* НОВОЕ: class {}
* СТАРОЕ: Y:line (был слишком запутан)
* Определяет настройки для классов. Класс определяет групповые настройки для подключений.
* Например, подключение сервера, вместо включения его в класс пользователей, вы направляете в
* класс серверов. Используется следующий синтаксис:
* class (имя класса)
* {
* pingfreq (как часто пиновать пользователя/сервер в секундах);
* maxclients (сколько максимально соединений разрешено данному классу);
* sendq (максимальная очередь для отправки от подключения);
* recvq (максимальная очередь для получения от подключения [контроль за флудом]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Какое максимальное количество серверов может быть прилинковано к этому серверу */
sendq 1000000;
connfreq 100; /* Через сколько секунд проводить следующую попытку подключения */
};
/*
* НОВОЕ: allow {}
* СТАРОЕ: I:Line
* Определяет, кому разрешено подключаться к серверу...
* В основном используется для клиентов, это разрешает им подключаться к серверу, а вы можете их контролировать
* и/или устанавивать пароль.
* Синтаксис:
* allow {
* ip (разрешённая маска ip);
* hostname (маска хоста);
* class (класс, в который определить[смотри class {}]);
* password "(пароль)"; (необязательно)
* maxperip (сколько подключений с одного ip); (необязательно)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Разрешение подключения с паролем */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "аццкип0р0ль";
maxperip 1;
};
/*
* НОВОЕ: allow channel {}
* СТАРОЕ: chrestrict
* Позволяет пользователю зайти на канал...
* служит как исключение из запрещённых каналов.
* Синтаксис:
* allow channel {
* channel "имя канала";
* };
*/
allow channel {
channel "#WarezSucks";
};
/*
* НОВОЕ: oper {}
* СТАРОЕ: O:Line
* Определяет IRC оператора
* IRC операторы следят за сервером, занимаются его поддержкой и подключением к сети.
* Синтаксис:
* oper (логин) {
* class (класс, в который определять их, если отличен от блока I, в какой класс переместить);
* from {
* userhost (идент@хост);
* userhost (идент@хост);
* };
* flags
* {
* (тут флаги*);
* };
* ИЛИ
* flags "флаги старого типа, вида OAaRD";
* };
*/
/* Для списка флагов оператора прочитайте doc/unreal32docs.ru.html#operblock
* [ОЧЕНЬ НАСТОЯТЕЛЬНО рекомендуется к прочтения]
*/
oper vasyapupkin {
class clients;
from {
userhost vasya@somewhere.by;
};
password "p0r0l'";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* НОВОЕ: listen {}
* СТАРОЕ: P:Line
* Определяет, на каких портах будет работать ircd,
* позволяя пользователям/серверам подключаться к серверу.
* Синтаксис:
* listen (ip):(номер порта)
* {
* options {
* (тут опции);
* };
* };
* или просто
* listen: listen (ip):(порт);
*
* ЗАМЕЧАНИЕ: для протокола ip v6 (3ffe:b80:2:51d::2), используйте [ip]:порт;
*
* Это так же будет работать.
*/
/* Опции для listen:
СТАРЫЕ | НОВЫЕ
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* ЗАМЕЧАНИЕ ДЛЯ ПОРТОВ SSL: SSL порты стандартизированы,
* за исключением многочисленных "высоких" портов SSL, некоторые люди могут сказать вам,
* чтобы вы запустили на порту 994, потому что он официальный порт SSL... Но это же
* требует привилегий пользователя root! К слову, порт 194 - официальный порт irc,
* но вы видели когда-нибудь ircd, запущенный на нём?
* Итак, наше предложение - использовать порт 6697 для SSL, он используется уже рядом сетей
* и используется в примере StunTour.
* Вы можете открыть сколько угодно портов SSL, но используя так же и 6697, вы поможете
* стандартизировать его;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* ЗАМЕЧАНИЕ: Если вы используете шелл IRCd, где несколько IP адресов, вы можете получить сообщение типа
* 'Address already in use', ошибки в вашем лог-файле и ircd не запустится.
* Это значит, что вам необходимо указать определённый адрес IP вместо '*', к примеру:
* listen 1.2.3.4:6667;
* Конечно же, измените IP адрес на тот, который назначен вам.
*/
/*
* НОВОЕ: link {}
* СТАРОЕ: C/N:Lines
* Определяет блок для подключения серверов.
* ЗАМЕЧАНИЕ: ЧТОБЫ ПОДКЛЮЧИТЬСЯ БЕЗ ВОПРОСОВ, НА ОБОИХ СЕРВЕРАХ НЕОБХОДИМЫ ПРАВИЛЬНЫЕ НАСТРОЙКИ LINK {}!
* Синтаксис:
* link (имя сервера)
* {
* username (имя пользователя, * работает тоже);
* hostname (адрес ip/маска хоста);
* bind-ip (На каком адресе IP слушать или *);
* port (порт для соединения);
* hub (если это хаб, * так же работает, или макси сервера, которые могут быть под ним);
* [или leaf *;]
* password-connect "(пароль для отправки)";
* password-receive "(пароль, что мы должны получить)";
* class (класс, в который определить сервер);
* options {
* (тут указываются опции*);
* };
* // Если мы используем SSL, мы можем указать, какой шифр использовать в режиме SSL
* // Получить список можно "openssl ciphers", шифры разделяются двоеточиями (:)
*
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
опции:
СТАРЫЕ | НОВЫЕ
S ssl
Z zip
N/A autoconnect
N/A quarantine
N/A nodnscache
*/
link hub.ru.by
{
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
/* Замечание: Вы не должны использовать автоподключение (autoconnect) при подключении сервисов */
autoconnect;
ssl;
zip;
};
};
/*
*
* НОВОЕ: ulines {}
* СТАРОЕ: U:Line
* U-lines обладают большей силой/властью, чем другие сервера. Это нужно устанавливать только на
* сервисы/сервера сбора статистики и НИКОГДА на обычные сервера UnrealIRCd!
* Синтаксис:
* ulines {
* (сервер в uline);
* (сервер в uline);
* [и т.д.]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* НОВОЕ: drpass {}
* СТАРОЕ: X:Line
* Определяет пароли для использования команд /die и /restart.
* Синтаксис:
* drpass {
* restart "(пароль для перезапуска)";
* die "(пароль для отключения)";
* };
*/
drpass {
restart "Я-люблю-перезапускать-сервер";
die "умри-тупое!:)";
};
/*
* НОВОЕ: log {}
* СТАРОЕ: N/A
* Указыает ircd куда и что протоколировать (вести лог). Вы можете указать столько, сколько пожелаете.
*
* ФЛАГИ: errors, kills, tkl, connects, server-connects, oper
*
* Синтаксис:
* log "путь_к_лог_файлу"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Удалять логфайл и старовать новый, если размер превышает 2MB, оставьте это как есть, чтобы использовать
тот же самый файл */
maxsize 2097152;
flags {
oper;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* НОВОЕ: alias {}
* СТАРОЕ: N/A
* Позволяет установить вам псевдонимы на команды, такие как /nickserv, /chanserv и т.д.
* ФЛАГИ: services, stats, normal
*
* Синтаксис:
* alias "имя" {
* target "куда направить";
* type aliastype;
* };
*
* [ЗАМЕЧАНИЕ: Вы так же можете подключить уже определённый файл с псевдонимами,подробнее doc/unreal32docs.ru.html в секции 2.9]
*/
// Данный псевдноним /nickserv направляет команды пользователю NickServ, который подключён к серверу set::services-server
/*alias NickServ {
target "NickServ";
type services;
};*/
// Если вы хотите, чтобы команды направлялись на тот же ник, что и команда, вы можете не указывать target
//alias ChanServ { type services; };
// Указывает, что команда /statserv будет отправлена пользователю StatServ, подключённого к серверу set::stats-server
//alias StatServ { type stats; };
// Указывает, что команда /superbot будет отправлена пользователю SuperBot
//alias SuperBot { type normal; };
/* Стандартные псевдонимы */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };
/*
* НОВОЕ: alias {}
* СТАРОЕ: N/A
* Позволяет установить такие псевдонимы на команды как /identify, /services и т.д.
*
* Синтаксис:
* alias "имя" {
* format "строка формата" {
* target "кому";
* type aliastype;
* parameters "список параметров";
* };
* type command;
* };
*/
/* Вынесено отдельно, так как имеются отличия по сравнению с предыдущим типом псевдонимов и имеются очень большие отличия в
* синтаксисе, так же используется для других целей, чем стандартные псевдонимы.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* Директива alias::format является регулярным выражением. Под первый формат подпадает команда /identify,
* если первым символом является #. Она посылает команду chanserv с параметрами IDENTIFY %1-.
* Второй формат срабатывает, если в команде, посланной посредством /identify первый символ не #. Тогда ircd
* передаёт эту команду nickserv с параметрами IDENTIFY %1-.
*/
/* alias::format::parameters сходно со скриптовыми языками. %N (где N число) представляет собой параметр, посланный командой
* (в случае /identify). Если вы указали %N-, так вы определили все параметры, начиная от N до последнего в этой строке.
* Вы можете так же указать %n, что будет означать ник пользователя.
*/
/* Стандартные псевдонимы */
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;
};
/* Тут идёт пример использования "действительно псевдонима" (real command alias) */
/* Данный пример - использование /GLINEBOT как /GLINE <параметры> 2d и т.д... */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Боты запрещены на этом сервере, прочитайте ЧаВО на http://www.example.com/faq/123";
};
type command;
};
/*
* НОВОЕ: tld {}
* СТАРОЕ: T:Line
* Устанавливает различные different motd и rules файлы
* в зависимости от маски хостов клиентов.
* Синтаксис:
* tld {
* mask (идент@хост);
* motd "(файл motd)";
* rules "(файл rules)";
* };
*/
tld {
mask *@*.ru;
motd "ircd.motd.ru";
rules "ircd.rules.ru";
};
/* замечание: вы можете просто удалить блок выше, указанный для примера в случае, если есть в наличии
* файлы motd/rules, используемые по умолчанию (ircd.motd, ircd.rules), которые будут использоваться всеми
*/
/*
* НОВОЕ: ban nick {}
* СТАРОЕ: Q:Line
* Банит ник, он не может быть использован.
* Синтаксис:
* ban nick {
* mask "(ник для бана)";
* reason "(причина)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Зарезервирован для сервисов";
};
/*
* НОВОЕ: ban ip {}
* СТАРОЕ: Z:Line
* Банит адрес ip при подключении в сеть.
* Синтаксис:
* ban ip { mask (адрес ip/маска хоста); reason "(причина)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Отключённый сервер";
};
/*
* НОВОЕ: ban server {}
* СТАРОЕ: Серверный Q:Line
* Отключает сервер от попыток подключиться в сеть.
* Если сервер подключается к удалённому серверу в сети, локальный сервер
* будет отключён он сети.
* Синтаксис:
* ban server {
* mask "(имя сервера)";
* reason "(причина)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Ламерский сервер :).";
};
/*
* НОВОЕ: ban user {}
* СТАРОЕ: K:Line
* Пользователь с указанной маской не может подключиться к вашему серверу.
* Синтаксис:
* ban user { mask (маска хоста/адрес ip); reason "(причина)"; };
*/
ban user {
mask *newiceman@*.irc.by;
reason "Идиот!";
};
/*
* НОВОЕ: ban realname {}
* СТАРОЕ: n:Line
* Банит по указанному пользователем реальному имени.
* Синтаксис:
* ban realname {
* mask "(Реальное имя)";
* reason "(причина)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* ЗАМЕЧАНИЕ ДЛЯ ВСЕХ БАНОВ: они могут повторятся в случае необходимости уточнений!
*
* НОВОЕ: except ban {}
* СТАРОЕ: E:Line
* Предотвращает бан.
* Синтаксис:
* except ban { mask (идент@хост); };
* Повторите except ban {} столько раз, сколько хотите использовать различные хосты.
*/
except ban {
/* не банить wax */
mask *wax@195.222.*;
};
/*
* НОВОЕ: deny dcc {}
* СТАРОЕ: dccdeny.conf
* Используется чтобы запретить отправку dcc... служит для защиты от вирусов
* Синтаксис:
* deny dcc
* {
* filename "имя файла для блокироваки (т.е. *exe)";
* reason "причина";
* };
*/
deny dcc {
filename "*sub7*";
reason "Вероятность вируса Sub7";
};
/*
* НОВОЕ: deny channel {}
* СТАРОЕ: N/A (НОВОЕ)
* Запрещает вход на указанные каналы.
* Синтаксис:
* deny channel {
* channel "(канал)";
* reason "причина";
* };
*/
deny channel {
channel "*warez*";
reason "Warez нелегален";
};
/*
* НОВОЕ: vhost {}
* СТАРОЕ: файл Vhost.conf
* Устанавливает фейковый ip для не-операторов или операторы слишком
* ленивые, чтобы сделать /sethost :P
* Синтаксис:
* vhost {
* vhost (vhost.com);
* from {
* userhost (идент@хост, кому разрешено использовать);
* };
* login (логин);
* password (пароль);
* };
* чтобы использовать vhost, наберите /vhost (логин) (пароль) в IRC
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Вы так же можете подключить и другие конфигурационные файлы */
/* include "klines.conf"; */
/* Конфигурация Сети */
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"; */
/* Ключи скрытия хостов должны быть одинаковы на всех серверах в сети.
* Они использутся для генерации замаскированных хостов и должны держаться в секрете.
* Ключи должен быть 3-мя случайными срочками с 5-100 символами в каждой
* (10-20 символов должно быть достаточно) и должны содержать прописные (a-z),
* заглавные (A-Z) буквы и цифрты (0-9) [смотрите пример первого ключа].
* Подсказка: В *NIX системах вы можете запустить './unreal gencloak' в вашем шелле, чтобы получить
* 3 строки, сгенерированные случайным образом.
*/
cloak-keys {
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
"и ещё одна;
"и ещё одна";
};
/* хост on-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";
};
};
/* Специфическая конфигурация сервера */
set {
kline-address "set.this.email";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
options {
hide-ulines;
/* Если желаете, вы можете включить проверку ident */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* Указывает минимальное время, сколько был подключен пользователь,
* прежде чем разрешать ему использовать сообщение QUIT.
* Должно помочь в борьбе со спамом */
anti-spam-quit-message-time 10s;
/* Устанавливает постоянное сообщение о выходе - значит, что локальный сервер не разрешит
различные сообщения о выходе */
/* static-quit "Клиент вышел"; */
/* Вы так же можете блокировать все сообщения о выходе из канала просто раскомментировав это и указать'yes'
* или указать какой-нибудь другой текст (например: "Пока пока!"), который всегда будет использован как причина. */
/* static-part yes; */
/* Позволяет сделать важные сообщения stats были использованы только операторами, используйте * для всех сообщений stats,
* или закомментируйте, что позволит пользователям видеть все сообщения stats. Чтобы получить весь список, введите '/stats'.
* Некоторые администраторы могут убрать 'kGs' для того, чтобы разрешить обычным пользователям видеть список
* klines, glines и shuns.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Тротлинг: данный пример устанавливает предел в 3 попытки подключения в 60 секунд (для одного хоста). */
throttle {
connections 3;
period 60s;
};
/* Защита от флуда */
anti-flood {
nick-flood 3:60; /* 3 изменения ника в 60 секунд (по умолчанию) */
};
/* Фильтр спама */
spamfilter {
ban-time 1d; /* длительность по умолчанию бана *line, установленного spamfilter */
ban-reason "Спам/Реклама"; /* причина по умолчанию */
virus-help-channel "#help"; /* канал при использовании действия 'viruschan' */
/* except "#help"; канал для исключения действия фильтра */
};
};
/*
* Проблемы или нуждаетесь в более подробной информации?
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- содержит 80% ваших вопросов!
* 3) Если у вас до сих пор остались проблемы, зайдите на irc.unrealircd.org #unreal-support,
* но мы требуем, чтобы вы ПРЕЖДЕ ПРОЧИТАЛИ ДОКУМЕНТАЦИЮ и ЧаВО!
*/
-841
View File
@@ -1,841 +0,0 @@
/*
* example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org).
* $Id$
* Önceki Çevirmen: Mustafa "Ironic" Cakmak (ironic@unrealircd.org)
* Türkçe Çeviri: Serkan Sepetçi (diablo@unrealircd.org)
*
* Unreal3.2 ve üstü sürümler için kullanılmaktadır
*
* Peki beyler. Bu example.conf dosyasının yenisi. C++ türüne çok benziyor.
* Neyse şimdi bunun üstesinden gelme zamanı. Başlangıçta zor gelebilir, fakat
* okuyarak ve biraz pratikle anlayacaksınız.
*
* Yapmanız gereken bu dosyayı ana dizine atıp, 'unrealircd.conf' olarak adlandırmak.
*
* NOTE: Bütün satırlar, açılış { satırı dışında, kapama } satırı dahil, sonunda ; taşır.
* IRCd açıklama satırlarını göz ardı edecektir.
*
* Lütfen doc/unreal32docs.tr.html dosyasını okuyunuz! Çevrimiçi sürümüne ulaşabileceğiniz adres:
* www.vulnscan.org/UnrealIRCd/unreal32docs.tr.html
* Yapılandırma dosyası hakkında bir çok bilgi içerir: Her blok,
* değişken vs.. hakkında bilgi verir.
* Eğer dökümantasyon dosyasını tam olarak okumadan bu dosyayı düzenlemeye kalkarsanız
* başarısız olacağınız oldukça yüksek bir oranda garanti edilir!
*
*/
/* Açıklama satırı çeşitleri */
#Açıklama satırı 1 (Shell tipi)
// Açıklama satırı 2 (C++ tipi)
/* Açıklama satırı satırı 3 (C tipi) */
#Bu satırlar ircd tarafından göz ardı edilecektir.
/*
* UnrealIRCd modülleri destekler, Bunların bazılarının yüklenmesi gereklidir.
* En azından komutlar modülü(commands) ve gizleme modülü(cloaking)'ne ihtiyacınız vardır.
*/
/* *NIX için, sonraki 2 satırın açıklama satıracını(//) kaldırın: */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";
/* Windows için, sonraki 2 satırın açıklama satıracını(//) kaldırın: */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";
/*
* Diğer yapılandırma dosyalarınıda dahil edebilirsiniz.
* help.conf bütün /helpop metinlerini içerir. +G kipi için badwords.*.conf
* dosyaları bütün kötü kelime girdilerini içerir...
* spamfilter.conf güncel trojanlar için uygun kuralları içerir.
* Muhtemelen bunları eklemek isteyeceksiniz:
*/
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
/*
* YENI: me {}
* ESKI: M:Line
* me {} bu sunucu için isim, tanımlama ve unreal sunucu sayısalını(numeric) belirler.
* Sözdizimi aşağıdaki gibidir:
* me {
* name "sunucu.ismi";
* info "Sunucu tanımlaması";
* numeric (sunucu sayısalı*);
* };
* Eğer link varsa, bu sayısal ağ üzerinde varolan herhangi bir server tarafından kullanılmamalıdır.
*/
me
{
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
/*
* YENI: admin {}
* ESKI: A:Line
* Admin sunucu yöneticisine dair bilgi verir. Dilediğiniz kadar
* satırı admin { altına yerleştirebilirsiniz.
* Sözdizimi aşağıdaki gibidir:
* admin {
* "ilk satır";
* "ikinci satır";
* [vs]
* };
*/
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
/*
* YENI: class {}
* ESKI: Y:line (eskisi karışıktı)
* Bu sınıflar için ayarları belirtir. Bir sınıf bağlantılar için bir grup
* ayarıdır. Örneğin, sunucu bağlantılarını, bir istemci sınıfı
* yerine, sunucu sınıfına yönlendirirsiniz. Sözdizimi aşağıdaki gibidir:
* class (class name)
* {
* pingfreq (ne sıklıkta saniye içerisinde kullanıcı veya sunucunun ping edileceği);
* maxclients (bu sınıf için kaç bağlantı);
* sendq (bir bağlantıdan gönderilecek en yüksek dizi);
* recvq (bir bağlantıdan alınacak en yüksek dizi [flood kontrolü]);
* };
*/
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10; /* Link edebileceğimiz en yüksek sunucu sayısı */
sendq 1000000;
connfreq 100; /* Her bağlantı girişimi arasında ne kadar saniye olacağı */
};
/*
* YENI: allow {}
* ESKI: I:Line
* Bağlantı izinlerini belirtir..
* Temel olarak istemcilerin sunucuya bağlanabilmesi için herhangi bir kontrol
* ve/veya bir şifre belirtmenize olanak sağlar.
* Sözdizimi aşağıdaki gibidir:
* allow {
* ip (izin verilecek ip maskesi);
* hostname (host maskesi);
* class (gönderilecek sınıf [class {} bloğuna göz atınız]);
* password "(şifre)"; (isteğe bağlı)
* maxperip (ip başına kabul edilecek bağlantı sayısı); (isteğe bağlı)
* };
*/
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
/* Şifrelendirilmiş allow bloğu */
allow {
ip *@255.255.255.255;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
/*
* YENI: allow channel {}
* ESKI: chrestrict
* Bir kullanıcının bir kanala girmesine olanak sağlar...
* yasak kanal bloğundaki hariçlik gibi.
* Sözdizimi:
* allow channel {
* channel "kanal ismi";
* class "clients"; (isteğe bağlı)
* };
*/
allow channel {
channel "#WarezSucks";
class "clients";
};
/*
* YENI: oper {}
* ESKI: O:Line
* Bir IRC Operatörü tanımlamanızı sağlar.
* IRC Operatörleri sunucuya uygun bir biçimde bağlanılmasını ve
* makullüğü sağlarlar.
* Sözdizimi aşağıdaki gibidir:
* oper (login) {
* class (sınıf ismini ekleyin, eğer istemciden farklıysa, yeni sınıfı ekleyin);
* from {
* userhost (ident@host);
* userhost (ident@host);
* };
* flags
* {
* (flaglar buraya*);
* };
* VEYA
* flags "OAaRD gibi eski tip flaglar";
* };
*/
/* Oper flaglarının listesine doc/unreal32docs.html#operblock dan göz atabilirsiniz.
* [Okumanız şiddetle önerilir]
*/
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
};
password "f00";
flags
{
netadmin;
can_zline;
can_gzline;
can_gkline;
global;
};
};
/*
* YENI: listen {}
* ESKI: P:Line
* İstemci ve sunucuların sunucuya bağlanmasını sağlamak için ircd tarafından
* kullanılacak bir port tanımlamanızı sağlar .
* Sözdizimi aşağıdaki gibidir:
* listen (ip adresi):(port numarası)
* {
* options {
* (tercihler buraya);
* };
* };
* veya sade bir biçimde
* listen: listen (ip):(port);
*
* UYARI: ipv6 ipleri için (3ffe:b80:2:51d::2 vb), [ip]:port; kullanınız
*
* Böylede çalışır.
*/
/* listen için tercihler:
ESKI | YENI
S serversonly
C clientsonly
J java
s ssl
* standard
*/
/* SSL PORTLARI İÇİN NOT: SSL portları oldukça standart dışıdır,
* ayrıca pek çok yüksek-SSL portları için bazı insanlar 994 te çalıştırın
* der çünkü bu resmi SSL portudur..Fakat bu root erişimi gerektirir.Yanı sıra,
* 194 resmi irc portu olarak bunun üzerinde çalışan ircd
* hiç gördünüz mü?
* Böyle olunca bizim önerimiz 6697 portunu SSL için kullanmanız, bu hayli
* sunucuda kullanılıyor ve örnek için StunTour tarafından kabul görmüş durumda.
* İstediğiniz kadar SSL port açmakta özgürsünüz, fakat 6697 yi kullanmanız
* dünya standartı haline gelmesine biraz daha yardım edecektir. ;).
*/
listen *:6697
{
options
{
ssl;
clientsonly;
};
};
listen *:8067;
listen *:6667;
/* NOT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız logunuzda olası
* 'Address already in use' alırsınız ve ircd başlamaz.Bunun anlamı '*' yerine
* belirli bir IP adresi kullanmanız gerektiğidir.Yani örneğin:
* listen 1.2.3.4:6667;
* Açıkça, IP yi önceden koyduğunuz IP ile değiştirin.
*/
/*
* YENI: link {}
* ESKI: C/N:Lines
* Bir sunucu bağlantısı için bir onay tanımlamanızı sağlar.
* NOT: HER IKI SUNUCUDA BAĞLANTI IÇIN TAM OLARAK DÜZGÜN BİR LINK {} GEREĞİ DUYAR!
* Sözdizimi aşağıdaki gibidir:
* link (sunucu ismi)
* {
* username (username, * da uygundur);
* hostname (ip adresi/hostmask);
* bind-ip (Bağlanırken hangi IP ile bağlanacağı, veya *);
* port (bağlantı portu, eğer herhangi biriyse);
* hub (Bu bir hub ise, * çalışır, veya sunucu maskeleri bunu sağlar);
* [veya leaf *;]
* password-connect "(gönderilecek şifre)";
* password-receive "(almamız gereken şifre)";
* class (sunucuların yönetileceği sınıf);
* options {
* (tercihler buraya*);
* };
* // Eğer SSL kullanıyorsak, SSL modunda ne tür bir anahtar kullanacağımızı seçebiliriz
* // "openssl ciphers" ile bir liste alınır, anahtarlar birbirinden : ile ayrılırak belirtilebilirler.
*
* ciphers "DES-CBC3-MD5";
*
* };
*/
/*
tercihler:
YENI | ESKI
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: Servisler link edilirken autoconnect kullanmamalısınız.*/
autoconnect;
ssl;
zip;
};
};
/*
*
* YENI: ulines {}
* ESKI: U:Line
* U-lines satırları sunuculara daha güç/komut kazandırır.Bu servis/istatistik
* sunucuları içindir ve ASLA normal UnrealIRCd sunucuları için değildir.
* Sözdizimi aşağıdaki gibidir:
* ulines {
* (uline olacak sunucu);
* (uline olacak sunucu);
* [vb]
* };
*/
ulines {
services.roxnet.org;
stats.roxnet.org;
};
/*
* YENI: drpass {}
* ESKI: X:Line
* Bu blok /die ve /restart için şifre tanımlamanızı sağlar.
* Sözdizimi aşağıdaki gibidir:
* drpass {
* restart "(yeniden başlatmak için şfire)";
* die "(sona erdirmek için şifre)";
* };
*/
drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};
/*
* YENI: log {} ESKI: N/A Ircd e logun ne ve nerede olacağını bildirir. Dilediğiniz
* kadara sahip olabilirsiniz.
*
* FLAGS: errors, kills, tkl, connects, server-connects, oper
*
* Syntax:
* log "log file"
* {
* flags
* {
* flag;
* flag;
* etc..
* };
* };
*/
log "ircd.log" {
/* Eğer 2 MB yi geçerse log dosyasını sil ve yenisini aç, eğer her zaman aynı log
dosyasını kullanmak istiyorsanız karışmayın */
maxsize 2097152;
flags {
oper;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
/*
* YENI: alias {}
* ESKI: N/A
* /nickserv, /chanserv gibi komutlar hazırlamanızı sağlar.
* FLAGS: services, stats, normal
*
* Sözdizimi:
* alias "isim" {
* target "gidecek nokta";
* type aliastype;
* };
*
* [NOT: Aynı zamanda önceden tanımlanmış alias dosyası dahil edebilirsiniz, doc/unreal32docs.html bölüm 2.9]
*/
// Bu nokta /NickServ komutu ile set::services-server server üzerinden bağlanmış olan NickServ e döner.
/*alias NickServ {
target "NickServ";
type services;
};*/
// Eğer komutla noktanın aynı olmasını istiyorsanız nick girişini gözardı edebilirsiniz
//alias ChanServ { type services; };
// Bu nokta /statserv komutu ile set::stats-server server üzerinden bağlanmış olan StatServ e döner.
//alias StatServ { type stats; };
// Bu nokta /superbot komutu ile kullanıcı SuperBot a döner
//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; };
/*
* ESKI: alias {}
* YENI: N/A
* Bu /identify, /services gibi komutlar hazırlamanızı sağlar.
*
* Sözdizimi:
* alias "isim" {
* format "format satırı" {
* target "gidecek nokta";
* type aliastype;
* parameters "gönderilecek parametreler";
* };
* type command;
* };
*/
/* Bu ayrı bir şekilde gösterilir.Çünkü bir önceki direktif ile aynı isme sahip olsa bile benzer bir
* fonksiyon sağlaması ve standart aliaseslerin çalışmasına dayanması ile birlikte çok farklı sözdizimine sahip olması.
*/
/*
alias "identify" {
format "^#" {
target "chanserv";
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
target "nickserv";
type services;
parameters "IDENTIFY %1-";
};
type command;
};
*/
/* alias::format direktifi bir düzenli ifadedir. İlk biçim /identify komutundan sonraki ilk karakter bir # ise eşleşir.
* Ardından IDENTIFY %1- ile chanserv aliases e döner.
* İkinci biçim ise /identify komutundan sonraki ilk karakterin bir # işareti ile eşleşmeme durumunu belirtir.Ardından
* IDENTIFY %1- ile nickserv aliases e döner.
*/
/* alias::format::parameters betik diline benzerdir. %N (N bir numaradır) komuta gönderilecek
* parametreyi temsil eder.(bu durumda /identify). Eğer bir %N- belirtirseniz bu N den sonraki
* bütün parametleri içerir. Ayrıca kullanıcı nickname inin yerine %n kullanabilirsiniz.
*/
/* Standart 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;
};
/* Bu gerçek komut aliası için bir örnektir */
/* Bu eşlem /GLINEBOT ile /GLINE <parametre> 2d vb... şeklindedir */
alias "glinebot" {
format ".+" {
command "gline";
type real;
parameters "%1 2d Bu sunucuda botlara izin verilmemektedir, lütfen http://www.example.com/faq/123 sayfasından sss ı okuyunuz.";
};
type command;
};
/*
* YENI: dosyalar {}
* ESKI: include/config.h
*
* Bu blok MOTD gibi şeyleri yüklemek için IRCd varsayılan yolları
* PID haricinde geçersiz kılar veya yazma/yükleme olarak dosyayı kendi ayarlar.
* Bu bloğun varlığı bir UnrealIRCd kurulumuna destek sağlar.
* -c ile kombine edildiğinde birden fazla komut seçeneğinin
* çalışmasına izin verir.
*
* Her zamanki gibi bu gibi yakın yollar -c komut satırında belirtilmezse,
* UnrealIRCd unrealircd.conf'u nerede bulunacağını dizinine göre yorumlar.
*/
files
{
/* Günün mesajı, oturum açan kullanıcılara gösterilir: */
/* motd ircd.motd; */
/*
* Kısa MOTD. Eğer bu dosya varsa, MOTD yerine kullanıcıya
* bu gösterilecektir. Yinede kullanıcılar /MOTD komutu kullanarak
* tam MOTD içeriğini görebilecekler.
*/
/* shortmotd ircd.smotd; */
/* Operatör olduğunda gösterilir. /OPER 'liğe yükselmiş */
/* opermotd oper.motd; */
/* Servislere MOTD ekler. */
/* svsmotd ircd.svsmotd; */
/* Bot MOTD */
/* botmotd bot.motd; */
/* /RULES üzerinde gösterilir */
/* rules ircd.rules; */
/*
* IRCd'nin bazı değerlerinin nerede olduğunu gösterir.
* Bu değerler kalıcı olarak saklanır.Sunucu yeniden başlatıldığında
* ise bu değerleri yeniden yükleyecektir.
*/
/* tunefile ircd.tune; */
/* IRCd pidini nerede kaydedildiğini gösterir. IRCd tarafından yazılabilir olmalıdır. */
/* pidfile ircd.pid; */
};
/*
* ESKI: tld {}
* YENI: T:Line
* Bu istemcilerin hostmaskesine bağlı olarak farklı
* motd ve rules dosyaları belirler.
* Sözdizimi aşağıdaki gibidir:
* tld {
* mask (ident@host);
* motd "(motd dosyası)";
* rules "(rules dosyası)";
* };
*/
tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
/* not: Bütün istemciler için aynı motd/rules (ircd.motd, ircd.rules) dosyaları
* görüntületmek istiyorsanız sadece yukarıdaki örnek bloğu silebilirsiniz.
*/
/*
* YENI: ban nick {}
* ESKI: Q:Line
* Nir nickname yasaklar, bundan doalyı kullanılamaz.
* Sözdizimi aşağıdaki gibidir:
* ban nick {
* mask "(yasaklanak nick)";
* reason "(neden)";
* };
*/
ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Servisler için ayrılmıştır";
};
/*
* YENI: ban ip {}
* ESKI: Z:Line
* Ağa bağlanan bir ip yi yasaklar.
* Sözdizimi:
* ban ip { mask (ip adresi/hostmask); reason "(neden)"; };
*/
ban ip {
mask 195.86.232.81;
reason "Bağlı olmayan sunucu";
};
/*
* YENI: ban server {}
* ESKI: Server Q:Line
* Ağa bir sunucunun bağlanmasını devredışı kılar.
* eğer sunucu uzak bir sunucuya bağlanmışsa, yerel sunucunun
* ağdan bağlantısı kesilir.
* Sözdizimi aşağıdaki gibidir:
* ban server {
* mask "(sunucu ismi)";
* reason "(neden)";
* };
*/
ban server {
mask eris.berkeley.edu;
reason "Defol buradan.";
};
/*
* YENI: ban user {}
* ESKI: K:Line
* Kullanıcının belirtilen kesin bir mask ile sunucuya bağlanmasını engeller.
* Sözdizimi:
* ban user { mask (hostmask/ip adresi); reason "(neden)"; };
*/
ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};
/*
* YENI: ban realname {}
* ESKI: n:Line
* Kullanılan kesin bir realname i yasaklar.
* Sözdizimi:
* ban realname {
* mask "(real name)";
* reason "(neden)";
* };
*/
ban realname {
mask "Swat Team";
reason "mIRKFORCE";
};
ban realname {
mask "sub7server";
reason "sub7";
};
/*
* BUTUN BANLAR İÇİN NOT, ilave girdiler için tekrarlanabilir!
*
* YENI: except ban {}
* ESKI: E:Line
* Bu yasaklanmamanızı sağlar.
* Sözdizimi:
* except ban { mask (ident@host); };
* Farklı hostlar için istediğiniz kadar except ban {}
* bloğunu tekrarlayın.
*/
except ban {
/* stskeeps i yasaklama*/
mask *stskeeps@212.*;
};
/*
* YENI: deny dcc {}
* ESKI: dccdeny.conf
* Dcc gönderimlerini bloklamak için kullanılır..Virüsler
* dursa iyi olur.
* Sözdizimi:
* deny dcc
* {
* filename "bloklanacak dosya (örnek, *exe)";
* reason "neden";
* };
*/
deny dcc {
filename "*sub7*";
reason "Muhtemek Sub7 Virüsü";
};
/*
* ESKI: deny channel {}
* YENI: N/A (NEW)
* Girilen kanalları bloklar.
* Sözdizimi:
* deny channel {
* channel "(kanal)";
* reason "neden";
* class "clients"; (isteğe bağlı)
* };
*/
deny channel {
channel "*warez*";
reason "Warez yasaktır";
class "clients";
};
/*
* YENI: vhost {}
* ESKI: Vhost.conf file
* Oper olmayan kullanıcılar için sahte ip hazırlar, veya
* tembellik yaparak /sethost kullanmayan operler içindir :P
* Sözdizimi:
* vhost {
* vhost (vhost.com);
* from {
* userhost (kullanılacak ident@host);
* };
* login (login ismi);
* password (şifre);
* };
* ardından bu vhostu kullanmak için, IRC de /vhost (login) (şifre) yapın
*/
vhost {
vhost i.hate.microsefrs.com;
from {
userhost *@*.image.dk;
};
login stskeeps;
password moocowsrulemyworld;
};
/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
/* include "klines.conf"; */
/* Ağ yapılandırması */
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"; */
/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
* Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
* Anahtarlar 5-100 karakterlik (10-20 karakter yeterli) 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: './unreal gencloak' Unreal sizin için rastgele 3 adet dizin oluşturur.
* Bunu NIX üzerinde çalıştırabilirsiniz.
*/
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";
};
};
/* Sunucunun kendine özgü yapılandırması */
set {
kline-address "bunu.email.olarak.ayarlayın";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
oper-auto-join "#opers";
options {
hide-ulines;
/* Eğer isterseniz identd kontrolünü buradan aktif edebilirsiniz */
/* identd-check; */
show-connect-info;
};
maxchannelsperuser 10;
/* /quit mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması gereken süre
* Umarız spamleri durdurmak için yardım eder */
anti-spam-quit-message-time 10s;
/* Bütün çıkışlarda değişmeyen bir çıkış mesajı yaratır - anlamı yerel sunucuda
ısmarlama çıkışlara izin verilmemesidir */
/* static-quit "Client quit"; */
/* Ayrıca bu seçeneğin açıklama satırlarını kaldırıp 'yes' diyerek bütün kanaldan ayrılma mesajlarını,
* bloklamış veya belirli bir diğer metini bunun için kullanabilirsiniz. (örnek: "Bye bye!") Her zaman kanaldan
* ayrılma mesajı olarak kullanılır */
/* static-part yes; */
/* Operlerin sadece belirli istatistikleri görüntüleyebilmesini sağlar, bütün istatistikler için * kullanın,
* bütün istatistikleri görebilmeleri için gözardı edin. Full liste için '/stats' yapınız.
* Bazı yöneticiler normal kullanıcıların 'kGs' istatistiklerine ulaşmasını istemeyebilir.
*/
oper-only-stats "okfGsMRUEelLCXzdD";
/* Throttling: Bu örnek bir hosta 60 saniye içerisine yanlızca 3 bağlantı imkanı sağlar. */
throttle {
connections 3;
period 60s;
};
/* Anti flood koruması */
anti-flood {
nick-flood 3:60; /* Her 60 saniyede 3 nick değişikliği (varsayılan) */
};
/* Spam filtresi */
spamfilter {
ban-time 1d; /* spamfilter ile bir *line yasağının varsayılan devaö süresi */
ban-reason "Spam/Advertising"; /* varsayılan neden */
virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
/* except "#help"; spam filtreden muaf tutulacak kanal */
};
};
/*
* Sorununuz veya daha fazla yardımamı ihtiyacınız var?
* 1) www.vulnscan.org/UnrealIRCd/unreal32docs.tr.html
* 2) www.vulnscan.org/UnrealIRCd/faq/ <- sorularınızın %80 ini kapsamakta!
* 3) Eğer probleminiz hala devam ediyorsa irc.unrealircd.org sunucusu #unreal-support kanalına girebilirsiniz
* DÖKÜMANTASYON ve FAQ kısmını okumanızı gerekli gördüğümüzü belirtiyoruz!
*/
-1428
View File
File diff suppressed because it is too large Load Diff
-1519
View File
File diff suppressed because it is too large Load Diff
-1404
View File
File diff suppressed because it is too large Load Diff
-160
View File
@@ -1,160 +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.
CHANMODES Like CHANMODES from the 005 numeric. Useful to see which channel modes are
supported/used, and can also be used to properly eat parameters in parameter
modes in the MODE command (for eg: +jk 1:1 a).
EAUTH Early Authorization. This makes it possible for servers to authenticate each
other before the regular SERVER command. Needs to be done prior to using the
SERVERS token, and possibly other tokens or commands in the future. Hence,
is recommended to be sent as first (or early) PROTOCTL token. Note also that
the PASS command should be sent prior to this PROTOCTL token.
EAUTH=my.server.name[,options]
SERVERS Informs the other server about the other servers (numerics) on this network
(including our own numeric).
Syntax: SERVERS=numeric1,numeric2,numeric3,etc
ESVID This token indicates that the traditional services stamp value may take any
arbitrary value for the SVID field, such as an account name or other unique
identifier, including a traditional timestamp value.
-468
View File
@@ -1,468 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- $Id$ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>Unreal 3.2 Protocol Documentation</title>
</head>
<body>
<h1 style="text-align: center;">Unreal 3.2 Protocol Documentation</h1>
<h3 style="text-align: center;">Last update: 29 November 2006</h3>
<h1>Table of Contents</h1>
<p><a href="#S1">1 Introduction</a></p>
<p><a href="#S2">2 Server Negotiation</a></p>
<blockquote><p><a href="#S2_1">2.1 PASS - Connection Password</a></p></blockquote>
<blockquote><p><a href="#S2_2">2.2 PROTOCTL - Server Protocol Negotiation</a></p></blockquote>
<blockquote><p><a href="#S2_3">2.3 SERVER - Server Negotiation</a></p></blockquote>
<blockquote><p><a href="#S2_4">2.4 EOS - End Of Synch</a></p></blockquote>
<blockquote><p><a href="#S2_5">2.5 NETINFO - Network Information</a></p></blockquote>
<p><a href="#S3">3 User Operations</a></p>
<blockquote><p><a href="#S3_1">3.1 NICK - User Introduction and Nick Change</a></p></blockquote>
<blockquote><blockquote><p><a href="#S3_1_1">3.1.1 Nick Collisions</a></p></blockquote></blockquote>
<blockquote><p><a href="#S3_2">3.2 MODE, UMODE2 - User Mode Change</a></p></blockquote>
<blockquote><p><a href="#S3_3">3.3 QUIT - User Disconnect</a></p></blockquote>
<blockquote><p><a href="#S3_4">3.4 KILL - Force Disconnect</a></p></blockquote>
<blockquote><p><a href="#S3_5">3.5 SETHOST/CHGHOST - Change virtual host</a></p></blockquote>
<blockquote><p><a href="#S3_6">3.6 SETIDENT/CHGIDENT - Change a user's username</a></p></blockquote>
<blockquote><p><a href="#S3_7">3.7 SETNAME/CHGNAME - Change a user's realname</a></p></blockquote>
<blockquote><p><a href="#S3_8">3.8 WHOIS - User Information</a></p></blockquote>
<p><a href="#S1">4 Server Operations</a></p>
<blockquote><p><a href="#S4_1">4.1 SERVER - Server Introduction</a></p></blockquote>
<blockquote><p><a href="#S4_2">4.2 SQUIT - Server Removal</a></p></blockquote>
<blockquote><p><a href="#S4_3">4.3 SDESC - Server Description</a></p></blockquote>
<blockquote><p><a href="#S4_4">4.4 PING - Live Connection Query</a></p></blockquote>
<blockquote><p><a href="#S4_5">4.5 PONG - Live Connection Reply</a></p></blockquote>
<blockquote><p><a href="#S4_6">4.6 STATS - Server Stats</a></p></blockquote>
<p><a href="#S5">5 Channel Operations</a></p>
<blockquote><p><a href="#S5_1">5.1 SJOIN - Channel Burst</a></p></blockquote>
<blockquote><p><a href="#S5_2">5.2 JOIN - Channel Join</a></p></blockquote>
<blockquote><p><a href="#S5_3">5.3 PART - Channel Part</a></p></blockquote>
<blockquote><p><a href="#S5_4">5.4 KICK - Channel Kick</a></p></blockquote>
<blockquote><p><a href="#S5_5">5.5 MODE - Channel Mode</a></p></blockquote>
<blockquote><p><a href="#S5_6">5.6 INVITE - Invite a user to a channel</a></p></blockquote>
<blockquote><p><a href="#S5_7">5.7 SAJOIN - Channel Force Join</a></p></blockquote>
<blockquote><p><a href="#S5_8">5.8 SAPART - Channel Force Part</a></p></blockquote>
<blockquote><p><a href="#S5_9">5.9 SAMODE - Channel Force Mode</a></p></blockquote>
<blockquote><p><a href="#S5_10">5.10 TOPIC - Chanel Topic</a></p></blockquote>
<p><a href="#S6">6 Services Commands</a></p>
<blockquote><p><a href="#S6_1">6.1 SVSKILL - Force Disconnect by Service</a></p></blockquote>
<blockquote><p><a href="#S6_2">6.2 SVSMODE, SVS2MODE - Force User Mode Change</a></p></blockquote>
<blockquote><p><a href="#S6_3">6.3 SVSSNO, SVS2SNO - Forced SNomask Change</a></p></blockquote>
<blockquote><p><a href="#S6_4">6.4 SVSNICK - Forced Nick Change</a></p></blockquote>
<blockquote><p><a href="#S6_5">6.5 SVSJOIN - Forced Join</a></p></blockquote>
<blockquote><p><a href="#S6_6">6.6 SVSPART - Forced Part</a></p></blockquote>
<blockquote><p><a href="#S6_7">6.7 SVSO - Oper Permissions</a></p></blockquote>
<blockquote><p><a href="#S6_8">6.8 SVSNOOP - Oper Lockdown</a></p></blockquote>
<blockquote><p><a href="#S6_9">6.9 SVSNLINE - RealName Ban</a></p></blockquote>
<blockquote><p><a href="#S6_10">6.10 SVSFLINE - File Ban</a></p></blockquote>
<p><a href="#S7">7 Messaging</a></p>
<blockquote><p><a href="#S7_1">7.1 PRIVMSG, NOTICE - Simple Message Transmission</a></p></blockquote>
<blockquote><p><a href="#S7_2">7.2 SENDUMODE, SMO - Usermode-based Delivery</a></p></blockquote>
<blockquote><p><a href="#S7_3">7.3 SENDSNO - SNomask-based Delivery</a></p></blockquote>
<blockquote><p><a href="#S7_4">7.4 CHATOPS - IRCop Chat</a></p></blockquote>
<blockquote><p><a href="#S7_5">7.5 WALLOPS - Wallop Chat</a></p></blockquote>
<blockquote><p><a href="#S7_6">7.6 GLOBOPS - FailOp Chat</a></p></blockquote>
<blockquote><p><a href="#S7_7">7.7 ADCHAT - Admin Chat</a></p></blockquote>
<blockquote><p><a href="#S7_8">7.8 NACHAT - NetAdmin Chat</a></p></blockquote>
<p><a href="#S8">8 Ban Control</a></p>
<blockquote><p><a href="#S8_1">8.1 TKL - Master Ban Control</a></p></blockquote>
<blockquote><blockquote><p><a href="#S8_1_1">8.1.1 GLINE - Network-wide user@host ban</a></p></blockquote></blockquote>
<blockquote><blockquote><p><a href="#S8_1_2">8.1.2 GZLINE - Network-wide IP ban</a></p></blockquote></blockquote>
<blockquote><blockquote><p><a href="#S8_1_3">8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban</a></p></blockquote></blockquote>
<blockquote><blockquote><p><a href="#S8_1_4">8.1.4 SPAMFILTER - Message Spam Filtration System</a></p></blockquote></blockquote>
<p><a href="#S9">9 Base64 Tables</a></p>
<blockquote><p><a href="#S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></p></blockquote>
<blockquote><p><a href="#S9_2">9.2 Table for NICKIP.</a></p></blockquote>
<hr/>
<h1><a name="S1"></a>1 Introduction</h1>
<p>This document describes the UnrealIRCd server-to-server protocol.</p>
<h2>A word about clocks.</h2>
<p>Unreal is very time-dependant. Users and channels, for example, are timestamped, and if server clocks are not synchronized properly, things can go very wrong very fast. See <a href="http://vulnscan.org/UnrealIrcd/faq/#67">http://vulnscan.org/UnrealIrcd/faq/#67</a> for more information on this. Note that there is a slight difference between server time and what is actually reported by the UNIX date command or by the C time() function. Unreal can apply an offset to the real time to create the server time, allowing servers to be virtually synchronized when synchronizing the real clocks is not possible (such as on shell servers).
I should make it quite clear that GMT time is used for everything. To be specific, timestamps in unreal are 32-bit integer values (actually, however many bits the time_t type is, which is 32 on 32-bit systems such as x86). This integer value is the number of seconds that have elapsed since Midnight January 1, 1970 GMT (can be referred to as Epoch time in the UNIX world). This means that timezones are no problem, nor is daylight savings time (or whatever your country of choice calls it).</p>
<hr/>
<h1><a name="S2"></a>2 Server Negotiation</h1>
<p>The first step to establish a server-to-server communication is to negotiate the connection as a server. Negotiation is done using standard IRC commands - no PROTOCTL options are in force until the link is established. The first step is to open a TCP/IP connection to the target server. The target port must be one described by a listen {} block in the remote server's configuration, and that listen block must not have the clientsonly option. After the connection is open, you will be treated as any other connection and be greeted with the "Looking up your hostname..." and "Checking identd..." notices as you would for a client. As these are NOTICE messages and your session as a server isn't established, they should simply be ignored. Use the commands below to introduce a server connection.</p>
<h2><a name="S2_1"></a>2.1 PASS - Connection Password</h2>
<p><b>Syntax:</b> <tt>PASS :<i>link password</i></tt></p>
<p>The PASS command is used to transmit the password required for a server link. It must match the password specified in the remote server's link::password-receive (which can be crypted), otherwise the link will be rejected. This should be the first message sent.</p>
<h2><a name="S2_2"></a>2.2 PROTOCTL - Server Protocol Negotiation</h2>
<p><b>Syntax:</b> <tt>PROTOCTL <i>protocol options</i></tt></p>
<p>The PROTOCTL command sets several protocol options. The tokens supported are listed below.</p>
<ul>
<li>NOQUIT : When a netsplit occurs, only send a SQUIT message for each server lost. This server will assume that clients on these servers were also lost and will send the appropriate QUIT messages to local clients and to any non-NOQUIT servers.</li>
<li>TOKEN : Use tokenized commands. Tokens are case-sensitive, shortened versions of command names. Tokens will be usually one or two characters.</li>
<li>NICKv2 : Use extended NICK message for introducing users. See the NICK command for information about this.</li>
<li>VHP : When introducing a user, send his cloaked host as if it were a vhost. Usually used for services to avoid having duplicate code.</li>
<li>SJOIN : Supports SJOIN version 1 which is no longer in use. Use with SJ3.</li>
<li>SJOIN2 : Supports SJOIN version 2 which is no longer in use. Use with SJ3.</li>
<li>UMODE2 : Supports the UMODE2 command, which is a shortened version of MODE for usermode changes.</li>
<li>VL : Supports V:Line information. Extends the SERVER message to include version information used in deny version{} blocks. Note that this is assumed - unreal will always send its own version information.</li>
<li>SJ3 : Supports SJOIN version 3.</li>
<li>NS : Supports server numerics which provides a shorthand for server names. In any circumstance where a :server.name is permitted (the server is the message's real source), @servernumeric may be used instead. In addition, the server.name parameter in the NICK message may be simply the server's numeric. Requires VL support.</li>
<li>SJB64 : Timestamps in NICK and SJOIN are expressed in base64 rather than base10.</li>
<li>TKLEXT : Supports exntended TKL messages for spamfilter support.</li>
<li>NICKIP : Adds an IP parameter to the NICK message, which is the base64 encoding of the user's ip address (in network byte order). Requires NICKv2.</li>
<li>NICKCHARS : Indicates the set of enabled nickchar options (see the regular documention for info about this).</li>
<li>CHANMODES : (Not required to be sent) This is the same as the CHANMODES value in the 005 for client connections. Useful for autodetecting things like what modes are valid for ChanServ MLOCK, for example.</li>
<li>CLK : Supports an extra field in NICK for sending the cloaked host (not vhost).</li>
<li>ESVID : Supports arbitrary values instead of just numeric timestamps for the services identifier field.</li>
</ul>
<p>The syntax examples here follow the conventions for TOKEN and also NS in cases of server-only messages.</p>
<h2><a name="S2_3"></a>2.3 SERVER - Server Negotiation</h2>
<p><b>Note:</b> This message is also used for introducing additional servers, the format of this message in those cases is described later.</p>
<p><b>Syntax (normal):</b> <tt>SERVER <i>server.name</i> 1 :<i>server description</i></tt></p>
<p><b>Syntax (with VL):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i> <i>server description</i></tt></p>
<p><b>Syntax (with VL and NS):</b> <tt>SERVER <i>server.name</i> 1 :U<i>protocolversion</i>-<i>protocolflags</i>-<i>servernumeric</i> <i>server description</i></tt></p>
<p>The literal 1 in the parameter list is the hopcount parameter. Since you are a direct link, your own hopcount will be 1.</p>
<p>The server.name is the same as that in the remote server's link:: block. When received from unreal servers, this will be the value of that server's me::name. The protocol version is the numeric protocol version (2306 for example), and the protocol flags are the server's compilation flags (described below). These two fields are checked against the deny version {} blocks in the remote server's configuration. A value of 0 for either field prevents deny version{} checking for that field. The server description can be anything. When received from unreal servers, it'll be the value of me::description.</p>
<p>The following version numbers have been used previously:</p>
<ul>
<li>2311 - Unreal 3.2.10</li>
<li>2310 - Unreal 3.2.9</li>
<li>2309 - Unreal 3.2.6, 3.2.7, 3.2.8</li>
<li>2308 - Unreal 3.2.5</li>
<li>2307 - Unreal 3.2.4</li>
<li>2306 - Unreal 3.2.3</li>
<li>2305 - Unreal 3.2.2</li>
<li>2304 - Unreal 3.2.1</li>
<li>2303 - Unreal 3.2beta* through 3.2 Release</li>
<li>2302 - Unreal 3.1.1 through 3.1.4</li>
<li>2301 - Unreal 3.1 Release</li>
<li>2300 - Unreal 3.0 Release</li>
</ul>
<p>The compile flags as specified in protocol flags are:</p>
<ul>
<li>c : Server is chrooted (#define CHROOTDIR).</li>
<li>C : Server has command line config (-f option) enabled (#define CMDLINE_CONFIG).</li>
<li>D : Server is in debugmode (#define DEBUGMODE).</li>
<li>F : Using filedescriptor lists.</li>
<li>h : Server is compiled with hub support (#define HUB or answer "Hub" to relevant ./Config prompt).</li>
<li>i : Server shows invisible users in /TRACE.</li>
<li>n : NOSPOOF (pingcookies) is enabled (#define NOSPOOF or answer "Yes" to relevant ./Config prompt).</li>
<li>V : Server is using valloc().</li>
<li>W : Windows IRCd.</li>
<li>Y : Syslog logging enabled.</li>
<li>6 : Server has IPv6 support (#define INET6 or answer "yes" to relevant ./Config prompt).</li>
<li>X : Server has badword stripping (user and channel modes +G) (#define STRIPBADWORDS).</li>
<li>P : Server is using poll().</li>
<li>e : Server has SSL Support (#define USE_SSL or answer "yes" (and have ssl libraries installed) to relevant ./Config prompt).</li>
<li>O : Server has OperOverride enabled (#undef NO_OPEROVERRIDE or answer "no" to relevant ./Config prompt).</li>
<li>o : Server has disabled Oper verify (#undef OPEROVERRIDE_VERIFY or answer "no" to relevant ./Config prompt).</li>
<li>Z : Server has ziplink support (#define ZIP_LINKS or answer "yes" to relevant ./Config prompt AND have the zlib dev libraries).</li>
<li>E : Server has extended channel mode support.</li>
<li>3 : 3rd party modules are loaded or some system libraries are wonky.</li>
<li>m : Private message handling is 'tainted' (one or modules registered a USERMSG hook).</li>
<li>M : Channel message handling is 'tainted' (one or modules registered a CHANMSG hook).</li>
<li>Additional Version flags can be added by 3rd-party modules.</li>
</ul>
<h2><a name="S2_4"></a>2.4 EOS - End Of Synch (TOKEN: ES)</h2>
<p><b>Syntax:</b> ES</p>
<p>Marks the end of the synching process. This is really optional, but it might be a good idea to send it anyway when you really are done synching. Once you send this, unreal will announce &quot;Client connecting&quot; or &quot;Client exiting&quot; notices (to those with snomask +F) for users (unless your server is U:Lined), and joins will be counted toward channel flood controls (chanmode +f).</p>
<p>Sending EOS only marks your server as synched, but does not do so for servers behind you. EOS would need to be sent on those servers' behalf as well.</p>
<h2><a name="S2_5"></a>2.5 NETINFO - Network Information (TOKEN: AO)</h2>
<p><b>Syntax:</b> AO <i>maxglobal</i> <i>currenttime</i> <i>protocolversion</i> <i>cloakhash</i> 0 0 0 :<i>networkname</i></p>
<p>This tells the other server your current network configuration. The max global is the highest number of concurrent users network-wide that this server has seen. The current time is a timestamp value. Protocolversion is the same as that in the SERVER command. Cloakhash is a hash representing the configured cloak keys. It may be a * if you are implementing services. The network name is that specified in set::network-name. The cloak-prefix is currently not sent here (and thus unreal won't generate warning for mismatching cloak prefixes, but they should be the same anyway).</p>
<p>It is NETINFO, not EOS, that triggers the &quot;Link bla bla bla is now synched&quot; notices, but NETINFO does not imply synching is actually complete (see EOS).</p>
<hr/>
<h1><a name="S3"></a>3 User Operations</h1>
<p>One important function of servers is it must notify all other servers about all of the users behind it. These commands represent the operations that can result in the change of a user's global state.</p>
<h2><a name="S3_1"></a>3.1 NICK - User Introduction and Nick Change (TOKEN: &amp;)</h2>
<p><b>Syntax (nick change):</b> <tt>:<i>oldnick</i> &amp; <i>newnick</i> :<i>timestamp</i></tt></p>
<p>This format of the NICK message indicates an existing user is changing his or her nickname. If a collision occurs, see the section on Nick Collisions below. The timestamp is the new nickname's timestamp.</p>
<p><b>Syntax (normal):</b> <tt>&amp; <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>service-identifier-token</i> :<i>realname</i></tt></p>
<p><b>Syntax (NICKv2):</b> <tt>&amp; <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>service-identifier-token</i> <i>+usermodes</i> <i>virtualhost</i> :<i>realname</i></tt></p>
<p><b>Syntax (NICKv2+CLK):</b> <tt>&amp; <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>service-identifier-token</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> :<i>realname</i></tt>
<p><b>Syntax (NICKv2+NICKIP):</b> <tt>&amp; <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>service-identifier-token</i> <i>+usermodes</i> <i>virtualhost</i> <i>nickipaddr</i> :<i>realname</i></tt></p>
<p><b>Syntax (NICKv2+NICKIP+CLK):</b> <tt>&amp; <i>nick</i> <i>hopcount</i> <i>timestamp</i> <i>username</i> <i>hostname</i> <i>server</i> <i>service-identifier-token</i> <i>+usermodes</i> <i>virtualhost</i> <i>cloakhost</i> <i>nickipaddr</i> :<i>realname</i></tt>
<p><b>Note:</b> Because each server normally does its own cloak generation, Unreal does not expect to receive NICK messages with the CLK info, so do not send it. It will send this info to a server it has received a PROTOCTL CLK from however.</p>
<p>This format of the NICK message introduces a new user to the network. If PROTOCTL VHP is enabled, the user's cloaked host is put in the virtualhost field, otherwise it'll be * unless the user is +t. With the addition of CLK, VHP is no longer necessary for determining the cloak host.</p>
<h3><a name="S3_1_1"></a>3.1.1 Nick Collisions</h3>
<p>A nick collision occurs when a server receives a NICK message (or &amp; token) introducing a user that the server already sees on the network. When a collision occurs, one or both of the colliding clients must be disconnected. The timestamp is examined to determine which client loses. The client with the earlier timestamp remains. If both clients have equal timestamps, both are removed. Currently, Unreal handles NICK collisions both passively and agressively:</p>
<ul>
<li><b>Aggressive Handling:</b> The server actively sends a KILL message back across the link to terminate that end's client.</li>
<li><b>Passive Handling:</b> Upon receipt of a NICK message that should "win", the server simply silently exits it's own client.</li>
</ul>
<h2><a name="S3_2"></a>3.2 MODE, UMODE2 - User Mode Change (TOKEN: G or |)</h2>
<p><b>Syntax (MODE):</b> <tt>:<i>user</i> G <i>user</i> <i>modechange</i></tt></p>
<p><b>Syntax (UMODE2):</b> <tt>:<i>user</i> | <i>modechange</i></tt></p>
<p>This indicates a usermode change. The modechange can consist of zero or more strings of characters, each prefixed with either a + or -; the only delimiter between them being said + or -. If no + or - is at the beginning of the mode string, a + should be implied.</p>
<p>Some user modes are never sent between servers. Specifically, usermode +s and +O are not sent between servers. Modules can define additional usermodes that also might not be sent between servers. The UMODE2 saves bandwidth by not including the redundant target field for usermode changes, so use it when possible.</p>
<h2><a name="S3_3"></a>3.3 QUIT - User Disconnect (TOKEN: ,)</h2>
<p><b>Syntax:</b> <tt>:<i>user</i> , :<i>reason</i></tt></p>
<p>This command indicates that a user has disconnected. The reason field is filled in with the reason the user disconnected, which will be any of: quit message provided by the user in a /quit command, kill message for local operator kills, "Client exited" if the user does a brutal quit (clean (by TCP's definition) disconnect without sending a QUIT message), or a socket error message if present.</p>
<p>The QUIT message must NOT be prefixed when passing on to other servers. Only local user quit messages are affected by set::prefix-quit.</p>
<h2><a name="S3_4"></a>3.4 KILL - Force Disconnect (TOKEN: .)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> . <i>target</i> :<i>killpath</i>!<i>source</i> (<i>reason</i>)</tt></p>
<p>Used to indicate that an operator has used KILL on a user not on the same server. Anything beyond the last ! in the kill path is used as the reason. The source (reason) part is simply a standard used by Unreal. As each server passes on a KILL message, it usually prepends the bottommost part (up to the first .) of it's name followed by a ! character. When unreal receives a KILL from a directly connected irc operator, it will usually add that oper's vhost (or realhost if -x) as the first hop in the kill path, then follow with it's own name as mentioned before if it is passing to another server.</p>
<p>A server can also send KILLs on it's own. This is done in cases involving nickname collisions, fake senders, bad direction, and other cases of protocol errors. Usually, in these cases, the server puts it's own name as the source, and also prefixes with <i>bottompart</i>! like for any other ircop on that server. For example: @3 . someone :irc!irc.example.com (Nick collision)</p>
<h2><a name="S3_5"></a>3.5 SETHOST/CHGHOST - Change virtual host (TOKEN: AA or AL)</h2>
<p><b>Syntax (SETHOST):</b> <tt>:<i>source</i> AA <i>newvhost</i></tt></p>
<p><b>Syntax (CHGHOST):</b> <tt>:<i>source</i> AL <i>target</i> <i>newvhost</i></tt></p>
<p>Indicates the change of a user's virtual host. Currently, servers are expected to assume UMODE2 +xt on the target user in both commands. (In the case of SETHOST, the target is the sender.) Servers using PROTOCTL VHP will receive the cloaked host in a SETHOST message when a user activates his cloaked host. A server can also send CHGHOST (from one of it's opered clients) to change a user's hostname. This is generally used by HostServ implementations. To disable a cloaked host, use CHGHOST to set the user's virtual host equal to his real host, or use SVSMODE -xt, but the latter requires services.</p>
<h2><a name="S3_6"></a>3.6 SETIDENT/CHGIDENT - Change a user's username (TOKEN: AD or AZ)</h2>
<p><b>Syntax (SETIDENT):</b> <tt>:<i>source</i> AD <i>newusername</i></tt></p>
<p><b>Syntax (CHGIDENT):</b> <tt>:<i>source</i> AZ <i>target</i> <i>newusername</i></tt></p>
<p>Indicates the change of a user's username. No usermode change is associated with this. Unreal does not use a distinguished virtual username, so servers should only keep the original username (from the NICK message) if they intend to allow the user to reset the original username. Servers can use CHGIDENT to change a user's username.</p>
<h2><a name="S3_7"></a>3.7 SETNAME/CHGNAME - Change a user's realname (TOKEN: AE or BK)</h2>
<p><b>Syntax (SETNAME):</b> <tt>:<i>source</i> AE :<i>newrealname</i></tt></p>
<p><b>Syntax (CHGNAME):</b> <tt>:<i>source</i> BK <i>target</i> :<i>newrealname</i></tt></p>
<p>Indicates the change of a user's realname. No usermode change is associated with this. Unreal does not use a distinguished virtual realname, so servers should only keep the original realname (from the NICK message) if they intend to allow the user to reset the original realname. Servers can use CHGNAME to change a user's username. Note that servers must NOT check that the sender be an IRCop in SETNAME - normal users are permitted to use SETNAME.</p>
<h2><a name="#S3_8"></a>3.8 WHOIS - User Information (TOKEN: #)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> # [<i>from-server</i> ]<i>nick</i></tt></p>
<p>Requests the information on a user. This works exactly like the user /whois command - in fact, the source parameter must be a user, or the command will do nothing. <i>from-server</i> is the server to request the information from; if a server recives a WHOIS message without this parameter, it should return its own information on the user, otherwise it should pass the message to the given server. Note that <i>from-server</i> may name a user instead of a server (such as when a user uses /whois nick nick), in which case the the nick should be interpreted as naming the server that user is on. <i>nick</i> may be several users seperated by commas, but may not contain wildcards.</p>
<p>The reply to a WHOIS message uses the same numeric replies as the user command.</p>
<hr/>
<h1><a name="S4"></a>4 Server Operations</h1>
<p>This is different from server negotiation. Negotiation is when you are first connecting. Server introduction is used for introducing additional servers behind an existing server (aka hubbing). Hubbing is limited as specified by the hub, leaf, and leafdepth parameters in the link block and attempted violation of a hub restriction results in termination of the link. If no hub or leaf directive is given your server is a leaf by default, so any introduction of any server behind you would be an automatic drop. U:Lines don't matter here; services must be configured as a hub in the link block. The reason is U:Line is a permission rule, but hub privilege is a network structure rule.</p>
<h2><a name="S4_1"></a>4.1 SERVER - Server Introduction (TOKEN: ')</h2>
<p><b>Note: This command is also used for negotiation. Be warned that the token for this command is NOT VALID at that time! See section 2.3 for the syntax for negotiation.</b></p>
<p><b>Syntax (without PROTOCTL NS):</b> <tt>:<i>source</i> SERVER <i>new.server</i> <i>hopcount</i> :<i>description</i></tt></p>
<p><b>Syntax (with PROTOCTL NS):</b> <tt>@<i>sourcenumeric</i> SERVER <i>new.server</i> <i>hopcount</i> <i>numeric</i> :<i>description</i></tt></p>
<p>The command indicates that the server named new.server is being introduced by the source (the source is the server which new.server is directly linked to). The hopcount will be the number of links the receiving server would have to cross to reach new.server. In other words, new.server introduced itself with a hopcount of 1, and as the SERVER message is passed along, hopcount is incremented.</p>
<p>As an example, a services server faking a SERVER message for JUPE functionality would use a hopcount of 2.</p>
<h2><a name="S4_2"></a>4.2 SQUIT - Server Removal (TOKEN: -)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> SQUIT <i>server.name</i> <i>:reason</i></tt></p>
<p>From an IRCop or when server.name is not behind the source, this command requests the removal of the specified server.name. The command in this case is treated very much like KILL in the respect that the message is broadcasted to all servers, except server.name and any servers behind it. When the SQUIT reaches server.name's uplink, that server closes the link to server.name (which would then generate it's own SQUIT on behalf of it's uplink for the servers behind it).</p>
<p>A server can also use SQUIT in the same manner as QUIT to note the removal of a server behind it, or that it itself is quitting. In the former case, server.name is behind source, and the message is forward on to all other servers. In the latter case, source and server.name are equal, the receiving server closes the link and forwards the SQUIT message.</p>
<p>Unreal closes a direct link by simply sending an ERROR message and then closing the TCP connection. This typically causes the other end to generate an SQUIT bearing the message "Client exited" or similar, however, the ERROR will usually cause the server to send a message to all IRCops.</p>
<h2><a name="S4_3"></a>4.3 SDESC - Server Description (TOKEN: AG)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> AG :<i>newdesc</i></tt></p>
<p>The server to which source is connected to should have it's description updated to newdesc. This does NOT include the VL inforamtion.</p>
<h2><a name="S4_4">4.4 PING - Live Connection Query (TOKEN: 8)</a></h2>
<p><b>Syntax:</b> <tt>8 <i>source</i>[ :<i>destination</i>]</tt></p>
<p>Used to check if a connection is still live if it has been &quot;quiet&quot; for a certain amount of time. Typically, unreal will send PING requests at intervals determined by the class::pingfreq setting. PINGs originating from the direct uplink will use the token, but it seems PINGs originating from a distant server will not.</p>
<p>The response to a PING is sent with the <a href="#S4_5">PONG</a> command.</p>
<p>When receiving a two-parameter PING, the second parameter is the target. If the target isn't you, you can either reply on behalf of that target (using its name instead of yours), or if there is a real connection representing the target, forward the PING to the target.</p>
<h2><a name="S4_5">4.5 PONG - Live Connection Reply (TOKEN: 9)</a></h2>
<p><b>Syntax:</b> <tt>9 <i>source</i>[ :<i>destination</i>]</tt></p>
<p>Used to respond to a <a href="#S4_4">PING</a> query.</p>
<p><b>Responding to a ping:</b> Once a PING is received, you usually have an amount of time to respond equal to your class::pingfreq. The correct response will always have two parameters. If you received one parameter, then the received parameter becomes the second parameter of your response, and the first parameter is your server name. If you received two parameters, the response returns both parameters in reverse order.</p>
<p>For example, the response to <tt>8 uplink.server</tt> is <tt>9 my.name uplink.server</tt>, while the response to <tt>PING distant.server your.server</tt> is <tt>9 your.server distant.server</tt>. Unreal typically includes a : prior to the last parameter. This isn't required if that parameter contains no spaces, but it is especially important to not include the colon when reversing the parameters, or else Unreal mistake it for a single-parameter PONG.
<p>If a two-parameter PONG is received, the second parameter names the target. If the target is not you, and a real connection represents that target, you should forward the PONG message via that connection.</p>
<h2><a name="#S4_6"></a>4.6 STATS - Server Stats (TOKEN: 2)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> 2 [<i>type</i> [<i>server</i>] [<i>extended-params</i>]]</tt></p>
<p>Requests statistics or configuration information from a server. This command is used to transport cross-server STATS requests from users (eg: /stats o other.server), and should only be sent from a user (not a server). With no parameters, this will cause unreal to simply dump its help output. <i>type</i> is the type of stats to request, <i>server</i> names a server (or a user on that server) to request stats from, and <i>extended-params</i> is used to filter output from STATS G, etc. When received, it is up to the receiver to determine what stats to support and how to reply, but generally numeric replies are used. For the list of unreal's stats types, type /stats in a client for the helptext dump.</p>
<p><b>Note:</b> Stats set as oper-only (see set::oper-only-stats) will be refused from a server. In this case, it will be necessary to send the stats request from a psuedo-oper (such as a services agent, etc) for services/stats/etc.</p>
<hr/>
<h1><a name="S5"></a>5 Channel Operations</h1>
<p>These commands deal with the state of channels across the network. Unreal only supports Network Channels, where the first character is a # character.</p>
<h2><a name="S5_1"></a>5.1 SJOIN - Channel Burst (TOKEN: ~)</h2>
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> ~ <i>timestamp</i> <i>channel</i> +<i>modes</i>[ <i>modeparams</i>] :<i>memberlist</i> <i>&amp;ban</i> <i>"exempt</i> <i>'invex</i></tt></p>
<p>Timestamp is the channel timestamp and can be !b64 as defined by PROTOCTL SJB64. Modes should only include those in the last three mode sets listed in CHANMODES. Modeparams is one parameter for each mode character that requires one. Memberlist is a series of users (all of which must at least be behind the server sending the SJOIN), each user is prefixed with one or more characters indicating their status. Owners (+q) are prefixed with *, admins (+a) ~, ops (+o) @, halfops (+h) %, voices (+v) +. Normal users are not prefixed with anything. Ban, ban exception, and invite exception masks are also included, with bans prefixed with &amp;, ban exceptions prefixed with ", and invite exceptions with '. Note that when a &amp;, " or ' is encountered as the first character, further processing of ~, *, @, %, or + characters must not continue because ban, exempt, and invite masks can contain any of those characters. (Plus it's just not right for a ban mask to be marked as a channel admin...)</p>
<p>If the channel didn't already exist it is created with the information given in the SJOIN. Otherwise the timestamp is used to determine how the SJOIN information is handled. As a given, all members are joined into the channel, regardless. The mode information (modes, modeparams, memberlist prefixes, bans, exempts, and invites) is subject to the timestamp rules:</p>
<ul>
<li>If the channel's current timestamp is equal to the timestamp in SJOIN, then the mode information is merged.</li>
<li>If the channel's current timestamp is less than the SJOIN timestamp, then the mode information is ignored.</li>
<li>If the channel's current timestamp is greater than the SJOIN timestamp, then the channel's existing mode information is cleared (for example, deop, etc all local clients), and the SJOIN mode information is added.</li>
</ul>
<p>When merging modes, conflicting modes (including +p vs +s, differing +l limits or +k keys, etc) are handled as follows:</p>
<ul>
<li><b>Private (+p) vs. Secret (+s):</b> Secret (+s) is preferred. Private (+p) is removed. (Note: there is a <a href="http://bugs.unrealircd.org/view.php?id=2391">bug</a> in Unreal versions prior to 3.2.3 in which a desynch will occur in which one side is +p and the other is +s. Update to Unreal 3.2.4 if you have problems with this.)</li>
<li><b>Strip Color (+S) vs. Block Color (+c):</b> Block (+c) is preferred. Strip (+S) is removed. (Note: Bug for +p vs. +s in prior unreal versions apply here as well.)</li>
<li><b>Channel Limit:</b> Numericly larger limit is preferred (for example, +l 30 versus +l 15 : +l 30 wins).</li>
<li><b>Channel Key:</b> &quot;Larger&quot; key (as defined by strcmp) is preferred (for example, +k moo versus +k meow : +k moo wins).</li>
<li><b>Channel Link:</b> &quot;Larger&quot; link name (as defined by stricmp - not case sensitive) is preferred (for example, +L #moo versus +L #meow : +L #moo wins, but +L #Meow versus +L #meow : values are equal).</li>
<li><b>Flood String:</b> Not really sure on this. I think larger value in each component wins.</li>
<li><b>Join-Throttle:</b> Highest of time period wins, if equal, highest of join amount wins (so +j 3:40 beats +j 5:20 but +j 5:20 beats +j 3:20).</li>
<li>Parameterized modes in third party modules will define their own conflict resolution formula.</li>
</ul>
<h2><a name="S5_2"></a>5.2 JOIN - Channel Join (TOKEN: C)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> C <i>#channel</i></tt></p>
<p>Indicates a user has joined a channel. Only one channel is sent this way, and the key is not sent even if the user gave one one joining. If the channel parameter is the special "0" case, the server must interpret the message as a PART for all channels the user is on.</p>
<h2><a name="S5_3"></a>5.3 PART - Channel Part (TOKEN: D)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> D <i>#channel</i>[ :<i>reason</i></tt>]</p>
<p>Indicates a user has left a channel. Only one channel is sent this way. The reason parameter may be left out if no reason was given.</p>
<h2><a name="S5_4"></a>5.4 KICK - Channel Kick (TOKEN: H)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> H <i>#channel</i> <i>user</i> :<i>reason</i></tt></p>
<p>Orders the forced removal of user from #channel with the given reason. When updating state for this command, it should be the same as if :user PART #channel had been received - the user is removed from #channel's memberlist.</p>
<h2><a name="S5_5"></a>5.5 MODE - Channel Mode (TOKEN: G)</h2>
<p><b>Note:</b> This is the same command as that used for usermode changes.</p>
<p><b>Syntax:</b> <tt>:<i>source</i> G <i>#channel</i> <i>modechange</i> <i>modeparams</i>[ <i>timestamp</i>]</tt></p>
<p>Changes the specified modes on the given channel. If the source is a server and the last parameter is numeric, it is interpreted as timestamp (although it can also be consumed as a parameter for modes. For example: :server.name MODE #channel +l 4 &lt;-- 4 will be a timestamp and the +l parameter). When a mode change is timestamped in this way, the mode is treated as it is with SJOIN: the MODE message is ignored if the timestamp is greater than the channel timestamp. (If the timestamp is equal, the mode is simply added replacing any conflicting modes already in place.)</p>
<p>A services implementation can easily clear all entries in a list mode such as bans with SVSMODE (see below).</p>
<h2><a name="S5_6"></a>5.6 INVITE - Invite a user to a channel (TOKEN: *)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> * <i>target</i> <i>#channel</i></tt></p>
<p>Sends to target an invitation to join #channel. If the source is a channel operator on #channel, or a U:Lined server, the invitation grants the user the temporary ability to join the channel regardless of any bans or some restricting channel modes (not +O or +A).</p>
<h2><a name="S5_7"></a>5.7 SAJOIN - Channel Force Join (TOKEN: AX)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> AX <i>targetuser</i> <i>#channel</i></tt></p>
<p>This requests the forced join of targetuser to #channel. This type of forced join overrides bans, and most modes. The server to which targetuser is connected to must actually acknowledge the join for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAJOIN was targeted at a service client, in which case it should be ignored...</p>
<h2><a name="S5_8"></a>5.8 SAPART - Channel Force Part (TOKEN: AY)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> AY <i>targetuser</i> <i>#channel</i>[ :<i>reason</i>]</tt></p>
<p>This requests the forced part of targetuser from #channel. This is slightly different from a KICK in that the user's removal is announced with PART. The server to which targetuser is connected to must actually acknowledge the part for it to occur. Service implementations may ignore this command, as they would only ever receive it if an SAPART was targeted at a service client, in which case it should be ignored...</p>
<p>The reason field is optional. If provided the acknowledging PART message should prefix the message with &quot;SAPart:&quot;.</p>
<h2><a name="S5_9"></a>5.9 SAMODE - Channel Force Mode (TOKEN: o)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> o <i>#channel</i> <i>modechange</i> <i>modeparams</i></tt></p>
<p>This has the same parameters as for MODE. The only difference is that servers probably will never receive this (but is best to document just in case), and that absolutely NO permission checking is done on anything.</p>
<h2><a name="S5_10"></a>5.10 TOPIC - Channel Topic (TOKEN: ) )</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> ) <i>#channel</i> <i>nick</i> <i>timestamp</i> :<i>topic</i></tt></p>
<p>Changes the channel topic information. This format is used when synching, as well as when a topic is changed normally. Nick is the user who changed the topic (depending on compile options, it can be just nick or a full nick!user@host), timestamp is when the change occured, and topic is the new topic text. Normally, only a newer timestamp will actually change the topic, but a U:Lined server can use an older timestamp as well (such as for TOPICLOCK).
<hr/>
<h1><a name="S6"></a>6 Services Commands</h1>
<p>These are commands typically employed by a service implementation, in addition to some of the normal commands. All of the commands listed here require the sender to be correctly U:Lined. This means that the services server name must appear within a ulines {} block in the unrealircd.conf configuration for ALL servers in the network. All servers and clients behind a U:Lined server are themselves U:Lined.</p>
<h2><a name="S6_1"></a>6.1 SVSKILL - Force Disconnect by Service (TOKEN: h)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> h <i>target</i> :<i>reason</i></tt></p>
<p>This command is similar to KILL but differs in several ways. First of all: there is no mutilation of the reason value. The reason given is the exact reason used to generate QUIT messages sent to users. Second, it is silent; no server notice is generated in response to this command. Third, it can only be used by a U:Lined server or client (such as services).</p>
<p>Because this command can be dangerous in the hands of an abusive person, service implementations should avoid granting humans control over the reason parameter. In cases of commands where a person has control over such parameter, either use a regular KILL instead, or otherwise modify the reason so that operators can be held accountable if necessary.</p>
<h2><a name="S6_2"></a>6.2 SVSMODE, SVS2MODE - Force User Mode Change (TOKEN: n or v)</h2>
<p><b>Syntax (SVSMODE):</b> <tt>:<i>source</i> n <i>target</i> +<i>usermodes</i></tt></p>
<p><b>Syntax (SVS2MODE):</b> <tt>:<i>source</i> v <i>target</i> +<i>usermodes</i></tt></p>
<p>Judging by these commands alone, you'd think they are identical. Both commands force a usermode change to occur. This is typically used by services to set +r on a user who has successfully identified. They differ in that SVS2MODE also sends the mode change to the user, while SVSMODE does not (hidden mode change).</p>
<p>SVSMODE and SVS2MODE also give special treatment to usermode +d. Rather than setting the deaf mode like you might expect, SVS(2)MODE +d allows services to change a user's services stamp (which is given in the NICK message). This could allow services to set the service stamp to an easily identifiable value that could then be used to say "hey, this person identified already". The syntax of this is: +d <i>newservice-identifier-token</i> and can be combined with setting other usermodes as well. The deaf mode <b>can</b> be set by using +d without the service stamp parameter; however, in this case you <b>cannot</b> set the service stamp in the same SVS(2)MODE message.</p>
<p><b>Note:</b> Do <b>NOT</b> use SVSMODE to remove IRCop status from a user. Use the SVSO command for that instead.</p>
<p>Alternatively, target can name a channel. In this case, the mode change parameter can consist of a - character, followed by any or all of: b, e, I, q, a, o, h, or v. These characters cause the corresponding lists to be cleared of all entries. For example: SVSMODE #channel -b removes ALL bans from #channel, and SVSMODE #channel -qaohv turns ALL users on #channel into normal users (removes all owner, admin, op, halfop, and voice status). In this case, the uplink will acknowledge with a MODE listing the bans, etc that were removed.</p>
<p>To completely clear a channel of all modes: MODE #channel -cfijklmnprstzACGMKLNOQRSTVu (plus any added by third-party module) followed by SVSMODE #channel -beIqaohv.</p>
<h2><a name="S6_3"></a>6.3 SVSSNO, SVS2SNO - Forced SNomask Change (TOKEN: BV or BW)</h2>
<p><b>Syntax (SVSSNO):</b> <tt>:<i>source</i> BV <i>target</i> +<i>snomasks</i></tt></p>
<p><b>Syntax (SVS2SNO):</b> <tt>:<i>source</i> BW <i>target</i> +<i>snomask</i></tt></p>
<p>Changes a user's snomasks. The difference between SVSSNO and SVS2SNO is the same as with SVSMODE versus SVS2MODE. If the user is not +s, you must add it via SVSMODE +s. For example:</p>
<pre>:OperServ v someuser +s
:OperServ BW someuser +ks</pre>
<h2><a name="S6_4"></a>6.4 SVSNICK - Forced Nick Change (TOKEN: e)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> e <i>target</i> <i>newnick</i> :<i>newtimestamp</i></tt></p>
<p>Forces the specified user to change his nick to newnick and also sets the nick timestamp to newtimestamp (so, for example, services could protect identified users from a nick collision by simply setting the nick timestamp to something way less than "now" - though currently this requires actually changing the nick too). SVSNICK requires the server to which the target is connected to acknowledge the nick change. If the user specified by newnick already exists, then target will be disconnected (even if it's something like a case-change).</p>
<h2><a name="S6_5"></a>6.5 SVSJOIN - Forced Join (TOKEN: BX)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BX <i>target</i> <i>#channel</i></tt></p>
<p>This is identical to SAJOIN with a few exceptions: 1) It is U:Line-only. 2) No opernotice on use. 3) Bans and restricting modes are respected, a prior INVITE message must be sent to cause bans to be ignored.</p>
<h2><a name="S6_6"></a>6.6 SVSPART - Forced Part (TOKEN: BT)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BT <i>target</i> <i>#channel</i> :<i>reason</i></tt></p>
<p>Also identical to SAPART with a few exceptions: no static prefix on the optional part reason, and no global notice, and requires a U:Line. Usage recommendation of SVSPART versus KICK is the same as for SVSKILL versus KILL.</p>
<h2><a name="S6_7"></a>6.7 SVSO - Oper Permissions (TOKEN: BB)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BB <i>target</i> <i>flagchanges</i></tt></p>
<p>This allows a service to add or remove IRCop permission flags for a user. Flagchanges is formatted similar to that of MODE with the exception that operflags are used instead of usermodes. If the change string consists only of -, then all oper permissions, usermodes, and snomasks are removed (as if the user had himself typed MODE nick -Oo).</p>
<p>If you are granting IRCop permissions to a user who is not currently an IRCop, you should follow up with an SVSMODE +o or SVSMODE +O as appropriate. For example:</p>
<pre>:OperServ BB somenick +o
:OperServ BW somenick +cefknoqsSv
:OperServ AL somenick local.oper.somethinghere.net
:OperServ v somenick +Ohs </pre>
<h2><a name="S6_8"></a>6.8 SVSNOOP - Oper Lockdown (TOKEN: f)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> f <i>(op)</i><i>server.name</i></tt></p>
<p>The (op) parameter is either a + or - indicating if NOOP mode should be activated (+) or deactivated (-). When NOOP mode is activated, all IRCops on the server are deopered (including local operators) and the /oper command is disabled. IRCop privileges can still be granted through use of SVSO. On UnrealIRCd, it is not necessary to masskill all IRCops on the nooped server, as they are deopered automatically.</p>
<h2><a name="S6_9"></a>6.9 SVSNLINE - RealName Ban (TOKEN: BR)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> BR <i>op</i> <i>reason</i> :<i>realname mask</i></tt></p>
<p>Op is either + (add) or - (remove). In the case of +, reason is a space-escaped string (all space chars are encoded as _). If -, reason is ignored.</p>
<h2><a name="S6_10"></a>6.10 SVSFLINE - File Ban (TOKEN: BC)</h2>
<p><b>Syntax (add):</b> <tt>:<i>source</i> BC + <i>filemask</i> :<i>reason</i></tt></p>
<p><b>Syntax (remove):</b> <tt>:<i>source</i> BC - <i>filemask</i></tt></p>
<p><b>Syntax (clear):</b> <tt>:<i>source</i> BC *</tt></p>
<p>Adds or removes a DCCDENY item for the specified filemask on all servers. These DCCDENYs are hard dccdenies - the /dccallow command cannot override it. The last form removes all dccdenies added via SVSFLINE.</p>
<hr/>
<h1><a name="S7"></a>7 Messaging</h1>
<p>What good is Internet Relay <b>CHAT</b> if users cannot <b>CHAT</b>? This section addresses the commands through which arbitrary user messages are sent.</p>
<h2><a name="S7_1"></a>7.1 PRIVMSG, NOTICE - Simple Message Transmission (Token: ! or B)</h2>
<p><b>PRIVMSG Syntax:</b> <tt>:<i>source</i> ! <i>target</i> :<i>message</i></tt></p>
<p><b>NOTICE Syntax:</b> <tt>:<i>source</i> B <i>target</i> :<i>message</i></tt></p>
<p>Sends a messages to the given target. The target either names a single client, or identifies a list of clients in which the message is to be sent to. The available targets include:</p>
<ul>
<li><i>nickname</i>: Names a single user to whom the message is delivered.</li>
<li><i>nickname</i>@<i>servermask</i>: Also names a single user, but the message will only be delivered if the user is connected to a server matching the specified servermask. This is typically used for sending messages to services. The target must not be changed at any point along the path it must travel for delivery, even up to the final receipt of the message by the target. This allows the target to know it has been sent a message in this way.</li>
<li>#<i>channelname</i>: Sends a message to all users on the specified channel (except when channel is a moderated auditorium (+mu), in which case the wierd +mu sending behavior goes off).</li>
<li><i>modeprefix</i>#<i>channelname</i>: Sends a message to all users on the given channel having the given status or higher. For example: + means all voices, halfops, etc.</li>
<li>$<i>servermask</i>: Sends a message to ALL users on all servers matching the specified servermask (known as a server broadcast message). The RFC requirements of having a TLD with no wildcards is not applied to U:Lined clients.</li>
</ul>
<p>Unreal does not support the #hostmask format.</p>
<h2><a name="S7_2"></a>7.2 SENDUMODE, SMO - Usermode-based Delivery (TOKEN: AP or AU)</h2>
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> AU <i>umode</i> :<i>message</i></tt></p>
<p>Sends the specified message to all users with the given mode. Only one usermode may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a &quot;*** Notice (or other leader here) -- from blah:&quot; if you wish to clarify where the message is from.</p>
<h2><a name="S7_3"></a>7.3 SENDSNO - SNomask-based Delivery (TOKEN: Ss)</h2>
<p><b>Syntax:</b> <tt>@<i>servernumeric</i> Ss <i>snomask</i> :<i>message</i></tt></p>
<p>Sends the specified message to all users with the given snomask. Only one snomask may be given. This is a server-only command if you can't tell from the sender prefix :) .</p>
<p>The message will be displayed as coming from the receiving client's own server. It may be appropriate to add a &quot;*** Notice (or other leader here) -- from blah:&quot; if you wish to clarify where the message is from.</p>
<h2><a name="S7_4"></a>7.4 CHATOPS - IRCop Chat (TOKEN: p)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> p :<i>message</i></tt></p>
<p>Sends the message to all IRCops on all servers.</p>
<h2><a name="S7_5"></a>7.5 WALLOPS - Wallop Chat (TOKEN: =)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> = :<i>message</i></tt></p>
<p>Sends the message to all users with usermode +w, whether they are ircops or not.</p>
<h2><a name="S7_6"></a>7.6 GLOBOPS - FailOp Chat (TOKEN: ])</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> ] :<i>message</i></tt></p>
<p>Send the message to all IRCops with usermode +g.</p>
<h2><a name="S7_7"></a>7.7 ADCHAT - Admin Chat (TOKEN: x)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> x :<i>message</i></tt></p>
<p>Send the message to all Server and Network Admins (usermode +A).</p>
<h2><a name="S7_8"></a>7.8 NACHAT - NetAdmin Chat (TOKEN: AC)</h2>
<p><b>Syntax:</b> <tt>:<i>source</i> AC :<i>message</i></tt></p>
<p>Send the message to all Network Admins (usermode +N).</p>
<hr/>
<h1><a name="S8"></a>8 Ban Control</h1>
<p>Sometimes, you have the misfortune of encountering a user who has no purpose but to serve as an annoyance to your server or network. These commands transmit network-wide ban information amongst each other.</p>
<h2><a name="S8_1"></a>8.1 TKL - Master Ban Control (TOKEN: BD)</h2>
<p>The TKL command seems to have one oddity about it: the real ban source is included in the TKL command rather than in the sender prefix. Most likely this is done for synching reasons (so that the *line ban can be credited to the proper person even if he/she is offline). For this reason, the command syntax is given without any sender prefix at all. It is still permissible to use one, however.</p>
<h3><a name="S8_1_1"></a>8.1.1 GLINE - Network-wide user@host ban</h3>
<p><b>Add Syntax (TKL):</b> <tt>BD + G <i>userpart</i> <i>hostpart</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
<p><b>Remove Syntax (TKL):</b> <tt>BD - G <i>userpart</i> <i>hostpart</i> <i>source</i></tt></p>
<p>Adds and Removes Network-wide user@host bans, known as G:Lines. The GLINE command itself must not be used. The userpart and hostpart are the user portion and hostname portion of the ban mask. The expiretimestamp is 0 if the G:Line should not expire, otherwise it will expire at the given time. It is an absolute time, not relative, thus it's imperitive to have reasonably synchrnoized clocks or bans may be removed too early or even immediately!</p>
<h3><a name="S8_1_2"></a>8.1.2 GZLINE - Network-wide IP ban</h3>
<p><b>Add Syntax (TKL):</b> <tt>BD + Z * <i>ipmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
<p><b>Remove Syntax (TKL):</b> <tt>BD - Z * <i>ipmask</i> <i>source</i></tt></p>
<p>Adds and Removes Network-wide IP bans, known as Global Z:Lines. The GZLINE command itself must not be used. Ipmask permits CIDR notation as well as wildcard masks.</p>
<h3><a name="S8_1_3"></a>8.1.3 SQLINE, UNSQLINE - Network-wide Nickname ban (TOKEN: c or d)</h3>
<p><b>Add Syntax (TKL):</b> <tt>BD + Q <i>hold</i> <i>nickmask</i> <i>source</i> <i>expiretimestamp</i> <i>settimestamp</i> :<i>reason</i></tt></p>
<p><b>Add Syntax (SQLINE):</b> <tt>:<i>source</i> c <i>nickmask</i> :<i>reason</i></tt></p>
<p><b>Remove Syntax (TKL):</b> <tt>BD - Q <i>hold</i> <i>nickmask</i> <i>source</i></tt></p>
<p><b>Remove Syntax (UNSQLINE):</b> <tt>:<i>source</i> d <i>nickmask</i></tt></p>
<p>In the TKL syntax, the hold parameter is either a * to mark the qline as a nick ban, or an H to mark it as a services hold. A services hold does not trigger qline rejection notice, and is typically used by NickServ to reserve registered nicks until they are released by the owner. The (UN)SQLINE syntax can only be used by a server, but any user can be used as the source for the TKL syntax. Unlike G and GZ lines, Q:Lines do not cause existing matching users to be disconnected or otherwise affected.</p>
<p>The TKL syntax is preferred, since it is more flexible, but (UN)SQLINE is permitted for compatibility.</p>
<h3><a name="S8_1_4"></a>8.1.4 SPAMFILTER - Message Spam Filtration System</h3>
<p>Proper use of spamfilter in TKL commands requires use of PROTOCTL TKLEXT, which increases the number of parameters allowed in TKL.</p>
<p><b>Add Syntax (TKL):</b> <tt>BD + F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestamp</i> <i>tklduration</i> <i>tklreason</i> :<i>regex</i></tt></p>
<p><b>Remove Syntax (TKL):</b> <tt>BD - F <i>target(s)</i> <i>action</i> <i>source</i> 0 <i>settimestap</i> :<i>regex</i></tt></p>
<p>Adds and Removes network-wide spamfilters. The SPAMFILTER command itself must not be used. See <a href="http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter">http://vulnscan.org/UnrealIrcd/unreal32docs.html#feature_spamfilter</a> for a list of valid targets. For actions, a single character is used to identify the action to be taken:</p>
<ul>
<li>K (kill) - The user is simply disconnected, with the reason given.</li>
<li>S (tempshun) - A temporary shun is placed on the user. This shun is applied only to that user, and disappears if the user reconnects.</li>
<li>s (shun) - A regular shun on the user's IP address is added. This causes all users with the same hostname to be shunned, but they will also stay shunned if they reconnect.</li>
<li>k (kline) - A K:Line is added on the user's IP address.</li>
<li>z (zline) - A Z:Line is added on the user's IP address.</li>
<li>g (gline) - A G:Line is added on the user's IP address.</li>
<li>Z (gzline) - A Global Z:Line is added on the user's IP address.</li>
<li>b (block) - Messages (or users!) matching the filter are simply blocked.</li>
<li>d (dccblock) - The user is prevented from sending files using DCC for the remainder of his session (in other words, until he quits).</li>
<li>v (viruschan) - User is removed from all channels, joined to the viruschan as defined in conf, and cannot message anything but that channel.</li>
<li>w (warn) - No action on the user is taken. Only the Spamfilter notice is sent to opers with snomask +S.</li>
</ul>
<h1><a name="S9">9 Base64 Tables</a></h1>
<p>Unreal uses base64 encoding to allow saving bandwidth by encoding numbers in a more compact format. Unreal uses two different variations of base64, one used for the SJB64 PROTOCTL option (in NICK and SJOIN), and one used for NICKIP.</p>
<h2><a name="S9_1">9.1 Table for SJB64 (NICK and SJOIN).</a></h2>
<p>In NICK and SJOIN, remember that the timestamp will be prefixed with ! to signal a base64 timestamp.</p>
<p>Just like in base10, the least significant &quot;digit&quot; is last.</p>
<pre> 0 0 17 H 34 Y 51 p
1 1 18 I 35 Z 52 q
2 2 19 J 36 a 53 r
3 3 20 K 37 b 54 s
4 4 21 L 38 c 55 t
5 5 22 M 39 d 56 u
6 6 23 N 40 e 57 v
7 7 24 O 41 f 58 w
8 8 25 P 42 g 59 x
9 9 26 Q 43 h 60 y
10 A 27 R 44 i 61 z
11 B 28 S 45 j 62 {
12 C 29 T 46 k 63 }
13 D 30 U 47 l
14 E 31 V 48 m
15 F 32 W 49 n
16 G 33 X 50 o</pre>
<h2><a name="S9_2">9.2 Table for NICKIP.</a></h2>
<p>In this table, the IP is encoded in network byte order. In terms of IPs, this means the first byte of the address really is first. Each &quot;digit&quot; in the base64 encoded IP corresponds to 6 bits of the IP address.</p>
<p>An IPv4 address is 32 bits, so 6 base64 &quot;digits&quot; are needed. Since base64 requires values to come in multiples of 4 &quot;digits&quot;, padding characters (=) need to be added if a value comes up short. In the case of IPv4 addresses, two are needed.</p>
<p>IPv6 addresses are 128-bit. They therefore need 22 base64 &quot;digits&quot; plus 2 pad characters.</p>
<pre> 0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y</pre>
</body>
</html>
+2
View File
@@ -0,0 +1,2 @@
All server protocol documentation has been moved to the wiki:
https://www.unrealircd.org/docs/Server_protocol
-109
View File
@@ -1,109 +0,0 @@
Token List (c) 2002-2004 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
Command Token
------------------------------------------------------------------------------------------------
PRIVMSG !
WHOIS #
NICK &
SERVER '
TOPIC )
INVITE *
VERSION +
QUIT ,
SQUIT -
KILL .
INFO /
LINKS 0
STATS 2
HELP 4
ERROR 5
AWAY 6
CONNECT 7
PING 8
PONG 9
PASS <
TIME >
ADMIN @
SETHOST AA
NACHAT AC
SETIDENT AD
SETNAME AE
LAG AF
SDESC AG
KNOCK AI
CREDITS AJ
LICENSE AK
CHGHOST AL
RPING AM
RPONG AN
NETINFO AO
SENDUMODE AP
ADDMOTD AQ
ADDOMOTD AR
SVSMOTD AS
SMO AU
OPERMOTD AV
TSCTL AW
SAJOIN AX
SAPART AY
CHGIDENT AZ
NOTICE B
SWHOIS BA
SVSO BB
SVSFLINE BC
TKL BD
VHOST BE
BOTMOTD BF
HTM BH
DCCDENY BI
UNDCCDENY BJ
CHGNAME BK
SHUN BL
CYCLE BP
MODULE BQ
SVSNLINE BR
SVSPART BT
SVSLUSERS BU
SVSSNO BV
SVS2SNO BW
SVSJOIN BX
SVSSILENCE Bs
SVSWATCH Bw
JOIN C
PART D
LUSERS E
EOS ES
MOTD F
MODE G
KICK H
REHASH O
RESTART P
CLOSE Q
SENDSNO Ss
DNS T
TEMPSHUN Tz
SILENCE U
AKILL V
UNKLINE X
RAKILL Y
GLOBOPS ]
LOCOPS ^
PROTOCTL _
WATCH `
TRACE b
SQLINE c
UNSQLINE d
SVSNICK e
SVSNOOP f
SVSKILL h
SVSMODE n
SAMODE o
CHATOPS p
UNZLINE r
RULES t
MAP u
SVS2MODE v
DALINFO w
ADMINCHAT x
UMODE2 |
SJOIN ~
-39
View File
@@ -1,39 +0,0 @@
VL Information (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
Protocol Version
------------------------------------------------------------------------------------------------
2311 3.2.10
2310 3.2.9
2309 3.2.6, 3.2.7, 3.2.8
2308 3.2.5
2307 3.2.4
2306 3.2.3
2305 3.2.2
2304 3.2.1
2303 3.2-beta*, 3.2-RC*, 3.2
2302 3.1.1-Darkshades, 3.1.2-Darkshades, 3.1.3-Komara, 3.1.4-Meadows
2301 3.1-Silverheart
2300 3.0-Morrigana
Flag Description
------------------------------------------------------------------------------------------------
c Server is chrooted
C command line config enabled
D Server is in debugmode
F Using file descriptor lists
h Compiled as a hub
i Shows invisible users in /trace
n NOSPOOF enabled
V Uses valloc()
W Windows version
Y Syslog logging enabled
K No ident checking (?)
6 IPv6 supported
X STRIPBADWORDS enabled (chmode/umode +G)
P Uses poll()
e SSL supported
O OperOverride enabled
o OperOverride without verify
Z Zip links supported
3 3rd party modules (were) loaded or unreal is any other way 'tainted' (eg: bad libs)
E Extended channel modes supported
+15 -33
View File
@@ -1,43 +1,25 @@
==[ Translations ]===========================================================
Starting with the release of Unreal 3.2 we have begun accepting translated
documentation files. For now, only translations of unreal32docs.html and
example.conf are accepted. Other stuff might be translated later, but
this will probably be postponed to 3.3 (numerics/ircd text/help.conf/etc).
In UnrealIRCd 5 we support the following translations:
* on-line documentation at https://www.unrealircd.org/docs/ (wiki!)
* help.conf
* example.conf
There a few requirements however:
- When you submit your translation it should be a translation of the
very latest doc... So be sure to translate the cvs version of
unreal32docs.html (www.vulnscan.org/UnrealIrcd/unreal32docs.html).
- Of course the translation should be correct.. So also 'technically',
it's therefore recommended that have some real experience with Unreal ;)
- If you are accepted and start working on it, it would be nice if you
could put your docs-in-progress online somewhere so we can see how
progress is going a bit.
- You should use a proper HTML editor, this especially excludes Microsoft
Word and Frontpage since it enlarges the .html file by (at least) 30%.
Don't worry, there are enough free&simple html editors out there that
work perfectly fine, you won't need to be an HTML expert at all!
- Someone, usually the person who translated it, needs to be willing
For translating the wiki documentation see this article:
https://www.unrealircd.org/docs/Translating_UnrealIRCd_wiki_pages
For the .conf files the following rules apply:
* You must translate the very latest (English) version of the document(s)
* The translation must be correct. Not just the spelling and grammar,
but also 'technically'. You should therefore have some real experience
with UnrealIRCd.
* Someone, usually the person who translated it, needs to be willing
to actively maintain the docs. This is very important! If docs are
out of date (out-of-synch) there will be confusion among users.
Translators will receive once a week (and right before every release)
all changes that were made in unreal32docs.html. Then the translator
should update his/her doc and send it in (or commit it via cvs).
Count on an average of 15 minutes a week (it varies).
Now, we should tell you that the first-time translation of unreal32docs.html
is a LOT of work.. probably 20 hours or so. After that, the weekly updates
take really just 5, 10, 15 minutes a week, which is pretty much "no time".
Now why would you translate at all? Well, by translating UnrealIRCd
documentation you will help out your fellow citizens and/or other people
of that language, you will make Unreal a bit more 'internationalized',
and it's a worthwile contribution to the UnrealIRCd project.
Upon successful completion you will also receive an @unrealircd.org
forwarder email address, and of course your name will be in the docs.
We will remove documents that have been out of date too long (months)
If you want to start translating a document, please send an email to
syzop@unrealircd.com and mention the language you are willing to translate
syzop@unrealircd.org and mention the language you are willing to translate
to.. You will then receive an email back saying you can go ahead (or not).
This is mainly to avoid multiple persons working on the same translation.

Some files were not shown because too many files have changed in this diff Show More