Helper/Nix: constructRunCommandLogPath: return undef in case of an error

This allows us to give a web request to an invalid UUID a 404.
This commit is contained in:
Cole Helbling 2022-01-28 11:33:29 -08:00
parent 2c6487b8d7
commit e381751564
3 changed files with 11 additions and 6 deletions

View file

@ -538,7 +538,7 @@ sub runcommandlog :Local :Args(1) {
die if defined $tail && $tail !~ /^[0-9]+$/; die if defined $tail && $tail !~ /^[0-9]+$/;
my $runlog = $c->model('DB')->resultset('RunCommandLogs')->find({ uuid => $uuid }); my $runlog = $c->model('DB')->resultset('RunCommandLogs')->find({ uuid => $uuid });
my $logFile = constructRunCommandLogPath($runlog); my $logFile = constructRunCommandLogPath($runlog) or notFound($c, "RunCommandLog not found.");
if (-f $logFile) { if (-f $logFile) {
serveLogFile($c, $logFile, $tail); serveLogFile($c, $logFile, $tail);
return; return;

View file

@ -592,12 +592,17 @@ sub isLocalStore {
sub constructRunCommandLogPath { sub constructRunCommandLogPath {
my ($runlog) = @_; my ($runlog) = @_;
my $path = undef;
eval {
my $uuid = $runlog->uuid; my $uuid = $runlog->uuid;
my $hydra_path = Hydra::Model::DB::getHydraPath; my $hydra_path = Hydra::Model::DB::getHydraPath;
my $bucket = substr($uuid, 0, 2); my $bucket = substr($uuid, 0, 2);
return "$hydra_path/runcommand-logs/$bucket/$uuid"; $path = "$hydra_path/runcommand-logs/$bucket/$uuid";
};
return $path;
} }
1; 1;

View file

@ -163,7 +163,7 @@ sub buildFinished {
$runlog->started(); $runlog->started();
my $logPath = Hydra::Helper::Nix::constructRunCommandLogPath($runlog); my $logPath = Hydra::Helper::Nix::constructRunCommandLogPath($runlog) or die "RunCommandLog not found.";
my $dir = dirname($logPath); my $dir = dirname($logPath);
my $oldUmask = umask(); my $oldUmask = umask();