]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
OpenVPN: Fix query when selecting sessions only
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 13 Apr 2020 07:45:33 +0000 (09:45 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Fri, 1 May 2020 19:12:10 +0000 (19:12 +0000)
Previously some sessions were selected which did not qualify
for the search.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
html/cgi-bin/logs.cgi/ovpnclients.dat

index 703f4e5078c2acb23273351a2a982d0a09eab999..46667a9d1f8cd6a000be9af88a7026ca267ca9d6 100755 (executable)
@@ -107,27 +107,31 @@ my $database_query = qq(
                                         ELSE DATETIME('$from_datestring', 'localtime', 'start of day')
                         END
                 ), 'utc')
-        )
+        ) AS duration
         FROM sessions
         WHERE
-                disconnected_at IS NULL
-                OR
-                DATETIME(disconnected_at, 'localtime') > DATETIME('$from_datestring', 'localtime', 'start of day')
-                OR
+                (
+                       disconnected_at IS NULL
+                       OR
+                       DATETIME(disconnected_at, 'localtime') > DATETIME('$from_datestring', 'localtime', 'start of day')
+               )
+                AND
                 DATETIME(connected_at, 'localtime') < DATETIME('$to_datestring', 'localtime', 'start of day', '+86399 seconds')
         GROUP BY common_name
-        ORDER BY common_name;
+        ORDER BY common_name, duration DESC;
 );
 
 if ($cgiparams{'CONNECTION_NAME'}) {
        $database_query = qq(
-               SELECT *
-               FROM sessions
+               SELECT * FROM sessions
                WHERE
-                       common_name = '$cgiparams{"CONNECTION_NAME"}' AND (
-                       DATETIME(disconnected_at, 'localtime') > DATETIME('$from_datestring', 'localtime', 'start of day')
-                       OR
-                       DATETIME(connected_at, 'localtime') < DATETIME('$to_datestring', 'localtime', 'start of day', '+86399 seconds'));
+                       common_name = '$cgiparams{"CONNECTION_NAME"}'
+                       AND (
+                               DATETIME(disconnected_at, 'localtime') > DATETIME('$from_datestring', 'localtime', 'start of day')
+                               AND
+                               DATETIME(connected_at, 'localtime') < DATETIME('$to_datestring', 'localtime', 'start of day', '+86399 seconds')
+                       )
+               ORDER BY connected_at;
        );
 }