Mettre en place un environnement de développement Django sous Opensuse

Nous allons voir dans cet article comment mettre en oeuvre un environnement développement Django sous Opensuse. Django est un framework très puissant programmé en python.

Installation des dépendances python

Nous commençons par installer les outils indispensables, notament pip afin de pouvoir installer nos paquets dans notre environnement.

zypper install python-devel python-pip python-virtualenv

Python est installé par défaut sur les distribution Opensuse. Nous installerons les autres paquets via pip dans un environnement virtualisé dédié à notre projet.

Création de notre environnement virtuel

Il est indispensable de créer un environnement virtuel par projet, ainsi vous pourrez sur une seule machine de développement travailler avec différentes versions de django, différentes versions de votre projet et maîtriser au mieux les dépendances spécifiques et les versions spécifiques des dépendances de votre projet.

La création d’un environnement virtuel est simple :

#Création de virtualenv appelé venv -- à remplacer par le nom que vous souhaitez --
virtualenv venv --no-site-packages

#Activation du virtualenv
source venv/bin/activate

#Se positionner dans son environnement
cd venv

#Sortir ou désactivation de votre virtualenv
deactivate

Installation de django

L’installation est assez simple grâce à pip. Je vous conseille aussi d’installer django-extensions et django-debug-toolbar ainsi que south, qui sont des outils indispensables de mon point de vue.

pip install django
pip install django-extensions
pip install django-debug-toolbar

Vérifions que django fonctionne bien. Pour cela, lancer une console python :

import django
print django.get_version()

# CTRL+D pour quitter

Avec la dernière opensuse 12.3, vous devrez obtenir  » 1.5 « . Nous sommes sous python 2.7 (2.7.3 au moment de l’écriture de l’article).

Vous êtes maintenant prêt à développer votre application django sous opensuse.

Configuration de fail2ban selon les différentes versions d’asterisk

Fail2ban est un outil indispensable à installer sur ses serveurs asterisk. Il permet de bloquer de manière proactive les tentatives de scan et ainsi de protéger vos deniers. Mais selon la version d’asterisk, le filtre doit être configurer de manière différente.

Il faut ajouter au fichier jail.conf la partie le code suivant :

[asterisk-iptables]
# if more than 4 attempts are made within 6 hours, ban for 24 hours
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
              sendmail[name=ASTERISK, dest=, sender=]
logpath  = /var/log/asterisk/messages
maxretry = 4
findtime = 21600
bantime = 86400

et créer le fichier suivant :

filter.d/asterisk.conf

et copier le code suivant pour asterisk 1.4 et 1.6 :

# Fail2Ban configuration file
#
#
# $Revision: 251 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>S+)
# Values:  TEXT
#

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' (from )
            NOTICE.* .*: Host  failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
            NOTICE.* .*: Registration from '.*" .* failed for '<HOST>' - Peer is not supposed to register
            VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

et pour la version 1.8, le code suivant :

# Fail2Ban configuration file
#
#
# $Revision: 251 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>S+)
# Values:  TEXT
#
# Asterisk 1.8 uses Host:Port format which is reflected here

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
            NOTICE.* .*: Registration from '".*".*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '".*".*' failed for '<HOST>:.*' - Wrong password
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' (from <HOST>)
            NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
            NOTICE.* .*: <HOST> failed to authenticate as '.*'
            NOTICE.* .*: <HOST> tried  to authenticate with nonexistent user '.*'
            VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Ce code fonctionne pour asterisk 10 et 11 même si je bosse sur une amélioration.

Comment récupérer son RIO et savoir quand finit mon contrat?

Je reçois beaucoup de questions, mais 2 questions reviennent assez souvent : comment puis-je récupérer mon RIO ? comment puis-je savoir quand finit mon contrat mobile ? une question simple. Il existe un numéro unique à appeler à partir de son mobile qui vous permettra d’obtenir ces 2 informations et ce, quelque soit votre opérateur.

Il suffit de composer le :

3179

une charmante voix vous annonce votre RIO et la date de fin de votre contrat. Mais ne vous inquiétez pas si vous n’avez pas le temps de tout écrire, vous allez recevoir quelques instants après un SMS récapitulant ces données.

Howto : Automatiser les mises à jour de sécurité sous Ubuntu Server

Si vous n’êtes pas connecté chaque jour sur les listes de diffusion de sécurité de votre distribution préférée (et ça, c’est pas bien), mais que vous souhaitez malgré tout dormir tranquille, Ubuntu a intégré une fonctionnalité pour vous.

Soit vous activez cette fonctionnalité lors de l’installation (choix N°2) :

Soit, via ces commandes :

Il faut que le paquet unattended-upgrades soit installé, dans le cas il ne l’est pas :

sudo apt-get install unattended-upgrades

Puis activer le paquet :

sudo dpkg-reconfigure unattended-upgrades

Suivez attentivement le dialogue intéractif. A l’issue de ce process, 2 fichiers sont créés :

/etc/apt/apt.conf.d/20auto-upgrades

