Desarrollando OnionShare

Colaborando

OnionShare tiene un equipo Keybase abierto para discutir el proyecto, hacer preguntas, compartir ideas y diseños, y hacer planes para futuro desarrollo. (También es una manera fácil de enviar mensajes directos cifrados de extremo a extremo a otros en la comunidad OnionShare, como por ejemplo, direcciones OnionShare.) Para usar Keybase, descarga la aplicación Keybase, crea una cuenta, y únete a este equipo. Dentro de la aplicación, vé hacia «Equipos», haz clic en «Unirse a un Equipo», y tipea «onionshare».

OnionShare también tiene una lista de correo para desarrolladores y diseñafores para discutir el proyecto.

Contribuyendo código

El código fuente de OnionShare está en este repositorio git: https://github.com/micahflee/onionshare

Si quisieras contribuir código a OnionShare, ayuda unirse al equipo Keybase y hacer preguntas acerca de en qué estás pensando trabajar. También deberías revisar todas las cuestiones abiertas en GitHub para ver si hay alguna a la cual te gustaría encarar.

Cuando estés listo para contribuir código, abre una solicitud de tiraje en el repositorio GitHub, y uno de los mantenedores del proyecto la revisará, y posiblemente haga preguntas, solicite cambios, la rechace o la incorpore dentro del proyecto.

Iniciando el desarrollo

OnionShare está desarrollado en Python. Para arrancar, clona el repositorio Git en https://github.com/micahflee/onionshare/ y luego consulta el archivo cli/README.md para aprender cómo configurar tu entorno de desarrollo para la versión de línea de comando, y el archivo desktop/README.md para aprender cómo hacerlo para la versión gráfica.

Esos archivos contienen las instrucciones técnicas y comandos necesarios para instalar las dependencias para tu platforma, y ejecutar OnionShare desde la estructura de directorio fuente.

Consejos para depuración

Modo detallado

Durante el desarrollo, es conveniente ejecutar OnionShare desde un terminal y agregar el modificador --verbose (o -v) al comando. Esto imprime una cantidad de mensajes útiles a la terminal, tales como cuándo son inicializados ciertos objetos, cuándo ocurren eventos (como botones cliqueados, ajustes guardados o recargados), y otra información de depuración. Por ejemplo:

$ 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

Puedes agregar tus propios mensajes de depuración ejecutando el método Common.log desde onionshare/common.py. Por ejemplo:

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

Esto puede ser útil para conocer la cadena de eventos que ocurre cuando usas OnionShare, o el valor de ciertas variables antes y después de que sean manipuladas.

Solo local

Tor es lento, y a menudo es conveniente saltear el inicio de servicios onion sin excepción durante el desarrollo. Puedes hacer esto con el modoficador --local-only. Por ejemplo:

$ 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

En este caso, cargas el URL http://onionshare:train-system@127.0.0.1:17635 en un navegador web normal como Firefox, en vez de usar al Navegador Tor.

Contribuyendo traducciones

Ayuda a que OnionShare sea más fácil de usar, y más familiar y amigable para las personas, traduciéndolo en Hosted Weblate. Siempre mantén «OnionShare» en el alfabeto latino, y usa «OnionShare (nombre local)» si fuera necesario.

Para ayudar a traducir, crea una cuenta Hosted Weblate y empieza a contribuir.

Sugerencias para cadenas de caracteres en el original en Inglés

A veces, las cadenas de caracteres en Inglés están equivocadas, o no se corresponden entre la aplicación y la documentación.

Propone mejoras en las cadenas fuente añadiendo @kingu a tu comentario en Weblate, o abre una cuestión o solicitud de tiraje en GitHub. Esta última asegura que todos los desarrolladores de nivel superior vean las sugerencias, y potencialmente puede modificar la cadena a través de los procesos usuales de revisión de código.

Estado de las traducciones

Aquí está el estado actual de las traducciones. Si quieres empezar una traducción en un lenguaje que no se encuentra aquí, por favor escríbenos a la lista de correo: onionshare-dev@lists.riseup.net

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