diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2020-05-02 12:28:14 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2020-05-02 12:28:14 +0200 |
commit | 46a2979aa1bfee3830bed5fb8a6d71b1570f6495 (patch) | |
tree | 4dc0a7295ddaac62b7add0d2781fcc76643d2ddf /doc/fr/weechat_relay_protocol.fr.adoc | |
parent | 5b4d690ed7101d92fd96f57c4c40fbfd85a5a2fb (diff) | |
download | weechat-46a2979aa1bfee3830bed5fb8a6d71b1570f6495.zip |
doc: add examples of command responses in relay protocol
Diffstat (limited to 'doc/fr/weechat_relay_protocol.fr.adoc')
-rw-r--r-- | doc/fr/weechat_relay_protocol.fr.adoc | 707 |
1 files changed, 627 insertions, 80 deletions
diff --git a/doc/fr/weechat_relay_protocol.fr.adoc b/doc/fr/weechat_relay_protocol.fr.adoc index bc482859d..34887a86f 100644 --- a/doc/fr/weechat_relay_protocol.fr.adoc +++ b/doc/fr/weechat_relay_protocol.fr.adoc @@ -9,14 +9,13 @@ :docinfo1: +[[introduction]] +== Introduction + Ce document est une spécification du protocole Relay de WeeChat : le protocole utilisé pour relayer les données de WeeChat aux clients, qui sont surtout des interfaces distantes. - -[[introduction]] -== Introduction - [[terminology]] === Terminologie @@ -179,21 +178,58 @@ suivantes : _relay_ + le nonce client constituent le sel utilisé dans l'algorithme de hachage du mot de passe) +[TIP] +Avec WeeChat ≤ 2.8, la commande _handshake_ n'est pas implémentée, WeeChat ignore +silencieusement cette commande, même si elle est envoyée avant la commande _init_. + +Il est donc sûr d'envoyer cette commande à n'importe quelle version de WeeChat. + Exemples : +* Rien d'offert par le client, l'authentification par mot de passe "plain" sera utilisée si autorisée côté relay : + +---- +(handshake) handshake +---- + +Réponse : + +[source,python] +---- +id: 'handshake' +htb: { + 'password_hash_algo': 'plain', + 'password_hash_iterations': '100000', + 'totp': 'on', + 'nonce': '85B1EE00695A5B254E14F4885538DF0D', +} +---- + +* Seulement "plain" est supporté par le client : + +---- +(handshake) handshake password_hash_algo=plain ---- -# rien d'offert par le client (ou seulement "plain"), l'authentification par mot de passe "plain" sera utilisée si autorisée côté relay -handshake -handshake password_hash_algo=plain -# seulement plain, sha256 et pbkdf2+sha256 sont supportés par le client -handshake password_hash_algo=plain:sha256:pbkdf2+sha256 +Réponse : -# seulement sha256 et sha512 sont supportés par le client, désactiver la compression -handshake password_hash_algo=sha256:sha512,compression=off +[source,python] +---- +id: 'handshake' +htb: { + 'password_hash_algo': 'plain', + 'password_hash_iterations': '100000', + 'totp': 'on', + 'nonce': '85B1EE00695A5B254E14F4885538DF0D', +} +---- + +* Seulement "plain", "sha256" et "pbkdf2+sha256" sont supportés par le client : + +---- +(handshake) handshake password_hash_algo=plain:sha256:pbkdf2+sha256 ---- -Exemple de réponse : +Réponse : [source,python] ---- @@ -214,10 +250,24 @@ le mot de passe est "test" dans cet exemple : init password_hash=pbkdf2+sha256:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:100000:ba7facc3edb89cd06ae810e29ced85980ff36de2bb596fcf513aaab626876440 ---- -[TIP] -Avec WeeChat ≤ 2.8, la commande _handshake_ n'est pas implémentée, WeeChat ignore -silencieusement cette commande, même si elle est envoyée avant la commande _init_. + -Il est donc sûr d'envoyer cette commande à n'importe quelle version de WeeChat. +* Seulement "sha256" et "sha512" sont supportés par le client, désactiver la compression : + +---- +(handshake) handshake password_hash_algo=sha256:sha512,compression=off +---- + +Réponse : + +[source,python] +---- +id: 'handshake' +htb: { + 'password_hash_algo': 'sha512', + 'password_hash_iterations': '100000', + 'totp': 'on', + 'nonce': '85B1EE00695A5B254E14F4885538DF0D', +} +---- [[command_init]] === init @@ -288,26 +338,42 @@ peut décoder les deux. Exemples : +* Initialiser avec un mot de passe : + ---- -# initialiser et utiliser la compression zlib par défaut (si WeeChat la supporte) init password=mypass +---- + +* Initialiser avec des virgules dans le mot de passe _(WeeChat ≥ 1.6)_ : -# initialiser avec des virgules dans le mot de passe (WeeChat ≥ 1.6) +---- init password=mypass\,avec\,virgules +---- + +* Initialiser avec le mot de passe et TOTP _(WeeChat ≥ 2.4)_ : -# initialiser avec le mot de passe et TOTP (WeeChat ≥ 2.4) +---- init password=mypass,totp=123456 +---- -# initialiser et désactiver la compression -init password=mypass,compression=off +* Initialiser avec le mot de passe haché "test" (SHA256 : sel=nonce relay + nonce client) + _(WeeChat ≥ 2.9)_ : -# initialiser avec le mot de passe haché "test" (SHA256 : sel=nonce relay + nonce client) (WeeChat ≥ 2.9) +---- init password_hash=sha256:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:2c6ed12eb0109fca3aedc03bf03d9b6e804cd60a23e1731fd17794da423e21db +---- + +* Initialiser avec le mot de passe haché "test" (SHA512 : sel=nonce relay + nonce client) + _(WeeChat ≥ 2.9)_ : -# initialiser avec le mot de passe haché "test" (SHA512 : sel=nonce relay + nonce client) (WeeChat ≥ 2.9) +---- init password_hash=sha512:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:0a1f0172a542916bd86e0cbceebc1c38ed791f6be246120452825f0d74ef1078c79e9812de8b0ab3dfaf598b6ca14522374ec6a8653a46df3f96a6b54ac1f0f8 +---- + +* Initialiser avec le mot de passe haché "test" (PBKDF2 : SHA256, + sel=nonce relay + nonce client, 100000 itérations) _(WeeChat ≥ 2.9)_ : -# initialiser avec le mot de passe haché "test" (PBKDF2 : SHA256, sel=nonce relay + nonce client, 100000 itérations) (WeeChat ≥ 2.9) +---- init password_hash=pbkdf2+sha256:85b1ee00695a5b254e14f4885538df0da4b73207f5aae4:100000:ba7facc3edb89cd06ae810e29ced85980ff36de2bb596fcf513aaab626876440 ---- @@ -350,21 +416,131 @@ Avec des versions plus anciennes, rien n'était retourné. Exemples : +* Demander "number" et "full_name" de tous les tampons : + +---- +(hdata_buffers) hdata buffer:gui_buffers(*) number,full_name ---- -# demander tous les tampons, un hdata de type "buffer" est retourné -# les clés "number" et "name" sont retournées pour chaque tampon -hdata buffer:gui_buffers(*) number,name -# demander toutes les lignes de tous les tampons, un hdata de type "line_data" -# est retourné -# toutes les clés sont retournées -hdata buffer:gui_buffers(*)/lines/first_line(*)/data +Réponse : + +[source,python] +---- +id: 'hdata_buffers' +hda: + keys: { + 'number': 'int', + 'full_name': 'str', + } + path: ['buffer'] + item 1: + __path: ['0x558d61ea3e60'] + number: 1 + full_name: 'core.weechat' + item 2: + __path: ['0x558d62840ea0'] + number: 1 + full_name: 'irc.server.freenode' + item 3: + __path: ['0x558d62a9cea0'] + number: 2 + full_name: 'irc.freenode.#weechat' +---- -# demander le nom complet du premier tampon -hdata buffer:gui_buffers full_name +* Demander toutes les lignes du premier tampon : -# demander le contenu de la hotlist -hdata hotlist:gui_hotlist(*) +---- +(hdata_lines) hdata buffer:gui_buffers/own_lines/first_line(*)/data +---- + +Réponse : + +[source,python] +---- +id: 'hdata_lines' +hda: + keys: { + 'buffer': 'ptr', + 'y': 'int', + 'date': 'tim', + 'date_printed': 'tim', + 'str_time': 'str', + 'tags_count': 'int', + 'tags_array': 'arr', + 'displayed': 'chr', + 'notify_level': 'chr', + 'highlight': 'chr', + 'refresh_needed': 'chr', + 'prefix': 'str', + 'prefix_length': 'int', + 'message': 'str', + } + path: ['buffer', 'lines', 'line', 'line_data'] + item 1: + __path: ['0x558d61ea3e60', '0x558d61ea40e0', '0x558d62920d80', '0x558d62abf040'] + buffer: '0x558d61ea3e60' + y: -1 + date: 1588404926 + date_printed: 1588404926 + str_time: 'F@0025209F@0024535F@0024026' + tags_count: 0 + tags_array: [] + displayed: 1 + notify_level: 0 + highlight: 0 + refresh_needed: 0 + prefix: '' + prefix_length: 0 + message: 'this is the first line' + item 2: + __path: ['0x558d61ea3e60', '0x558d61ea40e0', '0x558d626779f0', '0x558d62af9700'] + buffer: '0x558d61ea3e60' + y: -1 + date: 1588404930 + date_printed: 1588404930 + str_time: 'F@0025209F@0024535F@0024030' + tags_count: 0 + tags_array: [] + displayed: 1 + notify_level: 0 + highlight: 0 + refresh_needed: 0 + prefix: '' + prefix_length: 0 + message: 'this is the second line' +---- + +* Demander le contenu de la hotlist : + +---- +(hdata_hotlist) hdata hotlist:gui_hotlist(*) +---- + +Réponse : + +[source,python] +---- +id: 'hdata_hotlist' +hda: + keys: { + 'priority': 'int', + 'creation_time.tv_sec': 'tim', + 'creation_time.tv_usec': 'lon', + 'buffer': 'ptr', + 'count': 'arr', + 'prev_hotlist': 'ptr', + 'next_hotlist': 'ptr', + } + path: ['hotlist'] + item 1: + __path: ['0x558d629601b0'] + priority: 3 + creation_time.tv_sec: 1588405398 + creation_time.tv_usec: 355383 + buffer: '0x558d62a9cea0' + count: [1, 1, 0, 1] + prev_hotlist: '0x0' + next_hotlist: '0x0' ---- [[command_info]] @@ -383,10 +559,48 @@ Paramètres : * _nom_ : nom de l'info à obtenir * _paramètres_ : paramètres pour l'info (facultatif) -Exemple : +Exemples : + +* Demander la version de WeeChat : + +---- +(info_version) info version +---- +Réponse : + +[source,python] ---- -info version +id: 'info_version' +inf: ('version', '2.9-dev') +---- + +* Demander la version de WeeChat sous forme de nombre : + +---- +(info_version_number) info version_number +---- + +Réponse : + +[source,python] +---- +id: 'info_version_number' +inf: ('version_number', '34144256') +---- + +* Demander le répertoire de WeeChat : + +---- +(info_weechat_dir) info weechat_dir +---- + +Réponse : + +[source,python] +---- +id: 'info_weechat_dir' +inf: ('weechat_dir', '/home/xxx/.weechat') ---- [[command_infolist]] @@ -412,10 +626,115 @@ Paramètres : * _pointeur_ : pointeur (facultatif) * _paramètres_ : paramètres (facultatif) -Exemple : +Exemples : + +* Demander l'infolist "buffer" : ---- -infolist buffer +(infolist_buffer) infolist buffer +---- + +Réponse : + +[source,python] +---- +id: 'infolist_buffer' +inl: + name: buffer + item 1: + pointer: '0x558d61ea3e60' + current_buffer: 1 + plugin: '0x0' + plugin_name: 'core' + number: 1 + layout_number: 1 + layout_number_merge_order: 0 + name: 'weechat' + full_name: 'core.weechat' + old_full_name: None + short_name: 'weechat' + type: 0 + notify: 3 + num_displayed: 1 + active: 1 + hidden: 0 + zoomed: 0 + print_hooks_enabled: 1 + day_change: 1 + clear: 1 + filter: 1 + closing: 0 + first_line_not_read: 0 + lines_hidden: 0 + prefix_max_length: 0 + time_for_each_line: 1 + nicklist_case_sensitive: 0 + nicklist_display_groups: 1 + nicklist_max_length: 0 + nicklist_count: 0 + nicklist_groups_count: 0 + nicklist_nicks_count: 0 + nicklist_visible_count: 0 + title: 'WeeChat 2.9-dev (C) 2003-2020 - https://weechat.org/' + input: 1 + input_get_unknown_commands: 0 + input_get_empty: 0 + input_buffer: '' + input_buffer_alloc: 256 + input_buffer_size: 0 + input_buffer_length: 0 + input_buffer_pos: 0 + input_buffer_1st_display: 0 + num_history: 0 + text_search: 0 + text_search_exact: 0 + text_search_regex: 0 + text_search_regex_compiled: '0x0' + text_search_where: 0 + text_search_found: 0 + text_search_input: None + highlight_words: None + highlight_regex: None + highlight_regex_compiled: '0x0' + highlight_tags_restrict: None + highlight_tags: None + hotlist_max_level_nicks: None + keys_count: 0 + localvar_name_00000: 'plugin' + localvar_value_00000: 'core' + localvar_name_00001: 'name' + localvar_value_00001: 'weechat' +---- + +* Demander l'infolist "window" : + +---- +(infolist_window) infolist window +---- + +Réponse : + +[source,python] +---- +id: 'infolist_window' +inl: + name: window + item 1: + pointer: '0x558d61ddc800' + current_window: 1 + number: 1 + x: 14 + y: 0 + width: 259 + height: 71 + width_pct: 100 + height_pct: 100 + chat_x: 14 + chat_y: 1 + chat_width: 259 + chat_height: 68 + buffer: '0x558d61ea3e60' + start_line_y: 0 ---- [[command_nicklist]] @@ -436,12 +755,187 @@ Paramètres : Exemples : +* Demander la liste de pseudos pour tous les tampons : + ---- -# demander la liste de pseudos pour tous les tampons -nicklist +(nicklist_all) nicklist +---- + +Réponse : -# demander la liste de pseudos pour irc.freenode.#weechat -nicklist irc.freenode.#weechat +[source,python] +---- +id: 'nicklist_all' +hda: + keys: { + 'group': 'chr', + 'visible': 'chr', + 'level': 'int', + 'name': 'str', + 'color': 'str', + 'prefix': 'str', + 'prefix_color': 'str', + } + path: ['buffer', 'nicklist_item'] + item 1: + __path: ['0x558d61ea3e60', '0x558d61ea4120'] + group: 1 + visible: 0 + level: 0 + name: 'root' + color: None + prefix: None + prefix_color: None + item 2: + __path: ['0x558d62840ea0', '0x558d61e75f90'] + group: 1 + visible: 0 + level: 0 + name: 'root' + color: None + prefix: None + prefix_color: None + item 3: + __path: ['0x558d62a9cea0', '0x558d62abf2e0'] + group: 1 + visible: 0 + level: 0 + name: 'root' + color: None + prefix: None + prefix_color: None + item 4: + __path: ['0x558d62a9cea0', '0x558d62afb9d0'] + group: 1 + visible: 1 + level: 1 + name: '000|o' + color: 'weechat.color.nicklist_group' + prefix: None + prefix_color: None + item 5: + __path: ['0x558d62a9cea0', '0x558d62aff930'] + group: 0 + visible: 1 + level: 0 + name: 'FlashCode' + color: 'weechat.color.chat_nick_self' + prefix: '@' + prefix_color: 'lightgreen' + item 6: + __path: ['0x558d62a9cea0', '0x558d62af9930'] + group: 1 + visible: 1 + level: 1 + name: '001|v' + color: 'weechat.color.nicklist_group' + prefix: None + prefix_color: None + item 7: + __path: ['0x558d62a9cea0', '0x558d62afc510'] + group: 1 + visible: 1 + level: 1 + name: '999|...' + color: 'weechat.color.nicklist_group' + prefix: None + prefix_color: None + item 8: + __path: ['0x558d62a9cea0', '0x558d6292c290'] + group: 0 + visible: 1 + level: 0 + name: 'flashy' + color: '142' + prefix: ' ' + prefix_color: 'lightblue' + item 9: + __path: ['0x558d62914680', '0x558d62afc4b0'] + group: 1 + visible: 0 + level: 0 + name: 'root' + color: None + prefix: None + prefix_color: None +---- + +* Demander la liste de pseudos pour le tampon "irc.freenode.#weechat" : + +---- +(nicklist_weechat) nicklist irc.freenode.#weechat +---- + +Réponse : + +[source,python] +---- +id: 'nicklist_weechat' +hda: + keys: { + 'group': 'chr', + 'visible': 'chr', + 'level': 'int', + 'name': 'str', + 'color': 'str', + 'prefix': 'str', + 'prefix_color': 'str', + } + path: ['buffer', 'nicklist_item'] + item 1: + __path: ['0x558d62a9cea0', '0x558d62abf2e0'] + group: 1 + visible: 0 + level: 0 + name: 'root' + color: None + prefix: None + prefix_color: None + item 2: + __path: ['0x558d62a9cea0', '0x558d62afb9d0'] + group: 1 + visible: 1 + level: 1 + name: '000|o' + color: 'weechat.color.nicklist_group' + prefix: None + prefix_color: None + item 3: + __path: ['0x558d62a9cea0', '0x558d62aff930'] + group: 0 + visible: 1 + level: 0 + name: 'FlashCode' + color: 'weechat.color.chat_nick_self' + prefix: '@' + prefix_color: 'lightgreen' + item 4: + __path: ['0x558d62a9cea0', '0x558d62af9930'] + group: 1 + visible: 1 + level: 1 + name: '001|v' + color: 'weechat.color.nicklist_group' + prefix: None + prefix_color: None + item 5: + __path: ['0x558d62a9cea0', '0x558d62afc510'] + group: 1 + visible: 1 + level: 1 + name: '999|...' + color: 'weechat.color.nicklist_group' + prefix: None + prefix_color: None + item 6: + __path: ['0x558d62a9cea0', '0x558d6292c290'] + group: 0 + visible: 1 + level: 0 + name: 'flashy' + color: '142' + prefix: ' ' + prefix_color: 'lightblue' ---- [[command_input]] @@ -465,8 +959,15 @@ Paramètres : Exemples : +* Envoyer la commande "/help filter" au tampon WeeChat core : + ---- input core.weechat /help filter +---- + +* Envoyer le message "bonjour !" sur le canal #weechat : + +---- input irc.freenode.#weechat bonjour ! ---- @@ -511,17 +1012,19 @@ WeeChat répond avec un hdata : En cas d'erreur, par exemple un tampon invalide ou une erreur interne du côté de WeeChat, un hdata vide est retourné. -Exemple : complétion d'un paramètre de commande : +Exemples : + +* Complétion d'un paramètre de commande : ---- -(test) completion core.weechat -1 /help fi +(completion_help) completion core.weechat -1 /help fi ---- Réponse : [source,python] ---- -id: 'test' +id: 'completion_help' hda: keys: { 'context': 'str', @@ -547,17 +1050,17 @@ hda: ] ---- -Exemple : complétion d'une commande au milieu d'un mot : +* Complétion d'une commande au milieu d'un mot : ---- -(test) completion core.weechat 5 /quernick +(completion_query) completion core.weechat 5 /quernick ---- Réponse : [source,python] ---- -id: 'test' +id: 'completion_query' hda: keys: { 'context': 'str', @@ -578,17 +1081,17 @@ hda: list: ['query'] ---- -Exemple : rien à compléter : +* Rien à compléter : ---- -(test) completion core.weechat -1 abcdefghijkl +(completion_abcdefghijkl) completion core.weechat -1 abcdefghijkl ---- Réponse : [source,python] ---- -id: 'test' +id: 'completion_abcdefghijkl' hda: keys: { 'context': 'str', @@ -609,17 +1112,17 @@ hda: list: [] ---- -Exemple : tampon invalide : +* Complétion sur un tampon invalide : ---- -(test) completion buffer.does.not.exist -1 /help fi +(completion_help) completion buffer.does.not.exist -1 /help fi ---- Réponse : [source,python] ---- -id: 'test' +id: 'completion_help' hda: keys: {} path: ['completion'] @@ -664,21 +1167,31 @@ Paramètres : Exemples : +* Synchroniser tous les tampons avec la liste de pseudos (les 3 commandes sont + équivalentes, mais la première est recommandée pour une compatibilité avec + les futures versions) : + ---- -# synchroniser tous les tampons avec la liste de pseudos -# (les 3 commandes sont équivalentes, mais la première est recommandée pour une -# compatibilité avec les futures versions) sync sync * sync * buffers,upgrade,buffer,nicklist +---- + +* Synchroniser avec le tampon WeeChat core : -# synchroniser le tampon "core" +---- sync core.buffer +---- + +* Synchroniser le canal #weechat, sans la liste de pseudos : -# synchroniser le canal #weechat, sans la liste de pseudos +---- sync irc.freenode.#weechat buffer +---- + +* Obtenir les signaux généraux + tous les signaux pour le canal #weechat : -# obtenir les signaux généraux + tous les signaux pour le canal #weechat +---- sync * buffers,upgrade sync irc.freenode.#weechat ---- @@ -719,19 +1232,25 @@ WeeChat (vous devez le retirer explicitement pour stopper les mises à jour). Exemples : +* Désynchroniser tous les tampons (les 3 commandes sont équivalentes, mais la + première est recommandée pour une compatibilité avec les futures versions) : + ---- -# désynchroniser tous les tampons -# (les 3 commandes sont équivalentes, mais la première est recommandée pour une -# compatibilité avec les futures versions) desync desync * desync * buffers,upgrade,buffer,nicklist +---- -# désynchroniser la liste de pseudos pour le canal #weechat -# (garder les mises à jour du tampon) +* Désynchroniser la liste de pseudos pour le canal #weechat (garder les + mises à jour du tampon) : + +---- desync irc.freenode.#weechat nicklist +---- -# désynchroniser le canal #weechat +* Désynchroniser le canal #weechat : + +---- desync irc.freenode.#weechat ---- @@ -743,21 +1262,10 @@ Commande de test : WeeChat répondra avec différents objets. Cette commande est utile pour tester le décodage d'objets binaires retournés par WeeChat. -[IMPORTANT] -Vous ne devez pas utiliser les pointeurs retournés par cette commande, ils ne -sont pas valides. Cette commande doit être utilisée seulement pour tester le -décodage d'un message envoyé par WeeChat. - Syntaxe : ---- -test ----- - -Exemple : - ----- -test +(id) test ---- Objets retournés (dans cet ordre) : @@ -782,6 +1290,38 @@ Objets retournés (dans cet ordre) : | tableau d'entiers | arr int | [ 123, 456, 789 ] |=== +[IMPORTANT] +Vous ne devez pas utiliser les pointeurs retournés par cette commande, ils ne +sont pas valides. Cette commande doit être utilisée seulement pour tester le +décodage d'un message envoyé par WeeChat. + +Exemple : + +---- +(test) test +---- + +Réponse : + +---- +id: 'test' +chr: 65 +int: 123456 +int: -123456 +lon: 1234567890 +lon: -1234567890 +str: 'a string' +str: '' +str: None +buf: 'buffer' +buf: None +ptr: '0x1234abcd' +ptr: '0x0' +tim: 1321993456 +arr: ['abc', 'de'] +arr: [123, 456, 789] +---- + [[command_ping]] === ping @@ -805,6 +1345,13 @@ Exemple : ping 1370802127000 ---- +Réponse : + +---- +id:'_pong' +str: '1370802127000' +---- + [[command_quit]] === quit @@ -1226,7 +1773,7 @@ hda: 'type': 'private', 'channel': 'FlashCode', 'nick': 'test', - 'name': 'local.Flash2', + 'name': 'freenode.Flash2', } ---- |