summaryrefslogtreecommitdiff
path: root/lib/killjoy/web.rb
blob: fb4fca0b9567c1bd1b541f9a7421c22bdf6d6c87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
require 'killjoy'
require 'sinatra'
require 'tilt/erb'

set :bind, '0.0.0.0'
set :port, 9292
set :views, settings.root + '/web/views'

Killjoy::Startup.new(Spank::Container.new).run do |container|
  Spank::IOC.bind_to(container)
  Spank::IOC.resolve(:session).execute("select * from system.hints;")
end
message_bus = Killjoy::MessageBus.new

helpers do
  def h(text)
    Rack::Utils.escape_html(text)
  end
end

get '/' do
  @logs = Killjoy::LogLine.all
  erb :index
end

get '/ip/:ipaddress' do
  @ipaddress = IPAddr.new(params['ipaddress'])
  @logs = Killjoy::LogLine.from_ip(@ipaddress)
  erb :index
end

get '/ping' do
  message = Killjoy::LogLine.new(
    http_status: 200,
    http_verb: request["REQUEST_METHOD"],
    http_version: request["SERVER_PROTOCOL"],
    ipaddress: request["REMOTE_HOST"],
    timestamp: DateTime.now.to_time.to_i,
    url: request["PATH_INFO"],
    user_agent: request["HTTP_USER_AGENT"],
  )
  Killjoy::Publisher.new(message_bus).publish(message)

  "Hello World!"
end