Desarrollar OnionShare
Colaborar
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 se encuentra en este repositorio Git: https://github.com/onionshare/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 empezar, clona el repositorio Git en https://github.com/onionshare/onionshare/ y luego consulta el archivo cli/README.md
para aprender cómo configurar tu entorno de desarrollo para la versión de consola, y el archivo desktop/README.md
para aprender cómo configurar tu entorno de desarrollo 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
╭───────────────────────────────────────────╮
│ * ▄▄█████▄▄ * │
│ ▄████▀▀▀████▄ * │
│ ▀▀█▀ ▀██▄ │
│ * ▄█▄ ▀██▄ │
│ ▄█████▄ ███ -+- │
│ ███ ▀█████▀ │
│ ▀██▄ ▀█▀ │
│ * ▀██▄ ▄█▄▄ * │
│ * ▀████▄▄▄████▀ │
│ ▀▀█████▀▀ │
│ -+- * │
│ ▄▀▄ ▄▀▀ █ │
│ █ █ ▀ ▀▄ █ │
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
│ │
│ 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
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
╭───────────────────────────────────────────╮
│ * ▄▄█████▄▄ * │
│ ▄████▀▀▀████▄ * │
│ ▀▀█▀ ▀██▄ │
│ * ▄█▄ ▀██▄ │
│ ▄█████▄ ███ -+- │
│ ███ ▀█████▀ │
│ ▀██▄ ▀█▀ │
│ * ▀██▄ ▄█▄▄ * │
│ * ▀████▄▄▄████▀ │
│ ▀▀█████▀▀ │
│ -+- * │
│ ▄▀▄ ▄▀▀ █ │
│ █ █ ▀ ▀▄ █ │
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
│ │
│ 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
En este caso, cargas el URL http://127.0.0.1:17641
en un navegador web normal como Firefox, en vez de usar al Navegador Tor. No se precisa realmente la clave privada en el modo “solo local”, por lo que puedes ignorarla.
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