<?php namespace App; use Carbon\Carbon; /** * Algorithms used to parse server information from string. * * @author tibo */ class ServerInfoParser { public function parseUptime(string $string) : string { $pieces = explode(' ', $string); $uptime = Carbon::now()->subSeconds($pieces[0]); return $uptime->diffForHumans(null, true); } public function parseUUID(string $string) : string { $REGEX = "/\s*UUID: (.*)/m"; $matches = array(); preg_match($REGEX, $string, $matches); if (! isset($matches[1])) { return "unknown"; } return $matches[1]; } public function parseCpuinfo(string $string) : array { $REGEX = "/^model name : (.+)$/m"; $matches = array(); preg_match_all($REGEX, $string, $matches); $result["threads"] = count($matches[0]); $result["cpu"] = $matches[1][0]; return $result; } public function parseMeminfo(string $string) { $REGEX = "/^MemTotal:\\s+([0-9]+) kB$/m"; $matches = array(); preg_match($REGEX, $string, $matches); $total = $matches[1]; return $total; } public function parseProductName(string $string) : string { $REGEX = "/^\s*Product Name: (.*)$/m"; $matches = []; preg_match($REGEX, $string, $matches); if (!isset($matches[1])) { return "unkwnown"; } return $matches[1]; } public function parseManufacturer(string $string) : string { $REGEX = "/^\s*Manufacturer: (.*)$/m"; $matches = []; preg_match($REGEX, $string, $matches); if (!isset($matches[1])) { return "unkwnown"; } return $matches[1]; } public function parseLsb(string $string) : string { $REGEX = "/^Description: (.+)$/m"; $matches = []; preg_match($REGEX, $string, $matches); return $matches[1]; } }