<?php chdir(realpath(dirname(__FILE__))); require '../OpenVpnApi.php'; $hostname = $_SERVER['argv'][1]; $command = $_SERVER['argv'][2]; include '../config.php'; $ovpn = new OpenVpnApi($hostname, $port, $password); if ($command == 'num_indexes') { echo count($clients = $ovpn->connectedClients()) . "\n"; } if ($command == 'index' || $command == 'query') { $clients = $ovpn->connectedClients(); foreach ($clients as $client) { if ($command == 'index') { echo "{$client}\n"; } else { if ($command == 'query') { echo "{$client}!{$client}\n"; } } } } if ($command == 'get') { $index = $_SERVER['argv'][4]; $query = $_SERVER['argv'][3]; $client = $ovpn->clientData($index); switch ($query) { case 'index': echo $client['cn'] . "\n"; return;
<?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)) {