bug fixes and security fixes

git-svn-id: http://www.observium.org/svn/observer/trunk@307 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Adam Amstrong
2008-11-19 12:12:54 +00:00
parent 436e638525
commit 81c75b3d92
11 changed files with 83 additions and 32 deletions

View File

@@ -1,6 +1,7 @@
<?php
unset( $cpw_count );
unset($cpw_exists);
echo("PW : ");
@@ -19,20 +20,41 @@
$if_id = @mysql_result(mysql_query("SELECT `interface_id` FROM `interfaces` WHERE `ifDescr` = '$interface_descr' AND `device_id` = '".$device['device_id']."'"),0);
if($cpw_remote_device && $if_id) {
$hostname = gethostbyid($cpw_remote_device);
echo("Oid: " . $cpwOid . " cpwVcID: " . $cpwVcID . " Remote Id: " . $cpw_remote_id . "($hostname(".$cpw_remote_device.") -> $interface_descr($if_id)) \n");
# echo("Oid: " . $cpwOid . " cpwVcID: " . $cpwVcID . " Remote Id: " . $cpw_remote_id . "($hostname(".$cpw_remote_device.") -> $interface_descr($if_id)) \n");
if(mysql_result(mysql_query("SELECT count(*) FROM pseudowires WHERE `interface_id` = '$if_id'
AND `cpwVcID`='".$cpwVcID."'"),0)) {
echo("already have! \n");
echo(".");
} else {
$insert_query = "INSERT INTO `pseudowires` (`interface_id`,`peer_device_id`,`peer_ldp_id`,`cpwVcID`,`cpwOid`) ";
$insert_query .= "VALUES ('$if_id','$cpw_remote_device','$cpw_remote_id','$cpwVcID', '$cpwOid')";
mysql_query($insert_query);
echo("+");
# echo($device['device_id'] . " $cpwOid $cpw_remote_device $if_id $cpwVcID\n");
}
$cpw_exists[] = $device['device_id'] . " $cpwOid $cpw_remote_device $if_id $cpwVcID";
}
}
}
}
$sql = "SELECT * FROM pseudowires AS P, interfaces AS I, devices as D WHERE P.interface_id = I.interface_id AND I.device_id = D.device_id AND D.device_id = '".$device['device_id']."'";
$query = mysql_query($sql);
while ($cpw = mysql_fetch_array($query)) {
unset($exists);
$i = 0;
while ($i < count($cpw_exists) && !$exists) {
$this_cpw = $cpw['device_id'] . " " . $cpw['cpwOid'] . " " . $cpw['peer_device_id'] . " " . $cpw['interface_id'] . " " . $cpw['cpwVcID'];
if ($cpw_exists[$i] == $this_cpw) { $exists = 1;
# echo($cpw_exists[$i]. " || $this_cpw \n");
}
$i++;
}
if(!$exists) {
echo("-");
# echo($this_cpw . "\n");
mysql_query("DELETE FROM pseudowires WHERE pseudowire_id = '" . $cpw['pseudowire_id'] . "'");
}
}
?>

View File

@@ -17,6 +17,10 @@
$entry = trim($entry);
list($ifIndex, $ifName) = explode("||", $entry);
$ifDescr = $config['snmpget'] . " -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'] . " ifAlias.$ifIndex";
$ifDescr = str_replace("No Such Object available on this agent at this OID", "", $ifDescr);
$ifDescr = str_replace("No Such Instance currently exists at this OID", "", $ifDescr);
if(!strstr($entry, "irtual")) {
$ifName = trim(str_replace("\"", "", $ifName));
$if = trim(strtolower($ifName));
@@ -30,7 +34,7 @@
if (preg_match('/ng[0-9]+$/', $if)) { $nullintf = '1'; }
if ($nullintf == 0) {
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `device_id` = '".$device['device_id']."' AND `ifIndex` = '$ifIndex'"), 0) == '0') {
mysql_query("INSERT INTO `interfaces` (`device_id`,`ifIndex`,`ifDescr`) VALUES ('".$device['device_id']."','$ifIndex','$ifName')");
mysql_query("INSERT INTO `interfaces` (`device_id`,`ifIndex`,`ifDescr`) VALUES ('".$device['device_id']."','$ifIndex','$ifDescr')");
# Add Interface
echo("+");
} else {
@@ -43,9 +47,15 @@
}
$int_exists[] = "$ifIndex";
} else {
# Ignored Interface
echo("$if \n");
echo("X");
# Ignored Interface
#echo("$if \n");
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `interfaces` WHERE `device_id` = '".$device['device_id']."' AND `ifIndex` = '$ifIndex'"), 0) != '0') {
mysql_query("UPDATE `interfaces` SET `deleted` = '1' WHERE `device_id` = '".$device['device_id']."' AND `ifIndex` = '$ifIndex'");
# Delete Interface
echo("-"); ## Deleted Interface
} else {
echo("X"); ## Ignored Interface
}
}
}
}

