Contact Me

Dragon Technologie

514.917.0969

20
Nov

Introduction

Pour continuer la série d’article sur asterisk, celuis-ci vous expliquera comment compiler et installer les modules complémentaire (addons) d’asterisk.  Ainsi comment configurer le CDR (Call Detail Record, registre des appels en français).  Bonne lecture.
Veuiller prendre note que les versions spécifier dans cet artricle sont les derniers versions stables disponible lors de la création de celui-ci.

|| Read more »

20
Nov

Introduction

Ceci est le premier post d’une série sur l’installation et la configuration du PBX open source Asterisk. Vive l’open source !!  =)
Dans ce tutoriel je vais démontre comment installer Asterisk 1.6.1.9 (version stable de la branche 1.6 lors de la création de ce post).

Pré-requis

Avoir installé une Debian de Base

Paquet à installer :

# apt-get install build-essential libncurses-dev

Télécharger asterisk :

# wget http://downloads.asterisk.org/pub/telephony/asterisk/\
releases/asterisk-1.6.1.9.tar.gz

|| Read more »

20
Nov

Introduction

Prenons par exemple que vous générez le tableau suivant, à partir d’un code PHP, et que vous voulez générer un fichier XML à partir des même données.

My CD Collection

Title Artist
Empire Burlesque Bob Dylan
Hide your heart Bonnie Tyler
Greatest Hits Dolly Parton
Still got the blues Gary Moore

Modification du code

Voici un exemple de code source :

<?php
// prendre note que le tableau(array) $catalog doit exister
// il peut être généré par programmation ou bien par une base de donnée
?>
 
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
	<tr bgcolor="#9acd32">
		<th>Title</th>
		<th>Artist</th>
	</tr>
	<?php
		foreach($catalog as $cd) {
		?><tr><td><?=$cd['title'];?></td><td><?=$cd['artist'];?></td></tr><?
		}
	?>
</table>
</body>
</html>

Maintenant modifions le code source pour générer un fichier XML :

<?php
// prendre note que le tableau(array) $catalog doit exister
// il peut être généré par programmation ou bien par une base de donnée
?>
header ("Content-Type:text/xml");			// spécifie à php d'envoyer l'en-tête XML
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';	// voir plus bas
<catalog>
	<?php
		foreach($catalog as $cd) {
		?>
	<cd>
		<title><?=$cd['title'];?></title>
		<artist><?=$cd['artist'];?></artist>
	</cd>
		<? } ?>
</catalog>

Faire attention à ligne echo ‘‘;
Ne pas utiliser la syntax :

<?php // code
?><?xml version="1.0" encoding="ISO-9959-1"?><?
// code suite
?>

Parce que cela va générer une erreur PHP.

Résultat

Voici finalement la résultante du script :

<?xmlversion="1.0" encoding="ISO-8859-1"?>
 
<catalog>
	<cd>
		<title>Empire Burlesque</title>
		<artist>Bob Dylan</artist>
 	</cd>
	<cd>
		<title>Hide your heart</title>
		<artist>Bonnie Tyler</artist>
 	</cd>
 	<cd>
		<title>Greatest Hits</title>
		<artist>Dolly Parton</artist>
	</cd>
	<cd>
		<title>Still got the blues</title>
		<artist>Gary Moore</artist>
	</cd>
</catalog>

Référence

20
Nov

Introduction

Comme vous savez XML est un language de structuration de données et non de présentation.  Ainsi XSL (eXtensible StyleSheet Language) est un language recommandé par le W3C pour effectuer la représentation des donnée d’un document XML.

XML est un language permettant de définir des feuille de style pour les document XML, au même titre que les CSS (Cascading StyleSheets) pour le language HTML.  XSL est compatible avec les CSS.

Toutefois, contrairement aux CSS, XSL permet aussi de retraiter un document XML afin d’en modifier totalement sa structure, ce qui permet à partir d’un document XML d’être capable de générer d’autres types de documents (PostScript, HTML, Tex, RTF, …) ou bien un fichier XML de structure différente.

Ainsi la structuration des données (définie par XML) et leur représentation (définie par un langage tel que XSL) sont séparées. Cela signifie qu’il est possible à partir d’un document XML de créer des documents utilisant différentes représentations (HTML pour créer des pages web, WML pour les mobiles WAP, …).

XSLT

XSLT ou eXtensible Stylesheet Transformation permet de transformer la structure des éléments XML.

Un document XML peut être représenté comme une structure arborescente. Ainsi XSLT permet de transformer les documents XML à l’aide de feuilles de style contenant des règles appelées template rules (ou règles de gabarit en français).

