aboutsummaryrefslogtreecommitdiffstats
path: root/util
Commit message (Collapse)AuthorAgeFilesLines
* util.id: Adjust entropy levels, with rationalesKim Alvefur2021-12-021-3/+14
| | | | | Modules using ids for logging should not need the now pretty large medium one.
* util.prosodyctl.cert: Copy SAN/wildcard certs only onceKim Alvefur2021-12-221-1/+5
|
* util.x509: Fix to include wildcard identityKim Alvefur2021-12-221-0/+3
|
* prosodyctl cert: use the indexing functions for better UXJonas Schäfer2021-12-211-13/+15
| | | | | | These provide (a) a way to deal with random assortments of certs and (b) avoid unnecessary error messages and warnings, according to #1669 anyway, which this fixes.
* core.certmanager: Rename preset option to 'tls_preset'Kim Alvefur2021-12-221-0/+1
| | | | TLS good, SSL bad.
* adminstream: fire disconnected event on lower layer disconnectJonas Schäfer2021-12-211-0/+1
| | | | | | | | | | | This may in theory cause multiple disconnect events for the adminstream client, if the only code using that wasn't calling os.exit right away. Hence, this should be a good enough partial fix for #1671. It is not a full fix, because the shell will only notice the disconnect after one has hit enter in the input; until then, it is stuck in a read() call to stdin and completely oblivious to the disconnect.
* util.smqueue: Simplify compat table, fix dependent modules (thanks Martin)Kim Alvefur2021-12-161-9/+4
| | | | | | There was an off-by-one in the modulo calculation. Switching to a plain old array-table makes the apparent size of the queue wrong, but since some of the queue may not be available this is likely for the best.
* util.smqueue: Abstract queue with acknowledgements and overflowKim Alvefur2021-12-141-0/+61
| | | | | | | | Meant to be used in mod_smacks for XEP-0198 Meant to have a larger virtual size than actual number of items stored, on the theory that in most cases, the excess will be acked before needed for a resumption event.
* util.format: Optimize most common integer formatKim Alvefur2021-12-131-0/+2
| | | | | | A search for log formats in use points to %s being the most common, followed by %d, so worth having a fast path for that. %g works well with most numbers and is what Lua 5.1 and 5.2 used
* util.format: Ensure metatable __tostring results are also sanitizedKim Alvefur2021-12-131-1/+2
|
* util.format: Fix some formats expecting positive numbers in Lua 5.2Kim Alvefur2021-12-111-0/+5
| | | | Amazing how string.format behaves differently under each Lua version
* util.format: Fix Lua 5.1 quirks thanks to ALL THE TESTSKim Alvefur2021-12-111-1/+6
|
* util.format: Also handle the %p format added in Lua 5.4Kim Alvefur2021-12-111-3/+18
|
* util.format: Ensure sanitation of strings passed to wrong formatKim Alvefur2021-12-111-21/+37
| | | | | | | | | Ie. log("debug", "%d", "\1\2\3") should not result in garbage. Also optimizing for the common case of ASCII string passed to %s and early returns everywhere. Returning nil from a gsub callback keeps the original substring.
* util.format: Escape invalid UTF-8 by passing trough serializationKim Alvefur2021-12-101-1/+10
| | | | | | Should prevent invalid UTF-8 from making it into the logs, which can cause trouble with terminals or log viewers or other tools, such as when grep determines that log files are binary.
* util.sasl.scram: Store username property rather than cached local (#399)Matthew Wild2021-12-071-1/+1
| | | | | This should allow modules to override the username in a profile handler by assigning to self.username.
* util.dependencies: Fix typo (thanks jonas’)Kim Alvefur2021-11-301-1/+1
| | | | | | | | | | vim> Change "sevral" to: 1 "several" 2 "sacral" 3 "spiral" 4 "feral" 5 "serial" jonas’> I choose 4.
* util.startup: Initialize util.async at startupMatthew Wild2021-11-291-0/+9
|
* util.async: Add next-tick configurationMatthew Wild2021-11-291-2/+8
| | | | | | | | Running woken runners in the next iteration of the event loop prevents unexpected recursion, unexpected tracebacks, and is generally more predictable. The pattern is borrowed from util.promise, where we're now doing the same.
* util.async: Add sleep() method with configurable scheduling backendMatthew Wild2021-11-291-0/+15
| | | | | | | | | No scheduler set by default, so it will error (we plan to initialize it in util.startup). We wanted to avoid a hard dependency on util.timer (which in turn depends on network backends, etc.), and we didn't add timer.sleep() because we didn't want to add a hard dependency on util.async for things that don't need it.
* util.stanza: Adjust pretty printing for symmetryKim Alvefur2021-11-291-1/+1
| | | | | Self-closing <tags/> and <?processing instructions?> had some asymmetries in applied colors.
* util.dependencies: Discourage Lua 5.1Kim Alvefur2021-11-281-0/+2
| | | | Search for 'Lua 5.1' for reasons.
* util.dependencies: Consider Lua 5.4 Supported:tm:Kim Alvefur2021-11-281-1/+1
| | | | | I have been running my own server exclusively on Lua 5.4 for months and apart from packaging issues I remember on major issues.
* util.prosodyctl.check: Support direct TLS connectivity checksKim Alvefur2021-11-281-0/+6
| | | | | | Currently only supported with OJN Assumption: the direct_tls_ports are not empty when set.
* util.startup: Integrate util.promise with net.server main loopKim Alvefur2019-01-051-0/+8
|
* util.promise: Support delayed promise executionKim Alvefur2019-01-051-5/+12
|
* util.prosodyctl.check: Add mod_http_openmetrics settings to known globalsKim Alvefur2021-11-251-0/+2
|
* mod_http_openmetrics: Imported from prosody-modules mod_prometheus @df2246b15075Matthew Wild2021-11-241-0/+79
| | | | | | | | | This version has several changes from the earlier mod_prometheus: - Conversion of metrics into the text-based OpenMetrics format is moved to util.openmetrics - Support for IP-based access control - Compatibility with earlier Prosody versions removed
* util.prosodyctl.check: Highlight inconsistency of AAAA records and ↵Kim Alvefur2021-11-201-0/+4
| | | | use_ipv6=false
* util.prosodyctl.check: Respect use_ipv4/v6 in proxy65 checkKim Alvefur2021-11-201-4/+4
| | | | | | | Previously it would complain about lack of an AAAA record for proxy65_target even in an IPv6-less environment. Thanks to libertas for unintentionally calling attention to this.
* util.prosodyctl.check: Take IPv6 support in LuaSocket into accountKim Alvefur2021-11-201-1/+1
| | | | Shouldn't really matter these days, but portmanager checks this way.
* util.prosodyctl.shell: Bring back banner set from config!Kim Alvefur2021-11-121-0/+2
| | | | I miss my custom ANSI-colored greeting!
* util.human.io: Use UTF-8-aware length check in padding functionsKim Alvefur2021-11-121-2/+2
|
* util.human.io: Fix cutting of UTF-8 into piecesKim Alvefur2021-11-121-7/+21
| | | | Down the rabbit hole we go...
* util.human.io: Trim any broken UTF-8 from ellipsisKim Alvefur2021-11-121-1/+5
| | | | | | | This should fix basic problems with multi-byte UTF-8 sequences getting cut in the middle. Down the rabbit hole we go...
* util.human.io: Factor out ellipsis functionKim Alvefur2021-11-121-1/+6
| | | | Could be useful elsewhere
* util.human.io: Support specifying column defaults in tablesKim Alvefur2021-11-121-1/+1
|
* util.human.io: Pass nil to cell mapper to signal missing valueKim Alvefur2021-11-121-1/+9
| | | | | Seems more like conventional Lua than passing an empty string to signal lack of value.
* util.prosodyctl.shell: Allow setting custom prompt (admin_shell_prompt)Matthew Wild2021-11-111-4/+6
|
* util.dataforms: Encode size attributes as integers in XEP-0221 media elementKim Alvefur2021-10-281-1/+1
| | | | Otherwise very large fields would be serialized in e notation
* util.dataforms: Ensure larger integers are serialized as suchKim Alvefur2021-10-281-1/+3
| | | | | | | Assumes that most number fields are integers, as most numeric types listed in XEP-0122 are, as are all such fields in Prosody as of this. Otherwise %g produces something like 1.1259e+15
* util.dataforms: Turn number values into timestamps for datetime fieldsKim Alvefur2021-10-261-1/+3
| | | | Makes it symmetric with parsing.
* util.dataforms: Coerce number values for boolean fieldsKim Alvefur2021-10-261-2/+5
| | | | | Makes more sense than coercing to a string, which would always be truthy.
* util.dataforms: Add support for datetime field types via XEP-0122Kim Alvefur2021-10-251-0/+8
|
* util.startup: Understand -h, -? as --help in prosodyctl but ignoreKim Alvefur2021-10-251-1/+1
| | | | | prosodyctl -h showing an error was not very helpful, especially since prosodyctl shows its help for any unknown (or none) command.
* util.startup: Show brief usage on `prosody -h|-?|--help`Kim Alvefur2021-10-251-1/+8
| | | | | Seems more suitable than asking if prosodyctl was meant to be used, or going ahead and starting.
* util.startup: Skip config readability check in migrator (thanks eTaurus)Kim Alvefur2021-10-231-1/+1
| | | | | | This field is empty for reasons when invoked by prosody-migrator, which threw an error: > bad argument #1 to 'open' (string expected, got nil)
* mod_pubsub,mod_pep: Implement 'send_last_published_item' option #1436Kim Alvefur2021-10-191-0/+1
| | | | | | | | Default left as 'never' in mod_pubsub to preserve the previous behavior. Unclear if this is desirable, but can always be changed later. In mod_pep this allows turning off the automatic resending of most recent item.
* mod_auth_cyrus: Remove (move to community modules)Kim Alvefur2021-10-171-169/+0
| | | | mod_auth_ldap provides LDAP support without being tied to Cyrus
* util.startup: Only ask if 'prosodyctl' was meant instead of 'prosody' (fix ↵Kim Alvefur2021-10-121-1/+3
| | | | #1692)