/** * localize important stuff. * @param Linfo $linfo */ public function __construct(Linfo $linfo) { $settings = $linfo->getSettings(); // Should we hide mac addresses, to prevent stuff like mac address spoofing? $this->_hide_mac = array_key_exists('dnsmasq_hide_mac', $settings) ? (bool) $settings['dnsmasq_hide_mac'] : false; // Find leases file $this->_leases_file = isset($settings['dnsmasq_leases']) && is_file($settings['dnsmasq_leases']) ? $settings['dnsmasq_leases'] : Common::locateActualPath(array('/var/lib/libvirt/dnsmasq/default.leases')); }
/** * localize important stuff. * @param Linfo $linfo */ public function __construct(Linfo $linfo) { $settings = $linfo->getSettings(); // Should we hide mac addresses, to prevent stuff like mac address spoofing? $this->_hide_mac = array_key_exists('dhcpd3_hide_mac', $settings) ? (bool) $settings['dhcpd3_hide_mac'] : false; // Find leases file $this->_leases_file = Common::locateActualPath(array('/var/lib/dhcp/dhcpd.leases', '/var/lib/dhcp3/dhcpd.leases', '/var/lib/dhcpd/dhcpd.leases', '/var/state/dhcp/dhcpd.leases', '/var/db/dhcpd/dhcpd.leases', '/var/db/dhcpd.leases')); }
/** * getDevs. * * @return array of devices */ public function getDevs() { // Time? if (!empty($this->settings['timer'])) { $t = new Timer('Hardware Devices'); } // Location of useful paths $pci_ids = Common::locateActualPath(array('/usr/share/misc/pci.ids', '/usr/share/pci.ids', '/usr/share/hwdata/pci.ids')); $usb_ids = Common::locateActualPath(array('/usr/share/misc/usb.ids', '/usr/share/usb.ids', '/usr/share/hwdata/usb.ids')); // Did we not get them? $pci_ids || $this->error->add('Linux Device Finder', 'Cannot find pci.ids; ensure pciutils is installed.'); $usb_ids || $this->error->add('Linux Device Finder', 'Cannot find usb.ids; ensure usbutils is installed.'); // Class that does it $hw = new Hwpci($usb_ids, $pci_ids); $hw->work('linux'); return $hw->result(); }
/** * @test */ public function locateActualPath() { $paths = array(LINFO_TESTDIR . '/files/test1.txt', LINFO_TESTDIR . '/files/test2.txt', LINFO_TESTDIR . '/files/test3.txt'); $real = LINFO_TESTDIR . '/files/test2.txt'; $this->assertEquals($real, Common::locateActualPath($paths)); }
/** * Run a command and cache its output for later. * * @throws Exception * * @param string $name name of executable to call * @param string $switches command arguments */ public function exec($name, $switches = '') { // Sometimes it is necessary to call a program with sudo $attempt_sudo = array_key_exists('sudo_apps', self::$settings) && in_array($name, self::$settings['sudo_apps']); // Have we gotten it before? if (array_key_exists($name . $switches, $this->cliCache)) { return $this->cliCache[$name . $switches]; } // Try finding the exec foreach ($this->searchPaths as $path) { // Found it; run it if (is_file($path . $name) && is_executable($path . $name)) { // Complete command, path switches and all $command = "{$path}{$name} {$switches}"; // Sudoing? $command = $attempt_sudo ? Common::locateActualPath(Common::arrayAppendString($this->searchPaths, 'sudo', '%2s%1s')) . ' ' . $command : $command; // Result of command $result = `{$command}`; // Increment call count ++self::$callCount; // Cache that $this->cliCache[$name . $switches] = $result; // Give result return $result; } } // Never got it throw new Exception('Exec `' . $name . '\' not found'); }