Le processeur XSLT (composant logiciel chargé de la transformation) crée un structure logique arborescente (on parle d’arbre source) à partir du document XML et lui fait subir des transformations selon les template rules contenues dans la feuille XSL pour produire un arbre résultat représentant, par exemple, la structure d’un document HTML. Les composants de l’arbre résultat sont appelés objets de flux.

Chaque template rule définit des traitements à effectuer sur un élément (noeud ou feuille) de l’arbre source. On appelle “patterns” (en français motifs, parfois “éléments cibles“) les éléments de l’arbre source.

template rules et patterns

L’arbre source peut être entièrement remodelé et filtré ainsi qu’ajouter du contenu à l’arbre résultat, si bien que l’arbre résultat peut être radicalement différent de l’arbre source.

Structure d’un document XSL

Un document XSL étant un document XML, il commence obligatoirement par la balise suivante :

 <?xml version="1.0" encoding="ISO-8859-1"?>

D’autre part, toute feuille de style XSL est comprise entre les balises <xsl:stylesheet …> et </xsl:stylesheet>.  La balise xsl:stylesheet encapsule des balises xsl:template définissant les transformations à faire subir à certains éléments du document XML.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template ... >
		<!-- traitements à effectuer -->
	</xsl:template>
</xsl:stylesheet>

Association d’une feuille XSL à un document XML

Une feuille de style XSL (enregistré dans un fichier dont l’extension est .xsl) peut être liée à un document XML (de telle manière à ce que le document XML utilise la feuille XSL) en insérant la balise suivante au début du document XML :

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="fichier.xsl" type="text/xsl"?>

Exemple de transformation

Les template rules sont des balises XSL permettant de définir des opérations à réaliser sur certains éléments du document XML utilisant la page XSL, c’est-à-dire généralement de transformer un tag XML en un tag HTML (généralement plusieurs).

Voici un exemple simple de transformation via XSLT :

Le fichier XML source (data.xml):

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="template.xsl" type="text/xsl"?>
<catalog>
 <cd>
  <title>Empire Burlesque</title>
  <artist>Bob Dylan</artist>
  <country>USA</country>
  <company>Columbia</company>
  <price>10.90</price>
  <year>1985</year>
 </cd>
 <cd>
  <title>Hide your heart</title>
  <artist>Bonnie Tyler</artist>
  <country>UK</country>
  <company>CBS Records</company>
  <price>9.90</price>
  <year>1988</year>
 </cd>
 <cd>
  <title>Greatest Hits</title>
  <artist>Dolly Parton</artist>
  <country>USA</country>
  <company>RCA</company>
  <price>9.90</price>
  <year>1982</year>
 </cd>
 <cd>
  <title>Still got the blues</title>
  <artist>Gary Moore</artist>
  <country>UK</country>
  <company>Virgin records</company>
  <price>10.20</price>
  <year>1990</year>
 </cd>
<catalog>

Le fichier XSL (template.xsl):

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
      </tr>
      <xsl:for-each select="catalog/cd">
      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="artist"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Voici la représentation de la résultante:

My CD Collection

Title Artist
Empire Burlesque Bob Dylan
Hide your heart Bonnie Tyler
Greatest Hits Dolly Parton
Still got the blues Gary Moore

Références

7
Nov

Un seul commentaire, excellent!

Source : Playing for change

14
Oct

Ce mémo a été écrit et testé pour Debian, mais il est possible de l’adapter facilement à d’autres distributions.

Pré-requis

Avoir installé une Debian de Base

Installation et Configuration du serveur DHCP

Paquet à installer :

# aptitude install dhcp3-server

Remarque : Par défaut le serveur DHCP n’écoutera pas sur aucune interface. Pour assigner une interface, modifier le fichier « /etc/default/dhcp3-server »

Configuration du serveur

Éditer le fichier « /etc/default/dhcp3-server » pour spécifier l’interface/les interfaces a utliser pour le serveur

 INTERFACE="eth0"

Le fichier de configuration du serveur dhcp est

/etc/dhcp3/dhcpd.conf

Je conseille pour commencer de faire une copie de sauvegarde de ce fichier. Ensuite, vous pouvez effacer ou commenter les lignes existantes et ajouter les lignes suivantes :

  authoritative;
  option domain-name "example.com";
  option domain-name-servers 192.168.0.1, 4.2.2.1;
  option routers 192.168.0.1;
  default-lease-time 3600;

  subnet 192.168.0.0 netmask 255.255.255.0 {
     range 192.168.0.200 192.168.0.250;
  }

