#!/usr/bin/env ruby
require 'bundler/setup'
require 'sinatra'
require 'yaml'
require 'thin' if $PROGRAM_NAME == __FILE__
require_relative 'init'
require_relative 'report'
$config = YAML.load(File.read(SOURCES))
$owners = ($config['relays'] + $config['jetstreams']).map { |x| x.is_a?(Hash) ? [x['host'], x] : [x, nil] }.then { Hash[it] }
helpers do
def format_num(n)
n.to_s.reverse.gsub(/(\d\d\d(?!$))/, "\\1,").reverse
end
def owner_link(report)
if data = $owners[report.host]
if data['owner'] && data['owner_link']
%(#{data['owner']})
elsif data['owner'].to_s.start_with?('@')
%(#{data['owner']})
elsif data['owner']
data['owner']
else
nil
end
end
end
end
get '/' do
@last_test = Report.maximum(:start_time)
if @last_test
@reports = Report.where(start_time: @last_test).order('users DESC, connected DESC').to_a
@max_users = @reports.first.users
end
erb :index
end