Розробка OnionShare

Співпраця

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

OnionShare також має список розсилки <https://lists.riseup.net/www/subscribe/onionshare-dev> _ для розробників та дизайнерів для обговорення проєкту.

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

Джерельний код OnionShare розміщено в цьому сховищі Git: https://github.com/micahflee/onionshare

Якщо ви хочете допомогти кодом OnionShare, приєднайтеся до команди Keybase і запитайте над чим ви думаєте працювати. Ви також повинні переглянути всі відкриті запити на GitHub, щоб побачити, чи є такі, які ви хотіли б розв’язати.

Коли ви будете готові внести код, відкрийте запит надсилання до сховища GitHub і один із супровідників проєкту перегляне його та, можливо, поставить питання, попросить змінити щось, відхилить його або об’єднає з проєктом.

Початок розробки

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

Ці файли містять необхідні технічні вказівки та команди встановлення залежностей для вашої платформи та запуску OnionShare з джерельного дерева.

Поради щодо зневадження

Детальний режим

Під час розробки зручно запустити OnionShare з термінала та додати до команди прапор --verbose (або -v). До термінала виводитиметься багато корисних повідомлень, наприклад, про ініціалізацію певних об’єктів, про події (наприклад, натискання кнопок, збереження або перезавантаження параметрів) та інші подробиці для зневаджування. Наприклад:

$ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes
OnionShare 2.3 | https://onionshare.org/

                    @@@@@@@@@
                @@@@@@@@@@@@@@@@@@@
            @@@@@@@@@@@@@@@@@@@@@@@@@
          @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            @@@@@@@@@@@@@@@@@@@@@@@@@@@@@           ___        _
              @@@@@@         @@@@@@@@@@@@@         / _ \      (_)
        @@@@    @               @@@@@@@@@@@       | | | |_ __  _  ___  _ __
      @@@@@@@@                   @@@@@@@@@@       | | | | '_ \| |/ _ \| '_ \
    @@@@@@@@@@@@                  @@@@@@@@@@      \ \_/ / | | | | (_) | | | |
  @@@@@@@@@@@@@@@@                 @@@@@@@@@       \___/|_| |_|_|\___/|_| |_|
      @@@@@@@@@                 @@@@@@@@@@@@@@@@    _____ _
      @@@@@@@@@@                  @@@@@@@@@@@@     /  ___| |
      @@@@@@@@@@                   @@@@@@@@       \ `--.| |__   __ _ _ __ ___
      @@@@@@@@@@@               @    @@@@          `--. \ '_ \ / _` | '__/ _ \
        @@@@@@@@@@@@@         @@@@@@               /\__/ / | | | (_| | | |  __/
        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@             \____/|_| |_|\__,_|_|  \___|
          @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            @@@@@@@@@@@@@@@@@@@@@@@@@
                @@@@@@@@@@@@@@@@@@@
                    @@@@@@@@@

[Nov 10 2020 20:50:35] Settings.__init__
[Nov 10 2020 20:50:35] Settings.load
[Nov 10 2020 20:50:35] Common.get_resource_path: filename=wordlist.txt
[Nov 10 2020 20:50:35] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
[Nov 10 2020 20:50:35] ModeSettings.load: creating /home/user/.config/onionshare/persistent/abstain-reprogram-elevate.json
[Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.public = False
[Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.autostart_timer = 0
[Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.autostop_timer = 0
[Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.legacy = False
[Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.client_auth = False
[Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: share.autostop_sharing = True
[Nov 10 2020 20:50:35] Web.__init__: is_gui=False, mode=share
[Nov 10 2020 20:50:35] Common.get_resource_path: filename=static
[Nov 10 2020 20:50:35] Common.get_resource_path: filename=static, path=/home/user/code/onionshare/cli/onionshare_cli/resources/static
[Nov 10 2020 20:50:35] Common.get_resource_path: filename=templates
[Nov 10 2020 20:50:35] Common.get_resource_path: filename=templates, path=/home/user/code/onionshare/cli/onionshare_cli/resources/templates
[Nov 10 2020 20:50:35] Web.generate_static_url_path: new static_url_path is /static_qa7rlyxwnfodczrriv3tj5yeoq
[Nov 10 2020 20:50:35] ShareModeWeb.init
[Nov 10 2020 20:50:35] Onion.__init__
[Nov 10 2020 20:50:35] Onion.connect
[Nov 10 2020 20:50:35] Settings.__init__
[Nov 10 2020 20:50:35] Settings.load
[Nov 10 2020 20:50:35] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmpz53ztq3m
[Nov 10 2020 20:50:35] Common.get_resource_path: filename=torrc_template
[Nov 10 2020 20:50:35] 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
[Nov 10 2020 20:50:42] Onion.connect: Connected to tor 0.4.4.5
[Nov 10 2020 20:50:42] Settings.load
[Nov 10 2020 20:50:42] Web.generate_password: saved_password=None
[Nov 10 2020 20:50:42] Common.get_resource_path: filename=wordlist.txt
[Nov 10 2020 20:50:42] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
[Nov 10 2020 20:50:42] Web.generate_password: built random password: "pedometer-grower"
[Nov 10 2020 20:50:42] OnionShare.__init__
[Nov 10 2020 20:50:42] OnionShare.start_onion_service
[Nov 10 2020 20:50:42] Onion.start_onion_service: port=17610
[Nov 10 2020 20:50:42] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3
[Nov 10 2020 20:50:46] ModeSettings.set: updating abstain-reprogram-elevate: general.service_id = x5duatuhpiwfzb23iwpjanalvtxdhoj43ria44s53ryy5diywvbu24ad
[Nov 10 2020 20:50:46] ModeSettings.set: updating abstain-reprogram-elevate: onion.private_key = uIXJzY+88tGSAXAjQxdwkzb2L7jHv467RIX1WDieVkFEZjEA7st2p/6uVCM4KM3L9PdShTPScuUv2IEbVQammA==
Compressing files.
[Nov 10 2020 20:50:46] ShareModeWeb.init
[Nov 10 2020 20:50:46] ShareModeWeb.set_file_info_custom
[Nov 10 2020 20:50:46] ShareModeWeb.build_zipfile_list
[Nov 10 2020 20:50:46] Web.start: port=17610
* Running on http://127.0.0.1:17610/ (Press CTRL+C to quit)

Give this address to the recipient:
http://onionshare:pedometer-grower@x5duatuhpiwfzb23iwpjanalvtxdhoj43ria44s53ryy5diywvbu24ad.onion

Press Ctrl+C to stop the server

Ви можете додати власні повідомлення про зневадження, запустивши метод Common.log з onionshare/common.py. Наприклад:

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

Це може бути корисно для вивчення ланцюжка подій, що відбуваються під час користування програмою, або значень певних змінних до та після того, як ними маніпулюють.

Лише локально

Tor повільний і часто під час розробки зручно взагалі знехтувати початковими службами onion. Ви можете зробити це за допомогою прапора --local-only. Наприклад:

$ poetry run onionshare-cli --local-only --receive
OnionShare 2.3 | https://onionshare.org/

                    @@@@@@@@@
                @@@@@@@@@@@@@@@@@@@
            @@@@@@@@@@@@@@@@@@@@@@@@@
          @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            @@@@@@@@@@@@@@@@@@@@@@@@@@@@@           ___        _
              @@@@@@         @@@@@@@@@@@@@         / _ \      (_)
        @@@@    @               @@@@@@@@@@@       | | | |_ __  _  ___  _ __
      @@@@@@@@                   @@@@@@@@@@       | | | | '_ \| |/ _ \| '_ \
    @@@@@@@@@@@@                  @@@@@@@@@@      \ \_/ / | | | | (_) | | | |
  @@@@@@@@@@@@@@@@                 @@@@@@@@@       \___/|_| |_|_|\___/|_| |_|
      @@@@@@@@@                 @@@@@@@@@@@@@@@@    _____ _
      @@@@@@@@@@                  @@@@@@@@@@@@     /  ___| |
      @@@@@@@@@@                   @@@@@@@@       \ `--.| |__   __ _ _ __ ___
      @@@@@@@@@@@               @    @@@@          `--. \ '_ \ / _` | '__/ _ \
        @@@@@@@@@@@@@         @@@@@@               /\__/ / | | | (_| | | |  __/
        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@             \____/|_| |_|\__,_|_|  \___|
          @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            @@@@@@@@@@@@@@@@@@@@@@@@@
                @@@@@@@@@@@@@@@@@@@
                    @@@@@@@@@

* Running on http://127.0.0.1:17635/ (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:train-system@127.0.0.1:17635

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, або повідомте про проблему на GitHub або запит на додавання. Останнє гарантує, що всі основні розробники, бачать пропозицію та можуть потенційно змінити рядок за допомогою звичайних процесів перегляду коду.

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

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

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