Ğcli a command line tool for Duniter v2

Ğcli is a command line tool for Duniter v2 written in Rust and based on subxt

https://git.duniter.org/clients/rust/gcli-v2s

It is a good project to discover Rust and Duniter v2 ecosystem client-side.

5 Likes

I am getting

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Rpc(Transport(Error when opening the TCP socket: Connection refused (os error 111)))

This error is not very explicit… I’ll have to dig in subxt to find where it comes from.

It’s come from this line: src/main.rs · master · clients / Rust / Ğcli-v2s · GitLab

To handle this error, just replace .unwrap() by ? :wink:

Reraising the error or unwrapping it are the same, it is still a low level error that prevents me from opening the port. I suspect it is linked with TLS but I still have to dig ><

Yes, gcli-v2s does not yet support tls, it is still a very recent project on which very little dev time has been spent.

EDIT: So, you need to use an endpoint without tls, for instance with a ssh bridge.

1 Like

@HugoTrentesaux I’ve just investigated the code of subxt and tested, and in fact the lib used by gcli-v2s already handles tls natively without us having to do anything.
But you have to prefix the url with wss://, indicating the port is not enough.
Also, the system’s certificate store is used, so it’s possible that your problem is that the lib can’t find the certificates store on your system.

1 Like

3 posts were split to a new topic: Hugo garbage

I added a MR !2 for batch transaction.

3 Likes

J’ai cette erreur lorsque j’essai de faire un virement:

Account address: 5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn
Error: Rpc error: Networking or low-level protocol error: Error when opening the TCP socket: Connection refused (os error 111)

Caused by:
    0: Networking or low-level protocol error: Error when opening the TCP socket: Connection refused (os error 111)
    1: Error when opening the TCP socket: Connection refused (os error 111)

Que ce soit en wss ou en localhost visiblement.

1 Like

Avec le nœud de debug (--dev --tmp) en local sur le port par défaut cette commande marche :

./target/debug/gcli oneshot-balance 5D2DnScFpxoEUXDwZbJH18tRsQMygBSh1F6YCcWvTYzKY2W7

Si tu changes l’adresse avec -u il faut bien indiquer le protocole et le port, sur le modèle de la valeur par défaut ws://localhost:9944.

Je fais cette commande:

gcli -u wss://gdev.p2p.legal/ws -s "bla bla bla//2" transfer 5000 5CCrBS67BrpBx3ihGHc72HZp3eHHbETxWFuNfwbbdoGSJFN8 -V
1 Like

Je confirme de mon côté j’ai la même erreur que ce soit en mode debug ou en mode release, avec un nœud custom en wss:// :

Error: Rpc error: Networking or low-level protocol error: Error when opening the TCP socket: Connection refused (os error 111)

Caused by:
    0: Networking or low-level protocol error: Error when opening the TCP socket: Connection refused (os error 111)
    1: Error when opening the TCP socket: Connection refused (os error 111)

Par contre, avec un nœud local en ws:// ça passe sans problème.

Il va falloir creuser pour voir comment supporter TLS.

Et avec le port ?

Il me semble qu’en fait TLS était bien géré. (si on met le port !)

Pareil avec le port par ex --url 'wss://gdev.trentesaux.fr:443/ws'. C’est étrange. Tu arrives à reproduire la même erreur si tu ne mets pas le port mais en mettant le port elle disparaît ?

1 Like

J’aimerais bien pouvoir rotate mes sessions_keys, mais j’ai besoin de gcli pour ça :sweat_smile:

Jamais besoin de spécifier un port pour du SSL, c’est juste 443.

En attendant tu peux toujours le faire sans TLS, avec un nœud local ou un bridge SSH vers le nœud. Pour ça je me suis fait des alias dans mon .bashrc :

alias polux-rpc='ssh -L 9944:localhost:9944 pi@192.168.1.22'
alias polux-rpc-ext='ssh -L 9944:localhost:9944 pi@txmn.tk'

Edit: mes exams se terminent jeudi soir, après ça j’investiguerai… :face_with_monocle:

@poka de toute façon pour rotate tes session keys, tu ne peux le faire que depuis l’api rpc de ton noeud validateur si tu as mis --rpc-methods=Unsafe, et tu n’exposes pas cette API sur internet, donc tu es obligé de faire un VPN ou un pont ssh. Mais si je me souviens bien ça n’avait pas marché non plus. Il faut réessayer :

# pont ssh vers l'API RPC du validateur (normalement sur 9945 si tu as mis la même chose que moi)
ssh -NL 9944:localhost:9945 poka@gdev.p2p.legal
# url gcli en ws (c'est la valeur par défaut de toute façon)
gcli --url ws://localhost:9944

Attention, l’exemple de @tuxmain semble être pour un nœud miroir.

1 Like

Super oui ça marche ainsi !

J’ai pu rotate mes session_keys et faire des transfers avec gcli :slight_smile:

1 Like

Suis-je bête ?

Le paramètre url n’est jamais utilisé dans le code ! On utilise toujours la valeur par défaut de subxt, ws://127.0.0.1:9944.

Pour ma défense, clippy ne l’a pas détecté.

Edit: corrigé. wss est bien supporté, mais il faut préciser le port. Par exemple ça marche avec -u wss://gdev.p2p.legal:443/ws

3 Likes

News in gcli:

  • Using the indexer is fixed (username is displayed if possible)
  • New command identity: gives pubkey, identity id and username given one of those.
  • New command online: list online, incoming and outgoing authorities

Maybe the ImOnline pallet is useful for monitoring failing nodes, but I don’t know how it works yet.

4 Likes