Mercurial > libervia-backend
annotate libervia/cli/constants.py @ 4231:e11b13418ba6
plugin XEP-0353, XEP-0234, jingle: WebRTC data channel signaling implementation:
Implement XEP-0343: Signaling WebRTC Data Channels in Jingle. The current version of the
XEP (0.3.1) has no implementation and contains some flaws. After discussing this on xsf@,
Daniel (from Conversations) mentioned that they had a sprint with Larma (from Dino) to
work on another version and provided me with this link:
https://gist.github.com/iNPUTmice/6c56f3e948cca517c5fb129016d99e74 . I have used it for my
implementation.
This implementation reuses work done on Jingle A/V call (notably XEP-0176 and XEP-0167
plugins), with adaptations. When used, XEP-0234 will not handle the file itself as it
normally does. This is because WebRTC has several implementations (browser for web
interface, GStreamer for others), and file/data must be handled directly by the frontend.
This is particularly important for web frontends, as the file is not sent from the backend
but from the end-user's browser device.
Among the changes, there are:
- XEP-0343 implementation.
- `file_send` bridge method now use serialised dict as output.
- New `BaseTransportHandler.is_usable` method which get content data and returns a boolean
(default to `True`) to tell if this transport can actually be used in this context (when
we are initiator). Used in webRTC case to see if call data are available.
- Support of `application` media type, and everything necessary to handle data channels.
- Better confirmation message, with file name, size and description when available.
- When file is accepted in preflight, it is specified in following `action_new` signal for
actual file transfer. This way, frontend can avoid the display or 2 confirmation
messages.
- XEP-0166: when not specified, default `content` name is now its index number instead of
a UUID. This follows the behaviour of browsers.
- XEP-0353: better handling of events such as call taken by another device.
- various other updates.
rel 441
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 06 Apr 2024 12:57:23 +0200 |
parents | 0f8ea0768a3b |
children | 0d7bb4df2343 |
rev | line source |
---|---|
3137 | 1 #!/usr/bin/env python3 |
2 | |
970
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 # Primitivus: a SAT frontend |
3479 | 5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org) |
970
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 # (at your option) any later version. |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 # GNU Affero General Public License for more details. |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
4074
26b7ed2817da
refactoring: rename `sat_frontends` to `libervia.frontends`
Goffi <goffi@goffi.org>
parents:
4071
diff
changeset
|
20 from libervia.frontends.quick_frontend import constants |
4071
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
3661
diff
changeset
|
21 from libervia.backend.tools.common.ansi import ANSI as A |
4129 | 22 from rich.theme import Theme |
970
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 class Const(constants.Const): |
2e052998c7eb
jp: using C.APP_URL for application url
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 |
3555
53fec6309fa3
cli: update constants to use new name
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
27 APP_NAME = "Libervia CLI" |
53fec6309fa3
cli: update constants to use new name
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
28 APP_COMPONENT = "CLI" |
53fec6309fa3
cli: update constants to use new name
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
29 APP_NAME_ALT = "jp" |
53fec6309fa3
cli: update constants to use new name
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
30 APP_NAME_FILE = "libervia_cli" |
53fec6309fa3
cli: update constants to use new name
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
31 CONFIG_SECTION = APP_COMPONENT.lower() |
3028 | 32 PLUGIN_CMD = "commands" |
33 PLUGIN_OUTPUT = "outputs" | |
4206 | 34 #: All outputs are managed directly by the command, ``extra_outputs`` must be |
35 #: specified. | |
36 OUTPUT_CUSTOM = "custom" | |
3028 | 37 OUTPUT_TEXT = "text" # blob of unicode text |
38 OUTPUT_DICT = "dict" # simple key/value dictionary | |
39 OUTPUT_LIST = "list" | |
40 OUTPUT_LIST_DICT = "list_dict" # list of dictionaries | |
41 OUTPUT_DICT_DICT = "dict_dict" # dict of nested dictionaries | |
42 OUTPUT_MESS = "mess" # messages (chat) | |
43 OUTPUT_COMPLEX = "complex" # complex data (e.g. multi-level dictionary) | |
44 OUTPUT_XML = "xml" # XML node (as unicode string) | |
45 OUTPUT_LIST_XML = "list_xml" # list of XML nodes (as unicode strings) | |
46 OUTPUT_XMLUI = "xmlui" # XMLUI as unicode string | |
47 OUTPUT_LIST_XMLUI = "list_xmlui" # list of XMLUI (as unicode strings) | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
48 OUTPUT_TYPES = ( |
4206 | 49 OUTPUT_CUSTOM, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
50 OUTPUT_TEXT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
51 OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
52 OUTPUT_LIST, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
53 OUTPUT_LIST_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
54 OUTPUT_DICT_DICT, |
2707
b156b78b8f9a
jp (output): new OUTPUT_MESS output to handle data containing chat messages
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
55 OUTPUT_MESS, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
56 OUTPUT_COMPLEX, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
57 OUTPUT_XML, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
58 OUTPUT_LIST_XML, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
59 OUTPUT_XMLUI, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
60 OUTPUT_LIST_XMLUI, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
61 ) |
3640
f4c02bdb2d91
CLI: use global constants for output names
Goffi <goffi@goffi.org>
parents:
3555
diff
changeset
|
62 OUTPUT_NAME_SIMPLE = "simple" |
f4c02bdb2d91
CLI: use global constants for output names
Goffi <goffi@goffi.org>
parents:
3555
diff
changeset
|
63 OUTPUT_NAME_XML = "xml" |
f4c02bdb2d91
CLI: use global constants for output names
Goffi <goffi@goffi.org>
parents:
3555
diff
changeset
|
64 OUTPUT_NAME_XML_RAW = "xml-raw" |
f4c02bdb2d91
CLI: use global constants for output names
Goffi <goffi@goffi.org>
parents:
3555
diff
changeset
|
65 OUTPUT_NAME_JSON = "json" |
f4c02bdb2d91
CLI: use global constants for output names
Goffi <goffi@goffi.org>
parents:
3555
diff
changeset
|
66 OUTPUT_NAME_JSON_RAW = "json-raw" |
1951
ac89f455fcbf
jp: added consts for exit codes, not used yet
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
67 |
2532 | 68 # Pubsub options flags |
3028 | 69 SERVICE = "service" # service required |
70 NODE = "node" # node required | |
71 ITEM = "item" # item required | |
72 SINGLE_ITEM = "single_item" # only one item is allowed | |
73 MULTI_ITEMS = "multi_items" # multiple items are allowed | |
74 NO_MAX = "no_max" # don't add --max option for multi items | |
3600
1709f0a78f50
jp (base): add flag for `use_pubsub` to add cache skipping option
Goffi <goffi@goffi.org>
parents:
3555
diff
changeset
|
75 CACHE = "cache" # add cache control flag |
2532 | 76 |
2232
4f389486667d
jp: added constant to handle ANSI code for header and subheaders
Goffi <goffi@goffi.org>
parents:
2190
diff
changeset
|
77 # ANSI |
4f389486667d
jp: added constant to handle ANSI code for header and subheaders
Goffi <goffi@goffi.org>
parents:
2190
diff
changeset
|
78 A_HEADER = A.BOLD + A.FG_YELLOW |
4f389486667d
jp: added constant to handle ANSI code for header and subheaders
Goffi <goffi@goffi.org>
parents:
2190
diff
changeset
|
79 A_SUBHEADER = A.BOLD + A.FG_RED |
2485
512c443a58ba
jp (forums): forums handling commands, first draft
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
80 # A_LEVEL_COLORS may be used to cycle on colors according to depth of data |
512c443a58ba
jp (forums): forums handling commands, first draft
Goffi <goffi@goffi.org>
parents:
2483
diff
changeset
|
81 A_LEVEL_COLORS = (A_HEADER, A.BOLD + A.FG_BLUE, A.FG_MAGENTA, A.FG_CYAN) |
2278
489efbda377c
jp (input): input command first draft:
Goffi <goffi@goffi.org>
parents:
2268
diff
changeset
|
82 A_SUCCESS = A.BOLD + A.FG_GREEN |
489efbda377c
jp (input): input command first draft:
Goffi <goffi@goffi.org>
parents:
2268
diff
changeset
|
83 A_FAILURE = A.BOLD + A.FG_RED |
3040 | 84 A_WARNING = A.BOLD + A.FG_RED |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2601
diff
changeset
|
85 # A_PROMPT_* is for shell |
2355 | 86 A_PROMPT_PATH = A.BOLD + A.FG_CYAN |
2309
c7a72b75232b
jp (shell): shell command (REPL mode), first draft:
Goffi <goffi@goffi.org>
parents:
2295
diff
changeset
|
87 A_PROMPT_SUF = A.BOLD |
2505
8e770ac05b0c
jp (file): file sharing + improvments:
Goffi <goffi@goffi.org>
parents:
2485
diff
changeset
|
88 # Files |
8e770ac05b0c
jp (file): file sharing + improvments:
Goffi <goffi@goffi.org>
parents:
2485
diff
changeset
|
89 A_DIRECTORY = A.BOLD + A.FG_CYAN |
8e770ac05b0c
jp (file): file sharing + improvments:
Goffi <goffi@goffi.org>
parents:
2485
diff
changeset
|
90 A_FILE = A.FG_WHITE |
4129 | 91 |
92 # rich | |
93 THEME_DEFAULT = Theme({ | |
94 "priority_low": "green", | |
95 "priority_medium": "yellow", | |
96 "priority_high": "bold magenta", | |
97 "priority_urgent": "bold red", | |
98 "notif_title": "bold", | |
4143 | 99 "shortcut": "bold underline" |
4129 | 100 }) |