<?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;
Ejemplo n.º 2
0
<?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)) {