Compare commits

...

4 Commits

Author SHA1 Message Date
a20e0004d2
Update testloader.js
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
2024-07-01 01:46:54 +09:00
c0e2b7731a
Update catproxy.js 2024-07-01 01:29:24 +09:00
2f974727d6
Update jsonrpc2.js 2024-07-01 01:27:51 +09:00
c91e01e13d
Update and rename caterpillar.js to catproxy.js 2024-07-01 00:53:58 +09:00
3 changed files with 51 additions and 27 deletions

View File

@ -1,14 +1,11 @@
// caterpillar.js
// Integration with [Caterpillar Proxy](https://github.com/gnh1201/caterpillar) project
// catproxy.js
// Caterpillar Proxy Integration for WelsonJS framework
// https://github.com/gnh1201/welsonjs
// https://github.com/gnh1201/caterpillar
var JSONRPC2 = require("lib/jsonrpc2");
function Caterpillar(url) {
var rpc = JSONRPC2.create(url);
var env = {
"target": "http://localhost/",
"method": ""
};
function CatProxyClient(url) {
var env = {"target": url, "method": ""};
this.set_env = function(k, v) {
env[k] = v || null;
@ -36,11 +33,13 @@ function Caterpillar(url) {
}
}
this.exec = function() {
var args = arguments;
var args = Array.from(arguments);
var rpc = JSONRPC2.create(env.target);
var result;
if (env.method == "relay_mysql_query") {
var query = arguments.join(' ');
rpc.invoke(env.method, {
var query = args.join(' ');
result = rpc.invoke(env.method, {
"hostname": env.mysql_hostname,
"username": env.mysql_username,
"password": env.mysql_password,
@ -49,20 +48,22 @@ function Caterpillar(url) {
"charset": env.mysql_charset,
"query": query
}, null);
return;
} else {
result = rpc.invoke(env.method, {}, null);
}
rpc.invoke(env.method, {}, null);
return result;
}
}
function create(url) {
return new Caterpillar(url);
return new CatProxyClient(url);
}
exports.create = create;
exports.CatProxyClient = CatProxyClient;
exports.VERSIONINFO = "Caterpillar Proxy Integration (caterpillar.js) version 0.1.1";
exports.VERSIONINFO = "Caterpillar Proxy Integration (caterpillar.js) version 0.1.3";
exports.AUTHOR = "abuse@catswords.net";
exports.global = global;
exports.require = global.require;

View File

@ -1,16 +1,23 @@
// jsonrpc2.js
// JSON-RPC 2.0 wrapper for WelsonJS framework
// Namhyeon Go <abuse@catswords.net>
// https://github.com/gnh1201/welsonjs
var HTTP = require("lib/http");
function jsonrpc2(url) {
this.url = url;
this.userAgent = "php-httpproxy/0.1.5 (Client; WelsonJS; abuse@catswords.net)";
this.setUserAgent = function(agent) {
this.userAgent = agent;
};
this.invoke = function(method, params, id) {
var result;
var response = HTTP.create("MSXML")
.setContentType("application/json")
.setDataType("json")
.setRequestBody(encode(method, params, id))
.setUserAgent(this.userAgent)
.setRequestBody(wrap(method, params, id))
.open("POST", this.url)
.send()
.responseBody
@ -29,23 +36,23 @@ function jsonrpc2(url) {
}
}
function encode(method, params, id) {
return JSON.stringify({
function wrap(method, params, id) {
return {
"jsonrpc": "2.0",
"method": method,
"params": params,
"id": id
});
};
}
function create(url) {
return new jsonrpc2(url);
}
exports.encode = encode;
exports.wrap = wrap;
exports.create = create;
exports.VERSIONINFO = "JSON-RPC 2.0 Interface (jsonrpc2.js) version 0.1.2";
exports.VERSIONINFO = "JSON-RPC 2.0 wrapper (jsonrpc2.js) version 0.1.4";
exports.AUTHOR = "abuse@catswords.net";
exports.global = global;
exports.require = global.require;

View File

@ -971,6 +971,22 @@ var test_implements = {
"domparser_test": function() {
console.log(typeof DOMParser);
},
// https://github.com/gnh1201/caterpillar
"catproxy_test": function() {
var client = require('lib/catproxy');
function main(args) {
var worker = client.create("http://locahost:5555");
worker.set_method("relay_mysql_query");
worker.set_env("mysql_username", "adminer");
worker.set_env("mysql_password", "changeme");
worker.set_env("mysql_database", "dummydb");
var result = worker.exec("select * from authors limit 3");
console.log(JSON.stringify(result));
}
}
};