Développer OnionShare

Collaborer

OnionShare dipose d’une équipe Keybase ouverte pour discuter du projet, poser des questions, partager des idées et concents, et concevoir les évolutions à venir. (C’est aussi une manière facile d’envoyer des messages personnels chiffrés de bout-en-bout à d’autres personnes de la communauté OnionShare, comme des adresses OnionShare.) Pour utiliser Keybase, télécharger l”application Keybase, créer un compte, et rejoignez cette équipe. Dans l’application, allez à « Teams », cliquer sur « Join a Team », et écrivez « onionshare ».

OnionShare a aussi une liste de diffusion pour permettre aux développeurs et concepteurs de discuter du projet.

Contribuer au code

Le code source d’OnionShare peut être trouvé sur ce dépôt Git : https://github.com/onionshare/onionshare

Si vous voulez contribuer au code d’OnionShare, il est plus pratique de rejoindre l’équipe Keybase et de poser des questions à propos de ce sur quoi vous pensez travailler. Vous devriez aussi passer en revue toutes les open issues sur GitHub pour voir si il n’y a rien que vous aimeriez régler.

Quand vous êtes prêt à contribuer au code, faites une demande d’extraction dans le répertoire GitHub et un des mainteneurs du projet l’évaluera et si possible posera des questions, demanderas des changements, la rejettera, ou la fusionnera dans le projet.

Commencer le développement

OnionShare est développé en Python. Pour débuter, cloner le répertoire Git à https://github.com/onionshare/onionshare/ et consulter le fichier cli/README.md pour apprendre à mettre en place l’environnement de développement pour la version en ligne de commande, et le fichier desktop/README.md pour apprendre à mettre en place l’environnement de développement pour la version graphique.

Ces fichiers contiennent les instructions techniques nécessaires et les commandes nécessaires pour installer les dépendances pour votre plateforme, et pour faire fonctionner OnionShare depuis les sources.

Conseils pour le débogage

Mode texte

Quand vous développez, il est pratique de faire tourner OnionShare depuis un terminal et d’ajouter le paramètre --verbose (ou -v) à la commande. Cela affiche de nombreux messages utiles dans le terminal, comme le moment où certains objets sont initialisés, quand des évènements se produisent (comme des boutons qui sont cliqués, des paramètres qui sont sauvegardés ou rechargés), et d’autres information de débogage. Par exemple

$ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes
╭───────────────────────────────────────────╮
│    *            ▄▄█████▄▄            *    │
│               ▄████▀▀▀████▄     *         │
│              ▀▀█▀       ▀██▄              │
│      *      ▄█▄          ▀██▄             │
│           ▄█████▄         ███        -+-  │
│             ███         ▀█████▀           │
│             ▀██▄          ▀█▀             │
│         *    ▀██▄       ▄█▄▄     *        │
│ *             ▀████▄▄▄████▀               │
│                 ▀▀█████▀▀                 │
│             -+-                     *     │
│   ▄▀▄               ▄▀▀ █                 │
│   █ █     ▀         ▀▄  █                 │
│   █ █ █▀▄ █ ▄▀▄ █▀▄  ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄   │
│   ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █   ▀▄▄   │
│                                           │
│                  v2.4.1                   │
│                                           │
│          https://onionshare.org/          │
╰───────────────────────────────────────────╯

[Sep 09 2021 19:13:20] Settings.__init__
[Sep 09 2021 19:13:20] Settings.load
[Sep 09 2021 19:13:20] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=wordlist.txt
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
[Sep 09 2021 19:13:20] ModeSettings.load: creating /home/user/.config/onionshare/persistent/polish-pushpin-hydrated.json
[Sep 09 2021 19:13:20] ModeSettings.set: updating polish-pushpin-hydrated: general.title = None
[Sep 09 2021 19:13:20] ModeSettings.set: updating polish-pushpin-hydrated: general.public = False
[Sep 09 2021 19:13:20] ModeSettings.set: updating polish-pushpin-hydrated: general.autostart_timer = 0
[Sep 09 2021 19:13:20] ModeSettings.set: updating polish-pushpin-hydrated: general.autostop_timer = 0
[Sep 09 2021 19:13:20] ModeSettings.set: updating polish-pushpin-hydrated: share.autostop_sharing = True
[Sep 09 2021 19:13:20] Web.__init__: is_gui=False, mode=share
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=static
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=static, path=/home/user/code/onionshare/cli/onionshare_cli/resources/static
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=templates
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=templates, path=/home/user/code/onionshare/cli/onionshare_cli/resources/templates
[Sep 09 2021 19:13:20] Web.generate_static_url_path: new static_url_path is /static_gvvq2hplxhs2cekk665kagei6m
[Sep 09 2021 19:13:20] ShareModeWeb.init
[Sep 09 2021 19:13:20] Onion.__init__
[Sep 09 2021 19:13:20] Onion.connect
[Sep 09 2021 19:13:20] Settings.__init__
[Sep 09 2021 19:13:20] Settings.load
[Sep 09 2021 19:13:20] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
[Sep 09 2021 19:13:20] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmpf3akiouy
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=torrc_template
[Sep 09 2021 19:13:20] Common.get_resource_path: filename=torrc_template, path=/home/user/code/onionshare/cli/onionshare_cli/resources/torrc_template
Connecting to the Tor network: 100% - Done
[Sep 09 2021 19:13:30] Onion.connect: Connected to tor 0.4.6.7
[Sep 09 2021 19:13:30] Settings.load
[Sep 09 2021 19:13:30] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
[Sep 09 2021 19:13:30] OnionShare.__init__
[Sep 09 2021 19:13:30] OnionShare.start_onion_service
[Sep 09 2021 19:13:30] Onion.start_onion_service: port=17616
[Sep 09 2021 19:13:30] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3
[Sep 09 2021 19:13:35] ModeSettings.set: updating polish-pushpin-hydrated: general.service_id = vucwsdmjt7szoc6pel3puqoxobiepdsowmqaq7pm7dzhembtzr2capad
[Sep 09 2021 19:13:35] ModeSettings.set: updating polish-pushpin-hydrated: onion.private_key = +HfFALM4MtrNh59ibfMtRwDCIpfpWHIcNh3boahqrHh3TkLAyQvzKTm/y53KoYKSh0VU+m9DZY7DtZuCzkHkqQ==
[Sep 09 2021 19:13:35] ModeSettings.set: updating polish-pushpin-hydrated: onion.client_auth_priv_key = G24TSNLIJX7YZM6R7P24AIGRU4N56ZFL7ENZVIDIWUEWY66YS3EQ
[Sep 09 2021 19:13:35] ModeSettings.set: updating polish-pushpin-hydrated: onion.client_auth_pub_key = GDY2EPXSS7Q3ELQJFIX2VELTVZ3QEYIGWIZ26CEDQKZJ5Y7VKI3A
Compressing files.
[Sep 09 2021 19:13:35] ShareModeWeb.init
[Sep 09 2021 19:13:35] ShareModeWeb.set_file_info_custom
[Sep 09 2021 19:13:35] ShareModeWeb.build_zipfile_list
[Sep 09 2021 19:13:35] Web.start: port=17616
* Running on http://127.0.0.1:17616/ (Press CTRL+C to quit)

