OnionShareの開発

作業の協力

OnionShareは、プロジェクトについて議論、質問したり、アイデアやデザインを共有し、将来の開発計画を立てたりするために、公開のKeybaseチームを設けています(Keybaseでは、OnionShareアドレスのように、OnionShareコミュニティの人びとに、エンドツーエンドで暗号化されたダイレクトメッセージを簡単に送信することができます)。Keybaseを使用するにはKeybaseのアプリケーションをダウンロードし、アカウントを作成して、チームに参加してください。アプリ内の「Teams」から「Join a Team」をクリックし、「onionshare」と入力して参加できます。

OnionShareには、開発者やデザイナーがプロジェクトについて議論するためのメーリングリストもあります。

コードに貢献

OnionShareのソースコードは https://github.com/onionshare/onionshare のGitレポジトリにあります。

OnionShareのソースコードに貢献したい場合は、Keybaseのチームに参加し、貢献しようと考えているものに関する質問を行うのが役立ちます。Githubにある未解決のIssueを確認して、作業したいものが何かないかについてもご確認ください。

コードに貢献する準備ができたら、Githubレポジトリでプルリクエストを行ってください。そうすると、プロジェクトの管理者がそれをレビューして、質問や変更を要求したり、拒否したり、プロジェクトにマージしたりします。

開発作業を始める

OnionShareはPythonで開発されています。開始するには https://github.com/onionshare/onionshare/ にあるGitレポジトリのクローンを行ってください。コマンドラインのバージョンの開発環境の設定に関しては cli/README.md を、GUIのバージョンの開発環境の設定に関しては 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

onionshare/common.py から Common.log メソッドを実行すると、独自のデバッグメッセージを追加できます。例えば、以下の通りです。

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

これはOnionShareを使用している際に生じるイベントのチェーン、または特定の変数の、変更以前と以後での値を取得する際に便利です。

ローカル限定モード

Torは遅いため、開発中にオニオン サービスの開始を完全にスキップすると便利な場合がよくあります。これは --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

この場合、Tor Browserの代わりにFirefoxのような通常のウェブブラウザーで http://127.0.0.1:17641 を読み込んでください。ローカル限定モードでは秘密鍵は必要ないため、無視して構いません。

翻訳に貢献

OnionShareをより使いやすく、より親しみやすくするために、Hosted Weblateでの翻訳にご協力ください。「OnionShare」は常にラテン文字で表記し、必要であれば「OnionShare(ローカル名)」を使用してください。

翻訳に協力するには、Hosted Weblateのアカウントを作成し、投稿を開始してください。

英語の元の文字列に関する提案

場合によっては、元の英語の文字列が間違っていたり、アプリケーションとドキュメント間で一致しなかったりする場合があります。

元の文字列に関する改善案については、Weblateでのコメントで@kinguをメンションし、これを送信してください。あるいは、GithubでIssueを作成するか、プルリクエストを送信してください。GitHubで改善案を送信すると、全ての上流の開発者がこれを閲覧するため、普段のコードレビューのプロセスを通じて、文字列が修正される可能性があります。

翻訳の状況

これは翻訳に関する現在の状況です。新たな言語に翻訳を行いたい場合は、メーリングリスト onionshare-dev@lists.riseup.net までご一報ください。

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