Разработка OnionShare

Участие в проекте

Существует открытая команда на платформе KeyBase, чтобы обсуждать проект в целом, задавать вопросы, делиться идеями и планами относительно последующей разработки OnionShare. (Так же, это лёгкий способ делиться зашифрованными сквозным шифрованием сообщениями с другими пользователями OnionShare, например, чтобы делиться адресами OnionShare). Для того, чтобы начать пользоваться Keybase, нужно загрузить приложение по ссылке Keybase app, создать учётную запись и присоединиться к этой команде. Внутри самого приложения, нужно перейти в раздел «Teams», нажать кнопку «Join a Team» и ввести название «onionshare».

У OnionShare также существует почтовая рассылка для разработчиков и дизайнеров интерфейса.

Участие в программировании

Исходный код OnionShare можно найти в репозитории Git: https://github.com/micahflee/onionshare

Если Вы хотите написать код для OnionShare, рекомендуется присоединиться к команде OnionShare и задать несколько вопросов относительно планов своей работы. Так же рекомендуется просмотреть открытые задачи на GitHub, возможно Вы сможете решить какую-то из них.

Когда Вы будете готовы поделиться кодом, создайте «pull request» в репозитории GitHub, после чего один из разработчиков сопровождающих проект просмотрит изменения, возможно, задаст какие-то вопросы, попросит что-то переделать, отклонит или интегрирует Ваш код в проект.

Начало разработки

OnionShare написан на языке программирования Python. Для начала, нужно склонировать репозиторий Git расположенный по адресу https://github.com/micahflee/onionshare/. Файл cli/README.md``содержит информацию о том, как настроить рабочее окружение для разработки консольной версии, файл ``desktop/README.md, соответственно, о том, что нужно дла разработки версии OnionShare с графическим интерфейсом.

Эти файлы содержат инструкции и команды установки необходимых библиотек/зависимостей для платформы, на которой планируется разработка приложения, а так же рассказывают как запустить OnionShare с использованием файлов репозитория, без установки.

Советы по отладке

Подробный режим

Во время разработки, для удобства рекомендуется запускать OnionShare при помщи терминала с добавлением флагов --verbose или -v. В этом случае выводится много вспомогательных сообщений, например, о том, какие инициализируются объекты, когда происходит какое-либо событие (нажатие кнопки, сохраняются или загружаются настройки) и другая отладочная информация. Например:

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

