FusionPBX offers a way to remotely reboot your registered endpoints. Of course, those endpoints must honour the SIP signal. However, the problem arises when you have many extensions. Last week, I had the challenge to reboot more than one thousand endpoints, where eight hundred of them were registered in a single server. As you imagine, the clicking way is too much hassle. There should be another way.

Sadly, as of this day, neither FusionPBX 4.2 (the latest stable branch when writing this article) nor FusionPBX 4.3 (August 26th, 2017) offers a simple way to accomplish this task. After reading the code, I found that all elements were there, I just needed to iterate them to send the signals to all the registered endpoints. So I did it, I took the code from the other parts and joined them to produce a script that would reboot all the listed endpoints. And here it is my pull request that hopefully would be accepted in FusionPBX 4.3.

This patch will enable FusionPBX to reboot all the listed endpoints. If you are watching only the endpoints of a tenant and you click on the button, it will only reboot endpoints registered on that endpoint. If you are listing all the endpoints and click on the button, it will reboot all the endpoints in your server.

Patching your FusionPBX 4.2 to Reboot all your Endpoints

By policy, FusionPBX 4.2 will only accept security patches. Sadly, I doubt this would qualify as one. I will explain here how to patch yourself for your deployment.

  1. Find the file app/registrations/app_languages.php and add the following translation content.
    $text['button-reboot_all']['en-us'] = "Reboot all";
    $text['button-reboot_all']['ar-eg'] = "";
    $text['button-reboot_all']['de-at'] = "Neu starten";
    $text['button-reboot_all']['de-ch'] = "Neu starten"; //copied from de-de
    $text['button-reboot_all']['de-de'] = "Neu starten";
    $text['button-reboot_all']['es-cl'] = "Reiniciar todo";
    $text['button-reboot_all']['es-mx'] = "Reiniciar todo"; //copied from es-cl
    $text['button-reboot_all']['fr-ca'] = "Redémarrer tout"; //copied from fr-fr
    $text['button-reboot_all']['fr-fr'] = "Redémarrer tout";
    $text['button-reboot_all']['he-il'] = "";
    $text['button-reboot_all']['it-it'] = "";
    $text['button-reboot_all']['nl-nl'] = "";
    $text['button-reboot_all']['pl-pl'] = "Zrestartuj";
    $text['button-reboot_all']['pt-br'] = "Reiniciando";
    $text['button-reboot_all']['pt-pt'] = "Reinicialização";
    $text['button-reboot_all']['ro-ro'] = "";
    $text['button-reboot_all']['ru-ru'] = "Перезагрузить";
    $text['button-reboot_all']['sv-se'] = "Starta Om";
    $text['button-reboot_all']['uk-ua'] = "Перезавантажити";
  2. Edit the file app/registrations/status_registrations_inc.php and add the following lines where the buttons are displayed.
    echo "<input type='button' class='btn' name='' alt='".$text['button-reboot_all']."' onclick=\"window.location='cmd.php?cmd=reboot&profile=".$sip_profile_name."&show=".$show."'\" value='".$text['button-reboot_all']."' ".$onhover_pause_refresh.">\n";
  3. Finally, create the file app/registrations/cmd-all.php with this content.

You are ready to go. Please note that it is up to the endpoint to honour or not the SIP signal. Happy rebooting.

Good luck!

";