Christophe Nowicki

May 26, 2006

dbus-daemon, how to listen on TCP/IP socket?

This feature is not well documented, so there is the configuration ligne to add in your /etc/dbus-1/system.conf file :

<listen>tcp:host=localhost,port=12434</listen>

Filed under: Network — Tags: — cscm @ 11:18

May 24, 2006

D-BUS for Mozilla project started

D-BUS for Mozilla I’ve setup an software developement platform with Trac for the D-BUS for Mozilla project :

Filed under: Google Summer of Code,Mozilla Firefox — Tags:, — cscm @ 20:37

Google Summer of Code 2006, application accepted !

google logo  +  summer  +  laptop

My proposal for the Google Summer of Code 2006 has been accepted!

Name
----
   Christophe 'CSCMEU' Nowicki
 
Email
-----
    cscm at meuh dot dyndns dot org

Project Title
=============
    Mozilla and D-BUS Integration

Synopsis
--------
   The goal of this project is to allow Mozilla components to communicate
   through D-BUS ( www.freedesktop.org/wiki/Software/dbus )
   in order to allow better integratation in the Linux Desktop.

Benefits to the Mozilla Community
---------------------------------
    Better Integration of the Mozilla Suite Inside the Linux Desktop:
        - possiblity to send and recive messages through D-BUS from Mozilla
        components via XPCOM objects.
        - possiblity to use existants projects like:
            - Avahi ( avahi.org ) for Zeroconf support,
            - Beagle  ( beaglewiki.org ) the query directly beagle from the
            Mozilla Search Bar
            - Other, see list of software supporting D-BUS :
            www.freedesktop.org/wiki/Software_2fDbusProjects
        - possiblity to provide Mozilla services via D-BUS.

Deliverables
------------
    - source code of the XPCOM compents under the MPL license
    - documentation of the API
    - sample extension using the XPCOM implementation

Project Details
---------------

    XPCOM Component
    ~~~~~~~~~~~~~~~

    The first step of the project is to allow Mozilla components
    to make D-BUS call :

        var DBUS = new Components.Constructor('@mozilla.org/dbus;1', 'nsIDBUS')
        var dbus = new DBUS()
        var bus = dbus.SystemBus()

        var dbus_obj = bus.get_object('org.freedesktop.DBus',
            '/org/freedesktop/DBus')
        var dbus_iface = dbus.Interface(dbus_obj, 'org.freedesktop.DBus')

        dump( dbus_iface.ListNames() )

    My API will be inspired by the Python D-BUS API.

    Javascript Events
    ~~~~~~~~~~~~~~~~~

    The second step would by to integrate D-BUS inside the Java Script event
    loop.

    Difficulties
    ~~~~~~~~~~~~
    The technical difficulties of the project are :
        - the type mapping between the D-BUS API and Mozilla
        - memory management, in order to avoid memory leaks
        - manage DBUS communication channels between componants instances.

    The cons against this project are :
        - D-BUS is not working (yet) on Microsoft Windows 
            (comming soon)


Project Schedule
================
   The project is sized for one person and should be finished at the end of
   Summer Of Code. I estimate the working time like that:

    - write specifications of the project ( 10 days )
    - analyse the mozilla architecture / source code to plugin the feature
    nicely ( 10 days )
    - write the XPCOM components ( 15 days )
    - write the documentation ( 5 days )
    - write sample application ( 5  days )
    - debug and integrate the components in the Mozilla source tree, code
    review, etc ( 10 days )

    Total estimate : 55 days witch is more or less 3 working month.

Bio
===
    I'am a French student in computer science from EPITECH ( www.epitech.net )
    involved in the free and opensource mouvement:

        - as an Debian 'Power User' : reporting bug, making packages, writing documentation and helping users on forums
        - as an Developper of the FANI project ( www.fani-project.org ),
        it's an multi operating systems network installer writen in
        XUL and Python.
        - as an half-time engineer and developper working for Easter-eggs
        ( www.easter-eggs.com ), an opensource services company involved
        in free software developpement ( see our projects on
        labs.libre-entreprise.org ).

    My curriculum-vitae is available on my blog: www.csquad.org/curriculum-vitae

Best Regards,
Filed under: Google Summer of Code — Tags: — cscm @ 09:43

May 10, 2006

Configuration automatique des interfaces réseaux sous Debian GNU/Linux.

Le Saint Graal de l’informaticien en déplacement consiste en une solution technique pour configurer automatiquement l’ensemble des interfaces réseaux (Ethernet + Wifi) sous Debian GNU/Linux.

Problèmatique

laptop Je dispose d’un portable évoluant parmis plusieurs réseaux informatiques :

  • le travail
  • la maison
  • etc.

La configuration réseau de ses environnements est diffèrente ( type de liaison, routeur par défaut, netmask, etc…) et demande la reconfiguration des interfaces à chaque déplacement.

