aboutsummaryrefslogtreecommitdiffstats
path: root/include/client.h
Commit message (Expand)AuthorAgeFilesLines
* Separate client vs server caps•••Instead of overloading the same field in a LocalUser, have separate fields for client caps vs server caps. While only one of these will ever be nonzero, it reduces error by making it explicit which set of caps is being checked. IsCapable and friends have been split as well, to IsClientCapable and IsServerCapable. Finally, both fields have been updated to uint64_t (server caps were approaching the current limit) and all APIs that reference caps updated to uint64_t as well (no more signed/unsigned mismatches). Gravatar Ryan Schmidt2026-03-171-2/+3
* Add batch support•••- Add "batch" client capability - Support sending netsplit/netjoin batches - Support receiving BATCH from clients and remote servers - Support for modules to define supported batch types for incoming batches - Add "message_handler" hook to override the handler for a particular incoming message - Add technical and user-facing documentation for batches - Add some more sendto_* overloads that support tags which were missing from the initial message-tags implementation but turned out to be needed Gravatar Ryan Schmidt2026-01-211-0/+3
* Remove WebSocket supportGravatar Aaron Jones2024-06-121-2/+0
* client: refactor del_all_accepts to allow skipping own accept list•••This allows reusing this function for other uses that just need to remove this client from others' accept lists on nick change and not have duplicates of this code everywhere Gravatar Doug Freed2023-11-061-1/+1
* Warn opers about unresponsive serversGravatar David Schultz2023-06-131-0/+1
* OpenSSL 3.0 compatibility•••Edited by @aaronmdjones: - Correct some data types and casts - Minor style fixups (e.g. we put * on the variable name not the type) - librb/src/openssl.c: - Defer call of BIO_free(3ssl) to the end of the conditional block to avoid having calls to it in multiple paths - Check the return value of SSL_CTX_set0_tmp_dh_pkey(3ssl) because if it fails then we must use EVP_PKEY_free(3ssl) to avoid a memory leak This could fail if, for example, the user supplied DSA parameters in the DH parameters file instead. - ircd/newconf.c: - Check whether OSSL_DECODER_CTX_new_for_pkey(3ssl) was able to parse the given CHALLANGE public key as a valid RSA public key, and then check whether OSSL_DECODER_from_bio(3ssl) actually loads it successfully - ircd/s_newconf.c: - Use EVP_PKEY_free(3ssl) instead of OPENSSL_free(3ssl) on EVP_PKEY pointers; this will avoid inadvertent memory leaks if the EVP_PKEY structure contains any dynamically-allocated child members - modules/m_challenge.c: - Unconditionally use EVP(3ssl) to generate the SHA-1 digest of the random challenge; this API has been around for a very long time and is available in all supported versions of OpenSSL - Add lots of error checking to all steps of the process Tested against 1.1.1 and 3.0; both with missing and provided DH parameters (which works as you'd expect; the server will not negotiate a DHE cipher without them), and CHALLENGE, including missing keys or keys of the wrong type (e.g. when you supply an EdDSA key instead of an RSA key). This does break compatibility with OpenSSL 1.1.0 and below, which are now all end-of-life and unsupported anyway. Closes #357 Gravatar jailbird7772022-08-251-1/+1
* Support *mask* and !*mask* in LISTGravatar Ed Kellett2021-10-191-1/+1
* Remove ziplinks (#218)Gravatar Ariadne Conill2021-06-261-11/+0
* Mailmap and copyright update for AriadneGravatar Ariadne Conill2021-06-011-1/+1
* m_webirc: Blow away ident if we've got it•••Previously, anyone on the WEBIRC gateway would get its ident if it advertised one, which seems wrong to me. This allows ident to be used with WEBIRC while still letting users send their own ~username in band. Gravatar Ed Kellett2020-11-021-0/+1
* Explanatory comment for LFLAGS_FAKEGravatar Ed Kellett2020-11-011-0/+1
* Mark fake test clients, don't assert they're realGravatar Ed Kellett2020-11-011-0/+1
* Rename UMODE_SSLCLIENT, IsSSLClientGravatar Ed Kellett2020-10-311-7/+5
* Replace IsInsecure with IsSecureGravatar Ed Kellett2020-10-311-4/+4
* Implement the solanum.chat/identify-msg vendor capGravatar Ed Kellett2020-10-161-0/+4
* Innovation by sedGravatar Ed Kellett2020-10-151-1/+1
* Replace most checks for +o with oper:general•••I'm preparing to PR a succession of privs changes with the ultimate goal of severely limiting the scope of the binary oper/user dichotomy and move conceptually distinct oper functions into their own privs. Accomplishing this is a non-trivial task, and can wait, but it's inconvenient now to have such functions enabled by the same mechanism that grants any privs at all--so I'm moving all of them to a transitional priv with the intention of eroding that later. Gravatar Ed Kellett2020-08-041-7/+3
* remove callerid definitionsGravatar Ariadne Conill2020-07-091-2/+0
* client: drop no longer existent 'struct blacklist' definition.•••This went away when authd was implemented. Gravatar Ariadne Conill2020-07-051-3/+0
* modularize usermode +R (registered users only)Gravatar Ariadne Conill2020-06-261-2/+0
* m_webirc: respect ircv3's `secure` optionGravatar Ed Kellett2019-10-201-0/+5
* Propagate OPER•••Move opername and privset storage to struct User, so it can exist for remote opers. On /oper and when bursting opers, send: :foo OPER opername privset which sets foo's opername and privset. The contents of the privset on remote servers come from the remote server's config, so the potential for confusion exists if these do not match. If an oper's privset does not exist on a server that sees it, it will complain, but create a placeholder privset. If the privset is created by a rehash, this will be reflected properly. /privs is udpated to take an optional argument, the server to query, and is now local by default: /privs [[nick_or_server] nick] Gravatar Ed Kellett2019-09-131-3/+3
* Remove unused kline delay machineryGravatar Ed Kellett2019-04-271-1/+0
* Add check_one_kline, expose notify_banned_clientGravatar Ed Kellett2019-04-271-0/+8
* m_pass: store unverified SID in preClient for use in m_serverGravatar Simon Arlott2018-08-151-0/+2
* gcc7 fixes: NICKLEN -> NAMELEN•••Use NAMELEN instead of NICKLEN when accessing Client->name because it could in theory be a HOSTLEN length string. Gravatar Simon Arlott2018-01-191-1/+1
* Add basic SCTP listener support that binds to multiple addresses•••This only supports two addresses as the intended use is 1 IPv4 and 1 IPv6 address on a single-homed host, and the only supported configuration of outgoing connections to other servers is to bind a single IPv4 or IPv6 address. Gravatar Simon Arlott2017-08-241-0/+5
* msgbuf: correctly split buffers into IRCv3 tags and RFC1459 message dataGravatar Simon Arlott2017-07-291-1/+0
* listener: use exit_client instead of free_client•••As well as leaking a connid and leaving the connection open, these calls to free_client() leave the client in the unknown_list causing check_unknowns_list() to crash when either ptr->data (ptr being the freed client_p->localClient->tnode) is NULL or when client_p->localClient is NULL. Flag the client as an IO error so that we don't try to send it any data (as this is not a normal plaintext connection). Gravatar Simon Arlott2016-11-201-1/+0
* random_ping: stop producing negative values that become 16 charsGravatar Simon Arlott2016-05-021-1/+1
* authd: wait until the ssl connection is "open" before reading•••It's useful to allow authd to run in parallel with ssl negotiation, but if the ssld connection has plaintext data ready for reading there's a race condition between authd calling read_packet() and ssl_process_certfp() storing the certificate fingerprint. This scenario would be bad for a server connecting because fingerprint verification will fail. Allow either operation to complete first, but wait until ssl_process_open_fd() calls the ssl open callback before calling read_packet(). Gravatar Simon Arlott2016-04-251-0/+4
* sslproc: simplify ssl open callback•••Don't use the librb callback type as we're always passing client_p. Provide a return value so that the connect handler can exit_client() and the accept handler can opt to use the default dead handler. Gravatar Simon Arlott2016-04-251-2/+3
* ssld: add a callback when the connection is opened•••This allows us to wait until we have the fingerprint information before continuing with a server connect process. Gravatar Simon Arlott2016-04-241-0/+2
* m_sasl: rate-limit SASL REAUTH usageGravatar Mantas Mikulėnas2016-04-111-1/+4
* m_sasl: temporarily reject clients after many failed attemptsGravatar Mantas Mikulėnas2016-04-111-0/+1
* Remove extraneous whitespace [ci skip]Gravatar Elizabeth Myers2016-04-101-1/+0
* Wrap up authd preclient stuff in its own structGravatar Elizabeth Myers2016-04-101-9/+15
* Get rid of flags2.•••It seems to come from an era where long long didn't exist and 64-bit machines weren't common. 32-bit machines are still common but I can't imagine this will have much performance impact there. This "fixes" #179 in title only, but see comments within. Gravatar Elizabeth Myers2016-04-071-52/+46
* ircd: integrate ircd side of wsockd supportGravatar William Pitcock2016-04-021-0/+2
* Replace s_auth/blacklist stuff with authd calls•••This also does a lot of surgery on the conf system to reconfigure authd. /!\ WARNING! ACHTUNG! ADVERTENCIA! ATTENTION! AVVERTIMENTO! /!\ This code has not been run-time tested yet (though it compiles)! Gravatar Elizabeth Myers2016-03-281-13/+15
* ircd: client: substantially rework the connid registry system•••now connid's are allocated on demand and clients may have as many connid's as necessary. this allows us to build chains of helpers while ensuring the ircd properly tracks and GCs the resources. Gravatar William Pitcock2016-03-251-3/+7
* config.h delenda estGravatar Elizabeth Myers2016-03-191-5/+1
* Change some RATBOX_FOO defines to CHARYBDIS_FOO.Gravatar Elizabeth Myers2016-03-071-1/+1
* Remove $Id tags from everything.•••These are obsolete and none have changed since 10 years gao... Gravatar Elizabeth Myers2016-03-061-2/+0
* m_cap: add support for CAP LS 302Gravatar William Pitcock2016-02-281-0/+1
* cap: substantial rewrite leveraging the ircd capabilities framework for clien...Gravatar William Pitcock2016-02-271-12/+0
* cap: register the account-tag capabilityGravatar William Pitcock2016-02-201-0/+2
* ircd: import modified version of ratbox 3.1 whowas codeGravatar William Pitcock2016-01-231-1/+2
* Revert "LIST: use new sendq system to reimplement SAFELIST differently."•••This reverts commit e835592cfc53c325608ea30cf58c6d5fba9d47b3. Gravatar William Pitcock2016-01-201-0/+11
* ircd: implement EXTENDCHANS, based on ircd-seven (with some improvements from...Gravatar William Pitcock2016-01-111-0/+3