don't put standard ports in base_url, add dpkg support for packages, fix display of packages in main menubar

git-svn-id: http://www.observium.org/svn/observer/trunk@3070 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
Tom Laermans
2012-04-21 00:30:55 +00:00
parent d2b48673e2
commit bf58e662a9
3 changed files with 200 additions and 156 deletions

View File

@@ -66,8 +66,12 @@ foreach ($config['device_types'] as $devtype)
if ($_SESSION['userlevel'] >= '10')
{
if (count($cache['device_types']))
{
echo ('
<li><hr width="140" /></li>');
}
echo('
<li><hr width="140" /></li>
<li><a href="addhost/"><img src="images/16/server_add.png" border="0" align="absmiddle" /> Add Device</a></li>
<li><a href="delhost/"><img src="images/16/server_delete.png" border="0" align="absmiddle" /> Delete Device</a></li>');
}
@@ -489,7 +493,7 @@ if ($_SESSION['userlevel'] >= '5' && ($routing_count['bgp']+$routing_count['ospf
<?php
}
$packages = dbFetchCell("SELECT COUNT(package_id) from `packages`");
$packages = dbFetchCell("SELECT COUNT(pkg_id) from `packages`");
if ($packages)
{

View File

@@ -75,11 +75,11 @@ if (isset($_SERVER["SERVER_NAME"]) && isset($_SERVER["SERVER_PORT"]))
if (strpos($_SERVER["SERVER_NAME"] , ":"))
{
# Literal IPv6
$config['base_url'] = "http://[" . $_SERVER["SERVER_NAME"] ."]:".$_SERVER["SERVER_PORT"]."/";
$config['base_url'] = "http://[" . $_SERVER["SERVER_NAME"] ."]" . ($_SERVER["SERVER_PORT"] != 80 ? ":".$_SERVER["SERVER_PORT"] : '') ."/";
}
else
{
$config['base_url'] = "http://" . $_SERVER["SERVER_NAME"] .":".$_SERVER["SERVER_PORT"]."/";
$config['base_url'] = "http://" . $_SERVER["SERVER_NAME"] . ($_SERVER["SERVER_PORT"] != 80 ? ":".$_SERVER["SERVER_PORT"] : '') ."/";
}
}

View File

@@ -1,25 +1,26 @@
<?php
if($device['os_group'] == "unix") {
echo("Observium UNIX Agent: ");
$port='6556';
$agent = fsockopen($device['hostname'], $port, $errno, $errstr, 10);
if(!$agent)
if($device['os_group'] == "unix")
{
echo("Observium UNIX Agent: ");
$port='6556';
$agent = fsockopen($device['hostname'], $port, $errno, $errstr, 10);
if(!$agent)
{
echo "Connection to UNIX agent failed on port ".$port.".";
} else {
} else {
while (!feof($agent))
{
$agent_raw .= fgets($agent, 128);
}
}
}
if(!empty($agent_raw))
{
if(!empty($agent_raw))
{
foreach (explode("<<<", $agent_raw) as $section)
{
@@ -65,9 +66,46 @@ if(!empty($agent_raw))
}
}
### DPKG
if (!empty($agent_data['dpkg']))
{
echo("\nDEB Packages: ");
## Build array of existing packages
$manager = "deb";
$pkgs_db_db = dbFetchRows("SELECT * FROM `packages` WHERE `device_id` = ?", array($device['device_id']));
foreach ($pkgs_db_db as $pkg_db)
{
$pkgs_db[$pkg_db['manager']][$pkg_db['name']][$pkg_db['arch']][$pkg_db['version']][$pkg_db['build']]['id'] = $pkg_db['pkg_id'];
$pkgs_db[$pkg_db['manager']][$pkg_db['name']][$pkg_db['arch']][$pkg_db['version']][$pkg_db['build']]['status'] = $pkg_db['status'];
$pkgs_db[$pkg_db['manager']][$pkg_db['name']][$pkg_db['arch']][$pkg_db['version']][$pkg_db['build']]['size'] = $pkg_db['size'];
$pkgs_db_id[$pkg_db['pkg_id']]['text'] = $pkg_db['manager'] ."-".$pkg_db['name']."-".$pkg_db['arch']."-".$pkg_db['version']."-".$pkg_db['build'];
$pkgs_db_id[$pkg_db['pkg_id']]['manager'] = $pkg_db['manager'];
$pkgs_db_id[$pkg_db['pkg_id']]['name'] = $pkg_db['name'];
$pkgs_db_id[$pkg_db['pkg_id']]['arch'] = $pkg_db['arch'];
$pkgs_db_id[$pkg_db['pkg_id']]['version'] = $pkg_db['version'];
$pkgs_db_id[$pkg_db['pkg_id']]['build'] = $pkg_db['build'];
}
foreach (explode("\n", $agent_data['dpkg']) as $package)
{
list($name, $version, $arch, $size) = explode(" ", $package);
$build = "";
$pkgs[$manager][$name][$arch][$version][$build]['manager'] = $manager;
$pkgs[$manager][$name][$arch][$version][$build]['name'] = $name;
$pkgs[$manager][$name][$arch][$version][$build]['arch'] = $arch;
$pkgs[$manager][$name][$arch][$version][$build]['version'] = $version;
$pkgs[$manager][$name][$arch][$version][$build]['build'] = $build;
$pkgs[$manager][$name][$arch][$version][$build]['size'] = $size;
$pkgs[$manager][$name][$arch][$version][$build]['status'] = '1';
$text = $manager."-".$name."-".$arch."-".$version."-".$build;
$pkgs_id[] = $pkgs[$manager][$name][$arch][$version][$build];
}
}
## This is run for all "packages" and is common to RPM/DEB/etc
foreach ($pkgs_id as $pkg) {
foreach ($pkgs_id as $pkg)
{
$name = $pkg['name'];
$version = $pkg['version'];
$build = $pkg['build'];
@@ -98,17 +136,20 @@ if(!empty($agent_raw))
}
unset($pkgs_db_id[$id]);
} else {
if (count($pkgs[$manager][$name][$arch], 1) > "10" || count($pkgs_db[$manager][$name][$arch], 1) == '0') {
if (count($pkgs[$manager][$name][$arch], 1) > "10" || count($pkgs_db[$manager][$name][$arch], 1) == '0')
{
dbInsert(array('device_id' => $device['device_id'], 'name' => $name, 'manager' => $manager,
'status' => 1, 'version' => $version, 'build' => $build, 'arch' => $arch, 'size' => $size), 'packages');
echo("+".$name."-".$version."-".$build."-".$arch);
log_event('Package installed: '.$name.' ('.$arch.') version '.$version.'-'.$build, $device, 'package');
if ($build != "") { $dbuild = '-' . $build; } else { $dbuild = ''; }
echo("+".$name."-".$version.$dbuild."-".$arch);
log_event('Package installed: '.$name.' ('.$arch.') version '.$version.$dbuild, $device, 'package');
} elseif(count($pkgs_db[$manager][$name][$arch], 1)) {
$pkg_c = dbFetchRow("SELECT * FROM `packages` WHERE `device_id` = ? AND `manager` = ? AND `name` = ? and `arch` = ? ORDER BY version DESC, build DESC", array($device['device_id'], $manager, $name, $arch));
echo("U(".$pkg_c['name']."-".$pkg_c['version']."-".$pkg_c['build']."|".$name."-".$version."-".$build.")");
if ($pkg_c['build'] != "") { $pkg_c_dbuild = '-'.$pkg_c['build']; } else { $pkg_c_dbuild = ''; }
echo("U(".$pkg_c['name']."-".$pkg_c['version'].$pkg_c_dbuild."|".$name."-".$version.$dbuild.")");
$pkg_update = array('version' => $version, 'build' => $build, 'status' => '1', 'size' => $size);
dbUpdate($pkg_update, 'packages', '`pkg_id` = ?', array($pkg_c['pkg_id']));
log_event('Package updated: '.$name.' ('.$arch.') from '.$pkg_c['version'].'-'.$pkg_c['build'] .' to '.$version.'-'.$build, $device, 'package');
log_event('Package updated: '.$name.' ('.$arch.') from '.$pkg_c['version'].$pkg_c_dbuild .' to '.$version.$dbuild, $device, 'package');
unset($pkgs_db_id[$pkg_c['pkg_id']]);
}
}
@@ -158,7 +199,7 @@ if(!empty($agent_raw))
}
}
### DRBd
### DRBD
if (!empty($agent_data['drbd']))
{
$agent_data['drbd_raw'] = $agent_data['drbd'];
@@ -177,7 +218,7 @@ if(!empty($agent_raw))
}
}
}
}
}
unset($pkg);
unset($pkgs_db_id);
@@ -186,8 +227,7 @@ if(!empty($agent_raw))
unset($pkgs_db);
unset($pkgs_db_db);
echo("\n");
echo("\n");
}
?>