Files
metasploit-gs/lib/msf/core/modules/external/message.rb
T
2018-01-24 17:20:03 -06:00

45 lines
884 B
Ruby

# -*- coding: binary -*-
require 'msf/core/modules/external'
require 'base64'
require 'json'
require 'securerandom'
class Msf::Modules::External::Message
attr_reader :method
attr_accessor :params, :id
def self.from_module(j)
if j['method']
m = self.new(j['method'].to_sym)
m.params = j['params']
m
elsif j['response']
m = self.new(:reply)
m.params = j['response']
m.id = j['id']
m
end
end
def initialize(m)
self.method = m
self.params = {}
self.id = Base64.strict_encode64(SecureRandom.random_bytes(16))
end
def to_json
params =
if self.params.respond_to? :to_nested_values
self.params.to_nested_values
else
self.params.to_h
end
JSON.generate({jsonrpc: '2.0', id: self.id, method: self.method, params: params})
end
protected
attr_writer :method
end