1
This commit is contained in:
parent
a14422870f
commit
49d5a27ab3
14
server/httpgate/client/app.js
Normal file
14
server/httpgate/client/app.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
const app = require('j7/app');
|
||||||
|
const event = require('j7/event');
|
||||||
|
const config = require('j7/config');
|
||||||
|
|
||||||
|
event.addListener(event.APP_INITIALIZED_EVENT, () => {
|
||||||
|
require('./metamgr').init();
|
||||||
|
require('./middlewares/factory').init();
|
||||||
|
require('./controllers/factory').init();
|
||||||
|
require('./models/factory').init();
|
||||||
|
require('./services/factory').init();
|
||||||
|
app.injectionSession(require('./session'));
|
||||||
|
app.listen(config('listen_port'));
|
||||||
|
});
|
||||||
|
app.init();
|
0
server/httpgate/client/constant.js
Normal file
0
server/httpgate/client/constant.js
Normal file
17
server/httpgate/client/controllers/factory.js
Normal file
17
server/httpgate/client/controllers/factory.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
const controllers = {};
|
||||||
|
|
||||||
|
function add(name) {
|
||||||
|
controllers[name] = require('./' + name);
|
||||||
|
controllers[name].init();
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
add('proxy');
|
||||||
|
}
|
||||||
|
|
||||||
|
function create(name) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
||||||
|
exports.create = create;
|
41
server/httpgate/client/controllers/proxy.js
Normal file
41
server/httpgate/client/controllers/proxy.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
const https = require('https');
|
||||||
|
const app = require('j7/app');
|
||||||
|
const utils = require('j7/utils');
|
||||||
|
const http = require('j7/http');
|
||||||
|
const serviceFactory = require('../services/factory');
|
||||||
|
|
||||||
|
async function get(session) {
|
||||||
|
const seqId = session.request('seq_id');
|
||||||
|
const targetUrl = session.request('target_url');
|
||||||
|
const cbUrl = session.request('cb_url');
|
||||||
|
const reqJson = session.requestToJson();
|
||||||
|
new Promise(async (resolve) => {
|
||||||
|
const params = utils.jsonDecode(session.request('params'));
|
||||||
|
const {err, data} = await http.get(targetUrl, params);
|
||||||
|
const rspJson = {
|
||||||
|
'errcode': 0,
|
||||||
|
'errmsg': '',
|
||||||
|
'seq_id': seqId,
|
||||||
|
'req_json': reqJson,
|
||||||
|
'data': data
|
||||||
|
};
|
||||||
|
if (err) {
|
||||||
|
rspJson['errcode'] = 1;
|
||||||
|
rspJson['errmsg'] = '' + err;
|
||||||
|
}
|
||||||
|
console.log('data', data);
|
||||||
|
console.log('rspJson:' + utils.jsonEncode(rspJson));
|
||||||
|
await http.get(cbUrl, rspJson);
|
||||||
|
});
|
||||||
|
session.rspOk();
|
||||||
|
};
|
||||||
|
|
||||||
|
async function post(session) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
app.registerHandler('Proxy', 'get', get);
|
||||||
|
app.registerHandler('Proxy', 'post', post);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
80
server/httpgate/client/metamgr.js
Normal file
80
server/httpgate/client/metamgr.js
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
const app = require('j7/app');
|
||||||
|
const utils = require('j7/utils');
|
||||||
|
const log = require('j7/log');
|
||||||
|
const metawrap = require('./metawrap');
|
||||||
|
|
||||||
|
const metaClasses = [];
|
||||||
|
|
||||||
|
const MT_CONFIG = 0;
|
||||||
|
|
||||||
|
function registerMetaClass(fileName, idx, primKey, wrapClass) {
|
||||||
|
metaClasses.push({
|
||||||
|
'fileName' : fileName,
|
||||||
|
'idx' : idx,
|
||||||
|
'primKey' : primKey,
|
||||||
|
'wrapClass': wrapClass,
|
||||||
|
'rawList' : [],
|
||||||
|
'rawHash' : {},
|
||||||
|
'wrapList' : [],
|
||||||
|
'wrapHash' : {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function load() {
|
||||||
|
metaClasses.forEach(function (metaClass) {
|
||||||
|
const json = utils.readJsonFromFile(metaClass['fileName']);
|
||||||
|
if (!json) {
|
||||||
|
throw new Error('读取配置' + metaClass['fileName'] + '失败');
|
||||||
|
}
|
||||||
|
if (Array.isArray(json)) {
|
||||||
|
metaClass['rawList'] = json;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
metaClass['rawList'].push(json);
|
||||||
|
}
|
||||||
|
let idx = 0;
|
||||||
|
metaClass['rawList'].forEach(function (item) {
|
||||||
|
const wrapOjb = new metawrap[metaClass['wrapClass']](item);
|
||||||
|
const wrapProxy = new Proxy(wrapOjb, wrapOjb._getHandler());
|
||||||
|
metaClass['wrapList'] = wrapProxy;
|
||||||
|
if (metaClass['primKey'] == '') {
|
||||||
|
metaClass['rawHash'][idx] = item;
|
||||||
|
metaClass['wrapHash'][idx] = wrapProxy;
|
||||||
|
} else {
|
||||||
|
metaClass['rawHash'][item[metaClass['primKey']]] = item;
|
||||||
|
metaClass['wrapHash'][item[metaClass['primKey']]] = wrapProxy;
|
||||||
|
}
|
||||||
|
++idx;
|
||||||
|
});
|
||||||
|
//log.debug(utils.jsonEncode(metaClass));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
let configDir = './config/';
|
||||||
|
if (utils.isOnlineEnv()) {
|
||||||
|
configDir = '../config/';
|
||||||
|
}
|
||||||
|
registerMetaClass(configDir + 'config.json',
|
||||||
|
MT_CONFIG,
|
||||||
|
'',
|
||||||
|
'Config'
|
||||||
|
);
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMetaClass(metaIdx) {
|
||||||
|
return metaIdx >= 0 && metaIdx < metaClasses.length ? metaClasses[metaIdx] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMetaByKey(metaIdx, key) {
|
||||||
|
const metaClass = getMetaClass(metaIdx);
|
||||||
|
return metaClass && key in metaClass['wrapHash'] ? metaClass['wrapHash'][key] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMetaList(metaIdx) {
|
||||||
|
const metaClass = getMetaClass(metaIdx);
|
||||||
|
return metaClass ? metaClass['rawList'] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
44
server/httpgate/client/metawrap.js
Normal file
44
server/httpgate/client/metawrap.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
const utils = require('j7/utils');
|
||||||
|
|
||||||
|
class BaseWrap {
|
||||||
|
|
||||||
|
constructor(json) {
|
||||||
|
this._json = json;
|
||||||
|
}
|
||||||
|
|
||||||
|
_getHandler() {
|
||||||
|
return {
|
||||||
|
get: (obj, prop) => {
|
||||||
|
if (prop in obj._json) {
|
||||||
|
let val = obj._json[prop];
|
||||||
|
if (utils.isArray(val)) {
|
||||||
|
return new Proxy(val, {
|
||||||
|
set: () => {
|
||||||
|
console.log(33333);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (utils.isObject(val)) {
|
||||||
|
return new Proxy(val, {
|
||||||
|
set: () => {
|
||||||
|
console.log(33333);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return prop in obj ? obj[prop] : null;
|
||||||
|
},
|
||||||
|
set: () => {
|
||||||
|
console.log(111111);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class Config extends BaseWrap {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.Config = Config;
|
10
server/httpgate/client/middlewares/authenticate.js
Normal file
10
server/httpgate/client/middlewares/authenticate.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const app = require('j7/app');
|
||||||
|
|
||||||
|
async function authenticate(session) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
app.addMiddleware('authenticate', authenticate);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
12
server/httpgate/client/middlewares/factory.js
Normal file
12
server/httpgate/client/middlewares/factory.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
const middlewares = {};
|
||||||
|
|
||||||
|
function add(name) {
|
||||||
|
middlewares[name] = require('./' + name);
|
||||||
|
middlewares[name].init();
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
add('authenticate');
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
5
server/httpgate/client/models/factory.js
Normal file
5
server/httpgate/client/models/factory.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
function init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
43
server/httpgate/client/package-lock.json
generated
Normal file
43
server/httpgate/client/package-lock.json
generated
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"name": "httpproxy",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "httpproxy",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"dependencies": {
|
||||||
|
"j7": "file:../../third_party/j7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"../../third_party/j7": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^0.26.1",
|
||||||
|
"crc-32": "^1.2.1",
|
||||||
|
"express": "^4.17.2",
|
||||||
|
"mysql": "~2.18.1",
|
||||||
|
"querystring": "^0.2.1",
|
||||||
|
"urlencode": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/j7": {
|
||||||
|
"resolved": "../../third_party/j7",
|
||||||
|
"link": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"j7": {
|
||||||
|
"version": "file:../../third_party/j7",
|
||||||
|
"requires": {
|
||||||
|
"axios": "^0.26.1",
|
||||||
|
"crc-32": "^1.2.1",
|
||||||
|
"express": "^4.17.2",
|
||||||
|
"mysql": "~2.18.1",
|
||||||
|
"querystring": "^0.2.1",
|
||||||
|
"urlencode": "^1.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
server/httpgate/client/package.json
Normal file
10
server/httpgate/client/package.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "httpgate_cli",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {},
|
||||||
|
"dependencies": {
|
||||||
|
"j7": "file:../../third_party/j7"
|
||||||
|
}
|
||||||
|
}
|
13
server/httpgate/client/services/baseservice.js
Normal file
13
server/httpgate/client/services/baseservice.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
class BaseService {
|
||||||
|
|
||||||
|
constructor(session) {
|
||||||
|
this.session = session;
|
||||||
|
}
|
||||||
|
|
||||||
|
getSession() {
|
||||||
|
return this.session;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = BaseService;
|
24
server/httpgate/client/services/factory.js
Normal file
24
server/httpgate/client/services/factory.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
const channelDef = require('j7/channel')
|
||||||
|
const services = {};
|
||||||
|
|
||||||
|
function add(clsNames, modName) {
|
||||||
|
const modClass = require('./' + modName);
|
||||||
|
clsNames.forEach((clsName) => {
|
||||||
|
services[clsName] = {
|
||||||
|
'clsName': clsName,
|
||||||
|
'modName': modName,
|
||||||
|
'class': modClass
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function create(name, session) {
|
||||||
|
const module = services[name];
|
||||||
|
return new module['class'](session);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.init = init;
|
||||||
|
exports.create = create;
|
50
server/httpgate/client/session.js
Normal file
50
server/httpgate/client/session.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
const utils = require('j7/utils');
|
||||||
|
const app = require('j7/app');
|
||||||
|
|
||||||
|
class Session {
|
||||||
|
|
||||||
|
constructor(req, rsp) {
|
||||||
|
this.req = req;
|
||||||
|
this.rsp = rsp;
|
||||||
|
this.nowTime = utils.getUtcTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
getNowTime() {
|
||||||
|
return this.nowTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
getNowDaySeconds() {
|
||||||
|
return this.getNowDaySeconds(this.getNowTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
getDaySeconds(utcTime) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
rspErr(errCode, errMsg) {
|
||||||
|
utils.rspErr(this.rsp, errCode, errMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
rspOk() {
|
||||||
|
utils.rspOk(this.rsp);
|
||||||
|
}
|
||||||
|
|
||||||
|
rspData(data) {
|
||||||
|
utils.rspData(this.rsp, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
dieErr(errCode, errMsg) {
|
||||||
|
this.rspErr(errCode, errMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
request(name, defVal = null) {
|
||||||
|
return name in this.req.query ? this.req.query[name] : defVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
requestToJson() {
|
||||||
|
return utils.jsonEncode(this.req.query);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Session;
|
Loading…
x
Reference in New Issue
Block a user