Commit graph libervia-backend/src/plugins/plugin_xep_0045.py
Author SHA1 Message Date
Goffi
749bd76f62 plugin XEP-0045: fix after client refactoring 2017-02-12 21:17:56 +01:00
Goffi
3bc851abf2 core (memory/disco): getInfos now handle node + use client instead of profile in many methods 2017-02-12 20:43:20 +01:00
Goffi
ac7d587c49 core (plugins): added missing contants + use of new constants in PLUGIN_INFO 2017-02-12 18:59:10 +01:00
Goffi
97337202cb core, jp: component handling + client handling refactoring:
- SàT can now handle components
    - plugin have now a "modes" key in PLUGIN_INFO where they declare if they can be used with clients and or components. They default to be client only.
    - components are really similar to clients, but with some changes in behaviour:
        * component has "entry point", which is a special plugin with a componentStart method, which is called just after component is connected
        * trigger end with a different suffixes (e.g. profileConnected vs profileConnectedComponent), so a plugin which manage both clients and components can have different workflow
        * for clients, only triggers of plugins handling client mode are launched
        * for components, only triggers of plugins needed in dependencies are launched. They all must handle component mode.
        * component have a sendHistory attribute (False by default) which can be set to True to allow saving sent messages into history
        * for convenience, "client" is still used in method even if it can now be a component
        * a new "component" boolean attribute tells if we have a component or a client
        * components have to add themselve Message protocol
        * roster and presence protocols are not added for components
        * component default port is 5347 (which is Prosody's default port)
    - asyncCreateProfile has been renamed for profileCreate, both to follow new naming convention and to prepare the transition to fully asynchronous bridge
    - createProfile has a new "component" attribute. When used to create a component, it must be set to a component entry point
    - jp: added --component argument to profile/create
    - disconnect bridge method is now asynchronous, this way frontends can know when disconnection is finished
    - new PI_* constants for PLUGIN_INFO values (not used everywhere yet)
    - client/component connection workflow has been moved to their classes instead of being a host methods
    - host.messageSend is now client.sendMessage, and former client.sendMessage is now client.sendMessageData.
    - identities are now handled in client.identities list, so it can be updated dynamically by plugins (in the future, frontends should be able to update them too through bridge)
    - profileConnecting* profileConnected* profileDisconnected* and getHandler now all use client instead of profile
2017-02-12 17:55:43 +01:00
Goffi
42167b6ae9 plugin XEP-0045, quick frontend (app,chat): various chat improvments:
- (XEP-0045): join defered is now fired when room is full joined and history is available
    - (XEP-0045): mucJOIN signature has changed, it now returns the same arguments as mucRoomJoined and a boolean which is True if the room was alread joined
    - quick frontend (app, chat): adapted code to new changes
2016-09-09 23:54:33 +02:00
Goffi
d80d9ae0d4 plugin XEP-0045: minor docstring fix 2016-09-09 23:54:32 +02:00
Goffi
0de4df1051 plugin XEP-0045, XEP-0054, XEP-0096: deprecated bridge method are not used anymore 2016-08-28 18:20:55 +02:00
Goffi
ae50946479 plugin XEP-0045: fixed options parameter handling in bridge callback 2016-08-08 00:50:01 +02:00
Goffi
b148722b4d plugin XEP-0045: added bridge method to change subject 2016-07-24 18:59:02 +02:00
Goffi
79f1179723 plugin XEP-0045: fixed typo in text commands 2016-07-02 20:55:31 +02:00
Goffi
286ee2a5e2 plugin XEP-0045: added /list text command:
/list display a basic (for now) listing of available rooms in current or specified MUC service
2016-07-01 00:00:36 +02:00
Goffi
3b49db2892 plugin XEP-0045: various fixes/improvments:
- use self.txt_cmds instead of self.host.plugins["XEP-0045"]
    - nick and options in join have now default values
    - directly raise ConflictError when room is already joined instead of using defer.fail
    - removed self.host.getClient where it's now useless because client is used instead of profile
2016-07-01 00:00:23 +02:00
Goffi
71a2fe4599 plugin xep-0045: ask for password when getting a "not-allowed" error 2016-07-01 00:00:09 +02:00
Goffi
a0fb3b451f xep-0045: ignore non standard presence received between own presence and room subject 2016-06-29 13:46:14 +02:00
Goffi
8b425a2e44 plugin XEP-0045: fixed calls to join, nick, kick, ban and affiliate 2016-06-28 18:26:21 +02:00
Goffi
04515e5013 plugin XEP-0045, quick_frontend + primitivus (chat): cleaning of XEP-0045 (first pass):
- bridge methods/signals now all start with "muc" to follow new convention
    - internal method use client instead of profile to follow new convention
    - removed excetpions from plugin XEP-0045 in favor of core.exceptions, NotReady added
    - cleaned/simplified several part of the code. checkClient removed as it is not needed anymore
    - self.clients map removed, muc data are now stored directly in client
    - getRoomEntityNick and getRoomNicksOfUsers are removed as they don't look sane.
        /!\ This break all room game plugins for the moment
    - use of uuid4 instead of uuid1 for getUniqueName, as host ID and current time are used for uuid1
2016-06-27 21:45:11 +02:00
Goffi
a7de473107 backend, frontends: message refactoring (huge commit):
/!\ several features are temporarily disabled, like notifications in frontends

next step in refactoring, with the following changes:
    - jp: updated jp message to follow changes in backend/bridge
    - jp: added --lang, --subject, --subject_lang, and --type options to jp message + fixed unicode handling for jid
    - quick_frontend (QuickApp, QuickChat):
        - follow backend changes
        - refactored chat, message are now handled in OrderedDict and uid are kept so they can be updated
        - Message and Occupant classes handle metadata, so frontend just have to display them
    - Primitivus (Chat):
        - follow backend/QuickFrontend changes
        - info & standard messages are handled in the same MessageWidget class
        - improved/simplified handling of messages, removed update() method
        - user joined/left messages are merged when next to each other
        - a separator is shown when message is received while widget is out of focus, so user can quickly see the new messages
        - affiliation/role are shown (in a basic way for now) in occupants panel
        - removed "/me" messages handling, as it will be done by a backend plugin
        - message language is displayed when available (only one language per message for now)
        - fixed :history and :search commands
    - core (constants): new constants for messages type, XML namespace, entity type
    - core: *Message methods renamed to follow new code sytle (e.g. sendMessageToBridge => messageSendToBridge)
    - core (messages handling): fixed handling of language
    - core (messages handling): mes_data['from'] and ['to'] are now jid.JID
    - core (core.xmpp): reorganised message methods, added getNick() method to client.roster
    - plugin text commands: fixed plugin and adapted to new messages behaviour. client is now used in arguments instead of profile
    - plugins: added information for cancellation reason in CancelError calls
    - plugin XEP-0045: various improvments, but this plugin still need work:
        - trigger is used to avoid message already handled by the plugin to be handled a second time
        - changed the way to handle history, the last message from DB is checked and we request only messages since this one, in seconds (thanks Poezio folks :))
        - subject reception is waited before sending the roomJoined signal, this way we are sure that everything including history is ready
        - cmd_* method now follow the new convention with client instead of profile
        - roomUserJoined and roomUserLeft messages are removed, the events are now handled with info message with a "ROOM_USER_JOINED" info subtype
    - probably other forgotten stuffs :p
