public function get($dateTimeUnix, $ipAddress) { $returnData = []; $logFile = sprintf('%s/log.json', $this->dataDir); $logData = FileIO::readJsonFile($logFile); foreach ($logData['entries'] as $k => $v) { $connectTime = $v['connect_time']; $disconnectTime = array_key_exists('disconnect_time', $v) ? $v['disconnect_time'] : null; if ($connectTime <= $dateTimeUnix && (is_null($disconnectTime) || $disconnectTime >= $dateTimeUnix)) { // XXX edge cases? still connected? just disconnected? $v4 = $v['v4']; $v6 = $v['v6']; if ($v4 === $ipAddress || $v6 === $ipAddress) { $returnData[] = ['user_id' => $v['user_id'], 'v4' => $v4, 'v6' => $v6, 'config_name' => $v['config_name'], 'connect_time' => $connectTime, 'disconnect_time' => $disconnectTime]; } } } // XXX could there actually be multiple results? return $returnData; }
*/ require_once sprintf('%s/vendor/autoload.php', dirname(__DIR__)); use SURFnet\VPN\Common\FileIO; use SURFnet\VPN\Common\CliParser; try { $p = new CliParser('Generate statistics for an instance', ['instance' => ['the instance', true, true]]); $opt = $p->parse($argv); if ($opt->e('help')) { echo $p->help(); exit(0); } $dataDir = sprintf('%s/data/%s', dirname(__DIR__), $opt->v('instance')); $inFile = sprintf('%s/log.json', $dataDir); $outFile = sprintf('%s/stats.json', $dataDir); $statsData = []; $logData = FileIO::readJsonFile($inFile); $timeConnection = []; $uniqueUsers = []; foreach ($logData['entries'] as $entry) { $dateOfConnection = date('Y-m-d', $entry['connect_time']); if (!array_key_exists($dateOfConnection, $statsData)) { $statsData[$dateOfConnection] = []; } if (!array_key_exists('number_of_connections', $statsData[$dateOfConnection])) { $statsData[$dateOfConnection]['number_of_connections'] = 0; } if (!array_key_exists('traffic', $statsData[$dateOfConnection])) { $statsData[$dateOfConnection]['traffic'] = 0; } if (!array_key_exists('user_list', $statsData[$dateOfConnection])) { $statsData[$dateOfConnection]['user_list'] = [];