class NSCA::Server

Attributes

iv_key[R]
packet_version[R]
password[R]
server[R]
xor_iv_key[R]
xor_password[R]

Public Class Methods

new(*args) click to toggle source
# File lib/nsca/server.rb, line 6
def initialize *args
        opts = {}
        opts = args.pop.dup  if args.last.is_a? Hash
        opts[:host] ||= opts[:hostname]
        opts[:serv] ||= opts[:server]
        opts[:pass] ||= opts[:password]

        case args[0]
        when Integer
                opts[:port] = args[0]
                opts[:host] ||= args[1]
        when IO
                opts[:serv] = args[0]
        end

        @packet_version = opts[:packet_version] || PacketV3
        @iv_key = (opts[:iv_key] || SecureRandom.random_bytes( 128)).to_s
        raise ArgumentError, "Key must be 128 bytes long"  unless 128 == @iv_key.length
        @password = opts[:pass].to_s
        @server = if opts[:serv].is_a?( TCPServer) or opts[:serv].is_a?( UNIXServer)
                        opts[:serv]
                elsif opts[:port].is_a? Integer
                        TCPServer.new *[opts[:host], opts[:port]].compact
                else
                        raise ArgumentError, "Server or port-number expected"
                end
end

Public Instance Methods

accept() click to toggle source
# File lib/nsca/server.rb, line 34
def accept() Connection.new @server.accept, self end
close() click to toggle source
# File lib/nsca/server.rb, line 35
def close() @server.close end
each() { |conn| ... } click to toggle source
# File lib/nsca/server.rb, line 37
def each &block
        return Enumerator.new( self)  unless block_given?
        while conn = accept
                yield conn
        end
end