mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
* 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>
65 lines
2.5 KiB
PHP
Executable File
65 lines
2.5 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
|
|
/*
|
|
* FusionPBX
|
|
* Version: MPL 1.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is FusionPBX
|
|
*
|
|
* The Initial Developer of the Original Code is
|
|
* Mark J Crane <markjcrane@fusionpbx.com>
|
|
* Portions created by the Initial Developer are Copyright (C) 2008-2025
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Mark J Crane <markjcrane@fusionpbx.com>
|
|
* Tim Fry <tim@fusionpbx.com>
|
|
*/
|
|
|
|
/**
|
|
* The purpose of this file is to subscribe to the switch events and then notify the web socket service of the event.
|
|
*
|
|
* Requirements:
|
|
* - PHP 7.1 or higher
|
|
*
|
|
* When an event is received from the switch, it is sent to the web socket service. The web socket service then
|
|
* broadcasts the event to all subscribers that have subscribed to the service that broadcasted the event. The
|
|
* web socket service only has information about who is connected. Each connection to the web socket service
|
|
* is called a subscriber. Subscribers can be either a service or a web client. When a token is created and
|
|
* given to the subscriber class using the "save_token" method, the subscriber is a web client. When the
|
|
* method used is "save_service_token", the subscriber is still a subscriber but now has elevated privileges.
|
|
* Each service can still subscribe to other events from other services just like regular subscribers. But,
|
|
* services have the added ability to broadcast events to other subscribers.
|
|
*
|
|
* Line 1 of this file allows the script to be executable
|
|
*/
|
|
|
|
if (version_compare(PHP_VERSION, '7.1.0', '<')) {
|
|
die("This script requires PHP 7.1.0 or higher. You are running " . PHP_VERSION . "\n");
|
|
}
|
|
|
|
require_once dirname(__DIR__, 4) . '/resources/require.php';
|
|
|
|
define('SERVICE_NAME', active_calls_service::get_service_name());
|
|
|
|
try {
|
|
$active_calls_service = active_calls_service::create();
|
|
// Exit using whatever status run returns
|
|
exit($active_calls_service->run());
|
|
} catch (Exception $ex) {
|
|
echo "Error occurred in " . $ex->getFile() . ' (' . $ex->getLine() . '):' . $ex->getMessage();
|
|
// Exit with error code
|
|
exit($ex->getCode());
|
|
}
|