[May 10 2021 18:24:02] Settings.__init__
[May 10 2021 18:24:02] Settings.load
[May 10 2021 18:24:02] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
[May 10 2021 18:24:02] Common.get_resource_path: filename=wordlist.txt
[May 10 2021 18:24:02] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
[May 10 2021 18:24:02] ModeSettings.load: creating /home/user/.config/onionshare/persistent/tattered-handgun-stress.json
[May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.title = None
[May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.public = False
[May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.autostart_timer = 0
[May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.autostop_timer = 0
[May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.legacy = False
[May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.client_auth = False
[May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: share.autostop_sharing = True
[May 10 2021 18:24:02] Web.__init__: is_gui=False, mode=share
[May 10 2021 18:24:02] Common.get_resource_path: filename=static
[May 10 2021 18:24:02] Common.get_resource_path: filename=static, path=/home/user/code/onionshare/cli/onionshare_cli/resources/static
[May 10 2021 18:24:02] Common.get_resource_path: filename=templates
[May 10 2021 18:24:02] Common.get_resource_path: filename=templates, path=/home/user/code/onionshare/cli/onionshare_cli/resources/templates
[May 10 2021 18:24:02] Web.generate_static_url_path: new static_url_path is /static_4yxrx2mzi5uzkblklpzd46mwke
[May 10 2021 18:24:02] ShareModeWeb.init
[May 10 2021 18:24:02] Onion.__init__
[May 10 2021 18:24:02] Onion.connect
[May 10 2021 18:24:02] Settings.__init__
[May 10 2021 18:24:02] Settings.load
[May 10 2021 18:24:02] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
[May 10 2021 18:24:02] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmpw6u0nz8l
[May 10 2021 18:24:02] Common.get_resource_path: filename=torrc_template
[May 10 2021 18:24:02] 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
[May 10 2021 18:24:10] Onion.connect: Connected to tor 0.4.5.7
[May 10 2021 18:24:10] Settings.load
[May 10 2021 18:24:10] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
[May 10 2021 18:24:10] Web.generate_password: saved_password=None
[May 10 2021 18:24:10] Common.get_resource_path: filename=wordlist.txt
[May 10 2021 18:24:10] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
[May 10 2021 18:24:10] Web.generate_password: built random password: "tipping-colonize"
[May 10 2021 18:24:10] OnionShare.__init__
[May 10 2021 18:24:10] OnionShare.start_onion_service
[May 10 2021 18:24:10] Onion.start_onion_service: port=17645
[May 10 2021 18:24:10] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3
[May 10 2021 18:24:14] ModeSettings.set: updating tattered-handgun-stress: general.service_id = omxjamkys6diqxov7lxru2upromdprxjuq3czdhen6hrshzd4sll2iyd
[May 10 2021 18:24:14] ModeSettings.set: updating tattered-handgun-stress: onion.private_key = 6PhomJCjlWicmOyAAe0wnQoEM3vcyHBivrRGDy0hzm900fW5ITDJ6iv2+tluLoueYj81MhmnYeTOHDm8UGOfhg==
Compressing files.
[May 10 2021 18:24:14] ShareModeWeb.init
[May 10 2021 18:24:14] ShareModeWeb.set_file_info_custom
[May 10 2021 18:24:14] ShareModeWeb.build_zipfile_list
[May 10 2021 18:24:14] Web.start: port=17645
* Running on http://127.0.0.1:17645/ (Press CTRL+C to quit)

Give this address to the recipient:
http://onionshare:tipping-colonize@omxjamkys6diqxov7lxru2upromdprxjuq3czdhen6hrshzd4sll2iyd.onion

Press Ctrl+C to stop the server

Можно добавить собственные отладочные сообщения, если запустить метод Common.log из onionshare/common.py. Например:

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

Это может быть полезно, например, во время изучения последовательности событий, происходящей во время использования OnionShare, или чтобы узнать значение определённых переменных до и после их использования.

Локальная Разработка

Сеть Tor медленная, и часто может быть удобно полностью пропустить запуск onion сервисов во время разработки. Это можно сделать с использованием флага --local-only. Например:

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

* Running on http://127.0.0.1:17617/ (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 to the sender:
http://onionshare:ended-blah@127.0.0.1:17617

Press Ctrl+C to stop the server

В таком случае можно использовать URL http://onionshare:train-system@127.0.0.1:17635 в обычном веб-браузере, например, Firefox, вместо использования Tor Browser.

Участие в переводах

Помогите сделать OnionShare легче для использования, более приветливым и знакомым для людей при помощи платформы переводов на другие языки Hosted Weblate. Всегда используйте латинские буквы при написании «OnionShare» и при необходимости добавляйте переведённое название в виде «OnionShare (перевод)».

Чтобы начать заниматься переводом, нужно создать учётную запись на платформе Hosted Weblate.

Предложения по исходному английскому тексту

Иногда исходный текст на английском языке содержит ошибки, или работа приложения не совпадает с документацией.

Чтобы прежложить изменения к исходному тексту, добавьте @kingu к своему комментарию на Weblate. Так же можно создать „issue“ или „pull request“ в проекте OnionShare на портале GitHub, это гарантирует, что основные разработчики увидят предложение и, возможно, изменят исходный текст.

Статус Переводов

Это текущий статус передов. Если Вы хотите начать делать перевод на языке, которого пока нет в списке доступных на Weblate, пожалуйста, напишите письмо на этот адрес: onionshare-dev@lists.riseup.net

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