Commit Graph

2435 Commits

Author SHA1 Message Date
FusionPBX
2d18d51ff4 Update app_languages.php 2025-06-26 07:11:06 -06:00
frytimo
c126429be4 remove exit on unknown control frame (#7397) 2025-06-25 13:31:51 -06:00
FusionPBX
858e0ab491 Add restart always 2025-06-25 12:02:14 -06:00
frytimo
041914c16b Fix websocket in progress calls (#7394)
* Add a max chunking size when reading bytes to prevent failure

* Add more debug information

* Update the active calls response to be better
2025-06-25 08:15:48 -06:00
frytimo
d5286a12bc Websockets (#7393)
* Initial commit of websockets

* Move app_menu to the active_calls websockets

* Fix hangup function

* Remove connection wait-state on web socket server so events can process

* Add timestamp and debug level to console for service debug output

* Remove debug exit

* Fix typo for ws_client instead of ws_server

* Update app_config.php

* Fix typo and remove empty function

* Remove call to empty function

* Fix the menu to point to the correct location

* Remove Logging Class

* Rename service file

* Rename service file

* Fix the in progress browser request

* Fix browser reload and implement 'active_calls' default values

* Add apply_filter function

* Create new permission_filter object

* In progress active calls now use filter

* Add invalid_uuid_exception class

* add event_key_filter to honor user permissions

* add and_link and or_link for filters

* Fix disconnected subscriber and add filters to honor permissions

* Add $key and $value for filter

* define a service name

* catch throwable instead of exception

* Add $key and $value for filter and allow returning null

* Update permission checks when loading page

* Add apply_filter function to honor subscriber permissions

* Add create_filter_chain_for function to honor subscriber permissions

* Add apply_filter function to honor subscriber permissions

* Add apply_filter function to honor subscriber permissions

* create interface to allow filterable payload

* create interface to define functions required for websocket services

* Pass in service class when creating a service token

* Allow key/name and return null for filter

* Adjust subscriber exceptions to return the ID of the subscriber

* Add event filter to filter chain

* Add command line options for ip and port for websockets and switch

* update service to use is_a syntax

* initial commit of base class for websockets system services

* initial commit of the system cpu status service

* remove extra line feed

* fix path on active_calls

* initial proof of concept for cpu status updated by websockets

* Allow returning null

* Use default settings to set the interval for cpu status broadcast

* Improve the CPU percent function for Linux systems

* Show more debug information

* Allow child processes to re-connect to the web socket service

* Fix websockets as plural instead of singular

* Add class name list-row

* Update active_calls.php

* Update active_calls.php

* Update websocket_client.js

* Update app_config.php

* Update app_menu.php

* Update debian-websockets.service

* Update debian-active_calls.service

---------

Co-authored-by: FusionPBX <markjcrane@gmail.com>
2025-06-24 13:07:57 -06:00
FusionPBX
52825a8f59 Allow additional characters for the name, content and details
- Allow additional characters
- Allow multi-lingual
- Use escape to keep it secure
2025-06-11 16:12:30 -06:00
FusionPBX
d8ec8be917 Fix a spelling mistake in htmspecialchars 2025-05-31 16:49:17 -06:00
FusionPBX
f2054fa490 Minor version update 5.4.3 2025-05-28 19:54:36 -06:00
FusionPBX
ee16644e25 Rename methods used in restore default
Renamed methods
- delete to restore_delete 
- restore to restore_default
2025-05-28 19:49:45 -06:00
FusionPBX
b96b5f8c0f menu_item_protected deprecated
This protected feature has not been working correctly. At the moment commented out depending on feedback it maybe removed entirely.
2025-05-28 19:37:58 -06:00
K-Flagman
62791e4eb3 [CORE] [MENU] Feature Assign/Unassign User Groups (#7373) 2025-05-17 13:50:02 -06:00
fusionate
9032322b36 Email Queue - Test: Add Email Template to customize message sent in test email. 2025-05-15 11:37:12 -06:00
n0obHere
b5cf6f1690 Enhanced dashboard system_status card with more useful system info (#7366)
* Update system_status.php

Adjust column width to make some overflowing multi-line values into one-line view.

* Enhanced dashboard system_status card with more useful system info

- Added OS version detection
- Fixed not working memory usage with format (60% (1G/2G))  
- Replaced memory available with swap usage
- Improved disk usage display format (57% (12G/20G))    
- Added DB max connections display (Current/Max)

* Added style colors based on thresholds

* Update app_languages.php

Additional languages for new system_status items
2025-05-12 10:44:40 -06:00
FusionPBX
ab688a9204 Update default_setting_edit.php 2025-05-08 09:07:30 -06:00
FusionPBX
21846c760d Sanitize the domain setting category 2025-05-08 09:07:06 -06:00
FusionPBX
a88062fb1e Allow a space in the setting category name 2025-05-08 09:02:50 -06:00
Alex
7ff882f551 Dashboard Edit - Only show icon color if needed (#7361) 2025-04-30 12:46:58 -06:00
FusionPBX
ee322d23b6 Fix a syntax issue and remove the optional php close tag 2025-04-22 10:06:03 -06:00
FusionPBX
bd1258b126 Add missing translations 2025-04-22 10:02:19 -06:00
FusionPBX
1b6166ed77 Fix the link to call detail records 2025-04-17 16:40:24 -06:00
FusionPBX
30f6103dbb Update authentication.php 2025-04-17 16:32:12 -06:00
frytimo
e7393cc7c0 New Feature OpenID Connect (#7355)
* Refactor authentication to allow for OpenID Connect
The authentication class has been refactored to separate the `validate` function for the method `create_user_session`. This is needed for the OpenID Connect module to authenticate a user without going through the process of all authentication plugins. Only the function `check_user_cidr` has been rewritten to use a single loop instead of a double-loop.
Due to the fact that create_user_function is public, the $result associative array is checked to ensure the required fields are present and the UUID fields are valid UUIDs. Further checking could be done against the database to ensure the UUIDs exist but this has been suppressed at this time because database queries would be required.

* Database class modified to allow for login banners for OpenID Connect
The database class is responsible for creating the view for login. The OpenID application required banners to be present so that any OpenID Connect authentication mechanism could be used. Each banner displayed has the properties of: name, image, alt, and url. The name is the class name of the authentication plugin. This will match the action in the URL. The image is the image banner used for the login. The alt is the alternate text used for screen readers. Each authenticator is responsible for providing each of the field values.

* Added PHPDocs for the check_cidr function

* Add backwards compatibility for PHP versions below 8

* Remove get_banner_alt

* Update check_cidr to allow cidr array

* Update authentication.php

* Update functions.php

* Update authentication.php
2025-04-17 13:48:16 -06:00
Alex
6a9b93c51d Update dashboard background default settings (#7354)
* Update dashboard background default settings

* Update app_config.php

* Update app_config.php

* Update template.php

* Update app_config.php

* Update css.php
2025-04-17 09:39:00 -06:00
FusionPBX
c3952028b1 Use the settings get method for the buttons 2025-04-14 10:36:21 -06:00
FusionPBX
de10ea2a4a Use settings get method for list_row_edit_button 2025-04-14 09:36:05 -06:00
FusionPBX
b7e24103bf Use the sessions get method to get rows_per_page 2025-04-14 09:27:06 -06:00
Alex
48a0990d51 Dashboard - Fix device keys and call center agents background color (#7352)
* Fix background color on device keys and call center agent widgets

* Update call_center_agents.php

* Update index.php

* Update index.php

* Update device_keys.php

* Update call_center_agents.php

* Update call_center_agents.php

* Update device_keys.php

* Update config.php

* Update index.php

* Update device_keys.php

* Update call_center_agents.php

* Update index.php

* Update index.php

* Update device_keys.php

* Update call_center_agents.php

* Update call_center_agents.php

* Update device_keys.php
2025-04-04 11:23:22 -06:00
frytimo
b01bf7d08c Add clear settings object cache when modifying or adding setting (#7351)
When a setting is modified, the settings cache can be reloaded allowing the setting that was modified or added to take immediate effect. The call to allow any other clear cache methods to be called will allow any new features to have their settings also take effect. The settings are first cleared though so that any of the other classes that may require updated settings to work with, ensure that they have the newest default setting values.
2025-04-01 10:19:37 -06:00
Alex
aceb77d70e Dashboard Edit - Only show target, width, and height if needed (#7341) 2025-03-27 16:18:50 -06:00
Alex
c305685d23 Fix dashboard edit defaults (#7340)
* Fix dashboard edit defaults

* Update app_defaults.php

* Update config.php
2025-03-27 15:41:38 -06:00
Alex
5f7ef8848e Fix typo (#7337) 2025-03-26 14:57:24 -06:00
frytimo
a5e63e0fce unset the parameters array (#7331) 2025-03-21 10:53:46 -06:00
fusionate
7787c4fd73 Default/Domain/User Settings - Edit: Correct Google Fonts URL. 2025-03-18 18:08:26 -06:00
fusionate
a482326930 Default/Domain/User Settings - List & Edit: Do not mask new input_text_font_password setting. 2025-03-18 18:04:49 -06:00
fusionate
42c96239c8 Theme: Set select password fields to monospace font when revealed. New input_text_font_password setting to control default font. 2025-03-18 17:55:41 -06:00
frytimo
0a42d8f198 Add caching to the auto_loader for interfaces (#7320)
* update auto loader to load and cache interfaces

* use new method to update the auto loader cache

* use new interface

* use new interface to trigger a cache flush

* update the console upgrade menu

* update the missing implements syntax

* add the clear_cache to the flush cache button
2025-03-15 09:13:36 -06:00
Alex
5dffd4d6e0 Add CDR column_overflow default setting (#7314)
* Add cdr column_overflow default setting

* Update app_config.php

* Update xml_cdr.php

* Update default_setting_edit.php

* Update template.php

* Update app_languages.php

* Update css.php
2025-03-13 14:49:30 -06:00
chansizzle
e6bfaf21ee Remove escaping character typo (#7311)
escaping character not needed on the template_subject
2025-03-13 11:30:42 -06:00
chansizzle
95761621a6 improve emergency emailing (#7309)
* improve emergency emailing

1. set emergency CID name & number to the outbound CID name & number if emergency CID name & number are not set
2. remove duplicate item in email body
3. change the hardcoded email subject '911 Emergency Call' to be dynamically provided from the event. I do not like seeing the subject '911 Emergency Call' when it is an TEST call.

* improve emergency emailing

1. change the hardcoded email subject '911 Emergency Call' to be dynamically provided from the event. I do not like seeing the subject '911 Emergency Call' when it is an TEST call.
2. fix email template misspelling
3. improved email template with bold fonts
2025-03-12 17:39:05 -06:00
FusionPBX
7897ff5b9e Clear the cache 2025-03-12 14:42:50 -06:00
frytimo
08001488f4 Allow namespace in auto loader (#7307)
* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove closing tag

* remove invalid method params

* remove closing tag

* remove closing tag

* Update auto_loader to load each class file in the project
Update the auto_loader class to use an include statement on each file in the project to load the class within the file. This will allow mismatched names within the file to be loaded and mapped according to the declaration instead of the filename. The class is then checked against the parsed classes from the PHP engine so that namespaces are available and mapped to the file they were declared in. An update was also made to the search algorithm used to find a file that was not already loaded by collapsing the array to have only valid matches to increase performance on a cache miss. Logging within the auto_loader has been moved to a function.
Multiple files were modified to allow the include statement. When the class has the `if(class_exists())` statement, the auto_loader is called to check for the class. This caused an infinite loop scenario so all wrappers have been removed. The auto_loader will now break the loop by directly modifying the internal classes array instead of trying to restart with the 'reload_classes' method.

- APCu is used to cache classes so any loading of the classes is done only once. To clear the APCu cache, restart php-fpm or call the auto_loader::clear_cache() function.
- Cache file is used when APCu is not available. To clear the cache remove it from the tmp folder or call the auto_loader::clear_cache() function.
- All classes must no longer have a class_exists wrapper to benefit from the performance boost.
- Classes should not be directly included when the auto_loader is used.

* remove include statement of class file

* Update destinations.php
2025-03-12 13:55:47 -06:00
Alex
5ff0af430f Fix domain settings content cards (#7298) 2025-03-10 11:34:31 -06:00
FusionPBX
a099de0c6f Fix the contact import 2025-03-08 14:37:15 -07:00
fusionate
da19ca7a7c Login: Display Cancel link to reset form if failure using database authentication. 2025-03-07 12:10:52 -07:00
fusionate
dd3288585c Menu: Add setting to reload menu when changing domains. 2025-03-06 20:08:48 -07:00
fusionate
fce7a9401a Dashboard - Edit: Display domain after domain-specific group names. 2025-03-06 16:17:53 -07:00
frytimo
1aa1eb6159 Use text instead of boolean for ace editor settings (#7285) 2025-03-04 16:30:17 -07:00
FusionPBX
cd3ff91f9a Update app_defaults.php 2025-03-04 16:27:59 -07:00
FusionPBX
167cc94f18 Move editor settings used
Used in multiple features for this reason moved to core.
2025-03-04 16:17:16 -07:00
frytimo
d529021b3f Use boolean setting as true boolean (#7284)
* use boolean setting as true boolean

* Update settings class to use the php filter_var function for boolean
Using the built-in filter type for boolean seems like a better option as they are faster, already hardened, and more widely tested.
I found this better method used originally by Mark J. Crane in 2022 in the content.php page so I included it here.

* Update settings class to use the php filter_var function for boolean
Using the built-in filter type for boolean seems like a better option as they are faster, already hardened, and more widely tested.
I found this better method used originally by Mark J. Crane in 2022 in the content.php page so I included it here.
2025-03-04 11:25:47 -07:00