Commit ca4510a0 authored by Medicean's avatar Medicean

(Enhance: Database) 新增「检测」功能, 检测支持的数据库函数(目前仅 PHP 有效)

parent 31a9fddc
......@@ -10,6 +10,7 @@
### 数据管理
* 新增「检测」功能, 检测支持的数据库函数(目前仅 PHP 有效)
* 新增 php sqlsrv 连接方式, php5.3之后 mssql 默认不存在,可使用该类型连接 sqlserver >= 2008
> 如果直连shell本地sqlserver, host 部分填 localhost 或者 (local)
......
......@@ -5,5 +5,8 @@
module.exports = () => ({
info:
`Dim S:SET C=CreateObject("Scripting.FileSystemObject"):If Err Then:S="ERROR:// "&Err.Description:Err.Clear:Else:S=Server.Mappath(".")&chr(9):For Each D in C.Drives:S=S&D.DriveLetter&chr(58):Next:End If:Response.Write(S)`
`Dim S:SET C=CreateObject("Scripting.FileSystemObject"):If Err Then:S="ERROR:// "&Err.Description:Err.Clear:Else:S=Server.Mappath(".")&chr(9):For Each D in C.Drives:S=S&D.DriveLetter&chr(58):Next:End If:Response.Write(S)`,
probedb: // 检测数据库函数支持
``.replace(/\n\s+/g, ''),
})
......@@ -5,5 +5,8 @@
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);`
`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: // 检测数据库函数支持
``.replace(/\n\s+/g, ''),
})
......@@ -4,5 +4,6 @@
//
module.exports = () => ({
info: 'A'
info: 'A',
probedb: 'Z', // 检测数据库函数支持
})
......@@ -5,5 +5,10 @@
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;`
`$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','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");
}`.replace(/\n\s+/g, ''),
})
......@@ -522,6 +522,11 @@ module.exports = {
success: 'Delete column successfully',
error: 'Failed to delete column',
}
},
probedb: {
title: 'Detect database function support',
coltype: 'ConnType',
issupport: 'Support',
}
},
settings: {
......
......@@ -523,6 +523,11 @@ module.exports = {
success: '删除列成功',
error: '删除列失败',
}
},
probedb: {
title: '检测数据库函数支持',
coltype: '连接类型',
issupport: '状态',
}
},
settings: {
......
......@@ -83,7 +83,8 @@ class Database {
case 'edit':
this.drive.editConf();
break;
case 'check':
case 'check': // 探针检测支持的函数
this.checkprobe();
break;
}
});
......@@ -201,6 +202,64 @@ class Database {
return _win;
}
// 检测数据库函数支持
checkprobe() {
let that = this;
let win = that.createWin({
title: LANG['probedb']['title'],
width: 350,
height: 400,
});
const func_mapping = {
// PHP
'mysql_close': 'MYSQL',
'mysqli_close': 'MYSQLI',
'mssql_close': 'MSSQL',
'sqlsrv_close': 'SQLSRV',
'ora_close': 'ORACLE',
'ifx_close': 'INFORMIX',
'sqlite_close': 'SQLite',
'pg_close': 'PostgreSQL',
'dba_close': 'DBA',
'dbmclose': 'DBM',
'filepro_fieldcount': 'FilePro',
'sybase_close': 'SyBase',
}
let grid = win.attachGrid();
grid.clearAll();
grid.setHeader(`${LANG['probedb']['coltype']},${LANG['probedb']['issupport']}`);
grid.setColTypes("ro,ro");
grid.setColSorting('str,str');
grid.setColumnMinWidth(100, 50);
grid.setInitWidths("*");
grid.setEditable(false);
grid.init();
win.progressOn();
that.drive.core.request(
that.drive.core.base.probedb()
).then((ret) => {
let _data = ret['text'].split('\n');
let data_arr = [];
for (let i = 0; i < _data.length; i ++) {
let item = _data[i].split('\t');
if(item.length<2){continue;}
data_arr.push({
id: i+1,
data: [
func_mapping.hasOwnProperty(item[0]) ? func_mapping[item[0]] : item[0],
parseInt(item[1]) === 1 ? "√" : "×",
],
style: parseInt(item[1]) === 1 ? "background-color:#ADF1B9": "",
});
}
grid.parse({
'rows': data_arr
}, 'json');
win.progressOff();
}).catch((err)=>{
win.progressOff();
});
}
}
// export default Database;
......
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