Archivo de la categoría: Red distribuida

Artículos informativos sobre redes distribuidas (de pares) y sus implicaciones sociales como estructura de poder.

rocas playa paisaje

Mozilla, novedades de sincronización y privacidad

Compartir recursos con privacidad es una prioridad en muchos profesionales. Las novedades de Mozilla sin duda para muchos serán muy interesantes y son un buen soporte para tareas que, bien entrado el siglo XXI, son cada vez más cotidianas, como compartir notas entre dispositivos y archivos entre usuarios cuidando la privacidad.

Firefox Send, envío privado de archivos

Para quien guste de transferir archivos con la privacidad que merecen, Firefox Send es una solución. Cuando se trata de privacidad, a menudo es muy conveniente configurar un servidor propio para conseguir el servicio. Por ejemplo, Nextcloud con certificado de seguridad, en principio, sería una mejor opción. Sin embargo, no suele ser la primera opción que se considera, ya que requiere su instalación en un servidor y ésta no se trata de una técnica trivial. Por ese motivo, Mozilla acerca a los muchos una solución intermedia, que es utilizar un servicio que no deja de ser de terceros pero que llega desde una organización sin ánimo de lucro y con un historial de trabajo intenso por la libertad en Internet y derechos de los usuarios.

¿Puedo usarlo con Whatsapp?

Sí, pero no de un modo directo. Primero, deberías subir el archivo a //send.firefox.com y, luego, copiar y pegar el enlace que creará automaticamente. El usuario al que le llega el archivo, sólo tendrá que pinchar el enlace

Firefox Send protege el archivo que comparte con una contraseña que desconoce Mozilla. Además, el enlace caduca al llegar a una fecha y número concreto de descargas definidos por el usuario. Es posible usar esta aplicación con o sin registro. El tamaño máximo que se podrá envíar sin registro será 1 gigabyte y con registro 2,5 gigabytes. Estando ya registrado, también sirve para copias de respaldo de datos de Firefox: marcadores, historial, etc…

Pocket, para leer después

Para aquellos momentos de lectura de blogs y documentos web, la aplicación Pocket aportará un repositorio de enlaces con la que, además, podemos leer los contenidos con una estética molona incluso sin conexión. En su versión Android, cuenta con 10 millones de descargas y una valoración media de 4.5 estrellas, por lo que se trata de una app de éxito en el mercado. En su versión para navegador, existe una extensión para Firefox con una valoración media de 4 estrellas con casi 20.000 usuarios.

Firefox Notes

Para aquellas notas que cada vez con más frecuencia deseamos compartir entre varios dispositivos, la extensión Firefox Notes cumple sobradamente. Su app para Android además permite sincronizar pestañas de navegadores entre dispositivos.

owncloud logo

Cómo publicar calendarios Owncloud en WordPress sin plugin premium

En este artículo explico como me las he ingeniado para importar calendarios Owncloud, versión 9, hacia un WordPress 4.5 en un sistema GNU/Linux, aunque es probable que funcione en otros sistemas. Ningún pluguin gratuito de WordPress importa calendarios de Owncloud y los renderiza a día de hoy. Hasta hace poco lo hacía el pluguin All-in-one Event Calendar, pero una incompatibilidad con las últimas actualizaciones de WordPress han dejado tal característica fuera de combate. Sin embargo, este pluguin sí puede importar archivos ICS desde otro lugar de manera periódica y renderizarlos.

Para importar los calendarios al mismo servidor donde tengo el WordPress, y mantenerlos actualizados y accesibles, he creado un script el cual Cron debe ejecutar cada cierto periodo de tiempo.

En el script que publico, los calendarios importados estarán en la carpeta /uploads/calendarios de la instalación del WordPress, catalogados por usuario y el mismo nombre de calendario del Owncloud. En el plugin All-in-one Event Calendar, será necesario especificar la url de cada calendario importado, por ejemplo:

http://miservidorwordpress.com/wp-contents/uploads/calendarios/usuario/calendario.ics

Cada calendario es importado por el script al que llamo importICS.sh

#!/bin/bash
importICS () {
    URL="http://"$DOMAIN
    dest_dir_root="/var/www/wordpress/wp­-content/uploads/calendarios/"
    dir=$dest_dir_root$CALUSER
    [[ -d $dir ]] || mkdir $dir
    wget ­O $dir/$CALENDAR".ics" ­­auth­-no­-challenge ­­http­-user=$CALUSER ­­http­-password=$CALPASS $URL"/remote.php/dav/calendars/"$CALUSER"/"$CALENDAR"?export";
}
file=$1
while IFS=, read CALUSER CALPASS CALENDAR DOMAIN
do
    importICS
