├── V1.0.0.4 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ ├── admin.log │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ ├── function │ │ └── functions.php │ └── cmd.class.php └── public │ └── cmd.css ├── V1.0.0.5 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ ├── github占位.txt │ │ │ └── admin.log │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ ├── function │ │ └── functions.php │ └── cmd.class.php └── public │ └── cmd.css ├── V1.0.0.6 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ └── github占位.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ ├── function │ │ └── functions.php │ └── cmd.class.php └── public │ └── cmd.css ├── V1.0.0.7 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ └── github占位.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ ├── 备份.php │ │ └── loo.php │ ├── function │ │ └── functions.php │ └── cmd.class.php └── public │ └── cmd.css ├── V1.0.0.8 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ └── github占位.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ ├── function │ │ └── functions.php │ └── cmd.class.php └── public │ └── cmd.css ├── V1.0.0.9 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ ├── admin.log │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ ├── 备份.php │ │ └── cd.php │ ├── function │ │ └── functions.php │ ├── post.class.php │ └── cmd.class.php └── public │ ├── codemirror │ ├── addon │ │ ├── display │ │ │ ├── fullscreen.css │ │ │ └── fullscreen.js │ │ ├── fold │ │ │ ├── foldgutter.css │ │ │ ├── comment-fold.js │ │ │ ├── brace-fold.js │ │ │ ├── foldgutter.js │ │ │ └── foldcode.js │ │ ├── hint │ │ │ ├── show-hint.css │ │ │ ├── css-hint.js │ │ │ ├── xml-hint.js │ │ │ └── javascript-hint.js │ │ └── edit │ │ │ └── matchbrackets.js │ ├── theme │ │ └── seti.css │ └── mode │ │ └── htmlmixed │ │ └── htmlmixed.js │ └── cmd.css ├── V1.0.1.1 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ ├── admin.log │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ ├── 备份.php │ │ └── cd.php │ ├── function │ │ └── functions.php │ ├── post.class.php │ └── cmd.class.php └── public │ ├── codemirror │ ├── addon │ │ ├── display │ │ │ ├── fullscreen.css │ │ │ └── fullscreen.js │ │ ├── fold │ │ │ ├── foldgutter.css │ │ │ ├── comment-fold.js │ │ │ ├── brace-fold.js │ │ │ ├── foldgutter.js │ │ │ └── foldcode.js │ │ ├── hint │ │ │ ├── show-hint.css │ │ │ ├── css-hint.js │ │ │ └── xml-hint.js │ │ └── edit │ │ │ └── matchbrackets.js │ ├── theme │ │ └── seti.css │ └── mode │ │ └── htmlmixed │ │ └── htmlmixed.js │ └── cmd.css ├── V1.0.1.2 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── github占位.txt │ │ ├── mysql_zip │ │ │ └── github占位.txt │ │ ├── user_cache │ │ │ └── github占位.txt │ │ ├── mysql_back2 │ │ │ └── github占位.txt │ │ ├── operation_log │ │ │ └── github占位.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ ├── function │ │ └── functions.php │ └── cmd.class.php └── public │ ├── codemirror │ ├── addon │ │ ├── display │ │ │ ├── fullscreen.css │ │ │ └── fullscreen.js │ │ ├── fold │ │ │ ├── foldgutter.css │ │ │ ├── comment-fold.js │ │ │ ├── brace-fold.js │ │ │ ├── foldgutter.js │ │ │ └── foldcode.js │ │ ├── hint │ │ │ ├── show-hint.css │ │ │ ├── css-hint.js │ │ │ └── xml-hint.js │ │ └── edit │ │ │ └── matchbrackets.js │ ├── theme │ │ └── seti.css │ └── mode │ │ └── htmlmixed │ │ └── htmlmixed.js │ └── cmd.css ├── V1.0.0.3 ├── cmd │ ├── config │ │ ├── mysql_back │ │ │ └── gitHub占位文件.txt │ │ ├── mysql_zip │ │ │ └── gitHub占位文件.txt │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ ├── function │ │ └── functions.php │ └── cmd.class.php └── public │ └── cmd.css ├── V1.0.0.2 ├── cmd │ ├── config │ │ ├── user │ │ │ ├── 123.juncmd │ │ │ └── admin.juncmd │ │ ├── operation_log │ │ │ └── admin.log │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ ├── function │ │ └── functions.php │ └── cmd.class.php ├── public │ └── cmd.css └── index.php ├── V1.0.0.1 ├── cmd │ ├── config │ │ ├── user │ │ │ └── admin.juncmd │ │ └── config.php │ ├── core │ │ ├── CmdInterface.php │ │ └── 备份.php │ └── cmd.class.php ├── public │ └── cmd.css ├── index.php └── README.md └── README.md /V1.0.0.4/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.4/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.4/cmd/config/operation_log/admin.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.5/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.5/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.6/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.6/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.7/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.7/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.8/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.8/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/config/operation_log/admin.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.1/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.1/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.1/cmd/config/operation_log/admin.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.2/cmd/config/mysql_back/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.2/cmd/config/mysql_zip/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.2/cmd/config/user_cache/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.3/cmd/config/mysql_back/gitHub占位文件.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.3/cmd/config/mysql_zip/gitHub占位文件.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.4/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.4/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.5/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.5/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.6/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.6/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.7/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.7/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.8/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.8/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.1/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.1/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.2/cmd/config/mysql_back2/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.1.2/cmd/config/operation_log/github占位.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /V1.0.0.2/cmd/config/user/123.juncmd: -------------------------------------------------------------------------------- 1 | 202cb962ac59075b964b07152d234b70 -------------------------------------------------------------------------------- /V1.0.0.1/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.2/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.3/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.4/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.5/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.6/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.7/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.8/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.9/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.1.1/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.1.2/cmd/config/user/admin.juncmd: -------------------------------------------------------------------------------- 1 | 21232f297a57a5a743894a0e4a801fc3 -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:40px;height:auto;z-index:9} -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:40px;height:auto;z-index:9} -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:40px;height:auto;z-index:9} -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker{color:blue;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"} -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker{color:blue;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"} -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker{color:blue;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | PHPCMD 命令行插件 2 | =============================================== 3 | 小黄牛 4 | ----------------------------------------------- 5 | 6 | ### 1731223728@qq.com 7 | 8 | + 当前最新版本 - V1.0.1.2 9 | 10 | + 作者 - 小黄牛 11 | 12 | + 邮箱 - 1731223728@qq.com 13 | 14 | 15 | ## 本次改版重要说明 16 | 17 | + 本次改版主要针对【cd】命令编辑文件保存时,新增了历史记录功能 18 | 19 | + 使用【cd 文件路径 -l】可以读取所有缓存记录,并点击打印出的列表中的 还原 和 删除,进行日常维护。 20 | 21 | 22 | ### 本次改版详细说明 23 | 24 | + 1、新增:遍历该文件的缓存历史记录,根据遍历出来的记录可点击还原与删除 25 | 26 | ``` 27 | cd 文件路径[必填] -l 28 | ``` -------------------------------------------------------------------------------- /V1.0.0.1/cmd/core/CmdInterface.php: -------------------------------------------------------------------------------- 1 | command line:>user log 123 |-|2017-05-08 19:22:45 9 | user log 123|-|2017-05-08 19:22:49 10 | user log 123|-|2017-05-08 19:23:02 11 | user log|-|2017-05-08 19:23:16 12 | user log|-|2017-05-08 19:23:38 13 | -------------------------------------------------------------------------------- /V1.0.0.1/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => '', 14 | 'DB_USER' => '', 15 | 'DB_PWD' => '', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | 20 | ]; -------------------------------------------------------------------------------- /V1.0.0.2/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => '', 14 | 'DB_USER' => '', 15 | 'DB_PWD' => '', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | 20 | ]; -------------------------------------------------------------------------------- /V1.0.0.7/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | ]; -------------------------------------------------------------------------------- /V1.0.0.8/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | ]; -------------------------------------------------------------------------------- /V1.0.0.9/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | ]; -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints{position: absolute; z-index: 999999999999999999; overflow: hidden; list-style: none; margin: 0; padding: 2px; -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); box-shadow: 2px 3px 5px rgba(0,0,0,.2); border-radius: 3px; border: 1px solid silver; background: white; font-size: 15px; font-family: '\5FAE\8F6F\96C5\9ED1'; max-height: 300px; overflow-y: auto;} 2 | .CodeMirror-hint{margin: 0; padding: 0 4px; border-radius: 2px; white-space: pre; color: black; cursor: pointer;} 3 | li.CodeMirror-hint-active{background: #08f; color: white;} -------------------------------------------------------------------------------- /V1.0.1.1/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | ]; -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints{position: absolute; z-index: 999999999999999999; overflow: hidden; list-style: none; margin: 0; padding: 2px; -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); box-shadow: 2px 3px 5px rgba(0,0,0,.2); border-radius: 3px; border: 1px solid silver; background: white; font-size: 15px; font-family: '\5FAE\8F6F\96C5\9ED1'; max-height: 300px; overflow-y: auto;} 2 | .CodeMirror-hint{margin: 0; padding: 0 4px; border-radius: 2px; white-space: pre; color: black; cursor: pointer;} 3 | li.CodeMirror-hint-active{background: #08f; color: white;} -------------------------------------------------------------------------------- /V1.0.1.2/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | ]; -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints{position: absolute; z-index: 999999999999999999; overflow: hidden; list-style: none; margin: 0; padding: 2px; -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); box-shadow: 2px 3px 5px rgba(0,0,0,.2); border-radius: 3px; border: 1px solid silver; background: white; font-size: 15px; font-family: '\5FAE\8F6F\96C5\9ED1'; max-height: 300px; overflow-y: auto;} 2 | .CodeMirror-hint{margin: 0; padding: 0 4px; border-radius: 2px; white-space: pre; color: black; cursor: pointer;} 3 | li.CodeMirror-hint-active{background: #08f; color: white;} -------------------------------------------------------------------------------- /V1.0.0.3/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | 20 | ]; -------------------------------------------------------------------------------- /V1.0.0.4/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | 20 | ]; -------------------------------------------------------------------------------- /V1.0.0.5/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | 20 | ]; -------------------------------------------------------------------------------- /V1.0.0.6/cmd/config/config.php: -------------------------------------------------------------------------------- 1 | 'mysql', 12 | 'DB_HOST' => 'localhost', 13 | 'DB_NAME' => 'test', 14 | 'DB_USER' => 'root', 15 | 'DB_PWD' => 'root', 16 | 'DB_PORT' => '3306', 17 | 'DB_CHARSET' => 'utf8', 18 | 'CD_PATH' => '../', 19 | 20 | ]; -------------------------------------------------------------------------------- /V1.0.0.2/cmd/function/functions.php: -------------------------------------------------------------------------------- 1 | command Eco:> 暂无该命令行扩展 - |-|2017-05-17 16:30:46 6 | |-|2017-05-17 16:30:56 7 | command Eco:> 暂无该命令行扩展 - |-|2017-05-17 16:30:57 8 | |-|2017-05-17 16:31:07 9 | command Eco:> 暂无该命令行扩展 - |-|2017-05-17 16:31:07 10 | asd|-|2017-05-17 16:31:14 11 | asd|-|2017-05-17 16:31:24 12 | asd|-|2017-05-17 16:31:33 13 | asd|-|2017-05-17 16:31:44 14 | |-|2017-05-17 16:32:20 15 | command Eco:> 暂无该命令行扩展 - |-|2017-05-17 16:32:21 16 | |-|2017-05-17 16:32:38 17 | |-|2017-05-17 16:32:49 18 | asd|-|2017-05-17 16:32:52 19 | |-|2017-05-17 16:33:06 20 | conf -asd|-|2017-05-17 16:33:22 21 | conf -l|-|2017-05-17 16:33:25 22 | conf-asd|-|2017-05-17 16:35:22 23 | conf -asd|-|2017-05-17 16:35:25 24 | 阿萨|-|2017-05-17 16:39:38 25 | 阿萨阿萨德|-|2017-05-17 16:39:39 26 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/display/fullscreen.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){CodeMirror.defineOption("fullScreen",false,function(cm,val,old){if(old==CodeMirror.Init){old=false}if(!old==!val){return}if(val){setFullscreen(cm)}else{setNormal(cm)}});function setFullscreen(cm){var wrap=cm.getWrapperElement();cm.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:wrap.style.width,height:wrap.style.height};wrap.style.width="";wrap.style.height="auto";wrap.className+=" CodeMirror-fullscreen";document.documentElement.style.overflow="hidden";cm.refresh()}function setNormal(cm){var wrap=cm.getWrapperElement();wrap.className=wrap.className.replace(/\s*CodeMirror-fullscreen\b/,"");document.documentElement.style.overflow="";var info=cm.state.fullScreenRestore;wrap.style.width=info.width;wrap.style.height=info.height;window.scrollTo(info.scrollLeft,info.scrollTop);cm.refresh()}}); -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/addon/display/fullscreen.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){CodeMirror.defineOption("fullScreen",false,function(cm,val,old){if(old==CodeMirror.Init){old=false}if(!old==!val){return}if(val){setFullscreen(cm)}else{setNormal(cm)}});function setFullscreen(cm){var wrap=cm.getWrapperElement();cm.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:wrap.style.width,height:wrap.style.height};wrap.style.width="";wrap.style.height="auto";wrap.className+=" CodeMirror-fullscreen";document.documentElement.style.overflow="hidden";cm.refresh()}function setNormal(cm){var wrap=cm.getWrapperElement();wrap.className=wrap.className.replace(/\s*CodeMirror-fullscreen\b/,"");document.documentElement.style.overflow="";var info=cm.state.fullScreenRestore;wrap.style.width=info.width;wrap.style.height=info.height;window.scrollTo(info.scrollLeft,info.scrollTop);cm.refresh()}}); -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/addon/display/fullscreen.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){CodeMirror.defineOption("fullScreen",false,function(cm,val,old){if(old==CodeMirror.Init){old=false}if(!old==!val){return}if(val){setFullscreen(cm)}else{setNormal(cm)}});function setFullscreen(cm){var wrap=cm.getWrapperElement();cm.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:wrap.style.width,height:wrap.style.height};wrap.style.width="";wrap.style.height="auto";wrap.className+=" CodeMirror-fullscreen";document.documentElement.style.overflow="hidden";cm.refresh()}function setNormal(cm){var wrap=cm.getWrapperElement();wrap.className=wrap.className.replace(/\s*CodeMirror-fullscreen\b/,"");document.documentElement.style.overflow="";var info=cm.state.fullScreenRestore;wrap.style.width=info.width;wrap.style.height=info.height;window.scrollTo(info.scrollLeft,info.scrollTop);cm.refresh()}}); -------------------------------------------------------------------------------- /V1.0.0.1/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.2/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.3/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.4/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.5/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.6/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.7/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.8/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/post.class.php: -------------------------------------------------------------------------------- 1 | '02', 'data'=>'未登录命令行工具,请先登录' ) );exit; 20 | } 21 | $this->upd($_POST['content']); 22 | 23 | } 24 | 25 | /** 26 | * 保存提交的文件内容 27 | * @param string $content 提交的内容 28 | */ 29 | private function upd($content){ 30 | $res = file_put_contents($_SESSION['cmd_post_file'], $content); 31 | if(!$res) { 32 | echo json_encode( array('code'=>'01', 'data'=>'内容更新失败!' ) );exit; 33 | } 34 | echo json_encode( array('code'=>'00', 'data'=>'内容更新成功!' ) );exit; 35 | } 36 | } 37 | $str = new Post(); 38 | -------------------------------------------------------------------------------- /V1.0.0.1/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.2/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.3/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.4/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.5/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.6/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.7/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.8/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.1.1/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.1.2/cmd/core/备份.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | } 27 | 28 | public function Go(){ 29 | # 第四个参数,不管是不是中文,先过滤一遍 30 | if(!empty($this->command_data[3])){ 31 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 32 | } 33 | # 分支 34 | switch ($this->command_data[1]){ 35 | case 'add' : 36 | $res = $this->Add(); 37 | break; 38 | default : 39 | $res = [ 40 | 'code' => '01', 41 | 'data' => '暂无该操作类型', 42 | ]; 43 | } 44 | return $res; 45 | } 46 | 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/hint/css-hint.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"),require("../../mode/css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../../mode/css/css"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var pseudoClasses={link:1,visited:1,active:1,hover:1,focus:1,"first-letter":1,"first-line":1,"first-child":1,before:1,after:1,lang:1};CodeMirror.registerHelper("hint","css",function(cm){var cur=cm.getCursor(),token=cm.getTokenAt(cur);var inner=CodeMirror.innerMode(cm.getMode(),token.state);if(inner.mode.name!="css"){return}if(token.type=="keyword"&&"!important".indexOf(token.string)==0){return{list:["!important"],from:CodeMirror.Pos(cur.line,token.start),to:CodeMirror.Pos(cur.line,token.end)}}var start=token.start,end=cur.ch,word=token.string.slice(0,end-start);if(/[^\w$_-]/.test(word)){word="";start=end=cur.ch}var spec=CodeMirror.resolveMode("text/css");var result=[];function add(keywords){for(var name in keywords){if(!word||name.lastIndexOf(word,0)==0){result.push(name)}}}var st=inner.state.state;if(st=="pseudo"||token.type=="variable-3"){add(pseudoClasses)}else{if(st=="block"||st=="maybeprop"){add(spec.propertyKeywords)}else{if(st=="prop"||st=="parens"||st=="at"||st=="params"){add(spec.valueKeywords);add(spec.colorKeywords)}else{if(st=="media"||st=="media_parens"){add(spec.mediaTypes);add(spec.mediaFeatures)}}}}if(result.length){return{list:result,from:CodeMirror.Pos(cur.line,start),to:CodeMirror.Pos(cur.line,end)}}})}); -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/addon/hint/css-hint.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"),require("../../mode/css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../../mode/css/css"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var pseudoClasses={link:1,visited:1,active:1,hover:1,focus:1,"first-letter":1,"first-line":1,"first-child":1,before:1,after:1,lang:1};CodeMirror.registerHelper("hint","css",function(cm){var cur=cm.getCursor(),token=cm.getTokenAt(cur);var inner=CodeMirror.innerMode(cm.getMode(),token.state);if(inner.mode.name!="css"){return}if(token.type=="keyword"&&"!important".indexOf(token.string)==0){return{list:["!important"],from:CodeMirror.Pos(cur.line,token.start),to:CodeMirror.Pos(cur.line,token.end)}}var start=token.start,end=cur.ch,word=token.string.slice(0,end-start);if(/[^\w$_-]/.test(word)){word="";start=end=cur.ch}var spec=CodeMirror.resolveMode("text/css");var result=[];function add(keywords){for(var name in keywords){if(!word||name.lastIndexOf(word,0)==0){result.push(name)}}}var st=inner.state.state;if(st=="pseudo"||token.type=="variable-3"){add(pseudoClasses)}else{if(st=="block"||st=="maybeprop"){add(spec.propertyKeywords)}else{if(st=="prop"||st=="parens"||st=="at"||st=="params"){add(spec.valueKeywords);add(spec.colorKeywords)}else{if(st=="media"||st=="media_parens"){add(spec.mediaTypes);add(spec.mediaFeatures)}}}}if(result.length){return{list:result,from:CodeMirror.Pos(cur.line,start),to:CodeMirror.Pos(cur.line,end)}}})}); -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/addon/hint/css-hint.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"),require("../../mode/css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../../mode/css/css"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var pseudoClasses={link:1,visited:1,active:1,hover:1,focus:1,"first-letter":1,"first-line":1,"first-child":1,before:1,after:1,lang:1};CodeMirror.registerHelper("hint","css",function(cm){var cur=cm.getCursor(),token=cm.getTokenAt(cur);var inner=CodeMirror.innerMode(cm.getMode(),token.state);if(inner.mode.name!="css"){return}if(token.type=="keyword"&&"!important".indexOf(token.string)==0){return{list:["!important"],from:CodeMirror.Pos(cur.line,token.start),to:CodeMirror.Pos(cur.line,token.end)}}var start=token.start,end=cur.ch,word=token.string.slice(0,end-start);if(/[^\w$_-]/.test(word)){word="";start=end=cur.ch}var spec=CodeMirror.resolveMode("text/css");var result=[];function add(keywords){for(var name in keywords){if(!word||name.lastIndexOf(word,0)==0){result.push(name)}}}var st=inner.state.state;if(st=="pseudo"||token.type=="variable-3"){add(pseudoClasses)}else{if(st=="block"||st=="maybeprop"){add(spec.propertyKeywords)}else{if(st=="prop"||st=="parens"||st=="at"||st=="params"){add(spec.valueKeywords);add(spec.colorKeywords)}else{if(st=="media"||st=="media_parens"){add(spec.mediaTypes);add(spec.mediaFeatures)}}}}if(result.length){return{list:result,from:CodeMirror.Pos(cur.line,start),to:CodeMirror.Pos(cur.line,end)}}})}); -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/fold/comment-fold.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){CodeMirror.registerGlobalHelper("fold","comment",function(mode){return mode.blockCommentStart&&mode.blockCommentEnd},function(cm,start){var mode=cm.getModeAt(start),startToken=mode.blockCommentStart,endToken=mode.blockCommentEnd;if(!startToken||!endToken){return}var line=start.line,lineText=cm.getLine(line);var startCh;for(var at=start.ch,pass=0;;){var found=at<=0?-1:lineText.lastIndexOf(startToken,at-1);if(found==-1){if(pass==1){return}pass=1;at=lineText.length;continue}if(pass==1&&foundspan::selection,.cm-s-seti .CodeMirror-line>span>span::selection{background:rgba(255,255,255,0.10)}.cm-s-seti .CodeMirror-line::-moz-selection,.cm-s-seti .CodeMirror-line>span::-moz-selection,.cm-s-seti .CodeMirror-line>span>span::-moz-selection{background:rgba(255,255,255,0.10)}.cm-s-seti span.cm-comment{color:#8299A2}.cm-s-seti span.cm-string,.cm-s-seti span.cm-string-2{color:#55b5db}.cm-s-seti span.cm-number{color:#cd3f45}.cm-s-seti span.cm-variable{color:#55b5db}.cm-s-seti span.cm-variable-2{color:#a074c4}.cm-s-seti span.cm-def{color:#55b5db}.cm-s-seti span.cm-keyword{color:#ff79c6}.cm-s-seti span.cm-operator{color:#9fca56}.cm-s-seti span.cm-keyword{color:#e6cd69}.cm-s-seti span.cm-atom{color:#cd3f45}.cm-s-seti span.cm-meta{color:#55b5db}.cm-s-seti span.cm-tag{color:#55b5db}.cm-s-seti span.cm-attribute{color:#9fca56}.cm-s-seti span.cm-qualifier{color:#9fca56}.cm-s-seti span.cm-property{color:#a074c4}.cm-s-seti span.cm-variable-3,.cm-s-seti span.cm-type{color:#9fca56}.cm-s-seti span.cm-builtin{color:#9fca56}.cm-s-seti .CodeMirror-activeline-background{background:#101213}.cm-s-seti .CodeMirror-matchingbracket{text-decoration:underline;color:white!important} -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/theme/seti.css: -------------------------------------------------------------------------------- 1 | .cm-s-seti.CodeMirror{background-color:#151718!important;color:#cfd2d1!important;border:0;font-family:'\5FAE\8F6F\96C5\9ED1';font-size:15px}.cm-s-seti .CodeMirror-gutters{color:#404b53;background-color:#0e1112;border:0}.cm-s-seti .CodeMirror-cursor{border-left:solid thin #f8f8f0}.cm-s-seti .CodeMirror-linenumber{color:#6d8a88}.cm-s-seti.CodeMirror-focused div.CodeMirror-selected{background:rgba(255,255,255,0.10)}.cm-s-seti .CodeMirror-line::selection,.cm-s-seti .CodeMirror-line>span::selection,.cm-s-seti .CodeMirror-line>span>span::selection{background:rgba(255,255,255,0.10)}.cm-s-seti .CodeMirror-line::-moz-selection,.cm-s-seti .CodeMirror-line>span::-moz-selection,.cm-s-seti .CodeMirror-line>span>span::-moz-selection{background:rgba(255,255,255,0.10)}.cm-s-seti span.cm-comment{color:#8299A2}.cm-s-seti span.cm-string,.cm-s-seti span.cm-string-2{color:#55b5db}.cm-s-seti span.cm-number{color:#cd3f45}.cm-s-seti span.cm-variable{color:#55b5db}.cm-s-seti span.cm-variable-2{color:#a074c4}.cm-s-seti span.cm-def{color:#55b5db}.cm-s-seti span.cm-keyword{color:#ff79c6}.cm-s-seti span.cm-operator{color:#9fca56}.cm-s-seti span.cm-keyword{color:#e6cd69}.cm-s-seti span.cm-atom{color:#cd3f45}.cm-s-seti span.cm-meta{color:#55b5db}.cm-s-seti span.cm-tag{color:#55b5db}.cm-s-seti span.cm-attribute{color:#9fca56}.cm-s-seti span.cm-qualifier{color:#9fca56}.cm-s-seti span.cm-property{color:#a074c4}.cm-s-seti span.cm-variable-3,.cm-s-seti span.cm-type{color:#9fca56}.cm-s-seti span.cm-builtin{color:#9fca56}.cm-s-seti .CodeMirror-activeline-background{background:#101213}.cm-s-seti .CodeMirror-matchingbracket{text-decoration:underline;color:white!important} -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/theme/seti.css: -------------------------------------------------------------------------------- 1 | .cm-s-seti.CodeMirror{background-color:#151718!important;color:#cfd2d1!important;border:0;font-family:'\5FAE\8F6F\96C5\9ED1';font-size:15px}.cm-s-seti .CodeMirror-gutters{color:#404b53;background-color:#0e1112;border:0}.cm-s-seti .CodeMirror-cursor{border-left:solid thin #f8f8f0}.cm-s-seti .CodeMirror-linenumber{color:#6d8a88}.cm-s-seti.CodeMirror-focused div.CodeMirror-selected{background:rgba(255,255,255,0.10)}.cm-s-seti .CodeMirror-line::selection,.cm-s-seti .CodeMirror-line>span::selection,.cm-s-seti .CodeMirror-line>span>span::selection{background:rgba(255,255,255,0.10)}.cm-s-seti .CodeMirror-line::-moz-selection,.cm-s-seti .CodeMirror-line>span::-moz-selection,.cm-s-seti .CodeMirror-line>span>span::-moz-selection{background:rgba(255,255,255,0.10)}.cm-s-seti span.cm-comment{color:#8299A2}.cm-s-seti span.cm-string,.cm-s-seti span.cm-string-2{color:#55b5db}.cm-s-seti span.cm-number{color:#cd3f45}.cm-s-seti span.cm-variable{color:#55b5db}.cm-s-seti span.cm-variable-2{color:#a074c4}.cm-s-seti span.cm-def{color:#55b5db}.cm-s-seti span.cm-keyword{color:#ff79c6}.cm-s-seti span.cm-operator{color:#9fca56}.cm-s-seti span.cm-keyword{color:#e6cd69}.cm-s-seti span.cm-atom{color:#cd3f45}.cm-s-seti span.cm-meta{color:#55b5db}.cm-s-seti span.cm-tag{color:#55b5db}.cm-s-seti span.cm-attribute{color:#9fca56}.cm-s-seti span.cm-qualifier{color:#9fca56}.cm-s-seti span.cm-property{color:#a074c4}.cm-s-seti span.cm-variable-3,.cm-s-seti span.cm-type{color:#9fca56}.cm-s-seti span.cm-builtin{color:#9fca56}.cm-s-seti .CodeMirror-activeline-background{background:#101213}.cm-s-seti .CodeMirror-matchingbracket{text-decoration:underline;color:white!important} -------------------------------------------------------------------------------- /V1.0.0.9/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 5 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 6 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 7 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 8 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 9 | ::-webkit-scrollbar 10 | { 11 | width: 16px; 12 | height: 16px; 13 | background-color: #F5F5F5; 14 | } 15 | 16 | /*定义滚动条轨道 内阴影+圆角*/ 17 | ::-webkit-scrollbar-track 18 | { 19 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 20 | border-radius: 10px; 21 | background-color: #F5F5F5; 22 | } 23 | 24 | /*定义滑块 内阴影+圆角*/ 25 | ::-webkit-scrollbar-thumb 26 | { 27 | border-radius: 10px; 28 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 29 | background-color: #555; 30 | } 31 | 32 | .code-upd{position: absolute;background: #fff;z-index: 999999;display: none;top: 0;} 33 | .code-bottom{width: 100%;height: 40px;line-height: 40px;position: absolute;bottom: 0;z-index: 10;} 34 | .code-bottom button{position: relative;padding: 0;width: 60px;line-height: 35px;height: 35px;text-align: center;border-radius: 3px;font-size: 14px;color: #fff;border-bottom: 0;background-color: #151718;font-family: '微软雅黑';cursor: pointer;overflow: hidden;border: 0;float: right;margin: 3px 5px 0px 0px;} 35 | .code-bottom .code-out{background: #009688;margin-right: 15px;} 36 | .vif-left{position: relative;float: left;width: 200px;height: 40px;line-height: 40px;margin-left: 15px;font-family: '微软雅黑';font-size: 13px} -------------------------------------------------------------------------------- /V1.0.1.1/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .cmd div{cursor: pointer} 5 | .cmd div:hover{color: red} 6 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 7 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 8 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 9 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 10 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 11 | ::-webkit-scrollbar 12 | { 13 | width: 16px; 14 | height: 16px; 15 | background-color: #F5F5F5; 16 | } 17 | 18 | /*定义滚动条轨道 内阴影+圆角*/ 19 | ::-webkit-scrollbar-track 20 | { 21 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 22 | border-radius: 10px; 23 | background-color: #F5F5F5; 24 | } 25 | 26 | /*定义滑块 内阴影+圆角*/ 27 | ::-webkit-scrollbar-thumb 28 | { 29 | border-radius: 10px; 30 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 31 | background-color: #555; 32 | } 33 | 34 | .code-upd{position: absolute;background: #fff;z-index: 999999;display: none;top: 0;} 35 | .code-bottom{width: 100%;height: 40px;line-height: 40px;position: absolute;bottom: 0;z-index: 10;} 36 | .code-bottom button{position: relative;padding: 0;width: 60px;line-height: 35px;height: 35px;text-align: center;border-radius: 3px;font-size: 14px;color: #fff;border-bottom: 0;background-color: #151718;font-family: '微软雅黑';cursor: pointer;overflow: hidden;border: 0;float: right;margin: 3px 5px 0px 0px;} 37 | .code-bottom .code-out{background: #009688;margin-right: 15px;} 38 | .vif-left{position: relative;float: left;width: 200px;height: 40px;line-height: 40px;margin-left: 15px;font-family: '微软雅黑';font-size: 13px} -------------------------------------------------------------------------------- /V1.0.1.2/public/cmd.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | html,body{margin: 0; padding: 0} 3 | .cmd{background: #000; color: #fff; padding: 10px; font-family: '微软雅黑'; font-size: 13px;overflow-x: hidden} 4 | .cmd div{cursor: pointer} 5 | .cmd div:hover{color: red} 6 | .command-line{color: #EFD100; width: 125px; display: block;float: left;} 7 | .command-echo{color: #00C52B; width: 125px; display: block;float: left;} 8 | .command-cmd{color: orangered; width: 125px; display: block;float: left;} 9 | #cmd_whole {width: 110px; height: 30px; line-height: 30px; text-align: center; font-size: 13px; color: #fff; background: #555; position: fixed; top: 30px; right: 30px; cursor: pointer } 10 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 11 | ::-webkit-scrollbar 12 | { 13 | width: 16px; 14 | height: 16px; 15 | background-color: #F5F5F5; 16 | } 17 | 18 | /*定义滚动条轨道 内阴影+圆角*/ 19 | ::-webkit-scrollbar-track 20 | { 21 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 22 | border-radius: 10px; 23 | background-color: #F5F5F5; 24 | } 25 | 26 | /*定义滑块 内阴影+圆角*/ 27 | ::-webkit-scrollbar-thumb 28 | { 29 | border-radius: 10px; 30 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); 31 | background-color: #555; 32 | } 33 | 34 | .code-upd{position: absolute;background: #fff;z-index: 999999;display: none;top: 0;} 35 | .code-bottom{width: 100%;height: 40px;line-height: 40px;position: absolute;bottom: 0;z-index: 10;} 36 | .code-bottom button{position: relative;padding: 0;width: 60px;line-height: 35px;height: 35px;text-align: center;border-radius: 3px;font-size: 14px;color: #fff;border-bottom: 0;background-color: #151718;font-family: '微软雅黑';cursor: pointer;overflow: hidden;border: 0;float: right;margin: 3px 5px 0px 0px;} 37 | .code-bottom .code-out{background: #009688;margin-right: 15px;} 38 | .vif-left{position: relative;float: left;width: 200px;height: 40px;line-height: 40px;margin-left: 15px;font-family: '微软雅黑';font-size: 13px} -------------------------------------------------------------------------------- /V1.0.1.1/cmd/post.class.php: -------------------------------------------------------------------------------- 1 | '02', 'data'=>'未登录命令行工具,请先登录' ) );exit; 20 | } 21 | 22 | if($_POST['type'] == 'click'){ 23 | $this->click($_POST['url']); 24 | }else{ 25 | $this->upd($_POST['content']); 26 | } 27 | } 28 | 29 | /** 30 | * 保存提交的文件内容 31 | * @param string $content 提交的内容 32 | */ 33 | private function upd($content){ 34 | $res = file_put_contents($_SESSION['cmd_post_file'], $content); 35 | if(!$res) { 36 | echo json_encode( ['code'=>'01', 'data'=>'内容更新失败!'] );exit; 37 | } 38 | echo json_encode( ['code'=>'00', 'data'=>'内容更新成功!'] );exit; 39 | } 40 | 41 | /** 42 | * 获取文件内容 43 | * @param string $url 文件路径 44 | * @return string $content 提交的内容 45 | */ 46 | private function click($url){ 47 | $file = iconv('utf-8//IGNORE','gb2312',$url); 48 | # 打开文件 49 | if(!file_exists($file)){ 50 | echo json_encode( ['code' => '01','data' => $url. ' :文件不存在!']); exit; 51 | } 52 | if(!is_writable($file)){ 53 | echo json_encode( ['code' => '01','data' => $url . ' :文件没有读写权限!']); exit; 54 | } 55 | $_SESSION['cmd_post_file'] = $file; 56 | $content = file_get_contents($file); 57 | $suffix = strtolower(substr(strrchr($file, '.'), 1)); 58 | 59 | echo json_encode( ['code' => '05','msg' => $suffix,'data' => $content]); exit; 60 | } 61 | } 62 | $str = new Post(); 63 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/core/cd.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 25 | $this->config_path = 'config/config.php'; 26 | $this->config_data = require_once($this->config_path); 27 | } 28 | 29 | public function Go(){ 30 | # 分支 31 | switch ($this->command_data[1]){ 32 | case '-h' : 33 | $res = $this->H(); 34 | break; 35 | default : 36 | $res = $this->path_file(); 37 | } 38 | return $res; 39 | } 40 | 41 | 42 | /** 43 | * 进入目录或打开文件 44 | */ 45 | public function path_file(){ 46 | if (empty($this->command_data[1])) { return ['code' => '01','data' => '路径不能为空']; } 47 | $path = $this->command_data[1]; 48 | if($path == '/'){ 49 | $_SESSION['cmd_path_file'] = ''; 50 | }else{ 51 | $path = rtrim($path, '/').'/'; 52 | } 53 | 54 | $cmd_path_file = isset($_SESSION['cmd_path_file']) ? $_SESSION['cmd_path_file'].$path : $path; 55 | $url = rtrim($this->config_data['CD_PATH'] . $cmd_path_file, '/'); 56 | 57 | if (is_file($url)) { 58 | # 打开文件 59 | if(!file_exists($url)){ 60 | return ['code' => '01','data' => $cmd_path_file. ' :文件不存在!']; 61 | } 62 | if(!is_writable($url)){ 63 | return ['code' => '01','data' => $cmd_path_file . ' :文件没有读写权限!']; 64 | } 65 | $_SESSION['cmd_post_file'] = rtrim($this->config_data['CD_PATH'] . ltrim($cmd_path_file, '/'), '/'); 66 | $content = file_get_contents($url); 67 | $suffix = strtolower(substr(strrchr($url, '.'), 1)); 68 | 69 | return ['code' => '05','msg' => $suffix,'data' => $content]; 70 | } else { 71 | # 切换目录 72 | if (!file_exists($url)) { 73 | return ['code' => '01','data' => $cmd_path_file . ' :目录不存在!']; 74 | } 75 | $_SESSION['cmd_path_file'] = $cmd_path_file; 76 | return ['code' => '04','data' => $cmd_path_file]; 77 | } 78 | } 79 | 80 | /** 81 | * 查看当前位置 82 | */ 83 | public function H(){ 84 | $cmd_path_file = isset($_SESSION['cmd_path_file']) ? $_SESSION['cmd_path_file'] : '/'; 85 | return ['code' => '06','data' => $cmd_path_file]; 86 | } 87 | } 88 | 89 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/fold/brace-fold.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){CodeMirror.registerHelper("fold","brace",function(cm,start){var line=start.line,lineText=cm.getLine(line);var tokenType;function findOpening(openCh){for(var at=start.ch,pass=0;;){var found=at<=0?-1:lineText.lastIndexOf(openCh,at-1);if(found==-1){if(pass==1){break}pass=1;at=lineText.length;continue}if(pass==1&&foundcm.lastLine()){return null}var start=cm.getTokenAt(CodeMirror.Pos(line,1));if(!/\S/.test(start.string)){start=cm.getTokenAt(CodeMirror.Pos(line,start.end+1))}if(start.type!="keyword"||start.string!="import"){return null}for(var i=line,e=Math.min(cm.lastLine(),line+10);i<=e;++i){var text=cm.getLine(i),semi=text.indexOf(";");if(semi!=-1){return{startCh:start.end,end:CodeMirror.Pos(i,semi)}}}}var startLine=start.line,has=hasImport(startLine),prev;if(!has||hasImport(startLine-1)||((prev=hasImport(startLine-2))&&prev.end.line==startLine-1)){return null}for(var end=has.end;;){var next=hasImport(end.line+1);if(next==null){break}end=next.end}return{from:cm.clipPos(CodeMirror.Pos(startLine,has.startCh+1)),to:end}});CodeMirror.registerHelper("fold","include",function(cm,start){function hasInclude(line){if(linecm.lastLine()){return null}var start=cm.getTokenAt(CodeMirror.Pos(line,1));if(!/\S/.test(start.string)){start=cm.getTokenAt(CodeMirror.Pos(line,start.end+1))}if(start.type=="meta"&&start.string.slice(0,8)=="#include"){return start.start+8}}var startLine=start.line,has=hasInclude(startLine);if(has==null||hasInclude(startLine-1)!=null){return null}for(var end=startLine;;){var next=hasInclude(end+1);if(next==null){break}++end}return{from:CodeMirror.Pos(startLine,has+1),to:cm.clipPos(CodeMirror.Pos(end))}})}); -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/addon/fold/brace-fold.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){CodeMirror.registerHelper("fold","brace",function(cm,start){var line=start.line,lineText=cm.getLine(line);var tokenType;function findOpening(openCh){for(var at=start.ch,pass=0;;){var found=at<=0?-1:lineText.lastIndexOf(openCh,at-1);if(found==-1){if(pass==1){break}pass=1;at=lineText.length;continue}if(pass==1&&foundcm.lastLine()){return null}var start=cm.getTokenAt(CodeMirror.Pos(line,1));if(!/\S/.test(start.string)){start=cm.getTokenAt(CodeMirror.Pos(line,start.end+1))}if(start.type!="keyword"||start.string!="import"){return null}for(var i=line,e=Math.min(cm.lastLine(),line+10);i<=e;++i){var text=cm.getLine(i),semi=text.indexOf(";");if(semi!=-1){return{startCh:start.end,end:CodeMirror.Pos(i,semi)}}}}var startLine=start.line,has=hasImport(startLine),prev;if(!has||hasImport(startLine-1)||((prev=hasImport(startLine-2))&&prev.end.line==startLine-1)){return null}for(var end=has.end;;){var next=hasImport(end.line+1);if(next==null){break}end=next.end}return{from:cm.clipPos(CodeMirror.Pos(startLine,has.startCh+1)),to:end}});CodeMirror.registerHelper("fold","include",function(cm,start){function hasInclude(line){if(linecm.lastLine()){return null}var start=cm.getTokenAt(CodeMirror.Pos(line,1));if(!/\S/.test(start.string)){start=cm.getTokenAt(CodeMirror.Pos(line,start.end+1))}if(start.type=="meta"&&start.string.slice(0,8)=="#include"){return start.start+8}}var startLine=start.line,has=hasInclude(startLine);if(has==null||hasInclude(startLine-1)!=null){return null}for(var end=startLine;;){var next=hasInclude(end+1);if(next==null){break}++end}return{from:CodeMirror.Pos(startLine,has+1),to:cm.clipPos(CodeMirror.Pos(end))}})}); -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/addon/fold/brace-fold.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){CodeMirror.registerHelper("fold","brace",function(cm,start){var line=start.line,lineText=cm.getLine(line);var tokenType;function findOpening(openCh){for(var at=start.ch,pass=0;;){var found=at<=0?-1:lineText.lastIndexOf(openCh,at-1);if(found==-1){if(pass==1){break}pass=1;at=lineText.length;continue}if(pass==1&&foundcm.lastLine()){return null}var start=cm.getTokenAt(CodeMirror.Pos(line,1));if(!/\S/.test(start.string)){start=cm.getTokenAt(CodeMirror.Pos(line,start.end+1))}if(start.type!="keyword"||start.string!="import"){return null}for(var i=line,e=Math.min(cm.lastLine(),line+10);i<=e;++i){var text=cm.getLine(i),semi=text.indexOf(";");if(semi!=-1){return{startCh:start.end,end:CodeMirror.Pos(i,semi)}}}}var startLine=start.line,has=hasImport(startLine),prev;if(!has||hasImport(startLine-1)||((prev=hasImport(startLine-2))&&prev.end.line==startLine-1)){return null}for(var end=has.end;;){var next=hasImport(end.line+1);if(next==null){break}end=next.end}return{from:cm.clipPos(CodeMirror.Pos(startLine,has.startCh+1)),to:end}});CodeMirror.registerHelper("fold","include",function(cm,start){function hasInclude(line){if(linecm.lastLine()){return null}var start=cm.getTokenAt(CodeMirror.Pos(line,1));if(!/\S/.test(start.string)){start=cm.getTokenAt(CodeMirror.Pos(line,start.end+1))}if(start.type=="meta"&&start.string.slice(0,8)=="#include"){return start.start+8}}var startLine=start.line,has=hasInclude(startLine);if(has==null||hasInclude(startLine-1)!=null){return null}for(var end=startLine;;){var next=hasInclude(end+1);if(next==null){break}++end}return{from:CodeMirror.Pos(startLine,has+1),to:cm.clipPos(CodeMirror.Pos(end))}})}); -------------------------------------------------------------------------------- /V1.0.0.1/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 20 | exit; 21 | } 22 | isset($_SESSION) || session_start(); 23 | $this->command_data = $this->Parameter($_POST['cmd']); 24 | if( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ){ 25 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 26 | }else if(empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name'){ 27 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 28 | }else{ 29 | $this->Go(); 30 | } 31 | } 32 | 33 | /** 34 | * Title : 分解命令行参数 35 | * Author : 小黄牛 36 | * @param string : $txt AJAX提交过来的命令行 37 | * @return array : 38 | */ 39 | private function Parameter($txt){ 40 | $array = explode(' ', $txt); 41 | # 数据库的命令行要特殊处理 42 | if ($array[0] == 'my'){ 43 | $A = $array[0]; 44 | $B = $array[1]; 45 | $path = $A.' '.$B.' '; 46 | $C = str_replace($path , '', $txt); 47 | $array = array(); 48 | $array[0] = $A; 49 | $array[1] = $B; 50 | $array[2] = ltrim($C, ' '); 51 | # 先获取到 1 2 的命令行 52 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作 53 | # if 如果是特殊类型,有第4个参数,就继续向下操作 54 | # 计算' '最后一次出现的位置,然后再第3个参数中按位置截取 55 | # 再把第4个参数从第3个参数中替换为空 56 | } 57 | return $array; 58 | } 59 | /** 60 | * Title : 根据不同的命令行参数,引入不同的处理类 61 | * Author : 小黄牛 62 | * @return 63 | */ 64 | private function Go(){ 65 | # echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 66 | $class = $this->command_data[0]; 67 | 68 | if (!file_exists('core/' . $class .'.php')) { 69 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 70 | } 71 | 72 | require_once 'core/' . $class .'.php'; 73 | $obj = new $class($this->command_data); 74 | $res = $obj -> Go(); 75 | echo json_encode($res); 76 | } 77 | 78 | /** 79 | * 处理返回值 80 | * @param int : $status 状态码 81 | * @param array|string : $data 返回值 82 | */ 83 | private function Eco($status, $data){ 84 | $array = array( 85 | 'code' => $status, 86 | 'data' => $data 87 | ); 88 | echo json_encode($array); 89 | exit; 90 | } 91 | } 92 | $str = new Cmd(); 93 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/hint/xml-hint.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var Pos=CodeMirror.Pos;function getHints(cm,options){var tags=options&&options.schemaInfo;var quote=(options&&options.quoteChar)||'"';if(!tags){return}var cur=cm.getCursor(),token=cm.getTokenAt(cur);if(token.end>cur.ch){token.end=cur.ch;token.string=token.string.slice(0,cur.ch-token.start)}var inner=CodeMirror.innerMode(cm.getMode(),token.state);if(inner.mode.name!="xml"){return}var result=[],replaceToken=false,prefix;var tag=/\btag\b/.test(token.type)&&!/>$/.test(token.string);var tagName=tag&&/^\w/.test(token.string),tagStart;if(tagName){var before=cm.getLine(cur.line).slice(Math.max(0,token.start-2),token.start);var tagType=/<\/$/.test(before)?"close":/<$/.test(before)?"open":null;if(tagType){tagStart=token.start-(tagType=="close"?2:1)}}else{if(tag&&token.string=="<"){tagType="open"}else{if(tag&&token.string=="")}}else{var curTag=tags[inner.state.tagName],attrs=curTag&&curTag.attrs;var globalAttrs=tags["!attrs"];if(!attrs&&!globalAttrs){return}if(!attrs){attrs=globalAttrs}else{if(globalAttrs){var set={};for(var nm in globalAttrs){if(globalAttrs.hasOwnProperty(nm)){set[nm]=globalAttrs[nm]}}for(var nm in attrs){if(attrs.hasOwnProperty(nm)){set[nm]=attrs[nm]}}attrs=set}}if(token.type=="string"||token.string=="="){var before=cm.getRange(Pos(cur.line,Math.max(0,cur.ch-60)),Pos(cur.line,token.type=="string"?token.start:token.end));var atName=before.match(/([^\s\u00a0=<>\"\']+)=$/),atValues;if(!atName||!attrs.hasOwnProperty(atName[1])||!(atValues=attrs[atName[1]])){return}if(typeof atValues=="function"){atValues=atValues.call(this,cm)}if(token.type=="string"){prefix=token.string;var n=0;if(/['"]/.test(token.string.charAt(0))){quote=token.string.charAt(0);prefix=token.string.slice(1);n++}var len=token.string.length;if(/['"]/.test(token.string.charAt(len-1))){quote=token.string.charAt(len-1);prefix=token.string.substr(n,len-2)}replaceToken=true}for(var i=0;icur.ch){token.end=cur.ch;token.string=token.string.slice(0,cur.ch-token.start)}var inner=CodeMirror.innerMode(cm.getMode(),token.state);if(inner.mode.name!="xml"){return}var result=[],replaceToken=false,prefix;var tag=/\btag\b/.test(token.type)&&!/>$/.test(token.string);var tagName=tag&&/^\w/.test(token.string),tagStart;if(tagName){var before=cm.getLine(cur.line).slice(Math.max(0,token.start-2),token.start);var tagType=/<\/$/.test(before)?"close":/<$/.test(before)?"open":null;if(tagType){tagStart=token.start-(tagType=="close"?2:1)}}else{if(tag&&token.string=="<"){tagType="open"}else{if(tag&&token.string=="")}}else{var curTag=tags[inner.state.tagName],attrs=curTag&&curTag.attrs;var globalAttrs=tags["!attrs"];if(!attrs&&!globalAttrs){return}if(!attrs){attrs=globalAttrs}else{if(globalAttrs){var set={};for(var nm in globalAttrs){if(globalAttrs.hasOwnProperty(nm)){set[nm]=globalAttrs[nm]}}for(var nm in attrs){if(attrs.hasOwnProperty(nm)){set[nm]=attrs[nm]}}attrs=set}}if(token.type=="string"||token.string=="="){var before=cm.getRange(Pos(cur.line,Math.max(0,cur.ch-60)),Pos(cur.line,token.type=="string"?token.start:token.end));var atName=before.match(/([^\s\u00a0=<>\"\']+)=$/),atValues;if(!atName||!attrs.hasOwnProperty(atName[1])||!(atValues=attrs[atName[1]])){return}if(typeof atValues=="function"){atValues=atValues.call(this,cm)}if(token.type=="string"){prefix=token.string;var n=0;if(/['"]/.test(token.string.charAt(0))){quote=token.string.charAt(0);prefix=token.string.slice(1);n++}var len=token.string.length;if(/['"]/.test(token.string.charAt(len-1))){quote=token.string.charAt(len-1);prefix=token.string.substr(n,len-2)}replaceToken=true}for(var i=0;icur.ch){token.end=cur.ch;token.string=token.string.slice(0,cur.ch-token.start)}var inner=CodeMirror.innerMode(cm.getMode(),token.state);if(inner.mode.name!="xml"){return}var result=[],replaceToken=false,prefix;var tag=/\btag\b/.test(token.type)&&!/>$/.test(token.string);var tagName=tag&&/^\w/.test(token.string),tagStart;if(tagName){var before=cm.getLine(cur.line).slice(Math.max(0,token.start-2),token.start);var tagType=/<\/$/.test(before)?"close":/<$/.test(before)?"open":null;if(tagType){tagStart=token.start-(tagType=="close"?2:1)}}else{if(tag&&token.string=="<"){tagType="open"}else{if(tag&&token.string=="")}}else{var curTag=tags[inner.state.tagName],attrs=curTag&&curTag.attrs;var globalAttrs=tags["!attrs"];if(!attrs&&!globalAttrs){return}if(!attrs){attrs=globalAttrs}else{if(globalAttrs){var set={};for(var nm in globalAttrs){if(globalAttrs.hasOwnProperty(nm)){set[nm]=globalAttrs[nm]}}for(var nm in attrs){if(attrs.hasOwnProperty(nm)){set[nm]=attrs[nm]}}attrs=set}}if(token.type=="string"||token.string=="="){var before=cm.getRange(Pos(cur.line,Math.max(0,cur.ch-60)),Pos(cur.line,token.type=="string"?token.start:token.end));var atName=before.match(/([^\s\u00a0=<>\"\']+)=$/),atValues;if(!atName||!attrs.hasOwnProperty(atName[1])||!(atValues=attrs[atName[1]])){return}if(typeof atValues=="function"){atValues=atValues.call(this,cm)}if(token.type=="string"){prefix=token.string;var n=0;if(/['"]/.test(token.string.charAt(0))){quote=token.string.charAt(0);prefix=token.string.slice(1);n++}var len=token.string.length;if(/['"]/.test(token.string.charAt(len-1))){quote=token.string.charAt(len-1);prefix=token.string.substr(n,len-2)}replaceToken=true}for(var i=0;i=minSize){mark=marker(opts.indicatorOpen)}}cm.setGutterMarker(line,opts.gutter,mark);++cur})}function updateInViewport(cm){var vp=cm.getViewport(),state=cm.state.foldGutter;if(!state){return}cm.operation(function(){updateFoldInfo(cm,vp.from,vp.to)});state.from=vp.from;state.to=vp.to}function onGutterClick(cm,line,gutter){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;if(gutter!=opts.gutter){return}var folded=isFolded(cm,line);if(folded){folded.clear()}else{cm.foldCode(Pos(line,0),opts.rangeFinder)}}function onChange(cm){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;state.from=state.to=0;clearTimeout(state.changeUpdate);state.changeUpdate=setTimeout(function(){updateInViewport(cm)},opts.foldOnChangeTimeSpan||600)}function onViewportChange(cm){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;clearTimeout(state.changeUpdate);state.changeUpdate=setTimeout(function(){var vp=cm.getViewport();if(state.from==state.to||vp.from-state.to>20||state.from-vp.to>20){updateInViewport(cm)}else{cm.operation(function(){if(vp.fromstate.to){updateFoldInfo(cm,state.to,vp.to);state.to=vp.to}})}},opts.updateViewportTimeSpan||400)}function onFold(cm,from){var state=cm.state.foldGutter;if(!state){return}var line=from.line;if(line>=state.from&&line=minSize){mark=marker(opts.indicatorOpen)}}cm.setGutterMarker(line,opts.gutter,mark);++cur})}function updateInViewport(cm){var vp=cm.getViewport(),state=cm.state.foldGutter;if(!state){return}cm.operation(function(){updateFoldInfo(cm,vp.from,vp.to)});state.from=vp.from;state.to=vp.to}function onGutterClick(cm,line,gutter){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;if(gutter!=opts.gutter){return}var folded=isFolded(cm,line);if(folded){folded.clear()}else{cm.foldCode(Pos(line,0),opts.rangeFinder)}}function onChange(cm){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;state.from=state.to=0;clearTimeout(state.changeUpdate);state.changeUpdate=setTimeout(function(){updateInViewport(cm)},opts.foldOnChangeTimeSpan||600)}function onViewportChange(cm){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;clearTimeout(state.changeUpdate);state.changeUpdate=setTimeout(function(){var vp=cm.getViewport();if(state.from==state.to||vp.from-state.to>20||state.from-vp.to>20){updateInViewport(cm)}else{cm.operation(function(){if(vp.fromstate.to){updateFoldInfo(cm,state.to,vp.to);state.to=vp.to}})}},opts.updateViewportTimeSpan||400)}function onFold(cm,from){var state=cm.state.foldGutter;if(!state){return}var line=from.line;if(line>=state.from&&line=minSize){mark=marker(opts.indicatorOpen)}}cm.setGutterMarker(line,opts.gutter,mark);++cur})}function updateInViewport(cm){var vp=cm.getViewport(),state=cm.state.foldGutter;if(!state){return}cm.operation(function(){updateFoldInfo(cm,vp.from,vp.to)});state.from=vp.from;state.to=vp.to}function onGutterClick(cm,line,gutter){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;if(gutter!=opts.gutter){return}var folded=isFolded(cm,line);if(folded){folded.clear()}else{cm.foldCode(Pos(line,0),opts.rangeFinder)}}function onChange(cm){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;state.from=state.to=0;clearTimeout(state.changeUpdate);state.changeUpdate=setTimeout(function(){updateInViewport(cm)},opts.foldOnChangeTimeSpan||600)}function onViewportChange(cm){var state=cm.state.foldGutter;if(!state){return}var opts=state.options;clearTimeout(state.changeUpdate);state.changeUpdate=setTimeout(function(){var vp=cm.getViewport();if(state.from==state.to||vp.from-state.to>20||state.from-vp.to>20){updateInViewport(cm)}else{cm.operation(function(){if(vp.fromstate.to){updateFoldInfo(cm,state.to,vp.to);state.to=vp.to}})}},opts.updateViewportTimeSpan||400)}function onFold(cm,from){var state=cm.state.foldGutter;if(!state){return}var line=from.line;if(line>=state.from&&line'03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的命令行要特殊处理 48 | if ($array[0] == 'my'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $array[2] = ltrim($C, ' '); 57 | # 先获取到 1 2 的命令行 58 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作 59 | # if 如果是特殊类型,有第4个参数,就继续向下操作 60 | # 计算' '最后一次出现的位置,然后再第3个参数中按位置截取 61 | # 再把第4个参数从第3个参数中替换为空 62 | } 63 | return $array; 64 | } 65 | /** 66 | * Title : 根据不同的命令行参数,引入不同的处理类 67 | * Author : 小黄牛 68 | * @return 69 | */ 70 | private function Go(){ 71 | # echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 72 | $class = $this->command_data[0]; 73 | 74 | if (!file_exists('core/' . $class .'.php')) { 75 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 76 | } 77 | 78 | require_once 'core/' . $class .'.php'; 79 | $obj = new $class($this->command_data); 80 | $res = $obj -> Go(); 81 | echo json_encode($res); 82 | } 83 | 84 | /** 85 | * 处理返回值 86 | * @param int : $status 状态码 87 | * @param array|string : $data 返回值 88 | */ 89 | private function Eco($status, $data){ 90 | $array = array( 91 | 'code' => $status, 92 | 'data' => $data 93 | ); 94 | echo json_encode($array); 95 | exit; 96 | } 97 | } 98 | $str = new Cmd(); 99 | -------------------------------------------------------------------------------- /V1.0.0.3/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $array[2] = ltrim($C, ' '); 57 | # 先获取到 1 2 的命令行 58 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作 59 | # if 如果是特殊类型,有第4个参数,就继续向下操作 60 | # 计算' '最后一次出现的位置,然后再第3个参数中按位置截取 61 | # 再把第4个参数从第3个参数中替换为空 62 | } 63 | return $array; 64 | } 65 | /** 66 | * Title : 根据不同的命令行参数,引入不同的处理类 67 | * Author : 小黄牛 68 | * @return 69 | */ 70 | private function Go(){ 71 | # echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 72 | $class = $this->command_data[0]; 73 | 74 | if (!file_exists('core/' . $class .'.php')) { 75 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 76 | } 77 | 78 | require_once 'core/' . $class .'.php'; 79 | $obj = new $class($this->command_data); 80 | $res = $obj -> Go(); 81 | echo json_encode($res); 82 | } 83 | 84 | /** 85 | * 处理返回值 86 | * @param int : $status 状态码 87 | * @param array|string : $data 返回值 88 | */ 89 | private function Eco($status, $data){ 90 | $array = array( 91 | 'code' => $status, 92 | 'data' => $data 93 | ); 94 | echo json_encode($array); 95 | exit; 96 | } 97 | } 98 | $str = new Cmd(); 99 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/fold/foldcode.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){function doFold(cm,pos,options,force){if(options&&options.call){var finder=options;options=null}else{var finder=getOption(cm,options,"rangeFinder")}if(typeof pos=="number"){pos=CodeMirror.Pos(pos,0)}var minSize=getOption(cm,options,"minFoldSize");function getRange(allowFolded){var range=finder(cm,pos);if(!range||range.to.line-range.from.linecm.firstLine()){pos=CodeMirror.Pos(pos.line-1,0);range=getRange(false)}}if(!range||range.cleared||force==="unfold"){return}var myWidget=makeWidget(cm,options);CodeMirror.on(myWidget,"mousedown",function(e){myRange.clear();CodeMirror.e_preventDefault(e)});var myRange=cm.markText(range.from,range.to,{replacedWith:myWidget,clearOnEnter:getOption(cm,options,"clearOnEnter"),__isFold:true});myRange.on("clear",function(from,to){CodeMirror.signal(cm,"unfold",cm,from,to)});CodeMirror.signal(cm,"fold",cm,range.from,range.to)}function makeWidget(cm,options){var widget=getOption(cm,options,"widget");if(typeof widget=="string"){var text=document.createTextNode(widget);widget=document.createElement("span");widget.appendChild(text);widget.className="CodeMirror-foldmarker"}else{if(widget){widget=widget.cloneNode(true)}}return widget}CodeMirror.newFoldFunction=function(rangeFinder,widget){return function(cm,pos){doFold(cm,pos,{rangeFinder:rangeFinder,widget:widget})}};CodeMirror.defineExtension("foldCode",function(pos,options,force){doFold(this,pos,options,force)});CodeMirror.defineExtension("isFolded",function(pos){var marks=this.findMarksAt(pos);for(var i=0;icm.firstLine()){pos=CodeMirror.Pos(pos.line-1,0);range=getRange(false)}}if(!range||range.cleared||force==="unfold"){return}var myWidget=makeWidget(cm,options);CodeMirror.on(myWidget,"mousedown",function(e){myRange.clear();CodeMirror.e_preventDefault(e)});var myRange=cm.markText(range.from,range.to,{replacedWith:myWidget,clearOnEnter:getOption(cm,options,"clearOnEnter"),__isFold:true});myRange.on("clear",function(from,to){CodeMirror.signal(cm,"unfold",cm,from,to)});CodeMirror.signal(cm,"fold",cm,range.from,range.to)}function makeWidget(cm,options){var widget=getOption(cm,options,"widget");if(typeof widget=="string"){var text=document.createTextNode(widget);widget=document.createElement("span");widget.appendChild(text);widget.className="CodeMirror-foldmarker"}else{if(widget){widget=widget.cloneNode(true)}}return widget}CodeMirror.newFoldFunction=function(rangeFinder,widget){return function(cm,pos){doFold(cm,pos,{rangeFinder:rangeFinder,widget:widget})}};CodeMirror.defineExtension("foldCode",function(pos,options,force){doFold(this,pos,options,force)});CodeMirror.defineExtension("isFolded",function(pos){var marks=this.findMarksAt(pos);for(var i=0;icm.firstLine()){pos=CodeMirror.Pos(pos.line-1,0);range=getRange(false)}}if(!range||range.cleared||force==="unfold"){return}var myWidget=makeWidget(cm,options);CodeMirror.on(myWidget,"mousedown",function(e){myRange.clear();CodeMirror.e_preventDefault(e)});var myRange=cm.markText(range.from,range.to,{replacedWith:myWidget,clearOnEnter:getOption(cm,options,"clearOnEnter"),__isFold:true});myRange.on("clear",function(from,to){CodeMirror.signal(cm,"unfold",cm,from,to)});CodeMirror.signal(cm,"fold",cm,range.from,range.to)}function makeWidget(cm,options){var widget=getOption(cm,options,"widget");if(typeof widget=="string"){var text=document.createTextNode(widget);widget=document.createElement("span");widget.appendChild(text);widget.className="CodeMirror-foldmarker"}else{if(widget){widget=widget.cloneNode(true)}}return widget}CodeMirror.newFoldFunction=function(rangeFinder,widget){return function(cm,pos){doFold(cm,pos,{rangeFinder:rangeFinder,widget:widget})}};CodeMirror.defineExtension("foldCode",function(pos,options,force){doFold(this,pos,options,force)});CodeMirror.defineExtension("isFolded",function(pos){var marks=this.findMarksAt(pos);for(var i=0;i 13 | 14 | 15 | 16 | 17 | 18 | PHP - CMD 命令行工具 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
查看命令行大全
27 | 28 |
29 |
欢迎使用PHP-CMD 命令行工具,当前版本为:V1.0.0.1
30 |
command line:> 
31 |
32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /V1.0.0.2/index.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | PHP - CMD 命令行工具 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
查看命令行大全
27 | 28 |
29 |
欢迎使用PHP-CMD 命令行工具,当前版本为:V1.0.0.2
30 |
command line:> 
31 |
32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/edit/matchbrackets.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var ie_lt8=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8);var Pos=CodeMirror.Pos;var matching={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function findMatchingBracket(cm,where,config){var line=cm.getLineHandle(where.line),pos=where.ch-1;var afterCursor=config&&config.afterCursor;if(afterCursor==null){afterCursor=/(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)}var match=(!afterCursor&&pos>=0&&matching[line.text.charAt(pos)])||matching[line.text.charAt(++pos)];if(!match){return null}var dir=match.charAt(1)==">"?1:-1;if(config&&config.strict&&(dir>0)!=(pos==where.ch)){return null}var style=cm.getTokenTypeAt(Pos(where.line,pos+1));var found=scanForBracket(cm,Pos(where.line,pos+(dir>0?1:0)),dir,style||null,config);if(found==null){return null}return{from:Pos(where.line,pos),to:found&&found.pos,match:found&&found.ch==match.charAt(0),forward:dir>0}}function scanForBracket(cm,where,dir,style,config){var maxScanLen=(config&&config.maxScanLineLength)||10000;var maxScanLines=(config&&config.maxScanLines)||1000;var stack=[];var re=config&&config.bracketRegex?config.bracketRegex:/[(){}[\]]/;var lineEnd=dir>0?Math.min(where.line+maxScanLines,cm.lastLine()+1):Math.max(cm.firstLine()-1,where.line-maxScanLines);for(var lineNo=where.line;lineNo!=lineEnd;lineNo+=dir){var line=cm.getLine(lineNo);if(!line){continue}var pos=dir>0?0:line.length-1,end=dir>0?line.length:-1;if(line.length>maxScanLen){continue}if(lineNo==where.line){pos=where.ch-(dir<0?1:0)}for(;pos!=end;pos+=dir){var ch=line.charAt(pos);if(re.test(ch)&&(style===undefined||cm.getTokenTypeAt(Pos(lineNo,pos+1))==style)){var match=matching[ch];if((match.charAt(1)==">")==(dir>0)){stack.push(ch)}else{if(!stack.length){return{pos:Pos(lineNo,pos),ch:ch}}else{stack.pop()}}}}}return lineNo-dir==(dir>0?cm.lastLine():cm.firstLine())?false:null}function matchBrackets(cm,autoclear,config){var maxHighlightLen=cm.state.matchBrackets.maxHighlightLineLength||1000;var marks=[],ranges=cm.listSelections();for(var i=0;i",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function findMatchingBracket(cm,where,config){var line=cm.getLineHandle(where.line),pos=where.ch-1;var afterCursor=config&&config.afterCursor;if(afterCursor==null){afterCursor=/(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)}var match=(!afterCursor&&pos>=0&&matching[line.text.charAt(pos)])||matching[line.text.charAt(++pos)];if(!match){return null}var dir=match.charAt(1)==">"?1:-1;if(config&&config.strict&&(dir>0)!=(pos==where.ch)){return null}var style=cm.getTokenTypeAt(Pos(where.line,pos+1));var found=scanForBracket(cm,Pos(where.line,pos+(dir>0?1:0)),dir,style||null,config);if(found==null){return null}return{from:Pos(where.line,pos),to:found&&found.pos,match:found&&found.ch==match.charAt(0),forward:dir>0}}function scanForBracket(cm,where,dir,style,config){var maxScanLen=(config&&config.maxScanLineLength)||10000;var maxScanLines=(config&&config.maxScanLines)||1000;var stack=[];var re=config&&config.bracketRegex?config.bracketRegex:/[(){}[\]]/;var lineEnd=dir>0?Math.min(where.line+maxScanLines,cm.lastLine()+1):Math.max(cm.firstLine()-1,where.line-maxScanLines);for(var lineNo=where.line;lineNo!=lineEnd;lineNo+=dir){var line=cm.getLine(lineNo);if(!line){continue}var pos=dir>0?0:line.length-1,end=dir>0?line.length:-1;if(line.length>maxScanLen){continue}if(lineNo==where.line){pos=where.ch-(dir<0?1:0)}for(;pos!=end;pos+=dir){var ch=line.charAt(pos);if(re.test(ch)&&(style===undefined||cm.getTokenTypeAt(Pos(lineNo,pos+1))==style)){var match=matching[ch];if((match.charAt(1)==">")==(dir>0)){stack.push(ch)}else{if(!stack.length){return{pos:Pos(lineNo,pos),ch:ch}}else{stack.pop()}}}}}return lineNo-dir==(dir>0?cm.lastLine():cm.firstLine())?false:null}function matchBrackets(cm,autoclear,config){var maxHighlightLen=cm.state.matchBrackets.maxHighlightLineLength||1000;var marks=[],ranges=cm.listSelections();for(var i=0;i",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function findMatchingBracket(cm,where,config){var line=cm.getLineHandle(where.line),pos=where.ch-1;var afterCursor=config&&config.afterCursor;if(afterCursor==null){afterCursor=/(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)}var match=(!afterCursor&&pos>=0&&matching[line.text.charAt(pos)])||matching[line.text.charAt(++pos)];if(!match){return null}var dir=match.charAt(1)==">"?1:-1;if(config&&config.strict&&(dir>0)!=(pos==where.ch)){return null}var style=cm.getTokenTypeAt(Pos(where.line,pos+1));var found=scanForBracket(cm,Pos(where.line,pos+(dir>0?1:0)),dir,style||null,config);if(found==null){return null}return{from:Pos(where.line,pos),to:found&&found.pos,match:found&&found.ch==match.charAt(0),forward:dir>0}}function scanForBracket(cm,where,dir,style,config){var maxScanLen=(config&&config.maxScanLineLength)||10000;var maxScanLines=(config&&config.maxScanLines)||1000;var stack=[];var re=config&&config.bracketRegex?config.bracketRegex:/[(){}[\]]/;var lineEnd=dir>0?Math.min(where.line+maxScanLines,cm.lastLine()+1):Math.max(cm.firstLine()-1,where.line-maxScanLines);for(var lineNo=where.line;lineNo!=lineEnd;lineNo+=dir){var line=cm.getLine(lineNo);if(!line){continue}var pos=dir>0?0:line.length-1,end=dir>0?line.length:-1;if(line.length>maxScanLen){continue}if(lineNo==where.line){pos=where.ch-(dir<0?1:0)}for(;pos!=end;pos+=dir){var ch=line.charAt(pos);if(re.test(ch)&&(style===undefined||cm.getTokenTypeAt(Pos(lineNo,pos+1))==style)){var match=matching[ch];if((match.charAt(1)==">")==(dir>0)){stack.push(ch)}else{if(!stack.length){return{pos:Pos(lineNo,pos),ch:ch}}else{stack.pop()}}}}}return lineNo-dir==(dir>0?cm.lastLine():cm.firstLine())?false:null}function matchBrackets(cm,autoclear,config){var maxHighlightLen=cm.state.matchBrackets.maxHighlightLineLength||1000;var marks=[],ranges=cm.listSelections();for(var i=0;i'03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.0.5/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.0.6/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.0.7/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.0.8/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.0.9/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.1.1/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.1.2/cmd/cmd.class.php: -------------------------------------------------------------------------------- 1 | '03', 'data'=>'命令行工具兼容的PHP版本最低为:5.4.0') ); 23 | exit; 24 | } 25 | isset($_SESSION) || session_start(); 26 | $this->command_data = $this->Parameter($_POST['cmd']); 27 | if ( empty($_SESSION['cmd_user']) && empty($this->command_data[1]) ) { 28 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 29 | }else if (empty($_SESSION['cmd_user']) && $this->command_data[1] != 'login|name') { 30 | echo json_encode( array('code'=>'02', 'data'=>'未登录命令行工具,请先登录' ) ); 31 | }else{ 32 | if (!empty($_SESSION['cmd_user'])) { 33 | Admin_Log($_SESSION['cmd_user'], $_POST['cmd']); 34 | } 35 | $this->Go(); 36 | } 37 | } 38 | 39 | /** 40 | * Title : 分解命令行参数 41 | * Author : 小黄牛 42 | * @param string : $txt AJAX提交过来的命令行 43 | * @return array : 44 | */ 45 | private function Parameter($txt){ 46 | $array = explode(' ', $txt); 47 | # 数据库的SQL命令行要特殊处理 48 | if ($array[0] == 'my' && $array[1] == '-x'){ 49 | $A = $array[0]; 50 | $B = $array[1]; 51 | $path = $A.' '.$B.' '; 52 | $C = str_replace($path , '', $txt); 53 | $array = array(); 54 | $array[0] = $A; 55 | $array[1] = $B; 56 | $C = str_replace($A.' '.$B , '', ltrim($C, ' ')); 57 | 58 | if(!empty($C)){ 59 | $array[2] = $C; 60 | $data = explode(' -', $array[2]); 61 | if(!empty($data[1])){ 62 | $array[3] = $data[1]; 63 | $array[2] = htmlspecialchars_decode( str_replace(' -'.$array[3] , '', $array[2]) ); 64 | } 65 | } 66 | 67 | # 先获取到 1 2 的命令行 68 | # 然后用 1.' '.2.' '; 去向原始的命令行中进行替换操作,获得第3个参数 69 | # 然后用 1.' '.2; 去向第3个参数过滤,以兼容回滚模式 70 | # 再用' -'的方式去分割第3个参数,得到的下标1,即为回滚标记 71 | # 若有第4个参数,则用' -'.第4个参数的方式,向第3个参数中替换,更新第3个参数 72 | } 73 | return $array; 74 | } 75 | /** 76 | * Title : 根据不同的命令行参数,引入不同的处理类 77 | * Author : 小黄牛 78 | * @return 79 | */ 80 | private function Go(){ 81 | #echo json_encode(['code'=>00,'data'=>$this->command_data]);return false; 82 | $class = $this->command_data[0]; 83 | 84 | if (!file_exists('core/' . $class .'.php')) { 85 | $this->Eco('01', "暂无该命令行扩展 - {$class}"); 86 | } 87 | 88 | require_once 'core/' . $class .'.php'; 89 | $obj = new $class($this->command_data); 90 | $res = $obj -> Go(); 91 | echo json_encode($res); 92 | } 93 | 94 | /** 95 | * 处理返回值 96 | * @param int : $status 状态码 97 | * @param array|string : $data 返回值 98 | */ 99 | private function Eco($status, $data){ 100 | $array = array( 101 | 'code' => $status, 102 | 'data' => $data 103 | ); 104 | echo json_encode($array); 105 | exit; 106 | } 107 | } 108 | $str = new Cmd(); 109 | -------------------------------------------------------------------------------- /V1.0.0.7/cmd/core/loo.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 26 | $this->config_path = 'config/config.php'; 27 | $this->config_data = require_once($this->config_path); 28 | } 29 | 30 | public function Go(){ 31 | # 第四个参数,不管是不是中文,先过滤一遍 32 | if(!empty($this->command_data[3])){ 33 | $this->command_data[3] = iconv('utf-8', 'gbk', $this->command_data[3]); 34 | } 35 | # 分支 36 | switch ($this->command_data[1]){ 37 | case 'bom' : 38 | $res = $this->bom(); 39 | break; 40 | default : 41 | $res = [ 42 | 'code' => '01', 43 | 'data' => '暂无该操作类型', 44 | ]; 45 | } 46 | return $res; 47 | } 48 | 49 | /** 50 | * 扫描BOM头文件,并做修改 51 | */ 52 | public function bom(){ 53 | $this->data[] = "开启BOM头文件扫描模式..."; 54 | 55 | if(!empty($this->command_data[2])){ 56 | $this->checkdir($this->config_data['CD_PATH'], true); 57 | }else{ 58 | $this->checkdir($this->config_data['CD_PATH']); 59 | } 60 | 61 | $this->data[] = "扫描出带BOM头文件数为:".$this->bom; 62 | $this->data[] = "扫描完成..."; 63 | return ['code'=>'00', 'data'=>$this->data]; 64 | } 65 | 66 | /****************************** BOM头相关函数 *****************************/ 67 | 68 | /** 69 | * 递归目录 70 | * @param string $basedir 路径 71 | * @param bool $type 是否自动修复 72 | * @return string 73 | */ 74 | private function checkdir($basedir, $type = false){ 75 | if(!is_dir($basedir)){ 76 | if(!file_exists($basedir)){ 77 | $this->data[] = "路径:{$basedir} 不存在!"; 78 | return false; 79 | } 80 | } 81 | 82 | if ($dh = opendir($basedir)) { 83 | while (($file = readdir($dh)) !== false) { 84 | if ($file != '.' && $file != '..') { 85 | $url = $basedir . "/" . $file; 86 | if (!is_dir($url)) { 87 | $url = str_replace('//','/', $url); 88 | $this->data[] = "地址: ". iconv('gb2312','utf-8//IGNORE',$url) . ' ' . $this->checkBOM($url, $type); 89 | } else { 90 | $this->checkdir($url, $type); 91 | } 92 | } 93 | } 94 | closedir($dh); 95 | } 96 | } 97 | 98 | /** 99 | * 修复与检测BOM头 100 | * @param string $filename 路径 101 | * @param bool $type 是否自动修复 102 | * @return string 103 | */ 104 | private function checkBOM($filename, $type = false){ 105 | $contents = file_get_contents($filename); 106 | $charset[1] = substr($contents, 0, 1); 107 | $charset[2] = substr($contents, 1, 1); 108 | $charset[3] = substr($contents, 2, 1); 109 | if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { 110 | if ($type === true) { 111 | $rest = substr($contents, 3); 112 | $this->rewriteUpd($filename, $rest); 113 | $this->bom += 1; 114 | return '找到BOM头,并自动清除成功!'; 115 | } else { 116 | $this->bom += 1; 117 | return '有BOM头!'; 118 | } 119 | } else { 120 | return "无BOM头"; 121 | } 122 | } 123 | 124 | /** 125 | * 修改文件内容 126 | * @param string $filename 路径 127 | * @param string $data 内容 128 | */ 129 | public function rewriteUpd($filename, $data){ 130 | $filenum = fopen($filename, "w"); 131 | flock($filenum, LOCK_EX); 132 | fwrite($filenum, $data); 133 | fclose($filenum); 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/mode/htmlmixed/htmlmixed.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var defaultTags={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function maybeBackup(stream,pat,style){var cur=stream.current(),close=cur.search(pat);if(close>-1){stream.backUp(cur.length-close)}else{if(cur.match(/<\/?$/)){stream.backUp(cur.length);if(!stream.match(pat,false)){stream.match(cur)}}}return style}var attrRegexpCache={};function getAttrRegexp(attr){var regexp=attrRegexpCache[attr];if(regexp){return regexp}return attrRegexpCache[attr]=new RegExp("\\s+"+attr+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*")}function getAttrValue(text,attr){var match=text.match(getAttrRegexp(attr));return match?/^\s*(.*?)\s*$/.exec(match[2])[1]:""}function getTagRegexp(tagName,anchored){return new RegExp((anchored?"^":"")+"","i")}function addTags(from,to){for(var tag in from){var dest=to[tag]||(to[tag]=[]);var source=from[tag];for(var i=source.length-1;i>=0;i--){dest.unshift(source[i])}}}function findMatchingMode(tagInfo,tagText){for(var i=0;i=0;i--){tags.script.unshift(["type",configScript[i].matches,configScript[i].mode])}}function html(stream,state){var style=htmlMode.token(stream,state.htmlState),tag=/\btag\b/.test(style),tagName;if(tag&&!/[<>\s\/]/.test(stream.current())&&(tagName=state.htmlState.tagName&&state.htmlState.tagName.toLowerCase())&&tags.hasOwnProperty(tagName)){state.inTag=tagName+" "}else{if(state.inTag&&tag&&/>$/.test(stream.current())){var inTag=/^([\S]+) (.*)/.exec(state.inTag);state.inTag=null;var modeSpec=stream.current()==">"&&findMatchingMode(tags[inTag[1]],inTag[2]);var mode=CodeMirror.getMode(config,modeSpec);var endTagA=getTagRegexp(inTag[1],true),endTag=getTagRegexp(inTag[1],false);state.token=function(stream,state){if(stream.match(endTagA,false)){state.token=html;state.localState=state.localMode=null;return null}return maybeBackup(stream,endTag,state.localMode.token(stream,state.localState))};state.localMode=mode;state.localState=CodeMirror.startState(mode,htmlMode.indent(state.htmlState,""))}else{if(state.inTag){state.inTag+=stream.current();if(stream.eol()){state.inTag+=" "}}}}return style}return{startState:function(){var state=CodeMirror.startState(htmlMode);return{token:html,inTag:null,localMode:null,localState:null,htmlState:state}},copyState:function(state){var local;if(state.localState){local=CodeMirror.copyState(state.localMode,state.localState)}return{token:state.token,inTag:state.inTag,localMode:state.localMode,localState:local,htmlState:CodeMirror.copyState(htmlMode,state.htmlState)}},token:function(stream,state){return state.token(stream,state)},indent:function(state,textAfter,line){if(!state.localMode||/^\s*<\//.test(textAfter)){return htmlMode.indent(state.htmlState,textAfter)}else{if(state.localMode.indent){return state.localMode.indent(state.localState,textAfter,line)}else{return CodeMirror.Pass}}},innerMode:function(state){return{state:state.localState||state.htmlState,mode:state.localMode||htmlMode}}}},"xml","javascript","css");CodeMirror.defineMIME("text/html","htmlmixed")}); -------------------------------------------------------------------------------- /V1.0.1.1/public/codemirror/mode/htmlmixed/htmlmixed.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var defaultTags={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function maybeBackup(stream,pat,style){var cur=stream.current(),close=cur.search(pat);if(close>-1){stream.backUp(cur.length-close)}else{if(cur.match(/<\/?$/)){stream.backUp(cur.length);if(!stream.match(pat,false)){stream.match(cur)}}}return style}var attrRegexpCache={};function getAttrRegexp(attr){var regexp=attrRegexpCache[attr];if(regexp){return regexp}return attrRegexpCache[attr]=new RegExp("\\s+"+attr+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*")}function getAttrValue(text,attr){var match=text.match(getAttrRegexp(attr));return match?/^\s*(.*?)\s*$/.exec(match[2])[1]:""}function getTagRegexp(tagName,anchored){return new RegExp((anchored?"^":"")+"","i")}function addTags(from,to){for(var tag in from){var dest=to[tag]||(to[tag]=[]);var source=from[tag];for(var i=source.length-1;i>=0;i--){dest.unshift(source[i])}}}function findMatchingMode(tagInfo,tagText){for(var i=0;i=0;i--){tags.script.unshift(["type",configScript[i].matches,configScript[i].mode])}}function html(stream,state){var style=htmlMode.token(stream,state.htmlState),tag=/\btag\b/.test(style),tagName;if(tag&&!/[<>\s\/]/.test(stream.current())&&(tagName=state.htmlState.tagName&&state.htmlState.tagName.toLowerCase())&&tags.hasOwnProperty(tagName)){state.inTag=tagName+" "}else{if(state.inTag&&tag&&/>$/.test(stream.current())){var inTag=/^([\S]+) (.*)/.exec(state.inTag);state.inTag=null;var modeSpec=stream.current()==">"&&findMatchingMode(tags[inTag[1]],inTag[2]);var mode=CodeMirror.getMode(config,modeSpec);var endTagA=getTagRegexp(inTag[1],true),endTag=getTagRegexp(inTag[1],false);state.token=function(stream,state){if(stream.match(endTagA,false)){state.token=html;state.localState=state.localMode=null;return null}return maybeBackup(stream,endTag,state.localMode.token(stream,state.localState))};state.localMode=mode;state.localState=CodeMirror.startState(mode,htmlMode.indent(state.htmlState,""))}else{if(state.inTag){state.inTag+=stream.current();if(stream.eol()){state.inTag+=" "}}}}return style}return{startState:function(){var state=CodeMirror.startState(htmlMode);return{token:html,inTag:null,localMode:null,localState:null,htmlState:state}},copyState:function(state){var local;if(state.localState){local=CodeMirror.copyState(state.localMode,state.localState)}return{token:state.token,inTag:state.inTag,localMode:state.localMode,localState:local,htmlState:CodeMirror.copyState(htmlMode,state.htmlState)}},token:function(stream,state){return state.token(stream,state)},indent:function(state,textAfter,line){if(!state.localMode||/^\s*<\//.test(textAfter)){return htmlMode.indent(state.htmlState,textAfter)}else{if(state.localMode.indent){return state.localMode.indent(state.localState,textAfter,line)}else{return CodeMirror.Pass}}},innerMode:function(state){return{state:state.localState||state.htmlState,mode:state.localMode||htmlMode}}}},"xml","javascript","css");CodeMirror.defineMIME("text/html","htmlmixed")}); -------------------------------------------------------------------------------- /V1.0.1.2/public/codemirror/mode/htmlmixed/htmlmixed.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var defaultTags={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function maybeBackup(stream,pat,style){var cur=stream.current(),close=cur.search(pat);if(close>-1){stream.backUp(cur.length-close)}else{if(cur.match(/<\/?$/)){stream.backUp(cur.length);if(!stream.match(pat,false)){stream.match(cur)}}}return style}var attrRegexpCache={};function getAttrRegexp(attr){var regexp=attrRegexpCache[attr];if(regexp){return regexp}return attrRegexpCache[attr]=new RegExp("\\s+"+attr+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*")}function getAttrValue(text,attr){var match=text.match(getAttrRegexp(attr));return match?/^\s*(.*?)\s*$/.exec(match[2])[1]:""}function getTagRegexp(tagName,anchored){return new RegExp((anchored?"^":"")+"","i")}function addTags(from,to){for(var tag in from){var dest=to[tag]||(to[tag]=[]);var source=from[tag];for(var i=source.length-1;i>=0;i--){dest.unshift(source[i])}}}function findMatchingMode(tagInfo,tagText){for(var i=0;i=0;i--){tags.script.unshift(["type",configScript[i].matches,configScript[i].mode])}}function html(stream,state){var style=htmlMode.token(stream,state.htmlState),tag=/\btag\b/.test(style),tagName;if(tag&&!/[<>\s\/]/.test(stream.current())&&(tagName=state.htmlState.tagName&&state.htmlState.tagName.toLowerCase())&&tags.hasOwnProperty(tagName)){state.inTag=tagName+" "}else{if(state.inTag&&tag&&/>$/.test(stream.current())){var inTag=/^([\S]+) (.*)/.exec(state.inTag);state.inTag=null;var modeSpec=stream.current()==">"&&findMatchingMode(tags[inTag[1]],inTag[2]);var mode=CodeMirror.getMode(config,modeSpec);var endTagA=getTagRegexp(inTag[1],true),endTag=getTagRegexp(inTag[1],false);state.token=function(stream,state){if(stream.match(endTagA,false)){state.token=html;state.localState=state.localMode=null;return null}return maybeBackup(stream,endTag,state.localMode.token(stream,state.localState))};state.localMode=mode;state.localState=CodeMirror.startState(mode,htmlMode.indent(state.htmlState,""))}else{if(state.inTag){state.inTag+=stream.current();if(stream.eol()){state.inTag+=" "}}}}return style}return{startState:function(){var state=CodeMirror.startState(htmlMode);return{token:html,inTag:null,localMode:null,localState:null,htmlState:state}},copyState:function(state){var local;if(state.localState){local=CodeMirror.copyState(state.localMode,state.localState)}return{token:state.token,inTag:state.inTag,localMode:state.localMode,localState:local,htmlState:CodeMirror.copyState(htmlMode,state.htmlState)}},token:function(stream,state){return state.token(stream,state)},indent:function(state,textAfter,line){if(!state.localMode||/^\s*<\//.test(textAfter)){return htmlMode.indent(state.htmlState,textAfter)}else{if(state.localMode.indent){return state.localMode.indent(state.localState,textAfter,line)}else{return CodeMirror.Pass}}},innerMode:function(state){return{state:state.localState||state.htmlState,mode:state.localMode||htmlMode}}}},"xml","javascript","css");CodeMirror.defineMIME("text/html","htmlmixed")}); -------------------------------------------------------------------------------- /V1.0.1.1/cmd/core/cd.php: -------------------------------------------------------------------------------- 1 | command_data = $txt; 27 | $this->config_path = 'config/config.php'; 28 | $this->config_data = require_once($this->config_path); 29 | } 30 | 31 | public function Go(){ 32 | # 分支 33 | switch ($this->command_data[1]){ 34 | case '-h' : 35 | $res = $this->H(); 36 | break; 37 | case '-ls' : 38 | $res = $this->Ls(); 39 | break; 40 | default : 41 | $res = $this->path_file(); 42 | } 43 | return $res; 44 | } 45 | 46 | 47 | /** 48 | * 进入目录或打开文件 49 | */ 50 | public function path_file(){ 51 | if (empty($this->command_data[1])) { return ['code' => '01','data' => '路径不能为空']; } 52 | $path = $this->command_data[1]; 53 | if($path == '/'){ 54 | $_SESSION['cmd_path_file'] = ''; 55 | }else{ 56 | $path = rtrim($path, '/').'/'; 57 | } 58 | 59 | $cmd_path_file = isset($_SESSION['cmd_path_file']) ? $_SESSION['cmd_path_file'].$path : $path; 60 | $url = rtrim($this->config_data['CD_PATH'] . $cmd_path_file, '/'); 61 | 62 | if (is_file($url)) { 63 | # 打开文件 64 | if(!file_exists($url)){ 65 | return ['code' => '01','data' => $cmd_path_file. ' :文件不存在!']; 66 | } 67 | if(!is_writable($url)){ 68 | return ['code' => '01','data' => $cmd_path_file . ' :文件没有读写权限!']; 69 | } 70 | $_SESSION['cmd_post_file'] = rtrim($this->config_data['CD_PATH'] . ltrim($cmd_path_file, '/'), '/'); 71 | $content = file_get_contents($url); 72 | $suffix = strtolower(substr(strrchr($url, '.'), 1)); 73 | 74 | return ['code' => '05','msg' => $suffix,'data' => $content]; 75 | } else { 76 | # 切换目录 77 | if (!file_exists($url)) { 78 | return ['code' => '01','data' => $cmd_path_file . ' :目录不存在!']; 79 | } 80 | $_SESSION['cmd_path_file'] = $cmd_path_file; 81 | return ['code' => '04','data' => $cmd_path_file]; 82 | } 83 | } 84 | 85 | /** 86 | * 查看当前位置 87 | */ 88 | public function H(){ 89 | $cmd_path_file = isset($_SESSION['cmd_path_file']) ? $_SESSION['cmd_path_file'] : '/'; 90 | return ['code' => '06','data' => $cmd_path_file]; 91 | } 92 | /** 93 | * 查看当前目录下的所有文件 94 | */ 95 | public function Ls(){ 96 | $cmd_path_file = isset($_SESSION['cmd_path_file']) ? $this->config_data['CD_PATH'] . ltrim($_SESSION['cmd_path_file'], '/') : $this->config_data['CD_PATH']; 97 | $this->checkdir($cmd_path_file); 98 | return ['code'=>'00', 'data'=>$this->data]; 99 | } 100 | 101 | /** 102 | * 递归目录 103 | * @param string $basedir 路径 104 | * @return string 105 | */ 106 | private function checkdir($basedir){ 107 | if(!is_dir($basedir)){ 108 | if(!file_exists($basedir)){ 109 | $this->data[] = "路径:{$basedir} 不存在!"; 110 | return false; 111 | } 112 | } 113 | 114 | if ($dh = opendir($basedir)) { 115 | while (($file = readdir($dh)) !== false) { 116 | if ($file != '.' && $file != '..') { 117 | $url = $basedir . "/" . $file; 118 | if (!is_dir($url)) { 119 | $url = str_replace('//','/', $url); 120 | $this->data[] = "地址: ". iconv('gb2312','utf-8//IGNORE',$url) . ''; 121 | } else { 122 | $this->checkdir($url); 123 | } 124 | } 125 | } 126 | closedir($dh); 127 | } 128 | } 129 | 130 | 131 | } 132 | 133 | -------------------------------------------------------------------------------- /V1.0.0.1/README.md: -------------------------------------------------------------------------------- 1 | PHPCMD 命令行插件 2 | =============================================== 3 | 小黄牛 4 | ----------------------------------------------- 5 | ### 1731223728@qq.com 6 |
7 | 8 | + 命令行工具当前版本 - V1.0.0.1
9 | + 作者 - 小黄牛
10 | + 邮箱 - 1731223728@qq.com
11 | 12 | + 快捷键:ESC 清空当前界面
13 | + 命令行介绍如下:
14 | + 本工具是一个可嵌入在后台管理系统中的便捷式开发工具,适用于中小型项目,研发理念为,方便程序员的日常项目维护,正常状态下的程序调试;
15 | + 本工具可用于商业用途,但不可随意更改作者著作权。
16 | 17 | + 命令行使用说明:
18 | + 初次使用命令行,系统提供了一个初始用户,账号密码:admin
19 | + 使用命令行之前,需要先登录工具,进入页面后敲下回车,即可快捷弹出登录指令
20 | + 每个命令行的提交都是使用【回车键】
21 | + 命令行每个参数之间,都是用一个空格进行分割,例如登录指令: 22 | 23 | ``` 24 | user login|name 账号 密码 25 | ``` 26 | 27 |
28 | 29 | 30 | ## 命令行的组成方式: 31 |
32 | 33 | ``` 34 | 主类 子类 参数1 参数2 参数N 35 | ```` 36 |
37 | 38 | ### 1、工具账号操作指令: 39 |
40 | 41 | + 注册账号 : 42 | ``` 43 | user reg 账号[必填] 密码[必填] 44 | ``` 45 | 46 |
47 | 48 | + 删除账号 : 49 | ``` 50 | user del 账号[必填] 51 | ``` 52 |
53 | 54 | + 修改账号 : 55 | ``` 56 | user upd 账号[必填] 密码[必填] 57 | ``` 58 |
59 | 60 | + 退出工具 : 61 | ``` 62 | user exit 63 | ``` 64 |
65 | 66 | + 登录工具 : 67 | ``` 68 | user login|name 账号[必填] 密码[必填] 69 | ``` 70 | 71 |
72 | 73 | + (命令行工具的用户依赖文件作为存储方式,存放地址为:cmd/config/user/)
74 | ### 2、工具配置操作指令: 75 |
76 | 77 | + 新增配置 : 78 | ``` 79 | conf add 键名[必填] 值[必填] 80 | ``` 81 | 82 |
83 | 84 | + 修改配置 : 85 | ``` 86 | conf upd 键名[必填] 值[必填] 87 | ``` 88 |
89 | 90 | + 删除配置 : 91 | ``` 92 | conf del 键名[必填] 93 | ``` 94 |
95 | 96 | + 查看单个配置 : 97 | ``` 98 | conf sel 键名[必填] 99 | ``` 100 |
101 | 102 | + 列举所有配置 : 103 | ``` 104 | conf -l 105 | ``` 106 |
107 | 108 | + (命令行工具的配置为一维数组,存放地址为:cmd/config/config.php)
109 | ### 3、MySql数据库操作指令: 110 |
111 | 112 | + 检测MySql链接 113 | ``` 114 | my -g 115 | ``` 116 |
117 | 118 | + 执行CURD命令 119 | ``` 120 | my -x SQL语句[必填] 121 | ``` 122 |
123 | 124 | + 注意:在使用my指令之前,应该使用conf指令修改工具配置文件中的数据库配置信息
125 | + 注意:my -x指令 暂只支持:select delete update insert 四种SQL语句
126 | ### 4、PHP环境的相关操作指令: 127 |
128 | 129 | + 打印服务器基本配置 : 130 | ``` 131 | php -w 132 | ``` 133 |
134 | 135 | + 打印服务器已编译模块 : 136 | ``` 137 | php -c 138 | ``` 139 |
140 | 141 | + 打印PHP系统相关参数 : 142 | ``` 143 | php -l 144 | ``` 145 |
146 | 147 | + 打印PHP相关组件扩展 : 148 | ``` 149 | php -z 150 | ``` 151 |
152 | 153 | + 打印数据库相关扩展与配置参数 : 154 | ``` 155 | php -m 156 | ``` 157 |
158 | 159 | ### 5、目录的相关操作指令: 160 |
161 | 162 | + 简单的列举目录下的所有文件 163 | ``` 164 | mk -l 目录路径[可选] 不填的情况下使用配置文件中的根目录 165 | ``` 166 |
167 | 168 | + 详细的列举目录下的所有文件 169 | ``` 170 | mk -ll 目录路径[可选] 不填的情况下使用配置文件中的根目录 171 | ``` 172 |
173 | 174 | + 相对于配置文件下,新增目录 175 | ``` 176 | mk -a 新增目录的路径包含目录名[必填] 0755权限[必填] 177 | ``` 178 |
179 | 180 | + 自定义路径下,新增目录 181 | ``` 182 | mk -a 目标路径[必填] 相对目标路径新增目录的路径包含目录名[必填] 0755权限[必填] 183 | ``` 184 |
185 | 186 | + 检测目录是否存在 187 | ``` 188 | mk -s 检测路径[必填] 189 | ``` 190 |
191 | 192 | + 检测目录是否存在,若不存在则创建目录 193 | ``` 194 | mk -s 检测路径[必填] -y[必填] 0755权限[必填] 195 | ``` 196 |
197 | 198 | + 删除目录 199 | ``` 200 | mk -d 目录路径[必填] 201 | ``` 202 |
203 | 204 | + 修改目录名 205 | ``` 206 | mk -u 原始路径[必填] 目标路径[必填] 207 | ``` 208 |
209 | 210 | 211 | ### 6、文件的相关操作指令: 212 |
213 | 214 | + 删除文件 215 | ``` 216 | tk -d 文件路径[必填] 217 | ``` 218 |
219 | 220 | + 检测文件是否存在 221 | ``` 222 | tk -s 文件路径[必填] 223 | ``` 224 |
225 | 226 | + 修改文件名 227 | ``` 228 | tk -u 原始文件路径[必填] 目标文件路径[必填] 229 | ``` 230 |
231 | 232 | + 复制文件 233 | ``` 234 | tk -c 原始文件路径[必填] 目标文件路径[必填] 235 | ``` 236 |
237 | 238 | 239 | ### 7、Txt和Log文件的相关操作指令: 240 |
241 | 242 | + 读取内容 243 | ``` 244 | txt -l 文件路径[必填] 读取函数,最大100[可选] 245 | ``` 246 |
247 | 248 | + 替换内容 249 | ``` 250 | txt -t 文件路径[必填] 原始字符串[必填] 目标字符串[可选] 251 | ``` 252 |
253 | 254 | 255 | ### config.php配置文件的一些系统项说明: 256 |
257 | + 数据库类型 : DB_TYPE
258 | + 数据库地址 : DB_HOST
259 | + 数据库名称 : DB_NAME
260 | + 数据库账号 : DB_USER
261 | + 数据库密码 : DB_PWD
262 | + 数据库端口 : DB_PORT
263 | + 数据库编码 : DB_CHARSET
264 | + 命令行可操作的根目录 : CD_PATH
265 | -------------------------------------------------------------------------------- /V1.0.0.9/public/codemirror/addon/hint/javascript-hint.js: -------------------------------------------------------------------------------- 1 | (function(mod){if(typeof exports=="object"&&typeof module=="object"){mod(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],mod)}else{mod(CodeMirror)}}})(function(CodeMirror){var Pos=CodeMirror.Pos;function forEach(arr,f){for(var i=0,e=arr.length;icur.ch){token.end=cur.ch;token.string=token.string.slice(0,cur.ch-token.start)}}var tprop=token;while(tprop.type=="property"){tprop=getToken(editor,Pos(cur.line,tprop.start));if(tprop.string!="."){return}tprop=getToken(editor,Pos(cur.line,tprop.start));if(!context){var context=[]}context.push(tprop)}return{list:getCompletions(token,context,keywords,options),from:Pos(cur.line,token.start),to:Pos(cur.line,token.end)}}function javascriptHint(editor,options){return scriptHint(editor,javascriptKeywords,function(e,cur){return e.getTokenAt(cur)},options)}CodeMirror.registerHelper("hint","javascript",javascriptHint);function getCoffeeScriptToken(editor,cur){var token=editor.getTokenAt(cur);if(cur.ch==token.start+1&&token.string.charAt(0)=="."){token.end=token.start;token.string=".";token.type="property"}else{if(/^\.[\w$_]*$/.test(token.string)){token.type="property";token.start++;token.string=token.string.replace(/\./,"")}}return token}function coffeescriptHint(editor,options){return scriptHint(editor,coffeescriptKeywords,getCoffeeScriptToken,options)}CodeMirror.registerHelper("hint","coffeescript",coffeescriptHint);var stringProps=("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight "+"toUpperCase toLowerCase split concat match replace search").split(" ");var arrayProps=("length concat join splice push pop shift unshift slice reverse sort indexOf "+"lastIndexOf every some filter forEach map reduce reduceRight ").split(" ");var funcProps="prototype apply call bind".split(" ");var javascriptKeywords=("break case catch continue debugger default delete do else false finally for function "+"if in instanceof new null return switch throw true try typeof var void while with").split(" ");var coffeescriptKeywords=("and break catch class continue delete do else extends false finally for "+"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" ");function forAllProps(obj,callback){if(!Object.getOwnPropertyNames||!Object.getPrototypeOf){for(var name in obj){callback(name)}}else{for(var o=obj;o;o=Object.getPrototypeOf(o)){Object.getOwnPropertyNames(o).forEach(callback)}}}function getCompletions(token,context,keywords,options){var found=[],start=token.string,global=options&&options.globalScope||window;function maybeAdd(str){if(str.lastIndexOf(start,0)==0&&!arrayContains(found,str)){found.push(str)}}function gatherCompletions(obj){if(typeof obj=="string"){forEach(stringProps,maybeAdd)}else{if(obj instanceof Array){forEach(arrayProps,maybeAdd)}else{if(obj instanceof Function){forEach(funcProps,maybeAdd)}}}forAllProps(obj,maybeAdd)}if(context&&context.length){var obj=context.pop(),base;if(obj.type&&obj.type.indexOf("variable")===0){if(options&&options.additionalContext){base=options.additionalContext[obj.string]}if(!options||options.useGlobalScope!==false){base=base||global[obj.string]}}else{if(obj.type=="string"){base=""}else{if(obj.type=="atom"){base=1}else{if(obj.type=="function"){if(global.jQuery!=null&&(obj.string=="$"||obj.string=="jQuery")&&(typeof global.jQuery=="function")){base=global.jQuery()}else{if(global._!=null&&(obj.string=="_")&&(typeof global._=="function")){base=global._()}}}}}}while(base!=null&&context.length){base=base[context.pop().string]}if(base!=null){gatherCompletions(base)}}else{for(var v=token.state.localVars;v;v=v.next){maybeAdd(v.name)}for(var v=token.state.globalVars;v;v=v.next){maybeAdd(v.name)}if(!options||options.useGlobalScope!==false){gatherCompletions(global)}forEach(keywords,maybeAdd)}return found}}); --------------------------------------------------------------------------------