72 Commits

Author SHA1 Message Date
FusionPBX b2fa27e532 Fix registration to IP address requires to-host 2026-05-21 16:38:34 +00:00
FusionPBX 37e7a745be Update comments for event_guard_service 2026-05-20 19:05:38 +00:00
FusionPBX fa5ae89827 Fully detach from parent shell to prevent 'service' from blocking 2026-05-12 06:40:25 +00:00
FusionPBX b68f5828b0 Add FreeBSD rc.d service files 2026-05-12 03:46:26 +00:00
markjcrane 34a3ef1400 Change the protected to public for reload_settings
When waiting on a socket the call back needs to be accessible from anywhere
2026-05-05 15:43:02 -06:00
markjcrane 116b705ab4 Add category and get_category method 2026-04-30 06:53:29 -06:00
FusionPBX c8fe3d45ea Updated switch_events array 2026-04-21 18:46:28 +00:00
FusionPBX 2ae2415994 Refactor event socket connection logic
- Make sure to reconnect to event_socket if the connection is lost
- Send a notification to the log when reconnected
2026-04-14 11:59:23 -06:00
FusionPBX 6a535fe7ad Use proc_open to get the exit cod and stderr 2026-03-19 03:18:22 +00:00
FusionPBX 9e5844977c Event Guard remove all instances of a specific IP address 2026-03-19 00:38:45 +00:00
frytimo ba45d527ed Add run as user and group parameters for the service (#7747)
* Prevent running service as root unless required

* Allow specifying the user to launch service
2026-02-18 09:36:08 -07:00
FusionPBX ffa03fbde2 Filter for each Event-Subclass 2026-02-07 14:18:59 -07:00
markjcrane 5a928b9082 Event Guard for now default to iptables for Linux
- Can change this value using Default Settings
  - Category: system
  - Subcategory: firewall_name
  - Type: text
  - Value: nftables
  - Enabled: true
- Description: Firewall Options: pf, nftables, iptables

Additional firewalls will be supported in the future.
2026-01-29 06:13:04 -07:00
markjcrane 2c448c7bfb Update Event Guard version 2.0
- Use the service class
- Use object interfaces
- Add support for nftables
2026-01-29 05:31:02 -07:00
markjcrane f294d7c836 Remove the widget background and detail color default value 2026-01-27 18:55:03 -07:00
frytimo adfc4cc469 Create more documentation (#7627)
* Documentation, format class, no modification.
2025-11-18 18:33:07 -07:00
markjcrane b0eabca1f6 Update check permisisons 2025-11-02 00:22:57 -06:00
markjcrane bf5bb4f642 Fix multiple PHP warnings 2025-11-01 19:58:21 -06:00
Alex 126779190f Convert boolean values to a string before being copied (#7591)
* Convert boolean values to a string before being copied

* Update access_controls.php

* Update copyright year and handle boolean values

Updated copyright year from 2019 to 2025 and added conversion of boolean values to strings in the database result processing.

* Update call_block.php

* Update call_center.php

* Update call_flows.php

* Update conference_controls.php

* Update conference_profiles.php

* Update conferences.php

* Update device.php

* Update dialplan.php

* Update event_guard.php

* Update extension_settings.php

* Update fax.php

* Update fax_queue.php

* Update gateways.php

* Update ivr_menu.php

* Update number_translations.php

* Update phrases.php

* Update pin_numbers.php

* Update ring_groups.php

* Update streams.php

* Update time_conditions.php

* Update vars.php

* Update email_templates.php

* Update users.php

* Update domains.php

* Update groups.php

* Update extension_copy.php

* Update device_copy.php
2025-10-22 17:14:22 -06:00
FusionPBX dda18481ec Refactor PHP code (#7574)
* Use settings-get method
- get default, domain and user settings
- Replace _SESSION

* Simplify get domain paging

* Change isset using empty

* Fix token name and hash

* Add new default settings category: contact, name: default_sort_column, and default_sort_order

* Update app_config.php

* Update footer.php

* Fix require.php and core/dashboard/index.php (#7563)

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Update destinations.php

* Update permission.php

* Update require.php

---------

Co-authored-by: FusionPBX <markjcrane@gmail.com>
Co-authored-by: FusionPBX <mark@fusionpbx.com>

* Update header.php

* Use settings get classes (#7567)

* access_control

* azure

* azure

* basic_operator_panel

* bridges

* call_block

* call_broadcast

* call_center

* call_flows

* call_forward

* call_recordings

* do_not_disturb

* feature_event_notify

* follow_me

* remove unused object properties

* fix esl command

* fix esl command

* conference_centers

* conference_centers - remove whitespace

* conference_controls

* conference_profiles

* conference_profiles

* Delete core/websockets/resources/classes/socket_exception.php.original~

* Delete core/websockets/resources/classes/websocket_server.php.original~

* conferences

* destinations

* device

* dialplan

* email_queue

* event_guard

* extension_settings

* extension

* fax

* fax_queue

* fifo

* gateways

* ivr_menu

* modules

* switch_music_on_hold

* number_translations

* phrases

* pin_numbers

* provision

* switch_recordings

* registrations

* ring_groups

* sip_profiles

* sofia_global_settings

* streams

* presence

* switch_files

* time_conditions

* vars

* voicemail_greetings

* voicemail

* ringbacks

* contacts

* xml_cdr

* authentication

* dashboard

* default_settings

* domain_settings

* email_templates

* permission

* user_logs

* user_settings

* users

* button

* cache

* captcha

* remove cli_option

* remove directory.php for switch_directory class

* email

* file

* groups

* event_socket use config object

* Use intval to give an integer port

* switch_settings

* tones

* fix object used before initialization

* menu

* fix copy paste error for switch_files.php

* always include require.php for framework files

* Fix missing properties

* set the action

* Use the $database object

* Add missing class properties

* Fix the domain_name

* Use public scope for domain_uuid and domain_name

* Add missing parameters

* Correct the user_uuid parameter

* Add json_validate and use it in the dashboard
update indentation on functions.php

* Intialize the active_registrations variable

* Define the $parameters

* Set a default value for user_setting_enabled

* Add condition domain_uuid not empty

* Add not empty condition for domain_uuid

* Declare the global variables

* Update how the defaults are set use ??

* Use ?? to set the default values

* Update call_center_queue_edit.php

* Prevent an error

* Add domain_name property

* Fix the null coalescing operator

* Removed domain_uuid from the URL

* Change condition to check sip_profile_domain_name

* Refactor domain_uuid declaration and comments

Removed redundant domain_uuid declaration and updated comments.

* Account for an empty value

* Refactor constructor to use settings array

Updated constructor to accept settings array for domain UUID and database initialization.

* Refactor xml_cdr.php to improve variable organization

Removed duplicate domain_uuid declaration and reorganized private variables for better structure.

* Enhance transcription button logic and icon display

Updated transcription button visibility conditions and improved application icon handling in the call flow summary.

* Refactor settings initialization in domains.php

Updated settings initialization to include domain_uuid and user_uuid.

* Modify domain change condition in require.php

Updated condition to check if 'domain_change' is not empty before proceeding.

* Set default_setting_enabled to true by default

* Enhance domain UUID check in access controls

* Enhance domain UUID check in settings list

* Refactor category display logic in vars.php

* Simplify list row URL generation

Removed domain UUID check from list row URL construction.

* Refactor module category display logic

* Fix SQL query by removing parameters variable

* Initialize result_count variable for call recordings

* Refactor leg variable usage in xml_cdr_details.php

* Update conference_room_edit.php

* Change GET to REQUEST for order and search variables

* Set timezone and SQL time format in recordings.php

Added timezone and SQL time format settings.

* Set default for ring group greeting

* Improve domain UUID check in stream listing

* Handle null voicemail_option_param safely

* Add file existence check for greeting files

Check if greeting file exists before getting size and date.

* Improve domain UUID check in email templates

* Update FIFO strategy dropdown and description text

* Add multilingual agent descriptions

Added multilingual descriptions for agents in the app_languages.php file.

* Add music on hold descriptions

* Add the chime list description

Updated copyright year from 2024 to 2025.

* Fix domain UUID check and handle email subject decoding

* Add null coalescing for $value in email_test.php

Ensure $value is not null by providing a default empty string.

* Handle undefined dialplan_uuid in input field

* Add translations for 'Status' label in multiple languages

* Fix typo in config instance check

---------

Co-authored-by: frytimo <tim@fusionpbx.com>
2025-10-15 21:24:59 -06:00
FusionPBX 2fe8b65988 Define app_name and app_uuid as constants (#7534)
* Set a constant on each class for app_name and app_uuid
* Update the database class to use the app_uuid and app_name
* Update the classes to use the database::new()
* Remove the instances of 'new database'
2025-09-30 21:37:09 -06:00
Alex c7851bedf2 Update event guard widget config (#7533)
* Update event guard widget config

* Update config.php
2025-09-30 11:59:26 -06:00
Alex 18634417fd Dashboard Edit - Correctly display the chart type options (#7465)
* Dashboard Edit - Correctly display the chart type options

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php
2025-08-20 16:20:04 -06:00
FusionPBX b0b3b63cb6 Update the systemd service files 2025-08-19 18:05:40 -06:00
FusionPBX b52ee47c1e Fix the event guard pid file 2025-08-19 17:42:08 -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
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
frytimo 0cf387f306 do not save event_guard logs to transactions (#7254)
Event Guard already has a log table so no need to duplicate the transactions in another table
2025-02-13 09:10:33 -07:00
Alex 9fc82c02cb Add dashboard icon color setting (#7197)
* Add dashboard icon color setting

* Update index.php

* Update app_languages.php

* Update app_defaults.php

* Update app_config.php

* Update dashboard_edit.php

* Update index.php

* Update app_languages.php

* Update app_defaults.php

* Update app_config.php

* Update config.php

* Update domains.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update registrations.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update voicemails.php

* Update config.php

* Update missed_calls.php

* Update recent_calls.php

* Update index.php

* Update index.php

* Update index.php
2024-12-11 21:28:45 -07:00
FusionPBX cd8d5302ac Fix temporary permissions 2024-11-29 13:57:01 -07:00
FusionPBX e4a8efa0b9 Add event guard to the dashboard 2024-09-16 21:20:12 -06:00
FusionPBX 3b1f73f847 Update event_guard.php 2024-08-27 11:09:37 -06:00
FusionPBX d45f6ddae0 Update event guard for freebsd 2024-08-25 19:31:05 -06:00
frytimo 7630056bb8 Remove the unset($database) statements (#7084)
* Remove the unset($database) statements
The database object is a global variable that contains a database object reference and should not be unset.

* Update event_guard.php

* Update event_guard.php

* Update event_guard.php

---------

Co-authored-by: Tim Fry <tim@fusionpbx.com>
Co-authored-by: FusionPBX <markjcrane@gmail.com>
2024-08-06 13:19:45 -06:00
frytimo 3a4c2f72e2 Event socket bug fix and more docs (#6823)
* Add documentation to methods. Use is_resource for added type detection

* Allow connect to specify timeout in microseconds with default 30,000

* Update calling mechanism for event sockets

* Update project for new singleton event sockets

* remove unused variable

* catch errors on closing the socket
2023-12-02 17:16:18 -07:00
fusionate d4f7efa4eb Event Guard: Remove parameters from event_socket connect() method. 2023-09-20 18:50:41 +00:00
fusionate d9d17a6917 Misc: Remove parameters from event_socket_create() calls. 2023-09-20 18:43:17 +00:00
FusionPBX 0011878dcd Use the settings class to get the event socket details 2023-09-14 21:23:27 -06:00
FusionPBX 7a0420f138 Use the settings class to get event_socket details 2023-09-14 21:18:23 -06:00
FusionPBX dcd00c3a15 Find and use the firewall path
Needed as Debian 8 and 9 have a different iptables location than Debian 11
2023-08-23 15:29:04 -06:00
FusionPBX 9a19fb4f82 Add full path to iptables and pfctl
Full path to iptables needed now for Debian 11 since /usr/sbin is no longer in the path by default.
2023-08-23 10:09:24 -06:00
Andy Binder 74bdf82dba Update event_guard.php (#6779) 2023-07-26 14:05:57 -06:00
markjcrane 32051873be Use __dir__ to find resources/require.php 2023-06-16 22:49:09 -06:00
fusionate 1b35623c59 Event Guard [Service]: Updates for PHP 8.1 2023-05-27 18:22:10 +00:00
fusionate 268dd25f6f Event Guard [Class]: Updates for PHP 8.1 2023-05-27 18:21:53 +00:00
frytimo 69bd42af05 remove unneeded destruct methods as GC has higher performance (#6631)
Co-authored-by: Tim Fry <tim@voipstratus.com>
2023-04-27 20:18:53 -06:00
FusionPBX 7d31d6958b User log auto white list for limited time.
This is so that temporary IP addresses are not permanently allowed.
2023-03-29 19:13:10 -06:00
fusionate 9c8f4e9060 Event Guard - Fix Unblock multiple checked. 2023-03-17 21:07:35 +00:00
FusionPBX 440883fba8 Add iptables chain add and exit functions 2022-11-17 21:59:46 -07:00
FusionPBX b004e8f3ba Add message Unable to connect... 2022-10-20 16:07:23 -06:00