{"id":2008,"date":"2013-01-18T22:15:53","date_gmt":"2013-01-18T21:15:53","guid":{"rendered":"http:\/\/www.alphak.net\/news\/?p=2008"},"modified":"2014-11-06T17:43:45","modified_gmt":"2014-11-06T16:43:45","slug":"bonne-annee-insert-name-here","status":"publish","type":"post","link":"https:\/\/www.alphak.net\/news\/2013\/01\/bonne-annee-insert-name-here\/","title":{"rendered":"Bonne ann\u00e9e, &lt;insert_name_here&gt; !"},"content":{"rendered":"<p><span style=\"color: #ff0000;\"><strong>Avertissement\u00a0 :<\/strong> le contenu suivant est susceptible de heurter la sensibilit\u00e9 des personnes pourvues d&rsquo;un minimum de sens moral.<\/span><\/p>\n<p>Quand on est djeun&rsquo;s, qu&rsquo;on a plus de 500 amis sur tous ses r\u00e9seaux sociaux confondus, et un forfait avec SMS illimit\u00e9s (ce qui aujourd&rsquo;hui est \u00e0 port\u00e9e d&rsquo;\u00e0 peu pr\u00e8s tout le monde, vu que \u00e7a co\u00fbte 0 euros chez Free), on est soumis \u00e0 une rude probl\u00e9matique le soir de la Saint Sylvestre : comment ne pas perdre trop de temps \u00e0 envoyer des SMS de bonne ann\u00e9e \u00e0 tous ses contacts, pour profiter au maximum de la soir\u00e9e sans rester pendu \u00e0 son mobile, tout en montrant ostensiblement et avec classe sa pr\u00e9sence sur les r\u00e9seaux sociaux ?<\/p>\n<p><!--more--><\/p>\n<p>Premi\u00e8re possibilit\u00e9, on\u00a0peut\u00a0envoyer le message <em>\u00ab\u00a0Salut Raoul, je te souhaite une bonne ann\u00e9e, une bonne sant\u00e9, amour et bonheur.\u00a0\u00bb<\/em> \u00e0 Raoul, puis copier le m\u00eame message \u00e0 chacun de ses 499 autres contacts, en prenant bien soin de remplacer <em>\u00ab\u00a0Raoul\u00a0\u00bb<\/em> par le pr\u00e9nom de chaque destinataire. Mais r\u00e9diger 500 SMS de cette mani\u00e8re s&rsquo;av\u00e8re inexorablement <strong>fastidieux et chronophage<\/strong>.<\/p>\n<p>Seconde possibilit\u00e9, on\u00a0peut\u00a0envoyer le message <em>\u00ab\u00a0Je te souhaite une bonne ann\u00e9e, une bonne sant\u00e9, amour et bonheur.\u00a0\u00bb<\/em> en une seule fourn\u00e9e \u00e0 ses 500 contacts, qui appr\u00e9cieront certainement que vous ayez pens\u00e9 \u00e0 eux, mais qui n&rsquo;\u00e9tant pas dupes percevront le caract\u00e8re un tantinet <strong>impersonnel<\/strong> du message, leur pr\u00e9nom n&rsquo;y figurant pas.<\/p>\n<p>La solution, c&rsquo;est le <strong>bulk SMS automatis\u00e9<\/strong>, ou en d&rsquo;autres termes, l&rsquo;envoi automatis\u00e9 de SMS en masse. Avec une subtilit\u00e9, cet envoi est bas\u00e9 sur un template et le pr\u00e9nom du destinataire est <strong>ins\u00e9r\u00e9 dans chaque message<\/strong>. Simplement <strong>machiav\u00e9lique<\/strong>. En attendant la mise \u00e0 disposition de ce type d&rsquo;application sur votre smartphone pr\u00e9f\u00e9r\u00e9, voici une solution custom utilisant la technique de l&rsquo;envoi de SMS automatis\u00e9 exp\u00e9riment\u00e9e dans <a title=\"SMS automatis\u00e9 \u2013 Round one, fight !\" href=\"http:\/\/www.alphak.net\/news\/2013\/01\/sms-automatise-round-one-fight\/\">mon billet pr\u00e9c\u00e9dent<\/a>.<\/p>\n<p>Pour commencer, il est n\u00e9cessaire d&rsquo;avoir les informations de ses contacts accessibles, on distinguera en particulier leur <strong>pr\u00e9nom<\/strong> et <strong>num\u00e9ro de t\u00e9l\u00e9phone mobile<\/strong>. On pourra se contenter d&rsquo;une extraction CSV de son carnet d&rsquo;adresses, par exemple. Mais comme j&rsquo;aime bien relever les d\u00e9fis, je vais partir d&rsquo;un peu plus loin.<\/p>\n<h3>Utilisation d&rsquo;un annuaire LDAP<\/h3>\n<p>Je m\u00fbris l&rsquo;id\u00e9e depuis plusieurs mois de centraliser tous mes contacts dans un annuaire LDAP. Le premier\u00a0 avantage, c&rsquo;est la possibilit\u00e9 d&rsquo;<strong>interconnexion<\/strong> de LDAP avec diff\u00e9rents syst\u00e8mes : logiciels de messagerie, webmail, t\u00e9l\u00e9phone mobile ou tablette via une plate-forme de synchronisation, t\u00e9l\u00e9phones SIP&#8230; Le second avantage, c&rsquo;est la <strong>centralisation<\/strong> de ces informations, c&rsquo;est \u00e0 dire que les contacts \u00e0 jour sont r\u00e9f\u00e9renc\u00e9s \u00e0 un seul et unique endroit. Leur modification s&rsquo;op\u00e8re soit manuellement sur cette base centrale, soit via une synchronisation avec d&rsquo;autres appareils. Par exemple : si Luc change de num\u00e9ro de t\u00e9l\u00e9phone, je mets \u00e0 jour le n\u00b0 de Luc dans mon mobile, qui est synchronis\u00e9 \u00e0 intervalles r\u00e9guliers avec la base centrale, qui s&rsquo;occupe de synchroniser \u00e0 son tour mon Thunderbird et mes contacts Windows. Simple comme un coup de fil.<\/p>\n<p>Pour commencer, j&rsquo;ai donc install\u00e9 un service OpenLDAP sur ma VM Debian de test et import\u00e9 dans la structure de l&rsquo;annuaire la classe <a href=\"https:\/\/wiki.mozilla.org\/MailNews:Mozilla_LDAP_Address_Book_Schema\" target=\"_blank\">mozillaAbPersonAlpha<\/a> n\u00e9cessaire \u00e0 la cr\u00e9ation de contacts accessibles via Thunderbird. Je ne d\u00e9taille volontairement pas cette \u00e9tape, j&rsquo;y reviendrai si jamais je d\u00e9cide de r\u00e9diger un article pr\u00e9cis et s\u00e9rieux sur l&rsquo;int\u00e9gration d&rsquo;un annuaire LDAP avec d&rsquo;autres types de services, ce qui est un de mes projets \u00e0 terme.<\/p>\n<p>Une fois le sch\u00e9ma cr\u00e9\u00e9, on peut se connecter \u00e0 l&rsquo;annuaire et commencer \u00e0 cr\u00e9er des contacts. J&rsquo;utilise <a href=\"http:\/\/jxplorer.org\/\" target=\"_blank\">JXplorer<\/a> pour cela, mais n&rsquo;importe quel outil de browsing LDAP conviendrait. J&rsquo;ai cr\u00e9\u00e9 deux contacts dans mon annuaire pour l&rsquo;exemple : Jean-Philippe et Leslie.<\/p>\n<p><a href=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2013\/01\/jxplorer.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2068\" src=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2013\/01\/jxplorer.png\" alt=\"jxplorer\" width=\"759\" height=\"638\" srcset=\"https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2013\/01\/jxplorer.png 759w, https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2013\/01\/jxplorer-300x252.png 300w\" sizes=\"(max-width: 759px) 100vw, 759px\" \/><\/a><\/p>\n<p>Vous noterez certainement le caract\u00e8re sensiblement en dessous de la ceinture en ce qui concerne le choix du nom de mes protagonistes cit\u00e9s en exemple, mais je me suis dit qu&rsquo;il passeraient probablement mieux que d&rsquo;autres inspirations, comme Ralph Duveldive, qui aurait pu paraitre assez politiquement incorrect.<\/p>\n<p>Une fois mes contacts pr\u00e9sents dans l&rsquo;annuaire, je v\u00e9rifie les possibilit\u00e9s d&rsquo;int\u00e9gration avec Thunderbird : j&rsquo;ajoute un nouveau serveur d&rsquo;annuaire au niveau de l&rsquo;\u00e9cran des carnets d&rsquo;adresses, et je remplis les coordonn\u00e9es d&rsquo;acc\u00e8s de mon annuaire LDAP. L\u00e0 encore, je ne d\u00e9taille pas la proc\u00e9dure plus que cela. Ce qui est important, c&rsquo;est que quand je lance une recherche dans les carnets d&rsquo;adresses de Thunderbird, les contacts que j&rsquo;ai cr\u00e9\u00e9s dans l&rsquo;annuaire LDAP soient trouv\u00e9s.<\/p>\n<p><a href=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2013\/01\/tbird-addess-book.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2070\" src=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2013\/01\/tbird-addess-book.png\" alt=\"tbird-addess-book\" width=\"713\" height=\"495\" srcset=\"https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2013\/01\/tbird-addess-book.png 713w, https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2013\/01\/tbird-addess-book-300x208.png 300w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/a><\/p>\n<h3>R\u00e9cup\u00e9ration des informations de l&rsquo;annuaire<\/h3>\n<p>Apr\u00e8s avoir valid\u00e9 cette premi\u00e8re possibilit\u00e9 d&rsquo;int\u00e9gration de l&rsquo;annuaire LDAP pour le fun, passons au vif du sujet, c&rsquo;est \u00e0 dire l&rsquo;envoi de SMS en masse. La probl\u00e9matique est toujours d&rsquo;<strong>extraire les informations utiles<\/strong> (pr\u00e9nom et num\u00e9ro de t\u00e9l\u00e9phone) de l&rsquo;annuaire. Pour cela, on peut utiliser l&rsquo;outil <strong>ldapsearch<\/strong>. Voyons un exemple de sortie avec quelques param\u00e8tres de recherche. Je commence par rechercher, \u00e0 partir du n\u0153ud o\u00f9 je les ai cr\u00e9\u00e9s, tous les enregistrements ayant la classe <em>mozillaAbPersonAlpha<\/em>, en d&rsquo;autres termes tous mes contacts Thunderbird pr\u00e9c\u00e9demment cr\u00e9\u00e9s avec JXplorer, et j&rsquo;affiche uniquement les informations qui m&rsquo;int\u00e9ressent, \u00e0 savoir, si vous suivez un peu, le pr\u00e9nom et le num\u00e9ro de mobile.<\/p>\n<p>Commande :<\/p>\n<pre class=\"prettyprint\">ldapsearch -x -LLL -h dhalsim.alphak.net -b &#34;cn=vince, ou=Contacts, dc=alphak, dc=net&#34; &#39;objectClass=mozillaAbPersonAlpha&#39; givenName mobile<\/pre>\n<p>Sortie :<\/p>\n<pre>dn: cn=Jean-Philippe Hervite-Monslip,cn=vince,ou=Contacts,dc=alphak,dc=net\r\ngivenName: Jean-Philippe\r\nmobile: +33611223344\r\n\r\ndn: cn=Leslie Pancuir-Sagrate,cn=vince,ou=Contacts,dc=alphak,dc=net\r\ngivenName: Leslie\r\nmobile: +33699887766<\/pre>\n<p>Pas mal. Maintenant, on applique un l\u00e9ger formatage sur cette sortie afin de g\u00e9n\u00e9rer des donn\u00e9es exploitables par le script de bulk SMS.<\/p>\n<p>Commande :<\/p>\n<pre class=\"prettyprint\">ldapsearch -x -LLL -h dhalsim.alphak.net -b &#34;cn=vince, ou=Contacts, dc=alphak, dc=net&#34; &#39;objectClass=mozillaAbPersonAlpha&#39; givenName mobile | grep -v ^dn: | sed &#39;s&#47;^.*: &#47;&#47;&#39; | gawk &#39;BEGIN{RS=&#34;\\n\\n&#34;;FS=&#34;\\n&#34;;OFS=&#34;;&#34;}{print $1,$2}&#39; &gt; &#47;tmp&#47;contacts.txt\r\ncat &#47;tmp&#47;contacts.txt<\/pre>\n<p>Sortie :<\/p>\n<pre>Jean-Philippe;+33611223344\r\nLeslie;+33699887766<\/pre>\n<p>Impec.<\/p>\n<h3>Envoi en masse<\/h3>\n<p>Il ne reste plus qu&rsquo;\u00e0 cr\u00e9er un <strong>script minimaliste<\/strong> qui lit ce fichier, d\u00e9pile chaque ligne l&rsquo;une apr\u00e8s l&rsquo;autre, parse les informations de pr\u00e9nom et de n\u00b0 de mobile pour chaque ligne, et d\u00e9clenche l&rsquo;envoi de SMS gr\u00e2ce \u00e0 <strong>gnokii<\/strong>. Ce script, nomm\u00e9 par exemple smsprank.sh,\u00a0 pourrait ressembler \u00e0 cela :<\/p>\n<pre class=\"prettyprint\">#!&#47;bin&#47;bash\r\n\r\n# smsprank.sh\r\n# A useless and inglorious tool for sending bulk SMS based on a template\r\n# Copyright (C) 2013 AlphaK - www.alphak.net\r\n#\r\n# This program is free software: you can redistribute it and&#47;or modify\r\n# it under the terms of the GNU General Public License as published by\r\n# the Free Software Foundation, either version 3 of the License, or\r\n# (at your option) any later version.\r\n#\r\n# This program is distributed in the hope that it will be useful,\r\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n# GNU General Public License for more details.\r\n#\r\n# You should have received a copy of the GNU General Public License\r\n# along with this program. If not, see &lt;http:&#47;&#47;www.gnu.org&#47;licenses&#47;&gt;.\r\n\r\nLOG=&#47;tmp&#47;sms.log\r\nMSG=&#39;Une tr\u00e8s bonne ann\u00e9e \u00e0 toi %N ! Que tous tes voeux se r\u00e9alisent !&#39;\r\n\r\nfor LINE in $(cat &#47;tmp&#47;contacts.txt) ; do\r\n\r\n\t# Split Name &#47; phone number\r\n\tNAME=$(echo $LINE | cut -d&#39;;&#39; -f1)\r\n\tTEL=$(echo $LINE | cut -d&#39;;&#39; -f2)\r\n\r\n\t# Check that we have a non-empty first name and a valid phone number for France\r\n\tif &#91; -n &#34;$NAME&#34; -a -n &#34;$TEL&#34; -a &#34;$(echo &#34;$TEL&#34; | cut -b1-4)&#34; = &#39;+336&#39; &#93; ; then\r\n\r\n\t\t# Replace %N by the real name in bulk message\r\n\t\tREALMSG=$(echo $MSG | sed &#34;s&#47;%N&#47;$NAME&#47;&#34;)\r\n\t\techo &#34;$TEL =&gt; $REALMSG&#34; | tee -a $LOG\r\n\r\n\t\t# Run the prank!\r\n\t\techo &#34;$REALMSG&#34; | gnokii --sendsms &#34;$TEL&#34; &gt;&gt; $LOG 2&gt;&amp;1\r\n\tfi\r\ndone<\/pre>\n<p>C&rsquo;est termin\u00e9, on peut maintenant lancer le script, admirer les SMS partir dans la nature \u00e0 un rythme effr\u00e9n\u00e9, et mettre les doigts de pied en \u00e9ventail en pensant au r\u00e9confort des destinataires lorsqu&rsquo;ils liront ce message \u00ab\u00a0personnalis\u00e9\u00a0\u00bb !<\/p>\n<p><a href=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2013\/01\/smsprank.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2069\" src=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2013\/01\/smsprank.png\" alt=\"smsprank\" width=\"795\" height=\"424\" srcset=\"https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2013\/01\/smsprank.png 795w, https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2013\/01\/smsprank-300x160.png 300w, https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2013\/01\/smsprank-768x410.png 768w\" sizes=\"(max-width: 795px) 100vw, 795px\" \/><\/a><\/p>\n<p>\u00c9videmment, maintenant que cette technique d&rsquo;odieux connard est en place, on peut <em>\u00ab\u00a0croniser\u00a0\u00bb<\/em> le d\u00e9clenchement du script afin de le lancer tous les 31 d\u00e9cembre, 3 ou 4 minutes avant minuit, afin d&rsquo;\u00e9viter l&rsquo;habituel rush de communications entrainant la saturation des canaux t\u00e9l\u00e9phoniques des soirs de Saint Sylvestre (bien que les op\u00e9rateurs aient fait beaucoup de progr\u00e8s dans ce domaine par rapport \u00e0 ce qu&rsquo;on pouvait constater il y a une dizaine d&rsquo;ann\u00e9es).<\/p>\n<p>\u00c9ventuellement, penser \u00e0 changer le message du template tous les ans, histoire de pouvoir continuer \u00e0 profiter de cette technique d&rsquo;odieux connard d\u00e9nu\u00e9 de moralit\u00e9 sans se faire griller.<\/p>\n<h3>Conclusion<\/h3>\n<p>Voila, c&rsquo;\u00e9tait une exp\u00e9rience compl\u00e8tement idiote, amorale et inutile, mais je dois avouer que j&rsquo;ai pris beaucoup de plaisir \u00e0 imaginer et \u00e0 mettre en place un tel concept, car cela montre un aper\u00e7u des <strong>innombrables possibilit\u00e9s<\/strong> offertes par le couplage d&rsquo;une plate-forme d&rsquo;envoi de SMS avec d&rsquo;autres syst\u00e8mes. Comme je l&rsquo;avais d\u00e9j\u00e0 \u00e9voqu\u00e9, l&rsquo;un de mes int\u00e9r\u00eats principaux r\u00e9side en r\u00e9alit\u00e9 dans la possibilit\u00e9 de notification par SMS sur la base d&rsquo;informations envoy\u00e9es par mon syst\u00e8me domotique en cours de mise en place (exemples : d\u00e9tection d&rsquo;intrusion, d\u00e9tection de mouvement, coupure d&rsquo;\u00e9lectricit\u00e9, coupure d&rsquo;internet&#8230;)<\/p>\n<p>Avant de rendre l&rsquo;antenne, il me reste une derni\u00e8re chose \u00e0 accomplir, puisque selon la coutume la date limite pour formuler ses v\u0153ux s&rsquo;arr\u00eate fin janvier :<\/p>\n<p>Une tr\u00e8s bonne ann\u00e9e \u00e0 toi, lecteur ! Que tous tes v\u0153ux se r\u00e9alisent !<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span style=\"color: #ff0000;\"><strong>Avertissement\u00a0 :<\/strong> le contenu suivant est susceptible de heurter la sensibilit\u00e9 des personnes pourvues d&rsquo;un minimum de sens moral.<\/span><\/p>\n<p>Quand on est djeun&rsquo;s, qu&rsquo;on a plus de 500 amis sur tous ses r\u00e9seaux sociaux confondus, et un forfait avec SMS illimit\u00e9s (ce qui aujourd&rsquo;hui est \u00e0 port\u00e9e d&rsquo;\u00e0 peu pr\u00e8s tout le monde, vu que \u00e7a co\u00fbte 0 euros chez Free), on est soumis \u00e0 une rude probl\u00e9matique le soir de la Saint Sylvestre : comment ne pas perdre trop de temps \u00e0 envoyer des SMS de bonne ann\u00e9e \u00e0 tous ses contacts, pour profiter au maximum de la soir\u00e9e sans rester pendu \u00e0 son mobile, tout en montrant ostensiblement et avec classe sa pr\u00e9sence sur les r\u00e9seaux sociaux ?<\/p>\n\t<div class=\"post-teaser-block\">\r\n\t\t<div class=\"teaserHellip\">\r\n\t\t\t<span class=\"teaserLeft\">[<\/span><span class=\"teaserCenter\">&hellip;<\/span><span class=\"teaserRight\">]<\/span>\r\n\t\t<\/div>\r\n\t\t<div class=\"teaserText\">\r\n\t\t\t<a href=\"https:\/\/www.alphak.net\/news\/2013\/01\/bonne-annee-insert-name-here\/\" title=\"Bonne ann\u00e9e, &lt;insert_name_here&gt; !\" rel=\"bookmark\"><span class=\"teaserlink\">Lire la suite de l'article&nbsp;<i class=\"fa fa-chevron-right\"><\/i><\/span><\/a>\r\n\t\t<\/div>\r\n\t\t<a class=\"teaserLink\" href=\"https:\/\/www.alphak.net\/news\/2013\/01\/bonne-annee-insert-name-here\/\" title=\"Bonne ann\u00e9e, &lt;insert_name_here&gt; !\" rel=\"bookmark\"><\/a>\r\n\t<\/div>\r\n","protected":false},"author":1,"featured_media":2070,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[253],"tags":[268,265,269,58,263,267],"class_list":["post-2008","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projet-domotique","tag-bulk","tag-gnokii","tag-ldap","tag-linux","tag-sms","tag-useless"],"_links":{"self":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts\/2008"}],"collection":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/comments?post=2008"}],"version-history":[{"count":9,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts\/2008\/revisions"}],"predecessor-version":[{"id":2961,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts\/2008\/revisions\/2961"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/media\/2070"}],"wp:attachment":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/media?parent=2008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/categories?post=2008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/tags?post=2008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}