class Dyndnsd::Helper

Public Class Methods

changed?(hostname, myips, hosts) click to toggle source

@param hostname [String] @param myips [Array] @param hosts [Hash] @return [Boolean]

# File lib/dyndnsd/helper.rb, line 39
def self.changed?(hostname, myips, hosts)
  # myips order is always deterministic
  ((!hosts.include? hostname) || (hosts[hostname] != myips)) && !myips.empty?
end
fqdn_valid?(hostname, domain) click to toggle source

@param hostname [String] @param domain [String] @return [Boolean]

# File lib/dyndnsd/helper.rb, line 10
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
ip_valid?(ip) click to toggle source

@param ip [String] @return [Boolean]

# File lib/dyndnsd/helper.rb, line 20
def self.ip_valid?(ip)
  IPAddr.new(ip)
  true
rescue ArgumentError
  false
end
span(operation, &block) click to toggle source

@param operation [String] @param block [Proc] @return [void]

# File lib/dyndnsd/helper.rb, line 47
def self.span(operation, &block)
  tracer = OpenTelemetry.tracer_provider.tracer(Dyndnsd.name, Dyndnsd::VERSION)
  tracer.in_span(
    operation,
    attributes: {'component' => 'dyndnsd'},
    kind: :server
  ) do |span|
    Dyndnsd.logger.debug "Creating span ID #{span.context.hex_span_id} for trace ID #{span.context.hex_trace_id}"
    block.call(span)
  rescue StandardError => e
    span.record_exception(e)
    raise e
  end
end
user_allowed?(username, password, users) click to toggle source

@param username [String] @param password [String] @param users [Hash] @return [Boolean]

# File lib/dyndnsd/helper.rb, line 31
def self.user_allowed?(username, password, users)
  (users.key? username) && (users[username]['password'] == password)
end