* Add friendly names for system services
- Adds a $service_friendly_names array at the top of the details block
- For each service, tries to find a match in the array and sets the $display_name
- If no match found in the array, it falls back to prettifying the name automatically (replace underscore with space and capitalize the first letter of each word) so future services don't break the display
* Updated system_services card with more info
- Expanded the system_services card with an additional column for 'Runtime', showing how long the service has been running for
- Added a hover tooltip showing the PID of the service to all three columns
- Added the ability to fetch for additional services string from default settings to show in the system_services card
* system_services dashboard card new default setting
- Added a new default setting (theme -> dashboard_extra_system_services) for defining additional system services to monitor in the system_services dashboard card
- Default setting is enabled by default with a string value of 'freeswitch, nginx, postgresql, sshd'
* Adjusted column widths
Remove billsec greater than 0. The reason is that a call maybe answered to play a greeting. Bridged is a better option because the call has a second leg.
- Security update required for those using text-to-speech with openai
- Improved overall sanitization of the filename
- Remove more characters with str_replace and
- Use an array to define the characters to remove with str_replace.
- Add | and ` to the str_replace
- Added escapeshellarg for additional protection
* add extension handling to subscriber
Store the extensions in the subscriber when it is available from $_SESSION.
Add more documentation to functions and variables
* remove rogue 'c' character injected by my keyboard
* Store the user session information in the token when available
* Add extension filter class
* Create get_user_setting function
* Add channel_presence_id key to event message
* Add context filter
* Add dashboard widget
* Add config for widget
* Add domain filter to service
* Fix websocket_service to get the class name
* Add new method get_service_name