aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* core.moduleapi: Add :get_option_period for parsing time intervalsKim Alvefur2023-07-164-0/+18
| | | | | E.g. for use in mod_mam and others that take an amount of time before some (usually cleanup) action is taken.
* core.moduleapi: Allow specifying an acceptable range for number optionsKim Alvefur2021-10-053-2/+16
|
* plugins: Use get_option_enum where appropriateKim Alvefur2021-01-165-8/+11
|
* moduleapi: Add enum config option methodKim Alvefur2021-01-164-0/+17
| | | | For when a setting has a few fixed values it can take
* tools: Fix file ending of mod2spec.sh (thanks buildbot)Kim Alvefur2023-07-161-0/+0
| | | | Accidentally .lua ?
* util.human.io: Fix pattern in parse_duration() to cover all used lettersKim Alvefur2023-07-161-2/+2
| | | | | Notably 'h' was missing. Awkwardly, 'hour' would result in 'ho' which was missing from table.
* util.human.io: Add tests for parse_duration() (some failing)Kim Alvefur2023-07-161-0/+9
|
* util.human.io: Include relevant arguments in test messagesKim Alvefur2023-07-161-1/+1
| | | | This way the relevant arguments are shown in case a test case fails
* util.human.io: Use tail call in test to get correct line numbersKim Alvefur2023-07-161-1/+1
| | | | | | This is probably not guaranteed to work and might vary with Lua version, but it's good enough for me to get accurate line numbers out of Busted that don't all point to the test() function.
* tools: Add mod2spec.sh, turns util.example into spec/util_example_spec.luaKim Alvefur2023-07-161-0/+4
| | | | | | | Useful for opening a module and its tests at the same, can be awkward to auto-complete sometimes. sensible-editor util/example.lua $(./tools/mod2spec.sh util.example)
* editorconfig: Include the command used to normalize *.xmlKim Alvefur2023-07-151-1/+2
| | | | The double asterisk seems unnecessary.
* editorconfig: Specify max line length to match luacheck settingsKim Alvefur2023-07-151-0/+1
|
* editorconfig: Explicitly specify preferred charset (UTF-8)Kim Alvefur2023-07-151-0/+1
| | | | | Really should be the default everywhere by now, but doesn't hurt to be extra explicit
* editorconfig: Add link to format descriptionKim Alvefur2023-07-151-0/+2
|
* mod_storage_sql: Remove completed TODO (testing UPSERT on PostgreSQL)Kim Alvefur2023-07-121-1/+0
|
* CHANGES: Move line about LuaSQLite3 to Storage sectionKim Alvefur2023-07-121-1/+1
|
* CHANGES: Mention performance improvements for internal archivesKim Alvefur2023-07-121-0/+1
| | | | | | Specifically the index and more efficient delete. These are however still in need of testing.
* mod_storage_internal: Implement efficient deletion of oldest archive itemsKim Alvefur2023-07-121-0/+22
| | | | | | | | Using the new shift function in datamanager, either the oldest items are removed or all the later items are moved into a new file that replaces the old. Hidden behind a feature flag for now.
* util.datamanager: Pad list writes to avoid crossing block boundariesKim Alvefur2023-06-071-0/+7
| | | | | | | | | | | By padding items so that they do not cross block boundaries, it becomes eaiser to delete whole blocks with fallocate() without cutting items in half, improving efficiency of such operations. Since list stores are used for message archives, where the most common deletion operation would be of the oldest entires, at the top of the file. With this, all blocks that contain items to be removed could be deleted without needing to read, delete and write out the whole file.
* util.datamanager: Efficiently remove whole blocks to shift listsKim Alvefur2023-07-121-0/+40
| | | | | Using the new pposix.remove_blocks() it should be very performant to delete whole sections of a file, given a supporting file system.
* util.pposix: Add remove_blocks() for deleting parts of filesKim Alvefur2023-06-072-0/+37
| | | | | | Allows implementing e.g. a FIFO Will probably only work on some Linux file systems like ext4.
* util.datamanager: Add way to efficiently remove first items in a listKim Alvefur2023-07-121-0/+92
| | | | | Copying data without parsing it should be more performant than parsing it serializing back.
* util.datamanager: Fix indexing first item if not at the very startKim Alvefur2023-07-101-2/+2
| | | | | | | | If the first item does not start at position 0 then the index function produces a phantom first entry covering position zero until where the real first item starts. When using the index, this would make it either appear as the first item was missing or cause an off-by-one issue with remaining items.
* util.datamanager: Reduce log level of left over debug messages to debug ↵Kim Alvefur2023-07-121-2/+2
| | | | | | (thanks Trung) These were mostly 'warn' to make them stand out from the debug noise
* util.datamanager: Fix missing separator in log lineKim Alvefur2023-07-101-1/+1
|
* Merge 0.12->trunkKim Alvefur2023-07-102-2/+3
|\
| * core.certmanager: Update Mozilla TLS config to version 5.7Kim Alvefur2023-07-091-1/+2
| | | | | | | | Ref https://github.com/mozilla/server-side-tls/issues/285
| * mod_pubsub: Send correct jid attribute in disco#itemsKim Alvefur2023-07-081-1/+1
| | | | | | | | Fixes use in PEP where the JID does not equal the bare domain.
* | mod_http_file_share: Put 'expires' back, thought it was unusedKim Alvefur2023-07-021-0/+1
| | | | | | | | | | | | Removed in 536055476912 because it was not used anywhere else in the file, but per the documentation it is meant to inform external upload services of the expiry time of the upload itself.
* | util.cache: Pass cache itself to eviction callbackKim Alvefur2023-06-302-4/+3
| | | | | | | | | | | | | | Simplifies access to the cache without moving code around a lot given the currently common pattern of local some_cache = cache.new(size, function(k,v) end)
* | util.cache: Keep eviction candidate if callback resized to make roomKim Alvefur2023-06-302-3/+29
| | | | | | | | | | Previously either the old or the new values would be rejected, even if the cache was resized to allow more items.
* | util.serialization: Teach Teal about the new "pretty" presetKim Alvefur2023-06-301-0/+1
| |
* | util.jsonpointer: Change function prototype to allow anythingKim Alvefur2023-06-301-1/+1
| | | | | | | | | | But anything that's not a table can't be resolved into, which could happen in the middle, so eh.
* | util.jsonpointer: Silence Teal warningKim Alvefur2023-06-301-1/+1
| | | | | | | | It seems to think 'table' never has array items, but we don't know that.
* | core, plugins: Split prosody:user role into prosody:{guest,registered,member}Matthew Wild2023-06-298-44/+52
| | | | | | | | | | | | | | This gives us more granular control over different types of user account. Accounts registered by IBR get assigned prosody:registered by default, while accounts provisioned by an admin (e.g. via prosodyctl shell) will receive prosody:member by default.
* | usermanager: Add create_user_with_role() method to atomically set initial roleMatthew Wild2023-06-291-0/+26
| |
* | mod_http_file_share: Set slot token TTL so util.jwt validates expiryKim Alvefur2023-06-281-2/+1
| | | | | | | | | | | | Overrides the util.jwt default of 1h with the intended TTL of 10 minutes. Because util.jwt now has its own expiry checks, so the 'expiry' field is no longer used and can thus be removed.
* | prosodyctl: Add experimental way to reload specific modules directlyKim Alvefur2023-06-251-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | Mostly thinking out loud about how various actions may use the shell This enables the following sequence of commands: prosodyctl install mod_example prosodyctl reload mod_example which is simpler than prosodyctl shell module reload example
* | net.server: Handle loading from outside Prosody (e.g. Verse)Kim Alvefur2023-05-201-15/+20
| | | | | | | | | | server_select only depending on LuaSocket generally makes it more portable, so fall back to that if util.poll can't be found.
* | renamening: Fix newly added imports to use the new namespaceKim Alvefur2023-06-185-6/+6
| |
* | util.jsonschema: Remove wrapper functionKim Alvefur2023-06-172-14/+0
| | | | | | | | This was to silence some Teal warning that seems to have gone away.
* | util.jsonschema: Silence Teal warnings about utf8 libraryKim Alvefur2023-06-172-4/+4
| | | | | | | | | | | | Teal worries that we redefine the global. Also that the fallback was missing type information.
* | util.jsonschema: Silence Teal warnings about counting items in tablesKim Alvefur2023-06-172-8/+8
| | | | | | | | | | Teal thinks that these are key-value maps which are always of length zero, but that is not the case.
* | mod_invites: Refactor argument handling using util.argparseKim Alvefur2022-01-121-63/+59
| | | | | | | | | | | | | | | | | | | | This makes it so that --admin and --role are no longer mutually exclusive, they the former is simply treated as another --role. This was likely a leftover from when only a single role was possible. It does however become unclear which should be the primary, since the order is not preserved by argparse. Bonus: Loading of modules is avoided with only the --help is shown.
* | util.argparse: Add support for repeatable parametersKim Alvefur2022-01-052-2/+16
| | | | | | | | These are gathered into arrays
* | mod_storage_sql: Fix column name in index check for PostgreSQLKim Alvefur2023-06-171-1/+1
| | | | | | | | Forgot to change the column name in 9a7523ea45cb
* | mod_storage_sql: Adjust indentation to align with surrounding codeKim Alvefur2023-06-171-3/+3
| |
* | mod_storage_sql: Only remove old index if it existsKim Alvefur2023-06-171-9/+11
| | | | | | | | Avoids an error if the upgrade is performed twice..
* | mod_storage_sql: Be more specific when checking for old index in SQLite3Kim Alvefur2023-06-171-1/+1
| | | | | | | | | | Prevents false positives in the odd case where something other than an index with this name might exist.
* | mod_storage_sql: Improve check for old table index on PostgreSQLKim Alvefur2023-06-161-1/+1
| | | | | | | | The "pg_indexes" view is much simpler to inspect than "pg_class"