#!/usr/bin/env ruby
require "wmap"
require "optparse"

# program command line options
options = {:data_dir => nil, :target => nil, :verbose => false}
parser = OptionParser.new do|opts|
	opts.banner = Wmap.banner
	opts.on('-d', '--data_dir data_dir', 'Web Mapper local cache data directory') do |data_dir|
		options[:data_dir] = data_dir;
	end
	opts.on('-t', '--target target', 'Web Mapper target') do |target|
		options[:target] = target;
	end
	opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
		options[:verbose] = v;
	end
	opts.on('-h', '--help', 'Displays Help') do
		puts opts
		exit 0
	end
end
parser.parse!

# print program banner
puts Wmap.banner
# print_usage unless options[:target]

# Preparing - check out the working logs directory
if options[:data_dir]
	# Log to the instance running directory
	Log_dir = Pathname.new(options[:data_dir]).join('logs')
else
	# Log the command entry
	Log_dir=Pathname.new(Gem.loaded_specs['wmap'].full_gem_path).join('logs')
end
Dir.mkdir(Log_dir) unless Dir.exist?(Log_dir)
Wmap.wlog("Execute the command: trust #{options[:target]}","trust",Log_dir+"wmap.log")

dt=Wmap::DomainTracker.instance
ct=Wmap::CidrTracker.new
if options[:data_dir]
	dt.verbose=options[:verbose]
	dt.data_dir = options[:data_dir]
	dt.domains_file = dt.data_dir + "/" + "domains"
	dt.load_domains_from_file(dt.domains_file)
	ct.verbose=options[:verbose]
	ct.data_dir = options[:data_dir]
	ct.cidr_seeds = ct.data_dir + "/" + "cidrs"
	ct.load_cidr_blks_from_file(ct.cidr_seeds)
end

abort "Incorrect program argument! Proper usage: trust [domain | netblock]" unless (dt.is_fqdn?(options[:target]) || ct.is_cidr?(options[:target]))

puts "Start the baptizing process ..."

# Add entry into the local repository

if dt.is_domain?(options[:target])
	result=dt.add(options[:target])
	unless result.nil?
		dt.save!
		abort "Domain #{options[:target]} is successfully baptized!"
	end
end
dt=nil

if ct.is_cidr?(options[:target])
	result=ct.add(options[:target])
	unless result.nil?
		ct.save!
		abort "Net block #{options[:target]} is successfully baptized!"
	end
end
ct=nil