diff --git a/examples/google-force-safe-search/google-safe-search-domain-generator.rb b/examples/google-force-safe-search/google-safe-search-domain-generator.rb new file mode 100755 index 0000000..5932cbd --- /dev/null +++ b/examples/google-force-safe-search/google-safe-search-domain-generator.rb @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +# build google force safe search ruls for rubyDNS + +google_domains = `curl https://www.google.com/supported_domains 2>> /dev/null | sed "s/^.//g"`.split("\n") + +google_domains.each do | dom | + + puts "" + puts "#match #{dom}" + puts "match(/^#{dom}$/, IN::A) do |transaction|" + puts " transaction.respond!(Name.create('forcesafesearch.google.com'), resource_class: IN::CNAME)" + puts "end" + puts "match(/^www.#{dom}$/, IN::A) do |transaction|" + puts " transaction.respond!(Name.create('forcesafesearch.google.com'), resource_class: IN::CNAME)" + puts "end" + +end diff --git a/examples/google-force-safe-search/google-safe-search.rb b/examples/google-force-safe-search/google-safe-search.rb new file mode 100755 index 0000000..3511207 --- /dev/null +++ b/examples/google-force-safe-search/google-safe-search.rb @@ -0,0 +1,35 @@ +#!/usr/bin/env ruby +require 'rubydns' + +INTERFACES = [ + [:udp, "0.0.0.0", 5300], + [:tcp, "0.0.0.0", 5300], +] + +# Use upstream DNS for name resolution. +UPSTREAM = RubyDNS::Resolver.new([ + [:udp, "8.8.8.8", 53], + [:tcp, "8.8.8.8", 53] +]) + +$R = Resolv::DNS.new +Name = Resolv::DNS::Name +IN = Resolv::DNS::Resource::IN + +# Start the RubyDNS server +RubyDNS::run_server(INTERFACES) do + @logger.debug! + + #match google.com + match(/^google.com$/, IN::A) do |transaction| + transaction.respond!(Name.create('forcesafesearch.google.com'), resource_class: IN::CNAME) + end + match(/^www.google.com$/, IN::A) do |transaction| + transaction.respond!(Name.create('forcesafesearch.google.com'), resource_class: IN::CNAME) + end + + otherwise do |transaction| + transaction.passthrough!(UPSTREAM) + end +end +