blob: 167fc7706e5930ce458d0ab60c9d2144a1aa01b4 [file] [log] [blame]
#
# Monitor status of site-scan
#
=begin
The code checks the site-scan log file
Possible status level responses:
Danger - log contains unexpected content
Warning - log hasn't been updated within a day
Info - log is recent and contains only expected content
=end
require 'time'
def Monitor.site_scan(previous_status)
logdir = File.expand_path('../../www/logs')
logfile = File.join(logdir, 'site-scan')
log = File.read(logfile)
log.gsub! /^([-\w]+ )*https?:\S+ \w+\n/, ''
danger_period = 86_400 # one day
if not log.empty?
# Archive the log file
require 'fileutils'
archive = File.join(logdir,'archive')
FileUtils.mkdir(archive) unless File.directory?(archive)
file = File.basename(logfile)
FileUtils.copy logfile, File.join(archive, file + '.danger'), preserve: true
level = 'danger'
level = 'warning' if log.gsub(/.* error\n/, '').empty?
{
level: level,
data: log.split("\n"),
href: '../logs/site-scan'
}
elsif Time.now - File.mtime(logfile) > danger_period
{
level: 'warning',
data: "Last updated: #{File.mtime(logfile)}",
href: '../logs/site-scan'
}
else
{mtime: File.mtime(logfile).gmtime.iso8601, level: 'success'}
end
end
# for debugging purposes
if __FILE__ == $0
require_relative 'unit_test'
runtest('site_scan') # must agree with method name above
end