Commit graph libervia-backend/src/core/sat_main.py
Author SHA1 Message Date
Goffi
6467bdb3c3 core: replaced calls to client.xmlstream.send by client.send which is the right method to use. client.xmlstream should not be used directly 2017-02-04 17:59:13 +01:00
Goffi
115f5ae0e1 plugin otr: various improvments:
- messageSend trigger now use pre_xml_treatments so it doesn't block other triggers of higher priority
    - text commands now use a very high priority, as it is local command and should not be blocked in most of cases
    - new otrState signal, to send state change to frontends
    - history is not skipped anymore, a future option may change this behaviour
    - OTR trigger are skipped on groupchat messages
    - context_manager is now in client instead of being global to plugin
    - removed fixPotr as it is fixed upstream

note triggers should be improved for encryption methods, as skipping an encrypter may break security, but putting it in top priority may break nice features.

fix bug 170
2017-02-01 21:44:24 +01:00
Goffi
d8b9c85cc0 core (menus): improvments:
- use the new convention for bridge names (getMenus ==> menusGet, etc.)
    - menu now use canonical path, which is the untranslated path with each element stripped and lowercase, it must be unique by menu type
    - added menuLaunch method to manually launch a menu like an action, canonical path is used instead of id
    - added SECURITY_LIMIT_MAX constant
2017-01-26 20:29:48 +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
a37b57e7ad core(constants): added a constant for profile extension (PLUGIN_EXT):
this constant may be modified if needed, which is the case on Android (it's modified by Cagou service's main.py), so platform detection is not needed anymore in sat_main.py.
2016-12-25 16:43:56 +01:00
Goffi
6782bb9a3b plugin android: first draft:
- the plugin cancel its own import if it's not launched on Android platform
    - this plugin show a notification when a non MUC message is received when Cagou is not active
    - the device also optionally vibrate on notification
2016-12-19 23:49:37 +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
9ce91cf534 core: bridge can now be changed in conf
by default DBus bridge is used, but this can be changed in sat.conf's DEFAULT section using "bridge" option.
    bridge can be "dbus" (or equivalent "dbus_bridge") or embedded at the moment.
    Bridge name used is saved in SAT.bridge_name, and load_bridge method can be used by frontends.
2016-12-04 18:16:37 +01:00
Goffi
372f54ec2a bridge (D-Bus): bad design fixes:
- renamed outputed module to dbus_bridge (to avoid uppercase and conflict with dbus module)
    - class name is now Bridge for both frontend and core (make discovery/import more easy)
    - register renamed to register_method in core, and register_signal in frontend
