Es habitual tener un ordenador pequeño tipo Raspberry Pi o similar encendido continuamente como servidor de archivos, y seguramente tengamos corriendo en él mldonkey, que es un cliente tipo eMule de línea de comandos.
Si queremos que los enlaces ed2k de las páginas que visitemos se añadan como descargas podemos usar una extensión como esta, que envía los enlaces a nuestro servidor mldonkey.
Pero claro, lo más normal hoy día es que la página que visitemos esté bajo https, y nuestro servidor mldonkey esté bajo http, lo que hace que el navegador rechace abrir una URL no segura desde un sitio seguro.
Para solucionar este problema vamos a hacer otra cosa. Nos olvidaremos de la extensión del navegador y registraremos un manejador para el protocolo ed2k://. Este manejador abrirá los enlaces en una aplicación que vamos a crear que hará la conexión con el servidor mldonkey.
Dicho así parece mucho más complicado de lo que es, ya verás. Lo primero que haremos será crear un fichero ~/.local/share/applications/ed2k.desktop
con este contenido:
[Desktop Entry] Version=1.0 Type=Application Terminal=true Name=ED2K Link Handler Comment=Sends ed2k links to remote mldonkey server Exec=ed2kHandler %u MimeType=x-scheme-handler/ed2k
Las dos líneas más importantes son las dos últimas, donde indicamos el programa al que se enviarán los enlaces y el tipo mime que queremos registrar. ed2kHandler
es el nombre de nuestra pequeña aplicación y en el tipo mime la parte ed2k
del final es lo que indica que queremos asociarla a las URLs que usen el protocolo ed2k.
Una vez hecho esto ejecutamos estas dos líneas:
sudo update-desktop-database xdg-mime default ed2k.desktop x-scheme-handler/ed2k
y ya tendremos hecha la asociación del protocolo con nuestra aplicación. Ya solo nos faltaría crear la aplicación.
La aplicación la haremos con PHP, y para ello crearemos el fichero /usr/bin/ed2kHandler con este contenido (una vez creado hay que darle permisos de ejecución):
!/usr/bin/php <?php if (!isset($argv[1])) die("Usage: ed2kHandler elink\n"); $url = 'http://USER:PASS@192.168.0.4:4080/submit?q='; $url .= $argv[1]; $url = str_replace('ed2k://', 'ed2k%3A%2F%2F', $url); file_get_contents($url);