et

/etc/apt/apt.conf.d/50unattended-upgrades

Voilà, votre distribution se mettra à jour automatiquement dès qu’une mise à jour de sécurité est disponible. Il est bien entendu possible de personnaliser l’intervalle de vérification et la possibilité de recevoir un mail à chaque mise à jour, juste pour vous avertir, et vous donner envie de vous connecter afin de vérifier que tout va bien (c’est un conseil, mais une mise à jour peut planter un process !).

Howto : comment utiliser Sipp pour tester la montée en charge de votre serveur SIP ?

Après le précédent guide détaillant l’installation de sipp sur debian/centos, il est temps maintenant d’apprendre à utiliser ce fabuleux outil.

Le scénario du jour (sur sipp, nous avons la possibilité de créer de nombreux scenarii ce qui apporte une grande richesse à cet outil open source) a pour but de tester la montée en charge de votre tout nouveau serveur SIP que ce soit un Asterisk, un Freeswitch, un Kamailio, un Opensips ou tout autre solution libre ou propriétaire.

Voici le schéma du test, SIPP et le proxy SIP étant installés sur 2 serveurs différents :

Sipp UAC —> Proxy SIP —> Sipp UAS

Sipp Client :

./sipp -sf uac_pcap.xml -d 10000 -s 0917000000 10.254.254.249:5060 -l 10000 -mi 10.254.254.9 -i 10.254.254.9 -mp 6000 -r 1

Explication de la commande :

  • -sf uac_pcap.xml : exécute le scénario contenu dans le fichier xml
  • -d 1000 : définit la durée de l’appel en ms (durée de l’instruction pause du script pour être précis)
  • -s 0917000000 : définit le username de la requête URI 10.254.254.249:5060 : serveur à tester avec le port d’écoute SIP
  • -l 10000 : nombre max d’appels simultanés
  • -mi 10.254.254.9 : adresse IP locale pour le flux média
  • -i 10.254.254.9 : adresse IP de l’interface locale d’écoute -mp 6000 : port local RTP echo (défaut : 6000)
  • -r 1 : nombre d’appels par seconde

Sipp Serveur :

./sipp -sf uas.xml -p 5062 -i 192.168.52.221 -mi 192.168.52.221 -mp 7000

La configuration de votre proxy SIP est à adapter en conséquence : les 2 comptes SIP (client et serveur) et la table de routage des appels.

Bon test.

Résiliation de votre forfait ou abonnement mobile

Depuis le lancement de Free Mobile, de nouvelles offres mobiles avec des tarifs intéressants ont vu le jour. Si votre opérateur actuel ne vous propose pas de conditions intéressantes (et oui, ça arrive), vous n’avez pas d’autres choix que de résilier votre abonnement.

Vous n’êtes plus engagé, dans ce cas une simple lettre recommandée au service résiliation de votre opérateur en respectant le préavis contractuel est suffisant. Selon l’article L. 121-84-2 du Code de la consommation (Loi CHATEL), le préavis ne peut excéder 10 jours sauf si cette demande est émise par le consommateur. Votre nouvel opérateur peut même se charger de cette démarche pour vous, ainsi la portabilité, la fin de votre ancien contrat et le début du nouveau coïncideront. Par contre, vous avez signé un engagement long (24, 36 mois). Dans ce cas, la loi CHATEL peut vous venir en aide. Dans un premier temps, la loi ne s’applique qu’aux abonnements souscrits à partir du 1er juin 2008. Ensuite, cette loi stipule qu’un abonnement mobile ne peut dépasser les 24 mois. Article L.121-84-6 du Code de la consommation :

Les fournisseurs de services ne peuvent subordonner la conclusion ou la modification des termes du contrat qui régit la fourniture d’un service de communications électroniques à l’acceptation par le consommateur d’une clause imposant le respect d’une durée minimum d’exécution du contrat de plus de vingt-quatre mois à compter de la date de conclusion du contrat ou de sa modification.

Si vous ne connaissez pas la durée d’engagement restant, l’article L. 121-84-3 du Code la consommation, impose aux fournisseurs d’indiquer sur la facture soit la durée d’engagement restant à courir, soit la date de la fin de l’engagement ou, le cas échéant, mentionner que cette durée minimum d’exécution du contrat est échue. (NOTA : mon opérateur bizarrement ne respecte pas cette obligation)

Enfin, l’article 17 de la loi du 3 janvier 2008 sur le développement de la concurrence au service des consommateurs a introduit dans le cadre de l’article (nouvel article L.121-84-6) du code de la consommation, la possibilité de résilier par anticipation un contrat de communication électronique avec une durée d’engagement supérieure à 12 mois.

D’offrir au consommateur la possibilité de résilier par anticipation le contrat à compter de la fin du douzième mois suivant l’acceptation d’une telle clause moyennant le paiement par le consommateur d’au plus le quart du montant dû au titre de la fraction non échue de la période minimum d’exécution du contrat.

