Last active
October 4, 2018 20:06
-
-
Save donpdonp/07bcb50f4f61680962d3 to your computer and use it in GitHub Desktop.
oldgluon vm admin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Gluon | |
class VM | |
def dispatch(msg) | |
method = msg['method'] | |
params = msg['params'] | |
if method == 'irc.privmsg' && params.has_key?('nick') | |
if /^vm$/.match(params['message']) | |
response = "usage: vm list|add <name> <url>|reload <name>|del <name>" | |
Neur0n.send({method: "irc.privmsg", params: {irc_session_id: params['irc_session_id'], | |
channel: params['channel'], | |
message: response}}) | |
end | |
cmd_match = /^vm\s+(\w+)(\s+(.*))?/.match(params['message']) | |
if cmd_match | |
cmd = cmd_match[1] | |
cparams = cmd_match[3] ? cmd_match[3].split() : [] | |
case cmd | |
when 'list' | |
do_list(params, cparams) | |
when 'reload' | |
do_reload(params, cparams) | |
when 'add' | |
do_add(params, cparams) | |
when 'del' | |
do_del(params, cparams) | |
end | |
end | |
end | |
end | |
def do_list(params, cparams) | |
Neur0n.send({id: Neur0n.newId, method: "vm.list"}, params) | |
Neur0n.send({method: "irc.privmsg", params: {irc_session_id: params['irc_session_id'], | |
channel: params['channel'], | |
message: "working on vm list."}}) | |
return | |
end | |
def resp_list(msg, context) | |
vms = msg['result'].values.map{|v| "#{v['name']}"}.join(', ') | |
Neur0n.send({method: "irc.privmsg", params: {irc_session_id: context['irc_session_id'], | |
channel: context['channel'], | |
message: "vm list: #{vms}"}}) | |
return | |
end | |
def do_add(params, cparams) | |
add_params = {name: cparams[0], | |
url: cparams[1]} | |
puts "raw dbg #{add_params}" | |
Neur0n.send({id: Neur0n.newId, | |
method: "vm.add", | |
params: add_params}, | |
params) | |
response = "working on vm add. #{params} #{cparams}" | |
Neur0n.send({method: "irc.privmsg", params: {irc_session_id: params['irc_session_id'], | |
channel: params['channel'], | |
message: response}}) | |
return | |
end | |
def do_del(params, cparams) | |
Neur0n.send({id: Neur0n.newId, method: "vm.del"}, params) | |
Neur0n.send({method: "irc.privmsg", params: {irc_session_id: params['irc_session_id'], | |
channel: params['channel'], | |
message: "working on vm del. #{params} #{cparams}"}}) | |
return | |
end | |
def do_reload(params, cparams) | |
Neur0n.send({id: Neur0n.newId, method: "vm.reload", | |
params: {name: cparams[0]}}, | |
params) | |
Neur0n.send({method: "irc.privmsg", params: {irc_session_id: params['irc_session_id'], | |
channel: params['channel'], | |
message: "working on vm reload. #{params} #{cparams}"}}) | |
return | |
end | |
end | |
end | |
module Neur0n | |
@@mqueue = {} | |
@@client = Gluon::VM.new | |
def self.dispatch(msg) | |
id = msg['id'] | |
if id && msg['result'] | |
q = @@mqueue[id] | |
if q | |
@@mqueue.delete(q) | |
@@client.resp_list(msg, q[:context]) | |
end | |
else | |
@@client.dispatch(msg) | |
end | |
end | |
def self.send(msg, context = nil) | |
if msg[:id] | |
@@mqueue[msg[:id]] = {msg: msg, context: context} | |
end | |
puts "vm to_s #{msg.to_s}" | |
puts "vm stringify #{JSON.generate(msg)}" | |
emit(msg) | |
end | |
def self.newId | |
(Math.rand*(36**3)).to_i.to_s(36) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment