aboutsummaryrefslogtreecommitdiffstats
path: root/util
Commit message (Collapse)AuthorAgeFilesLines
* util.startup: Support systemd Type=notify service typeKim Alvefur2024-04-041-0/+34
| | | | | | | | | | | | | This lets Prosody report its lifecycle status to systemd, so it knows when Prosody has completed its startup, when it's reloading and shutting down. Both Type=notify and Type=notify-reload is supported Example systemd .service configuration snippet: [Service] Type=notify
* util.startup: Fix exiting on pidfile troubleKim Alvefur2024-03-271-3/+3
| | | | | | | | | | | prosody.shutdown() relies on prosody.main_thread, which has not been set yet at this point. Doing a clean shutdown might actually be harmful in case it tears down things set up by the conflicting Prosody, such as the very pidfile we were looking at. Thanks again SigmaTel71 for noticing
* Merge 0.12->trunkMatthew Wild2024-03-271-0/+51
|\
| * prosodyctl check: Warn about invalid domain names in the config fileMatthew Wild2024-03-271-0/+51
| | | | | | | | | | This ensures that domain names of virtual hosts and components are valid in XMPP, and that they are encoded correctly.
* | util.startup: Abort before initialization of logging when started as rootKim Alvefur2024-03-241-3/+3
| | | | | | | | | | Prevents creation of log files owned by the root user which could be inaccessible once started correctly.
* | util.startup: Don't use not yet existent shutdown procedure when started as ↵Kim Alvefur2024-03-241-1/+1
| | | | | | | | root (thanks SigmaTel71)
* | util.startup: Check root after detecting platform and reading config (thanks ↵Kim Alvefur2024-03-241-1/+1
| | | | | | | | | | | | | | | | SigmaTel71) Ensures that startup.detect_platform() runs so know whether to use the POSIX method of checking the current user or something else. Also after reading the config so we know whether the root override setting is set.
* | mod_posix: Move everything to util.startupKim Alvefur2024-03-231-9/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows greater control over the order of events. Notably, the internal ordering between daemonization, initialization of libunbound and setup of signal handling is sensitive. libunbound starts a separate thread for processing DNS requests. If this thread is started before signal handling has been set up, it will not inherit the signal handlers and instead behave as it would have before signal handlers were set up, i.e. cause the whole process to immediately exit. libunbound is usually initialized on the first DNS request, usually triggered by an outgoing s2s connection attempt. If daemonization happens before signals have been set up, signals may not be processed at all.
* | util.startup: Back out 598df17b8ebbKim Alvefur2024-03-101-1/+1
| | | | | | | | | | | | | | | | Broke signal handling again, such that an early s2s connection results in libunbound catching signals and getting Prosody killed on e.g. SIGHUP This returns to the situation where prosody --daemonize does not respond to signals.
* | util.startup: Hook signals after daemonizationKim Alvefur2024-03-061-1/+1
| | | | | | | | | | | | signalfds stop working with epoll after forking hooking signals later should not affect anything
* | util.startup: Fix firing of USR1/2 eventsKim Alvefur2024-03-021-2/+2
| |
* | mod_posix: Move POSIX signal handling into util.startup to avoid raceKim Alvefur2024-03-021-0/+43
| | | | | | | | | | | | | | | | | | | | When libunbound is initialized, it spawns a thread to work in. In case a module initializes libunbound, e.g. by triggering a s2s connection, Prosody would not handle signals, instead immediately quit on e.g. the reload (SIGHUP) signal. Likely because the libunbound thread would not have inherited the signal mask from the main Prosody thread. Thanks Menel, riau and franck-x for reporting and help narrowing down
* | util.bit53: Add bnot() methodMatthew Wild2024-03-011-0/+3
| |
* | util.ip: Remove ip.bits and related code, switch to more efficient strbitopMatthew Wild2024-02-231-22/+6
| | | | | | | | 100,000 iterations of match() on my laptop from 3.5s -> 0.5s.
* | util.rfc6724: Remove, unused since introduction of Happy EyeballsKim Alvefur2024-02-221-141/+0
| | | | | | | | | | | | | | | | It was mainly used to determine whether to try IPv6 or IPv4 first, following the rules for this in the RFC. Now we always try IPv6 and IPv4 at roughly the same time, thus there no need to carry these rules.
* | util.startup: Expose core.features.available as prosody.featuresMatthew Wild2024-02-221-0/+2
| | | | | | | | for convenience.
* | util.prosodyctl.shell: Fix lint [luacheck]Kim Alvefur2023-12-091-1/+0
| |
* | util.prosodyctl.shell: Add :method syntax to make e.g. MUC commands easierKim Alvefur2023-12-091-2/+11
| | | | | | | | | | e.g. prosodyctl shell muc room room@muc.example.com :set_name "This Room"
* | util.xtemplate: Adopt {-path-} syntax to strip preceding and/or trailing ↵Kim Alvefur2023-12-091-4/+12
| | | | | | | | | | | | whitespace Seen in some other template languages
* | util.jsonschema: Return basic structured validation responseKim Alvefur2023-12-021-61/+108
| |
* | util.datamanager: Fix missing pack format when reading first index entryKim Alvefur2023-11-301-1/+1
| | | | | | | | Thanks MattJ
* | util.human.io: Don't accept ambiguous durations by defaultMatthew Wild2023-11-301-3/+17
| | | | | | | | | | The new method parse_duration_lax() exports the old behaviour, mainly for compatibility purposes.
* | util.datamanager: Load first item into index earlierKim Alvefur2023-11-271-1/+2
| | | | | | | | Should get rid of fseek() call
* | util.startup: Use prosody. module namespaceKim Alvefur2023-11-241-1/+1
| | | | | | | | Maybe we need some sort of lint for this?
* | util.async: Clip long line [luacheck]Kim Alvefur2023-11-211-1/+2
| |
* | util.async: Expose default runner functionMatthew Wild2023-11-211-0/+2
| | | | | | | | | | | | This is purely for informational purposes, so it's possible to determine externally whether a runner is using the default runner function (which executes functions as work items) or a custom runner function.
* | util.async: Record current work item in the runner objectMatthew Wild2023-11-211-0/+5
| | | | | | | | Mostly expected to be useful for debugging purposes.
* | util.async: Improve debug logging in a few placesMatthew Wild2023-11-211-2/+5
| | | | | | | | Knowing the state of the coroutine as well as the runner state can be helpful.
* | util.async: Export a table of currently-waiting runnersMatthew Wild2023-11-211-0/+5
| | | | | | | | This can be used for debugging and introspection.
* | util.prosodyctl.check: Disable https cert check if http_external_url setKim Alvefur2023-11-131-0/+4
| | | | | | | | | | This would indicate that a reverse proxy is used, which gets to be responsible for that since it probably holds the actual cert.
* | util.prosodyctl.check: Check cert for HTTPS if http module enabledKim Alvefur2023-11-131-3/+13
| |
* | util.prosodyctl.check: Update conditions for s2s cert checksKim Alvefur2023-11-131-3/+3
| | | | | | | | | | | | The 'anonymous_login' setting is deprecated and prosodyctl check config will tell you to change it to 'authentication = "internal_hashed"', so we shouldn't need to care about here anymore.
* | util.prosodyctl.check: Simplify conditions for c2s and s2s cert checksKim Alvefur2023-11-131-3/+3
| | | | | | | | This code is hard to follow and in need of some refactoring.
* | util.uuid: Add UUIDv7Kim Alvefur2021-08-151-0/+17
| | | | | | | | | | | | | | | | | | Allows sorting by id as a substitute for sorting by timestamp since it has the timestamp in the encoded in the first part, and only things that happen extremely close together may get out of order by such a sort, which might not matter. From draft-ietf-uuidrev-rfc4122bis formerly draft-peabody-dispatch-new-uuid-format
* | util.prosodyctl.check: Try to clarify check for misplaced k=v in ↵Kim Alvefur2023-11-111-2/+2
| | | | | | | | modules_enabled (thanks aab and Menel)
* | util.startup: Attempt to bring some order to startup/shutdown with util.fsmMatthew Wild2023-11-071-10/+41
| |
* | util.prosodyctl.check: Print DANE TLSA records for certificatesKim Alvefur2023-11-031-0/+10
| | | | | | | | Not the prosodyctl check dane I wanted to make but a start.
* | util.prosodyctl.check: Wrap each check in a functionKim Alvefur2023-11-031-13/+29
| | | | | | | | | | | | | | One small refactor but one huge step in the right direction Mostly because adding another check would make the line checking for a valid check exceed the column limit.
* | util.datamanager: Clean up list index files on purge (i.e. user deletion)Kim Alvefur2023-11-021-0/+2
| |
* | Merge 0.12->trunkKim Alvefur2023-08-301-1/+1
|\|
| * util.prosodyctl.check: Correct modern replacement for 'disallow_s2s'0.12.4Kim Alvefur2023-08-271-1/+1
| | | | | | | | | | The code would have suggested adding to modules_enabled instead of modules_disabled
| * util.array: Fix new() library functionKim Alvefur2023-07-221-1/+3
| | | | | | | | Backport of ffe4adbd2af9 since new was added in the 0.12 branch
* | util.array: Fix new() library functionKim Alvefur2023-07-221-1/+3
| |
* | util.sql: Remove unused String() and Integer() functionsKim Alvefur2023-07-221-4/+0
| | | | | | | | According to MattJ, leftovers from an earlier vision for util.sql
* | util.sqlite3: Clean up unused variablesKim Alvefur2023-07-221-42/+6
| | | | | | | | | | Many leftovers from the earlier version of util.sql this was based on and cleanup applied there since then.
* | util.datamanager: Always reset index after list shiftKim Alvefur2023-07-221-39/+4
| | | | | | | | | | | | Shifting the index does not work reliably yet, better to rebuild it from scratch. Since there is minimal parsing involved in that, it should be more efficient anyway.
* | util.datamanager: Add way to close indexed list storeKim Alvefur2023-07-211-1/+9
| |
* | util.datamanager: Close file handle when done using itKim Alvefur2023-07-211-0/+1
| | | | | | | | | | It gets closed eventually but at high load they could potentially lead to reaching FD limits faster.
* | util.datamanager: Disable blockwise removalKim Alvefur2023-07-211-1/+4
| | | | | | | | In desperate need of tests
* | 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.