1dfddd64ba
Restructured Guzzle HTTP requests to allow for additional options like proxy support, enhancing flexibility in handling different types of requests.
58 lines
1.4 KiB
PHP
58 lines
1.4 KiB
PHP
<?php
|
|
require 'vendor/autoload.php';
|
|
require 'config.php';
|
|
|
|
if($_SERVER["REQUEST_URI"] == '/metrics') {
|
|
foreach ($config as $key => &$c) {
|
|
if(isset($c['command'])) {
|
|
$output=null;
|
|
$retval=null;
|
|
exec($c['command'], $output, $retval);
|
|
$output = implode("\n", $output);
|
|
} elseif(isset($c['httpurl'])) {
|
|
$client = new GuzzleHttp\Client();
|
|
|
|
$options = [];
|
|
if (isset($c['proxy'])) {
|
|
$options['proxy'] = $c['proxy'];
|
|
}
|
|
|
|
$res = $client->request('GET', $c['httpurl'], $options);
|
|
$output = $res->getBody()->getContents();
|
|
} elseif(isset($c['httpresponsetime'])) {
|
|
$client = new GuzzleHttp\Client();
|
|
$output = NULL;
|
|
|
|
$options = [
|
|
'on_stats' => function (GuzzleHttp\TransferStats $stats) use (&$output) {
|
|
$output = $stats->getTransferTime();
|
|
}
|
|
];
|
|
if (isset($c['proxy'])) {
|
|
$options['proxy'] = $c['proxy'];
|
|
}
|
|
|
|
$res = $client->request('GET', $c['httpresponsetime'], $options);
|
|
}
|
|
if(isset($c['jsonelem'])) {
|
|
$c['value'] = getArrayValue($c['jsonelem'], json_decode($output, true));
|
|
} else {
|
|
$c['value'] = $output;
|
|
}
|
|
}
|
|
|
|
$loader = new \Twig\Loader\FilesystemLoader('templates');
|
|
$twig = new \Twig\Environment($loader, [
|
|
'cache' => 'twig_cache',
|
|
]);
|
|
echo $twig->render('metrics.twig', ['config' => $config]);
|
|
}
|
|
|
|
function getArrayValue($elem, $array) {
|
|
$elem = explode('.', $elem);
|
|
$new_array = $array;
|
|
foreach ($elem as $i) {
|
|
$new_array = $new_array[$i];
|
|
}
|
|
return $new_array;
|
|
} |