Merge branch 'develop' into ent-13085-17271-cifrado-de-contrasena-ldap-en-el-inspector
This commit is contained in:
commit
f32fc84bd3
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.776-240426
|
||||
Version: 7.0NG.776-240429
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.776-240426"
|
||||
pandora_version="7.0NG.776-240429"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -1039,7 +1039,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.776';
|
||||
use constant AGENT_BUILD => '240426';
|
||||
use constant AGENT_BUILD => '240429';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.776"
|
||||
PI_BUILD="240426"
|
||||
PI_BUILD="240429"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{240426}
|
||||
{240429}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.776 Build 240426")
|
||||
#define PANDORA_VERSION ("7.0NG.776 Build 240429")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Pandora FMS"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.776(Build 240426))"
|
||||
VALUE "ProductVersion", "(7.0NG.776(Build 240429))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.776-240426
|
||||
Version: 7.0NG.776-240429
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.776-240426"
|
||||
pandora_version="7.0NG.776-240429"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -75,23 +75,19 @@ if (empty($_REQUEST) === true) {
|
|||
}
|
||||
|
||||
// Hash login process.
|
||||
if (isset($_GET['loginhash']) === true) {
|
||||
$loginhash_data = get_parameter('loginhash_data', '');
|
||||
$loginhash_user = str_rot13(get_parameter('loginhash_user', ''));
|
||||
|
||||
if ($config['loginhash_pwd'] != ''
|
||||
&& $loginhash_data == md5(
|
||||
$loginhash_user.io_output_password($config['loginhash_pwd'])
|
||||
)
|
||||
) {
|
||||
db_logon($loginhash_user, $_SERVER['REMOTE_ADDR']);
|
||||
$_SESSION['id_usuario'] = $loginhash_user;
|
||||
$config['id_user'] = $loginhash_user;
|
||||
if (isset($_POST['auth_token']) === true && (bool) $config['JWT_signature'] !== false) {
|
||||
include_once $config['homedir'].'/include/class/JWTRepository.class.php';
|
||||
$jwt = new JWTRepository($config['JWT_signature']);
|
||||
if ($jwt->setToken($_POST['auth_token']) && $jwt->validate()) {
|
||||
$id_user = $jwt->payload()->get('id_user');
|
||||
db_logon($id_user, $_SERVER['REMOTE_ADDR']);
|
||||
$_SESSION['id_usuario'] = $id_user;
|
||||
$config['id_user'] = $id_user;
|
||||
} else {
|
||||
include_once 'general/login_page.php';
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_USER_REGISTRATION,
|
||||
'Loginhash failed',
|
||||
'Login token failed',
|
||||
'system'
|
||||
);
|
||||
while (ob_get_length() > 0) {
|
||||
|
|
|
@ -28,7 +28,9 @@
|
|||
"php-di/php-di": "^7.0",
|
||||
"zircote/swagger-php": "^4.8",
|
||||
"doctrine/annotations": "^2.0",
|
||||
"ramsey/uuid": "^4.7"
|
||||
"ramsey/uuid": "^4.7",
|
||||
"lcobucci/jwt": "^5.2",
|
||||
"lcobucci/clock": "^3.2"
|
||||
},
|
||||
"repositories": {
|
||||
"phpchartjs": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "0d777bd9c0ca68c9ec0fe911e71b1b2a",
|
||||
"content-hash": "c7549451bb31a635714731144a995123",
|
||||
"packages": [
|
||||
{
|
||||
"name": "amphp/amp",
|
||||
|
@ -1553,6 +1553,143 @@
|
|||
},
|
||||
"time": "2023-11-08T14:08:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "lcobucci/clock",
|
||||
"version": "3.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/lcobucci/clock.git",
|
||||
"reference": "6f28b826ea01306b07980cb8320ab30b966cd715"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/lcobucci/clock/zipball/6f28b826ea01306b07980cb8320ab30b966cd715",
|
||||
"reference": "6f28b826ea01306b07980cb8320ab30b966cd715",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "~8.2.0 || ~8.3.0",
|
||||
"psr/clock": "^1.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/clock-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"infection/infection": "^0.27",
|
||||
"lcobucci/coding-standard": "^11.0.0",
|
||||
"phpstan/extension-installer": "^1.3.1",
|
||||
"phpstan/phpstan": "^1.10.25",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.1.3",
|
||||
"phpstan/phpstan-phpunit": "^1.3.13",
|
||||
"phpstan/phpstan-strict-rules": "^1.5.1",
|
||||
"phpunit/phpunit": "^10.2.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\Clock\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Luís Cobucci",
|
||||
"email": "lcobucci@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Yet another clock abstraction",
|
||||
"support": {
|
||||
"issues": "https://github.com/lcobucci/clock/issues",
|
||||
"source": "https://github.com/lcobucci/clock/tree/3.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/lcobucci",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.patreon.com/lcobucci",
|
||||
"type": "patreon"
|
||||
}
|
||||
],
|
||||
"time": "2023-11-17T17:00:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "lcobucci/jwt",
|
||||
"version": "5.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/lcobucci/jwt.git",
|
||||
"reference": "0ba88aed12c04bd2ed9924f500673f32b67a6211"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/lcobucci/jwt/zipball/0ba88aed12c04bd2ed9924f500673f32b67a6211",
|
||||
"reference": "0ba88aed12c04bd2ed9924f500673f32b67a6211",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-openssl": "*",
|
||||
"ext-sodium": "*",
|
||||
"php": "~8.1.0 || ~8.2.0 || ~8.3.0",
|
||||
"psr/clock": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"infection/infection": "^0.27.0",
|
||||
"lcobucci/clock": "^3.0",
|
||||
"lcobucci/coding-standard": "^11.0",
|
||||
"phpbench/phpbench": "^1.2.9",
|
||||
"phpstan/extension-installer": "^1.2",
|
||||
"phpstan/phpstan": "^1.10.7",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.1.3",
|
||||
"phpstan/phpstan-phpunit": "^1.3.10",
|
||||
"phpstan/phpstan-strict-rules": "^1.5.0",
|
||||
"phpunit/phpunit": "^10.2.6"
|
||||
},
|
||||
"suggest": {
|
||||
"lcobucci/clock": ">= 3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\JWT\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Luís Cobucci",
|
||||
"email": "lcobucci@gmail.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "A simple library to work with JSON Web Token and JSON Web Signature",
|
||||
"keywords": [
|
||||
"JWS",
|
||||
"jwt"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/lcobucci/jwt/issues",
|
||||
"source": "https://github.com/lcobucci/jwt/tree/5.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/lcobucci",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.patreon.com/lcobucci",
|
||||
"type": "patreon"
|
||||
}
|
||||
],
|
||||
"time": "2023-11-20T21:17:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "3.5.0",
|
||||
|
@ -2307,6 +2444,54 @@
|
|||
},
|
||||
"time": "2021-02-03T23:26:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/clock",
|
||||
"version": "1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/clock.git",
|
||||
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
|
||||
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.0 || ^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Clock\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for reading the clock.",
|
||||
"homepage": "https://github.com/php-fig/clock",
|
||||
"keywords": [
|
||||
"clock",
|
||||
"now",
|
||||
"psr",
|
||||
"psr-20",
|
||||
"time"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-fig/clock/issues",
|
||||
"source": "https://github.com/php-fig/clock/tree/1.0.0"
|
||||
},
|
||||
"time": "2022-11-25T14:36:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
"version": "2.0.2",
|
||||
|
@ -4338,5 +4523,5 @@
|
|||
"platform-overrides": {
|
||||
"php": "8.2"
|
||||
},
|
||||
"plugin-api-version": "2.3.0"
|
||||
"plugin-api-version": "2.2.0"
|
||||
}
|
||||
|
|
|
@ -7759,4 +7759,7 @@ SET @short_name = 'pandorafms.proxmox';
|
|||
SELECT @id_app := `id_app` FROM `tdiscovery_apps` WHERE `short_name` = @short_name;
|
||||
UPDATE `tdiscovery_apps_executions` SET `execution` = ''_exec1_' --conf '_tempfileProxmox_'' WHERE `id_app` = @id_app;
|
||||
|
||||
INSERT INTO `tconfig` (`token`, `value`) VALUES ('JWT_signature', 1);
|
||||
DELETE FROM tconfig WHERE `token` = 'loginhash_pwd';
|
||||
|
||||
COMMIT;
|
|
@ -363,20 +363,6 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
$display_counter = 'display:none';
|
||||
}
|
||||
|
||||
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
|
||||
$header_setup .= '<div id="header_logout"><a class="white" href="'.ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup§ion=general').'">';
|
||||
$header_setup .= html_print_image(
|
||||
'images/configuration@svg.svg',
|
||||
true,
|
||||
[
|
||||
'alt' => __('Setup'),
|
||||
'class' => 'bot invert_filter main_menu_icon',
|
||||
'title' => __('Setup'),
|
||||
]
|
||||
);
|
||||
$header_setup .= '</a></div>';
|
||||
}
|
||||
|
||||
$header_autorefresh = '<div id="header_autorefresh">';
|
||||
$header_autorefresh .= $autorefresh_link_open_img;
|
||||
$header_autorefresh .= $autorefresh_img;
|
||||
|
@ -391,6 +377,20 @@ echo sprintf('<div id="header_table" class="header_table_%s">', $menuTypeClass);
|
|||
$header_autorefresh_counter .= '</div>';
|
||||
}
|
||||
|
||||
if ((bool) check_acl($config['id_user'], 0, 'PM') === true) {
|
||||
$header_setup .= '<div id="header_logout"><a class="white" href="'.ui_get_full_url('index.php?sec=general&sec2=godmode/setup/setup§ion=general').'">';
|
||||
$header_setup .= html_print_image(
|
||||
'images/configuration@svg.svg',
|
||||
true,
|
||||
[
|
||||
'alt' => __('Setup'),
|
||||
'class' => 'bot invert_filter main_menu_icon',
|
||||
'title' => __('Setup'),
|
||||
]
|
||||
);
|
||||
$header_setup .= '</a></div>';
|
||||
}
|
||||
|
||||
$modal_box = '<div id="modal_help" class="invisible">
|
||||
<div id="modal-feedback-form" class="invisible"></div>
|
||||
<div id="msg-header" class="invisible"></div>
|
||||
|
|
|
@ -763,7 +763,7 @@ if ($agents !== false) {
|
|||
$agent['id_agente']
|
||||
);
|
||||
$agentViewUrl = sprintf(
|
||||
'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=%s',
|
||||
'index.php?sec=estado&sec2=godmode/agentes/configurar_agente&id_agente=%s',
|
||||
$agent['id_agente']
|
||||
);
|
||||
$agentAlertUrl = sprintf(
|
||||
|
|
|
@ -906,7 +906,8 @@ $table->data[0][] = html_print_label_input_block(
|
|||
false,
|
||||
true,
|
||||
'',
|
||||
$disabled_in_execution
|
||||
$disabled_in_execution,
|
||||
'width: 100%;'
|
||||
)
|
||||
);
|
||||
|
||||
|
@ -939,8 +940,9 @@ $table->data[1][] = html_print_label_input_block(
|
|||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
$disabled_in_execution
|
||||
'w100p',
|
||||
$disabled_in_execution,
|
||||
'width: 100%;'
|
||||
).ui_print_input_placeholder(
|
||||
__('Quiet: Modules will not generate events or fire alerts.').'<br>'.__('Disable Agents: Disables the selected agents.').'<br>'.__('Disable Alerts: Disable alerts for the selected agents.'),
|
||||
true
|
||||
|
@ -964,7 +966,8 @@ $table->data[2][] = html_print_label_input_block(
|
|||
false,
|
||||
true,
|
||||
'',
|
||||
$disabled_in_execution
|
||||
$disabled_in_execution,
|
||||
'width: 100%;'
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
@ -294,10 +294,14 @@ $(document).ready (function () {
|
|||
// configure your validation
|
||||
$("form.add_alert_form").validate({
|
||||
rules: {
|
||||
id_agent_module: { valueNotEquals: "0" }
|
||||
id_agent_module: { valueNotEquals: "0" },
|
||||
template: { valueNotEquals: "0" },
|
||||
id_agent: { valueNotEquals: "" },
|
||||
},
|
||||
messages: {
|
||||
id_agent_module: { valueNotEquals: "Please select an item!" }
|
||||
id_agent_module: { valueNotEquals: "<?php echo __('Please select an item'); ?>!"},
|
||||
template: { valueNotEquals: "<?php echo __('Please select a templete'); ?>!"},
|
||||
id_agent: { valueNotEquals: "<?php echo __('Please select an agent'); ?>!"},
|
||||
}
|
||||
});
|
||||
$("select#template").change (function () {
|
||||
|
|
|
@ -220,7 +220,6 @@ if ($create_alert) {
|
|||
if (is_metaconsole()) {
|
||||
// Restore db connection.
|
||||
metaconsole_restore_db();
|
||||
echo '<script>window.location.assign("index.php?sec=estado&sec2=operation/agentes/alerts_status")</script>';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -154,14 +154,16 @@ $table->data[0][1] = html_print_label_input_block(
|
|||
echo '<span id ="none_text" class="invisible">'.__('None').'</span>';
|
||||
echo "<form id='agentmodules' method='post' action='index.php?sec=reporting&sec2=godmode/reporting/graph_builder&tab=graph_editor&add_module=1&edit_graph=1&id=".$id_graph."'>";
|
||||
|
||||
echo "<table width='100%' cellpadding='4' cellpadding='4' class='databox filters max_floating_element_size'>";
|
||||
echo "<table width='100%' cellpadding='4' cellpadding='4' class='databox filters max_floating_element_size custom-graph-editor'>";
|
||||
echo '<tr>';
|
||||
echo '<td class="w50p pdd_50px" id="select_multiple_modules_filtered">'.html_print_input(
|
||||
[
|
||||
'type' => 'select_multiple_modules_filtered',
|
||||
'uniqId' => 'modules',
|
||||
'class' => 'flex flex-row',
|
||||
'searchBar' => false,
|
||||
'searchBar' => true,
|
||||
'searchBarAgents' => false,
|
||||
'searchBarModules' => true,
|
||||
'placeholderAgents' => __('Search agent name'),
|
||||
]
|
||||
).'</td>';
|
||||
|
|
|
@ -6645,26 +6645,6 @@ function create_custom_graph() {
|
|||
$("#meta_target_servers").css('display', 'inline');
|
||||
}
|
||||
else {
|
||||
var hash_data;
|
||||
var params1 = [];
|
||||
params1.push("get_metaconsole_hash_data=1");
|
||||
params1.push("server_name=" + target_server);
|
||||
params1.push("page=include/ajax/reporting.ajax");
|
||||
jQuery.ajax ({
|
||||
data: params1.join ("&"),
|
||||
type: 'POST',
|
||||
url: action=
|
||||
<?php
|
||||
echo '"'.ui_get_full_url(false, false, false, false).'"';
|
||||
?>
|
||||
+ "/ajax.php",
|
||||
async: false,
|
||||
timeout: 10000,
|
||||
success: function (data) {
|
||||
hash_data = data;
|
||||
}
|
||||
});
|
||||
|
||||
var server_url;
|
||||
var params1 = [];
|
||||
params1.push("get_metaconsole_server_url=1");
|
||||
|
@ -6690,7 +6670,7 @@ function create_custom_graph() {
|
|||
}
|
||||
});
|
||||
|
||||
window.location.href = server_url + "/index.php?sec=reporting&sec2=godmode/reporting/graph_builder&create=Create graph" + hash_data;
|
||||
redirectNode(server_url + "/index.php?sec=reporting&sec2=godmode/reporting/graph_builder&create=Create graph", "_self");
|
||||
}
|
||||
<?php
|
||||
} else {
|
||||
|
@ -6719,31 +6699,6 @@ function edit_custom_graph() {
|
|||
id_server = agent_server_temp[1];
|
||||
}
|
||||
|
||||
var hash_data;
|
||||
var params1 = [];
|
||||
params1.push("get_metaconsole_hash_data=1");
|
||||
params1.push("server_name=" + id_server);
|
||||
params1.push("page=include/ajax/reporting.ajax");
|
||||
jQuery.ajax ({
|
||||
data: params1.join ("&"),
|
||||
type: 'POST',
|
||||
url: action=
|
||||
<?php
|
||||
echo '"'.ui_get_full_url(
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
).'"';
|
||||
?>
|
||||
+ "/ajax.php",
|
||||
async: false,
|
||||
timeout: 10000,
|
||||
success: function (data) {
|
||||
hash_data = data;
|
||||
}
|
||||
});
|
||||
|
||||
var server_url;
|
||||
var params1 = [];
|
||||
params1.push("get_metaconsole_server_url=1");
|
||||
|
@ -6769,7 +6724,7 @@ function edit_custom_graph() {
|
|||
}
|
||||
});
|
||||
|
||||
window.location.href = server_url + "index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&id=" + id_element_graph + hash_data;
|
||||
redirectNode(server_url + "index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&id=" + id_element_graph, "_self");
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
|
|
|
@ -870,7 +870,7 @@ switch ($action) {
|
|||
// ui_pagination($total_reports, $url, $offset, $pagination);
|
||||
$table = new stdClass();
|
||||
$table->id = 'report_list';
|
||||
$table->styleTable = 'margin: 0 10px;';
|
||||
$table->styleTable = '';
|
||||
$table->class = 'info_table';
|
||||
$table->cellpadding = 0;
|
||||
$table->cellspacing = 0;
|
||||
|
|
|
@ -260,9 +260,8 @@ $layoutSizeElements[] = html_print_button(
|
|||
false,
|
||||
'',
|
||||
[
|
||||
'icon' => 'cog',
|
||||
'mode' => 'link',
|
||||
'value' => 'modsize',
|
||||
'class' => 'buttonButton mini',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
@ -275,9 +274,8 @@ $layoutSizeElements[] = html_print_button(
|
|||
false,
|
||||
'',
|
||||
[
|
||||
'icon' => 'cog',
|
||||
'mode' => 'link',
|
||||
'value' => 'modsize',
|
||||
'class' => 'buttonButton mini',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
@ -287,7 +285,7 @@ $table->data[4][] = html_print_label_input_block(
|
|||
__('Layout size'),
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'flex flex-items-center',
|
||||
'class' => 'flex flex-space-around w600px',
|
||||
'content' => implode('', $layoutSizeElements),
|
||||
],
|
||||
true
|
||||
|
|
|
@ -267,18 +267,6 @@ $table->data[$i][] = html_print_label_input_block(
|
|||
);
|
||||
|
||||
$table->data[$i++][] = html_print_label_input_block(
|
||||
__('Auto login (hash) password'),
|
||||
html_print_input_password(
|
||||
'loginhash_pwd',
|
||||
io_output_password($config['loginhash_pwd']),
|
||||
'',
|
||||
15,
|
||||
15,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[$i][] = html_print_label_input_block(
|
||||
__('Time source'),
|
||||
html_print_select(
|
||||
$sources,
|
||||
|
|
|
@ -328,23 +328,6 @@ if (check_login()) {
|
|||
if (isset($array_nodes) && is_array($array_nodes)) {
|
||||
$hash_array_nodes = [];
|
||||
foreach ($array_nodes as $key => $server) {
|
||||
$pwd = $server['auth_token'];
|
||||
$auth_serialized = json_decode($pwd, true);
|
||||
|
||||
if (is_array($auth_serialized)) {
|
||||
$pwd = $auth_serialized['auth_token'];
|
||||
$api_password = $auth_serialized['api_password'];
|
||||
$console_user = $auth_serialized['console_user'];
|
||||
$console_password = $auth_serialized['console_password'];
|
||||
}
|
||||
|
||||
$user = $config['id_user'];
|
||||
$user_rot13 = str_rot13($config['id_user']);
|
||||
$hashdata = $user.$pwd;
|
||||
$hashdata = md5($hashdata);
|
||||
$url_hash = '&loginhash=auto&loginhash_data='.$hashdata.'&loginhash_user='.$user_rot13;
|
||||
|
||||
$hash_array_nodes[$server['id']]['hashurl'] = $url_hash;
|
||||
$hash_array_nodes[$server['id']]['server_url'] = $server['server_url'];
|
||||
}
|
||||
}
|
||||
|
@ -355,7 +338,7 @@ if (check_login()) {
|
|||
$image_status = agents_get_image_status($values['status']);
|
||||
// Link nodes.
|
||||
if (is_metaconsole() === true) {
|
||||
$agent_link = '<a href="'.$hash_array_nodes[$values['id_tmetaconsole_setup']]['server_url'].'/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$values['id_tagente'].$hash_array_nodes[$values['id_tmetaconsole_setup']]['hashurl'].'">';
|
||||
$agent_link = '<a href="#" onclick="redirectNode(\''.$hash_array_nodes[$values['id_tmetaconsole_setup']]['server_url'].'/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$values['id_tagente'].'\')">';
|
||||
$agent_alias = ui_print_truncate_text(
|
||||
$values['alias'],
|
||||
'agent_small',
|
||||
|
|
|
@ -37,7 +37,6 @@ $add_sla = get_parameter('add_sla', 0);
|
|||
$add_general = get_parameter('add_general', 0);
|
||||
$id = get_parameter('id', 0);
|
||||
$truncate_text = get_parameter('truncate_text', 0);
|
||||
$get_metaconsole_hash_data = get_parameter('get_metaconsole_hash_data', 0);
|
||||
$get_metaconsole_server_url = get_parameter('get_metaconsole_server_url', 0);
|
||||
$change_custom_fields_macros_report = (bool) get_parameter(
|
||||
'change_custom_fields_macros_report',
|
||||
|
@ -186,37 +185,6 @@ if ($truncate_text) {
|
|||
return ui_print_truncate_text($text, GENERIC_SIZE_TEXT, true, false);
|
||||
}
|
||||
|
||||
if ($get_metaconsole_hash_data) {
|
||||
$server_name = get_parameter('server_name');
|
||||
|
||||
enterprise_include_once('include/functions_metaconsole.php');
|
||||
|
||||
$server = enterprise_hook('metaconsole_get_connection', [$server_name]);
|
||||
|
||||
// Bad data
|
||||
if (empty($server)) {
|
||||
echo '';
|
||||
return;
|
||||
}
|
||||
|
||||
// Deserialization of auth_token
|
||||
$auth_serialized = json_decode($server['auth_token'], true);
|
||||
|
||||
$auth_token = '';
|
||||
|
||||
if (is_array($auth_serialized)) {
|
||||
$auth_token = $auth_serialized['auth_token'];
|
||||
$api_password = $auth_serialized['api_password'];
|
||||
$console_user = $auth_serialized['console_user'];
|
||||
$console_password = $auth_serialized['console_password'];
|
||||
}
|
||||
|
||||
$url_hash = metaconsole_get_servers_url_hash($server);
|
||||
|
||||
echo $url_hash;
|
||||
return;
|
||||
}
|
||||
|
||||
if ($get_metaconsole_server_url) {
|
||||
$server_name = get_parameter('server_name');
|
||||
|
||||
|
|
|
@ -26,11 +26,14 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
$list_user_tokens = (bool) get_parameter('list_user_tokens');
|
||||
|
||||
if ($list_user_tokens === true) {
|
||||
global $config;
|
||||
require_once $config['homedir'].'/include/class/JWTRepository.class.php';
|
||||
|
||||
$list_user_tokens = (bool) get_parameter('list_user_tokens');
|
||||
$get_jwt_for_login = (bool) get_parameter('get_jwt_for_login', false);
|
||||
|
||||
// Tokens for api 2.0.
|
||||
if ($list_user_tokens === true) {
|
||||
// Datatables offset, limit and order.
|
||||
$filter = get_parameter('filter', []);
|
||||
$page = (int) get_parameter('start', 0);
|
||||
|
@ -162,3 +165,20 @@ if ($list_user_tokens === true) {
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Token for JWT auth in metaconsole.
|
||||
if ($get_jwt_for_login === true) {
|
||||
if (is_metaconsole() === true
|
||||
&& ((bool) users_is_admin($config['id_user']) === true || (bool) can_user_access_node() === true)
|
||||
&& empty($config['JWT_signature']) === false
|
||||
) {
|
||||
$jwtRepository = new JWTRepository($config['JWT_signature']);
|
||||
$token = $jwtRepository->create();
|
||||
echo json_encode(['success' => true, 'data' => $token]);
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'error' => 'User does not have permission or is not a metaconsole.']);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,225 @@
|
|||
<?php
|
||||
/**
|
||||
* Class to JWT.
|
||||
*
|
||||
* @category Class
|
||||
* @package Pandora FMS
|
||||
* @subpackage Token
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2023 Pandora FMS
|
||||
* Please see https://pandorafms.com/community/ for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
use Lcobucci\JWT\Configuration;
|
||||
use Lcobucci\JWT\Encoding\JoseEncoder;
|
||||
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
||||
use Lcobucci\JWT\Signer\Key\InMemory;
|
||||
use Lcobucci\JWT\Token\Parser;
|
||||
use Lcobucci\JWT\Validation\Constraint\SignedWith;
|
||||
use Lcobucci\Clock\SystemClock;
|
||||
use Lcobucci\JWT\Validation\Constraint\StrictValidAt;
|
||||
enterprise_include_once('include/functions_metaconsole.php');
|
||||
|
||||
/**
|
||||
* JWT Repository.
|
||||
*/
|
||||
final class JWTRepository
|
||||
{
|
||||
|
||||
/**
|
||||
* Allowed methods to be called using AJAX request.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $AJAXMethods = ['create'];
|
||||
|
||||
/**
|
||||
* Signature
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $signature;
|
||||
|
||||
/**
|
||||
* Token
|
||||
*
|
||||
* @var Token
|
||||
*/
|
||||
private $token;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $_signature Signature of JWT.
|
||||
*/
|
||||
public function __construct(string $_signature)
|
||||
{
|
||||
$this->signature = $_signature;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if target method is available to be called using AJAX.
|
||||
*
|
||||
* @param string $method Target method.
|
||||
*
|
||||
* @return boolean True allowed, false not.
|
||||
*/
|
||||
public function ajaxMethod($method)
|
||||
{
|
||||
// Check access.
|
||||
check_login();
|
||||
|
||||
return in_array($method, $this->AJAXMethods);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create token
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function create(): string
|
||||
{
|
||||
global $config;
|
||||
try {
|
||||
$sha = new Sha256();
|
||||
$configJWT = Configuration::forSymmetricSigner(
|
||||
$sha,
|
||||
InMemory::plainText($this->signature)
|
||||
);
|
||||
|
||||
$now = new DateTimeImmutable();
|
||||
$token = $configJWT->builder()->issuedAt($now)->canOnlyBeUsedAfter($now)->expiresAt($now->modify('+1 minute'))->withClaim('id_user', $config['id_user'])->getToken($configJWT->signer(), $configJWT->signingKey());
|
||||
|
||||
return $token->toString();
|
||||
} catch (Exception $e) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validate a JWT, USE FIRST setToken().
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function validate():bool
|
||||
{
|
||||
try {
|
||||
$sha = new Sha256();
|
||||
$configJWT = Configuration::forSymmetricSigner(
|
||||
$sha,
|
||||
InMemory::plainText($this->signature)
|
||||
);
|
||||
$signed = new SignedWith($sha, InMemory::plainText($this->signature));
|
||||
$now = new DateTimeZone('UTC');
|
||||
$strictValid = new StrictValidAt(SystemClock::fromUTC());
|
||||
$constraints = [
|
||||
$signed,
|
||||
$strictValid,
|
||||
];
|
||||
return $configJWT->validator()->validate($this->token, ...$constraints);
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get payload of token.
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public function payload():object
|
||||
{
|
||||
return $this->token->claims();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Setting token.
|
||||
*
|
||||
* @param string $tokenString String token to setting.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function setToken(string $tokenString):bool
|
||||
{
|
||||
try {
|
||||
$encoder = new JoseEncoder();
|
||||
$parser = new Parser($encoder);
|
||||
$this->token = $parser->parse($tokenString);
|
||||
return true;
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate random signature.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function generateSignature(): string
|
||||
{
|
||||
return bin2hex(random_bytes(32));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sync the signature with nodes for jwt.
|
||||
*
|
||||
* @param string|null $signature Signature to send nodes.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function syncSignatureWithNodes(?string $signature):void
|
||||
{
|
||||
if (function_exists('metaconsole_get_servers') === true
|
||||
&& function_exists('metaconsole_push_conf_to_node') === true
|
||||
) {
|
||||
$sync_server = 0;
|
||||
$servers = metaconsole_get_servers();
|
||||
foreach ($servers as $server) {
|
||||
$ok_sync = metaconsole_push_conf_to_node(
|
||||
$server,
|
||||
[ 'JWT_signature' => $signature],
|
||||
true
|
||||
);
|
||||
|
||||
if ($ok_sync === true) {
|
||||
$sync_server++;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($servers) === true
|
||||
&& count($servers) === $sync_server
|
||||
&& count($servers) > 0
|
||||
) {
|
||||
config_update_value('JWT_signature', $signature, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -22,7 +22,7 @@ use DI\ContainerBuilder;
|
|||
/*
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC240426';
|
||||
$build_version = 'PC240429';
|
||||
$pandora_version = 'v7.0NG.776';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
@ -185,6 +185,7 @@ if (session_status() === PHP_SESSION_NONE) {
|
|||
|
||||
config_process_config();
|
||||
config_prepare_session();
|
||||
config_prepare_jwt_signature();
|
||||
|
||||
if ((bool) $config['console_log_enabled'] === true) {
|
||||
error_reporting(E_ALL ^ E_NOTICE);
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
// Config functions.
|
||||
require_once __DIR__.'/../vendor/autoload.php';
|
||||
require_once __DIR__.'/functions.php';
|
||||
require_once __DIR__.'/class/JWTRepository.class.php';
|
||||
enterprise_include_once('include/functions_config.php');
|
||||
|
||||
use PandoraFMS\Core\DBMaintainer;
|
||||
|
@ -207,10 +208,6 @@ function config_update_config()
|
|||
$error_update[] = __('Chromium config directory');
|
||||
}
|
||||
|
||||
if (config_update_value('loginhash_pwd', (string) get_parameter('loginhash_pwd'), true, true) === false) {
|
||||
$error_update[] = __('Auto login (hash) password');
|
||||
}
|
||||
|
||||
if (config_update_value('timesource', (string) get_parameter('timesource'), true) === false) {
|
||||
$error_update[] = __('Time source');
|
||||
}
|
||||
|
@ -2226,10 +2223,6 @@ function config_process_config()
|
|||
config_update_value('events_per_query', 5000);
|
||||
}
|
||||
|
||||
if (!isset($config['loginhash_pwd'])) {
|
||||
config_update_value('loginhash_pwd', (rand(0, 1000) * rand(0, 1000)).'pandorahash', false, true);
|
||||
}
|
||||
|
||||
if (!isset($config['trap2agent'])) {
|
||||
config_update_value('trap2agent', 0);
|
||||
}
|
||||
|
@ -2493,6 +2486,10 @@ function config_process_config()
|
|||
config_update_value('number_modules_queue', 500);
|
||||
}
|
||||
|
||||
if (!isset($config['JWT_signature'])) {
|
||||
config_update_value('JWT_signature', 1);
|
||||
}
|
||||
|
||||
if (!isset($config['eastern_eggs_disabled'])) {
|
||||
config_update_value('eastern_eggs_disabled', 1);
|
||||
}
|
||||
|
@ -4226,3 +4223,13 @@ function config_prepare_session()
|
|||
ini_set('post_max_size', $config['max_file_size']);
|
||||
ini_set('upload_max_filesize', $config['max_file_size']);
|
||||
}
|
||||
|
||||
|
||||
function config_prepare_jwt_signature()
|
||||
{
|
||||
global $config;
|
||||
if (is_metaconsole() === true && $config['JWT_signature'] == 1) {
|
||||
$signature = JWTRepository::generateSignature();
|
||||
JWTRepository::syncSignatureWithNodes($signature);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4393,12 +4393,9 @@ function events_page_details($event, $server_id=0)
|
|||
global $config;
|
||||
|
||||
// If metaconsole switch to node to get details and custom fields.
|
||||
$hashstring = '';
|
||||
$serverstring = '';
|
||||
if (is_metaconsole() === true && empty($server_id) === false) {
|
||||
$server = metaconsole_get_connection_by_id($server_id);
|
||||
$hashdata = metaconsole_get_server_hashdata($server);
|
||||
$hashstring = '&loginhash=auto&loginhash_data='.$hashdata.'&loginhash_user='.str_rot13($config['id_user']);
|
||||
$serverstring = $server['server_url'].'/';
|
||||
|
||||
if (metaconsole_connect($server) !== NOERR) {
|
||||
|
@ -4439,28 +4436,7 @@ function events_page_details($event, $server_id=0)
|
|||
true
|
||||
).ui_print_help_tip(__('This agent belongs to metaconsole, is not possible display it'), true);
|
||||
} else if (can_user_access_node() && is_metaconsole()) {
|
||||
// Workaround to pass login hash data in POST body instead of directly in the URL.
|
||||
parse_str($hashstring, $url_hash_array);
|
||||
$redirection_form = "<form id='agent-redirection' method='POST' action='".$serverstring.'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$event['id_agente']."'>";
|
||||
$redirection_form .= html_print_input_hidden(
|
||||
'loginhash',
|
||||
$url_hash_array['loginhash'],
|
||||
true
|
||||
);
|
||||
$redirection_form .= html_print_input_hidden(
|
||||
'loginhash_data',
|
||||
$url_hash_array['loginhash_data'],
|
||||
true
|
||||
);
|
||||
$redirection_form .= html_print_input_hidden(
|
||||
'loginhash_user',
|
||||
$url_hash_array['loginhash_user'],
|
||||
true
|
||||
);
|
||||
$redirection_form .= '</form>';
|
||||
|
||||
$data[1] = $redirection_form;
|
||||
$data[1] .= "<a target=_blank onclick='event.preventDefault(); document.getElementById(\"agent-redirection\").submit();' href='#'>";
|
||||
$data[1] = '<a target=_blank onclick="redirectNode(\''.$serverstring.'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$event['id_agente'].'\')" href="#">';
|
||||
$data[1] .= '<b>'.$agent['alias'].'</b>';
|
||||
$data[1] .= '</a>';
|
||||
} else if (can_user_access_node()) {
|
||||
|
@ -4471,7 +4447,7 @@ function events_page_details($event, $server_id=0)
|
|||
'',
|
||||
false,
|
||||
$serverstring,
|
||||
$hashstring,
|
||||
'',
|
||||
$agent['alias']
|
||||
);
|
||||
} else {
|
||||
|
@ -4604,7 +4580,7 @@ function events_page_details($event, $server_id=0)
|
|||
'id_mg',
|
||||
$id_module_group
|
||||
);
|
||||
$data[1] = '<a href="'.$serverstring.'index.php?sec=view&sec2=operation/agentes/status_monitor&status=-1&modulegroup='.$id_module_group.$hashstring.'">';
|
||||
$data[1] = '<a href="#" onclick="redirectNode(\''.$serverstring.'index.php?sec=view&sec2=operation/agentes/status_monitor&status=-1&modulegroup='.$id_module_group.'\')">';
|
||||
$data[1] .= $module_group;
|
||||
$data[1] .= '</a>';
|
||||
}
|
||||
|
@ -4670,7 +4646,7 @@ function events_page_details($event, $server_id=0)
|
|||
if ($event['id_alert_am'] != 0) {
|
||||
$data = [];
|
||||
$data[0] = '<div class="normal_weight mrgn_lft_20px">'.__('Source').'</div>';
|
||||
$data[1] = '<a href="'.$serverstring.'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$event['id_agente'].'&tab=alert'.$hashstring.'">';
|
||||
$data[1] = '<a href="#" onclick="redirectNode(\''.$serverstring.'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$event['id_agente'].'&tab=alert\')">';
|
||||
$standby = db_get_value('standby', 'talert_template_modules', 'id', $event['id_alert_am']);
|
||||
if (!$standby) {
|
||||
$data[1] .= html_print_image(
|
||||
|
|
|
@ -1686,13 +1686,25 @@ function html_print_select_multiple_modules_filtered(array $data):string
|
|||
);
|
||||
$output .= '</div>';
|
||||
|
||||
$agent_class = '';
|
||||
if (empty($data['searchBar']) === false && $data['searchBar'] === true) {
|
||||
$output .= '<div>';
|
||||
$output .= '<div class="agents-modules-multiple-search-bar">';
|
||||
|
||||
if (isset($data['searchBarAgents']) === false) {
|
||||
$data['searchBarAgents'] = true;
|
||||
}
|
||||
|
||||
if (isset($data['searchBarModules']) === false) {
|
||||
$data['searchBarModules'] = true;
|
||||
}
|
||||
|
||||
if ($data['searchBarAgents'] === true) {
|
||||
$output .= '<div>';
|
||||
$output .= html_print_input(
|
||||
[
|
||||
'type' => 'text',
|
||||
'label_class' => 'font-title-font',
|
||||
'label' => __('Filter agent'),
|
||||
'name' => 'agent-searchBar-'.$uniqId,
|
||||
'onKeyUp' => 'searchAgent(\''.$uniqId.'\')',
|
||||
'placeholder' => __('Type to search agents'),
|
||||
|
@ -1701,11 +1713,18 @@ function html_print_select_multiple_modules_filtered(array $data):string
|
|||
);
|
||||
|
||||
$output .= '</div>';
|
||||
} else {
|
||||
$agent_class = 'custom-graph-editor-agents-module-filter';
|
||||
$output .= '<div></div>';
|
||||
}
|
||||
|
||||
if ($data['searchBarModules'] === true) {
|
||||
$output .= '<div>';
|
||||
$output .= html_print_input(
|
||||
[
|
||||
'type' => 'text',
|
||||
'label_class' => 'font-title-font',
|
||||
'label' => __('Filter module'),
|
||||
'name' => 'module-searchBar-'.$uniqId,
|
||||
'onKeyUp' => 'searchModule(\''.$uniqId.'\')',
|
||||
'return' => true,
|
||||
|
@ -1714,6 +1733,9 @@ function html_print_select_multiple_modules_filtered(array $data):string
|
|||
);
|
||||
|
||||
$output .= '</div>';
|
||||
} else {
|
||||
$output .= '<div></div>';
|
||||
}
|
||||
|
||||
$output .= '</div>';
|
||||
}
|
||||
|
@ -1770,6 +1792,7 @@ function html_print_select_multiple_modules_filtered(array $data):string
|
|||
'style' => 'min-width: 200px;max-width:200px;',
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
|
||||
'placeholder' => (isset($data['placeholderAgents']) === true) ? $data['placeholderAgents'] : '',
|
||||
'input_class' => $agent_class,
|
||||
]
|
||||
);
|
||||
} else {
|
||||
|
@ -1786,6 +1809,7 @@ function html_print_select_multiple_modules_filtered(array $data):string
|
|||
'style' => 'min-width: 200px;max-width:200px;',
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
|
||||
'placeholder' => (isset($data['placeholderAgents']) === true) ? $data['placeholderAgents'] : '',
|
||||
'input_class' => $agent_class,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
@ -1929,7 +1953,7 @@ function html_print_select_multiple_modules_filtered_formated(array $data):strin
|
|||
'return' => true,
|
||||
'nothing' => __('All'),
|
||||
'nothing_value' => 0,
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().', true)',
|
||||
]
|
||||
);
|
||||
$output .= '</div>';
|
||||
|
@ -1965,7 +1989,7 @@ function html_print_select_multiple_modules_filtered_formated(array $data):strin
|
|||
'name' => 'filtered-module-show-common-modules-'.$uniqId,
|
||||
'id' => 'filtered-module-show-common-modules-'.$uniqId,
|
||||
'return' => true,
|
||||
'onchange' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
|
||||
'onchange' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().', true)',
|
||||
]
|
||||
);
|
||||
|
||||
|
@ -2053,7 +2077,7 @@ function html_print_select_multiple_modules_filtered_formated(array $data):strin
|
|||
'return' => true,
|
||||
'multiple' => true,
|
||||
'style' => 'min-width: 200px;max-width:200px;',
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().', true)',
|
||||
'placeholder' => (isset($data['placeholderAgents']) === true) ? $data['placeholderAgents'] : '',
|
||||
'truncate_size' => 300,
|
||||
]
|
||||
|
@ -2070,7 +2094,7 @@ function html_print_select_multiple_modules_filtered_formated(array $data):strin
|
|||
'return' => true,
|
||||
'multiple' => true,
|
||||
'style' => 'min-width: 200px;max-width:200px;',
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().')',
|
||||
'script' => 'fmModuleChange(\''.$uniqId.'\', '.(int) is_metaconsole().', true)',
|
||||
'placeholder' => (isset($data['placeholderAgents']) === true) ? $data['placeholderAgents'] : '',
|
||||
'truncate_size' => 300,
|
||||
]
|
||||
|
|
|
@ -418,12 +418,10 @@ function inventory_get_data(
|
|||
|
||||
// Setting for link the agent with the proper server.
|
||||
if (is_metaconsole() === true && empty($node) === false) {
|
||||
$loginHash = metaconsole_get_servers_url_hash($node);
|
||||
$urlToAgent = sprintf(
|
||||
'%sindex.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=%s%s',
|
||||
'%sindex.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=%s',
|
||||
$node['server_url'],
|
||||
$row['id_agente'],
|
||||
$loginHash
|
||||
$row['id_agente']
|
||||
);
|
||||
} else {
|
||||
$urlToAgent = sprintf(
|
||||
|
@ -440,8 +438,9 @@ function inventory_get_data(
|
|||
|
||||
$table->data[$rowTable][0] = html_print_anchor(
|
||||
[
|
||||
'href' => $urlToAgent,
|
||||
'href' => (is_metaconsole() === true) ? '#' : $urlToAgent,
|
||||
'content' => '<strong>'.$agent_name.'</strong>',
|
||||
'onClick' => (is_metaconsole() === true) ? 'redirectNode(\''.$urlToAgent.'\')' : '',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
|
|
@ -773,13 +773,11 @@ function networkmap_create_agent_node(
|
|||
if (empty($server_data) === true) {
|
||||
$server_name = '';
|
||||
$server_id = '';
|
||||
$url_hash = '';
|
||||
$console_url = '';
|
||||
} else {
|
||||
$server_name = $server_data['server_name'];
|
||||
$server_id = $server_data['id'];
|
||||
$console_url = $server_data['server_url'].'/';
|
||||
$url_hash = metaconsole_get_servers_url_hash($server_data);
|
||||
}
|
||||
|
||||
// Set node status.
|
||||
|
@ -870,7 +868,7 @@ function networkmap_create_agent_node(
|
|||
}
|
||||
|
||||
if (can_user_access_node()) {
|
||||
$url_node_link = ', URL="'.$console_url.'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'].$url_hash.'"';
|
||||
$url_node_link = ', URL="'.$console_url.'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'].'"';
|
||||
} else {
|
||||
$url_node_link = '';
|
||||
}
|
||||
|
|
|
@ -7886,6 +7886,12 @@ function reporting_html_ncm_list($table, $item, $pdf=0)
|
|||
*/
|
||||
function reporting_html_ncm_backups($table, $item, $pdf=0)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if ($config['style'] === 'pandora_black') {
|
||||
ui_require_css_file('pandora_black');
|
||||
}
|
||||
|
||||
ui_require_css_file('diff2html.min');
|
||||
ui_require_css_file('highlight.min');
|
||||
ui_require_css_file('highlight/vs.min');
|
||||
|
|
|
@ -18,13 +18,11 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
|||
if (empty($server_data)) {
|
||||
$server_name = '';
|
||||
$server_id = '';
|
||||
$url_hash = '';
|
||||
$console_url = ui_get_full_url('/');
|
||||
} else {
|
||||
$server_name = $server_data['server_name'];
|
||||
$server_id = $server_data['id'];
|
||||
$console_url = $server_data['server_url'].'/';
|
||||
$url_hash = metaconsole_get_servers_url_hash($server_data);
|
||||
}
|
||||
|
||||
include_once $config['homedir'].'/include/functions_agents.php';
|
||||
|
@ -69,10 +67,11 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
|||
$row['title'] = __('Name');
|
||||
$row['data'] = html_print_anchor(
|
||||
[
|
||||
'href' => $console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$module['id_agente'].'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].$url_hash,
|
||||
'href' => '#',
|
||||
'title' => __('Click here for view this module'),
|
||||
'class' => 'font_11',
|
||||
'content' => $cellName,
|
||||
'onClick' => 'redirectNode(\''.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$module['id_agente'].'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].'\');',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
@ -325,45 +324,9 @@ function treeview_printModuleTable($id_module, $server_data=false, $no_head=fals
|
|||
echo '<div class="actions_treeview flex flex-evenly">';
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
echo "<form id='module-table-redirection' method='POST' action='".$console_url."index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module'>";
|
||||
|
||||
parse_str($url_hash, $url_hash_array);
|
||||
|
||||
html_print_input_hidden(
|
||||
'id_agente',
|
||||
$module['id_agente'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'edit_module',
|
||||
1,
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'id_agent_module',
|
||||
$module['id_agente_modulo'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash',
|
||||
$url_hash_array['loginhash'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash_data',
|
||||
$url_hash_array['loginhash_data'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash_user',
|
||||
$url_hash_array['loginhash_user'],
|
||||
false
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
echo "<a target=_blank onclick='event.preventDefault(); document.getElementById(\"module-table-redirection\").submit();' href='#'>";
|
||||
echo '<a target=_blank onclick="redirectNode(\''.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module&edit_module=1&id_agente='.$module['id_agente'].'&id_agent_module='.$module['id_agente_modulo'].'\')" href="#">';
|
||||
} else {
|
||||
echo '<a target=_blank href="'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$module['id_agente'].'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].$url_hash.'">';
|
||||
echo '<a target=_blank href="'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$module['id_agente'].'&tab=module&edit_module=1&id_agent_module='.$module['id_agente_modulo'].'">';
|
||||
}
|
||||
|
||||
html_print_submit_button(
|
||||
|
@ -399,13 +362,11 @@ function treeview_printAlertsTable($id_module, $server_data=[], $no_head=false)
|
|||
if (empty($server_data)) {
|
||||
$server_name = '';
|
||||
$server_id = '';
|
||||
$url_hash = '';
|
||||
$console_url = '';
|
||||
} else {
|
||||
$server_name = $server_data['server_name'];
|
||||
$server_id = $server_data['id'];
|
||||
$console_url = $server_data['server_url'].'/';
|
||||
$url_hash = metaconsole_get_servers_url_hash($server_data);
|
||||
}
|
||||
|
||||
$user_access_node = can_user_access_node();
|
||||
|
@ -512,7 +473,7 @@ function treeview_printAlertsTable($id_module, $server_data=[], $no_head=false)
|
|||
__('Go to alerts edition'),
|
||||
'upd_button',
|
||||
false,
|
||||
'window.location.assign("'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&search=1&module_name='.$module_name.'&id_agente='.$agent_id.$url_hash.'")',
|
||||
'redirectNode("'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&search=1&module_name='.$module_name.'&id_agente='.$agent_id.'")',
|
||||
['icon' => 'alert'],
|
||||
true
|
||||
),
|
||||
|
@ -533,15 +494,11 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
|||
global $config;
|
||||
|
||||
if (empty($server_data)) {
|
||||
$server_name = '';
|
||||
$server_id = '';
|
||||
$url_hash = '';
|
||||
$console_url = ui_get_full_url('/');
|
||||
} else {
|
||||
$server_name = $server_data['server_name'];
|
||||
$server_id = $server_data['id'];
|
||||
$console_url = $server_data['server_url'].'/';
|
||||
$url_hash = metaconsole_get_servers_url_hash($server_data);
|
||||
}
|
||||
|
||||
include_once $config['homedir'].'/include/functions_agents.php';
|
||||
|
@ -623,15 +580,6 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
|||
$cellName = ((bool) $agent['disabled'] === true) ? '<em>' : '';
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$pwd = $server_data['auth_token'];
|
||||
// Create HASH login info.
|
||||
$user = $config['id_user'];
|
||||
|
||||
// Extract auth token from serialized field.
|
||||
$pwd_deserialiced = json_decode($pwd, true);
|
||||
$hashdata = $user.$pwd_deserialiced['auth_token'];
|
||||
|
||||
$hashdata = md5($hashdata);
|
||||
if ((bool) $grants_on_node === true && (bool) $user_access_node !== false) {
|
||||
$urlAgent = $server_data['server_url'].'/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'];
|
||||
} else {
|
||||
|
@ -657,7 +605,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
|||
'title' => __('Click here for view this agent'),
|
||||
'class' => 'font_11',
|
||||
'content' => $cellName,
|
||||
'onClick' => "sendHash('".$urlAgent."')",
|
||||
'onClick' => "redirectNode('".$urlAgent."')",
|
||||
],
|
||||
true
|
||||
);
|
||||
|
@ -998,7 +946,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
|||
$cluster = PandoraFMS\Cluster::loadFromAgentId(
|
||||
$agent['id_agente']
|
||||
);
|
||||
$buttons_act .= '<a target=_blank href="'.$console_url.'index.php?sec=reporting&sec2=operation/cluster/cluster&op=update&id='.$cluster->id().'">';
|
||||
$buttons_act .= '<a target=_blank href="#" onclick="redirectNode(\''.$console_url.'index.php?sec=reporting&sec2=operation/cluster/cluster&op=update&id='.$cluster->id().'\')">';
|
||||
$buttons_act .= html_print_submit_button(
|
||||
__('Go to cluster edition'),
|
||||
'upd_button',
|
||||
|
@ -1007,7 +955,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
|||
true
|
||||
);
|
||||
} else {
|
||||
$buttons_act .= '<a target=_blank href="'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.$ent.'&tab=module&show_dialog_create=1">';
|
||||
$buttons_act .= '<a target=_blank href="#" onclick="redirectNode(\''.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&show_dialog_create=1\')">';
|
||||
$buttons_act .= html_print_submit_button(
|
||||
__('Go to module creation'),
|
||||
'upd_button',
|
||||
|
@ -1016,7 +964,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
|||
true
|
||||
);
|
||||
|
||||
$buttons_act .= '<a target=_blank href="'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.$ent.'">';
|
||||
$buttons_act .= '<a target=_blank href="#" onclick="redirectNode(\''.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'\')">';
|
||||
$buttons_act .= html_print_submit_button(
|
||||
__('Go to agent edition'),
|
||||
'upd_button',
|
||||
|
@ -1038,11 +986,6 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
|
|||
|
||||
echo "
|
||||
<script>
|
||||
function sendHash(url) {
|
||||
window.open(url+'&loginhash=auto&loginhash_data=".$hashdata.'&loginhash_user='.str_rot13(($user ?? ''))."', '_blank');
|
||||
|
||||
}
|
||||
|
||||
$('.max-graph-tree-view').ready(function() {
|
||||
widthGraph();
|
||||
});
|
||||
|
|
|
@ -1164,16 +1164,10 @@ function ui_format_alert_row(
|
|||
global $config;
|
||||
|
||||
if (!isset($alert['server_data'])) {
|
||||
$server_name = '';
|
||||
$server_id = '';
|
||||
$url_hash = '';
|
||||
$console_url = '';
|
||||
} else {
|
||||
$server_data = $alert['server_data'];
|
||||
$server_name = $server_data['server_name'];
|
||||
$server_id = $server_data['id'];
|
||||
$console_url = $server_data['server_url'].'/';
|
||||
$url_hash = metaconsole_get_servers_url_hash($server_data);
|
||||
}
|
||||
|
||||
$actionText = '';
|
||||
|
@ -1444,13 +1438,13 @@ function ui_format_alert_row(
|
|||
if (is_metaconsole() === true) {
|
||||
// Do not show link if user cannot access node
|
||||
if ((bool) can_user_access_node() === true) {
|
||||
$hashdata = metaconsole_get_server_hashdata($server);
|
||||
$url = $server['server_url'].'/index.php?sec=estado&sec2=operation/agentes/ver_agente&loginhash=auto&loginhash_data='.$hashdata.'&loginhash_user='.str_rot13($config['id_user']).'&id_agente='.$agente['id_agente'];
|
||||
$url = $server['server_url'].'/index.php?sec=estado&sec2=operation/agentes/ver_agente&&id_agente='.$agente['id_agente'];
|
||||
$data[$index['agent_name']] .= html_print_anchor(
|
||||
[
|
||||
'href' => $url,
|
||||
'href' => '#',
|
||||
'content' => '<span class="bolder" title="'.$agente['nombre'].'">'.$agente['alias'].'</span>',
|
||||
'target' => '_blank',
|
||||
'onClick' => 'redirectNode(\''.$url.'\');',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
|
|
@ -1664,7 +1664,7 @@ function visual_map_print_item(
|
|||
echo '<div id="'.$id.'" class="'.$class.'" '.'style="z-index: '.$z_index.';'.'position: absolute; '.'top: '.$top.'px; '.'left: '.$left.'px;'.'display: inline-block; '.$sizeStyle.'">';
|
||||
|
||||
if ($link) {
|
||||
echo "<a href=\"$url\">";
|
||||
echo '<a href="#" onClick="redirectNode(\''.$url.'\')">';
|
||||
}
|
||||
|
||||
// for clean link text from bbdd only edit_visualmap
|
||||
|
|
|
@ -211,7 +211,7 @@ function fmAgentChange(uniqId) {
|
|||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function fmModuleChange(uniqId, isMeta) {
|
||||
function fmModuleChange(uniqId, isMeta, valueID = false) {
|
||||
var idModuleGroup = $("#filtered-module-module-group-" + uniqId).val();
|
||||
var idAgents = $("#filtered-module-agents-" + uniqId).val();
|
||||
var commonSelectorType = $(
|
||||
|
@ -253,7 +253,7 @@ function fmModuleChange(uniqId, isMeta) {
|
|||
.html(value["nombre"]);
|
||||
} else {
|
||||
option
|
||||
.attr("value", id)
|
||||
.attr("value", valueID === false ? value : id)
|
||||
.attr("title", value)
|
||||
.html(value);
|
||||
}
|
||||
|
|
|
@ -2679,7 +2679,6 @@ function perform_email_test() {
|
|||
$("#email_test_sent_message").show();
|
||||
$("#email_test_failure_message").hide();
|
||||
} else {
|
||||
console.log($("#email_test_failure_message"));
|
||||
$("#email_test_failure_message").show();
|
||||
$("#email_test_sent_message").hide();
|
||||
}
|
||||
|
@ -2753,3 +2752,53 @@ function closeAboutModal() {
|
|||
$("#icon_about").removeClass("selected");
|
||||
$("#icon_about_div").removeClass("selected");
|
||||
}
|
||||
|
||||
function redirectNode(url, target = "_blank") {
|
||||
if (
|
||||
typeof event !== "undefined" &&
|
||||
typeof event.preventDefault === "function"
|
||||
) {
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
let pathAjax = "";
|
||||
|
||||
// Detect if view is phone.
|
||||
if (window.configHomeUrl && window.settings && !window.settings.mobile) {
|
||||
pathAjax += window.configHomeUrl;
|
||||
} else if (window.settings && window.settings.mobile) {
|
||||
pathAjax += "../";
|
||||
} else {
|
||||
pathAjax += "../../";
|
||||
}
|
||||
|
||||
pathAjax += "ajax.php";
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: pathAjax,
|
||||
dataType: "json",
|
||||
data: {
|
||||
page: "include/ajax/token",
|
||||
get_jwt_for_login: 1
|
||||
},
|
||||
success: function(data) {
|
||||
const unique_id = "token_form_" + uniqId();
|
||||
var $form = $(
|
||||
`<form class="invisible" id="${unique_id}" target="${target}"></form>`
|
||||
);
|
||||
$form.attr("method", "post");
|
||||
$form.attr("action", url);
|
||||
if (data.success) {
|
||||
var $input = $("<input>")
|
||||
.attr("type", "hidden")
|
||||
.attr("name", "auth_token")
|
||||
.val(data.data);
|
||||
$form.append($input);
|
||||
}
|
||||
|
||||
$("body").append($form);
|
||||
$form.submit();
|
||||
$("#" + unique_id).remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -14222,14 +14222,6 @@ button.ui-button-text-only.ui-widget.sub:hover,
|
|||
box-shadow: none;
|
||||
}
|
||||
|
||||
.black-and-white {
|
||||
filter: saturate(0);
|
||||
}
|
||||
|
||||
.invert_filter.black-and-white {
|
||||
filter: invert(1) saturate(0) !important;
|
||||
}
|
||||
|
||||
div.tox .tox-editor-header {
|
||||
z-index: 1;
|
||||
}
|
||||
|
@ -14278,6 +14270,44 @@ div.fixed-bottom-box.tree-view-bottom-modal {
|
|||
border: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.custom-graph-editor
|
||||
#select_multiple_modules_filtered
|
||||
> div.agents-modules-multiple-search-bar
|
||||
> div {
|
||||
width: 37%;
|
||||
}
|
||||
|
||||
.custom-graph-editor
|
||||
#select_multiple_modules_filtered
|
||||
> div.agents-modules-multiple-search-bar
|
||||
> div
|
||||
> div
|
||||
> input {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.custom-graph-editor
|
||||
#select_multiple_modules_filtered
|
||||
> div.agents-modules-multiple-search-bar
|
||||
> div
|
||||
> div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.custom-graph-editor-agents-module-filter {
|
||||
margin-top: -69px;
|
||||
}
|
||||
|
||||
.custom-graph-editor-agents-module-filter > span.select2.select2-container {
|
||||
height: 189px;
|
||||
}
|
||||
|
||||
.bg-image-none {
|
||||
background-image: none !important;
|
||||
}
|
||||
|
|
|
@ -1136,6 +1136,7 @@ select,
|
|||
.white_table_graph_header {
|
||||
color: var(--text-color) !important;
|
||||
border-radius: 0;
|
||||
background-color: var(--secondary-color) !important;
|
||||
}
|
||||
|
||||
.white_table_graph {
|
||||
|
@ -1477,6 +1478,7 @@ select[multiple] option:checked,
|
|||
select[multiple] option:active,
|
||||
select[multiple] option:hover {
|
||||
background: #008d86 !important;
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
.select2-search.select2-search--dropdown,
|
||||
|
@ -2095,6 +2097,12 @@ select option:checked {
|
|||
filter: invert(1);
|
||||
}
|
||||
|
||||
.d2h-file-list-header,
|
||||
.d2h-file-name-wrapper,
|
||||
.d2h-file-collapse {
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
.grid-stack-item-content {
|
||||
background-color: var(--secondary-color);
|
||||
}
|
||||
|
@ -2106,3 +2114,11 @@ select option:checked {
|
|||
.color_666 {
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
.black-and-white {
|
||||
filter: saturate(0);
|
||||
}
|
||||
|
||||
.invert_filter.black-and-white {
|
||||
filter: invert(1) saturate(0) !important;
|
||||
}
|
||||
|
|
|
@ -756,24 +756,19 @@ if (isset($config['id_user']) === false) {
|
|||
header('Location: '.ui_get_full_url('index.php'.$redirect_url));
|
||||
exit;
|
||||
// Always exit after sending location headers.
|
||||
} else if (isset($_GET['loginhash']) === true || isset($_POST['loginhash']) === true) {
|
||||
// Hash login process.
|
||||
$loginhash_data = get_parameter('loginhash_data', '');
|
||||
$loginhash_user = str_rot13(get_parameter('loginhash_user', ''));
|
||||
|
||||
if ($config['loginhash_pwd'] != ''
|
||||
&& $loginhash_data == md5(
|
||||
$loginhash_user.io_output_password($config['loginhash_pwd'])
|
||||
)
|
||||
) {
|
||||
db_logon($loginhash_user, $_SERVER['REMOTE_ADDR']);
|
||||
$_SESSION['id_usuario'] = $loginhash_user;
|
||||
$config['id_user'] = $loginhash_user;
|
||||
} else if (isset($_POST['auth_token']) === true && (bool) $config['JWT_signature'] !== false) {
|
||||
include_once $config['homedir'].'/include/class/JWTRepository.class.php';
|
||||
$jwt = new JWTRepository($config['JWT_signature']);
|
||||
if ($jwt->setToken($_POST['auth_token']) && $jwt->validate()) {
|
||||
$id_user = $jwt->payload()->get('id_user');
|
||||
db_logon($id_user, $_SERVER['REMOTE_ADDR']);
|
||||
$_SESSION['id_usuario'] = $id_user;
|
||||
$config['id_user'] = $id_user;
|
||||
} else {
|
||||
include_once 'general/login_page.php';
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_USER_REGISTRATION,
|
||||
'Loginhash failed',
|
||||
'Login token failed',
|
||||
'system'
|
||||
);
|
||||
while (ob_get_length() > 0) {
|
||||
|
@ -962,33 +957,17 @@ if (isset($config['id_user']) === false) {
|
|||
exit('</html>');
|
||||
}
|
||||
} else {
|
||||
if (isset($_GET['loginhash_data'])) {
|
||||
$loginhash_data = get_parameter('loginhash_data', '');
|
||||
$loginhash_user = str_rot13(get_parameter('loginhash_user', ''));
|
||||
if (isset($_POST['auth_token']) === true && (bool) $config['JWT_signature'] !== false) {
|
||||
include_once $config['homedir'].'/include/class/JWTRepository.class.php';
|
||||
$jwt = new JWTRepository($config['JWT_signature']);
|
||||
if ($jwt->setToken($_POST['auth_token']) && $jwt->validate()) {
|
||||
$iduser = $_SESSION['id_usuario'];
|
||||
unset($_SESSION['id_usuario']);
|
||||
unset($iduser);
|
||||
|
||||
if ($config['loginhash_pwd'] != ''
|
||||
&& $loginhash_data == md5(
|
||||
$loginhash_user.io_output_password($config['loginhash_pwd'])
|
||||
)
|
||||
) {
|
||||
db_logon($loginhash_user, $_SERVER['REMOTE_ADDR']);
|
||||
$_SESSION['id_usuario'] = $loginhash_user;
|
||||
$config['id_user'] = $loginhash_user;
|
||||
} else {
|
||||
include_once 'general/login_page.php';
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_USER_REGISTRATION,
|
||||
'Loginhash failed',
|
||||
'system'
|
||||
);
|
||||
while (ob_get_length() > 0) {
|
||||
ob_end_flush();
|
||||
}
|
||||
|
||||
exit('</html>');
|
||||
$id_user = $jwt->payload()->get('id_user');
|
||||
db_logon($id_user, $_SERVER['REMOTE_ADDR']);
|
||||
$_SESSION['id_usuario'] = $id_user;
|
||||
$config['id_user'] = $id_user;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.776';
|
||||
$build = '240426';
|
||||
$build = '240429';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
|
|
@ -83,55 +83,37 @@ class User
|
|||
{
|
||||
$system = System::getInstance();
|
||||
|
||||
$loginhash = $system->getRequest('loginhash', null);
|
||||
$autologin = $system->getRequest('autologin', false);
|
||||
$auth_token = $_POST['auth_token'];
|
||||
if ($autologin !== false) {
|
||||
$user = $system->getRequest('user', null);
|
||||
$password = $system->getRequest('password', null);
|
||||
$this->login($user, $password);
|
||||
} else {
|
||||
if (empty($loginhash) === false) {
|
||||
// Hash login process.
|
||||
$loginhash_data = $system->getRequest('loginhash_data', null);
|
||||
$loginhash_user = str_rot13($system->getRequest('loginhash_user', null));
|
||||
$this->login($loginhash_user, null, $loginhash_data);
|
||||
}
|
||||
} else if (empty($auth_token) === false) {
|
||||
$this->login(null, null, $auth_token);
|
||||
}
|
||||
|
||||
return $this->logged;
|
||||
}
|
||||
|
||||
|
||||
public function login($user=null, $password=null, $loginhash_data='')
|
||||
public function login($user=null, $password=null, $auth_token='')
|
||||
{
|
||||
global $config;
|
||||
$system = System::getInstance();
|
||||
|
||||
if (empty($loginhash_data) === false) {
|
||||
if ($config['loginhash_pwd'] != ''
|
||||
&& $loginhash_data == md5(
|
||||
$user.io_output_password(
|
||||
$config['loginhash_pwd']
|
||||
)
|
||||
)
|
||||
if (empty($auth_token) === false && (bool) $config['JWT_signature'] !== false) {
|
||||
$jwt = new JWTRepository($config['JWT_signature']);
|
||||
if ($jwt->setToken($auth_token)
|
||||
&& $jwt->validate()
|
||||
) {
|
||||
$this->logged = true;
|
||||
$this->user = $user;
|
||||
$this->user = $jwt->payload()->get('id_user');
|
||||
$this->loginTime = time();
|
||||
$this->errorLogin = false;
|
||||
$this->saveLogin();
|
||||
} else {
|
||||
include_once 'general/login_page.php';
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_USER_REGISTRATION,
|
||||
'Loginhash failed',
|
||||
'system'
|
||||
);
|
||||
while (ob_get_length() > 0) {
|
||||
ob_end_flush();
|
||||
}
|
||||
|
||||
exit('</html>');
|
||||
$this->logged = false;
|
||||
$this->errorLogin = __('Token invalid');
|
||||
}
|
||||
|
||||
return $this->logged;
|
||||
|
|
|
@ -31,6 +31,7 @@ require_once 'include/user.class.php';
|
|||
* serializing objects stored into the session.
|
||||
*/
|
||||
require_once '../include/config.php';
|
||||
require_once '../include/class/JWTRepository.class.php';
|
||||
|
||||
require_once 'operation/home.php';
|
||||
require_once 'operation/tactical.php';
|
||||
|
|
|
@ -338,7 +338,7 @@ class Services
|
|||
$name .= '<strong class="no-data">'.__('Nonexistent. This element should be deleted').'</strong>';
|
||||
} else {
|
||||
$url = ui_get_full_url('mobile/index.php?page=agent&id='.$item->agent()->id_agente());
|
||||
$name = '<a href="'.$url.'">';
|
||||
$name = '<a href="#" onClick="redirectNode(\''.$url.'\')">';
|
||||
|
||||
if (((bool) $item->module()->disabled()) === true) {
|
||||
$disabled_element = true;
|
||||
|
|
|
@ -1721,26 +1721,8 @@ if (empty($result) === false) {
|
|||
if (in_array('agent', $show_fields) || is_metaconsole()) {
|
||||
$agent_alias = !empty($row['agent_alias']) ? $row['agent_alias'] : $row['agent_name'];
|
||||
|
||||
// TODO: Calculate hash access before to use it more simply like other sections. I.E. Events view
|
||||
if (is_metaconsole() === true) {
|
||||
echo "<form id='agent-redirection-".$inc_id."' method='POST' target='_blank' action='".$row['server_url'].'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$row['id_agent']."'>";
|
||||
html_print_input_hidden(
|
||||
'loginhash',
|
||||
'auto',
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash_data',
|
||||
$row['hashdata'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash_user',
|
||||
str_rot13($row['user']),
|
||||
false
|
||||
);
|
||||
echo '</form>';
|
||||
$agent_link = "<a target='_blank' href='".$row['server_url'].'index.php?sec=estado&sec2=operation/agentes/ver_agente&loginhash=auto&loginhash_data='.$row['hashdata'].'&loginhash_user='.str_rot13($row['user']).'&id_agente='.$row['id_agent']."'>";
|
||||
$agent_link = '<a target="_blank" href="#" onclick="redirectNode(\''.$row['server_url'].'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$row['id_agent'].'\',\'_self\')">';
|
||||
|
||||
$agent_alias = ui_print_truncate_text(
|
||||
$agent_alias,
|
||||
|
@ -1773,18 +1755,20 @@ if (empty($result) === false) {
|
|||
$show_edit_icon = false;
|
||||
}
|
||||
|
||||
$url_edit_module = $row['server_url'].'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$row['id_agent'].'&'.'tab=module&'.'id_agent_module='.$row['id_agente_modulo'].'&'.'edit_module=1'.'&loginhash=auto&loginhash_data='.$row['hashdata'].'&loginhash_user='.str_rot13($row['user']);
|
||||
$url_edit_module = $row['server_url'].'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$row['id_agent'].'&'.'tab=module&'.'id_agent_module='.$row['id_agente_modulo'].'&'.'edit_module=1';
|
||||
} else {
|
||||
$url_edit_module = 'index.php?'.'sec=gagente&'.'sec2=godmode/agentes/configurar_agente&'.'id_agente='.$row['id_agent'].'&'.'tab=module&'.'id_agent_module='.$row['id_agente_modulo'].'&'.'edit_module=1';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$url_edit_module = ($url_edit_module ?? '#');
|
||||
if (in_array('module_name', $show_fields) === true || is_metaconsole() === true) {
|
||||
$data[3] = html_print_anchor(
|
||||
[
|
||||
'target' => '_blank',
|
||||
'href' => ($url_edit_module ?? '#'),
|
||||
'href' => '#',
|
||||
'onClick' => ((is_metaconsole() === true) ? 'redirectNode(\''.$url_edit_module.'\',\'_self\')' : ''),
|
||||
'content' => ui_print_truncate_text($row['module_name'], 'module_small', false, true, true),
|
||||
],
|
||||
true
|
||||
|
@ -2273,43 +2257,12 @@ if (empty($result) === false) {
|
|||
$table->cellclass[][12] = 'table_action_buttons';
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
echo "<form id='agent-edit-redirection-".$inc_id."' target='_blank' method='POST' action='".$row['server_url']."index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module&edit_module=1'>";
|
||||
html_print_input_hidden(
|
||||
'id_agente',
|
||||
$row['id_agent'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'id_agent_module',
|
||||
$row['id_agente_modulo'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash',
|
||||
'auto',
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash_data',
|
||||
$row['hashdata'],
|
||||
false
|
||||
);
|
||||
html_print_input_hidden(
|
||||
'loginhash_user',
|
||||
str_rot13($row['user']),
|
||||
false
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
|
||||
$url_edit_module = $row['server_url'];
|
||||
$url_edit_module .= 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&';
|
||||
$url_edit_module .= '&id_agente='.$row['id_agent'];
|
||||
$url_edit_module .= '&tab=module&id_agent_module='.$row['id_agente_modulo'].'&edit_module=1';
|
||||
$url_edit_module .= '&loginhash=auto&loginhash_data='.$row['hashdata'];
|
||||
$url_edit_module .= '&loginhash_user='.str_rot13($row['user']);
|
||||
|
||||
$agent_link = "<a href='".$url_edit_module."'>";
|
||||
$agent_link = '<a href="#" onclick="redirectNode(\''.$url_edit_module.'\',\'_self\')">';
|
||||
|
||||
$agent_alias = ui_print_truncate_text(
|
||||
$agent_alias,
|
||||
|
@ -2386,9 +2339,13 @@ if (empty($result) === false) {
|
|||
|
||||
$tablePagination = ui_pagination($count_modules, false, $offset, 0, true, 'offset', $show_count);
|
||||
}
|
||||
} else {
|
||||
if (get_parameter('ag_group', false) !== false) {
|
||||
ui_print_info_message(['no_close' => true, 'message' => __('There are no monitors with these features or status')]);
|
||||
} else {
|
||||
ui_print_info_message(['no_close' => true, 'message' => __('Please apply a filter to display the data')]);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($tablePagination) === false) {
|
||||
$tablePagination = '';
|
||||
|
|
|
@ -483,7 +483,6 @@ if (is_ajax() === true) {
|
|||
}
|
||||
|
||||
if (empty($events) === false) {
|
||||
$redirection_form_id = 0;
|
||||
if ((int) $filter['group_rep'] > 0) {
|
||||
$events_comments = [];
|
||||
} else {
|
||||
|
@ -492,7 +491,7 @@ if (is_ajax() === true) {
|
|||
|
||||
$data = array_reduce(
|
||||
$events,
|
||||
function ($carry, $item) use ($table_id, &$redirection_form_id, $filter, $compact_date, $external_url, $compact_name_event, $regex, $events_comments) {
|
||||
function ($carry, $item) use ($table_id, $filter, $compact_date, $external_url, $compact_name_event, $regex, $events_comments) {
|
||||
global $config;
|
||||
|
||||
$tmp = (object) $item;
|
||||
|
@ -500,7 +499,6 @@ if (is_ajax() === true) {
|
|||
|
||||
// phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
|
||||
$server_url = '';
|
||||
$hashdata = '';
|
||||
if ($tmp->meta === true) {
|
||||
if ($tmp->server_name !== null) {
|
||||
$data_server = metaconsole_get_servers(
|
||||
|
@ -512,9 +510,6 @@ if (is_ajax() === true) {
|
|||
&& $data_server !== false
|
||||
) {
|
||||
$server_url = $data_server['server_url'];
|
||||
$hashdata = metaconsole_get_servers_url_hash(
|
||||
$data_server
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1166,40 +1161,18 @@ if (is_ajax() === true) {
|
|||
$url_link = ui_get_full_url(
|
||||
'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='
|
||||
);
|
||||
$url_link_hash = '';
|
||||
|
||||
if ($tmp->meta === true) {
|
||||
$url_link = $server_url;
|
||||
$url_link .= '/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=';
|
||||
$url_link_hash = $hashdata;
|
||||
|
||||
parse_str($url_link_hash, $url_hash_array);
|
||||
|
||||
$redirection_form = "<form id='agent-table-redirection-".$redirection_form_id."' class='invisible' method='POST' action='".$url_link.$tmp->id_agente."'>";
|
||||
$redirection_form .= html_print_input_hidden(
|
||||
'loginhash',
|
||||
$url_hash_array['loginhash'],
|
||||
true
|
||||
);
|
||||
$redirection_form .= html_print_input_hidden(
|
||||
'loginhash_data',
|
||||
$url_hash_array['loginhash_data'],
|
||||
true
|
||||
);
|
||||
$redirection_form .= html_print_input_hidden(
|
||||
'loginhash_user',
|
||||
$url_hash_array['loginhash_user'],
|
||||
true
|
||||
);
|
||||
$redirection_form .= '</form>';
|
||||
}
|
||||
|
||||
// Agent name link.
|
||||
if ($tmp->id_agente > 0) {
|
||||
if ($tmp->meta === true) {
|
||||
$draw_agent_name = $redirection_form;
|
||||
$draw_agent_name .= "<a target=_blank onclick='event.preventDefault(); document.getElementById(\"agent-table-redirection-".$redirection_form_id."\").submit();' href='#'>";
|
||||
$draw_agent_name = '<a target=_blank onclick="redirectNode(\''.$url_link.$tmp->id_agente.'\')" href="#">';
|
||||
} else {
|
||||
$draw_agent_name = '<a href="'.$url_link.$tmp->id_agente.$url_link_hash.'">';
|
||||
$draw_agent_name = '<a href="'.$url_link.$tmp->id_agente.'">';
|
||||
}
|
||||
|
||||
$draw_agent_name .= $tmp->agent_name;
|
||||
|
@ -1212,10 +1185,9 @@ if (is_ajax() === true) {
|
|||
// Agent ID link.
|
||||
if ($tmp->id_agente > 0) {
|
||||
if ($tmp->meta === true) {
|
||||
$draw_agent_id = "<a target=_blank onclick='event.preventDefault(); document.getElementById(\"agent-table-redirection-".$redirection_form_id."\").submit();' href='#'>";
|
||||
$redirection_form_id++;
|
||||
$draw_agent_id = '<a target=_blank onclick="redirectNode(\''.$url_link.$tmp->id_agente.'\')" href="#">';
|
||||
} else {
|
||||
$draw_agent_id = '<a href="'.$url_link.$tmp->id_agente.$url_link_hash.'">';
|
||||
$draw_agent_id = '<a href="'.$url_link.$tmp->id_agente.'">';
|
||||
}
|
||||
|
||||
$draw_agent_id .= $tmp->id_agente;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.776
|
||||
%define release 240426
|
||||
%define release 240429
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -71,7 +71,7 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
|
|||
('trap2agent', '0'),
|
||||
('date_format', 'F j, Y, g:i a'),
|
||||
('event_view_hr', 8),
|
||||
('loginhash_pwd', ''),
|
||||
('JWT_signature', 1),
|
||||
('trap2agent', 0),
|
||||
('prominent_time', 'comparation'),
|
||||
('timesource', 'system'),
|
||||
|
|
|
@ -2,24 +2,6 @@
|
|||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
if (PHP_VERSION_ID < 50600) {
|
||||
if (!headers_sent()) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
}
|
||||
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||
if (!ini_get('display_errors')) {
|
||||
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||
fwrite(STDERR, $err);
|
||||
} elseif (!headers_sent()) {
|
||||
echo $err;
|
||||
}
|
||||
}
|
||||
trigger_error(
|
||||
$err,
|
||||
E_USER_ERROR
|
||||
);
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit94a17e624d873685991e8ae888e00eb9::getLoader();
|
||||
|
|
|
@ -42,9 +42,6 @@ namespace Composer\Autoload;
|
|||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
/** @var \Closure(string):void */
|
||||
private static $includeFile;
|
||||
|
||||
/** @var ?string */
|
||||
private $vendorDir;
|
||||
|
||||
|
@ -109,7 +106,6 @@ class ClassLoader
|
|||
public function __construct($vendorDir = null)
|
||||
{
|
||||
$this->vendorDir = $vendorDir;
|
||||
self::initializeIncludeClosure();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -429,8 +425,7 @@ class ClassLoader
|
|||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
$includeFile = self::$includeFile;
|
||||
$includeFile($file);
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -560,14 +555,6 @@ class ClassLoader
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
private static function initializeIncludeClosure()
|
||||
{
|
||||
if (self::$includeFile !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -577,9 +564,9 @@ class ClassLoader
|
|||
*
|
||||
* @param string $file
|
||||
* @return void
|
||||
* @private
|
||||
*/
|
||||
self::$includeFile = \Closure::bind(static function($file) {
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}, null, null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,14 +21,12 @@ use Composer\Semver\VersionParser;
|
|||
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
||||
*
|
||||
* To require its presence, you can require `composer-runtime-api ^2.0`
|
||||
*
|
||||
* @final
|
||||
*/
|
||||
class InstalledVersions
|
||||
{
|
||||
/**
|
||||
* @var mixed[]|null
|
||||
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
||||
* @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
|
||||
*/
|
||||
private static $installed;
|
||||
|
||||
|
@ -39,7 +37,7 @@ class InstalledVersions
|
|||
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static $installedByVendor = array();
|
||||
|
||||
|
@ -98,7 +96,7 @@ class InstalledVersions
|
|||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (isset($installed['versions'][$packageName])) {
|
||||
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
|
||||
return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -119,7 +117,7 @@ class InstalledVersions
|
|||
*/
|
||||
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||
{
|
||||
$constraint = $parser->parseConstraints((string) $constraint);
|
||||
$constraint = $parser->parseConstraints($constraint);
|
||||
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||
|
||||
return $provided->matches($constraint);
|
||||
|
@ -243,7 +241,7 @@ class InstalledVersions
|
|||
|
||||
/**
|
||||
* @return array
|
||||
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
||||
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
|
||||
*/
|
||||
public static function getRootPackage()
|
||||
{
|
||||
|
@ -257,7 +255,7 @@ class InstalledVersions
|
|||
*
|
||||
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||
* @return array[]
|
||||
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
||||
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
|
||||
*/
|
||||
public static function getRawData()
|
||||
{
|
||||
|
@ -266,7 +264,7 @@ class InstalledVersions
|
|||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C' && is_file(__DIR__ . '/installed.php')) {
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
self::$installed = include __DIR__ . '/installed.php';
|
||||
} else {
|
||||
self::$installed = array();
|
||||
|
@ -280,7 +278,7 @@ class InstalledVersions
|
|||
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||
*
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
public static function getAllRawData()
|
||||
{
|
||||
|
@ -303,7 +301,7 @@ class InstalledVersions
|
|||
* @param array[] $data A vendor/composer/installed.php data set
|
||||
* @return void
|
||||
*
|
||||
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
||||
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
|
||||
*/
|
||||
public static function reload($data)
|
||||
{
|
||||
|
@ -313,7 +311,7 @@ class InstalledVersions
|
|||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static function getInstalled()
|
||||
{
|
||||
|
@ -328,9 +326,7 @@ class InstalledVersions
|
|||
if (isset(self::$installedByVendor[$vendorDir])) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir];
|
||||
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require $vendorDir.'/composer/installed.php';
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = $required;
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
||||
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
||||
self::$installed = $installed[count($installed) - 1];
|
||||
}
|
||||
|
@ -341,18 +337,13 @@ class InstalledVersions
|
|||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C' && is_file(__DIR__ . '/installed.php')) {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require __DIR__ . '/installed.php';
|
||||
self::$installed = $required;
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
self::$installed = require __DIR__ . '/installed.php';
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
if (self::$installed !== array()) {
|
||||
$installed[] = self::$installed;
|
||||
}
|
||||
|
||||
return $installed;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
|
|
|
@ -2,33 +2,28 @@
|
|||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'e8aa6e4b5a1db2f56ae794f1505391a8' => $vendorDir . '/amphp/amp/lib/functions.php',
|
||||
'76cd0796156622033397994f25b0d8fc' => $vendorDir . '/amphp/amp/lib/Internal/functions.php',
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'6cd5651c4fef5ed6b63e8d8b8ffbf3cc' => $vendorDir . '/amphp/byte-stream/lib/functions.php',
|
||||
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
|
||||
'6cd5651c4fef5ed6b63e8d8b8ffbf3cc' => $vendorDir . '/amphp/byte-stream/lib/functions.php',
|
||||
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||
'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
|
||||
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
|
||||
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
|
||||
'3da389f428d8ee50333e4391c3f45046' => $vendorDir . '/amphp/serialization/src/functions.php',
|
||||
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
|
||||
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
|
||||
'8dc56fe697ca93c4b40d876df1c94584' => $vendorDir . '/amphp/process/lib/functions.php',
|
||||
'bcb7d4fc55f4b1a7e10f5806723e9892' => $vendorDir . '/amphp/sync/src/functions.php',
|
||||
'e187e371b30897d6dc51cac6a8c94ff6' => $vendorDir . '/amphp/sync/src/ConcurrentIterator/functions.php',
|
||||
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||
'430de19db8b7ee88fdbe5c545d82d33d' => $vendorDir . '/amphp/parallel/lib/Context/functions.php',
|
||||
'888e1afeed2e8d13ef5a662692091e6e' => $vendorDir . '/amphp/parallel/lib/Sync/functions.php',
|
||||
'384cf4f2eb4d2f896db72315a76066ad' => $vendorDir . '/amphp/parallel/lib/Worker/functions.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
|
||||
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
|
||||
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
|
||||
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||
'861372841bb4b8ba9fdd215894666f40' => $vendorDir . '/amphp/parallel-functions/src/functions.php',
|
||||
'07d7f1a47144818725fd8d91a907ac57' => $vendorDir . '/laminas/laminas-diactoros/src/functions/create_uploaded_file.php',
|
||||
'da94ac5d3ca7d2dbab84ce561ce72bfd' => $vendorDir . '/laminas/laminas-diactoros/src/functions/marshal_headers_from_sapi.php',
|
||||
'3d97c8dcdfba8cb85d3b34f116bb248b' => $vendorDir . '/laminas/laminas-diactoros/src/functions/marshal_method_from_sapi.php',
|
||||
|
@ -36,6 +31,11 @@ return array(
|
|||
'de95e0ac670b27c84ef8c5ac41fc1b34' => $vendorDir . '/laminas/laminas-diactoros/src/functions/normalize_server.php',
|
||||
'b6c2870932b0250c10334a86dcb33c7f' => $vendorDir . '/laminas/laminas-diactoros/src/functions/normalize_uploaded_files.php',
|
||||
'd02cf21124526632320d6f20b1bbf905' => $vendorDir . '/laminas/laminas-diactoros/src/functions/parse_cookie_header.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
|
||||
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
|
||||
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
|
||||
'861372841bb4b8ba9fdd215894666f40' => $vendorDir . '/amphp/parallel-functions/src/functions.php',
|
||||
'db356362850385d08a5381de2638b5fd' => $vendorDir . '/mpdf/mpdf/src/functions.php',
|
||||
'b33e3d135e5d9e47d845c576147bda89' => $vendorDir . '/php-di/php-di/src/functions.php',
|
||||
'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
|
@ -31,6 +31,7 @@ return array(
|
|||
'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-handler/src', $vendorDir . '/psr/http-server-middleware/src'),
|
||||
'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
|
||||
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
|
||||
'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'),
|
||||
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
|
||||
'PandoraFMS\\Enterprise\\' => array($baseDir . '/enterprise/include/lib'),
|
||||
'PandoraFMS\\' => array($baseDir . '/include/lib'),
|
||||
|
@ -42,6 +43,8 @@ return array(
|
|||
'Mpdf\\' => array($vendorDir . '/mpdf/mpdf/src'),
|
||||
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
||||
'Models\\' => array($baseDir . '/include/rest-api/models'),
|
||||
'Lcobucci\\JWT\\' => array($vendorDir . '/lcobucci/jwt/src'),
|
||||
'Lcobucci\\Clock\\' => array($vendorDir . '/lcobucci/clock/src'),
|
||||
'Laravel\\SerializableClosure\\' => array($vendorDir . '/laravel/serializable-closure/src'),
|
||||
'Laminas\\Json\\' => array($vendorDir . '/laminas/laminas-json/src'),
|
||||
'Laminas\\Diactoros\\' => array($vendorDir . '/laminas/laminas-diactoros/src'),
|
||||
|
|
|
@ -25,26 +25,56 @@ class ComposerAutoloaderInit94a17e624d873685991e8ae888e00eb9
|
|||
require __DIR__ . '/platform_check.php';
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit94a17e624d873685991e8ae888e00eb9', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit94a17e624d873685991e8ae888e00eb9', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||
if ($useStaticLoader) {
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit94a17e624d873685991e8ae888e00eb9::getInitializer($loader));
|
||||
} else {
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
$filesToLoad = \Composer\Autoload\ComposerStaticInit94a17e624d873685991e8ae888e00eb9::$files;
|
||||
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
||||
require $file;
|
||||
if ($useStaticLoader) {
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInit94a17e624d873685991e8ae888e00eb9::$files;
|
||||
} else {
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
}
|
||||
}, null, null);
|
||||
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||
$requireFile($fileIdentifier, $file);
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire94a17e624d873685991e8ae888e00eb9($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fileIdentifier
|
||||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
function composerRequire94a17e624d873685991e8ae888e00eb9($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
||||
require $file;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,26 +10,21 @@ class ComposerStaticInit94a17e624d873685991e8ae888e00eb9
|
|||
'e8aa6e4b5a1db2f56ae794f1505391a8' => __DIR__ . '/..' . '/amphp/amp/lib/functions.php',
|
||||
'76cd0796156622033397994f25b0d8fc' => __DIR__ . '/..' . '/amphp/amp/lib/Internal/functions.php',
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'6cd5651c4fef5ed6b63e8d8b8ffbf3cc' => __DIR__ . '/..' . '/amphp/byte-stream/lib/functions.php',
|
||||
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
||||
'6cd5651c4fef5ed6b63e8d8b8ffbf3cc' => __DIR__ . '/..' . '/amphp/byte-stream/lib/functions.php',
|
||||
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||
'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
|
||||
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
|
||||
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
||||
'3da389f428d8ee50333e4391c3f45046' => __DIR__ . '/..' . '/amphp/serialization/src/functions.php',
|
||||
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
|
||||
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
||||
'8dc56fe697ca93c4b40d876df1c94584' => __DIR__ . '/..' . '/amphp/process/lib/functions.php',
|
||||
'bcb7d4fc55f4b1a7e10f5806723e9892' => __DIR__ . '/..' . '/amphp/sync/src/functions.php',
|
||||
'e187e371b30897d6dc51cac6a8c94ff6' => __DIR__ . '/..' . '/amphp/sync/src/ConcurrentIterator/functions.php',
|
||||
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
||||
'430de19db8b7ee88fdbe5c545d82d33d' => __DIR__ . '/..' . '/amphp/parallel/lib/Context/functions.php',
|
||||
'888e1afeed2e8d13ef5a662692091e6e' => __DIR__ . '/..' . '/amphp/parallel/lib/Sync/functions.php',
|
||||
'384cf4f2eb4d2f896db72315a76066ad' => __DIR__ . '/..' . '/amphp/parallel/lib/Worker/functions.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
|
||||
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
|
||||
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
|
||||
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||
'861372841bb4b8ba9fdd215894666f40' => __DIR__ . '/..' . '/amphp/parallel-functions/src/functions.php',
|
||||
'07d7f1a47144818725fd8d91a907ac57' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/create_uploaded_file.php',
|
||||
'da94ac5d3ca7d2dbab84ce561ce72bfd' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/marshal_headers_from_sapi.php',
|
||||
'3d97c8dcdfba8cb85d3b34f116bb248b' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/marshal_method_from_sapi.php',
|
||||
|
@ -37,6 +32,11 @@ class ComposerStaticInit94a17e624d873685991e8ae888e00eb9
|
|||
'de95e0ac670b27c84ef8c5ac41fc1b34' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/normalize_server.php',
|
||||
'b6c2870932b0250c10334a86dcb33c7f' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/normalize_uploaded_files.php',
|
||||
'd02cf21124526632320d6f20b1bbf905' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/parse_cookie_header.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
|
||||
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
|
||||
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
|
||||
'861372841bb4b8ba9fdd215894666f40' => __DIR__ . '/..' . '/amphp/parallel-functions/src/functions.php',
|
||||
'db356362850385d08a5381de2638b5fd' => __DIR__ . '/..' . '/mpdf/mpdf/src/functions.php',
|
||||
'b33e3d135e5d9e47d845c576147bda89' => __DIR__ . '/..' . '/php-di/php-di/src/functions.php',
|
||||
'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
|
||||
|
@ -90,6 +90,7 @@ class ComposerStaticInit94a17e624d873685991e8ae888e00eb9
|
|||
'Psr\\Http\\Server\\' => 16,
|
||||
'Psr\\Http\\Message\\' => 17,
|
||||
'Psr\\Container\\' => 14,
|
||||
'Psr\\Clock\\' => 10,
|
||||
'Psr\\Cache\\' => 10,
|
||||
'PandoraFMS\\Enterprise\\' => 22,
|
||||
'PandoraFMS\\' => 11,
|
||||
|
@ -113,6 +114,8 @@ class ComposerStaticInit94a17e624d873685991e8ae888e00eb9
|
|||
),
|
||||
'L' =>
|
||||
array (
|
||||
'Lcobucci\\JWT\\' => 13,
|
||||
'Lcobucci\\Clock\\' => 15,
|
||||
'Laravel\\SerializableClosure\\' => 28,
|
||||
'Laminas\\Json\\' => 13,
|
||||
'Laminas\\Diactoros\\' => 18,
|
||||
|
@ -271,6 +274,10 @@ class ComposerStaticInit94a17e624d873685991e8ae888e00eb9
|
|||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/container/src',
|
||||
),
|
||||
'Psr\\Clock\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/clock/src',
|
||||
),
|
||||
'Psr\\Cache\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/cache/src',
|
||||
|
@ -315,6 +322,14 @@ class ComposerStaticInit94a17e624d873685991e8ae888e00eb9
|
|||
array (
|
||||
0 => __DIR__ . '/../..' . '/include/rest-api/models',
|
||||
),
|
||||
'Lcobucci\\JWT\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/lcobucci/jwt/src',
|
||||
),
|
||||
'Lcobucci\\Clock\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/lcobucci/clock/src',
|
||||
),
|
||||
'Laravel\\SerializableClosure\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/laravel/serializable-closure/src',
|
||||
|
|
|
@ -1616,6 +1616,149 @@
|
|||
},
|
||||
"install-path": "../laravel/serializable-closure"
|
||||
},
|
||||
{
|
||||
"name": "lcobucci/clock",
|
||||
"version": "3.2.0",
|
||||
"version_normalized": "3.2.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/lcobucci/clock.git",
|
||||
"reference": "6f28b826ea01306b07980cb8320ab30b966cd715"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/lcobucci/clock/zipball/6f28b826ea01306b07980cb8320ab30b966cd715",
|
||||
"reference": "6f28b826ea01306b07980cb8320ab30b966cd715",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "~8.2.0 || ~8.3.0",
|
||||
"psr/clock": "^1.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/clock-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"infection/infection": "^0.27",
|
||||
"lcobucci/coding-standard": "^11.0.0",
|
||||
"phpstan/extension-installer": "^1.3.1",
|
||||
"phpstan/phpstan": "^1.10.25",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.1.3",
|
||||
"phpstan/phpstan-phpunit": "^1.3.13",
|
||||
"phpstan/phpstan-strict-rules": "^1.5.1",
|
||||
"phpunit/phpunit": "^10.2.3"
|
||||
},
|
||||
"time": "2023-11-17T17:00:27+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\Clock\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Luís Cobucci",
|
||||
"email": "lcobucci@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Yet another clock abstraction",
|
||||
"support": {
|
||||
"issues": "https://github.com/lcobucci/clock/issues",
|
||||
"source": "https://github.com/lcobucci/clock/tree/3.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/lcobucci",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.patreon.com/lcobucci",
|
||||
"type": "patreon"
|
||||
}
|
||||
],
|
||||
"install-path": "../lcobucci/clock"
|
||||
},
|
||||
{
|
||||
"name": "lcobucci/jwt",
|
||||
"version": "5.2.0",
|
||||
"version_normalized": "5.2.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/lcobucci/jwt.git",
|
||||
"reference": "0ba88aed12c04bd2ed9924f500673f32b67a6211"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/lcobucci/jwt/zipball/0ba88aed12c04bd2ed9924f500673f32b67a6211",
|
||||
"reference": "0ba88aed12c04bd2ed9924f500673f32b67a6211",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-openssl": "*",
|
||||
"ext-sodium": "*",
|
||||
"php": "~8.1.0 || ~8.2.0 || ~8.3.0",
|
||||
"psr/clock": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"infection/infection": "^0.27.0",
|
||||
"lcobucci/clock": "^3.0",
|
||||
"lcobucci/coding-standard": "^11.0",
|
||||
"phpbench/phpbench": "^1.2.9",
|
||||
"phpstan/extension-installer": "^1.2",
|
||||
"phpstan/phpstan": "^1.10.7",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.1.3",
|
||||
"phpstan/phpstan-phpunit": "^1.3.10",
|
||||
"phpstan/phpstan-strict-rules": "^1.5.0",
|
||||
"phpunit/phpunit": "^10.2.6"
|
||||
},
|
||||
"suggest": {
|
||||
"lcobucci/clock": ">= 3.0"
|
||||
},
|
||||
"time": "2023-11-20T21:17:42+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\JWT\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Luís Cobucci",
|
||||
"email": "lcobucci@gmail.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "A simple library to work with JSON Web Token and JSON Web Signature",
|
||||
"keywords": [
|
||||
"JWS",
|
||||
"jwt"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/lcobucci/jwt/issues",
|
||||
"source": "https://github.com/lcobucci/jwt/tree/5.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/lcobucci",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.patreon.com/lcobucci",
|
||||
"type": "patreon"
|
||||
}
|
||||
],
|
||||
"install-path": "../lcobucci/jwt"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "3.5.0",
|
||||
|
@ -2406,6 +2549,57 @@
|
|||
},
|
||||
"install-path": "../psr/cache"
|
||||
},
|
||||
{
|
||||
"name": "psr/clock",
|
||||
"version": "1.0.0",
|
||||
"version_normalized": "1.0.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/clock.git",
|
||||
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
|
||||
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.0 || ^8.0"
|
||||
},
|
||||
"time": "2022-11-25T14:36:26+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Clock\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for reading the clock.",
|
||||
"homepage": "https://github.com/php-fig/clock",
|
||||
"keywords": [
|
||||
"clock",
|
||||
"now",
|
||||
"psr",
|
||||
"psr-20",
|
||||
"time"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-fig/clock/issues",
|
||||
"source": "https://github.com/php-fig/clock/tree/1.0.0"
|
||||
},
|
||||
"install-path": "../psr/clock"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
"version": "2.0.2",
|
||||
|
|
|
@ -1,328 +1,346 @@
|
|||
<?php return array(
|
||||
'root' => array(
|
||||
'name' => 'pandorafms/console',
|
||||
'pretty_version' => 'dev-develop',
|
||||
'version' => 'dev-develop',
|
||||
'reference' => '8bf414b51f3333555f84df8b23614ca4b68c7fd4',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'reference' => '670829fa5833a6f666ebf4c78669ca6fdac476c9',
|
||||
'name' => 'pandorafms/console',
|
||||
'dev' => true,
|
||||
),
|
||||
'versions' => array(
|
||||
'amphp/amp' => array(
|
||||
'pretty_version' => 'v2.6.2',
|
||||
'version' => '2.6.2.0',
|
||||
'reference' => '9d5100cebffa729aaffecd3ad25dc5aeea4f13bb',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/amp',
|
||||
'aliases' => array(),
|
||||
'reference' => '9d5100cebffa729aaffecd3ad25dc5aeea4f13bb',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'amphp/byte-stream' => array(
|
||||
'pretty_version' => 'v1.8.1',
|
||||
'version' => '1.8.1.0',
|
||||
'reference' => 'acbd8002b3536485c997c4e019206b3f10ca15bd',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/byte-stream',
|
||||
'aliases' => array(),
|
||||
'reference' => 'acbd8002b3536485c997c4e019206b3f10ca15bd',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'amphp/parallel' => array(
|
||||
'pretty_version' => 'v1.4.3',
|
||||
'version' => '1.4.3.0',
|
||||
'reference' => '3aac213ba7858566fd83d38ccb85b91b2d652cb0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/parallel',
|
||||
'aliases' => array(),
|
||||
'reference' => '3aac213ba7858566fd83d38ccb85b91b2d652cb0',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'amphp/parallel-functions' => array(
|
||||
'pretty_version' => 'v1.1.0',
|
||||
'version' => '1.1.0.0',
|
||||
'reference' => '04e92fcacfc921a56dfe12c23b3265e62593a7cb',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/parallel-functions',
|
||||
'aliases' => array(),
|
||||
'reference' => '04e92fcacfc921a56dfe12c23b3265e62593a7cb',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'amphp/parser' => array(
|
||||
'pretty_version' => 'v1.1.0',
|
||||
'version' => '1.1.0.0',
|
||||
'reference' => 'ff1de4144726c5dad5fab97f66692ebe8de3e151',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/parser',
|
||||
'aliases' => array(),
|
||||
'reference' => 'ff1de4144726c5dad5fab97f66692ebe8de3e151',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'amphp/process' => array(
|
||||
'pretty_version' => 'v1.1.4',
|
||||
'version' => '1.1.4.0',
|
||||
'reference' => '76e9495fd6818b43a20167cb11d8a67f7744ee0f',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/process',
|
||||
'aliases' => array(),
|
||||
'reference' => '76e9495fd6818b43a20167cb11d8a67f7744ee0f',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'amphp/serialization' => array(
|
||||
'pretty_version' => 'v1.0.0',
|
||||
'version' => '1.0.0.0',
|
||||
'reference' => '693e77b2fb0b266c3c7d622317f881de44ae94a1',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/serialization',
|
||||
'aliases' => array(),
|
||||
'reference' => '693e77b2fb0b266c3c7d622317f881de44ae94a1',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'amphp/sync' => array(
|
||||
'pretty_version' => 'v1.4.2',
|
||||
'version' => '1.4.2.0',
|
||||
'reference' => '85ab06764f4f36d63b1356b466df6111cf4b89cf',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../amphp/sync',
|
||||
'aliases' => array(),
|
||||
'reference' => '85ab06764f4f36d63b1356b466df6111cf4b89cf',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'artica/phpchartjs' => array(
|
||||
'pretty_version' => 'v1.0.2',
|
||||
'version' => '1.0.2.0',
|
||||
'reference' => '681980c084ad505f9dc811d3d1f02ffc9442ccee',
|
||||
'type' => 'package',
|
||||
'install_path' => __DIR__ . '/../artica/phpchartjs',
|
||||
'aliases' => array(),
|
||||
'reference' => '681980c084ad505f9dc811d3d1f02ffc9442ccee',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'brick/math' => array(
|
||||
'pretty_version' => '0.11.0',
|
||||
'version' => '0.11.0.0',
|
||||
'reference' => '0ad82ce168c82ba30d1c01ec86116ab52f589478',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../brick/math',
|
||||
'aliases' => array(),
|
||||
'reference' => '0ad82ce168c82ba30d1c01ec86116ab52f589478',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'chrome-php/chrome' => array(
|
||||
'pretty_version' => 'v1.10.0',
|
||||
'version' => '1.10.0.0',
|
||||
'reference' => '2b7cb13e618602d13bdede20b6b7ae478f3f6eaa',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../chrome-php/chrome',
|
||||
'aliases' => array(),
|
||||
'reference' => '2b7cb13e618602d13bdede20b6b7ae478f3f6eaa',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'chrome-php/wrench' => array(
|
||||
'pretty_version' => 'v1.5.0',
|
||||
'version' => '1.5.0.0',
|
||||
'reference' => '725246324339e5fd5d798361b561e81004324f96',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../chrome-php/wrench',
|
||||
'aliases' => array(),
|
||||
'reference' => '725246324339e5fd5d798361b561e81004324f96',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'doctrine/annotations' => array(
|
||||
'pretty_version' => '2.0.1',
|
||||
'version' => '2.0.1.0',
|
||||
'reference' => 'e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../doctrine/annotations',
|
||||
'aliases' => array(),
|
||||
'reference' => 'e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'doctrine/deprecations' => array(
|
||||
'pretty_version' => '1.1.3',
|
||||
'version' => '1.1.3.0',
|
||||
'reference' => 'dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../doctrine/deprecations',
|
||||
'aliases' => array(),
|
||||
'reference' => 'dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'doctrine/lexer' => array(
|
||||
'pretty_version' => '2.1.0',
|
||||
'version' => '2.1.0.0',
|
||||
'reference' => '39ab8fcf5a51ce4b85ca97c7a7d033eb12831124',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../doctrine/lexer',
|
||||
'aliases' => array(),
|
||||
'reference' => '39ab8fcf5a51ce4b85ca97c7a7d033eb12831124',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'egulias/email-validator' => array(
|
||||
'pretty_version' => '3.2.6',
|
||||
'version' => '3.2.6.0',
|
||||
'reference' => 'e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../egulias/email-validator',
|
||||
'aliases' => array(),
|
||||
'reference' => 'e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'evenement/evenement' => array(
|
||||
'pretty_version' => 'v3.0.2',
|
||||
'version' => '3.0.2.0',
|
||||
'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../evenement/evenement',
|
||||
'aliases' => array(),
|
||||
'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'fig/http-message-util' => array(
|
||||
'pretty_version' => '1.1.5',
|
||||
'version' => '1.1.5.0',
|
||||
'reference' => '9d94dc0154230ac39e5bf89398b324a86f63f765',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../fig/http-message-util',
|
||||
'aliases' => array(),
|
||||
'reference' => '9d94dc0154230ac39e5bf89398b324a86f63f765',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'guzzlehttp/psr7' => array(
|
||||
'pretty_version' => '2.6.2',
|
||||
'version' => '2.6.2.0',
|
||||
'reference' => '45b30f99ac27b5ca93cb4831afe16285f57b8221',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../guzzlehttp/psr7',
|
||||
'aliases' => array(),
|
||||
'reference' => '45b30f99ac27b5ca93cb4831afe16285f57b8221',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'halfpastfouram/collection' => array(
|
||||
'pretty_version' => 'v1.0.0',
|
||||
'version' => '1.0.0.0',
|
||||
'reference' => '0862d0b431fef9dc2245518dc06b86ff00dcd102',
|
||||
'type' => 'package',
|
||||
'install_path' => __DIR__ . '/../halfpastfouram/collection',
|
||||
'aliases' => array(),
|
||||
'reference' => '0862d0b431fef9dc2245518dc06b86ff00dcd102',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'laminas/laminas-diactoros' => array(
|
||||
'pretty_version' => '3.3.0',
|
||||
'version' => '3.3.0.0',
|
||||
'reference' => '4db52734837c60259c9b2d7caf08eef8f7f9b9ac',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../laminas/laminas-diactoros',
|
||||
'aliases' => array(),
|
||||
'reference' => '4db52734837c60259c9b2d7caf08eef8f7f9b9ac',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'laminas/laminas-json' => array(
|
||||
'pretty_version' => '3.6.0',
|
||||
'version' => '3.6.0.0',
|
||||
'reference' => '53ff787b20b77197f38680c737e8dfffa846b85b',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../laminas/laminas-json',
|
||||
'aliases' => array(),
|
||||
'reference' => '53ff787b20b77197f38680c737e8dfffa846b85b',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'laravel/serializable-closure' => array(
|
||||
'pretty_version' => 'v1.3.3',
|
||||
'version' => '1.3.3.0',
|
||||
'reference' => '3dbf8a8e914634c48d389c1234552666b3d43754',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../laravel/serializable-closure',
|
||||
'aliases' => array(),
|
||||
'reference' => '3dbf8a8e914634c48d389c1234552666b3d43754',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'lcobucci/clock' => array(
|
||||
'pretty_version' => '3.2.0',
|
||||
'version' => '3.2.0.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../lcobucci/clock',
|
||||
'aliases' => array(),
|
||||
'reference' => '6f28b826ea01306b07980cb8320ab30b966cd715',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'lcobucci/jwt' => array(
|
||||
'pretty_version' => '5.2.0',
|
||||
'version' => '5.2.0.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../lcobucci/jwt',
|
||||
'aliases' => array(),
|
||||
'reference' => '0ba88aed12c04bd2ed9924f500673f32b67a6211',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'monolog/monolog' => array(
|
||||
'pretty_version' => '3.5.0',
|
||||
'version' => '3.5.0.0',
|
||||
'reference' => 'c915e2634718dbc8a4a15c61b0e62e7a44e14448',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../monolog/monolog',
|
||||
'aliases' => array(),
|
||||
'reference' => 'c915e2634718dbc8a4a15c61b0e62e7a44e14448',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'mpdf/mpdf' => array(
|
||||
'pretty_version' => 'v8.2.2',
|
||||
'version' => '8.2.2.0',
|
||||
'reference' => '596a87b876d7793be7be060a8ac13424de120dd5',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../mpdf/mpdf',
|
||||
'aliases' => array(),
|
||||
'reference' => '596a87b876d7793be7be060a8ac13424de120dd5',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'mpdf/psr-http-message-shim' => array(
|
||||
'pretty_version' => '1.0.0',
|
||||
'version' => '1.0.0.0',
|
||||
'reference' => '3206e6b80b6d2479e148ee497e9f2bebadc919db',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../mpdf/psr-http-message-shim',
|
||||
'aliases' => array(),
|
||||
'reference' => '3206e6b80b6d2479e148ee497e9f2bebadc919db',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'mpdf/psr-log-aware-trait' => array(
|
||||
'pretty_version' => 'v3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => 'a633da6065e946cc491e1c962850344bb0bf3e78',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../mpdf/psr-log-aware-trait',
|
||||
'aliases' => array(),
|
||||
'reference' => 'a633da6065e946cc491e1c962850344bb0bf3e78',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'myclabs/deep-copy' => array(
|
||||
'pretty_version' => '1.11.1',
|
||||
'version' => '1.11.1.0',
|
||||
'reference' => '7284c22080590fb39f2ffa3e9057f10a4ddd0e0c',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../myclabs/deep-copy',
|
||||
'aliases' => array(),
|
||||
'reference' => '7284c22080590fb39f2ffa3e9057f10a4ddd0e0c',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'nikic/fast-route' => array(
|
||||
'pretty_version' => 'v1.3.0',
|
||||
'version' => '1.3.0.0',
|
||||
'reference' => '181d480e08d9476e61381e04a71b34dc0432e812',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../nikic/fast-route',
|
||||
'aliases' => array(),
|
||||
'reference' => '181d480e08d9476e61381e04a71b34dc0432e812',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'nyholm/psr7' => array(
|
||||
'pretty_version' => '1.8.1',
|
||||
'version' => '1.8.1.0',
|
||||
'reference' => 'aa5fc277a4f5508013d571341ade0c3886d4d00e',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../nyholm/psr7',
|
||||
'aliases' => array(),
|
||||
'reference' => 'aa5fc277a4f5508013d571341ade0c3886d4d00e',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'nyholm/psr7-server' => array(
|
||||
'pretty_version' => '1.1.0',
|
||||
'version' => '1.1.0.0',
|
||||
'reference' => '4335801d851f554ca43fa6e7d2602141538854dc',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../nyholm/psr7-server',
|
||||
'aliases' => array(),
|
||||
'reference' => '4335801d851f554ca43fa6e7d2602141538854dc',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'pandorafms/console' => array(
|
||||
'pretty_version' => 'dev-develop',
|
||||
'version' => 'dev-develop',
|
||||
'reference' => '8bf414b51f3333555f84df8b23614ca4b68c7fd4',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'reference' => '670829fa5833a6f666ebf4c78669ca6fdac476c9',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'paragonie/random_compat' => array(
|
||||
'pretty_version' => 'v9.99.100',
|
||||
'version' => '9.99.100.0',
|
||||
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../paragonie/random_compat',
|
||||
'aliases' => array(),
|
||||
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'php-di/invoker' => array(
|
||||
'pretty_version' => '2.3.4',
|
||||
'version' => '2.3.4.0',
|
||||
'reference' => '33234b32dafa8eb69202f950a1fc92055ed76a86',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../php-di/invoker',
|
||||
'aliases' => array(),
|
||||
'reference' => '33234b32dafa8eb69202f950a1fc92055ed76a86',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'php-di/php-di' => array(
|
||||
'pretty_version' => '7.0.6',
|
||||
'version' => '7.0.6.0',
|
||||
'reference' => '8097948a89f6ec782839b3e958432f427cac37fd',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../php-di/php-di',
|
||||
'aliases' => array(),
|
||||
'reference' => '8097948a89f6ec782839b3e958432f427cac37fd',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'php-http/message-factory-implementation' => array(
|
||||
|
@ -334,19 +352,34 @@
|
|||
'psr/cache' => array(
|
||||
'pretty_version' => '3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/cache',
|
||||
'aliases' => array(),
|
||||
'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/clock' => array(
|
||||
'pretty_version' => '1.0.0',
|
||||
'version' => '1.0.0.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/clock',
|
||||
'aliases' => array(),
|
||||
'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/clock-implementation' => array(
|
||||
'dev_requirement' => false,
|
||||
'provided' => array(
|
||||
0 => '1.0',
|
||||
),
|
||||
),
|
||||
'psr/container' => array(
|
||||
'pretty_version' => '2.0.2',
|
||||
'version' => '2.0.2.0',
|
||||
'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/container',
|
||||
'aliases' => array(),
|
||||
'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/container-implementation' => array(
|
||||
|
@ -358,10 +391,10 @@
|
|||
'psr/http-factory' => array(
|
||||
'pretty_version' => '1.0.2',
|
||||
'version' => '1.0.2.0',
|
||||
'reference' => 'e616d01114759c4c489f93b099585439f795fe35',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/http-factory',
|
||||
'aliases' => array(),
|
||||
'reference' => 'e616d01114759c4c489f93b099585439f795fe35',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/http-factory-implementation' => array(
|
||||
|
@ -374,10 +407,10 @@
|
|||
'psr/http-message' => array(
|
||||
'pretty_version' => '1.1',
|
||||
'version' => '1.1.0.0',
|
||||
'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/http-message',
|
||||
'aliases' => array(),
|
||||
'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/http-message-implementation' => array(
|
||||
|
@ -390,28 +423,28 @@
|
|||
'psr/http-server-handler' => array(
|
||||
'pretty_version' => '1.0.2',
|
||||
'version' => '1.0.2.0',
|
||||
'reference' => '84c4fb66179be4caaf8e97bd239203245302e7d4',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/http-server-handler',
|
||||
'aliases' => array(),
|
||||
'reference' => '84c4fb66179be4caaf8e97bd239203245302e7d4',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/http-server-middleware' => array(
|
||||
'pretty_version' => '1.0.2',
|
||||
'version' => '1.0.2.0',
|
||||
'reference' => 'c1481f747daaa6a0782775cd6a8c26a1bf4a3829',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/http-server-middleware',
|
||||
'aliases' => array(),
|
||||
'reference' => 'c1481f747daaa6a0782775cd6a8c26a1bf4a3829',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/log' => array(
|
||||
'pretty_version' => '3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../psr/log',
|
||||
'aliases' => array(),
|
||||
'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'psr/log-implementation' => array(
|
||||
|
@ -423,28 +456,28 @@
|
|||
'ralouphie/getallheaders' => array(
|
||||
'pretty_version' => '3.0.3',
|
||||
'version' => '3.0.3.0',
|
||||
'reference' => '120b605dfeb996808c31b6477290a714d356e822',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../ralouphie/getallheaders',
|
||||
'aliases' => array(),
|
||||
'reference' => '120b605dfeb996808c31b6477290a714d356e822',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'ramsey/collection' => array(
|
||||
'pretty_version' => '2.0.0',
|
||||
'version' => '2.0.0.0',
|
||||
'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../ramsey/collection',
|
||||
'aliases' => array(),
|
||||
'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'ramsey/uuid' => array(
|
||||
'pretty_version' => '4.7.5',
|
||||
'version' => '4.7.5.0',
|
||||
'reference' => '5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../ramsey/uuid',
|
||||
'aliases' => array(),
|
||||
'reference' => '5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'rhumsaa/uuid' => array(
|
||||
|
@ -456,172 +489,172 @@
|
|||
'setasign/fpdi' => array(
|
||||
'pretty_version' => 'v2.6.0',
|
||||
'version' => '2.6.0.0',
|
||||
'reference' => 'a6db878129ec6c7e141316ee71872923e7f1b7ad',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../setasign/fpdi',
|
||||
'aliases' => array(),
|
||||
'reference' => 'a6db878129ec6c7e141316ee71872923e7f1b7ad',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'slim/psr7' => array(
|
||||
'pretty_version' => '1.6.1',
|
||||
'version' => '1.6.1.0',
|
||||
'reference' => '72d2b2bac94ab4575d369f605dbfafbe168d3163',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../slim/psr7',
|
||||
'aliases' => array(),
|
||||
'reference' => '72d2b2bac94ab4575d369f605dbfafbe168d3163',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'slim/slim' => array(
|
||||
'pretty_version' => '4.12.0',
|
||||
'version' => '4.12.0.0',
|
||||
'reference' => 'e9e99c2b24398b967841c6c4c3048622cc7e2b18',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../slim/slim',
|
||||
'aliases' => array(),
|
||||
'reference' => 'e9e99c2b24398b967841c6c4c3048622cc7e2b18',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'swiftmailer/swiftmailer' => array(
|
||||
'pretty_version' => 'v6.3.0',
|
||||
'version' => '6.3.0.0',
|
||||
'reference' => '8a5d5072dca8f48460fce2f4131fcc495eec654c',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../swiftmailer/swiftmailer',
|
||||
'aliases' => array(),
|
||||
'reference' => '8a5d5072dca8f48460fce2f4131fcc495eec654c',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/deprecation-contracts' => array(
|
||||
'pretty_version' => 'v3.4.0',
|
||||
'version' => '3.4.0.0',
|
||||
'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
|
||||
'aliases' => array(),
|
||||
'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/filesystem' => array(
|
||||
'pretty_version' => 'v7.0.3',
|
||||
'version' => '7.0.3.0',
|
||||
'reference' => '2890e3a825bc0c0558526c04499c13f83e1b6b12',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/filesystem',
|
||||
'aliases' => array(),
|
||||
'reference' => '2890e3a825bc0c0558526c04499c13f83e1b6b12',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/finder' => array(
|
||||
'pretty_version' => 'v7.0.0',
|
||||
'version' => '7.0.0.0',
|
||||
'reference' => '6e5688d69f7cfc4ed4a511e96007e06c2d34ce56',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/finder',
|
||||
'aliases' => array(),
|
||||
'reference' => '6e5688d69f7cfc4ed4a511e96007e06c2d34ce56',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-ctype' => array(
|
||||
'pretty_version' => 'v1.28.0',
|
||||
'version' => '1.28.0.0',
|
||||
'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
|
||||
'aliases' => array(),
|
||||
'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-iconv' => array(
|
||||
'pretty_version' => 'v1.28.0',
|
||||
'version' => '1.28.0.0',
|
||||
'reference' => '6de50471469b8c9afc38164452ab2b6170ee71c1',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-iconv',
|
||||
'aliases' => array(),
|
||||
'reference' => '6de50471469b8c9afc38164452ab2b6170ee71c1',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-intl-idn' => array(
|
||||
'pretty_version' => 'v1.28.0',
|
||||
'version' => '1.28.0.0',
|
||||
'reference' => 'ecaafce9f77234a6a449d29e49267ba10499116d',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
|
||||
'aliases' => array(),
|
||||
'reference' => 'ecaafce9f77234a6a449d29e49267ba10499116d',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-intl-normalizer' => array(
|
||||
'pretty_version' => 'v1.28.0',
|
||||
'version' => '1.28.0.0',
|
||||
'reference' => '8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
|
||||
'aliases' => array(),
|
||||
'reference' => '8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-mbstring' => array(
|
||||
'pretty_version' => 'v1.28.0',
|
||||
'version' => '1.28.0.0',
|
||||
'reference' => '42292d99c55abe617799667f454222c54c60e229',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
|
||||
'aliases' => array(),
|
||||
'reference' => '42292d99c55abe617799667f454222c54c60e229',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-php72' => array(
|
||||
'pretty_version' => 'v1.28.0',
|
||||
'version' => '1.28.0.0',
|
||||
'reference' => '70f4aebd92afca2f865444d30a4d2151c13c3179',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-php72',
|
||||
'aliases' => array(),
|
||||
'reference' => '70f4aebd92afca2f865444d30a4d2151c13c3179',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-php80' => array(
|
||||
'pretty_version' => 'v1.28.0',
|
||||
'version' => '1.28.0.0',
|
||||
'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-php80',
|
||||
'aliases' => array(),
|
||||
'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/process' => array(
|
||||
'pretty_version' => 'v7.0.3',
|
||||
'version' => '7.0.3.0',
|
||||
'reference' => '937a195147e0c27b2759ade834169ed006d0bc74',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/process',
|
||||
'aliases' => array(),
|
||||
'reference' => '937a195147e0c27b2759ade834169ed006d0bc74',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/var-dumper' => array(
|
||||
'pretty_version' => 'v3.4.47',
|
||||
'version' => '3.4.47.0',
|
||||
'reference' => '0719f6cf4633a38b2c1585140998579ce23b4b7d',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/var-dumper',
|
||||
'aliases' => array(),
|
||||
'reference' => '0719f6cf4633a38b2c1585140998579ce23b4b7d',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/yaml' => array(
|
||||
'pretty_version' => 'v7.0.3',
|
||||
'version' => '7.0.3.0',
|
||||
'reference' => '2d4fca631c00700597e9442a0b2451ce234513d3',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/yaml',
|
||||
'aliases' => array(),
|
||||
'reference' => '2d4fca631c00700597e9442a0b2451ce234513d3',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'tinymce/tinymce' => array(
|
||||
'pretty_version' => '6.8.2',
|
||||
'version' => '6.8.2.0',
|
||||
'reference' => 'b0073db409746748af4fc06fbee337bb99f462d9',
|
||||
'type' => 'component',
|
||||
'install_path' => __DIR__ . '/../tinymce/tinymce',
|
||||
'aliases' => array(),
|
||||
'reference' => 'b0073db409746748af4fc06fbee337bb99f462d9',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'zircote/swagger-php' => array(
|
||||
'pretty_version' => '4.8.3',
|
||||
'version' => '4.8.3.0',
|
||||
'reference' => '598958d8a83cfbd44ba36388b2f9ed69e8b86ed4',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../zircote/swagger-php',
|
||||
'aliases' => array(),
|
||||
'reference' => '598958d8a83cfbd44ba36388b2f9ed69e8b86ed4',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -16,35 +16,7 @@ if ($issues) {
|
|||
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
|
||||
} elseif (!headers_sent()) {
|
||||
require_once __DIR__.'/../../include/functions_ui.php';
|
||||
|
||||
$url = str_replace('/var/www/html/', '', __DIR__);
|
||||
$url = str_replace('/vendor/composer', '', $url);
|
||||
|
||||
echo '<link rel="stylesheet" type="text/css" href="include/styles/pandora.css">';
|
||||
?>
|
||||
|
||||
<style>
|
||||
body {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php
|
||||
|
||||
$random_backgrounds = scandir('/var/www/html/'.$url. '/images/backgrounds/random_backgrounds');
|
||||
unset($random_backgrounds[0], $random_backgrounds[1]);
|
||||
$random_background = array_rand($random_backgrounds);
|
||||
|
||||
echo '<div style="width:100%;min-height: 100%;position: absolute; display:flex;align-items:center;justify-content:center;background-size:cover !important; background-position: center: !important; background: linear-gradient(rgba(255, 255, 255, .20), rgba(255, 255, 255, .20)), url('.$url. '/../images/backgrounds/random_backgrounds/'.$random_backgrounds[$random_background].');">';
|
||||
echo '<center><div align="middle" class="license_databox w600px pdd_10px" style="background-color: white;">';
|
||||
echo '<img style="width: 500px; margin-top: 30px;" src="images/custom_logo/logo-default-pandorafms.png"><h2> Composer detected issues in your platform:</h2>';
|
||||
echo '<div class="w80p height_80px" style="text-align:left;font-size: larger">';
|
||||
echo sprintf(
|
||||
'PandoraFMS requires PHP 8.2 to work properly and the version %s has been detected. Please update the PHP version of the system.',
|
||||
PHP_VERSION,
|
||||
);
|
||||
echo '</div></div></center></div>';
|
||||
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
|
||||
}
|
||||
}
|
||||
trigger_error(
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2017 Luís Cobucci
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"name": "lcobucci/clock",
|
||||
"description": "Yet another clock abstraction",
|
||||
"license": "MIT",
|
||||
"type": "library",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Luís Cobucci",
|
||||
"email": "lcobucci@gmail.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "~8.2.0 || ~8.3.0",
|
||||
"psr/clock": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"infection/infection": "^0.27",
|
||||
"lcobucci/coding-standard": "^11.0.0",
|
||||
"phpstan/extension-installer": "^1.3.1",
|
||||
"phpstan/phpstan": "^1.10.25",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.1.3",
|
||||
"phpstan/phpstan-phpunit": "^1.3.13",
|
||||
"phpstan/phpstan-strict-rules": "^1.5.1",
|
||||
"phpunit/phpunit": "^10.2.3"
|
||||
},
|
||||
"provide": {
|
||||
"psr/clock-implementation": "1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\Clock\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\Clock\\": "test"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"allow-plugins": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": true,
|
||||
"infection/extension-installer": true,
|
||||
"phpstan/extension-installer": true
|
||||
},
|
||||
"preferred-install": "dist",
|
||||
"sort-packages": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\Clock;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use Psr\Clock\ClockInterface;
|
||||
|
||||
interface Clock extends ClockInterface
|
||||
{
|
||||
public function now(): DateTimeImmutable;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\Clock;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use DateTimeZone;
|
||||
|
||||
final class FrozenClock implements Clock
|
||||
{
|
||||
public function __construct(private DateTimeImmutable $now)
|
||||
{
|
||||
}
|
||||
|
||||
public static function fromUTC(): self
|
||||
{
|
||||
return new self(new DateTimeImmutable('now', new DateTimeZone('UTC')));
|
||||
}
|
||||
|
||||
public function setTo(DateTimeImmutable $now): void
|
||||
{
|
||||
$this->now = $now;
|
||||
}
|
||||
|
||||
public function now(): DateTimeImmutable
|
||||
{
|
||||
return $this->now;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\Clock;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use DateTimeZone;
|
||||
|
||||
use function date_default_timezone_get;
|
||||
|
||||
/** @immutable */
|
||||
final class SystemClock implements Clock
|
||||
{
|
||||
public function __construct(private readonly DateTimeZone $timezone)
|
||||
{
|
||||
}
|
||||
|
||||
public static function fromUTC(): self
|
||||
{
|
||||
return new self(new DateTimeZone('UTC'));
|
||||
}
|
||||
|
||||
public static function fromSystemTimezone(): self
|
||||
{
|
||||
return new self(new DateTimeZone(date_default_timezone_get()));
|
||||
}
|
||||
|
||||
public function now(): DateTimeImmutable
|
||||
{
|
||||
return new DateTimeImmutable('now', $this->timezone);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
version: 2
|
||||
|
||||
build:
|
||||
os: ubuntu-22.04
|
||||
tools:
|
||||
python: "3"
|
||||
|
||||
mkdocs:
|
||||
configuration: mkdocs.yml
|
|
@ -0,0 +1,27 @@
|
|||
Copyright (c) 2014, Luís Cobucci
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the {organization} nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
"name": "lcobucci/jwt",
|
||||
"description": "A simple library to work with JSON Web Token and JSON Web Signature",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"type": "library",
|
||||
"keywords": [
|
||||
"JWT",
|
||||
"JWS"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Luís Cobucci",
|
||||
"email": "lcobucci@gmail.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "~8.1.0 || ~8.2.0 || ~8.3.0",
|
||||
"ext-openssl": "*",
|
||||
"ext-sodium": "*",
|
||||
"psr/clock": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"infection/infection": "^0.27.0",
|
||||
"lcobucci/clock": "^3.0",
|
||||
"lcobucci/coding-standard": "^11.0",
|
||||
"phpbench/phpbench": "^1.2.9",
|
||||
"phpstan/extension-installer": "^1.2",
|
||||
"phpstan/phpstan": "^1.10.7",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.1.3",
|
||||
"phpstan/phpstan-phpunit": "^1.3.10",
|
||||
"phpstan/phpstan-strict-rules": "^1.5.0",
|
||||
"phpunit/phpunit": "^10.2.6"
|
||||
},
|
||||
"suggest": {
|
||||
"lcobucci/clock": ">= 3.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\JWT\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Lcobucci\\JWT\\Tests\\": "tests"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"allow-plugins": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": true,
|
||||
"infection/extension-installer": true,
|
||||
"ocramius/package-versions": true,
|
||||
"phpstan/extension-installer": true
|
||||
},
|
||||
"platform": {
|
||||
"php": "8.1.99"
|
||||
},
|
||||
"preferred-install": "dist",
|
||||
"sort-packages": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"local>lcobucci/.github:renovate-config"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use Lcobucci\JWT\Encoding\CannotEncodeContent;
|
||||
use Lcobucci\JWT\Signer\CannotSignPayload;
|
||||
use Lcobucci\JWT\Signer\Ecdsa\ConversionFailed;
|
||||
use Lcobucci\JWT\Signer\InvalidKeyProvided;
|
||||
use Lcobucci\JWT\Signer\Key;
|
||||
use Lcobucci\JWT\Token\RegisteredClaimGiven;
|
||||
|
||||
/** @immutable */
|
||||
interface Builder
|
||||
{
|
||||
/**
|
||||
* Appends new items to audience
|
||||
*
|
||||
* @param non-empty-string ...$audiences
|
||||
*/
|
||||
public function permittedFor(string ...$audiences): Builder;
|
||||
|
||||
/**
|
||||
* Configures the expiration time
|
||||
*/
|
||||
public function expiresAt(DateTimeImmutable $expiration): Builder;
|
||||
|
||||
/**
|
||||
* Configures the token id
|
||||
*
|
||||
* @param non-empty-string $id
|
||||
*/
|
||||
public function identifiedBy(string $id): Builder;
|
||||
|
||||
/**
|
||||
* Configures the time that the token was issued
|
||||
*/
|
||||
public function issuedAt(DateTimeImmutable $issuedAt): Builder;
|
||||
|
||||
/**
|
||||
* Configures the issuer
|
||||
*
|
||||
* @param non-empty-string $issuer
|
||||
*/
|
||||
public function issuedBy(string $issuer): Builder;
|
||||
|
||||
/**
|
||||
* Configures the time before which the token cannot be accepted
|
||||
*/
|
||||
public function canOnlyBeUsedAfter(DateTimeImmutable $notBefore): Builder;
|
||||
|
||||
/**
|
||||
* Configures the subject
|
||||
*
|
||||
* @param non-empty-string $subject
|
||||
*/
|
||||
public function relatedTo(string $subject): Builder;
|
||||
|
||||
/**
|
||||
* Configures a header item
|
||||
*
|
||||
* @param non-empty-string $name
|
||||
*/
|
||||
public function withHeader(string $name, mixed $value): Builder;
|
||||
|
||||
/**
|
||||
* Configures a claim item
|
||||
*
|
||||
* @param non-empty-string $name
|
||||
*
|
||||
* @throws RegisteredClaimGiven When trying to set a registered claim.
|
||||
*/
|
||||
public function withClaim(string $name, mixed $value): Builder;
|
||||
|
||||
/**
|
||||
* Returns a signed token to be used
|
||||
*
|
||||
* @throws CannotEncodeContent When data cannot be converted to JSON.
|
||||
* @throws CannotSignPayload When payload signing fails.
|
||||
* @throws InvalidKeyProvided When issue key is invalid/incompatible.
|
||||
* @throws ConversionFailed When signature could not be converted.
|
||||
*/
|
||||
public function getToken(Signer $signer, Key $key): UnencryptedToken;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
interface ClaimsFormatter
|
||||
{
|
||||
/**
|
||||
* @param array<non-empty-string, mixed> $claims
|
||||
*
|
||||
* @return array<non-empty-string, mixed>
|
||||
*/
|
||||
public function formatClaims(array $claims): array;
|
||||
}
|
|
@ -0,0 +1,131 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use Closure;
|
||||
use Lcobucci\JWT\Encoding\ChainedFormatter;
|
||||
use Lcobucci\JWT\Encoding\JoseEncoder;
|
||||
use Lcobucci\JWT\Signer\Key;
|
||||
use Lcobucci\JWT\Validation\Constraint;
|
||||
|
||||
/**
|
||||
* Configuration container for the JWT Builder and Parser
|
||||
*
|
||||
* Serves like a small DI container to simplify the creation and usage
|
||||
* of the objects.
|
||||
*/
|
||||
final class Configuration
|
||||
{
|
||||
private Parser $parser;
|
||||
private Validator $validator;
|
||||
|
||||
/** @var Closure(ClaimsFormatter $claimFormatter): Builder */
|
||||
private Closure $builderFactory;
|
||||
|
||||
/** @var Constraint[] */
|
||||
private array $validationConstraints = [];
|
||||
|
||||
private function __construct(
|
||||
private readonly Signer $signer,
|
||||
private readonly Key $signingKey,
|
||||
private readonly Key $verificationKey,
|
||||
Encoder $encoder,
|
||||
Decoder $decoder,
|
||||
) {
|
||||
$this->parser = new Token\Parser($decoder);
|
||||
$this->validator = new Validation\Validator();
|
||||
|
||||
$this->builderFactory = static function (ClaimsFormatter $claimFormatter) use ($encoder): Builder {
|
||||
return new Token\Builder($encoder, $claimFormatter);
|
||||
};
|
||||
}
|
||||
|
||||
public static function forAsymmetricSigner(
|
||||
Signer $signer,
|
||||
Key $signingKey,
|
||||
Key $verificationKey,
|
||||
Encoder $encoder = new JoseEncoder(),
|
||||
Decoder $decoder = new JoseEncoder(),
|
||||
): self {
|
||||
return new self(
|
||||
$signer,
|
||||
$signingKey,
|
||||
$verificationKey,
|
||||
$encoder,
|
||||
$decoder,
|
||||
);
|
||||
}
|
||||
|
||||
public static function forSymmetricSigner(
|
||||
Signer $signer,
|
||||
Key $key,
|
||||
Encoder $encoder = new JoseEncoder(),
|
||||
Decoder $decoder = new JoseEncoder(),
|
||||
): self {
|
||||
return new self(
|
||||
$signer,
|
||||
$key,
|
||||
$key,
|
||||
$encoder,
|
||||
$decoder,
|
||||
);
|
||||
}
|
||||
|
||||
/** @param callable(ClaimsFormatter): Builder $builderFactory */
|
||||
public function setBuilderFactory(callable $builderFactory): void
|
||||
{
|
||||
$this->builderFactory = $builderFactory(...);
|
||||
}
|
||||
|
||||
public function builder(?ClaimsFormatter $claimFormatter = null): Builder
|
||||
{
|
||||
return ($this->builderFactory)($claimFormatter ?? ChainedFormatter::default());
|
||||
}
|
||||
|
||||
public function parser(): Parser
|
||||
{
|
||||
return $this->parser;
|
||||
}
|
||||
|
||||
public function setParser(Parser $parser): void
|
||||
{
|
||||
$this->parser = $parser;
|
||||
}
|
||||
|
||||
public function signer(): Signer
|
||||
{
|
||||
return $this->signer;
|
||||
}
|
||||
|
||||
public function signingKey(): Key
|
||||
{
|
||||
return $this->signingKey;
|
||||
}
|
||||
|
||||
public function verificationKey(): Key
|
||||
{
|
||||
return $this->verificationKey;
|
||||
}
|
||||
|
||||
public function validator(): Validator
|
||||
{
|
||||
return $this->validator;
|
||||
}
|
||||
|
||||
public function setValidator(Validator $validator): void
|
||||
{
|
||||
$this->validator = $validator;
|
||||
}
|
||||
|
||||
/** @return Constraint[] */
|
||||
public function validationConstraints(): array
|
||||
{
|
||||
return $this->validationConstraints;
|
||||
}
|
||||
|
||||
public function setValidationConstraints(Constraint ...$validationConstraints): void
|
||||
{
|
||||
$this->validationConstraints = $validationConstraints;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use Lcobucci\JWT\Encoding\CannotDecodeContent;
|
||||
|
||||
interface Decoder
|
||||
{
|
||||
/**
|
||||
* Decodes from JSON, validating the errors
|
||||
*
|
||||
* @param non-empty-string $json
|
||||
*
|
||||
* @throws CannotDecodeContent When something goes wrong while decoding.
|
||||
*/
|
||||
public function jsonDecode(string $json): mixed;
|
||||
|
||||
/**
|
||||
* Decodes from Base64URL
|
||||
*
|
||||
* @link http://tools.ietf.org/html/rfc4648#section-5
|
||||
*
|
||||
* @return ($data is non-empty-string ? non-empty-string : string)
|
||||
*
|
||||
* @throws CannotDecodeContent When something goes wrong while decoding.
|
||||
*/
|
||||
public function base64UrlDecode(string $data): string;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use Lcobucci\JWT\Encoding\CannotEncodeContent;
|
||||
|
||||
interface Encoder
|
||||
{
|
||||
/**
|
||||
* Encodes to JSON, validating the errors
|
||||
*
|
||||
* @return non-empty-string
|
||||
*
|
||||
* @throws CannotEncodeContent When something goes wrong while encoding.
|
||||
*/
|
||||
public function jsonEncode(mixed $data): string;
|
||||
|
||||
/**
|
||||
* Encodes to base64url
|
||||
*
|
||||
* @link http://tools.ietf.org/html/rfc4648#section-5
|
||||
*
|
||||
* @return ($data is non-empty-string ? non-empty-string : string)
|
||||
*/
|
||||
public function base64UrlEncode(string $data): string;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Encoding;
|
||||
|
||||
use JsonException;
|
||||
use Lcobucci\JWT\Exception;
|
||||
use RuntimeException;
|
||||
|
||||
final class CannotDecodeContent extends RuntimeException implements Exception
|
||||
{
|
||||
public static function jsonIssues(JsonException $previous): self
|
||||
{
|
||||
return new self(message: 'Error while decoding from JSON', previous: $previous);
|
||||
}
|
||||
|
||||
public static function invalidBase64String(): self
|
||||
{
|
||||
return new self('Error while decoding from Base64Url, invalid base64 characters detected');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Encoding;
|
||||
|
||||
use JsonException;
|
||||
use Lcobucci\JWT\Exception;
|
||||
use RuntimeException;
|
||||
|
||||
final class CannotEncodeContent extends RuntimeException implements Exception
|
||||
{
|
||||
public static function jsonIssues(JsonException $previous): self
|
||||
{
|
||||
return new self(message: 'Error while encoding to JSON', previous: $previous);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Encoding;
|
||||
|
||||
use Lcobucci\JWT\ClaimsFormatter;
|
||||
|
||||
final class ChainedFormatter implements ClaimsFormatter
|
||||
{
|
||||
/** @var array<ClaimsFormatter> */
|
||||
private array $formatters;
|
||||
|
||||
public function __construct(ClaimsFormatter ...$formatters)
|
||||
{
|
||||
$this->formatters = $formatters;
|
||||
}
|
||||
|
||||
public static function default(): self
|
||||
{
|
||||
return new self(new UnifyAudience(), new MicrosecondBasedDateConversion());
|
||||
}
|
||||
|
||||
public static function withUnixTimestampDates(): self
|
||||
{
|
||||
return new self(new UnifyAudience(), new UnixTimestampDates());
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function formatClaims(array $claims): array
|
||||
{
|
||||
foreach ($this->formatters as $formatter) {
|
||||
$claims = $formatter->formatClaims($claims);
|
||||
}
|
||||
|
||||
return $claims;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Encoding;
|
||||
|
||||
use JsonException;
|
||||
use Lcobucci\JWT\Decoder;
|
||||
use Lcobucci\JWT\Encoder;
|
||||
use Lcobucci\JWT\SodiumBase64Polyfill;
|
||||
|
||||
use function json_decode;
|
||||
use function json_encode;
|
||||
|
||||
use const JSON_THROW_ON_ERROR;
|
||||
use const JSON_UNESCAPED_SLASHES;
|
||||
use const JSON_UNESCAPED_UNICODE;
|
||||
|
||||
/**
|
||||
* A utilitarian class that encodes and decodes data according to JOSE specifications
|
||||
*/
|
||||
final class JoseEncoder implements Encoder, Decoder
|
||||
{
|
||||
public function jsonEncode(mixed $data): string
|
||||
{
|
||||
try {
|
||||
return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);
|
||||
} catch (JsonException $exception) {
|
||||
throw CannotEncodeContent::jsonIssues($exception);
|
||||
}
|
||||
}
|
||||
|
||||
public function jsonDecode(string $json): mixed
|
||||
{
|
||||
try {
|
||||
return json_decode(json: $json, associative: true, flags: JSON_THROW_ON_ERROR);
|
||||
} catch (JsonException $exception) {
|
||||
throw CannotDecodeContent::jsonIssues($exception);
|
||||
}
|
||||
}
|
||||
|
||||
public function base64UrlEncode(string $data): string
|
||||
{
|
||||
return SodiumBase64Polyfill::bin2base64(
|
||||
$data,
|
||||
SodiumBase64Polyfill::SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING,
|
||||
);
|
||||
}
|
||||
|
||||
public function base64UrlDecode(string $data): string
|
||||
{
|
||||
return SodiumBase64Polyfill::base642bin(
|
||||
$data,
|
||||
SodiumBase64Polyfill::SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING,
|
||||
);
|
||||
}
|
||||
}
|
36
pandora_console/vendor/lcobucci/jwt/src/Encoding/MicrosecondBasedDateConversion.php
vendored
Normal file
36
pandora_console/vendor/lcobucci/jwt/src/Encoding/MicrosecondBasedDateConversion.php
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Encoding;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use Lcobucci\JWT\ClaimsFormatter;
|
||||
use Lcobucci\JWT\Token\RegisteredClaims;
|
||||
|
||||
use function array_key_exists;
|
||||
|
||||
final class MicrosecondBasedDateConversion implements ClaimsFormatter
|
||||
{
|
||||
/** @inheritdoc */
|
||||
public function formatClaims(array $claims): array
|
||||
{
|
||||
foreach (RegisteredClaims::DATE_CLAIMS as $claim) {
|
||||
if (! array_key_exists($claim, $claims)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$claims[$claim] = $this->convertDate($claims[$claim]);
|
||||
}
|
||||
|
||||
return $claims;
|
||||
}
|
||||
|
||||
private function convertDate(DateTimeImmutable $date): int|float
|
||||
{
|
||||
if ($date->format('u') === '000000') {
|
||||
return (int) $date->format('U');
|
||||
}
|
||||
|
||||
return (float) $date->format('U.u');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Encoding;
|
||||
|
||||
use Lcobucci\JWT\ClaimsFormatter;
|
||||
use Lcobucci\JWT\Token\RegisteredClaims;
|
||||
|
||||
use function array_key_exists;
|
||||
use function count;
|
||||
use function current;
|
||||
|
||||
final class UnifyAudience implements ClaimsFormatter
|
||||
{
|
||||
/** @inheritdoc */
|
||||
public function formatClaims(array $claims): array
|
||||
{
|
||||
if (
|
||||
! array_key_exists(RegisteredClaims::AUDIENCE, $claims)
|
||||
|| count($claims[RegisteredClaims::AUDIENCE]) !== 1
|
||||
) {
|
||||
return $claims;
|
||||
}
|
||||
|
||||
$claims[RegisteredClaims::AUDIENCE] = current($claims[RegisteredClaims::AUDIENCE]);
|
||||
|
||||
return $claims;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Encoding;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use Lcobucci\JWT\ClaimsFormatter;
|
||||
use Lcobucci\JWT\Token\RegisteredClaims;
|
||||
|
||||
use function array_key_exists;
|
||||
|
||||
final class UnixTimestampDates implements ClaimsFormatter
|
||||
{
|
||||
/** @inheritdoc */
|
||||
public function formatClaims(array $claims): array
|
||||
{
|
||||
foreach (RegisteredClaims::DATE_CLAIMS as $claim) {
|
||||
if (! array_key_exists($claim, $claims)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$claims[$claim] = $this->convertDate($claims[$claim]);
|
||||
}
|
||||
|
||||
return $claims;
|
||||
}
|
||||
|
||||
private function convertDate(DateTimeImmutable $date): int
|
||||
{
|
||||
return $date->getTimestamp();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use Throwable;
|
||||
|
||||
interface Exception extends Throwable
|
||||
{
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use Closure;
|
||||
use DateTimeImmutable;
|
||||
use Lcobucci\JWT\Encoding\ChainedFormatter;
|
||||
use Lcobucci\JWT\Encoding\JoseEncoder;
|
||||
use Lcobucci\JWT\Signer\Key;
|
||||
use Lcobucci\JWT\Validation\Constraint;
|
||||
use Lcobucci\JWT\Validation\SignedWith;
|
||||
use Lcobucci\JWT\Validation\ValidAt;
|
||||
use Lcobucci\JWT\Validation\Validator;
|
||||
use Psr\Clock\ClockInterface as Clock;
|
||||
|
||||
use function assert;
|
||||
|
||||
final class JwtFacade
|
||||
{
|
||||
private readonly Clock $clock;
|
||||
|
||||
public function __construct(
|
||||
private readonly Parser $parser = new Token\Parser(new JoseEncoder()),
|
||||
?Clock $clock = null,
|
||||
) {
|
||||
$this->clock = $clock ?? new class implements Clock {
|
||||
public function now(): DateTimeImmutable
|
||||
{
|
||||
return new DateTimeImmutable();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/** @param Closure(Builder, DateTimeImmutable):Builder $customiseBuilder */
|
||||
public function issue(
|
||||
Signer $signer,
|
||||
Key $signingKey,
|
||||
Closure $customiseBuilder,
|
||||
): UnencryptedToken {
|
||||
$builder = new Token\Builder(new JoseEncoder(), ChainedFormatter::withUnixTimestampDates());
|
||||
|
||||
$now = $this->clock->now();
|
||||
$builder = $builder
|
||||
->issuedAt($now)
|
||||
->canOnlyBeUsedAfter($now)
|
||||
->expiresAt($now->modify('+5 minutes'));
|
||||
|
||||
return $customiseBuilder($builder, $now)->getToken($signer, $signingKey);
|
||||
}
|
||||
|
||||
/** @param non-empty-string $jwt */
|
||||
public function parse(
|
||||
string $jwt,
|
||||
SignedWith $signedWith,
|
||||
ValidAt $validAt,
|
||||
Constraint ...$constraints,
|
||||
): UnencryptedToken {
|
||||
$token = $this->parser->parse($jwt);
|
||||
assert($token instanceof UnencryptedToken);
|
||||
|
||||
(new Validator())->assert(
|
||||
$token,
|
||||
$signedWith,
|
||||
$validAt,
|
||||
...$constraints,
|
||||
);
|
||||
|
||||
return $token;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use Lcobucci\JWT\Encoding\CannotDecodeContent;
|
||||
use Lcobucci\JWT\Token\InvalidTokenStructure;
|
||||
use Lcobucci\JWT\Token\UnsupportedHeaderFound;
|
||||
|
||||
interface Parser
|
||||
{
|
||||
/**
|
||||
* Parses the JWT and returns a token
|
||||
*
|
||||
* @param non-empty-string $jwt
|
||||
*
|
||||
* @throws CannotDecodeContent When something goes wrong while decoding.
|
||||
* @throws InvalidTokenStructure When token string structure is invalid.
|
||||
* @throws UnsupportedHeaderFound When parsed token has an unsupported header.
|
||||
*/
|
||||
public function parse(string $jwt): Token;
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT;
|
||||
|
||||
use Lcobucci\JWT\Signer\CannotSignPayload;
|
||||
use Lcobucci\JWT\Signer\Ecdsa\ConversionFailed;
|
||||
use Lcobucci\JWT\Signer\InvalidKeyProvided;
|
||||
use Lcobucci\JWT\Signer\Key;
|
||||
|
||||
interface Signer
|
||||
{
|
||||
/**
|
||||
* Returns the algorithm id
|
||||
*
|
||||
* @return non-empty-string
|
||||
*/
|
||||
public function algorithmId(): string;
|
||||
|
||||
/**
|
||||
* Creates a hash for the given payload
|
||||
*
|
||||
* @param non-empty-string $payload
|
||||
*
|
||||
* @return non-empty-string
|
||||
*
|
||||
* @throws CannotSignPayload When payload signing fails.
|
||||
* @throws InvalidKeyProvided When issue key is invalid/incompatible.
|
||||
* @throws ConversionFailed When signature could not be converted.
|
||||
*/
|
||||
public function sign(string $payload, Key $key): string;
|
||||
|
||||
/**
|
||||
* Returns if the expected hash matches with the data and key
|
||||
*
|
||||
* @param non-empty-string $expected
|
||||
* @param non-empty-string $payload
|
||||
*
|
||||
* @throws InvalidKeyProvided When issue key is invalid/incompatible.
|
||||
* @throws ConversionFailed When signature could not be converted.
|
||||
*/
|
||||
public function verify(string $expected, string $payload, Key $key): bool;
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Signer;
|
||||
|
||||
use Lcobucci\JWT\Signer;
|
||||
|
||||
use function hash_equals;
|
||||
use function sodium_crypto_generichash;
|
||||
use function strlen;
|
||||
|
||||
final class Blake2b implements Signer
|
||||
{
|
||||
private const MINIMUM_KEY_LENGTH_IN_BITS = 256;
|
||||
|
||||
public function algorithmId(): string
|
||||
{
|
||||
return 'BLAKE2B';
|
||||
}
|
||||
|
||||
public function sign(string $payload, Key $key): string
|
||||
{
|
||||
$actualKeyLength = 8 * strlen($key->contents());
|
||||
|
||||
if ($actualKeyLength < self::MINIMUM_KEY_LENGTH_IN_BITS) {
|
||||
throw InvalidKeyProvided::tooShort(self::MINIMUM_KEY_LENGTH_IN_BITS, $actualKeyLength);
|
||||
}
|
||||
|
||||
return sodium_crypto_generichash($payload, $key->contents());
|
||||
}
|
||||
|
||||
public function verify(string $expected, string $payload, Key $key): bool
|
||||
{
|
||||
return hash_equals($expected, $this->sign($payload, $key));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Signer;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use Lcobucci\JWT\Exception;
|
||||
|
||||
final class CannotSignPayload extends InvalidArgumentException implements Exception
|
||||
{
|
||||
public static function errorHappened(string $error): self
|
||||
{
|
||||
return new self('There was an error while creating the signature:' . $error);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Signer;
|
||||
|
||||
use Lcobucci\JWT\Signer\Ecdsa\MultibyteStringConverter;
|
||||
use Lcobucci\JWT\Signer\Ecdsa\SignatureConverter;
|
||||
|
||||
use const OPENSSL_KEYTYPE_EC;
|
||||
|
||||
abstract class Ecdsa extends OpenSSL
|
||||
{
|
||||
public function __construct(
|
||||
private readonly SignatureConverter $converter = new MultibyteStringConverter(),
|
||||
) {
|
||||
}
|
||||
|
||||
final public function sign(string $payload, Key $key): string
|
||||
{
|
||||
return $this->converter->fromAsn1(
|
||||
$this->createSignature($key->contents(), $key->passphrase(), $payload),
|
||||
$this->pointLength(),
|
||||
);
|
||||
}
|
||||
|
||||
final public function verify(string $expected, string $payload, Key $key): bool
|
||||
{
|
||||
return $this->verifySignature(
|
||||
$this->converter->toAsn1($expected, $this->pointLength()),
|
||||
$payload,
|
||||
$key->contents(),
|
||||
);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
final protected function guardAgainstIncompatibleKey(int $type, int $lengthInBits): void
|
||||
{
|
||||
if ($type !== OPENSSL_KEYTYPE_EC) {
|
||||
throw InvalidKeyProvided::incompatibleKeyType(
|
||||
self::KEY_TYPE_MAP[OPENSSL_KEYTYPE_EC],
|
||||
self::KEY_TYPE_MAP[$type],
|
||||
);
|
||||
}
|
||||
|
||||
$expectedKeyLength = $this->expectedKeyLength();
|
||||
|
||||
if ($lengthInBits !== $expectedKeyLength) {
|
||||
throw InvalidKeyProvided::incompatibleKeyLength($expectedKeyLength, $lengthInBits);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @return positive-int
|
||||
*/
|
||||
abstract public function expectedKeyLength(): int;
|
||||
|
||||
/**
|
||||
* Returns the length of each point in the signature, so that we can calculate and verify R and S points properly
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @return positive-int
|
||||
*/
|
||||
abstract public function pointLength(): int;
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Signer\Ecdsa;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use Lcobucci\JWT\Exception;
|
||||
|
||||
final class ConversionFailed extends InvalidArgumentException implements Exception
|
||||
{
|
||||
public static function invalidLength(): self
|
||||
{
|
||||
return new self('Invalid signature length.');
|
||||
}
|
||||
|
||||
public static function incorrectStartSequence(): self
|
||||
{
|
||||
return new self('Invalid data. Should start with a sequence.');
|
||||
}
|
||||
|
||||
public static function integerExpected(): self
|
||||
{
|
||||
return new self('Invalid data. Should contain an integer.');
|
||||
}
|
||||
}
|
148
pandora_console/vendor/lcobucci/jwt/src/Signer/Ecdsa/MultibyteStringConverter.php
vendored
Normal file
148
pandora_console/vendor/lcobucci/jwt/src/Signer/Ecdsa/MultibyteStringConverter.php
vendored
Normal file
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014-2018 Spomky-Labs
|
||||
*
|
||||
* This software may be modified and distributed under the terms
|
||||
* of the MIT license. See the LICENSE file for details.
|
||||
*
|
||||
* @link https://github.com/web-token/jwt-framework/blob/v1.2/src/Component/Core/Util/ECSignature.php
|
||||
*/
|
||||
|
||||
namespace Lcobucci\JWT\Signer\Ecdsa;
|
||||
|
||||
use function assert;
|
||||
use function bin2hex;
|
||||
use function dechex;
|
||||
use function hex2bin;
|
||||
use function hexdec;
|
||||
use function is_string;
|
||||
use function str_pad;
|
||||
use function strlen;
|
||||
use function substr;
|
||||
|
||||
use const STR_PAD_LEFT;
|
||||
|
||||
/**
|
||||
* ECDSA signature converter using ext-mbstring
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
final class MultibyteStringConverter implements SignatureConverter
|
||||
{
|
||||
private const ASN1_SEQUENCE = '30';
|
||||
private const ASN1_INTEGER = '02';
|
||||
private const ASN1_MAX_SINGLE_BYTE = 128;
|
||||
private const ASN1_LENGTH_2BYTES = '81';
|
||||
private const ASN1_BIG_INTEGER_LIMIT = '7f';
|
||||
private const ASN1_NEGATIVE_INTEGER = '00';
|
||||
private const BYTE_SIZE = 2;
|
||||
|
||||
public function toAsn1(string $points, int $length): string
|
||||
{
|
||||
$points = bin2hex($points);
|
||||
|
||||
if (self::octetLength($points) !== $length) {
|
||||
throw ConversionFailed::invalidLength();
|
||||
}
|
||||
|
||||
$pointR = self::preparePositiveInteger(substr($points, 0, $length));
|
||||
$pointS = self::preparePositiveInteger(substr($points, $length, null));
|
||||
|
||||
$lengthR = self::octetLength($pointR);
|
||||
$lengthS = self::octetLength($pointS);
|
||||
|
||||
$totalLength = $lengthR + $lengthS + self::BYTE_SIZE + self::BYTE_SIZE;
|
||||
$lengthPrefix = $totalLength > self::ASN1_MAX_SINGLE_BYTE ? self::ASN1_LENGTH_2BYTES : '';
|
||||
|
||||
$asn1 = hex2bin(
|
||||
self::ASN1_SEQUENCE
|
||||
. $lengthPrefix . dechex($totalLength)
|
||||
. self::ASN1_INTEGER . dechex($lengthR) . $pointR
|
||||
. self::ASN1_INTEGER . dechex($lengthS) . $pointS,
|
||||
);
|
||||
assert(is_string($asn1));
|
||||
assert($asn1 !== '');
|
||||
|
||||
return $asn1;
|
||||
}
|
||||
|
||||
private static function octetLength(string $data): int
|
||||
{
|
||||
return (int) (strlen($data) / self::BYTE_SIZE);
|
||||
}
|
||||
|
||||
private static function preparePositiveInteger(string $data): string
|
||||
{
|
||||
if (substr($data, 0, self::BYTE_SIZE) > self::ASN1_BIG_INTEGER_LIMIT) {
|
||||
return self::ASN1_NEGATIVE_INTEGER . $data;
|
||||
}
|
||||
|
||||
while (
|
||||
substr($data, 0, self::BYTE_SIZE) === self::ASN1_NEGATIVE_INTEGER
|
||||
&& substr($data, 2, self::BYTE_SIZE) <= self::ASN1_BIG_INTEGER_LIMIT
|
||||
) {
|
||||
$data = substr($data, 2, null);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function fromAsn1(string $signature, int $length): string
|
||||
{
|
||||
$message = bin2hex($signature);
|
||||
$position = 0;
|
||||
|
||||
if (self::readAsn1Content($message, $position, self::BYTE_SIZE) !== self::ASN1_SEQUENCE) {
|
||||
throw ConversionFailed::incorrectStartSequence();
|
||||
}
|
||||
|
||||
// @phpstan-ignore-next-line
|
||||
if (self::readAsn1Content($message, $position, self::BYTE_SIZE) === self::ASN1_LENGTH_2BYTES) {
|
||||
$position += self::BYTE_SIZE;
|
||||
}
|
||||
|
||||
$pointR = self::retrievePositiveInteger(self::readAsn1Integer($message, $position));
|
||||
$pointS = self::retrievePositiveInteger(self::readAsn1Integer($message, $position));
|
||||
|
||||
$points = hex2bin(str_pad($pointR, $length, '0', STR_PAD_LEFT) . str_pad($pointS, $length, '0', STR_PAD_LEFT));
|
||||
assert(is_string($points));
|
||||
assert($points !== '');
|
||||
|
||||
return $points;
|
||||
}
|
||||
|
||||
private static function readAsn1Content(string $message, int &$position, int $length): string
|
||||
{
|
||||
$content = substr($message, $position, $length);
|
||||
$position += $length;
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
private static function readAsn1Integer(string $message, int &$position): string
|
||||
{
|
||||
if (self::readAsn1Content($message, $position, self::BYTE_SIZE) !== self::ASN1_INTEGER) {
|
||||
throw ConversionFailed::integerExpected();
|
||||
}
|
||||
|
||||
$length = (int) hexdec(self::readAsn1Content($message, $position, self::BYTE_SIZE));
|
||||
|
||||
return self::readAsn1Content($message, $position, $length * self::BYTE_SIZE);
|
||||
}
|
||||
|
||||
private static function retrievePositiveInteger(string $data): string
|
||||
{
|
||||
while (
|
||||
substr($data, 0, self::BYTE_SIZE) === self::ASN1_NEGATIVE_INTEGER
|
||||
&& substr($data, 2, self::BYTE_SIZE) > self::ASN1_BIG_INTEGER_LIMIT
|
||||
) {
|
||||
$data = substr($data, 2, null);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Lcobucci\JWT\Signer\Ecdsa;
|
||||
|
||||
use Lcobucci\JWT\Signer\Ecdsa;
|
||||
|
||||
use const OPENSSL_ALGO_SHA256;
|
||||
|
||||
final class Sha256 extends Ecdsa
|
||||
{
|
||||
public function algorithmId(): string
|
||||
{
|
||||
return 'ES256';
|
||||
}
|
||||
|
||||
public function algorithm(): int
|
||||
{
|
||||
return OPENSSL_ALGO_SHA256;
|
||||
}
|
||||
|
||||
public function pointLength(): int
|
||||
{
|
||||
return 64;
|
||||
}
|
||||
|
||||
public function expectedKeyLength(): int
|
||||
{
|
||||
return 256;
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue