aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
Commit message (Collapse)AuthorAgeFilesLines
* mod_http: Generate URL from configuration in prosodyctlKim Alvefur2023-07-261-0/+31
| | | | | | This removes the need to configure e.g. http_external_url or similar settings in order to get correct URLs out of prosodyctl, as the API depends on portmanager to know the actual ports that are used.
* mod_tokenauth: Fix revoking a single token without revoking whole grantKim Alvefur2023-07-231-4/+18
| | | | | | This appears to have been a copy-paste of the grant revocation function, or maybe the other way around. Either way, it deleted the whole grant instead of the individual token as might be expected.
* mod_storage_sql: Spell out missing dependenciesKim Alvefur2023-07-221-3/+16
| | | | | Using util.dependencies appeared to cause problems with running tests in Busted, so this also removes that and uses pcall directly.
* mod_storage_sql: Pass variables as arguments instead of upvaluesKim Alvefur2023-07-221-10/+5
| | | | | Probably a workaround for the lack of argument passing when using xpcall in Lua 5.1, no longer relevant.
* 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.
* 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 :)
* 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
* plugins: Switch to :get_option_period() for time range optionsKim Alvefur2023-07-1618-38/+24
| | | | Improves readability ("1 day" vs 86400) and centralizes validation.
* plugins: Use get_option_enum where appropriateKim Alvefur2021-01-165-8/+11
|
* mod_storage_sql: Remove completed TODO (testing UPSERT on PostgreSQL)Kim Alvefur2023-07-121-1/+0
|
* 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.
* Merge 0.12->trunkKim Alvefur2023-07-101-1/+1
|\
| * 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.
* | core, plugins: Split prosody:user role into prosody:{guest,registered,member}Matthew Wild2023-06-297-44/+49
| | | | | | | | | | | | | | 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.
* | 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.
* | renamening: Fix newly added imports to use the new namespaceKim Alvefur2023-06-182-2/+2
| |
* | 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.
* | 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"
* | mod_storage_sql: Enable UPSERT with PostgreSQLKim Alvefur2023-06-161-1/+1
| | | | | | | | Tested. Works.
* | mod_storage_sql: Add some TODO comments for future UPSERT workKim Alvefur2023-06-111-0/+2
| |
* | mod_storage_sql: Do not keep track of quota when no quota is setKim Alvefur2023-06-111-20/+29
| | | | | | | | | | | | | | | | | | No point in doing this expensive O(n) query if the result is not used for anything. Will still cache the total item count if an explicit query for this is performed, then try to keep it updated with new items added. Will likely forget eventually tho.
* | mod_storage_sql: Add setting to tune SQLite3 performance vs safetyKim Alvefur2023-06-111-0/+38
| | | | | | | | | | Notably the default journal_mode of DELETE is somewhat slow, some users might want to catch up to the amazing performance of internal storage.
* | mod_storage_sql: Record all SQLite3 compile options for potential useKim Alvefur2023-06-101-4/+6
| | | | | | | | | | Knowing what features are available could be useful for future experiments. For example, with the JSON module or full text search.
* | mod_storage_sql: Compose a keyval+ store out of keyval and map store methodsKim Alvefur2023-06-101-0/+17
| | | | | | | | | | | | | | Removes the need for the shim in storagemanager. The methods only really access the 'store' property of the first (self) argument, so this is safe.
* | mod_storage_sql: Add UPSERT supportKim Alvefur2023-06-101-7/+41
| | | | | | | | | | | | | | Currently limited to SQLite3 for lack of testing on other databases. Adds a migration to replace the non-UNIQUE prosody_index, renaming it prosody_unique_index since ALTER INDEX does not seem to be portable.
* | Merge 0.12->trunkKim Alvefur2023-06-101-1/+1
|\|
| * mod_http: Fix error if 'access_control_allow_origins' is setKim Alvefur2023-06-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | Because it changes the type of the 'opt_origins' variable from util.set to the internal _items table so next time an http app is added an error "attempt to call a nil value (method 'empty')" is triggered. The value is not used anywhere else. Noticed when reviewing uses of the '_items' set property. Not reported by any users, implying this setting is rarely used.
* | mod_http: Simplify conversion of Set to ArrayKim Alvefur2023-06-101-1/+1
| | | | | | | | | | Avoids the _items semi-private value, that is used everywhere for some reason.
* | mod_storage_internal: Use a binary search for time based rangesKim Alvefur2021-05-121-8/+55
| | | | | | | | | | | | | | | | | | Iterating over an entire archive to find a few items in the far end from where iteration started is expensive, and probably more expensive with the lazy-loading of items added in the previous commit. Since we can now efficiently read items in random order, we can now use a binary search to find a better starting point for iteration.
* | mod_storage_internal: Lazy-load archive items while iteratingKim Alvefur2021-05-121-59/+57
| | | | | | | | | | | | | | | | | | | | Very large list files previously ran into limits of the Lua parser, or just caused Prosody to freeze while parsing. Using the new index we can parse individual items one at a time. This probably won't reduce overall CPU usage, probably the opposite, but it will reduce the number of items in memory at once and allow collection of items after we iterated past them.
* | mod_admin_shell: Use new serialize preset to simplify default configKim Alvefur2023-06-091-2/+5
| | | | | | | | Two pairs replaced by one. Blame lua-format for the line diff delta.
* | mod_admin_shell: Warn when (un-)loading module would be undone by restartKim Alvefur2023-06-061-0/+12
| | | | | | | | Reminder to update the configuration if the change is to be permanent.
* | mod_http: Make RFC 7239 Forwarded opt-in for now to be safeKim Alvefur2023-06-031-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | Supporting both methods at the same time may open to spoofing attacks, whereby a client sends a Forwarded header that is not stripped by a reverse proxy, leading Prosody to use that instead of the X-Forwarded-* headers actually sent by the proxy. By only supporting one at a time, it can be configured to match what the proxy uses. Disabled by default since implementations are sparse and X-Forwarded-* are everywhere.
* | mod_http: Use RFC 7239 Forwarded header to find original client IPKim Alvefur2023-06-031-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Prefer over X-Forwarded-* since it has an actual specification. Main practical difference is that Forwarded may carry more properties than only the IP address since it is a structured header. Since we parse it into an array, it is easier to do the logical thing and iterate backwards trough proxies until an untrusted one is encountered. Compare the handling of X-Forwarded-For. The 'secure' field now accounts for the full chain of proxies, which must be secure all the way to be considered secure.