PyFreeBilling : softswitch voip 2.0 démo

La version définitive 2.0 de PyFreeBilling approche. La version beta publique a été rendue disponible.

Qu’est-ce que PyFreeBilling ?

Le logiciel PyFreeBilling est une solution sous licence Open Source AGPL permettant de gérer une activité d’opérateur télécom VoIP : gestion des clients, gestion des fournisseurs, gestion des grilles tarifaires ventes et achats, routage des appels et gestion des balances et reporting.

Merci à Hichem Ghazouani qui a mis à disposition la version 2.0 en démo.

Vous trouverez le lien ci-dessous :

https://51.255.173.122/ ( customer )
https://51.255.173.122/extranet/ (admin )

username : ghvoip
password: demo123 ( pmerci de ne pas changer le mot de passe !)

À qui est destiné PyFreeBilling ?

PyFreeBilling dans sa version 2 est destiné aux opérateurs VoIP permettant de router les appels entrants et sortants de ses clients vers différents opérateurs-fournisseurs de manière sûre, souple et simple.

 

freeswicth ansible role 2.0 just released

Je viens de publier la nouvelle version du role ansible permettant une installation / mise à jour automatisée de FreeSwitch avec plusieurs bonus optionnels comme fail2ban, sngrep … Le role est fait pour fonctionner exclusivement avec Debian Jessie. J’intégrerai Stretch le moment venu.

Contrairement à la version précédente, l’installation se fait à partir des paquets fournis par la team FreeSwitch (je suis leurs recommandations).

L’utilisation est présentée dans le README.

Vous le trouverez dans la galaxy ansible : https://galaxy.ansible.com/mwolff44/freeswitch-mw/

N’hésitez pas à me faire des retours.

Note : le repo officiel est hébergé par framagit : https://framagit.org/mwolff44/freeswitch-mw/ même si une copie existe sur github pour ansible-galaxy.

 

Modifications :

  • 12/04/2017 : v2.1 : mise à jour du kernel via les backports (performance) / installation de locales spécifiques / installation de paquets complémentaires – Ces 3 fonctions sont désactivées par défaut.

Yunohost : comment ajouter la liste des paquets de la communauté aux applications ?

/unohost permet d’installer simplement une solution d’auto-hébergement ciblant à la fois les particuliers mais aussi les petites entreprises afin de reprendre le contrôle de ses données : agenda, calendrier, fichiers, webmail …

Une liste d’applications installables facilement via l’interface web d’administration de Yunohost est disponible. Ces applications sont validées par le équipe de Ynuhost. Mais, de nombreuses applications fort intéressantes sont mises à disposition par la communauté. Il faut les installer en intégrant l’url du repos git de celle-ci. Pas très compliqué !  Mais, afin d’éviter d’aller rechercher sur le wiki de Yunohost les applications disponibles, il peut-être intéressant de les retrouver dans cette même page. Pour activer les applications Yunohost gérées par la communauté, il faut taper en ligne de commande :

sudo yunohost app fetchlist -n community -u https://yunohost.org/community.json

Vous avez maintenant accès à la liste des applications de Yunohost et celles fournies par la communauté. Cette astuce permet aussi de bénéficier des mises à jour des applications communautaires.

Notes de mise à jour de l’article :

  • 16/09/2016 : précision sur la mise à dispo des MAJ (merci à LJF pour sa contribution)

Installer FreeSwitch sur Ubuntu à partir des paquets

L’équipe de FreeSwitch vient de publier les paquets pour Ubuntu 14.04 LTS et 16.04 LTS. Une excellente nouvelle pour les utilisateurs d’Ubuntu. L’installation est maintenant simplifiée.

Pour Ubuntu 16.04 LTS, voici les commandes à taper pour installer la dernière version stable de FreeSwitch :

wget -O - https://files.freeswitch.org/repo/ubuntu-1604/freeswitch-unstable/freeswitch_archive_g0.pub | apt-key add -
 
echo "deb http://files.freeswitch.org/repo/ubuntu-1604/freeswitch-unstable/ xenial main" > /etc/apt/sources.list.d/freeswitch.list
 
# you may want to populate /etc/freeswitch at this point.
# if /etc/freeswitch does not exist, the standard vanilla configuration is deployed
apt-get update && apt-get install -y freeswitch-all

Pour Ubuntu 14.04 LTS :

wget -O - https://files.freeswitch.org/repo/ubuntu/freeswitch-unstable/freeswitch_archive_g0.pub | apt-key add -
 
echo "deb http://files.freeswitch.org/repo/ubuntu/freeswitch-unstable/ trusty main" > /etc/apt/sources.list.d/freeswitch.list
 
# you may want to populate /etc/freeswitch at this point.
# if /etc/freeswitch does not exist, the standard vanilla configuration is deployed
apt-get update && apt-get install -y freeswitch-all

