amahi/platform

View on GitHub
plugins/050-network/app/models/dns_ip_setting.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'resolv'

class DnsIpSetting < Setting
  validates :value, presence: true, format: { with: Resolv::IPv4::Regex }

  def self.dns_ips
    case self.get("dns")
    when "opendns"
      self.opendns
    when "google_dns"
      self.google_dns
    when "opennic"
      self.opennic
    when "cloudflare"
      self.cloudflare
    else
      self.custom_dns_ips
    end
  end

  def self.opendns
    %w(208.67.222.222 208.67.220.220)
  end

  def self.google_dns
    %w(8.8.8.8 8.8.4.4)
  end

  def self.opennic
    %w(173.230.156.28 23.90.4.6)
  end
  
  def self.cloudflare
    %w(1.1.1.1 1.0.0.1)
  end

  def self.custom_dns_ips
    [
      self.find_or_create_by(Setting::NETWORK, "dns_ip_1", "173.230.156.28"),
      self.find_or_create_by(Setting::NETWORK, "dns_ip_2", "23.90.4.6"),
    ].map(&:value)
  end
end