#! /usr/bin/ruby1.8 begin eval "Proc.new { |a,&b| }" rescue SyntaxError => no_blocks_with_procs STDERR.print "mauveserver must have Ruby 1.8.7 or later, sorry (if you "+ "try, you'll get a SyntaxError trying to load one of its libraries)\n" exit 1 end require 'mauve/configuration' include Mauve configuration_file = ARGV[0] if configuration_file.nil? %w(/etc/mauvealert/mauveserver.conf mauveserver.conf).each do |configuration_file| break if File.exists?(configuration_file) end end unless File.exists?(configuration_file) if ARGV[0] STDERR.print "Configuration file #{configuration_file} not found" else STDERR.print "Syntax: #{$0} \n" end exit 1 end Configuration.current = ConfigurationBuilder.load(configuration_file) class RestartSignalReceived < Exception; end class TerminateSignalReceived < Exception; end %w(HUP).each do |sig| trap("HUP") do # this blows up if you do it twice in quick succession, but don't really # care about that case as it's only for log rotation. Configuration.current.logger.warn "#{sig} signal received. Restarting." Configuration.current.server.stop # # Reload configuration # Configuration.current = ConfigurationBuilder.load(configuration_file) Configuration.current.server.start end end %w(QUIT TERM INT).each do |sig| trap(sig) do Configuration.current.logger.warn "#{sig} signal received. Exiting." Configuration.current.server.stop exit 0 end end #begin Mauve::Server.instance.run #rescue SystemExit # Woo! # exit 0 #rescue Exception => ex # [ex.class.to_s, ex.to_s, ex.backtrace.join("\n")].each do |s| # Configuration.current.logger.fatal s # warn s # end # # exit 1 #end #