class SpiderGazelle::Signaller::SignalParser

Public Class Methods

new() click to toggle source
# File lib/spider-gazelle/signaller/signal_parser.rb, line 9
def initialize
    @tokenizer = ::UV::BufferedTokenizer.new({
        indicator: "\x02",
        delimiter: "\x03"
    })
    @logger = Logger.instance
    @launchctrl = LaunchControl.instance
end

Public Instance Methods

process(msg) click to toggle source
# File lib/spider-gazelle/signaller/signal_parser.rb, line 18
def process(msg)
    @tokenizer.extract(msg).each do |cmd|
        perform cmd
    end
end
signal(msg) click to toggle source

These are signals that can be sent While the remote client is untrusted

# File lib/spider-gazelle/signaller/signal_parser.rb, line 26
def signal(msg)
    result = nil
    @tokenizer.extract(msg).each do |request|
        result = check request
    end
    result
end

Protected Instance Methods

check(cmd) click to toggle source
# File lib/spider-gazelle/signaller/signal_parser.rb, line 47
def check(cmd)
    comp = cmd.split(' ', 2)
    request = comp[0].to_sym
    data = comp[1]

    case request
    when :validate
        if data == @launchctrl.password
            return :validated
        else
            return :close_connection
        end
    when :reload
    when :Logger
        perform cmd
    end

    request
end
perform(cmd) click to toggle source
# File lib/spider-gazelle/signaller/signal_parser.rb, line 38
def perform(cmd)
    begin
        klass, action, data = cmd.split(' ', 3)
        SpiderGazelle.const_get(klass).__send__(action, data)
    rescue => e
        @logger.print_error(e, 'Error executing command in SignalParser')
    end
end