VoIP, Linux, Security & much more fun
If you need any help regarding these subjects do not hesitate about sending me a text

Today I have published in OKay's RPM repository RPMs for PhantomJS 2.0. PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search phantomjs.

Enjoy!

In my current work, my boss got a project about getting data from websites and posting into a system. Sadly, one of those websites lacks an API, so we needed to figure out a way to get information from there. The short answer is scraping. To make this story short, after evaluating multiple projects, I think the best option is to use CasperJS.

CasperJS is an open source navigation scripting testing utility written in Javascript for the PhantomJS WebKit headless browser and SlimerJS (Gecko). It eases the process of defining a full navigation scenario and provides useful high-level functions, methods syntactic sugar for doing common tasks such as:

  • defining ordering browsing navigation steps
  • filling submitting forms
  • clicking following links
  • capturing screenshots of a page (or part of it)
  • testing remote DOM
  • logging events
  • downloading resources, including binary ones writing functional test suites, saving results as JUnit XML
  • scraping Web contents

To install CasperJS, I did the following.

November 23th, 2015 I was walking in front of Parliament of Canada. I took this photo, accidentally if I would like to take it as it is, I think I wouldn't.

I was told that there is a funny law about buildings. In Ottawa, a building can not be higher than the Parliament.

Enjoy!

Some days ago, I got a new customer with an odd and fuzzy request. Initially, he only wanted to handle 500 simultaneous calls. 

As I provide White Label VoIP Server with FusionPBX, they use the interface to accomplished this. The bad thing was performance, server was having about 120 overload index (Linux metric). So I spent about 5 hours figuring out what was happening, as it was  not normal. My findings were:

  • DB handlers were running out
    • XML Handler from FusionPBX does not release the DB handlers. As discussed with FusionPBX author, FreeSWITCH seems to try to release it as well, if it is not released it cores dump; this is not confirmed.
    • By default, using my RPM's, FreeSWITCH profiles and core will use DB to store information.
  • Not the best way to accomplish the goal

One of the impossible missions I was asked to do in my current job was to install Official Supported PHP 5.5.x on a RedHat 6. Yes, I know, there are many backports, but it was a must to be Official from RedHat.

For those who don't know, a Software Collections is kind of a backport. They don't replace the current release shipped within the distribution, but they allow to work in the same box. I really don't like Software Collections, because they are installed into the /opt (RedHat way), and to use them, you must use the scl command to log into a root jail. You will need to use a Software Collection only if the version in your distribution does not satisfy your need (for example you need PHP 5.4 or better in a RedHat 6).

Today I have published in OKay's RPM repository RPMs for Syncthing 0.12.4. Syncthing is a complete synchronization, multi-platform solution to have same files in your devices. It is like a Peer-to-Peer.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search syncthing.

Enjoy!

Today I have published in OKay's RPM repository RPMs for FreeSWITCH. FreeSWITCH is a complete VoIP switch that works on many platforms, including Centos 6 and Centos 7. This is one of the biggest packages I have ever done; there are more than 1600 hours of work behind to make it work. When updating you will notice it will download many libraries, most part of them not available anywhere.

RPMs for Centos 6 under 32-bit platform are compiled without video support. There is a bug in the libyuv that prevents compilation under 32 bits. I will republish these RPMs as soon as it has been fixed, or someone send me a patch. Anyway, who uses 32-bit switch if you have 64 bits.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search freeswitch.

Enjoy!

Today I have published in OKay's RPM repository RPMs for FreeSWITCH 1.6.5. FreeSWITCH is a complete VoIP switch that works on many platforms, including Centos 6 and Centos 7. This is one of the biggest packages I have ever done; there are more than 1600 hours of work behind to make it work. When updating you will notice it will download many libraries, most part of them not available anywhere.

RPMs for Centos 6 under 32-bit platform are compiled without video support. There is a bug in the libyuv that prevents compilation under 32 bits. I will republish these RPMs as soon as it has been fixed, or someone send me a patch. Anyway, who uses a 32-bit switch if you have 64 bits.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search freeswitch.

Enjoy!

