Frontend: Implement simple log viewer
This commit is contained in:
parent
242cad6291
commit
0a6e4d1d15
42
frontend.pm
42
frontend.pm
@ -310,7 +310,6 @@ sub sendTemplate {
|
|||||||
my $response = getBaseResponse(200, "OK");
|
my $response = getBaseResponse(200, "OK");
|
||||||
$response.="Content-Length: $length\r\n\r\n";
|
$response.="Content-Length: $length\r\n\r\n";
|
||||||
$response.=$content;
|
$response.=$content;
|
||||||
print("$response\n");
|
|
||||||
$aClient->send($response);
|
$aClient->send($response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,7 +337,7 @@ sub handlePath {
|
|||||||
when("/view_logs") {
|
when("/view_logs") {
|
||||||
my $channelID = $aRequest->{"path"}{"parameters"}{"channel"};
|
my $channelID = $aRequest->{"path"}{"parameters"}{"channel"};
|
||||||
if(!defined($channelID)) {
|
if(!defined($channelID)) {
|
||||||
sendBadRequest($aClient, "view_log requires channel URL parameter");
|
sendBadRequest($aClient, "view_logs requires channel URL parameter");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,12 +361,49 @@ sub handlePath {
|
|||||||
|
|
||||||
my $table = "";
|
my $table = "";
|
||||||
foreach my $entry (@entries) {
|
foreach my $entry (@entries) {
|
||||||
$table.="<tr><td><a href=\"view_log?channel=$channelID\">$entry</a></td></tr>";
|
$table.="<tr><td><a href=\"view_log?channel=$channelID&file=$entry\">$entry</a></td></tr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
sendTemplate("templates/view_logs.html", $aClient, {"channel"=>$channelName, "server"=>$serverName, "logs"=>$table});
|
sendTemplate("templates/view_logs.html", $aClient, {"channel"=>$channelName, "server"=>$serverName, "logs"=>$table});
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
when("/view_log") {
|
||||||
|
my $channelID = $aRequest->{"path"}{"parameters"}{"channel"};
|
||||||
|
if(!defined($channelID)) {
|
||||||
|
sendBadRequest($aClient, "view_log requires channel URL parameter");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
my $logFile = $aRequest->{"path"}{"parameters"}{"file"};
|
||||||
|
if(!defined($channelID)) {
|
||||||
|
sendBadRequest($aClient, "view_log requires file URL parameter");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $query = $aConnection->prepare(qq(select channels.name, servers.name from channels inner join servers on channels.server_id=servers.id where channels.id=?;));
|
||||||
|
$query->execute($channelID);
|
||||||
|
my @row = $query->fetchrow_array();
|
||||||
|
if(scalar(@row)==0) {
|
||||||
|
sendBadRequest($aClient, "Unknown channel with ID $channelID");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
my $channelName = $row[0];
|
||||||
|
my $serverName = $row[1];
|
||||||
|
my $logFilePath = "logs/".$serverName."/".$channelName."/".$logFile;
|
||||||
|
|
||||||
|
my $result = open(my $file, "<", $logFilePath);
|
||||||
|
if(!$result) {
|
||||||
|
sendBadRequest($aClient, "No log file $logFile for channel $channelName at $serverName");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
my $content = readFullFile($file);
|
||||||
|
close($file);
|
||||||
|
|
||||||
|
my $response = getBaseResponse(200, "OK");
|
||||||
|
$response.="Content-Type: text/plain;charset=utf-8\r\n";
|
||||||
|
$response.="Content-Length: ".length($content)."\r\n\r\n";
|
||||||
|
$response.=$content;
|
||||||
|
$aClient->send($response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user