Give this address and private key to the recipient:
http://vucwsdmjt7szoc6pel3puqoxobiepdsowmqaq7pm7dzhembtzr2capad.onion
Private key: G24TSNLIJX7YZM6R7P24AIGRU4N56ZFL7ENZVIDIWUEWY66YS3EQ

Press Ctrl+C to stop the server

Vous pouvez rajouter vos propres messages de débogage en activant la méthode Common.log depuis onionshare/common.py. Par exemple

common.log('OnionShareGui', 'start_server', 'I ran here')

Cela peut être utilise quand on apprend la succession des évènements qui se produisent lorsque l’on utilise OnionShare, ou la valeur de certaines variables avant et après qu’elles aient été manipulées.

Uniquement en local

Tor est lent, et il est souvent pratique d’éviter de démarrer les services ognons durant le développement. Vous pouvez faire ça avec le paramètre --local-only. Par exemple

$ poetry run onionshare-cli --local-only --receive
╭───────────────────────────────────────────╮
│    *            ▄▄█████▄▄            *    │
│               ▄████▀▀▀████▄     *         │
│              ▀▀█▀       ▀██▄              │
│      *      ▄█▄          ▀██▄             │
│           ▄█████▄         ███        -+-  │
│             ███         ▀█████▀           │
│             ▀██▄          ▀█▀             │
│         *    ▀██▄       ▄█▄▄     *        │
│ *             ▀████▄▄▄████▀               │
│                 ▀▀█████▀▀                 │
│             -+-                     *     │
│   ▄▀▄               ▄▀▀ █                 │
│   █ █     ▀         ▀▄  █                 │
│   █ █ █▀▄ █ ▄▀▄ █▀▄  ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄   │
│   ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █   ▀▄▄   │
│                                           │
│                  v2.4.1                   │
│                                           │
│          https://onionshare.org/          │
╰───────────────────────────────────────────╯

* Running on http://127.0.0.1:17641/ (Press CTRL+C to quit)

Files sent to you appear in this folder: /home/user/OnionShare

Warning: Receive mode lets people upload files to your computer. Some files can potentially take control of your computer if you open them. Only open things from people you trust, or if you know what you are doing.

Give this address and private key to the sender:
http://127.0.0.1:17641
Private key: E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA

Press Ctrl+C to stop the server

Dans ce derniers, vous chargez l’URL http://127.0.0.1:17641 dans un navigateur Web ordinaire comme Firefox, à la place d’utiliser le Navigateur Tor. La clé privée n’est pas nécessaire en mode local-only, vous pouvez l’ignorer.

Contribuer aux traductions

Aidez à rendre OnionShare plus facile à utiliser, plus familier et plus accueillant pour les gens en le traduisant sur Hosted Weblate. Garder toujours le terme « OnionShare » en lettre latine, et utiliser « OnionShare (nom local) » si nécessaire.

Pour aider à traduire, créez un compte Hosted Weblate et contribuer.

Suggestions pour les lignes anglaises d’origine

Parfois les lignes anglaises de base sont fausses, ou ne correspondent pas entre l’application et la documentation.

Classer les améliorations sur les lignes sources en ajoutant @kingu à votre commentaire Weblate, ou en ouvrant une « issue » GitHub ou requête d’extraction. La dernière solution garanti que tout les développeurs en amont voient la suggestion, et puisse potentiellement modifier la ligne à travers les processus de vérification du code habituel.

État des traductions

Voilà l’état actuel des traductions. Si vous voulez commencer une traduction dans une nouvelle langue, merci d’écrire à la liste de diffusion : onionshare-dev@lists.riseup.net

https://hosted.weblate.org/widgets/onionshare/-/translations/multi-auto.svg