Commit graph libervia-backend/src/core/xmpp.py
Author SHA1 Message Date
Goffi
13e2e50cb0 added "send" trigger point as the last one before sending, can be used for e2e encryption 2017-02-04 17:59:15 +01:00
Goffi
50194cde01 core: added sessionGetInfos bridge method to retrieve various data on current profile session + client.started keep start time 2017-01-05 22:22:13 +01:00
Goffi
d0c56aaadb plugin XEP-0231: Bits of Binary first draft:
The current implementation only retrieve data from Bits of Binary, it's not used yet for sending.
When an XHTML-IM message is received (XEP-0071), all <img> are checked and if a cid scheme is found in src attribute the file is retrieved and the src is changed with cached file.
2017-01-05 20:29:05 +01:00
Goffi
6872df4fd3 core (memory/cache): file caching handling, first draft:
instead of having file caching handled individually by plugins, a generic module has been added in memory.

    - Cache can be global or associated to a profile. In the later case, client.cache can be used.
    - Cache are managed with unique ids (which can be any unique unicode, hash uuid, or something else).
    - To know if a file is in cache, getFilePath is used: if the file is in cache, its absolute path is returned, else None is returned.
    - To cache a file, cacheData is used with at list the source of cache (most of time plugin import name), and unique id. The method return file opened in binary writing mode (so cacheData can - and should - be used with "with" statement).
    - 2 files will be created: a metadata file (named after the unique id), and the actual file.
    - each file has a end of life time, after it, the cache is invalidated and the file must be requested again.
2017-01-05 20:23:38 +01:00
Goffi
32036a4044 plugin XEP-0280: Message Carbons first draft 2016-12-18 20:21:31 +01:00
Goffi
2618d48e7b core, quick_frontends: android compatibility hacks:
a couple of hacks have been used so backend can be launched on android using kivy
    - config file (sat.conf) is been read on a specific dir, using a detection of Cagou domains in constants.py
    - fixed crash when using sys.stdout.isatty in log_config.py
    - Q&D fix for logging encoding issue on android
    - when android is detected, the path/pattern to load plugins is modified
    - SRV is not working at the moment on android. If the platform is detected, the host is used directly with default port. A hosts_dir configuration can be used in [android] section to map a specific ip to a host
    - getRepositoryData in tools/utils return constant string on android. Proper repository data need to be copied during package building.
    - [quick app] more robust failure handling on asyncConnect error
    - [quick chat] default to utf-8 when getlocale doesn't return the actual locale.
2016-12-04 18:16:48 +01:00
Goffi
55357178ef core, bridge, frontends: removed deprecated bridge method askConfirmation, confirmationAnswer, actionResult, actionResultExt and getWaitingConf 2016-08-28 19:23:58 +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
f12803fa65 backend, frontend: messages refactoring (huge commit, not finished):
/!\ database schema has been modified, do a backup before updating

    message have been refactored, here are the main changes:

    - languages are now handled
    - all messages have an uid (internal to SàT)
    - message updating is anticipated
    - subject is now first class
    - new naming scheme is used newMessage => messageNew, getHistory => historyGet, sendMessage => messageSend
    - minimal compatibility refactoring in quick_frontend/Primitivus, better refactoring should follow
    - threads handling
    - delayed messages are saved into history
    - info messages may also be saved in history (e.g. to keep track of people joining/leaving a room)
    - duplicate messages should be avoided
    - historyGet return messages in right order, no need to sort again
    - plugins have been updated to follow new features, some of them need to be reworked (e.g. OTR)
    - XEP-0203 (Delayed Delivery) is now fully handled in core, the plugin just handle disco and creation of a delay element
    - /!\ jp and Libervia are currently broken, as some features of Primitivus

    It has been put in one huge commit to avoid breaking messaging between changes.
    This is the main part of message refactoring, other commits will follow to take profit of the new features/behaviour.
2016-05-24 22:11:04 +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
348be27934 copyright update 2016-01-03 16:28:30 +01:00
souliane
ab7ae07a83 plugin XEP-0203, core (xmpp): leave the management of delay element to XEP-0203 (fix bug 59):
- this patch reveals a bug in primitivus Chat.printMessage relative to MUC history (the test to discard duplicates is wrong)
2015-12-11 11:25:29 +01:00
souliane
f3a5cb2a96 core, plugin misc_account: set XMPP connection max retries to 0 when checking if an external account exists 2015-12-07 19:56:12 +01:00
Goffi
942fdc7fa1 core (client): fixed maximum connection tries to 3 2015-12-07 13:10:44 +01:00
Goffi
a8cc331dd5 core: fixed cache check on presence unavailable 2015-11-27 10:15:23 +01:00
Goffi
c0f53629e5 core: avoid to send presence unavailable signal when it's not necessary 2015-11-25 23:19:36 +01:00
Goffi
a42452ff57 core, bridge: actionsGet:
- added a new mechanism to keep actions until they are answered (or timeout-ed)
    - keep_id must be explicitly used on actionNew
    - actionsGet is used to retrive these actions
    - the mechanism is used in deferXMLUI
2015-11-17 21:28:58 +01:00
Goffi
f21c94b205 core (client): added a sendError method to easily build error response from <IQ\> stanza 2015-11-11 14:56:05 +01:00
Goffi
2c0d0fc8db core (xmpp.py): fixed bad import 2015-11-06 17:09:42 +01:00
Goffi
083f426b24 core (client): add IQ method to easily create an IQ stanza with the current xmlstream, and manage result with a Deferred. 2015-11-02 22:02:41 +01:00
Goffi
66ad169227 core: progression handling improvments:
- getProgress has been renamed to progressGet to follown new naming convention
    - new signals: progressStarted, progressFinished and progressError to indicate state of progressing events
    - new method progressGetAll to get all progressing events of all profile (or only one profile)
2015-09-25 19:19:12 +02:00
Goffi
135fba2de1 core, plugin watched: new plugin, show an alert when a watched entity goes online 2015-08-20 18:43:56 +02:00
Goffi
2b20bff614 plugins xep-0277, groupblog: added subscriteToMany to replace massiveSubscribeGroupBlogs + added SatRosterProtocol.getJidsSet 2015-08-15 22:20:43 +02:00
souliane
640537662a bridge, quick_frontend: the JID that is assigned by the server can differ from the one we asked for (resource) 2015-06-10 18:04:43 +02:00
souliane
e10070f923 primitivus: fix setting the presence and status 2015-06-10 09:18:34 +02:00
Goffi
becb178deb core (xmpp): added log message when a an entity without presence subscription is removed from roster 2015-05-27 19:12:38 +02:00
souliane
f78804cce5 core (xmpp): update the cache for a contact group when a contact is removed from it 2015-04-24 14:57:09 +02:00
souliane
2273421745 core (xmpp): RosterItem.jid is deprecated in Wokkel 0.7.1, use RosterItem.entity instead 2015-04-24 14:54:24 +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
31e49c0d23 core (xmmp): keep the roster groups cache synchronised + fixes a log.warning 2015-04-01 23:56:32 +02:00
Goffi
fbec02d396 2015 copyright dates update 2015-03-30 10:26:26 +02:00
Goffi
6760c927d3 merged branch frontends_multi_profiles 2015-03-18 10:52:28 +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
Goffi
b4937bef76 core: fixed items registration in roster management 2015-02-06 18:54:44 +01:00
Goffi
d07237f49d core: fixed some logging calls without unicode strings, and use of print 2015-02-06 18:53:07 +01:00
souliane
01e8ee664e core (xmpp): set missing "from" attribute of received messages to the server domain 2014-12-19 11:42:45 +01:00
Goffi
6e144c6458 core: improved roster management + misc:
- updated methods to no use anymore methods deprecated in Wokkel
    - use of full jid when it make sense instead of bare jid
    - getContacts, updateContact and delContact are now asynchronous
2014-12-10 18:32:33 +01:00
souliane
fe06c14303 core, plugins: improve a bit some log messages 2014-10-18 16:28:37 +02:00
souliane
a67c8094f5 core: move XMPP keep-alife value to the constants 2014-09-21 13:06:53 +02:00
souliane
af2554a508 plugin OTR: forces FINISHED state if we are in ENCRYPTED state on contact disconnection 2014-09-05 11:16:38 +02:00
souliane
b294272020 core (xmpp): fixes SatPresenceProtocol.available to prevent an eventual code skipping 2014-09-04 11:26:22 +02:00
souliane
83ed5f319c core, plugins, stdui, frontends: fixes handling of "Force server" and "Force port" parameters:
- do not save a "guessed" value, they must stay empty until the user explicitely sets them
    - add constant XMPP_C2S_PORT (default value 5222)
2014-06-23 10:23:13 +02:00
souliane
d4eff5b99c core, memory, plugins, stdui, frontends: look for DNS SRV records when server is not specified:
- fix bug 3
    - modify "Connection" params:
          - rename "Server" to "Force server" and "Port" to "Force port"
          - set the default value to empty string for both
2014-06-23 00:44:10 +02:00
souliane
3d9795e578 core (xmpp): onMessage handles an eventual subject (used for announcement / headline message) 2014-06-02 19:25:06 +02:00
souliane
244a33d2c7 core (xmpp), stdui (profile_manager), bridge, frontends: raise an exception if the XMPP connection failed instead of sending a signal 2014-05-23 09:59:35 +02:00
Goffi
d113c2a295 core (XMPP): message received (onMessage) refactoring:
- better separation of actions
    - use of failure.trap and generic exception (CancelError/SkipHistory)
2014-06-07 16:38:53 +02:00
souliane
dd597a2ead core, memory, bridge, plugin misc_register_account: move registerNewAccount to a new plugin:
- the bridge method has been removed, now a plugin takes care of it with XMLUI callback system
    - TODO: xmpp.RegisteringAuthenticator still needs to be fixed
2014-05-16 00:58:20 +02:00
Goffi
501bc92528 core: use of the new core.log module:
/!\ this is a massive refactoring and was largely automated, it probably did bring some bugs /!\
2014-04-19 19:19:19 +02:00
Goffi
43657dcb15 core (XMPP): typo again 2014-03-31 17:12:09 +02:00