Les options

  • authoritative : Permet d’indiquer que le serveur DHCP sera responsable de la zone concernée
  • option domain-name : Spécifie le nom du domaine local
  • option domain-name-servers : Spécifie les adresses des serveur DNS
  • option routers : Spécifie l’adresse du “default gateway”

Comment avoir des IP fixes avec un serveur DHCP

Pour cela, il faut ajouter dans le fichier « /etc/dhcp3/dhcpd.conf », de nouvelles lignes.

L’exemple suivant permet de fixer une adresse IP en fonction de son adresse MAC :

 host INFO-TG  {
   hardware ethernet 00:05:5d:f5:08:02;
   fixed-address 192.168.0.11;
 }

Redémarrage et logs

Une fois la configuration terminée, il faut démarrer ou redémarrer le démon pour prendre en compte les modifications :

# /etc/init.d/dhcp3-server restart

Si le démarrage retourne une erreur, il faut penser à consulter les logs :

# tail -f /var/log/syslog

Le fichier suivant donne la liste des adresses IP délivrées par le serveur. Pour chaque adresse IP l’on retrouve : son adresse mac, le nom de l’ordinateur, la date de début et de fin du bail :

/var/lib/dhcp3/dhclient.leases
11
Oct

Mise en situation

Si vous tentez de vous connecter automatiquement entre un ordinateur A vers l’ordianteur B, soit pour avoir accès a un terminal ou vous voulez automatiser une tâche.

Comment procéder

  1. Identifier vous sur l’ordinateur A (client) pour créé une pair de clef d’authentification (ne pas spécifier de “passphrase”)
    utilisateur@ordinateurA:~> ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/utilisateur/.ssh/id_rsa):
    Created directory '/home/utilisateur/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/utilisateur/.ssh/id_rsa.
    Your public key has been saved in /home/utilisateur/.ssh/id_rsa.pub.
    The key fingerprint is:
    3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 utilisateur@ordinateurA
  2. Maintenant utiliser ssh ou autre logiciel de console pour créé le répertoire ~/.ssh pour l’utilisateur que vous voulez sur l’ordinateur B. (Prenez note que le répertoire peut déjà exister):
    utilisateur@ordinateurA:~> ssh utilisateur@ordinateurB mkdir -p .ssh
    utilisateur@ordianteurB's password:
  3. Finalement, ajouter la clef public, créé auparavant, dans le fichier ~/.ssh/authorized_keys dans l’ordinateur B et entrer le mot de passe une dernière fois:
    utilisateur@ordinateurA:~> cat .ssh/id_rsa.pub | ssh utilisateur@ordinateurB 'cat >> .ssh/authorized_keys'
    utilisateur@ordinateurB's password:
  4. Maintenant, vous pouvez vous connecter sur l’ordinateur B depuis l’ordinateur A sans spécifier de mot de passe:
    utilisateur@ordinateurA:~> ssh utilisateur@ordinateurB
    utilisateur@ordinateurB:~>

Prendre note que dépendamment de votre version de SSH vous aurez peut-être besoin des changements suivant :

  • Insérer la clef public dans le fichier .ssh/authorized_keys2
  • Changer les permissions du répertoire .ssh pour 600
10
Oct

Note: C’est étapes s’applique à tout fichiers ou dossiers.

Une petite récapitulation sur la compression et l’extraction des fichier tar.gz (ou tgz). Pour compresser un dossier intituler backup :

# tar -zcf backup.tar.gz backup

Cette commande compresse le répertoire backup dans un fichier backup.tar.gz. Pour décompresser, utiliser la commande suivante :

# tar -zxf backup.tar.gz

Maintenant la partie amusante. Regardons comment nous pouvons ajouter une encryption de base.  Pour compresser le répertoire backup avec l’encryption, exécuter :

# tar -zcf – backup | openssl des3 -salt -k votremotdepasse | dd of=backup.des3

Remplacer votremotdepasse par un de vos mot de passe.  Cette commande génére un fichier nommé backup.des3. Ce fichier peut être décompresser uniquement avec votre mot de passe.

Pour extraire votre archive encrypter, utiliser la commande suivante :

# dd if= backup.des3 | openssl des3 -d -k votremotdepasse | tar zxf -

Veuiller prendre note que le “-” à la fin, n’est pas une erreur de typo, mais bien nécessaire à la commande pour fonctionner.  Remplacer votremotdepasse par le mot de passe utiliser pour encrypter le fichier.

Etienne Lachance - Copyright © 2009 - Dragon Technologie - Tout droits réservés