2016-06-20 18:41:53 +02:00
Goffi
6bbcbaf522 use of /usr/bin/env instead of /usr/bin/python in shebang 2016-04-17 14:45:26 +02:00
Goffi
ed2219df8f plugin XEP-0045: overriden availableReceived method of MUCClient to work around a bug in Wokkel (affiliation and role are not set). TODO: propose a patch upstream 2016-03-07 15:48:11 +01:00
Goffi
a99d593a35 plugin XEP-0045: fixed feedback for /kick /ban and /afficiliate commands which should not be public 2016-03-07 13:50:57 +01:00
souliane
67cf4c7913 plugin XEP-0045: raise a special error when the room has already been joined 2016-01-13 13:07:36 +01:00
Goffi
348be27934 copyright update 2016-01-03 16:28:30 +01:00
souliane
a6a967b2f0 complete the Exception's list when catching JID error:
- Twisted JID constructor raises not only jid.InvalidFormat but also RuntimeError and AttributeError
2015-12-15 13:30:47 +01:00
Goffi
47d547aef9 plugin XEP-0045: fixed bad default parameter 2015-11-29 22:47:52 +01:00
Goffi
341143445b core (disco): use of “profile” instead of “profile_key” in several disco methods 2015-11-02 22:02:41 +01:00
Goffi
48f13ae31e reverted patch ad4ec8d9235e: there must not be security limit on room configuration 2015-09-29 19:07:32 +02:00
Goffi
d12df6c98e plugin XEP-0045: added disco announce 2015-08-18 09:01:18 +02:00
souliane
41b549f7ae core, plugin XEP-0045, frontends: change frontend method "setStatusOnline" for "setPresenceStatus":
- remove parameter "online" (can be guess from "presence" value)
    - process "statuses" dict in quick_frontend, so this method can get a simple unicode "status"
    - add C.PRESENCE_STATUSES_DEFAULT to define the key to use for fallback status
