aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mod_pubsub: Limit node listing based on new ACL-aware metadata methodKim Alvefur3 days1-1/+4
| | | | | | | Ensures that nodes that one does not have metadata access to are hidden from view. This follows from the new ACL-aware method added in 3b357ab6b6eb.
* prosodyctl: deluser: Use user:delete() shell command for implementationMatthew Wild3 days1-27/+2
|
* prosodyctl: passwd: Use user:password() shell command for implementationMatthew Wild3 days1-31/+2
|
* mod_admin_shell: user:password(): Support prompting for password if none givenMatthew Wild3 days1-6/+9
|
* mod_admin_shell: user:create(): Reject promise with error message on failureMatthew Wild3 days1-1/+1
|
* mod_admin_shell: Mark event as handled when requested input is submittedMatthew Wild3 days1-0/+1
|
* prosodyctl: adduser: use shell user:create() to provide the implementationMatthew Wild3 days1-31/+2
| | | | | | | | | This allows user creation to happen inside the running Prosody process, which improves a number of things - such as executing event handlers for user creation, fixing issues and race conditions with some storage drivers, etc. The intent is to do the same for the other prosodyctl commands, but this is the first proof of concept for the approach.
* mod_admin_shell: user:create(): request password via prompt if none givenMatthew Wild3 days1-6/+7
|
* mod_admin_shell: Add session method to request (password) input from shell ↵Matthew Wild3 days1-0/+46
| | | | client
* mod_admin_socket: Fire event on admin client disconnectMatthew Wild3 days1-1/+6
|
* mod_admin_shell: Don't pause async thread while waiting for promise resultMatthew Wild3 days1-14/+22
| | | | | | | | | | | This allows us to continue sending/receiving on the session, for example if the promise will be resolved by other data that the client is going to send. Specifically, this allows the repl-request-input to work without a deadlock. It does open the door to interleaved commands/results, which may not be a good thing overall, but can be restricted separately if necessary (e.g. a flag on the session).
* util.prosodyctl.shell: Support for requesting special inputs, e.g. passwordsMatthew Wild3 days1-0/+17
| | | | | This lets the server signal to the client that a special input is requested. Currently we support the "password" type only.
* util.adminstream: Expose session events (specifically "disconnected")Matthew Wild3 days1-8/+10
| | | | Currently there is no way to get this info and perform cleanup tasks.
* mod_cron: Don't run tasks if loaded inside prosodyctlMatthew Wild3 days1-0/+4
| | | | | It's common for modules to depend on mod_cron, and this can lead to it loading inside prosodyctl, where we don't really want to run any cron tasks.
* mod_authz_internal: Make 'prosody:guest' default role for all unknown JIDsMatthew Wild3 days1-2/+2
| | | | | | | | | | | | | | | This fixes an issue where e.g. remote users or even other users on the server were unable to list MUC rooms. We want to define a permission to list MUC rooms, but we want it to be available to everyone by default (the traditional behaviour). prosody:guest is the lowest role we have. I ran a quick check and it isn't really used for anything right now that would be concerning. It was originally designed for anonymous logins. I think it's safe to treat remote JIDs as equivalent, since we have no trust relationship with anonymous users either.
* mod_pep: Support for node/item management commandsMatthew Wild3 days1-0/+3
|
* mod_pubsub: Expand shell commands to include node/item managementMatthew Wild3 days2-38/+256
|
* mod_roster: Add basic roster management shell commandsMatthew Wild3 days1-4/+170
|
* mod_flags: New module to view and manage flags on user accounts via shell/APIMatthew Wild7 days2-0/+159
| | | | | This will be useful for server operators to easily identify flagged accounts, etc.
* mod_admin_shell: stats:show(): Friendlier error message when statistics disabledMatthew Wild13 days1-1/+4
|
* Merge 0.12->trunkMatthew Wild2024-12-201-4/+14
|\
| * util.prosodyctl.check: Improve error handling of UDP socket setup (for #1803)origin/0.120.12Matthew Wild2024-12-201-4/+14
| | | | | | | | Not necessarily a fix, but may give us more information about failure cases.
* | mod_saslauth: Use fully qualified import here tooKim Alvefur2024-11-241-3/+3
| | | | | | | | | | | | | | Looks like I forgot to update these when merging the channel binding changes after the great renamening. Ref #1223
* | MUC: Use fully qualified importKim Alvefur2024-11-231-1/+1
| | | | | | | | | | | | Seems to be hard to break old habits? Ref #1223
* | muc: Update link to XEP-0421 (instead of inbox)Kim Alvefur2024-11-231-1/+1
| |
* | mod_smacks: Run session destruction code in session's async contextMatthew Wild2024-11-211-7/+11
| | | | | | | | | | This is the Right Thing and should fix various potential issues and race conditions.
* | mod_c2s, mod_s2s: Support for queuing callbacks to run in session threadMatthew Wild2024-11-212-23/+32
| | | | | | | | | | | | | | | | | | This allows certain session-specific code that needs to run in the async context, but is itself triggered outside of that context (e.g. timers), to be queued. An example of this is the session destruction code of mod_smacks, when the hibernation timeout is reached.
* | util.pposix: Add fdopen() to return a Lua file object from an fdMatthew Wild2024-11-201-0/+32
| | | | | | | | Now we can, for example, read/write pipes using Lua's standard I/O routines.
* | mod_smacks: Fix previous commit for case of no session foundKim Alvefur2024-11-191-1/+1
| |
* | mod_smacks: Prevent traceback on attempting to resume destroyed sessionKim Alvefur2024-11-191-0/+5
| | | | | | | | | | This shouldn't be possible, but seems to happen anyway after net.server somehow calling the close handler twice, which also should not happen.
* | net.server_epoll: Don't try to flush buffer on closed connectionsKim Alvefur2024-11-191-1/+2
| | | | | | | | | | | | | | | | | | Attempt to fix a bug where connections are somehow closed twice, leading to bad things happening elsewhere. With LuaSec, closed connections are generally already too closed to write anything to anyway since it does not support unidirectional shutdown.
* | net.server_epoll: Revert opportunistic_writes tweakKim Alvefur2024-11-191-3/+0
| | | | | | | | Added in f0b2c026e542 and not sure why
* | util.stanza: Handle Clark notation for attributes in :find()Kim Alvefur2024-11-172-0/+4
| |
* | util.stanza: Handle namespace prefixes for attributes in :find()Kim Alvefur2024-11-173-3/+10
| | | | | | | | | | | | More correct handling of namespaces here. This works with both prefixes from the parser and hacky .attr["foo:bar"]
* | util.datamanager: fix duplicated word in log messageJonas Schäfer2024-11-161-1/+1
| |
* | mod_roster: do not store number in attributeJonas Schäfer2024-11-161-1/+1
| | | | | | | | | | | | | | | | | | Attributes are strings. That definitely is a number. So we tostring() it. This is important when the API becomes stricter, for whatever reason that might happen. Practically, this moves the overhead of converting to a string to a place where it is visible.
* | core.loggingmanager: Bump expected util.pposix versionKim Alvefur2024-11-161-1/+1
| | | | | | | | Otherwise no syslog or console detection
* | util.startup: Bump expected util.pposix versionKim Alvefur2024-11-161-1/+1
| | | | | | | | Otherwise Prosody refuses to start.
* | util.pposix: Add pipe() (with support for pipe2() flags on Linux)Matthew Wild2024-11-161-1/+43
| |
* | mod_admin_shell: Report when a module is already loadedKim Alvefur2024-11-151-0/+6
| | | | | | | | Hopefully less confusing than "Module loaded onto 0 hosts"
* | mod_admin_shell: Refactor end of module:loadKim Alvefur2024-11-151-1/+4
| | | | | | | | Meant to improve clarity and make improving easier
* | Merge 0.12->trunkMatthew Wild2024-11-151-6/+4
|\|
| * MUC: optimizations for broadcast of visitor presence (thanks Jitsi team)Matthew Wild2024-11-151-6/+4
| | | | | | | | | | This avoids doing performing unnecessary work in the case of visitors joining a MUC, no functionality changes are intended.
* | util.queue: tests: Add test for :replace() methodMatthew Wild2024-11-121-0/+19
| |
* | mod_s2s: Really fix logging of outgoing stanza queue countsKim Alvefur2024-11-111-2/+2
| | | | | | | | | | Some confusion happened in 42b98ee73ca8, possibly because .count() returns the items?
* | mod_s2s: Clone queued outgoing stanzas to prevent changesKim Alvefur2024-11-101-1/+1
| | | | | | | | | | | | | | This clone call was lost in 902d25cd0557 Affects e.g. presence broadcasts, where the same stanza is sent many times while mutating the 'to' attribute.
* | mod_s2s: Fix counting items in outgoing stanza queue (in logs)Kim Alvefur2024-11-101-2/+2
| |
* | mod_s2s: Limit size of outgoing stanza queueKim Alvefur2024-11-091-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This queue is used to buffer stanzas while waiting for an outgoing s2s connection to be established. Limit it to prevent excessive memory usage. Default chosen to approximate how many average stanzas fits in the server_epoll default max_send_buffer_size of 32 MiB Returns a custom error instead of the default core.stanza_router "Communication with remote domains is not enabled" from is sent back, which does not describe what is happening here. Closes #1106
* | net.server_epoll: Make running out of buffer space a fatal errorKim Alvefur2024-11-091-0/+6
| | | | | | | | | | | | | | Prevent Bad Things from happening when the buffer gets full. This of course opens up the possibility of intentionally killing connections by sending much stuff, which need to be mitigated with rate limits elsewhere.
* | net.server_epoll: Improve efficiency of sending much buffered dataKim Alvefur2024-11-091-34/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: The string slice operations when a lot of data gets buffered ends up being expensive and memory-consuming. We have util.dbuffer for precisely this kind of thing. I want to keep the behavior of writebuffer being upgraded from nil to a string to full buffer since the last step involves three table allocations, where the previous buffer method only used one. Avoiding those allocations for simple writes like white space keep alive feels like it would keep memory churn down. This work was started in 2020