Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane James Rose */ //includes include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('system_status_sofia_status') || permission_exists('system_status_sofia_status_profile') || if_group("superadmin")) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //create event socket $socket_ip = $_SESSION['event_socket_ip_address'] != '0.0.0.0' ? $_SESSION['event_socket_ip_address'] : '127.0.0.1'; $fp = event_socket_create($socket_ip, $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); if (!$fp) { message::add($text['error-event-socket'], 'negative', 5000); } //get the gateways $sql = "select g.domain_uuid, g.gateway, g.gateway_uuid, d.domain_name "; $sql .= "from v_gateways as g left "; $sql .= "outer join v_domains as d on d.domain_uuid = g.domain_uuid"; $database = new database; $gateways = $database->select($sql, null, 'all'); unset($sql); //get the sip profiles if ($fp) { $hostname = trim(event_socket_request($fp, 'api switchname')); } $sql = "select sip_profile_uuid, sip_profile_name from v_sip_profiles "; $sql .= "where sip_profile_enabled = 'true' "; if ($hostname) { $sql .= "and (sip_profile_hostname = :sip_profile_hostname "; $sql .= "or sip_profile_hostname = '' "; $sql .= "or sip_profile_hostname is null) "; $parameters['sip_profile_hostname'] = $hostname; } $sql .= "order by sip_profile_name asc "; $database = new database; $rows = $database->select($sql, $parameters, 'all'); if (is_array($rows) && @sizeof($rows) != 0) { foreach ($rows as $row) { $sip_profiles[$row['sip_profile_name']] = $row['sip_profile_uuid']; } } unset($sql, $parameters, $rows, $row); //get status try { $cmd = "api sofia xmlstatus"; $xml_response = trim(event_socket_request($fp, $cmd)); if ($xml_response) { $xml = new SimpleXMLElement($xml_response); } } catch(Exception $e) { $message = $e->getMessage(); message::add($message, 'negative', 5000); } try { $cmd = "api sofia xmlstatus gateway"; $xml_response = trim(event_socket_request($fp, $cmd)); if ($xml_response) { $xml_gateways = new SimpleXMLElement($xml_response); } } catch(Exception $e) { $message = $e->getMessage(); message::add($message, 'negative', 5000); } //define registration object $registration = new registrations; //include the header $document['title'] = $text['title-sip_status']; require_once "resources/header.php"; //show the content echo "
\n"; echo "
".$text['title-sip_status']."
\n"; echo "
\n"; if (permission_exists('system_status_sofia_status')) { echo button::create(['type'=>'button','label'=>$text['button-flush_cache'],'icon'=>'eraser','collapse'=>'hide-xs','link'=>'cmd.php?action=cache-flush']); echo button::create(['type'=>'button','label'=>$text['button-reload_acl'],'icon'=>'shield-alt','collapse'=>'hide-xs','link'=>'cmd.php?action=reloadacl']); echo button::create(['type'=>'button','label'=>$text['button-reload_xml'],'icon'=>'code','collapse'=>'hide-xs','link'=>'cmd.php?action=reloadxml']); } echo button::create(['type'=>'button','label'=>$text['button-refresh'],'icon'=>$_SESSION['theme']['button_icon_refresh'],'collapse'=>'hide-xs','style'=>'margin-left: 15px;','link'=>'sip_status.php']); echo "
\n"; echo "
\n"; echo "
\n"; echo $text['description-sip_status']."\n"; echo "

\n"; if (permission_exists('system_status_sofia_status')) { echo "".$text['title-sofia-status']."\n"; echo "
\n"; echo "
"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; //profiles if ($xml->profile) { foreach ($xml->profile as $row) { unset($list_row_url); $profile_name = (string) $row->name; if (is_uuid($sip_profiles[$profile_name]) && permission_exists('sip_profile_edit')) { $list_row_url = PROJECT_PATH."/app/sip_profiles/sip_profile_edit.php?id=".$sip_profiles[$profile_name]; } echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; } } //gateways if ($xml_gateways->gateway) { foreach ($xml_gateways->gateway as $row) { unset($gateway_name, $gateway_domain_name, $list_row_url); if (is_array($gateways) && @sizeof($gateways) != 0) { foreach($gateways as $field) { if ($field["gateway_uuid"] == strtolower($row->name)) { $gateway_uuid = $field["gateway_uuid"]; $gateway_name = $field["gateway"]; $gateway_domain_name = $field["domain_name"]; break; } } } if ($_SESSION["domain_name"] == $gateway_domain_name) { $list_row_url = PROJECT_PATH."/app/gateways/gateway_edit.php?id=".strtolower(escape($row->name)); } echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; } } //aliases if ($xml->alias) { foreach ($xml->alias as $row) { echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; } } echo "
".$text['label-name']."".$text['label-type']."".$text['label-data']."".$text['label-state']."".$text['label-action']."
"; if ($list_row_url) { echo "".escape($profile_name).""; } else { echo escape($profile_name); } echo " ".($row->type == 'profile' ? $text['label-profile'] : escape($row->type))."".escape($row->data)."".escape($row->state)." 
"; if ($_SESSION["domain_name"] == $gateway_domain_name) { echo "".escape($gateway_name)."@".escape($gateway_domain_name).""; echo "".escape($gateway_name)."@..."; } else if ($gateway_domain_name == '') { echo $gateway_name ? escape($gateway_name) : $row->name; } else { echo escape($gateway_name."@".$gateway_domain_name); } echo " ".$text['label-gateway']."".escape($row->to)."".escape($row->state)."
".escape($row->name)."".escape($row->type)."".escape($row->data)."".escape($row->state)." 
\n"; echo "
\n"; unset($gateways, $xml, $xml_gateways); } //sofia status profile if ($fp && permission_exists('system_status_sofia_status_profile')) { foreach ($sip_profiles as $sip_profile_name => $sip_profile_uuid) { $cmd = "api sofia xmlstatus profile ".$sip_profile_name.""; $xml_response = trim(event_socket_request($fp, $cmd)); if ($xml_response == "Invalid Profile!") { $xml_response = "Invalid Profile!"; $profile_state = 'stopped'; } else { $profile_state = 'running'; } $xml_response = str_replace("", "", $xml_response); $xml_response = str_replace("", "", $xml_response); try { $xml = new SimpleXMLElement($xml_response); } catch(Exception $e) { echo $e->getMessage(); exit; } echo "
\n"; echo " \n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-flush_registrations'],'icon'=>'eraser','collapse'=>'hide-xs','link'=>'cmd.php?profile='.urlencode($sip_profile_name).'&action=flush_inbound_reg']); echo button::create(['type'=>'button','label'=>$text['button-registrations'].' ('.$registration->count($sip_profile_name).')','icon'=>'phone-alt','collapse'=>'hide-xs','link'=>PROJECT_PATH.'/app/registrations/registrations.php?profile='.urlencode($sip_profile_name)]); if ($profile_state == 'stopped') { echo button::create(['type'=>'button','label'=>$text['button-start'],'icon'=>$_SESSION['theme']['button_icon_start'],'collapse'=>'hide-xs','link'=>'cmd.php?profile='.urlencode($sip_profile_name).'&action=start']); } if ($profile_state == 'running') { echo button::create(['type'=>'button','label'=>$text['button-stop'],'icon'=>$_SESSION['theme']['button_icon_stop'],'collapse'=>'hide-xs','link'=>'cmd.php?profile='.urlencode($sip_profile_name).'&action=stop']); } echo button::create(['type'=>'button','label'=>$text['button-restart'],'icon'=>$_SESSION['theme']['button_icon_reload'],'collapse'=>'hide-xs','link'=>'cmd.php?profile='.urlencode($sip_profile_name).'&action=restart']); echo button::create(['type'=>'button','label'=>$text['button-rescan'],'icon'=>$_SESSION['theme']['button_icon_search'],'collapse'=>'hide-xs','link'=>'cmd.php?profile='.urlencode($sip_profile_name).'&action=rescan']); echo "
\n"; echo "
\n"; echo "
\n"; echo ""; unset($xml); } } //status if ($fp && permission_exists('sip_status_switch_status')) { $cmd = "api status"; $response = event_socket_request($fp, $cmd); echo "".$text['title-status']."\n"; echo "
"; echo "
";
		echo trim(escape($response));
		echo "
\n"; echo "
"; fclose($fp); } //include the footer require_once "resources/footer.php"; ?>