FreePBX / issue-tracker

The unified FreePBX issue tracker.
https://www.freepbx.org
GNU General Public License v3.0
12 stars 1 forks source link

[new-feature]: Add ability to lock voicemail passwords. #151

Open blazestudios97 opened 6 months ago

blazestudios97 commented 6 months ago

FreePBX Version

FreePBX 17

Feature Description

Add the option in Voicemail Admin and/or per mailbox to lock the password. This will make it so the password cannot be changed via the voicemail system. This would be good for scenarios of shared mailboxes or stopping any user from changing passwords, if desired.

lgaetz commented 6 months ago

There are 2 primary ways to change a VM password on FreePBX, using the GUI either as a user in UCP or as an admin in fpbx, or via DTMF using app_voicemail. To be fully effective, such a lock feature would have to be implemented in both places, and app_voicemail is not controlled by this project, that would be an Asterisk feature request.

As a work around until robust controls are built into fpbx, one can leverage the existing app_voicemail controls for passwords, such as externpasscheck and externpassnotify.

https://github.com/asterisk/asterisk/blob/master/configs/samples/voicemail.conf.sample

externpasscheck - a simple script such at the following could be used to block ALL password changes via DTMF

#!/usr/bin/php
<?php
echo "INVALID";
exit;

externpassnotify - a script could be created to generate a notification whenever a vm mailbox password changes

neither of the above options would be useful to prevent vm PIN change from UCP.

blazestudios97 commented 6 months ago

app_voicemail is not controlled by this project, that would be an Asterisk feature request

It wouldn't be a feature request, it's already an existing feature within app_voicemail. From voicemail.conf.sample that you linked to:

If the password is prefixed by '-', then it is considered to be unchangeable.

So by using the method already available in voicemail.conf, it removes the need for the end user to write additional scripts for an existing function.