Attention : les paquets permettant de gérer les flux vidéos ne sont pas installés. Des étapes complémentaires sont à prévoir.

Toutefois, l’équipe de FreeSwitch ne recommande d’utiliser cette méthode pour un usage en production pour le moment. Sur Ubuntu, seule la méthode en téléchargeant et compilant les sources est recommandée.

La documentation de la team FreeSwitch pour installer FreeSwitch sur Ubuntu.

pfSense 2.3.2 est disponible

La version 2.3.2 de PFSense, distribution open source de sécurité, avec 60 bugs corrigés, vient d’être libérée. Vous pouvez en savoir plus sur la publication de mise à jour de la version 2.3.2 sur le blog de pfSense. Pensez à mettre à jour vos appliances.

Comment sécuriser Firefox avec quelques paramètres dans about:config ?

Il est essentiel de paramétrer finalement son navigateur afin de s’assurer un surf plus sécurisé. Je vais vous présenter les différentes options essentielles à modifier. Je n’aborderai pas l’usage de modules complémentaires (peut-être le sujet d’un prochain article).

Pour entrer dans la configuration avancée de Firefox, il suffit d’entrer dans la barre d’adresse about:config et de taper sur la touche d’entrée. Lisez bien l’alerte, puis validez (si vous êtes OK).

Firefox about:config

Puis vérifiez, les paramètres de security.tls.version afin que les valeurs soient celles-ci (min à 1 et max à 3):

security tls version firefox
security tls version firefox

 

Ensuite, modifiez :

  • geo.enabled à False afin de supprimer la géolocalisation
  • network.http.sendRefererHeader à 1 afin de ne communiquer que la dernière page visitée – Cela semble poser des problèmes (cf commentaires). Explication des valeurs de la variable network.http.sendRefererHeader :
    • 0 – never send the referring URL.
    • 1 – send only when links are clicked.
    • 2 – send for links and images (default).
  • browser.safebrowsing.malware.enabled à False et supprimez les données de browser.safebrowsing.provider.google.lists afin d’éviter que Google vous profile. (Je vous recommande de lire ce lien https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/ expliquant le fonctionnement de cette option. Merci à Barmic pour la contribution)
  • offline-apps.allow_by_default à False et offline-apps.quota.warn à 0 afin que les données offline ne soient utilisées à votre insu

N’oubliez pas de modifier les préférences par défaut afin d’éviter d’être pisté et d’accepter les cookies tiers inutiles.

Vous pouvez tester votre navigateur en utilisant ces sites : https://panopticlick.eff.org et http://ghacks.net/ip/ (teste l’IP, le referer et le navigateur)

Je mettrai à jour cette page afin de tenir compte des évolutions de Firefox. N’hésitez pas à contribuer pour la sécurité de tous.

Historique de modifications de la page :

  • 22/08/2016 : changement de la valeur network.http.sendRefererHeader à 1 au lieu de 0, car cela bloque les réponses aux forums et empêche l’identification sur certains sites !
  • 24/08/2016 : ajoût du lien d’explication du fonctionnement de l’option browser.safebrowsing.malware.enabled – Contribution de Barmic
  • 01/09/2016 : suppression de la modification de network.http.sendRefererHeader (la valeur par défaut est à 2)
  • 02/09/2016 : ajoût du site ghacks pour tester son navigateur

Règles iptables afin de bloquer les scanners SIP

Les serveurs SIP (Asterisk, FreeSwitch … mais aussi les serveurs propriétaires) sont constamment scannés par des automates ou des humains avec pour seule idée, découvrir une faille à exploiter. En effet, les enjeux financiers sont importants.
Je partage avec vous ce jour, un script iptables pour bloquer les scanners SIP (à adapter notamment les ports si vous utilisez des différents de 5060).

iptables -N SIPDOS

iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “sundayddr” –algo bm –to 65535 -m comment –comment “deny sundayddr” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “sipsak” –algo bm –to 65535 -m comment –comment “deny sipsak” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “sipvicious” –algo bm –to 65535 -m comment –comment “deny sipvicious” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “friendly-scanner” –algo bm –to 65535 -m comment –comment “deny friendly-scanner” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “iWar” –algo bm –to 65535 -m comment –comment “deny iWar” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “sip-scan” –algo bm –to 65535 -m comment –comment “deny sip-scan” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “User-Agent: sipcli” –algo bm –to 65535 -m comment –comment “deny sipcli” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “User-Agent: Nmap NSE” –algo bm –to 65535 -m comment –comment “deny Nmap NSE” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “User-Agent: VaxSIPUserAgent” –algo bm –to 65535 -m comment –comment “deny VaxSIPUserAgent” -j SIPDOS
iptables -A INPUT -i eth0 -p udp -m udp –dport 5060 -m string –string “From: sipp <sip:” –algo bm –to 65535 -m comment –comment “deny sipp” -j SIPDOS

iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “sundayddr” –algo bm –to 65535 -m comment –comment “deny sundayddr” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “sipsak” –algo bm –to 65535 -m comment –comment “deny sipsak” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “sipvicious” –algo bm –to 65535 -m comment –comment “deny sipvicious” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “friendly-scanner” –algo bm –to 65535 -m comment –comment “deny friendly-scanner” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “iWar” –algo bm –to 65535 -m comment –comment “deny iWar” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “sip-scan” –algo bm –to 65535 -m comment –comment “deny sip-scan” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “User-Agent: sipcli” –algo bm –to 65535 -m comment –comment “deny sipcli” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “User-Agent: Nmap NSE” –algo bm –to 65535 -m comment –comment “deny Nmap NSE” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “User-Agent: VaxSIPUserAgent” –algo bm –to 65535 -m comment –comment “deny VaxSIPUserAgent” -j SIPDOS
iptables -A INPUT -i eth0 -p tcp -m tcp –dport 5060 -m string –string “From: sipp <sip:” –algo bm –to 65535 -m comment –comment “deny sipp” -j SIPDOS

iptables -A SIPDOS -j LOG –log-prefix “firewall-sipdos: ” –log-level 6
iptables -A SIPDOS -j DROP

Si vous avez des idées pour l’améliorer, toutes les suggestions sont les bienvenues, l’idée étant de faciliter la sécurisation des serveurs SIP au plus grand nombre.

Mises à jour :

  • 4 août 2016 : ajoût de règles + correction typo suite au commentaire de Ztur

Dolibarr : email de relance des factures impayées

Comment créer un email de relance pour les facture en retard de paiement sous Dolibarr, logiciel de gestion libre pour les TPE, PME et associations.

Dolibarr est un logiciel de gestion open source réputé pour les TPE/PME et associations permettant la gestion de la facturation. Il est aisé grâce à une fonction intégrée facilement appelable via un bouton, d’envoyer une facture à un contact par email. Dans une ancienne version, un bouton équivalent permettait de relancer les factures en retard de paiement par email,  facture par facture. Ce bouton a maintenant disparu !

Nous allons voir comment, sans toucher au code (sauf pour l’ajout d’éléments complémentaires), intégrer simplement une fonction de relance de facture en retard de paiement par email.

Pour cela, nous allons utiliser les modèles d’email, utilisables pour les factures clients mais aussi pour les commandes, propales … Ainsi, il nous suffira de choisir le bon modèle dans la liste déroulante juste au dessus du mail, afin de sélectionner le texte adéquat.

Premièrement, des messages d’envoi d’emails sont prédéfinis. Ils sont disponibles dans le dossier des langues de dolibarr /htdocs/langs/fr_fr/other.lang . Nous retrouvons notre modèle d’envoi de facture par email mais aussi, avec surprise, le modèle de relance de facture par email.

Nous allons donc créer un nouveau modèle. Pour cela, il faut aller dans Accueil -> configuration -> dictionnaires -> modèles des courriels , puis renseigner les différents éléments : libellé (champs définissant le modèle dans liste déroulante, par exemple Relance_facture), type de modèle (« pour l’envoi de facture client » dans notre cas), privé (0, sinon juste vous pourrez utiliser ce modèle), la position dans la liste déroulante (1, c’est votre premier modèle), le sujet (par ex : Relance de la facture REF ), et enfin le content (par ex : Bonjour,\n\nNous voudrions vous avertir que le facture REF ne semble pas avoir été payée. Nous vous avons joins la dite facture comme rappel.\n\nCordialement\n\n__SIGNATURE__ ).

J’ai utilisé 2 variables REF qui sera remplacé par le numéro de facture, et SIGNATURE qui sera remplacé par … votre signature (bien penser à compléter votre signature dans votre profil d’utilisateur.

Voici la liste des variables disponibles pour les factures (elles sont définies dans le fichier htdocs/compta/facture.php ) :

$formmail->substit['__REF__'] = $object->ref;
$formmail->substit['__SIGNATURE__'] = $user->signature;
$formmail->substit['__REFCLIENT__'] = $object->ref_client;
$formmail->substit['__THIRDPARTY_NAME__'] = $object->thirdparty->name;
$formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:'');
$formmail->substit['__PROJECT_NAME__'] = (is_object($object->projet)?$object->projet->title:'');
$formmail->substit['__PERSONALIZED__'] = '';
$formmail->substit['__CONTACTCIVNAME__'] = '';

Voici l’exemple d’un modèle d’email plus complet :