View File

@@ -6,9 +6,10 @@ $ipv6interfaces = shell_exec($config['snmpget']." -Ovnq -".$device['snmpver']."
if($ipv6interfaces){
$oids = trim(shell_exec($config['snmpwalk']." -".$device['snmpver']." -Ln -c ".$device['community']." ".$device['hostname']." ipAddressIfIndex.ipv6 -Osq | grep -v No"));
$oids = trim(trim(shell_exec($config['snmpwalk']." -".$device['snmpver']." -Ln -c ".$device['community']." ".$device['hostname']." ipAddressIfIndex.ipv6 -Osq | grep -v No")));
$oids = str_replace("ipAddressIfIndex.ipv6.", "", $oids); $oids = str_replace("\"", "", $oids); $oids = trim($oids);
foreach(explode("\n", $oids) as $data) {
if($data) {
$data = trim($data);
list($ipv6addr,$ifIndex) = explode(" ", $data);
$oid = "";
@@ -47,6 +48,7 @@ if($ipv6interfaces){
echo("A");
}
} else { echo("."); }
}
}
} else { echo("None configured"); }

View File

@@ -315,6 +315,14 @@ $type = strtolower($data['os']);
}
function renamehost($id, $new) {
global $config;
$host = mysql_result(mysql_query("SELECT hostname FROM devices WHERE device_id = '$id'"), 0);
shell_exec("mv ".$config['rrd_dir']."/$host ".$config['rrd_dir']."/$new");
mysql_query("UPDATE devices SET hostname = '$new' WHERE device_id = '$id'");
mysql_query("INSERT INTO eventlog (host, datetime, message) VALUES ('" . $id . "', NULL, NOW(), 'Hostname changed -> $new (console)')");
}
function delHost($id) {
global $config;
$host = mysql_result(mysql_query("SELECT hostname FROM devices WHERE device_id = '$id'"), 0);
@@ -388,11 +396,21 @@ function scanUDP ($host, $port, $timeout) {
function humanmedia($media) {
$media = preg_replace("/^ethernetCsmacd$/", "Ethernet", $media);
$media = preg_replace("/^softwareLoopback$/", "Software Loopback", $media);
$media = preg_replace("/^softwareLoopback$/", "Loopback", $media);
$media = preg_replace("/^tunnel$/", "Tunnel", $media);
$media = preg_replace("/^propVirtual$/", "Ethernet VLAN", $media);
$media = preg_replace("/^propVirtual$/", "Virtual Int", $media);
$media = preg_replace("/^ppp$/", "PPP", $media);
$media = preg_replace("/^ds1$/", "DS1", $media);
$media = preg_replace("/^pos$/", "POS", $media);
$media = preg_replace("/^sonet$/", "SONET", $media);
$media = preg_replace("/^slip$/", "SLIP", $media);
$media = preg_replace("/^mpls$/", "MPLS Layer", $media);
$media = preg_replace("/^l2vlan$/", "VLAN Subif", $media);
$media = preg_replace("/^atm$/", "ATM", $media);
$media = preg_replace("/^aal5$/", "ATM AAL5", $media);
$media = preg_replace("/^atmSubInterface$/", "ATM Subif", $media);
$media = preg_replace("/^propPointToPointSerial$/", "PtP Serial", $media);
return $media;
}
@@ -577,7 +595,6 @@ function fixifName ($inf) {
return $inf;
}
function fixIOSFeatures($features){
$features = preg_replace("/^PK9S$/", "IP w/SSH LAN Only", $features);
$features = str_replace("LANBASEK9", "Lan Base Crypto", $features);

View File

@@ -18,7 +18,7 @@ while ($interface = mysql_fetch_array($interface_query)) {
echo("Looking at " . $interface['ifDescr'] . " on " . $device['hostname'] . "\n");
$snmp_cmd = "snmpget -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'];
$snmp_cmd = $config['snmpget'] . " -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'];
$snmp_cmd .= " ifAdminStatus." . $interface['ifIndex'] . " ifOperStatus." . $interface['ifIndex'] . " ifAlias." . $interface['ifIndex'];
$snmp_output = trim(`$snmp_cmd`);