🏁 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.