done < $file

El script lee un archivo CSV, delimtiado por comas, del que toma los datos del usuario y calendario a importar del owncloud. Tiene un formato como este:

usuario1,123456,cal1,urlowncloudmidominio.com
usuario1,123456,cal2,urlowncloudmidominio.com
usuario2,123456,tres,urlowncloudmidominio.com

El primer campo es el nombre del usuario del calendario, el segundo su password, el tercero el nombre del calendario y el cuarto el dominio del owncloud.

Este archivo puede editarse fácilmente con una hoja de cálculo y exportarse como CSV delimitado por comas.

Cron ejecuta el script periódicamente para mantener los calendarios actualizados y, en condiciones normales, sólo habrá que hacer cambios esporádicos en el archivo CSV, pero por si se quiere actualizar los calendarios a mano, el script se ha de lanzar con un sólo parámetro: el nombre del archivo CSV. Por ejemplo:

$ sudo bash /opt/ICS/importICS.sh calendarios.csv

Por último, tan sólo hay que añadir la tarea al Cron para que ejecute el script con la frecuencia deseada y con ello ya tenemos los calendarios accesibles para el pluguin All-in-one Event Calendar.

No es imprescindible que los calendarios exportados desde Owncloud tengan como destino la misma máquina donde está instalado Worpress, sino que con algunas modificaciones al script pueden almacenarse en cualquier directorio al que tenga acceso el pluguin. También sería muy deseable añadir certificado SSL, aunque no lo he hecho pues ambas máquinas en mi caso se encuentran en el mismo segmento de red y no viajarán esos datos por Internet. Ténganse en cuenta también que en muchos casos los archivos ICS importados serán de acceso publico, por lo que el servidor donde estén alojados podría requerir configuraciones adicionales para limitar el acceso.

Espero que este artículo sea de utilidad.

Cómo lanzar streaming Bittorrent desde Firefox

¿Queréis ver una película en streaming tan sólo pulsando un enlace del navegador? ¿Queréis que, además, sea un streaming P2P en la red bittorrent?

Muchas veces yo también he querido, por lo que he «inventado» una manera de hacerlo. Para ello utilizaremos la aplicación en javascript Peerflix, un binario que he hecho yo mismo con una explicación para su creación y el navegador Firefox.

Preparativos

La magia de todo la da Webtorrent, del que últimamente se está hablando mucho, sobretodo desde que comenzó a utilizarlo Netflix. Sin embargo, su primer commit fue a mediados del 2014 y hay algunas aplicaciones que lo utilizan como motor. Una de ellas es Peerflix, que permite hacer un streaming en línea de comandos pasándole algunos parámetros.

Para este «invento» utilizo Peerflix, aunque cuando veáis la lógica de cómo monto el tema para lanzar el vídeo desde el navegador, bien podríais utilizar Webtorrent-cli e incluso un lanzador gráfico hecho por vosotros mismos.

Otro de los artilugios que necesitaréis son los reproductores VLC o Mplayer, al menos uno de los dos.

Peerflix es una aplicación en NodeJS, es decir, aplicaciones Javascript que para ejecutarse no necesitan un navegador, con las posibilidades que ello ofrece. Para lanzarlas necesitamos NodeJS instalado en nuestra máquina. La manera más rápida, y es válida en muchos casos, es instalarla desde los repositorios de nuetra distribución. Sería raro, raro, que no estuviera.

sudo apt-get install nodejs

o el equivalente en vuestra distribución.

Ello también instalará la aplicación npm. Esta aplicación es un gestor de paquetes estilo apt, pero para aplicaciones en Nodejs. Esta será condicion si ne qua non para poder instalar Peerflix ya que ésta no existe, que yo sepa, en repositorios de distribución. Para instalarla:

sudo npm install peerflix -g

A partir de ahora, ya podríamos utilizarla en una línea de comandos. Yo lo he hecho mucho tiempo. Y seguiré haciéndolo cuando haga falta.

Pero este post va de lanzarla desde un navegador, ¿No?

Binarios para utilizarlos con Firefox

Firefox no lanza scripts bash. Partiendo de ahí, si queremos asociar un tipo de archivo o de enlace a una aplicación, necesitamos un binario.

Aquí he tenido que crear un script bash que cuando lo veáis al final de artículo, veréis que es muy poca cosa. Básicamente, lanza Peerflix con el magnet y abre VLC o Mplayer.

