Sha256: 3b8dc22d9b8340d3f9c642cc8bb47b4e14db2d66ba8df12dfa38801d541fa854

Contents?: true

Size: 1015 Bytes

Versions: 1

Compression:

Stored size: 1015 Bytes

Contents

require 'ipaddr'

module Dyndnsd
  class Helper
    def self.fqdn_valid?(hostname, domain)
      return false if hostname.length < domain.length + 2
      return false if !hostname.end_with?(domain)
      name = hostname.chomp(domain)
      return false if !name.match(/^[a-zA-Z0-9_-]+\.$/)
      true
    end

    def self.ip_valid?(ip)
      IPAddr.new(ip)
      return true
    rescue ArgumentError
      return false
    end

    def self.user_allowed?(username, password, users)
      (users.key? username) && (users[username]['password'] == password)
    end

    def self.changed?(hostname, myips, hosts)
      # myips order is always deterministic
      ((!hosts.include? hostname) || (hosts[hostname] != myips)) && !myips.empty?
    end

    def self.span(operation, &block)
      span = OpenTracing.start_span(operation)
      span.set_tag('component', 'dyndnsd')
      span.set_tag('span.kind', 'server')
      begin
        block.call(span)
      ensure
        span.finish
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dyndnsd-2.0.0.rc1 lib/dyndnsd/helper.rb