Author Archives Pierre Coustillas

Nouvelle vente de beko

Un 5ème beko à été livré pour la plate-forme mobilité du bassin dijonnais. Si vous avez une association dont le métier est de mettre en relation des outils, des financeurs et des bénéficiaires, l’application beko est peut être faite pour vous.

N’hésitez pas à nous contacter.

Switch infiniband

Toujours en quête d’apprentissage de nouvelle technologie nous venons d’acquérir un switch infiniband. Cela va nous permettre de relier certain de nos serveur en 10 Gbits.

switch

PHP – Concaténation de include_path dans php.ini

Comment concaténer des include_path dans un ou plusieurs php.ini.

Tout d’abord le contexte :

Debian 5, installation standard,  et j’utilise 3 php.ini dont les 2 premiers sont inchangés :

  • /etc/php5/apache2/php.ini  –>  qui est le php.ini pour les pages web
  • /etc/php5/cli/php.ini  –>  qui est le php.ini pour les scripts php en ligne de commande
  • /etc/php5/conf.d/fichier.ini  –>  Par défaut tout ce qui est dans conf.d/ est ajouté au php.ini des pages web et de la ligne de commandes. C’est ce fichier commun aux deux autre que je modifie.

D’après la doc php, pour concaténer des include_path il faut faire :

include_path = ${include_path}:/nouv/path


Mais ceci n’est pas suffisant :

Si on regarde le path en ligne de commande avec la commande php -i | grep include_path , on obtient :

include_path => .:/usr/share/php:/usr/share/pear


On pense à un path par défaut (ce qui est vrai car include_path est commenté dans le php.ini)

Mais quand on ajoute à « /etc/php5/conf.d/fichier.ini »  la ligne include_path = ${include_path} :/nouv/path on obtient comme nouveau path :

include_path => :/nouv/path


On peut donc penser que l’ajout du path n’a pas fonctionné.

Oui mais à présent décomentons dans le fichier « /etc/php5/cli/php.ini » la ligne include_path = ".:/usr/share/php

la path devient à présent :

include_path => .:/usr/share/php:/nouv/path


La concaténation a fonctionné !

En conclusion il faut comprendre qu’on ne peut pas concaténer de path au path par défaut, mais seulement à un path déjà définit.

Nouveau contrat : Application de gestion en WEB pour cabinet comptable

Nous sommes sur le point de livrer le développement d’une application de gestion en WEB pour cabinet comptable.
Le projet gérera l’activité commerciale d’un cabinet comptable ou bien l’activité de plusieurs cabinets regroupés sur une région.

Plusieurs niveau d’accès sont prévu, Directeur d’agence, Manageur, Collaborateur.

Des tableaux de bord sont disponible avec leur équivalent en export excel.

L’application est prévue pour être hébergé sur internet (SAAS) , mais peut également être installée en Intranet.

Technique :

  • Utilisation de PHP / mysql avec le framework ZEND.
  • Utilisation de Jquery pour améliorer l’utilisation de l’application (Drag and Drop, Double click, …)
  • Utilisation importante d’Ajax pour rendre l’application très fluide.

IPv4 est mort, vive IPv6 !

Article publié le 30 octobre 2010 sur linuxfr par Nicolas Parpandet (gérant et ingénieur informatique chez 1G6) : Lien vers l’article.

Nous venons de passer en dessous du seuil de 5% d’adresses IPv4 publique libres, et il ne reste plus que 223 jours avant d’épuiser le stock d’IPv4, oui moins d’un an ! Oui, on vous l’a déjà fait plein de fois celle-là, mais il semblerait que ce soit la bonne !

  • Les services comme Google (depuis 2008), Facebook, ou Youtube sont déjà accessibles en IPv6
  • Les hébergeurs OVH & Dedibox (pas encore toutes les box) le proposent également ainsi que l’hébergeur IELO
  • Côté fournisseur d’accès, il y a Free, Nerim ou FDN
  • 9 des 13 serveurs racine DNS sont accessibles en IPv6

À quand notre LinuxFr préféré ? Ou votre site ?

Petit rappel

IPv6 est composé de 128 bits, qui s’écrivent en hexadécimal, les 64 premiers bits servent au routage et au FAI, petit gâchis me semble-t-il : les 64 derniers bits sont pour la partie hôte (oui, plus pour vous que pour la planète entière en IPv4).

Cela ne va pas sans poser de problème de confidentialité, car par défaut l’adresse IPv6 est composée dans la partie hôte par l’adresse MAC de l’équipement connecté. Ce comportement par défaut peut bien sûr être modifié.

