Commit Graph

  • b98fa77bbd
    Update release notes a bit more [skip ci] Bram Matthys 2023-01-18 19:14:55 +0100
  • ba49a130bb
    Update release notes a bit. [skip ci] Bram Matthys 2023-01-18 18:55:18 +0100
  • 3666d1d728
    JSON-RPC: Add some more sanity checking on the 'id' (Mainly because the id might be used in RRPC) Bram Matthys 2023-01-16 11:10:47 +0100
  • b1139769e1
    Do some basic filtering on the request by default. This ensures that strings are of maximum 510 characters in length and do not contain \n or \r. Solves a lot of theoretical problems in many modules that .add things or do other non-list/non-get actions. Bram Matthys 2023-01-16 10:59:41 +0100
  • bdb5541def
    minor code cleanup (do things the libjansson way..) Bram Matthys 2023-01-16 10:38:37 +0100
  • 9e887ea728
    Add LoadPersistentLongLong() / SavePersistentLongLong() Bram Matthys 2023-01-15 14:40:04 +0100
  • 1d1766a895
    Send buildid in server version in EAUTH/SINFO and in server.* JSON-RPC. This reveals the full git version. Bram Matthys 2023-01-15 10:13:16 +0100
  • 497a19e7e2
    Accept more connections in each listener run. Bram Matthys 2023-01-14 20:49:12 +0100
  • 462ce7fcfa
    JSON-RPC: add stats.get call which can be used in "Network Overview" in UnrealIRCd Admin panel and for other statistical purposes. This can be expanded when needed. Bram Matthys 2023-01-14 18:48:18 +0100
  • 2fcddd1655
    JSON-RPC: Send 401 error response on invalid auth (instead of lingering the connection). Bram Matthys 2023-01-14 17:17:40 +0100
  • 194a0b42f7
    JSON-RPC: don't log the RPC calls if they are just for listing/getting, since these are rather noisy and generally not very interesting to log. Of course, DO log them if they are like add/delete/etc. Bram Matthys 2023-01-14 16:38:32 +0100
  • 58db5b0845
    Fix crash in JSON-RPC. Reported by multiple people past few days, including Lord255, armyn and others. The issue was not there when running with ASan, which is why it was non-reproducible for so long. Valgrind picked it up correctly. Bram Matthys 2023-01-14 10:34:59 +0100
  • 53150c0e68
    Fix double-wrapping of JSON reply for remote RPC (RRPC) calls such as server.module_list and server.rehash for remote servers. Reported by Valware. Bram Matthys 2023-01-14 09:10:08 +0100
  • 405b59eb07
    JSON-RPC: server.list/server.add: new property server->features->rpc_modules This is an array with name/version elements, eg server.list or.get look like: { "name": "testlink.test.net", "server": { "features": { "rpc_modules": [ { "name": "rpc", "version": "1.0.2" }, { "name": "user", "version": "1.0.5" }, etc. etc. Bram Matthys 2023-01-13 19:40:05 +0100
  • a1800f01e9
    JSON-RPC / RRPC: Announce all RPC modules and their versions over the wire via moddata. Needed for rrpc_supported() at a later point, so one can require certain versions etc :p Bram Matthys 2023-01-13 18:19:55 +0100
  • b9fcdcdb19
    Make server.rehash for remote servers use two possible code paths: * If the remote server (and all servers in-between) support RRPC then forward the RPC request as RRPC and let remote handle the response. The response will be the verbose rehash response. * If not supported, then simply return boolean true as a response, and use oldskool :source_server REHASH dest_server over the wire Bram Matthys 2023-01-13 18:09:12 +0100
  • c7f9dadb68
    Add JSON_RPC_ERROR_REMOTE_SERVER_NO_RPC error which indicates that the remote server does not have the JSON-RPC module(s) loaded. Bram Matthys 2023-01-13 17:42:53 +0100
  • a3ed1eabd9
    Make client->flags 64 bit on all platforms. We just reached the 32th bit so it is not a problem yet, but better bump it now since I will forget otherwise :D Bram Matthys 2023-01-13 16:55:26 +0100
  • b8cbe63915
    Support server.rehash for remote servers with full detailed response. (Required RPC modules to be loaded on the remote server, tho) Bram Matthys 2023-01-13 16:51:22 +0100
  • e2ef83bd6e
    Fix crash on REHASH Bram Matthys 2023-01-13 15:57:45 +0100
  • cbdde31c1d
    Move client->local->rpc to client->rpc Bram Matthys 2023-01-13 15:49:41 +0100
  • 16e4990f83
    Fix memory leaks created in commit from 15 minutes ago Bram Matthys 2023-01-13 15:44:56 +0100
  • bed40ccdab
    JSON-RPC: RPC-over-net: track requests and handle timeouts and SQUITs. Inform the RPC client that the request timed out / server is gone. The timeout is fixed at 15 seconds, which is fine, I think. Bram Matthys 2023-01-13 15:27:42 +0100
  • 6a4ae9d9ec
    Support RPC calls to remote servers, where the RPC request/response is sent over the IRC network. This makes it possible to fetch information from remote servers that is not known locally, and also it makes it possible to do more things, or do it easier. Bram Matthys 2023-01-13 12:34:28 +0100
  • 07d2b6745b
    JSON-RPC: add server.module_list - only works for locally connected server atm Bram Matthys 2023-01-13 09:46:02 +0100
  • 00e278c802
    Add $tkl->set_in_config property, which is true for config-based TKL entries. So, ones that cannot be deleted. [skip ci] Bram Matthys 2023-01-13 09:14:20 +0100
  • 6bde7475df
    JSON-RPC: add new $server->server->ulined property for u-lines (services) [skip ci] Bram Matthys 2023-01-13 09:05:29 +0100
  • a024a17e87
    Add strtoken_noskip() and use it from the PROTOCTL EAUTH= code so we can deal with empty fields that get sent f.e. by anope, like EAUTH=services.test.net,,,Anope-2.0.11 Bram Matthys 2023-01-13 08:55:10 +0100
  • 73e1dbca05
    JSON-RPC: Add missing client.server.features for &me Bram Matthys 2023-01-11 17:42:02 +0100
  • aa2d3c026e
    JSON-RPC: add server.disconnect Bram Matthys 2023-01-11 17:08:34 +0100
  • d6833ae298
    JSON-RPC: add server.connect API call (directly connected server only at the moment) This also cleans up the linking procedure (now) at 3 places, to use find_link() and check_deny_link() everywhere. Bram Matthys 2023-01-11 16:54:22 +0100
  • 0578346b12
    Make server.rehash work for remote servers too, just no real status atm. Bram Matthys 2023-01-11 16:24:50 +0100
  • a5bdf317fb
    JSON-RPC: begin with a server.* API, also fill client->local->rpc for RPC clients with the RPC user and such. Bram Matthys 2023-01-11 15:42:57 +0100
  • 1c87882d3e
    Add missing config.RELOAD logging when using ./unrealircd rehash (via control socket) Bram Matthys 2023-01-11 14:00:08 +0100
  • c5d8bc5d9b
    Fix ~account:* matching both logged in and logged out users (so quite useless). This bug exists since 5.2.1 already, so i guess the functionality is not used much ;). Makes sense, since for simple ~account:* you have +R already, so it is only useful in stacked bans such as +e ~nickchange:~account:* Bram Matthys 2023-01-09 08:58:10 +0100
  • 5897ce3aad
    Version bump various modules. [skip ci] Bram Matthys 2023-01-08 15:50:25 +0100
  • 35c49108df
    JSON-RPC: Add optional "set_by" field when adding/removing TKL's, so in name_ban, server_ban, server_ban_exception and spamfilter. Bram Matthys 2023-01-08 15:43:00 +0100
  • ed8a3f0336
    JSON-RPC add server_ban_exception.* API calls Docs: https://www.unrealircd.org/docs/JSON-RPC:Server_ban_exception Bram Matthys 2023-01-08 15:35:08 +0100
  • d0ad776e93
    Minor code cleanup (move error out of params into local vars, as it didn't belong there..) [skip ci] Bram Matthys 2023-01-08 15:03:18 +0100
  • 0244c31742
    Split of some code from cmd_eline() into server_ban_exception_parse_mask(), similar to how *LINE commands use server_ban_parse_mask(). Now used by ELINE and for JSON-RPC later... Bram Matthys 2023-01-08 14:56:56 +0100
  • c95e3f249e
    JSON-RPC: add name_ban.list, name_ban.get, name_ban.add, name_ban.del Bram Matthys 2023-01-08 09:56:41 +0100
  • 5db86cb442
    Fix crash in server_ban.* when using non-serverban types such as qlines and exceptions (for which no interface exists yet, btw :D). Bram Matthys 2023-01-08 09:19:44 +0100
  • 9d04710e3a
    In DEBUGMODE allow for verbose rpc logging with request/responses. (And also fix a logging statement that had the wrong category) Bram Matthys 2023-01-08 09:02:01 +0100
  • 20d1487922
    JSON-RPC: add channel.kick, update struct initalization, and use REQUIRE_PARAM_* and OPTIONAL_PARAM_* everywhere in the channel.* API handlers. Bram Matthys 2023-01-07 19:01:45 +0100
  • 191553e403
    Update early release notes a bit. [skip ci] Bram Matthys 2023-01-07 18:38:04 +0100
  • 998687bf13
    Bump version to 6.0.6-git Bram Matthys 2023-01-07 18:15:11 +0100
  • 243958f85a
    Add REQUIRE_PARAM_STRING(), REQUIRE_PARAM_BOOLEAN(), OPTIONAL_PARAM_STRING, OPTIONAL_PARAM_BOOLEAN() and use it everywhere in the user.* API calls. Much cleaner now :) Bram Matthys 2023-01-07 17:54:52 +0100
  • fb96e4581b
    JSON-RPC: add user.part and slightly change user.join the option is now called 'force':true for consistency. Bram Matthys 2023-01-07 17:38:38 +0100
  • 046c8654c6
    JSON-RPC: add user.join, which uses SVSJOIN (normal join) or SAJOIN (bypass all channel restrictions). See https://www.unrealircd.org/docs/JSON-RPC:User#user.join Bram Matthys 2023-01-07 17:24:00 +0100
  • 884cc7f04d
    JSON-RPC: add user.quit. The difference between that and user.kill is explained at https://www.unrealircd.org/docs/JSON-RPC:User Bram Matthys 2023-01-07 16:57:48 +0100
  • 6a2a8e798b
    JSON-RPC: add user.kill Bram Matthys 2023-01-07 16:48:41 +0100
  • 9d65b8a4ed
    Use better defaults in user.set_oper Already documented at https://www.unrealircd.org/docs/JSON-RPC:User#user.set_oper Bram Matthys 2023-01-07 16:41:52 +0100
  • aef8611f91
    Change SVSO to use the prefix "remote:<name>" instead of "services:<name>" because it can be used by JSON-RPC now and this fits for both :D. Bram Matthys 2023-01-07 16:19:17 +0100
  • e7615210a7
    JSON-RPC: add user.set_oper [skip ci] Bram Matthys 2023-01-07 16:18:30 +0100
  • 541eba0670
    JSON-RPC: add user.set_mode & user.set_snomask Bram Matthys 2023-01-07 15:55:22 +0100
  • 619282397e
    Add json_object_get_boolean(): int json_object_get_boolean(json_t *j, const char *name, int default_value) [skip ci] Bram Matthys 2023-01-07 15:54:49 +0100
  • 9898d332ab
    JSON-RPC: add user.set_vhost Bram Matthys 2023-01-07 15:30:08 +0100
  • 318d183f23
    JSON-RPC: add user.set_username and user.set_realname Bram Matthys 2023-01-07 15:23:34 +0100
  • 18d7e98d35
    Return true from ValidatePermissionsForPath() for &me. Bram Matthys 2023-01-07 15:20:48 +0100
  • 4378979ad5
    Add valid_username() so we can use it at multiple places. This gets rid of duplicate code in SETIDENT, CHGIDENT, and soon in the RPC call. It does not get rid of make_valid_username() in src/modules/nick.c which does something slightly different. Bram Matthys 2023-01-07 15:11:52 +0100
  • a9d0c6fd1a
    JSON-RPC: make channel.set_mode and channel.set_topic return just result:true. I don't think it should return the whole channel struct here as if it was a channel.get. Only thing is that, especially or only with set_mode, it may actually be 100% success... eg if your mode line is wrong :D. Bram Matthys 2023-01-07 14:56:36 +0100
  • 5589a78255
    JSON-RPC: add user.set_nick This also makes the "forced nick change" message a bit more generic, leaving out the "by services" or "due to Services", since it is now possible to do it via JSON-RPC. Bram Matthys 2023-01-07 14:52:44 +0100
  • 7d9dcb5e0a
    Allow SVS* commands to be sent by non-ulined servers by default, this is needed by various future JSON-RPC calls. See https://www.unrealircd.org/docs/Set_block#set::limit-svscmds Bram Matthys 2023-01-07 14:17:27 +0100
  • 62d62c4e88
    channel.set_mode: mode->modes, parameter->parameters Bram Matthys 2023-01-07 10:24:26 +0100
  • b2a6f3cfee
    JSON-RPC: add channel.set_mode Bram Matthys 2023-01-07 10:21:19 +0100
  • 14107d88be
    Add set_channel_topic() and use it from cmd_topic (TOPIC) Bram Matthys 2023-01-07 10:16:18 +0100
  • 66d7fb804d
    JSON-RPC: add channel.set_mode Bram Matthys 2023-01-07 09:41:01 +0100
  • 141c4bc64d
    Use consts in set_channel_mode() [skip ci] Bram Matthys 2023-01-07 09:39:44 +0100
  • 5a32333360
    JSON-RPC: show +vhoaq in "channels" in user.* and in "members" in channel.* as requested in https://bugs.unrealircd.org/view.php?id=6206 And also for channel.get, in "members", include the UID in "id". Bram Matthys 2023-01-05 17:44:46 +0100
  • bef2f428f4
    JSON-RPC: Really show *all* channels a user in. This because for JSON-RPC you expect all accurate data, while in contrast with JSON logging the channels are just there for convenience and only show the first X channels, since otherwise the data gets too long and gets truncated (JSON logging uses channel detail level 0). Bram Matthys 2023-01-05 16:52:56 +0100
  • 143b7262cc
    JSON-RPC: add channel.get which also includes members and +beI lists. Documented at https://www.unrealircd.org/docs/JSON-RPC:Channel under "When using the channel.get API call, more details are available" Bram Matthys 2023-01-05 16:39:59 +0100
  • ccbd320338
    JSON-RPC over Websocket: don't close websocket connections after ~30s, keep them open, but do a websocket ping/pong to check if the connection is alive. This is usually handled by browsers themselves, but if you are using websockets from a non-browser then you may have to PONG back on a PING, see https://www.rfc-editor.org/rfc/rfc6455#section-5.5.2 (note that PING-PONG is a requirement there) Bram Matthys 2023-01-04 13:50:57 +0100
  • b33628b765
    JSON-RPC over Websockets: Fix bug with >64Kb responses. Eg if there are 10.000 users online and you do user.list. The old websocket framing assumed no response was >64Kb. Bram Matthys 2023-01-04 13:07:10 +0100
  • d6a3db4ad2
    Add listener::mode so for file sockets you can specify the mode permissions. Valid choices are 0700, 0770 and 0777, see the documentation at https://www.unrealircd.org/docs/Listen_block Bram Matthys 2023-01-04 10:01:25 +0100
  • 8ca6341f38
    When someone includes "rpc.modules.default.conf" create a *NIX socket listening in data/rpc.socket, because why not... only the ircd user has access to it by default (well, and root). Bram Matthys 2023-01-03 19:27:56 +0100
  • dca5680665
    Add snomask 'R' for RPC usage (JSON-RPC). Bram Matthys 2023-01-03 17:44:29 +0100
  • b5c86981fa
    JSON-RPC server_ban.add: fix "duration_string" being interpreted totally wrong. Something like "1h" was intepreted as unixtime 3600 (=expired long ago). For absolute times there is already "expire_at" (JSON timestamp). Bram Matthys 2023-01-03 09:59:25 +0100
  • a8def63c09
    Merge branch 'unrealircd:unreal60_dev' into piss60 angryce 2023-01-02 17:43:10 +0100
  • 64e5de4c8c
    ExtBanAdd: Actually enforce conv_param as a required event. This was documented as optional in include/modules.h but on https://www.unrealircd.org/docs/Dev:Extended_Bans_API it was always mentioned as required. In practice, I know of no module that does not have this, in UnrealIRCd or third party (doing zero filtering is quite a bad idea). Bram Matthys 2023-01-01 09:40:38 +0100
  • aa80ecaeb7
    Merge branch 'unrealircd:unreal60_dev' into piss60 angryce 2022-12-30 22:49:42 +0100
  • 6d81d04036
    Re-add --enable-opt to sodium, and remove it from jansson. This fixes the fix in 8d228f5dbe. Bram Matthys 2022-12-30 11:54:49 +0100
  • 64ea321186
    Merge branch 'unrealircd:unreal60_dev' into piss60 angryce 2022-12-29 20:03:37 +0100
  • 3f197dee36
    Fix several mistakes in example conf (all my bad, i think): * A fatal parse error due to a } too much in Turkish example conf * In all example*.conf except::connect-delay -> except::connect-time Bram Matthys 2022-12-29 19:41:08 +0100
  • 75368e462a
    ** UnrealIRCd 6.0.5 ** Bram Matthys 2022-12-29 09:10:02 +0100
  • 8952666c4f
    Update release notes [skip ci] Bram Matthys 2022-12-29 09:03:27 +0100
  • 6b7fa40443
    Update release notes [skip ci] Bram Matthys 2022-12-29 08:52:32 +0100
  • eda57821ec
    Fix compile error due to previous commit (#246) Valerie Pond 2022-12-26 18:04:37 +0000
  • 895bbd3a35
    When authprompt kicks in and the session timeouts, show the original ban reason from the *LINE (or other ban type). Eg /GLINE %*@192.168.* 0 :Please authenticate using SASL would now, if the user has authprompt enabled and the connection times out, exit the client after ~30 secs with "Please authenticate using SASL", instead of "Registration timeout" (pre 6.0.5-rc2) or the generic "Account required to login" (6.0.5-rc2). This to help clients and users who do not type or display anything. Bram Matthys 2022-12-26 10:11:47 +0100
  • 7897782747
    *** UnrealIRCd 6.0.5-rc2 *** Bram Matthys 2022-12-23 08:52:41 +0100
  • 4e171eca0d
    Update release notes [skip ci] Bram Matthys 2022-12-23 08:33:56 +0100
  • 58e83bbe58
    Another fix for set::authentication-prompt::enabled 'no' being ignored (#245) Valerie Pond 2022-12-21 16:21:30 +0000
  • eca0035e8d
    Actually fix previous-previous-commit cdd0e4116d Bram Matthys 2022-12-21 10:09:23 +0100
  • eab827688d
    Fix RPC spamfilter.* (and tkl.*?) not going through fully net-wide due to bogus sender. [skip ci] Bram Matthys 2022-12-21 10:06:23 +0100
  • cdd0e4116d
    RPC spamfilter.add: convert reason to underscores internally when adding Bram Matthys 2022-12-21 09:57:53 +0100
  • 9b1c24c2fa
    When timing out on authprompt, error with "Account required to connect". More ideally it would show the full *LINE reason but that is something for a later release. Inspired by https://bugs.unrealircd.org/view.php?id=6202 Bram Matthys 2022-12-21 09:30:08 +0100
  • 7dedbf1a69
    Fix set::authentication-prompt::enabled 'no' being ignored (#243) Valerie Pond 2022-12-21 08:01:47 +0000
  • d4dbf62781
    Fix link warning about moddata creationtime (#233) Valerie Pond 2022-12-21 07:54:55 +0000
  • 2ff03be8a0
    Log who actually initiated a /CONNECT (both local and remote). Reported by Noisytoot in https://github.com/unrealircd/unrealircd/pull/244 Bram Matthys 2022-12-21 08:50:17 +0100
  • db30b3c7fc
    Rebuild ./configure due to previous commit Bram Matthys 2022-12-18 08:50:14 +0100
  • d9d423ad7a
    configure.ac: fix -Wimplicit-function-declaration (#242) Sam James 2022-12-18 07:21:46 +0000