1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-08 19:43:23 +02:00
Commit Graph

5911 Commits

Author SHA1 Message Date
Bram Matthys aac3c407bf I forgot a forward declaration.. 2021-08-22 13:45:32 +02:00
Bram Matthys 3a464e34ff Some minor reordering 2021-08-22 13:36:46 +02:00
k4be a2cdb8ff89 Merge branch 'unreal60_dev' of github.com:syzop/unrealircd-next into unreal60_dev 2021-08-22 13:36:06 +02:00
k4be be78ecebfc Parse "Forwarded:" header from proxy.
Not (yet) checking source address nor getting a hostname.
2021-08-22 13:34:54 +02:00
Bram Matthys 85d7a2556a Move list mode requests like "MODE #channel b" to list_mode_request()
which uses send_list_mode() and send_user_list_mode() for
+beI and +aq respectively.
2021-08-22 13:32:37 +02:00
Bram Matthys 5c114d0069 Cleanup old channel mode stuff, now that all non-list-modes are gone.
Eg no longer need to walk through the corechannelmodetable for
single param channel modes...

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

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

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

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

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

I left some tracing code in case we have a bug in the code that
handles this, but testing shows it works well both for files and
URLs.
2021-08-18 17:04:45 +02:00
Bram Matthys a60b9f3176 Handle duplicate URLs/downloads (only download once) 2021-08-18 16:43:42 +02:00
Bram Matthys ce3e23a5d2 Get rid of unnecessary included_from and included_from_line
members in ConfigResource (previously ConfigItem_include).
2021-08-18 16:31:48 +02:00
Bram Matthys 0b5fab1617 Some cleanups in src/url.c and added error message for the very unusual
case where curl may fail to create a handle.
2021-08-18 15:19:51 +02:00