Il n’y a plus besoin de serveur DHCP (bien que DHCPv6 existe), IPv6 intégrant nativement la distribution des paramètres réseau depuis les routeurs, les postes obtiennent ainsi automatiquement leur réseau et leur partie hôte de l’IP (calculée automatiquement par la MAC). Une RFC ajoute également la distribution du serveur DNS par ce moyen (merci aux commentaires experts de retrouver son numéro !)

Point négatifs

IPv6 devait apporter de nombreuses fonctionnalités natives qui n’ont – me semble-t-il – pas été implémentées sur les routeurs « d’Internet », telle qu’IPv6 mobile ou le multicast.

Rappel de commandes utiles

  • ifconfig -a
    • Si je n’ai qu’une adresse de type « fe80::2 », non ce n’est pas bon, il s’agit d’une adresse de lien local, et non d’une IPv6 publique
    • Si j’ai une seconde IPv6 => ok , type 2a01:e35… pour les freenautes (case à cocher dans votre console de gestion pour activation), c’est parfait !
  • ping6 ipv6.google.com
  • traceroute6 ipv6.google.com
  • ip -6 neigh

En conclusion

Nous revenons au début d’Internet, et oui beaucoup d’entre vous l’ont oublié, mais chaque poste était relié au net par une IP publique !
Attention donc aux réglages des paramètres de sécurité (pare-feux…). Pour cette raison en entreprise l’adoption de l’IPv6 ne sera sans doute pas activée avant très longtemps, une IPv6 publique fera sans doute du NAT pour aller vers internet, et/ou un proxy se chargeant de relayer les requêtes IPv4 vers IPv6 (merci à la dernière version squid). Il n’en est rien cependant pour les particuliers où la demande d’adresse est la plus importante !

Envoyer un email en vba sans popup de sécurité

La question qui nous intéresse aujourd’hui est comment envoyer un email en vba sans popup de sécurité ?

L’astuce est simple : Ne pas utiliser outlook pour envoyer l’email mais passer directement par un serveur smtp.

Dans la fonction suivante vous verrez également comment rendre le mail au format html et ajouter une pièce jointe.

Public Sub envoie_mail(depuis, destinataire, sujet, Body, fichier)

Dim Objemail
Dim iconf

    Set Objemail = CreateObject("CDO.Message")
    Set iconf = Objemail.Configuration

    With iconf.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "adresse.du.serveur.smtp"
        .Update
    End With
    
    Objemail.From = depuis
    Objemail.To = destinataire
    Objemail.Subject = sujet
    If Body  "" Then
        Objemail.HTMLBody = Body
    End If
    
    If fichier  "" Then
        Objemail.AddAttachment fichier
    End If
    
    Objemail.Send
    
End Sub


Nombre de table limité à 249 dans le concepteur de phpmyadmin (designer)

Certaines de mes bases étant particulièrement bien remplies (910 tables), je suis arrivé à une limitation de 249 tables enregistrées dans le concepteur de bases de données intégrées à phpMyAdmin.

Après quelques recherches non concluantes, j’ai fini par me rendre compte que cette limitation provenait de l’extension Suhosin.

Pour repousser la limite à 1000 tables il faut changer les valeurs suivantes dans votre php.ini :

suhosin.post.max_totalname_length=1024
suhosin.request.max_totalname_length=1024
suhosin.post.max_vars=4000
suhosin.request.max_vars=4000


API DHL en PHP

Une news rapide pour signaler que nous venons de livrer une class PHP permettant le dialogue avec DHL. Elle est utilisée par un de nos clients effectuant avec succès plusieurs centaines d’enlèvement par mois.

Titre d’un mail en cyrillique (russe) avec php

Voila un cas d’encoding un peu compliqué que j’ai démêlé :

Le but est d’envoyer par php un mail entièrement en cyrillique (sujet et body).

Le code de ma page php est en utf8 (ouf) et la chaîne aussi (ouf) mais le sujet d’un mail doit être dans un encodage tout autre, ni utf8, ni iso, mais un encodage fournit par mb_encode_mimeheader().

Php par défaut travail en iso 8859-1. La fonction mb_encode_mimeheader() attends donc par défaut de l’iso-8859-1.

Donc ce que je faisait avant pour de l’utf8 français c’était un utf8_decode pour passer en iso-8859-1 , puis je pouvais appeler mb_encode_mimeheader()  ce qui donnait :

mb_encode_mimeheader( utf8_decode  ("sujet"))



Ça passait très bien car convertir des accents français en iso-8859-1 ne posait aucun soucis.

Mais le russe est arrivé. Et impossible de convertir du cyrillique en iso-8859-1.

La solution est d’utiliser la fonction mb_internal_encoding avant l’appel à mb_encode_mimeheader :

mb_internal_encoding("UTF-8");
$sujet = mb_encode_mimeheader($sujet);



Et voilà un beau titre en Cyrillique !