Разработка OnionShare

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

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

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

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

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

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

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

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

OnionShare написан на Python. Чтобы начать, склонируйте репозиторий Git расположенный по адресу https://github.com/onionshare/onionshare/. В файле cli/README.md , как настроить рабочее окружение для разработки консольной версии и файл ``desktop/README.md``для „настольной“ версии.

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

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

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

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

$ 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

Можно добавить собственные отладочные сообщения, если запустить метод 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.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

В этом случае загружайте URL http://127.0.0.1:17641 в обычном веб-браузере, таком как, например, Mozilla Firefox. В режиме „local-only“ секретный ключ не нужен.

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

Помогите сделать 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