aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* util.jsonpointer: Improve testsKim Alvefur2022-10-191-0/+2
| | | | | | | | | Result of mutation testing Remaining mutants are mostly relating to the math.type() fallback. Another case being that array[#array+1] == array[#array+2] and thus doesn't matter.
* util.datamapper: Remove leftover debug assert (Only Teal, not included in build)Kim Alvefur2022-10-191-4/+0
|
* mod_blocklist: Add option 'migrate_legacy_blocking' to disable migration ↵Kim Alvefur2022-10-172-0/+9
| | | | | | | | | | | | from mod_privacy Tiny performance improvement for new users by skipping this check. Most servers should have gone trough the migration for all active users long ago. As a suitable first step of phasing out this code, we make it possible to disable it first. Later it can be disabled by default, before finally the code is deleted.
* util.stanza: Add new methods to Teal interface specificationKim Alvefur2022-10-171-0/+5
| | | | | | | at_top: 21217f7e82b9 get_child_with_attr: 39164ea2ab9e get_child_attr: e8934ce6ea0f add_error: 5f182bccf33f
* mod_c2s: Include stream attributes in stream-features eventMatthew Wild2022-10-141-1/+1
| | | | We need this to access 'from' in SASL2/FAST.
* mod_tokenauth: Allow attaching an arbitrary data table to a tokenMatthew Wild2022-10-131-1/+2
|
* util.cache: Add some missing test casesMatthew Wild2022-10-131-0/+52
| | | | Found via mutation testing.
* util.jid: Add test for invalid domain but valid UTF-8 (thanks jonas)Matthew Wild2022-10-111-0/+1
|
* util.jid: Simplify boolean logic in conditionalsMatthew Wild2022-10-111-3/+3
|
* util.jid: Remove redundant check from split() (micro-optimization?)Matthew Wild2022-10-111-2/+1
|
* util.jid: Add missing test casesMatthew Wild2022-10-111-0/+40
| | | | (98% mutant score, single remaining mutant is a string.sub equivalent)
* .luacheckrc: Add test_mutants.sh.lua to the ignore listMatthew Wild2022-10-111-0/+1
|
* tools: Add initial mutation testing scriptMatthew Wild2022-10-111-0/+217
|
* util.dbuffer: Add a bunch of missing test casesMatthew Wild2022-10-111-2/+70
| | | | Found via mutation testing.
* util.dbuffer: Add efficient shortcuts for discard() in certain casesMatthew Wild2022-10-111-2/+6
| | | | | | If the buffer is already empty, nothing to do. If we're throwing away the whole buffer, we can just empty it and avoid read_chunk() (which in turn may collapse()). These shortcuts are much more efficient.
* util.dbuffer: Remove redundant code (read_chunk() cannot fail at this point)Matthew Wild2022-10-111-7/+3
|
* Merge 0.12->trunkKim Alvefur2022-10-092-10/+16
|\
| * util.jsonschema: Use same integer/float logic on Lua 5.2 and 5.3Kim Alvefur2022-10-091-2/+2
| | | | | | | | | | Fixes test case type.json:0:1 covering treatment of 1.0 as an integer according to the JSON definition
| * util.jsonschema: Fix Lua 5.2 integer compatKim Alvefur2022-10-091-1/+1
| | | | | | | | | | math.type() is unavailable before Lua 5.3 so this should use the compat function added at the top
| * util.jsonschema: Ignore test case for JavaScript specific detailKim Alvefur2022-10-091-0/+1
| | | | | | | | Also touching on how arrays are indistinguishable from tables in Lua
| * util.jsonschema: Ignore some further test cases for URI referencesKim Alvefur2022-10-091-0/+5
| | | | | | | | Full-URI references are not implemented
| * util.jsonschema: Sort test cases to skipKim Alvefur2022-10-091-7/+7
| | | | | | | | Piped trough `sort -g`
* | util.datetime: Add some missing test casesMatthew Wild2022-10-081-0/+15
| | | | | | | | You guessed it, mutation testing.
* | util.roles: Fix tests to use autogenerated role idMatthew Wild2022-10-081-1/+1
| |
* | util.roles: Add some more missing test casesMatthew Wild2022-10-081-0/+18
| | | | | | | | Found via mutation testing.
* | util.promise: Fix field name in failing test (introduced in 2639e0e1c378)Matthew Wild2022-10-071-1/+1
| |
* | util.promise: Add some missing test cases (found through mutation testing)Matthew Wild2022-10-071-0/+25
| |
* | util.promise: Remove line that was supposed to be removed in eb9814372c54Matthew Wild2022-10-071-1/+0
| |
* | util.promise: Remove some redundant checks, add tests confirming redundancyMatthew Wild2022-10-072-4/+21
| | | | | | | | | | | | | | | | | | This lines don't appear to do anything useful, and all tests pass when they are removed. Discovered via mutation testing. I added extra tests to exercise this code, because I wasn't certain that there were no side-effects caused by removal. Everything appears to be fine, thanks to the "pending" check at the start of promise_settle().
* | util.roles: Add a :policies() method to iterate through available policiesMatthew Wild2022-10-071-0/+10
| | | | | | | | | | | | We don't expose the policies directly, to force people to go through :may(). However, there are times when we really just need to know what policies a role has inside it (e.g. for reporting or debugging purposes).
* | util.roles: Add testsMatthew Wild2022-10-071-0/+116
| |
* | util.roles: Return nil if the role has no explicit policy (fixes inheritance)Matthew Wild2022-10-071-1/+1
| | | | | | | | | | | | | | | | Previously, if the first inherited role had no opinion, it returned false and prevented further consultation of other inherited roles. This bug was found thanks to the implementation of missing test cases identified through mutation testing.
* | mod_smacks: Change boolean attribute from '1' to 'true' for compatibilityMatthew Wild2022-10-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | Conversations 2.10.10 and earlier expect this to be literally 'true' and don't recognise '1'. This leads to it not attempting resumption with Prosody at all since this change was introduced in 36ba170c4fd0. Thanks to Zash for noticing, debugging and diagnosing this issue. This issue is fixed in Conversations commit 052c58f3 (unreleased at the time of writing).
* | util.iterators: join: Work even with only a single iterator in the chainMatthew Wild2022-10-062-1/+10
| |
* | mod_tokenauth: Remove expired tokens from storageMatthew Wild2022-10-061-0/+2
| |
* | mod_tokenauth: Invalidate tokens issued before most recent password changeMatthew Wild2022-10-061-0/+6
| | | | | | | | | | | | This is a security improvement, to ensure that sessions authenticated using a token (note: not currently possible in stock Prosody) are invalidated just like password-authenticated sessions are.
* | prosodyctl: check turn: More clearly indicate the error is from TURN serverMatthew Wild2022-10-061-1/+1
| |
* | mod_authz_internal: Fix warning due to global useKim Alvefur2022-10-041-1/+1
| | | | | | | | Thanks Menel and Martin
* | Backed out changeset 1bc2220cd6ecJonas Schäfer2022-10-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | The use of the error helpers creates an `<error/>` child element containing the error condition. This is however not allowed as per XEP-0198, which specifies that the error condition is to be a direct child of the `<failed/>` stream management element. This has triggered a fun reconnect loop in aioxmpp where it was reported by a user [1]. [1]: https://github.com/horazont/aioxmpp/issues/382
* | util.jwt: More robust ECDSA signature parsing, fail early on unexpected lengthMatthew Wild2022-09-301-1/+5
| |
* | util.crypto: Fix testsKim Alvefur2022-09-301-3/+3
| | | | | | | | | | | | Found this number in a hat. Sleepy time. Good night.
* | util.jwt: Add support for ES512 (+ tests)Matthew Wild2022-09-293-3/+66
| |
* | util.crypto, util.jwt: Generate consistent signature sizes (via padding)Matthew Wild2022-09-292-14/+21
| | | | | | | | | | | | This fixes the signature parsing and building to work correctly. Sometimes a signature was one or two bytes too short, and needed to be padded. OpenSSL can do this for us.
* | CHANGES: Update with MUC permission changesMatthew Wild2022-09-291-0/+10
| |
* | mod_authz_internal: Allow specifying default role for public (remote) usersMatthew Wild2022-09-291-0/+3
| |
* | Backed out changeset 73a45ba6e3f1 in favour of 427dd01f0864Matthew Wild2022-09-291-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | New behaviour (muc_room_allow_persistent = true, the default): - Parent host users are not restricted by default (prosody:user) - Users without roles (by default that is non-admins, non-parent-host users, and users on other servers) can no longer configure persistence by default. muc_room_allow_persistent = false will restrict persistence to prosody:admin. Parent-host users should not be restricted by default, and this can be configured via the new roles/permissions options.
* | mod_muc: Better map restrict_room_creation to role permissions (behaviour ↵Matthew Wild2022-09-291-21/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | change) With this change and 427dd01f0864, room creation is now effectively restricted to parent-host users by default. This is a better default than previous Prosody versions (where room creation was not restricted). The "local" option for restrict_room_creation is no longer used (any value other than true/false won't change the default behaviour). restrict_room_creation = true will grant prosody:admin the ability to create rooms. restrict_room_creation = false disables all permission checks. Anything between these two can be achieved using custom roles and permissions.
* | mod_authz_internal: Allow configuring role of local-server/parent-host usersMatthew Wild2022-09-291-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 'host_user_role' is the default role of users who have JIDs on the "parent" host (i.e. jabber.org users on conference.jabber.org). Defaults to 'prosody:user'. 'server_user_roles' is the default role of users who have JIDs on any active host on the current Prosody instance. Default to nil (no role). This finally allows better permissions splitting between host and server users, which has previously been done (e.g. in MUC) with options like 'restrict_room_creation' and 'muc_room_allow_persistent'. Using roles makes these permissions a lot more flexible, and easier for developers to integrate.
* | muc: Re-allow non-admins to configure persistence (thanks Meaz)Matthew Wild2022-09-281-6/+3
| | | | | | | | | | | | | | | | | | | | Non-admins don't have a role on MUC services by default. Not even prosody:user. This meant they had no :create-persistent-room permission, even if muc_room_allow_persistent was true (the default). Now we only check the role permissions if persistent room creation is restricted, otherwise we skip any permission checks, just like previous versions.
* | doap: Latest XEP-0440 supported since 9f100ab9ffdfMatthew Wild2022-09-261-1/+1
| |