2016-10-03 21:15:39 +02: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
cc160e03d7 plugin XEP-0085, quick_frontends, primitivus: chat states are working again 2016-07-17 16:47:33 +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
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
1bf3950ce6 core (memory): profile is checked in startSession (an error is raised if it doesn't exist) 2015-11-27 16:50:29 +01:00
Goffi
8e9ef84243 quick frontend (blog): fixed group blog panels (displaying only, sending is not working yet) 2015-11-23 16:21:32 +01:00
Goffi
8002971b77 core: fixed session cleaning after actionNew timeout 2015-11-22 21:23:14 +01:00
Goffi
55c75bc304 core, plugins file, XEP-0234, bridge: progression api enhancement:
- progressStarted have a new metadata parameter, useful to know the kind of progression, direction, etc. Check bridge doc
    - progressGetAllMetadata can be used to retrieve this data and discover on currently running progressions
    - progressFinished also have a new metadata parameter, used to e.g. indicate that hash is checked
    - core: fixed progressGetAll
    - file, XEP-0234: implemented the API modifications,  hash is returned on progressFinished
    - file: SatFile.checkSize allows to check size independently of close (be sure that all the data have been transfered though)
2015-11-19 18:13:26 +01:00
Goffi
ad973c6a2c core: fixed launchAction:
- getClient now raise a NotFound error if client is not available
    - errors ConnectedProfileError, NotConnectedProfileError anf ProfileKeyUnknownError renamed for consistency (all profile error must prefixed by Profile)
    - launchAction fixed, the case where client is not available is handled
    - kept actions are actuall1y removed on launchAction
2015-11-18 11:06:24 +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
0c5bf88da0 core: added callback_id in DataError message of launchCallback 2015-11-15 23:11:41 +01:00
Goffi
fbbb081425 backend, bridge, frontends: actionNew has now a security_limit argument + added some docstring to explain data argument 2015-11-14 19:21:56 +01:00
Goffi
2c8b91ee6c core, plugin file: fixed progress id + data is now returned by getProgress, instead of being an argument to fill 2015-11-14 19:20:33 +01:00
Goffi
182f192703 core, bridge: added a profileSetDefault method 2015-11-14 19:18:10 +01:00
Goffi
d620805fc7 bridge: new core method profileStartSession to start a session without connecting the profile 2015-11-14 19:18:10 +01:00
Goffi
e0a28858a8 core: profile session starting and connection are now separated. Moved profile session starting/authentication to memory module 2015-11-14 19:18:10 +01:00
Goffi
ce4e717ea8 core, bridge (params): added asyncGetParamsValuesFromCategory (yes that's a long name!) method to retrive params names and values for a given category 2015-11-14 19:18:10 +01:00
Goffi
bfd143b1e4 bridge, core(params): removed obsolete methods:
- getParams and getParamsForCategory are removed from bridge: XMLUI is now used in place of the old params XML
    - getParamsForCategory has also been removed internaly, as it is now unused, getParams is still used to construct the XMLUI
2015-11-14 19:18:07 +01:00
Goffi
aaa3c32378 plugins XEP-0096, XEP-0260, file: sendFile method is managed by file plugin, which choose the best available method + progress_id fix 2015-11-14 19:18:05 +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
aca7307452 core: plugin unload:
Call unload() if it exists on all loaded plugin instances when leaving SàT. This method will probably be used later for hot (un)loading
2015-11-02 22:02:41 +01:00
Goffi
2e70b01b28 core: more robust plugins loading:
- avoid stopping loading remaining plugins when a plugin raise an error
    - new error exceptions.MissingModule allows to detect a missing third party module, and to give instructions to get it
    - error during instanciation are catched too
2015-09-29 17:54:23 +02:00
Goffi
68ae6a407e core: removed forgotten breakpoint 2015-09-29 17:54:21 +02: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
8deee28320 core (plugins): detect import_name conflicts 2015-08-27 17:59:15 +02:00
Goffi
9895ceb32f core (disco): added checkFeatures to check several features at once + identities are now managed with a tuple in findFeaturesSet and checkFeatures 2015-08-25 16:05:01 +02:00
Goffi
0bf9461416 core, bridge: added getFeatures method:
this async method indicate which plugins are activated, and add an additional data dictionary with plugin specific data.
    The result can be general (if profile==C.PROF_KEY_NONE) or specific to profile.
2015-08-21 17:08:26 +02:00
Goffi
35d39b450f core: moved __version__ to __init__.py, so we can check version by doing "import sat;print(sat.__version__)" 2015-08-18 09:01:18 +02:00
Goffi
8cfcc7098a core: removed sat_id which is not used anywhere, uuid do the job better 2015-08-18 09:01:18 +02:00
Goffi
97d140566c core, bridge: new signal actionNew to launch an action from the backend (e.g. display a dialog message):
- SAT.actionNew is a shortcut to call bridge.actionNew with a generated id. The id may be used in the future to ignore an action (e.g.: an action is sent to all frontends to accept a file, one of the frontend did manage the dialog, the other ones can then ignore this dialog), but is not used for now.
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
Goffi
fbec02d396 2015 copyright dates update 2015-03-30 10:26:26 +02:00
Goffi
c2314640ba core: getRepositoryData now get the module in argument 2015-03-19 20:40:10 +01:00
Goffi
2900e815c4 core: if we are in dev version and it's possible, repository data are now checked and added to SàT version 2015-03-19 19:47:01 +01:00
Goffi
76065758df renamed tools.misc to tools.trigger 2015-03-19 19:44:37 +01:00
Goffi
80e65d5b84 core, quick_frontends: added an "extra" item in getMenus + use of new quick_menus module in QuickApp 2015-03-17 19:33:05 +01:00
souliane
b524d41446 core: fixes bug introduced by 1262 (f8a8434dbac7) in SAT.delContact 2015-03-06 16:06:38 +01:00