Gnbox

De neufbox 4

N'hésitez pas à laisser vos remarques ou suggestions sur le sujet dédié au projet Gnbox sur le forum. Le code source du projet est disponible à cette adresse

Description

Gnbox est un logiciel libre qui permet d'afficher toutes les informations de la neufbox. Le projet est en phase de développement en C++ et GTKmm.

Cadre

Ce projet est réalisé par 2 étudiants dans le cadre du Master Ingénierie du Logiciel Libre.

Avancement

Etant donné que nous sommes débutants en programmation avec GTKmm, nous détaillerons au fur et à mesure les différentes étapes d'apprentissage par lesquelles nous passerons:

  1. Prise de connaissances sur GTKmm:
  2. Outils de compilation:
  3. Nous pensions utiliser autoconf et automake pour générer automatiquement les exécutables mais après en avoir discuté avec un enseignant, nous avons décidé d'utiliser Cmake pour sa simplicité et pour le fait que nous avons un peu d'expérience avec cet outil. Nous nous pencherons sur les autotools si nous avançons rapidement sur le projet.

  4. Dépôt subversion:
  5. Nous avons généré une clé ssh que nous avons ensuite enregistré sur le site gna.org, ce qui nous a permis de récupéré le dépôt du projet Openbox4. Nous avons ensuite créer et ajouté un répertoire "gnbox" au dépôt. Les deux fichiers obtenus à la génération de la clé ssh doivent être placés dans le répertoire .ssh/ dans /home. Récupération du dépôt:

    $cd projet/
    $svn co svn+ssh://nom_utilisateur@svn.gna.org/svn/openbox4/trunk openbox4
    $svn mkdir gnbox
    $svn commit -m "répertoire pour le projet gnbox"
    

    Faire un commit

    $svn up (pour récuperer les modifications sur notre copie locale)
    $svn add fichiers (pour ajouter les nouveaux fichiers)
    $svn ci gnbox (pour commit notre dossier a distance)
    
  6. Identification des fonctionnalités:
  7. Nous avons identifiés les fonctionnalités principales de l'application en nous basant sur le moniteur Neufbox et les fonctions de l'API REST.

  8. Développement
  9. Nous avons créé l'interface graphique de l'application avec le système d'onglet et la page d'accueil pour se connecter à la box (la connexion à la box n'est pas encore effective). Nous essayons actuellement d'envoyer des requêtes HTTP vers la box et de parser le code xml de retour pour pouvoir traiter les actions.

Fonctionnalités

La liste suivante regroupe les différentes fonctionnalités que nous avons recensées, nous allons nous baser sur cette liste pour répartir les fonctionnalités dans les différentes fenêtres de l'application. Les puces de niveau 1 et 2 correspondront aux parties et sous-parties (avec systèmes d'onglets):

  • Accueil
    • Connexion
    • Date et heure
    • Adresse IP internet
    • Version de Firmware
  • État
    • Etat des services
      • Internet
      • Téléphone
      • TV
    • Informations du modem
      • Adresse IP de la box
      • Adresse MAC de la box
      • Durée de fonctionnement de la box
    • Informations de la ligne
      • Débit descendant
      • Débit montant
      • Marge de bruit descendant
      • Marge de bruit montant
      • Affaiblissement descendant
      • Affaiblissement montant
      • Mode de transmission (ADSL2+)
  • Téléphonie
    • Téléphonie sur IP
      • État de la ligne
      • État du combiné
    • Historique d'appel
      • activé / désactivé
      • affichage des historiques d'appels (si activé)
    • Appels manqués
      • Activé / désactivé
  • Réseau
    • Général
      • État des ports connectés à la box
        • TV
        • PC 1
        • PC 2
        • PC 3
        • Wifi (+ nombre de personnes connectées)
      • Liste des clients connectés
        • nom, adresse MAC, adresses IP, mode de connexion
    • WAN
      • Profil
        • Identifiant
        • Mot de passe
    • DNS
      • DNS Local
        • Adresse IP
        • Nom d'hôte
    • DHCP
      • Serveur DHCP
        • Activé / désactivé
        • Adresse de début
        • Adresse de fin
        • Bail (en secondes)
      • Adresses statiques
        • Adresse | Adresses MAC
    • NAT
      • Translation de ports
        • Nom, protocole, type, ports externes, IP destination, port destination, activation
      • UPnP
        • activé / désactivé
        • nombre de règles (si activé)
    • Route
      • Table de routage
        • Destination, masque de sous-réseau, passerelle
    • Filtrage
      • Filtrage
        • Filtrage personnalisé / désactivé
        • options
          • Protéger les ordinateurs Windows de l'internet
          • Autoriser l'envoi de courriels uniquement par l'intermédiaire des serveurs mail du groupe SFR
          • Bloquer le ping entrant
  • Wifi
    • Général
      • point d'accès
        • Etat
        • SSID
        • Diffusion SSID
        • Canal
        • Mode radio
        • Chiffrement
        • Clé
        • Filtrage MAC
      • Poste connectés
        • Adresse IP | Adresse MAC
    • Configuration
      • Configuration générale
        • Activation borne Wifi | activé / désactivé
        • SSID
        • Diffusion du SSID | activé / désactivé
        • Canal
        • Mode radio | auto, 11b, 54g
    • Chiffrement
      • Chiffrement
        • Système
        • Type de clé
        • Clé
    • Filtrage MAC
      • Filtrage MAC
        • Activation du filtrage
      • Adresse MAC autorisées
        • Adresses MAC
  • Hotspot
    • Général
      • Hotspot
        • État
        • Mode
      • Postes connectés
        • Liste des postes connectés
    • Configuration
      • Configuration
        • Activation
        • État
  • Application
    • Général
      • Application
        • Partage de fichiers
        • Partage d'imprimantes
        • Serveur multimédia
    • Partage de fichiers
      • Partage de fichiers Windows
        • Statut du service
        • Activer / désactiver
    • Partage d'imprimantes
      • Partage d'imprimantes
        • État du service
        • Mode bidirectionnel | activé / désactivé
    • Serveur multimédia
      • Service UPnP-AV
        • Statut du service
        • Activation du service UPnP-AV | activé / désactivé
  • Maintenance
    • Général
      • Maintenance
        • Protection de l'accès à l'interface
        • Profil ADSL
    • Système
      • Redémarrage
        • Redémarrage de la neufbox
      • Paramètres de configuration
        • Importer
        • Exporter
        • Restaurer
    • Administration
      • Administration de la neufbox
        • Protection (désactivée, mot de passe, bouton de service, les 2)
        • Identifiant
        • Mot de passe
        • Confirmation mot de passe
    • Personnalisation
    • Ligne ADSL
    • Diagnostic
    • Tests

