Розробка OnionShare

Співпраця

OnionShare має відкриту команду Keybase для обговорення проєкту, включно з питаннями, обміном ідеями та побудовою, плануванням подальшого розвитку. (Це також простий спосіб надсилати безпосередні захищені наскрізним шифруванням повідомлення іншим спільноти OnionShare, наприклад адреси OnionShare.) Щоб користуватися Keybase, потрібно завантажити застосунок Keybase, створити обліковий запис та приєднайтеся до цієї команди. У застосунку перейдіть до «Команди», натисніть «Приєднатися до команди» та введіть «onionshare».

OnionShare також має список розсилання для розробників та дизайнерів для обговорення проєкту.

Внесок до кодової бази

Початковий код OnionShare розміщено в цьому репозиторії Git: https://github.com/onionshare/onionshare

Якщо ви хочете допомогти з кодом OnionShare, приєднайтеся до команди Keybase і запитайте над чим можна попрацювати. Також варто переглянути всі відкриті завдання на 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 у звичайному переглядачі, як-от Firefox, замість користування Tor Browser. Приватний ключ насправді не потрібен у автономному режимі, тому ним можна знехтувати.

Допомога з перекладами

Допоможіть зробити OnionShare простішим у користуванні та звичнішим та приємнішим для людей, переклавши його на Hosted Weblate. Завжди зберігайте «OnionShare» латинськими літерами та використовуйте «OnionShare (місцева назва)», якщо це необхідно.

Щоб допомогти перекласти, створіть обліковий запис на Hosted Weblate і почніть допомагати.

Пропозиції для оригінальних рядків англійською

Іноді оригінальні англійські рядки містять помилки або відрізняються у застосунку та документації.

Вдоскональте рядок джерела файлу, додавши @kingu до свого коментаря Weblate, або повідомте про проблему на GitHub, або надішліть запит на додавання. Останнє гарантує, що всі основні розробники, бачать пропозицію та, ймовірно, можуть змінити рядок за допомогою звичайних процесів перегляду коду.

Стан перекладів

Ось поточний стан перекладу. Якщо ви хочете розпочати переклад відсутньою тут мовою, напишіть нам до списку розсилання: onionshare-dev@lists.riseup.net

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