Commit graph libervia-backend/src/core/sat_main.py
Author SHA1 Message Date
Goffi
75fe2d0638 core: sat bakcend is now a twisted plugin (no more .tac file) 2014-08-24 18:44:17 +02:00
Goffi
352e593a17 core: use of debug log instead of error when port default value is used 2014-06-26 14:59:02 +02:00
Goffi
126d95e764 core (menus): constants are used for menu types 2014-06-25 20:54:15 +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
a5dd35ce65 frontends: async failures are more detailed (full class name + error message) 2014-06-07 15:39:20 +02:00
souliane
f719875f0b core, frontends: remove bridge method "connect" (always use asyncConnect) 2014-05-23 10:40:54 +02:00
Goffi
87b3e413ee core (XMPP): sendMessage refactoring:
- better separation of message sending actions
    - use of more generic exceptions to hook the behaviour (SkipHistory and CancelError)
    - use of raise instead of return
    - use of failure.trap
2014-06-07 16:35:29 +02:00
souliane
8be7416569 core, stdui (profile manager), quick_app: ask for another XMPP password when profile authentication succeed but XMPP connection fails 2014-05-21 23:15:01 +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
souliane
67a605c1c8 stdui: add ui_profile_manager to interact with frontends when profile authentication is needed 2014-05-07 16:03:38 +02:00
souliane
0d28c03d27 core, memory, bridge: added profile password + password encryption:
/!\ This changeset updates the database version to 2 and modify the database content!

Description:
    - new parameter General / Password to store the profile password
    - profile password is initialized with XMPP password value, it is stored hashed
    - bridge methods asyncCreateProfile/asyncConnect takes a new argument "password" (default = "")
    - bridge method asyncConnect returns a boolean (True = connection already established, False = connection initiated)
    - profile password is checked before initializing the XMPP connection

    - new private individual parameter to store the personal encryption key of each profile
    - personal key is randomly generated and encrypted with the profile password
    - personal key is decrypted after profile authentification and stored in a Sessions instance
    - personal key is used to encrypt/decrypt other passwords when they need to be retrieved/modified

    - modifying the profile password re-encrypt the personal key
    - Memory.setParam now returns a Deferred (the bridge method "setParam" is unchanged)
    - Memory.asyncGetParamA eventually decrypts the password, Memory.getParamA would fail on a password parameter

TODO:
    - if profile authentication is OK but XMPP authentication is KO, prompt the user for another XMPP password
    - fix the method "registerNewAccount" (and move it to a plugin)
    - remove bridge method "connect", sole "asyncConnect" should be used
