Merge remote-tracking branch 'origin/develop' into ent-7621-autenticacion-local-usuarios-solo-api

This commit is contained in:
Calvo 2022-04-18 17:46:36 +02:00
commit 1fad2944a6
3471 changed files with 490362 additions and 934228 deletions

3
.gitignore vendored
View File

@ -9,5 +9,6 @@ MYMETA.yml
**/PandoraFMS-Enterprise/pm_to_blib
**/pandora_console/attachment/cache
**/pandora_console/attachment/agents
**/pandora_console/attachment/merge_backups
pandora_console/.DS_Store
.DS_Store
.DS_Store

View File

@ -1,6 +1,25 @@
variables:
GIT_STRATEGY: clone
REBRANDING: pandora
test:
script:
- docker run --rm -h pandorafms -t -v "$CI_PROJECT_DIR:/tmp/pandorafms" pandorafms/pandorafms-base /tmp/pandorafms/tests/test.sh
- if [ ! -e $CI_PROJECT_DIR/pandora_server/bin/${REBRANDING}_server ]; then cp $CI_PROJECT_DIR/pandora_server/bin/pandora_server $CI_PROJECT_DIR/pandora_server/bin/${REBRANDING}_server ; fi
- if [ ! -e $CI_PROJECT_DIR/pandora_server/util/${REBRANDING}_ha.pl ]; then cp $CI_PROJECT_DIR/pandora_server/util/pandora_ha.pl $CI_PROJECT_DIR/pandora_server/util/${REBRANDING}_ha.pl ; fi
- if [ ! -e $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_agent ]; then cp $CI_PROJECT_DIR/pandora_agents/unix/pandora_agent $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_agent ; fi
- sed -i "s/pandora/$REBRANDING/g" $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_agent
- if [ ! -e $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_agent_exec ]; then cp $CI_PROJECT_DIR/pandora_agents/unix/pandora_agent_exec $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_agent_exec ; fi
- if [ ! -e $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_revent ]; then cp $CI_PROJECT_DIR/pandora_agents/unix/pandora_revent $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_revent ; fi
- if [ ! -e $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_agent_logrotate ]; then cp $CI_PROJECT_DIR/pandora_agents/unix/pandora_agent_logrotate $CI_PROJECT_DIR/pandora_agents/unix/${REBRANDING}_agent_logrotate ; fi
- sed -i "s/_PRODUCT_/$REBRANDING/g" $CI_PROJECT_DIR/pandora_server/Makefile.PL
- sed -i "s/TENTACLE_USER=\"pandora\"/TENTACLE_USER=\"$REBRANDING\"/g" $CI_PROJECT_DIR/pandora_server/util/tentacle_serverd
- docker pull pandorafms/pandorafms-base:rocky8.5
- docker run --ulimit nofile=262144:262144 --rm -e REBRANDING="$REBRANDING" -h pandorafms -t -v "$CI_PROJECT_DIR:/tmp/pandorafms" pandorafms/pandorafms-base:rocky8.5 /tmp/pandorafms/tests/test.sh
test_php_legacy:
stage: test
before_script:
- df -h | grep instaladores | awk '{print $NF}' |xargs umount >/dev/null 2>&1 || true
script:
- docker pull pandorafms/pandorafms-base:centos7
- docker run --ulimit nofile=262144:262144 --rm -h pandorafms -t -v "$CI_PROJECT_DIR:/tmp/pandorafms" pandorafms/pandorafms-base:centos7 /tmp/pandorafms/tests/test_legacy.sh

View File

