Pour nous contacter : soyez au rendez-vous sur IRC ! ⋅ Parcourir l'archive musicale Dogmazic ⋅ Notre Blog
Notre Documentation

[BitTorrent] un petit script (de plus)

08:54 modifié dans Le p2p
Un truc que j'aime bien avec les créations culturelles sous licence de libre diffusion, c'est que chacun a le droit de les redistribuer.

La plupart des réseaux pair-à-pair impliquent qu'on devienne la source de ce que l'on est en train de télécharger - aussi, plus il y a de gens qui téléchargent un fichier, plus il y a de sources, et meilleures sont les performances pour tout le monde.

Donc, pour partager quelque chose sur un réseau pair à pair, il faut avoir le droit de le republier. Ça tombe bien c'est le cas avec les contenus sous licence ouverte ou libre.

Peut-être que vous cherchez un moyen simple et économique de partager vos création musicales... Par exemple, des fichiers flacs... Ou des vidéos... Et ceci de manière indépendante, avec, pourquoi pas, un peu de symétrie...

Peut-être, même, que vous êtes sous un UNIX, voire sous GNU/Linux (Debian, Ubuntu...), auquels cas ce message peut peut-être vous intéresser.

Je vais pas entrer dans le détails sur comment configurer un client BitTorrent (BitTorrent est un réseau pair-à-pair qui, contrairement à eDonkey/eMule, ne bombarde pas les usagers de messages publicitaire dans l'onglet 'messages des serveurs').

Sachez juste qu'il y a un client BitTorrent qui se nomme Transmission qui vous permettra de créer des torrents facilement, et qui est installé par défaut sur quelques distributions Linux.

Pour créer un torrent, on sélectionne le dossier que l'on veut partager, et Transmission crée le fichier .torrent, un tout petit fichier, que vous pouvez ensuite faire parvenir à vos fans pour qu'ils puissent lancer le téléchargement.

Je répondrai volontiers à toute question sur bitTorrent (c'est quoi un tracker, à quoi ça sert, quel tracker choisir...) mais ce n'est pas l'objet de ce message.

Ce que je vous propose, en gros, c'est de pousser un peu le vice :

Installer un serveur web sur votre machine (je donnerai des instructions de base)

Créer une redirection de DNS dynamique pour que votre machine ait un nom permanent sur le net (là aussi, je donnerai quelque pistes)

Mettre en ligne sur votre serveur web, non seulement vos fichiers .torrent, mais aussi un flux BitTorrent+RSS ; ainsi - et même si votre machine n'est pas allumée 24 heures sur 24 - vos amis... Euh, vos fans, pourrons s'abonner au flux et automatiquement prendre connaissance de tout nouveau contenu que vous publierez.

De nombreux client BitTorrent supportent actuellement les flux BitTorrent+RSS ; par exemple, Vuze.

Il est possible, même, de lire de tels flux avec un tout bête lecteur RSS standard.

Je vous propose donc, à la fin de ce message, un petit script qui

-copiera tous vos fichiers .torrent dans le répertoire courant
-et fournira, sur la sortie standard, un fichier xml définissant le flux BitTorrent+RSS permettant d'accéder à tous ces torrents.

Ensuite, il suffit de copier tous ces fichiers torrents et ce fichier xml directement à la racine de votre serveur web... Vous n'avez plus qu'à donner le lien vers votre flux RSS+Torrent à vos amis...Euh, vos fans, pour qu'ils puissent s'abonner.

Donc, installer le serveur web :

Ouvrez un terminal.

Entrez la commande [code:1]sudo apt-get install apache2[/code:1] et appuyez sur la touche entrée.

sudo va vous demander votre mot de passe. Là encore, une fois qu'il est tappé (rien ne s'affiche, c'est normal) appuyez sur entrée.

Voilà, vous avez installé un serveur web sur votre machine.

Il faudra encore aller vous connecter à l'interface web de votre modem/routeur (box) pour rediriger le port 80 vers votre machine... Le plus souvent cela se fait en faisant pointer votre navigateur web vers 192.168.1.1 qui est une adresse de passerelle - il y en a d'autres, mais celle-ci est couramment utilisée, puis en vous connectant avec vos identifiants - à voir avec votre FAI si vous ne les connaissez pas, ou dans la doc de votre box... Ensuite, la redirection du port lui même se fera différemment d'une box à l'autre, je ne peux pas donner d'instructions générales. Ça peut être dans la section 'serveurs réseau', 'firewall' ou autre...

Si vous avez un firewall logiciel installé sur votre machine, il faudra bien sûr ouvrir le port 80 pour accepter les connexions TCP entrantes - mais bon ce n'est pas le cas de tout le monde.

Pour ce qui est de la redirection DNS qui permettra à votre box, et par là même à votre machine, d'avoir une adresse permanente sur le réseau, il y a de nombreux services... Cependant DynDNS.com alias dyn.com est directement supporté par certaines box, et si vous passez par eux et que votre box le supporte, vous n'aurez pas à installer de logiciel pour mettre à jour les enregistrement DNS chaque fois que votre adresse IP change - tout ce que vous aurez à faire c'est entrer vos identifiants et mots de passe dans la section DynDNS de votre box... Les redirections DynDNS sont un service gratuit.

Donc, vous avez un nom d'hôte permanent pour votre machine, genre mamachine.dyndns.org ? On peut donc passer à l'utilisation de mon petit script.

Il est à la fin de ce message... Copiez-le intégralement, lancez Gedit, collez-le, enregistrez-le où vous voulez, sous le nom de votre choix.

Enfin, avant de l'enregistrer, il y a quelques modifications à faire pour le personnaliser un peu :

-remplacez /home/shangril/shared par le chemin du repertoire où se trouvent vos fichiers .torrent (par exemple, /home/toto/shared)
-remplacez yourhostname.ontheinternet.org par le nom d'hôte permanent pour votre machine que vous avez choisi quand vous avez ouvert un compte sur votre service de redirection DNS.

Vous pouvez jeter un petit coup d'œil au script, les autres #changethis sont optionnels mais permettent de personnaliser votre flux (description, lien vers votre site web...)

Ensuite il y a plusieurs scénarii :

-on se place directement dans /var/www qui est le répertoire web public et on lance le script en tant que root... Ahem...
-on se place dans /var/www et on a réglé toutes les permissions de ce répertoire pour pouvoir écrire dedans... C'est pas sur moi qu'il faudra compter pour vous aider à ce niveau.
-le scénario que je vais détailler, on se place dans un répertoire temporaire, on lance le script, puis on fait une copie dans /var/www

Donc, ouvrez un terminal

tapez les commandes suivantes
[code:1]cd[/code:1]
pour se placer dans votre répertoire personnel
[code:1]mkdir rsstemp[/code:1]
pour créer un répertoire nommé rsstemp
[code:1]cd rsstemp[/code:1]
on va dedans
[code:1]bash ~/shangrilrssplustorrent.bash > rssplustorrent.xml[/code:1]
en admettant que vous ayez sauvegardé mon script à la racine de votre répertoire personnel sous le nom de shangrilrssplustorrent.bash cette commande va le lancer et écrire ce qu'il produit dans le fichier rssplustorrent.xml
[code:1]sudo cp * /var/www[/code:1]
on copie le contenu du répertoire temporaire vers le répertoire public du serveur web
[code:1]sudo chmod -R 755 /var/www[/code:1]
on change les permissions des fichiers pour être sûr que le serveur web pourra les lire

Voilà, c'est fini ! Vous n'avez plus qu'à donner l'adresse de votre flux à vos amis... Euh, à vos fans. L'adresse sera http://votrenomdhotepermanent/rssplustorrent.xml


Le script :

[code:1]#!/bin/bash

#Shangri-l Rss plus torrent script version 0.0.1
#this script is available under a Creative Commons by sa 3.0 unported licence http://creativecommons.org/licenses/by-sa/3.0
#copyright Shangri-l 2011
#credit for the perl escaping to URI thing goes to dubek : http://stackoverflow.com/users/884/dubek and this dubek contribution is available under a Creative Commons by sa 3.0 unported licence and can be found here : http://stackoverflow.com/questions/296536/urlencode-from-a-bash-script

#if you want this script to work :

#perl is required with the MURI library

hostnametrrt="yourhostame.ontheinternet.org"
trrtpath="/home/shangril/shared/"
targetfile="rssplustorrent.xml"
#change this
#replace /home/shangril/shared/ by the path of your directory where your torrent files are.
#replace yourhostame.ontheinternet.org by your internet hostname
#replace rssplustorrent.xml by the name of the file where you will save the output of this script

rm ./*.torrent

echo -n "<rss xmlns:atom=\"http://www.w3.org/2005/Atom\" version=\"2.0\" xmlns:media=\"http://search.yahoo.com/mrss/\">"

echo -n "<channel>"

echo -n "<title>Shangril RSSplusTorrent generated feed</title>"
#change this

echo -n "<link>http://shangri-l.blogspot.com</link>"
#change this

echo -n "<description>My torrents</description>"
#change this

echo -n "<atom:link rel=\"self\" href=\""

echo -n "http://"

echo -n ${hostnametrrt}

echo -n "/"

echo -n "${targetfile}"

echo -n "\"/>"

for file in "${trrtpath}"*.torrent ;

do

cp "${file}" . ;

httpfile="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "${file/${trrtpath}/}")"

echo -n "<item>"

echo -n "<title>"

echo -n ${file/${trrtpath}/}

echo -n "</title>"

echo -n "<link>"

echo -n "http://"

echo -n ${hostnametrrt}

echo -n "/"

echo -n ${httpfile}

echo -n "</link>"

echo -n "<description>"

echo -n ${file/${trrtpath}/}

echo -n "</description>"

echo -n "<guid>"

echo -n "http://"

echo -n ${hostnametrrt}

echo -n "/"

echo -n ${httpfile}

echo -n "</guid>"

echo -n "<pubDate>"

mydate=$(date -R -r "${file}")

echo -n ${mydate}

echo -n "</pubDate>"

echo -n "<enclosure type=\"application/x-bittorrent\" "

echo -n "length=\""

mysize=$(ls -s --block-size=1 "${file}")

mysize2=${mysize/"${file}"/}

mysize3=${mysize2/ /}

echo -n ${mysize3}

echo -n "\""

echo -n " url=\""

echo -n "http://"

echo -n ${hostnametrrt}

echo -n "/"

echo -n "${httpfile}"

echo -n "\"/>"

echo -n "</item>"

done

echo -n "</channel>"

echo -n "</rss>"[/code:1]

[edit : ortho]

Réponses

  • bonne idée ça !

    mais ça suppose d'avoir une actualité déjà assez soutenu et une "fan-base" d'au moins une cinquantaine de personnes (histoire d'être tranquille).
  • Merci,

    Je suis assez d'accord avec quelques nuances...

    Pour l'actualité, effectivement, il n'est intéressant de relancer le script régulièrement que si de nouveaux torrents sont ajoutés - sinon, ça peut quand même être utile même à un projet qui n'a publié que quelques albums sur BitTorrent - juste pour avoir un genre d'index de tous les torrents disponibles... Mais l'intérêt est alors plus marginal, c'est vrai.

    Au sujet de la cinquantaine de fan, ça peut être sympa, si il y en a quelques-un parmi eux pour télécharger et partager, cela fera plus de sources, et tout le monde aura un meilleur débit en téléchargement ; sans compter le fait qu'il y aura souvent des sources en lignes, et les personnes qui souhaitent télécharger n'auront pas à attendre des heures qu'une source se manifeste pour que le téléchargement commence.

    Mais même sans base de fans, du moment que l'artiste partage ses torrent, ils seront disponibles - mais, si il n'y a qu'une source, il faudra, pour les personnes qui souhaitent télécharger, attendre que la source soit en ligne pour que le téléchargement commence... Et le débit sera, forcément, pas franchement excellent - enfin, ça dépendra du débit ascendant de l'unique source, mais beaucoup de monde accède au réseau via une connexion ADSL asymétrique et les débits montant de telles connexions ne sont jamais faramineux...

    Je voudrais, aussi, préciser que mon message est assez centré Ubuntu/Debain ; en particulier pour ce qui concerne l'installation d'Apache2 comme serveur web : Ubuntu, Debian et leurs dérivés utilisent apt-get pour installer les logiciels via les canaux logiciels.

    Sous Red Hat et dérivés, la commande équivalente est Yum.

    Sous FreeBSD, NetBSD, il faut voir avec le système 'port'.

    Sous Mac OS il faut installer les macports et voir avec eux.

    Sinon, pour le reste, Bash est disponible et installé par défaut sur beaucoup d'Unixes, et les commandes que je donne devraient passer avec pas mal de shells.

    Quand à Perl, il est disponible (voire installé par défaut) sur la plupart des plate-formes, et beaucoup de ses distributions récentes incluent la bibliothèque utilisée par le script.

    (à ce sujet, si par le plus grand des hasards vous n'avez pas la possibilité d'installer cette fameuse bibliothèque, jetez un coup d'œil au lien StackOverflow mentionné dans les commentaires au début du script où vous pourrez trouver quelques solutions alternatives - moi j'ai opté pour la première mentionnée, mais il y en a d'autres)

    Les motivé-e-s, sous Windows, devraient pouvoir au prix d'un effort certain (on a rien sans rien) faire fonctionner tout ça via l'émulateur Linux Cygwin.

    Je suis en train de préparer une solution auto-hébergée qui utilise ce script, histoire de fournir un accès aux contenus libres que je partage sur le pair-à-pair... Mais en fait, c'est en train de déborder un peu, et je suis au final en train de réfléchir à une sorte de tout-en-un de l'auto-hébergement tout à coup de script bash - pas besoin d'installer et de configurer PHP, donc - qui inclurait aussi du téléchargement direct via http ; aussi si je reste motivé j'ouvrirai probablement un autre fil dans 'Expérience d'indépendant' (puisque ce ne sera plus uniquement à base de P2P) où je présenterais rapidement le truc en fournissant mes scripts. Si ceci devait arriver je reviendrai éditer ce message pour donner le lien vers le nouveau fil.

    Enfin, c'est évident, mon message était dans l'optique 'vous êtes dans un groupe et vous voulez partager vos contenus sur le pair-à-pair', mais bien sûr ce script peut aussi être utile à toute personne qui partage des contenus libres sur BitTorrent.
  • Salut shangril,

    Je ne suis pas sûr d'avoir présentement un besoin de ce script, cependant il y a un système tout-en-un pour faire de l'auto-hébergement, notamment pour héberger des sites web et des boîtes de messagerie sur la même machine, ce programme s'appelle AlternC, toutes les infos sur Framasoft :

    http://www.framabook.org/alternc.html

    Si vous désirez l'installer, lisez bien la documentation c'est réellement important.
  • Ah, merci, merci beaucoup pour l'info. C'en est une qui vaut le coup.

    Si à l'occasion j'ai l'opportunité de me procurer un netbook ou un portable à laisser allumé h24 j'envisagerai sérieusement cette option.

    Mais en attendant, pour mon serveur minimal qui ne sera en ligne que par intermittence, je vais rester sur mon projet apache2+bash... Il faut dire que je suis gonflé à bloc et que ça mouline à fond à ce sujet dans ma tête depuis quelques heures ou quelques jours - ensuite, je suis généralement beaucoup moins assidu quand il s'agit de passer à l'action, mais j'ai quand même bon espoir d'avancer un peu au cours des prochains jours.

    En fait, ce qui me motive avant tout, c'est que coder m'amuse... Et si je peux avoir une solution, même des plus basique, dont je serais à l'origine, c'est évidemment un max de fun.
  • août 2011 modifié
    Le principe type du hacker (au sens noble, pas celui du vilain pirate). :)

    Pareil que toi, je cherche les solutions mais ne les appliquent pas forcément, disons qu'entre le temps et l'énergie que j'ai à y consacrer, pour le moment c'est pas gagné. Cependant, peut-être que la tendance va s'inverser ces prochains mois.

    En fait, j'aurai dû découvrir le libre à mes 6 ans, là où j'ai commencé à utiliser un ordinateur, de nombreuses fois je me suis fais la réflexion que le système que j'ai utilisé, qu'on ne citera pas ne m'a vraiment pas fait avancer en informatique, et en ce temps j'avais l'énergie et le temps nécessaire, maintenant que je connais le libre, c'est l'inverse. Trèves d'un libriste échoué. :roll:

    Il faut que je commence avec les scripts shell j'en ai vraiment besoin.
  • Je suis très flatté.

    Je te rejoins mieux vaut commencer au plus tôt, quand on a encore le cerveau agile, on prend les bonnes habitudes.

    En fait, le script que j'ai posté dans ce fil, c'est le quatrième que je rédige (en 12 ans sous Linux) si mes souvenirs sont bon. Je débute totalement en shell. Mais il y a beaucoup de documentation disponible en ligne et c'est puissant et direct, et plus j'en fait plus j'y prend goût. Donc je ne peux que conseiller à quiconque se sentant intéressé de s'y mettre.

    Bonne soirée.

Ajouter un commentaire