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;
 }