Merge branch 'develop' into new_networkmap_feature
This commit is contained in:
commit
3e50676e19
28
.travis.yml
28
.travis.yml
|
@ -1,33 +1,7 @@
|
|||
sudo: required
|
||||
|
||||
language: python
|
||||
python:
|
||||
- 2.7
|
||||
|
||||
env:
|
||||
global:
|
||||
- secure: "MEfyEpYEBkPmgPYX3CDKhaoiOltH5lDcUOYZ/19Yflg6ee20IBZOywCmrKH7VouKlOHUrGTUQqHBou0npm93qBju3MrPCE2R62PiDV2EHCGl3AFpLkgt0m1/DceWCWKlL+gI8uvnEFzVUuaPm6cEcRn1ikzg5b084bTxJ2B1Bvs="
|
||||
- SAUCE_USERNAME="artica_pandorafms"
|
||||
|
||||
addons:
|
||||
firefox: "latest"
|
||||
sauce_connect: true
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
before_install:
|
||||
- sudo apt-get install xvfb
|
||||
|
||||
install:
|
||||
- pip install selenium PyVirtualDisplay sauceclient testtools
|
||||
|
||||
#before_script:
|
||||
# - "export DISPLAY=:99.0"
|
||||
# - "sh -e /etc/init.d/xvfb start"
|
||||
# - sleep 4 # give xvfb some time to start
|
||||
|
||||
script:
|
||||
- docker run --name pandorafms -h pandorafms -dt -v "$TRAVIS_BUILD_DIR:/tmp/pandorafms" -p 127.0.0.1:80:80 pandorafms/pandorafms-base tail -f /var/log/messages
|
||||
- docker exec -t pandorafms /tmp/pandorafms/tests/test.sh
|
||||
- python $TRAVIS_BUILD_DIR/tests/run_console_tests.py
|
||||
- docker run --rm -t -v "$TRAVIS_BUILD_DIR:/tmp/pandorafms" pandorafms/pandorafms-base /tmp/pandorafms/tests/test.sh
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 6.1dev-160913
|
||||
Version: 6.1dev-160921
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="6.1dev-160913"
|
||||
pandora_version="6.1dev-160921"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -41,7 +41,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '6.1dev';
|
||||
use constant AGENT_BUILD => '160913';
|
||||
use constant AGENT_BUILD => '160921';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 6.1dev
|
||||
%define release 160913
|
||||
%define release 160921
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_agent_unix
|
||||
%define version 6.1dev
|
||||
%define release 160913
|
||||
%define release 160921
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="6.1dev"
|
||||
PI_BUILD="160913"
|
||||
PI_BUILD="160921"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{160913}
|
||||
{160921}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("6.1dev(Build 160913)")
|
||||
#define PANDORA_VERSION ("6.1dev(Build 160921)")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(6.1dev(Build 160913))"
|
||||
VALUE "ProductVersion", "(6.1dev(Build 160921))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 6.1dev-160913
|
||||
Version: 6.1dev-160921
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="6.1dev-160913"
|
||||
pandora_version="6.1dev-160921"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
$tipo = $_GET['message'];
|
||||
|
||||
echo "<div class='info_box' style='padding-top:20px;padding-bottom:20px;'><span style='padding:20px;'>";
|
||||
|
||||
switch ($tipo) {
|
||||
case "module":
|
||||
echo __("The community version have not the ability to define your own library of local modules, or distribute it to remote agents. You need to do that changes individually on each agent, but it's possible by using external tools and space time and effort. Nor can distribute local plugins, and nor does it have access to the library of plugins enterprise to monitor applications such as Informix, Oracle, DB2, SQL Server, Exchange, WebSphere, Oracle Exadata, F5, JBoss, HyperV, VMWare, RHEV, to name a few. With the Enterprise version will have all this, and the ability to distribute and manage their own local modules to your systems, individually or through policies.");
|
||||
break;
|
||||
case "massive":
|
||||
echo __("You want to manage your monitoring homogeneously? Do you have many systems and is difficult to manage in a comprehensive manner? Would you like to deploy monitoring, alerts and even local plugins with a single click? Pandora FMS Enterprise Policies are exactly what you need, you'll save time, effort and dislikes. More information (link to pandorafms.com)");
|
||||
break;
|
||||
case "events":
|
||||
echo __("Pandora FMS Enterprise has event correlation. Through correlation you can generate alerts and / or new events based on logical rules on your realtime events. This allows you to automate the troubleshooting. If you know the value of working with events, the correlation will take you to a new level.");
|
||||
break;
|
||||
case "reporting":
|
||||
echo __("The reports of the Enterprise version are more powerful: it has wizards, you can schedule sending via email in PDF, and it has a template system to create reports quickly for each of your customers. It will even allow your customers generate their own reports from templates created by you. If reports are key to your business, Pandora FMS Enterprise version can be very useful for you.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
echo "</span></div>";
|
||||
|
||||
|
||||
echo "<button id='cerrar' onclick='ocultar();'>OK</button>";
|
||||
|
||||
?>
|
||||
|
||||
<script>
|
||||
|
||||
function ocultar(){
|
||||
$("#alert_messages" ).dialog('close');
|
||||
|
||||
|
||||
}
|
||||
|
||||
</script>
|
|
@ -71,7 +71,7 @@ config_check();
|
|||
$table->width = "100%";
|
||||
$table->styleTable = 'margin: auto; margin-top: 0px;';
|
||||
$table->rowclass[0] = '';
|
||||
|
||||
$table->data[0][11] = ui_print_help_tip (__("Blank characters are used as AND conditions"), true);
|
||||
// Search bar
|
||||
$search_bar = '<form method="get" style="display: inline;" name="quicksearch" action="">';
|
||||
if (!isset($config['search_keywords'])) {
|
||||
|
@ -303,9 +303,9 @@ config_check();
|
|||
$table->data[0][9] .= html_print_image ("images/header_email.png", true, array ("title" => __('You have %d unread message(s)', $msg_cnt), "id" => "yougotmail", "class" => "bot", 'style' => 'width:24px;'));
|
||||
$table->data[0][9] .= '</a>';
|
||||
}
|
||||
|
||||
$table->data[0][11] = ui_print_help_tip (__("Blank characters are used as AND conditions"), true);
|
||||
|
||||
|
||||
|
||||
|
||||
html_print_table($table);
|
||||
|
||||
unset($table);
|
||||
|
@ -386,8 +386,8 @@ config_check();
|
|||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
$("#publienterprise").pulsate ();
|
||||
|
||||
<?php
|
||||
if ($_GET["refr"]) {
|
||||
$_get_refr = strip_tags($_GET["refr"]);
|
||||
|
|
|
@ -79,9 +79,9 @@ echo '<div id="login_in">';
|
|||
echo '<table id="login_layout">';
|
||||
echo'<tr style="height:15px;"><td>';
|
||||
echo '<div class="login_links">';
|
||||
echo '<a href="http://wiki.pandorafms.com/" target="_blank">' . __('Help') . '</a>';
|
||||
echo '<a href="http://wiki.pandorafms.com/" target="_blank">' . __('Docs') . '</a>';
|
||||
echo ' | ';
|
||||
echo '<a href="http://forums.pandorafms.com/" target="_blank">' . __('Support') . '</a>';
|
||||
echo '<a href="https://pandorafms.com/monitoring-services/support/" target="_blank">' . __('Support') . '</a>';
|
||||
echo '</div>';
|
||||
echo '</td></tr>';
|
||||
echo'<tr>
|
||||
|
@ -96,15 +96,16 @@ echo '<div id="login_in">';
|
|||
}
|
||||
else {
|
||||
html_print_image ("images/logo_login.png", false, array ("class" => "login_logo", "alt" => "logo", "border" => 0, "title" => $logo_title), false, true);
|
||||
echo "<br><span style='font-size:120%;color:white;top:10px;position:relative;'>Community edition</span>";
|
||||
}
|
||||
echo '</a>';
|
||||
|
||||
// This prints the current pandora console version.
|
||||
// For stable/live function it might be wise to comment it out
|
||||
|
||||
|
||||
/* CUSTOM BRANDING ENDS HERE */
|
||||
echo '</td><td style="padding-top: 15px; position:absolute;">';
|
||||
|
||||
|
||||
switch ($login_screen) {
|
||||
case 'login':
|
||||
if (!empty ($page) && !empty ($sec)) {
|
||||
|
|
|
@ -349,19 +349,27 @@ else {
|
|||
switch ($config["dbtype"]) {
|
||||
case "mysql":
|
||||
$order['field2'] = "";
|
||||
/*
|
||||
$sql = sprintf ('SELECT *
|
||||
FROM tagente
|
||||
WHERE 1=1
|
||||
%s
|
||||
ORDER BY %s %s, %s %s LIMIT %d, %d', $search_sql, $order['field'],$order['order'], $order['field2'],
|
||||
$order['order'], $offset, $config["block_size"]);
|
||||
*/
|
||||
$sql = sprintf ('SELECT *
|
||||
FROM tagente
|
||||
WHERE 1=1
|
||||
%s
|
||||
ORDER BY %s %s %s LIMIT %d, %d', $search_sql, $order['field'], $order['field2'],
|
||||
$order['order'], $offset, $config["block_size"]);
|
||||
break;
|
||||
case "postgresql":
|
||||
$sql = sprintf ('SELECT *
|
||||
FROM tagente
|
||||
WHERE 1=1
|
||||
%s
|
||||
ORDER BY %s %s, %s %s LIMIT %d OFFSET %d', $search_sql, $order['field'],$order['order'], $order['field2'],
|
||||
ORDER BY %s %s %s LIMIT %d OFFSET %d', $search_sql, $order['field'], $order['field2'],
|
||||
$order['order'], $config["block_size"], $offset);
|
||||
break;
|
||||
case "oracle":
|
||||
|
@ -372,7 +380,7 @@ else {
|
|||
FROM tagente
|
||||
WHERE 1=1
|
||||
%s
|
||||
ORDER BY %s %s, %s %s', $search_sql, $order['field'],$order['order'], $order['field2'], $order['order']);
|
||||
ORDER BY %s %s %s', $search_sql, $order['field'], $order['field2'], $order['order']);
|
||||
$sql = oracle_recode_query ($sql, $set);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -37,9 +37,9 @@ $table->head = array ();
|
|||
$table->data = array ();
|
||||
$table->size = array ();
|
||||
$table->size = array ();
|
||||
$table->size[0] = '10%';
|
||||
$table->size[0] = '5%';
|
||||
$table->size[1] = '25%';
|
||||
$table->size[2] = '10%';
|
||||
$table->size[2] = '5%';
|
||||
$table->size[3] = '20%';
|
||||
$table->style[0] = 'font-weight: bold; ';
|
||||
$table->style[1] = 'font-weight: bold; ';
|
||||
|
@ -80,30 +80,8 @@ $table->data[0][1] .= '<span id="value"> </span></span>';
|
|||
$table->data[0][1] .= ' <span id="module_loading" class="invisible">';
|
||||
$table->data[0][1] .= html_print_image('images/spinner.png', true) . '</span>';
|
||||
|
||||
$table->data[0][2] = __('Template');
|
||||
$own_info = get_user_info ($config['id_user']);
|
||||
if ($own_info['is_admin'] || check_acl ($config['id_user'], 0, "PM"))
|
||||
$templates = alerts_get_alert_templates (false, array ('id', 'name'));
|
||||
else {
|
||||
$usr_groups = users_get_groups($config['id_user'], 'LW', true);
|
||||
$filter_groups = '';
|
||||
$filter_groups = implode(',', array_keys($usr_groups));
|
||||
$templates = alerts_get_alert_templates (array ('id_group IN (' . $filter_groups . ')'), array ('id', 'name'));
|
||||
}
|
||||
|
||||
$table->data[0][3] = html_print_select (index_array ($templates, 'id', 'name'),
|
||||
'template', '', '', __('Select'), 0, true, false, true, '', false, 'width: 250px;');
|
||||
$table->data[0][3] .= ' <a class="template_details invisible" href="#">' .
|
||||
html_print_image("images/zoom.png", true, array("class" => 'img_help')) . '</a>';
|
||||
if (check_acl ($config['id_user'], 0, "LM")) {
|
||||
$table->data[0][3] .= '<a href="index.php?sec=galertas&sec2=godmode/alerts/configure_alert_template&pure='.$pure.'">';
|
||||
$table->data[0][3] .= html_print_image ('images/add.png', true);
|
||||
$table->data[0][3] .= "<div style='float:right;padding-top:5px;' >" . __('Create Template') . "</div>";
|
||||
$table->data[0][3] .= '</a>';
|
||||
}
|
||||
|
||||
$table->data[1][0] = __('Actions');
|
||||
|
||||
|
||||
$groups_user = users_get_groups($config["id_user"]);
|
||||
if (!empty($groups_user)) {
|
||||
$groups = implode(',', array_keys($groups_user));
|
||||
|
@ -124,14 +102,39 @@ $table->data[1][1] .= ui_print_help_icon ("alert-matches", true,
|
|||
ui_get_full_url(false, false, false, false));
|
||||
$table->data[1][1] .= '</span>';
|
||||
if (check_acl ($config['id_user'], 0, "LM")) {
|
||||
|
||||
$table->data[1][1] .= '<a href="index.php?sec=galertas&sec2=godmode/alerts/configure_alert_action&pure='.$pure.'">';
|
||||
$table->data[1][1] .= ' ' . __('Create Action');
|
||||
|
||||
|
||||
$table->data[1][1] .= '<a style="margin-left:5px;" href="index.php?sec=galertas&sec2=godmode/alerts/configure_alert_action&pure='.$pure.'">';
|
||||
$table->data[1][1] .= html_print_image ('images/add.png', true);
|
||||
$table->data[1][1] .= '<span style="margin-left:5px;vertical-align:middle;">'.__('Create Action').'</span>';
|
||||
$table->data[1][1] .= '</a>';
|
||||
}
|
||||
$table->data[1][2] = __('Threshold');
|
||||
$table->data[1][3] = html_print_extended_select_for_time ('module_action_threshold', 0, '', 0,
|
||||
__('None'), false, true) . ui_print_help_icon ('action_threshold', true, ui_get_full_url(false, false, false, false));
|
||||
|
||||
$table->data[2][0] = __('Template');
|
||||
$own_info = get_user_info ($config['id_user']);
|
||||
if ($own_info['is_admin'] || check_acl ($config['id_user'], 0, "PM"))
|
||||
$templates = alerts_get_alert_templates (false, array ('id', 'name'));
|
||||
else {
|
||||
$usr_groups = users_get_groups($config['id_user'], 'LW', true);
|
||||
$filter_groups = '';
|
||||
$filter_groups = implode(',', array_keys($usr_groups));
|
||||
$templates = alerts_get_alert_templates (array ('id_group IN (' . $filter_groups . ')'), array ('id', 'name'));
|
||||
}
|
||||
|
||||
$table->data[2][1] = html_print_select (index_array ($templates, 'id', 'name'),
|
||||
'template', '', '', __('Select'), 0, true, false, true, '', false, 'width: 250px;');
|
||||
$table->data[2][1] .= ' <a class="template_details invisible" href="#">' .
|
||||
html_print_image("images/zoom.png", true, array("class" => 'img_help')) . '</a>';
|
||||
if (check_acl ($config['id_user'], 0, "LM")) {
|
||||
$table->data[2][1] .= '<a href="index.php?sec=galertas&sec2=godmode/alerts/configure_alert_template&pure='.$pure.'">';
|
||||
$table->data[2][1] .= html_print_image ('images/add.png', true);
|
||||
$table->data[2][1] .= '<span style="margin-left:5px;vertical-align:middle;">'.__('Create Template').'</span>';
|
||||
$table->data[2][1] .= '</a>';
|
||||
}
|
||||
$table->data[3][0] = __('Threshold');
|
||||
$table->data[3][1] = html_print_extended_select_for_time ('module_action_threshold', 0, '', 0,
|
||||
__('None'), false, true) . ui_print_help_icon ('action_threshold', true, ui_get_full_url(false, false, false, false));
|
||||
|
||||
|
||||
echo '<form class="add_alert_form" method="post">';
|
||||
|
||||
|
|
|
@ -401,10 +401,7 @@ else {
|
|||
$table->size[4] = '1%';
|
||||
}
|
||||
|
||||
$table->head[1] = __('Module') . ' ' .
|
||||
'<a href="' . $url . '&sort_field=module&sort=up&pure='.$pure.'">' . html_print_image("images/sort_up.png", true, array("style" => $selectModuleUp)) . '</a>' .
|
||||
'<a href="' . $url . '&sort_field=module&sort=down&pure='.$pure.'">' . html_print_image("images/sort_down.png", true, array("style" => $selectModuleDown)) . '</a>' .
|
||||
'<br/>' . __('Template') . ' ' .
|
||||
$table->head[1] = __('Template') . ' ' .
|
||||
'<a href="' . $url . '&sort_field=template&sort=up&pure='.$pure.'">' . html_print_image("images/sort_up.png", true, array("style" => $selectTemplateUp)) . '</a>' .
|
||||
'<a href="' . $url . '&sort_field=template&sort=down&pure='.$pure.'">' . html_print_image("images/sort_down.png", true, array("style" => $selectTemplateDown)) . '</a>';
|
||||
$table->head[2] = __('Actions');
|
||||
|
@ -417,6 +414,8 @@ $table->valign[2] = 'middle';
|
|||
$table->valign[3] = 'middle';
|
||||
$table->valign[4] = 'middle';
|
||||
|
||||
$table->style[4] = "min-width:80px";
|
||||
|
||||
$table->data = array ();
|
||||
|
||||
$url .= $sort_params;
|
||||
|
@ -469,8 +468,9 @@ foreach ($simple_alerts as $alert) {
|
|||
}
|
||||
|
||||
$module_name = modules_get_agentmodule_name ($alert['id_agent_module']);
|
||||
$data[1] = ui_print_truncate_text($module_name, 'module_medium', false, true, true, '[…]', 'display:block;font-size: 7.2pt') . '<br>';
|
||||
|
||||
$data[0] .= ui_print_truncate_text($module_name, 'module_medium', false, true, true, '[…]', 'display:block;font-size: 7.2pt') . '<br>';
|
||||
|
||||
|
||||
$template_group = db_get_value('id_group', 'talert_templates', 'id', $alert['id_alert_template']);
|
||||
|
||||
// The access to the template manage page is necessary have LW permissions on template group
|
||||
|
@ -508,13 +508,13 @@ foreach ($simple_alerts as $alert) {
|
|||
foreach ($actions as $action_id => $action) {
|
||||
$data[2] .= "<tr>";
|
||||
$data[2] .= "<td>";
|
||||
$data[2] .= '<ul class="action_list">';
|
||||
$data[2] .= '<li>';
|
||||
$data[2] .= '<ul class="action_list" style="display:inline;">';
|
||||
$data[2] .= '<li style="display:inline;">';
|
||||
if ($alert['disabled'])
|
||||
$data[2] .= '<font class="action_name" style="font-style: italic; color: #aaaaaa;">';
|
||||
else
|
||||
$data[2] .= '<font class="action_name">';
|
||||
$data[2] .= ui_print_truncate_text($action['name'], GENERIC_SIZE_TEXT, false);
|
||||
$data[2] .= ui_print_truncate_text($action['name'], (GENERIC_SIZE_TEXT+20), false);
|
||||
$data[2] .= ' <em>(';
|
||||
if ($action['fires_min'] == $action['fires_max']) {
|
||||
if ($action['fires_min'] == 0)
|
||||
|
|
|
@ -205,7 +205,7 @@ $onheader['satellite'] = $satellitetab;
|
|||
|
||||
ui_print_page_header(
|
||||
__('Massive operations') . ' » '. $options[$option],
|
||||
"images/gm_massive_operations.png", false, "", true, $onheader);
|
||||
"images/gm_massive_operations.png", false, "", true, $onheader,true, "massive");
|
||||
|
||||
// Checks if the PHP configuration is correctly
|
||||
if ((get_cfg_var("max_execution_time") != 0)
|
||||
|
|
|
@ -40,7 +40,7 @@ if (defined('METACONSOLE')) {
|
|||
else {
|
||||
ui_print_page_header (__('Module management') . ' » ' .
|
||||
__('Network component management'), "", false,
|
||||
"network_component", true);
|
||||
"network_component", true,"sell",true,"module");
|
||||
$sec = 'gmodules';
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ if (! check_acl ($config['id_user'], 0, "PM")) {
|
|||
}
|
||||
|
||||
// Header
|
||||
ui_print_page_header (__('Module management')." » ".__('Module template management'), "images/gm_modules.png", false, "template_tab", true);
|
||||
ui_print_page_header (__('Module management')." » ".__('Module template management'), "images/gm_modules.png", false, "template_tab", true,"",true,"module");
|
||||
|
||||
|
||||
require_once ('include/functions_network_profiles.php');
|
||||
|
@ -180,7 +180,7 @@ $table->class = "databox data";
|
|||
$table->head = array ();
|
||||
$table->head[0] = __('Name');
|
||||
$table->head[1] = __('Description');
|
||||
$table->head[2] = __('Action') .
|
||||
$table->head[2] = '<span style="margin-right:7%;">'.__('Action') .'</span>'.
|
||||
html_print_checkbox('all_delete', 0, false, true, false, 'check_all_checkboxes();');
|
||||
$table->size = array ();
|
||||
$table->size[1] = '65%';
|
||||
|
|
|
@ -620,7 +620,7 @@ $class = 'databox filters';
|
|||
<td style="">
|
||||
<?php
|
||||
if ($action == 'new') {
|
||||
html_print_select(reports_get_report_types(false, true), 'type', $type, 'chooseType();', '', '');
|
||||
html_print_select(reports_get_report_types(false, true), 'type', $type, 'chooseType();', '', '','','','','','','','','',true,'reporting');
|
||||
}
|
||||
else {
|
||||
$report_type = reports_get_report_types();
|
||||
|
|
|
@ -299,7 +299,7 @@ $table->data[8][1] .= ui_print_help_tip(
|
|||
// Group
|
||||
$table->data[9][0] = "<b>".__('Group');
|
||||
$groups = users_get_groups (false, "PM", false);
|
||||
$table->data[9][1] = html_print_select_groups(false, "PM", true, 'id_group', $id_group, '', '', 0, true);
|
||||
$table->data[9][1] = html_print_select_groups(false, "PM", false, 'id_group', $id_group, '', '', 0, true);
|
||||
|
||||
// Incident
|
||||
$values = array (0 => __('No'), 1 => __('Yes'));
|
||||
|
|
|
@ -105,6 +105,8 @@ enterprise_include_once ('meta/include/functions_components_meta.php');
|
|||
$view = get_parameter ("view", "");
|
||||
$create = get_parameter ("create", "");
|
||||
$filemanager = (bool)get_parameter("filemanager", false);
|
||||
$edit_file = get_parameter("edit_file",false);
|
||||
$update_file = get_parameter("update_file",false);
|
||||
$plugin_command = get_parameter('plugin_command', '');
|
||||
$tab = get_parameter('tab', '');
|
||||
|
||||
|
@ -142,57 +144,102 @@ if ($create != "") {
|
|||
// INIT FILEMANAGER
|
||||
// =====================================================================
|
||||
if ($filemanager) {
|
||||
|
||||
$id_plugin = (int)get_parameter('id_plugin', 0);
|
||||
|
||||
|
||||
/* Add custom directories here */
|
||||
$fallback_directory = "attachment/plugin";
|
||||
|
||||
$directory = (string) get_parameter ('directory', $fallback_directory);
|
||||
$directory = str_replace("\\", "/", $directory);
|
||||
|
||||
// A miminal security check to avoid directory traversal
|
||||
if (preg_match ("/\.\./", $directory))
|
||||
$directory = $fallback_directory;
|
||||
if (preg_match ("/^\//", $directory))
|
||||
$directory = $fallback_directory;
|
||||
if (preg_match ("/^manager/", $directory))
|
||||
$directory = $fallback_directory;
|
||||
|
||||
$banned_directories['include'] = true;
|
||||
$banned_directories['godmode'] = true;
|
||||
$banned_directories['operation'] = true;
|
||||
$banned_directories['reporting'] = true;
|
||||
$banned_directories['general'] = true;
|
||||
$banned_directories[ENTERPRISE_DIR] = true;
|
||||
|
||||
if (isset ($banned_directories[$directory]))
|
||||
$directory = $fallback_directory;
|
||||
|
||||
$real_directory = realpath ($config['homedir'] . '/' . $directory);
|
||||
|
||||
echo '<h4>' . __('Index of %s', $directory) . '</h4>';
|
||||
|
||||
$chunck_url = '&view=' . $id_plugin;
|
||||
if ($id_plugin == 0) {
|
||||
$chunck_url = '&create=1';
|
||||
if($edit_file) {
|
||||
$location_file = get_parameter("location_file",'');
|
||||
$filename = array_pop(explode("/",$location_file));
|
||||
$file = file_get_contents($location_file);
|
||||
echo "<h4>" . __("Edit file") ." ".$filename. "</h4>";
|
||||
//echo "<a href='index.php?sec=gagente&sec2=enterprise/godmode/agentes/collections&action=file&id=" . $collection['id'] . "&directory=" . $relative_dir . "&hash2=" . $hash2 . "'>" . __('Back to file explorer') . "</a>";
|
||||
echo "<form method='post' action='index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1"."&update_file=1'>";
|
||||
//html_print_input_hidden('location_file', $locationFile);
|
||||
echo "<table style='width: 98%'>";
|
||||
echo "<tr>";
|
||||
echo "<th>" . __('Edit') . "</th>";
|
||||
echo "</tr>";
|
||||
echo "<tr>";
|
||||
echo "<td>";
|
||||
echo "<textarea name='content_file' style='width: 100%; height: 400px;' >";
|
||||
echo $file;
|
||||
echo "</textarea>";
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "<tr align='right'>";
|
||||
echo "<td>";
|
||||
html_print_input_hidden('location_file', $location_file);
|
||||
|
||||
echo __('Compatibility mode').":";
|
||||
$options = array('unix' => 'Unix', 'windows' => 'Windows');
|
||||
html_print_select($options, 'compatibility', $compatibility);
|
||||
echo " <input type='submit' name='submit' value='" . __('Update') . "' class='sub upd' />";
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
echo "</table>";
|
||||
echo "</form>";
|
||||
}else {
|
||||
|
||||
if($update_file){
|
||||
$location_file = get_parameter("location_file",'');
|
||||
$contentFile = io_safe_output(get_parameter('content_file', ''));
|
||||
$compatibility = get_parameter('compatibility', 'unix');
|
||||
$is_win_compatible = strpos($contentFile, "\r\n");
|
||||
// If is win compatible and the compatibility must be unix
|
||||
if ($is_win_compatible !== false && $compatibility == 'unix') {
|
||||
$contentFile = str_replace("\r\n", "\n", $contentFile);
|
||||
}
|
||||
// If is unix compatible and the compatibility must be win
|
||||
else if ($is_win_compatible === false && $compatibility == 'windows') {
|
||||
$contentFile = str_replace("\n", "\r\n", $contentFile);
|
||||
}
|
||||
$result = file_put_contents($location_file, $contentFile);
|
||||
|
||||
}
|
||||
$id_plugin = (int)get_parameter('id_plugin', 0);
|
||||
|
||||
/* Add custom directories here */
|
||||
$fallback_directory = "attachment/plugin";
|
||||
|
||||
$directory = (string) get_parameter ('directory', $fallback_directory);
|
||||
$directory = str_replace("\\", "/", $directory);
|
||||
|
||||
// A miminal security check to avoid directory traversal
|
||||
if (preg_match ("/\.\./", $directory))
|
||||
$directory = $fallback_directory;
|
||||
if (preg_match ("/^\//", $directory))
|
||||
$directory = $fallback_directory;
|
||||
if (preg_match ("/^manager/", $directory))
|
||||
$directory = $fallback_directory;
|
||||
|
||||
$banned_directories['include'] = true;
|
||||
$banned_directories['godmode'] = true;
|
||||
$banned_directories['operation'] = true;
|
||||
$banned_directories['reporting'] = true;
|
||||
$banned_directories['general'] = true;
|
||||
$banned_directories[ENTERPRISE_DIR] = true;
|
||||
|
||||
if (isset ($banned_directories[$directory]))
|
||||
$directory = $fallback_directory;
|
||||
|
||||
$real_directory = realpath ($config['homedir'] . '/' . $directory);
|
||||
|
||||
echo '<h4>' . __('Index of %s', $directory) . '</h4>';
|
||||
|
||||
$chunck_url = '&view=' . $id_plugin;
|
||||
if ($id_plugin == 0) {
|
||||
$chunck_url = '&create=1';
|
||||
}
|
||||
|
||||
$homedir_filemanager = isset ($config['homedir_filemanager']) ? $config['homedir_filemanager'] : false;
|
||||
filemanager_file_explorer($real_directory,
|
||||
$directory,
|
||||
'index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin=' . $id_plugin,
|
||||
$fallback_directory,
|
||||
true,
|
||||
false,
|
||||
'index.php?sec=gservers&sec2=godmode/servers/plugin' . $chunck_url . '&plugin_command=[FILE_FULLPATH]&id_plugin=' . $id_plugin,
|
||||
true,
|
||||
0775,
|
||||
$homedir_filemanager);
|
||||
}
|
||||
|
||||
$homedir_filemanager = isset ($config['homedir_filemanager']) ? $config['homedir_filemanager'] : false;
|
||||
|
||||
filemanager_file_explorer($real_directory,
|
||||
$directory,
|
||||
'index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin=' . $id_plugin,
|
||||
$fallback_directory,
|
||||
false,
|
||||
false,
|
||||
'index.php?sec=gservers&sec2=godmode/servers/plugin' . $chunck_url . '&plugin_command=[FILE_FULLPATH]&id_plugin=' . $id_plugin,
|
||||
true,
|
||||
0775,
|
||||
$homedir_filemanager);
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -95,27 +95,27 @@ $table = new stdClass();
|
|||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
|
||||
$table->style[0] = 'font-weight: bolder;';
|
||||
$table->style[0] = 'font-weight: bolder;width:250px';
|
||||
|
||||
$table->data[0][0] = __('URL update manager:');
|
||||
$table->data[0][1] = html_print_input_text('url_update_manager',
|
||||
$url_update_manager, __('URL update manager'), 40, 60, true);
|
||||
$url_update_manager, __('URL update manager'), 80, 60, true);
|
||||
|
||||
$table->data[1][0] = __('Proxy server:');
|
||||
$table->data[1][1] = html_print_input_text('update_manager_proxy_server',
|
||||
$update_manager_proxy_server, __('Proxy server'), 40, 60, true);
|
||||
$update_manager_proxy_server, __('Proxy server'), 80, 60, true);
|
||||
|
||||
$table->data[2][0] = __('Proxy port:');
|
||||
$table->data[2][1] = html_print_input_text('update_manager_proxy_port',
|
||||
$update_manager_proxy_port, __('Proxy port'), 40, 60, true);
|
||||
$update_manager_proxy_port, __('Proxy port'), 80, 60, true);
|
||||
|
||||
$table->data[3][0] = __('Proxy user:');
|
||||
$table->data[3][1] = html_print_input_text('update_manager_proxy_user',
|
||||
$update_manager_proxy_user, __('Proxy user'), 40, 60, true);
|
||||
$update_manager_proxy_user, __('Proxy user'), 80, 60, true);
|
||||
|
||||
$table->data[4][0] = __('Proxy password:');
|
||||
$table->data[4][1] = html_print_input_password('update_manager_proxy_password',
|
||||
$update_manager_proxy_password, __('Proxy password'), 40, 60, true);
|
||||
$update_manager_proxy_password, __('Proxy password'), 80, 60, true);
|
||||
|
||||
if (license_free()) {
|
||||
$config["identification_reminder"] = isset($config["identification_reminder"]) ? $config["identification_reminder"] : 1;
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
|
@ -296,17 +296,17 @@ if ($get_extended_event) {
|
|||
|
||||
// Tabs
|
||||
$tabs = "<ul style='background:#ffffff !important; border-top: 0px; border-left: 0px; border-right: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; border-color: #D3D3D3;'>";
|
||||
$tabs .= "<li><a href='#extended_event_general_page' id='link_general'>".html_print_image('images/lightning_go.png',true).__('General')."</a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_details_page' id='link_details'>".html_print_image('images/zoom.png',true).__('Details')."</a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_custom_fields_page' id='link_custom_fields'>".html_print_image('images/custom_field_col.png',true).__('Agent fields')."</a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_comments_page' id='link_comments'>".html_print_image('images/pencil.png',true).__('Comments')."</a></li>";
|
||||
|
||||
if (!$readonly &&
|
||||
$tabs .= "<li><a href='#extended_event_general_page' id='link_general'>".html_print_image('images/lightning_go.png',true)."<span style='position:relative;top:-6px;left:5px;margin-right:10px;'>".__('General')."</span></a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_details_page' id='link_details'>".html_print_image('images/zoom.png',true)."<span style='position:relative;top:-6px;left:5px;margin-right:10px;'>".__('Details')."</span></a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_custom_fields_page' id='link_custom_fields'>".html_print_image('images/custom_field_col.png',true)."<span style='position:relative;top:-6px;left:5px;margin-right:10px;'>".__('Agent fields')."</span></a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_comments_page' id='link_comments'>".html_print_image('images/pencil.png',true)."<span style='position:relative;top:-6px;left:5px;margin-right:10px;'>".__('Comments')."</span></a></li>";
|
||||
|
||||
if (!$readonly &&
|
||||
(tags_checks_event_acl($config["id_user"], $event["id_grupo"], "EM", $event['clean_tags'], $childrens_ids)) || (tags_checks_event_acl($config["id_user"], $event["id_grupo"], "EW", $event['clean_tags'],$childrens_ids))) {
|
||||
$tabs .= "<li><a href='#extended_event_responses_page' id='link_responses'>".html_print_image('images/event_responses_col.png',true).__('Responses')."</a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_responses_page' id='link_responses'>".html_print_image('images/event_responses_col.png',true)."<span style='position:relative;top:-6px;left:3px;margin-right:10px;'>".__('Responses')."</span></a></li>";
|
||||
}
|
||||
if ($event['custom_data'] != '') {
|
||||
$tabs .= "<li><a href='#extended_event_custom_data_page' id='link_custom_data'>".html_print_image('images/custom_field_col.png',true).__('Custom data')."</a></li>";
|
||||
$tabs .= "<li><a href='#extended_event_custom_data_page' id='link_custom_data'>".html_print_image('images/custom_field_col.png',true)."<span style='position:relative;top:-6px;left:3px;margin-right:10px;'>".__('Custom data')."</span></a></li>";
|
||||
}
|
||||
$tabs .= "</ul>";
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC160913';
|
||||
$build_version = 'PC160921';
|
||||
$pandora_version = 'v6.1dev';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
|
|
@ -8974,8 +8974,12 @@ function api_get_module_graph($id_module, $thrash2, $other, $thrash4) {
|
|||
// returnError('error_module_graph', __(''));
|
||||
}
|
||||
else {
|
||||
header('Content-type: text/html');
|
||||
returnData('string', array('type' => 'string', 'data' => '<img src="data:image/jpeg;base64,' . $graph_image_file_encoded . '">'));
|
||||
if($other['data'] < 40000){
|
||||
header('Content-type: text/html');
|
||||
returnData('string', array('type' => 'string', 'data' => '<img src="data:image/jpeg;base64,' . $graph_image_file_encoded . '">'));
|
||||
} else {
|
||||
returnData('string', array('type' => 'string', 'data' => $graph_image_file_encoded));
|
||||
}
|
||||
// To show only the base64 code, call returnData as:
|
||||
// returnData('string', array('type' => 'string', 'data' => $graph_image_file_encoded));
|
||||
}
|
||||
|
|
|
@ -733,6 +733,7 @@ function filemanager_file_explorer($real_directory, $relative_directory,
|
|||
//Delete button
|
||||
$data[4] = '';
|
||||
$data[4] .= '<span style="">';
|
||||
$typefile = array_pop(explode(".",$fileinfo['name']));
|
||||
if (is_writable ($fileinfo['realpath']) &&
|
||||
(! is_dir ($fileinfo['realpath']) || count (scandir ($fileinfo['realpath'])) < 3)) {
|
||||
$data[4] .= '<form method="post" action="' . $url . '" style="display: inline;">';
|
||||
|
@ -752,14 +753,15 @@ function filemanager_file_explorer($real_directory, $relative_directory,
|
|||
$data[4] .= '</form>';
|
||||
|
||||
if (($editor) && (!$readOnly)) {
|
||||
if ($fileinfo['mime'] == MIME_TEXT) {
|
||||
$data[4] .= "<a style='vertical-align: top;' href='$url&edit_file=1&location_file=" . $fileinfo['realpath'] . "&hash=" . md5($fileinfo['realpath'] . $config['dbpass']) . "' style='float: left;'>" . html_print_image('images/edit.png', true, array("style" => 'margin-top: 2px;', 'title' => __('Edit file'))) . "</a>";
|
||||
if (($typefile != 'bin') && ($typefile != 'pdf') && ($typefile != 'png') && ($typefile != 'jpg') &&
|
||||
($typefile != 'iso') && ($typefile != 'docx') && ($typefile != 'doc')) {
|
||||
$data[4] .= "<a style='vertical-align: top;' href='$url&edit_file=1&location_file=" . $fileinfo['realpath'] . "' style='float: left;'>" . html_print_image('images/edit.png', true, array("style" => 'margin-top: 2px;', 'title' => __('Edit file'))) . "</a>";
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((!$fileinfo['is_dir']) && ($download_button)) {
|
||||
$hash = md5($fileinfo['url'] . $config['dbpass']);
|
||||
$data[4] .= '<a href="include/get_file.php?file='.urlencode(base64_encode($fileinfo['url'])).'&hash=' . $hash . '" style="vertical-align: 25%;">';
|
||||
$hash = md5($fileinfo['realpath'] . $config['dbpass']);
|
||||
$data[4] .= '<a href="include/get_file.php?file='.urlencode(base64_encode($fileinfo['realpath'])).'&hash=' . $hash . '" style="vertical-align: 25%;">';
|
||||
$data[4] .= html_print_image('images/file.png', true);
|
||||
$data[4] .= '</a>';
|
||||
}
|
||||
|
|
|
@ -429,8 +429,8 @@ function html_print_select_groups($id_user = false, $privilege = "AR",
|
|||
function html_print_select ($fields, $name, $selected = '', $script = '',
|
||||
$nothing = '', $nothing_value = 0, $return = false, $multiple = false,
|
||||
$sort = true, $class = '', $disabled = false, $style = false,
|
||||
$option_style = false, $size = false) {
|
||||
|
||||
$option_style = false, $size = false,$modal=false,$message=''){
|
||||
|
||||
$output = "\n";
|
||||
|
||||
static $idcounter = array ();
|
||||
|
@ -543,7 +543,11 @@ function html_print_select ($fields, $name, $selected = '', $script = '',
|
|||
}
|
||||
|
||||
$output .= "</select>";
|
||||
|
||||
if ($modal){
|
||||
$output .= "
|
||||
<div id='publienterprise' class='".$message."' title='Community version' style='display:inline;position:relative;top:10px;left:0px;margin-top: -2px !important; margin-left: 2px !important;'><img data-title='Enterprise version' class='img_help forced_title' data-use_title_for_force_title='1' src='images/alert_enterprise.png'></div>
|
||||
";
|
||||
}
|
||||
if ($return)
|
||||
return $output;
|
||||
|
||||
|
|
|
@ -4355,6 +4355,7 @@ function reporting_custom_graph($report, $content, $type = 'dinamic',
|
|||
if ($graphs === false)
|
||||
$graphs = array();
|
||||
|
||||
$labels = array();
|
||||
foreach ($graphs as $graph_item) {
|
||||
if ($type_report == 'automatic_graph') {
|
||||
array_push ($modules, array(
|
||||
|
@ -4366,12 +4367,13 @@ function reporting_custom_graph($report, $content, $type = 'dinamic',
|
|||
}
|
||||
|
||||
array_push ($weights, $graph_item["weight"]);
|
||||
}
|
||||
|
||||
$labels = array();
|
||||
if (in_array('label',$content['style'])) {
|
||||
$label = reporting_label_macro($content, $content['style']['label']);
|
||||
$labels = array_fill_keys($modules, $label);
|
||||
if (in_array('label',$content['style'])) {
|
||||
$item = array('type' => 'custom_graph',
|
||||
'id_agent' =>modules_get_agentmodule_agent($graph_item['id_agent_module']),
|
||||
'id_agent_module'=>$graph_item['id_agent_module']);
|
||||
$label = reporting_label_macro($item, $content['style']['label']);
|
||||
$labels[$graph_item['id_agent_module']] = $label;
|
||||
}
|
||||
}
|
||||
|
||||
$return['chart'] = '';
|
||||
|
|
|
@ -2383,7 +2383,7 @@ function ui_get_full_url ($url = '', $no_proxy = false, $add_name_php_file = fal
|
|||
* @return string Header HTML
|
||||
*/
|
||||
|
||||
function ui_print_page_header ($title, $icon = "", $return = false, $help = "", $godmode = false, $options = "") {
|
||||
function ui_print_page_header ($title, $icon = "", $return = false, $help = "", $godmode = false, $options = "",$modal = false, $message = "") {
|
||||
$title = io_safe_input_html($title);
|
||||
if (($icon == "") && ($godmode == true)) {
|
||||
$icon = "images/gm_setup.png";
|
||||
|
@ -2410,7 +2410,13 @@ function ui_print_page_header ($title, $icon = "", $return = false, $help = "",
|
|||
|
||||
$buffer .= '<ul class="mn"><li class="' . $type . '"> ' . ' ';
|
||||
$buffer .= '<span style="">' .
|
||||
ui_print_truncate_text($title, 38);
|
||||
ui_print_truncate_text($title, 46);
|
||||
if ($modal){
|
||||
$buffer .= "
|
||||
<div id='publienterprise' class='".$message."' title='Community version' style='float: right;margin-top: -2px !important; margin-left: 2px !important;'><img data-title='Enterprise version' class='img_help forced_title' data-use_title_for_force_title='1' src='images/alert_enterprise.png'></div>
|
||||
";
|
||||
}
|
||||
|
||||
if ($help != "")
|
||||
$buffer .= "<div class='head_help' style='float: right; margin-top: -2px !important; margin-left: 2px !important;'>" .
|
||||
ui_print_help_icon ($help, true, '', 'images/help_w.png') . "</div>";
|
||||
|
|
|
@ -819,7 +819,7 @@ function pandoraFlotSlicebar(graph_id, values, datacolor, labels, legend, acumul
|
|||
newdate = year + "/" + month + "/" + day;
|
||||
|
||||
if(!to){
|
||||
to= '12:00';
|
||||
to= '23:59';
|
||||
}
|
||||
window.location='index.php?sec=eventos&sec2=operation/events/events&id_agent='+id_agent+'&date_from='+newdate+'&time_from='+from+'&date_to='+newdate+'&time_to='+to+'&status=-1';
|
||||
}
|
||||
|
@ -980,9 +980,9 @@ function pandoraFlotArea(graph_id, values, labels, labels_long, legend,
|
|||
//threshold: [{ below: 80, color: "rgb(200, 20, 30)" } , { below: 65, color: "rgb(30, 200, 30)" }, { below: 50, color: "rgb(30, 200, 30)" }],
|
||||
lines: {
|
||||
show: line_show,
|
||||
fill: filled,
|
||||
fill: 0.2,
|
||||
fillColor: {
|
||||
colors: [ { opacity: 0.9 }, { opacity: 0.9 } ]
|
||||
colors: [ { opacity: 0.9 }, { opacity: 0.6 } ]
|
||||
},
|
||||
lineWidth: lineWidth,
|
||||
steps: steps_chart
|
||||
|
|
|
@ -1009,7 +1009,7 @@ function pch_vertical_graph ($graph_type, $index, $data, $width, $height,
|
|||
|
||||
/* Draw the chart */
|
||||
$settings = array(
|
||||
"ForceTransparency" => $ForceTransparency,
|
||||
"ForceTransparency" => 20,
|
||||
"Gradient" => TRUE,
|
||||
"GradientMode" => GRADIENT_EFFECT_CAN,
|
||||
"DisplayValues" => $show_values,
|
||||
|
|
|
@ -83,7 +83,40 @@ $(document).ready (function () {
|
|||
);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
|
||||
$("#publienterprise").click (function () {
|
||||
jQuery.get ("ajax.php",
|
||||
{
|
||||
"page": "general/alert_enterprise",
|
||||
"message":$(this).attr("class")},
|
||||
function (data, status) {
|
||||
$("#alert_messages").hide ()
|
||||
.empty ()
|
||||
.append (data)
|
||||
.dialog ({
|
||||
title: $("#publienterprise").attr ("title"),
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
open: function (event, ui) {
|
||||
$(this).css({'overflow': 'hidden','text-align': 'center','padding-right':'25px','padding-bottom':'25px'}); //this line does the actual hiding
|
||||
},
|
||||
overlay: {
|
||||
opacity: 0.5,
|
||||
background: "black"
|
||||
},
|
||||
width: 600
|
||||
})
|
||||
.show ();
|
||||
},
|
||||
"html"
|
||||
);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
|
||||
if ($('#license_error_msg_dialog').length) {
|
||||
if (typeof(process_login_ok) == "undefined")
|
||||
process_login_ok = 0;
|
||||
|
|
|
@ -1022,15 +1022,18 @@ function toggle_full_value(id) {
|
|||
}
|
||||
});
|
||||
}
|
||||
function autoclick_profile_users(firts_level, second_level) {
|
||||
if (typeof firts_level !== "undefined") {
|
||||
var is_checked_firts = $('#checkbox-' + firts_level).is(':checked');
|
||||
if (!is_checked_firts) {
|
||||
$('#checkbox-' + firts_level).prop('checked', true);
|
||||
}
|
||||
if (second_level !== false) {
|
||||
if (!$('#checkbox-' + second_level).is(":checked")) {
|
||||
$('#checkbox-' + second_level).prop('checked', true);
|
||||
|
||||
function autoclick_profile_users(actual_level, firts_level, second_level) {
|
||||
if ($('#checkbox-' + actual_level).is(":checked")) {
|
||||
if (typeof firts_level !== "undefined") {
|
||||
var is_checked_firts = $('#checkbox-' + firts_level).is(':checked');
|
||||
if (!is_checked_firts) {
|
||||
$('#checkbox-' + firts_level).prop('checked', true);
|
||||
}
|
||||
if (second_level !== false) {
|
||||
if (!$('#checkbox-' + second_level).is(":checked")) {
|
||||
$('#checkbox-' + second_level).prop('checked', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<div style='height: 10px'>
|
||||
<?php
|
||||
$version = '6.1dev';
|
||||
$build = '160913';
|
||||
$build = '160921';
|
||||
$banner = "v$version Build $build";
|
||||
|
||||
error_reporting(0);
|
||||
|
|
|
@ -906,7 +906,7 @@ foreach ($result as $row) {
|
|||
$data[1] .= '</a></strong>';
|
||||
}
|
||||
|
||||
$data[2] = html_print_image('mages/'. modules_show_icon_type ($row['module_type']), true);
|
||||
$data[2] = html_print_image('images/'. modules_show_icon_type ($row['module_type']), true);
|
||||
if (check_acl ($config['id_user'], $row['id_group'], 'AW')) {
|
||||
$show_edit_icon = true;
|
||||
if (defined('METACONSOLE')) {
|
||||
|
|
|
@ -400,7 +400,7 @@ if ($config["pure"] == 0 || $meta) {
|
|||
if (! defined ('METACONSOLE')) {
|
||||
unset($onheader['history']);
|
||||
ui_print_page_header (__("Events"), "images/op_events.png",
|
||||
false, "eventview", false, $onheader);
|
||||
false, "eventview", false, $onheader,true, "events");
|
||||
}
|
||||
else {
|
||||
unset($onheader['rss']);
|
||||
|
|
|
@ -201,13 +201,14 @@ if (defined('METACONSOLE')) {
|
|||
$table->head_colspan[0] = 5;
|
||||
$table->headstyle[0] = 'text-align: center';
|
||||
}
|
||||
$table->style[0] = 'width: 500px;';
|
||||
$table->style[2] = 'width: 200px;';
|
||||
|
||||
$data = array();
|
||||
$data[0] = '<b>' . __('User ID') . '</b>';
|
||||
$data[0] .= $jump . '<span style="font-weight: normal;">' . $id . '</span>';
|
||||
$data[0] .= '<div style="position:absolute;left:200px;display:inline;">'.$jump . '<span style="font-weight: normal;">' . $id . '</span></div>';
|
||||
$data[1] = '<b>' . __('Full (display) name') . '</b>';
|
||||
$data[1] .= $jump . html_print_input_text_extended ("fullname", $user_info["fullname"], '', '', 40, 100, $view_mode, '', 'class="input"', true);
|
||||
$data[1] .= '<div style="position:absolute;left:700px;display:inline;">'.$jump . html_print_input_text_extended ("fullname", $user_info["fullname"], '', '', 40, 100, $view_mode, '', 'class="input"', true).'</div>';
|
||||
// Show "Picture" (in future versions, why not, allow users to upload it's own avatar here.
|
||||
|
||||
if (is_user_admin ($id)) {
|
||||
|
@ -229,9 +230,9 @@ $table->data[] = $data;
|
|||
|
||||
$data = array();
|
||||
$data[0] = __('E-mail');
|
||||
$data[0] .= $jump . html_print_input_text_extended ("email", $user_info["email"], '', '', '40', '100', $view_mode, '', 'class="input"', true);
|
||||
$data[0] .= '<div style="position:absolute;left:200px;display:inline;">'.$jump . html_print_input_text_extended ("email", $user_info["email"], '', '', '40', '100', $view_mode, '', 'class="input"', true).'</div>';
|
||||
$data[1] = __('Phone number');
|
||||
$data[1] .= $jump . html_print_input_text_extended ("phone", $user_info["phone"], '', '', '40', '30', $view_mode, '', 'class="input"', true);
|
||||
$data[1] .= '<div style="position:absolute;left:700px;display:inline;">'.$jump . html_print_input_text_extended ("phone", $user_info["phone"], '', '', '40', '30', $view_mode, '', 'class="input"', true).'</div>';
|
||||
$table->rowclass[] = '';
|
||||
$table->rowstyle[] = 'font-weight: bold;';
|
||||
$table->data[] = $data;
|
||||
|
@ -240,9 +241,9 @@ if ($view_mode === false) {
|
|||
if ($config["user_can_update_password"]) {
|
||||
$data = array();
|
||||
$data[0] = __('New Password');
|
||||
$data[0] .= $jump . html_print_input_text_extended ("password_new", "", '', '', '40', '45', $view_mode, '', 'class="input"', true, true);
|
||||
$data[0] .= '<div style="position:absolute;left:200px;display:inline;">'.$jump . html_print_input_text_extended ("password_new", "", '', '', '40', '45', $view_mode, '', 'class="input"', true, true).'</div>';
|
||||
$data[1] = __('Password confirmation');
|
||||
$data[1] .= $jump . html_print_input_text_extended ("password_conf", "", '', '', '40', '45', $view_mode, '', 'class="input"', true, true);
|
||||
$data[1] .= '<div style="position:absolute;left:700px;display:inline;">'.$jump . html_print_input_text_extended ("password_conf", "", '', '', '40', '45', $view_mode, '', 'class="input"', true, true).'</div>';
|
||||
$table->rowclass[] = '';
|
||||
$table->rowstyle[] = 'font-weight: bold;';
|
||||
$table->data[] = $data;
|
||||
|
@ -272,7 +273,7 @@ $data[0] .= __('Default').' ('.$config["global_block_size"].')';
|
|||
$values = array(-1 => __('Default'),1 => __('Yes'),0 => __('No'));
|
||||
|
||||
$data[1] = __('Interactive charts') . ui_print_help_tip(__('Whether to use Javascript or static PNG graphs'), true);
|
||||
$data[1] .= $jump . html_print_select($values, 'flash_charts', $user_info["flash_chart"], '', '', -1, true, false, false);
|
||||
$data[1] .= '<div style="position:absolute;left:700px;display:inline;">'.$jump . html_print_select($values, 'flash_charts', $user_info["flash_chart"], '', '', -1, true, false, false).'</div>';
|
||||
|
||||
|
||||
$data[2] = __('Language');
|
||||
|
@ -295,8 +296,8 @@ $id_usr = $config['id_user'];
|
|||
if (!$meta) {
|
||||
$data = array();
|
||||
$data[0] = __('Shortcut bar') . ui_print_help_tip(__('This will activate a shortcut bar with alerts, events, messages... information'), true);
|
||||
$data[0] .= $jump . html_print_checkbox('shortcut_bar', 1, $user_info["shortcut"], true);
|
||||
|
||||
$data[0] .= '<div style="position:absolute;left:200px;display:inline;">'.$jump . html_print_checkbox('shortcut_bar', 1, $user_info["shortcut"], true).'</div>';
|
||||
|
||||
$data[1] = __('Home screen'). ui_print_help_tip(__('User can customize the home page. By default, will display \'Agent Detail\'. Example: Select \'Other\' and type sec=estado&sec2=operation/agentes/estado_agente to show agent detail view'), true);
|
||||
$values = array (
|
||||
'Default' =>__('Default'),
|
||||
|
@ -309,9 +310,9 @@ if (!$meta) {
|
|||
if (enterprise_installed()) {
|
||||
$values['Dashboard'] = __('Dashboard');
|
||||
}
|
||||
|
||||
$data[1] .= $jump . html_print_select($values, 'section', io_safe_output($user_info["section"]), 'show_data_section();', '', -1, true, false, false);
|
||||
|
||||
|
||||
$data[1] .= '<div style="position:absolute;left:700px;display:inline;">'.$jump . html_print_select($values, 'section', io_safe_output($user_info["section"]), 'show_data_section();', '', -1, true, false, false).'</div>';
|
||||
|
||||
if (enterprise_installed()) {
|
||||
$dashboards = get_user_dashboards ($config['id_user']);
|
||||
$dashboards_aux = array();
|
||||
|
@ -358,8 +359,8 @@ if (!$meta) {
|
|||
$double_auth_enabled = (bool) db_get_value('id', 'tuser_double_auth', 'id_user', $config['id_user']);
|
||||
$data = array();
|
||||
$data[0] = __('Double authentication');
|
||||
$data[0] .= $jump;
|
||||
$data[0] .= html_print_checkbox('double_auth', 1, $double_auth_enabled, true);
|
||||
$data[0] .= '<div style="position:absolute;left:200px;display:inline;">'.$jump;
|
||||
$data[0] .= html_print_checkbox('double_auth', 1, $double_auth_enabled, true).'</span>';
|
||||
if ($double_auth_enabled) {
|
||||
$data[0] .= $jump;
|
||||
$data[0] .= html_print_button(__('Show information'), 'show_info', false, 'javascript:show_double_auth_info();', '', true);
|
||||
|
@ -369,8 +370,8 @@ $data[0] .= "<div id=\"dialog-double_auth\"><div id=\"dialog-double_auth-contain
|
|||
|
||||
if (check_acl ($config['id_user'], 0, "ER")){
|
||||
$data[1] = __('Event filter');
|
||||
$data[1] .= $jump . html_print_select_from_sql ('SELECT id_filter, id_name FROM tevent_filter',
|
||||
'event_filter', $user_info["id_filter"], '', __('None'), NULL, true);
|
||||
$data[1] .= '<div style="position:absolute;left:700px;display:inline;">'.$jump . html_print_select_from_sql ('SELECT id_filter, id_name FROM tevent_filter',
|
||||
'event_filter', $user_info["id_filter"], '', __('None'), NULL, true).'</div>';
|
||||
}// Newsletter
|
||||
else if (license_free()) {
|
||||
$data[1] = __('Newsletter Subscribed') . ':';
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 6.1dev
|
||||
%define release 160913
|
||||
%define release 160921
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 6.1dev
|
||||
%define release 160913
|
||||
%define release 160921
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -66,7 +66,7 @@ INSERT INTO tconfig (token, value) VALUES ('graph_res','5');
|
|||
INSERT INTO tconfig (token, value) VALUES ('step_compact','1');
|
||||
INSERT INTO tconfig (token, value) VALUES ('db_scheme_first_version','6.0orc');
|
||||
INSERT INTO tconfig (token, value) VALUES('db_scheme_version','6.1dev');
|
||||
INSERT INTO tconfig (token, value) VALUES('db_scheme_build','PD160913');
|
||||
INSERT INTO tconfig (token, value) VALUES('db_scheme_build','PD160921');
|
||||
INSERT INTO tconfig (token, value) VALUES ('show_unknown','0');
|
||||
INSERT INTO tconfig (token, value) VALUES ('show_lastalerts','1');
|
||||
INSERT INTO tconfig (token, value) VALUES ('style','pandora');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-server
|
||||
Version: 6.1dev-160913
|
||||
Version: 6.1dev-160921
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="6.1dev-160913"
|
||||
pandora_version="6.1dev-160921"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -43,7 +43,7 @@ our @EXPORT = qw(
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "6.1dev";
|
||||
my $pandora_build = "160913";
|
||||
my $pandora_build = "160921";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_server
|
||||
%define version 6.1dev
|
||||
%define release 160913
|
||||
%define release 160921
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_server
|
||||
%define version 6.1dev
|
||||
%define release 160913
|
||||
%define release 160921
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="6.1dev"
|
||||
PI_BUILD="160913"
|
||||
PI_BUILD="160921"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
|
|
@ -33,7 +33,7 @@ use PandoraFMS::Tools;
|
|||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "6.1dev PS160913";
|
||||
my $version = "6.1dev PS160921";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
|
|
@ -35,7 +35,7 @@ use Encode::Locale;
|
|||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "6.1dev PS160913";
|
||||
my $version = "6.1dev PS160921";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
|
|
@ -26,6 +26,7 @@ RUN yum install -y \
|
|||
xorg-x11-server-Xvfb; yum clean all;
|
||||
RUN pip install pyvirtualdisplay
|
||||
RUN pip install selenium
|
||||
RUN pip install unittest2
|
||||
RUN pip install testtools
|
||||
|
||||
# Pandora FMS Console dependencies
|
||||
|
|
|
@ -12,7 +12,7 @@ from selenium.webdriver.support.ui import Select
|
|||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
class ACLPropagation(PandoraWebDriverTestCase):
|
||||
|
||||
|
@ -177,4 +177,4 @@ class ACLTags(PandoraWebDriverTestCase):
|
|||
self.assertEqual(modules,[])
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from include.common_classes_60 import PandoraWebDriverTestCase
|
||||
from include.common_functions_60 import login, click_menu_element, detect_and_pass_all_wizards, gen_random_string
|
||||
from include.agent_functions import create_agent, delete_agent
|
||||
from include.agent_functions import search_agent,create_agent, delete_agent
|
||||
from include.api_functions import *
|
||||
from include.module_functions import search_module
|
||||
from include.bulk_operations import *
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.by import By
|
||||
|
@ -10,8 +11,9 @@ from selenium.webdriver.common.keys import Keys
|
|||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
class Bulk_operations(PandoraWebDriverTestCase):
|
||||
|
||||
|
@ -94,7 +96,7 @@ class Bulk_operations(PandoraWebDriverTestCase):
|
|||
agent_name_2 = gen_random_string(6)
|
||||
|
||||
driver = self.driver
|
||||
|
||||
|
||||
activate_api(driver,"1234")
|
||||
|
||||
params = [agent_name_1,"127.0.0.1","0","4","0","300","2","pandorafms","2","0","0","pruebas"]
|
||||
|
@ -114,7 +116,12 @@ class Bulk_operations(PandoraWebDriverTestCase):
|
|||
edit_agents_in_bulk(driver,agent_names_list,new_description="test C edit description bulk operation")
|
||||
self.assertRegexpMatches(self.close_alert_and_get_its_text(), r"^Are you sure[\s\S]$")
|
||||
self.assertEqual(self.driver.find_element_by_xpath('//div[@id="main"]//td[contains(.,"Agents updated successfully(2)")]').text,"Agents updated successfully(2)")
|
||||
|
||||
|
||||
|
||||
search_agent(driver,agent_name_1,go_to_agent=True)
|
||||
|
||||
self.assertEqual("test C edit description bulk operation" in driver.page_source,True)
|
||||
|
||||
def test_D_delete_modules_in_bulk(self):
|
||||
|
||||
u"""
|
||||
|
@ -156,5 +163,168 @@ class Bulk_operations(PandoraWebDriverTestCase):
|
|||
|
||||
self.assertRegexpMatches(self.close_alert_and_get_its_text(), r"^Are you sure[\s\S]$")
|
||||
|
||||
search_module(driver,agent_name_1,module_name_1)
|
||||
|
||||
element = driver.find_elements_by_xpath('//a[contains(.,"No available data to show")]')
|
||||
|
||||
self.assertEqual(element,[])
|
||||
|
||||
|
||||
def test_E_edit_module_group_in_bulk(self):
|
||||
|
||||
u"""
|
||||
Create two agents and one module in this agents. With bulk operation, change module group that this module
|
||||
"""
|
||||
|
||||
agent_name_1 = gen_random_string(6)
|
||||
agent_name_2 = gen_random_string(6)
|
||||
|
||||
module_name_1 = gen_random_string(6)
|
||||
|
||||
driver = self.driver
|
||||
|
||||
activate_api(driver,"1234")
|
||||
|
||||
params = [agent_name_1,"127.0.0.1","0","4","0","300","2","pandorafms","2","0","0","pruebas"]
|
||||
create_agent_api(driver,params,user="admin",pwd="pandora")
|
||||
|
||||
params = [agent_name_2,"127.0.0.1","0","4","0","300","2","pandorafms","2","0","0","pruebas"]
|
||||
create_agent_api(driver,params,user="admin",pwd="pandora")
|
||||
|
||||
params = [agent_name_1,module_name_1,"0","6","1","0","0","0","0","0","0","0","0","129.99.40.1","0","0","180","0","0","0","0","Host_Alive"]
|
||||
add_network_module_to_agent_api(driver,params,user="admin",pwd="pandora",apipwd="1234")
|
||||
|
||||
params = [agent_name_2,module_name_1,"0","6","1","0","0","0","0","0","0","0","0","129.99.40.1","0","0","180","0","0","0","0","Host_Alive"]
|
||||
add_network_module_to_agent_api(driver,params,user="admin",pwd="pandora",apipwd="1234")
|
||||
|
||||
lista = driver.current_url.split('/')
|
||||
|
||||
url = lista[0]+'//'+lista[2]+'/pandora_console'
|
||||
|
||||
driver.get(url)
|
||||
|
||||
agent_name_list = [agent_name_1,agent_name_2]
|
||||
|
||||
module_name_list = [module_name_1]
|
||||
|
||||
edit_modules_in_bulk(driver,module_name_list,agent_name_list,new_module_group="Users")
|
||||
|
||||
self.assertRegexpMatches(self.close_alert_and_get_its_text(), r"^Are you sure[\s\S]$")
|
||||
|
||||
search_module(driver,agent_name_1,module_name_1,go_to_module=True)
|
||||
|
||||
self.assertEqual("Users" in driver.page_source,True)
|
||||
|
||||
|
||||
def test_F_edit_module_umbral_in_bulk(self):
|
||||
|
||||
u"""
|
||||
Create two agents and one module in this agents. With bulk operation, change module umbral with bulk operation
|
||||
"""
|
||||
|
||||
agent_name_1 = gen_random_string(6)
|
||||
agent_name_2 = gen_random_string(6)
|
||||
|
||||
module_name_1 = gen_random_string(6)
|
||||
|
||||
driver = self.driver
|
||||
|
||||
activate_api(driver,"1234")
|
||||
|
||||
params = [agent_name_1,"127.0.0.1","0","4","0","300","2","pandorafms","2","0","0","pruebas"]
|
||||
create_agent_api(driver,params,user="admin",pwd="pandora")
|
||||
|
||||
params = [agent_name_2,"127.0.0.1","0","4","0","300","2","pandorafms","2","0","0","pruebas"]
|
||||
create_agent_api(driver,params,user="admin",pwd="pandora")
|
||||
|
||||
params = [agent_name_1,module_name_1,"0","6","1","0","0","0","0","0","0","0","0","129.99.40.1","0","0","180","0","0","0","0","Host_Alive"]
|
||||
add_network_module_to_agent_api(driver,params,user="admin",pwd="pandora",apipwd="1234")
|
||||
|
||||
params = [agent_name_2,module_name_1,"0","6","1","0","0","0","0","0","0","0","0","129.99.40.1","0","0","180","0","0","0","0","Host_Alive"]
|
||||
add_network_module_to_agent_api(driver,params,user="admin",pwd="pandora",apipwd="1234")
|
||||
|
||||
lista = driver.current_url.split('/')
|
||||
|
||||
url = lista[0]+'//'+lista[2]+'/pandora_console'
|
||||
|
||||
driver.get(url)
|
||||
|
||||
agent_name_list = [agent_name_1,agent_name_2]
|
||||
|
||||
module_name_list = [module_name_1]
|
||||
|
||||
edit_modules_in_bulk(driver,module_name_list,agent_name_list,new_min="1",new_max="2")
|
||||
|
||||
self.assertRegexpMatches(self.close_alert_and_get_its_text(), r"^Are you sure[\s\S]$")
|
||||
|
||||
search_module(driver,agent_name_1,module_name_1,go_to_module=True)
|
||||
|
||||
driver.find_element_by_xpath('//a[contains(.,"Advanced options")]').click()
|
||||
|
||||
element = driver.find_element_by_xpath('//tr//td[contains(.,"1")]')
|
||||
self.assertIsInstance(element,WebElement)
|
||||
|
||||
element = driver.find_element_by_xpath('//tr//td[contains(.,"2")]')
|
||||
self.assertIsInstance(element,WebElement)
|
||||
|
||||
|
||||
|
||||
def test_G_edit_module_threshold_in_bulk(self):
|
||||
|
||||
u"""
|
||||
Create two agents and one module in this agents. With bulk operation, change FF Threshold with bulk operation
|
||||
Ticket Associated = 4059
|
||||
"""
|
||||
|
||||
agent_name_1 = gen_random_string(6)
|
||||
agent_name_2 = gen_random_string(6)
|
||||
|
||||
module_name_1 = gen_random_string(6)
|
||||
|
||||
driver = self.driver
|
||||
|
||||
activate_api(driver,"1234")
|
||||
|
||||
params = [agent_name_1,"127.0.0.1","0","4","0","300","2","pandorafms","2","0","0","pruebas"]
|
||||
create_agent_api(driver,params,user="admin",pwd="pandora")
|
||||
|
||||
params = [agent_name_2,"127.0.0.1","0","4","0","300","2","pandorafms","2","0","0","pruebas"]
|
||||
create_agent_api(driver,params,user="admin",pwd="pandora")
|
||||
|
||||
params = [agent_name_1,module_name_1,"0","6","1","0","0","0","0","0","0","0","0","129.99.40.1","0","0","180","0","0","0","0","Host_Alive"]
|
||||
add_network_module_to_agent_api(driver,params,user="admin",pwd="pandora",apipwd="1234")
|
||||
|
||||
params = [agent_name_2,module_name_1,"0","6","1","0","0","0","0","0","0","0","0","129.99.40.1","0","0","180","0","0","0","0","Host_Alive"]
|
||||
add_network_module_to_agent_api(driver,params,user="admin",pwd="pandora",apipwd="1234")
|
||||
lista = driver.current_url.split('/')
|
||||
|
||||
url = lista[0]+'//'+lista[2]+'/pandora_console'
|
||||
|
||||
driver.get(url)
|
||||
|
||||
agent_name_list = [agent_name_1,agent_name_2]
|
||||
|
||||
module_name_list = [module_name_1]
|
||||
|
||||
ff_threshold_list = [0,1,2]
|
||||
|
||||
edit_modules_in_bulk(driver,module_name_list,agent_name_list,ff_threshold_list=ff_threshold_list)
|
||||
|
||||
self.assertRegexpMatches(self.close_alert_and_get_its_text(), r"^Are you sure[\s\S]$")
|
||||
search_module(driver,agent_name_1,module_name_1,go_to_module=True)
|
||||
|
||||
driver.find_element_by_xpath('//a[contains(.,"Advanced options")]').click()
|
||||
|
||||
element = driver.find_element_by_xpath('//tr//td[contains(.,"0")]')
|
||||
self.assertIsInstance(element,WebElement)
|
||||
|
||||
element = driver.find_element_by_xpath('//tr//td[contains(.,"1")]')
|
||||
self.assertIsInstance(element,WebElement)
|
||||
|
||||
element = driver.find_element_by_xpath('//tr//td[contains(.,"2")]')
|
||||
self.assertIsInstance(element,WebElement)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
|
|
@ -12,7 +12,7 @@ from selenium.webdriver.support.ui import Select
|
|||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
|
||||
class Collections(PandoraWebDriverTestCase):
|
||||
|
@ -82,4 +82,4 @@ class Collections(PandoraWebDriverTestCase):
|
|||
self.assertEqual(element,[])
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
|
|
@ -14,7 +14,7 @@ from selenium.webdriver.support.ui import Select
|
|||
from selenium.common.exceptions import StaleElementReferenceException, NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
class Miscellaneous (PandoraWebDriverTestCase):
|
||||
|
||||
|
@ -62,5 +62,5 @@ class Miscellaneous (PandoraWebDriverTestCase):
|
|||
self.assertIsInstance(element,WebElement)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ from selenium.webdriver.support.ui import Select
|
|||
from selenium.common.exceptions import StaleElementReferenceException
|
||||
from include.module_functions import *
|
||||
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
class Network_server_module(PandoraWebDriverTestCase):
|
||||
|
||||
|
@ -54,5 +54,5 @@ class Network_server_module(PandoraWebDriverTestCase):
|
|||
break
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ from selenium.webdriver.support.ui import Select
|
|||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
import unittest, time, re, datetime
|
||||
import unittest2, time, re, datetime
|
||||
|
||||
|
||||
class PAN13(PandoraWebDriverTestCase):
|
||||
|
@ -162,4 +162,4 @@ class PAN13(PandoraWebDriverTestCase):
|
|||
self.assertNotEqual(event_who_should_be_present_b,[])
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
|
|
@ -11,7 +11,7 @@ from selenium.webdriver.support.ui import Select
|
|||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
class Policies(PandoraWebDriverTestCase):
|
||||
|
||||
|
@ -130,4 +130,4 @@ class Policies(PandoraWebDriverTestCase):
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
|
|
@ -14,7 +14,7 @@ from selenium.common.exceptions import NoSuchElementException
|
|||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
class SimpleService(PandoraWebDriverTestCase):
|
||||
|
||||
|
@ -275,4 +275,4 @@ class ManualService(PandoraWebDriverTestCase):
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
|
|
@ -9,7 +9,7 @@ from selenium.common.exceptions import NoSuchElementException
|
|||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from selenium.webdriver.remote.webelement import WebElement
|
||||
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
class Users(PandoraWebDriverTestCase):
|
||||
|
||||
|
@ -41,5 +41,5 @@ class Users(PandoraWebDriverTestCase):
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ from selenium.webdriver.common.keys import Keys
|
|||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
|
||||
def activate_api(driver,api_pwd):
|
||||
|
|
|
@ -88,3 +88,78 @@ def delete_modules_in_bulk(driver,agent_name_list,module_name_list,select_agent_
|
|||
driver.find_element_by_id("submit-go").click()
|
||||
|
||||
|
||||
def copy_modules_in_bulk(driver,owner_agent_name,module_name_list,destiny_agents_list):
|
||||
|
||||
# module_name_list is a list of modules to copy
|
||||
|
||||
click_menu_element(driver,"Module operations")
|
||||
|
||||
driver.find_element_by_id("option").click()
|
||||
Select(driver.find_element_by_id("option")).select_by_visible_text("Copy modules in bulk")
|
||||
time.sleep(2)
|
||||
|
||||
driver.find_element_by_id("source_id_agent").click()
|
||||
|
||||
Select(driver.find_element_by_id("source_id_agent")).select_by_visible_text(owner_agent_name)
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
for module_name in module_name_list:
|
||||
Select(driver.find_element_by_id("target_modules")).select_by_visible_text(module_name)
|
||||
|
||||
for agent_name in destiny_agents_list:
|
||||
Select(driver.find_element_by_id("destiny_id_agent")).select_by_visible_text(agent_name)
|
||||
|
||||
|
||||
driver.find_element_by_id("submit-go").click()
|
||||
|
||||
|
||||
|
||||
def edit_modules_in_bulk(driver,module_name_list,agent_name_list,new_module_group=None,new_min=None,new_max=None,ff_threshold_list=None):
|
||||
|
||||
#ff_threshold_list example: ff_threshold_list = [normal value,warning value,critical value] -> Mode Change each status
|
||||
|
||||
click_menu_element(driver,"Module operations")
|
||||
|
||||
driver.find_element_by_id("option").click()
|
||||
Select(driver.find_element_by_id("option")).select_by_visible_text("Edit modules in bulk")
|
||||
|
||||
Select(driver.find_element_by_id("module_type")).select_by_visible_text("All")
|
||||
|
||||
for module_name in module_name_list:
|
||||
Select(driver.find_element_by_id("module_name")).select_by_visible_text(module_name)
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
for agent_name in agent_name_list:
|
||||
Select(driver.find_element_by_id("agents")).select_by_visible_text(agent_name)
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
if new_module_group != None:
|
||||
Select(driver.find_element_by_id("id_module_group")).select_by_visible_text(new_module_group)
|
||||
|
||||
if new_min != None:
|
||||
driver.find_element_by_id("text-min").clear()
|
||||
driver.find_element_by_id("text-min").send_keys(new_min)
|
||||
|
||||
if new_max != None:
|
||||
driver.find_element_by_id("text-max").clear()
|
||||
driver.find_element_by_id("text-max").send_keys(new_max)
|
||||
|
||||
if ff_threshold_list != None:
|
||||
|
||||
Select(driver.find_element_by_id("each_ff")).select_by_visible_text("Change each status")
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
driver.find_element_by_id("text-min_ff_event_normal").clear()
|
||||
driver.find_element_by_id("text-min_ff_event_normal").send_keys(ff_threshold_list[0])
|
||||
|
||||
driver.find_element_by_id("text-min_ff_event_warning").clear()
|
||||
driver.find_element_by_id("text-min_ff_event_warning").send_keys(ff_threshold_list[1])
|
||||
|
||||
driver.find_element_by_id("text-min_ff_event_critical").clear()
|
||||
driver.find_element_by_id("text-min_ff_event_critical").send_keys(ff_threshold_list[2])
|
||||
|
||||
driver.find_element_by_id("submit-go").click()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from unittest import TestResult, TestCase
|
||||
from unittest2 import TestResult, TestCase
|
||||
from common_functions_60 import *
|
||||
from datetime import datetime
|
||||
from selenium import webdriver
|
||||
|
@ -8,7 +8,7 @@ from selenium.webdriver.common.keys import Keys
|
|||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
from sauceclient import SauceClient
|
||||
#from sauceclient import SauceClient
|
||||
from os import environ
|
||||
import os
|
||||
|
||||
|
@ -25,17 +25,17 @@ class PandoraWebDriverTestCase(TestCase):
|
|||
time_started = None
|
||||
time_elapsed = None #Total time of the test
|
||||
tickets_associated = []
|
||||
sauce_username = environ["SAUCE_USERNAME"]
|
||||
sauce_access_key = environ["SAUCE_ACCESS_KEY"]
|
||||
sauce_client = None
|
||||
sauce_labs_job_id = None
|
||||
#sauce_username = environ["SAUCE_USERNAME"]
|
||||
#sauce_access_key = environ["SAUCE_ACCESS_KEY"]
|
||||
#sauce_client = None
|
||||
#sauce_labs_job_id = None
|
||||
|
||||
desired_cap = {
|
||||
'tunnel-identifier': environ["TRAVIS_JOB_NUMBER"],
|
||||
'platform': "Windows 10",
|
||||
'browserName': "firefox",
|
||||
'version': "46",
|
||||
}
|
||||
#desired_cap = {
|
||||
# 'tunnel-identifier': environ["TRAVIS_JOB_NUMBER"],
|
||||
# 'platform': "Windows 10",
|
||||
# 'browserName': "firefox",
|
||||
# 'version': "46",
|
||||
#}
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
@ -46,11 +46,10 @@ class PandoraWebDriverTestCase(TestCase):
|
|||
cls.base_url = os.getenv('DEVELOPMENT_URL')
|
||||
else:
|
||||
#Start VM in Sauce Labs
|
||||
cls.driver = webdriver.Remote(command_executor='http://'+cls.sauce_username+':'+cls.sauce_access_key+'@ondemand.saucelabs.com:80/wd/hub',desired_capabilities=cls.desired_cap)
|
||||
cls.sauce_labs_job_id = cls.driver.session_id
|
||||
#cls.driver = webdriver.Remote(command_executor='http://'+cls.sauce_username+':'+cls.sauce_access_key+'@ondemand.saucelabs.com:80/wd/hub',desired_capabilities=cls.desired_cap)
|
||||
#cls.sauce_labs_job_id = cls.driver.session_id
|
||||
cls.driver = webdriver.Firefox()
|
||||
cls.base_url = "http://127.0.0.1/"
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
|
|
|
@ -6,7 +6,7 @@ from selenium.webdriver.support import expected_conditions as EC
|
|||
|
||||
import random, time
|
||||
import string
|
||||
import unittest
|
||||
import unittest2
|
||||
|
||||
def is_enterprise(func):
|
||||
u"""
|
||||
|
@ -22,7 +22,7 @@ def is_enterprise(func):
|
|||
if is_enterprise:
|
||||
return func(*args,**kwargs)
|
||||
else:
|
||||
raise unittest.SkipTest("Skipping test")
|
||||
raise unittest2.SkipTest("Skipping test")
|
||||
return inner
|
||||
|
||||
|
||||
|
@ -48,6 +48,7 @@ def login(driver,user="admin",passwd="pandora",pandora_url=None):
|
|||
print "Pandora url is "+pandora_url
|
||||
|
||||
driver.get(pandora_url+"/pandora_console/index.php")
|
||||
driver.add_cookie({'name': 'clippy_is_annoying', 'value': 1})
|
||||
driver.find_element_by_id("nick").clear()
|
||||
driver.find_element_by_id("nick").send_keys(user)
|
||||
driver.find_element_by_id("pass").clear()
|
||||
|
@ -109,11 +110,12 @@ def detect_and_pass_newsletter_wizard(driver):
|
|||
|
||||
|
||||
def detect_and_pass_all_wizards(driver):
|
||||
driver.implicitly_wait(2) #Optimisation workaround for skipping wizards quickly
|
||||
detect_and_pass_pandorin(driver)
|
||||
detect_and_pass_initial_wizard(driver)
|
||||
detect_and_pass_newsletter_wizard(driver)
|
||||
driver.implicitly_wait(30)
|
||||
#driver.implicitly_wait(2) #Optimisation workaround for skipping wizards quickly
|
||||
#detect_and_pass_pandorin(driver)
|
||||
#detect_and_pass_initial_wizard(driver)
|
||||
#detect_and_pass_newsletter_wizard(driver)
|
||||
#driver.implicitly_wait(30)
|
||||
return
|
||||
|
||||
def activate_home_screen(driver,mode):
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ def delete_module (driver,agent_name,module_name):
|
|||
alert = driver.switch_to_alert()
|
||||
alert.accept()
|
||||
|
||||
def search_module (driver,agent_name,module_name):
|
||||
def search_module (driver,agent_name,module_name,go_to_module=False):
|
||||
|
||||
search_agent(driver,agent_name)
|
||||
driver.find_element_by_xpath('//ul[@class="mn"]/li/a/img[@data-title="Manage"]').click()
|
||||
|
@ -167,5 +167,8 @@ def search_module (driver,agent_name,module_name):
|
|||
|
||||
driver.find_element_by_id("submit-filter").click()
|
||||
|
||||
if go_to_module == True:
|
||||
driver.find_element_by_xpath('//a[contains(.,"'+module_name+'")]').click()
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ from module_functions import create_module
|
|||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium.common.exceptions import NoAlertPresentException
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
|
||||
def create_policy(driver,policy_name,group,description=None):
|
||||
|
|
|
@ -6,7 +6,7 @@ from selenium import webdriver
|
|||
|
||||
# Are we running headless?
|
||||
if ('DISPLAY' not in os.environ):
|
||||
display = Display(visible=0, size=(800, 600))
|
||||
display = Display(visible=0, size=(1920, 1080))
|
||||
display.start()
|
||||
|
||||
# Go to the installation page.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
from unittest import *
|
||||
from unittest2 import *
|
||||
from console.include.common_functions_60 import *
|
||||
from console.include.common_classes_60 import *
|
||||
from sauceclient import SauceClient
|
||||
from pyvirtualdisplay import Display
|
||||
from os import environ, getenv
|
||||
import subprocess, time, sys
|
||||
|
||||
|
@ -10,6 +10,11 @@ def get_test_file(test_list):
|
|||
#return [test[0].split(' ')[0].split('.')[0].split('<')[1] for test in test_list]
|
||||
return [test[0].test_name for test in test_list]
|
||||
|
||||
# Are we running headless?
|
||||
if ('DISPLAY' not in os.environ):
|
||||
display = Display(visible=0, size=(800, 600))
|
||||
display.start()
|
||||
|
||||
#Run Enterprise tests
|
||||
is_enterprise = '1' == getenv('ENTERPRISE', False)
|
||||
|
||||
|
@ -20,24 +25,25 @@ tests = a.discover(start_dir='console',pattern='*.py')
|
|||
c = ArticaTestResult()
|
||||
tests.run(c)
|
||||
|
||||
#sauce_client = SauceClient(environ["SAUCE_USERNAME"], environ["SAUCE_ACCESS_KEY"])
|
||||
#for test,error_msg in c.failures+c.errors:
|
||||
# try:
|
||||
# sauce_client.jobs.update_job(test.sauce_labs_job_id, passed=False,tags=[environ["TRAVIS_BRANCH"],test.id()],build_num=environ["TRAVIS_JOB_NUMBER"],name=str(test.id().split('.')[1]+': '+test.id().split('.')[2]))
|
||||
# except:
|
||||
# print "Could not annotate Sauce Labs job #%s" % str(test)
|
||||
# next
|
||||
#
|
||||
#for test,error_msg in c.success+c.skipped:
|
||||
# try:
|
||||
# sauce_client.jobs.update_job(test.sauce_labs_job_id, passed=True,tags=[environ["TRAVIS_BRANCH"],test.id()],build_num=environ["TRAVIS_JOB_NUMBER"],name=str(test.id().split('.')[1]+': '+test.id().split('.')[2]))
|
||||
#
|
||||
# except:
|
||||
# print "Could not annotate Sauce Labs job #%s" % str(test)
|
||||
# next
|
||||
#Update Saouce Labs jobs
|
||||
sauce_client = SauceClient(environ["SAUCE_USERNAME"], environ["SAUCE_ACCESS_KEY"])
|
||||
for test,error_msg in c.failures+c.errors:
|
||||
try:
|
||||
sauce_client.jobs.update_job(test.sauce_labs_job_id, passed=False,tags=[environ["TRAVIS_BRANCH"],test.id()],build_num=environ["TRAVIS_JOB_NUMBER"],name=str(test.id().split('.')[1]+': '+test.id().split('.')[2]))
|
||||
except:
|
||||
print "Could not annotate Sauce Labs job #%s" % str(test)
|
||||
next
|
||||
|
||||
for test,error_msg in c.success+c.skipped:
|
||||
try:
|
||||
sauce_client.jobs.update_job(test.sauce_labs_job_id, passed=True,tags=[environ["TRAVIS_BRANCH"],test.id()],build_num=environ["TRAVIS_JOB_NUMBER"],name=str(test.id().split('.')[1]+': '+test.id().split('.')[2]))
|
||||
|
||||
except:
|
||||
print "Could not annotate Sauce Labs job #%s" % str(test)
|
||||
next
|
||||
|
||||
|
||||
if ('DISPLAY' not in os.environ):
|
||||
display.stop()
|
||||
|
||||
print "Tests failed: %s" % c.failures
|
||||
print "Tests succeeded: %s" % c.success
|
||||
|
|
|
@ -51,4 +51,14 @@ check "Starting the Pandora FMS Server" $?
|
|||
service pandora_agent_daemon start
|
||||
check "Starting the Pandora FMS Agent" $?
|
||||
|
||||
# Disable the initial wizards.
|
||||
echo "UPDATE tconfig SET value='1' WHERE token='initial_wizard'" | mysql -u root -ppandora -Dpandora
|
||||
echo "UPDATE tconfig SET value='1' WHERE token='instance_registered'" | mysql -u root -ppandora -Dpandora
|
||||
echo "INSERT INTO tconfig (token, value) VALUES ('skip_login_help_dialog', '1')" | mysql -u root -ppandora -Dpandora
|
||||
echo "UPDATE tusuario SET middlename='1'" | mysql -u root -ppandora -Dpandora
|
||||
|
||||
# Run console tests.
|
||||
cd /tmp/pandorafms/tests && chmod +x run_console_tests.py && ./run_console_tests.py
|
||||
check "Running tests for the Pandora FMS Console" $?
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -6,7 +6,7 @@ from selenium.webdriver.common.by import By
|
|||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.common.exceptions import StaleElementReferenceException
|
||||
import unittest, time, re
|
||||
import unittest2, time, re
|
||||
|
||||
|
||||
class PAN3(PandoraWebDriverTestCase):
|
||||
|
@ -67,5 +67,5 @@ class PAN3(PandoraWebDriverTestCase):
|
|||
break
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
unittest2.main()
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python
|
||||
from unittest import *
|
||||
from unittest2 import *
|
||||
from console import *
|
||||
from console.include.common_functions_60 import *
|
||||
from console.include.common_classes_60 import *
|
||||
|
|
Loading…
Reference in New Issue