@ -1,12 +1,16 @@
[![Build Status](https://travis-ci.org/pandorafms/pandorafms.svg?branch=develop)](https://travis-ci.org/pandorafms/pandorafms)
[![Pandora logo](http://wolf359.artica.es/public_images/logo_pandora_community.png)](http://pandorafms.org)
![logo Pandora-FMS](https://user-images.githubusercontent.com/8567291/151817953-dc9c4c88-5f3c-459b-98a7-da0534930a2c.png)
Pandora FMS is a monitoring software for IT infrastructure management which includes network equipment, Windows and Unix servers, virtual infrastructure and all different kind of applications. It has a large amount of features, making it a new generation software which discovers all the monitoring issues that an organization may need.
With more than 50,000 customer installations across the five continents, Pandora FMS is an out-of-the-box monitoring solution: profitable and scalable, covering most infrastructure deployment options.
Pandora FMS gives you the agility to find and solve problems quickly, scaling them so they can be derived from any source, on-premise, multi cloud or both of them mixed. Now you have that capability across your entire IT stack and analytics to find any problem, even the ones that are hard to find.
Thanks to more than 500 plugins available, you can control and manage any application and technology, from SAP, Oracle, Lotus, Citrix or Jboss to VMware, AWS, SQL Server, Redhat, Websphere, etc.
### Support
For community support you can visit our forums at http://forums.pandorafms.org. Visit our community page at http://pandorafms.org and if you need commercial information or/and professional support visit http://pandorafms.com.
For community support you can visit our forums at https://pandorafms.com/community/ and if you need commercial information or/and professional support visit https://pandorafms.com
### How to install Pandora FMS

View File

@ -88,7 +88,7 @@ public class PandoraWebView extends Activity {
//Check the first load the page for to hide a toast with the
//connection message
//Close the CustomToast (I love this hack, fuck javalovers and yours patterns.).
//Close the CustomToast.
if (ConnectionCustomToast.activity != null)
ConnectionCustomToast.activity.finish();
}

View File

@ -1,428 +1,479 @@
<html>
<head>
<title>gatete</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
<script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
</head>
<body>
<script>
<head>
<title>gatete</title>
<script
type="text/javascript"
src="http://code.jquery.com/jquery-2.2.0.min.js"
></script>
<script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
</head>
<body>
<script>
var svg = d3.select("#test svg");
</script>
var svg = d3.select("#test svg");
</script>
<div id="test">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000px" height="1000px" style="background: black;">
<image id="cat_piano" x="400" y="-100" width="50%" height="50%" xlink:href="https://media.giphy.com/media/ymckEpq27dQ9W/giphy.gif" />
<g id="zoom" transform="translate(-10 20) scale (1)">
<g
transform="translate(100, 300) scale(0.50)"
id="cat1">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
transform="translate(700, 500) scale(0.25)"
id="cat2">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<div id="test">
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="1000px"
height="1000px"
style="background: black;"
>
<image
id="cat_piano"
x="400"
y="-100"
width="50%"
height="50%"
xlink:href="https://media.giphy.com/media/ymckEpq27dQ9W/giphy.gif"
/>
<g id="zoom" transform="translate(-10 20) scale (1)">
<g transform="translate(100, 300) scale(0.50)" id="cat1">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
</g>
<g
transform="translate(200, 0) scale(0.25)"
id="cat3">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g transform="translate(700, 500) scale(0.25)" id="cat2">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
</g>
<g
transform="translate(600, 0) scale(0.25)"
id="cat4">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>
</div>
<script type="text/javascript">
var svg = d3.select("svg #zoom");
svg.append("g")
.attr("id", "circulo")
.attr("transform",
function(d) {
return "translate(" + get_center_element("#cat1")[0] + " " + get_center_element("#cat1")[1] + ")";})
.append("circle")
.attr("style", "fill: rgb(0, 255, 0);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", 20);
svg.append("g")
.attr("transform",
function(d) { return "translate(" + get_pos_element("#cat1")[0] + " " + get_pos_element("#cat1")[1] + ") scale(" + get_scale_element("#cat1") + ")";})
.append("rect")
.attr("style", "fill:none; stroke:#ffff00;stroke-width:5")
.attr("width", function(d) { return get_size_element("#cat1")[0];})
.attr("height", function(d) { return get_size_element("#cat1")[1];});
svg.append("g")
.attr("transform",
function(d) {
return "translate(" + get_center_element("#cat1")[0] + " " + get_center_element("#cat1")[1] + ") scale(" + get_scale_element("#cat1") + ")";})
.append("circle")
.attr("style", "fill: none; stroke-width: 5; stroke: rgb(0, 0, 255);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", get_radius_element("#cat1"));
svg.append("g")
.attr("id", "circulo")
.attr("transform",
function(d) {
return "translate(" + get_center_element("#cat3")[0] + " " + get_center_element("#cat3")[1] + ")";})
.append("circle")
.attr("style", "fill: rgb(0, 255, 0);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", 20);
<g transform="translate(200, 0) scale(0.25)" id="cat3">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
</g>
svg.append("g")
.attr("transform",
function(d) { return "translate(" + get_pos_element("#cat3")[0] + " " + get_pos_element("#cat3")[1] + ") scale(" + get_scale_element("#cat3") + ")";})
.append("rect")
.attr("style", "fill:none; stroke:#ffff00;stroke-width:5")
.attr("width", function(d) { return get_size_element("#cat3")[0];})
.attr("height", function(d) { return get_size_element("#cat3")[1];});
svg.append("g")
.attr("transform",
function(d) {
return "translate(" + get_center_element("#cat3")[0] + " " + get_center_element("#cat3")[1] + ") scale(" + get_scale_element("#cat3") + ")";})
.append("circle")
.attr("style", "fill: none; stroke-width: 5; stroke: rgb(0, 0, 255);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", get_radius_element("#cat3"));
arrow_by_pieces2("gatete_flecha", "cat1", "cat2");
arrow_by_pieces2("gatete_flecha2", "cat1", "cat4");
arrow_by_pieces2("gatete_flecha3", "cat3", "cat4");
//~ arrow_by_pieces("gatete_flecha", "cat1", "cat2");
//~ arrow_by_pieces("gatete_flecha", "cat3", "cat4");
/**
* Function get_radius_element
* Return float
* This method get the element radius
*/
function get_radius_element(element) {
var size = get_size_element(element);
return Math.sqrt(
Math.pow(size[0] / 2, 2) + Math.pow(size[1] / 2, 2));
}
/**
* Function get_scale_element
* Return float
* This method get the element escale
*/
function get_scale_element(element) {
var element_t = d3.transform(d3.select(element).attr("transform"));
var element_t_scale = parseFloat(element_t['scale']);
return element_t_scale;
}
/**
* Function get_size_element
* Return array[2]
* This method get the element size [width, height]
*/
function get_size_element(element) {
var element_b = d3.select(element).node().getBBox();
return [element_b['width'], element_b['height']];
}
/**
* Function get_pos_element
* Return array[2]
* This method get the element position [x, y]
*/
function get_pos_element(element) {
var element_t = d3.transform(d3.select(element).attr("transform"));
var element_t_scale = parseFloat(element_t['scale']);
var element_b = d3.select(element).node().getBBox();
var box_x = parseFloat(element_t.translate[0]) +
parseFloat(element_b['x']) * element_t_scale;
var box_y = parseFloat(element_t.translate[1]) +
parseFloat(element_b['y']) * element_t_scale;
return [box_x, box_y];
}
/**
* Function get_center_element
* Return array[2]
* This method ge2t the element center point [x, y]
*/
function get_center_element(element) {
var element_t = d3.transform(d3.select(element).attr("transform"));
var element_t_scale = parseFloat(element_t['scale']);
var element_b = d3.select(element).node().getBBox();
var box_x = parseFloat(element_t.translate[0]) +
parseFloat(element_b['x']) * element_t_scale;
var box_y = parseFloat(element_t.translate[1]) +
parseFloat(element_b['y']) * element_t_scale;
var width = (element_t_scale * element_b['width']);
var height = (element_t_scale * element_b['height']);
var c_x = box_x + (width / 2);
var c_y = box_y + (height / 2);
return [c_x, c_y];
}
/**
* Function get_distance_between_point
* Return float
* This method get the distance betweeen two points
*/
function get_distance_between_point(point1, point2) {
delta_x = Math.abs(point1[0] - point2[0]);
delta_y = Math.abs(point1[1] - point1[1]);
return Math.sqrt(
Math.pow(delta_x, 2) + Math.pow(delta_y, 2));
}
/**
* Function get_angle_of_line
* Return float
* This method get the angle of line and x axe
*/
function get_angle_of_line(point1, point2) {
return Math.atan2(point2[1] - point1[1], point2[0] - point1[0]) * 180 / Math.PI;
}
//~ function wait_for_preload_symbol(symbol) {
//~ preload_symbol(symbol);
//~
//~ while (!is_preload_symbol(symbol)) {
//~ sleep(1000);
//~ }
//~ }
//~
//~ function arrow_by_pieces(id_arrow, element1, element2, step) {
//~
//~ wait_for_preload_symbol('pedo');
//~ wait_for_preload_symbol('caca');
//~ ...
//~ }
function arrow_by_pieces2(id_arrow, element1, element2, step) {
if (typeof(step) === "undefined")
step = 0;
step++;
switch (step) {
case 1:
wait_for_preload_symbols(
["body_arrow.svg#body_arrow",
"head_arrow.svg#head_arrow"],
function() {
arrow_by_pieces2(id_arrow, element1, element2, step)
});
break;
case 2:
var arrow = svg.append("g")
.attr("id", id_arrow)
.attr("style", "opacity: 0");
arrow.append("g")
.attr("id", "body")
.append("use")
.attr("xlink:href", "body_arrow.svg#body_arrow");
arrow.append("g")
.attr("id", "head")
.append("use")
.attr("xlink:href", "head_arrow.svg#head_arrow");
var c_elem1 = get_center_element("#" + element1);
var c_elem2 = get_center_element("#" + element2);
var distance = get_distance_between_point(c_elem1, c_elem2);
var transform = d3.transform();
/*---------------------------------------------*/
/*--- Position of layer arrow (body + head) ---*/
/*---------------------------------------------*/
var arrow = d3.select("#" + id_arrow);
var arrow_body = d3.select("#" + id_arrow + " #body");
var arrow_body_b = arrow_body.node().getBBox();
transform.translate[0] = c_elem1[0];
transform.translate[1] = c_elem1[1] - arrow_body_b['height'] / 2;
transform.rotate = get_angle_of_line(c_elem1, c_elem2);
arrow.attr("transform", transform.toString());
/*---------------------------------------------*/
/*-------- Resize the body arrow width --------*/
/*---------------------------------------------*/
var arrow_body = d3.select("#" + id_arrow + " #body");
var arrow_body_b = arrow_body.node().getBBox();
var arrow_head = d3.select("#" + id_arrow + " #head");
var arrow_head_b = arrow_head.node().getBBox();
var body_width = distance - arrow_head_b['width'];
transform = d3.transform();
transform.scale[0] = body_width / arrow_body_b['width'];
arrow_body.attr("transform", transform.toString());
/*---------------------------------------------*/
/*---------- Position of head arrow -----------*/
/*---------------------------------------------*/
transform = d3.transform();
var arrow_body_t = d3.transform(arrow_body.attr("transform"));
var scale = arrow_body_t.scale[0];
var x = 0 + arrow_body_b['width'] * scale;
var y = 0 + (arrow_body_b['height'] / 2 - arrow_head_b['height'] / 2);
transform.translate[0] = x;
transform.translate[1] = y;
arrow_head.attr("transform", transform.toString());
<g transform="translate(600, 0) scale(0.25)" id="cat4">
<path
id="path8068"
d="m 80,286.64792 28.57143,-31.42857 94.28571,60 5.71429,122.85714 L 200,472.3622 l 82.85714,-54.28571 194.28572,8.57143 191.42857,31.42857 48.57143,40 -11.42857,-65.71429 -48.57143,-94.28571 31.42857,-51.42857 14.28571,-88.57143 62.85715,74.28571 65.71428,0 31.42857,-82.85714 42.85715,94.28572 L 920,340.93363 897.14286,423.79078 868.57143,515.21935 800,663.79078 814.28571,795.21935 760,855.21935 734.28571,649.50506 691.42857,672.3622 714.28571,883.79078 640,895.21935 l -8.57143,-208.57143 -85.71428,71.42857 -160,-14.28571 L 317.14286,695.21935 360,838.07649 l -22.85714,65.71429 -74.28572,-200 -11.42857,162.85714 -74.28571,-17.14286 40,-217.14286 -42.85715,-17.14285 5.71429,-85.71429 -5.71429,-54.28571 -2.85714,-108.57143 -20,-42.85714 z"
style="fill:none;fill-rule:evenodd;stroke: red; fill: white; stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
</g>
</g>
</svg>
</div>
<script type="text/javascript">
var svg = d3.select("svg #zoom");
/*---------------------------------------------*/
/*------- Show the result in one time ---------*/
/*---------------------------------------------*/
arrow.attr("style", "opacity: 1");
break;
}
}
function wait_for_preload_symbols(symbols, callback) {
var count_symbols = symbols.length;
function wait(symbol, callback) {
switch (is_preload_symbol(symbol)) {
case -1:
preload_symbol(symbol);
setTimeout(function() {
wait(symbol,
callback);
}, 100);
break;
case 0:
// Wait
setTimeout(function() {
wait(symbol,
callback);
}, 100);
break;
case 1:
count_symbols--;
break;
}
if (count_symbols == 0) {
//~ setTimeout(function() {
//~ callback();
//~ }, 1000);
callback();
}
}
for (var i in symbols) {
wait(symbols[i], callback);
}
}
function preload_symbol(symbol, param_step) {
var step;
if (typeof(param_step) == "undefined") {
step = 1;
param_step = 1;
}
else {
step = param_step;
}
step++;
var base64symbol = btoa(symbol).replace(/=/g, "");
var callback = function (e) {
preload_symbol(symbol, step);
}
switch (param_step) {
case 1:
d3.select("svg").append("g")
.attr("id", base64symbol)
.attr("data-loaded", 0)
.style("opacity", 0)
.append("use")
.attr("xlink:href", symbol)
.on("load", callback);
break;
case 2:
d3.select("#" + base64symbol).attr("data-loaded", 1);
break;
}
}
function is_preload_symbol(symbol) {
var base64symbol = btoa(symbol).replace(/=/g, "");
if (d3.select("#" + base64symbol).node() === null)
return -1;
return parseInt(d3.select("#" + base64symbol).attr("data-loaded"));
}
</script>
</body>
svg
.append("g")
.attr("id", "circulo")
.attr("transform", function(d) {
return (
"translate(" +
get_center_element("#cat1")[0] +
" " +
get_center_element("#cat1")[1] +
")"
);
})
.append("circle")
.attr("style", "fill: rgb(0, 255, 0);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", 20);
svg
.append("g")
.attr("transform", function(d) {
return (
"translate(" +
get_pos_element("#cat1")[0] +
" " +
get_pos_element("#cat1")[1] +
") scale(" +
get_scale_element("#cat1") +
")"
);
})
.append("rect")
.attr("style", "fill:none; stroke:#ffff00;stroke-width:5")
.attr("width", function(d) {
return get_size_element("#cat1")[0];
})
.attr("height", function(d) {
return get_size_element("#cat1")[1];
});
svg
.append("g")
.attr("transform", function(d) {
return (
"translate(" +
get_center_element("#cat1")[0] +
" " +
get_center_element("#cat1")[1] +
") scale(" +
get_scale_element("#cat1") +
")"
);
})
.append("circle")
.attr("style", "fill: none; stroke-width: 5; stroke: rgb(0, 0, 255);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", get_radius_element("#cat1"));
svg
.append("g")
.attr("id", "circulo")
.attr("transform", function(d) {
return (
"translate(" +
get_center_element("#cat3")[0] +
" " +
get_center_element("#cat3")[1] +
")"
);
})
.append("circle")
.attr("style", "fill: rgb(0, 255, 0);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", 20);
svg
.append("g")
.attr("transform", function(d) {
return (
"translate(" +
get_pos_element("#cat3")[0] +
" " +
get_pos_element("#cat3")[1] +
") scale(" +
get_scale_element("#cat3") +
")"
);
})
.append("rect")
.attr("style", "fill:none; stroke:#ffff00;stroke-width:5")
.attr("width", function(d) {
return get_size_element("#cat3")[0];
})
.attr("height", function(d) {
return get_size_element("#cat3")[1];
});
svg
.append("g")
.attr("transform", function(d) {
return (
"translate(" +
get_center_element("#cat3")[0] +
" " +
get_center_element("#cat3")[1] +
") scale(" +
get_scale_element("#cat3") +
")"
);
})
.append("circle")
.attr("style", "fill: none; stroke-width: 5; stroke: rgb(0, 0, 255);")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", get_radius_element("#cat3"));
arrow_by_pieces2("gatete_flecha", "cat1", "cat2");
arrow_by_pieces2("gatete_flecha2", "cat1", "cat4");
arrow_by_pieces2("gatete_flecha3", "cat3", "cat4");
//~ arrow_by_pieces("gatete_flecha", "cat1", "cat2");
//~ arrow_by_pieces("gatete_flecha", "cat3", "cat4");
/**
* Function get_radius_element
* Return float
* This method get the element radius
*/
function get_radius_element(element) {
var size = get_size_element(element);
return Math.sqrt(Math.pow(size[0] / 2, 2) + Math.pow(size[1] / 2, 2));
}
/**
* Function get_scale_element
* Return float
* This method get the element escale
*/
function get_scale_element(element) {
var element_t = d3.transform(d3.select(element).attr("transform"));
var element_t_scale = parseFloat(element_t["scale"]);
return element_t_scale;
}
/**
* Function get_size_element
* Return array[2]
* This method get the element size [width, height]
*/
function get_size_element(element) {
var element_b = d3
.select(element)
.node()
.getBBox();
return [element_b["width"], element_b["height"]];
}
/**
* Function get_pos_element
* Return array[2]
* This method get the element position [x, y]
*/
function get_pos_element(element) {
var element_t = d3.transform(d3.select(element).attr("transform"));
var element_t_scale = parseFloat(element_t["scale"]);
var element_b = d3
.select(element)
.node()
.getBBox();
var box_x =
parseFloat(element_t.translate[0]) +
parseFloat(element_b["x"]) * element_t_scale;
var box_y =
parseFloat(element_t.translate[1]) +
parseFloat(element_b["y"]) * element_t_scale;
return [box_x, box_y];
}
/**
* Function get_center_element
* Return array[2]
* This method ge2t the element center point [x, y]
*/
function get_center_element(element) {
var element_t = d3.transform(d3.select(element).attr("transform"));
var element_t_scale = parseFloat(element_t["scale"]);
var element_b = d3
.select(element)
.node()
.getBBox();
var box_x =
parseFloat(element_t.translate[0]) +
parseFloat(element_b["x"]) * element_t_scale;
var box_y =
parseFloat(element_t.translate[1]) +
parseFloat(element_b["y"]) * element_t_scale;
var width = element_t_scale * element_b["width"];
var height = element_t_scale * element_b["height"];
var c_x = box_x + width / 2;
var c_y = box_y + height / 2;
return [c_x, c_y];
}
/**
* Function get_distance_between_point
* Return float
* This method get the distance betweeen two points
*/
function get_distance_between_point(point1, point2) {
delta_x = Math.abs(point1[0] - point2[0]);
delta_y = Math.abs(point1[1] - point1[1]);
return Math.sqrt(Math.pow(delta_x, 2) + Math.pow(delta_y, 2));
}
/**
* Function get_angle_of_line
* Return float
* This method get the angle of line and x axe
*/
function get_angle_of_line(point1, point2) {
return (
(Math.atan2(point2[1] - point1[1], point2[0] - point1[0]) * 180) /
Math.PI
);
}
function arrow_by_pieces2(id_arrow, element1, element2, step) {
if (typeof step === "undefined") step = 0;
step++;
switch (step) {
case 1:
wait_for_preload_symbols(
["body_arrow.svg#body_arrow", "head_arrow.svg#head_arrow"],
function() {
arrow_by_pieces2(id_arrow, element1, element2, step);
}
);
break;
case 2:
var arrow = svg
.append("g")
.attr("id", id_arrow)
.attr("style", "opacity: 0");
arrow
.append("g")
.attr("id", "body")
.append("use")
.attr("xlink:href", "body_arrow.svg#body_arrow");
arrow
.append("g")
.attr("id", "head")
.append("use")
.attr("xlink:href", "head_arrow.svg#head_arrow");
var c_elem1 = get_center_element("#" + element1);
var c_elem2 = get_center_element("#" + element2);
var distance = get_distance_between_point(c_elem1, c_elem2);
var transform = d3.transform();
/*---------------------------------------------*/
/*--- Position of layer arrow (body + head) ---*/
/*---------------------------------------------*/
var arrow = d3.select("#" + id_arrow);
var arrow_body = d3.select("#" + id_arrow + " #body");
var arrow_body_b = arrow_body.node().getBBox();
transform.translate[0] = c_elem1[0];
transform.translate[1] = c_elem1[1] - arrow_body_b["height"] / 2;
transform.rotate = get_angle_of_line(c_elem1, c_elem2);
arrow.attr("transform", transform.toString());
/*---------------------------------------------*/
/*-------- Resize the body arrow width --------*/
/*---------------------------------------------*/
var arrow_body = d3.select("#" + id_arrow + " #body");
var arrow_body_b = arrow_body.node().getBBox();
var arrow_head = d3.select("#" + id_arrow + " #head");
var arrow_head_b = arrow_head.node().getBBox();
var body_width = distance - arrow_head_b["width"];
transform = d3.transform();
transform.scale[0] = body_width / arrow_body_b["width"];
arrow_body.attr("transform", transform.toString());
/*---------------------------------------------*/
/*---------- Position of head arrow -----------*/
/*---------------------------------------------*/
transform = d3.transform();
var arrow_body_t = d3.transform(arrow_body.attr("transform"));
var scale = arrow_body_t.scale[0];
var x = 0 + arrow_body_b["width"] * scale;
var y =
0 + (arrow_body_b["height"] / 2 - arrow_head_b["height"] / 2);
transform.translate[0] = x;
transform.translate[1] = y;
arrow_head.attr("transform", transform.toString());
/*---------------------------------------------*/
/*------- Show the result in one time ---------*/
/*---------------------------------------------*/
arrow.attr("style", "opacity: 1");
break;
}
}
function wait_for_preload_symbols(symbols, callback) {
var count_symbols = symbols.length;
function wait(symbol, callback) {
switch (is_preload_symbol(symbol)) {
case -1:
preload_symbol(symbol);
setTimeout(function() {
wait(symbol, callback);
}, 100);
break;
case 0:
// Wait
setTimeout(function() {
wait(symbol, callback);
}, 100);
break;
case 1:
count_symbols--;
break;
}
if (count_symbols == 0) {
//~ setTimeout(function() {
//~ callback();
//~ }, 1000);
callback();
}
}
for (var i in symbols) {
wait(symbols[i], callback);
}
}
function preload_symbol(symbol, param_step) {
var step;
if (typeof param_step == "undefined") {
step = 1;
param_step = 1;
} else {
step = param_step;
}
step++;
var base64symbol = btoa(symbol).replace(/=/g, "");
var callback = function(e) {
preload_symbol(symbol, step);
};
switch (param_step) {
case 1:
d3.select("svg")
.append("g")
.attr("id", base64symbol)
.attr("data-loaded", 0)
.style("opacity", 0)
.append("use")
.attr("xlink:href", symbol)
.on("load", callback);
break;
case 2:
d3.select("#" + base64symbol).attr("data-loaded", 1);
break;
}
}
function is_preload_symbol(symbol) {
var base64symbol = btoa(symbol).replace(/=/g, "");
if (d3.select("#" + base64symbol).node() === null) return -1;
return parseInt(d3.select("#" + base64symbol).attr("data-loaded"));
}
</script>
</body>
</html>

View File

@ -82,10 +82,10 @@ execute_cmd "[ $PANDORA_SERVER_IP ]" 'Check Server IP Address' 'Please define e
# Check OS.
OS=$([[ $(grep '^ID_LIKE=' /etc/os-release) ]] && grep ^ID_LIKE= /etc/os-release | cut -d '=' -f2 | tr -d '"' || grep ^ID= /etc/os-release | cut -d '=' -f2 | tr -d '"')
[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS
[[ $OS == 'fedora' ]] && OS_RELEASE=$OS
[[ $OS == 'centos rhel fedora' ]] && OS_RELEASE=$OS
[[ $OS == 'debian' ]] && OS_RELEASE=$OS
[[ $OS =~ 'rhel' ]] && OS_RELEASE=$OS
[[ $OS =~ 'debian' ]] && OS_RELEASE=$OS
#[[ $OS == 'rhel fedora' ]] && OS_RELEASE=$OS
#[[ $OS == 'centos rhel fedora' ]] && OS_RELEASE=$OS
# initialice logfile
execute_cmd "echo 'Starting community deployment' > $LOGFILE" "All installer activity is logged on $LOGFILE"
@ -113,7 +113,7 @@ execute_cmd "cd $HOME/pandora_deploy_tmp" "Moving to workspace: $HOME/pandora_d
# Downloading and installing packages
if [[ $OS_RELEASE == 'rhel fedora' ]] || [[ $OS_RELEASE == 'centos rhel fedora' ]]; then
if [[ $OS_RELEASE =~ 'rhel' ]]; then
yum install -y perl wget curl perl-Sys-Syslog unzip &>> $LOGFILE
echo -e "${cyan}Instaling agent dependencies...${reset}" ${green}OK${reset}

View File

@ -1,20 +1,33 @@
#!/bin/bash
#######################################################
# PandoraFMS Community online installation script
#######################################################
## Tested versions ##
# Centos 7.9
# define variables
#Constants
PANDORA_CONSOLE=/var/www/html/pandora_console
CONSOLE_PATH=/var/www/html/pandora_console
PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
PANDORA_SERVER_BIN=/usr/bin/pandora_server
PANDORA_HA_BIN=/usr/bin/pandora_ha
PANDORA_TABLES_MIN=160
DBHOST=127.0.0.1
DBNAME=pandora
DBUSER=pandora
DBPASS=pandora
DBPORT=3306
S_VERSION='2021012801'
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='2022020801'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
# define default variables
[ "$TZ" ] || TZ="Europe/Madrid"
[ "$DBHOST" ] || DBHOST=127.0.0.1
[ "$DBNAME" ] || DBNAME=pandora
[ "$DBUSER" ] || DBUSER=pandora
[ "$DBPASS" ] || DBPASS=pandora
[ "$DBPORT" ] || DBPORT=3306
[ "$DBROOTPASS" ] || DBROOTPASS=pandora
[ "$SKIP_PRECHECK" ] || SKIP_PRECHECK=0
[ "$SKIP_DATABASE_INSTALL" ] || SKIP_DATABASE_INSTALL=0
[ "$SKIP_KERNEL_OPTIMIZATIONS" ] || SKIP_KERNEL_OPTIMIZATIONS=0
[ "$POOL_SIZE" ] || POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
# Ansi color code variables
red="\e[0;91m"
green="\e[0;92m"
@ -60,7 +73,7 @@ check_pre_pandora () {
echo -en "${cyan}Checking environment ... ${reset}"
rpm -qa | grep pandora &>> /dev/null && local fail=true
[ -d "$CONSOLE_PATH" ] && local fail=true
[ -d "$PANDORA_CONSOLE" ] && local fail=true
[ -f /usr/bin/pandora_server ] && local fail=true
echo "use $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST &>> /dev/null && local fail=true
@ -98,6 +111,10 @@ fi
execute_cmd "grep -i centos /etc/redhat-release" "Checking Centos" 'Error This is not a Centos Base system'
#Detect OS
os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
execute_cmd "echo $os_name" "OS detected: ${os_name}"
echo -en "${cyan}Check Centos Version...${reset}"
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9])"$/\1/p' /etc/os-release) -eq '7' ]
check_cmd_status 'Error OS version, Centos 7 is expected'
@ -111,7 +128,10 @@ echo "Community installer version: $S_VERSION" >> $LOGFILE
check_root_permissions
# Pre installed pandora
check_pre_pandora
[ "$SKIP_PRECHECK" == 1 ] || check_pre_pandora
#advicing BETA PROGRAM
[ "$PANDORA_BETA" -ne '0' ] && echo -e "${red}BETA version enable using nightly PandoraFMS packages${reset}"
# Connectivity
check_repo_connection
@ -125,6 +145,9 @@ execute_cmd "[ $(grep MemTotal /proc/meminfo | awk '{print $2}') -ge 1700000 ]"
# Check disk size at least 10 Gb free space
execute_cmd "[ $(df -BM / | tail -1 | awk '{print $4}' | tr -d M) -gt 10000 ]" 'Checking Disk (required: 10 GB free min)'
# Setting timezone
execute_cmd "timedatectl set-timezone $TZ" "Setting Timezone $TZ"
# Execute tools check
execute_cmd "awk --version" 'Checking needed tools: awk'
execute_cmd "grep --version" 'Checking needed tools: grep'
@ -148,10 +171,10 @@ http://rpms.remirepo.net/enterprise/remi-release-7.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "yum install -y $extra_repos" "Installing extra repositories"
execute_cmd "yum-config-manager --enable remi-php73" "Configuring PHP"
execute_cmd "yum-config-manager --enable remi-php74" "Configuring PHP"
# Install percona Database
[ -f /etc/my.cnf ] && rm -rf /etc/my.cnf
#[ -f /etc/my.cnf ] && rm -rf /etc/my.cnf
execute_cmd "yum install -y Percona-Server-server-57" "Installing Percona Server"
# Console dependencies
@ -256,6 +279,7 @@ server_dependencies=" \
perl(XML::Twig) \
expect \
openssh-clients \
java \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm"
execute_cmd "yum install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
@ -275,32 +299,61 @@ execute_cmd "yum install -y $vmware_dependencies" "Installing SDK VMware perl de
oracle_dependencies=" \
https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm \
https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm"
execute_cmd "yum install -y $oracle_dependencies" "Installing Oracle Instant client"
execute_cmd "yum install -y $oracle_dependencies || yum reinstall -y $oracle_dependencies" "Installing Oracle Instant client"
#ipam dependencies
ipam_dependencies=" \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
perl(NetAddr::IP) \
perl(Sys::Syslog) \
perl(DBI) \
perl(XML::Simple) \
perl(Geo::IP) \
perl(IO::Socket::INET6) \
perl(XML::Twig)"
execute_cmd "yum install -y $ipam_dependencies" "Installing IPAM Instant client"
# MSSQL dependencies el7
execute_cmd "curl https://packages.microsoft.com/config/rhel/7/prod.repo -o /etc/yum.repos.d/mssql-release.repo" "Configuring Microsoft repositories"
execute_cmd "yum remove unixODBC-utf16 unixODBC-utf16-devel" "Removing default unixODBC packages"
execute_cmd "env ACCEPT_EULA=Y yum install -y msodbcsql17" "Installing ODBC Driver for Microsoft(R) SQL Server(R)"
MS_ID=$(head -1 /etc/odbcinst.ini | tr -d '[]') &>> "$LOGFILE"
#yum config-manager --set-disable packages-microsoft-com-prod
# Disabling SELINUX and firewalld
setenforce 0
sed -i -e "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
systemctl disable firewalld --now &>> $LOGFILE
# Adding standar cnf for initial setup.
cat > /etc/my.cnf << EO_CONFIG_TMP
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EO_CONFIG_TMP
#Configuring Database
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then
execute_cmd "systemctl start mysqld" "Starting database engine"
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
echo """
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!');
UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('pandora');
""" | mysql --connect-expired-password -uroot
export MYSQL_PWD=$DBPASS
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$DBROOTPASS');
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE"
fi
export MYSQL_PWD=$DBROOTPASS
echo -en "${cyan}Creating Pandora FMS database...${reset}"
echo "create database $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST
check_cmd_status 'Error creating database pandora, is this an empty node? if you have a previus installation please contact with support.'
check_cmd_status "Error creating database $DBNAME, is this an empty node? if you have a previus installation please contact with support."
echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO \"$DBUSER\"@'%' identified by \"$DBPASS\"" | mysql -uroot -P$DBPORT -h$DBHOST
export MYSQL_PWD=$DBPASS
#Generating my.cnf
POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
cat > /etc/my.cnf << EO_CONFIG_F
[mysqld]
datadir=/var/lib/mysql
@ -347,10 +400,21 @@ EO_CONFIG_F
execute_cmd "systemctl restart mysqld" "Configuring database engine"
#Define packages
if [ "$PANDORA_BETA" -eq '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
elif [ "$PANDORA_BETA" -ne '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://pandorafms.com/community/community-console-rpm-beta/"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
fi
# Downloading Pandora Packages
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm" "Downloading Pandora FMS Server community"
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm" "Downloading Pandora FMS Console community"
execute_cmd "wget http://firefly.artica.es/centos7/pandorafms_agent_unix-7.0NG.751_x86_64.rpm" "Downloading Pandora FMS Agent community"
execute_cmd "curl -LSs --output pandorafms_server-7.0NG.noarch.rpm ${PANDORA_SERVER_PACKAGE}" "Downloading Pandora FMS Server community"
execute_cmd "curl -LSs --output pandorafms_console-7.0NG.noarch.rpm ${PANDORA_CONSOLE_PACKAGE}" "Downloading Pandora FMS Console community"
execute_cmd "curl -LSs --output pandorafms_agent_unix-7.0NG.noarch.rpm ${PANDORA_AGENT_PACKAGE}" "Downloading Pandora FMS Agent community"
# Install Pandora
execute_cmd "yum install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "installing PandoraFMS packages"
@ -374,13 +438,13 @@ mysql -u$DBUSER -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb_data.sq
check_cmd_status 'Error Loading database schema data'
# Configure console
cat > $CONSOLE_PATH/include/config.php << EO_CONFIG_F
cat > $PANDORA_CONSOLE/include/config.php << EO_CONFIG_F
<?php
\$config["dbtype"] = "mysql";
\$config["dbname"]="$DBNAME";
\$config["dbuser"]="$DBUSER";
\$config["dbpass"]="$DBPASS";
\$config["dbhost"]="localhost";
\$config["dbhost"]="$DBHOST";
\$config["homedir"]="$PANDORA_CONSOLE";
\$config["homeurl"]="/pandora_console";
error_reporting(0);
@ -420,9 +484,9 @@ sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/images/.htaccess
sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/attachment/.htaccess
# Fixing console permissions
chmod 600 $CONSOLE_PATH/include/config.php
chown apache. $CONSOLE_PATH/include/config.php
mv $CONSOLE_PATH/install.php $CONSOLE_PATH/install.done
chmod 600 $PANDORA_CONSOLE/include/config.php
chown apache. $PANDORA_CONSOLE/include/config.php
mv $PANDORA_CONSOLE/install.php $PANDORA_CONSOLE/install.done
# Prepare php.ini
sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
@ -449,6 +513,10 @@ sed -i -e "s/^dbname.*/dbname $DBNAME/g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbuser.*/dbuser $DBUSER/g" $PANDORA_SERVER_CONF
sed -i -e "s|^dbpass.*|dbpass $DBPASS|g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbport.*/dbport $DBPORT/g" $PANDORA_SERVER_CONF
sed -i -e "s/^#.mssql_driver.*/mssql_driver $MS_ID/g" $PANDORA_SERVER_CONF
# Enable agent remote config
sed -i "s/^remote_config.*$/remote_config 1/g" $PANDORA_AGENT_CONF
# Set Oracle environment for pandora_server
cat > /etc/pandora/pandora_server.env << 'EOF_ENV'
@ -459,7 +527,7 @@ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/$VERSION/client64/lib
export ORACLE_HOME=/usr/lib/oracle/$VERSION/client64
EOF_ENV
# Kernel optimization
if [ "$SKIP_KERNEL_OPTIMIZATIONS" -eq '0' ] ; then
cat >> /etc/sysctl.conf <<EO_KO
# Pandora FMS Optimization
@ -487,6 +555,7 @@ net.core.optmem_max = 81920
EO_KO
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
fi
# Fix pandora_server.{log,error} permissions to allow Console check them
chown pandora:apache /var/log/pandora
@ -563,7 +632,7 @@ execute_cmd "echo \"* * * * * root wget -q -O - --no-check-certificate http://12
echo "* * * * * root wget -q -O - --no-check-certificate http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log" >> /etc/crontab
## Enabling agent
systemctl enable pandora_agent_daemon &>> $LOGFILE
execute_cmd "systemctl start pandora_agent_daemon" "starting Pandora FMS Agent"
execute_cmd "systemctl start pandora_agent_daemon" "Starting Pandora FMS Agent"
#SSH banner
[ "$(curl -s ifconfig.me)" ] && ipplublic=$(curl -s ifconfig.me)
@ -593,4 +662,4 @@ execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
GREEN='\033[01;32m'
NONE='\033[0m'
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use this credentials to login in the console "g"[ User: admin / Password: pandora ]"n" \n"}'
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'

View File

@ -1,17 +1,36 @@
#!/bin/bash
#######################################################
# PandoraFMS Community online installation script
#######################################################
## Tested versions ##
# Centos 8.4, 8.5
# Rocky 8.4, 8.5
# Almalinuz 8.4, 8.5
# RedHat 8.5
# define variables
#Constants
PANDORA_CONSOLE=/var/www/html/pandora_console
CONSOLE_PATH=/var/www/html/pandora_console
PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
DBHOST=127.0.0.1
DBNAME=pandora
DBUSER=pandora
DBPASS=pandora
DBPORT=3306
S_VERSION='2021070101'
PANDORA_AGENT_CONF=/etc/pandora/pandora_agent.conf
S_VERSION='2022020801'
LOGFILE="/tmp/pandora-deploy-community-$(date +%F).log"
# define default variables
[ "$TZ" ] || TZ="Europe/Madrid"
[ "$DBHOST" ] || DBHOST=127.0.0.1
[ "$DBNAME" ] || DBNAME=pandora
[ "$DBUSER" ] || DBUSER=pandora
[ "$DBPASS" ] || DBPASS=pandora
[ "$DBPORT" ] || DBPORT=3306
[ "$DBROOTPASS" ] || DBROOTPASS=pandora
[ "$SKIP_PRECHECK" ] || SKIP_PRECHECK=0
[ "$SKIP_DATABASE_INSTALL" ] || SKIP_DATABASE_INSTALL=0
[ "$SKIP_KERNEL_OPTIMIZATIONS" ] || SKIP_KERNEL_OPTIMIZATIONS=0
[ "$POOL_SIZE" ] || POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
[ "$PANDORA_BETA" ] || PANDORA_BETA=0
# Ansi color code variables
red="\e[0;91m"
green="\e[0;92m"
@ -56,7 +75,7 @@ check_pre_pandora () {
echo -en "${cyan}Checking environment ... ${reset}"
rpm -qa | grep pandora &>> /dev/null && local fail=true
[ -d "$CONSOLE_PATH" ] && local fail=true
[ -d "$PANDORA_CONSOLE" ] && local fail=true
[ -f /usr/bin/pandora_server ] && local fail=true
echo "use $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST &>> /dev/null && local fail=true
@ -74,7 +93,7 @@ check_root_permissions () {
echo -en "${cyan}Checking root account... ${reset}"
if [ "$(whoami)" != "root" ]; then
echo -e "${red}Fail${reset}"
echo "Please use a root account or sudo for installing PandoraFMS"
echo "Please use a root account or sudo for installing Pandora FMS"
echo "Error installing Pandora FMS for detailed error please check log: $LOGFILE"
exit 1
@ -87,15 +106,19 @@ check_root_permissions () {
echo "Starting PandoraFMS Community deployment EL8 ver. $S_VERSION"
# Centos Version
if [ ! "$(grep -Ei 'centos|rocky' /etc/redhat-release)" ]; then
printf "\n ${red}Error this is not a Centos/Rocky Base system, this installer is compatible with Centos/Rocky systems only${reset}\n"
if [ ! "$(grep -Ei 'centos|rocky|Almalinux|Red Hat Enterprise' /etc/redhat-release)" ]; then
printf "\n ${red}Error this is not a Centos/Rocky/Almalinux Base system, this installer is compatible with RHEL/Almalinux/Centos/Rockylinux systems only${reset}\n"
exit 1
fi
echo -en "${cyan}Check Centos Version...${reset}"
[ $(sed -nr 's/VERSION_ID+=\s*"([0-9]).*"$/\1/p' /etc/os-release) -eq '8' ]
check_cmd_status 'Error OS version, Centos/Rocky 8+ is expected'
check_cmd_status 'Error OS version, RHEL/Almalinux/Centos/Rockylinux 8+ is expected'
#Detect OS
os_name=$(grep ^PRETTY_NAME= /etc/os-release | cut -d '=' -f2 | tr -d '"')
execute_cmd "echo $os_name" "OS detected: ${os_name}"
# initialice logfile
execute_cmd "echo 'Starting community deployment' > $LOGFILE" "All installer activity is logged on $LOGFILE"
@ -106,7 +129,10 @@ echo "Community installer version: $S_VERSION" >> "$LOGFILE"
check_root_permissions
# Pre installed pandora
check_pre_pandora
[ "$SKIP_PRECHECK" == 1 ] || check_pre_pandora
#advicing BETA PROGRAM
[ "$PANDORA_BETA" -ne '0' ] && echo -e "${red}BETA version enable using nightly PandoraFMS packages${reset}"
# Connectivity
check_repo_connection
@ -120,6 +146,10 @@ execute_cmd "[ $(grep MemTotal /proc/meminfo | awk '{print $2}') -ge 1700000 ]"
# Check disk size at least 10 Gb free space
execute_cmd "[ $(df -BM / | tail -1 | awk '{print $4}' | tr -d M) -gt 10000 ]" 'Checking Disk (required: 10 GB free min)'
# Setting timezone
rm -rf /etc/localtime &>> "$LOGFILE"
execute_cmd "timedatectl set-timezone $TZ" "Setting Timezone $TZ"
# Execute tools check
execute_cmd "awk --version" 'Checking needed tools: awk'
execute_cmd "grep --version" 'Checking needed tools: grep'
@ -131,25 +161,57 @@ rm -rf "$HOME"/pandora_deploy_tmp/*.rpm* &>> "$LOGFILE"
mkdir "$HOME"/pandora_deploy_tmp &>> "$LOGFILE"
execute_cmd "cd $HOME/pandora_deploy_tmp" "Moving to workspace: $HOME/pandora_deploy_tmp"
## Extra steps on redhat envs
if [ "$(grep -Ei 'Red Hat Enterprise' /etc/redhat-release)" ]; then
## In case REDHAT
# Check susbscription manager status:
echo -en "${cyan}Checking Red Hat Enterprise subscription... ${reset}"
subscription-manager status &>> "$LOGFILE"
subscription-manager list &>> "$LOGFILE"
subscription-manager list | grep 'Status:' | grep Subscribed &>> "$LOGFILE"
check_cmd_status 'Error checking subscription status, make sure your server is activated and suscribed to Red Hat Enterprise repositories'
# Ckeck repolist
dnf repolist &>> "$LOGFILE"
echo -en "${cyan}Checking Red Hat Enterprise repolist... ${reset}"
dnf repolist | grep 'rhel-8-for-x86_64-baseos-rpms' &>> "$LOGFILE"
check_cmd_status 'Error checking repositories status, could try a subscription-manager attach command or contact sysadmin'
#install extra repos
extra_repos=" \
tar \
dnf-utils \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm \
http://rpms.remirepo.net/enterprise/remi-release-8.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "dnf install -y $extra_repos" "Installing extra repositories"
execute_cmd "subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms" "Enabling subscription to codeready-builder"
else
# For alma/rocky/centos
extra_repos=" \
tar \
dnf-utils \
epel-release \
http://rpms.remirepo.net/enterprise/remi-release-8.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "dnf install -y $extra_repos" "Installing extra repositories"
execute_cmd "dnf config-manager --set-enabled powertools" "Configuring Powertools"
fi
#Installing wget
execute_cmd "dnf install -y wget" "Installing wget"
#Installing extra repositiries
extra_repos=" \
tar \
dnf-utils \
epel-release \
http://rpms.remirepo.net/enterprise/remi-release-8.rpm \
https://repo.percona.com/yum/percona-release-latest.noarch.rpm"
execute_cmd "dnf install -y $extra_repos" "Installing extra repositories"
execute_cmd "dnf config-manager --set-enabled powertools" "Configuring Powertools"
execute_cmd "dnf module reset -y php " "Disabling standard PHP module"
execute_cmd "dnf module install -y php:remi-7.3" "Configuring PHP"
execute_cmd "dnf module install -y php:remi-7.4" "Configuring PHP"
# Install percona Database
execute_cmd "dnf module disable -y mysql" "Disabiling mysql module"
rm -rf /etc/my.cnf
#rm -rf /etc/my.cnf
execute_cmd "dnf install -y Percona-Server-server-57" "Installing Percona Server"
# Console dependencies
@ -231,6 +293,7 @@ console_dependencies=" \
xorg-x11-fonts-misc \
poppler-data \
php-yaml \
mod_ssl \
http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm \
http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm"
@ -255,7 +318,8 @@ server_dependencies=" \
perl(IO::Socket::INET6) \
perl(XML::Twig) \
expect \
openssh-clients \
openssh-clients \
java \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
http://firefly.artica.es/centos7/wmic-1.4-1.el7.x86_64.rpm"
execute_cmd "dnf install -y $server_dependencies" "Installing Pandora FMS Server dependencies"
@ -281,6 +345,7 @@ oracle_dependencies=" \
https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm"
execute_cmd "dnf install -y $oracle_dependencies" "Installing Oracle Instant client"
#ipam dependencies
ipam_dependencies=" \
http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm \
perl(NetAddr::IP) \
@ -290,32 +355,49 @@ ipam_dependencies=" \
perl(Geo::IP) \
perl(IO::Socket::INET6) \
perl(XML::Twig)"
execute_cmd "dnf install -y $ipam_dependencies" "Installing Oracle Instant client"
execute_cmd "dnf install -y $ipam_dependencies" "Installing IPAM Instant client"
# MSSQL dependencies el8
execute_cmd "curl https://packages.microsoft.com/config/rhel/8/prod.repo -o /etc/yum.repos.d/mssql-release.repo" "Configuring Microsoft repositories"
execute_cmd "dnf remove unixODBC-utf16 unixODBC-utf16-devel" "Removing default unixODBC packages"
execute_cmd "env ACCEPT_EULA=Y dnf install -y msodbcsql17" "Installing ODBC Driver for Microsoft(R) SQL Server(R)"
MS_ID=$(head -1 /etc/odbcinst.ini | tr -d '[]') &>> "$LOGFILE"
#dnf config-manager --set-disable packages-microsoft-com-prod
# Disabling SELINUX and firewalld
setenforce 0 &>> "$LOGFILE"
sed -i -e "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config &>> "$LOGFILE"
systemctl disable firewalld --now &>> "$LOGFILE"
# Adding standar cnf for initial setup.
cat > /etc/my.cnf << EO_CONFIG_TMP
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EO_CONFIG_TMP
#Configuring Database
if [ "$SKIP_DATABASE_INSTALL" -eq '0' ] ; then
execute_cmd "systemctl start mysqld" "Starting database engine"
export MYSQL_PWD=$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)
echo """
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!');
UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('pandora');
""" | mysql --connect-expired-password -uroot
export MYSQL_PWD=$DBPASS
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$DBROOTPASS');
""" | mysql --connect-expired-password -uroot &>> "$LOGFILE"
fi
export MYSQL_PWD=$DBROOTPASS
echo -en "${cyan}Creating Pandora FMS database...${reset}"
echo "create database $DBNAME" | mysql -uroot -P$DBPORT -h$DBHOST
check_cmd_status 'Error creating database pandora, is this an empty node? if you have a previus installation please contact with support.'
check_cmd_status "Error creating database $DBNAME, is this an empty node? if you have a previus installation please contact with support."
echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO \"$DBUSER\"@'%' identified by \"$DBPASS\"" | mysql -uroot -P$DBPORT -h$DBHOST
export MYSQL_PWD=$DBPASS
#Generating my.cnf
POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{printf "%.2f \n", $(NF-1)*0.4/1024}' | sed "s/\\..*$/M/g")
cat > /etc/my.cnf << EO_CONFIG_F
[mysqld]
datadir=/var/lib/mysql
@ -362,13 +444,25 @@ EO_CONFIG_F
execute_cmd "systemctl restart mysqld" "Configuring database engine"
#Define packages
if [ "$PANDORA_BETA" -eq '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
elif [ "$PANDORA_BETA" -ne '0' ] ; then
[ "$PANDORA_SERVER_PACKAGE" ] || PANDORA_SERVER_PACKAGE="http://firefly.artica.es/pandora_enterprise_nightlies/pandorafms_server-latest.x86_64.rpm"
[ "$PANDORA_CONSOLE_PACKAGE" ] || PANDORA_CONSOLE_PACKAGE="https://pandorafms.com/community/community-console-rpm-beta/"
[ "$PANDORA_AGENT_PACKAGE" ] || PANDORA_AGENT_PACKAGE="http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm"
fi
# Downloading Pandora Packages
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm" "Downloading Pandora FMS Server community"
execute_cmd "wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm" "Downloading Pandora FMS Console community"
execute_cmd "wget http://firefly.artica.es/centos7/pandorafms_agent_unix-7.0NG.751_x86_64.rpm" "Downloading Pandora FMS Agent community"
execute_cmd "curl -LSs --output pandorafms_server-7.0NG.noarch.rpm ${PANDORA_SERVER_PACKAGE}" "Downloading Pandora FMS Server community"
execute_cmd "curl -LSs --output pandorafms_console-7.0NG.noarch.rpm ${PANDORA_CONSOLE_PACKAGE}" "Downloading Pandora FMS Console community"
execute_cmd "curl -LSs --output pandorafms_agent_unix-7.0NG.noarch.rpm ${PANDORA_AGENT_PACKAGE}" "Downloading Pandora FMS Agent community"
# Install Pandora
execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "installing PandoraFMS packages"
execute_cmd "dnf install -y $HOME/pandora_deploy_tmp/pandorafms*.rpm" "Installing Pandora FMS packages"
# Copy gotty utility
execute_cmd "wget https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_amd64.tar.gz" 'Dowloading gotty util'
@ -391,13 +485,13 @@ mysql -u$DBUSER -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb_data.sq
check_cmd_status 'Error Loading database schema data'
# Configure console
cat > $CONSOLE_PATH/include/config.php << EO_CONFIG_F
cat > $PANDORA_CONSOLE/include/config.php << EO_CONFIG_F
<?php
\$config["dbtype"] = "mysql";
\$config["dbname"]="$DBNAME";
\$config["dbuser"]="$DBUSER";
\$config["dbpass"]="$DBPASS";
\$config["dbhost"]="localhost";
\$config["dbhost"]="$DBHOST";
\$config["homedir"]="$PANDORA_CONSOLE";
\$config["homeurl"]="/pandora_console";
error_reporting(0);
@ -437,9 +531,9 @@ sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/images/.htaccess
sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/attachment/.htaccess
# Fixing console permissions
chmod 600 $CONSOLE_PATH/include/config.php
chown apache. $CONSOLE_PATH/include/config.php
mv $CONSOLE_PATH/install.php $CONSOLE_PATH/install.done
chmod 600 $PANDORA_CONSOLE/include/config.php
chown apache. $PANDORA_CONSOLE/include/config.php
mv $PANDORA_CONSOLE/install.php $PANDORA_CONSOLE/install.done &>> "$LOGFILE"
# Prepare php.ini
sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
@ -466,6 +560,10 @@ sed -i -e "s/^dbname.*/dbname $DBNAME/g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbuser.*/dbuser $DBUSER/g" $PANDORA_SERVER_CONF
sed -i -e "s|^dbpass.*|dbpass $DBPASS|g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbport.*/dbport $DBPORT/g" $PANDORA_SERVER_CONF
sed -i -e "s/^#.mssql_driver.*/mssql_driver $MS_ID/g" $PANDORA_SERVER_CONF
# Enable agent remote config
sed -i "s/^remote_config.*$/remote_config 1/g" $PANDORA_AGENT_CONF
# Set Oracle environment for pandora_server
cat > /etc/pandora/pandora_server.env << 'EOF_ENV'
@ -477,6 +575,8 @@ export ORACLE_HOME=/usr/lib/oracle/$VERSION/client64
EOF_ENV
# Kernel optimization
if [ "$SKIP_KERNEL_OPTIMIZATIONS" -eq '0' ] ; then
cat >> /etc/sysctl.conf <<EO_KO
# Pandora FMS Optimization
@ -504,6 +604,7 @@ net.core.optmem_max = 81920
EO_KO
[ -d /dev/lxd/ ] || execute_cmd "sysctl --system" "Applying Kernel optimization"
fi
# Fix pandora_server.{log,error} permissions to allow Console check them
chown pandora:apache /var/log/pandora
@ -558,7 +659,7 @@ chmod 0644 /etc/logrotate.d/pandora_server
chmod 0644 /etc/logrotate.d/pandora_agent
# Add websocket engine start script.
mv /var/www/html/pandora_console/pandora_websocket_engine /etc/init.d/
mv /var/www/html/pandora_console/pandora_websocket_engine /etc/init.d/ &>> "$LOGFILE"
chmod +x /etc/init.d/pandora_websocket_engine
# Start Websocket engine
@ -569,7 +670,7 @@ systemctl enable pandora_websocket_engine &>> "$LOGFILE"
# Enable pandora ha service
systemctl enable pandora_server --now &>> "$LOGFILE"
execute_cmd "systemctl start pandora_server" "Starting Pandora FMS Server"
execute_cmd "/etc/init.d/pandora_server start" "Starting Pandora FMS Server"
# starting tentacle server
systemctl enable tentacle_serverd &>> "$LOGFILE"
@ -580,7 +681,7 @@ execute_cmd "echo \"* * * * * root wget -q -O - --no-check-certificate http://12
echo "* * * * * root wget -q -O - --no-check-certificate http://127.0.0.1/pandora_console/enterprise/cron.php >> $PANDORA_CONSOLE/log/cron.log" >> /etc/crontab
## Enabling agent
systemctl enable pandora_agent_daemon &>> "$LOGFILE"
execute_cmd "systemctl start pandora_agent_daemon" "starting Pandora FMS Agent"
execute_cmd "systemctl start pandora_agent_daemon" "Starting Pandora FMS Agent"
#SSH banner
[ "$(curl -s ifconfig.me)" ] && ipplublic=$(curl -s ifconfig.me)
@ -610,4 +711,4 @@ execute_cmd "rm -rf $HOME/pandora_deploy_tmp" "Removing temporary files"
GREEN='\033[01;32m'
NONE='\033[0m'
printf " -> Go to Public ${green}http://"$ipplublic"/pandora_console${reset} to manage this server"
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use this credentials to login in the console "g"[ User: admin / Password: pandora ]"n" \n"}'
ip addr | grep -w "inet" | grep -v "127.0.0.1" | grep -v -e "172.1[0-9].0.1" | awk '{print $2}' | awk -v g=$GREEN -v n=$NONE -F '/' '{printf "\n -> Go to Local "g"http://"$1"/pandora_console"n" to manage this server \n -> Use these credentials to log in Pandora Console "g"[ User: admin / Password: pandora ]"n" \n"}'

View File

@ -1,11 +1,12 @@
FROM pandorafms/pandorafms-base
FROM pandorafms/pandorafms-base:centos7
# Build variables.
ARG BRANCH=develop
ARG DB_PASS=pandora
# Clone the Pandora FMS repo.
RUN git clone --depth 1 -b "$BRANCH" https://github.com/pandorafms/pandorafms.git /tmp/pandorafms
RUN git clone --depth 1 -b "$BRANCH" https://github.com/pandorafms/pandorafms.git /tmp/pandorafms || \
git clone --depth 1 -b develop https://github.com/pandorafms/pandorafms.git /tmp/pandorafms
# Install the Pandora FMS Server.
RUN cd /tmp/pandorafms/pandora_server && \
@ -21,21 +22,27 @@ RUN cd /tmp/pandorafms/pandora_agents/unix && \
RUN sed -i "s/#ServerName.*/ServerName localhost:80/" /etc/httpd/conf/httpd.conf
# Install the Pandora FMS Console.
RUN service mysqld start && \
/usr/bin/mysqladmin -u root password "$DB_PASS" && \
service httpd start && \
cp -r /tmp/pandorafms/pandora_console /var/www/html && \
chown -R apache.apache /var/www/html/pandora_console/ && \
python /tmp/pandorafms/tests/install_console.py
RUN rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql && \
mkdir -p /var/log/mysql/ && chown mysql. /var/log/mysql && \
chown mysql. -R /var/lib/mysql && \
sudo -u mysql mysqld --initialize --explicit_defaults_for_timestamp && \
sudo -u mysql mysqld --daemonize & \
sleep 50 && \
mysql_default_pass=$(cat /var/log/mysqld.log | grep "temporary password" | awk '{print $NF}') && \
mysqladmin -u root -p"$mysql_default_pass" --user=root password 'pandora' && \
httpd -k start && \
cp -r /tmp/pandorafms/pandora_console /var/www/html && \
chown -R apache.apache /var/www/html/pandora_console/ && \
python /tmp/pandorafms/tests/install_console.py
# Redirect HTTP requests to / to the Pandora FMS Console.
RUN echo '<meta http-equiv="refresh" content="0;url=/pandora_console">' > /var/www/html/index.html
# Create the entrypoint script.
RUN echo -e '#/bin/bash\n \
service mysqld start &&\n \
service httpd start &&\n \
service crond start &&\n \
sudo -u mysql mysqld --daemonize &&\n \
httpd -k start &&\n \
/usr/sbin/crond &&\n \
/etc/init.d/pandora_agent_daemon start && \
/etc/init.d/pandora_server start && \
tail -f /var/log/pandora/pandora_server.log' \

View File

@ -1,14 +1,14 @@
#docker build -t pandorafms/pandorafms-open-base-el8 -f $HOME/code/pandorafms/extras/docker/centos8/base/Dockerfile $HOME/code/pandorafms/extras/docker/centos8/base/
#docker push pandorafms/pandorafms-open-base-el8
FROM centos:8
FROM rockylinux:8
RUN dnf install -y --setopt=tsflags=nodocs \
epel-release \
dnf-utils \
http://rpms.remirepo.net/enterprise/remi-release-8.rpm
RUN dnf module reset -y php && dnf module install -y php:remi-7.3
RUN dnf module reset -y php && dnf module install -y php:remi-7.4
RUN dnf config-manager --set-enabled powertools
# Install console dependencies

183203
index.pot

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, AIX version
# Version 7.0NG.761, AIX version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, FreeBSD Version
# Version 7.0NG.761, FreeBSD Version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, HP-UX Version
# Version 7.0NG.761, HP-UX Version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, GNU/Linux
# Version 7.0NG.761, GNU/Linux
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, GNU/Linux
# Version 7.0NG.761, GNU/Linux
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, Solaris Version
# Version 7.0NG.761, Solaris Version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,6 +1,6 @@
# Base config file for Pandora FMS Windows Agent
# (c) 2006-2021 Artica Soluciones Tecnologicas
# Version 7.0NG.757
# Version 7.0NG.761
# This program is Free Software, you can redistribute it and/or modify it
# under the terms of the GNU General Public Licence as published by the Free Software
# Foundation; either version 2 of the Licence or any later version

View File

@ -1141,7 +1141,7 @@ sub guess_os_version {
# Linux
if ($os eq 'linux') {
$os_version = `lsb_release -sd 2>$DevNull`;
$os_version = `cat /etc/*ease|grep PRETTY| cut -f 2 -d= | tr -d '"' 2>$DevNull`;
# AIX
} elsif ($os eq 'aix') {
$os_version = "$2.$1" if (`uname -rv` =~ /\s*(\d)\s+(\d)\s*/);

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents
# Version 7.0NG.757, AIX version
# Version 7.0NG.761, AIX version
# General Parameters
# ==================

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents
# Version 7.0NG.757
# Version 7.0NG.761
# FreeBSD/IPSO version
# Licenced under GPL licence, 2003-2007 Sancho Lerena

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents
# Version 7.0NG.757, HPUX Version
# Version 7.0NG.761, HPUX Version
# General Parameters
# ==================

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757
# Version 7.0NG.761
# Licensed under GPL license v2,
# (c) 2003-2021 Artica Soluciones Tecnologicas
# please visit http://pandora.sourceforge.net

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757
# Version 7.0NG.761
# Licensed under GPL license v2,
# (c) 2003-2021 Artica Soluciones Tecnologicas
# please visit http://pandora.sourceforge.net

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757
# Version 7.0NG.761
# Licensed under GPL license v2,
# please visit http://pandora.sourceforge.net

View File

@ -1,6 +1,6 @@
# Fichero de configuracion base de agentes de Pandora
# Base config file for Pandora agents
# Version 7.0NG.757, Solaris version
# Version 7.0NG.761, Solaris version
# General Parameters
# ==================

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, AIX version
# Version 7.0NG.761, AIX version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.757-211019
Version: 7.0NG.761-220418
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.757-211019"
pandora_version="7.0NG.761-220418"
echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

@ -31,7 +31,7 @@ fi
if [ "$#" -ge 2 ]; then
VERSION="$2"
else
VERSION="7.0NG.757"
VERSION="7.0NG.761"
fi
# Path for the generated DMG file

View File

@ -19,11 +19,11 @@
<choice id="com.pandorafms.pandorafms_src" visible="false">
<pkg-ref id="com.pandorafms.pandorafms_src"/>
</choice>
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.757" onConclusion="none">pandorafms_src.pdk</pkg-ref>
<pkg-ref id="com.pandorafms.pandorafms_src" version="7.0NG.761" onConclusion="none">pandorafms_src.pdk</pkg-ref>
<choice id="com.pandorafms.pandorafms_uninstall" visible="true" customLocation="/Applications">
<pkg-ref id="com.pandorafms.pandorafms_uninstall"/>
</choice>
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.757" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
<pkg-ref id="com.pandorafms.pandorafms_uninstall" version="7.0NG.761" onConclusion="none">pandorafms_uninstall.pdk</pkg-ref>
<!-- <installation-check script="check()" />
<script>
<![CDATA[

View File

@ -5,9 +5,9 @@
<key>CFBundleIconFile</key> <string>pandorafms.icns</string>
<key>CFBundleIdentifier</key> <string>com.pandorafms.pandorafms_uninstall</string>
<key>CFBundleVersion</key> <string>7.0NG.757</string>
<key>CFBundleGetInfoString</key> <string>7.0NG.757 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
<key>CFBundleShortVersionString</key> <string>7.0NG.757</string>
<key>CFBundleVersion</key> <string>7.0NG.761</string>
<key>CFBundleGetInfoString</key> <string>7.0NG.761 Pandora FMS Agent uninstaller for MacOS by Artica ST on Aug 2020</string>
<key>CFBundleShortVersionString</key> <string>7.0NG.761</string>
<key>NSPrincipalClass</key><string>NSApplication</string>
<key>NSMainNibFile</key><string>MainMenu</string>

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, GNU/Linux
# Version 7.0NG.761, GNU/Linux
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, FreeBSD Version
# Version 7.0NG.761, FreeBSD Version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, HP-UX Version
# Version 7.0NG.761, HP-UX Version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, GNU/Linux
# Version 7.0NG.761, GNU/Linux
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, GNU/Linux
# Version 7.0NG.761, GNU/Linux
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, NetBSD Version
# Version 7.0NG.761, NetBSD Version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -47,4 +47,3 @@ License
The project is distributed under the GPL License v2 or later.
Copyright (C) 2004-2011 Pandora FMS development team

View File

@ -1,5 +1,5 @@
# Base config file for Pandora FMS agents
# Version 7.0NG.757, Solaris Version
# Version 7.0NG.761, Solaris Version
# Licensed under GPL license v2,
# Copyright (c) 2003-2021 Artica Soluciones Tecnologicas
# http://www.pandorafms.com

View File

@ -39,7 +39,7 @@ BEGIN {
use File::Copy;
use Scalar::Util qw(looks_like_number);
use lib '/usr/lib/perl5';
BEGIN { push @INC, '/usr/lib/perl5'; }
################################################################################
# Erase blank spaces before and after the string
@ -312,7 +312,7 @@ BEGIN {
$YAML = 1;
}
use lib '/usr/lib/perl5';
BEGIN { push @INC, '/usr/lib/perl5'; }
our @ISA = ("Exporter");
our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
@ -1003,7 +1003,7 @@ use IO::Socket;
use Sys::Syslog;
use Time::Local;
use lib '/usr/lib/perl5';
BEGIN { push @INC, '/usr/lib/perl5'; }
# Agent XML data
my $Xml;
@ -1014,8 +1014,8 @@ my $Sem = undef;
# Semaphore used to control the number of threads
my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.757';
use constant AGENT_BUILD => '211019';
use constant AGENT_VERSION => '7.0NG.761';
use constant AGENT_BUILD => '220418';
# Agent log default file size maximum and instances
use constant DEFAULT_MAX_LOG_SIZE => 600000;
@ -2736,7 +2736,7 @@ sub guess_os_version ($) {
# Linux
if ($os eq 'linux') {
$os_version = `lsb_release -sd 2>$DevNull`;
$os_version = `cat /etc/*ease|grep PRETTY| cut -f 2 -d= | tr -d '"' 2>$DevNull`;
# AIX
} elsif ($os eq 'aix') {
$os_version = "$2.$1" if (`uname -rv` =~ /\s*(\d)\s+(\d)\s*/);

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent
#
%define name pandorafms_agent_unix
%define version 7.0NG.757
%define release 211019
%define version 7.0NG.761
%define release 220418
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}
@ -24,7 +24,7 @@ Requires(preun): chkconfig /bin/rm /usr/sbin/userdel
Requires: coreutils unzip
Requires: util-linux procps grep
Requires: /sbin/ip /bin/awk
Requires: perl perl(Sys::Syslog) perl(IO::Compress::Zip)
Requires: perl(Sys::Syslog) perl(IO::Compress::Zip)
# Required by plugins
#Requires: sh-utils sed passwd net-tools rpm
AutoReq: 0

View File

@ -2,8 +2,8 @@
#Pandora FMS Linux Agent
#
%define name pandorafms_agent_unix
%define version 7.0NG.757
%define release 211019
%define version 7.0NG.761
%define release 220418
Summary: Pandora FMS Linux agent, PERL version
Name: %{name}

View File

@ -42,6 +42,8 @@ pidof_pandora () {
elif [ "$OS_NAME" = "SunOS" ]
then
ZONENAME_CMD="/bin/zonename"
# Has to be run from sources. The binary version inserts blanks between
# $DAEMON and $PANDORA_PATH.
TRUNCATED_DAEMON=`echo "$DAEMON $PANDORA_PATH" | cut -c1-20`
if [ -x $ZONENAME_CMD ]
then
@ -59,7 +61,7 @@ pidof_pandora () {
then
# Virtuozzo/OpenVZ
local _pid _ctid _pids
_pids=`ps -Af | grep "$DAEMON $PANDORA_PATH" | grep -v grep | awk '{ print $2 }'`
_pids=`ps -Af | grep "$DAEMON" | grep "$PANDORA_PATH" | grep -v grep | awk '{ print $2 }'`
[ "$_pids" ] && for _pid in $_pids
do
_ctid=`/usr/sbin/vzpid $_pid | awk '$1 == '$_pid' { print $2 }'`
@ -71,9 +73,9 @@ pidof_pandora () {
done
elif [ "$OS_NAME" = "AIX" ]; then
# AIX
PANDORA_PID=`ps -ef | grep "$DAEMON $PANDORA_PATH" | grep -v grep | awk '{ print $2 }'`
PANDORA_PID=`ps -ef | grep "$DAEMON" | grep "$PANDORA_PATH" | grep -v grep | awk '{ print $2 }'`
else
PANDORA_PID=`ps -Afw | grep "$DAEMON $PANDORA_PATH" | grep -v grep | awk '{ print $2 }'`
PANDORA_PID=`ps -Afw | grep "$DAEMON" | grep "$PANDORA_PATH" | grep -v grep | awk '{ print $2 }'`
fi
echo $PANDORA_PID

View File

@ -9,8 +9,8 @@
# Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license.
# **********************************************************************
PI_VERSION="7.0NG.757"
PI_BUILD="211019"
PI_VERSION="7.0NG.761"
PI_BUILD="220418"
OS_NAME=`uname -s`
FORCE=0

View File

@ -14,7 +14,7 @@ use strict;
use LWP::Simple;
use LWP::UserAgent;
use MIME::Base64;
use lib '/usr/lib/perl5';
BEGIN { push @INC, '/usr/lib/perl5'; }
use PandoraFMS::Tools;
# Init

View File

@ -1,59 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Fandora FMS - Generate SSH keys step-by-step</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="author" content="Sancho Lerena, Raul Mateos and others" />
<meta
name="copyright"
content="This is GPL software. Created by Sancho Lerena and others"
/>
</head>
<body>
<center>
<img src="images/logo.png" alt="" />
</center>
<h2>Step-by-step generating SSH keys</h2>
From
<a
href="https://pandorafms.com/docs/index.php?title=Pandora:FAQ#How_to_generate_a_pair_of_SSH_keys_for_Pandora_Windows_agent.3F_.28SSH_Transfer_only.29"
>Pandora FMS FAQ</a
>.
<ol>
<li>
Go to <code>.\util</code> of your Pandora FMS agent for Windows and run
<code>puttygen.exe</code>.<br />
Generate keys, SSH-2_DSA, 1024:<br /><br />
<img src="images/1.jpg" /><br /><br />
</li>
<li>
Press Generate<br />
Export key to OpenSSH key (Cygwin uses a port of OpenSSH)<br /><br />
<img src="images/2.jpg" /><br /><br />
</li>
<li>
We have no chosen password, so press YES:<br /><br />
<img src="images/3.jpg" /><br /><br />
</li>
<li>
Save it as <code>c:\pandora\keys\id_dsa:</code><br /><br />
<img src="images/4.jpg" /><br /><br />
</li>
<li>
Now let's copy the public key to clipboard:<br /><br />
<img src="images/5.jpg" /><br /><br />
</li>
<li>
and paste it as <code>c:\pandora_agent\keys\id_dsa.pub</code>, and also
to the <code>/home/pandora/.ssh/authorized_keys</code> file.
<br /><br />
<img src="images/6.jpg" /><br /><br />
</li>
</ol>
</body>
</html>

View File

@ -1,62 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>
Pandora FMS - Generación de claves SSH en Windows paso por paso
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="author" content="Sancho Lerena, Raul Mateos y otros" />
<meta
name="copyright"
content="This is GPL software. Created by Sancho Lerena and others"
/>
</head>
<body>
<center>
<img src="images/logo.png" alt="" />
</center>
<h2 class="print">Generación de claves SSH en Windows paso por paso</h2>
Extraído de las
<a
href="https://pandorafms.com/docs/index.php?title=Pandora:FAQ_ES#.C2.BFC.C3.B3mo_puedo_generar_un_par_de_claves_SHH_para_el_agente_para_Windows_.28SSH_Transfer.29_.3F"
>
FAQ</a
>.
<ol>
<li>
Desde el directorio <code>.\util</code> del agente Pandora FMS para
windows ejecutamos <code>puttygen.exe</code>.<br />
Generamos claves SSH-2_DSA, 1024:<br /><br />
<img src="images/1.jpg" /><br /><br />
</li>
<li>
Pulsamos «Generate» para generar la clave.<br />
Exportamos la clave a formato OpenSSH<br /><br />
<img src="images/2.jpg" /><br /><br />
</li>
<li>
No elegimos contraseña, con lo cual pulsamos «Sí»:<br /><br />
<img src="images/3.jpg" /><br /><br />
</li>
<li>
Guardamos la clave como <code>C:\pandora\keys\id_dsa:</code><br /><br />
<img src="images/4.jpg" /><br /><br />
</li>
<li>
Ahora copiamos la clave pública al portapapeles:<br /><br />
<img src="images/5.jpg" /><br /><br />
</li>
<li>
Pegamos la clave en un nuevo fichero
<code>C:\pandora_agent\keys\id_dsa.pub</code>, y debemos también
añadirla al fichero <code>/home/pandora/.ssh/authorized_keys</code>.
<br /><br />
<img src="images/6.jpg" /><br /><br />
</li>
</ol>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,6 +1,6 @@
# Base config file for Pandora FMS Windows Agent
# (c) 2006-2021 Artica Soluciones Tecnologicas
# Version 7.0NG.757
# Version 7.0NG.761
# This program is Free Software, you can redistribute it and/or modify it
# under the terms of the GNU General Public Licence as published by the Free Software
# Foundation; either version 2 of the Licence or any later version

View File

@ -3,7 +3,7 @@ AllowLanguageSelection
{Yes}
AppName
{Pandora FMS Windows Agent v7.0NG.757}
{Pandora FMS Windows Agent v7.0NG.761}
ApplicationID
{17E3D2CF-CA02-406B-8A80-9D31C17BD08F}
@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
{211019}
{220418}
ViewReadme
{Yes}

View File

@ -11,7 +11,7 @@ use strict;
use warnings;
use File::Basename;
use lib '/usr/lib/perl5';
BEGIN { push @INC, '/usr/lib/perl5'; }
use PandoraFMS::PluginTools;
use PandoraFMS::Omnishell;

View File

@ -30,7 +30,7 @@ using namespace Pandora;
using namespace Pandora_Strutils;
#define PATH_SIZE _MAX_PATH+1
#define PANDORA_VERSION ("7.0NG.757 Build 211019")
#define PANDORA_VERSION ("7.0NG.761 Build 220418")
string pandora_path;
string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.757(Build 211019))"
VALUE "ProductVersion", "(7.0NG.761(Build 220418))"
VALUE "FileVersion", "1.0.0.0"
END
END

View File

@ -1,6 +1,9 @@
# pandora disable listing
Options -Indexes
# Avoid clickjacking
Header always append X-Frame-Options SAMEORIGIN
<Files ~ "\.log$">
Order Allow,Deny
Deny from All

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.757-211019
Version: 7.0NG.761-220418
Architecture: all
Priority: optional
Section: admin

View File

@ -14,7 +14,7 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
pandora_version="7.0NG.757-211019"
pandora_version="7.0NG.761-220418"
package_pear=0
package_pandora=1

View File

@ -89,7 +89,11 @@ if (isset($_GET['loginhash']) === true) {
$config['id_user'] = $loginhash_user;
} else {
include_once 'general/login_page.php';
db_pandora_audit('Logon Failed (loginhash', '', 'system');
db_pandora_audit(
AUDIT_LOG_USER_REGISTRATION,
'Loginhash failed',
'system'
);
while (ob_get_length() > 0) {
ob_end_flush();
}
@ -103,24 +107,33 @@ $auth_class = io_safe_output(
get_parameter('auth_class', 'PandoraFMS\User')
);
$page = (string) get_parameter('page');
$page = safe_url_extraclean($page);
$page .= '.php';
$public_hash = get_parameter('auth_hash', false);
$public_login = false;
// Check user.
if (class_exists($auth_class) === false || $public_hash === false) {
check_login();
} else {
if ($auth_class::validatePublicHash($public_hash) === false) {
db_pandora_audit(
'Invalid public hash',
'Trying to access public dashboard'
);
include 'general/noaccess.php';
exit;
}
// OK. Simulated user log in. If you want to use your own auth_class
// remember to set $config['force_instant_logout'] to true to avoid
// persistent user login.
if (false === ((bool) get_parameter('doLogin', false) === true
&& $page === 'include/rest-api/index.php')
) {
// Check user.
if (class_exists($auth_class) === false || $public_hash === false) {
check_login();
} else {
if ($auth_class::validatePublicHash($public_hash) === false) {
db_pandora_audit(
AUDIT_LOG_USER_REGISTRATION,
'Trying to access public dashboard (Invalid public hash)'
);
include 'general/noaccess.php';
exit;
}
// OK. Simulated user log in. If you want to use your own auth_class
// remember to set $config['force_instant_logout'] to true to avoid
// persistent user login.
}
}
ob_start();
@ -132,9 +145,6 @@ if (file_exists(ENTERPRISE_DIR.'/load_enterprise.php') === true) {
$config['remote_addr'] = $_SERVER['REMOTE_ADDR'];
$page = (string) get_parameter('page');
$page = safe_url_extraclean($page);
$page .= '.php';
$config['id_user'] = $_SESSION['id_usuario'];
$isFunctionSkins = enterprise_include_once('include/functions_skins.php');
if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) {

View File

@ -7,8 +7,13 @@
"email": "info@artica.es"
}
],
"config": {
"platform": {
"php": "7.2.0"
}
},
"require": {
"mpdf/mpdf": "^7.1",
"mpdf/mpdf": "^8.0.15",
"swiftmailer/swiftmailer": "^6.0"
},
"autoload": {
@ -16,7 +21,8 @@
"Models\\": "include/rest-api/models",
"Enterprise\\Models\\": "enterprise/include/rest-api/models",
"PandoraFMS\\": "include/lib",
"PandoraFMS\\Enterprise\\": "enterprise/include/lib"
"PandoraFMS\\Enterprise\\": "enterprise/include/lib",
"UpdateManager\\": "update_manager_client/lib/UpdateManager"
}
},
"autoload-dev": {

View File

@ -4,34 +4,35 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "18364e5cd8c79657279985942190b4a7",
"content-hash": "1ca1e8936d9ffb13f23a5b5cefbf02ad",
"packages": [
{
"name": "doctrine/lexer",
"version": "v1.0.1",
"version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
"reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
"reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
"reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9.0",
"phpstan/phpstan": "1.3",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.11"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-0": {
"Doctrine\\Common\\Lexer\\": "lib/"
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -39,49 +40,71 @@
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "http://www.doctrine-project.org",
"description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "https://www.doctrine-project.org/projects/lexer.html",
"keywords": [
"annotations",
"docblock",
"lexer",
"parser"
"parser",
"php"
],
"time": "2014-09-09T13:34:57+00:00"
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
"source": "https://github.com/doctrine/lexer/tree/1.2.2"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
"type": "tidelift"
}
],
"time": "2022-01-12T08:27:12+00:00"
},
{
"name": "egulias/email-validator",
"version": "2.1.6",
"version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
"reference": "0578b32b30b22de3e8664f797cf846fc9246f786"
"reference": "ee0db30118f661fb166bcffbf5d82032df484697"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0578b32b30b22de3e8664f797cf846fc9246f786",
"reference": "0578b32b30b22de3e8664f797cf846fc9246f786",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697",
"reference": "ee0db30118f661fb166bcffbf5d82032df484697",
"shasum": ""
},
"require": {
"doctrine/lexer": "^1.0.1",
"php": ">= 5.5"
"doctrine/lexer": "^1.2",
"php": ">=7.2",
"symfony/polyfill-intl-idn": "^1.15"
},
"require-dev": {
"dominicsayers/isemail": "dev-master",
"phpunit/phpunit": "^4.8.35||^5.7||^6.0",
"satooshi/php-coveralls": "^1.0.1"
"php-coveralls/php-coveralls": "^2.2",
"phpunit/phpunit": "^8.5.8|^9.3.3",
"vimeo/psalm": "^4"
},
"suggest": {
"ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
@ -89,12 +112,12 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
"dev-master": "3.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Egulias\\EmailValidator\\": "EmailValidator"
"Egulias\\EmailValidator\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -115,36 +138,47 @@
"validation",
"validator"
],
"time": "2018-09-25T20:47:26+00:00"
"support": {
"issues": "https://github.com/egulias/EmailValidator/issues",
"source": "https://github.com/egulias/EmailValidator/tree/3.1.2"
},
"funding": [
{
"url": "https://github.com/egulias",
"type": "github"
}
],
"time": "2021-10-11T09:18:27+00:00"
},
{
"name": "mpdf/mpdf",
"version": "v7.1.5",
"version": "v8.0.15",
"source": {
"type": "git",
"url": "https://github.com/mpdf/mpdf.git",
"reference": "2ed29c3a59fa23e77052e9d7fa7e31c707fb7502"
"reference": "d8a5294a6cc2e814c4157aecc8d7ac25014b18ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mpdf/mpdf/zipball/2ed29c3a59fa23e77052e9d7fa7e31c707fb7502",
"reference": "2ed29c3a59fa23e77052e9d7fa7e31c707fb7502",
"url": "https://api.github.com/repos/mpdf/mpdf/zipball/d8a5294a6cc2e814c4157aecc8d7ac25014b18ed",
"reference": "d8a5294a6cc2e814c4157aecc8d7ac25014b18ed",
"shasum": ""
},
"require": {
"ext-gd": "*",
"ext-mbstring": "*",
"myclabs/deep-copy": "^1.7",
"paragonie/random_compat": "^1.4|^2.0|9.99.99",
"php": "^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0",
"psr/log": "^1.0",
"setasign/fpdi": "1.6.*"
"paragonie/random_compat": "^1.4|^2.0|^9.99.99",
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0",
"psr/log": "^1.0 || ^2.0",
"setasign/fpdi": "^2.1"
},
"require-dev": {
"mockery/mockery": "^0.9.5",
"phpunit/phpunit": "^5.0",
"squizlabs/php_codesniffer": "^2.7.0",
"tracy/tracy": "^2.4"
"mockery/mockery": "^1.3.0",
"mpdf/qrcode": "^1.1.0",
"squizlabs/php_codesniffer": "^3.5.0",
"tracy/tracy": "^2.4",
"yoast/phpunit-polyfills": "^1.0"
},
"suggest": {
"ext-bcmath": "Needed for generation of some types of barcodes",
@ -152,11 +186,6 @@
"ext-zlib": "Needed for compression of embedded resources, such as fonts"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-development": "7.0-dev"
}
},
"autoload": {
"psr-4": {
"Mpdf\\": "src/"
@ -176,36 +205,47 @@
"role": "Developer (retired)"
}
],
"description": "A PHP class to generate PDF files from HTML with Unicode/UTF-8 and CJK support",
"description": "PHP library generating PDF files from UTF-8 encoded HTML",
"homepage": "https://mpdf.github.io",
"keywords": [
"pdf",
"php",
"utf-8"
],
"time": "2018-09-19T09:58:39+00:00"
"support": {
"docs": "http://mpdf.github.io",
"issues": "https://github.com/mpdf/mpdf/issues",
"source": "https://github.com/mpdf/mpdf"
},
"funding": [
{
"url": "https://www.paypal.me/mpdf",
"type": "custom"
}
],
"time": "2021-11-10T08:15:22+00:00"
},
{
"name": "myclabs/deep-copy",
"version": "1.7.0",
"version": "1.10.2",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
"reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
"reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
"reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/collections": "^1.0",
"doctrine/common": "^2.6",
"phpunit/phpunit": "^4.1"
"phpunit/phpunit": "^7.1"
},
"type": "library",
"autoload": {
@ -228,24 +268,34 @@
"object",
"object graph"
],
"time": "2017-10-19T19:58:43+00:00"
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
},
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
"type": "tidelift"
}
],
"time": "2020-11-13T09:40:50+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v9.99.99",
"version": "v9.99.100",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
"shasum": ""
},
"require": {
"php": "^7"
"php": ">= 7"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*",
@ -273,20 +323,25 @@
"pseudorandom",
"random"
],
"time": "2018-07-02T15:55:56+00:00"
"support": {
"email": "info@paragonie.com",
"issues": "https://github.com/paragonie/random_compat/issues",
"source": "https://github.com/paragonie/random_compat"
},
"time": "2020-10-15T08:29:30+00:00"
},
{
"name": "psr/log",
"version": "1.0.2",
"version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
"reference": "d49695b909c3b7628b6289db5479a1c204601f11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
"reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": ""
},
"require": {
@ -295,7 +350,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
"dev-master": "1.1.x-dev"
}
},
"autoload": {
@ -310,7 +365,7 @@
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
@ -320,36 +375,47 @@
"psr",
"psr-3"
],
"time": "2016-10-10T12:19:37+00:00"
"support": {
"source": "https://github.com/php-fig/log/tree/1.1.4"
},
"time": "2021-05-03T11:20:27+00:00"
},
{
"name": "setasign/fpdi",
"version": "1.6.2",
"version": "v2.3.6",
"source": {
"type": "git",
"url": "https://github.com/Setasign/FPDI.git",
"reference": "a6ad58897a6d97cc2d2cd2adaeda343b25a368ea"
"reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Setasign/FPDI/zipball/a6ad58897a6d97cc2d2cd2adaeda343b25a368ea",
"reference": "a6ad58897a6d97cc2d2cd2adaeda343b25a368ea",
"url": "https://api.github.com/repos/Setasign/FPDI/zipball/6231e315f73e4f62d72b73f3d6d78ff0eed93c31",
"reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31",
"shasum": ""
},
"require": {
"ext-zlib": "*",
"php": "^5.6 || ^7.0 || ^8.0"
},
"conflict": {
"setasign/tfpdf": "<1.31"
},
"require-dev": {
"phpunit/phpunit": "~5.7",
"setasign/fpdf": "~1.8",
"setasign/tfpdf": "1.31",
"squizlabs/php_codesniffer": "^3.5",
"tecnickcom/tcpdf": "~6.2"
},
"suggest": {
"setasign/fpdf": "FPDI will extend this class but as it is also possible to use \"tecnickcom/tcpdf\" as an alternative there's no fixed dependency configured.",
"setasign/fpdi-fpdf": "Use this package to automatically evaluate dependencies to FPDF.",
"setasign/fpdi-tcpdf": "Use this package to automatically evaluate dependencies to TCPDF."
"setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured."
},
"type": "library",
"autoload": {
"classmap": [
"filters/",
"fpdi.php",
"fpdf_tpl.php",
"fpdi_pdf_parser.php",
"pdf_context.php"
]
"psr-4": {
"setasign\\Fpdi\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -360,6 +426,11 @@
"name": "Jan Slabon",
"email": "jan.slabon@setasign.com",
"homepage": "https://www.setasign.com"
},
{
"name": "Maximilian Kresse",
"email": "maximilian.kresse@setasign.com",
"homepage": "https://www.setasign.com"
}
],
"description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.",
@ -369,38 +440,50 @@
"fpdi",
"pdf"
],
"time": "2017-05-11T14:25:49+00:00"
"support": {
"issues": "https://github.com/Setasign/FPDI/issues",
"source": "https://github.com/Setasign/FPDI/tree/v2.3.6"
},
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/setasign/fpdi",
"type": "tidelift"
}
],
"time": "2021-02-11T11:37:01+00:00"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v6.1.3",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4"
"reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4",
"reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c",
"reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c",
"shasum": ""
},
"require": {
"egulias/email-validator": "~2.0",
"php": ">=7.0.0"
"egulias/email-validator": "^2.0|^3.1",
"php": ">=7.0.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
"require-dev": {
"mockery/mockery": "~0.9.1",
"symfony/phpunit-bridge": "~3.3@dev"
"mockery/mockery": "^1.0",
"symfony/phpunit-bridge": "^4.4|^5.4"
},
"suggest": {
"ext-intl": "Needed to support internationalized email addresses",
"true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed"
"ext-intl": "Needed to support internationalized email addresses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.1-dev"
"dev-master": "6.2-dev"
}
},
"autoload": {
@ -428,7 +511,435 @@
"mail",
"mailer"
],
"time": "2018-09-11T07:12:52+00:00"
"support": {
"issues": "https://github.com/swiftmailer/swiftmailer/issues",
"source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0"
},
"funding": [
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer",
"type": "tidelift"
}
],
"abandoned": "symfony/mailer",
"time": "2021-10-18T15:26:12+00:00"
},
{
"name": "symfony/polyfill-iconv",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
"reference": "f1aed619e28cb077fc83fac8c4c0383578356e40"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40",
"reference": "f1aed619e28cb077fc83fac8c4c0383578356e40",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"provide": {
"ext-iconv": "*"
},
"suggest": {
"ext-iconv": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Iconv\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Iconv extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"iconv",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-iconv/tree/v1.24.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2022-01-04T09:04:05+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"shasum": ""
},
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-09-14T14:02:44+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's Normalizer class and related functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"intl",
"normalizer",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-11-30T18:21:41+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-05-27T09:17:38+00:00"
}
],
"packages-dev": [],
@ -438,5 +949,9 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
"platform-dev": [],
"platform-overrides": {
"php": "7.2.0"
},
"plugin-api-version": "2.3.0"
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,515 @@
[
[{ "1613": 0, "1616": 1, "1621": 2 }],
[
{
"1557": 0,
"1611": 1,
"1612": 2,
"1614": 3,
"1615": 4,
"1617": 5,
"1618": 6,
"1619": 7,
"1620": 8,
"1623": 9,
"1626": 10,
"1648": 11,
"57990": 12,
"57991": 13,
"57992": 14,
"57993": 15,
"57994": 16,
"57995": 17,
"57996": 18,
"57997": 19
}
],
[{ "3768": 0, "3769": 1 }],
[{ "3784": 0, "3785": 1, "3786": 2, "3787": 3, "3788": 4, "3789": 5 }],
[
{
"790": 0,
"791": 1,
"792": 2,
"793": 3,
"796": 4,
"797": 5,
"798": 6,
"799": 7,
"800": 8,
"803": 9,
"804": 10,
"805": 11,
"806": 12,
"809": 13,
"810": 14,
"811": 15,
"812": 16,
"813": 17,
"814": 18,
"815": 19,
"816": 20,
"817": 21,
"825": 22,
"826": 23,
"827": 24,
"828": 25,
"839": 26,
"840": 27,
"841": 28,
"845": 29,
"846": 30,
"851": 31,
"858": 32
},
{
"768": 0,
"769": 1,
"770": 2,
"771": 3,
"772": 4,
"773": 5,
"774": 6,
"775": 7,
"776": 8,
"777": 9,
"778": 10,
"779": 11,
"780": 12,
"781": 13,
"782": 14,
"783": 15,
"784": 16,
"785": 17,
"829": 18,
"831": 19,
"832": 20,
"833": 21,
"834": 22,
"836": 23,
"838": 24,
"842": 25,
"843": 26,
"844": 27,
"849": 28,
"850": 29,
"855": 30,
"7620": 31,
"7621": 32,
"7622": 33,
"7623": 34,
"7624": 35,
"7625": 36,
"8400": 37,
"8401": 38,
"8406": 39,
"8407": 40,
"8411": 41,
"8412": 42,
"8417": 43,
"57895": 44,
"57896": 45,
"57897": 46,
"57898": 47,
"57899": 48,
"57900": 49,
"57901": 50,
"57902": 51,
"57903": 52,
"57904": 53,
"57905": 54,
"58088": 55
}
],
[
{
"1456": 0,
"1457": 1,
"1458": 2,
"1459": 3,
"1460": 4,
"1461": 5,
"1462": 6,
"1463": 7,
"1464": 8,
"1467": 9,
"1469": 10,
"1479": 11,
"1613": 12,
"1616": 13,
"1621": 14
}
],
[
{
"1456": 0,
"1457": 1,
"1458": 2,
"1459": 3,
"1460": 4,
"1461": 5,
"1462": 6,
"1463": 7,
"1464": 8,
"1467": 9,
"1469": 10,
"1479": 11,
"1613": 12,
"1616": 13,
"1621": 14,
"2034": 15
}
],
[{ "1468": 0 }],
[
{
"1471": 0,
"1557": 1,
"1611": 2,
"1612": 3,
"1614": 4,
"1615": 5,
"1617": 6,
"1618": 7,
"1619": 8,
"1620": 9,
"1623": 10,
"1626": 11,
"1648": 12,
"64286": 13,
"57990": 14,
"57991": 15,
"57992": 16,
"57993": 17,
"57994": 18,
"57995": 19,
"57996": 20,
"57997": 21
}
],
[
{
"1471": 0,
"1557": 1,
"1611": 2,
"1612": 3,
"1614": 4,
"1615": 5,
"1617": 6,
"1618": 7,
"1619": 8,
"1620": 9,
"1623": 10,
"1626": 11,
"1648": 12,
"2027": 13,
"2028": 14,
"2029": 15,
"2030": 16,
"2031": 17,
"2032": 18,
"2033": 19,
"2035": 20,
"64286": 21,
"57990": 22,
"57991": 23,
"57992": 24,
"57993": 25,
"57994": 26,
"57995": 27,
"57996": 28,
"57997": 29
}
],
[{ "3768": 0, "3769": 1, "3772": 2 }],
[
{
"3761": 0,
"3764": 1,
"3765": 2,
"3766": 3,
"3767": 4,
"3771": 5,
"3784": 6,
"3785": 7,
"3786": 8,
"3787": 9,
"3788": 10,
"3789": 11
}
],
[
{
"790": 0,
"791": 1,
"792": 2,
"793": 3,
"796": 4,
"797": 5,
"798": 6,
"799": 7,
"800": 8,
"803": 9,
"804": 10,
"805": 11,
"806": 12,
"809": 13,
"810": 14,
"811": 15,
"812": 16,
"813": 17,
"814": 18,
"815": 19,
"816": 20,
"817": 21,
"818": 22,
"819": 23,
"825": 24,
"826": 25,
"827": 26,
"828": 27,
"839": 28,
"840": 29,
"841": 30,
"845": 31,
"846": 32,
"851": 33,
"858": 34
}
],
[
{ "65057": 0, "65059": 1 },
{ "768": 0, "769": 1 },
{ "807": 0 },
{
"790": 0,
"791": 1,
"792": 2,
"793": 3,
"796": 4,
"797": 5,
"798": 6,
"799": 7,
"800": 8,
"803": 9,
"804": 10,
"805": 11,
"806": 12,
"809": 13,
"810": 14,
"811": 15,
"812": 16,
"813": 17,
"814": 18,
"815": 19,
"816": 20,
"817": 21,
"818": 22,
"819": 23,
"825": 24,
"826": 25,
"827": 26,
"828": 27,
"839": 28,
"840": 29,
"841": 30,
"845": 31,
"846": 32,
"851": 33,
"858": 34
},
{
"768": 0,
"769": 1,
"770": 2,
"771": 3,
"772": 4,
"773": 5,
"774": 6,
"775": 7,
"776": 8,
"777": 9,
"778": 10,
"779": 11,
"780": 12,
"781": 13,
"782": 14,
"783": 15,
"784": 16,
"785": 17,
"786": 18,
"787": 19,
"788": 20,
"829": 21,
"830": 22,
"831": 23,
"832": 24,
"833": 25,
"834": 26,
"836": 27,
"838": 28,
"842": 29,
"843": 30,
"844": 31,
"849": 32,
"850": 33,
"855": 34,
"1155": 35,
"1156": 36,
"1157": 37,
"1158": 38,
"1159": 39,
"7620": 40,
"7621": 41,
"7622": 42,
"7623": 43,
"7624": 44,
"7625": 45,
"8400": 46,
"8401": 47,
"8406": 48,
"8407": 49,
"8411": 50,
"8412": 51,
"8417": 52,
"57895": 53,
"57896": 54,
"57897": 55,
"57898": 56,
"57899": 57,
"57900": 58,
"57901": 59,
"57902": 60,
"57903": 61,
"57904": 62,
"57905": 63,
"58088": 64
},
{ "808": 0 }
],
[
{
"45": 0,
"65": 1,
"66": 2,
"67": 3,
"68": 4,
"70": 5,
"71": 6,
"72": 7,
"74": 8,
"75": 9,
"76": 10,
"79": 11,
"80": 12,
"81": 13,
"82": 14,
"83": 15,
"84": 16,
"85": 17,
"86": 18,
"87": 19,
"88": 20,
"89": 21,
"90": 22,
"101": 23,
"102": 24,
"107": 25,
"110": 26,
"111": 27,
"114": 28,
"118": 29,
"119": 30,
"120": 31,
"121": 32,
"171": 33,
"187": 34,
"192": 35,
"193": 36,
"194": 37,
"195": 38,
"196": 39,
"198": 40,
"199": 41,
"208": 42,
"210": 43,
"211": 44,
"212": 45,
"213": 46,
"214": 47,
"217": 48,
"218": 49,
"219": 50,
"220": 51,
"221": 52,
"222": 53,
"223": 54,
"232": 55,
"233": 56,
"234": 57,
"235": 58,
"240": 59,
"241": 60,
"242": 61,
"243": 62,
"244": 63,
"245": 64,
"246": 65,
"253": 66,
"255": 67,
"256": 68,
"258": 69,
"260": 70,
"262": 71,
"268": 72,
"270": 73,
"272": 74,
"283": 75,
"286": 76,
"313": 77,
"317": 78,
"320": 79,
"328": 80,
"340": 81,
"341": 82,
"344": 83,
"345": 84,
"350": 85,
"352": 86,
"356": 87,
"366": 88,
"376": 89,
"381": 90,
"8208": 91,
"8220": 92,
"8222": 93,
"42788": 94,
"42816": 95,
"42817": 96
}
],
[
{
"61185": 0,
"61186": 1,
"61187": 2,
"61188": 3,
"61189": 4,
"61191": 5,
"61192": 6,
"61193": 7,
"61194": 8,
"61195": 9,
"61197": 10,
"61198": 11,
"61199": 12,
"61200": 13,
"61201": 14,
"61203": 15,
"61204": 16,
"61205": 17,
"61206": 18,
"61207": 19
}
]
]

View File

@ -0,0 +1,126 @@
{
"rtlSUB": {
"00622": { "1": "0FE82" },
"00623": { "1": "0FE84" },
"00624": { "1": "0FE86" },
"00625": { "1": "0FE88" },
"00626": { "1": "0FE8A", "3": "0FE8C", "2": "0FE8B" },
"00627": { "1": "0FE8E" },
"00628": { "1": "0FE90", "3": "0FE92", "2": "0FE91" },
"00629": { "1": "0FE94" },
"0062A": { "1": "0FE96", "3": "0FE98", "2": "0FE97" },
"0062B": { "1": "0FE9A", "3": "0FE9C", "2": "0FE9B" },
"0062C": { "1": "0FE9E", "3": "0FEA0", "2": "0FE9F" },
"0062D": { "1": "0FEA2", "3": "0FEA4", "2": "0FEA3" },
"0062E": { "1": "0FEA6", "3": "0FEA8", "2": "0FEA7" },
"0062F": { "1": "0FEAA" },
"00630": { "1": "0FEAC" },
"00631": { "1": "0FEAE" },
"00632": { "1": "0FEB0" },
"00633": { "1": "0FEB2", "3": "0FEB4", "2": "0FEB3" },
"00634": { "1": "0FEB6", "3": "0FEB8", "2": "0FEB7" },
"00635": { "1": "0FEBA", "3": "0FEBC", "2": "0FEBB" },
"00636": { "1": "0FEBE", "3": "0FEC0", "2": "0FEBF" },
"00637": { "1": "0FEC2", "3": "0FEC4", "2": "0FEC3" },
"00638": { "1": "0FEC6", "3": "0FEC8", "2": "0FEC7" },
"00639": { "1": "0FECA", "3": "0FECC", "2": "0FECB" },
"0063A": { "1": "0FECE", "3": "0FED0", "2": "0FECF" },
"00641": { "1": "0FED2", "3": "0FED4", "2": "0FED3" },
"00642": { "1": "0FED6", "3": "0FED8", "2": "0FED7" },
"00643": { "1": "0FEDA", "3": "0FEDC", "2": "0FEDB" },
"00644": { "1": "0FEDE", "3": "0FEE0", "2": "0FEDF" },
"00645": { "1": "0FEE2", "3": "0FEE4", "2": "0FEE3" },
"00646": { "1": "0FEE6", "3": "0FEE8", "2": "0FEE7" },
"00647": { "1": "0FEEA", "3": "0FEEC", "2": "0FEEB" },
"00648": { "1": "0FEEE" },
"00649": { "1": "0FEF0", "3": "0FBE9", "2": "0FBE8" },
"0064A": { "1": "0FEF2", "3": "0FEF4", "2": "0FEF3" },
"0066E": { "1": "0E238", "3": "0E23A", "2": "0E239" },
"0066F": { "1": "0E23E", "3": "0E240", "2": "0E23F" },
"00679": { "1": "0FB67", "3": "0FB69", "2": "0FB68" },
"0067A": { "1": "0FB5F", "3": "0FB61", "2": "0FB60" },
"0067B": { "1": "0FB53", "3": "0FB55", "2": "0FB54" },
"0067C": { "1": "0E244", "3": "0E246", "2": "0E245" },
"0067D": { "1": "0E247", "3": "0E249", "2": "0E248" },
"0067E": { "1": "0FB57", "3": "0FB59", "2": "0FB58" },
"0067F": { "1": "0FB63", "3": "0FB65", "2": "0FB64" },
"00680": { "1": "0FB5B", "3": "0FB5D", "2": "0FB5C" },
"00681": { "1": "0E24A", "3": "0E24C", "2": "0E24B" },
"00682": { "1": "0E24D", "3": "0E24F", "2": "0E24E" },
"00683": { "1": "0FB77", "3": "0FB79", "2": "0FB78" },
"00684": { "1": "0FB73", "3": "0FB75", "2": "0FB74" },
"00685": { "1": "0E250", "3": "0E252", "2": "0E251" },
"00686": { "1": "0FB7B", "3": "0FB7D", "2": "0FB7C" },
"00687": { "1": "0FB7F", "3": "0FB81", "2": "0FB80" },
"00688": { "1": "0FB89" },
"00689": { "1": "0E2F5" },
"0068A": { "1": "0E2F6" },
"0068B": { "1": "0E2F7" },
"0068C": { "1": "0FB85" },
"0068D": { "1": "0FB83" },
"0068E": { "1": "0FB87" },
"0068F": { "1": "0E2F8" },
"00690": { "1": "0E2F9" },
"00691": { "1": "0FB8D" },
"00692": { "1": "0E279" },
"00693": { "1": "0E2FA" },
"00694": { "1": "0E2FB" },
"00695": { "1": "0E271" },
"00696": { "1": "0E2FC" },
"00697": { "1": "0E2FD" },
"00698": { "1": "0FB8B" },
"00699": { "1": "0E2FE" },
"0069A": { "1": "0E2FF", "3": "0E301", "2": "0E300" },
"0069B": { "1": "0E302", "3": "0E304", "2": "0E303" },
"0069C": { "1": "0E305", "3": "0E307", "2": "0E306" },
"0069D": { "1": "0E308", "3": "0E30A", "2": "0E309" },
"0069E": { "1": "0E30B", "3": "0E30D", "2": "0E30C" },
"0069F": { "1": "0E30E", "3": "0E310", "2": "0E30F" },
"006A0": { "1": "0E311", "3": "0E313", "2": "0E312" },
"006A1": { "1": "0E23B", "3": "0E23D", "2": "0E23C" },
"006A2": { "1": "0E314", "3": "0E316", "2": "0E315" },
"006A3": { "1": "0E317", "3": "0E319", "2": "0E318" },
"006A4": { "1": "0FB6B", "3": "0FB6D", "2": "0FB6C" },
"006A5": { "1": "0E31A", "3": "0E31C", "2": "0E31B" },
"006A6": { "1": "0FB6F", "3": "0FB71", "2": "0FB70" },
"006A7": { "1": "0E31D", "3": "0E31F", "2": "0E31E" },
"006A8": { "1": "0E320", "3": "0E322", "2": "0E321" },
"006A9": { "1": "0FB8F", "3": "0FB91", "2": "0FB90" },
"006AA": { "1": "0E323", "3": "0E325", "2": "0E324" },
"006AB": { "1": "0E326", "3": "0E328", "2": "0E327" },
"006AC": { "1": "0E329", "3": "0E32B", "2": "0E32A" },
"006AD": { "1": "0FBD4", "3": "0FBD6", "2": "0FBD5" },
"006AE": { "1": "0E32C", "3": "0E32E", "2": "0E32D" },
"006AF": { "1": "0FB93", "3": "0FB95", "2": "0FB94" },
"006B0": { "1": "0E32F", "3": "0E331", "2": "0E330" },
"006B1": { "1": "0FB9B", "3": "0FB9D", "2": "0FB9C" },
"006B2": { "1": "0E332", "3": "0E334", "2": "0E333" },
"006B3": { "1": "0FB97", "3": "0FB99", "2": "0FB98" },
"006B4": { "1": "0E335", "3": "0E337", "2": "0E336" },
"006B5": { "1": "0E273", "3": "0E275", "2": "0E274" },
"006B6": { "1": "0E338", "3": "0E33A", "2": "0E339" },
"006B7": { "1": "0E33B", "3": "0E33D", "2": "0E33C" },
"006B8": { "1": "0E33E", "3": "0E340", "2": "0E33F" },
"006B9": { "1": "0E341", "3": "0E343", "2": "0E342" },
"006BA": { "1": "0FB9F", "3": "0E242", "2": "0E241" },
"006BB": { "1": "0FBA1", "3": "0FBA3", "2": "0FBA2" },
"006BC": { "1": "0E344", "3": "0E346", "2": "0E345" },
"006BD": { "1": "0E347", "3": "0E349", "2": "0E348" },
"006BE": { "1": "0FBAB", "3": "0FBAD", "2": "0FBAC" },
"006BF": { "1": "0E253", "3": "0E255", "2": "0E254" },
"006C6": { "1": "0FBDA" },
"006C7": { "1": "0FBD8" },
"006C8": { "1": "0FBDC" },
"006CB": { "1": "0FBDF" },
"006CC": { "1": "0FBFD", "3": "0FBFF", "2": "0FBFE" },
"006CE": { "1": "0E276", "3": "0E278", "2": "0E277" },
"006D0": { "1": "0FBE5", "3": "0FBE7", "2": "0FBE6" },
"006D5": { "1": "0E27B" }
},
"finals": "0FE82 0FE84 0FE86 0FE88 0FE8A 0FE90 0FE96 0FE9A 0FE9E 0FEA6 0FEAC 0FEB0 0FEB2 0FEB6 0FEBA 0FEBE 0FEC6 0FECE 0FEE2 0FEE6 0FEEA 0E238 0E23E 0FB67 0FB5F 0FB53 0E244 0E247 0FB57 0FB63 0FB5B 0E24A 0E24D 0FB77 0FB73 0E250 0FB7B 0FB7F 0FB89 0E2F5 0E2F6 0E2F7 0FB85 0FB83 0FB87 0E2F8 0E2F9 0FB8D 0E279 0E2FA 0E2FB 0E271 0E2FC 0E2FD 0FB8B 0E2FE 0E2FF 0E302 0E305 0E308 0E30B 0E30E 0E311 0E23B 0E314 0E317 0FB6B 0E31A 0FB6F 0E31D 0E320 0FB8F 0E323 0E326 0E329 0FBD4 0E32C 0E32F 0FB9B 0E332 0FB97 0E335 0E273 0E338 0E33B 0E33E 0E341 0FB9F 0FBA1 0E344 0E347 0FBAB 0E253 0FBDA 0FBD8 0FBDC 0FBDF 0FBFD 0E276 0FBE5 0E27B ",
"rphf": [],
"half": [],
"pref": [],
"blwf": [],
"pstf": []
}

View File

@ -0,0 +1,126 @@
{
"rtlSUB": {
"00622": { "1": "0FE82" },
"00623": { "1": "0FE84" },
"00624": { "1": "0FE86" },
"00625": { "1": "0FE88" },
"00626": { "1": "0FE8A", "3": "0FE8C", "2": "0FE8B" },
"00627": { "1": "0FE8E" },
"00628": { "1": "0FE90", "3": "0FE92", "2": "0FE91" },
"00629": { "1": "0FE94" },
"0062A": { "1": "0FE96", "3": "0FE98", "2": "0FE97" },
"0062B": { "1": "0FE9A", "3": "0FE9C", "2": "0FE9B" },
"0062C": { "1": "0FE9E", "3": "0FEA0", "2": "0FE9F" },
"0062D": { "1": "0FEA2", "3": "0FEA4", "2": "0FEA3" },
"0062E": { "1": "0FEA6", "3": "0FEA8", "2": "0FEA7" },
"0062F": { "1": "0FEAA" },
"00630": { "1": "0FEAC" },
"00631": { "1": "0FEAE" },
"00632": { "1": "0FEB0" },
"00633": { "1": "0FEB2", "3": "0FEB4", "2": "0FEB3" },
"00634": { "1": "0FEB6", "3": "0FEB8", "2": "0FEB7" },
"00635": { "1": "0FEBA", "3": "0FEBC", "2": "0FEBB" },
"00636": { "1": "0FEBE", "3": "0FEC0", "2": "0FEBF" },
"00637": { "1": "0FEC2", "3": "0FEC4", "2": "0FEC3" },
"00638": { "1": "0FEC6", "3": "0FEC8", "2": "0FEC7" },
"00639": { "1": "0FECA", "3": "0FECC", "2": "0FECB" },
"0063A": { "1": "0FECE", "3": "0FED0", "2": "0FECF" },
"00641": { "1": "0FED2", "3": "0FED4", "2": "0FED3" },
"00642": { "1": "0FED6", "3": "0FED8", "2": "0FED7" },
"00643": { "1": "0FEDA", "3": "0FEDC", "2": "0FEDB" },
"00644": { "1": "0FEDE", "3": "0FEE0", "2": "0FEDF" },
"00645": { "1": "0FEE2", "3": "0FEE4", "2": "0FEE3" },
"00646": { "1": "0FEE6", "3": "0FEE8", "2": "0FEE7" },
"00647": { "1": "0FEEA", "3": "0FEEC", "2": "0FEEB" },
"00648": { "1": "0FEEE" },
"00649": { "1": "0FEF0", "3": "0FBE9", "2": "0FBE8" },
"0064A": { "1": "0FEF2", "3": "0FEF4", "2": "0FEF3" },
"0066E": { "1": "0E238", "3": "0E23A", "2": "0E239" },
"0066F": { "1": "0E23E", "3": "0E240", "2": "0E23F" },
"00679": { "1": "0FB67", "3": "0FB69", "2": "0FB68" },
"0067A": { "1": "0FB5F", "3": "0FB61", "2": "0FB60" },
"0067B": { "1": "0FB53", "3": "0FB55", "2": "0FB54" },
"0067C": { "1": "0E244", "3": "0E246", "2": "0E245" },
"0067D": { "1": "0E247", "3": "0E249", "2": "0E248" },
"0067E": { "1": "0FB57", "3": "0FB59", "2": "0FB58" },
"0067F": { "1": "0FB63", "3": "0FB65", "2": "0FB64" },
"00680": { "1": "0FB5B", "3": "0FB5D", "2": "0FB5C" },
"00681": { "1": "0E24A", "3": "0E24C", "2": "0E24B" },
"00682": { "1": "0E24D", "3": "0E24F", "2": "0E24E" },
"00683": { "1": "0FB77", "3": "0FB79", "2": "0FB78" },
"00684": { "1": "0FB73", "3": "0FB75", "2": "0FB74" },
"00685": { "1": "0E250", "3": "0E252", "2": "0E251" },
"00686": { "1": "0FB7B", "3": "0FB7D", "2": "0FB7C" },
"00687": { "1": "0FB7F", "3": "0FB81", "2": "0FB80" },
"00688": { "1": "0FB89" },
"00689": { "1": "0E2F5" },
"0068A": { "1": "0E2F6" },
"0068B": { "1": "0E2F7" },
"0068C": { "1": "0FB85" },
"0068D": { "1": "0FB83" },
"0068E": { "1": "0FB87" },
"0068F": { "1": "0E2F8" },
"00690": { "1": "0E2F9" },
"00691": { "1": "0FB8D" },
"00692": { "1": "0E279" },
"00693": { "1": "0E2FA" },
"00694": { "1": "0E2FB" },
"00695": { "1": "0E271" },
"00696": { "1": "0E2FC" },
"00697": { "1": "0E2FD" },
"00698": { "1": "0FB8B" },
"00699": { "1": "0E2FE" },
"0069A": { "1": "0E2FF", "3": "0E301", "2": "0E300" },
"0069B": { "1": "0E302", "3": "0E304", "2": "0E303" },
"0069C": { "1": "0E305", "3": "0E307", "2": "0E306" },
"0069D": { "1": "0E308", "3": "0E30A", "2": "0E309" },
"0069E": { "1": "0E30B", "3": "0E30D", "2": "0E30C" },
"0069F": { "1": "0E30E", "3": "0E310", "2": "0E30F" },
"006A0": { "1": "0E311", "3": "0E313", "2": "0E312" },
"006A1": { "1": "0E23B", "3": "0E23D", "2": "0E23C" },
"006A2": { "1": "0E314", "3": "0E316", "2": "0E315" },
"006A3": { "1": "0E317", "3": "0E319", "2": "0E318" },
"006A4": { "1": "0FB6B", "3": "0FB6D", "2": "0FB6C" },
"006A5": { "1": "0E31A", "3": "0E31C", "2": "0E31B" },
"006A6": { "1": "0FB6F", "3": "0FB71", "2": "0FB70" },
"006A7": { "1": "0E31D", "3": "0E31F", "2": "0E31E" },
"006A8": { "1": "0E320", "3": "0E322", "2": "0E321" },
"006A9": { "1": "0FB8F", "3": "0FB91", "2": "0FB90" },
"006AA": { "1": "0E323", "3": "0E325", "2": "0E324" },
"006AB": { "1": "0E326", "3": "0E328", "2": "0E327" },
"006AC": { "1": "0E329", "3": "0E32B", "2": "0E32A" },
"006AD": { "1": "0FBD4", "3": "0FBD6", "2": "0FBD5" },
"006AE": { "1": "0E32C", "3": "0E32E", "2": "0E32D" },
"006AF": { "1": "0FB93", "3": "0FB95", "2": "0FB94" },
"006B0": { "1": "0E32F", "3": "0E331", "2": "0E330" },
"006B1": { "1": "0FB9B", "3": "0FB9D", "2": "0FB9C" },
"006B2": { "1": "0E332", "3": "0E334", "2": "0E333" },
"006B3": { "1": "0FB97", "3": "0FB99", "2": "0FB98" },
"006B4": { "1": "0E335", "3": "0E337", "2": "0E336" },
"006B5": { "1": "0E273", "3": "0E275", "2": "0E274" },
"006B6": { "1": "0E338", "3": "0E33A", "2": "0E339" },
"006B7": { "1": "0E33B", "3": "0E33D", "2": "0E33C" },
"006B8": { "1": "0E33E", "3": "0E340", "2": "0E33F" },
"006B9": { "1": "0E341", "3": "0E343", "2": "0E342" },
"006BA": { "1": "0FB9F", "3": "0E242", "2": "0E241" },
"006BB": { "1": "0FBA1", "3": "0FBA3", "2": "0FBA2" },
"006BC": { "1": "0E344", "3": "0E346", "2": "0E345" },
"006BD": { "1": "0E347", "3": "0E349", "2": "0E348" },
"006BE": { "1": "0FBAB", "3": "0FBAD", "2": "0FBAC" },
"006BF": { "1": "0E253", "3": "0E255", "2": "0E254" },
"006C6": { "1": "0FBDA" },
"006C7": { "1": "0FBD8" },
"006C8": { "1": "0FBDC" },
"006CB": { "1": "0FBDF" },
"006CC": { "1": "0FBFD", "3": "0FBFF", "2": "0FBFE" },
"006CE": { "1": "0E276", "3": "0E278", "2": "0E277" },
"006D0": { "1": "0FBE5", "3": "0FBE7", "2": "0FBE6" },
"006D5": { "1": "0E27B" }
},
"finals": "0FE82 0FE84 0FE86 0FE88 0FE8A 0FE90 0FE96 0FE9A 0FE9E 0FEA6 0FEAC 0FEB0 0FEB2 0FEB6 0FEBA 0FEBE 0FEC6 0FECE 0FEE2 0FEE6 0FEEA 0E238 0E23E 0FB67 0FB5F 0FB53 0E244 0E247 0FB57 0FB63 0FB5B 0E24A 0E24D 0FB77 0FB73 0E250 0FB7B 0FB7F 0FB89 0E2F5 0E2F6 0E2F7 0FB85 0FB83 0FB87 0E2F8 0E2F9 0FB8D 0E279 0E2FA 0E2FB 0E271 0E2FC 0E2FD 0FB8B 0E2FE 0E2FF 0E302 0E305 0E308 0E30B 0E30E 0E311 0E23B 0E314 0E317 0FB6B 0E31A 0FB6F 0E31D 0E320 0FB8F 0E323 0E326 0E329 0FBD4 0E32C 0E32F 0FB9B 0E332 0FB97 0E335 0E273 0E338 0E33B 0E33E 0E341 0FB9F 0FBA1 0E344 0E347 0FBAB 0E253 0FBDA 0FBD8 0FBDC 0FBDF 0FBFD 0E276 0FBE5 0E27B ",
"rphf": [],
"half": [],
"pref": [],
"blwf": [],
"pstf": []
}

View File

@ -0,0 +1,126 @@
{
"rtlSUB": {
"00622": { "1": "0FE82" },
"00623": { "1": "0FE84" },
"00624": { "1": "0FE86" },
"00625": { "1": "0FE88" },
"00626": { "1": "0FE8A", "3": "0FE8C", "2": "0FE8B" },
"00627": { "1": "0FE8E" },
"00628": { "1": "0FE90", "3": "0FE92", "2": "0FE91" },
"00629": { "1": "0FE94" },
"0062A": { "1": "0FE96", "3": "0FE98", "2": "0FE97" },
"0062B": { "1": "0FE9A", "3": "0FE9C", "2": "0FE9B" },
"0062C": { "1": "0FE9E", "3": "0FEA0", "2": "0FE9F" },
"0062D": { "1": "0FEA2", "3": "0FEA4", "2": "0FEA3" },
"0062E": { "1": "0FEA6", "3": "0FEA8", "2": "0FEA7" },
"0062F": { "1": "0FEAA" },
"00630": { "1": "0FEAC" },
"00631": { "1": "0FEAE" },
"00632": { "1": "0FEB0" },
"00633": { "1": "0FEB2", "3": "0FEB4", "2": "0FEB3" },
"00634": { "1": "0FEB6", "3": "0FEB8", "2": "0FEB7" },
"00635": { "1": "0FEBA", "3": "0FEBC", "2": "0FEBB" },
"00636": { "1": "0FEBE", "3": "0FEC0", "2": "0FEBF" },
"00637": { "1": "0FEC2", "3": "0FEC4", "2": "0FEC3" },
"00638": { "1": "0FEC6", "3": "0FEC8", "2": "0FEC7" },
"00639": { "1": "0FECA", "3": "0FECC", "2": "0FECB" },
"0063A": { "1": "0FECE", "3": "0FED0", "2": "0FECF" },
"00641": { "1": "0FED2", "3": "0FED4", "2": "0FED3" },
"00642": { "1": "0FED6", "3": "0FED8", "2": "0FED7" },
"00643": { "1": "0FEDA", "3": "0FEDC", "2": "0FEDB" },
"00644": { "1": "0FEDE", "3": "0FEE0", "2": "0FEDF" },
"00645": { "1": "0FEE2", "3": "0FEE4", "2": "0FEE3" },
"00646": { "1": "0FEE6", "3": "0FEE8", "2": "0FEE7" },
"00647": { "1": "0FEEA", "3": "0FEEC", "2": "0FEEB" },
"00648": { "1": "0FEEE" },
"00649": { "1": "0FEF0", "3": "0FBE9", "2": "0FBE8" },
"0064A": { "1": "0FEF2", "3": "0FEF4", "2": "0FEF3" },
"0066E": { "1": "0E238", "3": "0E23A", "2": "0E239" },
"0066F": { "1": "0E23E", "3": "0E240", "2": "0E23F" },
"00679": { "1": "0FB67", "3": "0FB69", "2": "0FB68" },
"0067A": { "1": "0FB5F", "3": "0FB61", "2": "0FB60" },
"0067B": { "1": "0FB53", "3": "0FB55", "2": "0FB54" },
"0067C": { "1": "0E244", "3": "0E246", "2": "0E245" },
"0067D": { "1": "0E247", "3": "0E249", "2": "0E248" },
"0067E": { "1": "0FB57", "3": "0FB59", "2": "0FB58" },
"0067F": { "1": "0FB63", "3": "0FB65", "2": "0FB64" },
"00680": { "1": "0FB5B", "3": "0FB5D", "2": "0FB5C" },
"00681": { "1": "0E24A", "3": "0E24C", "2": "0E24B" },
"00682": { "1": "0E24D", "3": "0E24F", "2": "0E24E" },
"00683": { "1": "0FB77", "3": "0FB79", "2": "0FB78" },
"00684": { "1": "0FB73", "3": "0FB75", "2": "0FB74" },
"00685": { "1": "0E250", "3": "0E252", "2": "0E251" },
"00686": { "1": "0FB7B", "3": "0FB7D", "2": "0FB7C" },
"00687": { "1": "0FB7F", "3": "0FB81", "2": "0FB80" },
"00688": { "1": "0FB89" },
"00689": { "1": "0E2F5" },
"0068A": { "1": "0E2F6" },
"0068B": { "1": "0E2F7" },
"0068C": { "1": "0FB85" },
"0068D": { "1": "0FB83" },
"0068E": { "1": "0FB87" },
"0068F": { "1": "0E2F8" },
"00690": { "1": "0E2F9" },
"00691": { "1": "0FB8D" },
"00692": { "1": "0E279" },
"00693": { "1": "0E2FA" },
"00694": { "1": "0E2FB" },
"00695": { "1": "0E271" },
"00696": { "1": "0E2FC" },
"00697": { "1": "0E2FD" },
"00698": { "1": "0FB8B" },
"00699": { "1": "0E2FE" },
"0069A": { "1": "0E2FF", "3": "0E301", "2": "0E300" },
"0069B": { "1": "0E302", "3": "0E304", "2": "0E303" },
"0069C": { "1": "0E305", "3": "0E307", "2": "0E306" },
"0069D": { "1": "0E308", "3": "0E30A", "2": "0E309" },
"0069E": { "1": "0E30B", "3": "0E30D", "2": "0E30C" },
"0069F": { "1": "0E30E", "3": "0E310", "2": "0E30F" },
"006A0": { "1": "0E311", "3": "0E313", "2": "0E312" },
"006A1": { "1": "0E23B", "3": "0E23D", "2": "0E23C" },
"006A2": { "1": "0E314", "3": "0E316", "2": "0E315" },
"006A3": { "1": "0E317", "3": "0E319", "2": "0E318" },
"006A4": { "1": "0FB6B", "3": "0FB6D", "2": "0FB6C" },
"006A5": { "1": "0E31A", "3": "0E31C", "2": "0E31B" },
"006A6": { "1": "0FB6F", "3": "0FB71", "2": "0FB70" },
"006A7": { "1": "0E31D", "3": "0E31F", "2": "0E31E" },
"006A8": { "1": "0E320", "3": "0E322", "2": "0E321" },
"006A9": { "1": "0FB8F", "3": "0FB91", "2": "0FB90" },
"006AA": { "1": "0E323", "3": "0E325", "2": "0E324" },
"006AB": { "1": "0E326", "3": "0E328", "2": "0E327" },
"006AC": { "1": "0E329", "3": "0E32B", "2": "0E32A" },
"006AD": { "1": "0FBD4", "3": "0FBD6", "2": "0FBD5" },
"006AE": { "1": "0E32C", "3": "0E32E", "2": "0E32D" },
"006AF": { "1": "0FB93", "3": "0FB95", "2": "0FB94" },
"006B0": { "1": "0E32F", "3": "0E331", "2": "0E330" },
"006B1": { "1": "0FB9B", "3": "0FB9D", "2": "0FB9C" },
"006B2": { "1": "0E332", "3": "0E334", "2": "0E333" },
"006B3": { "1": "0FB97", "3": "0FB99", "2": "0FB98" },
"006B4": { "1": "0E335", "3": "0E337", "2": "0E336" },
"006B5": { "1": "0E273", "3": "0E275", "2": "0E274" },
"006B6": { "1": "0E338", "3": "0E33A", "2": "0E339" },
"006B7": { "1": "0E33B", "3": "0E33D", "2": "0E33C" },
"006B8": { "1": "0E33E", "3": "0E340", "2": "0E33F" },
"006B9": { "1": "0E341", "3": "0E343", "2": "0E342" },
"006BA": { "1": "0FB9F", "3": "0E242", "2": "0E241" },
"006BB": { "1": "0FBA1", "3": "0FBA3", "2": "0FBA2" },
"006BC": { "1": "0E344", "3": "0E346", "2": "0E345" },
"006BD": { "1": "0E347", "3": "0E349", "2": "0E348" },
"006BE": { "1": "0FBAB", "3": "0FBAD", "2": "0FBAC" },
"006BF": { "1": "0E253", "3": "0E255", "2": "0E254" },
"006C6": { "1": "0FBDA" },
"006C7": { "1": "0FBD8" },
"006C8": { "1": "0FBDC" },
"006CB": { "1": "0FBDF" },
"006CC": { "1": "0FBFD", "3": "0FBFF", "2": "0FBFE" },
"006CE": { "1": "0E276", "3": "0E278", "2": "0E277" },
"006D0": { "1": "0FBE5", "3": "0FBE7", "2": "0FBE6" },
"006D5": { "1": "0E27B" }
},
"finals": "0FE82 0FE84 0FE86 0FE88 0FE8A 0FE90 0FE96 0FE9A 0FE9E 0FEA6 0FEAC 0FEB0 0FEB2 0FEB6 0FEBA 0FEBE 0FEC6 0FECE 0FEE2 0FEE6 0FEEA 0E238 0E23E 0FB67 0FB5F 0FB53 0E244 0E247 0FB57 0FB63 0FB5B 0E24A 0E24D 0FB77 0FB73 0E250 0FB7B 0FB7F 0FB89 0E2F5 0E2F6 0E2F7 0FB85 0FB83 0FB87 0E2F8 0E2F9 0FB8D 0E279 0E2FA 0E2FB 0E271 0E2FC 0E2FD 0FB8B 0E2FE 0E2FF 0E302 0E305 0E308 0E30B 0E30E 0E311 0E23B 0E314 0E317 0FB6B 0E31A 0FB6F 0E31D 0E320 0FB8F 0E323 0E326 0E329 0FBD4 0E32C 0E32F 0FB9B 0E332 0FB97 0E335 0E273 0E338 0E33B 0E33E 0E341 0FB9F 0FBA1 0E344 0E347 0FBAB 0E253 0FBDA 0FBD8 0FBDC 0FBDF 0FBFD 0E276 0FBE5 0E27B ",
"rphf": [],
"half": [],
"pref": [],
"blwf": [],
"pstf": []
}

View File

@ -0,0 +1,126 @@
{
"rtlSUB": {
"00622": { "1": "0FE82" },
"00623": { "1": "0FE84" },
"00624": { "1": "0FE86" },
"00625": { "1": "0FE88" },
"00626": { "1": "0FE8A", "3": "0FE8C", "2": "0FE8B" },
"00627": { "1": "0FE8E" },
"00628": { "1": "0FE90", "3": "0FE92", "2": "0FE91" },
"00629": { "1": "0FE94" },
"0062A": { "1": "0FE96", "3": "0FE98", "2": "0FE97" },
"0062B": { "1": "0FE9A", "3": "0FE9C", "2": "0FE9B" },
"0062C": { "1": "0FE9E", "3": "0FEA0", "2": "0FE9F" },
"0062D": { "1": "0FEA2", "3": "0FEA4", "2": "0FEA3" },
"0062E": { "1": "0FEA6", "3": "0FEA8", "2": "0FEA7" },
"0062F": { "1": "0FEAA" },
"00630": { "1": "0FEAC" },
"00631": { "1": "0FEAE" },
"00632": { "1": "0FEB0" },
"00633": { "1": "0FEB2", "3": "0FEB4", "2": "0FEB3" },
"00634": { "1": "0FEB6", "3": "0FEB8", "2": "0FEB7" },
"00635": { "1": "0FEBA", "3": "0FEBC", "2": "0FEBB" },
"00636": { "1": "0FEBE", "3": "0FEC0", "2": "0FEBF" },
"00637": { "1": "0FEC2", "3": "0FEC4", "2": "0FEC3" },
"00638": { "1": "0FEC6", "3": "0FEC8", "2": "0FEC7" },
"00639": { "1": "0FECA", "3": "0FECC", "2": "0FECB" },
"0063A": { "1": "0FECE", "3": "0FED0", "2": "0FECF" },
"00641": { "1": "0FED2", "3": "0FED4", "2": "0FED3" },
"00642": { "1": "0FED6", "3": "0FED8", "2": "0FED7" },
"00643": { "1": "0FEDA", "3": "0FEDC", "2": "0FEDB" },
"00644": { "1": "0FEDE", "3": "0FEE0", "2": "0FEDF" },
"00645": { "1": "0FEE2", "3": "0FEE4", "2": "0FEE3" },
"00646": { "1": "0FEE6", "3": "0FEE8", "2": "0FEE7" },
"00647": { "1": "0FEEA", "3": "0FEEC", "2": "0FEEB" },
"00648": { "1": "0FEEE" },
"00649": { "1": "0FEF0", "3": "0FBE9", "2": "0FBE8" },
"0064A": { "1": "0FEF2", "3": "0FEF4", "2": "0FEF3" },
"0066E": { "1": "0E238", "3": "0E23A", "2": "0E239" },
"0066F": { "1": "0E23E", "3": "0E240", "2": "0E23F" },
"00679": { "1": "0FB67", "3": "0FB69", "2": "0FB68" },
"0067A": { "1": "0FB5F", "3": "0FB61", "2": "0FB60" },
"0067B": { "1": "0FB53", "3": "0FB55", "2": "0FB54" },
"0067C": { "1": "0E244", "3": "0E246", "2": "0E245" },
"0067D": { "1": "0E247", "3": "0E249", "2": "0E248" },
"0067E": { "1": "0FB57", "3": "0FB59", "2": "0FB58" },
"0067F": { "1": "0FB63", "3": "0FB65", "2": "0FB64" },
"00680": { "1": "0FB5B", "3": "0FB5D", "2": "0FB5C" },
"00681": { "1": "0E24A", "3": "0E24C", "2": "0E24B" },
"00682": { "1": "0E24D", "3": "0E24F", "2": "0E24E" },
"00683": { "1": "0FB77", "3": "0FB79", "2": "0FB78" },
"00684": { "1": "0FB73", "3": "0FB75", "2": "0FB74" },
"00685": { "1": "0E250", "3": "0E252", "2": "0E251" },
"00686": { "1": "0FB7B", "3": "0FB7D", "2": "0FB7C" },
"00687": { "1": "0FB7F", "3": "0FB81", "2": "0FB80" },
"00688": { "1": "0FB89" },
"00689": { "1": "0E2F5" },
"0068A": { "1": "0E2F6" },
"0068B": { "1": "0E2F7" },
"0068C": { "1": "0FB85" },
"0068D": { "1": "0FB83" },
"0068E": { "1": "0FB87" },
"0068F": { "1": "0E2F8" },
"00690": { "1": "0E2F9" },
"00691": { "1": "0FB8D" },
"00692": { "1": "0E279" },
"00693": { "1": "0E2FA" },
"00694": { "1": "0E2FB" },
"00695": { "1": "0E271" },
"00696": { "1": "0E2FC" },
"00697": { "1": "0E2FD" },
"00698": { "1": "0FB8B" },
"00699": { "1": "0E2FE" },
"0069A": { "1": "0E2FF", "3": "0E301", "2": "0E300" },
"0069B": { "1": "0E302", "3": "0E304", "2": "0E303" },
"0069C": { "1": "0E305", "3": "0E307", "2": "0E306" },
"0069D": { "1": "0E308", "3": "0E30A", "2": "0E309" },
"0069E": { "1": "0E30B", "3": "0E30D", "2": "0E30C" },
"0069F": { "1": "0E30E", "3": "0E310", "2": "0E30F" },
"006A0": { "1": "0E311", "3": "0E313", "2": "0E312" },
"006A1": { "1": "0E23B", "3": "0E23D", "2": "0E23C" },
"006A2": { "1": "0E314", "3": "0E316", "2": "0E315" },
"006A3": { "1": "0E317", "3": "0E319", "2": "0E318" },
"006A4": { "1": "0FB6B", "3": "0FB6D", "2": "0FB6C" },
"006A5": { "1": "0E31A", "3": "0E31C", "2": "0E31B" },
"006A6": { "1": "0FB6F", "3": "0FB71", "2": "0FB70" },
"006A7": { "1": "0E31D", "3": "0E31F", "2": "0E31E" },
"006A8": { "1": "0E320", "3": "0E322", "2": "0E321" },
"006A9": { "1": "0FB8F", "3": "0FB91", "2": "0FB90" },
"006AA": { "1": "0E323", "3": "0E325", "2": "0E324" },
"006AB": { "1": "0E326", "3": "0E328", "2": "0E327" },
"006AC": { "1": "0E329", "3": "0E32B", "2": "0E32A" },
"006AD": { "1": "0FBD4", "3": "0FBD6", "2": "0FBD5" },
"006AE": { "1": "0E32C", "3": "0E32E", "2": "0E32D" },
"006AF": { "1": "0FB93", "3": "0FB95", "2": "0FB94" },
"006B0": { "1": "0E32F", "3": "0E331", "2": "0E330" },
"006B1": { "1": "0FB9B", "3": "0FB9D", "2": "0FB9C" },
"006B2": { "1": "0E332", "3": "0E334", "2": "0E333" },
"006B3": { "1": "0FB97", "3": "0FB99", "2": "0FB98" },
"006B4": { "1": "0E335", "3": "0E337", "2": "0E336" },
"006B5": { "1": "0E273", "3": "0E275", "2": "0E274" },
"006B6": { "1": "0E338", "3": "0E33A", "2": "0E339" },
"006B7": { "1": "0E33B", "3": "0E33D", "2": "0E33C" },
"006B8": { "1": "0E33E", "3": "0E340", "2": "0E33F" },
"006B9": { "1": "0E341", "3": "0E343", "2": "0E342" },
"006BA": { "1": "0FB9F", "3": "0E242", "2": "0E241" },
"006BB": { "1": "0FBA1", "3": "0FBA3", "2": "0FBA2" },
"006BC": { "1": "0E344", "3": "0E346", "2": "0E345" },
"006BD": { "1": "0E347", "3": "0E349", "2": "0E348" },
"006BE": { "1": "0FBAB", "3": "0FBAD", "2": "0FBAC" },
"006BF": { "1": "0E253", "3": "0E255", "2": "0E254" },
"006C6": { "1": "0FBDA" },
"006C7": { "1": "0FBD8" },
"006C8": { "1": "0FBDC" },
"006CB": { "1": "0FBDF" },
"006CC": { "1": "0FBFD", "3": "0FBFF", "2": "0FBFE" },
"006CE": { "1": "0E276", "3": "0E278", "2": "0E277" },
"006D0": { "1": "0FBE5", "3": "0FBE7", "2": "0FBE6" },
"006D5": { "1": "0E27B" }
},
"finals": "0FE82 0FE84 0FE86 0FE88 0FE8A 0FE90 0FE96 0FE9A 0FE9E 0FEA6 0FEAC 0FEB0 0FEB2 0FEB6 0FEBA 0FEBE 0FEC6 0FECE 0FEE2 0FEE6 0FEEA 0E238 0E23E 0FB67 0FB5F 0FB53 0E244 0E247 0FB57 0FB63 0FB5B 0E24A 0E24D 0FB77 0FB73 0E250 0FB7B 0FB7F 0FB89 0E2F5 0E2F6 0E2F7 0FB85 0FB83 0FB87 0E2F8 0E2F9 0FB8D 0E279 0E2FA 0E2FB 0E271 0E2FC 0E2FD 0FB8B 0E2FE 0E2FF 0E302 0E305 0E308 0E30B 0E30E 0E311 0E23B 0E314 0E317 0FB6B 0E31A 0FB6F 0E31D 0E320 0FB8F 0E323 0E326 0E329 0FBD4 0E32C 0E32F 0FB9B 0E332 0FB97 0E335 0E273 0E338 0E33B 0E33E 0E341 0FB9F 0FBA1 0E344 0E347 0FBAB 0E253 0FBDA 0FBD8 0FBDC 0FBDF 0FBFD 0E276 0FBE5 0E27B ",
"rphf": [],
"half": [],
"pref": [],
"blwf": [],
"pstf": []
}

View File

@ -0,0 +1,40 @@
{
"rtlSUB": {
"007CA": { "1": "0E28E", "3": "0E28F", "2": "0E290" },
"007CB": { "1": "0E291", "3": "0E292", "2": "0E293" },
"007CC": { "1": "0E294", "3": "0E295", "2": "0E296" },
"007CD": { "1": "0E297", "3": "0E298", "2": "0E299" },
"007CE": { "1": "0E29A", "3": "0E29B", "2": "0E29C" },
"007CF": { "1": "0E29D", "3": "0E29E", "2": "0E29F" },
"007D0": { "1": "0E2A0", "3": "0E2A1", "2": "0E2A2" },
"007D1": { "1": "0E2A3", "3": "0E2A4", "2": "0E2A5" },
"007D2": { "1": "0E2A6", "3": "0E2A7", "2": "0E2A8" },
"007D3": { "1": "0E2A9", "3": "0E2AA", "2": "0E2AB" },
"007D4": { "1": "0E2AC", "3": "0E2AD", "2": "0E2AE" },
"007D5": { "1": "0E2AF", "3": "0E2B0", "2": "0E2B1" },
"007D6": { "1": "0E2B2", "3": "0E2B3", "2": "0E2B4" },
"007D7": { "1": "0E2B5", "3": "0E2B6", "2": "0E2B7" },
"007D8": { "1": "0E2B8", "3": "0E2B9", "2": "0E2BA" },
"007D9": { "1": "0E2BB", "3": "0E2BC", "2": "0E2BD" },
"007DA": { "1": "0E2BE", "3": "0E2BF", "2": "0E2C0" },
"007DB": { "1": "0E2C1", "3": "0E2C2", "2": "0E2C3" },
"007DC": { "1": "0E2C4", "3": "0E2C5", "2": "0E2C6" },
"007DD": { "1": "0E2C7", "3": "0E2C8", "2": "0E2C9" },
"007DE": { "1": "0E2CA", "3": "0E2CB", "2": "0E2CC" },
"007DF": { "1": "0E2CD", "3": "0E2CE", "2": "0E2CF" },
"007E0": { "1": "0E2D0", "3": "0E2D1", "2": "0E2D2" },
"007E1": { "1": "0E2D3", "3": "0E2D4", "2": "0E2D5" },
"007E2": { "1": "0E2D6", "3": "0E2D7", "2": "0E2D8" },
"007E3": { "1": "0E2D9", "3": "0E2DA", "2": "0E2DB" },
"007E4": { "1": "0E2DC", "3": "0E2DD", "2": "0E2DE" },
"007E5": { "1": "0E2DF", "3": "0E2E0", "2": "0E2E1" },
"007E6": { "1": "0E2E2", "3": "0E2E3", "2": "0E2E4" },
"007E7": { "1": "0E2E5", "3": "0E2E6", "2": "0E2E7" }
},
"finals": "0E28E 0E291 0E294 0E297 0E29A 0E29D 0E2A0 0E2A3 0E2A6 0E2A9 0E2AC 0E2AF 0E2B2 0E2B5 0E2B8 0E2BB 0E2BE 0E2C1 0E2C4 0E2C7 0E2CA 0E2CD 0E2D0 0E2D3 0E2D6 0E2D9 0E2DC 0E2DF 0E2E2 0E2E5 ",
"rphf": [],
"half": [],
"pref": [],
"blwf": [],
"pstf": []
}

View File

@ -0,0 +1,656 @@
[
[{ "161": 0, "191": 1, "11800": 2 }],
[
{
"1994": 0,
"1995": 1,
"1996": 2,
"1997": 3,
"1998": 4,
"1999": 5,
"2000": 6,
"2001": 7,
"2002": 8,
"2003": 9,
"2004": 10,
"2005": 11,
"2006": 12,
"2007": 13,
"2008": 14,
"2009": 15,
"2010": 16,
"2011": 17,
"2012": 18,
"2013": 19,
"2014": 20,
"2015": 21,
"2016": 22,
"2017": 23,
"2018": 24,
"2019": 25,
"2020": 26,
"2021": 27,
"2022": 28,
"2023": 29,
"2042": 30,
"8205": 31,
"57998": 32,
"57999": 33,
"58000": 34,
"58001": 35,
"58002": 36,
"58003": 37,
"58004": 38,
"58005": 39,
"58006": 40,
"58007": 41,
"58008": 42,
"58009": 43,
"58010": 44,
"58011": 45,
"58012": 46,
"58013": 47,
"58014": 48,
"58015": 49,
"58016": 50,
"58017": 51,
"58018": 52,
"58019": 53,
"58020": 54,
"58021": 55,
"58022": 56,
"58023": 57,
"58024": 58,
"58025": 59,
"58026": 60,
"58027": 61,
"58028": 62,
"58029": 63,
"58030": 64,
"58031": 65,
"58032": 66,
"58033": 67,
"58034": 68,
"58035": 69,
"58036": 70,
"58037": 71,
"58038": 72,
"58039": 73,
"58040": 74,
"58041": 75,
"58042": 76,
"58043": 77,
"58044": 78,
"58045": 79,
"58046": 80,
"58047": 81,
"58048": 82,
"58049": 83,
"58050": 84,
"58051": 85,
"58052": 86,
"58053": 87,
"58054": 88,
"58055": 89,
"58056": 90,
"58057": 91,
"58058": 92,
"58059": 93,
"58060": 94,
"58061": 95,
"58062": 96,
"58063": 97,
"58064": 98,
"58065": 99,
"58066": 100,
"58067": 101,
"58068": 102,
"58069": 103,
"58070": 104,
"58071": 105,
"58072": 106,
"58073": 107,
"58074": 108,
"58075": 109,
"58076": 110,
"58077": 111,
"58078": 112,
"58079": 113,
"58080": 114,
"58081": 115,
"58082": 116,
"58083": 117,
"58084": 118,
"58085": 119,
"58086": 120,
"58087": 121
}
],
[{ "1506": 0 }],
[
{
"105": 0,
"106": 1,
"303": 2,
"585": 3,
"616": 4,
"669": 5,
"768": 6,
"769": 7,
"770": 8,
"771": 9,
"772": 10,
"773": 11,
"774": 12,
"775": 13,
"776": 14,
"777": 15,
"778": 16,
"779": 17,
"780": 18,
"781": 19,
"782": 20,
"783": 21,
"784": 22,
"785": 23,
"786": 24,
"787": 25,
"788": 26,
"829": 27,
"830": 28,
"831": 29,
"832": 30,
"833": 31,
"834": 32,
"835": 33,
"836": 34,
"838": 35,
"842": 36,
"843": 37,
"844": 38,
"849": 39,
"850": 40,
"855": 41,
"1011": 42,
"1110": 43,
"1112": 44,
"1155": 45,
"1156": 46,
"1157": 47,
"1158": 48,
"7725": 49,
"7883": 50,
"8400": 51,
"8401": 52,
"8406": 53,
"8407": 54,
"8520": 55,
"8521": 56
}
],
[
{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 },
{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 },
{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 },
{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 },
{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 },
{ "741": 0 },
{ "742": 0 },
{ "743": 0 },
{ "744": 0 },
{ "745": 0 }
],
[{ "1497": 0, "1522": 1 }],
[{ "1073": 0 }],
[{ "330": 0 }],
[
{
"1994": 0,
"1995": 1,
"1996": 2,
"1997": 3,
"1998": 4,
"1999": 5,
"2000": 6,
"2001": 7,
"2002": 8,
"2003": 9,
"2004": 10,
"2005": 11,
"2006": 12,
"2007": 13,
"2008": 14,
"2009": 15,
"2010": 16,
"2011": 17,
"2012": 18,
"2013": 19,
"2014": 20,
"2015": 21,
"2016": 22,
"2017": 23,
"2018": 24,
"2019": 25,
"2020": 26,
"2021": 27,
"2022": 28,
"2023": 29
}
],
[
{
"1570": 0,
"1571": 1,
"1572": 2,
"1573": 3,
"1574": 4,
"1575": 5,
"1576": 6,
"1577": 7,
"1578": 8,
"1579": 9,
"1580": 10,
"1581": 11,
"1582": 12,
"1583": 13,
"1584": 14,
"1585": 15,
"1586": 16,
"1587": 17,
"1588": 18,
"1589": 19,
"1590": 20,
"1591": 21,
"1592": 22,
"1593": 23,
"1594": 24,
"1601": 25,
"1602": 26,
"1603": 27,
"1604": 28,
"1605": 29,
"1606": 30,
"1607": 31,
"1608": 32,
"1609": 33,
"1610": 34,
"1646": 35,
"1647": 36,
"1657": 37,
"1658": 38,
"1659": 39,
"1660": 40,
"1661": 41,
"1662": 42,
"1663": 43,
"1664": 44,
"1665": 45,
"1666": 46,
"1667": 47,
"1668": 48,
"1669": 49,
"1670": 50,
"1671": 51,
"1672": 52,
"1673": 53,
"1674": 54,
"1675": 55,
"1676": 56,
"1677": 57,
"1678": 58,
"1679": 59,
"1680": 60,
"1681": 61,
"1682": 62,
"1683": 63,
"1684": 64,
"1685": 65,
"1686": 66,
"1687": 67,
"1688": 68,
"1689": 69,
"1690": 70,
"1691": 71,
"1692": 72,
"1693": 73,
"1694": 74,
"1695": 75,
"1696": 76,
"1697": 77,
"1698": 78,
"1699": 79,
"1700": 80,
"1701": 81,
"1702": 82,
"1703": 83,
"1704": 84,
"1705": 85,
"1706": 86,
"1707": 87,
"1708": 88,
"1709": 89,
"1710": 90,
"1711": 91,
"1712": 92,
"1713": 93,
"1714": 94,
"1715": 95,
"1716": 96,
"1717": 97,
"1718": 98,
"1719": 99,
"1720": 100,
"1721": 101,
"1722": 102,
"1723": 103,
"1724": 104,
"1725": 105,
"1726": 106,
"1727": 107,
"1734": 108,
"1735": 109,
"1736": 110,
"1739": 111,
"1740": 112,
"1742": 113,
"1744": 114,
"1749": 115
}
],
[
{
"1994": 0,
"1995": 1,
"1996": 2,
"1997": 3,
"1998": 4,
"1999": 5,
"2000": 6,
"2001": 7,
"2002": 8,
"2003": 9,
"2004": 10,
"2005": 11,
"2006": 12,
"2007": 13,
"2008": 14,
"2009": 15,
"2010": 16,
"2011": 17,
"2012": 18,
"2013": 19,
"2014": 20,
"2015": 21,
"2016": 22,
"2017": 23,
"2018": 24,
"2019": 25,
"2020": 26,
"2021": 27,
"2022": 28,
"2023": 29
}
],
[
{
"1574": 0,
"1576": 1,
"1578": 2,
"1579": 3,
"1580": 4,
"1581": 5,
"1582": 6,
"1587": 7,
"1588": 8,
"1589": 9,
"1590": 10,
"1591": 11,
"1592": 12,
"1593": 13,
"1594": 14,
"1601": 15,
"1602": 16,
"1603": 17,
"1604": 18,
"1605": 19,
"1606": 20,
"1607": 21,
"1609": 22,
"1610": 23,
"1646": 24,
"1647": 25,
"1657": 26,
"1658": 27,
"1659": 28,
"1660": 29,
"1661": 30,
"1662": 31,
"1663": 32,
"1664": 33,
"1665": 34,
"1666": 35,
"1667": 36,
"1668": 37,
"1669": 38,
"1670": 39,
"1671": 40,
"1690": 41,
"1691": 42,
"1692": 43,
"1693": 44,
"1694": 45,
"1695": 46,
"1696": 47,
"1697": 48,
"1698": 49,
"1699": 50,
"1700": 51,
"1701": 52,
"1702": 53,
"1703": 54,
"1704": 55,
"1705": 56,
"1706": 57,
"1707": 58,
"1708": 59,
"1709": 60,
"1710": 61,
"1711": 62,
"1712": 63,
"1713": 64,
"1714": 65,
"1715": 66,
"1716": 67,
"1717": 68,
"1718": 69,
"1719": 70,
"1720": 71,
"1721": 72,
"1722": 73,
"1723": 74,
"1724": 75,
"1725": 76,
"1726": 77,
"1727": 78,
"1740": 79,
"1742": 80,
"1744": 81
}
],
[
{
"1994": 0,
"1995": 1,
"1996": 2,
"1997": 3,
"1998": 4,
"1999": 5,
"2000": 6,
"2001": 7,
"2002": 8,
"2003": 9,
"2004": 10,
"2005": 11,
"2006": 12,
"2007": 13,
"2008": 14,
"2009": 15,
"2010": 16,
"2011": 17,
"2012": 18,
"2013": 19,
"2014": 20,
"2015": 21,
"2016": 22,
"2017": 23,
"2018": 24,
"2019": 25,
"2020": 26,
"2021": 27,
"2022": 28,
"2023": 29
}
],
[
{
"1574": 0,
"1576": 1,
"1578": 2,
"1579": 3,
"1580": 4,
"1581": 5,
"1582": 6,
"1587": 7,
"1588": 8,
"1589": 9,
"1590": 10,
"1591": 11,
"1592": 12,
"1593": 13,
"1594": 14,
"1601": 15,
"1602": 16,
"1603": 17,
"1604": 18,
"1605": 19,
"1606": 20,
"1607": 21,
"1609": 22,
"1610": 23,
"1646": 24,
"1647": 25,
"1657": 26,
"1658": 27,
"1659": 28,
"1660": 29,
"1661": 30,
"1662": 31,
"1663": 32,
"1664": 33,
"1665": 34,
"1666": 35,
"1667": 36,
"1668": 37,
"1669": 38,
"1670": 39,
"1671": 40,
"1690": 41,
"1691": 42,
"1692": 43,
"1693": 44,
"1694": 45,
"1695": 46,
"1696": 47,
"1697": 48,
"1698": 49,
"1699": 50,
"1700": 51,
"1701": 52,
"1702": 53,
"1703": 54,
"1704": 55,
"1705": 56,
"1706": 57,
"1707": 58,
"1708": 59,
"1709": 60,
"1710": 61,
"1711": 62,
"1712": 63,
"1713": 64,
"1714": 65,
"1715": 66,
"1716": 67,
"1717": 68,
"1718": 69,
"1719": 70,
"1720": 71,
"1721": 72,
"1722": 73,
"1723": 74,
"1724": 75,
"1725": 76,
"1726": 77,
"1727": 78,
"1740": 79,
"1742": 80,
"1744": 81
}
],
[{ "1613": 0, "1616": 1, "1617": 2 }],
[{ "1611": 0, "1612": 1, "1614": 2, "1615": 3, "1617": 4, "1620": 5 }],
[{ "65247": 0, "65248": 1 }],
[{ "65247": 0, "65248": 1 }],
[{ "102": 0 }],
[{ "32": 0, "1575": 1, "1600": 2, "1608": 3, "1610": 4 }],
[{ "1488": 0 }],
[{ "1381": 0, "1396": 1, "1406": 2 }],
[{ "115": 0 }],
[{ "383": 0 }],
[{ "33": 0, "63": 1, "70": 2, "82": 3, "83": 4, "84": 5, "97": 6, "99": 7 }],
[{ "1471": 0 }],
[{ "1471": 0 }],
[{ "910": 0, "933": 1, "939": 2, "946": 3, "952": 4, "960": 5, "966": 6 }],
[{ "910": 0, "933": 1, "939": 2, "946": 3, "952": 4, "960": 5, "966": 6 }],
[{ "73": 0, "74": 1, "97": 2, "108": 3, "330": 4 }],
[{ "73": 0, "74": 1, "97": 2, "108": 3, "121": 4, "330": 5 }],
[{ "1506": 0 }],
[
{
"768": 0,
"769": 1,
"770": 2,
"771": 3,
"774": 4,
"775": 5,
"776": 6,
"779": 7,
"780": 8,
"783": 9,
"785": 10
}
],
[
{
"105": 0,
"106": 1,
"303": 2,
"585": 3,
"616": 4,
"669": 5,
"1011": 6,
"1110": 7,
"1112": 8,
"7725": 9,
"7883": 10,
"8520": 11,
"8521": 12
}
],
[{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 }],
[{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 }],
[{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 }],
[{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 }],
[{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 }],
[{ "741": 0, "742": 1, "743": 2, "744": 3, "745": 4 }]
]

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,7 @@ global $config;
// Require needed class.
require_once $config['homedir'].'/include/class/AgentsAlerts.class.php';
// Get the parameter.
$sec2 = get_parameter_get('sec2');
$sec2 = get_parameter_get('sec2');
// Add operation menu option.
extensions_add_operation_menu_option(
__('Agents/Alerts view'),

View File

@ -89,14 +89,13 @@ function agents_modules_load_js()
var controls = document.getElementById('vc-controls');
autoHideElement(controls, 1000);
$('select#refresh').change(function (event) {
refr = Number.parseInt(event.target.value, 10);
startCountDown(refr, false);
});
}
else {
var agentes_id = $("#id_agents2").val();
var id_agentes = getQueryParam("full_agents_id");
if (agentes_id === null && id_agentes !== null) {
@ -104,15 +103,15 @@ function agents_modules_load_js()
id_agentes.forEach(function(element) {
$("#id_agents2 option[value="+ element +"]").attr("selected",true);
});
selection_agent_module();
}
$('#refresh').change(function () {
$('#hidden-vc_refr').val($('#refresh option:selected').val());
});
}
$("#group_id").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
@ -128,7 +127,6 @@ function agents_modules_load_js()
jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index
id = id.substring(1);
option = $("<option></option>")
.attr ("value", value["id_agente"])
.html (value["alias"]);
@ -139,7 +137,7 @@ function agents_modules_load_js()
"json"
);
});
$("#checkbox-recursion").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
@ -155,7 +153,6 @@ function agents_modules_load_js()
jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index
id = id.substring(1);
option = $("<option></option>")
.attr ("value", value["id_agente"])
.html (value["alias"]);
@ -166,7 +163,7 @@ function agents_modules_load_js()
"json"
);
});
$("#modulegroup").change (function () {
jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente",
@ -180,8 +177,8 @@ function agents_modules_load_js()
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
.attr ("value", id)
.html (value);
$("#module").append (option);
});
}
@ -207,8 +204,8 @@ function agents_modules_load_js()
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
.attr ("value", id)
.html (value);
$("#module").append (option);
});
}
@ -231,11 +228,11 @@ function agents_modules_load_js()
if(data){
jQuery.each (data, function (id, value) {
option = $("<option></option>")
.attr ("value", value["id_agente_modulo"])
.html (value["nombre"]);
.attr ("value", id)
.html (value);
$("#module").append (option);
});
var id_modules = getQueryParam("full_modules_selected");
if(id_modules !== null) {
id_modules = id_modules.split(";");
@ -249,20 +246,19 @@ function agents_modules_load_js()
);
}
function getQueryParam (key) {
key = key.replace(/[[]/, '[');
key = key.replace(/[]]/, ']');
var pattern = "[?&]" + key + "=([^&#]*)";
function getQueryParam (key) {
key = key.replace(/[[]/, '[');
key = key.replace(/[]]/, ']');
var pattern = "[?&]" + key + "=([^&#]*)";
var regex = new RegExp(pattern);
var url = unescape(window.location.href);
var results = regex.exec(url);
if (results === null) {
return null;
} else {
return results[1];
}
if (results === null) {
return null;
} else {
return results[1];
}
}
</script>
<?php
}
@ -288,7 +284,7 @@ function mainAgentsModules()
// ACL Check.
if (! check_acl($config['id_user'], 0, 'AR')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Agent view (Grouped)'
);
include 'general/noaccess.php';
@ -308,7 +304,10 @@ function mainAgentsModules()
db_process_sql_update('tagente_modulo', ['flag' => 1], $where);
} else {
db_pandora_audit('ACL Violation', 'Trying to set flag for groups');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to set flag for groups'
);
include 'general/noaccess.php';
exit;
}
@ -345,6 +344,7 @@ function mainAgentsModules()
$save_serialize = (int) get_parameter('save_serialize', 0);
$full_modules_selected = explode(';', get_parameter('full_modules_selected', 0));
$full_agents_id = explode(';', get_parameter('full_agents_id', 0));
$show_type = (int) get_parameter('show_type', 0);
// In full screen there is no pagination neither filters.
if (( ($config['pure'] == 0 && $save_serialize) && $update_item == '' ) || ( ($config['pure'] == 1 && $save_serialize == 0) && $update_item == '' )) {
@ -362,11 +362,11 @@ function mainAgentsModules()
unserialize_in_temp($config['id_user'].'_agents', true, 1);
}
if ($modules_selected[0]) {
if (isset($modules_selected[0]) === true && $modules_selected[0]) {
serialize_in_temp($modules_selected, $config['id_user'].'_agent_module', 1);
}
if ($agents_id[0] != -1) {
if (isset($agents_id[0]) === true && $agents_id[0] != -1) {
serialize_in_temp($agents_id, $config['id_user'].'_agents', 1);
}
@ -376,21 +376,30 @@ function mainAgentsModules()
$full_agents = urlencode(implode(';', $agents_id));
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&amp;sec=extensions&amp;sec2=extensions/agents_modules&amp;pure=1&amp;
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'&show_type='.$show_type.'
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
} else if ($full_modules_selected[0] && $full_agents_id[0]) {
$full_modules = urlencode(implode(';', $full_modules_selected));
$full_agents = urlencode(implode(';', $full_agents_id));
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&amp;sec=extensions&amp;sec2=extensions/agents_modules&amp;pure=1&amp;
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'&show_type='.$show_type.'
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
} else {
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&amp;sec=extensions&amp;sec2=extensions/agents_modules&amp;pure=1&amp;
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&show_type='.$show_type.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
}
}
// Type show.
$show_select = [
0 => __('Show module status'),
1 => __('Show module data'),
];
$filter_type_label = '<b>'.__('Information to be shown').'</b>';
$filter_type = html_print_select($show_select, 'show_type', $show_type, '', '', 0, true, false, false, '', false, 'min-width: 180px;');
// Groups.
$filter_groups_label = '<b>'.__('Group').'</b>';
$filter_groups = html_print_select_groups(false, 'AR', true, 'group_id', $group_id, '', '', '', true, false, true, '', false, 'width: auto;');
@ -481,11 +490,29 @@ function mainAgentsModules()
$full_modules = urlencode(implode(';', $full_modules_selected));
$full_agents = urlencode(implode(';', $full_agents_id));
$url = 'index.php?sec=view&sec2=extensions/agents_modules&amp;pure=0&amp;offset=$offset
&group_id=$group_id&modulegroup=$modulegroup&refresh=$refr&full_modules_selected=$full_modules
&full_agents_id=$full_agents&selection_agent_module=$selection_a_m';
$url = sprintf(
'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=%s
&group_id=%s&modulegroup=%s&refresh=%s&full_modules_selected=%s
&full_agents_id=%s&selection_agent_module=%s&show_type=%s',
$offset,
$group_id,
$modulegroup,
$refr,
$full_modules,
$full_agents,
$selection_a_m,
$show_type
);
} else {
$url = 'index.php?sec=view&sec2=extensions/agents_modules&amp;pure=0&amp;offset=$offset&group_id=$group_id&modulegroup=$modulegroup&refresh=$refr';
$url = sprintf(
'index.php?sec=view&sec2=extensions/agents_modules&pure=0&offset=%s&group_id=%s
&modulegroup=%s&refresh=%s&show_type=%s',
$offset,
$group_id,
$modulegroup,
$refr,
$show_type
);
}
// Floating menu - Start.
@ -547,7 +574,11 @@ function mainAgentsModules()
if ($config['pure'] != 1) {
$show_filters = '<form method="post" action="'.ui_get_url_refresh(['offset' => $offset, 'hor_offset' => $offset, 'group_id' => $group_id, 'modulegroup' => $modulegroup]).'" class="w100p">';
$show_filters .= '<table class="w100p no-border" cellpadding="0" cellspacing="0" border="0">';
$show_filters .= '<table class="w100p no-border" cellpadding="15" cellspacing="0" border="0">';
$show_filters .= '<tr>';
$show_filters .= '<td>'.$filter_type_label.'</td>';
$show_filters .= '<td>'.$filter_type.'</td>';
$show_filters .= '</tr>';
$show_filters .= '<tr>';
$show_filters .= '<td>'.$filter_groups_label.'</td>';
$show_filters .= '<td>'.$filter_groups.'&nbsp;&nbsp;&nbsp;'.$filter_recursion_label.$filter_recursion.'</td>';
@ -575,10 +606,10 @@ function mainAgentsModules()
);
}
if ($agents_id[0] != -1) {
if (isset($agents_id[0]) === true && $agents_id[0] != -1) {
$agents = $agents_id;
} else {
if ($full_agents_id[0]) {
if (isset($full_agents_id[0]) === true && $full_agents_id[0]) {
$agents = $full_agents_id;
} else {
$agents = '';
@ -611,24 +642,34 @@ function mainAgentsModules()
}
$total_pagination = count($agents);
if ($agents_id[0] != -1) {
$all_modules = [];
foreach ($modules_selected as $key => $value) {
$name = modules_get_agentmodule_name($value);
$sql = "SELECT id_agente_modulo
FROM tagente_modulo
WHERE nombre = '".$name."';";
if (isset($agents_id[0]) === true && $agents_id[0] != -1) {
if (isset($modules_selected[0]) === true && $modules_selected[0]) {
$all_modules = [];
foreach ($modules_selected as $key => $value) {
$name = modules_get_agentmodule_name($value);
$sql = "SELECT id_agente_modulo
FROM tagente_modulo
WHERE nombre = '".$name."';";
$result_sql = db_get_all_rows_sql($sql);
$result_sql = db_get_all_rows_sql($sql);
if (is_array($result_sql)) {
foreach ($result_sql as $key => $value) {
$all_modules[$value['id_agente_modulo']] = io_safe_output($name);
if (is_array($result_sql)) {
foreach ($result_sql as $key => $value) {
$all_modules[$value['id_agente_modulo']] = io_safe_output($name);
}
}
}
} else {
$all_modules = agents_get_modules(
$agents,
false,
$filter_module_group,
true,
true
);
}
} else {
if ($full_modules_selected[0]) {
if (isset($full_modules_selected[0]) === true && $full_modules_selected[0]) {
foreach ($full_modules_selected as $key => $value) {
$name = modules_get_agentmodule_name($value);
$sql = "SELECT id_agente_modulo
@ -664,7 +705,7 @@ function mainAgentsModules()
$name = $module;
$modules_by_name[$cont]['name'] = $name;
$modules_by_name[$cont]['id'][] = $key;
$cont ++;
$cont++;
}
}
@ -718,7 +759,7 @@ function mainAgentsModules()
if ($hor_offset > 0) {
$new_hor_offset = ($hor_offset - $block);
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&refr=0&save_serialize=1&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&refr=0&save_serialize=1&show_type='.$show_type.'&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
'images/arrow_left_green.png',
true,
['title' => __('Previous modules')]
@ -744,7 +785,7 @@ function mainAgentsModules()
if (($hor_offset + $block) < $nmodules) {
$new_hor_offset = ($hor_offset + $block);
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&save_serialize=1&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
echo "<th width='20px' class='vertical_middle center' rowspan='".($nagents + 1)."'><a href='index.php?".'extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&save_serialize=1&show_type='.$show_type.'&selection_a_m='.$selection_a_m.'&hor_offset='.$new_hor_offset.'&offset='.$offset."'>".html_print_image(
'images/arrow_right_green.png',
true,
['title' => __('More modules')]
@ -821,7 +862,6 @@ function mainAgentsModules()
foreach ($module['id'] as $module_id) {
if (!$match && array_key_exists($module_id, $agent_modules)) {
$status = modules_get_agentmodule_status($module_id);
echo "<td class='center'>";
$win_handle = dechex(crc32($module_id.$module['name']));
$graph_type = return_graphtype(modules_get_agentmodule_type($module_id));
@ -834,32 +874,42 @@ function mainAgentsModules()
$module_last_value = htmlspecialchars($module_last_value);
}
switch ($status) {
case AGENT_MODULE_STATUS_NORMAL:
ui_print_status_image('module_ok.png', $module_last_value, false);
break;
if ($show_type === 0) {
$status = modules_get_agentmodule_status($module_id);
switch ($status) {
case AGENT_MODULE_STATUS_NORMAL:
ui_print_status_image('module_ok.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_CRITICAL_BAD:
ui_print_status_image('module_critical.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_CRITICAL_BAD:
ui_print_status_image('module_critical.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_WARNING:
ui_print_status_image('module_warning.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_WARNING:
ui_print_status_image('module_warning.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_UNKNOWN:
ui_print_status_image('module_unknown.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_UNKNOWN:
ui_print_status_image('module_unknown.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_NORMAL_ALERT:
case AGENT_MODULE_STATUS_WARNING_ALERT:
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
ui_print_status_image('module_alertsfired.png', $module_last_value, false);
break;
case AGENT_MODULE_STATUS_NORMAL_ALERT:
case AGENT_MODULE_STATUS_WARNING_ALERT:
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
ui_print_status_image('module_alertsfired.png', $module_last_value, false);
break;
case 4:
ui_print_status_image('module_no_data.png', $module_last_value, false);
break;
case 4:
ui_print_status_image('module_no_data.png', $module_last_value, false);
break;
}
} else {
$module = modules_get_agentmodule($module_id);
$module['datos'] = $module_last_value;
$module_last_value = modules_get_agentmodule_data_for_humans($module);
echo $module_last_value;
}
echo '</a>';
@ -878,22 +928,24 @@ function mainAgentsModules()
echo '</table>';
$show_legend = "<div class='legend_white'>";
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_ALERTFIRED.";'></div></div>".__('Orange cell when the module has fired alerts').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_CRITICAL.";'></div></div>".__('Red cell when the module has a critical status').'
</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_WARNING.";'></div></div>".__('Yellow cell when the module has a warning status').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_NORMAL.";'></div></div>".__('Green cell when the module has a normal status').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_UNKNOWN.";'></div></div>".__('Grey cell when the module has an unknown status').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_NOTINIT.";'></div></div>".__("Cell turns blue when the module is in 'not initialize' status").'</div>';
$show_legend .= '</div>';
ui_toggle($show_legend, __('Legend'));
if ($show_type === 0) {
$show_legend = "<div class='legend_white'>";
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_ALERTFIRED.";'></div></div>".__('Orange cell when the module has fired alerts').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_CRITICAL.";'></div></div>".__('Red cell when the module has a critical status').'
</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_WARNING.";'></div></div>".__('Yellow cell when the module has a warning status').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_NORMAL.";'></div></div>".__('Green cell when the module has a normal status').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_UNKNOWN.";'></div></div>".__('Grey cell when the module has an unknown status').'</div>';
$show_legend .= "<div class='center flex'>
<div class='legend_square_simple'><div style='background-color: ".COL_NOTINIT.";'></div></div>".__("Cell turns blue when the module is in 'not initialize' status").'</div>';
$show_legend .= '</div>';
ui_toggle($show_legend, __('Legend'));
}
$pure_var = $config['pure'];
if ($pure_var) {

View File

@ -63,7 +63,7 @@ function extension_api_checker()
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Profile Management'
);
include 'general/noaccess.php';
@ -116,7 +116,7 @@ function extension_api_checker()
''
);
$table = null;
$table = new stdClass();
$table->data = [];
$row = [];
@ -144,7 +144,7 @@ function extension_api_checker()
$row[] = html_print_input_password('password', $password, '', 50, 255, true);
$table->data[] = $row;
$table2 = null;
$table2 = new stdClass();
$table2->data = [];
$row = [];
@ -182,7 +182,7 @@ function extension_api_checker()
$row[] = html_print_input_text('other_mode', $other_mode, '', 50, 255, true);
$table2->data[] = $row;
$table3 = null;
$table3 = new stdClass();
$table3->data = [];
$row = [];
@ -202,9 +202,7 @@ function extension_api_checker()
echo '</fieldset>';
echo "<div class='right'>";
echo '</div>';
echo '</form>';
echo "<form method='post'>";
echo '<fieldset>';
echo '<legend>'.__('Custom URL').'</legend>';
html_print_table($table3);

View File

@ -32,7 +32,7 @@ function extension_db_status()
if (!is_user_admin($config['id_user'])) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access db status'
);
include 'general/noaccess.php';

View File

@ -11,6 +11,9 @@
// 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.
use PandoraFMS\Enterprise\Metaconsole\Node;
function dbmanager_query($sql, &$error, $dbconnection)
{
global $config;
@ -88,18 +91,73 @@ function dbmgr_extension_main()
global $config;
if (is_metaconsole() === true) {
open_meta_frame();
}
if (!is_user_admin($config['id_user'])) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Setup Management'
);
include 'general/noaccess.php';
return;
}
$sql = (string) get_parameter('sql');
$node_id = (int) get_parameter('node_id', -1);
ui_print_page_header(__('Database interface'), 'images/gm_db.png', false, false, true);
echo '<div class="notify">';
echo __(
if (is_metaconsole() === true) {
$img = '../../images/warning_modern.png';
} else {
$img = 'images/warning_modern.png';
}
$msg = '<div id="err_msg_centralised">'.html_print_image(
$img,
true
);
$msg .= '<div>'.__(
'Warning, you are accessing the database directly. You can leave the system inoperative if you run an inappropriate SQL statement'
).'</div></div>';
$warning_message = '<script type="text/javascript">
$(document).ready(function () {
infoMessage({
title: \''.__('Warning').'\',
text: \''.$msg.'\' ,
simple: true,
})
})
</script>';
if (empty($sql) === true) {
echo $warning_message;
}
echo "<form method='post' action=''>";
$table = new stdClass();
$table->id = 'db_interface';
$table->class = 'databox';
$table->width = '100%';
$table->data = [];
$table->head = [];
$table->colspan = [];
$table->rowstyle = [];
$table->colspan[0][0] = 2;
$table->colspan[1][0] = 2;
$table->rowspan[2][0] = 3;
$table->rowclass[0] = 'notify';
$table->rowclass[3] = 'pdd_5px';
$table->rowclass[3] = 'flex-content-right';
$table->rowclass[4] = 'flex-content-right';
$data[0][0] = __(
"This is an advanced extension to interface with %s database directly from WEB console
using native SQL sentences. Please note that <b>you can damage</b> your %s installation
if you don't know </b>exactly</b> what are you are doing,
@ -110,19 +168,59 @@ function dbmgr_extension_main()
get_product_name(),
get_product_name()
);
echo '</div>';
echo '<br />';
echo "Some samples of usage: <blockquote><em>SHOW STATUS;<br />DESCRIBE tagente<br />SELECT * FROM tserver<br />UPDATE tagente SET id_grupo = 15 WHERE nombre LIKE '%194.179%'</em></blockquote>";
$data[1][0] = "Some samples of usage: <blockquote><em>SHOW STATUS;<br />DESCRIBE tagente<br />SELECT * FROM tserver<br />UPDATE tagente SET id_grupo = 15 WHERE nombre LIKE '%194.179%'</em></blockquote>";
echo '<br /><br />';
echo "<form method='post' action=''>";
html_print_textarea('sql', 5, 50, html_entity_decode($sql, ENT_QUOTES));
echo '<br />';
echo '<div class="action-buttons w100p">';
echo '<br />';
html_print_submit_button(__('Execute SQL'), '', false, 'class="sub next"');
echo '</div>';
\enterprise_include_once('include/functions_metaconsole.php');
$servers = \metaconsole_get_servers();
if (is_array($servers) === true) {
$servers = array_reduce(
$servers,
function ($carry, $item) {
$carry[$item['id']] = $item['server_name'];
return $carry;
}
);
} else {
$servers = [];
}
$data[2][0] = html_print_textarea(
'sql',
5,
50,
html_entity_decode($sql, ENT_QUOTES),
'',
true
);
if (is_metaconsole() === true) {
$data[3][2] = html_print_input(
[
'name' => 'node_id',
'type' => 'select',
'fields' => $servers,
'selected' => $node_id,
'nothing' => __('This metaconsole'),
'nothing_value' => -1,
'return' => true,
'label' => _('Select query target'),
]
);
}
$data[4][2] = '<div class="action-buttons w100p">';
$data[4][2] .= html_print_submit_button(
__('Execute SQL'),
'',
false,
'class="sub next"',
true
);
$data[4][2] .= '</div>';
$table->data = $data;
html_print_table($table);
echo '</form>';
// Processing SQL Code
@ -134,16 +232,41 @@ function dbmgr_extension_main()
echo '<hr />';
echo '<br />';
$dbconnection = $config['dbconnection'];
$error = '';
$result = dbmanager_query($sql, $error, $dbconnection);
try {
if (\is_metaconsole() === true && $node_id !== -1) {
$node = new Node($node_id);
$dbconnection = @get_dbconnection(
[
'dbhost' => $node->dbhost(),
'dbport' => $node->dbport(),
'dbname' => $node->dbname(),
'dbuser' => $node->dbuser(),
'dbpass' => $node->dbpass(),
]
);
$error = '';
$result = dbmanager_query($sql, $error, $dbconnection);
} else {
$dbconnection = $config['dbconnection'];
$error = '';
$result = dbmanager_query($sql, $error, $dbconnection);
}
} catch (\Exception $e) {
$error = __('Error querying database node');
$result = false;
}
if ($result === false) {
echo '<strong>An error has occured when querying the database.</strong><br />';
echo $error;
db_pandora_audit('DB Interface Extension', 'Error in SQL', false, false, $sql);
db_pandora_audit(
AUDIT_LOG_SYSTEM,
'DB Interface Extension. Error in SQL',
false,
false,
$sql
);
return;
}
@ -151,7 +274,13 @@ function dbmgr_extension_main()
if (! is_array($result)) {
echo '<strong>Output: <strong>'.$result;
db_pandora_audit('DB Interface Extension', 'SQL', false, false, $sql);
db_pandora_audit(
AUDIT_LOG_SYSTEM,
'DB Interface Extension. SQL',
false,
false,
$sql
);
return;
}
@ -166,9 +295,29 @@ function dbmgr_extension_main()
html_print_table($table);
echo '</div>';
if (is_metaconsole()) {
close_meta_frame();
}
}
if (is_metaconsole() === true) {
// This adds a option in the operation menu.
extensions_add_meta_menu_option(
'DB interface',
'PM',
'gextensions',
'database.png',
'v1r1',
'gdbman'
);
extensions_add_meta_function('dbmgr_extension_main');
} else {
}
// This adds a option in the operation menu
extensions_add_godmode_menu_option(__('DB interface'), 'PM', 'gextensions', 'dbmanager/icon.png', 'v1r1', 'gdbman');

View File

@ -16,7 +16,10 @@ function load_matrix_console()
global $config;
if (! check_acl($config['id_user'], 0, 'ER')) {
db_pandora_audit('ACL Violation', 'Trying to access event viewer');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access event viewer'
);
include 'general/noaccess.php';
return;
}

View File

@ -17,7 +17,7 @@ function extension_uploader_extensions()
if (!check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit(
'ACL Violation',
AUDIT_LOG_ACL_VIOLATION,
'Trying to access Group Management'
);
include 'general/noaccess.php';
@ -61,7 +61,10 @@ function extension_uploader_extensions()
}
if ($result) {
db_pandora_audit('Extension manager', 'Upload extension '.$_FILES['extension']['name']);
db_pandora_audit(
AUDIT_LOG_EXTENSION_MANAGER,
'Upload extension '.$_FILES['extension']['name']
);
}
ui_print_result_message(
@ -71,7 +74,7 @@ function extension_uploader_extensions()
);
}
$table = null;
$table = new stdClass();
$table->width = '100%';
$table->class = 'databox filters';

View File

@ -106,7 +106,10 @@ function pandora_files_repo_godmode()
// ACL Check
check_login();
if (! check_acl($config['id_user'], 0, 'PM')) {
db_pandora_audit('ACL Violation', 'Trying to access to Files repository');
db_pandora_audit(
AUDIT_LOG_ACL_VIOLATION,
'Trying to access to Files repository'
);
include 'general/noaccess.php';
return;
}
@ -142,7 +145,7 @@ function pandora_files_repo_godmode()
// Check for an anoying error that causes the $_POST and $_FILES arrays.
// were empty if the file is larger than the post_max_size.
if (intval($server_content_length) > 0 && empty($_POST)) {
ui_print_error_message(__('The file exceeds the maximum size'));
ui_print_error_message(__('Problem uploading. Please check this PHP runtime variable values: <pre> post_max_size (currently '.ini_get('post_max_size').')</pre>'));
}
// GET and POST parameters.

View File

@ -77,7 +77,7 @@ if (!empty($files)) {
$file_name = explode('/', $file['location']);
$file_decoded = $file_name[(count($file_name) - 1)];
$file_path = base64_encode($file_decoded);
$hash = md5($file_path.$config['dbpass']);
$hash = md5($file_path.$config['server_unique_identifier']);
$url = ui_get_full_url(
'include/get_file.php?file='.urlencode($file_path).'&hash='.$hash
);
@ -131,7 +131,7 @@ if (!empty($files)) {
$config_url = ui_get_full_url(
'index.php?sec=godmode/extensions&sec2=extensions/files_repo&file_id='.$file_id
);
$data[4] .= '<a href=\"$config_url\">';
$data[4] .= "<a href=\"$config_url\">";
$data[4] .= html_print_image(
'images/config.png',
true,

Some files were not shown because too many files have changed in this diff Show More