Commit graph libervia-backend/src/plugins/plugin_xep_0234.py
Author SHA1 Message Date
Goffi
80ef13612b core, setup: huge cleaning:
- moved directories from src and frontends/src to sat and sat_frontends, which is the recommanded naming convention
- move twisted directory to root
- removed all hacks from setup.py, and added missing dependencies, it is now clean
- use https URL for website in setup.py
- removed "Environment :: X11 Applications :: GTK", as wix is deprecated and removed
- renamed sat.sh to sat and fixed its installation
- added python_requires to specify Python version needed
- replaced glib2reactor which use deprecated code by gtk3reactor

sat can now be installed directly from virtualenv without using --system-site-packages anymore \o/
2018-04-02 19:44:50 +02:00
Goffi
afb4dcd6bb plugin XEP-0234: fixed regex import 2018-03-25 20:51:02 +02:00
Goffi
29d9713462 plugin XEP-0234: some cleaning + added triggers to allow plugins to change parsing/generation of <file> element 2018-03-02 17:53:19 +01:00
Goffi
2e5991575f XEP-0065,XEP-0096,XEP-0166,XEP-0235,XEP-0300: file transfer improvments:
huge patch sorry :)

many things are improved by this patch, notably:
- updated to last protocol changes (urn:xmpp:jingle:apps:file-transfer:5 and urn:xmpp:hashes:2)
- XEP-0234: file request implementation
- XEP-0234: methods to parse and generate <file> element (can be used by other plugins easily)
- XEP-0234: range data is now in a namedtuple
- path and namespace can be specified when sending/requesting a file (not standard, but needed for file sharing)
- better error/termination handling
- trigger points to handle file requests by other plugins
- preparation to use file plugins with components
2018-02-28 18:28:39 +01:00
Goffi
60b8c8fa73 plugin pipe/stream, file transfert: refactoring and improvments:
this is a big patch as things had to be changed at the same time.

- changed methods using profile argument to use client instead
- move SatFile in a new tools.stream module, has it should be part of core, not a plugin
- new IStreamProducer interface, to handler starting a pull producer
- new FileStreamObject which create a stream producer/consumer from a SatFile
- plugin pipe is no more using unix named pipe, as it complicate the thing,
  special care need to be taken to not block, and it's generally not necessary.
  Instead a socket is now used, so the plugin has been renomed to jingle stream.
- bad connection/error should be better handler in jingle stream plugin, and code should not block anymore
- jp pipe commands have been updated accordingly

fix bug 237
2018-02-08 00:37:42 +01:00
Goffi
387c10cc0d dates update 2018-01-26 11:14:13 +01:00
Goffi
f5f25e8ab5 misc: date update (yes it's a bit late :p ) 2017-11-03 14:31:42 +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
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
Goffi
3c71aef8af plugin XEP-0234: log file transfer "terminated" instead of "completed", as the file may not be complete (check is done after) 2015-12-17 22:02:52 +01:00
Goffi
55cd5d8307 plugin pipe: rewritten plugin as a jingle application. The current implentation can, in some cases, block the backend, and is experimental only. Improvments are needed in the future. 2015-11-25 02:04:43 +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
51aecd012a plugin XEP-0234: hash checksum proper handling 2015-11-17 20:13:27 +01:00
Goffi
8d9418b6ad plugin XEP-0300: implemented hashing:
- parseHashElt do what it says
    - calculateHashElt can calculate a whole hash in a non-blocking way
    - or getHasher can be used for progressive hashing
    - getBestPeerAlgo return the best available hashing algorithm of an entity
2015-11-17 19:48:19 +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
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
674001781f plugins XEP-0234, file: moved human file size conversion to file plugi 2015-11-11 18:19:49 +01:00
Goffi
a022a36b5b plugins XEP-0234, file: moved file request dialog to file plugin 2015-11-11 18:19:47 +01:00
Goffi
af953d89a9 plugins XEP-0234, XEP-0260, XEP-0261: jingle session termination is managed by application (XEP-0234) instead of transport 2015-11-08 14:48:04 +01:00
Goffi
5e356f28f0 plugins XEP-0234, file: use of SatFile for writing too 2015-11-08 14:44:33 +01:00
Goffi
31c9e0d06e plugins XE0166, XEP-0234, XEP-0260, XEP-0261: renamed session key managing other peer's jid to "peer_jid" instead of "to_jid" 2015-11-08 14:44:33 +01:00
Goffi
1a5f1bd144 plugin ip: implemented XEP-0279 for external ip retrieval + fixed bad exception handling 2015-11-08 14:44:30 +01:00
Goffi
a24031596a plugin XEP-0234: "senders" handling 2015-11-02 22:02:41 +01:00
Goffi
170d697016 plugin XEP-0166, XEP-0234, XEP-0261:
- transport and application data are now managed in separate dictionaries
    - new client.IQ method is used
    - new buildAction helper method for applications and transports
    - "role" is now stored in session_data
    - "senders" is now stored in content_data
    - plugin XEP-0166: "transport-info" action is now managed
    - plugin XEP-0166: application namespace and handler are now managed in a namedtuple
    - plugin XEP-0234: <range/> element is added by responder if not already present
2015-11-02 22:02:41 +01:00
Goffi
8a0215a7ec plugin XEP-0234: removed forgotten debugging bridge method 2015-09-26 14:24:33 +02:00
Goffi
3b263f2c93 plugin XEP-0234: jingle file transfer first draft 2015-09-25 19:24:00 +02:00