public function readTable() { $reservations = iterator_to_array($this->innerAdapter); $macMap = array(); foreach ($reservations as $rid => $r) { $macMap[$r['MacAddress']] = $rid; } $leases = json_decode($this->platform->exec('/usr/libexec/nethserver/read-dhcp-leases')->getOutput(), TRUE); if (!is_array($leases)) { $leases = array(); } $now = time(); foreach ($leases as $l) { $leaseStatus = $now > $l['expire'] ? 0x0 : 0x1; // Expired : Valid $l['name'] = isset($l['name']) ? $l['name'] : 'host-' . substr(md5($l['mac'] . $l['ip']), 0, 8); // use hostname from reservation, if associated to MAC from lease cache: $lid = isset($macMap[$l['mac']]) ? $macMap[$l['mac']] : $l['name']; if (isset($reservations[$lid])) { $reservations[$lid]['LeaseStatus'] = $leaseStatus | 0x2; // Reserved } elseif (count(array_filter($reservations, function ($e) use($l) { // Search a reservation for the given MAC address return $e['MacAddress'] === $l['mac']; })) == 0) { $reservations[$lid] = array('MacAddress' => $l['mac'], 'IpAddress' => $l['ip'], 'Description' => '', 'LeaseStatus' => $leaseStatus); } } // die(var_dump($reservations, 1)); return new \ArrayObject($reservations); }
public function readTable() { $networks = iterator_to_array($this->innerAdapter); $elements = json_decode($this->platform->exec('/usr/libexec/nethserver/trusted-networks')->getOutput(), TRUE); if (!is_array($elements)) { return new \ArrayObject($networks); } foreach ($elements as $e) { list($net, $mask) = explode('/', $e['mask']); if (!isset($networks[$net])) { $networks[$net] = array('Mask' => $mask, 'Description' => $e['provider'], 'editable' => 0); } } return new \ArrayObject($networks); }
public function getSharedMailboxList() { $mailboxes = array(); $proc = $this->platform->exec('/usr/bin/sudo /usr/bin/doveadm ${@}', explode(' ', 'mailbox list -u vmail Public/*')); if ($proc->getExitCode() !== 0 || $proc->getOutput() === NULL) { return new \ArrayObject(); } foreach ($proc->getOutputArray() as $mb) { $key = substr($mb, 7); // trim Public/ prefix $mailboxes[$key] = array('name' => $key); } ksort($mailboxes); return new \ArrayObject($mailboxes); }
public function readMailQueue() { $messages = array(); $process = $this->platform->exec('/usr/bin/sudo /usr/sbin/postqueue -p | head -n 4000 | /usr/libexec/nethserver/mailq2json'); if ($process->getExitCode() == 0) { $messages = json_decode($process->getOutput(), TRUE); } else { $this->getLog()->error(sprintf("%s: postqueue -f command failed - %s", __CLASS__, $process->getOutput())); } $data = new \ArrayObject(); foreach ($messages as $message) { $recipients = $this->getAllRecipients($message); $row = array('Id' => $message['id'], 'Sender' => $message['sender'], 'Status' => $message['status'], 'Size' => $this->formatSize($message['size']), 'Timestamp' => $message['time'], 'Recipients' => $recipients, 'RecipientsCount' => (string) count($recipients), 'Problems' => array_keys($message['reasons'])); $data[$message['id']] = $row; } return $data; }