welsonjs/lib/catproxy.js

67 lines
1.9 KiB
JavaScript

// catproxy.js
// Integration with [Caterpillar Proxy](https://github.com/gnh1201/caterpillar) project
// https://github.com/gnh1201/welsonjs
var JSONRPC2 = require("lib/jsonrpc2");
function CatProxyClient(url) {
var env = {"target": url, "method": ""};
this.set_env = function(k, v) {
env[k] = v || null;
};
this.set_default_env = function(_env) {
for (k in _env) {
if (!(k in env)) {
env[k] = _env[k];
}
}
};
this.set_method = function(method) {
this.set_env("method", method);
if (env.method == "relay_mysql_query") {
this.set_default_env({
"mysql_hostname": "localhost",
"mysql_username": "root",
"mysql_password": null,
"mysql_database": null,
"mysql_port": "3306",
"mysql_charset": "utf8"
});
return;
}
}
this.exec = function() {
var args = arguments;
var rpc = JSONRPC2.create(env.target);
if (env.method == "relay_mysql_query") {
var query = arguments.join(' ');
rpc.invoke(env.method, {
"hostname": env.mysql_hostname,
"username": env.mysql_username,
"password": env.mysql_password,
"database": env.mysql_database,
"port": env.mysql_port,
"charset": env.mysql_charset,
"query": query
}, null);
return;
}
rpc.invoke(env.method, {}, null);
}
}
function create(url) {
return new CatProxyClient(url);
}
exports.create = create;
exports.CatProxyClient = CatProxyClient;
exports.VERSIONINFO = "Caterpillar Proxy Integration (caterpillar.js) version 0.1.2";
exports.AUTHOR = "abuse@catswords.net";
exports.global = global;
exports.require = global.require;