Commit graph

3,300 commits

Author SHA1 Message Date
Goffi
4e48a889c0 core (memory): fixed recursive file deletion + log an error and continue when deleting a missing file 2020-06-19 14:55:30 +02:00
Goffi
9f9a6a5a2b plugin list of interest: expose interestsRegisterFileSharing to bridge + use coroutines 2020-06-09 06:25:20 +02:00
Goffi
47edb01bd3 comp file sharing management: fixed confirmation check 2020-06-09 06:23:37 +02:00
Goffi
87298f8a19 comp file sharing: handle upload with headers:
`Xmpp-File-Path` can now be used to specify file path, and `Xmpp-File-No-Http` when file
must not be served publicly by HTTP.
2020-06-09 06:23:01 +02:00
Goffi
4ecdb41695 comp file sharing: CORS:
- added CORS headers to allow using the HTTP server from an other domain
- added `Content-Security-Policy`
2020-06-09 06:21:23 +02:00
Goffi
bdf8f38aa2 core: findByFeatures type hints 2020-06-09 06:16:52 +02:00
Goffi
43466029ab plugin XEP-0363: register namespace 2020-06-09 05:59:14 +02:00
Goffi
e712981938 plugin XEP-0363: fixed fileHTTPUploadGetSlot 2020-06-09 05:58:57 +02:00
Goffi
9ba6df5503 tools (common/utils): new OrderedSet class 2020-06-08 08:54:53 +02:00
Goffi
ca655f01a8 component file sharing: don't initialise the plugin if not component use it 2020-06-01 11:15:16 +02:00
Goffi
7000fcda34 tools (common/dynamic_import): log a warning if bridge can't be imported 2020-06-01 11:14:20 +02:00
Goffi
5a14c5aebd plugin comp file sharing: files can now be uploaded/downloaded via HTTP:
plugin XEP-0363 can now be used by components, and file sharing uses it.
The new `public_id` file metadata is used to serve files.
Files uploaded are put in the `/uploads` path.
2020-05-29 21:55:45 +02:00
Goffi
d1521dde4b core (memory/sqlite): new database schema (v9):
this new schema brings the new `public_id` column, which will be used to serve files via
HTTP, splits `mime_type` in 2 (`media_type` and `media_subtype`) to make indexing/media
filtering easier, and fixes indexes for `files` table.
2020-05-29 21:50:49 +02:00
Goffi
d09be4ba42 tools/common (tls): moved re-usable Twisted TLS code from Libervia to tools/common 2020-05-29 21:07:10 +02:00
Goffi
8da309e51e plugin XEP-0300; fixed use of calculateHash with getHasher 2020-05-29 21:06:10 +02:00
Goffi
b9fa21ab47 core: getLocalPath now returns a Path 2020-05-29 21:02:20 +02:00
Goffi
f48ad8179c core (launcher): fixed launching of twistd when no subparsed is specified 2020-05-29 20:57:23 +02:00
Goffi
0707e639b1 doc (jp/roster): fixed example for jp roster set 2020-05-26 12:52:22 +02:00
Goffi
d3b7510c0e core (launcher): extra arguments can now be passed the service with bg, fg and dbg:
- `dbg` is an alias for `debug`
- extra arguments can be passed to the service, use `-- --help` to see them`
2020-05-25 16:15:05 +02:00
Goffi
a1eb68c1e7 core: replaced sat shell script by a python script:
the backend is now launched by `sat.core.launcher`, and the script is generated during
installation with a new entry point in `setup.py`.
2020-05-25 15:50:01 +02:00
Goffi
c0a3f8d141 core (log): logging with Twisted now uses the new twisted.logger 2020-05-25 15:46:21 +02:00
Goffi
4fdf49f4cb plugin XEP-0054: don't use cache anymore in getAvatar:
caching is now handled by plugin identity.
2020-05-19 18:34:06 +02:00
Goffi
771e40dad5 plugin identity: fixed update in avatarSetPostTreatment 2020-05-19 18:34:05 +02:00
Goffi
7438f4218e plugin identity: fixed infinite loop on nicknames update 2020-05-18 23:52:34 +02:00
Goffi
85a3e6edfb jp (event): new list command to get evens available in a service 2020-05-18 23:48:40 +02:00
Goffi
e1abce602f jp (pubsub): fixed arguments returned when item has no payload 2020-05-18 23:43:06 +02:00
Goffi
205bd5cdb4 tools (common/template): new icon_from_client method:
this method is available from template, and returns the name of the icon to use according
to disco client data.
2020-05-18 23:41:36 +02:00
Goffi
234bbcbdd5 plugin XEP-0231, XEP-0264: fixed some remaining encoding issue following Python 3 port 2020-05-18 23:39:41 +02:00
Goffi
abbd14484b plugin XEP-0060: fixed payload parsing in sendItem 2020-05-18 23:38:21 +02:00
Goffi
9780bd3480 plugin pubsub schema, tools (common/template xmlui): use a JID for publisher:
- a JidWidget is used instead of text for publisher, nothing is set if publisher attribute
  doesn't exist
- added missing JidWidget implementation in tools.common.template_xmlui
2020-05-18 23:37:04 +02:00
Goffi
a693f9f53e plugin list of interest: fixed wrong variable used in a log 2020-05-18 23:31:55 +02:00
Goffi
b5a872aed3 core (constants): added theme key 2020-05-18 23:30:55 +02:00
Goffi
19a9e38983 tools (common/template): theme settings with possibility to disable default fallback for CSS:
- themes can now have a `settings.json` file at their root to modify the renderer
  behaviour
- the `css_default_fallback` boolean (true by default) can be used to disable the fallback
  mechanism when CSS files are checked. Useful when a theme doesn't follow the CSS naming of
  default theme.
- introduced some type hints
2020-05-03 17:01:39 +02:00
Goffi
2908be8898 tools (common/template): typos 2020-05-03 13:40:04 +02:00
Goffi
3f735d406e tools (common/template): list themes and parse their browser data, available through new getThemesData method 2020-05-01 16:26:39 +02:00
Goffi
794b5be810 tools (common/utils): new recursive_update method for dicts 2020-04-29 13:53:00 +02:00
Goffi
a5aac84c6a tools (common/data_objects): added __iter__ to Identities 2020-04-25 15:54:26 +02:00
Goffi
ee53fae57b bin (sat): check twistd before twistd3 to use venv version first 2020-04-20 14:52:57 +02:00
Goffi
81650a8ed4 plugin identity: fixed update when cached data is None 2020-04-20 14:51:58 +02:00
Goffi
5b217e1b40 tools (common/data_objects): new avatar_basename property 2020-04-19 22:52:15 +02:00
Goffi
f85cdc7f37 doc (installation): updated instructions for backend 2020-04-19 16:54:13 +02:00
Goffi
47ec15cc46 core: image convertion + SVG support:
/!\ new optional dependency: CairoSVG (with installed `[SVG]` extra)

- new `convert` method in `tools.image` to save an image in an other format, with support
  for SVG (when CairoSVG is available)
- new `imageConvert` method is available for frontends
2020-04-19 16:53:44 +02:00
Goffi
2591e8e444 plugin XEP-0054: SVG images can now be uploaded for avatars. 2020-04-19 16:40:34 +02:00
Goffi
678adcb697 plugin identity: fixed update with get_all + better new data detection for avatar:
- when metadata doesn't exist, update with `get_all` set doesn't crash anymore.
- fixed avatarUpdateIsNewData
2020-04-19 16:38:46 +02:00
Goffi
95ae0f7257 changelog: update 2020-04-14 21:01:13 +02:00
Goffi
7a2ab7c468 jp (roster): new roster/set command 2020-04-14 21:01:04 +02:00
Goffi
88072e0453 core, frontends: avatar refactoring:
/!\ huge commit

Avatar logic has been reworked around the IDENTITY plugin: plugins able to handle avatar
or other identity related metadata (like nicknames) register to IDENTITY plugin in the
same way as for other features like download/upload. Once registered, IDENTITY plugin will
call them when suitable in order of priority, and handle caching.

Methods to manage those metadata from frontend now use serialised data.

For now `avatar` and `nicknames` are handled:

- `avatar` is now a dict with `path` + metadata like `media_type`, instead of just a string
  path
- `nicknames` is now a list of nicknames in order of priority. This list is never empty,
  and `nicknames[0]` should be the preferred nickname to use by frontends in most cases.
  In addition to contact specified nicknames, user set nickname (the one set in roster) is
  used in priority when available.

Among the side changes done with this commit, there are:

- a new `contactGet` bridge method to get roster metadata for a single contact
- SatPresenceProtocol.send returns a Deferred to check when it has actually been sent
- memory's methods to handle entities data now use `client` as first argument
- metadata filter can be specified with `getIdentity`
- `getAvatar` and `setAvatar` are now part of the IDENTITY plugin instead of XEP-0054 (and
  there signature has changed)
- `isRoom` and `getBareOrFull` are now part of XEP-0045 plugin
- jp avatar/get command uses `xdg-open` first when available for `--show` flag
- `--no-cache` has been added to jp avatar/get and identity/get
- jp identity/set has been simplified, explicit options (`--nickname` only for now) are
  used instead of `--field`. `--field` may come back in the future if necessary for extra
  data.
- QuickContactList `SetContact` now handle None as a value, and doesn't use it to delete the
  metadata anymore
- improved cache handling for `metadata` and `nicknames` in quick frontend
- new `default` argument in QuickContactList `getCache`
2020-04-14 21:00:33 +02:00
Goffi
68a4d8ea98 core (memory/persistent): fixed "items", added "all" + "adel" to LazyPersistentBinaryDict:
- `items` was returning the dict with all values, it now returns a Deferred with actual dict items()
- `all` new method does return the dict with all values (in a Deferred)
- `adel` has been added to LazyPersistentBinaryDict
2020-04-14 20:36:24 +02:00
Goffi
7fb86a0af4 tools (image): added a guess_type method to guess media type:
media type is guessed first from filename, then if it's not enough, the file is opened to
try to guess type. If it still can be determined, None is returned.
2020-04-14 20:29:37 +02:00
Goffi
4bb69e971d doc (config): fixed documentation about configuration file possible paths + minor corrections. 2020-04-14 20:26:47 +02:00