Maintenant, vous avez les éléments pour gérer votre fin de relation contractuelle avec votre fournisseur, ou juste lui mettre la passion en lui indiquant que vous connaissez parfaitement la loi en vigueur en France.

Comment résoudre une mauvaise qualité de communication VoIP ?

Vous avez déployé une solution de VoIP et vous rencontrez des problèmes de qualité. Alors, que les communications doivent être d’une qualité équivalente au numéris ou proche (dans le cas de compression), vous subissez des blancs, de l’écho, une voix métallique voir même des coupures de communications.

Table des matières

Introduction

Dans l’article, je vais considérer que le site dispose d’un câblage informatique de qualité suffisante et que le matériel déployé est de bonne qualité (switch, routeur, IPBX, postes téléphoniques, passerelles …).

Déterminer l’origine des problèmes

Il va être important dans un premier de temps de déterminer si le problème vient des communications externes ou si le problème intervient aussi sur les communications sur le même site. Si les appels entre 2 postes IP (important) sur le même site (avec l’IPBX en local si nous ne sommes pas en centrex) sont dégradés, il va falloir dans un premier temps résoudre ce problème. Pour cela, il faut vérifier quelques paramètres cruciaux :

  1. quel est le codec utilisé : le codec a une influence sur la qualité perçue. si on a un PABX, utilisez le G711 voire G722 (codec large bande permettant de mieux reproduire la voix). En mode centrex, il peut être souhaitable d’économiser la bande passante, alors le G729 sera le codec de choix.
  2. le mode peer to peer activé : si oui, le flux RTP reste sur le réseau local en mode centrex, la connexion se faisant de poste à poste. Le WAN n’intervient donc pas dans le flux voix en dehors de la signalisation (qui peut-être considéré dans un premier temps comme négligeable d’un point de vue bande passante si on le compare aux flux RTP). Sinon, pour un appel entre 2 postes sur le même site, nous avons 1 appel sortant et 1 appel entrant sur le site, il y a donc un impact sur le WAN.
  3. la fonction VAD (Voice Activity Detection) est-elle activée ? cette fonctionnalité intéressante permet de limiter la bande passante d’une communication en supprimant les paquets incluant les silences. Suivant les réglages, l’économie peut-être importante. Cette fonction est inutile en local, et doit-être désactivée. Elle est difficile a bien paramétrer, et en cas d’erreur les mots seront coupés, les communications pouvant devenir inaudibles.
  4. un VLAN voix a t’il été paramétré appliquant la CoS voix aux flux concernés ?
  5. vérifier que les équipements sont bien à jour, car une version firmware peut avoir un défaut expliquant le problème.

En général, les problèmes sont surtout rencontrés lors des appels externes. En effet, la bande passante est alors plus limitée, les communications passent parfois sur internet et le lien est aussi parfois partagé avec d’autres flux.

VoIP via internet

Je ne conseillerai jamais assez de ne pas transporter la voix sur internet. Internet n’a pas été conçu pour transporter des flux temps réels et ne sait pas garantir la qualité (cela ne veut pas dire que cela ne marche pas). De plus, la sécurité sera aussi difficile à assurer. Je vous laisse imaginer ce que je pense des offres de trunk SIP via internet. Il suffit d’aller voir la liste des failles de sécurité pour prendre peur, mais ce n’est pas le sujet du jour, mais d’un prochain article.

Autres informations essentielles

En plus des questions posées plus haut, il faut aussi obtenir d’autres informations :

  1. Nombre d’appels simultanés externes
  2. Bande passante du lien haut débit (en IP)
  3. Le lien est-il dédié à la voix ? si non, quels sont les mécanismes qui prioritisent la voix sur les autres flux ?
  4. Les flux voix empruntent ils internet ou restent sur le réseau de l’opérateur ?
  5. En mesurant les flux sur le lien, vous pourrez vérifier si le lien est saturé, si les règles sont bien appliquées ou si le lien souffre de perte de paquets ou de gigue.

Quelques pistes

Ne connaissant pas vos cas particuliers, je ne peux pas allez beaucoup plus loin, mais si vous avez des connaissances réseaux suffisantes et en répondant aux questions ci-dessous, vous avez toutes les billes pour trouver la source du problème. Pour vous aider un peu plus, on peut obtenir des informations intéressantes en écoutant la qualité de la voix.

  • Vous avez des blancs en court de communication, il faut regarder du côté de la VAD si elle est activée. Ensuite, cet effet peut-être causé par de la perte de paquet ou une gigue trop importante du lien WAN. Cela peut aussi être dû à une règle de QoS mal définie.
  • Vous avez des bruits ou des craquements. Ils sont souvent causés par une congestion du LAN ou du WAN.
  • Vous avez une voix de robot, regardez du côté de la perte de paquet dûe à une gigue trop importante. (reste à trouver la source de cette gigue).
  • Vous avez de l’écho. Cela est dû à un problème de réglage de l’echo canceller du PABX ou de la gateway.

J’écrirai prochainement un article détaillé sur les symptômes et les causes qui s’y rattachent.