#!/usr/bin/ruby

require 'fileutils'

require 'steam/servers/goldsrc_server'
require 'steam/servers/master_server'

goldsrcservers = Array.new

[ # from Steam/config/MasterServer2.vdf
  ["69.28.158.131", "27011"],
  ["69.28.158.131", "27012"],
  ["208.64.200.117", "27011"],
  ["208.64.200.118", "27011"]
].shuffle.each do |goldsrcmasterserver|
  begin
    goldsrcservers = MasterServer.new(*goldsrcmasterserver).servers(MasterServer::REGION_ALL, "\\gamedir\\action")
    break # If we get to this line, it means we didn't hit any exceptions and may as well live with the response we got.
  rescue
    next  # If we get to this line, it means we hit an exception and need to try again on the next goldsrcmasterserver.
  end
end

if goldsrcservers.empty? then
  print "No servers!\n"
  exit 2;
end

goldsrcservers.each do |goldsrcserver|
  if info = GoldSrcServer.new(*goldsrcserver).server_info then
    unless File.exists? "/home/hlds/demos/servers/#{goldsrcserver[0]}"
      Dir.mkdir "/home/hlds/demos/servers/#{goldsrcserver[0]}"
    end
    unless File.exists? "/home/hlds/demos/servers/#{goldsrcserver[0]}/#{info[:server_port]}"
      Dir.mkdir "/home/hlds/demos/servers/#{goldsrcserver[0]}/#{info[:server_port]}"
    end
    FileUtils.touch "/home/hlds/demos/servers/#{goldsrcserver[0]}/#{info[:server_port]}/seen"
  end
end
