<?php

chdir(realpath(dirname(__FILE__)) . '/..');
require 'vendor/autoload.php';
require 'config.php';
// Database
require 'db_setup.php';
// OpenVPN Management API
if (isset($hostname) && $hostname != '') {
    require 'OpenVpnApi.php';
    $ovpn = new OpenVpnApi($hostname, $port, $password);
    // OpenVPN User Data
    $ovpn_users = $ovpn->connectedClientsData();
    $ovpn_ips = array();
    foreach ($ovpn_users as $ovpn_user) {
        $username = User::where('cn', '=', $ovpn_user['cn'])->first();
        $ovpn_user['username'] = $username ? $username['name'] : $ovpn_user['cn'];
        $ovpn_ips[$ovpn_user['ip_vpn']] = $ovpn_user;
    }
}
// Fetch current accounting pairs into an array
foreach ($routers as $router) {
    $lines = file('http://' . $router['hostname'] . '/accounting/ip.cgi');
    $date = strtotime(date('Y-m-d H:00:00'));
    // Iterate over lines
    foreach ($lines as $line) {
        $line = explode(' ', $line);
        // 0 = src_addr, 1 = dst_addr, 2 = bytes, 3 = packets, 4 = src_user, 5 = dst_user
        $raw_src_user = isset($ovpn_ips[$line[0]]) ? $ovpn_ips[$line[0]]['username'] : ($line[4] !== '*' ? $line[4] : NULL);
        $raw_dst_user = isset($ovpn_ips[$line[1]]) ? $ovpn_ips[$line[1]]['username'] : (trim($line[5]) !== '*' ? trim($line[5]) : NULL);
        if (isset($raw_src_user) || isset($raw_dst_user)) {