aboutsummaryrefslogtreecommitdiffstats
path: root/core/sessionmanager.lua
Commit message (Collapse)AuthorAgeFilesLines
* core.sessionmanager: Delay closing a replaced connection after replacementKim Alvefur2023-05-071-2/+1
| | | | | | | | | | Closing the session invokes ondisconnect and session close logic, including mod_smacks hibernation and the timer that destroys the session after a timeout. By closing the connection after it has been detached from the sessions table it will no longer invoke the ondetach handler, which should prevent the above problem.
* sessionmanager: Preserve 'since' property of original session after resumptionMatthew Wild2023-03-291-0/+1
|
* core: Prefix module imports with prosody namespaceKim Alvefur2023-03-171-9/+9
|
* Merge 0.12->trunkMatthew Wild2023-02-091-4/+11
|\
| * sessionmanager: Improve logging around session destructionMatthew Wild2023-02-091-3/+10
| |
| * core.sessionmanager: Mark session as destroyed to prevent reentryKim Alvefur2023-01-191-0/+1
| | | | | | | | | | If it reaches this point, then the session will be most definitely be destroyed, so try to prevent destroy_session() from being called again.
| * core.sessionmanager: Skip log when (not) destroying destroyed sessionsKim Alvefur2023-01-191-2/+1
| | | | | | | | | | | | | | | | | | On regular disconnects, </stream> is sent, then sessionmanager.destroy_session() is called, then sessionmanager.destroy_session() is called again when the TCP connection is closed, from ondisconnect in mod_c2s. It is a bit annoying and doesn't really tell you much.
* | sessionmanager: Fire event before retiring old sessionMatthew Wild2022-12-291-3/+4
| | | | | | | | | | This allows for modules to update fields, which is generally better than maintaining this hard-coded list of transferable properties here.
* | sessionmanager: Pluck sasl_handler from old session when resuming (fixes #1785)Matthew Wild2022-12-291-0/+1
| |
* | mod_smacks: Long overdue cleanup of resumption code, fixes some old TODOsMatthew Wild2022-08-261-1/+45
| |
* | mod_authz_internal, and more: New iteration of role APIMatthew Wild2022-08-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | These changes to the API (hopefully the last) introduce a cleaner separation between the user's primary (default) role, and their secondary (optional) roles. To keep the code sane and reduce complexity, a data migration is needed for people using stored roles in 0.12. This can be performed with prosodyctl mod_authz_internal migrate <host>
* | mod_authz_internal: Use util.roles, some API changes and config supportMatthew Wild2022-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit was too awkward to split (hg record didn't like it), so: - Switch to the new util.roles lib to provide a consistent representation of a role object. - Change API method from get_role_info() to get_role_by_name() (touches sessionmanager and usermanager) - Change get_roles() to get_user_roles(), take a username instead of a JID This is more consistent with all other usermanager API methods. - Support configuration of custom roles and permissions via the config file (to be documented).
* | Switch to a new role-based authorization framework, removing is_admin()Matthew Wild2022-06-151-3/+12
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We began moving away from simple "is this user an admin?" permission checks before 0.12, with the introduction of mod_authz_internal and the ability to dynamically change the roles of individual users. The approach in 0.12 still had various limitations however, and apart from the introduction of roles other than "admin" and the ability to pull that info from storage, not much actually changed. This new framework shakes things up a lot, though aims to maintain the same functionality and behaviour on the surface for a default Prosody configuration. That is, if you don't take advantage of any of the new features, you shouldn't notice any change. The biggest change visible to developers is that usermanager.is_admin() (and the auth provider is_admin() method) have been removed. Gone. Completely. Permission checks should now be performed using a new module API method: module:may(action_name, context) This method accepts an action name, followed by either a JID (string) or (preferably) a table containing 'origin'/'session' and 'stanza' fields (e.g. the standard object passed to most events). It will return true if the action should be permitted, or false/nil otherwise. Modules should no longer perform permission checks based on the role name. E.g. a lot of code previously checked if the user's role was prosody:admin before permitting some action. Since many roles might now exist with similar permissions, and the permissions of prosody:admin may be redefined dynamically, it is no longer suitable to use this method for permission checks. Use module:may(). If you start an action name with ':' (recommended) then the current module's name will automatically be used as a prefix. To define a new permission, use the new module API: module:default_permission(role_name, action_name) module:default_permissions(role_name, { action_name[, action_name...] }) This grants the specified role permission to execute the named action(s) by default. This may be overridden via other mechanisms external to your module. The built-in roles that developers should use are: - prosody:user (normal user) - prosody:admin (host admin) - prosody:operator (global admin) The new prosody:operator role is intended for server-wide actions (such as shutting down Prosody). Finally, all usage of is_admin() in modules has been fixed by this commit. Some of these changes were trickier than others, but no change is expected to break existing deployments. EXCEPT: mod_auth_ldap no longer supports the ldap_admin_filter option. It's very possible nobody is using this, but if someone is then we can later update it to pull roles from LDAP somehow.
* core.sessionmanager: Add a dummy rawsend() method to resting sessionsKim Alvefur2021-04-151-0/+1
| | | | | | | Should fix a traceback on attempted use after destruction, in case where opportunistic_writes was in use. Thanks Ge0rG
* sessionmanager: Support passing an auth scope to make_authenticatedMatthew Wild2020-02-051-1/+2
|
* core.sessionmanager: Require that client-requested resources pass strict ↵Kim Alvefur2019-11-021-1/+1
| | | | resourceprep
* core.sessionmanager: Fix traceback from passing nil to resourceprepKim Alvefur2019-11-021-1/+1
|
* core.sessionmanager: Remove tostring call from loggingKim Alvefur2019-07-301-3/+3
| | | | Taken care of by loggingmanager now
* core/sessionmanager: Remove unnecessary fallback in make_authenticatedMaxime “pep” Buquet2019-06-011-1/+1
|
* core.sessionmanager: Use util.session to create sessionsKim Alvefur2019-03-291-1/+7
|
* sessionmanager: Split byte-level sending into separate session.rawsendKim Alvefur2019-03-241-8/+14
|
* sessionmanager, mod_s2s: Bring debug line for outgoing stanzas in line with ↵Kim Alvefur2018-07-241-1/+1
| | | | that for incoming
* sessionmanager: Log top tag of outgoing stanzas on c2s (#776)Kim Alvefur2018-07-221-0/+1
|
* sessionmanager: Generate shorter random resouresKim Alvefur2018-05-291-3/+3
|
* core: Use prosody.hosts instead of _G.hosts for consistencyKim Alvefur2018-03-291-1/+1
|
* vairious: Add annotation when an empty environment is set [luacheck]Kim Alvefur2018-02-281-0/+1
|
* Merge 0.10 -> trunkMatthew Wild2017-07-281-0/+4
|\
| * sessionmanager: Revert session.type if binding fails due to roster load errorMatthew Wild2017-07-281-0/+4
| |
* | Merge 0.10->trunkKim Alvefur2017-03-061-1/+5
|\|
| * core: Allow select core modules to mutate some globals (needs luacheck 1.19)Kim Alvefur2017-03-041-0/+1
| |
| * core: Split some very long lines [luacheck]Kim Alvefur2017-03-041-1/+4
| |
* | Merge 0.10->trunkKim Alvefur2016-12-141-1/+4
|\|
| * core.sessionmanager, mod_saslauth: Introduce intermediate session type for ↵Kim Alvefur2016-12-131-1/+4
| | | | | | | | authenticated but unbound sessions so that resource binding is not treated as a normal stanza
| * mod_c2s: Remove use of util.asyncKim Alvefur2016-03-171-1/+0
|/
* sessionmanager: Demote write error to debug messageKim Alvefur2015-11-051-1/+1
|
* sessionmanager: Clarify log message when failing to write data to connectionKim Alvefur2015-11-041-3/+2
|
* sessionmanager: Make session.send() return true unless there really is an errorKim Alvefur2015-09-211-1/+7
|
* core.*: Remove use of module() functionKim Alvefur2015-02-211-9/+17
|
* sessionmanager: Rename argument to avoid name clash with local variable ↵Matthew Wild2015-05-061-2/+2
| | | | [luacheck]
* sessionmanager: Rename unused loop variables to '_' [luacheck]Matthew Wild2015-05-061-2/+2
|
* portmanager, s2smanager, sessionmanager, stanza_router, storagemanager, ↵Matthew Wild2015-05-061-2/+2
| | | | usermanager, util.xml: Add luacheck annotations
* sessionmanager: Rename parameter to avoid varible name conflictMatthew Wild2015-04-031-2/+2
|
* Merge 0.9->0.10 (third time lucky)Matthew Wild2015-03-271-1/+1
|\
| * sessionmanager: Return 'not-allowed' error instead of the non-existent ↵Matthew Wild2015-03-241-1/+1
| | | | | | | | 'already-bound' error when client tries to bind a resource twice on the same stream (thanks Flow) fixes issue #484.
* | sessionmanager: Add pre-resource-bind event that would let plugins have a ↵Kim Alvefur2015-01-301-0/+10
| | | | | | | | say in resource binding
* | sessionmanager: Access bare_session and full_sessions through 'prosody'Matthew Wild2015-01-201-2/+2
| |
* | core.sessionmanager: Set a fake thread on destroyed sessions, fixes ↵Kim Alvefur2014-09-111-0/+1
| | | | | | | | traceback if stanzas are emitted after a session is destroyed (thanks Sven Blumenstein)
* | Remove all trailing whitespaceFlorian Zeitz2013-08-091-12/+12
|/
* sessionmanager, s2smanager: Remove unused importsMatthew Wild2013-04-111-3/+0
|
* sessionmanager, s2smanager: Remove open_session tracingMatthew Wild2013-04-081-10/+1
|