Skip to content
William Desportes edited this page Jan 13, 2018 · 33 revisions

Vous voici sur la page d'accueil du Wiki : Mafreebox. Toute contribution en tout genre sera acceptée avec ma plus grande bénédiction. N'hésitez pas à cloner, github adore ça, ... moi aussi.

Mais quezako:

Mafreebox est une implémentation PHP et Ruby de l'API JSON permettant l'accès à l'interface d'administration de la Freebox. Cette interface est accessible depuis votre domicile à l'adresse : http://mafreebox.freebox.fr/ et permet de gérer les différents éléments de la Freebox V6, dite Freebox Révolution.

Il est aussi possible de rendre cette interface visible depuis l'Internet, ce qui vous permettra de télé-administrer ou superviser votre Freebox depuis l'extérieur (machine virtuelle, cloud, ...). Généralement, l'interface sera visible avec votre adresse IP externe : http:///

Les fonctions de téléchargement sont régulièrement utilisées pour compenser le manque de débit des lignes ADSL qui sont particulièrement assymétrique : débit très faible en upload (remontée d'information). L'idée consiste a démarrer les transferts volumineux en pleine nuit, ce qui n'encombre pas la bande passante pendant la journée. Hormis l’asynchronisme du téléchargement, cette méthode ne présente que des avantages.

L'API repose principalement sur le standard JSON et facilite le développement et l’interfaçage avec les langages de développement. Cette API peut changer au gré des évolutions du firmware de la Freebox avec la menace que certaines évolutions brisent la compatibilité des logiciels existants. Mais jusqu'à maintenant il n'y a eu que peu d'évolutions bloquantes. Nous ne pourrons garantir une pérennité que dans la mesure du possible. Dans le domaine du logiciel libre, nul n'est tenu à l'impossible.

Cette Freebox est constituée de 2 boitiers :

  • un boitier d'accès à Internet (ADSL ou fibre). Il contient un disque dur de 250Go,
  • un boitier multimédia comprenant un lecteur blueray et une interface DVI.

Documentation:

L'interface d'administration permet de gérer les fonctions suivantes réparties en modules, implémentant des fonctions JSON :

  • Account : account basic http authentication account.unknown
  • Conn : informations et gestion de la connexion Internet,
  • DHCP : Gestion du serveur DHCP,
  • Download : Gestionnaire de téléchargement ftp/http/torrent.
  • Ftp : gestion du serveur FTP,
  • Fs : Systeme de fichiers : Fonctions permettant de lister et de gérer les fichiers du NAS.
  • Fw : Firewall : Fonctions permettant d'interagir avec le firewall.
  • Igd : UPnP IGD : Fonctions permettant de configurer l'UPnP IGD (Internet Gateway Device).
  • IPv6 : Fonctions permettant de configurer IPv6
  • Lan : Fonctions permettant de configurer le réseau LAN.
  • Lcd : Afficheur Fonctions permettant de controler l'afficheur de la Freebox.
  • Phone : Gestion de la ligne téléphonique analogique et de la base DECT.
  • Share : Partage Windows : Fonctions permettant d'interagir avec la fonction de partage Windows de la Freebox.
  • Storage : Systeme de stockage : Gestion du disque dur interne et des disques externe connectés au NAS.
  • System : fonctions système de la Freebox,
  • User : Utilisateurs : Permet de modifier les paramétres utilisateur du boîtier NAS.
  • WiFi : Fonctions permettant de paramétrer le réseau sans-fil.

Modules supplémentaires :

  • RRD : extraction des graphes RRD (connexion ADSL, signal/bruit, download)
  • FsUnix : commandes Unix-like (mv, rm, cp, mirror, save).

Organisation du code :

  • la classe Mafreebox assure les services de base : login, execution des requêtes JSON,
  • les différentes sous-classes, par délégation implémentent les différents services.

Actualité :

  • janvier 2013 : suite à la découverte d'une faille de sécurité de type CSRF, un nouvel attribut doit être transmis dans le header de certaines requêtes. Il s'agit de l'attribut : X-FBX-CSRF-Token. Cet attribut est géré par cette bibliothèque.

Liens:

  • documentation originale embarquée sur le firmware de la Freebox au format HTML. Cette documentation cachée a au fil des évolutions du firmware été supprimée. Il conviendra de la convertir et de l'intégrer à ce Wiki (ou un autre).
  • documentation originale concernant l'API Freebox.
  • l'API de la gestion de la télécommande blog sur le même sujet, la même chose en shell (bash)
  • autres API de la Freebox : Freenews
  • Transmission est un client Bittorent permettant d'effectuer des téléchargement en P2P. La version actuelle est la 2.12. Une API Json et une autre permet de gérer via requêtes RPC, le client Transmission. Une documentation complète est disponible sur le site de Transmission. Des implémentations existent dans différents langages dont php, ruby.
  • petit script permettant d'activer le wifi de la freebox (perl + php).
  • scripts Python : https://github.com/cart0uche/pyfree ; fonctionnel en V2

autre liens :

  • l'api SOAP du prestataire OVH, sans doute un modèle du genre.

TODO:

Ruby :

  • voir si l'API mechanize ne serait pas plus efficiente.