Разработка на OnionShare

Сътрудничество

OnionShare има отворен екип в Keybase за обсъждане на проекта, задаване на въпроси, споделяне на идеи и дизайни, и планиране на бъдещото развитие. Също така е лесен начин за изпращане на шифровани директни съобщения до други членове на общността на OnionShare, като адреси на услуги на OnionShare. За да използвате Keybase, изтеглете приложението Keybase, създайте профил и се присъединете към този екип. В приложението отворете „Teams“, докоснете „Join a Team“ и въведете „onionshare“.

Също така OnionShare разполага и с пощенски списък за разработчици и дизайнери.

Допринасяне на код

Изходният код на OnionShare може да бъде намерен в хранилището в Гитхъб: https://github.com/onionshare/onionshare

Ако искате да допринесете код към OnionShare, е полезно да се присъедините към екипа в Keybase и да зададете въпроси относно това, върху което смятате да работите. Също така трябва да прегледате всички докладвани дефекти в Гитхъб, за да видите дали има някои, с които бихте искали да занимавате.

Когато сте готови да допринесете код, направете заявка за сливане към хранилището в Гитхъб и един от поддръжниците на проекта ще го прегледа и евентуално ще зададе въпроси, поиска промени, отхвърли или го приеме.

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

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

В този случай отворете адреса http://127.0.0.1:17641 в обикновен четец като Firefox, вместо да използвате Tor Browser. Тайният ключ всъщност не е необходим в режим на локално използване, така че можете да го пренебрегнете.

Допринасяне с превод

Помогнете да направим OnionShare по-лесен за използване и по-познат и приветлив за хората, като го преведете на Hosted Weblate. Винаги изписвайте „OnionShare“ с латински букви, и използвайте „OnionShare (местно име)“, ако е необходимо.

За да помогнете с превода, създайте профил в Hosted Weblate и започнете да допринасяте.

Предложения към изходните английски текстове

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

За да предложите промени в изходните низове добавете @kingu към коментара в Weblate. Също така можете да докладвате дефект или да създадете заявка за сливане, което ще ви гарантира, че основните разработчици ще могат да променят низа посредством обичайния процес по приемане на заявките за сливане.

Състояние на преводите

Това е моментното състояние на преводите. Ако желаете да започнете превод на език, който липсва трябва да изпратите писмо до пощенския списък: onionshare-dev@lists.riseup.net

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