# vim: set noet sw=2 ts=2 sts=2: require 'rack' require_relative 'dnsbl_exporter' require 'yaml' DnsblCollector.load_config './config.yml' run lambda {|env| begin req = Rack::Request.new env case req.path when '/metrics' collector = DnsblCollector.new target = begin target = IPAddr.new req.params['target'] rescue IPAddr::AddressFamilyError return [400, {"Content-Type" => "text/plain"}, ["Valid target-IP-Address expected.\n"]] end collector.collect target [200, {"Content-Type" => "text/plain"}, [ Prometheus::Client::Formats::Text.marshal( collector.registry), Prometheus::Client::Formats::Text.marshal( DnsblCollector.registry), ]] else [404, {"Content-Type" => "text/plain"}, ["Not found.\nYou want to try /metrics?\n"]] end rescue STDERR.puts "#$! (#{$!.class})", $!.backtrace [500, {"Content-Type" => "text/plain"}, ["Server-error.\n"]] end }