Commit graph

  • 57ec565051
    Move channel mode +t to module chanmodes/topiclimit TODO: move code from "topic" module to here, some hook call. Bram Matthys 2021-08-22 12:09:53 +0200
  • 6dd539d760
    Move channel mode +m to module chanmodes/moderated (and nearly all the code related to it) Bram Matthys 2021-08-22 12:01:54 +0200
  • 24f73c28e4
    Move channel mode +l to module chanmodes/limit (and all the code related to it) Bram Matthys 2021-08-22 11:45:08 +0200
  • 1533c6431e
    Move channel mode +n to module chanmodes/noexternalmsgs (and all the code related to it) Bram Matthys 2021-08-22 11:22:33 +0200
  • 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. Bram Matthys 2021-08-22 11:11:26 +0200
  • 374069914e
    Fix memory leak in find_invex() due to extban recode from a few weeks ago. Bram Matthys 2021-08-22 10:44:29 +0200
  • 295b3505ef
    Move channel mode +i to module chanmodes/inviteonly Bram Matthys 2021-08-22 10:37:37 +0200
  • c403a47daf
    Move channel mode +k to module chanmodes/key Bram Matthys 2021-08-22 10:06:51 +0200
  • 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.. Bram Matthys 2021-08-22 10:05:49 +0200
  • 021ba807bd
    Fix memory leaks in built-in https client and only build SSL_CTX once. Bram Matthys 2021-08-21 20:29:38 +0200
  • ec5f9ee6c3
    Add check for missing HTTP/1.X response. Shouldn't happen, but, otherwise the error would be confusing wrt redirects, this is better. Bram Matthys 2021-08-21 18:33:14 +0200
  • 8344327cb4
    HTTPS client: support Basic authorization Bram Matthys 2021-08-21 16:57:38 +0200
  • 6f087093df
    Create some more notes regarding the release notes Bram Matthys 2021-08-21 16:36:33 +0200
  • 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. Bram Matthys 2021-08-21 16:14:24 +0200
  • ecc3ffe1e2
    Parse error in remote include must be a fatal error. It is now (again). Bram Matthys 2021-08-21 16:04:28 +0200
  • 24dec75576
    Rename the current cloaking module to 'oldcloak' Bram Matthys 2021-08-21 14:32:49 +0200
  • 8dc316bd8d
    Use SHA256 instead of MD5 in add_entropy_configfile() Bram Matthys 2021-08-21 14:28:01 +0200
  • c821efa477
    Get rid of old remote include stuff in windows gui.c, we don't track this anymore. [skip ci] Bram Matthys 2021-08-21 14:14:03 +0200
  • 5b90fd0c0d
    Get rid of old MOTD downloading code and several USE_LIBCURL defines that are no longer needed. Bram Matthys 2021-08-21 14:13:24 +0200
  • 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... Bram Matthys 2021-08-21 14:03:56 +0200
  • e28cbb6041
    Differentiate between DNS/connect timeout (15s) and transfer timeout (45s). Already done in curl code, now also in non-curl-code. Bram Matthys 2021-08-21 13:35:44 +0200
  • fe08d58dbc
    Add SNI support. Verify TLS certificate belongs to the host. (Those were items 7 and 8 on the previously mentioned TODO list) Bram Matthys 2021-08-21 13:30:36 +0200
  • 6a6f4120ee
    Built-in https client: Deal with Transfer-Encoding: chunked Bram Matthys 2021-08-21 13:22:53 +0200
  • c9c2106bb9
    Use SHA256 hash for cache/<object> instead of old MD5 Bram Matthys 2021-08-21 09:45:44 +0200
  • 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. Bram Matthys 2021-08-21 09:37:14 +0200
  • 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. Bram Matthys 2021-08-21 09:32:17 +0200
  • 182cc7eab4
    HTTPS client: add support for timeouts Bram Matthys 2021-08-21 09:19:29 +0200
  • 9fe3b3f4d5
    Use https_cancel() and get rid of goto's. Bram Matthys 2021-08-21 09:09:10 +0200
  • 2a762ee68b
    Use handle->errorbuf instead of local errorbuf everywhere. Bram Matthys 2021-08-21 08:52:47 +0200
  • 2c7d2c8f86
    Split url.c into url_curl.c (curl implementation) and url_unreal (the new fallback https-only implementation). Bram Matthys 2021-08-21 08:47:38 +0200
  • 00f3f300f0
    Put downloads in a list. Bram Matthys 2021-08-21 08:31:30 +0200
  • 1752844824
    Built in HTTPS support: support http caching (If-Modified-Since, 304) Bram Matthys 2021-08-21 08:24:52 +0200
  • dcfe0885a6
    Add functions to conver to/from RFC2616 timestamps, as used in HTTP in last modified headers. Bram Matthys 2021-08-21 08:24:22 +0200
  • 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) Bram Matthys 2021-08-20 19:19:04 +0200
  • 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. Bram Matthys 2021-08-19 09:53:31 +0200
  • 5321dcb81b
    ConfigResource: get rid of rs->flag.type stuff and just use rs->type. Also replace local variables 'inc' with 'rs'. Bram Matthys 2021-08-19 09:37:28 +0200
  • ae6222e329
    Get rid of errorbuf in ConfigResource as this is not used. Bram Matthys 2021-08-19 09:34:33 +0200
  • 4e53bf874a
    Make remote includes caching work again. Both on-boot and on-rehash. Bram Matthys 2021-08-19 09:31:13 +0200
  • 7b3c1165f8
    Make tld::mask use the generic masks that we use everywhere (and hence support multiple masks and server bans matching etc) Bram Matthys 2021-08-18 18:45:23 +0200
  • e503ad4fd5
    Reorder members in ConfigEntry struct a bit (optimize for L1/L2 cache) Obviously name, value and next should be at the top. Bram Matthys 2021-08-18 18:31:27 +0200
  • 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. Bram Matthys 2021-08-18 17:04:45 +0200
  • a60b9f3176
    Handle duplicate URLs/downloads (only download once) Bram Matthys 2021-08-18 16:43:42 +0200
  • ce3e23a5d2
    Get rid of unnecessary included_from and included_from_line members in ConfigResource (previously ConfigItem_include). Bram Matthys 2021-08-18 16:31:48 +0200
  • 0b5fab1617
    Some cleanups in src/url.c and added error message for the very unusual case where curl may fail to create a handle. Bram Matthys 2021-08-18 15:19:51 +0200
  • d8c3da7698
    Get rid of download_file(), the synchronous version, is no longer used. Bram Matthys 2021-08-18 15:14:14 +0200
  • 6d56145f60
    Remove URL support from staff module now that main conf.c already does this. And re-enable the module, as it was #if'd out. Bram Matthys 2021-08-18 15:11:37 +0200
  • e296464b97
    Get rid of update_config_resource() and just set the appropriate values at the four places that used it. Bram Matthys 2021-08-18 15:02:18 +0200
  • 756fee58cb
    Rename ConfigItem_include to ConfigResource and also use it for non-includes such as other items in the configuration file that are URLs. Bram Matthys 2021-08-18 14:54:41 +0200
  • d897ecbc86
    Get rid of some if (need_34_upgrade) upgrade_conf_to_34(); stuff We probably want to get rid of that at all? Maybe defer until we know whether we want/need it for U5->U6... Bram Matthys 2021-08-18 13:36:55 +0200
  • b74d15595b
    Change int rehash() to void request_rehash(), which is a better name as it REQUESTS to rehash the server, but it may not be done immediately. And making it void makes sure nobody relies on some sort of return value which will differ between with vs without remote includes. Bram Matthys 2021-08-18 13:26:37 +0200
  • 675c1cab55
    Rename loop struct members: * loop.ircd_rehashing -> loop.rehashing * loop.ircd_terminating -> loop.terminating * loop.ircd_booted -> loop.booted * loop.ircd_forked -> loop.forked Bram Matthys 2021-08-18 13:05:41 +0200
  • f184472781
    Get rid of argument to config_test(), as we have loop.ircd_rehashing for that. Bram Matthys 2021-08-18 13:03:31 +0200
  • fe2c834080
    Rename lots of config functions (internally used ones, most likely not used by 3rd party authors): * conf_start() -> config_read_start() * conf_check_complete() -> is_config_read_finished() * load_conf() -> config_read_file() * config_test() -> config_test_blocks() * config_run() -> config_run_blocks() * init_conf() -> config_test() * run_configuration() -> config_run() Bram Matthys 2021-08-18 12:57:38 +0200
  • 7321a66196
    Make failed include loading fatal again. And fix a crash related to that. Bram Matthys 2021-08-18 12:45:31 +0200
  • 685e0ee073
    In ConfigItem_include include->url now always exists, and src/url.c is now always compiled in, both regardless of cURL support or not. Obviously the cURL functions are not available without cURL and there are now some #ifdef USE_LIBCURL in url.c Bram Matthys 2021-08-18 12:23:57 +0200
  • f85615518e
    Make rehashing work again Bram Matthys 2021-08-18 12:05:15 +0200
  • 03423a2eb7
    Get rid of INCLUDE_NOTLOADED and INCLUDE_USED which AFAICT are unnecessary. Get rid of load_includes() which did the marking and unload_notloaded_includes() and unload_loaded_includes() accordingly. There's now one single free_all_includes(). Bram Matthys 2021-08-18 11:52:53 +0200
  • 9e887ea4e9
    Start with remote includes makeover. First objective is making them asynchronous on start, which is achieved by this 1st commit. Bram Matthys 2021-08-18 11:26:33 +0200
  • 5154038d59
    Code cleanup: replace "if(" with "if (" Bram Matthys 2021-08-18 09:52:50 +0200
  • 6058090435
    Use GeoIPResult * everywhere. Any modules who want to fetch it for a client can use geoip_client(client). Bram Matthys 2021-08-17 17:16:14 +0200
  • 58abc0da5b
    Add moddata_client_get_raw() to get the ModData *. This probably should not be used much as normally you should not rely on structures created by modules in other modules / other code. Bram Matthys 2021-08-17 17:03:00 +0200
  • 796cac7a63
    geoip: migrate from simple string to returning a GeoIPResult struct. (work in progress, 1/2) Bram Matthys 2021-08-17 16:38:01 +0200
  • fe3c86b128
    Support ~country:* for unknown country (fix) Bram Matthys 2021-08-17 16:14:59 +0200
  • fc6c52db93
    Add extbans/country: +b ~country:UK Bram Matthys 2021-08-17 16:11:10 +0200
  • a9434d13c7
    Add RPL_WHOISCOUNTRY info in /WHOIS requests from IRCOps Bram Matthys 2021-08-17 15:53:17 +0200
  • d7561d6b23
    Show [country: XX] in connect notice and sync geoip info with other servers. Bram Matthys 2021-08-17 15:35:14 +0200
  • 2ea75dfbdb
    Add geoip_base module, which sets "geo_country" if a geo provider module is able to lookup the IP and return a country. Bram Matthys 2021-08-17 15:24:25 +0200
  • 0bbad85f84
    Add geo_lookup() function. Make geoip_classic do something useful. NOTE: everything hardcoded atm, just temporarily. Add CALLBACKTYPE_GEO_LOOKUP which is called from geo_lookup(). Bram Matthys 2021-08-17 15:10:32 +0200
  • 8cdbc3ae86
    Don't build geoip_classic without --enable-geoip-classic=yes. ([I... hate... M4!]) Bram Matthys 2021-08-17 14:36:17 +0200
  • ed7bf1daf5
    Bundle with GeoIP classic library and add geoip_classic placeholder. This library we can safely bundle because it is GPLv2. Bram Matthys 2021-08-17 14:10:31 +0200
  • d0251805c4 Merge remote-tracking branch 'upstream/unreal52' into piss52 Ramiro Bou 2021-08-16 11:34:05 -0300
  • a29548af5b Revert "Fix possible segfault on sequential-fallback autoconnect strategy" (fixed upstream) Ramiro Bou 2021-08-16 11:31:13 -0300
  • 9ff56089ad
    Show TLS cipher in [secure: xyz] in far connects too (+s +F). This requires both servers to be using UnrealIRCd 6 and there should be no UnrealIRCd 5 server in-between (eg an old hub). Bram Matthys 2021-08-16 14:27:30 +0200
  • 76da8714a7
    Fix using the wrong variable in moddata_extract_s2s_mtags() Bram Matthys 2021-08-16 14:26:49 +0200
  • 11167924df
    Add tls_cipher module which stores/retrieves the TLS cipher of all users. Bram Matthys 2021-08-16 14:16:13 +0200
  • f75a9c8544
    Sync ModData in UID command if mdata.sync = MODDATA_SYNC_EARLY. This way we should be able to show certfp and webirc status in far connect notices, and later various other details too. Bram Matthys 2021-08-16 14:01:45 +0200
  • 7500de1060
    Permit unknown message tags from trusted servers. Bram Matthys 2021-08-16 13:48:09 +0200
  • 48e3901f27
    It's probably a good idea to send the channel name in SJOIN (fix for commit from yesterday, 99d2870870) Bram Matthys 2021-08-15 08:59:32 +0200
  • 6134452b82
    Fix crash on connect due to wrong reputation logging (accessing e->ip when e is NULL) in DEBUGMODE. Bram Matthys 2021-08-14 21:08:25 +0200
  • 99d2870870
    For SJOIN, send the shorter nomode&nopara version when possible. We used to always send the long version: SJOIN ts #channel +sntkl key 999 :xxx From now on we only send that for the first SJOIN for a channel when syncing. For any subsequent SJOINs (so for larger channels or with lots of bans/exempts/invexes) we will use the short version: SJOIN ts #channel :xxx Bram Matthys 2021-08-14 20:29:41 +0200
  • 428c301a94
    unreal_server_compat: convert named extbans in SJOIN as well. Bram Matthys 2021-08-14 20:05:00 +0200
  • eac417d66a
    Fix memory leak on +beI Bram Matthys 2021-08-14 18:36:01 +0200
  • a43637d55d
    Add extban->is_banned_events which you need to set to indicate to which BANCHK_* events you want to listen, eg BANCHK_JOIN, BANCHK_MSG. You can use BANCHK_ALL to watch on all events. Only BANCHK_TKL is not included there and needs an explicit BANCHK_ALL|BANCHK_TKL. Bram Matthys 2021-08-14 18:25:36 +0200
  • 03d78bf95d
    Fix looking up the wrong extban in some cases. ~T => ~text => starts with ~t => ~time... fun. Bram Matthys 2021-08-14 17:57:22 +0200
  • 75dbd99614
    I think the code already handles all these "can't stack these" cases. If I'm wrong we have a regression :D Bram Matthys 2021-08-14 17:46:44 +0200
  • 0acc9eef49
    Add parameter to clean_ban_mask() that will be put in b->conv_options. Currently only supported option is: BCTX_CONV_OPTION_WRITE_LETTER_BANS: always write letter bans Bram Matthys 2021-08-14 17:36:49 +0200
  • ca4f4c2575
    Add PROTOCTL NEXTBANS. This indicates support for named extended bans. Bram Matthys 2021-08-14 17:28:15 +0200
  • 5f31f7a5cc
    Add unreal_server_compat module which rewrites named extbans in server to server traffic to be letter extbans. Yeah this is a tad ugly, but the alternative was worse, see header of the file for the full story. Bram Matthys 2021-08-14 16:42:33 +0200
  • f6704cfd1c
    Add empty_mode(modebuf) to check for "", "+" or "-" modes, that is: modes that are empty/useless. Previously this check was done at several places in their own way. Ugly and duplicate code. Bram Matthys 2021-08-14 15:17:05 +0200
  • c0d31130f8
    channel->creationtime is always set, so assume this is always set. In U5 channel->creationtime could be 0 momentarily, eg for a new channel, but nowadays we set channel->creationtime to TStime() if the channel gets created in make_channel() [*] [*] which was previously called get_channel() by the way Bram Matthys 2021-08-14 15:08:55 +0200
  • 9e0357ad71
    Get rid of all the bounce stuff in MODE. The only stuff we still have is if a bounce servermode is detected (incoming) then we just ignore it. Bram Matthys 2021-08-14 14:56:15 +0200
  • ec6062bc53
    Slightly change the log message for the other case which previous caused a bounce, or was supposed to (never really worked either). We now ignore the mode (which was de-facto what we did anyway) and also log it in that way. Bram Matthys 2021-08-14 14:41:39 +0200
  • a5b86fcc11
    Don't try to fix op-desyncs anymore. The bounce code didn't work anyway (but the -oh did work) Bram Matthys 2021-08-14 14:29:32 +0200
  • c7345f41b6
    Fix hardcoded ~f: and ~m: to also deal with named bans. (Actually only made it worse by more hardcoding for now...) Bram Matthys 2021-08-14 10:35:15 +0200
  • b80a9adef9
    Set extended ban names instead of using module name placeholders. Bram Matthys 2021-08-14 10:28:26 +0200
  • a70580cc86
    Enable sending of named extended bans. This can be changed via the configuration file via set::named-extended-bans <yes|no>; and now defaults to yes. Still to do: * explicitly set names instead of using stupid module names * update test suite to check for these new names (other git tree) * backwards compatible sending to U5 and lower using ugly shit Bram Matthys 2021-08-14 10:08:08 +0200
  • 34bf0d7ec6
    Grin... Bram Matthys 2021-08-14 09:50:58 +0200
  • a6b5587666
    Use prefix_with_extban() at the 3 places, needed for next... Bram Matthys 2021-08-14 09:49:22 +0200
  • 34b034ab36
    Add named extban support. This only deals with the incoming parsing, it is not visible outgoing yet. So: ~account:name becomes ~a:name. Bram Matthys 2021-08-14 09:27:39 +0200
  • d41e3e0f6e
    src/modules/extbans/*.c: memset(&req, 0, sizeof(req)); before ExtbanAdd() Bram Matthys 2021-08-14 09:27:01 +0200