__CONTACTCIVNAME__,\n\n
Veuillez trouver ci-joint votre facture __REF__ d'un montant de __FACTOTALTTC__ € TTC.\n\n
Nous vous rappelons que cette facture doit être réglée avant le __FACDATELIMREG__ .\n\n
Vous en souhaitant bonne réception, nous vous prions de croire,__CONTACTCIVNAME__, en l'assurance de nos salutations distinguées.\n\n
__SIGNATURE__

Il faut noter que les 2 dernières variables, PERSONALIZED et CONTACTCIVNAME, qui sont pourtant utilisées dans les modèles de base, retournent une chaîne vide ! à vous de les compléter (je vous laisse un peu de taf).

J’utilise aussi des variables complémentaires qu’il nous faut créer. Pour cela,  il suffit d’ajouter en ligne 3942 dans le fichier htdocs/compta/facture.php (version 3.9.3), les variables personnalisées complémentaires :

$formmail->substit['__FACDATE__'] = date('d/m/Y',$object->date);
$formmail->substit['__FACTOTATTC__'] = number_format($object->total_ttc,2,',','');
$formmail->substit['__FACDATELIMREG__'] = date('d/m/Y',$object->date_lim_reglement);

A noter, qu’à chaque mise à jour, vos modifications seront écrasées et seront donc à refaire !

Il est aussi possible d’utiliser des extensions permettant de réaliser cette opération, mais aussi d’intégrer à Dolibarr un process complet de recouvrement. Je vous conseille Relance factures impayées v2, le plus complet, ou Rappel impayé facture, devis, adhérent (3.9.x) , deux outils intéressants, à des prix différents mais n’offrant pas les mêmes fonctionnalités.

Source : wiki dolibarr

Django : mise à jour de yawd-admin compatible avec django 1.9

Dans cet article du 27 mai 2016, je vous annonçais la reprise en main Yawd-admin, car il n’a plus été mis à jour par les mainteneurs officiels depuis mai 2014. Yawd-admin est un package django permettant d’adapter l’interface d’administration en ajoutant des fonctionnalités indispensables.

Yawd-admin en quelques mots :

yawd-admin est un site Web d’administration de django. Il étend le site d’admin de django par défaut et propose ce qui suit :

  • une interface utilisateur « bootstrap » propre
  • du code pur HTML5/CSS3
  • une interface optimisée pour les smartphones et tablettes
  • des paramètres en base de données personnalisés (options) modifiables à partir de l’interface utilisateur. ( vous pouvez utiliser tous les champs du formulaire standard de django pour ces paramètres)
  • une intégration avec google analytique pour l’affichage des statistiques dans la page d’accueil de l’interface d’admin
  • la possibilité de lister vos applications au menu de navigation
  • un nouveau design des widgets de l’admin Django

La dernière version stable, la 0.8.0 vient d’être publiée et est compatible à 100% avec django 1.9, la dernière version de django à ce jour. Je remercie au passage henriquechehad pour son travail.

La prochaine étape concerne l’intégration de Bootstrap3 (ou 4 mais cela n’a pas l’air d’avancer très vite) en remplacement du Bootstrap 2 vieillissant.

Ensuite viendra la question de la reprise officielle de la maintenance de ce package ou la réalisation d’un fork puis publication sur pypi.

Si vous voulez donner un coup de main, le repo de yawd-admin est pour le moment sur github (je vais le migrer sur bitbucket quand j’aurais pris une décision sur fork ou pas).

Django : mise à jour de yawd-admin, template pour l’admin de Django

Depuis le 4 mai 2014, Yawd-admin n’a plus été mis à jour par les mainteneurs officiels. Plusieurs forks patchent quelques bugs et apportent une relative compatibilité avec la version 1.7 de django.
J’utilise par ailleurs ce package sur quelques projets, permettant ainsi de disposer d’une interface d’adminitration pour les sites django attrayante et performante. J’ai décidé de le mettre à jour.

Pour le moment, la dernière version stable est compatible à 100% avec django 1.6 et la version de dev avec django 1.7.
Je suis en train de finaliser la 1.8. Ensuite dès que yawd-admin sera compatible avec django 1.9, je commencerai à ajouter de nouvelles fonctionnalités.

Ensuite viendra la question de la reprise officielle de la maintenance de ce package ou la réalisation d’un fork puis publication sur pypi.

Si vous voulez donner un coup de main, le repo de yawd-admin est pour le moment sur github (je vais le migrer sur bitbucket quand j’aurais pris une décision sur fork ou pas).

Il existe un certain de nombre de paquets sympas fournissant un service à peu près équivalent pour django, comme django-grappelli, django-admin-bootstrapped, django-admin-bootstrap ou django-suit parmi ceux que j’ai utilisé et que j’apprécie.

Mais j’aime bien le look de yawd-admin même si tout n’est pas parfait, je vais pouvoir corriger quelques défaults 😉