--- includes/polling/unix-agent/packages.inc.php 2022-12-30 10:53:42.000000000 +0000 +++ includes/polling/unix-agent/packages.inc.php 2023-03-26 02:30:37.796585714 +0100 @@ -18,7 +18,7 @@ if (!safe_empty($agent_data['rpm'])) { echo("\nRPM Packages: "); // Build array of existing packages - $manager = "rpm"; + $rpmmanager = "rpm"; foreach (dbFetchRows("SELECT * FROM `packages` WHERE `device_id` = ?", [ $device['device_id'] ]) 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']; @@ -34,7 +34,7 @@ foreach (explode("\n", $agent_data['rpm']) as $package) { list($name, $pversion, $build, $arch, $size) = explode(" ", $package); - $pkgs[$manager][$name][$arch][$pversion][$build]['manager'] = $manager; + $pkgs[$manager][$name][$arch][$pversion][$build]['manager'] = $rpmmanager; $pkgs[$manager][$name][$arch][$pversion][$build]['name'] = $name; $pkgs[$manager][$name][$arch][$pversion][$build]['arch'] = $arch; $pkgs[$manager][$name][$arch][$pversion][$build]['version'] = $pversion; @@ -50,7 +50,7 @@ if (!safe_empty($agent_data['dpkg'])) { echo("\nDEB Packages: "); // Build array of existing packages - $manager = "deb"; + $debmanager = "deb"; foreach (dbFetchRows("SELECT * FROM `packages` WHERE `device_id` = ?", [ $device['device_id'] ]) 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']; @@ -67,7 +67,7 @@ foreach (explode("\n", $agent_data['dpkg']) as $package) { list($name, $pversion, $arch, $size) = explode(" ", $package); $build = ""; - $pkgs[$manager][$name][$arch][$pversion][$build]['manager'] = $manager; + $pkgs[$manager][$name][$arch][$pversion][$build]['manager'] = $debmanager; $pkgs[$manager][$name][$arch][$pversion][$build]['name'] = $name; $pkgs[$manager][$name][$arch][$pversion][$build]['arch'] = $arch; $pkgs[$manager][$name][$arch][$pversion][$build]['version'] = $pversion; @@ -79,6 +79,39 @@ } } +// OPKG +if (!safe_empty($agent_data['opkg'])) { + echo("\nIPK Packages: "); + // Build array of existing packages + $ipkmanager = "ipk"; + + foreach (dbFetchRows("SELECT * FROM `packages` WHERE `device_id` = ?", [ $device['device_id'] ]) 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['opkg']) as $package) { + list($name, $pversion, $arch, $size) = explode(" ", $package); + $build = ""; + $pkgs[$manager][$name][$arch][$pversion][$build]['manager'] = $ipkmanager; + $pkgs[$manager][$name][$arch][$pversion][$build]['name'] = $name; + $pkgs[$manager][$name][$arch][$pversion][$build]['arch'] = $arch; + $pkgs[$manager][$name][$arch][$pversion][$build]['version'] = $pversion; + $pkgs[$manager][$name][$arch][$pversion][$build]['build'] = $build; + $pkgs[$manager][$name][$arch][$pversion][$build]['size'] = (int)$size; + $pkgs[$manager][$name][$arch][$pversion][$build]['status'] = '1'; + $text = $manager."-".$name."-".$arch."-".$pversion."-".$build; + $pkgs_id[] = $pkgs[$manager][$name][$arch][$pversion][$build]; + } +} + // This is run for all "packages" and is common to RPM/DEB/etc $pkg_multi_insert = []; $pkg_multi_update = []; @@ -88,6 +121,7 @@ $build = $pkg['build']; $arch = $pkg['arch']; $size = $pkg['size']; + $manager = $pkg['manager']; #echo(str_pad($name, 20)." ".str_pad($pversion, 10)." ".str_pad($build, 10)." ".$arch."\n"); #echo($name." ");