2015-04-20 16:39:38 +02:00
souliane
67ff77e5de massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions 2015-04-16 14:57:57 +02:00
souliane
bf04fcf780 plugin XEP-0045, quick_frontend, primitivus: replace C.DEFAULT_MUC by bridge method getDefaultMUC (value is defined in plugin XEP-0045 and can be overriden with the config file) 2015-04-09 11:27:13 +02:00
Goffi
fbec02d396 2015 copyright dates update 2015-03-30 10:26:26 +02:00
souliane
3bff0d0237 memory, plugin XEP-0045: getMainResource returns None when asking a MUC entity + fixes /whois on a MUC (bare) entity 2015-03-25 15:28:02 +01:00
souliane
d4c627d71f plugins XEP-0045, XEP-0249: allow to join / invite without specifying the JID's host part (use client's values) 2015-03-24 07:34:32 +01:00
Goffi
6875e4f906 plugin XEP-0045: /join text command can be used in all contexts, not only group 2015-03-20 20:49:58 +01:00
Goffi
9443b14c59 plugin text command, XEP-0045, XEP-0048, XEP-0249: removed feedBackWrongContext which is no more usefull with new _contextValid method 2015-03-19 14:30:08 +01:00
souliane
d9cc2f181e plugins XEP-0045, XEP-0249, parrot: use JID instead of unicode in many methods + class attributes 2015-03-11 12:35:21 +01:00
souliane
204f024e0c plugin XEP-0045: make joinMUC asynchronous and fixes its handler 2015-03-07 16:28:12 +01:00
Goffi
cdfb2c4dc6 core (memory): updateEntityData now accept a "silent" argument to avoid sending signal to frontends when updating an attribute with "signalOnUpdate" flag. 2015-02-09 21:39:51 +01:00
souliane
a43608b966 plugin XEP-0045: use HISTORY_LIMIT param to retrieve the MUC history 2014-10-22 14:16:01 +02:00
souliane
af7277d4f4 plugin XEP-0045: set the entity data "type" asap (userJoinedRoom is triggered before the join callback) 2014-10-20 15:09:37 +02:00
souliane
100ba3969e plugin XEP-0045: handle MUC presence 2014-10-17 15:49:46 +02:00
Matteo Cypriani
71e29f5c44 misc: fixed some typos 2014-09-15 14:18:25 +02:00
Goffi
ed3313c169 plugin OTR: a warning is logged when Account is instancied with a bare jid. 2014-08-25 21:32:23 +02:00
souliane
af2a634764 plugin XEP-0045: change security limit of "config room" menu to 4 2014-07-15 18:26:36 +02:00
Goffi
f5d2a31520 pluging XEP-0045: configure room dynamic menu 2014-06-26 00:05:25 +02:00
souliane
7d849b11ca plugin XEP-0045: small refactorization + clean on profile's disconnection 2014-06-23 16:07:13 +02:00
souliane
56ec86b8e5 plugin XEP-0045, text_commands: add some commands:
- handle generic failure in text_commands
    - fix command /leave and a logging message
    - add commands /kick /ban /affiliate
2014-06-23 15:42:56 +02:00
souliane
e18adb373d plugin XEP-0045: room configuration returns a success or failure message 2014-06-12 18:56:08 +02:00
Goffi
ba103161d5 core (log): refactoring + twisted backend:
- configuration is now done with classes, so inheritance is possible
    - twisted backend now use twisted log methods
    - log not produced by SàT directly in twisted backend are captured by an observer (twistedObserver) and sent back to SàT logging chain, with the "twisted" logger.
    - \\default output use normal twistd output, except in debug mode where it add an stdout output in addition to the log file.
    - when log_colors = True, colors are enabled only where it's possible (tty out), when log_colors=force colors are always enabled.
    - fixed some bad log.xxx calls
2014-05-05 18:58:34 +02:00
souliane
42b1b6c4ed plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
- give a feedback instead of sending the message when the command is invalid or used in a wrong context
    - add command /join for XEP-0249
2014-04-30 16:34:09 +02:00