daurnimator [Tue, 29 Apr 2014 21:18:14 +0000 (17:18 -0400)]
plugins/muc/mod_muc: Use module:shared instead of save/restore
daurnimator [Tue, 29 Apr 2014 19:13:06 +0000 (15:13 -0400)]
plugins/muc: Move 'module:get_option_number("max_history_messages")' from mod_muc into history lib; remove from muclib exports
daurnimator [Tue, 29 Apr 2014 18:50:13 +0000 (14:50 -0400)]
plugins/muc/mod_muc: Remove support for `host_session.muc`
daurnimator [Tue, 29 Apr 2014 18:24:50 +0000 (14:24 -0400)]
plugins/muc/mod_muc: Move room persistence to own block
daurnimator [Tue, 29 Apr 2014 16:54:04 +0000 (12:54 -0400)]
plugins/muc: Add room:has_occupant() method
daurnimator [Mon, 28 Apr 2014 20:31:21 +0000 (16:31 -0400)]
plugins/muc/mod_muc: No need to treat the host room specially
daurnimator [Mon, 28 Apr 2014 20:33:54 +0000 (16:33 -0400)]
plugins/muc/mod_muc: Use get_option_string instead of get_option and checking
daurnimator [Mon, 28 Apr 2014 20:30:53 +0000 (16:30 -0400)]
plugins/muc/mod_muc: Move affiliation monkey patch into own scope
daurnimator [Mon, 21 Apr 2014 21:51:32 +0000 (17:51 -0400)]
plugins/muc/muc.lib: Move sending of occupant list to joining user out of hook, and into main flow: It has to occur before publication of their status
daurnimator [Mon, 21 Apr 2014 21:49:57 +0000 (17:49 -0400)]
plugins/muc/members_only.lib: Compare affiliations via rank; wrap some long lines
daurnimator [Mon, 21 Apr 2014 21:39:18 +0000 (17:39 -0400)]
plugins/muc/muc.lib: Remove reversed conditionals when firing pre- events
daurnimator [Fri, 18 Apr 2014 16:20:07 +0000 (12:20 -0400)]
plugins/muc/subject.lib: If subject is not set by an occupant, it should come from room jid itself
daurnimator [Fri, 18 Apr 2014 16:19:33 +0000 (12:19 -0400)]
plugins/muc/muc.lib: When user leaves; set their role to nil
daurnimator [Fri, 18 Apr 2014 16:19:04 +0000 (12:19 -0400)]
plugins/muc: Move 'moderated' code to seperate file; changes default "muc-get-default-role" behaviour
daurnimator [Wed, 16 Apr 2014 18:16:14 +0000 (14:16 -0400)]
plugins/muc: Move 'hidden' ('public') code to own file
daurnimator [Wed, 16 Apr 2014 17:54:51 +0000 (13:54 -0400)]
plugins/muc: Move subject code to seperate module
daurnimator [Tue, 15 Apr 2014 22:20:56 +0000 (18:20 -0400)]
plugins/muc/muc.lib: Refactor subject logic; fix bug of mixed up subject/author
daurnimator [Tue, 15 Apr 2014 21:06:04 +0000 (17:06 -0400)]
plugins/muc: Move persistent room configuration to own module
daurnimator [Fri, 4 Apr 2014 15:20:20 +0000 (11:20 -0400)]
plugins/muc/muc.lib: Move members_only into seperate file
daurnimator [Thu, 3 Apr 2014 22:36:28 +0000 (18:36 -0400)]
plugins/muc/muc.lib: Turn get_default_role into an event
daurnimator [Thu, 3 Apr 2014 22:10:16 +0000 (18:10 -0400)]
plugins/muc/muc.lib: Fix getting a list of occupants by role (it was sending presences instead of items inside an iq)
daurnimator [Thu, 3 Apr 2014 21:09:04 +0000 (17:09 -0400)]
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator [Thu, 3 Apr 2014 20:10:43 +0000 (16:10 -0400)]
plugins/muc/muc.lib: Use util.iterators to count occupants
daurnimator [Thu, 3 Apr 2014 20:04:04 +0000 (16:04 -0400)]
plugins/muc/muc.lib: Move occupancy check to later in `deconstruct_stanza_id`: As vcards are from the bare jid, you need to use the `from_jid` out of the encoded `id`
daurnimator [Thu, 3 Apr 2014 19:14:52 +0000 (15:14 -0400)]
plugins/muc: Move history to an external module
This resulted in the split up of the main muc-occupant-joined event handler into 3 seperate ones, handling occupant list, history and subject
daurnimator [Thu, 3 Apr 2014 18:24:27 +0000 (14:24 -0400)]
plugins/muc: Move `whois` code to seperate file
daurnimator [Thu, 3 Apr 2014 18:23:06 +0000 (14:23 -0400)]
plugins/muc/muc.lib: Remember to coerce nil role to "none"
daurnimator [Thu, 3 Apr 2014 16:44:27 +0000 (12:44 -0400)]
plugins/muc/muc.lib: Refactor of change-nick presence handling
- Allow `nick` to be passed to `publicise_occupant_status`.
- Moves multi-session handling to a more 'edge-case' area of code
daurnimator [Thu, 3 Apr 2014 16:25:03 +0000 (12:25 -0400)]
plugins/muc/muc.lib: Clean up whois handling
- adds functions `can_see_real_jids` and `get_base_presence`
- In `publicise_occupant_status`, we don't generate each type of presence until it's used
daurnimator [Wed, 2 Apr 2014 22:37:52 +0000 (18:37 -0400)]
plugins/muc/occupant.lib: Don't allow an unavailable session to be the primary jid
daurnimator [Wed, 2 Apr 2014 21:02:07 +0000 (17:02 -0400)]
plugins/muc: Move name functions to seperate module
daurnimator [Wed, 2 Apr 2014 20:57:59 +0000 (16:57 -0400)]
plugins/muc: Move password functions to seperate module
daurnimator [Wed, 2 Apr 2014 19:56:37 +0000 (15:56 -0400)]
plugins/muc/lock.lib: Need to let creator into the locked room :)
daurnimator [Wed, 2 Apr 2014 19:48:25 +0000 (15:48 -0400)]
plugins/muc: Move locking to seperate module
daurnimator [Wed, 2 Apr 2014 19:36:08 +0000 (15:36 -0400)]
plugins/muc/mod_muc: Move room locking into hook
daurnimator [Wed, 2 Apr 2014 19:14:52 +0000 (15:14 -0400)]
plugins/muc/muc.lib: Move description functions out to own file
daurnimator [Wed, 2 Apr 2014 15:35:00 +0000 (11:35 -0400)]
plugins/muc/muc.lib: Modify muc-config-submitted to keep a list of status codes instead of fields changed
daurnimator [Tue, 1 Apr 2014 21:45:03 +0000 (17:45 -0400)]
plugins/muc/muc.lib: Refactor out process_form into hooks
daurnimator [Tue, 1 Apr 2014 21:10:01 +0000 (17:10 -0400)]
plugins/muc/muc.lib: Move default config layout into hooks
daurnimator [Tue, 1 Apr 2014 19:41:44 +0000 (15:41 -0400)]
plugins/muc/muc.lib: Split up get_disco_info into events
This was done so we can split off functionality to other files later (e.g. plugins/muc/password)
daurnimator [Mon, 31 Mar 2014 18:46:59 +0000 (14:46 -0400)]
plugins/muc/muc.lib: Add muc-room-locked event
daurnimator [Mon, 31 Mar 2014 18:45:42 +0000 (14:45 -0400)]
plugins/muc/muc.lib: restrict invitations in members only rooms to admins
daurnimator [Mon, 31 Mar 2014 18:44:52 +0000 (14:44 -0400)]
plugins/muc/muc.lib: Don't try and get occupant jids for annotating invite affiliation changes
daurnimator [Mon, 31 Mar 2014 18:06:35 +0000 (14:06 -0400)]
plugins/muc/muc.lib: Update declines to be more like invites
daurnimator [Mon, 31 Mar 2014 17:54:27 +0000 (13:54 -0400)]
plugins/muc/muc.lib: Add pre-invite event. Move role check to it
daurnimator [Mon, 31 Mar 2014 16:31:15 +0000 (12:31 -0400)]
plugins/muc/muc.lib: Tidy up muc-invite event.
- Send inside of the actual handle_invite function
- Move password, compat and body tagging into event handlers
daurnimator [Mon, 31 Mar 2014 16:21:43 +0000 (12:21 -0400)]
plugins/muc/muc.lib: Remove top level pre-join event. Assign event priorities for other handlers
daurnimator [Sat, 29 Mar 2014 00:28:20 +0000 (20:28 -0400)]
plugins/muc/muc.lib: Use occupant methods where possible
daurnimator [Sat, 29 Mar 2014 00:25:10 +0000 (20:25 -0400)]
plugins/muc/muc.lib: Subjects get sent even if empty.
daurnimator [Fri, 28 Mar 2014 22:47:35 +0000 (18:47 -0400)]
plugins/muc/muc.lib: Fix typo (moderators vs moderator)
daurnimator [Fri, 28 Mar 2014 22:33:57 +0000 (18:33 -0400)]
plugins/muc/muc.lib: nick change unavailables should be from original occupant jid
daurnimator [Fri, 28 Mar 2014 22:33:38 +0000 (18:33 -0400)]
plugins/muc/muc.lib: Status codes should be inside of x element
daurnimator [Fri, 28 Mar 2014 21:58:25 +0000 (17:58 -0400)]
plugins/muc/muc.lib: Improve set affiliation logic;
- Each affiliation and role is now ranked
- Changes up in affiliation will not downgrade your role
- Now sends a new set of presences if you gained moderator in a semi-anonymous room.
- Better input validation; matches closer with ':set_role'
- Don't short circuit; as if user has non-default role they will not get updated
daurnimator [Fri, 28 Mar 2014 18:15:18 +0000 (14:15 -0400)]
plugins/muc/muc.lib: Smarter validation in set_affiliation
daurnimator [Fri, 28 Mar 2014 17:34:46 +0000 (13:34 -0400)]
plugins/muc/muc.lib: Fix anonymous check in `send_occupant_list`
daurnimator [Fri, 28 Mar 2014 17:14:33 +0000 (13:14 -0400)]
plugins/muc/muc.lib: Allow `:send_occupant_list` to have no filter
daurnimator [Fri, 28 Mar 2014 17:11:11 +0000 (13:11 -0400)]
plugins/muc/muc.lib: Fix sending occupant jid instead of real jid in <item/> actor
daurnimator [Fri, 28 Mar 2014 17:05:36 +0000 (13:05 -0400)]
plugins/muc/muc.lib: Clean up :set_role. Removes :can_set_role
daurnimator [Fri, 28 Mar 2014 15:05:52 +0000 (11:05 -0400)]
plugins/muc/muc.lib: Remove callback parameter from set_role and set_affiliation
daurnimator [Thu, 27 Mar 2014 23:18:57 +0000 (19:18 -0400)]
plugins/muc/muc.lib: non-function changes (reordering, semicolons and comments)
daurnimator [Thu, 27 Mar 2014 23:16:13 +0000 (19:16 -0400)]
plugins/muc: Massive refactor
We now have occupant objects; you grab them, modify them, save them.
New presence handling code.
Modify all presence sending to go via new functions.
daurnimator [Thu, 27 Mar 2014 23:16:46 +0000 (19:16 -0400)]
plugins/muc/muc.lib: If decline is to person in room; route to all sessions
daurnimator [Thu, 27 Mar 2014 22:10:34 +0000 (18:10 -0400)]
plugins/muc/muc.lib: Have timestamp as seconds since epoch inside of history
daurnimator [Thu, 27 Mar 2014 22:09:42 +0000 (18:09 -0400)]
plugins/muc: Rename admin query hook
daurnimator [Mon, 24 Mar 2014 20:32:18 +0000 (16:32 -0400)]
plugins/muc/muc.lib: Add :broadcast method; use it from :broadcast_except_nick and :broadcast_message
daurnimator [Mon, 24 Mar 2014 17:36:43 +0000 (13:36 -0400)]
plugins/muc/muc.lib: Extra utility functions around subjects
daurnimator [Mon, 24 Mar 2014 17:34:06 +0000 (13:34 -0400)]
plugins/muc/muc.lib: Add muc-get-history event; it uses an iterator in the event object so that messages don't need to be all in memory at once
daurnimator [Mon, 24 Mar 2014 17:10:54 +0000 (13:10 -0400)]
plugins/muc/muc.lib: Add muc-broadcast-message event. Use it for saving to history
daurnimator [Mon, 24 Mar 2014 16:44:31 +0000 (12:44 -0400)]
plugins/muc/muc.lib: Better password check
daurnimator [Mon, 24 Mar 2014 14:25:43 +0000 (10:25 -0400)]
plugins/muc/muc.lib: Add muc-occupant-prejoin events; Use it for banned, members-only, password, nick-conflict and lock checks
This reorders some of the checks.
Importantly; affiliations are checked first: this means banned users cannot try and guess passwords
daurnimator [Fri, 21 Mar 2014 18:01:02 +0000 (14:01 -0400)]
plugins/muc/muc.lib: Move password check and nick conflict check into `handle_join`
daurnimator [Thu, 20 Mar 2014 20:19:13 +0000 (16:19 -0400)]
plugins/muc/muc.lib: Additional `route_to_occupant` usage
daurnimator [Thu, 20 Mar 2014 20:14:22 +0000 (16:14 -0400)]
plugins/muc/muc.lib: Remove duplicate variable; it can never be nil.
daurnimator [Thu, 20 Mar 2014 19:50:29 +0000 (15:50 -0400)]
plugins/muc/muc.lib: Add decline event for parity with invite
daurnimator [Thu, 20 Mar 2014 19:22:02 +0000 (15:22 -0400)]
plugins/muc/muc.lib: Add route_to_occupant function to send a stanza to all occupant sessions
daurnimator [Thu, 20 Mar 2014 15:06:10 +0000 (11:06 -0400)]
plugins/muc: Have utility methods for locking the room
daurnimator [Wed, 19 Mar 2014 21:50:49 +0000 (17:50 -0400)]
plugins/muc/muc.lib: Use occupant jids when whois == "moderators"
daurnimator [Wed, 19 Mar 2014 21:50:00 +0000 (17:50 -0400)]
plugins/muc/muc.lib: Allow users with affiliations to invite while not in room themselves
daurnimator [Wed, 19 Mar 2014 21:46:25 +0000 (17:46 -0400)]
plugins/muc/muc.lib: Use `get_role` in `handle_admin_item_get_command`. Removed a TODO that's already done
daurnimator [Wed, 19 Mar 2014 21:33:32 +0000 (17:33 -0400)]
plugins/muc/muc.lib: Send invite out from event: removes '-prepared' from event name
daurnimator [Wed, 19 Mar 2014 21:30:21 +0000 (17:30 -0400)]
plugins/muc/muc.lib: Check role instead of current_nick
daurnimator [Wed, 19 Mar 2014 20:28:11 +0000 (16:28 -0400)]
plugins/muc/muc.lib: Remove `payload` argument from `handle_mediated_*`; extract it from inside.
daurnimator [Wed, 19 Mar 2014 20:24:17 +0000 (16:24 -0400)]
plugins/muc/muc.lib: Fix wrong variable in `construct_stanza_id` block
daurnimator [Wed, 19 Mar 2014 20:19:31 +0000 (16:19 -0400)]
plugins/muc/muc.lib: Add muc-invite-prepared event; Use it for granting affiliations in members only rooms
daurnimator [Wed, 19 Mar 2014 19:01:18 +0000 (15:01 -0400)]
plugins/muc/muc.lib: Don't get same variable twice.....
daurnimator [Wed, 19 Mar 2014 19:00:53 +0000 (15:00 -0400)]
plugins/muc/muc.lib: Use `get_occupant_jid` method instead of indexing _jid_nick
daurnimator [Wed, 19 Mar 2014 18:39:31 +0000 (14:39 -0400)]
plugins/muc/muc.lib: Fetch config via accessors instead of using `_data`
daurnimator [Wed, 19 Mar 2014 18:35:17 +0000 (14:35 -0400)]
plugins/muc/muc.lib: In `_route_stanza` access occupant data less often
daurnimator [Wed, 19 Mar 2014 18:06:04 +0000 (14:06 -0400)]
plugins/muc/muc.lib: Tidy up `get_filtered_presence`
daurnimator [Wed, 19 Mar 2014 17:59:59 +0000 (13:59 -0400)]
plugins/muc/muc.lib: Tidy up is_kickable_error: it didn't need to return the condition.
Also removes `get_error_condition`; it was a one liner used in one place
daurnimator [Wed, 19 Mar 2014 17:57:02 +0000 (13:57 -0400)]
plugins/muc/muc.lib: Use module.host where `muc_domain` was previously
daurnimator [Wed, 19 Mar 2014 17:56:14 +0000 (13:56 -0400)]
plugins/muc/muc.lib: Remove unused methods (breaks api)
daurnimator [Wed, 19 Mar 2014 16:19:44 +0000 (12:19 -0400)]
plugins/muc/muc.lib: Use more modern stanza methods
daurnimator [Wed, 19 Mar 2014 16:03:15 +0000 (12:03 -0400)]
plugins/muc: Provide a reasonable default `route_stanza`
daurnimator [Tue, 18 Mar 2014 22:56:26 +0000 (18:56 -0400)]
plugins/muc/mod_muc: host sessions have a .send these days
daurnimator [Tue, 18 Mar 2014 22:55:52 +0000 (18:55 -0400)]
plugins/muc/mod_muc: Refactor to use new methods available
daurnimator [Tue, 18 Mar 2014 22:52:28 +0000 (18:52 -0400)]
plugins/muc/muc: Add 'muc-occupant-left' event
daurnimator [Tue, 18 Mar 2014 20:01:53 +0000 (16:01 -0400)]
plugins/muc/muc: Only call get_password once in invite creation
daurnimator [Tue, 18 Mar 2014 19:42:48 +0000 (15:42 -0400)]
plugins/muc/muc: When there's no history; return an empty iterator
daurnimator [Tue, 18 Mar 2014 19:15:28 +0000 (15:15 -0400)]
plugins/muc/muc: Support mediated declines