Necesitaréis, al menos, unos de los dos archivos binarios que contiene este archivo: torrentstream.tar.gz.

Una vez descomprimido, dispondréis de dos archivos:

  • torrentstream-vlc
  • torrentstream-mplayer

No hace falta ser un pensador muy penetrante para darse cuenta de qué reproductor de vídeo lanzará cada uno de ellos. Estos archivos también podéis usarlos en la línea de comandos y quedaros aquí, pero me haría ilusión que lo utilicéis en el Firefox para ver las películas.

Asociar tipo MIME en Firefox

Lo que significa decirle a Firefox: cuando te digan que abras este archivo o este tipo de enlace, lanza la aplicación que te hayan dicho.

Muchas de tales asociaciones ya vienen «de fábrica», pero lógicamente pueden cambiarse.

Para asociar el tipo magnet a uno de los lanzadores que, supongo, ya os habéis descargado o estáis pensando en hacerlo, es sencillo. Si no tenéis el tipo magnet asociado a ninguna aplicación, a la hora de pulsar un enlace magnet, Firefox os preguntará si queréis asociarlo a una aplicación, en un cuadro de diálogo como éste:

dialogo mime firefox

En la imagen, ya tengo la aplicación torrentstream-vlc, aunque es probable que vosotros no la tengáis aún. Sobre otros clientes de Bittorrent que salen en la lista como los de Transmission, bueno; pecadores, pecadores… 🙂

No olvidéis recordar decirle a Firefox que recuerde la elección, aunque puede cambiarse en la preferencias. Pues vale, pero ¿Cómo?

Pues hay que ir a Preferencias -> Aplicaciones, buscáis el tipo magnet y os saldrá algo como esto:

aplicaciones mime firefox

La aplicación sería torrentstream-vlc o torrentstream-mplayer, a elegir.

Y a partir de este momento, cuando hagáis un clic en un enlace magnet, se abrirá la aplicación de reproducción de vídeo de las dos que hayáis elegido. Recordad, también, que es streaming P2P, por lo que antes de empezar la reproducción habrá que esperar unos segundo hasta que tenga suficientes fuentes y llene un pequeño buffer.

Con esto, y un apéndice, ya está hecho. Para aquellos que no se fíen de cargar cualquier binario, y por si alguien quiere hacerlo por sí o mismo o lanzar Peerflix con más opciones, a continuación explico cómo los he creado.

Creación de binarios

Los script bash que hecho me extrañaría mucho que sean estudiados por generaciones futuras. El de Mplayer:

#!/bin/bash

/usr/local/bin/peerflix $1 -m

El de VLC:

#!/bin/bash

/usr/local/bin/peerflix $1 -v

¿Cómo convertirlos en binario?

Yo he utilizado la aplicacion shc y los siguientes comandos:

./shc -v -r -T -f torrentstream-mplayer
./shc -v -r -T -f torrentstream-vlc

Cada uno creará un archivo como torrentstream-mplayer.x que después puede ser renombrado y utilizado.

webtorrent logo

WebTorrent Desktop, una aplicación de streaming de vídeo y audio con Bittorrent

De la mano del ya conocido por estos lares Feross Aboukhadijeh, nos llega Webtorrent Desktop, una aplicación Bittorrent muy sencilla para ver vídeos y escuchar audio en streaming.

Aún está en fase beta y la interfaz es muy simple, aunque ligera y maja, en la que se deja sobre ella un archivo torrent o bien se copia un enlace magnet para comenzar la descarga.

No depende de ningún servidor de archivos y éstos están distribuidos en la red. Tan sólo hay que pegar el enlace o el torrent y empieza la descarga.

WebTorrent (BETA)_005

Hace uso del módulo Webtorrent para Javascript y está embebida en Electron. Webtorrent hace conexiones en un navegador sólo través del protocolo WebRTC. Esta aplicación de escritorio puede, además, realizar conexiones TCP,  por lo que también puede hacer el streaming desde cualquier tracker público bittorrent.

Webtorrent Desktop tiene incorporadas varias fuentes desde las que descargar películas o audio, según dice la web del proyecto:

Whether it’s video from the Internet Archive, music from Creative Commons, or audiobooks from Librivox, you can play it right away. You don’t have to wait for it to finish downloading.

Además de descargar a tu escritorio, también emite a través de Airplay, Chromecast y DLNA.

fotograma bib bunny

Para los que prefieran la línea de comandos, con Webtorrent puede utilizarse el comando webtorrent-cli o Peerflix como alternativa, para el que hice un script en Python.

Instalación Linux Mint (y Ubuntu 64 bits)

