summaryrefslogtreecommitdiffstats
path: root/frontends/php/include
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-14 12:26:49 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-14 12:26:49 +0000
commitd144df19e9190a100f3d12a2e70c0637f0bda38d (patch)
treef7b9e5d1aeba8ee1a89a84c78e681ab24d526692 /frontends/php/include
parent1562339df0317816bbbee60d1478234e58d4f6f8 (diff)
updated frontend for new discovefy
git-svn-id: svn://svn.zabbix.com/trunk@4011 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include')
-rw-r--r--frontends/php/include/actions.inc.php2
-rw-r--r--frontends/php/include/defines.inc.php1
-rw-r--r--frontends/php/include/discovery.inc.php48
-rw-r--r--frontends/php/include/forms.inc.php21
-rw-r--r--frontends/php/include/locales/en_gb.inc.php8
-rw-r--r--frontends/php/include/validate.inc.php41
6 files changed, 55 insertions, 66 deletions
diff --git a/frontends/php/include/actions.inc.php b/frontends/php/include/actions.inc.php
index 68f9d337..cc2757a1 100644
--- a/frontends/php/include/actions.inc.php
+++ b/frontends/php/include/actions.inc.php
@@ -617,7 +617,7 @@ include_once 'include/discovery.inc.php';
}
break;
case CONDITION_TYPE_DHOST_IP:
- if( !validate_ip_list($value) )
+ if( !validate_ip_range($value) )
{
error(S_INCORRECT_IP.' ['.$value.']');
return false;
diff --git a/frontends/php/include/defines.inc.php b/frontends/php/include/defines.inc.php
index 332e5d14..ebe75931 100644
--- a/frontends/php/include/defines.inc.php
+++ b/frontends/php/include/defines.inc.php
@@ -48,6 +48,7 @@
define('T_ZBX_IP', 4);
define('T_ZBX_CLR', 5);
define('T_ZBX_PORTS', 6);
+ define('T_ZBX_IP_RANGE', 7);
define('O_MAND', 0);
define('O_OPT', 1);
diff --git a/frontends/php/include/discovery.inc.php b/frontends/php/include/discovery.inc.php
index 43e366a3..c27db23c 100644
--- a/frontends/php/include/discovery.inc.php
+++ b/frontends/php/include/discovery.inc.php
@@ -112,30 +112,18 @@
return $dcheckid;
}
- function add_discovery_rule($name, $ipfirst, $iplast,
- $delay, $status, $upevent, $downevent,
- $svcupevent, $svcdownevent, $dchecks)
+ function add_discovery_rule($name, $iprange, $delay, $status, $dchecks)
{
- $upevent *= 3600; /* convert hours to seconds */
- $downevent *= 3600; /* convert hours to seconds */
- $svcupevent *= 3600; /* convert hours to seconds */
- $svcdownevent *= 3600; /* convert hours to seconds */
-
- $ip_1 = explode('.', $ipfirst);
- $ip_2 = explode('.', $iplast);
- for($i=0; $i<3; $i++)
+ if( !validate_ip_range($iprange) )
{
- if($ip_1[$i] != $ip_2[$i])
- {
- error('Incorrect IP range.');
- return false;
- }
+ error('Incorrect IP range.');
+ return false;
+
}
$druleid = get_dbid('drules', 'druleid');
- $result = DBexecute('insert into drules (druleid,name,ipfirst,iplast,delay,status,upevent,downevent,svcupevent,svcdownevent) '.
- ' values ('.$druleid.','.zbx_dbstr($name).','.zbx_dbstr($ipfirst).','.zbx_dbstr($iplast).','.$delay.','.$status.
- ','.$upevent.','.$downevent.','.$svcupevent.','.$svcdownevent.')');
+ $result = DBexecute('insert into drules (druleid,name,iprange,delay,status) '.
+ ' values ('.$druleid.','.zbx_dbstr($name).','.zbx_dbstr($iprange).','.$delay.','.$status.')');
if($result)
{
@@ -149,19 +137,17 @@
return $result;
}
- function update_discovery_rule($druleid, $name, $ipfirst, $iplast,
- $delay, $status, $upevent, $downevent,
- $svcupevent, $svcdownevent, $dchecks)
+ function update_discovery_rule($druleid, $name, $iprange, $delay, $status, $dchecks)
{
- $upevent *= 3600; /* convert hours to seconds */
- $downevent *= 3600; /* convert hours to seconds */
- $svcupevent *= 3600; /* convert hours to seconds */
- $svcdownevent *= 3600; /* convert hours to seconds */
-
- $result = DBexecute('update drules set name='.zbx_dbstr($name).',ipfirst='.zbx_dbstr($ipfirst).','.
- 'iplast='.zbx_dbstr($iplast).',delay='.$delay.',status='.$status.',upevent='.$upevent.','.
- 'downevent='.$downevent.',svcupevent='.$svcupevent.',svcdownevent='.$svcdownevent.' '.
- ' where druleid='.$druleid);
+ if( !validate_ip_range($iprange) )
+ {
+ error('Incorrect IP range.');
+ return false;
+
+ }
+
+ $result = DBexecute('update drules set name='.zbx_dbstr($name).',iprange='.zbx_dbstr($iprange).','.
+ 'delay='.$delay.',status='.$status.' where druleid='.$druleid);
if($result)
{
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php
index afffc9ff..f82eb388 100644
--- a/frontends/php/include/forms.inc.php
+++ b/frontends/php/include/forms.inc.php
@@ -179,14 +179,9 @@
{
$name = $rule_data['name'];
- $ipfirst = $rule_data['ipfirst'];
- $iplast = $rule_data['iplast'];
+ $iprange = $rule_data['iprange'];
$delay = $rule_data['delay'];
$status = $rule_data['status'];
- $upevent = round($rule_data['upevent']/3600); /* convert seconds to hours */
- $downevent = round($rule_data['downevent']/3600); /* convert seconds to hours */
- $svcupevent = round($rule_data['svcupevent']/3600); /* convert seconds to hours */
- $svcdownevent = round($rule_data['svcdownevent']/3600); /* convert seconds to hours */
//TODO init checks
$dchecks = array();
@@ -199,14 +194,9 @@
else
{
$name = get_request('name','');
- $ipfirst = get_request('ipfirst','192.168.0.1');
- $iplast = get_request('iplast','192.168.0.255');
+ $iprange = get_request('iprange','192.168.0.1-255');
$delay = get_request('delay',3600);
$status = get_request('status',DRULE_STATUS_ACTIVE);
- $upevent = get_request('upevent',24);
- $downevent = get_request('downevent',48);
- $svcupevent = get_request('svcupevent',1);
- $svcdownevent = get_request('svcdownevent',4);
$dchecks = get_request('dchecks',array());
}
@@ -214,13 +204,8 @@
$new_check_ports= get_request('new_check_ports', '80');
$form->AddRow(S_NAME, new CTextBox('name', $name, 40));
- $form->AddRow(S_IP_FIRST, new CTextBox('ipfirst', $ipfirst, 27));
- $form->AddRow(S_IP_LAST, new CTextBox('iplast', $iplast, 27));
+ $form->AddRow(S_IP_RANGE, new CTextBox('iprange', $iprange, 27));
$form->AddRow(S_DELAY.' (seconds)', new CNumericBox('delay', $delay, 8));
- $form->AddRow(S_UPEVENT, new CNumericBox('upevent', $upevent, 8));
- $form->AddRow(S_DOWNEVENT, new CNumericBox('downevent', $downevent, 8));
- $form->AddRow(S_SVCUPEVENT, new CNumericBox('svcupevent', $svcupevent, 8));
- $form->AddRow(S_SVCDOWNEVENT, new CNumericBox('svcdownevent', $svcdownevent, 8));
$form->AddVar('dchecks', $dchecks);
diff --git a/frontends/php/include/locales/en_gb.inc.php b/frontends/php/include/locales/en_gb.inc.php
index 3cc394fa..53f8d220 100644
--- a/frontends/php/include/locales/en_gb.inc.php
+++ b/frontends/php/include/locales/en_gb.inc.php
@@ -44,8 +44,7 @@
'S_CONFIGURATION_OF_DISCOVERY'=> 'Configuration of discovery',
'S_CONFIGURATION_OF_DISCOVERY_BIG'=> 'CONFIGURATION OF DISCOVERY',
'S_NO_DISCOVERY_RULES_DEFINED'=> 'No discovery rules defined',
- 'S_IP_FIRST'=> 'IP first',
- 'S_IP_LAST'=> 'IP last',
+ 'S_IP_RANGE'=> 'IP range',
'S_INTERVALS'=> 'Intervals',
'S_CHECKS'=> 'Checks',
'S_ENABLE_SELECTED_RULES_Q'=> 'Enable selected rules?',
@@ -56,11 +55,6 @@
'S_EVENT_SOURCE'=> 'Event source',
- 'S_UPEVENT'=> 'Up event (hours)',
- 'S_DOWNEVENT'=> 'Down event (hours)',
- 'S_SVCUPEVENT'=> 'Service up event (hours)',
- 'S_SVCDOWNEVENT'=> 'Service down event (hours)',
-
'S_NEW_CHECK'=> 'New check',
'S_SSH'=> 'SSH',
'S_LDAP'=> 'LDAP',
diff --git a/frontends/php/include/validate.inc.php b/frontends/php/include/validate.inc.php
index 84d52440..223f5a9e 100644
--- a/frontends/php/include/validate.inc.php
+++ b/frontends/php/include/validate.inc.php
@@ -66,20 +66,25 @@
return true;
}
- function validate_ip_list($str)
+ function validate_ip_range($str)
{
foreach(explode(',',$str) as $ip_range)
{
- $networks = array();
- $ip_range = explode('-', $ip_range);
- if(count($ip_range) > 2) return false;
- foreach($ip_range as $ip)
+ $ip_parts = explode('.', $ip_range);
+ if(count($ip_parts) != 4) return false;
+
+ if( !is_numeric($ip_parts[0]) || $ip_parts[0] < 0 || $ip_parts[0] > 255 ) return false;
+ if( !is_numeric($ip_parts[1]) || $ip_parts[1] < 0 || $ip_parts[1] > 255 ) return false;
+ if( !is_numeric($ip_parts[2]) || $ip_parts[2] < 0 || $ip_parts[2] > 255 ) return false;
+
+ $last_part = explode('-', $ip_parts[3]);
+ if(count($last_part) > 2) return false;
+ foreach($last_part as $ip_p)
{
- if( !validate_ip($ip, $arr) ) return false;
- $network = $arr[1].'.'.$arr['2'].'.'.$arr[3];
- $networks[$network] = $network;
+ if( !is_numeric($ip_p) || $ip_p < 0 || $ip_p > 255 ) return false;
}
- if( count($networks) > 1 ) return false;
+ if(count($last_part) == 2 && $last_part[0] > $last_part[1]) return false;
+
}
return true;
}
@@ -228,6 +233,24 @@
return ZBX_VALID_OK;
}
+ if($type == T_ZBX_IP_RANGE)
+ {
+ if( !validate_ip_range($var) )
+ {
+ if($flags&P_SYS)
+ {
+ info("Critical error. Field [".$field."] is not IP range");
+ return ZBX_VALID_ERROR;
+ }
+ else
+ {
+ info("Warning. Field [".$field."] is not IP range");
+ return ZBX_VALID_WARNING;
+ }
+ }
+ return ZBX_VALID_OK;
+ }
+
if($type == T_ZBX_PORTS)
{
$err = ZBX_VALID_OK;