Librairies

Pour les requêtes HTTP pour utilisons cURLpp qui est un wrapper de libcurl. Après avoir téléchargé les sources de cURLlpp , nous procédons ainsi:

Installer Boost et la libcurl si vous ne l'avez pas déjà,

 sudo apt-get install libboost-dev
 sudo apt-get install libcurl3 libcurl3-gnutls libcurl3-dev curl

Aller dans le répertoire curl que l'on vient de télécharger,

 cd ~/Téléchargement/curlpp-0.7.3/

Configurer le paquet, le compiler et l'installer,

 ./configure
 make
 make install

Ajouter include /usr/local/lib dans le fichier /etc/ld.so.conf puis tapez la commande,

 sudo /sbin/ldconfig

C'est tout ce qu'il est normalement nécessaire de faire. Exemple de compilation:

 gcc curlsample.cpp -o curlsample `pkg-config --libs --cflags curlpp`

gtkmm

gtkmm est l'interface C++ officielle de la librairie graphique GTK+. C'est un logiciel libre distribué sous licence GNU Lesser General Public License (LGPL).

Pour compiler un fichier cpp qui utilise gtkmm, il est nécessaire de rajouter certaines options à la compilation, exemple:

gcc fichier.cpp -o executable `pkg-config gtkmm-2.4 --cflags --libs`