2016-02-06 17:01:16 +01:00
|
|
|
|
|
|
|
# Freebox v6 PHP API v3
|
|
|
|
|
2016-05-31 22:09:45 +02:00
|
|
|
![stable](https://poser.pugx.org/alphayax/freebox_api_php/v/stable)
|
2016-06-03 21:19:23 +02:00
|
|
|
![unstable](https://poser.pugx.org/alphayax/freebox_api_php/v/unstable)
|
2016-05-26 19:05:44 +02:00
|
|
|
![pakagist](https://img.shields.io/packagist/v/alphayax/freebox_api_php.svg)
|
2016-06-03 21:19:23 +02:00
|
|
|
|
2016-06-07 21:38:02 +02:00
|
|
|
[![Build Status](https://travis-ci.org/alphayax/freebox_api_php.svg?branch=master)](https://travis-ci.org/alphayax/freebox_api_php)
|
|
|
|
[![Coverage](https://api.codacy.com/project/badge/Coverage/f3569cf671f04b8ab6d699be3fd011e5)](https://www.codacy.com/app/alphayax/freebox_api_php?utm_source=github.com&utm_medium=referral&utm_content=alphayax/freebox_api_php&utm_campaign=Badge_Coverage)
|
2016-06-11 21:28:52 +02:00
|
|
|
[![Codacy](https://api.codacy.com/project/badge/Grade/f3569cf671f04b8ab6d699be3fd011e5)](https://www.codacy.com/app/alphayax/freebox_api_php?utm_source=github.com&utm_medium=referral&utm_content=alphayax/freebox_api_php&utm_campaign=Badge_Grade)
|
2016-05-26 19:05:44 +02:00
|
|
|
|
2016-06-12 11:16:37 +02:00
|
|
|
[![License](https://poser.pugx.org/alphayax/freebox_api_php/license)](https://packagist.org/packages/alphayax/freebox_api_php)
|
|
|
|
[![Total Downloads](https://poser.pugx.org/alphayax/freebox_api_php/downloads)](https://packagist.org/packages/alphayax/freebox_api_php)
|
2016-06-03 21:19:23 +02:00
|
|
|
|
2016-05-26 19:05:44 +02:00
|
|
|
|
2016-03-06 20:33:56 +01:00
|
|
|
Implementation PHP de l'API de la freebox (dans sa version 3).
|
2016-02-06 17:01:16 +01:00
|
|
|
|
|
|
|
## Prérequis
|
|
|
|
|
2016-06-09 21:18:55 +02:00
|
|
|
Ce projet est basé sur **composer**.
|
|
|
|
Pensez à installer les dependences :)
|
2016-02-06 17:01:16 +01:00
|
|
|
|
2016-03-06 20:43:58 +01:00
|
|
|
## Fonctionnalités
|
|
|
|
|
2016-06-09 21:18:55 +02:00
|
|
|
L'intégralité des fonctionnalités de l'API Freebox (v3) sont implémentées :
|
2016-03-06 20:43:58 +01:00
|
|
|
|
2016-06-12 11:16:37 +02:00
|
|
|
- [AirMedia](docs/services/AirMedia/AirMedia.md)
|
|
|
|
- [Call](docs/services/Call/Call.md)
|
|
|
|
- [Configuration](docs/services/config/config.md)
|
|
|
|
- [Download](docs/services/download/download.md)
|
|
|
|
- [FileSystem](docs/services/FileSystem/FileSystem.md)
|
|
|
|
- [Parental Control](docs/services/ParentalControl/ParentalControl.md)
|
|
|
|
- [RRD](docs/services/RRD/RRD.md)
|
|
|
|
- [Storage](docs/services/Storage/Storage.md)
|
2016-06-11 23:16:01 +02:00
|
|
|
|
2016-06-12 11:16:37 +02:00
|
|
|
Un document complet repertorie l'ensemble des services implémentées : [services.md](docs/services/services.md)
|
2016-03-06 20:43:58 +01:00
|
|
|
|
2016-02-06 17:01:16 +01:00
|
|
|
## Utilisation
|
|
|
|
|
|
|
|
### Application
|
|
|
|
|
2016-06-23 13:31:34 +02:00
|
|
|
L'objet `\alphayax\freebox\utils\Application` représente votre application. Vous devrez
|
|
|
|
créer une instance de cette classe et la transmettre aux services que vous souhaitez utiliser.
|
|
|
|
|
|
|
|
#### Association
|
|
|
|
|
2016-06-21 13:26:05 +02:00
|
|
|
Pour acceder aux services proposés par l'API de la freebox, vous deverez
|
|
|
|
autoriser votre application. Cette procedure impose que vous soyez connecté
|
|
|
|
au réseau local de votre Freebox lors de "l'association" et que vous ayez la
|
|
|
|
Freebox a portée de main. L'application sauvegarde automatiquement le token
|
|
|
|
retourné par la frebox et cette procedure ne sera plus a reproduire.
|
|
|
|
|
|
|
|
Notez que pour modifier les droits d'accès aux differents services, vous deverez
|
|
|
|
passer par l'interface web locale : [http://mafreebox.freebox.fr/login.php].
|
|
|
|
|
|
|
|
> Parametres de la freebox > Divers > Gestion des accès > Applications
|
|
|
|
|
|
|
|
|
|
|
|
1. Créer un objet application.
|
|
|
|
2. Demander l'autorisation de connexion a la freebox (cf: cadrant led du Freebox Server)
|
|
|
|
3. Récuperer une session pour utiliser les divers services de l'API
|
2016-02-06 17:01:16 +01:00
|
|
|
|
|
|
|
```php
|
|
|
|
$App = new \alphayax\freebox\utils\Application( 'com.alphayax.freebox.example', 'Freebox PHP API Exemple', '0.0.1');
|
|
|
|
$App->authorize();
|
|
|
|
$App->openSession();
|
|
|
|
```
|
|
|
|
|
2016-06-23 13:31:34 +02:00
|
|
|
#### Accès local
|
|
|
|
|
|
|
|
L'accès local est activé par défaut. Une fois l'application créer et la session ouverte, vous
|
|
|
|
pouvez utiliser directement les services auquels l'application à acces.
|
|
|
|
|
|
|
|
#### Accès distant
|
|
|
|
|
|
|
|
Pour pouvoir utiliser l'accès distant, il vous faudra le token associé a votre application.
|
|
|
|
Ce token s'obtient automatiquement après l'association faite via l'appel à la méthode `authorize()`.
|
|
|
|
Le token est ecrit dans le fichier `app_token`. Il est également disponible via la methode `\alphayax\freebox\utils\Application::getAppToken()`.
|
|
|
|
|
|
|
|
Une fois le token obtenu, vous pouvez proceder comme suit :
|
|
|
|
|
|
|
|
```php
|
|
|
|
$App = new \alphayax\freebox\utils\Application( 'com.alphayax.freebox.version', 'Freebox PHP API Example (Version)', '1.0.0');
|
|
|
|
$App->setFreeboxApiHost( 'https://xxx.freeboxos.fr:17105'); // A remplacer par votre host
|
|
|
|
$App->setAppToken( 'xxxxxxxxxxxxxxxxxxxx'); // A remplacer par votre token
|
|
|
|
$App->openSession();
|
|
|
|
```
|
|
|
|
|
2016-02-06 17:01:16 +01:00
|
|
|
### Services
|
2016-03-06 20:33:56 +01:00
|
|
|
Les appels aux services de l'API se font par l'intermédiaire de services.
|
|
|
|
Ces derniers possedent les méthodes pour récuperer, ajouter ou mettre a jour des données.
|
|
|
|
|
2016-05-21 11:03:05 +02:00
|
|
|
Voici un exemple d'utilisation de l'API System :
|
|
|
|
|
2016-02-06 17:01:16 +01:00
|
|
|
1. Nous créons un nouveau service "System"
|
|
|
|
2. Nous demandons de récuperer la configuration actuelle
|
2016-05-21 11:03:05 +02:00
|
|
|
3. Affichage du modele retourné
|
2016-02-06 17:01:16 +01:00
|
|
|
|
|
|
|
```php
|
|
|
|
$System = new \alphayax\freebox\api\v3\services\config\System( $App);
|
|
|
|
$SystemConfig = $System->getConfiguration();
|
|
|
|
|
2016-05-21 11:03:05 +02:00
|
|
|
print_r( $SystemConfig);
|
|
|
|
```
|
|
|
|
|
|
|
|
Résultat :
|
|
|
|
```php
|
|
|
|
alphayax\freebox\api\v3\models\SystemConfig Object
|
|
|
|
(
|
|
|
|
[firmware_version:protected] => 3.3.1
|
|
|
|
[mac:protected] => 77:77:77:77:77:77
|
|
|
|
[serial:protected] => 7777777777777777
|
|
|
|
[uptime:protected] => 44 jours 16 heures 35 minutes 16 secondes
|
|
|
|
[uptime_val:protected] => 3861316
|
|
|
|
[board_name:protected] => fbxgw2r
|
|
|
|
[temp_cpum:protected] => 63
|
|
|
|
[temp_sw:protected] => 52
|
|
|
|
[temp_cpub:protected] => 58
|
|
|
|
[fan_rpm:protected] => 2253
|
|
|
|
[box_authenticated:protected] => 1
|
|
|
|
)
|
2016-03-06 20:33:56 +01:00
|
|
|
```
|
|
|
|
|
2016-03-06 20:43:58 +01:00
|
|
|
## Exemples
|
2016-03-06 20:33:56 +01:00
|
|
|
|
2016-05-14 13:40:37 +02:00
|
|
|
Les exemples sont disponibles dans le repertoire `exemple`. Ils sont classés par services :
|
2016-05-14 15:54:59 +02:00
|
|
|
- `AirMedia` : Exemple de lancement d'une video sur le Freebox Player
|
2016-05-21 22:39:24 +02:00
|
|
|
- `Call` :
|
|
|
|
- `Call` : Liste les appels recus et emis sur la freebox (avec exemple de supression et de marquage comme lu)
|
|
|
|
- `Contact` : Liste les contacts, ajoute et retire un numéro de téléphone au premier contact de la liste
|
2016-05-16 13:21:21 +02:00
|
|
|
- `FileSystem`
|
|
|
|
- `fileSharing` : Un exemple de partage de fichier sur le net
|
|
|
|
- `fsListing` : Un exemple de scan de repertoires de la freebox
|
|
|
|
- `fsOperation` : Un exemple d'operations sur le fichiers (copies, déplacement, renommage, par2..)
|
2016-05-14 13:40:37 +02:00
|
|
|
- `config`
|
|
|
|
- `check_dns` : Un script pour récuperer la configuration courrante du DHCP
|
2016-05-22 14:48:14 +02:00
|
|
|
- `Connection` : Récupere diverses informations sur la connexion de la freebox (xDSL, FTTH, DynDns...)
|
2016-05-21 11:03:05 +02:00
|
|
|
- `DMZ` : Récupération de la configuration de votre zone démilitarisée
|
2016-05-19 21:00:10 +02:00
|
|
|
- `Freeplug` : Affichage de votre configuration de Freeplug
|
2016-05-14 13:40:37 +02:00
|
|
|
- `IncomingPort` : Retourne la configuration actuelle du port d'entrée HTTP
|
2016-05-17 12:38:03 +02:00
|
|
|
- `LCD` : Exemple de modification de la luminosité du cadrant LCD de la freebox server
|
2016-05-19 21:00:10 +02:00
|
|
|
- `LAN` : Configuration du LAN et exploration des machines en réseau
|
|
|
|
- `PortForwarding` : Exemple d'ajout d'une redirection de port
|
2016-05-21 11:03:05 +02:00
|
|
|
- `System` : Affichage de la configuration système de la freebox
|
2016-05-25 23:20:52 +02:00
|
|
|
- `UPnP` : Affichage des configuration UPnP
|
2016-05-31 22:09:45 +02:00
|
|
|
- `VPN` : Affiche la configuration des serveurs VPN, liste les utilisateurs...
|
2016-06-03 22:12:01 +02:00
|
|
|
- `WiFi` : Affiche la configuration globale du wifi
|
2016-05-14 13:40:37 +02:00
|
|
|
- `download`
|
2016-05-26 22:03:04 +02:00
|
|
|
- `Download` : Listage des téléchargement en cours, liste des fichiers d'un téléchargement et mise a jour de la priorité de téléchargement
|
|
|
|
- `DlConfig` : Affichage des configurations de téléchargement (bt, nntp...)
|
2016-05-14 13:40:37 +02:00
|
|
|
- `dl_rss` : Un script qui parse les flux RSS et qui rajoute en téléchagement les items correspondant a une expression réguliere
|
2016-05-26 23:12:02 +02:00
|
|
|
- `Bittorrent` : Affiche des infos sur des telechargements bittorent
|
2016-06-21 13:06:30 +02:00
|
|
|
- `ParentalControl`
|
|
|
|
- `Filter` : Retourne la config et les filtres actuels
|
|
|
|
- `Storage`
|
|
|
|
- `Disk` : Retourne des informations sur les disques connectés aux freebox
|
|
|
|
- `Partition` : Retourne des infos sur ces disques. Possibilité de verification ou de formatage
|
2016-06-23 13:31:34 +02:00
|
|
|
- `remote` : Un exemple de connexion distant
|
|
|
|
- `version` : Affichage de la version de l'API de la freebox
|