Il s’agit d’une tâche pénible et laborieuse, c’est pour cela que je me interessé au problème afin de trouver une solution simple, ne nécessitant aucune intervention de ma part.

Celle-ci ne se base pas sur le logiciel NetworkManager, car ce dernier ne permet pas encore de détecter automatiquement sur quel réseau se trouve la machine.

Solution

Ma solution se base sur plusieurs logiciels diffèrents ayant chacun un rôle bien définit :

  • wpasupplicant : daemon prennant en charge le réseau Wifi (détection, configuration, authentification et roaming)
  • ifplugd : système de détection des interfaces réseaux, permettant de détecter le branchement d’un cable rj45 ou l’apparition d’un point d’accés Wifi.
  • guessnet : système de détection réseau basé sur l’utilisation de trames ARP
  • resolvconf : système de gestion des serveurs de noms
  • ifupdown : scripts de configuration réseau de la distribution Debian

Interfaces réseau

Mon portable dispose de deux interfaces réseaux :

  • eth0 : interface ethernet prise en charge par le driver r8169.
  • eth1 : interface wifi prise en charge par le driver ipw2200.

Il vaut mieux disposer de drivers libres (exit ndiswrapper et co … ;0)

Installation

L’installation des pâquets nécessaires est extrêment simple à l’aide de apt-get ou d’aptitude :

#aptitude install wpasupplicant ifplugd guessnet resolvconf

Emplacement des fichiers de configuration

L’ensemble de la configuration réseau se trouve dans deux fichiers :

  • /etc/network/inerfaces : configuration des toutes les interfaces
  • /etc/wpa_supplicant.conf : spécificitées liées aux réseaux sans fils

Configuration

Il faut tout d’abord configurer wpasupplicant afin que celui-ci soit lancé au démarrage de votre machine, la procédure est diffèrente en fonction de la version de votre distribution :

  • Sarge (version 0.3.8)
    Editez le fichier /etc/default/wpasupplicant de la manière suivante :

    # /etc/default/wpasupplicant

    # WARNING! Make sure you have a configuration file!

    ENABLED=1

    # Useful flags:
    # -D Wireless Driver
    # -i Interface (required, unless specified in config)
    # -c Configuration file
    # -d Debugging (-dd for more)
    # -w Wait for interface to come up

    OPTIONS=”-w -i eth1 -D ipw -c /etc/wpa_supplicant.conf”

    Activez le daemon, indiquez le nom de votre interface réseau et le nom du driver (wpa_supplicant -h pour obtenir la liste des drivers disponibles).
    Il faut ensuite configurer les spécificités de vos réseaux Wifi à l’aide du fichier /etc/wpa_supplicant/wpa_supplicant.conf en vous basant sur l’exemple fourni par le paquet Debian:

    # gunzip -c /usr/share/doc/wpasupplicant/examples/wpa_supplicant.conf.gz > /etc/wpa_supplicant.conf

    Une fois la configuration des réseaux Wifi déclarée, il suffit de lancer le programme à partir du script fourni dans /etc/init.d.

  • Autres (version 0.4.8)
    TODO

Nous allons ensuite passer à la configuration de toutes les interfaces dans le fichier /etc/network/interfaces.

Il faut indiquer à ifplugd de prendre en charge les deux interfaces de la manière suivante :

# ifplugd
allow-hotplug eth0 eth1

Puis décrire le mapping des interfaces réseaux avec le script guessnet-ifupdown.

# Interface Mapping
mapping eth0 eth1
        script guessnet-ifupdown
        map default: unknown 

Ensuite indiquer les spécificités de chaque réseau :

iface home inet static
        address 192.168.42.42
        netmask 255.255.255.0
        gateway 192.168.42.254

        dns-search csquad.lan
        dns-nameservers 192.168.42.3 192.168.17

        test1 peer address 192.168.42.253 00:12:17:07:C2:C9

iface work inet static
        address 10.0.0.101
        netmask 255.255.255.0
        gateway 10.0.0.1

        dns-search easter-eggs.fr
        dns-nameservers 10.0.0.2 10.0.0.20

        test1 peer address 10.0.0.1 00:50:22:8b:9c:d2

# DHCP par défaut
iface unknown inet dhcp

Les directives intéressantes sont :

  • dns-* : la configuration des serveurs DNS via resolvconf.
  • test* : les conditions permettant à guessnet d’identifier le réseau. La plupart du temps, il s’agit de l’adresse MAC du routeur par défaut.

Test de fonctionnement

Après la configuration, il ne vous reste plus qu’a tester l’ensemble en :

  • Branchant/Débranchant le câble réseau.
  • Activant/Désactivant le point d’accès Wifi.

Si tout se passe bien, vos interfaces réseaux seront configurées automatiquement. Dans le cas contraire, vous trouverez de nombreuses informations dans syslog, vous permettant d’identifier le problème.

Filed under: Debian,Network — Tags: — cscm @ 21:21

Powered by WordPress