2014-05-07 16:02:23 +02:00
Goffi
cc010fba59 core: fixed typo 2014-05-15 20:25:52 +02:00
Goffi
e3f0fe289e core: getReady and asyncConnect now wait full initialisation, not only memory 2014-05-15 20:01:56 +02:00
Goffi
f0b2c7dea3 core: added a getReady method which can be called by frontends to ensure that backend is fully initialised before doing anything + this ckeck is automatically done in asyncConnect 2014-05-15 16:02:16 +02:00
souliane
1eeddf5900 better PEP-8 compliance 2014-05-07 15:44:31 +02:00
souliane
2e6420fb49 memory, jp: added jp commands to load/save parameters template 2014-05-04 18:43:54 +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
f0fa9b699d plugin XEP_0033: fixes the server part and the tests 2014-04-11 11:02:42 +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
f05724db74 core: logging refactoring, first step:
- added a core.log module
    - 3 backends can be used: basic, standard (python's logging module) or twisted
    - colors can be used
    - the module has been made to be used by frontends, it should work in exotic environments like pyjamas
    - logging basic configuration is now made in sat.tac
    - core.log configuration is inspired from python standard logging, and use it when possible
    - getLogger should be used the same way as for standard logging
2014-04-19 00:02:38 +02:00
souliane
e91a30729f core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py 2014-04-03 16:10:44 +02:00
Goffi
44d8f99b7d core: better plugin initialisation sequence:
- profileConnected are now executed in a deferredList, instead of one after the other
    - failure are collected, and a global message show which plugins failed and the failure message
2014-04-02 12:31:23 +02:00
Goffi
e95d04b69e core (disco): added discoInfos and discoItems bridge methods 2014-04-01 21:14:57 +02:00
Goffi
c0105db63c core (disco): added checkFeature method + fixed hasFeature test 2014-03-31 12:23:13 +02:00
Goffi
83959c7c96 core: fixed bad closure in connection intialisation sequence (profileConnected in plugins were not called correctly) 2014-03-31 12:23:13 +02:00
Goffi
95678d7967 core, plugin XEP-0115: discovery refactoring:
- hashing algorithm of XEP-0115 has been including in core
    - our own hash is still calculated by XEP-0115 and can be regenerated with XEP_0115.recalculateHash
    - old discovery methods have been removed. Now the following methods are used:
        - hasFeature: tell if a feature is available for an entity
        - getDiscoInfos: self explaining
        - getDiscoItems: self explaining
        - findServiceEntities: return all available items of an entity which given (category, type)
        - findFeaturesSet: search for a set of features in entity + entity's items
      all these methods are asynchronous, and manage cache automatically
    - XEP-0115 manage in a better way hashes, and now use a trigger for presence instead of monkey patch
    - new FeatureNotFound exception, when we want to do something which is not available
    - refactored client initialisation sequence, removed client.initialized Deferred
    - added constant APP_URL
    - test_plugin_xep_0033.py has been temporarly deactivated, the time to adapt it
    - lot of cleaning
2014-03-28 18:07:22 +01:00
Goffi
382d49a628 core (memory): entities cache improvments:
- entities cache is no more limited to bare jid
    - resources are now automatically updated in bare jid cache
2014-03-28 18:07:17 +01:00
Goffi
a6897c76e0 core, plugins: host.getClient now raise an exception instead of returning None when no profile is found, plugins have been adapted consequently and a bit cleaned 2014-03-28 18:07:02 +01:00
souliane
3075585d9d core, memory: use XDG recommended paths as the defaults for the config and local directories 2014-03-23 22:43:43 +01:00
Goffi
1339efa9f0 core: plugins now accepts recommendations:
- "recommendations" key can be used in PLUGIN_INFO
    - if a plugin can't be found an ImportError is raised if it's a dependency, if it's a recommendation only a warning message is shown, and plugins importation continue
2014-03-23 10:02:50 +01:00
Goffi
6d768028d1 core: removed default_config:
- constants in core.default_config moved to core.constants
    - removed unused host.getConst and host.setConst
    - APP_NAME* used where it make sense
2014-03-22 17:48:10 +01:00
Goffi
93826f1ce8 core: sendMessageTrigger now manage pre and post treatments, which happen before or after XML generation 2014-03-22 15:34:05 +01:00
Goffi
c67faecba1 core: added IQ_SET to core.constants + getLastResource now manage correctly jid.JID 2014-03-22 13:42:59 +01:00
souliane
bc9efbda82 bridge, frontends: display presence with the highest priority + reset your own presence when you (dis)connect 2014-03-20 21:18:18 +01:00
Goffi
005ec59a8a core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@' 2014-03-21 16:27:09 +01:00
Goffi
e689f6bb34 core (memory): moved Params in its own module + introduced a new core/constants module, and moved some constants there 2014-03-21 16:08:11 +01:00
Goffi
9bd81494d1 core: minor docstring fixes 2014-03-21 15:03:51 +01:00
souliane
d158589881 core, frontends: add method asyncDeleteProfile, remove synchronous methods createProfile and deleteProfile 2014-03-03 09:59:10 +01:00
Goffi
a280080563 core (sqlite): automatic database update:
- new Updater class check database consistency (by calculating a hash on the .schema), and updates base if necessary
    - database now has a version (1 for current, 0 will be for 0.3's database), for each change this version will be increased
    - creation statements and update statements are in the form of dict of dict with tuples. There is a help text at the top of the module to explain how it works
    - if we are on a development version, the updater try to update the database automaticaly (without deleting table or columns). The Updater.generateUpdateData method can be used to ease the creation of update data (i.e. the dictionary at the top, see the one for the key 1 for an example).
    - if there is an inconsistency, an exception is raised, and a message indicate the SQL statements that should fix the situation.
    - well... this is rather complicated, a KISS method would maybe have been better. The future will say if we need to simplify it :-/
    - new DatabaseError exception
2014-02-23 23:30:32 +01:00
souliane
7d7d205159 core: fix mispelled argument 2014-02-18 14:33:35 +01:00
souliane
d0fccd5195 core: bug fix at connection time 2014-02-07 22:17:06 +01:00
Goffi
eeff94469a core: registerNewAccount partial fix 2014-02-04 18:54:06 +01:00
Goffi
2ca6efd8cc dates update 2014-02-04 18:32:49 +01:00
Goffi
aad6251058 core: security limit in menus 2014-02-04 18:32:39 +01:00
Goffi
c6aaaaa297 plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends. 2014-02-04 18:26:03 +01:00
Goffi
7d313660eb core: added "one_shot" option to registered callback:
when this keyword is used, the callback is automatically removed once it has been called.
2014-02-04 18:24:27 +01:00
Goffi
72fd99f679 plugin XEP-0045, primitivus: added MUC configuration 2014-02-04 18:06:12 +01:00
souliane
84bfd205dd test: added tests for XEP-0033 2014-01-05 13:05:31 +01:00
souliane
4a0d8be8ec core, bridge: new method paramsRegisterApp to register frontend's specific parameters 2013-12-27 13:28:26 +01:00