Una vez descargado el archivo de la aplicación, descomprimimos y lanzamos el binario Webtorrent. Y ya está.

Es un proyecto abierto y en constante desarrollo, por lo que si quieres colaborar puedes hacerlo en su git.

 

sala de cine

Películas a la carta en línea de comandos

Peerfilm es un script para ver vídeos en streaming en la red bittorrent. El script necesita Python 2.7 y depende del programa Peerflix, escrito en Nodejs. Para instalarlo:

#npm install -g peerflix

Una vez instalado y resueltas otras posibles dependencias, Peerfilm estará listo para utilizarse. A continuación comparto el script:

"""
   Peerfilm

   Author: Gustavo Moreno
   Email: gustavo@laenreadera.net

   Streaming P2P via bittorrent

   Depends on:
       - Peerflix

   Install Peerflix:

       - npm install -g peerflix

   This script streams films from bittorrent network. Using it is easy. Just
   enter a magnet uri in prompt or load a CSV file that contains magnet uris.

   CSV file is delimited by ';' and fields are:
        Title;Year;magnetURI

"""

import subprocess

class Films:

       def __init__(self):
          self.magnetList = []
          self.inputIsMagnetURI = False


       def selectTorrentSource(self):
          # Choose between single magnet or csv file
          sourceInput = raw_input("Enter path of CSV file or enter magnetURI: ")

          if 'magnet:?' in sourceInput:
             self.inputIsMagnetURI == True
             self.loadMangetURI(self.inputIsMagnetURI)
          else:
             self.CSVFile = open(sourceInput,"r")
             self.loadMagnetURI(self.inputIsMagnetURI)


       def loadMagnetURI(self, singleMagnet):

          if singleMagnet == True:
             self.title = 'Streaming... '
             self.magnetURI = source
          else:
             self.buildListFromFile(self.CSVFile)


       def buildListFromFile(self, CSVFile):

          peli = []

          lineas = CSVFile.readlines()
          for linea in lineas:
              peli = linea.split(";")
              self.magnetList.append(peli)


       def userSelectFilmFromList(self):
          # Prompt user to choose a film from a given list of titles

          numerationOfAvailableFilms=0
          for row in self.magnetList:
             print numerationOfAvailableFilms+1, " ", row[1], " ", row[0]
             numerationOfAvailableFilms += 1

          num_peli = int(raw_input("What film do you want to watch? "))
          self.title = self.magnetList[num_peli-1][0]
          self.magnetURI = self.magnetList[num_peli-1][2]


       def streamFilm(self):
          # Launch peerflix to VLC
          # Type 'peerflix -h' in console to see available parameters

          print "\n\n\nStreaming... ", self.title, " \n\n\n"
          subprocess.call(['/usr/local/bin/peerflix', self.magnetURI, '-v', 'peliculas/%s'%self.title])


       def play(self):

          self.selectTorrentSource()

          if self.inputIsMagnetURI == True:
              self.streamFilm()
          else:
              self.userSelectFilmFromList()
              self.streamFilm()


film=Films()
film.play()

El archivo CSV está delimitado por ; y tiene los siguientes campos:

Título;Año;Magnet

Por ejemplo:

EL corredor del Laberinto: Las Pruebas;2015;magnet:?xt=urn:btih:2813c7e559a98b8e11fd360c1af3773839bcc6dc&dn=El+corredor+del+laberinto-Las+pruebas+%282015%29.HDrip&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fexodus.desync.com%3A6969

Este script lanza el reproductor VLC. Peerflix, el proceso al que llama subprocess, tiene otros parámetros como lanzar el vídeo en los reproductores omx o MPlayer.

captura de peerflix y vlc¡Saludos!

guitarra

Peersound

Se acerca el Somero 2015 y ya está todo preparado. Nos esperan unos días de amistad, comidas en común, charlas y talleres. Por fin, voy a conocer a los buenos de los indianos y a otra gente de La Matriz, donde surgió la idea de alquilar un piso compartido en Gijón para esos días.

También en La Matriz conocí a Carlos Sanmartín, un desarrollador de sistemas empotrados, músico y quién sabe qué más, e iniciamos el desarrollo de Peersound, una aplicación de intercambio P2P de archivos de tipo audio en Javascript sobre el protocolo de Bittorrent que funciona en los navegadores Firefox y Chromium y tiene un reproductor de música para escuchar las canciones.

guitarra

Nuestra idea es que sea útil a las productoras pequeñas y para intercambiar música efímera, como Jam Sessions. Queremos aportar a la revolución en la industria de la música distribuida.

