đ Utilisation#
Important
Dans les exemples de commandes en mode script, olvid-cli peut ĂȘtre remplacĂ© par nâimporte quel moyen de lancer la CLI (docker ou python).
Principe#
La CLI Olvid implémente un certain nombre de commandes subdivisées en groupes de commandes.
Par exemple, le groupe de commande identity rassemble un ensemble de commandes qui permettent de gérer les identités présentes sur le daemon. Parmi elles, les commandes new, get et rm qui permettent respectivement de créer, lister et supprimer les identités.
Voici des exemples de commandes valides :
identity new FirstName LastName
identity get
identity rm 1
A tout moment, vous pouvez obtenir la liste des groupes, des commandes et les usages associĂ©s en ajoutant --help Ă la fin de votre commande (mĂȘme incomplĂšte).
# list available command groups
--help
# list commands related to identties
identity --help
# show identity new command usage
identity new --help
Mode interactif / Mode script#
En lançant la CLI sans passer dâargument, par dĂ©faut elle se lance en mode interactif.
Il est Ă©galement possible dâexĂ©cuter une commande directement en la passant en argument. Par exemple :
olvid-cli identity get
ExĂ©cutera la commande identity get puis sâarrĂȘtera automatiquement. Câest ce que lâon appellera le mode script pour la suite des exemples.
Identité courante#
La plupart des commandes de la CLI nĂ©cessitent de spĂ©cifier une identitĂ© Ă utiliser. Par exemple, lister les discussions ou envoyer un message doit ĂȘtre fait « en tant que » telle identitĂ©.
Pour cela, on va utiliser lâidentifiant de lâidentitĂ© en question (un nombre). La maniĂšre de passer cet identifiant varie en fonction du mode de fonctionnement actuel de la CLI.
Mode interactif
En mode interactif, la CLI sĂ©lectionne automatiquement, au lancement, la premiĂšre identitĂ© disponible. Elle affiche lâidentitĂ© utilisĂ©e dans le prompt.
Il est cependant possible de changer lâidentitĂ© utilisĂ©e Ă lâaide de la commande suivante.
# change current identity to 2
1 > identity current 2
# show current identity
2 > identity current
Mode script
En mode script, si la commande le nĂ©cessite, on utilisera lâoption -i pour spĂ©cifier lâidentitĂ© Ă utiliser. Par exemple, pour lister les messages de lâidentitĂ© 1.
olvid-cli -i 1 message get
Indication
lâoption -i doit impĂ©rativement se trouver avant le debut de la commande, ici avant message get.
Lister des éléments#
Tous les groupes de commandes liĂ©s Ă une entitĂ© (identitĂ©, discussion, message, âŠ) implĂ©mentent la commande get qui permet de lister les Ă©lĂ©ments associĂ©s.
Pour nâafficher que certains champs des entitĂ©s, il est possible dâutiliser lâoption -f ou âfields suivie dâune liste de nom de champs de lâentitĂ© en question sĂ©parĂ©e par des virgules.
Chaque commande get peut Ă©galement implĂ©menter ses spĂ©cificitĂ©s, nous vous invitons donc Ă vĂ©rifier les options et arguments supplĂ©mentaires quâelle pourrait implĂ©menter Ă lâaide de lâoption âhelp.
Voici quelques exemples de commandes liées à la liste des éléments :
# Show display name for every identity
1> identity get --fields display_name
# List id and body of 1st identity messages
1 > message get --fields id,body
Gestion des clés client#
Le groupe de commandes key permet de gĂ©rer les clĂ©s clients du daemon. Il ne nĂ©cessite pas dâidentitĂ© courante puisque les clĂ©s clients sont globales.
Une clĂ© client est soit associĂ©e Ă une identitĂ©, câest le cas des clĂ©s client utilisĂ©es pour nos programmes, soit elle est administratrice, elle peut choisir quelle identitĂ© elle veut utiliser Ă chaque appel API. Câest le cas de la clĂ© client utilisĂ©e par la CLI.
Les clĂ©s client ont un nom associĂ©. Il nâest pas utilisĂ© et a juste pour but dâaider Ă les gĂ©rer.
Voici des exemples de commandes liées à la gestion des clés clients :
# List client keys
key get
# Create admin client key
key new key-name 0
# Create client key for identity 1
key new my-client-key 1
# Delete a client key (we pass the key, not it's name)
key rm 00000000-0000-0000-0000-000000000000
Stockage#
LâAPI de stockage du daemon permet de stocker des donnĂ©es arbitraires sous forme de clĂ©s-valeurs dans la base de donnĂ©es du daemon.
Ces éléments sont tous associés à une clé client non-administrateur. Cela permet à la fois de scinder le stockage par client et de restaurer correctement les éléments stockés en cas de restauration de sauvegarde.
Pour accĂ©der aux Ă©lĂ©ments de stockage Ă lâaide de la CLI, il faut donc spĂ©cifier la clĂ© client Ă utiliser.
Mode interactif
# We specify that, from now, we want to use a different client key than the admin client key
1 > key impersonate 00000000-0000-0000-0000-000000000000
# Now we can use storage api for this client key
1 > storage get
Mode script
En mode script, on utilise lâoption -k de maniĂšre similaire Ă lâoption -i.
olvid-cli -k 00000000-0000-0000-0000-000000000000 storage get
Le stockage du daemon contient deux types de stockage : un stockage global et un stockage par discussion. Dans le second cas, il est possible de stocker dans plusieurs discussions plusieurs valeurs pour une mĂȘme clĂ©.
Le stockage du daemon prĂ©sente deux intĂ©rĂȘts majeurs :
simplicitĂ© dâusage et de dĂ©ploiement : pas besoin de mettre en place un systĂšme de stockage cĂŽtĂ© client.
rĂ©silience aux sauvegardes : le stockage du daemon est sauvegardĂ© en utilisant le mĂȘme mĂ©canisme que le reste des donnĂ©es du daemon. Cela assure plus de robustesse, mais surtout il permet dâĂȘtre rĂ©silient aux changements dâidentifiants qui ont lieu lors dâune restauration de sauvegarde.