discourse/lib/tasks/maxminddb.rake

31 lines
803 B
Ruby

require 'rubygems/package'
require 'zlib'
desc "downloads MaxMind's GeoLite2-City database"
task "maxminddb:get" do
def download_mmdb(name)
puts "Downloading MaxMindDb #{name}"
uri = URI("http://geolite.maxmind.com/download/geoip/database/#{name}.tar.gz")
tar_gz_archive = Net::HTTP.get(uri)
extractor = Gem::Package::TarReader.new(Zlib::GzipReader.new(StringIO.new(tar_gz_archive)))
extractor.rewind
extractor.each do |entry|
next unless entry.full_name.ends_with?(".mmdb")
filename = File.join(Rails.root, 'vendor', 'data', "#{name}.mmdb")
puts "Writing #{filename}..."
File.open(filename, "wb") do |f|
f.write(entry.read)
end
end
extractor.close
end
download_mmdb('GeoLite2-City')
download_mmdb('GeoLite2-ASN')
end