class Kontejner::Server
Constants
- GOOGLE_SERVERS
- IN
Public Class Methods
new(domain:,docker:,ttl:)
click to toggle source
# File lib/kontejner/server.rb, line 10 def initialize(domain:,docker:,ttl:) @dns = RubyDNS::RuleBasedServer.new @logger = @dns.logger @logger.level = Logger::DEBUG @matcher = /(?<subdomain>[^.]+)\.#{domain}$/ @ttl = ttl @upstream = RubyDNS::Resolver.new(GOOGLE_SERVERS) @docker = Kontejner::Resolver.new(docker: docker) @logger.info("Docker Connection #{docker}") end
Public Instance Methods
run(options)
click to toggle source
# File lib/kontejner/server.rb, line 45 def run(options) EventMachine.run do trap("INT") do EventMachine.stop end @dns.run(options) end @dns.fire(:stop) end
start(**options)
click to toggle source
# File lib/kontejner/server.rb, line 25 def start(**options) @logger.debug("Matching #{@matcher}") @dns.match(@matcher, IN::A) do |t, match| ip = @docker.resolve(match[:subdomain]) if ip t.respond!(ip, ttl: @ttl) else t.fail! :NXDomain end end @dns.otherwise do |q| q.passthrough!(@upstream) end run(options) end