When you run a commercial PBX, especially for business, it is very common they have more than one DID for more than one city. One of the first requests you will get is to let your customer use their local phone number when calling to a specific area.

To do this, I wrote this dialplan.

Today I have published in OKay's RPM repository RPMs for CSync2 2.0.0. Csync2 is a cluster synchronization tool. It can be used to keep files on multiple hosts in a cluster in sync. Csync2 can handle complex setups with much more than just 2 hosts, handle file deletions and can detect conflicts. It is expedient for HA-clusters, HPC-clusters, COWs and server farms.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search csync2.

Enjoy!

In my current job (that I haven't discussed yet), I and my boss (and company owner) were having a discussion about how server management, specifically speaking about IPTables rules. You must know he is 100% in love of ClearOS (a RedHat fork, just like CentOS). ClearOS uses a web UI to manage almost everything. In this little post, I will try to explain my points of view why we have to give up the IPTables frontend of ClearOS and go to a better and more professional solution.

ClearOS is very easy to use, almost any Linux newbie could start managing his server, but in my humble opinion, there is a price to pay. As you start getting knowledge (IPTables in this case), you will realize that the basic UI is not enough. ClearOS has an advanced IPTables interface (I have tested ClearOS 6 only), but using that interface and doing manual IPTables managing from the CLI is literally the same. The interface is just a text field where you can input the IPTables command.

Using any of the ClearOS interfaces is okay if you don't manage multiple servers or you don't need any complex rules. But you will see that complex scenarios require an advanced tool. Some scenarios could be:

  • where you manage multiple servers that inter-relate each other (let's say a cluster for example),
  • where you have different interfaces and the traffic allowed on each one is very different (let's say a layer-two VPN), or
  • where you manage many servers and need to review in what server you are allowing or banishing a specific IP

I want you to introduce Firewall Builder. I usually don't use GUI's, but I am doing an exception with this tool. Firewall Builder will allow you to manage as many rules as you want in as many servers you want. Currently, I am managing no less than 20 servers with it. I can drag objects into the interface and when I modify an object (let's say a user changes his IP), then the tool will show me what servers need a rule push.

One of the things I love from Firewall Builder is the shadowing detect capability. It is very common when you have many rules that one rule allows what other rejects. Firewall Builder let' s you detect this issue before pushing the rules.

Firewall Builder lets me focus on the rule management, and of course, you will learn how to build complex rules as well.

Enjoy

Today, while I was watching TV, I got a support request from one of my customers; his name doesn't matter. Issue was conferences were not working, first user was able to join, but the second couldn't. So, here it is my explanation of the bug; I hope this is useful for someone.

This is a common scenario I have found. At least, here in Canada, it is very common you change Internet provider if you find a better deal. So, if you have VoIP in your home or office, this means you will need to change your router (sometimes called modem).

For unlucky owners of Aastra telephones, you will notice your telephone won't work using the new modem. It seems there is a bug on the firmware, the only possible solution I have found is by doing a hardware reset of the telephone. Take note of your SIP credentials, because you will need to enter them; this could be a good opportunity to configure auto-provisioning if you have your own PBX (like FusionPBX).

Auto-provisioning is the technique that allows a hardware telephone to pull its SIP configuration from the PBX, this way a system administrator doesn't need to be in front of the telephone each time there is a change; think on auto-provisioning as a remote configuration. Auto-provisioning will reduce the need of having the hardware in your hands each time you want to change a SIP credential.

Aastra telephones are supported on FusionPBX, but they are not out-the-box. I will talk about how I did to auto-provision an Aastra phone.

Today I have published in OKay's RPM repository RPMs for JsonCPP 1.6.5. JsonCPP is a lightweight data-interchange format. It can represent numbers, strings, ordered sequences of values, and collections of name/value pairs. JsonCpp is a C++ library that allows manipulating JSON values, including serialization and deserialization to and from strings. It can also preserve existing comment in unserialization/serialization steps, making it a convenient format to store user input files.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search jsoncpp.

Enjoy!

Today I have published in OKay's RPM repository RPMs for SHC 3.8.9. SHC is a generic shell script compiler that allows you to hide your Linux shell scripts.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search shc.

Enjoy!

Today I have published in OKay's RPM repository RPMs for PhantomJS 1.9.8. PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search phantomjs19.

Enjoy!

Today was a very interesting day, Montréal Science Centre is doing its second dinosaur exposition. It is not a really big exposition, but it is well structured and many of the dinosaurs showed were mechanic. They moved!

If you are in Montréal, Québec, you can find this nice museum at:

2 Rue de la Commune O,
Montréal, QC H2Y 4B2
Canada

I am uploading some photos. Enjoy them.

 

Today I have published in OKay's RPM repository RPMs for PAM Memcached2 1.0.0. This PAM module will allow you to accept or deny authentication based on existence of a key in the memcached. This can speed things up of course. I will talk later about how to use it.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search pam-memcached2.

Enjoy!

Today I have published in OKay's RPM repository RPMs for PAM script 0.1.12. This PAM module will allow to run a customized script when a user start or ends session. It can be used in the authentication or the session part of the config file.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search pam-script.

Enjoy!

Today I have published in OKay's RPM repository RPMs for Syncthing 0.12.2. Syncthing is a complete syncrotnization, multi-platform solution to have same files in your devices. It is like a Peer-to-Peer.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search syncthing.

Enjoy!

Currently  I manage like 10 websites I have done myself. I have been working on a heavy SEO and I can be very proud that they are listed in the first page when you are googling the right words. Because of that, and a reading I did in a magazine called "The SEO handbook", I will share with you what I agree as SEO myths.

In Flanders fields the poppies blow
Between the crosses, row on row,
That mark our place; and in the sky
The larks, still bravely singing, fly
Scarce heard amid the guns below.

We are the Dead. Short days ago
We lived, felt dawn, saw sunset glow,
Loved and were loved, and now we lie
In Flanders fields.

Take up our quarrel with the foe:
To you from failing hands we throw
The torch; be yours to hold it high.
If ye break faith with us who die
We shall not sleep, though poppies grow
In Flanders fields.

John McCrae

I've got an interesting booklet about how to do an online business. It has its interesting points, not everything applies to every online business model, but it is a good point to start. So I am going to comment the first topic called "Going into business". This first summary will ask you why are you doing this. Be ready to answer this question.

Before you begin working on your business, you need to  work out what you want to get out of it. Think carefully; the answers you come up with might surprise you. Creating a business from scratch can be exciting and rewarding, but it also involves time, effort and money. So it's essential to understand why you're doing it: a clear sense of purpose will help propel you through what is likely to be a demanding process.

You should start with a self-assessment:

  1. Determination: about all else, you need to have the stamina and drive to finish what you start.
  2. Humility: the ability to recognise that you don't know everything is essential. Do research and be flexible to change. Arrogance is a business-killer.
  3. Decisiveness: nothing gets done unless you make decisions. There is a never ending process of information-gathering followed by decision-making.
  4. An analytical mind: evaluate every aspect of your business and the market in which it operates.

Unless you are sitting on a big pile of cash, the safest way to start up a business is to run it while you are working for someone else.

First timers in Canada will see that in the week of November 11th, people start carring a little red flower pin. So the first question is, why? Well here it is the answer. It was given in my french course, but it is quite siemple to follow.

L'Histoire du Coquilicot

Le jour du souvenir - Le 11 novembre

Pourquoi le coquelicot a-t-il été coisi comme symbole du Souvenir de nos morts?

Le coquelicot est un symbole international á la mémoire de ceux qui sont morts à la guerre. Son origine est aussi internationale.

Un écrivain fut le premier à établir un rapport entre les coquelicot et les champs de batailles durant les guerres napoléoniennes au début du19e siècle. Il remarqua que les champs qui étaient nus avant le combat se couvraient de fleurs rouge-sang après la bataille.

Avant la première guerre, peu de coquelicots poussaient en Flandres. Durant les terribles bombardements de cette guerre, les terrains crayeux devinrent riches en poussière de chaux, favorisant ainsi la venue des coquelicots. La guerre finie, la chaux fut rapidement absorbée et les  coquelicots disparurent de nouveau.

Le lieutenant-colonel John McCrae, un médecin militaire canadien, établit le même rapport entre le coquelicot et les champsde batailles et écrivit son célèbre poème "In Flanders Fields" (dans les champs des Flandres). Le coquelicot devint rapidement le symbole des soldats morts au combat.

Quelques années plus tard, une américaine, Moina Michael, qui travaillait dans une cantine de la YMCA à New York, se mit à porter un coquelicot en mémoire des millions de soldats qui avaient donné leur vie. En 1920, cette coutume vint à la connaissance d'une française, Madame Guérin, en visite aux États-Unis. À son retour en France, elle décida de se servir de coquelicots faits à la main pour récolter des fonds pour les enfants sans ressources des régions dévastées du pays. En novembre 1921, les premiers coquelicots apparuent au Canada.

Grâce aux millions de Canadiens qui chaque année en novembre portent la petite fleur rouge, le coquelicot a survécu comme symbole et les Canadiens continuent de se souvenir de leurs 114,000 morts.

Well, here it is a little why.

FusionPBX is a amazing WEB frontend for FreeSWITCH. But as any non-propietary project (I mean OpenSource licenced), installattion is not as easy as everyone would wish. So, here I explain one of the many methods available to install it.

This installation by default will install FusionPBX with the following capabilities:

  • Multi-tenant enabled
  • MySQL/MariaDB enabled for the Profiles registrations
  • MySQL/MariaDB enabled for the FreeSWITCH core
  • MySQL/MariaDB enable for the FusionPBX
  • FusionPBX XML Handler enabled
  • LCR and Billing for FusionPBX
  • FreeSWITCH 1.6 (latest available when writing this post)
  • Database index optimized

This way, if you wan to do later advanced configuration such as load balancing or HA, you don't need to do a big thing in the FreeSWITCH or FusionPBX end.

In more than one occasion you need to put a module inside an article or a bigger module. Well, here's how:

  1. Create the module and indicate to the container a non existent name, so that the module is published but not visible.
  2. Edit the item and add between braces loadposition xxx,where xxx is name of the container of step 1

There is another method:

  1. Edit the article and place loadmodule yyy also between brackets. Where yyy is the name of the module, it does not necessarily have to be published in an unseen container. This method does not work for all modules.

Tested on Joomla 3.4.x.

 

 

Since FusionPBX 3.8 it is possible to share dialplans among the tenants. For example, you can put an outbound route with a dialplan that catches all the routing to the PSTN network. Instead of adding that dialplan in all your tenants (which it is a huge work specially if you have many tenants), you can configure only one dialplan and tell FusionPBX it is a shared one.

To make any dialplan a shared, follow these steps:

  1. Edit your dialplan
  2. Change the context value by ${domain_name}
  3. Change domain value by Global

And you are done. Remember FusionPBX uses caching, so maybe you will need to flush it.

Enjoy!

In the long journey of security, moving from HTTP to HTTPS is one of the many steps you will need to do. So, the first question is: why you just don't close port 80/tcp? Answer is more a SEO matter than a security one; if you close the port 80/tcp, when Google and any other indexing engine will try to contact you, it will time-out. This, at Google's eyes means an off-line server; an off-line server is a candidate to be taken out of the indexing.

Doing a proper redirection, for example from http://inside-out.xyz/path/script.php?parameters to https://inside-out.xyz/path/script.php?parameters is the correct way. Google will understand the HTTP error code 301 and it will reindex you with the correct URL.

Here it is my .htaccess file I use:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^127.0.0
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

This will allow HTTP redirection for all queries but those who come to IP 127.0.0.x. You can play with the regular expresion to do exceptions.

Remember to modify Apache's configuration in the <Directory> tag to allow all to be overwritten.

Enjoy!

Stripe is one of the new era Credit/Debit cards gateways. If you live in one of the supported countries you will be able to start charging from your website in 5 minutes. Stripe has published a new service called Checkouts. Checkouts allows you to create automatic forms with minimal changes on your site.

You will find that Stripes Fees are one of the lowest in the market. So here it is one way to integrate payments.

In more than one ocasion, I have been in situations where I need to know what directory is the one who uses the most space in the disk. In order to know this. Follow the next steps:

  1. go to the parent directory you want, for example /var: cd /var
  2. type du --max-depth=1 -H | sort -n -r

The first line of the output will bhe the directory using the most part of the available space.

Enjoy!

Yesterday I have published in OKay's RPM repository RPMs for Syncthing 0.12.1. Syncthing is a complete syncrotnization, multi-platform solution to have same files in your devices. It is like a Peer-to-Peer.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search syncthing.

Enjoy!

Most of people who know me knows that I am not only a freelancer, but a business man. Sometimes I need to hire freelancers for specific projects.

One of the biggest concerns I have is the confidenciality. Because of this, I have search and I have found the following. This is the Spanish version, as most part of people I hire speak Spanish as their first language.

In all my experience as a VoIP & Linux expert, I have tried some FreeSWITCH frontends. I can tell that FusionPBX has been the easiest and fastest way to manage a FreeSWITCH VoIP server. I have been using FusionPBX since release 2.x and I can tell you it will help the newbie and the expert to speed up PBX management. Currently I manage about 15 PBX'es and I can tell that there are few tasks I haven't been able to do with this project.

The objective on this article is to present in a clear way what does FusionPBX offer and to avoid false ideas of the project.

In order to become resident in Canada, you must show your English skils are enough. Canada government documents it in a very clear way. It states what tests and the minimum grade you must have. For English, only two exams are valid: CELPIP and IESTL. I will tell you my experience, and based on that you can get a better idea. I don't consider myself very good in English, I felt more confortable with CELPIP.

When you have a cluster using FreeSWITCH (all PBX'es share same database among other things), you will need to know who is the least load server. Regardless what are you using this information for, or how you grab it, you can easily get it doing the following SQL query (remember FreeSWITCH's default database name is freeswitch):

SELECT t.hostname, SUM(t.load_index) AS load_index FROM (select hostname, count(hostname) * 1.5 AS load_index FROM channels GROUP BY hostname UNION SELECT hostname, COUNT(hostname) AS load_index FROM registrations GROUP BY hostname) t ORDER BY load_index DESC

You will get a list of hostnames members of the cluster and a load index.

Remember you will need to use the core-db-dsn and the core-recovery-db-dsn tags in the switch.conf.xml file in order to be able to have the required tables.

Wget is a very powerful tool to get contents using the CLI. Here I am going to show you how you can download a whole website.

wget --mirror --convert-links --adjust-extension --page-requisites -e robots=off inside-out.xyz

This will download all the website in a directory called inside-out.xyz. After that, some HTML code may have absolute hard-coded. So we use find and sed commands.

find -name '*.html' -type f -exec sed -i 's/http:\/\/inside-out.xyz\///g' {} \;

This will change tags like <img src="http://inside-out.xyz/images/logo.png" /> to <img src="/images/logo.png" />

Enjoy!

Internet has many programs to try free calls. SIPCLI, a command line SIP agent. It is used for many things, including auditing and looking for misconfigured SIP servers.

The following IPTables rules will let you to prevent these attacks:

iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "sipcli/" --algo bm
iptables -I INPUT -j DROP -p tcp --dport 5060 -m string --string "sipcli/" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5080 -m string --string "sipcli/" --algo bm
iptables -I INPUT -j DROP -p tcp --dport 5080 -m string --string "sipcli/" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm
iptables -I INPUT -j DROP -p tcp --dport 5060 -m string --string "friendly-scanner" --algo bm
iptables -I INPUT -j DROP -p tcp --dport 5080 -m string --string "friendly-scanner" --algo bm
iptables -I INPUT -j DROP -p udp --dport 5080 -m string --string "friendly-scanner" --algo bm

These rules will drop connection of any packet with the frendly-scanner or sipcli/ string within. Please note that this solution is not absolute, but they are a good start to protect yourself.

Today I have published in OKay's RPM repository RPMs for the Codec a52 (AKA AC-3). AC-3 is very common on Digital TV and DVD players. So, you may want to recompile ffmpeg, vlc or anyother player to use it.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search a52dec.

Enjoy!

Today I have published in OKay's RPM repository RPMs for FFMPEG. FFMPEG is a complete cross-platform solution to record, convert and stream audio and video.

RPM's are available for Centos 6 and 7. And you can find it if you type yum search ffmpeg.

Enjoy!

Discipline, without any doubt, is the master key for a good and healthy personal finances. That and a good tool to help you. I would like to recommend you all KMyMoney. Here I will explain my specific case.

Everyone know that Centos only takes care of some specific core packages. All others, if you want to contine using RPM's, must be used from alternative Repositories. There are many alternatives:

  • EPEL: you will find here many useful packages. Packages gets updates for critical bugs.
  • Remi: you will find here backports for most useful packages. 
  • OKay: you will find here some specific packages for servers, audio and video.

I specially do contributions into OKay repository. So, if you want to use OKay follow these steps:

  • Install the EPEL repository, you may try typing yum install epel-release. I think at least Centos 7 has it out of the box.
  • Install the okay-release RPM. Type:
    • Centos 6 on 32 bits: rpm -ivh http://repo.okay.com.mx/centos/6/i386/release/okay-release-1-1.noarch.rpm?
    • Centos 6 on 64 bits: rpm -ivh http://repo.okay.com.mx/centos/6/x86_64/release/okay-release-1-1.noarch.rpm?
    • Centos 7 on 64 bits: rpm -ivh http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm?

I will post later as I publish some updates or packages.

Montreal is one of the cities with most part of inmigrants in its population. Because of that, not everyone makes a celebration of Halloween. Then, when you are going to do Trick or Treat it is very important to know what doors to knock. The answer is easy, if the house has been customized (even if they only have a little pumpkin outside), you are suppose to go there for candies.

In my french class I got the following text in which it explain why the pumpkin. It is in french, of course, but you can use any translator if you dont understand.

Halloween

Du navet à la citrouille

L'origine de l'Halloween remonte à plus de 2 000 ans. À l'époque, la France et l'Angleterre sont habitées par la peuple celte. Le calendrier des Celtes est différent du nôtre; la nouvelle année débute le 1er novembre. À cette occasion, les Celtes se régalent des produits cuiltivés pendant l'été. Mais la fête n'est pas entièrement joyeuse; dans la nuit qui sépare la vieille année de la nouvelle année, les âmes des morts reviennent sur terre. C'est du moins ce que croient les Celtes.

Pour protéger les vivants des mauvais esprits, les druides allument sur les collines de gigantesques feux. Et quand les Celtes doivent sortir, les soir, ils apportent avec eux des navets qu'ils on vidés et à l'intérieur desquels ils ont placé une chandelle. Ainsi, les mauvais esprits ne peuvent rien contre eux, croient-ils!

À cette époque, les célébrations du 31 octobre et du 1er novembre n s'appellent pas encore Halloween mais Samhain, ce qui signifie, en lange celte: "la fin de l'été".

Vers l'an 900, l'Église crée, le 1er novembre, une nouvelle fête religieuse: la TOUSSAINT. Comme son nom l'indique, c'est la fête de tous les saints. En anglais, cela se dit: All Hallow Day. Et toujours en anglais, la veille de la Toussaint se dit: All Hallowed Even. Cela donnera HALLOWEEN.

L'histoire de l'Halloween se poursuit en Irlande, vers l'an 1600. Les Irlandais sont les descendants des Celtes. ils son très superstitieux et croient toujours que, le soir du 31 octobre, les âmes des morts reviennent sur terre. Pour se protéger, ils installent devant chaque maison un navet vide avec une chandelle à l'interieur. Et pour décourager les esprits d'approcher, ils découpent dans le navet un visage grimaçant.

En plus, les enfants vont de porte en porte demander à chacun une offrande pour les morts. Si quelqu'un refuse, les enfants ont le droit de lui jouer des tours, parfois méchants.

Vers 1850, des milliers d'Irlandais émigrent au Canada et aux États-Unis. Ils apportent la tradition de l'Halloween et découvrent que les citrouilles font de bien plus jolies lanternes que les navets! Pour éviter de se faire jouer des tours, les adultes continuent, le soir du 31 octobre, à donner des friandises aux enfants.

Aujourd'hui, on continue à célébrer l'Halloween. Mais on pense plus aux enfants du Tiers-Monde qu'aux morts. Alors, le soir du 31 octobre, ne sors pas sans ta tirelire de l'Unicef.

So, Halloween is more an European tradition, but the pumpkin adoption was taken in United States.

Sometimes for odd reasons you will need to connect directly to IMAP protocol and do tests using the telnet tool. Here it is a little example on how I did it:

# telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ STARTTLS AUTH=PLAIN] IMAP gateway ready

a1 LOGIN info 123
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ CHILDREN XAOL-OPTION NAMESPACE QUOTA IDLE] LOGIN completed
a2 LIST "" "*"
* LIST (\HasChildren) "/" "Public folders"
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\HasNoChildren) "/" "Outbox"
* LIST (\HasNoChildren) "/" "Deleted Items"
* LIST (\HasNoChildren) "/" "Sent Items"
* LIST (\HasNoChildren) "/" "Drafts"
* LIST (\HasNoChildren) "/" "Junk E-mail"
* LIST (\HasNoChildren) "/" "Trash"
a2 OK LIST completed

a3 EXAMINE INBOX
* 840 EXISTS
* 777 RECENT
* FLAGS (\Seen \Draft \Deleted \Flagged \Answered $Forwarded)
* OK [PERMANENTFLAGS (\Seen \Draft \Deleted \Flagged \Answered $Forwarded)] Permanent flags
* OK [UIDNEXT 7368] Predicted next UID
* OK [UNSEEN 829] First unseen message
* OK [UIDVALIDITY 17] UIDVALIDITY value
a3 OK [READ-ONLY] EXAMINE completed

a4 FETCH 1 BODY[]
* 1 FETCH (BODY[] {16382}
<MAIL BODY>
FLAGS (\Seen))
a4 OK FETCH completed

a5 LOGOUT
* BYE server logging out
a5 OK LOGOUT completed
Connection closed by foreign host.

FusionPBX has a way to allow authentication with key. This way you will be able to log into your WEB console with a GET parameter. Something like this:

http://YOUR_IP/fusionpbx/app/xml_cdr/xml_cdr.php?key=YOUR_KEY

This authentication is very useful when you want to code your own REST api or to have a backdoor.

Follow the next steps to enable it:

  1. Log into your server, and go to your FusionPBX web directory. For example
    cd /var/www/html/fusionpbx
  2. Create the app/api directory
    mkdir app/api
  3. Create the app_config.php file inside that directory
    touch app/api/app_config.php

Next time you add or edit a user, you will find a new field where you can put your key.

FusionPBX API key input field

Usually you will find that when talking about PBXes, they are classified on Class 4 and Class 5. So, obviously, your next question is: What is the difference between a Class 4 and a Class 5 PBX?  I will try to explain as clear as possible.

Class 5

A Class 5 PBX deals with end-user. It provides final-user services such as Voice-Mails, Conference rooms, IVR and many other kind of services that a phone user many need. This kind of switches deals with the user interaction (SIP end points such as Soft/Hard phones). So, in general terms, you can state that principal client of a Class 5 PBX is end-user.

It is very common to find them in the retail market.

Class 4

Class 4 PBX are a little different. They don't deal with end-user, but instead they deal with other switches. If you are familiar with networking, you can see Class 4 switch as a router that is connected to other routers.

You can find this kind of switches on the wholesale market.

Hi There,

Welcome to my Inside Out blog. Here, you can expect posts about the following topics:

  • Sample codes to do some specific tasks
  • VoIP configuration
  • Some critics
  • My experience migrating to Canada
  • Money and Financial advice

And many other topics.

If you need more help than the free one provided here...