aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* util.datamanager: Disable blockwise removalKim Alvefur2023-07-211-1/+4
| | | | In desperate need of tests
* mod_muc: Use enum config API for 'restrict_room_creation'Kim Alvefur2023-07-211-1/+1
| | | | | | This communicates the accepted values in case the config diverges from them. Note that older documentation used an "admin" value behaving like an alias to true, but this is no longer handled. Should it?
* plugins: Use get_option_array for some list shaped optionsKim Alvefur2023-07-212-2/+2
| | | | | Passing something from module:get_option() to ipairs() suggests that the option is a list of some sort.
* util.datamanager: Disable block alignmentKim Alvefur2023-07-211-0/+2
| | | | | Until we have more test coverage. Somehow the index becomes incorrect after inserting padding, unclear why.
* plugins: Handle how get_option_period returns "never"Kim Alvefur2023-07-213-4/+4
|
* plugins: Use boolean config method in some placesKim Alvefur2023-07-183-9/+7
| | | | Because it makes sense and improves feedback via logging
* mod_storage_internal: Use integer option method for cache sizeKim Alvefur2023-07-181-1/+1
| | | | Missed this one in previous sweep
* mod_muc_mam: Use period option methodKim Alvefur2023-07-181-13/+3
|
* mod_muc: Use enum option method for 'muc_room_default_presence_broadcast'Kim Alvefur2023-07-181-1/+2
|
* mod_storage_xep0227: Use enum option methodKim Alvefur2023-07-181-1/+1
|
* mod_auth_ldap: Use enum option methodKim Alvefur2023-07-181-2/+2
|
* mod_storage_sql: Use integer config option for cache sizeKim Alvefur2023-07-181-1/+1
| | | | Missed this one, was probably only looking for get_option_number
* mod_storage_sql: Use config enum for 'sqlite_tune'Kim Alvefur2023-07-181-1/+1
|
* mod_storage_sql: Allow higher precision timestamps in SQLite3Kim Alvefur2023-07-171-1/+5
| | | | Since it doesn't actually do strict typing :)
* Merge 0.12->trunkKim Alvefur2023-07-171-0/+5
|\
| * util.prosodyctl.check: Hint about the 'external_addresses' config optionKim Alvefur2023-07-171-0/+5
| |
* | Merge 0.12->trunkKim Alvefur2023-07-171-41/+82
|\|
| * util.prosodyctl.check: Validate format of module list optionsKim Alvefur2023-07-171-0/+28
| | | | | | | | Should detect things like misplaced settings inside modules_enabled
| * util.prosodyctl.check: Get some config options via minimal moduleapi #896Kim Alvefur2023-07-171-41/+54
| | | | | | | | | | | | The module API has certain coercion features that are useful. Fixes traceback reported in #1812 and other duplicates
* | core.moduleapi: Fix min/maxinteger fallback for Lua 5.2Kim Alvefur2023-07-171-1/+1
| | | | | | | | Maybe these should live in util.mathcompat?
* | mod_http: Fix passing minimum limits in wrong argument positionKim Alvefur2023-07-171-2/+2
| |
* | plugins: Use integer config API with interval specification where sensibleKim Alvefur2023-07-1726-47/+48
| | | | | | | | | | | | | | Many of these fall into a few categories: - util.cache size, must be >= 1 - byte or item counts that logically can't be negative - port numbers that should be in 1..0xffff
* | core.moduleapi: Add min/max range support to :get_option_periodKim Alvefur2023-07-171-11/+27
| | | | | | | | | | | | To match :get_option_number etc, specifying the allowed interval. Default is essentially (0, inf].
* | moduleapi: Add :get_option_integer()Kim Alvefur2023-07-174-0/+17
| | | | | | | | | | | | | | Many options in Prosody that are treated as numbers don't make sense as floats, e.g. sizes and limits measured in bytes. Simplified implementation based on an earlier attempt dating back to 2020
* | util.human.io: Fix stray 'stty' error by only querying width of real ttysKim Alvefur2023-07-161-0/+4
| | | | | | | | | | This adds a dependency on a binary and *nix-specific module but then stty is probably *nix-specific anyway so maybe that's fine.
* | plugins: Switch to :get_option_period() for time range optionsKim Alvefur2023-07-1618-38/+24
| | | | | | | | Improves readability ("1 day" vs 86400) and centralizes validation.
* | core.moduleapi: Accept boolean false to disable period settingKim Alvefur2023-07-161-1/+1
| |
* | core.moduleapi: Log error for unexpected types (booleans?) set as periodsKim Alvefur2023-07-161-0/+2
| |
* | core.moduleapi: Turn negative periods or "never" into infinityKim Alvefur2023-07-161-0/+7
| | | | | | | | | | As a way to signal that the periodic thing should be disabled, matching existing mod_mam usage
* | core.moduleapi: Improve handling of different types in :get_option_periodKim Alvefur2023-07-161-8/+8
| | | | | | | | | | Pass positive numbers trough unharmed, parse strings as periods, discard anything else.
* | 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.