Compare commits

...
657 Commits
Author SHA1 Message Date
Mr Chen dcae829a1c Merge pull request #577 from midoks/dev
0.16.9
2024-05-22 22:12:39 +08:00
Mr Chen de4e134be8 0.16.9
- mysql同步优化,享受丝滑般感觉。
- 网站统计 - 实时-可调节1-10s。
- 网站统计 - 加入大小条件。
- Sphinx优化。
2024-05-22 22:12:03 +08:00
Mr Chen ba96e62126 Update cmd.md 2024-05-22 22:11:07 +08:00
Mr Chen 990fb06567 Update .gitignore 2024-05-22 22:02:17 +08:00
Mr Chen 71c1034d12 Update .gitignore 2024-05-22 22:01:37 +08:00
Mr Chen 6582cbc09d update 2024-05-22 22:01:09 +08:00
Mr Chen 52bad278cc Update README.md 2024-05-22 19:48:12 +08:00
Mr Chen e023490002 网站统计加入大小条件 2024-05-22 19:44:25 +08:00
Mr Chen c1a7443597 Update r3.6.txt 2024-05-22 11:46:40 +08:00
Mr Chen 3f57e7da07 update 2024-05-22 11:45:51 +08:00
Mr Chen 0461bf3225 Update sphinx_make.py 2024-05-22 11:37:47 +08:00
Mr Chen ac0a503aa7 Update push_notice_msg.py 2024-05-22 10:57:45 +08:00
Mr Chen 706e9e98e7 Update redis.tpl 2024-05-22 10:50:08 +08:00
Mr Chen d9e878d607 Update redis_cluster.conf 2024-05-22 10:45:57 +08:00
Mr Chen ceb5f21814 Update redis_slave.conf 2024-05-22 10:44:45 +08:00
Mr Chen c8e689433b mw update_dev 2024-05-22 10:44:21 +08:00
Mr Chen f2171aa159 Update mw.tpl 2024-05-22 03:29:46 +08:00
Mr Chen 6eccdd510e update 2024-05-22 03:29:01 +08:00
Mr Chen c9a00809a4 Update redis_slave.conf 2024-05-22 02:57:42 +08:00
Mr Chen 9f1d8e43e6 Update redis_slave.conf 2024-05-22 02:54:26 +08:00
Mr Chen e8eda79a1a Update redis.conf 2024-05-22 02:54:06 +08:00
Mr Chen f25847d31d Update tidb.yaml 2024-05-22 02:53:27 +08:00
Mr Chen bda7dfa518 Update redis_slave.conf 2024-05-22 02:53:06 +08:00
Mr Chen 4115c29fe9 Update redis_slave.conf 2024-05-22 02:46:09 +08:00
Mr Chen f73e378fd6 Update index.py 2024-05-21 23:41:56 +08:00
Mr Chen aa9ab55fec Update sphinx_make.py 2024-05-21 23:39:19 +08:00
Mr Chen da5c44a747 Update sphinx_make.py 2024-05-21 23:39:04 +08:00
Mr Chen ee55c998ba Update sphinx_make.py 2024-05-21 23:28:55 +08:00
Mr Chen 2e75a56502 Update sphinx_make.py 2024-05-21 23:26:15 +08:00
Mr Chen a66279ba37 Update sphinx_make.py 2024-05-21 23:23:33 +08:00
Mr Chen 78bbae1f53 Update sphinx_make.py 2024-05-21 23:21:20 +08:00
Mr Chen a87def4325 Update sphinx_make.py 2024-05-21 22:29:32 +08:00
Mr Chen b84ac2daf1 Update sphinx_make.py 2024-05-21 20:58:22 +08:00
Mr Chen 7c9bf99669 Update sphinx_make.py 2024-05-21 20:56:38 +08:00
Mr Chen 599f6ecc51 Update sphinx_make.py 2024-05-21 20:42:38 +08:00
Mr Chen 47a17fbc46 Update sphinx_make.py 2024-05-21 20:40:31 +08:00
Mr Chen 80fa0ea62d Update sphinx_make.py 2024-05-21 20:40:15 +08:00
Mr Chen 83c78609a4 Update sphinx_make.py 2024-05-21 20:35:50 +08:00
Mr Chen 298d4b7981 Update sphinx_make.py 2024-05-21 20:33:22 +08:00
Mr Chen dc6f4e03e7 Update sphinx_make.py 2024-05-21 20:27:55 +08:00
Mr Chen 8b0b2b2d72 Update sphinx.js 2024-05-21 20:00:29 +08:00
Mr Chen d4087ce7f0 Update sphinx_make.py 2024-05-21 19:59:23 +08:00
Mr Chen f92df461ba Update sphinx_make.py 2024-05-21 19:58:43 +08:00
Mr Chen 9e015bc08c Update sphinx_make.py 2024-05-21 19:55:36 +08:00
Mr Chen 4bffd9a22d update 2024-05-21 19:43:25 +08:00
Mr Chen e2ef42fbbc Update sphinx.js 2024-05-21 19:23:30 +08:00
Mr Chen f10e05b7ee update 2024-05-21 19:20:07 +08:00
Mr Chen c15288cf09 update 2024-05-21 17:12:39 +08:00
Mr Chen 2461307d64 update 2024-05-21 16:57:05 +08:00
Mr Chen 95ec87346d update 2024-05-21 16:07:59 +08:00
Mr Chen f99c5b5fc4 update 2024-05-21 16:04:02 +08:00
Mr Chen adfd3bef2d Update app.js 2024-05-21 15:58:32 +08:00
Mr Chen c11631c0c3 Update index.html 2024-05-21 14:42:11 +08:00
Mr Chen 4f87725101 Update redis_slave.conf 2024-05-21 14:22:40 +08:00
Mr Chen 3a6695bb0d Update redis.conf 2024-05-21 14:22:02 +08:00
Mr Chen dd3bcced66 Update redis_slave.conf 2024-05-21 14:21:57 +08:00
Mr Chen 81a163f744 Update site.css 2024-05-21 03:08:08 +08:00
Mr Chen 19dd36fa8b Update sphinx_make.py 2024-05-21 00:22:03 +08:00
Mr Chen 9dcb028158 Update sphinx_make.py 2024-05-21 00:15:26 +08:00
Mr Chen 1ce841eac9 Update sphinx_make.py 2024-05-21 00:12:15 +08:00
Mr Chen c99311dad9 update 2024-05-21 00:07:48 +08:00
Mr Chen d7dd126a48 Update sphinx_make.py 2024-05-20 23:50:06 +08:00
Mr Chen ec8ab6bc45 Update sphinx_make.py 2024-05-20 23:48:03 +08:00
Mr Chen d5b87f450d Update sphinx_make.py 2024-05-20 23:46:23 +08:00
Mr Chen 0016f85132 Update sphinx_make.py 2024-05-20 23:18:48 +08:00
Mr Chen 32a6b36297 Update tools.py 2024-05-20 22:31:11 +08:00
Mr Chen 8da60ffc6b Update tools.py 2024-05-20 22:20:32 +08:00
Mr Chen 64d65a5cac Update sphinx_make.py 2024-05-20 20:14:48 +08:00
Mr Chen cf5b986d2e update 2024-05-20 14:11:27 +08:00
Mr Chen e1d0fc49bb Update install.sh 2024-05-20 00:34:08 +08:00
Mr Chen 68187ee7dd update 2024-05-20 00:21:09 +08:00
Mr Chen 9f7a7c5e59 Update rhel.sh 2024-05-20 00:10:44 +08:00
Mr Chen 90b14d59b0 Update install.sh 2024-05-19 23:51:32 +08:00
Mr Chen e8d1ea0a38 Update install.sh 2024-05-19 23:51:11 +08:00
Mr Chen edf8a5534a Update install.sh 2024-05-19 23:48:06 +08:00
Mr Chen 87bceced80 update 2024-05-19 23:18:48 +08:00
Mr Chen db3350e85c Update install.sh 2024-05-19 23:03:59 +08:00
Mr Chen 56b3aae0c7 Update install.sh 2024-05-19 22:22:52 +08:00
Mr Chen 01d5b75d90 Update install.sh 2024-05-19 22:15:43 +08:00
Mr Chen cbf3a15bf0 update 2024-05-19 22:06:47 +08:00
Mr Chen 2f0f6eaed6 Update install.sh 2024-05-19 21:54:20 +08:00
Mr Chen f0fcec44ff Update install.sh 2024-05-19 21:46:52 +08:00
Mr Chen fcfdfe822a up 2024-05-19 21:36:25 +08:00
Mr Chen d8e08812f9 update 2024-05-19 19:49:15 +08:00
Mr Chen d0ba142933 Update sphinx_make.py 2024-05-19 18:42:43 +08:00
Mr Chen b4e130c664 Update sphinx_make.py 2024-05-19 18:25:51 +08:00
Mr Chen 7503907f34 Update sphinx_make.py 2024-05-19 18:22:13 +08:00
Mr Chen 390df93477 Update sphinx_make.py 2024-05-19 18:20:55 +08:00
Mr Chen abcf6250e3 Update sphinx_make.py 2024-05-19 18:20:10 +08:00
Mr Chen 70370fcb0b Update sphinx_make.py 2024-05-19 18:19:57 +08:00
Mr Chen 57e7021be2 Update sphinx_make.py 2024-05-19 18:10:54 +08:00
Mr Chen 45b7abd0fb Update sphinx_make.py 2024-05-19 17:58:50 +08:00
Mr Chen a6d96bb4d8 Update sphinx_make.py 2024-05-19 17:57:27 +08:00
Mr Chen 2742ecfc67 Update sphinx_make.py 2024-05-19 17:49:08 +08:00
Mr Chen 60747c2f04 Update sphinx_make.py 2024-05-19 17:47:51 +08:00
Mr Chen 2b019a704a Update sphinx_make.py 2024-05-19 17:47:27 +08:00
Mr Chen 7e049a381b Update sphinx_make.py 2024-05-19 17:45:39 +08:00
Mr Chen 2f4cf46bcf Update sphinx_make.py 2024-05-19 17:45:27 +08:00
Mr Chen 706ee146b5 Update sphinx_make.py 2024-05-19 17:43:52 +08:00
Mr Chen 79b4d09d50 Update index.py 2024-05-19 17:37:47 +08:00
Mr Chen 2f0797daab Update sphinx_make.py 2024-05-19 17:34:37 +08:00
Mr Chen 8e47c73f5c Update sphinx_make.py 2024-05-19 17:27:22 +08:00
Mr Chen c90d752ae7 update 2024-05-19 17:21:19 +08:00
Mr Chen 7c96bbe72f Update sphinx_make.py 2024-05-19 16:56:27 +08:00
Mr Chen 53134b7ecc Update sphinx_make.py 2024-05-19 16:36:14 +08:00
Mr Chen bf859f7c7c Update sphinx_make.py 2024-05-19 16:29:16 +08:00
Mr Chen 0046d02ddf update 2024-05-19 16:24:33 +08:00
Mr Chen 5a0e7a3b60 update 2024-05-19 15:09:25 +08:00
Mr Chen a74ca20d0e up 2024-05-19 14:58:14 +08:00
Mr Chen 41109af522 Update install.sh 2024-05-19 11:27:13 +08:00
Mr Chen b3b23994eb Update sphinx.js 2024-05-19 02:40:11 +08:00
Mr Chen 02f3a147aa Update index.py 2024-05-19 02:36:34 +08:00
Mr Chen 10edf675f5 Update config_api.py 2024-05-19 02:35:24 +08:00
Mr Chen b07b6f0c94 update 2024-05-19 02:35:03 +08:00
Mr Chen 002639936e update 2024-05-19 01:32:31 +08:00
Mr Chen aac516c8f8 Update stats.js 2024-05-19 00:56:35 +08:00
Mr Chen efd07f6de2 网站统计 - 实时请求 可选择 2024-05-19 00:51:35 +08:00
Mr Chen fa17782573 Update index.py 2024-05-18 14:15:57 +08:00
Mr Chen 9ee3aebc8c Update index.py 2024-05-18 14:02:17 +08:00
Mr Chen b778c8cdeb Update index.py 2024-05-18 13:57:34 +08:00
Mr Chen 1d1e6b1d5b Update index.py 2024-05-18 12:49:46 +08:00
Mr Chen 70012ea7ee Update index.py 2024-05-18 11:56:56 +08:00
Mr Chen 0897fd9370 Update index.py 2024-05-18 11:51:51 +08:00
Mr Chen 477b8b38fd Update index.py 2024-05-18 10:58:10 +08:00
Mr Chen e805910b1b Update index.py 2024-05-18 10:54:06 +08:00
Mr Chen 2f9903753f Update index.py 2024-05-18 02:57:32 +08:00
Mr Chen 53cd6377bb Update stats.js 2024-05-18 00:57:55 +08:00
Mr Chen 56cf0271b8 Update index.py 2024-05-17 18:26:51 +08:00
Mr Chen 4fefb0efb2 Update index.py 2024-05-17 18:26:18 +08:00
Mr Chen 222b8bc4de Update index.py 2024-05-17 17:58:50 +08:00
Mr Chen dc0e6fe78a Update index.py 2024-05-17 17:57:14 +08:00
Mr Chen 22a21025af Update index.py 2024-05-17 17:56:11 +08:00
Mr Chen 7cd102c40f Update index.py 2024-05-17 17:55:47 +08:00
Mr Chen 5cd7a65737 Update index.py 2024-05-17 17:48:40 +08:00
Mr Chen c370486845 Update mysql.js 2024-05-17 16:59:08 +08:00
Mr Chen cb9857edf2 update 2024-05-17 16:51:10 +08:00
Mr Chen 8fb3410366 Update mysql.js 2024-05-17 16:26:55 +08:00
Mr Chen 659ef259b7 Update index.py 2024-05-17 15:44:33 +08:00
Mr Chen 9d89a92b78 Update mysql.js 2024-05-17 15:33:48 +08:00
Mr Chen 139f353034 update 2024-05-17 14:09:57 +08:00
Mr Chen 908b1cf684 Update backup.py 2024-05-17 14:05:25 +08:00
Mr Chen 07dc74c283 update 2024-05-17 13:56:47 +08:00
Mr Chen 61e136fb39 Update backup.py 2024-05-17 13:54:59 +08:00
Mr Chen 030e05b2cf Update index.py 2024-05-17 13:52:19 +08:00
Mr Chen 24750cfdb2 Update config_api.py 2024-05-17 13:35:26 +08:00
Mr Chen 975a69fce8 Update layout.html 2024-05-17 13:35:13 +08:00
Mr Chen 5f42f37ee2 Update mysql.sql 2024-05-17 05:24:48 +08:00
Mr Chen 9925daa363 Update index.py 2024-05-17 05:08:45 +08:00
Mr Chen 2572bde607 Update index.py 2024-05-17 05:05:06 +08:00
Mr Chen 572207105c Update index.py 2024-05-17 05:04:18 +08:00
Mr Chen 2b8804e960 同步问题 2024-05-17 05:01:39 +08:00
Mr Chen 310409c52b Update mw.tpl 2024-05-17 04:06:01 +08:00
Mr Chen 01e95fa6fb Update index.py 2024-05-17 03:36:27 +08:00
Mr Chen 848021a639 Update index.py 2024-05-17 03:27:20 +08:00
Mr Chen a679c0e90c Update index.py 2024-05-17 03:26:37 +08:00
Mr Chen 8d9eb6302c Update index.py 2024-05-17 03:20:29 +08:00
Mr Chen f6663ad370 Update index.py 2024-05-17 03:18:59 +08:00
Mr Chen 9964745e46 Update index.py 2024-05-17 01:49:11 +08:00
Mr Chen b570a4552a Update index.py 2024-05-17 01:48:00 +08:00
Mr Chen cd2655a6f9 Update index.py 2024-05-17 01:47:40 +08:00
Mr Chen 608b40a110 Update index.py 2024-05-17 01:46:17 +08:00
Mr Chen a65d42ed2e Update index.py 2024-05-17 01:43:57 +08:00
Mr Chen b0d8d4bef8 Update index.py 2024-05-17 01:43:19 +08:00
Mr Chen d9f657c236 Update index.py 2024-05-17 01:42:05 +08:00
Mr Chen de02bcd800 Update index.py 2024-05-17 01:39:46 +08:00
Mr Chen 1f8dbe1a5f Update index.py 2024-05-17 01:37:54 +08:00
Mr Chen 8f4949cf8d Update index.py 2024-05-17 01:35:43 +08:00
Mr Chen 6128186a2c Update index.py 2024-05-17 01:26:35 +08:00
Mr Chen 7f707f9aac Update index.py 2024-05-17 01:08:13 +08:00
Mr Chen 56c1cd88ee Update config_api.py 2024-05-17 01:02:36 +08:00
Mr Chen 5d0b8b1877 Update layout.html 2024-05-17 01:01:48 +08:00
Mr Chen e944c9fbc5 Update layout.html 2024-05-17 01:01:16 +08:00
Mr Chen 8cab94e26c Update config_api.py 2024-05-17 00:45:56 +08:00
Mr Chen edb26fd11c update 2024-05-17 00:44:52 +08:00
Mr Chen cfd3a07046 Update mysql.js 2024-05-17 00:32:27 +08:00
Mr Chen 8d4ffc431a Update index.py 2024-05-17 00:21:37 +08:00
Mr Chen 22b97ab255 updatae 2024-05-17 00:21:06 +08:00
Mr Chen 8cfc5c5344 Update stats.js 2024-05-16 21:09:10 +08:00
Mr Chen 01c9633a1b Update index.py 2024-05-16 20:32:22 +08:00
Mr Chen 160634d3d4 Update index.py 2024-05-16 20:09:21 +08:00
Mr Chen 59b4ec32a6 Update index.py 2024-05-16 19:58:22 +08:00
Mr Chen 08a2295cdc Update index.py 2024-05-16 19:57:51 +08:00
Mr Chen fb7dbd69e5 Update index.py 2024-05-16 19:43:55 +08:00
Mr Chen c212a30536 Update index.py 2024-05-16 19:42:04 +08:00
Mr Chen 7a7acd3a4d Update index.py 2024-05-16 19:39:45 +08:00
Mr Chen f5edd83164 Update index.py 2024-05-16 19:04:38 +08:00
Mr Chen 8ea3ac1a3c Update index.py 2024-05-16 19:04:21 +08:00
Mr Chen d241ceea3e Update index.py 2024-05-16 18:55:07 +08:00
Mr Chen 6b3f50374a Update index.py 2024-05-16 18:32:59 +08:00
Mr Chen b3ceb03365 Update index.py 2024-05-16 18:25:20 +08:00
Mr Chen 87b26a14df Update mysql.js 2024-05-16 18:25:02 +08:00
Mr Chen 9046a09c0a Update mysql.js 2024-05-16 18:18:22 +08:00
Mr Chen 8bbfdbbf66 Update index.py 2024-05-16 17:57:46 +08:00
Mr Chen fa2d5c690c Update index.py 2024-05-16 17:46:25 +08:00
Mr Chen 681dfc96cb update 2024-05-16 16:33:19 +08:00
Mr Chen 362f5eb427 Update index.py 2024-05-16 16:28:07 +08:00
Mr Chen b033bd1c73 Update index.py 2024-05-16 16:17:04 +08:00
Mr Chen ea94fa21d5 Update index.py 2024-05-16 16:14:51 +08:00
Mr Chen 36c1541179 Update index.py 2024-05-16 16:13:05 +08:00
Mr Chen d5864db956 update 2024-05-15 23:56:52 +08:00
Mr Chen 00008b657c Update index.py 2024-05-15 21:11:29 +08:00
Mr Chen 3abed25d71 Update index.py 2024-05-15 20:52:58 +08:00
Mr Chen 862ea95a77 Update index.py 2024-05-15 20:22:58 +08:00
Mr Chen 63d624d084 Update index.py 2024-05-15 20:11:59 +08:00
Mr Chen c580076307 Update index.py 2024-05-15 20:01:59 +08:00
Mr Chen 3fada81661 Update index.py 2024-05-15 20:00:36 +08:00
Mr Chen a3bd0c6bda Update index.py 2024-05-15 20:00:19 +08:00
Mr Chen 454b036908 Update index.py 2024-05-15 20:00:01 +08:00
Mr Chen 1af9b1ddaa Update index.py 2024-05-15 19:59:35 +08:00
Mr Chen 5818fb46f1 Update mysql.js 2024-05-15 19:36:15 +08:00
Mr Chen 1069fd5252 Update index.py 2024-05-15 19:33:53 +08:00
Mr Chen 76229b6651 Update index.py 2024-05-15 19:31:30 +08:00
Mr Chen 4c9e717559 Update index.py 2024-05-15 19:30:04 +08:00
Mr Chen 9ae61517a4 Update index.py 2024-05-15 19:20:02 +08:00
Mr Chen 952a173535 Update index.py 2024-05-15 19:11:28 +08:00
Mr Chen 5b9b03a153 Update index.py 2024-05-15 19:09:01 +08:00
Mr Chen 9475dbecfe Update index.py 2024-05-15 18:56:38 +08:00
Mr Chen 5a64835969 Update index.py 2024-05-15 18:56:00 +08:00
Mr Chen 8685f21ad9 Update index.py 2024-05-15 18:50:52 +08:00
Mr Chen 500ccff90b update 2024-05-15 17:48:41 +08:00
Mr Chen 85adb449c2 Update index.py 2024-05-15 17:38:49 +08:00
Mr Chen aa6748c09d Update index.py 2024-05-15 17:32:11 +08:00
Mr Chen 05992b5f82 Update index.py 2024-05-15 17:31:49 +08:00
Mr Chen 1a48e880d0 update 2024-05-15 17:29:02 +08:00
Mr Chen 1da749aea9 Update index.py 2024-05-15 14:45:23 +08:00
Mr Chen bf121ee6f8 Update index.py 2024-05-15 14:41:19 +08:00
Mr Chen 6b6e1f415f Update index.py 2024-05-15 14:40:33 +08:00
Mr Chen 5535d56304 Update index.py 2024-05-15 14:30:56 +08:00
Mr Chen bbc0dee2b6 Update index.py 2024-05-15 14:28:23 +08:00
Mr Chen 1da8f6bbb6 update 2024-05-15 14:21:43 +08:00
Mr Chen de15101a76 Update orm.py 2024-05-15 14:06:17 +08:00
Mr Chen ee99d14df3 Update index.py 2024-05-15 14:03:41 +08:00
Mr Chen 7bff08b3e5 Update index.py 2024-05-15 14:02:10 +08:00
Mr Chen faca0b183e update 2024-05-15 13:59:59 +08:00
Mr Chen 700b9a7c61 Update index.py 2024-05-15 13:53:30 +08:00
Mr Chen 53952d267e Update index.py 2024-05-15 13:42:57 +08:00
Mr Chen ff52646fd2 Update index.py 2024-05-15 13:40:00 +08:00
Mr Chen 1dcd4520f1 Update index.py 2024-05-15 13:37:23 +08:00
Mr Chen 21d86f0583 Update index.py 2024-05-15 13:33:08 +08:00
Mr Chen 3e95e3aaf2 Update index.py 2024-05-15 13:28:46 +08:00
Mr Chen 29c7367906 Update index.py 2024-05-15 13:01:44 +08:00
Mr Chen fc1e23f12d Update index.py 2024-05-15 12:31:52 +08:00
Mr Chen ae4af02909 Update index.py 2024-05-15 12:27:54 +08:00
Mr Chen 6b8716ae59 Update index.py 2024-05-15 12:07:57 +08:00
Mr Chen 661faf8503 Update index.py 2024-05-15 11:57:58 +08:00
Mr Chen d0881ff3eb Update index.py 2024-05-15 06:04:24 +08:00
Mr Chen b708d4821a Update index.py 2024-05-15 05:59:39 +08:00
Mr Chen 2f18bf5fb2 Update index.py 2024-05-15 05:50:25 +08:00
Mr Chen 2079076638 Update index.py 2024-05-15 05:42:44 +08:00
Mr Chen 6ec2e4f29f Update index.py 2024-05-15 05:41:51 +08:00
Mr Chen a07ed61305 Update index.py 2024-05-15 05:38:59 +08:00
Mr Chen 8031ea2c45 Update index.py 2024-05-15 05:35:14 +08:00
Mr Chen 24d3fc18d6 Update index.py 2024-05-15 05:05:29 +08:00
Mr Chen 4b200765aa Update index.py 2024-05-15 05:02:01 +08:00
Mr Chen 994ee32fbf Update index.py 2024-05-15 05:00:03 +08:00
Mr Chen c6a742a932 Update index.py 2024-05-15 04:57:51 +08:00
Mr Chen 478e03bca1 Update index.py 2024-05-15 04:42:42 +08:00
Mr Chen f4cff7bcf7 Update index.py 2024-05-15 04:35:52 +08:00
Mr Chen ff7d2f358e Update index.py 2024-05-15 04:35:12 +08:00
Mr Chen e114b07d7d Update index.py 2024-05-15 04:30:04 +08:00
Mr Chen 272b13b29c Update index.py 2024-05-15 04:24:13 +08:00
Mr Chen 8d875fe589 Update index.py 2024-05-15 04:23:17 +08:00
Mr Chen e85e6a7299 update 2024-05-15 04:22:14 +08:00
Mr Chen e8a3f8b014 Update orm.py 2024-05-15 04:16:49 +08:00
Mr Chen 585cd8b532 update_dev 2024-05-15 04:06:15 +08:00
Mr Chen c89ee89061 Update index.py 2024-05-15 01:20:42 +08:00
Mr Chen ea7310502f Update index.py 2024-05-15 01:19:02 +08:00
Mr Chen 507b34797d Update backup.py 2024-05-15 01:18:56 +08:00
Mr Chen 7baecfc4a0 Update README.md 2024-05-14 23:57:17 +08:00
Mr Chen 8a1b64a524 Update index.py 2024-05-14 23:21:44 +08:00
Mr Chen 89052225f9 Update index.py 2024-05-14 23:20:55 +08:00
Mr Chen b4c0030baa Update index.py 2024-05-14 23:20:26 +08:00
Mr Chen 342dfe407c Create README.md 2024-05-14 22:36:37 +08:00
Mr Chen f9020d3c7f Update index.py 2024-05-14 22:24:08 +08:00
Mr Chen d9eb331f32 Update index.py 2024-05-14 22:23:24 +08:00
Mr Chen bc9b5ab511 Update install.sh 2024-05-14 21:48:55 +08:00
Mr Chen b71e3196b8 Update index.py 2024-05-14 21:38:07 +08:00
Mr Chen 69b8c609aa Update index.py 2024-05-14 21:36:07 +08:00
Mr Chen b1ff41350c Update index.py 2024-05-14 21:02:24 +08:00
Mr Chen ddc9defe51 Update index.py 2024-05-14 20:59:46 +08:00
Mr Chen 2942e47630 Update backup.py 2024-05-14 20:58:49 +08:00
Mr Chen b825ed9c76 Update index.py 2024-05-14 20:56:01 +08:00
Mr Chen 5d2dd11163 Update index.py 2024-05-14 20:54:47 +08:00
Mr Chen 253de5e70f Update index.py 2024-05-14 20:11:59 +08:00
Mr Chen a1e900f5c9 Update index.py 2024-05-14 19:25:18 +08:00
Mr Chen cf44889c74 Update index.py 2024-05-14 19:25:00 +08:00
Mr Chen abd48636ab Update index.py 2024-05-14 19:03:17 +08:00
Mr Chen cc0cdd62b8 Update index.py 2024-05-14 16:24:33 +08:00
Mr Chen 0b95db3bd5 Update index.py 2024-05-14 16:13:06 +08:00
Mr Chen d473f0769f Update mongodb.js 2024-05-14 16:11:23 +08:00
Mr Chen dd498c2cfc update 2024-05-14 14:12:21 +08:00
Mr Chen 77b4d0452a Update mongodb.sh 2024-05-13 23:18:00 +08:00
Mr Chen 924e1ddbec Update layout.html 2024-05-13 22:35:10 +08:00
Mr Chen 3213cee5f8 Update mongodb.sh 2024-05-13 20:50:45 +08:00
Mr Chen 9fbf09f2ef Create tidb_debug.yaml 2024-05-13 10:41:00 +08:00
Mr Chen fd3e074cc3 Update install.sh 2024-05-13 03:18:02 +08:00
Mr Chen 574007da2c Update stats.js 2024-05-13 02:47:13 +08:00
Mr Chen ec6c1b2024 Update nginx.conf 2024-05-12 16:09:36 +08:00
Mr Chen 0dd6f47b2a Update index.py 2024-05-12 15:59:19 +08:00
Mr Chen 968827480e Update install.sh 2024-05-12 14:42:07 +08:00
Mr Chen 4bce8bb56d Update index.py 2024-05-12 14:35:53 +08:00
Mr Chen 00fa001c91 update 2024-05-12 14:27:36 +08:00
Mr Chen 2f65839b9a Update index.py 2024-05-12 14:17:49 +08:00
Mr Chen c0aa4bcc1e Update mongodb.js 2024-05-12 14:10:52 +08:00
Mr Chen 4bb345abc4 update 2024-05-12 14:06:56 +08:00
Mr Chen 3d552379bc update 2024-05-12 12:55:14 +08:00
Mr Chen 2de399b70f Update index.py 2024-05-12 12:46:41 +08:00
Mr Chen 7952570b45 update 2024-05-12 10:58:12 +08:00
Mr Chen 00269662bf Create tidb.yaml 2024-05-12 01:25:10 +08:00
Mr Chen fb6dbde4c9 Update config_api.py 2024-05-12 01:18:49 +08:00
Mr Chen 66a9ca2a5a Update files.js 2024-05-12 01:18:32 +08:00
Mr Chen 2e9561dd86 Update files_api.py 2024-05-12 01:10:04 +08:00
Mr Chen 47ff1e4458 Update r3.7.txt 2024-05-12 00:28:20 +08:00
Mr Chen 9f49595bad Update r3.6.txt 2024-05-12 00:28:08 +08:00
Mr Chen 3e6f4f32d5 Update install.sh 2024-05-11 23:42:26 +08:00
Mr Chen ae69d58ee8 Update install.sh 2024-05-11 23:40:45 +08:00
Mr Chen 1788054cc4 Update install.sh 2024-05-11 22:14:51 +08:00
Mr Chen 20b20d3cce Update index.py 2024-05-11 22:13:53 +08:00
Mr Chen 3fc3d90b6f Update install.sh 2024-05-11 22:09:57 +08:00
Mr Chen cef6db80a2 Update install.sh 2024-05-11 22:08:06 +08:00
Mr Chen 59aab80eab Update install.sh 2024-05-11 22:03:56 +08:00
Mr Chen 53c2c71d3e Update install.sh 2024-05-11 21:56:24 +08:00
Mr Chen d9d814202a Update install.sh 2024-05-11 21:51:40 +08:00
Mr Chen 941dbecfa2 Update index.py 2024-05-11 21:48:05 +08:00
Mr Chen cb7228c681 Update index.py 2024-05-11 21:47:55 +08:00
Mr Chen 7ac1cb2944 Update index.py 2024-05-11 21:47:46 +08:00
Mr Chen 0262d29218 Update install.sh 2024-05-11 21:46:48 +08:00
Mr Chen 5a955c2a33 tidb插件init 2024-05-11 20:21:07 +08:00
Mr Chen dd25ebe1e9 Merge pull request #574 from midoks/dev
修复
2024-05-11 13:54:29 +08:00
Mr Chen e92151c9c5 Update site_api.py 2024-05-11 13:52:52 +08:00
Mr Chen 16cc3eab40 Update site_api.py 2024-05-11 13:52:39 +08:00
Mr Chen 87138fc41f Merge pull request #573 from midoks/dev
迁移加入版本判断
2024-05-11 12:38:52 +08:00
Mr Chen 0787bff959 Update index.py 2024-05-11 12:36:57 +08:00
Mr Chen 8fc6855936 Merge pull request #572 from midoks/dev
mysql 不锁表导出
2024-05-11 12:13:27 +08:00
Mr Chen 43f21b4d58 Update backup.py 2024-05-11 12:06:59 +08:00
Mr Chen 56e75bc4cf Update backup.py 2024-05-11 11:59:38 +08:00
Mr Chen 10190201c7 Update backup.py 2024-05-11 11:46:49 +08:00
Mr Chen 3db2aa0034 Merge pull request #571 from midoks/dev
Update site_api.py
2024-05-11 11:08:09 +08:00
Mr Chen 9fa93b5c84 Update site_api.py 2024-05-11 11:07:23 +08:00
Mr Chen fe3e9eec35 Merge pull request #570 from midoks/dev
调优
2024-05-10 17:40:28 +08:00
Mr Chen 86a3922d4f Update index.html 2024-05-10 17:38:48 +08:00
Mr Chen aa50658245 update 2024-05-10 17:36:06 +08:00
Mr Chen 8cd78d7dea Update index.js 2024-05-10 17:25:19 +08:00
Mr Chen f33bfa214f Merge pull request #569 from midoks/dev
Update README.md
2024-05-10 16:26:26 +08:00
Mr Chen e231c38f1d Update README.md 2024-05-10 16:25:20 +08:00
Mr Chen a6a3cf7882 Merge pull request #568 from midoks/dev
0.16.8
2024-05-10 15:34:21 +08:00
Mr Chen a1afe5e846 0.16.8
- 首页对网络/磁盘IO进行更细致的展示。
2024-05-10 15:30:49 +08:00
Mr Chen 594e8c4b2b update 2024-05-10 14:36:38 +08:00
Mr Chen cc015bad61 update 2024-05-10 14:35:51 +08:00
Mr Chen bc9461dea6 update 2024-05-10 13:32:46 +08:00
Mr Chen 0a25598c15 Update config_api.py 2024-05-10 12:14:05 +08:00
Mr Chen 7a9a8a08b6 Update index.js 2024-05-10 12:13:51 +08:00
Mr Chen 8eb728defa index加入io统计展示 2024-05-10 12:04:21 +08:00
Mr Chen 7f8ffbf178 Update site.css 2024-05-10 04:36:43 +08:00
Mr Chen cb0027e903 Update system_api.py 2024-05-10 04:23:48 +08:00
Mr Chen e0ebdd922d Update site.css 2024-05-10 02:16:49 +08:00
Mr Chen d6f43a86c9 Update system_api.py 2024-05-10 02:16:39 +08:00
Mr Chen dfe7becdb1 Update system_api.py 2024-05-09 23:43:16 +08:00
Mr Chen 57f4162cb8 Update mongodb.js 2024-05-09 01:08:14 +08:00
Mr Chen a9ce4f2e23 Update mongodb.js 2024-05-09 01:05:03 +08:00
Mr Chen b501d62d91 Update mongodb.js 2024-05-09 01:03:41 +08:00
Mr Chen 45ffba1559 Merge pull request #567 from midoks/dev
mysql手动导入大文件sql
2024-05-08 17:02:59 +08:00
Mr Chen 28d0fbe106 手动导入大文件sql 2024-05-08 17:01:58 +08:00
Mr Chen eeb8fee3b3 Merge pull request #566 from midoks/dev
日志清理-改成每隔7天
2024-05-08 12:59:59 +08:00
Mr Chen 0e1fbdcfb9 update 2024-05-08 12:58:55 +08:00
Mr Chen df2744816b Merge pull request #565 from midoks/dev
php更新和安装脚本加入pv命令
2024-05-08 12:34:20 +08:00
Mr Chen 862c09778a Update euler.sh 2024-05-08 12:32:52 +08:00
Mr Chen 8f9a1888ff update 2024-05-08 12:32:37 +08:00
Mr Chen 66351dc3a7 update 2024-05-08 12:28:50 +08:00
Mr Chen 55c4709c93 Merge pull request #564 from midoks/dev
日志清理优化
2024-05-08 01:33:02 +08:00
Mr Chen e27ae42270 Update index.py 2024-05-08 01:27:23 +08:00
Mr Chen 70805de98e Update index.py 2024-05-08 01:26:43 +08:00
Mr Chen c0e09e43a2 Update index.py 2024-05-08 01:25:58 +08:00
Mr Chen b69a32c81f Update index.py 2024-05-08 01:20:29 +08:00
Mr Chen 2431833cce Update index.py 2024-05-08 01:19:53 +08:00
Mr Chen a85d8ec429 Update index.html 2024-05-08 01:15:59 +08:00
Mr Chen ce5a6edeea Update tool_task.py 2024-05-08 01:13:34 +08:00
Mr Chen aa195dea2c Update tool_task.py 2024-05-08 00:52:51 +08:00
Mr Chen 840a3c5911 Update layout.html 2024-05-08 00:27:09 +08:00
Mr Chen ca87ab78b3 Update layout.html 2024-05-08 00:11:04 +08:00
Mr Chen d9fc411168 Update layout.html 2024-05-08 00:00:37 +08:00
Mr Chen e468ab16eb Merge pull request #563 from midoks/dev
细节优化
2024-05-07 20:26:43 +08:00
Mr Chen c545062d07 Update index.py 2024-05-07 20:24:05 +08:00
Mr Chen e620fd67e3 Merge pull request #562 from midoks/dev
mongodb删除保护
2024-05-07 20:18:53 +08:00
Mr Chen aa9a412e9a mongodb删除保护 2024-05-07 20:18:23 +08:00
Mr Chen ad63a22a7e Merge pull request #561 from midoks/dev
0.16.7
2024-05-07 20:08:54 +08:00
Mr Chen 5b1e4d3e0a 0.16.7
- mongodb副本设置/备份/认证。
2024-05-07 20:08:11 +08:00
Mr Chen 110e9b501e 优化 2024-05-07 01:27:09 +08:00
Mr Chen 26de973b82 Update mongodb.js 2024-05-07 01:02:15 +08:00
Mr Chen 9adc0a8c38 Update index.py 2024-05-06 17:51:26 +08:00
Mr Chen 08f75685fb Update index.py 2024-05-06 17:17:58 +08:00
Mr Chen dc59f24ce2 Update index.py 2024-05-06 17:17:36 +08:00
Mr Chen 869843da82 Update index.py 2024-05-06 17:17:08 +08:00
Mr Chen 01055e3403 Update mongodb.sql 2024-05-06 17:07:08 +08:00
Mr Chen 43cfbc90a2 Update index.py 2024-05-06 17:02:37 +08:00
Mr Chen 270fb15ebf Update index.py 2024-05-06 17:01:05 +08:00
Mr Chen 4e7e4f5fb4 Update index.py 2024-05-06 16:57:47 +08:00
Mr Chen 67530acf1d Update index.py 2024-05-06 16:42:10 +08:00
Mr Chen 7a86ba4444 Update index.py 2024-05-06 15:20:56 +08:00
Mr Chen f4f29784d7 Update index.py 2024-05-06 15:20:34 +08:00
Mr Chen fafa64f2c7 Update index.py 2024-05-06 02:28:01 +08:00
Mr Chen 41c7b0fb70 Update index.py 2024-05-06 02:13:59 +08:00
Mr Chen a779caea41 Update index.py 2024-05-06 02:11:37 +08:00
Mr Chen a8b97bf6d7 Update index.py 2024-05-06 01:33:14 +08:00
Mr Chen b31bfcb88a Update index.py 2024-05-06 01:24:55 +08:00
Mr Chen dbb95228b1 Update backup.py 2024-05-06 01:24:16 +08:00
Mr Chen 5ad4772c33 Update index.py 2024-05-06 01:14:07 +08:00
Mr Chen b270c1bfdc Update mongodb.js 2024-05-06 01:10:39 +08:00
Mr Chen c8ccf4b1c8 Update backup.py 2024-05-06 00:51:28 +08:00
Mr Chen 6eb21ffbf9 Update backup.py 2024-05-06 00:51:17 +08:00
Mr Chen 58ce8db1d0 update 2024-05-06 00:49:48 +08:00
Mr Chen 8b1bf28cf7 Update backup.py 2024-05-06 00:44:20 +08:00
Mr Chen 0e98e114fa Update index.py 2024-05-06 00:16:51 +08:00
Mr Chen 4c93cd77e0 Update index.py 2024-05-06 00:13:10 +08:00
Mr Chen 7044d27ca9 Update info.json 2024-05-05 23:46:52 +08:00
Mr Chen 9168af0a9c Update index.py 2024-05-05 23:36:34 +08:00
Mr Chen f893eec0e4 Update index.py 2024-05-05 20:27:58 +08:00
Mr Chen 574c7558b4 Update mongodb.js 2024-05-05 20:08:37 +08:00
Mr Chen 4901910a71 update 2024-05-05 20:07:36 +08:00
Mr Chen 286be2a9f6 Update index.py 2024-05-05 20:03:18 +08:00
Mr Chen fed18880be Update index.py 2024-05-05 19:54:18 +08:00
Mr Chen b862cd2413 Update index.py 2024-05-05 19:53:34 +08:00
Mr Chen 8c652c99da Update index.py 2024-05-05 19:50:42 +08:00
Mr Chen 728677c702 update 2024-05-05 19:46:45 +08:00
Mr Chen 4a023531e4 Update index.py 2024-05-05 18:21:50 +08:00
Mr Chen 8d27ffbe91 update 2024-05-05 18:03:40 +08:00
Mr Chen afa32231ad mongodb备份 2024-05-05 17:49:29 +08:00
Mr Chen e693d15a04 Update mongodb.js 2024-05-05 14:50:21 +08:00
Mr Chen 814d0cb925 update 2024-05-05 14:44:37 +08:00
Mr Chen 6d95f7fd82 update 2024-05-05 14:43:41 +08:00
Mr Chen 979c1fc530 Update index.py 2024-05-05 14:40:50 +08:00
Mr Chen c147ccd079 update 2024-05-05 14:25:47 +08:00
Mr Chen 71b64b19a1 Update index.py 2024-05-05 13:51:59 +08:00
Mr Chen fdac352244 update 2024-05-05 13:45:50 +08:00
Mr Chen da5de004c4 Update backup.py 2024-05-05 12:34:29 +08:00
Mr Chen 8108ca7ee6 Update backup.py 2024-05-05 12:12:23 +08:00
Mr Chen ba2fbbeb41 Update mongodb.conf 2024-05-05 11:01:50 +08:00
Mr Chen 614e7af3c4 Update debian.sh 2024-05-04 22:26:14 +08:00
Mr Chen ec67913cda update 2024-05-04 22:26:09 +08:00
Mr Chen 847353374f update 2024-05-04 21:44:32 +08:00
Mr Chen 239d1de0ec Create backup.py 2024-05-04 18:05:55 +08:00
Mr Chen 5fefbb46a7 Update index.py 2024-05-04 18:00:10 +08:00
Mr Chen 4288ccfc0c Update index.py 2024-05-04 17:28:18 +08:00
Mr Chen 367aeddd2d Update index.py 2024-05-04 16:24:57 +08:00
Mr Chen 76ec5b58cd up 2024-05-04 16:14:27 +08:00
Mr Chen f0cc9e2d54 update 2024-05-04 16:02:44 +08:00
Mr Chen b3630699ce Update mongodb.js 2024-05-04 15:49:33 +08:00
Mr Chen dfe9a10a47 Update mongodb.js 2024-05-04 15:45:46 +08:00
Mr Chen c34405a4d6 Update index.py 2024-05-04 15:37:18 +08:00
Mr Chen 3068e3b033 Update index.py 2024-05-04 15:28:09 +08:00
Mr Chen 10db173b31 Update index.py 2024-05-04 15:26:18 +08:00
Mr Chen 3db40877cd Update index.py 2024-05-04 15:24:44 +08:00
Mr Chen adc7f2fe98 Update index.py 2024-05-04 15:24:27 +08:00
Mr Chen 6dc81175ea Update mongodb.js 2024-05-04 15:22:13 +08:00
Mr Chen c64183abe9 Update index.py 2024-05-04 14:44:27 +08:00
Mr Chen 8eb2403e4b update 2024-05-04 14:34:38 +08:00
Mr Chen 4c2178ea9c Update index.py 2024-05-03 19:26:25 +08:00
Mr Chen 6702fb94a0 update 2024-05-03 19:01:34 +08:00
Mr Chen c4bc66e410 update 2024-05-03 18:30:50 +08:00
Mr Chen 54a6a121ac Update index.py 2024-05-03 16:25:47 +08:00
Mr Chen 1bb92d7f38 Update install.sh 2024-05-03 16:19:30 +08:00
Mr Chen 9a99a5e1c6 Update index.py 2024-05-03 16:16:16 +08:00
Mr Chen eeeff6e825 update 2024-05-03 16:07:55 +08:00
Mr Chen 8ee5b0a4aa update 2024-05-03 16:00:09 +08:00
Mr Chen 4ee5e41882 update 2024-05-03 12:05:02 +08:00
Mr Chen 8c4820046a Update index.py 2024-05-03 00:48:08 +08:00
Mr Chen 1b6f54e6a5 update 2024-05-03 00:45:28 +08:00
Mr Chen 9ae7644710 updatte 2024-05-02 19:58:58 +08:00
Mr Chen 0ab87b1da5 update 2024-05-02 19:15:13 +08:00
Mr Chen 6b7457e660 Update mongodb.js 2024-05-02 15:53:28 +08:00
Mr Chen b81deee461 up 2024-05-02 15:52:10 +08:00
Mr Chen 59211703f8 Update index.py 2024-05-01 23:55:28 +08:00
Mr Chen 3271e76d34 Update index.py 2024-05-01 23:50:45 +08:00
Mr Chen dca0955bb6 update 2024-05-01 23:48:40 +08:00
Mr Chen 7af78883cc Update index.html 2024-05-01 20:35:23 +08:00
Mr Chen 0f2db3f144 Update mongodb.js 2024-05-01 20:34:09 +08:00
Mr Chen eb2c476b28 update 2024-05-01 20:33:36 +08:00
Mr Chen 99a57d29af Update php.js 2024-05-01 17:54:17 +08:00
Mr Chen ed0afb6b86 Update requirements.txt 2024-05-01 11:22:59 +08:00
Mr Chen 2f005cbadd update 2024-05-01 03:36:34 +08:00
Mr Chen 7bac4e0a6b Update setting.py 2024-05-01 03:13:28 +08:00
Mr Chen 2dad4189c8 up 2024-04-30 17:18:30 +08:00
Mr Chen 5c1fe49e1b update 2024-04-30 17:18:17 +08:00
Mr Chen 9a5cd7e834 Update mongodb.conf 2024-04-30 14:49:37 +08:00
Mr Chen 78a032a18b upda 2024-04-30 11:15:00 +08:00
Mr Chen b99a9d7d2f Update nosql_mongodb.py 2024-04-29 23:40:01 +08:00
Mr Chen 36c9628695 Update nosql_mongodb.py 2024-04-29 23:38:59 +08:00
Mr Chen ccd7468ffe Update nosql_mongodb.py 2024-04-29 23:37:41 +08:00
Mr Chen 129b244ea9 Update nosql_mongodb.py 2024-04-29 23:36:17 +08:00
Mr Chen 716e39f947 Update index.py 2024-04-29 23:32:41 +08:00
Mr Chen a0167e7cf2 Update nosql_mongodb.py 2024-04-29 23:26:55 +08:00
Mr Chen 2c6dea64ab Update index.py 2024-04-29 22:49:07 +08:00
Mr Chen 9605676dbe update 2024-04-29 22:40:15 +08:00
Mr Chen a4e7be46fb Update debian.sh 2024-04-29 22:38:06 +08:00
Mr Chen e2ce520041 Update debian.sh 2024-04-29 22:34:34 +08:00
Mr Chen d1fc41682e Update debian.sh 2024-04-29 22:33:11 +08:00
Mr Chen 56918a1ba2 Update debian.sh 2024-04-29 22:32:42 +08:00
Mr Chen 869788028c Update debian.sh 2024-04-29 22:32:01 +08:00
Mr Chen a262c6c0b7 update 2024-04-29 22:24:59 +08:00
Mr Chen 54682ef02c Update index.py 2024-04-29 21:47:53 +08:00
Mr Chen 093bf3910b Update index.py 2024-04-29 21:22:31 +08:00
Mr Chen 0b65f50b4b Update index.py 2024-04-29 21:21:35 +08:00
Mr Chen a1995772ef Update index.py 2024-04-29 21:20:34 +08:00
Mr Chen fcef433ba3 Update index.py 2024-04-29 21:20:14 +08:00
Mr Chen 6950f0c7c9 Update index.py 2024-04-29 21:18:04 +08:00
Mr Chen e987c4d27e up 2024-04-29 19:45:58 +08:00
Mr Chen 25c72b299e update 2024-04-29 18:35:19 +08:00
Mr Chen 8f4f182064 Merge pull request #559 from midoks/dev
文件名排序
2024-04-29 16:05:44 +08:00
Mr Chen 2cd37b988f update 2024-04-29 16:04:49 +08:00
Mr Chen 040ef6e22b Update index.py 2024-04-29 15:22:12 +08:00
Mr Chen 5dfd0508da Update index.py 2024-04-29 15:19:37 +08:00
Mr Chen b0b043f432 Update index.py 2024-04-29 14:59:37 +08:00
Mr Chen cfe063a6e7 Update index.py 2024-04-29 14:59:00 +08:00
Mr Chen 22a5e147d2 Merge pull request #558 from midoks/dev
mysql8.3配置
2024-04-28 13:37:06 +08:00
Mr Chen 648e4b3866 Update index.py 2024-04-28 13:34:26 +08:00
Mr Chen ffb5a66042 Create my8.3.cnf 2024-04-28 12:37:43 +08:00
Mr Chen e1593b67fc Update install.sh 2024-04-27 13:18:52 +08:00
Mr Chen 871d7ef535 Update info.json 2024-04-27 13:17:59 +08:00
Mr Chen ac32c639fa update 2024-04-27 13:16:46 +08:00
Mr Chen 997c8194b6 Merge pull request #557 from midoks/dev
网站统计优化
2024-04-26 20:17:18 +08:00
Mr Chen 7334ec38fb update 2024-04-26 20:00:54 +08:00
Mr Chen cafc7989e9 Update requirements.txt 2024-04-26 15:26:50 +08:00
Mr Chen 2354d484ee Update __init__.py 2024-04-26 15:23:49 +08:00
Mr Chen f7ebdcb182 Update __init__.py 2024-04-26 15:09:53 +08:00
Mr Chen 8305dc0ebe update 2024-04-26 15:09:37 +08:00
Mr Chen 5923042bf1 update 2024-04-26 15:07:50 +08:00
Mr Chen 00b162771f Update webstats_index.py 2024-04-26 15:03:43 +08:00
Mr Chen 4b9ab17fcb Update webstats_index.py 2024-04-26 15:01:03 +08:00
Mr Chen 946bd36e66 Update webstats_index.py 2024-04-26 14:50:10 +08:00
Mr Chen 42f4e419cd Merge pull request #556 from midoks/dev
网站统计优化
2024-04-26 13:48:48 +08:00
Mr Chen f7c8b8cdb5 Update swoole.sh 2024-04-26 13:43:12 +08:00
Mr Chen fdf8f30d90 Update stats.js 2024-04-26 13:34:37 +08:00
Mr Chen 0f1127e502 Update stats.js 2024-04-26 13:29:34 +08:00
Mr Chen 12c59f6ac6 统计查询优化 2024-04-26 13:15:08 +08:00
Mr Chen 1f3414f5bc Update phplib.conf 2024-04-25 21:48:47 +08:00
Mr Chen 94a6a3f64d Merge pull request #555 from midoks/dev
切换获取ip的地址
2024-04-25 19:32:18 +08:00
Mr Chen 812a520c43 Merge branch 'master' into dev 2024-04-25 19:27:38 +08:00
Mr Chen a48429f9f8 Update tools.py 2024-04-25 19:19:57 +08:00
Mr Chen 9aa4bdfd19 Merge pull request #554 from midoks/dev
debian/ubuntu 443/udp ufw防火墙默认开启。
2024-04-24 22:55:48 +08:00
Mr Chen 7c3cde83df Merge branch 'master' into dev 2024-04-24 22:53:51 +08:00
Mr Chen af00b1b127 Merge pull request #553 from jd82k/master
修复提交正则过滤时,因为正则中存在冒号,错误的将所有的冒号用于分割,应该只使用第一个冒号分割
2024-04-24 22:52:52 +08:00
jd82k 8a0e8e9c17 增加了一些非法扫描器及脚本
通过1年的日志分析,收集了一些非法扫描器、脚本、爬虫的UA
2024-04-24 22:42:05 +08:00
Mr Chen 982ee4f60f Merge branch 'master' into dev 2024-04-24 22:40:48 +08:00
jd82k c735dab40d 修复提交正则过滤时,因为正则中存在冒号,错误的将所有的冒号用于分割,应该只使用第一个冒号分割 2024-04-24 22:23:37 +08:00
Mr Chen 32b8cdf9bc Merge pull request #552 from jd82k/master
修复笔误
2024-04-24 16:56:19 +08:00
jd82k fd7fa885ca 修复笔误 2024-04-24 16:50:05 +08:00
Mr Chen f4642d3b69 Merge branch 'master' into dev 2024-04-24 16:07:38 +08:00
Mr Chen f54be91744 Merge pull request #551 from jd82k/master
修复数据类型错误导致的openresty lua error 从而使得useragent匹配失效的bug
2024-04-24 16:06:40 +08:00
jd82k 4ecbfb3e58 修复数据类型错误导致的openresty lua error 从而使得useragent匹配失效的bug 2024-04-24 14:52:07 +08:00
Mr Chen 309cf2825e update 2024-04-24 11:32:41 +08:00
Mr Chen ecbc0f6afe Update plugins_api.py 2024-04-21 17:49:38 +08:00
Mr Chen c402a1dc79 update 2024-04-20 13:25:02 +08:00
Mr Chen c949e8d0f2 Merge pull request #549 from midoks/dev
centos7的python库安装优化
2024-04-18 11:08:50 +08:00
Mr Chen 195446ef86 update 2024-04-18 11:05:40 +08:00
Mr Chen e6a1fe58bc Update requirements.txt 2024-04-18 11:03:32 +08:00
Mr Chen 3a9b1b374d Update site_api.py 2024-04-18 00:04:14 +08:00
Mr Chen 8bb0e744bb Merge pull request #548 from midoks/dev
常规更新
2024-04-17 23:44:25 +08:00
Mr Chen 1182894326 Update nginx.conf 2024-04-17 23:43:46 +08:00
Mr Chen 77b03f4a21 Update site_api.py 2024-04-17 23:41:38 +08:00
Mr Chen 72bc30e188 Update install.sh 2024-04-17 23:25:32 +08:00
Mr Chen 35c789fc00 Merge pull request #547 from midoks/dev
部分php扩展更新
2024-04-17 18:58:35 +08:00
Mr Chen 738bf5d441 Update gd_old.sh 2024-04-17 18:55:26 +08:00
Mr Chen 22a62e6cb8 Update gd_old.sh 2024-04-17 18:53:57 +08:00
Mr Chen a63a1b8b51 Update xdebug.sh 2024-04-17 18:47:30 +08:00
Mr Chen c51f885653 Update gd_old.sh 2024-04-17 18:44:46 +08:00
Mr Chen 266a23b7eb Update swoole.sh 2024-04-17 18:39:38 +08:00
Mr Chen 48603b14da Update phplib.conf 2024-04-17 18:37:19 +08:00
Mr Chen 7e7e19455e Update event.sh 2024-04-17 18:37:09 +08:00
Mr Chen 7657ccb94e Update event.sh 2024-04-17 18:31:40 +08:00
Mr Chen 80ade55b69 Merge pull request #546 from midoks/dev
reuseport
2024-04-17 18:28:00 +08:00
Mr Chen a643c9b5f4 Update site_api.py 2024-04-17 18:25:53 +08:00
Mr Chen 15dc4ae7cf Update site_api.py 2024-04-17 17:56:43 +08:00
Mr Chen 030734cc93 Merge pull request #545 from midoks/dev
http/3调整
2024-04-17 17:54:09 +08:00
Mr Chen 1439d4edf6 Update site_api.py 2024-04-17 17:52:22 +08:00
Mr Chen d6a816b06e Update site_api.py 2024-04-17 17:40:00 +08:00
Mr Chen b6e1f46379 Update site_api.py 2024-04-17 17:38:08 +08:00
Mr Chen d926a69b59 Update site_api.py 2024-04-17 17:35:48 +08:00
Mr Chen 0504ca3887 Update site_api.py 2024-04-17 16:58:08 +08:00
Mr Chen 3f36019c2e Create altsvc.cache 2024-04-17 16:44:51 +08:00
Mr Chen b64e3b772f Update all_test.sh 2024-04-17 13:07:21 +08:00
Mr Chen ff29679b42 update 2024-04-17 12:34:07 +08:00
Mr Chen 5aca1ef708 Update r3.6.txt 2024-04-17 11:29:03 +08:00
Mr Chen 95a84c7ac5 Update r3.7.txt 2024-04-17 11:27:22 +08:00
Mr Chen 28c2335223 Update r3.7.txt 2024-04-17 11:25:18 +08:00
Mr Chen 8ea87a47ea Update r3.6.txt 2024-04-17 11:25:05 +08:00
Mr Chen 57058f5ab0 Update requirements.txt 2024-04-17 11:18:10 +08:00
Mr Chen b31d30bb31 Merge pull request #542 from midoks/dev
0.16.6
2024-04-17 01:52:02 +08:00
Mr Chen 0670b7f338 Update README.md 2024-04-17 01:49:06 +08:00
Mr Chen c25ecc9db2 Update config_api.py 2024-04-17 01:41:21 +08:00
Mr Chen d0d75f4526 Update site_api.py 2024-04-17 01:37:50 +08:00
Mr Chen 539857919a Update site_api.py 2024-04-17 01:20:34 +08:00
Mr Chen 5139cacce8 Update install.sh 2024-04-17 00:59:06 +08:00
Mr Chen 222c4c6d58 Update site_api.py 2024-04-17 00:53:33 +08:00
Mr Chen c2d6f5408d Update site_api.py 2024-04-17 00:50:06 +08:00
Mr Chen d3a5b9874b Update site_api.py 2024-04-17 00:43:23 +08:00
Mr Chen 87da2b9fc5 443同时开启tcp/udp 2024-04-16 23:41:06 +08:00
Mr Chen a3a40c830b Update install.sh 2024-04-16 23:11:17 +08:00
Mr Chen d30ff5b882 Update install.sh 2024-04-16 23:10:30 +08:00
Mr Chen 8a0e4122f3 Update install.sh 2024-04-16 23:00:42 +08:00
Mr Chen 0766ad0063 update 2024-04-16 22:58:18 +08:00
Mr Chen 04823f656a Update site_api.py 2024-04-16 22:19:05 +08:00
Mr Chen 5d50b3664d Update install.sh 2024-04-16 21:43:16 +08:00
Mr Chen 889c5d96e5 Update bcmath.sh 2024-04-16 21:25:29 +08:00
Mr Chen c6ac7e90df Revert "Update requirements.txt"
This reverts commit 28fe1950c4.
2024-04-16 19:38:51 +08:00
Mr Chen 28fe1950c4 Update requirements.txt 2024-04-16 19:38:25 +08:00
Mr Chen 4a9baeb924 Merge pull request #541 from midoks/dev
修复
2024-04-16 15:59:38 +08:00
Mr Chen 3e6a2e148c Update files.js 2024-04-16 15:58:46 +08:00
Mr Chen 79ec3b2ec0 Update push_notice_msg.py 2024-04-16 14:47:57 +08:00
Mr Chen 4b7b8aa801 Update args.json 2024-04-15 22:38:53 +08:00
Mr Chen 66ea1b7f5b Update cookie.json 2024-04-15 22:37:53 +08:00
Mr Chen a9b703c6ee Update post.json 2024-04-15 22:36:45 +08:00
Mr Chen 00b57bc1c0 Update user_agent.json 2024-04-15 22:34:50 +08:00
Mr Chen 47cfe6ee04 Update user_agent.json 2024-04-15 22:34:10 +08:00
Mr Chen 2b9c47b79c Update user_agent.json 2024-04-15 22:33:52 +08:00
Mr Chen 540fb5a11f Merge pull request #539 from midoks/dev
0.16.5
2024-04-15 17:02:43 +08:00
Mr Chen 5dca6bfb80 update 2024-04-15 17:01:23 +08:00
Mr Chen 8439fcbe98 Update config_api.py 2024-04-15 16:58:13 +08:00
Mr Chen 6cee6f4785 Update info.json 2024-04-15 16:48:20 +08:00
Mr Chen 6a067ad457 Update README.md 2024-04-15 14:23:42 +08:00
Mr Chen 691aba1f2a Update config_api.py 2024-04-15 14:12:45 +08:00
Mr Chen 6446a7053e https://github.com/midoks/mdserver-web/discussions/536 2024-04-15 14:11:45 +08:00
Mr Chen 040c66cdc3 Update site.css 2024-04-15 02:01:57 +08:00
Mr Chen c8d02eaa85 Update files.html 2024-04-15 02:01:52 +08:00
Mr Chen 59bbd99ba4 Update cert_api.py 2024-04-15 00:42:38 +08:00
Mr Chen c8d86fa835 Update cert_api.py 2024-04-15 00:27:46 +08:00
Mr Chen e629a82ed9 Update cert_api.py 2024-04-15 00:21:58 +08:00
Mr Chen fb0a771c81 Update cert_request.py 2024-04-15 00:11:02 +08:00
Mr Chen 891cd56163 Update config.json 2024-04-13 11:56:49 +08:00
Mr Chen 0714780938 Update zip.sh 2024-04-12 21:36:52 +08:00
Mr Chen 0a11f17d90 Update phplib.conf 2024-04-12 21:34:44 +08:00
Mr Chen e22722f40e Update cert_api.py 2024-04-10 22:07:09 +08:00
Mr Chen 519544715f Update README.md 2024-04-09 16:00:09 +08:00
Mr Chen 6d34061402 Merge pull request #535 from midoks/dev
优化
2024-04-05 02:31:50 +08:00
Mr Chen 119928d9df 优化
* 任务日志查看优化。
* 优化MySQL打开phpMyAdmin速度。
2024-04-05 02:31:05 +08:00
Mr Chen 022dfe31d4 update 2024-04-05 02:28:03 +08:00
Mr Chen c2011eedf9 Update mysql.js 2024-04-05 02:23:01 +08:00
Mr Chen b77d549b34 Update mysql.js 2024-04-05 02:19:24 +08:00
Mr Chen 0b3bcafec7 update 2024-04-05 02:18:02 +08:00
Mr Chen 4e12548978 Update mysql.js 2024-04-05 02:08:00 +08:00
Mr Chen bf7de761c8 update 2024-04-05 02:06:19 +08:00
Mr Chen bfc96e925f Update mysql.js 2024-04-05 01:57:06 +08:00
Mr Chen de1da98e92 Update index.py 2024-04-05 01:55:35 +08:00
Mr Chen d4edc449a2 Update index.py 2024-04-05 01:53:41 +08:00
Mr Chen a03d4e7dda Update index.py 2024-04-05 01:50:27 +08:00
Mr Chen 4351367e32 update 2024-04-05 01:49:34 +08:00
Mr Chen 0ec628f5e2 update 2024-04-05 01:28:47 +08:00
Mr Chen a94ef37b49 Update config_api.py 2024-04-05 01:17:19 +08:00
Mr Chen cf8729a6ac Update crontab.js 2024-04-05 01:16:49 +08:00
Mr Chen 3688456ea0 Update install.sh 2024-04-04 18:14:42 +08:00
Mr Chen 47c64e7212 Update site_api.py 2024-04-04 17:59:35 +08:00
Mr Chen e653f76608 Update info.json 2024-04-04 17:48:41 +08:00
Mr Chen d40d0001bf Update install.sh 2024-04-04 12:45:27 +08:00
Mr Chen 793a236641 Update install.sh 2024-04-04 12:42:11 +08:00
Mr Chen 07996a3fe5 Merge pull request #533 from midoks/dev
Update README.md
2024-04-04 12:35:37 +08:00
Mr Chen a826f784fc Update README.md 2024-04-04 12:35:16 +08:00
Mr Chen 1561768524 Merge pull request #532 from midoks/dev
Update README.md
2024-04-04 12:34:32 +08:00
Mr Chen 1d899fe330 Update README.md 2024-04-04 12:34:09 +08:00
151 changed files with 9613 additions and 1058 deletions
+1
View File
@@ -173,6 +173,7 @@ plugins/v2ray
plugins/frp
plugins/file_search
plugins/proxysql
plugins/tidb
debug.out
+9 -7
View File
@@ -18,7 +18,7 @@
[![Wiki](https://img.shields.io/badge/MW-Wiki-red?style=for-the-badge&logo=wiki)](https://github.com/midoks/mdserver-web/wiki)
[![](https://data.jsdelivr.com/v1/package/gh/midoks/mdserver-web/badge?style=for-the-badge)](https://www.jsdelivr.com/package/gh/midoks/mdserver-web)
[![jsdelivr](https://data.jsdelivr.com/v1/package/gh/midoks/mdserver-web/badge)](https://www.jsdelivr.com/package/gh/midoks/mdserver-web)
* SSH终端工具
* 面板收藏功能
@@ -37,7 +37,7 @@ Talk is cheap, show me the code. -- linus
```
- [兼容性测试报告](/compatibility.md)
- [常用命令说明](/cmd.md) [ mw default ]
- [常用命令说明](/cmd.md) [ mw default ] [ mw update_dev ]
### 主要插件介绍
@@ -110,10 +110,12 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443:
```
### 版本更新 0.16.4
### 版本更新 0.16.9
* 二次验证。
* OP防火墙修复。
- mysql同步优化,享受丝滑般感觉。
- 网站统计 - 实时-可调节1-10s。
- 网站统计 - 加入大小条件。
- Sphinx优化。
### JSDelivr安装地址
@@ -189,9 +191,9 @@ TVbNgrpeGBGZVm5gTLa21ADP7RpnPFhjya
日行一善,以后必定大富大贵
### 微信赞助
### 支付宝赞助
[![截图](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.jpg)](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.jpg)
[![截图](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.png)](https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/route/static/img/alipay_zz.png)
### 无图不真相
+2 -97
View File
@@ -441,19 +441,7 @@ fi
return None
if not os.path.exists(site_path):
return None
args = mw.dict_obj()
args.id = site_id
import panelSite
run_path = panelSite.panelSite().GetRunPath(args)
if run_path in ['/']:
run_path = ''
if run_path:
if run_path[0] == '/':
run_path = run_path[1:]
site_run_path = os.path.join(site_path, run_path)
if not os.path.exists(site_run_path):
return site_path
return site_run_path
return site_path
else:
return False
@@ -1283,85 +1271,6 @@ fullchain.pem 粘贴到证书输入框
root = old_domain_name
return root, zone
# 获取当前正在使用此证书的网站目录
def getSslUsedSite(self, save_path):
pkey_file = '{}/privkey.pem'.format(save_path)
pkey = mw.readFile(pkey_file)
if not pkey:
return False
cert_paths = 'vhost/cert'
import panelSite
args = mw.dict_obj()
args.siteName = ''
for c_name in os.listdir(cert_paths):
skey_file = '{}/{}/privkey.pem'.format(cert_paths, c_name)
skey = mw.readFile(skey_file)
if not skey:
continue
if skey == pkey:
args.siteName = c_name
run_path = panelSite.panelSite().GetRunPath(args)
if not run_path:
continue
sitePath = mw.M('sites').where(
'name=?', c_name).getField('path')
if not sitePath:
continue
to_path = "{}/{}".format(sitePath, run_path)
return to_path
return False
def renewCertOther(self):
cert_path = "{}/vhost/cert".format(mw.getRunDir())
if not os.path.exists(cert_path):
return
new_time = time.time() + (86400 * 30)
n = 0
if not 'orders' in self.__config:
self.__config['orders'] = {}
import panelSite
siteObj = panelSite.panelSite()
args = mw.dict_obj()
for siteName in os.listdir(cert_path):
try:
cert_file = '{}/{}/fullchain.pem'.format(cert_path, siteName)
if not os.path.exists(cert_file):
continue # 无证书文件
siteInfo = mw.M('sites').where('name=?', siteName).find()
if not siteInfo:
continue # 无网站信息
cert_init = self.getCertInit(cert_file)
if not cert_init:
continue # 无法获取证书
end_time = time.mktime(time.strptime(
cert_init['notAfter'], '%Y-%m-%d'))
if end_time > new_time:
continue # 未到期
try:
if not cert_init['issuer'] in ['R3', "Let's Encrypt"] and cert_init['issuer'].find("Let's Encrypt") == -1:
continue # 非同品牌证书
except:
continue
if isinstance(cert_init['dns'], str):
cert_init['dns'] = [cert_init['dns']]
index = self.getIndex(cert_init['dns'])
if index in self.__config['orders'].keys():
continue # 已在订单列表
n += 1
writeLog(
"|-正在续签第 {} 张其它证书,域名: {}..".format(n, cert_init['subject']))
writeLog("|-正在创建订单..")
args.id = siteInfo['id']
runPath = siteObj.GetRunPath(args)
if runPath and not runPath in ['/']:
path = siteInfo['path'] + '/' + runPath
else:
path = siteInfo['path']
except:
writeLog("|-[{}]续签失败".format(siteName))
# 外部API - START ----------------------------------------------------------
def getHostConf(self, siteName):
return mw.getServerDir() + '/web_conf/nginx/vhost/' + siteName + '.conf'
@@ -1509,8 +1418,7 @@ fullchain.pem 粘贴到证书输入框
# 已删除的网站直接跳过续签
if self.__config['orders'][i]['auth_to'].find('|') == -1 and self.__config['orders'][i]['auth_to'].find('/') != -1:
if not os.path.exists(self.__config['orders'][i]['auth_to']):
auth_to = self.getSslUsedSite(
self.__config['orders'][i]['save_path'])
auth_to = self.__config['orders'][i]['auth_to']
if not auth_to:
continue
@@ -1549,9 +1457,6 @@ fullchain.pem 粘贴到证书输入框
# 加入到续签订单
order_index.append(i)
if not order_index:
writeLog("|-没有找到30天内到期的SSL证书,正在尝试去寻找其它可续签证书!")
# self.getApis()
# self.renewCertOther()
writeLog("|-所有任务已处理完成!")
return
writeLog("|-共需要续签 {} 张证书".format(len(order_index)))
+1 -1
View File
@@ -242,7 +242,7 @@ class cert_request:
# 注册acme帐户
def register(self, existing=False):
if not 'email' in self.__config:
self.__config['email'] = 'mdioks@163.com'
self.__config['email'] = 'xxxx.xxxx@gmail.com'
if existing:
payload = {"onlyReturnExisting": True}
elif self.__config['email']:
+1 -1
View File
@@ -28,7 +28,7 @@ from flask import request
class config_api:
__version = '0.16.4'
__version = '0.16.9'
__api_addr = 'data/api.json'
# 统一默认配置文件
+4 -2
View File
@@ -396,14 +396,16 @@ class crontab_api:
if soft_name == 'postgresql':
sqlite3_name = 'pgsql'
if soft_name == 'mongodb':
sqlite3_name = 'mongodb'
db_list = {}
db_list['orderOpt'] = bak_data
if not os.path.exists(path + '/' + sqlite3_name + '.db'):
db_list['data'] = []
else:
db_list['data'] = mw.M('databases').dbPos(
path, sqlite3_name).field('name,ps').select()
db_list['data'] = mw.M('databases').dbPos(path, sqlite3_name).field('name,ps').select()
return mw.getJson(db_list)
if stype == 'path':
+3 -1
View File
@@ -151,7 +151,9 @@ class Sql():
try:
sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + \
self.__OPT_WHERE + self.__OPT_GROUP + self.__OPT_ORDER + self.__OPT_LIMIT
# print(sql, self.__OPT_PARAM)
if os.path.exists('data/debug.pl'):
print(sql, self.__OPT_PARAM)
result = self.__DB_CONN.execute(sql, self.__OPT_PARAM)
data = result.fetchall()
# 构造字曲系列
+81 -13
View File
@@ -121,6 +121,7 @@ class files_api:
def fileAccessApi(self):
filename = request.form.get('filename', '')
data = self.getAccess(filename)
data['sys_users'] = self.getSysUserList()
return mw.getJson(data)
def setFileAccessApi(self):
@@ -161,15 +162,12 @@ class files_api:
search = request.args.get('search', '').strip().lower()
search_all = request.args.get('all', '').strip().lower()
page = request.args.get('p', '1').strip().lower()
row = request.args.get('showRow', '10')
disk = request.form.get('disk', '')
if disk == 'True':
row = 1000
row = request.args.get('row', '10')
order = request.form.get('order', '')
# return self.getAllDir(path, int(page), int(row), "wp-inlcude")
if search_all == 'yes' and search != '':
return self.getAllDir(path, int(page), int(row), search)
return self.getDir(path, int(page), int(row), search)
return self.getAllDir(path, int(page), int(row), order, search)
return self.getDir(path, int(page), int(row), order, search)
def createFileApi(self):
file = request.form.get('path', '')
@@ -936,6 +934,20 @@ class files_api:
data['chown'] = 'www'
return data
def getSysUserList(self):
pwd_file = '/etc/passwd'
if os.path.exists(pwd_file):
content = mw.readFile(pwd_file)
clist = content.split('\n')
sys_users = []
for line in clist:
if line.find(":")<0:
continue
lines = line.split(":",1)
sys_users.append(lines[0])
return sys_users
return ['root','mysql','www']
# 计算文件数量
def getCount(self, path, search):
i = 0
@@ -948,16 +960,64 @@ class files_api:
i += 1
return i
def getAllDir(self, path, page=1, page_size=10, search=None):
def getAllDir(self, path, page=1, page_size=10, order='', search=None):
# print("search:", search)
data = {}
dirnames = []
filenames = []
info = {}
i = 0
n = 0
count = 0
max_limit = 3000
order_arr = order.split(' ')
if len(order_arr) < 2:
plist = mw.sortAllFileList(path, order_arr[0],'',search, max_limit)
else:
plist = mw.sortAllFileList(path, order_arr[0], order_arr[1], search,max_limit)
info['count'] = len(plist)
info['row'] = page_size
info['p'] = page
info['tojs'] = 'getFiles'
pageObj = mw.getPageObject(info, '1,2,3,4,5,6,7,8')
data['PAGE'] = pageObj[0]
for dst_file in plist:
if not os.path.exists(dst_file):
continue
i += 1
if n >= pageObj[1].ROW:
break
if i < pageObj[1].SHIFT:
continue
if os.path.isdir(dst_file):
dirnames.append(self.__get_stats(dst_file, path))
else:
filenames.append(self.__get_stats(dst_file, path))
n += 1
data['DIR'] = dirnames
data['FILES'] = filenames
data['PATH'] = path.replace('//', '/')
return mw.getJson(data)
#备份
def getAllDirBk(self, path, page=1, page_size=10, order='', search=None):
data = {}
dirnames = []
filenames = []
count = 0
max_limit = 3000
for d_list in os.walk(path):
if count >= max_limit:
break
@@ -996,7 +1056,7 @@ class files_api:
return mw.getJson(data)
def getDir(self, path, page=1, page_size=10, search=None):
def getDir(self, path, page=1, page_size=10, order = '', search=None):
data = {}
dirnames = []
filenames = []
@@ -1011,7 +1071,14 @@ class files_api:
i = 0
n = 0
for filename in os.listdir(path):
order_arr = order.split(' ')
if len(order_arr) < 2:
plist = mw.sortFileList(path, order_arr[0],'')
else:
plist = mw.sortFileList(path, order_arr[0],order_arr[1])
for filename in plist:
if search:
if filename.lower().find(search) == -1:
continue
@@ -1033,8 +1100,8 @@ class files_api:
n += 1
except Exception as e:
continue
data['DIR'] = sorted(dirnames)
data['FILES'] = sorted(filenames)
data['DIR'] = dirnames
data['FILES'] = filenames
data['PATH'] = path.replace('//', '/')
return mw.getJson(data)
@@ -1067,6 +1134,7 @@ cd %s
return mw.returnJson(status, mw.getNumLines(fileName, 200))
def __get_stats(self, filename, path=None):
# print(filename,path)
filename = filename.replace('//', '/')
try:
stat = os.stat(filename)
+70 -1
View File
@@ -79,10 +79,11 @@ def getRootDir():
def getPluginDir():
return getRunDir() + '/plugins'
def getPanelDataDir():
return getRunDir() + '/data'
def getMWLogs():
return getRunDir() + '/logs'
def getPanelTmp():
return getRunDir() + '/tmp'
@@ -908,6 +909,11 @@ def aesDecrypt_Crypto(data, key, vi):
text_decrypted = text_decrypted.decode('utf8').rstrip() # 去掉补位的右侧空格
return text_decrypted
def getDefault(data,val,def_val=''):
if val in data:
return data[val]
return def_val
def encodeImage(imgsrc, newsrc):
# 图片加密
import struct
@@ -1598,6 +1604,69 @@ def checkCert(certPath='ssl/certificate.pem'):
return True
def sortFileList(path, ftype = 'mtime', sort = 'desc'):
flist = os.listdir(path)
if ftype == 'mtime':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getmtime(os.path.join(path,f)), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getmtime(os.path.join(path,f)), reverse=False)
if ftype == 'size':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getsize(os.path.join(path,f)), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getsize(os.path.join(path,f)), reverse=False)
if ftype == 'fname':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.join(path,f), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.join(path,f), reverse=False)
return flist
def sortAllFileList(path, ftype = 'mtime', sort = 'desc', search = '',limit = 3000):
count = 0
flist = []
for d_list in os.walk(path):
if count >= limit:
break
for d in d_list[1]:
if count >= limit:
break
if d.lower().find(search) != -1:
filename = d_list[0] + '/' + d
if not os.path.exists(filename):
continue
count += 1
flist.append(filename)
for f in d_list[2]:
if count >= limit:
break
if f.lower().find(search) != -1:
filename = d_list[0] + '/' + f
if not os.path.exists(filename):
continue
count += 1
flist.append(filename)
if ftype == 'mtime':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getmtime(f), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getmtime(f), reverse=False)
if ftype == 'size':
if sort == 'desc':
flist = sorted(flist, key=lambda f: os.path.getsize(f), reverse=True)
if sort == 'asc':
flist = sorted(flist, key=lambda f: os.path.getsize(f), reverse=False)
return flist
def getPathSize(path):
# 取文件或目录大小
if not os.path.exists(path):
+1 -1
View File
@@ -148,7 +148,7 @@ class plugins_api:
def initApi(self):
plugin_names = {
'openresty': '1.21.4.3',
'openresty': '1.25.3.1',
'php': '56',
'swap': '1.1',
'mysql': '5.7',
+52 -12
View File
@@ -763,6 +763,8 @@ class site_api:
conf = re.sub(rep, '', conf)
rep = "\s+listen\s+\[\:\:\]\:443.*;"
conf = re.sub(rep, '', conf)
rep = "\s+http2\s+on;"
conf = re.sub(rep, '', conf)
mw.writeFile(file, conf)
msg = mw.getInfo('网站[{1}]关闭SSL成功!', (siteName,))
@@ -1958,6 +1960,19 @@ class site_api:
proxy_site_path) if os.path.exists(proxy_site_path) else ""
data = json.loads(data_content) if data_content != "" else []
proxy_action = 'add'
if _id == "":
_id = mw.md5("{}".format(_name))
else:
proxy_action = 'edit'
if proxy_action == "add":
for item in data:
if item["name"] == _name:
return mw.returnJson(False, "名称重复!!")
if item["from"] == _from:
return mw.returnJson(False, "代理目录已存在!!")
tpl = "#PROXY-START\n\
location ^~ {from} {\n\
proxy_pass {to};\n\
@@ -2014,15 +2029,9 @@ location ^~ {from} {\n\
else:
tpl = tpl.replace("{proxy_cache}", tpl_proxy_nocache, 999)
proxy_action = 'add'
if _id == "":
_id = mw.md5("{}".format(_name))
else:
proxy_action = 'edit'
conf_proxy = "{}/{}.conf".format(self.getProxyPath(_siteName), _id)
conf_bk = "{}/{}.conf.txt".format(self.getProxyPath(_siteName), _id)
mw.writeFile(conf_proxy, tpl)
rule_test = mw.checkWebConfig()
@@ -2653,6 +2662,10 @@ location ^~ {from} {\n\
mw.writeFile(rewrite_file, '')
def add(self, webname, port, ps, path, version):
site_root_dir = mw.getWwwDir()
if site_root_dir == path.rstrip('/'):
return mw.returnJson(False, '不要以网站根目录创建站点!')
siteMenu = json.loads(webname)
self.siteName = self.toPunycode(
siteMenu['domain'].strip().split(':')[0]).strip()
@@ -2767,24 +2780,41 @@ location ^~ {from} {\n\
mw.writeLog('TYPE_SITE', '设置成功,站点到期后将自动停止!', (siteName, edate))
return mw.returnJson(True, '设置成功,站点到期后将自动停止!')
# ssl相关方法 start
# ssl相关方法 start
def setSslConf(self, siteName):
file = self.getHostConf(siteName)
conf = mw.readFile(file)
version = ''
version_file_pl = mw.getServerDir() + '/openresty/version.pl'
if os.path.exists(version_file_pl):
version = mw.readFile(version_file_pl)
version = version.strip()
keyPath = self.sslDir + '/' + siteName + '/privkey.pem'
certPath = self.sslDir + '/' + siteName + '/fullchain.pem'
if conf:
if conf.find('ssl_certificate') == -1:
# ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
# add_header Alt-Svc 'h3=":443";ma=86400,h3-29=":443";ma=86400';
http3Header = """
add_header Strict-Transport-Security "max-age=63072000";
add_header Alt-Svc 'h3=":443";ma=86400';
"""
if version != '1.25.3.1':
http3Header = '';
sslStr = """#error_page 404/404.html;
ssl_certificate %s;
ssl_certificate_key %s;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;""" % (certPath, keyPath)
%s
error_page 497 https://$host$request_uri;""" % (certPath, keyPath, http3Header)
if(conf.find('ssl_certificate') != -1):
return mw.returnData(True, 'SSL开启成功!')
@@ -2794,8 +2824,18 @@ location ^~ {from} {\n\
tmp = re.findall(rep, conf)
if not mw.inArray(tmp, '443'):
listen = re.search(rep, conf).group()
http_ssl = "\n\tlisten 443 ssl http2;"
http_ssl = http_ssl + "\n\tlisten [::]:443 ssl http2;"
if version == '1.25.3.1':
http_ssl = "\n\tlisten 443 ssl;"
http_ssl = http_ssl + "\n\tlisten [::]:443 ssl;"
http_ssl = http_ssl + "\n\tlisten 443 quic;"
http_ssl = http_ssl + "\n\tlisten [::]:443 quic;"
http_ssl = http_ssl + "\n\thttp2 on;"
else:
http_ssl = "\n\tlisten 443 ssl http2;"
http_ssl = http_ssl + "\n\tlisten [::]:443 ssl http2;"
conf = conf.replace(listen, listen + http_ssl)
mw.backFile(file)
+168 -25
View File
@@ -44,10 +44,11 @@ def mw_async(f):
class system_api:
setupPath = None
pids = None
cache = {}
def __init__(self):
self.setupPath = mw.getServerDir()
##### ----- start ----- ###
def networkApi(self):
data = self.getNetWork()
@@ -254,8 +255,7 @@ class system_api:
data['load_average'] = self.GetLoadAverage(get)
data['title'] = self.GetTitle()
data['network'] = self.GetNetWorkApi(get)
data['panel_status'] = not os.path.exists(
'/www/server/mdserver-web/data/close.pl')
data['panel_status'] = not os.path.exists('/www/server/mdserver-web/data/close.pl')
import firewalls
ssh_info = firewalls.firewalls().GetSshInfo(None)
data['enable_ssh_status'] = ssh_info['status']
@@ -488,7 +488,7 @@ class system_api:
shutil.rmtree(filename)
else:
os.remove(filename)
print('mail clear ok')
# print('mail clear ok')
num += 1
total += size
count += num
@@ -547,38 +547,181 @@ class system_api:
def getNetWork(self):
# 取网络流量信息
try:
# 取网络流量信息
networkIo = self.psutilNetIoCounters()
if not "otime" in session:
session['up'] = networkIo[0]
session['down'] = networkIo[1]
session['otime'] = time.time()
ntime = time.time()
networkInfo = {}
networkInfo['upTotal'] = networkIo[0]
networkInfo['downTotal'] = networkIo[1]
networkInfo['up'] = round(float(
networkIo[0] - session['up']) / (ntime - session['otime']), 2)
networkInfo['down'] = round(
float(networkIo[1] - session['down']) / (ntime - session['otime']), 2)
networkInfo['downPackets'] = networkIo[3]
networkInfo['upPackets'] = networkIo[2]
# 取网络流量信息
# networkIo = self.psutilNetIoCounters()
# if not "otime" in session:
# session['up'] = networkIo[0]
# session['down'] = networkIo[1]
# session['otime'] = time.time()
# print networkIo[1], session['down'], ntime, session['otime']
session['up'] = networkIo[0]
session['down'] = networkIo[1]
session['otime'] = time.time()
# ntime = time.time()
# print("source",ntime - session['otime'])
# networkInfo['upTotal'] = networkIo[0]
# networkInfo['downTotal'] = networkIo[1]
# networkInfo['up'] = round(float(
# networkIo[0] - session['up']) / (ntime - session['otime']), 2)
# networkInfo['down'] = round(
# float(networkIo[1] - session['down']) / (ntime - session['otime']), 2)
# networkInfo['downPackets'] = networkIo[3]
# networkInfo['upPackets'] = networkIo[2]
# # print networkIo[1], session['down'], ntime, session['otime']
# session['up'] = networkIo[0]
# session['down'] = networkIo[1]
# session['otime'] = time.time()
networkInfo['cpu'] = self.getCpuInfo()
networkInfo['load'] = self.getLoadAverage()
networkInfo['mem'] = self.getMemInfo()
networkInfo['iostat'] = self.getDiskIostat()
networkInfo['network'] = self.getNetWorkIostat()
return networkInfo
except Exception as e:
print("getNetWork error:", e)
print(mw.getTracebackInfo())
return None
def getNetWorkIostat(self):
netInfo = {}
netInfo['ALL'] = {}
netInfo['ALL']['up'] = 0
netInfo['ALL']['down'] = 0
netInfo['ALL']['upTotal'] = 0
netInfo['ALL']['downTotal'] = 0
netInfo['ALL']['upPackets'] = 0
netInfo['ALL']['downPackets'] = 0
mtime = time.time()
iokey = 'netstat'
netio = None
if iokey in self.cache:
netio = self.cache[iokey]
if not netio:
netio = {}
netio['info'] = None
netio['all_io'] = None
netio['time'] = mtime
stime = mtime - netio['time']
if not stime: stime = 1
# print("new:",stime)
netio_group = psutil.net_io_counters(pernic=True).keys()
netio_cache = netio['info']
allio_cache = netio['all_io']
if not netio_cache:
netio_cache = {}
netio_group_t = {}
for name in netio_group:
netInfo[name] = {}
io_data = psutil.net_io_counters(pernic=True).get(name)
if not name in netio_cache:
netio_cache[name] = io_data
netio_group_t[name] = io_data
netInfo[name]['up'] = round(float((io_data[0] - netio_cache[name][0]) / stime), 2)
netInfo[name]['down'] = round(float((io_data[1] - netio_cache[name][1])/ stime), 2)
netInfo[name]['upTotal'] = io_data[0]
netInfo[name]['downTotal'] = io_data[1]
netInfo[name]['upPackets'] = io_data[2]
netInfo[name]['downPackets'] = io_data[3]
all_io = psutil.net_io_counters()[:4]
if not allio_cache:
allio_cache = all_io
netInfo['ALL']['up'] = round(float((all_io[0] - allio_cache[0]) /stime), 2)
netInfo['ALL']['down'] = round(float((all_io[1] - allio_cache[1]) /stime), 2)
netInfo['ALL']['upTotal'] = all_io[0]
netInfo['ALL']['downTotal'] = all_io[1]
netInfo['ALL']['upPackets'] = all_io[2]
netInfo['ALL']['downPackets'] = all_io[3]
self.cache[iokey] = {'info':netio_group_t,'all_io':all_io,'time':mtime}
return netInfo
def getDiskIostat(self):
iokey = 'iostat'
diskInfo = {}
diskInfo['ALL'] = {}
diskInfo['ALL']['read_count'] = 0
diskInfo['ALL']['write_count'] = 0
diskInfo['ALL']['read_bytes'] = 0
diskInfo['ALL']['write_bytes'] = 0
diskInfo['ALL']['read_time'] = 0
diskInfo['ALL']['write_time'] = 0
diskInfo['ALL']['read_merged_count'] = 0
diskInfo['ALL']['write_merged_count'] = 0
try:
diskio = None
if iokey in self.cache:
diskio = self.cache[iokey]
mtime = int(time.time())
if not diskio:
diskio = {}
diskio['info'] = None
diskio['time'] = mtime
diskio_cache = diskio['info']
stime = mtime - diskio['time']
if not stime: stime = 1
diskio_group = psutil.disk_io_counters(perdisk=True)
if not diskio_cache:
diskio_cache = diskio_group
for disk_name in diskio_group.keys():
diskInfo[disk_name] = {}
# print('disk_name',disk_name)
# print(diskio_group[disk_name].write_time , diskio_cache[disk_name].write_time)
# print(diskio_group[disk_name].write_count , diskio_cache[disk_name].write_count)
diskInfo[disk_name]['read_count'] = int((diskio_group[disk_name].read_count - diskio_cache[disk_name].read_count) / stime)
diskInfo[disk_name]['write_count'] = int((diskio_group[disk_name].write_count - diskio_cache[disk_name].write_count) / stime)
diskInfo[disk_name]['read_bytes'] = int((diskio_group[disk_name].read_bytes - diskio_cache[disk_name].read_bytes) / stime)
diskInfo[disk_name]['write_bytes'] = int((diskio_group[disk_name].write_bytes - diskio_cache[disk_name].write_bytes) / stime)
diskInfo[disk_name]['read_time'] = int((diskio_group[disk_name].read_time - diskio_cache[disk_name].read_time) / stime)
diskInfo[disk_name]['write_time'] = int((diskio_group[disk_name].write_time - diskio_cache[disk_name].write_time) / stime)
if 'read_merged_count' in diskio_group[disk_name] and 'read_merged_count' in diskio_cache[disk_name]:
diskInfo[disk_name]['read_merged_count'] = int((diskio_group[disk_name].read_merged_count - diskio_cache[disk_name].read_merged_count) / stime)
if 'write_merged_count' in diskio_group[disk_name] and 'write_merged_count' in diskio_cache[disk_name]:
diskInfo[disk_name]['write_merged_count'] = int((diskio_group[disk_name].write_merged_count - diskio_cache[disk_name].write_merged_count) / stime)
diskInfo['ALL']['read_count'] += diskInfo[disk_name]['read_count']
diskInfo['ALL']['write_count'] += diskInfo[disk_name]['write_count']
diskInfo['ALL']['read_bytes'] += diskInfo[disk_name]['read_bytes']
diskInfo['ALL']['write_bytes'] += diskInfo[disk_name]['write_bytes']
if diskInfo['ALL']['read_time'] < diskInfo[disk_name]['read_time']:
diskInfo['ALL']['read_time'] = diskInfo[disk_name]['read_time']
if diskInfo['ALL']['write_time'] < diskInfo[disk_name]['write_time']:
diskInfo['ALL']['write_time'] = diskInfo[disk_name]['write_time']
if 'read_merged_count' in diskInfo[disk_name] and 'read_merged_count' in diskInfo[disk_name]:
diskInfo['ALL']['read_merged_count'] += diskInfo[disk_name]['read_merged_count']
if 'write_merged_count' in diskInfo[disk_name] and 'write_merged_count' in diskInfo[disk_name]:
diskInfo['ALL']['write_merged_count'] += diskInfo[disk_name]['write_merged_count']
self.cache[iokey] = {'info':diskio_group,'time':mtime}
except Exception as e:
# print(mw.getTracebackInfo())
pass
return diskInfo
def getNetWorkIoData(self, start, end):
# 取指定时间段的网络Io
data = mw.M('network').dbfile('system').where("addtime>=? AND addtime<=?", (start, end)).field(
+29 -5
View File
@@ -17,37 +17,50 @@ class ORM:
__DB_CUR = None
__DB_ERR = None
__DB_CNF = '/etc/my.cnf'
__DB_TIMEOUT=1
__DB_SOCKET = '/www/server/mysql/mysql.sock'
__DB_CHARSET = "utf8"
def __Conn(self):
# print(self.__DB_HOST, self.__DB_USER)
'''连接数据库'''
try:
if os.path.exists(self.__DB_SOCKET):
if self.__DB_HOST != 'localhost':
try:
self.__DB_CONN = pymysql.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
database=self.__DB_NAME,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=self.__DB_TIMEOUT,
cursorclass=pymysql.cursors.DictCursor)
except Exception as e:
self.__DB_CONN = pymysql.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
database=self.__DB_NAME,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=self.__DB_TIMEOUT,
cursorclass=pymysql.cursors.DictCursor)
elif os.path.exists(self.__DB_SOCKET):
try:
self.__DB_CONN = pymysql.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
database=self.__DB_NAME,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=1,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=self.__DB_TIMEOUT,
unix_socket=self.__DB_SOCKET, cursorclass=pymysql.cursors.DictCursor)
except Exception as e:
self.__DB_HOST = '127.0.0.1'
self.__DB_CONN = pymysql.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
database=self.__DB_NAME,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=1,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=self.__DB_TIMEOUT,
unix_socket=self.__DB_SOCKET, cursorclass=pymysql.cursors.DictCursor)
else:
try:
self.__DB_CONN = pymysql.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
database=self.__DB_NAME,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=1,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=self.__DB_TIMEOUT,
cursorclass=pymysql.cursors.DictCursor)
except Exception as e:
self.__DB_HOST = '127.0.0.1'
self.__DB_CONN = pymysql.connect(host=self.__DB_HOST, user=self.__DB_USER, passwd=self.__DB_PASS,
database=self.__DB_NAME,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=1,
port=int(self.__DB_PORT), charset=self.__DB_CHARSET, connect_timeout=self.__DB_TIMEOUT,
cursorclass=pymysql.cursors.DictCursor)
self.__DB_CUR = self.__DB_CONN.cursor()
@@ -80,6 +93,10 @@ class ORM:
def getPwd(self):
return self.__DB_PASS
def setTimeout(self, timeout = 1):
self.__DB_TIMEOUT = timeout
return True
def setDbName(self, name):
self.__DB_NAME = name
@@ -95,6 +112,13 @@ class ORM:
except Exception as ex:
return ex
def ping(self):
try:
self.__DB_CONN.ping()
except Exception as e:
print(e)
return True
def query(self, sql):
# 执行SQL语句返回数据集
if not self.__Conn():
+2 -1
View File
@@ -5,7 +5,8 @@
```
/etc/init.d/mw default | 显示登录信息
/etc/init.d/mw db | 快捷连接数据库
/etc/init.d/mw db | 快捷连接MySQL
/etc/init.d/mw redis | 快捷连接Redis
----------------------------------------
mw open | 开启面板
mw close | 关闭面板
+1 -1
View File
@@ -49,7 +49,7 @@ ALTER TABLE `firewall` ADD COLUMN `protocol` TEXT DEFAULT 'tcp';
INSERT INTO `firewall` (`id`, `port`, `protocol`, `ps`, `addtime`) VALUES
(1, '80', 'tcp','网站默认端口', '0000-00-00 00:00:00'),
(2, '443', 'tcp', 'HTTPS', '0000-00-00 00:00:00');
(2, '443', 'tcp/udp', 'HTTPS', '0000-00-00 00:00:00');
+1
View File
@@ -1,5 +1,6 @@
server
{
# reuseport 只能在一个server出现一次
listen {$PORT};
listen [::]:{$PORT};
server_name {$SERVER_NAME};
+1 -1
View File
@@ -17,7 +17,7 @@ pluginService('clean');
function pRead(){
var readme = '<ul class="help-info-text c7">';
readme += '<li>启动后,加入到计划中[2:30]执行。</li>';
readme += '<li>启动后,加入到计划任务每隔7天[0:15]执行。</li>';
readme += '<li>【*】代表要删除。</li>';
readme += '<li>添加/删除清除日志,可在`配置修改`中添加/删除。</li>';
readme += '<li>如果是目录,会寻找【.log】后缀的文件清空。</li>';
+21 -1
View File
@@ -99,7 +99,27 @@ def initConf():
"/var/log/secure",
"/var/log/lastlog",
"/var/log/cron",
"/www/server/cron"
"/www/server/rsyncd",
"/www/server/sphinx/index",
"/www/server/mongodb/logs",
"/www/server/php/53/var/log",
"/www/server/php/54/var/log",
"/www/server/php/55/var/log",
"/www/server/php/56/var/log",
"/www/server/php/70/var/log",
"/www/server/php/71/var/log",
"/www/server/php/72/var/log",
"/www/server/php/73/var/log",
"/www/server/php/74/var/log",
"/www/server/php/80/var/log",
"/www/server/php/81/var/log",
"/www/server/php/82/var/log",
"/www/server/php/83/var/log",
"/www/server/php/84/var/log",
"/www/server/openresty/nginx/logs",
"/www/server/phpmyadmin",
"/www/server/redis/data",
"/www/server/cron",
]
for i in clogcom:
if os.path.exists(i):
+30 -57
View File
@@ -37,57 +37,36 @@ def getConfigData():
return json.loads(mw.readFile(getTaskConf()))
except:
pass
return []
def getConfigTpl():
tpl = {
"name": "",
return {
"task_id": -1,
"period": "day-n",
"where1": "7",
"hour": "0",
"minute": "15",
}
return tpl
def createBgTask():
removeBgTask()
args = {
"period": "day",
"hour": "0",
"minute": "15",
}
createBgTaskByName(getPluginName(), args)
createBgTaskByName(getPluginName())
def createBgTaskByName(name, args):
cfg = getConfigTpl()
def createBgTaskByName(name):
args = getConfigData()
_name = "[勿删]日志清理[" + name + "]"
res = mw.M("crontab").field("id, name").where("name=?", (_name,)).find()
if res:
return True
if "task_id" in cfg.keys() and cfg["task_id"] > 0:
if "task_id" in args and args["task_id"] > 0:
res = mw.M("crontab").field("id, name").where(
"id=?", (cfg["task_id"],)).find()
if res and res["id"] == cfg["task_id"]:
"id=?", (args["task_id"],)).find()
if res and res["id"] == args["task_id"]:
print("计划任务已经存在!")
return True
import crontab_api
api = crontab_api.crontab_api()
period = args['period']
_hour = ''
_minute = ''
_where1 = ''
_type_day = "day"
if period == 'day':
_type_day = 'day'
_hour = args['hour']
_minute = args['minute']
elif period == 'minute-n':
_type_day = 'minute-n'
_where1 = args['minute-n']
_minute = ''
mw_dir = mw.getRunDir()
cmd = '''
mw_dir=%s
@@ -105,11 +84,11 @@ logs_file=$plugin_path/${rname}.log
params = {
'name': _name,
'type': _type_day,
'type': args['period'],
'week': "",
'where1': _where1,
'hour': _hour,
'minute': _minute,
'where1': args['where1'],
'hour': args['hour'],
'minute': args['minute'],
'save': "",
'backup_to': "",
'stype': "toShell",
@@ -120,30 +99,24 @@ logs_file=$plugin_path/${rname}.log
task_id = api.add(params)
if task_id > 0:
cfg["task_id"] = task_id
cfg["name"] = name
_dd = getConfigData()
_dd.append(cfg)
mw.writeFile(getTaskConf(), json.dumps(_dd))
args["task_id"] = task_id
args["name"] = name
mw.writeFile(getTaskConf(), json.dumps(args))
def removeBgTask():
cfg_list = getConfigData()
for x in range(len(cfg_list)):
cfg = cfg_list[x]
if "task_id" in cfg.keys() and cfg["task_id"] > 0:
res = mw.M("crontab").field("id, name").where(
"id=?", (cfg["task_id"],)).find()
if res and res["id"] == cfg["task_id"]:
import crontab_api
api = crontab_api.crontab_api()
data = api.delete(cfg["task_id"])
if data[0]:
cfg["task_id"] = -1
cfg_list[x] = cfg
mw.writeFile(getTaskConf(), '[]')
return True
cfg = getConfigData()
if "task_id" in cfg and cfg["task_id"] > 0:
res = mw.M("crontab").field("id, name").where(
"id=?", (cfg["task_id"],)).find()
if res and res["id"] == cfg["task_id"]:
import crontab_api
api = crontab_api.crontab_api()
data = api.delete(cfg["task_id"])
if data[0]:
cfg["task_id"] = -1
mw.writeFile(getTaskConf(), json.loads(cfg))
return True
return False
+10
View File
@@ -5,6 +5,16 @@
white-space: nowrap;
vertical-align: middle;
}
#select_db xm-select{
min-height: 30px;
line-height: 30px;
}
#select_db xm-select *{
font-size: 12px;
}
</style>
<div class="bt-form">
+103 -6
View File
@@ -7,6 +7,7 @@ import time
import re
import pymongo
import json
import yaml
from bson.objectid import ObjectId
from bson.json_util import dumps
@@ -23,6 +24,95 @@ def singleton(cls):
return _instance[cls]
return inner
def getPluginName():
return 'mongodb'
def getPluginDir():
return mw.getPluginDir() + '/' + getPluginName()
def getServerDir():
return mw.getServerDir() + '/' + getPluginName()
def getConf():
path = getServerDir() + "/mongodb.conf"
return path
def getConfTpl():
path = getPluginDir() + "/config/mongodb.conf"
return path
def pSqliteDb(dbname='users'):
file = getServerDir() + '/mongodb.db'
name = 'mongodb'
sql_file = getPluginDir() + '/config/mongodb.sql'
import_sql = mw.readFile(sql_file)
# print(sql_file,import_sql)
md5_sql = mw.md5(import_sql)
import_sign = False
save_md5_file = getServerDir() + '/import_mongodb.md5'
if os.path.exists(save_md5_file):
save_md5_sql = mw.readFile(save_md5_file)
if save_md5_sql != md5_sql:
import_sign = True
mw.writeFile(save_md5_file, md5_sql)
else:
mw.writeFile(save_md5_file, md5_sql)
if not os.path.exists(file) or import_sql:
conn = mw.M(dbname).dbPos(getServerDir(), name)
csql_list = import_sql.split(';')
for index in range(len(csql_list)):
conn.execute(csql_list[index], ())
conn = mw.M(dbname).dbPos(getServerDir(), name)
return conn
def getConfigData():
cfg = getConf()
# print(cfg)
config_data = mw.readFile(cfg)
try:
config = yaml.safe_load(config_data)
except:
config = {
"systemLog": {
"destination": "file",
"logAppend": True,
"path": mw.getServerDir()+"/mongodb/log/mongodb.log"
},
"storage": {
"dbPath": mw.getServerDir()+"/mongodb/data",
"directoryPerDB": True,
"journal": {
"enabled": True
}
},
"processManagement": {
"fork": True,
"pidFilePath": mw.getServerDir()+"/mongodb/log/mongodb.pid"
},
"net": {
"port": 27017,
"bindIp": "0.0.0.0"
},
"security": {
"authorization": "disabled",
"javascriptEnabled": False
}
}
return config
def getConfPort():
data = getConfigData()
return data['net']['port']
def getConfAuth():
data = getConfigData()
return data['security']['authorization']
@singleton
class nosqlMongodb():
@@ -49,15 +139,22 @@ class nosqlMongodb():
if not self.__DB_LOCAL:
self.__DB_PORT = int(self.__config['port'])
# print(self.__DB_HOST,self.__DB_PORT, self.__DB_PASS)
auth = getConfAuth()
port = getConfPort()
mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root')
# print(auth,self.__DB_HOST,port, self.__DB_PASS)
try:
self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=self.__DB_PORT, maxPoolSize=10)
if auth == 'disabled':
self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=port, directConnection=True)
else:
self.__DB_CONN = pymongo.MongoClient(host=self.__DB_HOST, port=port, directConnection=True, username='root',password=mg_root)
self.__DB_CONN.admin.command('ping')
return self.__DB_CONN
except pymongo.errors.ConnectionFailure:
return False
except Exception:
self.__DB_ERR = mw.get_error_info()
except Exception as e:
# print(e)
self.__DB_ERR = mw.getTracebackInfo()
return False
# 获取配置项
@@ -122,7 +219,7 @@ class nosqlMongodbCtr():
mgdb_instance = self.getInstanceBySid(sid).mgdb_conn()
if mgdb_instance is False:
return mw.returnData(False,'无法链接')
return mw.returnData(False,'无法链接.')
result = {}
collections = mgdb_instance[name].list_collection_names()
@@ -164,7 +261,7 @@ class nosqlMongodbCtr():
where[mg_field] = re.compile(mg_value)
# print(where)
result = collection_instance.find(where).skip(start_index).limit(size).sort({'_id':-1})
result = collection_instance.find(where).skip(start_index).limit(size).sort('_id',-1)
count = collection_instance.count_documents(where)
d = []
for document in result:
+10 -3
View File
@@ -123,9 +123,16 @@
<input name="mongodb_field_value" type="text" class="bt-input-text" placeholder="请输入查找内容">
</div>
<button type="button" class="mongodb_find btn btn-success btn-sm mr5 ml5" style="float:right;">
<span>查找</span>
</button>
<div style="float:right;">
<button type="button" class="mongodb_find btn btn-success btn-sm mr5 ml5" >
<span>查找</span>
</button>
<button type="button" class="mongodb_refresh btn btn-success btn-sm mr5 ml5">
<span>刷新</span>
</button>
</div>
</div>
<div class="pull-right" style="padding-top: 5px;">
+5 -1
View File
@@ -738,6 +738,10 @@ function mongodbInitField(f, data){
}
mongodbDataList(1);
});
$('#mongodb .mongodb_refresh').unbind('click').click(function(){
mongodbDataList(1);
});
}
var mogodb_db_list;
@@ -1252,7 +1256,7 @@ function redisBatchClear(){
xm_db_list = xmSelect.render({
el: '#select_db',
repeat: true,
repeat: false,
toolbar: {show: true},
data: idx_db,
});
+41 -56
View File
@@ -860,68 +860,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mariadb'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mariadb'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var phpmyadmin_cfg = rdata;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var home_page = rdata.data;
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@");
$("#toPHPMyAdmin").attr('action',home_page);
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0]
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
}
},'json');
}
function delBackup(filename, name, path){
@@ -1168,7 +1153,7 @@ function dbList(page, search){
list += '<td><span class="c9 input-edit" onclick="setDbPs(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\',this)" style="display: inline-block;">'+rdata.data[i]['ps']+'</span></td>';
list += '<td style="text-align:right">';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\')" title="数据库备份">'+(rdata.data[i]['is_backup']?'备份':'未备份') +'</a> | ';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\')" title="数据库备份">'+(rdata.data[i]['is_backup']?'已备份':'未备份') +'</a> | ';
var rw = '';
var rw_change = 'all';
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=10.11.6
MY_VER=10.11.7
Install_app()
{
+1 -1
View File
@@ -13,7 +13,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=10.6.16
MY_VER=10.6.17
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.0.4
MY_VER=11.0.5
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.1.3
MY_VER=11.1.4
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.2.2
MY_VER=11.2.3
Install_app()
{
+1 -1
View File
@@ -14,7 +14,7 @@ sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mariadbDir=${serverPath}/source/mariadb
MY_VER=11.3.1
MY_VER=11.3.2
Install_app()
{
+18
View File
@@ -0,0 +1,18 @@
directoryperdb = true
dbpath = {$SERVER_PATH}/mongodb/data
logpath = {$SERVER_PATH}/mongodb/logs/mongodb.log
logappend = true
bind_ip = 127.0.0.1
port = 27017
fork = true
auth = false
#smallfiles = true
oplogSize=100
# Master/slave replication is no longer supported
#master = true
#replSet = test
pidfilepath = {$SERVER_PATH}/mongodb/mongodb.pid
+19 -17
View File
@@ -1,17 +1,19 @@
dbpath = {$SERVER_PATH}/mongodb/data
logpath = {$SERVER_PATH}/mongodb/logs/mongodb.log
logappend = true
bind_ip = 127.0.0.1
port = 27017
fork = true
auth = false
#smallfiles = true
oplogSize=100
# Master/slave replication is no longer supported
#master = true
#replSet = test
pidfilepath = {$SERVER_PATH}/mongodb/mongodb.pid
net:
bindIp: 127.0.0.1
port: 27017
processManagement:
fork: true
pidFilePath: {$SERVER_PATH}/mongodb/mongodb.pid
security:
authorization: disabled
javascriptEnabled: false
storage:
dbPath: {$SERVER_PATH}/mongodb/data
directoryPerDB: true
systemLog:
destination: file
logAppend: true
logRotate: reopen
path: {$SERVER_PATH}/mongodb/logs/mongodb.log
replication:
oplogSizeMB: 2048
+19
View File
@@ -0,0 +1,19 @@
CREATE TABLE IF NOT EXISTS `config` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`mg_root` TEXT
);
INSERT INTO `config` (`id`, `mg_root`) VALUES (1, 'mg_root');
CREATE TABLE IF NOT EXISTS `databases` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`name` TEXT,
`username` TEXT,
`password` TEXT,
`accept` TEXT,
`rw` TEXT DEFAULT 'rw',
`ps` TEXT,
`addtime` TEXT
);
+51 -3
View File
@@ -6,7 +6,48 @@
white-space: nowrap;
display: inline-block;
vertical-align: middle;
}
}
.bingfa .bt-input-text {
width: 200px;
}
.inlineBlock {
display: inline-block;
}
.db_list{
padding: 0px 0 10px 0;
font-size: 13px;
line-height: 35px;
height: 45px;
}
.db_list a{
margin-right: 15px;
color: #555;
font-weight: 600;
}
.db_list span:nth-child(1){
display: block;
float: left;
padding-left: 15px;
background: #ececec;
border-radius: 3px;
}
#db_tools button {
margin-right: 10px;
}
#db_tools button:last-child{
margin-right: 0;
}
.conf_p span {
display: inline-block;
margin-right: 10px;
width: 115px;
text-align: right;
}
</style>
<div class="bt-form">
@@ -14,20 +55,27 @@
<div class="bt-w-menu">
<p class="bgw" onclick="pluginService('mongodb');">服务</p>
<p onclick="pluginInitD('mongodb');">自启动</p>
<p onclick="pluginConfig('mongodb');">配置修改</p>
<p onclick="mongoStatus();">负载状态</p>
<p onclick="mongoSetConfig();">配置修改</p>
<p onclick="pluginConfig('mongodb');">配置文件</p>
<p onclick="pluginConfig('mongodb','','config_key');">配置[KEY]</p>
<p onclick="dbList();">数据列表</p>
<p onclick="mongoDocStatus();">文档状态</p>
<p onclick="mongoStatus();">负载状态</p>
<p onclick="mongoReplStatus();">复制状态</p>
<p onclick="pluginLogs('mongodb','','run_log');">日志</p>
<p onclick="mgdbReadme();">相关说明</p>
</div>
<div class="bt-w-con pd15">
<div class="soft-man-con" style="height:455px;overflow: auto;"></div>
</div>
</div>
</div>
<!-- <script type="text/javascript" src="/plugins/file?name=mongodb&f=js/mongodb.js"></script> -->
<script type="text/javascript">
//mongodb start
resetPluginWinHeight(530);
resetPluginWinWidth(800);
$.getScript('/plugins/file?name=mongodb&f=js/mongodb.js', function(){
pluginService('mongodb');
});
+1295 -64
View File
File diff suppressed because it is too large Load Diff
+4 -2
View File
@@ -1,10 +1,12 @@
{
"sort": 7,
"ps": "一个高性能的NOSQL数据库",
"hook":["database"],
"ps": "一个高性能的NOSQL数据库【社区版】",
"name": "mongodb",
"title": "Mongodb",
"title": "MongoDB",
"shell": "install.sh",
"install_pre_inspection":true,
"uninstall_pre_inspection":true,
"versions":["4.4","5.0","6.0","7.0"],
"tip": "soft",
"checks": "server/mongodb",
+4 -1
View File
@@ -4,7 +4,7 @@ export PATH
# https://www.mongodb.com/try/download/community
# cd /Users/midoks/Desktop/mwdev/server/mdserver-web/plugins/mongodb && /bin/bash install.sh install 5.0.4
# cd /Users/midoks/Desktop/mwdev/server/mdserver-web/plugins/mongodb && /bin/bash install.sh install 7.0
# cd /www/server/mdserver-web/plugins/mongodb && /bin/bash install.sh install 7.0
# cd /www/server/mdserver-web && python3 /www/server/mdserver-web/plugins/mongodb/index.py start
@@ -31,6 +31,9 @@ if [ "macos" != "$OSNAME" ];then
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
fi
if [ -f ${rootPath}/bin/activate ];then
source ${rootPath}/bin/activate
fi
Install_app()
{
echo '正在安装脚本文件...' > $install_tmp
File diff suppressed because it is too large Load Diff
+234
View File
@@ -0,0 +1,234 @@
# coding: utf-8
#-----------------------------
# 网站备份工具
#-----------------------------
import sys
import os
import re
if sys.platform != 'darwin':
os.chdir('/www/server/mdserver-web')
chdir = os.getcwd()
sys.path.append(chdir + '/class/core')
# reload(sys)
# sys.setdefaultencoding('utf-8')
import mw
import db
import time
import yaml
def getPluginName():
return 'mongodb'
def getPluginDir():
return mw.getPluginDir() + '/' + getPluginName()
def getServerDir():
return mw.getServerDir() + '/' + getPluginName()
def getConf():
path = getServerDir() + "/mongodb.conf"
return path
def getConfigData():
cfg = getConf()
config_data = mw.readFile(cfg)
try:
config = yaml.safe_load(config_data)
except:
config = {
"systemLog": {
"destination": "file",
"logAppend": True,
"path": mw.getServerDir()+"/mongodb/log/mongodb.log"
},
"storage": {
"dbPath": mw.getServerDir()+"/mongodb/data",
"directoryPerDB": True,
"journal": {
"enabled": True
}
},
"processManagement": {
"fork": True,
"pidFilePath": mw.getServerDir()+"/mongodb/log/mongodb.pid"
},
"net": {
"port": 27017,
"bindIp": "0.0.0.0"
},
"security": {
"authorization": "enabled",
"javascriptEnabled": False
}
}
return config
def getConfIp():
data = getConfigData()
return data['net']['bindIp']
def getConfPort():
data = getConfigData()
return data['net']['port']
def getConfAuth():
data = getConfigData()
return data['security']['authorization']
def pSqliteDb(dbname='users'):
file = getServerDir() + '/mongodb.db'
name = 'mongodb'
sql_file = getPluginDir() + '/config/mongodb.sql'
import_sql = mw.readFile(sql_file)
# print(sql_file,import_sql)
md5_sql = mw.md5(import_sql)
import_sign = False
save_md5_file = getServerDir() + '/import_mongodb.md5'
if os.path.exists(save_md5_file):
save_md5_sql = mw.readFile(save_md5_file)
if save_md5_sql != md5_sql:
import_sign = True
mw.writeFile(save_md5_file, md5_sql)
else:
mw.writeFile(save_md5_file, md5_sql)
if not os.path.exists(file) or import_sql:
conn = mw.M(dbname).dbPos(getServerDir(), name)
csql_list = import_sql.split(';')
for index in range(len(csql_list)):
conn.execute(csql_list[index], ())
conn = mw.M(dbname).dbPos(getServerDir(), name)
return conn
def mongdbClient():
import pymongo
port = getConfPort()
auth = getConfAuth()
ip = getConfIp()
mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root')
# print(ip,port,auth,mg_root)
if auth == 'disabled':
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True)
else:
# uri = "mongodb://root:"+mg_root+"@127.0.0.1:"+str(port)
# client = pymongo.MongoClient(uri)
client = pymongo.MongoClient(host=ip, port=int(port), directConnection=True, username='root',password=mg_root)
return client
class backupTools:
def getDbBackupList(self,dbname=''):
bkDir = mw.getRootDir() + '/backup/database'
blist = os.listdir(bkDir)
r = []
bname = 'mongodb_' + dbname
blen = len(bname)
for x in blist:
fbstr = x[0:blen]
if fbstr == bname:
r.append(x)
return r
def backupDatabase(self, name, count):
db_path = mw.getServerDir() + '/mongodb'
db_name = 'mongodb'
name = mw.M('databases').dbPos(db_path, db_name).where('name=?', (name,)).getField('name')
startTime = time.time()
if not name:
endDate = time.strftime('%Y/%m/%d %X', time.localtime())
log = "数据库[" + name + "]不存在!"
print("★[" + endDate + "] " + log)
print(
"----------------------------------------------------------------------------")
return
backup_path = mw.getBackupDir() + '/database'
if not os.path.exists(backup_path):
mw.execShell("mkdir -p " + backup_path)
time_now = time.strftime('%Y%m%d_%H%M%S', time.localtime())
backup_name = "mongodb_" + name + "_" + time_now + ".tar.gz"
filename = backup_path + "/"+backup_name
port = getConfPort()
auth = getConfAuth()
mg_root = pSqliteDb('config').where('id=?', (1,)).getField('mg_root')
uoption = ''
if auth != 'disabled':
uoption =' --authenticationDatabase admin -u root -p '+mg_root
cmd = db_path + "/bin/mongodump "+uoption+" --port "+str(port)+" -d test -o "+backup_path
# print(cmd)
mw.execShell(cmd)
cmd_gz = "cd "+backup_path+"/"+name+" && tar -zcvf "+filename + " ./"
mw.execShell(cmd_gz)
mw.execShell("rm -rf "+ backup_path+"/"+name)
if not os.path.exists(filename):
endDate = time.strftime('%Y/%m/%d %X', time.localtime())
log = "数据库[" + name + "]备份失败!"
print("★[" + endDate + "] " + log)
print("----------------------------------------------------------------------------")
return
endDate = time.strftime('%Y/%m/%d %X', time.localtime())
outTime = time.time() - startTime
# print(outTime)
log = "数据库MongoDB[" + name + "]备份成功,用时[" + str(round(outTime, 2)) + "]秒"
mw.writeLog('计划任务', log)
print("★[" + endDate + "] " + log)
print("|---保留最新的[" + count + "]份备份")
print("|---文件名:" + filename)
backups = self.getDbBackupList(name)
# 清理多余备份
num = len(backups) - int(count)
if num > 0:
for backup in backups:
mw.execShell("rm -f " + backup_path + "/"+backup)
num -= 1
print("|---已清理过期备份文件:" + backup)
if num < 1:
break
def backupDatabaseAll(self, save):
db_path = mw.getServerDir() + '/mongodb'
db_name = 'mongodb'
databases = mw.M('databases').dbPos(
db_path, db_name).field('name').select()
for db in databases:
self.backupDatabase(db['name'], save)
def findPathName(self, path, filename):
f = os.scandir(path)
l = []
for ff in f:
if ff.name.find(filename) > -1:
l.append(ff.name)
return l
if __name__ == "__main__":
backup = backupTools()
stype = sys.argv[1]
if stype == 'all':
backup.backupDatabaseAll(sys.argv[2])
if stype == 'database':
backup.backupDatabase(sys.argv[2], sys.argv[3])
+42
View File
@@ -67,3 +67,45 @@ if [ ! -d $serverPath/mongodb/bin ];then
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-aarch64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+43
View File
@@ -44,3 +44,46 @@ if [ ! -d $serverPath/mongodb/bin ];then
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+49 -1
View File
@@ -26,4 +26,52 @@ fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/mongodb-macos-x86_64-${VERSION} && cp -rf ./bin $serverPath/mongodb
fi
fi
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb-database-tools ------------------ #
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-macos-arm64-100.9.4.zip
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-macos-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+45 -1
View File
@@ -46,4 +46,48 @@ if [ ! -d $serverPath/mongodb/bin ];then
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-suse12-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+20 -1
View File
@@ -42,4 +42,23 @@ if [ ! -d $serverPath/mongodb/bin ];then
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+44 -1
View File
@@ -44,4 +44,47 @@ if [ ! -d $serverPath/mongodb/bin ];then
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+42
View File
@@ -54,3 +54,45 @@ if [ ! -d $serverPath/mongodb/bin ];then
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-aarch64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+42
View File
@@ -44,3 +44,45 @@ if [ ! -d $serverPath/mongodb/bin ];then
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+49 -1
View File
@@ -26,4 +26,52 @@ fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/mongodb-macos-x86_64-${VERSION} && cp -rf ./bin $serverPath/mongodb
fi
fi
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb-database-tools ------------------ #
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-macos-arm64-100.9.4.zip
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-macos-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+43
View File
@@ -47,3 +47,46 @@ if [ ! -d $serverPath/mongodb/bin ];then
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-suse12-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+43
View File
@@ -46,3 +46,46 @@ fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+45 -1
View File
@@ -59,4 +59,48 @@ if [ ! -d $serverPath/mongodb/bin ];then
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
rm -rf ${MG_DIR}/${FILE_NAME}
rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-aarch64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+43
View File
@@ -45,3 +45,46 @@ fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+49 -1
View File
@@ -26,4 +26,52 @@ fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/mongodb-macos-x86_64-${VERSION} && cp -rf ./bin $serverPath/mongodb
fi
fi
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb-database-tools ------------------ #
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-macos-arm64-100.9.4.zip
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-macos-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+43
View File
@@ -48,3 +48,46 @@ fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-suse12-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+43
View File
@@ -45,3 +45,46 @@ if [ ! -d $serverPath/mongodb/bin ];then
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+46 -1
View File
@@ -9,7 +9,7 @@ rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
install_tmp=${rootPath}/tmp/mw_install.pl
VERSION=7.0.0
VERSION=7.0.9
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
@@ -61,3 +61,48 @@ fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel90-aarch64-100.9.4.tgz
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel90-x86_64-100.9.4.tgz
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel83-s390x-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-aarch64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-rhel${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+45 -1
View File
@@ -9,7 +9,7 @@ rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
install_tmp=${rootPath}/tmp/mw_install.pl
VERSION=7.0.0
VERSION=7.0.9
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
SYS_NAME=${SYS_VERSION_ID/./}
@@ -45,3 +45,47 @@ fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-debian${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+54 -2
View File
@@ -7,9 +7,10 @@ rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
SYS_ARCH=`arch`
install_tmp=${rootPath}/tmp/mw_install.pl
VERSION=7.0.0
VERSION=7.0.9
MG_DIR=$serverPath/source/mongodb
mkdir -p $MG_DIR
@@ -26,4 +27,55 @@ fi
if [ ! -d $serverPath/mongodb/bin ];then
mkdir -p $serverPath/mongodb
cd $MG_DIR/mongodb-macos-x86_64-${VERSION} && cp -rf ./bin $serverPath/mongodb
fi
fi
# https://downloads.mongodb.com/compass/mongosh-2.2.5-darwin-x64.zip
# https://downloads.mongodb.com/compass/mongosh-2.2.5-darwin-arm64.zip
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-darwin-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-macos-arm64-100.9.4.zip
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-macos-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-macos-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.zip
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && unzip ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+48 -2
View File
@@ -9,7 +9,7 @@ rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
install_tmp=${rootPath}/tmp/mw_install.pl
VERSION=7.0.0
VERSION=7.0.9
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}' | awk -F . '{print $1}'`
@@ -46,4 +46,50 @@ if [ ! -d $serverPath/mongodb/bin ];then
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-suse12-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-suse${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+46 -2
View File
@@ -9,7 +9,7 @@ rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
install_tmp=${rootPath}/tmp/mw_install.pl
VERSION=7.0.0
VERSION=7.0.9
SYS_ARCH=`arch`
SYS_VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
@@ -44,4 +44,48 @@ if [ ! -d $serverPath/mongodb/bin ];then
cd $MG_DIR/${FILE_NAME} && cp -rf ./bin $serverPath/mongodb
fi
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
cd ${MG_DIR} && rm -rf ${MG_DIR}/${FILE_NAME}
#--------------- mongosh tool install ------------------ #
TOOL_VERSION=2.2.5
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-x64
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongosh-${TOOL_VERSION}-linux-arm64
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}
echo "wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://downloads.mongodb.com/compass/${TOOL_FILE_NAME_TGZ}"
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
# https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.9.4.tgz
#--------------- mongodb database install ------------------ #
TOOL_VERSION=100.9.4
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-x86_64-${TOOL_VERSION}
if [ "aarch64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
if [ "arm64" == ${SYS_ARCH} ];then
TOOL_FILE_NAME=mongodb-database-tools-ubuntu${SYS_NAME}-arm64-${TOOL_VERSION}
fi
TOOL_FILE_NAME_TGZ=${TOOL_FILE_NAME}.tgz
if [ ! -f $MG_DIR/${TOOL_FILE_NAME_TGZ} ]; then
wget --no-check-certificate -O $MG_DIR/${TOOL_FILE_NAME_TGZ} https://fastdl.mongodb.org/tools/db/${TOOL_FILE_NAME_TGZ}
fi
if [ ! -d $MG_DIR/${TOOL_FILE_NAME_TGZ} ];then
cd $MG_DIR && tar -zxvf ${TOOL_FILE_NAME_TGZ}
fi
cd ${MG_DIR}/${TOOL_FILE_NAME} && cp -rf ./bin $serverPath/mongodb
cd ${MG_DIR} && rm -rf ${MG_DIR}/${TOOL_FILE_NAME}
+41 -56
View File
@@ -856,68 +856,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mysql-apt'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mysql-apt'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var phpmyadmin_cfg = rdata;
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@")
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0];
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
}
},'json');
}
function delBackup(filename, name, path){
@@ -1166,7 +1151,7 @@ function dbList(page, search){
list += '<td><span class="c9 input-edit" onclick="setDbPs(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\',this)" style="display: inline-block;">'+rdata.data[i]['ps']+'</span></td>';
list += '<td style="text-align:right">';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\',this)" title="数据库备份">'+(rdata.data[i]['is_backup']?'备份':'未备份') +'</a> | ';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\',this)" title="数据库备份">'+(rdata.data[i]['is_backup']?'已备份':'未备份') +'</a> | ';
var rw = '';
var rw_change = 'all';
+1 -1
View File
@@ -63,7 +63,7 @@ class backupTools:
if len(mycnf) > 100:
mw.writeFile(db_path + '/etc/my.cnf', mycnf)
cmd = db_path + "/bin/usr/bin/mysqldump --defaults-file=" + my_conf_path + " --single-transaction --quick --default-character-set=utf8 " + \
cmd = db_path + "/bin/usr/bin/mysqldump --defaults-file=" + my_conf_path + " --single-transaction -q --default-character-set=utf8 " + \
name + " | gzip > " + filename
mw.execShell(cmd)
+2 -2
View File
@@ -112,10 +112,10 @@ Install_mysql()
if [ "$?" == "0" ];then
mkdir -p $serverPath/mysql-apt
echo '8.0' > $serverPath/mysql-apt/version.pl
echo '8.2' > $serverPath/mysql-apt/version.pl
echo '安装完成' > $install_tmp
else
echo '8.0' > $serverPath/mysql-apt/version.pl
echo '8.2' > $serverPath/mysql-apt/version.pl
echo "暂时不支持该系统" > $install_tmp
fi
}
+41 -56
View File
@@ -857,68 +857,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mysql-yum'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mysql-yum'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var phpmyadmin_cfg = rdata;
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@")
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0];
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},3000);
}
},'json');
}
function delBackup(filename, name, path){
@@ -1167,7 +1152,7 @@ function dbList(page, search){
list += '<td><span class="c9 input-edit" onclick="setDbPs(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\',this)" style="display: inline-block;">'+rdata.data[i]['ps']+'</span></td>';
list += '<td style="text-align:right">';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\',this)" title="数据库备份">'+(rdata.data[i]['is_backup']?'备份':'未备份') +'</a> | ';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\',this)" title="数据库备份">'+(rdata.data[i]['is_backup']?'已备份':'未备份') +'</a> | ';
var rw = '';
var rw_change = 'all';
+1 -1
View File
@@ -65,7 +65,7 @@ class backupTools:
if len(content) > 100:
mw.writeFile(my_cnf, content)
cmd = db_path + "/bin/usr/bin/mysqldump --defaults-file=" + my_cnf + " --single-transaction --quick --default-character-set=utf8 " + \
cmd = db_path + "/bin/usr/bin/mysqldump --defaults-file=" + my_cnf + " --single-transaction -q --default-character-set=utf8 " + \
name + " | gzip > " + filename
mw.execShell(cmd)
+27
View File
@@ -0,0 +1,27 @@
```
show global variables like '%gtid%';
show global variables like 'server_uuid';
```
```
# 不锁表,需要删除原来数据表
# tables = db.query('show tables from `%s`' % sync_db_import)
# table_key = "Tables_in_" + sync_db_import
# for tname in tables:
# drop_db_cmd = 'drop table if exists '+sync_db_import+'.'+tname[table_key]
# # print(drop_db_cmd)
# db.query(drop_db_cmd)
```
```
# 修改同步位置
# master_info = sync_mdb.query('show master status')
# slave_info = db.query('show slave status')
# if len(master_info)>0:
# channel_name = slave_info[0]['Channel_Name']
# change_cmd = "CHANGE MASTER TO MASTER_LOG_FILE='"+master_info[0]['File']+"', MASTER_LOG_POS="+str(master_info[0]['Position'])+" for channel '"+channel_name+"';"
# print(change_cmd)
# r = db.execute(change_cmd)
# print(r)
```
+116
View File
@@ -0,0 +1,116 @@
[client]
user = root
#password = your_password
port = 3306
socket = {$SERVER_APP_PATH}/mysql.sock
default-character-set = UTF8MB4
[mysqld]
!include {$SERVER_APP_PATH}/etc/mode/classic.cnf
sha256_password_private_key_path={$SERVER_APP_PATH}/data/mysql.pem
sha256_password_public_key_path={$SERVER_APP_PATH}/data/mysql.pub
authentication_policy=mysql_native_password
pid-file = {$SERVER_APP_PATH}/data/mysql.pid
user = mysql
port = 3306
socket = {$SERVER_APP_PATH}/mysql.sock
basedir = {$SERVER_APP_PATH}
datadir = {$SERVER_APP_PATH}/data
log-error = {$SERVER_APP_PATH}/data/error.log
server-id = {$SERVER_ID}
#sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_storage_engine = InnoDB
key_buffer_size = 8M
table_open_cache = 32
sort_buffer_size = 256K
net_buffer_length = 4K
read_buffer_size = 128K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 4M
thread_cache_size = 4
lower_case_table_names=0
tmp_table_size = 8M
character-set-server = UTF8MB4
max_connections = 500
max_connect_errors = 100
open_files_limit = 2560
max_allowed_packet = 128M
skip_name_resolve=1
#skip-networking
#skip-external-locking
#loose-skip-innodb
#skip-grant-tables
log-bin=mysql-bin
slow_query_log=1
slow-query-log-file={$SERVER_APP_PATH}/data/mysql-slow.log
long_query_time=10
#log_queries_not_using_indexes=1
#log_slow_admin_statements=1
#log_slow_replica_statements=1
binlog_expire_logs_seconds=2592000
relay-log=mdserver
relay-log-index=mdserver
#多主设置
#auto_increment_offset=2
#auto_increment_increment=2
#master
#sync_binlog=1
#binlog-do-db
binlog-ignore-db = test
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#slave
log_replica_updates = 1
# Prevent replication from starting automatically with MySQL
#skip_replica_start = 1
#replicate-do-db
replica_skip_errors=1062,1396
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = mysql
replicate-ignore-db = test
innodb_data_home_dir = {$SERVER_APP_PATH}/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = {$SERVER_APP_PATH}/data
innodb_buffer_pool_size = 16M
#innodb_log_file_size = 5M
innodb_redo_log_capacity=10485760
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 120
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 1
innodb_write_io_threads = 1
innodb_file_per_table=1
secure-file-priv={$SERVER_APP_PATH}/tmp
[mysqldump]
quick
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
+2
View File
@@ -50,7 +50,9 @@ CREATE TABLE IF NOT EXISTS `slave_sync_user` (
`pass` TEXT,
`mode` TEXT,
`cmd` TEXT,
`db` TEXT,
`addtime` TEXT
);
ALTER TABLE `slave_sync_user` ADD COLUMN `db` TEXT DEFAULT '';
+635 -56
View File
@@ -63,12 +63,12 @@ def getArgs():
if t.strip() == '':
tmp = []
else:
t = t.split(':', 1)
t = t.split(':',1)
tmp[t[0]] = t[1]
tmp[t[0]] = t[1]
elif args_len > 1:
for i in range(len(args)):
t = args[i].split(':', 1)
t = args[i].split(':',1)
tmp[t[0]] = t[1]
return tmp
@@ -622,6 +622,8 @@ def my8cmd(version, method):
isInited = initMysql8Data()
elif version == '8.2':
isInited = initMysql8Data()
elif version == '8.3':
isInited = initMysql8Data()
if not isInited:
@@ -743,7 +745,7 @@ def getMyDbPos():
return tmp.groups()[0].strip()
def setMyDbPos():
def setMyDbPos(version):
args = getArgs()
data = checkArgs(args, ['datadir'])
if not data[0]:
@@ -758,7 +760,7 @@ def setMyDbPos():
mw.execShell('mkdir -p ' + t_datadir)
# mw.execShell('/etc/init.d/mysqld stop')
stop()
stop(version)
mw.execShell('cp -rf ' + s_datadir + '/* ' + t_datadir + '/')
mw.execShell('chown -R mysql mysql ' + t_datadir)
mw.execShell('chmod -R 755 ' + t_datadir)
@@ -772,7 +774,7 @@ def setMyDbPos():
mycnf = mycnf.replace(s_datadir, t_datadir)
mw.writeFile(myfile, mycnf)
start()
start(version)
result = mw.execShell(
'ps aux|grep mysqld| grep -v grep|grep -v python')
@@ -782,7 +784,7 @@ def setMyDbPos():
else:
mw.execShell('pkill -9 mysqld')
mw.writeFile(myfile, mw.readFile(path + '/etc/my_backup.cnf'))
start()
start(version)
return mw.returnJson(False, '文件迁移失败!')
@@ -1068,6 +1070,81 @@ def importDbExternal():
return mw.returnJson(True, 'ok')
def importDbExternalProgress():
args = getArgs()
data = checkArgs(args, ['file', 'name'])
if not data[0]:
return data[1]
file = args['file']
name = args['name']
cmd = 'cd '+mw.getServerDir()+'/mdserver-web && source bin/activate && '
cmd += 'python3 '+mw.getServerDir()+'/mdserver-web/plugins/mysql/index.py import_db_external_progress_bar {"file":"'+file+'","name":"'+name+'"}'
return mw.returnJson(True, 'ok',cmd)
def importDbExternalProgressBar():
args = getArgs()
data = checkArgs(args, ['file', 'name'])
if not data[0]:
return data[1]
file = args['file']
name = args['name']
import_dir = mw.getRootDir() + '/backup/import/'
file_path = import_dir + file
if not os.path.exists(file_path):
return mw.returnJson(False, '文件突然消失?')
exts = ['sql', 'gz', 'zip']
ext = mw.getFileSuffix(file)
if ext not in exts:
return mw.returnJson(False, '导入数据库格式不对!')
tmp = file.split('/')
tmpFile = tmp[len(tmp) - 1]
tmpFile = tmpFile.replace('.sql.' + ext, '.sql')
tmpFile = tmpFile.replace('.' + ext, '.sql')
tmpFile = tmpFile.replace('tar.', '')
# print(tmpFile)
import_sql = ""
if file.find("sql.gz") > -1:
cmd = 'cd ' + import_dir + ' && gzip -dc ' + \
file + " > " + import_dir + tmpFile
info = mw.execShell(cmd)
if info[1] == "":
import_sql = import_dir + tmpFile
if file.find(".zip") > -1:
cmd = 'cd ' + import_dir + ' && unzip -o ' + file
mw.execShell(cmd)
import_sql = import_dir + tmpFile
if file.find("tar.gz") > -1:
cmd = 'cd ' + import_dir + ' && tar -zxvf ' + file
mw.execShell(cmd)
import_sql = import_dir + tmpFile
if file.find(".sql") > -1 and file.find(".sql.gz") == -1:
import_sql = import_dir + file
if import_sql == "":
return mw.returnJson(False, '未找SQL文件')
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
sock = getSocketFile()
my_cnf = getConf()
mysql_cmd = getServerDir() + '/bin/mysql --defaults-file=' + my_cnf + \
' -uroot -p"' + pwd + '" -f ' + name
mysql_cmd_progress_bar = "pv -t -p " + import_sql + '|'+ mysql_cmd
print(mysql_cmd_progress_bar)
rdata = os.system(mysql_cmd_progress_bar)
return ""
def importDbBackup():
args = getArgs()
@@ -1105,6 +1182,53 @@ def importDbBackup():
return mw.returnJson(True, 'ok')
def importDbBackupProgress():
args = getArgs()
data = checkArgs(args, ['file', 'name'])
if not data[0]:
return data[1]
file = args['file']
name = args['name']
cmd = 'cd '+mw.getServerDir()+'/mdserver-web && source bin/activate && '
cmd += 'python3 '+mw.getServerDir()+'/mdserver-web/plugins/mysql/index.py import_db_backup_progress_bar {"file":"'+file+'","name":"'+name+'"}'
return mw.returnJson(True, 'ok',cmd)
return mw.returnJson(True, 'ok')
def importDbBackupProgressBar():
args = getArgs()
data = checkArgs(args, ['file', 'name'])
if not data[0]:
return data[1]
file = args['file']
name = args['name']
file_path = mw.getRootDir() + '/backup/database/' + file
file_path_sql = mw.getRootDir() + '/backup/database/' + file.replace('.gz', '')
if not os.path.exists(file_path_sql):
cmd = 'cd ' + mw.getRootDir() + '/backup/database && gzip -d ' + file
mw.execShell(cmd)
local_mode = recognizeDbMode()
if local_mode == 'gtid':
pdb = pMysqlDb()
pdb.execute('reset master')
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
sock = getSocketFile()
mysql_cmd = getServerDir() + '/bin/mysql -S ' + sock + ' -uroot -p"' + pwd + \
'" ' + name
mysql_cmd_progress_bar = "pv -t -p " + file_path_sql + '|'+ mysql_cmd
print(mysql_cmd_progress_bar)
rdata = os.system(mysql_cmd_progress_bar)
return ''
def deleteDbBackup():
args = getArgs()
data = checkArgs(args, ['filename', 'path'])
@@ -2225,7 +2349,7 @@ def addMasterRepSlaveUser(version=''):
if isError != None:
return isError
sql_select = "grant select,lock tables,PROCESS on *.* to " + username + "@'%';"
sql_select = "grant select,reload,REPLICATION CLIENT,PROCESS on *.* to " + username + "@'%';"
pdb.execute(sql_select)
pdb.execute('FLUSH PRIVILEGES;')
@@ -2270,29 +2394,31 @@ def getMasterRepSlaveUserCmd(version):
if sid != '':
channel_name = " for channel 'r{}';".format(sid)
if mode == "gtid":
sql = "CHANGE MASTER TO MASTER_HOST='" + ip + "', MASTER_PORT=" + port + ", MASTER_USER='" + \
clist[0]['username'] + "', MASTER_PASSWORD='" + \
clist[0]['password'] + "', MASTER_AUTO_POSITION=1" + channel_name
if version == '8.0':
sql = "CHANGE REPLICATION SOURCE TO SOURCE_HOST='" + ip + "', SOURCE_PORT=" + port + ", SOURCE_USER='" + \
clist[0]['username'] + "', SOURCE_PASSWORD='" + \
clist[0]['password'] + \
"', MASTER_AUTO_POSITION=1" + channel_name
else:
sql = "CHANGE MASTER TO MASTER_HOST='" + ip + "', MASTER_PORT=" + port + ", MASTER_USER='" + \
clist[0]['username'] + "', MASTER_PASSWORD='" + \
clist[0]['password'] + \
"', MASTER_LOG_FILE='" + mstatus[0]["File"] + \
"',MASTER_LOG_POS=" + str(mstatus[0]["Position"]) + channel_name
mdb8 = ['8.0','8.1','8.2','8.3','8.4']
sql = ''
if not mw.inArray(mdb8,version):
base_sql = "CHANGE MASTER TO MASTER_HOST='" + ip + "', MASTER_PORT=" + port + ", MASTER_USER='" + \
clist[0]['username'] + "', MASTER_PASSWORD='" + \
clist[0]['password'] + "'"
if version == "8.0":
sql = "CHANGE REPLICATION SOURCE TO SOURCE_HOST='" + ip + "', SOURCE_PORT=" + port + ", SOURCE_USER='" + \
sql += base_sql +';'
sql += "<br/><hr/>"
# sql += base_sql + ", MASTER_AUTO_POSITION=1" + channel_name
sql += base_sql + channel_name
sql += "<br/><hr/>"
sql += base_sql + "', MASTER_LOG_FILE='" + mstatus[0]["File"] + "',MASTER_LOG_POS=" + str(mstatus[0]["Position"]) + channel_name
else:
base_sql = "CHANGE REPLICATION SOURCE TO SOURCE_HOST='" + ip + "', SOURCE_PORT=" + port + ", SOURCE_USER='" + \
clist[0]['username'] + "', SOURCE_PASSWORD='" + \
clist[0]['password'] + \
"', SOURCE_LOG_FILE='" + mstatus[0]["File"] + \
"',SOURCE_LOG_POS=" + \
str(mstatus[0]["Position"]) + channel_name
clist[0]['password']+"'"
sql += base_sql +';'
sql += "<br/><hr/>"
# sql += base_sql + ", MASTER_AUTO_POSITION=1" + channel_name
sql += base_sql + channel_name
sql += "<br/><hr/>"
sql += base_sql + "', SOURCE_LOG_FILE='" + mstatus[0]["File"] + "',SOURCE_LOG_POS=" + str(mstatus[0]["Position"]) + channel_name
data = {}
data['cmd'] = sql
@@ -2645,6 +2771,7 @@ def initSlaveStatus(version=''):
return mw.returnJson(False, 'MySQL未启动', [])
mode_file = getSyncModeFile()
# print(mode_file)
if not os.path.exists(mode_file):
return mw.returnJson(False, '需要先设置同步配置')
@@ -2718,7 +2845,7 @@ def initSlaveStatusSyncUser(version=''):
if slave_t['mode'] == '1':
mode_name = 'gtid'
# print(local_mode, mode_name)
if local_mode != mode_name:
msg += base_t + '->同步模式不一致'
continue
@@ -2732,8 +2859,9 @@ def initSlaveStatusSyncUser(version=''):
pinfo = parseSlaveSyncCmd(cmd_sql)
except Exception as e:
return mw.returnJson(False, base_t + '->CMD同步命令不合规范!')
# print(u['cmd'])
# print(cmd_sql)
t = pdb.query(cmd_sql)
# print(t)
isError = isSqlError(t)
if isError:
return isError
@@ -2848,18 +2976,21 @@ def setSlaveStatus(version=''):
return mw.returnJson(True, '设置成功!')
def deleteSlave(version=''):
args = getArgs()
def deleteSlaveFunc(sign = ''):
db = pMysqlDb()
if 'sign' in args:
sign = args['sign']
if sign != '':
db.query("stop slave for channel '{}'".format(sign))
db.query("reset slave all for channel '{}'".format(sign))
else:
db.query('stop slave')
db.query('reset slave all')
def deleteSlave(version=''):
args = getArgs()
sign = ''
if 'sign' in args:
sign = args['sign']
deleteSlaveFunc(sign)
return mw.returnJson(True, '删除成功!')
@@ -2894,6 +3025,293 @@ def dumpMysqlData(version=''):
return 'fail'
############### --- 重要 数据补足同步 ---- ###########
def getSyncMysqlDB(dbname,sign = ''):
conn = pSqliteDb('slave_sync_user')
if sign != '':
data = conn.field('ip,port,user,pass,mode,cmd').where('ip=?', (sign,)).find()
else:
data = conn.field('ip,port,user,pass,mode,cmd').find()
user = data['user']
apass = data['pass']
port = data['port']
ip = data['ip']
# 远程数据
sync_db = mw.getMyORM()
# MySQLdb |
sync_db.setPort(port)
sync_db.setHost(ip)
sync_db.setUser(user)
sync_db.setPwd(apass)
sync_db.setDbName(dbname)
sync_db.setTimeout(60)
return sync_db
def syncDatabaseRepairTempFile():
tmp_log = mw.getMWLogs()+ '/mysql-check.log'
return tmp_log
def syncDatabaseRepairLog(version=''):
import subprocess
args = getArgs()
data = checkArgs(args, ['db','sign','op'])
if not data[0]:
return data[1]
sync_args_db = args['db']
sync_args_sign = args['sign']
op = args['op']
tmp_log = syncDatabaseRepairTempFile()
cmd = 'cd '+mw.getServerDir()+'/mdserver-web && source bin/activate && python3 plugins/mysql/index.py sync_database_repair {"db":"'+sync_args_db+'","sign":"'+sync_args_sign+'"}'
# print(cmd)
if op == 'get':
log = mw.getLastLine(tmp_log, 15)
return mw.returnJson(True, log)
if op == 'cmd':
return mw.returnJson(True, 'ok', cmd)
if op == 'do':
os.system(' echo "开始执行" > '+ tmp_log)
subprocess.Popen(cmd +' >> '+ tmp_log +' &')
# time.sleep(10)
# mw.execShell('rm -rf '+tmp_log)
return mw.returnJson(True, 'ok')
return mw.returnJson(False, '无效请求!')
def syncDatabaseRepair(version=''):
time_stats_s = time.time()
tmp_log = syncDatabaseRepairTempFile()
from pymysql.converters import escape_string
args = getArgs()
data = checkArgs(args, ['db','sign'])
if not data[0]:
return data[1]
sync_args_db = args['db']
sync_args_sign = args['sign']
# 本地数据
local_db = pMysqlDb()
# 远程数据
sync_db = getSyncMysqlDB(sync_args_db,sync_args_sign)
tables = local_db.query('show tables from `%s`' % sync_args_db)
table_key = "Tables_in_" + sync_args_db
inconsistent_table = []
tmp_dir = '/tmp/sync_db_repair'
mw.execShell('mkdir -p '+tmp_dir)
for tb in tables:
table_name = sync_args_db+'.'+tb[table_key]
table_check_file = tmp_dir+'/'+table_name+'.txt'
if os.path.exists(table_check_file):
# print(table_name+', 已检查OK')
continue
primary_key_sql = "SHOW INDEX FROM "+table_name+" WHERE Key_name = 'PRIMARY';";
primary_key_data = local_db.query(primary_key_sql)
# print(primary_key_sql,primary_key_data)
pkey_name = '*'
if len(primary_key_data) == 1:
pkey_name = primary_key_data[0]['Column_name']
# print(pkey_name)
if pkey_name != '*' :
# 智能校验(由于服务器同步可能会慢,比较总数总是对不上)
cmd_local_newpk_sql = 'select ' + pkey_name + ' from ' + table_name + " order by " + pkey_name + " desc limit 1"
cmd_local_newpk_data = local_db.query(cmd_local_newpk_sql)
# print(cmd_local_newpk_data)
if len(cmd_local_newpk_data) == 1:
# 比较总数
cmd_count_sql = 'select count('+pkey_name+') as num from '+table_name + ' where '+pkey_name + ' <= '+ str(cmd_local_newpk_data[0][pkey_name])
local_count_data = local_db.query(cmd_count_sql)
sync_count_data = sync_db.query(cmd_count_sql)
if local_count_data != sync_count_data:
print(cmd_count_sql)
print("all data compare: ",local_count_data, sync_count_data)
else:
print(table_name+' smart compare check ok.')
mw.writeFile(tmp_log, table_name+' smart compare check ok.\n','a+')
mw.execShell("echo 'ok' > "+table_check_file)
continue
# 比较总数
cmd_count_sql = 'select count('+pkey_name+') as num from '+table_name
local_count_data = local_db.query(cmd_count_sql)
sync_count_data = sync_db.query(cmd_count_sql)
if local_count_data != sync_count_data:
print("all data compare: ",local_count_data, sync_count_data)
inconsistent_table.append(table_name)
diff = sync_count_data[0]['num'] - local_count_data[0]['num']
print(table_name+', need sync. diff,'+str(diff))
mw.writeFile(tmp_log, table_name+', need sync. diff,'+str(diff)+'\n','a+')
else:
print(table_name+' check ok.')
mw.writeFile(tmp_log, table_name+' check ok.\n','a+')
mw.execShell("echo 'ok' > "+table_check_file)
# inconsistent_table = ['xx.xx']
# 数据对齐
for table_name in inconsistent_table:
is_break = False
while not is_break:
local_db.ping()
# 远程数据
sync_db.ping()
print("check table:"+table_name)
mw.writeFile(tmp_log, "check table:"+table_name+'\n','a+')
table_name_pos = 0
table_name_pos_file = tmp_dir+'/'+table_name+'.pos.txt'
primary_key_sql = "SHOW INDEX FROM "+table_name+" WHERE Key_name = 'PRIMARY';";
primary_key_data = local_db.query(primary_key_sql)
pkey_name = primary_key_data[0]['Column_name']
if os.path.exists(table_name_pos_file):
table_name_pos = mw.readFile(table_name_pos_file)
data_select_sql = 'select * from '+table_name + ' where '+pkey_name+' > '+str(table_name_pos)+' limit 10000'
print(data_select_sql)
local_select_data = local_db.query(data_select_sql)
time_s = time.time()
sync_select_data = sync_db.query(data_select_sql)
print(f'sync query cos:{time.time() - time_s:.4f}s')
mw.writeFile(tmp_log, f'sync query cos:{time.time() - time_s:.4f}s\n','a+')
# print(local_select_data)
# print(sync_select_data)
# print(len(local_select_data))
# print(len(sync_select_data))
print('pos:',str(table_name_pos),'local compare sync,',local_select_data == sync_select_data)
cmd_count_sql = 'select count('+pkey_name+') as num from '+table_name
local_count_data = local_db.query(cmd_count_sql)
time_s = time.time()
sync_count_data = sync_db.query(cmd_count_sql)
print(f'sync count data cos:{time.time() - time_s:.4f}s')
print(local_count_data,sync_count_data)
# 数据同步有延迟,相等即任务数据补足完成
if local_count_data[0]['num'] == sync_count_data[0]['num']:
is_break = True
break
diff = sync_count_data[0]['num'] - local_count_data[0]['num']
print("diff," + str(diff)+' line data!')
if local_select_data == sync_select_data:
data_count = len(local_select_data)
if data_count == 0:
# mw.writeFile(table_name_pos_file, '0')
print(table_name+",data is equal ok..")
is_break = True
break
# print(table_name,data_count)
pos = local_select_data[data_count-1][pkey_name]
print('pos',pos)
progress = pos/sync_count_data[0]['num']
print('progress,%.2f' % progress+'%')
mw.writeFile(table_name_pos_file, str(pos))
else:
sync_select_data_len = len(sync_select_data)
skip_idx = 0
# 主库PK -> 查询本地 | 保证一致
if sync_select_data_len > 0:
for idx in range(sync_select_data_len):
sync_idx_data = sync_select_data[idx]
local_idx_data = None
if idx in local_select_data:
local_idx_data = local_select_data[idx]
if sync_select_data[idx] == local_idx_data:
skip_idx = idx
pos = local_select_data[idx][pkey_name]
mw.writeFile(table_name_pos_file, str(pos))
# print(insert_data)
local_inquery_sql = 'select * from ' + table_name+ ' where ' +pkey_name+' = '+ str(sync_idx_data[pkey_name])
# print(local_inquery_sql)
ldata = local_db.query(local_inquery_sql)
# print('ldata:',ldata)
if len(ldata) == 0:
print("id:"+ str(sync_idx_data[pkey_name])+ " no exists, insert")
insert_sql = 'insert into ' + table_name
field_str = ''
value_str = ''
for field in sync_idx_data:
field_str += '`'+field+'`,'
value_str += '\''+escape_string(str(sync_idx_data[field]))+'\','
field_str = '(' +field_str.strip(',')+')'
value_str = '(' +value_str.strip(',')+')'
insert_sql = insert_sql+' '+field_str+' values'+value_str+';'
print(insert_sql)
r = local_db.execute(insert_sql)
print(r)
else:
# print('compare sync->local:',sync_idx_data == ldata[0] )
if ldata[0] == sync_idx_data:
continue
print("id:"+ str(sync_idx_data[pkey_name])+ " data is not equal, update")
update_sql = 'update ' + table_name
field_str = ''
value_str = ''
for field in sync_idx_data:
if field == pkey_name:
continue
field_str += '`'+field+'`=\''+escape_string(str(sync_idx_data[field]))+'\','
field_str = field_str.strip(',')
update_sql = update_sql+' set '+field_str+' where '+pkey_name+'=\''+str(sync_idx_data[pkey_name])+'\';'
print(update_sql)
r = local_db.execute(update_sql)
print(r)
# 本地PK -> 查询主库 | 保证一致
# local_select_data_len = len(local_select_data)
# if local_select_data_len > 0:
# for idx in range(local_select_data_len):
# if idx < skip_idx:
# continue
# local_idx_data = local_select_data[idx]
# print('local idx check', idx, skip_idx)
# local_inquery_sql = 'select * from ' + table_name+ ' where ' +pkey_name+' = '+ str(local_idx_data[pkey_name])
# print(local_inquery_sql)
# sdata = sync_db.query(local_inquery_sql)
# sdata_len = len(sdata)
# print('sdata:',sdata,sdata_len)
# if sdata_len == 0:
# delete_sql = 'delete from ' + table_name + ' where ' +pkey_name+' = '+ str(local_idx_data[pkey_name])
# print(delete_sql)
# r = local_db.execute(delete_sql)
# print(r)
# break
if is_break:
print("break all")
break
time.sleep(3)
print(f'data check cos:{time.time() - time_stats_s:.4f}s')
print("data supplementation completed")
mw.execShell('rm -rf '+tmp_dir)
return 'ok'
############### --- 重要 同步---- ###########
def asyncTmpfile():
@@ -2904,7 +3322,20 @@ def asyncTmpfile():
def writeDbSyncStatus(data):
path = asyncTmpfile()
mw.writeFile(path, json.dumps(data))
return True
def fullSyncCmd():
time_all_s = time.time()
args = getArgs()
data = checkArgs(args, ['db', 'sign'])
if not data[0]:
return data[1]
db = args['db']
sign = args['sign']
cmd = 'cd '+mw.getServerDir()+'/mdserver-web && source bin/activate && python3 plugins/mysql/index.py do_full_sync {"db":"'+db+'","sign":"'+sign+'"}'
return mw.returnJson(True,'ok',cmd)
def doFullSync(version=''):
mode_file = getSyncModeFile()
@@ -2918,7 +3349,53 @@ def doFullSync(version=''):
return doFullSyncUser(version)
def isSimpleSyncCmd(sql):
new_sql = sql.lower()
if new_sql.find('master_auto_position') > 0:
return False
return True
def getChannelNameForCmd(cmd):
cmd = cmd.lower()
cmd_arr = cmd.split('channel')
if len(cmd_arr) == 2:
cmd_channel_info = cmd_arr[1]
channel_name = cmd_channel_info.strip()
channel_name = channel_name.strip(';')
channel_name = channel_name.strip("'")
return channel_name
return ''
def doFullSyncUserImportContentForChannel(file, channel_name):
# print(file, channel_name)
content = mw.readFile(file)
content = content.replace('STOP SLAVE;', "STOP SLAVE for channel '{}';".format(channel_name))
content = content.replace('START SLAVE;', "START SLAVE for channel '{}';".format(channel_name))
find_head = "CHANGE MASTER TO "
find_re = find_head+"(.*?);"
find_r = re.search(find_re, content, re.I|re.M)
if find_r:
find_rg = find_r.groups()
if len(find_rg)>0:
find_str = find_head+find_rg[0]
if find_str.lower().find('channel')==-1:
content = content.replace(find_str+';', find_str+" for channel '{}';".format(channel_name))
mw.writeFile(file,content)
return True
def doFullSyncUser(version=''):
which_pv = mw.execShell('which pv')
is_exist_pv = False
if not os.path.exists(which_pv[0]):
is_exist_pv = True
time_all_s = time.time()
args = getArgs()
data = checkArgs(args, ['db', 'sign'])
if not data[0]:
@@ -2939,6 +3416,9 @@ def doFullSyncUser(version=''):
db = pMysqlDb()
# 重置
# deleteSlaveFunc(sync_sign)
conn = pSqliteDb('slave_sync_user')
if sync_sign != '':
data = conn.field('ip,port,user,pass,mode,cmd').where(
@@ -2946,10 +3426,15 @@ def doFullSyncUser(version=''):
else:
data = conn.field('ip,port,user,pass,mode,cmd').find()
# print(data)
user = data['user']
apass = data['pass']
port = data['port']
ip = data['ip']
cmd = data['cmd']
channel_name = getChannelNameForCmd(cmd)
sync_mdb = getSyncMysqlDB(sync_db,sync_sign)
bak_file = '/tmp/tmp.sql'
if os.path.exists(bak_file):
@@ -2963,41 +3448,111 @@ def doFullSyncUser(version=''):
time.sleep(1)
writeDbSyncStatus({'code': 1, 'msg': '正在停止从库...', 'progress': 15})
if version == '8.0':
mdb8 = ['8.0','8.1','8.2','8.3','8.4']
if mw.inArray(mdb8,version):
db.query("stop slave user='{}' password='{}';".format(user, apass))
else:
db.query("stop slave")
time.sleep(2)
time.sleep(1)
writeDbSyncStatus({'code': 2, 'msg': '远程导出数据...', 'progress': 20})
if not os.path.exists(bak_file):
dump_sql_data = getServerDir() + "/bin/mysqldump " + dmp_option + " --force --opt --default-character-set=utf8 --single-transaction -h" + ip + " -P" + \
port + " -u" + user + " -p'" + apass + \
"' --ssl-mode=DISABLED " + sync_db + " > " + bak_file
print(dump_sql_data)
mw.execShell(dump_sql_data)
# --master-data=2表示在dump过程中记录主库的binlog和pos点,并在dump文件中注释掉这一行
# --master-data=1表示在dump过程中记录主库的binlog和pos点,并在dump文件中不注释掉这一行,即恢复时会执行
# --dump-slave=2表示在dump过程中,在从库dump,mysqldump进程也要在从库执行,记录当时主库的binlog和pos点,并在dump文件中注释掉这一行
# --dump-slave=1表示在dump过程中,在从库dump,mysqldump进程也要在从库执行,记录当时主库的binlog和pos点,并在dump文件中不注释掉这一行
# --force --opt --single-transaction
# --skip-opt --create-options
# --master-data=1
find_run_dump = mw.execShell('ps -ef | grep mysqldump | grep -v grep')
if find_run_dump[0] != "":
print("正在远程导出数据中,别着急...")
writeDbSyncStatus({'code': 3.1, 'msg': '正在远程导出数据中,别着急...', 'progress': 19})
return False
time_s = time.time()
if not os.path.exists(bak_file):
if isSimpleSyncCmd(cmd):
dmp_option += " --master-data=1 --apply-slave-statements --include-master-host-port "
else:
dmp_option += ' '
dump_sql_data = getServerDir() + "/bin/mysqldump --single-transaction --default-character-set=utf8mb4 --compress -q " + dmp_option + " -h" + ip + " -P" + \
port + " -u" + user + " -p'" + apass + "' --ssl-mode=DISABLED " + sync_db + " > " + bak_file
print(dump_sql_data)
time_s = time.time()
r = mw.execShell(dump_sql_data)
print(r)
time_e = time.time()
export_cos = time_e - time_s
print("export cos:", export_cos)
writeDbSyncStatus({'code': 3, 'msg': '正在到本地导入数据中...', 'progress': 40})
writeDbSyncStatus({'code': 3, 'msg': '导出耗时:'+str(int(export_cos))+'秒,正在到本地导入数据中...', 'progress': 40})
find_run_import = mw.execShell('ps -ef | grep mysql| grep '+ bak_file +' | grep -v grep')
if find_run_import[0] != "":
print("正在导入数据中,别着急...")
writeDbSyncStatus({'code': 4.1, 'msg': '正在导入数据中,别着急...', 'progress': 39})
return False
time_s = time.time()
if os.path.exists(bak_file):
# 重置
db.execute('reset master')
# 加快导入 - 开始
# db.execute('set global innodb_flush_log_at_trx_commit = 2')
# db.execute('set global sync_binlog = 2000')
if channel_name != '':
doFullSyncUserImportContentForChannel(bak_file, channel_name)
pwd = pSqliteDb('config').where('id=?', (1,)).getField('mysql_root')
sock = getSocketFile()
my_import_cmd = getServerDir() + '/bin/mysql -S ' + sock + " -uroot -p'" + pwd + \
"' " + sync_db_import + ' < ' + bak_file
print(my_import_cmd)
mw.execShell(my_import_cmd)
if version == '8.0':
if is_exist_pv:
my_import_cmd = getServerDir() + '/bin/mysql -S ' + sock + " -uroot -p'" + pwd + "' " + sync_db_import
my_import_cmd = "pv -t -p " + bak_file + '|' + my_import_cmd
print(my_import_cmd)
os.system(my_import_cmd)
else:
my_import_cmd = getServerDir() + '/bin/mysql -S ' + sock + " -uroot -p'" + pwd + "' " + sync_db_import + ' < ' + bak_file
print(my_import_cmd)
mw.execShell(my_import_cmd)
# 加快导入 - 结束
# db.execute('set global innodb_flush_log_at_trx_commit = 1')
# db.execute('set global sync_binlog = 1')
time_e = time.time()
import_cos = time_e - time_s
print("import cos:", import_cos)
writeDbSyncStatus({'code': 4, 'msg': '导入耗时:'+str(int(import_cos))+'秒', 'progress': 60})
time.sleep(3)
# print(cmd)
# r = db.query(cmd)
# print(r)
mdb8 = ['8.0','8.1','8.2','8.3','8.4']
if mw.inArray(mdb8,version):
db.query("start slave user='{}' password='{}';".format(user, apass))
else:
db.query("start slave")
writeDbSyncStatus({'code': 6, 'msg': '从库重启完成...', 'progress': 100})
db.query("start all slaves")
time_all_e = time.time()
cos = time_all_e - time_all_s
writeDbSyncStatus({'code': 6, 'msg': '总耗时:'+str(int(cos))+'秒,从库重启完成...', 'progress': 100})
if os.path.exists(bak_file):
os.system("rm -rf " + bak_file)
return True
@@ -3128,10 +3683,13 @@ def doFullSyncSSH(version=''):
print(import_data[0])
writeDbSyncStatus({'code': 5, 'msg': '导入数据失败...', 'progress': 100})
return 'fail'
# "start slave user='{}' password='{}';".format(uinfo['username'], uinfo['password'])
db.query("start slave")
mdb8 = ['8.0','8.1','8.2','8.3','8.4']
if mw.inArray(mdb8,version):
db.query("start slave user='{}' password='{}';".format(uinfo['username'], uinfo['password']))
else:
db.query("start slave")
writeDbSyncStatus({'code': 6, 'msg': '从库重启完成...', 'progress': 100})
os.system("rm -rf " + SSH_PRIVATE_KEY)
@@ -3176,9 +3734,16 @@ def fullSync(version=''):
def installPreInspection(version):
import psutil
mem = psutil.virtual_memory()
memTotal = mem.total
memG = memTotal/1024/1024/1024
if memG > 2:
return 'ok'
swap_path = mw.getServerDir() + "/swap"
if not os.path.exists(swap_path):
return "为了稳定安装MySQL,先安装swap插件!"
return "内存小,为了稳定安装MySQL,先安装swap插件!"
return 'ok'
@@ -3241,7 +3806,7 @@ if __name__ == "__main__":
elif func == 'my_db_pos':
print(getMyDbPos())
elif func == 'set_db_pos':
print(setMyDbPos())
print(setMyDbPos(version))
elif func == 'my_port':
print(getMyPort())
elif func == 'set_my_port':
@@ -3256,8 +3821,16 @@ if __name__ == "__main__":
print(setDbBackup())
elif func == 'import_db_backup':
print(importDbBackup())
elif func == 'import_db_backup_progress':
print(importDbBackupProgress())
elif func == 'import_db_backup_progress_bar':
print(importDbBackupProgressBar())
elif func == 'import_db_external':
print(importDbExternal())
elif func == 'import_db_external_progress':
print(importDbExternalProgress())
elif func == 'import_db_external_progress_bar':
print(importDbExternalProgressBar())
elif func == 'delete_db_backup':
print(deleteDbBackup())
elif func == 'get_db_backup_list':
@@ -3362,7 +3935,13 @@ if __name__ == "__main__":
print(fullSync(version))
elif func == 'do_full_sync':
print(doFullSync(version))
elif func == 'full_sync_cmd':
print(fullSyncCmd())
elif func == 'dump_mysql_data':
print(dumpMysqlData(version))
elif func == 'sync_database_repair':
print(syncDatabaseRepair())
elif func == 'sync_database_repair_log':
print(syncDatabaseRepairLog())
else:
print('error')
+2 -2
View File
@@ -10,8 +10,8 @@
"checks": "server/mysql/VERSION/bin/mysql",
"path": "server/mysql/VERSION",
"todo_versions":["5.6","5.7","8.0","8.2"],
"versions":["5.5", "5.6", "5.7","8.0","8.2"],
"updates":["5.5.62","5.6.50", "5.7.32","8.0.34","8.2.0"],
"versions":["5.5", "5.6", "5.7","8.0","8.2","8.3"],
"updates":["5.5.62","5.6.50", "5.7.32","8.0.34","8.2.0","8.3.0"],
"shell":"install.sh",
"checks":"server/mysql",
"path":"server/mysql",
+5 -2
View File
@@ -6,8 +6,11 @@ export PATH
# https://www.cnblogs.com/whiteY/p/17331882.html
# cd /www/server/mdserver-web/plugins/mysql && bash install.sh install 8.2
# cd /www/server/mdserver-web && source bin/activate && python3 /www/server/mdserver-web/plugins/mysql/index.py try_slave_sync_bugfix {}
# cd /www/server/mdserver-web && source bin/activate && python3 plugins/mysql/index.py try_slave_sync_bugfix {}
# cd /www/server/mdserver-web && source bin/activate && python3 plugins/mysql/index.py do_full_sync {"db":"xxx","sign":"","begin":1}
# cd /www/server/mdserver-web && source bin/activate && python3 plugins/mysql/index.py sync_database_repair {"db":"xxx","sign":""}
# cd /www/server/mdserver-web && source bin/activate && python3 plugins/mysql/index.py init_slave_status
# cd /www/server/mdserver-web && source bin/activate && python3 plugins/mysql/index.py install_pre_inspection
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
+219 -70
View File
@@ -795,7 +795,7 @@ function addDatabase(type){
function delDb(id, name){
safeMessage('删除['+name+']','您真的要删除['+name+']吗?',function(){
var data='id='+id+'&name='+name
var data='id='+id+'&name='+name;
myPost('del_db', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
@@ -857,68 +857,53 @@ function setDbPs(id, name, obj) {
}
function openPhpmyadmin(name,username,password){
$.post('/plugins/run', {'name':'phpmyadmin','func':'plugins_db_support'}, function(data){
var rdata = $.parseJSON(data.data);
data = syncPost('/plugins/check',{'name':'phpmyadmin'});
if (rdata.data['installed'] != 'ok'){
layer.msg('phpMyAdmin未安装!',{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['status'] != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
if (!data.status){
layer.msg(data.msg,{icon:2,shade: [0.3, '#000']});
return;
}
if (rdata.data['cfg']['choose'] != 'mysql'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data['home_page'];
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
bigVer = rdata.data['version'];
if (bigVer>=4.5){
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'status'});
if (data.data != 'start'){
layer.msg('phpMyAdmin未启动',{icon:2,shade: [0.3, '#000']});
return;
}
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_cfg'});
var rdata = $.parseJSON(data.data);
if (rdata.choose != 'mysql'){
layer.msg('当前为['+rdata.choose+']模式,若要使用请修改phpMyAdmin访问切换.',{icon:2,shade: [0.3, '#000']});
return;
}
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
var phpmyadmin_cfg = rdata;
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'get_home_page'});
var rdata = $.parseJSON(data.data);
if (!rdata.status){
layer.msg(rdata.msg,{icon:2,shade: [0.3, '#000']});
return;
}
var home_page = rdata.data;
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
home_page = home_page.replace("http://","http://"+phpmyadmin_cfg['username']+":"+phpmyadmin_cfg['password']+"@")
$("#toPHPMyAdmin").attr('action',home_page);
if($("#toPHPMyAdmin").attr('action').indexOf('phpmyadmin') == -1){
layer.msg('请先安装phpMyAdmin',{icon:2,shade: [0.3, '#000']});
setTimeout(function(){ window.location.href = '/soft'; },3000);
return;
}
//检查版本
data = syncPost('/plugins/run',{'name':'phpmyadmin','func':'version'});
bigVer = data.data.split('.')[0];
if (bigVer>=4.5){
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
layer.msg('phpMyAdmin['+data.data+']需要手动登录😭',{icon:16,shade: [0.3, '#000'],time:4000});
} else{
var murl = $("#toPHPMyAdmin").attr('action');
$("#pma_username").val(username);
$("#pma_password").val(password);
$("#db").val(name);
layer.msg('正在打开phpMyAdmin',{icon:16,shade: [0.3, '#000'],time:2000});
setTimeout(function(){
$("#toPHPMyAdmin").submit();
},2000);
}
},'json');
}
function delBackup(filename, name, path){
@@ -944,6 +929,31 @@ function importBackup(file,name){
});
}
function importBackupProgress(file,name){
myPost('import_db_backup_progress',{file:file,name:name}, function(data){
var rdata = $.parseJSON(data.data);
layer.open({
title: "手动导入命令CMD【显示进度】",
area: ['600px', '180px'],
type:1,
closeBtn: 1,
shadeClose: false,
btn:["复制","取消"],
content: '<div class="pd15">\
<div class="divtable">\
<pre class="layui-code">'+rdata.data+'</pre>\
</div>\
</div>',
success:function(){
copyText(rdata.data);
},
yes:function(){
copyText(rdata.data);
}
});
});
}
function importDbExternal(file,name){
myPost('import_db_external',{file:file,name:name}, function(data){
@@ -951,6 +961,31 @@ function importDbExternal(file,name){
});
}
function importDbExternalProgress(file,name){
myPost('import_db_external_progress',{file:file,name:name}, function(data){
var rdata = $.parseJSON(data.data);
layer.open({
title: "手动导入命令CMD【显示进度】",
area: ['600px', '180px'],
type:1,
closeBtn: 1,
shadeClose: false,
btn:["复制","取消"],
content: '<div class="pd15">\
<div class="divtable">\
<pre class="layui-code">'+rdata.data+'</pre>\
</div>\
</div>',
success:function(){
copyText(rdata.data);
},
yes:function(){
copyText(rdata.data);
}
});
});
}
function setLocalImport(db_name){
//上传文件
@@ -1006,6 +1041,7 @@ function setLocalImport(db_name){
<td><span> ' + file_list[i]['time'] + '</span></td>\
<td style="text-align: right;">\
<a class="btlink" onclick="importDbExternal(\'' + file_list[i]['name'] + '\',\'' +db_name+ '\')">导入</a> | \
<a class="btlink" onclick="importDbExternalProgress(\'' + file_list[i]['name'] + '\',\'' +db_name+ '\')">导入进度</a> | \
<a class="btlink del" index="'+i+'">删除</a>\
</td>\
</tr>';
@@ -1029,7 +1065,7 @@ function setLocalImport(db_name){
var layerIndex = layer.open({
type: 1,
title: "从文件导入数据",
area: ['600px', '380px'],
area: ['700px', '380px'],
closeBtn: 1,
shadeClose: false,
content: '<div class="pd15">\
@@ -1075,7 +1111,7 @@ function setBackup(db_name){
var layerIndex = layer.open({
type: 1,
title: "数据库备份详情",
area: ['600px', '280px'],
area: ['700px', '280px'],
closeBtn: 1,
shadeClose: false,
content: '<div class="pd15">\
@@ -1129,6 +1165,7 @@ function setBackupReq(db_name, obj){
<td><span> ' + rdata.data[i]['time'] + '</span></td>\
<td style="text-align: right;">\
<a class="btlink" onclick="importBackup(\'' + rdata.data[i]['name'] + '\',\'' +db_name+ '\')">导入</a> | \
<a class="btlink" onclick="importBackupProgress(\'' + rdata.data[i]['name'] + '\',\'' +db_name+ '\')">导入进度</a> | \
<a class="btlink" onclick="downloadBackup(\'' + rdata.data[i]['file'] + '\')">下载</a> | \
<a class="btlink" onclick="delBackup(\'' + rdata.data[i]['name'] + '\',\'' +db_name+ '\')">删除</a>\
</td>\
@@ -1167,7 +1204,7 @@ function dbList(page, search){
list += '<td><span class="c9 input-edit" onclick="setDbPs(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\',this)" style="display: inline-block;">'+rdata.data[i]['ps']+'</span></td>';
list += '<td style="text-align:right">';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\',this)" title="数据库备份">'+(rdata.data[i]['is_backup']?'备份':'未备份') +'</a> | ';
list += '<a href="javascript:;" class="btlink" class="btlink" onclick="setBackup(\''+rdata.data[i]['name']+'\',this)" title="数据库备份">'+(rdata.data[i]['is_backup']?'已备份':'未备份') +'</a> | ';
var rw = '';
var rw_change = 'all';
@@ -1948,6 +1985,7 @@ function getFullSyncStatus(db){
</div>\
<div class='table_toolbar' style='left:0px;'>\
<span data-status='init' class='sync btn btn-default btn-sm' id='begin_full_sync'>开始</span>\
<span data-status='init' class='btn btn-default btn-sm' id='full_sync_cmd'>手动命令</span>\
</div>\
</div>",
cancel: function(){
@@ -1966,10 +2004,36 @@ function getFullSyncStatus(db){
fullSync(db,sign,0);
}, 1000);
$(this).data('status','starting');
$('#begin_full_sync').text("同步中");
} else {
layer.msg("正在同步中..",{icon:0});
}
});
$('#full_sync_cmd').click(function(){
myPostN('full_sync_cmd', {'db':db,'sign':''}, function(rdata){
var rdata = $.parseJSON(rdata.data);
layer.open({
title: "手动执行命令CMD",
area: ['600px', '180px'],
type:1,
closeBtn: 1,
shadeClose: false,
btn:["复制","取消"],
content: '<div class="pd15">\
<div class="divtable">\
<pre class="layui-code">'+rdata.data+'</pre>\
</div>\
</div>',
success:function(){
copyText(rdata.data);
},
yes:function(){
copyText(rdata.data);
}
});
});
});
}
});
});
@@ -1985,12 +2049,91 @@ function getFullSyncStatus(db){
if (rdata['code']==6 ||rdata['code']<0){
layer.msg(rdata['msg']);
clearInterval(timeId);
$('#begin_full_sync').text("同步结束,再次同步?");
$("#begin_full_sync").attr('data-status','init');
}
});
}
}
function dataSyncVerify(db){
var reqTimer = null;
function requestLogs(layerIndex){
myPostN('sync_database_repair_log', {db:db, sign:'',op:'get'}, function(rdata){
var rdata = $.parseJSON(rdata.data);
if(!rdata.status) {
layer.close(layerIndex);
layer.msg(rdata.msg,{icon:2, time:2000});
clearInterval(reqTimer);
return;
};
if (rdata.msg == ''){
rdata.msg = '暂无数据!';
}
$("#data_verify_log").html(rdata.msg);
//滚动到最低
var ob = document.getElementById('data_verify_log');
ob.scrollTop = ob.scrollHeight;
});
}
layer.open({
type: 1,
title: '同步数据库['+db+']数据校验',
area: '500px',
btn:[ "开始","取消","手动"],
content:"<div class='bt-form'>\
"+'<pre id="data_verify_log" style="overflow: auto; border: 0px none; line-height:23px;padding: 5px; margin: 0px; white-space: pre-wrap; height: 395px; background-color: rgb(51,51,51);color:#f1f1f1;border-radius:0px;font-family:"></pre>'+"\
</div>",
cancel: function(){
if (reqTimer){
clearInterval(reqTimer);
}
},
yes:function(index,layer_index){
myPostN('sync_database_repair_log', {db:db, sign:'',op:'do'}, function(data){});
layer.msg("执行成功");
requestLogs(layer_index);
reqTimer = setInterval(function(){
requestLogs(layer_index);
},3000);
},
success:function(){
},
btn3: function(){
myPostN('sync_database_repair_log', {db:db, sign:'',op:'cmd'}, function(rdata){
var rdata = $.parseJSON(rdata.data);
layer.open({
title: "手动执行命令CMD",
area: ['600px', '180px'],
type:1,
closeBtn: 1,
shadeClose: false,
btn:["复制","取消"],
content: '<div class="pd15">\
<div class="divtable">\
<pre class="layui-code">'+rdata.data+'</pre>\
</div>\
</div>',
success:function(){
copyText(rdata.data);
},
yes:function(){
copyText(rdata.data);
}
});
});
return false;
}
});
}
function addSlaveSSH(ip=''){
myPost('get_slave_ssh_by_ip', {ip:ip}, function(rdata){
@@ -2146,7 +2289,7 @@ function addSlaveSyncUser(ip=''){
var index = layer.open({
type: 1,
area: ['500px','470px'],
area: ['500px','510px'],
title: '同步账户',
closeBtn: 1,
shift: 5,
@@ -2157,6 +2300,15 @@ function addSlaveSyncUser(ip=''){
<div class='line'><span class='tname'>端口</span><div class='info-r'><input name='port' class='bt-input-text mr5' type='number' style='width:330px;' value='"+port+"'></div></div>\
<div class='line'><span class='tname'>同步账户</span><div class='info-r'><input name='user' class='bt-input-text mr5' type='text' style='width:330px;' value='"+user+"'></div></div>\
<div class='line'><span class='tname'>同步密码</span><div class='info-r'><input name='pass' class='bt-input-text mr5' type='text' style='width:330px;' value='"+pass+"'></div></div>\
<div class='line'>\
<span class='tname'>同步模式</span>\
<div class='info-r'>\
<select class='bt-input-text mr5' name='mode'>\
<option value='0' "+( mode == '0' ? 'selected="selected"' : '')+">经典</option>\
<option value='1' "+( mode == '1' ? 'selected="selected"' : '')+">GTID</option>\
</select>\
</div>\
</div>\
<div class='line'>\
<span class='tname'>CMD[必须填写]</span>\
<div class='info-r'><textarea class='bt-input-text mr5' row='20' cols='30' name='cmd' style='width:330px;height:150px;'></textarea></div>\
@@ -2167,6 +2319,7 @@ function addSlaveSyncUser(ip=''){
$('textarea[name="cmd"]').html(cmd);
$('textarea[name="cmd"]').change(function(){
var val = $(this).val();
val = val.replace(';','');
var a = {};
if (val.toLowerCase().indexOf('for')>0){
cmd_tmp = val.split('for');
@@ -2193,11 +2346,6 @@ function addSlaveSyncUser(ip=''){
$('input[name="port"]').val(a['MASTER_PORT']);
$('input[name="user"]').val(a['MASTER_USER']);
$('input[name="pass"]').val(a['MASTER_PASSWORD']);
console.log(a['MASTER_AUTO_POSITION'],typeof(a['MASTER_AUTO_POSITION']));
if (typeof(a['MASTER_AUTO_POSITION']) != 'undefined' ){
$('input[name="mode"]').val('1');
}
});
},
yes:function(index){
@@ -2206,7 +2354,7 @@ function addSlaveSyncUser(ip=''){
var user = $('input[name="user"]').val();
var pass = $('input[name="pass"]').val();
var cmd = $('textarea[name="cmd"]').val();
var mode = $('input[name="mode"]').val();
var mode = $('select[name="mode"]').val();
var data = {ip:ip,port:port,cmd:cmd,user:user,pass:pass,mode:mode};
myPost('add_slave_sync_user', data, function(ret_data){
@@ -2484,7 +2632,7 @@ function masterOrSlaveConf(version=''){
for(i in rdata.data){
var v = rdata.data[i];
if ('Channel_Name' in v){
if ('Channel_Name' in v && v['Channel_Name'] !=''){
isHasSign = true;
}
@@ -2655,7 +2803,8 @@ function masterOrSlaveConf(version=''){
list += '<td>' + rdata.data[i]['name'] +'</td>';
list += '<td style="text-align:right">' +
'<a href="javascript:;" class="btlink" onclick="setDbSlave(\''+rdata.data[i]['name']+'\')" title="加入|退出">'+(rdata.data[i]['slave']?'退出':'加入')+'</a> | ' +
'<a href="javascript:;" class="btlink" onclick="getFullSyncStatus(\''+rdata.data[i]['name']+'\')" title="同步">同步</a>' +
'<a href="javascript:;" class="btlink" onclick="getFullSyncStatus(\''+rdata.data[i]['name']+'\')" title="同步">同步</a> | ' +
'<a href="javascript:;" class="btlink" onclick="dataSyncVerify(\''+rdata.data[i]['name']+'\')" title="数据校验">数据校验</a>' +
'</td>';
list += '</tr>';
}
@@ -2787,10 +2936,10 @@ function masterOrSlaveConf(version=''){
getMasterDbList();
}
// if (rdata.slave_status){
if (rdata.slave_status){
getAsyncMasterDbList();
getAsyncDataList()
// }
}
});
}
getMasterStatus();
+2 -2
View File
@@ -117,11 +117,11 @@ Install_mysql()
if [ -f ${mysqlDir}/mysql-boost-${VERSION}.tar.gz ];then
md5_mysql=`md5sum ${mysqlDir}/mysql-boost-${VERSION}.tar.gz | awk '{print $1}'`
if [ "${md5_mysql_ok}" == "${md5_mysql}" ]; then
echo "mysql8.0 file check ok"
echo "mysql8.2 file check ok"
else
# 重新下载
rm -rf ${mysqlDir}/mysql-${VERSION}
wget --no-check-certificate -O ${mysqlDir}/mysql-boost-${VERSION}.tar.gz --tries=3 https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${VERSION}.tar.gz
wget --no-check-certificate -O ${mysqlDir}/mysql-boost-${VERSION}.tar.gz --tries=3 https://dev.mysql.com/get/Downloads/MySQL-8.2/mysql-boost-${VERSION}.tar.gz
fi
fi
+235
View File
@@ -0,0 +1,235 @@
# -*- coding: utf-8 -*-
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin
export PATH
#https://dev.mysql.com/downloads/mysql/5.7.html
#https://dev.mysql.com/downloads/file/?id=489855
curPath=`pwd`
rootPath=$(dirname "$curPath")
rootPath=$(dirname "$rootPath")
serverPath=$(dirname "$rootPath")
sysName=`uname`
install_tmp=${rootPath}/tmp/mw_install.pl
mysqlDir=${serverPath}/source/mysql
_os=`uname`
echo "use system: ${_os}"
if [ ${_os} == "Darwin" ]; then
OSNAME='macos'
elif grep -Eq "openSUSE" /etc/*-release; then
OSNAME='opensuse'
zypper refresh
elif grep -Eq "FreeBSD" /etc/*-release; then
OSNAME='freebsd'
pkg install -y wget unzip
elif grep -Eqi "Arch" /etc/issue || grep -Eq "Arch" /etc/*-release; then
OSNAME='arch'
echo y | pacman -Sy unzip
elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then
OSNAME='centos'
yum install -y wget zip unzip
elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then
OSNAME='fedora'
yum install -y wget zip unzip
elif grep -Eqi "Rocky" /etc/issue || grep -Eq "Rocky" /etc/*-release; then
OSNAME='rocky'
yum install -y wget zip unzip
elif grep -Eqi "AlmaLinux" /etc/issue || grep -Eq "AlmaLinux" /etc/*-release; then
OSNAME='alma'
yum install -y wget zip unzip
elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then
OSNAME='debian'
apt update -y
apt install -y devscripts
apt install -y wget zip unzip
elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then
OSNAME='ubuntu'
apt install -y wget zip unzip
else
OSNAME='unknow'
fi
VERSION_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'`
VERSION=8.3.0
Install_mysql()
{
mkdir -p ${mysqlDir}
echo '正在安装脚本文件...' > $install_tmp
if id mysql &> /dev/null ;then
echo "mysql UID is `id -u www`"
echo "mysql Shell is `grep "^www:" /etc/passwd |cut -d':' -f7 `"
else
groupadd mysql
useradd -g mysql mysql
fi
# ----- cpu start ------
if [ -z "${cpuCore}" ]; then
cpuCore="1"
fi
if [ -f /proc/cpuinfo ];then
cpuCore=`cat /proc/cpuinfo | grep "processor" | wc -l`
fi
MEM_INFO=$(free -m|grep Mem|awk '{printf("%.f",($2)/1024)}')
if [ "${cpuCore}" != "1" ] && [ "${MEM_INFO}" != "0" ];then
if [ "${cpuCore}" -gt "${MEM_INFO}" ];then
cpuCore="${MEM_INFO}"
fi
else
cpuCore="1"
fi
if [ "$cpuCore" -gt "2" ];then
cpuCore=`echo "$cpuCore" | awk '{printf("%.f",($1)*0.8)}'`
else
cpuCore="1"
fi
# ----- cpu end ------
cd ${rootPath}/plugins/mysql/lib && /bin/bash rpcgen.sh
INSTALL_CMD=cmake
# check cmake version
CMAKE_VERSION=`cmake -version | grep version | awk '{print $3}' | awk -F '.' '{print $1}'`
if [ "$CMAKE_VERSION" -eq "2" ];then
mkdir -p /var/log/mariadb
touch /var/log/mariadb/mariadb.log
INSTALL_CMD=cmake3
fi
if [ ! -f ${mysqlDir}/mysql-boost-${VERSION}.tar.gz ];then
wget --no-check-certificate -O ${mysqlDir}/mysql-boost-${VERSION}.tar.gz --tries=3 https://cdn.mysql.com//Downloads/MySQL-8.3/mysql-boost-${VERSION}.tar.gz
fi
#检测文件是否损坏.
md5_mysql_ok=8c2399782217f5391322751c66ea261b
if [ -f ${mysqlDir}/mysql-boost-${VERSION}.tar.gz ];then
md5_mysql=`md5sum ${mysqlDir}/mysql-boost-${VERSION}.tar.gz | awk '{print $1}'`
if [ "${md5_mysql_ok}" == "${md5_mysql}" ]; then
echo "mysql8.3 file check ok"
else
# 重新下载
rm -rf ${mysqlDir}/mysql-${VERSION}
wget --no-check-certificate -O ${mysqlDir}/mysql-boost-${VERSION}.tar.gz --tries=3 https://dev.mysql.com/get/Downloads/MySQL-8.3/mysql-boost-${VERSION}.tar.gz
fi
fi
if [ ! -d ${mysqlDir}/mysql-${VERSION} ];then
cd ${mysqlDir} && tar -zxvf ${mysqlDir}/mysql-boost-${VERSION}.tar.gz
fi
OPTIONS=''
##check openssl version
OPENSSL_VERSION=`openssl version|awk '{print $2}'|awk -F '.' '{print $1}'`
if [ "${OPENSSL_VERSION}" -ge "3" ];then
#openssl version to high
cd ${rootPath}/plugins/php/lib && /bin/bash openssl.sh
export PKG_CONFIG_PATH=$serverPath/lib/openssl/lib/pkgconfig
OPTIONS="-DWITH_SSL=${serverPath}/lib/openssl"
fi
WHERE_DIR_GCC=/usr/bin/gcc
WHERE_DIR_GPP=/usr/bin/g++
if [ "$OSNAME" == "centos" ] && [ "$VERSION_ID" == "7" ];then
yum install -y libudev-devel
yum install -y centos-release-scl
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
gcc --version
WHERE_DIR_GCC=/opt/rh/devtoolset-11/root/usr/bin/gcc
WHERE_DIR_GPP=/opt/rh/devtoolset-11/root/usr/bin/g++
echo $WHERE_DIR_GCC
echo $WHERE_DIR_GPP
fi
if [ "$OSNAME" == "ubuntu" ];then
apt install -y libudev-dev
apt install -y libtirpc-dev
apt install -y libssl-dev
apt install -y libgssglue-dev
apt install -y software-properties-common
add-apt-repository -y ppa:ubuntu-toolchain-r/test
LIBTIRPC_VER=`pkg-config libtirpc --modversion`
if [ ! -f ${mysqlDir}/libtirpc_1.3.3.orig.tar.bz2 ];then
wget --no-check-certificate -O ${mysqlDir}/libtirpc_1.3.3.orig.tar.bz2 https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.3.tar.bz2
cd ${mysqlDir} && tar -jxvf libtirpc_1.3.3.orig.tar.bz2
cd libtirpc-1.3.3 && ./configure
fi
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
apt install -y gcc-11 g++-11
WHERE_DIR_GCC=/usr/bin/gcc-11
WHERE_DIR_GPP=/usr/bin/g++-11
fi
if [ "$OSNAME" == "opensuse" ];then
zypper install -y gcc11
zypper install -y gcc11-c++
WHERE_DIR_GCC=/usr/bin/gcc-11
WHERE_DIR_GPP=/usr/bin/g++-11
fi
if [ ! -d $serverPath/mysql ];then
# -DCMAKE_CXX_STANDARD=17 \
cd ${mysqlDir}/mysql-${VERSION} && ${INSTALL_CMD} \
-DCMAKE_INSTALL_PREFIX=$serverPath/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/var/tmp/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DDOWNLOAD_BOOST=1 \
-DFORCE_INSOURCE_BUILD=1 \
$OPTIONS \
-DCMAKE_C_COMPILER=$WHERE_DIR_GCC \
-DCMAKE_CXX_COMPILER=$WHERE_DIR_GPP \
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=${mysqlDir}/mysql-${VERSION}/boost/
make -j${cpuCore} && make install && make clean
if [ -d $serverPath/mysql ];then
rm -rf ${mysqlDir}/mysql-${VERSION}
echo '8.3' > $serverPath/mysql/version.pl
echo "${VERSION}安装完成"
else
# rm -rf ${mysqlDir}/mysql-${VERSION}
echo "${VERSION}安装失败"
echo 'install fail'>&2
exit 1
fi
fi
}
Uninstall_mysql()
{
rm -rf $serverPath/mysql
echo '卸载完成' > $install_tmp
}
action=$1
if [ "${1}" == "install" ];then
Install_mysql
else
Uninstall_mysql
fi
+10 -5
View File
@@ -40,11 +40,11 @@ def getArgs():
if args_len == 1:
t = args[0].strip('{').strip('}')
t = t.split(':')
t = t.split(':', 1)
tmp[t[0]] = t[1]
elif args_len > 1:
for i in range(len(args)):
t = args[i].split(':')
t = args[i].split(':', 1)
tmp[t[0]] = t[1]
return tmp
@@ -971,9 +971,14 @@ def setRetry():
conf = getJsonPath('config')
content = mw.readFile(conf)
cobj = json.loads(content)
cobj['retry'] = args
## 修复数据类型错误
tmp = args
tmp['retry'] = int(tmp['retry'])
tmp['retry_time'] = int(tmp['retry_time'])
tmp['retry_cycle'] = int(tmp['retry_cycle'])
cobj['retry'] = tmp
cjson = mw.getJson(cobj)
mw.writeFile(conf, cjson)
+28 -1
View File
@@ -1 +1,28 @@
[[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0], [1, "/\\*", "\u76ee\u5f55\u4fdd\u62a42", 0], [1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0], [1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0], [1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0], [1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0], [1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0], [1, "(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|char|chr|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee44", 0], [1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0], [1, "\\s+(or|xor|and)\\s+.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0], [1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0], [1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0], [1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0], [1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0], [1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0], [1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0], [1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [1, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0], [0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0], [1, "(invokefunction|call_user_func_array|\\\\think\\\\)", "ThinkPHP payload\u5c01\u5835", 0], [1, "^url_array\\[.*\\]$", "Metinfo6.x XSS\u6f0f\u6d1e", 0], [1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0], [1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0], [1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [1, "\\|+\\s+[\\w\\W]+=[\\w\\W]+", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0]]
[
[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0],
[1, "/\\*", "\u76ee\u5f55\u4fdd\u62a42", 0],
[1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0],
[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0],
[1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0],
[1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0],
[1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0],
[1, "(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|char|chr|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee44", 0],
[1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0],
[1, "\\s+(or|xor|and)\\s+.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0],
[1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0],
[1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0],
[1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0],
[1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0],
[1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0],
[1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0],
[1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[1, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0],
[0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0],
[1, "(invokefunction|call_user_func_array|\\\\think\\\\)", "ThinkPHP payload\u5c01\u5835", 0],
[1, "^url_array\\[.*\\]$", "Metinfo6.x XSS\u6f0f\u6d1e", 0],
[1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0],
[1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0],
[1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[1, "\\|+\\s+[\\w\\W]+=[\\w\\W]+", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0]
]
+21 -1
View File
@@ -1 +1,21 @@
[[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0], [1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0], [1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0], [1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0], [1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0], [1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0], [1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0], [1, "\\b(or|xor|and)\\b.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0], [1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0], [0, "having|load_file", "SQL\u6ce8\u5165\u8fc7\u6ee44", 0], [1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0], [1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0], [1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0], [1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0], [1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0], [1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0], [1, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0]]
[
[1, "\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 0],
[1, "(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 0],
[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0],
[1, "\\:\\$", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee41", 0],
[1, "\\$\\{", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee42", 0],
[1, "base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 0],
[1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 0],
[1, "\\b(or|xor|and)\\b.*(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0],
[1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0],
[0, "having|load_file", "SQL\u6ce8\u5165\u8fc7\u6ee44", 0],
[1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0],
[1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0],
[1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0],
[1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0],
[1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0],
[1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0],
[1, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0]
]
+23 -1
View File
@@ -1 +1,23 @@
[[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0], [1, "base64_decode\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee41", 0], [1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode|scandir)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0], [1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee43", 0], [1, "\\s+(or|xor|and)\\s+(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "select\\s+.+(from|limit)\\s+", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0], [1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0], [1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0], [1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0], [1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0], [1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0], [1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0], [1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0], [0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0], [1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0], [1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0], [1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0], [1, "(ORD\\(|MID\\(|IFNULL\\(|CAST\\(|CHAR\\))", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "(EXISTS\\(|SELECT\\#|\\(SELECT)", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0], [1, "(array_map\\(\"ass)", "\u83dc\u5200\u6d41\u91cf\u8fc7\u6ee4", 0], [1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0]]
[
[1, "(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 0],
[1, "base64_decode\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee41", 0],
[1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode|scandir)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0],
[1, "\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee43", 0], [1, "\\s+(or|xor|and)\\s+(=|<|>|'|\")", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "select\\s+.+(from|limit)\\s+", "SQL\u6ce8\u5165\u8fc7\u6ee42", 0],
[1, "(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 0],
[1, "sleep\\((\\s*)(\\d*)(\\s*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee45", 0],
[1, "benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 0],
[1, "(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 0],
[1, "(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 0],
[1, "into(\\s+)+(?:dump|out)file\\s*", "SQL\u6ce8\u5165\u8fc7\u6ee49", 0],
[1, "group\\s+by.+\\(", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[0, "\\<(iframe|script|body|img|layer|div|meta|style|base|object|input)", "XSS\u8fc7\u6ee41", 0],
[0, "(onmouseover|onerror|onload)\\=", "XSS\u8fc7\u6ee42", 0],
[1, "(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 0],
[1, "(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 0],
[1, "(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 0],
[1, "(ORD\\(|MID\\(|IFNULL\\(|CAST\\(|CHAR\\))", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "(EXISTS\\(|SELECT\\#|\\(SELECT)", "SQL\u6ce8\u5165\u8fc7\u6ee41", 0],
[1, "(array_map\\(\"ass)", "\u83dc\u5200\u6d41\u91cf\u8fc7\u6ee4", 0],
[1, "(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 0]
]
+8 -1
View File
@@ -1 +1,8 @@
[[1,"(HTTrack|Apache-HttpClient|harvest|audit|dirbuster|pangolin|nmap|sqln|hydra|Parser|libwww|BBBike|sqlmap|w3af|owasp|Nikto|fimap|havij|zmeu|BabyKrokodil|netsparker|httperf| SF/)","关键词过滤1",0],[1,"(ApacheBench)","AB测试",0]]
[
[1,"(HTTrack|Apache-HttpClient|harvest|audit|dirbuster|pangolin|nmap|sqln|hydra|Parser|libwww|BBBike|sqlmap|w3af|owasp|Nikto|fimap|havij|zmeu|BabyKrokodil|netsparker|httperf| SF/)","关键词过滤1",0],
[1,"(ApacheBench)","AB测试",0],
[1,"(Amazonbot)","Amazon爬虫",0],
[1,"(SemrushBot)","Semrush爬虫",0],
[1,"(^$|Apache-HttpClient|colly|curl|okhttp|Go-http-client|python-requests|Python-urllib|python-httpx|Scrapy|aiohttp|Nmap Scripting Engine|Java|fasthttp|Wget)","非法脚本",0],
[1,"(CensysInspect|intelx\\.io_bot|InternetMeasurement|ips-agent|MJ12Bot|NetcraftSurveyAgent|SemrushBot|l9scan|SEOlyt|kirkland-signature|ZoominfoBot|Expanse|CheckMarkNetwork|dotbot|Pandalytics|Screaming Frog SEO Spider|W3C_CSS_Validator_JFouffa)","非法扫描器",0]
]
+1 -1
View File
@@ -51,7 +51,7 @@ http
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
+3 -3
View File
@@ -8,10 +8,10 @@
"install_pre_inspection":true,
"checks":"server/openresty",
"path":"server/openresty",
"author":"agentzh",
"author":"nginx/agentzh",
"home":"http://openresty.org",
"date":"2017-11-24",
"pid": "1",
"versions": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3"],
"updates": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3"]
"versions": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3","1.25.3.1"],
"updates": ["1.17.8.2","1.19.3.1","1.21.4.2","1.21.4.3","1.25.3.1"]
}
+33
View File
@@ -91,6 +91,7 @@ Install_openresty()
opensslVersion="1.1.1p"
libresslVersion="3.9.1"
pcreVersion='8.38'
if [ "$sysName" == "Darwin" ];then
@@ -119,8 +120,36 @@ Install_openresty()
# brew info openssl@1.1 | grep /opt/homebrew/Cellar/openssl@1.1 | cut -d \ -f 1 | awk 'END {print}'
# OPENSSL_LIB_DEPEND_DIR=`brew info openssl@1.1 | grep ${BREW_DIR}/Cellar/openssl@1.1 | cut -d \ -f 1 | awk 'END {print}'`
# OPTIONS="${OPTIONS} --with-openssl=${OPENSSL_LIB_DEPEND_DIR}"
else
if [ ! -f ${openrestyDir}/openssl-${opensslVersion}.tar.gz ];then
wget --no-check-certificate -O ${openrestyDir}/openssl-${opensslVersion}.tar.gz https://www.openssl.org/source/openssl-${opensslVersion}.tar.gz
fi
if [ ! -d ${openrestyDir}/openssl-${opensslVersion} ];then
cd ${openrestyDir} && tar -zxvf openssl-${opensslVersion}.tar.gz
fi
OPTIONS="${OPTIONS} --with-openssl=${openrestyDir}/openssl-${opensslVersion}"
if [ "$VERSION" == "1.25.3.1" ]; then
OPTIONS="${OPTIONS} --with-http_v3_module"
if [ ! -f ${openrestyDir}/libressl-${libresslVersion}.tar.gz ];then
wget --no-check-certificate -O ${openrestyDir}/libressl-${libresslVersion}.tar.gz https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${libresslVersion}.tar.gz
fi
if [ ! -d ${openrestyDir}/libressl-${libresslVersion} ];then
cd ${openrestyDir} && tar -zxvf libressl-${libresslVersion}.tar.gz
fi
OPTIONS="${OPTIONS} --with-cc-opt=-I${openrestyDir}/libressl-${libresslVersion}/libressl/build/include"
OPTIONS="${OPTIONS} --with-cc-opt=-I${openrestyDir}/libressl-${libresslVersion}/libressl/build/lib"
# --with-cc-opt="-I../libressl/build/include"
# --with-ld-opt="-L../libressl/build/lib"
fi
fi
# --with-openssl=$serverPath/source/lib/openssl-1.0.2q
cd ${openrestyDir}/openresty-${VERSION} && ./configure \
--prefix=$serverPath/openresty \
@@ -162,6 +191,10 @@ Install_openresty()
if [ -d ${openrestyDir}/openssl-${opensslVersion} ];then
rm -rf ${openrestyDir}/openssl-${opensslVersion}
fi
if [ -d ${openrestyDir}/libressl-${libresslVersion} ];then
rm -rf ${openrestyDir}/libressl-${libresslVersion}
fi
echo '安装完成'
}
+19
View File
@@ -223,6 +223,25 @@
"shell": "exif.sh",
"check": "exif"
},
{
"name": "igbinary",
"versions": [
"56",
"70",
"71",
"72",
"73",
"74",
"80",
"81",
"82",
"83"
],
"type": "通用扩展",
"msg": "序列化扩展!",
"shell": "igbinary.sh",
"check": "igbinary.so"
},
{
"name": "xml",
"versions": [
+1 -1
View File
@@ -63,7 +63,7 @@ if [ "${action}" == "install" ] && [ -d ${serverPath}/php/${type} ];then
# cd /www/server/mdserver-web/plugins/php/versions/common && bash intl.sh install 73
# cd /www/server/mdserver-web/plugins/php/versions/common && bash gd.sh install 56
# cd /www/server/mdserver-web/plugins/php/versions/common && bash openssl.sh install 56
# cd /www/server/mdserver-web/plugins/php/versions/common && bash sodium.sh install 81
# cd /www/server/mdserver-web/plugins/php/versions/common && bash fileinfo.sh install 81
cd ${rootPath}/plugins/php/versions/common && bash gd.sh install ${type}
cd ${rootPath}/plugins/php/versions/common && bash iconv.sh install ${type}
cd ${rootPath}/plugins/php/versions/common && bash exif.sh install ${type}
+1 -1
View File
@@ -79,7 +79,7 @@ function phpSetConfig(version) {
ibody = '<select class="bt-input-text mr5" name="' + rdata[i].name + '" style="width: ' + w + 'px;"><option value="On" ' + selected_1 + '>开启</option><option value="Off" ' + selected_0 + '>关闭</option></select>'
break;
}
mlist += '<p><span>' + rdata[i].name + '</span>' + ibody + ', <font>' + rdata[i].ps + '</font></p>'
mlist += '<p><span>' + rdata[i].name + '</span>' + ibody + ', <font>' + rdata[i].ps + '</font></p>';
}
var phpCon = '<style>.conf_p p{margin-bottom: 2px}</style><div class="conf_p" style="margin-bottom:0">\
' + mlist + '\
+2 -2
View File
@@ -16,7 +16,7 @@ function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)"
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
version=8.1.27
version=8.1.28
PHP_VER=81
Install_php()
{
@@ -56,7 +56,7 @@ if [ ! -d $sourcePath/php/php${PHP_VER} ];then
fi
#检测文件是否损坏.
md5_file_ok=479e65c3f05714d4aace1370e617d78e49e996ec7a7579a5be47535be61f0658
md5_file_ok=95d0b2e9466108fd750dab5c30a09e5c67f5ad2cb3b1ffb3625a038a755ad080
if [ -f $sourcePath/php/php-${version}.tar.xz ];then
md5_file=`sha256sum $sourcePath/php/php-${version}.tar.xz | awk '{print $1}'`
if [ "${md5_file}" != "${md5_file_ok}" ]; then
+2 -2
View File
@@ -16,7 +16,7 @@ function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)"
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
version=8.2.15
version=8.2.18
PHP_VER=82
Install_php()
{
@@ -57,7 +57,7 @@ if [ ! -d $sourcePath/php/php${PHP_VER} ];then
fi
#检测文件是否损坏.
md5_file_ok=eca5deac02d77d806838275f8a3024b38b35ac0a5d9853dcc71c6cbe3f1f8765
md5_file_ok=44b306fc021e56441f691da6c3108788bd9e450f293b3bc70fcd64b08dd41a50
if [ -f $sourcePath/php/php-${version}.tar.xz ];then
md5_file=`sha256sum $sourcePath/php/php-${version}.tar.xz | awk '{print $1}'`
if [ "${md5_file}" != "${md5_file_ok}" ]; then
+2 -2
View File
@@ -15,7 +15,7 @@ function version_le() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)"
function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; }
function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
version=8.3.2
version=8.3.6
PHP_VER=83
Install_php()
{
@@ -56,7 +56,7 @@ if [ ! -d $sourcePath/php/php${PHP_VER} ];then
fi
#检测文件是否损坏.
md5_file_ok=4ffa3e44afc9c590e28dc0d2d31fc61f0139f8b335f11880a121b9f9b9f0634e
md5_file_ok=53c8386b2123af97626d3438b3e4058e0c5914cb74b048a6676c57ac647f5eae
if [ -f $sourcePath/php/php-${version}.tar.xz ];then
md5_file=`sha256sum $sourcePath/php/php-${version}.tar.xz | awk '{print $1}'`
if [ "${md5_file}" != "${md5_file_ok}" ]; then
+1 -1
View File
@@ -39,7 +39,7 @@ for PHP_VER in ${PHP_VER_LIST[@]}; do
done
cd $DIR
PHP_VER_LIST=(53 54 55 56 70 71 72 73 74 80 81 82)
PHP_VER_LIST=(53 54 55 56 70 71 72 73 74 80 81 82 83)
# yar
PHP_EXT_LIST=(ZendGuardLoader pdo mysqlnd sqlite3 openssl opcache mcrypt fileinfo \
exif gd intl pcntl memcache memcached redis imagemagick xdebug \
+6 -1
View File
@@ -60,8 +60,13 @@ Install_lib()
fi
$serverPath/php/$version/bin/phpize
./configure --with-php-config=$serverPath/php/$version/bin/php-config $OPTIONS
if [ "$version" == "83" ];then
CFLAGS="-std=c99" ./configure --with-php-config=$serverPath/php/$version/bin/php-config $OPTIONS
else
./configure --with-php-config=$serverPath/php/$version/bin/php-config $OPTIONS
fi
make clean && make && make install && make clean
if [ -d $sourcePath/php${version} ];then
+7 -1
View File
@@ -15,7 +15,13 @@ actionType=$1
version=$2
LIBNAME=event
LIBV=3.1.0RC1
LIBV=3.1.3
if [ "$version" -lt "55" ];then
echo 'not need'
exit 0
fi
if [ "$version" -lt "83" ];then
LIBV=3.0.8
+8 -1
View File
@@ -37,6 +37,8 @@ else
BAK=''
fi
OSNAME=`cat ${rootPath}/data/osname.pl`
Install_lib()
{
@@ -59,6 +61,7 @@ Install_lib()
OPTIONS="$OPTIONS --build=aarch64-unknown-linux-gnu --host=aarch64-unknown-linux-gnu"
fi
$serverPath/php/$version/bin/phpize
./configure --with-php-config=$serverPath/php/$version/bin/php-config $OPTIONS
@@ -66,7 +69,6 @@ Install_lib()
# It is considered as a temporary bug
if [ "$version" == "81" ] || [ "$version" == "82" ];then
bash ${rootPath}/scripts/getos.sh
OSNAME=`cat ${rootPath}/data/osname.pl`
if [ "$OSNAME" == 'centos' ];then
FILE_softmagic=$sourcePath/php${version}/ext/${LIBNAME}/libmagic/softmagic.c
FIND_UNDEF_STRNDUP=`cat $FILE_softmagic|grep '#undef strndup'`
@@ -81,6 +83,11 @@ Install_lib()
sed -i $BAK 's/CFLAGS \=/CFLAGS \= -std=gnu99/g' Makefile
fi
if [ "$version" -gt "80" ] && [ "$OSNAME" == 'centos' ];then
sed -i $BAK "s#CFLAGS = -g -O2#CFLAGS = -std=c99 -g#g" $sourcePath/php${version}/ext/${LIBNAME}/Makefile
fi
make clean && make && make install && make clean
if [ -d $sourcePath/php${version} ];then
+6 -2
View File
@@ -73,6 +73,12 @@ Install_lib()
OPTIONS="$OPTIONS --build=aarch64-unknown-linux-gnu --host=aarch64-unknown-linux-gnu"
fi
if [ "$version" -lt "55" ];then
echo "not need xmp"
else
OPTIONS="$OPTIONS --with-xpm-dir"
fi
#--with-xpm
# =${serverPath}/lib/freetype_old
# =/usr/lib
@@ -80,9 +86,7 @@ Install_lib()
$OPTIONS \
--with-gd \
--with-jpeg-dir \
--with-webp-dir \
--with-png-dir \
--with-xpm-dir \
--with-freetype-dir=${serverPath}/lib/freetype_old
# --enable-gd-jis-conv
# --enable-gd-native-ttf
+4
View File
@@ -17,6 +17,10 @@ sysName=`uname`
actionType=$1
version=$2
if [ "$version" -ge '74' ];then
LIBV=1.19.0
fi
if [ "$version" == '71' ];then
LIBV=1.11.1
fi
+4 -1
View File
@@ -23,10 +23,13 @@ elif [ "$version" == "70" ];then
LIBV=4.3.0
elif [ "$version" == "71" ];then
LIBV=4.5.2
elif [ "$version" == "72" ] || [ "$version" == "73" ] || [ "$version" == "74" ];then
LIBV=4.8.10
elif [ "$version" -gt "74" ];then
LIBV=5.0.3
LIBV=5.1.1
else
echo 'other?'
exit 0
fi
LIB_PATH_NAME=lib/php
+2 -2
View File
@@ -25,8 +25,8 @@ if [ "$version" -eq "70" ] || [ "$version" -eq "71" ];then
LIBV=2.7.0
fi
if [ "$version" -eq "82" ];then
LIBV=3.2.2
if [ "$version" -gt "80" ];then
LIBV=3.3.2
fi
LIB_PATH_NAME=lib/php
+1 -1
View File
@@ -20,7 +20,7 @@ LIBNAME=zip
LIBV=0
if [ "$version" -lt "73" ];then
if [ "$version" -lt "72" ];then
echo "not need"
exit 1
fi
+1 -1
View File
@@ -254,7 +254,6 @@
{
"name": "event",
"versions": [
"54",
"55",
"56",
"70",
@@ -724,6 +723,7 @@
{
"name": "zip",
"versions": [
"72",
"83"
],
"type": "压缩",
+32 -2
View File
@@ -446,9 +446,37 @@ def errorLog():
return getServerDir() + '/error.log'
def Version():
def installVersion():
return mw.readFile(getServerDir() + '/version.pl')
def pluginsDbSupport():
data = {}
data['installed'] = 'no'
install_path = getServerDir()
if not os.path.exists(install_path):
return mw.returnJson(True, 'ok', data)
data['installed'] = 'ok'
data['status'] = status()
if (data['status'] == 'stop'):
return mw.returnJson(True, 'ok', data)
data['cfg'] = getCfg()
port = getPort()
ip = '127.0.0.1'
if not mw.isAppleSystem():
ip = mw.getLocalIp()
cfg = data['cfg']
auth = cfg['username']+':'+cfg['password']
rand_path = cfg['path']
home_page = 'http://' + auth + '@' + ip + ':' + port + '/' + rand_path + '/index.php'
data['home_page'] = home_page
data['version'] = installVersion().strip()
return mw.returnJson(True, 'ok', data)
if __name__ == "__main__":
func = sys.argv[1]
@@ -465,7 +493,7 @@ if __name__ == "__main__":
elif func == 'conf':
print(getConf())
elif func == 'version':
print(Version())
print(installVersion())
elif func == 'get_cfg':
print(returnCfg())
elif func == 'config_inc':
@@ -494,5 +522,7 @@ if __name__ == "__main__":
print(accessLog())
elif func == 'error_log':
print(errorLog())
elif func == 'plugins_db_support':
print(pluginsDbSupport())
else:
print('error')
+9 -4
View File
@@ -1,5 +1,5 @@
daemonize yes
pidfile {$SERVER_PATH}/redis/redis_6379.pid
pidfile {$SERVER_PATH}/redis/redis.pid
bind 127.0.0.1
port 6379
@@ -40,15 +40,20 @@ maxclients 10000
#maxmemory-samples 3
maxmemory 218mb
maxmemory-policy volatile-ttl
#maxmemory-policy allkeys-lru
############################## APPEND ONLY MODE ###############################
#appendonly no
# appendonly no
# appendfsync always
#appendfsync everysec
# appendfsync everysec
# appendfsync no
#no-appendfsync-on-rewrite no
# appendfilename "appendonly.aof"
# no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

Some files were not shown because too many files have changed in this diff Show More