[11/19] ovpnclients.dat: Do not perform DB actions if there is an error message.

Message ID 20200413074550.2735-11-stefan.schantl@ipfire.org
State Accepted
Commit e1cc1e6cb97b16f18230c8e45f8d69c8f1691377
Headers
Series [01/19] openvpn: Add WUI page for client usage statistics |

Commit Message

Stefan Schantl April 13, 2020, 7:45 a.m. UTC
  Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
---
 html/cgi-bin/logs.cgi/ovpnclients.dat | 77 +++++++++++++++------------
 1 file changed, 43 insertions(+), 34 deletions(-)
  

Patch

diff --git a/html/cgi-bin/logs.cgi/ovpnclients.dat b/html/cgi-bin/logs.cgi/ovpnclients.dat
index a83a0bca9..093315a64 100755
--- a/html/cgi-bin/logs.cgi/ovpnclients.dat
+++ b/html/cgi-bin/logs.cgi/ovpnclients.dat
@@ -140,11 +140,17 @@  if ($cgiparams{'CONNECTION_NAME'}) {
 	);
 }
 
-# Prepare SQL statement.
-my $statement_handle = $database_handle->prepare($database_query);
+my $statement_handle;
+my $database_return_value;
 
-# Execute SQL statement and get retun value if any error happened.
-my $database_return_value = $statement_handle->execute();
+# Only process SQL actions if there is no error message.
+unless ($errormessage) {
+	# Prepare SQL statement.
+	$statement_handle = $database_handle->prepare($database_query);
+
+	# Execute SQL statement and get retun value if any error happened.
+	$database_return_value = $statement_handle->execute();
+}
 
 # If an error has been returned, assign it to the errorstring value for displaying.
 if($database_return_value < 0) {
@@ -264,44 +270,47 @@  my $col = "bgcolor='$color{'color20'}'";
 
 	print "</tr>\n";
 
-while(my @row = $statement_handle->fetchrow_array()) {
-	# Assign some nice to read variable names for the DB fields.
-	my $connection_name = $row[0];
-	my $connection_open_time = $row[1];
-	my $connection_close_time = $row[2];
-	my $connection_bytes_recieved = &General::formatBytes($row[3]);
-	my $connection_bytes_sent = &General::formatBytes($row[4]);
-
-	# Colorize columns.
-	if ($lines % 2) {
-		$col="bgcolor='$color{'color20'}'";
-	} else {
-		$col="bgcolor='$color{'color22'}'";
-	}
+# Only try to fetch the DB items if there is no error message.
+unless ($errormessage) {
+	while(my @row = $statement_handle->fetchrow_array()) {
+		# Assign some nice to read variable names for the DB fields.
+		my $connection_name = $row[0];
+		my $connection_open_time = $row[1];
+		my $connection_close_time = $row[2];
+		my $connection_bytes_recieved = &General::formatBytes($row[3]);
+		my $connection_bytes_sent = &General::formatBytes($row[4]);
+
+		# Colorize columns.
+		if ($lines % 2) {
+			$col="bgcolor='$color{'color20'}'";
+		} else {
+			$col="bgcolor='$color{'color22'}'";
+		}
 
-	print "<tr>\n";
-		print "<td width='40%' $col>$connection_name</td>\n";
+		print "<tr>\n";
+			print "<td width='40%' $col>$connection_name</td>\n";
 
-	if ($cgiparams{'CONNECTION_NAME'}) {
-		print "<td width='20%' $col>$connection_open_time</td>\n";
-		print "<td width='20%' $col>$connection_close_time</td>\n";
-		print "<td width='10%' $col>$connection_bytes_recieved</td>\n";
-		print "<td width='10%' $col>$connection_bytes_sent</td>\n";
-	} else {
-		# Convert total connection time into human-readable format.
-		my $total_time = &General::format_time($row[1]);
+		if ($cgiparams{'CONNECTION_NAME'}) {
+			print "<td width='20%' $col>$connection_open_time</td>\n";
+			print "<td width='20%' $col>$connection_close_time</td>\n";
+			print "<td width='10%' $col>$connection_bytes_recieved</td>\n";
+			print "<td width='10%' $col>$connection_bytes_sent</td>\n";
+		} else {
+			# Convert total connection time into human-readable format.
+			my $total_time = &General::format_time($row[1]);
 
-		print "<td $col>$total_time</td>\n";
-	}
+			print "<td $col>$total_time</td>\n";
+		}
 
-	print "</tr>\n";
+		print "</tr>\n";
 
-	# Increase lines count.
-	$lines++;
+		# Increase lines count.
+		$lines++;
+	}
 }
 
 # If nothing has been fetched, the amount of lines is still zero.
-# In this case display a hint about no data.
+# In this case display a hint about no data.	
 unless ($lines) {
 	print "<tr><td bgcolor='$color{'color22'}' colspan='5' align='center'>$Lang::tr{'no entries'}</td></tr>\n";
 }