Peersound almacena los archivos descargados en formato blob en la base de datos del navegador IndexedDB para sembrar las semillas. Utiliza las bibliotecas Webtorrent, Localforage y Bootstrap, entre otras. Descarga canciones con un magnetlink y puede empezar a sembrar a partir de una canción que el usuario tenga en su disco diro. Guarda las listas de reproducción en un archivo .json para reproducirlas posteriormente. Si al cargar una lista de reproducción alguno de las archivos no está en la base de datos del navegador, la descarga automáticamente de otros pares, por lo que son listas idóneas para intercambiarlas entre oyentes.

Peersound está en fase borrador. Es decir, no es una aplicación ni mucho menos terminada. La presentamos así porque la daremos a conocer informalmente en el Somero 2015 y para que os hagáis una idea de por dónde irán los tiros. Implementaremos más formatos de audio, un buscador de canciones, metadatos completos, portadas de discos y de ser posible un reproductor para conseguir el streaming sobre bittorrent, tarea nada desdeñable.

Decir también que hace tres meses no tenía ni idea de Javascript. Para ser completamente honesto, en mi caso no soy un desarrollador profesional y la aplicación, además de los motivos mencionados más arriba, empezó siendo una excusa para iniciarme con la programación en el mundo real.

Espero que os guste. Aquí os dejo el git, alojado en un servidor cortesía de Las Indias.

http://bitujo.enkidu.coop/gustavo/PeerSound

¡Nos vemos!

Ciudades del compartir

El Somero 2015 en Gijón, los próximos días del 7 al 12 de Octubre, reunirá a mentes tan preclaras y de tan alto nivel, con el nexo común de ser expertas en resiliencia, que es un evento que desafía a no ir.

Quién, como yo, resulte perdedor del desafío, podrá escuchar charlas sobre Ostatus, desarrollo de plugins GNUSocial, movilidad y ubicuidad con Firefox OS, economía colaborativa para la reindustrialización en tiempos de crisis, el fin de la banca y alguna de sus alternativas , recuperación de ciudades en caso de desastre, entre otras, y un día dedicado al networking tomando unas sidras por la calles de Gijón, según los días que haya elegido ir.

Si vivís por Asturias, estáis tardando en reservar entradas para ir a disfrutar de todo un evento hacker, en el sentido auténtico de la palabra. Si estáis un poco más lejos, los organizadores han conseguido interesantes descuentos en transportes. Están haciendo todo lo posible para ponéroslo difícil.

¿Os lo vais a perder?

logo somero2015

Natalia de las Indias Electronicas

Revolución productiva P2P

El pasado 7 de febrero, @nat, de la Sociedad Cooperativa de las Indias Electrónicas, dio un charla TED sobre el modelo productivo P2P, o producción entre pares. Desde el Geeksphone hasta la vuvucela, se perfila un horizonte de reindustrialización apoyado en Internet y las redes distribuidas. Una exposición clara y concisa que espero no te deje indiferente.

Ofuscar el tráfico bittorrent: introducción breve

El otro día un amigo, que regresó hace poco de Alemania, contó que le llegó un mensaje exigiéndole 735 euros por una descarga que realizó cuando se encontraba en aquel país. Aún no sabemos si la carta se trata de una estafa llana o de un intento de conciliación para no pasar por un juzgado cuando regrese a Alemania, pero todo apunta a que se trata de un texto jurídico. La noticia me ha hecho reafirmarme en que, quienes defendemos el intercambio libre de archivos, del contenido que sea, debemos tomar medidas para evitar que lleguen cartas como esa.

Aunque en España las leyes vigentes no resultan demasiado invasivas contra el derecho al intercambio sin ánimo de lucro de material con copyright, pueden modificarse en cualquier momento y una acción como la de compartir, que hoy no es siquiera falta administrativa e incluso se considera virtuosa, mañana puede ser del tipo delito penal.

Sigue leyendo

Por qué me gusta tanto GNUSocial

Hace unas semanas leí en elbinario.net sobre una red social llamada GNUSocial. Sólo por el acrónimo recursivo de GNU, sabía de antemano que podía ser de lo más interesante, así que seguí unos enlaces e hice unas búsquedas para ver de qué va.

Lo primero que vi: parecía una especie de Twitter libre. Pero la apariencia, como suele ocurrir, sólo era la superficie y pronto descubrí que llega más lejos y que aún puede hacerlo mucho más. Es decir, no sustituye a Twitter ni lo complementa, es otro mundo.

Entre sus características más potentes:

Sigue leyendo