Bonjour a tous,

Nouveau venu sur ce site, je viens vous partager mon expérience sur l'automatisation du transfert des fichiers téléchargés sur le serveur dédié vers la Freebox.

I - connexion ftp à la freebox depuis le serveur dédié.

Le protocole FTP de la freebox à évolué pour passer en FTPeS il y a quelques années afin de sécuriser un peu les appels.
FTPeS est un protocole FTPS forcé, il necessité d'avoir un certificat et donc un nom de domaine.
1ere étape donc : demander a free de fournir un nom de domaine à votre freebox.
Bonne nouvelle, free se propose de vous le faire gratuitement et de vous donner un nom de domaine de type XXXXX.freeboxos.fr
Pour ce faire rendez vous dans votre interface freebox rubrique configuration avancée : nom de domaine

(vous pouvez suivre ce tuto pour créer votre nom de domaine)

Puis il vous faut activer la connexion FTPeS depuis l'exterieur de votre freebox :
rendez vous dans l'onglet FTP de la configuration freebox et activez l'acces distant

Vous devez maintenant pouvoir acces a votre freebox depuis filezilla depuis n'importe ou en utilisant le nom de domaine que vous avez determiné. (XXXXX.freeboxos.fr:portDeControle)

II - connexion FTPeS depuis votre serveur

Il n'existe a priori que peu de clients qui permettent la connexion FTPeS en ligne de commande.
je vous propose d'utiliser lftp

Installons d'abord lftp :

apt-get update 
apt-get install lftp

Puis configurons lftp pour le forcer à utiliser le FTPeS

editer le fichier /etc/lftp.conf et ajoutez les lignes suivantes :

set ftp:ssl-protect-data true
set ftp:ssl-force true
set ftp:ssl-auth TLS
set ssl:verify-certificate no

Vous devriez pouvoir vous connecter a votre freebox à distance via LFTP maintenant.
Faisons un petit test :
lancez lftp
puis dans le shell lftp tapez

open -u freebox,[votrepassword] ftp://freebox@[nomdedomaine].freeboxos.fr:[Port]/Disque\ dur
mput [unfichiersurvotreserveur]
bye

III - Configuration rtorrent

J'ai personnellement suivi l'excellent tuto de création de rtorrent + rutorrent et je vais donc me baser la dessus pour ajouter la configuration.

1 - Création d'un script d'upload auto vers freebox

dans le repertoire home de votre utilisateur de rtorrent, créez un fichier bash "movetofreebox.sh"

nano movetofreebox.sh

Declarez ce fichier de script executable :

chmod +x movetofreebox.sh

copier le code suivant dans ce fichier

#!/bin/bash
printf -v FILE "%q" "$1"
if [ -d $FILE ]
then
 lftp -e "mirror -R $FILE /Disque\ dur/; quit" -u freebox,[motdepasse] ftp://freebox@[mondomaine].freeboxos.fr:[port]/
else
 lftp -c "open -u freebox,[motdepasse] ftp://freebox@[mondomaine].freeboxos.fr:[port]/Disque\ dur; mput $FILE; bye"
fi

(on utilise le printf pour échapper les caractères du chemin du fichier car lftp digère mal les caractères spéciaux)

2 - Ajout du script dans rtorrent

éditez votre .rtorrent.rc et ajoutez la ligne suivante à la fin :

method.set_key = event.download.finished,move_complete,"execute2=/home/XXXXX/movetofreebox.sh,$d.base_path="

relancez votre service rtorrent .... et normalement si tout va bien, des qu'un torrent a terminé, il sera automatiquement uploadé sur votre disque dur de freebox et vous pourrez le visionner directement via l'interface freebox

N'hésitez pas à commenter cette méthode, je suis ouvert à toute critique pour peu qu'elle soit constructive !

Hello et sois le bienvenu dans la communauté 🙂 une petite présentation sera un plus 😉
Merci pour ton retour/partage d'expérience.

Matt

Testé et approuvé, merci beaucoup !
Petite question : ne peut-on pas enregistrer nos identifiants d'accès dans lftp afin d'éviter de laisser le mot de passe en clair ?

15 jours plus tard

Merci beaucoup pour ce tuto 👍
Petite amélioration du script movetofreebox.sh

#!/bin/bash
printf -v FILE "%q" "$1"
if [ -d $FILE ]
then
 lftp -e "mirror -R $FILE /Disque\ dur/; quit" -u freebox,[motdepasse] ftp://freebox@[mondomaine].freeboxos.fr:[port]/
else
 lftp -c "open -u freebox,[motdepasse] ftp://freebox@[mondomaine].freeboxos.fr:[port]/Disque\ dur; mput $FILE; bye"
fi

Le script original permettait d'envoyer uniquement un fichier. Maintenant, en cas de répertoires dans le torrent, c'est également envoyé 😉

6 mois plus tard

Bonjour,
J'ai un soucis avec le script quand le nom du répertoire contient un espace.
1er soucis : la condition if ne marche pas, il ne détecte pas qu'il s'agit d'un dossier.
J'ai corrigé le problème en testant plutôt :
if [ -d "$1" ]

Par contre sur la commande lftp, je n'y arrive pas.
La commande du script ne fonctionne pas, surement une histoire de guillemets mais je suis perdu !
lftp -e "mirror -R $FILE /dossier/local/; quit" -u user,pass ftp://ip:21/

Merci d'avance

J'ai finalement trouvé, voici la bonne syntaxe 😀

#!/bin/bash
printf -v FILE "%q" "$1"
if [ -d "$1" ]
then
 lftp -e "mirror -R ${1@Q} /Disque\ dur/; quit" -u freebox,[motdepasse] ftp://freebox@[mondomaine].freeboxos.fr:[port]/
else
 lftp -c "open -u freebox,[motdepasse] ftp://freebox@[mondomaine].freeboxos.fr:[port]/Disque\ dur; mput ${1@Q}; bye"
fi
Répondre…