From 4323284956d6d8fbddc576ca233391f604ca3765 Mon Sep 17 00:00:00 2001 From: letwang <498936940@qq.com> Date: Fri, 18 Mar 2022 06:17:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0apcu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 514 + README.md | 16 +- Start | 26 + apc.php | 1148 + app/admin/Bootstrap.php | 8 +- app/admin/Init.php | 6 +- app/admin/bin/canal.php | 2 + app/admin/bin/install.php | 2 + app/admin/config/i18n/zh-CN.php | 235 + app/admin/config/product.php | 54 + app/admin/config/table.php | 521 + app/admin/controllers/App.php | 12 +- app/admin/controllers/Base/Abstract.php | 33 +- app/admin/controllers/Base/Api.php | 13 +- app/admin/controllers/Base/View.php | 129 +- app/admin/controllers/Change.php | 2 + app/admin/controllers/Config.php | 11 +- app/admin/controllers/Error.php | 2 + app/admin/controllers/Hook/Hook.php | 13 +- app/admin/controllers/Hook/Hook/Module.php | 30 +- app/admin/controllers/Index.php | 7 +- app/admin/controllers/Lang.php | 12 +- app/admin/controllers/Login.php | 36 +- app/admin/controllers/Manager/Manager.php | 31 +- app/admin/controllers/Menu.php | 24 +- app/admin/controllers/Rbac/Group.php | 10 +- app/admin/controllers/Rbac/Group/Manager.php | 28 +- app/admin/controllers/Rbac/Group/Role.php | 28 +- app/admin/controllers/Rbac/Index.php | 21 +- app/admin/controllers/Rbac/Manager/Role.php | 28 +- app/admin/controllers/Rbac/Role.php | 10 +- app/admin/controllers/Theme.php | 10 +- app/admin/controllers/Translation.php | 14 +- app/admin/controllers/User.php | 31 +- app/admin/hooks/One/One.php | 2 + app/admin/hooks/Three/Three.php | 2 + app/admin/hooks/Two/Two.php | 2 + app/admin/models/App.php | 4 +- app/admin/models/Base/Abstract.php | 12 +- app/admin/models/Change.php | 2 + app/admin/models/Config.php | 2 + app/admin/models/Error.php | 2 + app/admin/models/Hook/Hook.php | 8 +- app/admin/models/Hook/Hook/Module.php | 2 + app/admin/models/Hook/Module.php | 2 + app/admin/models/Index.php | 2 + app/admin/models/Lang.php | 2 + app/admin/models/Login.php | 2 + app/admin/models/Logout.php | 7 + app/admin/models/Manager/Manager.php | 2 + app/admin/models/Menu.php | 6 +- app/admin/models/Rbac/Group.php | 8 +- app/admin/models/Rbac/Group/Manager.php | 2 + app/admin/models/Rbac/Group/Role.php | 2 + app/admin/models/Rbac/Index.php | 2 + app/admin/models/Rbac/Manager/Role.php | 2 + app/admin/models/Rbac/Role.php | 8 +- app/admin/models/Theme.php | 2 + app/admin/models/Translation.php | 2 + app/admin/models/User.php | 2 + app/admin/modules/Api/controllers/App.php | 8 +- app/admin/modules/Api/controllers/Config.php | 8 +- .../modules/Api/controllers/Hook/Hook.php | 8 +- .../Api/controllers/Hook/Hook/Module.php | 3 +- app/admin/modules/Api/controllers/Lang.php | 8 +- app/admin/modules/Api/controllers/Login.php | 32 + app/admin/modules/Api/controllers/Logout.php | 11 + .../Api/controllers/Manager/Manager.php | 3 +- app/admin/modules/Api/controllers/Menu.php | 5 +- .../modules/Api/controllers/Rbac/Group.php | 8 +- .../Api/controllers/Rbac/Group/Manager.php | 3 +- .../Api/controllers/Rbac/Group/Role.php | 3 +- .../modules/Api/controllers/Rbac/Index.php | 5 +- .../Api/controllers/Rbac/Manager/Role.php | 3 +- .../modules/Api/controllers/Rbac/Role.php | 8 +- app/admin/modules/Api/controllers/Theme.php | 8 +- .../modules/Api/controllers/Translation.php | 8 +- app/admin/modules/Api/controllers/User.php | 3 +- app/admin/plugins/Hook.php | 2 + app/admin/tests/Orm.php | 2 + app/admin/views/default/app/get.phtml | 1 - app/admin/views/default/app/post.phtml | 1 - app/admin/views/default/app/put.phtml | 1 - app/admin/views/default/bottom.phtml | 39 +- app/admin/views/default/config/get.phtml | 1 - app/admin/views/default/config/post.phtml | 1 - app/admin/views/default/config/put.phtml | 1 - app/admin/views/default/error/error.phtml | 22 +- app/admin/views/default/foot.phtml | 27 +- app/admin/views/default/form.phtml | 218 - app/admin/views/default/form/birthday.phtml | 30 - app/admin/views/default/form/checkbox.phtml | 17 - app/admin/views/default/form/color.phtml | 10 - app/admin/views/default/form/date.phtml | 13 - app/admin/views/default/form/datetime.phtml | 13 - app/admin/views/default/form/hidden.phtml | 3 - app/admin/views/default/form/number.phtml | 10 - app/admin/views/default/form/password.phtml | 10 - app/admin/views/default/form/radio.phtml | 18 - app/admin/views/default/form/select.phtml | 29 - app/admin/views/default/form/switch.phtml | 8 - app/admin/views/default/form/text.phtml | 109 - app/admin/views/default/form/textarea.phtml | 51 - app/admin/views/default/head.phtml | 222 - app/admin/views/default/hook/hook/get.phtml | 1 - .../views/default/hook/hook/module/get.phtml | 1 - .../views/default/hook/hook/module/post.phtml | 1 - .../views/default/hook/hook/module/put.phtml | 1 - app/admin/views/default/hook/hook/post.phtml | 1 - app/admin/views/default/hook/hook/put.phtml | 1 - app/admin/views/default/index/get.phtml | 45 +- app/admin/views/default/index/post.phtml | 1 - app/admin/views/default/index/put.phtml | 1 - app/admin/views/default/lang/get.phtml | 1 - app/admin/views/default/lang/post.phtml | 1 - app/admin/views/default/lang/put.phtml | 1 - app/admin/views/default/layout/list.phtml | 22 - app/admin/views/default/layout/write.phtml | 21 - app/admin/views/default/left.phtml | 103 +- app/admin/views/default/list.phtml | 114 + app/admin/views/default/login/get.phtml | 98 +- app/admin/views/default/login/post.phtml | 1 - .../views/default/manager/manager/get.phtml | 1 - .../views/default/manager/manager/post.phtml | 1 - .../views/default/manager/manager/put.phtml | 1 - app/admin/views/default/menu/get.phtml | 1 - app/admin/views/default/menu/post.phtml | 1 - app/admin/views/default/menu/put.phtml | 1 - app/admin/views/default/modal.phtml | 42 - app/admin/views/default/nav.phtml | 331 + app/admin/views/default/rbac/group/get.phtml | 1 - .../default/rbac/group/manager/get.phtml | 1 - .../default/rbac/group/manager/post.phtml | 1 - .../default/rbac/group/manager/put.phtml | 1 - app/admin/views/default/rbac/group/post.phtml | 1 - app/admin/views/default/rbac/group/put.phtml | 1 - .../views/default/rbac/group/role/get.phtml | 1 - .../views/default/rbac/group/role/post.phtml | 1 - .../views/default/rbac/group/role/put.phtml | 1 - app/admin/views/default/rbac/index/get.phtml | 1 - app/admin/views/default/rbac/index/post.phtml | 1 - app/admin/views/default/rbac/index/put.phtml | 1 - .../views/default/rbac/manager/role/get.phtml | 1 - .../default/rbac/manager/role/post.phtml | 1 - .../views/default/rbac/manager/role/put.phtml | 1 - app/admin/views/default/rbac/role/get.phtml | 1 - app/admin/views/default/rbac/role/post.phtml | 1 - app/admin/views/default/rbac/role/put.phtml | 1 - app/admin/views/default/table.phtml | 137 - app/admin/views/default/theme/get.phtml | 1 - app/admin/views/default/theme/post.phtml | 1 - app/admin/views/default/theme/put.phtml | 1 - app/admin/views/default/top.phtml | 22 +- app/admin/views/default/translation/get.phtml | 1 - .../views/default/translation/post.phtml | 1 - app/admin/views/default/translation/put.phtml | 1 - app/admin/views/default/user/get.phtml | 1 - app/admin/views/default/user/post.phtml | 1 - app/admin/views/default/user/put.phtml | 1 - app/iot/Bootstrap.php | 8 +- app/iot/Init.php | 6 +- app/iot/bin/install.php | 2 + app/iot/config/i18n/zh-CN.php | 11 + app/iot/config/product.php | 54 + app/iot/config/table.php | 1027 + app/iot/controllers/Base/Abstract.php | 20 +- app/iot/controllers/Base/Api.php | 12 +- app/iot/controllers/Base/View.php | 18 +- app/iot/controllers/Error.php | 2 + app/iot/controllers/Index.php | 2 + app/iot/plugins/Hook.php | 2 + app/paas/Bootstrap.php | 8 +- app/paas/Init.php | 6 +- app/paas/bin/install.php | 2 + app/paas/config/i18n/zh-CN.php | 11 + app/paas/config/product.php | 54 + app/paas/config/table.php | 1027 + app/paas/controllers/Base/Abstract.php | 20 +- app/paas/controllers/Base/Api.php | 12 +- app/paas/controllers/Base/View.php | 18 +- app/paas/controllers/Error.php | 2 + app/paas/controllers/Index.php | 2 + app/paas/plugins/Hook.php | 2 + app/payment/Bootstrap.php | 8 +- app/payment/Init.php | 6 +- app/payment/bin/install.php | 2 + app/payment/config/i18n/zh-CN.php | 11 + app/payment/config/product.php | 54 + app/payment/config/table.php | 1027 + app/payment/controllers/Base/Abstract.php | 20 +- app/payment/controllers/Base/Api.php | 12 +- app/payment/controllers/Base/View.php | 18 +- app/payment/controllers/Error.php | 2 + app/payment/controllers/Index.php | 2 + app/payment/plugins/Hook.php | 2 + app/store/Bootstrap.php | 8 +- app/store/Init.php | 6 +- app/store/bin/install.php | 2 + app/store/config/i18n/zh-CN.php | 11 + app/store/config/product.php | 54 + app/store/config/table.php | 1027 + app/store/controllers/Base/Abstract.php | 20 +- app/store/controllers/Base/Api.php | 12 +- app/store/controllers/Base/View.php | 18 +- app/store/controllers/Error.php | 2 + app/store/controllers/Index.php | 2 + app/store/modules/Cart/controllers/Index.php | 2 + app/store/modules/Order/controllers/Index.php | 2 + .../modules/Payment/controllers/Index.php | 2 + app/store/plugins/Hook.php | 2 + bin/install.php | 53 +- composer.json | 13 +- conf/adminLangZh-cn.ini | 184 - conf/adminProduct.ini | 39 - conf/adminTable.ini | 362 - conf/dicMongo.ini | 1 - conf/dicPdo.ini | 355 - conf/dicPinyin.ini | 20902 ------------- conf/dicRedis.ini | 6 - conf/dicRegexp.ini | 15 - conf/dicYac.ini | 2 - conf/iotLangZh-cn.ini | 7 - conf/iotProduct.ini | 39 - conf/iotTable.ini | 715 - conf/paasLangZh-cn.ini | 7 - conf/paasProduct.ini | 39 - conf/paasTable.ini | 715 - conf/paymentLangZh-cn.ini | 7 - conf/paymentProduct.ini | 39 - conf/paymentTable.ini | 715 - conf/storeLangZh-cn.ini | 7 - conf/storeProduct.ini | 39 - conf/storeTable.ini | 715 - config/database.php | 12 + config/pinyin.php | 20905 +++++++++++++ config/regexp.php | 19 + config/sql.php | 374 + demo/1.png | Bin 99676 -> 0 bytes PaaS.md => doc/PaaS.md | 0 doc/images/1.png | Bin 0 -> 327187 bytes doc/images/alipay.jpg | Bin 0 -> 218630 bytes {demo => doc/images}/architecture.png | Bin {demo => doc/images}/qq.jpg | Bin doc/images/wechat.jpg | Bin 0 -> 188654 bytes {demo => doc/images}/zsxq.png | Bin docker/init.sh | 25 - docker/log/.gitignore | 0 docker/log/mysql/.gitignore | 0 docker/log/nginx/.gitignore | 0 docker/log/redis/.gitignore | 0 docker/mongodb/mongod.conf | 43 - docker/mysql/conf.d/mysql.cnf | 1 - docker/mysql/mysql.conf.d/mysqld.cnf | 7 - docker/nginx/conf.d/default.conf | 114 - docker/nginx/nginx.conf | 32 - docker/php/7.4/cli/php.ini | 1997 -- docker/php/7.4/fpm/php-fpm.conf | 145 - docker/php/7.4/fpm/php.ini | 1997 -- docker/php/7.4/fpm/pool.d/www.conf | 438 - docker/rabbitmq/.gitignore | 0 docker/rabbitmq/rabbitmq.config | 1 - docker/redis/redis.conf | 1317 - docker/supervisor/.gitignore | 0 docker/varnish/.gitignore | 0 openresty/conf/nginx.conf | 16 - openresty/logs/.gitignore | 0 preload.php | 18 + public/admin/apple-touch-icon-precomposed.png | Bin 7887 -> 0 bytes public/admin/apple-touch-icon.png | Bin 7887 -> 0 bytes public/admin/assets/css/app-dark.min.css | 20 + public/admin/assets/css/app.min.css | 20 + public/admin/assets/css/icons.min.css | 2 + public/admin/assets/css/signin.css | 53 + public/admin/assets/css/vendor.min.js | 24955 ++++++++++++++++ .../css/vendor/dataTables.bootstrap5.css | 224 + .../css/vendor/responsive.bootstrap5.css | 185 + public/admin/assets/fonts/Nunito-Bold.woff | Bin 0 -> 51940 bytes public/admin/assets/fonts/Nunito-Regular.woff | Bin 0 -> 50968 bytes .../admin/assets/fonts/Nunito-SemiBold.woff | Bin 0 -> 51528 bytes public/admin/assets/fonts/dripicons-v2.woff | Bin 0 -> 26004 bytes .../fonts/materialdesignicons-webfont.woff2 | Bin 0 -> 319984 bytes public/admin/assets/fonts/unicons.woff2 | Bin 0 -> 147808 bytes .../admin/assets/images/avatars/profile.jpg | Bin 4497 -> 0 bytes public/admin/assets/images/avatars/team1.jpg | Bin 4205 -> 0 bytes public/admin/assets/images/avatars/team2.png | Bin 5179 -> 0 bytes public/admin/assets/images/avatars/team3.png | Bin 4045 -> 0 bytes public/admin/assets/images/avatars/team4.jpg | Bin 32000 -> 0 bytes .../admin/assets/images/avatars/uifaces1.jpg | Bin 5252 -> 0 bytes .../admin/assets/images/avatars/uifaces10.jpg | Bin 5275 -> 0 bytes .../admin/assets/images/avatars/uifaces11.jpg | Bin 6006 -> 0 bytes .../admin/assets/images/avatars/uifaces12.jpg | Bin 7571 -> 0 bytes .../admin/assets/images/avatars/uifaces13.jpg | Bin 13166 -> 0 bytes .../admin/assets/images/avatars/uifaces14.jpg | Bin 5742 -> 0 bytes .../admin/assets/images/avatars/uifaces15.jpg | Bin 6237 -> 0 bytes .../admin/assets/images/avatars/uifaces16.jpg | Bin 4969 -> 0 bytes .../admin/assets/images/avatars/uifaces17.jpg | Bin 6392 -> 0 bytes .../admin/assets/images/avatars/uifaces18.jpg | Bin 4996 -> 0 bytes .../admin/assets/images/avatars/uifaces19.jpg | Bin 6483 -> 0 bytes .../admin/assets/images/avatars/uifaces2.jpg | Bin 4240 -> 0 bytes .../admin/assets/images/avatars/uifaces20.jpg | Bin 6555 -> 0 bytes .../admin/assets/images/avatars/uifaces21.jpg | Bin 3491 -> 0 bytes .../admin/assets/images/avatars/uifaces22.jpg | Bin 4342 -> 0 bytes .../admin/assets/images/avatars/uifaces3.jpg | Bin 6673 -> 0 bytes .../admin/assets/images/avatars/uifaces4.jpg | Bin 4497 -> 0 bytes .../admin/assets/images/avatars/uifaces5.jpg | Bin 4904 -> 0 bytes .../admin/assets/images/avatars/uifaces6.jpg | Bin 5376 -> 0 bytes .../admin/assets/images/avatars/uifaces7.jpg | Bin 3593 -> 0 bytes .../admin/assets/images/avatars/uifaces8.jpg | Bin 6191 -> 0 bytes .../admin/assets/images/avatars/uifaces9.jpg | Bin 22399 -> 0 bytes .../assets/images/avatars/unknown-profile.jpg | Bin 1833 -> 0 bytes .../assets/images/brand-accent-inverse.png | Bin 4738 -> 0 bytes public/admin/assets/images/brand-accent.png | Bin 3960 -> 0 bytes public/admin/assets/images/brand-inverse.png | Bin 5346 -> 0 bytes public/admin/assets/images/brand.png | Bin 3966 -> 0 bytes .../admin/assets/images/brands/bitbucket.png | Bin 0 -> 701 bytes .../admin/assets/images/brands/dribbble.png | Bin 0 -> 911 bytes public/admin/assets/images/brands/dropbox.png | Bin 0 -> 772 bytes public/admin/assets/images/brands/g-suite.png | Bin 0 -> 3415 bytes public/admin/assets/images/brands/github.png | Bin 0 -> 1425 bytes public/admin/assets/images/brands/slack.png | Bin 0 -> 2276 bytes public/admin/assets/images/dummy/img-1-lg.jpg | Bin 128633 -> 0 bytes public/admin/assets/images/dummy/img-1.jpg | Bin 39567 -> 0 bytes public/admin/assets/images/dummy/img-2-lg.jpg | Bin 215287 -> 0 bytes public/admin/assets/images/dummy/img-2.jpg | Bin 36322 -> 0 bytes public/admin/assets/images/dummy/img-3-lg.jpg | Bin 281295 -> 0 bytes public/admin/assets/images/dummy/img-3.jpg | Bin 45601 -> 0 bytes public/admin/assets/images/dummy/img-4-lg.jpg | Bin 266608 -> 0 bytes public/admin/assets/images/dummy/img-4.jpg | Bin 44908 -> 0 bytes public/admin/assets/images/dummy/img-5-lg.jpg | Bin 78289 -> 0 bytes public/admin/assets/images/dummy/img-5.jpg | Bin 14826 -> 0 bytes public/admin/assets/images/dummy/img-6-lg.jpg | Bin 118411 -> 0 bytes public/admin/assets/images/dummy/img-6.jpg | Bin 22751 -> 0 bytes public/admin/assets/images/dummy/img-7-lg.jpg | Bin 106555 -> 0 bytes public/admin/assets/images/dummy/img-7.jpg | Bin 19357 -> 0 bytes public/admin/assets/images/dummy/img-8.jpg | Bin 30509 -> 0 bytes public/admin/assets/images/flags/germany.jpg | Bin 0 -> 698 bytes public/admin/assets/images/flags/us.jpg | Bin 0 -> 1485 bytes .../assets/images/illustration/img-1.png | Bin 94701 -> 0 bytes .../assets/images/illustration/img-2.png | Bin 8925 -> 0 bytes .../assets/images/illustration/img-3.png | Bin 191510 -> 0 bytes .../assets/images/illustration/img-4.png | Bin 152394 -> 0 bytes .../assets/images/illustration/img-5.png | Bin 156854 -> 0 bytes .../assets/images/illustration/img-6.png | Bin 32100 -> 0 bytes .../assets/images/illustration/img-7.png | Bin 70693 -> 0 bytes .../assets/images/illustration/img-8.png | Bin 102130 -> 0 bytes public/admin/assets/images/users/avatar-1.jpg | Bin 0 -> 2967 bytes .../assets/javascript/pages/atwho-demo.min.js | 1 - .../assets/javascript/pages/board-demo.min.js | 1 - .../javascript/pages/chartjs-bar-demo.min.js | 1 - .../pages/chartjs-others-demo.min.js | 1 - .../pages/chartjs-radar-demo.min.js | 1 - .../pages/chartjs-scatter-demo.min.js | 1 - .../javascript/pages/colorpicker-demo.min.js | 1 - .../pages/conversations-demo.min.js | 1 - .../pages/cookieconsent-demo.min.js | 1 - .../javascript/pages/dashboard-demo.min.js | 1 - .../pages/datatables-filters.min.js | 206 - .../javascript/pages/easypiechart-demo.min.js | 1 - .../javascript/pages/flatpickr-demo.min.js | 1 - .../javascript/pages/jstree-demo.min.js | 1 - .../assets/javascript/pages/knob-demo.min.js | 1 - .../javascript/pages/photoswipe-demo.min.js | 1 - .../assets/javascript/pages/plyr-demo.min.js | 1 - .../javascript/pages/profile-demo.min.js | 1 - .../assets/javascript/pages/quill-demo.min.js | 1 - .../javascript/pages/select2-demo.min.js | 1 - .../pages/session-timeout-demo.min.js | 1 - .../javascript/pages/slider-demo.min.js | 1 - .../pages/sortable-nestable-demo.min.js | 1 - .../javascript/pages/sparkline-demo.min.js | 1 - .../javascript/pages/spinner-demo.min.js | 1 - .../assets/javascript/pages/table-demo.min.js | 1 - .../javascript/pages/toastr-demo.min.js | 1 - .../javascript/pages/treeview-demo.min.js | 1 - .../javascript/pages/tribute-demo.min.js | 1 - .../javascript/pages/typeahead-demo.min.js | 1 - .../javascript/pages/uploader-demo.min.js | 1 - .../pages/user-settings-demo.min.js | 1 - .../javascript/particles-comingsoon.json | 110 - .../assets/javascript/particles-error.json | 110 - public/admin/assets/javascript/particles.json | 110 - public/admin/assets/javascript/theme.min.js | 1619 - public/admin/assets/js/app.min.css | 20 + public/admin/assets/js/app.min.js | 2 + public/admin/assets/js/vendor.min.js | 24955 ++++++++++++++++ .../assets/js/vendor/dataTables.bootstrap5.js | 184 + .../js/vendor/dataTables.checkboxes.min.js | 3 + .../js/vendor/dataTables.responsive.min.js | 48 + .../assets/js/vendor/jquery.dataTables.min.js | 168 + .../js/vendor/responsive.bootstrap5.min.js | 12 + public/admin/assets/stylesheets/theme.min.css | 6 - .../vendor/at.js/css/jquery.atwho.min.css | 1 - .../vendor/at.js/js/jquery.atwho.min.js | 1 - .../canvas-to-blob.min.js | 1 - .../css/jquery.fileupload-noscript.css | 22 - .../css/jquery.fileupload-ui-noscript.css | 17 - .../css/jquery.fileupload-ui.css | 57 - .../css/jquery.fileupload.css | 37 - .../blueimp-file-upload/img/loading.gif | Bin 3897 -> 0 bytes .../blueimp-file-upload/img/progressbar.gif | Bin 3323 -> 0 bytes .../cors/jquery.postmessage-transport.min.js | 1 - .../js/cors/jquery.xdr-transport.min.js | 1 - .../js/jquery.fileupload-angular.min.js | 1 - .../js/jquery.fileupload-audio.min.js | 1 - .../js/jquery.fileupload-image.min.js | 1 - .../js/jquery.fileupload-jquery-ui.min.js | 1 - .../js/jquery.fileupload-process.min.js | 1 - .../js/jquery.fileupload-ui.min.js | 1 - .../js/jquery.fileupload-validate.min.js | 1 - .../js/jquery.fileupload-video.min.js | 1 - .../js/jquery.fileupload.min.js | 1 - .../js/jquery.iframe-transport.min.js | 1 - .../js/vendor/jquery.ui.widget.min.js | 1 - .../assets/vendor/blueimp-load-image/index.js | 8 - .../blueimp-load-image/load-image-exif-map.js | 387 - .../blueimp-load-image/load-image-exif.js | 300 - .../blueimp-load-image/load-image-fetch.js | 42 - .../blueimp-load-image/load-image-meta.js | 159 - .../load-image-orientation.js | 185 - .../blueimp-load-image/load-image-scale.js | 282 - .../blueimp-load-image/load-image.all.min.js | 2 - .../load-image.all.min.js.map | 1 - .../vendor/blueimp-load-image/load-image.js | 138 - .../assets/vendor/blueimp-tmpl/compile.min.js | 2 - .../assets/vendor/blueimp-tmpl/runtime.min.js | 1 - .../assets/vendor/blueimp-tmpl/tmpl.min.js | 1 - .../css/bootstrap-colorpicker.min.css | 9 - .../js/bootstrap-colorpicker.min.js | 10 - .../bootstrap-session-timeout.min.js | 1 - .../jquery.bootstrap-touchspin.min.css | 1 - .../jquery.bootstrap-touchspin.min.js | 10 - .../bootstrap-treeview.min.js | 1 - .../vendor/chart.js/Chart.bundle.min.js | 10 - .../admin/assets/vendor/chart.js/Chart.min.js | 10 - .../assets/vendor/clipboard/clipboard.min.js | 7 - .../cookieconsent/cookieconsent.min.css | 6 - .../vendor/cookieconsent/cookieconsent.min.js | 1 - .../angular.easypiechart.min.js | 9 - .../vendor/easy-pie-chart/easypiechart.min.js | 9 - .../easy-pie-chart/jquery.easypiechart.min.js | 9 - .../assets/vendor/flatpickr/flatpickr.min.css | 13 - .../assets/vendor/flatpickr/flatpickr.min.js | 2 - public/admin/assets/vendor/flatpickr/ie.css | 13 - .../assets/vendor/flatpickr/l10n/ar.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/ar.js | 29 - .../assets/vendor/flatpickr/l10n/at.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/at.js | 34 - .../assets/vendor/flatpickr/l10n/be.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/be.js | 39 - .../assets/vendor/flatpickr/l10n/bg.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/bg.js | 29 - .../assets/vendor/flatpickr/l10n/bn.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/bn.js | 29 - .../assets/vendor/flatpickr/l10n/cat.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/cat.js | 51 - .../assets/vendor/flatpickr/l10n/cs.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/cs.js | 39 - .../assets/vendor/flatpickr/l10n/cy.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/cy.js | 40 - .../assets/vendor/flatpickr/l10n/da.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/da.js | 35 - .../assets/vendor/flatpickr/l10n/de.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/de.js | 34 - .../assets/vendor/flatpickr/l10n/default.d.ts | 3 - .../assets/vendor/flatpickr/l10n/default.js | 50 - .../assets/vendor/flatpickr/l10n/eo.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/eo.js | 37 - .../assets/vendor/flatpickr/l10n/es.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/es.js | 34 - .../assets/vendor/flatpickr/l10n/et.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/et.js | 37 - .../assets/vendor/flatpickr/l10n/fa.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/fa.js | 33 - .../assets/vendor/flatpickr/l10n/fi.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/fi.js | 33 - .../assets/vendor/flatpickr/l10n/fr.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/fr.js | 38 - .../assets/vendor/flatpickr/l10n/gr.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/gr.js | 38 - .../assets/vendor/flatpickr/l10n/he.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/he.js | 29 - .../assets/vendor/flatpickr/l10n/hi.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/hi.js | 29 - .../assets/vendor/flatpickr/l10n/hr.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/hr.js | 30 - .../assets/vendor/flatpickr/l10n/hu.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/hu.js | 36 - .../assets/vendor/flatpickr/l10n/id.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/id.js | 33 - .../assets/vendor/flatpickr/l10n/index.d.ts | 3 - .../assets/vendor/flatpickr/l10n/index.js | 1154 - .../assets/vendor/flatpickr/l10n/it.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/it.js | 37 - .../assets/vendor/flatpickr/l10n/ja.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/ja.js | 29 - .../assets/vendor/flatpickr/l10n/ko.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/ko.js | 32 - .../assets/vendor/flatpickr/l10n/kz.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/kz.js | 39 - .../assets/vendor/flatpickr/l10n/lt.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/lt.js | 36 - .../assets/vendor/flatpickr/l10n/lv.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/lv.js | 31 - .../assets/vendor/flatpickr/l10n/mk.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/mk.js | 32 - .../assets/vendor/flatpickr/l10n/mn.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/mn.js | 31 - .../assets/vendor/flatpickr/l10n/ms.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/ms.js | 32 - .../assets/vendor/flatpickr/l10n/my.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/my.js | 33 - .../assets/vendor/flatpickr/l10n/nl.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/nl.js | 38 - .../assets/vendor/flatpickr/l10n/no.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/no.js | 37 - .../assets/vendor/flatpickr/l10n/pa.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/pa.js | 29 - .../assets/vendor/flatpickr/l10n/pl.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/pl.js | 37 - .../assets/vendor/flatpickr/l10n/pt.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/pt.js | 30 - .../assets/vendor/flatpickr/l10n/ro.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/ro.js | 33 - .../assets/vendor/flatpickr/l10n/ru.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/ru.js | 39 - .../assets/vendor/flatpickr/l10n/si.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/si.js | 29 - .../assets/vendor/flatpickr/l10n/sk.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/sk.js | 34 - .../assets/vendor/flatpickr/l10n/sl.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/sl.js | 34 - .../assets/vendor/flatpickr/l10n/sq.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/sq.js | 29 - .../assets/vendor/flatpickr/l10n/sr.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/sr.js | 32 - .../assets/vendor/flatpickr/l10n/sv.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/sv.js | 34 - .../assets/vendor/flatpickr/l10n/th.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/th.js | 36 - .../assets/vendor/flatpickr/l10n/tr.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/tr.js | 38 - .../assets/vendor/flatpickr/l10n/uk.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/uk.js | 30 - .../assets/vendor/flatpickr/l10n/vn.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/vn.js | 30 - .../assets/vendor/flatpickr/l10n/zh.d.ts | 77 - .../admin/assets/vendor/flatpickr/l10n/zh.js | 33 - .../plugins/confirmDate/confirmDate.css | 24 - .../plugins/confirmDate/confirmDate.d.ts | 9 - .../plugins/confirmDate/confirmDate.js | 46 - .../plugins/labelPlugin/labelPlugin.d.ts | 3 - .../plugins/labelPlugin/labelPlugin.js | 32 - .../flatpickr/plugins/minMaxTimePlugin.d.ts | 17 - .../flatpickr/plugins/minMaxTimePlugin.js | 288 - .../plugins/monthSelect/monthSelect.css | 10 - .../plugins/monthSelect/monthSelect.d.ts | 7 - .../plugins/monthSelect/monthSelect.js | 60 - .../vendor/flatpickr/plugins/rangePlugin.d.ts | 11 - .../vendor/flatpickr/plugins/rangePlugin.js | 147 - .../flatpickr/plugins/scrollPlugin.d.ts | 3 - .../vendor/flatpickr/plugins/scrollPlugin.js | 63 - .../plugins/weekSelect/weekSelect.d.ts | 7 - .../plugins/weekSelect/weekSelect.js | 77 - .../assets/vendor/flatpickr/themes/airbnb.css | 819 - .../vendor/flatpickr/themes/confetti.css | 752 - .../assets/vendor/flatpickr/themes/dark.css | 741 - .../assets/vendor/flatpickr/themes/light.css | 755 - .../vendor/flatpickr/themes/material_blue.css | 752 - .../flatpickr/themes/material_green.css | 752 - .../flatpickr/themes/material_orange.css | 752 - .../vendor/flatpickr/themes/material_red.css | 752 - .../assets/vendor/fontawesome/css/all.css | 5 - .../fontawesome/webfonts/fa-brands-400.eot | Bin 126428 -> 0 bytes .../fontawesome/webfonts/fa-brands-400.svg | 1184 - .../fontawesome/webfonts/fa-brands-400.ttf | Bin 126192 -> 0 bytes .../fontawesome/webfonts/fa-brands-400.woff | Bin 81612 -> 0 bytes .../fontawesome/webfonts/fa-brands-400.woff2 | Bin 69608 -> 0 bytes .../fontawesome/webfonts/fa-regular-400.eot | Bin 40460 -> 0 bytes .../fontawesome/webfonts/fa-regular-400.svg | 467 - .../fontawesome/webfonts/fa-regular-400.ttf | Bin 40232 -> 0 bytes .../fontawesome/webfonts/fa-regular-400.woff | Bin 18112 -> 0 bytes .../fontawesome/webfonts/fa-regular-400.woff2 | Bin 14844 -> 0 bytes .../fontawesome/webfonts/fa-solid-900.eot | Bin 197172 -> 0 bytes .../fontawesome/webfonts/fa-solid-900.svg | 2618 -- .../fontawesome/webfonts/fa-solid-900.ttf | Bin 196952 -> 0 bytes .../fontawesome/webfonts/fa-solid-900.woff | Bin 95436 -> 0 bytes .../fontawesome/webfonts/fa-solid-900.woff2 | Bin 73852 -> 0 bytes .../vendor/handlebars/handlebars.amd.min.js | 29 - .../vendor/handlebars/handlebars.min.js | 29 - .../handlebars/handlebars.runtime.amd.min.js | 27 - .../handlebars/handlebars.runtime.min.js | 27 - .../jquery-countdown/jquery.countdown.min.js | 22 - .../vendor/jquery-knob/jquery.knob.min.js | 1 - .../jquery-sparkline/jquery.sparkline.min.js | 2 - .../vendor/jquery.caret/jquery.caret.min.js | 2 - .../admin/assets/vendor/jstree/jstree.min.js | 6 - .../jstree/themes/default-dark/32px.png | Bin 1562 -> 0 bytes .../jstree/themes/default-dark/40px.png | Bin 5717 -> 0 bytes .../jstree/themes/default-dark/style.min.css | 1 - .../jstree/themes/default-dark/throbber.gif | Bin 1720 -> 0 bytes .../vendor/jstree/themes/default/32px.png | Bin 3121 -> 0 bytes .../vendor/jstree/themes/default/40px.png | Bin 1880 -> 0 bytes .../jstree/themes/default/style.min.css | 1 - .../vendor/jstree/themes/default/throbber.gif | Bin 1720 -> 0 bytes .../vendor/masonry-layout/masonry.pkgd.min.js | 9 - .../vendor/nestable2/jquery.nestable.min.css | 1 - .../vendor/nestable2/jquery.nestable.min.js | 1 - .../vendor/nouislider/nouislider.min.css | 1 - .../vendor/nouislider/nouislider.min.js | 3 - .../admin/assets/vendor/nouislider/wNumb.js | 357 - .../css/open-iconic-bootstrap.min.css | 1 - .../vendor/open-iconic/fonts/open-iconic.eot | Bin 28196 -> 0 bytes .../vendor/open-iconic/fonts/open-iconic.otf | Bin 20996 -> 0 bytes .../vendor/open-iconic/fonts/open-iconic.svg | 543 - .../vendor/open-iconic/fonts/open-iconic.ttf | Bin 28028 -> 0 bytes .../vendor/open-iconic/fonts/open-iconic.woff | Bin 14984 -> 0 bytes .../vendor/particles.js/particles.min.js | 1 - .../photoswipe-skin/default-skin.css | 482 - .../photoswipe-skin/default-skin.png | Bin 547 -> 0 bytes .../photoswipe-skin/default-skin.svg | 1 - .../photoswipe/photoswipe-skin/preloader.gif | Bin 866 -> 0 bytes .../photoswipe/photoswipe-ui-default.min.js | 4 - .../assets/vendor/photoswipe/photoswipe.css | 179 - .../vendor/photoswipe/photoswipe.min.js | 4 - public/admin/assets/vendor/plyr/blank.mp4 | Bin 1777 -> 0 bytes public/admin/assets/vendor/plyr/plyr.css | 1 - public/admin/assets/vendor/plyr/plyr.js.map | 1 - public/admin/assets/vendor/plyr/plyr.min.js | 2 - .../admin/assets/vendor/plyr/plyr.min.js.map | 1 - .../assets/vendor/plyr/plyr.polyfilled.min.js | 2 - .../vendor/plyr/plyr.polyfilled.min.js.map | 1 - public/admin/assets/vendor/plyr/plyr.svg | 1 - .../assets/vendor/select2/css/select2.css | 484 - .../assets/vendor/select2/css/select2.min.css | 1 - .../admin/assets/vendor/select2/js/i18n/af.js | 3 - .../admin/assets/vendor/select2/js/i18n/ar.js | 3 - .../admin/assets/vendor/select2/js/i18n/az.js | 3 - .../admin/assets/vendor/select2/js/i18n/bg.js | 3 - .../admin/assets/vendor/select2/js/i18n/bs.js | 3 - .../assets/vendor/select2/js/i18n/build.txt | 220 - .../admin/assets/vendor/select2/js/i18n/ca.js | 3 - .../admin/assets/vendor/select2/js/i18n/cs.js | 3 - .../admin/assets/vendor/select2/js/i18n/da.js | 3 - .../admin/assets/vendor/select2/js/i18n/de.js | 3 - .../assets/vendor/select2/js/i18n/dsb.js | 3 - .../admin/assets/vendor/select2/js/i18n/el.js | 3 - .../admin/assets/vendor/select2/js/i18n/en.js | 3 - .../admin/assets/vendor/select2/js/i18n/es.js | 3 - .../admin/assets/vendor/select2/js/i18n/et.js | 3 - .../admin/assets/vendor/select2/js/i18n/eu.js | 3 - .../admin/assets/vendor/select2/js/i18n/fa.js | 3 - .../admin/assets/vendor/select2/js/i18n/fi.js | 3 - .../admin/assets/vendor/select2/js/i18n/fr.js | 3 - .../admin/assets/vendor/select2/js/i18n/gl.js | 3 - .../admin/assets/vendor/select2/js/i18n/he.js | 3 - .../admin/assets/vendor/select2/js/i18n/hi.js | 3 - .../admin/assets/vendor/select2/js/i18n/hr.js | 3 - .../assets/vendor/select2/js/i18n/hsb.js | 3 - .../admin/assets/vendor/select2/js/i18n/hu.js | 3 - .../admin/assets/vendor/select2/js/i18n/hy.js | 3 - .../admin/assets/vendor/select2/js/i18n/id.js | 3 - .../admin/assets/vendor/select2/js/i18n/is.js | 3 - .../admin/assets/vendor/select2/js/i18n/it.js | 3 - .../admin/assets/vendor/select2/js/i18n/ja.js | 3 - .../admin/assets/vendor/select2/js/i18n/km.js | 3 - .../admin/assets/vendor/select2/js/i18n/ko.js | 3 - .../admin/assets/vendor/select2/js/i18n/lt.js | 3 - .../admin/assets/vendor/select2/js/i18n/lv.js | 3 - .../admin/assets/vendor/select2/js/i18n/mk.js | 3 - .../admin/assets/vendor/select2/js/i18n/ms.js | 3 - .../admin/assets/vendor/select2/js/i18n/nb.js | 3 - .../admin/assets/vendor/select2/js/i18n/nl.js | 3 - .../admin/assets/vendor/select2/js/i18n/pl.js | 3 - .../admin/assets/vendor/select2/js/i18n/ps.js | 3 - .../assets/vendor/select2/js/i18n/pt-BR.js | 3 - .../admin/assets/vendor/select2/js/i18n/pt.js | 3 - .../admin/assets/vendor/select2/js/i18n/ro.js | 3 - .../admin/assets/vendor/select2/js/i18n/ru.js | 3 - .../admin/assets/vendor/select2/js/i18n/sk.js | 3 - .../admin/assets/vendor/select2/js/i18n/sl.js | 3 - .../assets/vendor/select2/js/i18n/sr-Cyrl.js | 3 - .../admin/assets/vendor/select2/js/i18n/sr.js | 3 - .../admin/assets/vendor/select2/js/i18n/sv.js | 3 - .../admin/assets/vendor/select2/js/i18n/th.js | 3 - .../admin/assets/vendor/select2/js/i18n/tk.js | 3 - .../admin/assets/vendor/select2/js/i18n/tr.js | 3 - .../admin/assets/vendor/select2/js/i18n/uk.js | 3 - .../admin/assets/vendor/select2/js/i18n/vi.js | 3 - .../assets/vendor/select2/js/i18n/zh-CN.js | 3 - .../assets/vendor/select2/js/i18n/zh-TW.js | 3 - .../vendor/select2/js/select2.full.min.js | 1 - .../assets/vendor/select2/js/select2.min.js | 1 - .../assets/vendor/sortablejs/Sortable.min.js | 2 - .../stacked-menu/amd/stacked-menu.min.js | 2 - .../stacked-menu/amd/stacked-menu.min.js.map | 1 - .../stacked-menu/commonjs/stacked-menu.min.js | 2 - .../commonjs/stacked-menu.min.js.map | 1 - .../stacked-menu/es6/stacked-menu.min.js | 2 - .../stacked-menu/es6/stacked-menu.min.js.map | 1 - .../stacked-menu/stacked-menu.jquery.js | 43 - .../vendor/stacked-menu/stacked-menu.min.js | 2 - .../stacked-menu/stacked-menu.min.js.map | 1 - .../stacked-menu/umd/stacked-menu.min.js | 2 - .../stacked-menu/umd/stacked-menu.min.js.map | 1 - .../dist/stackonly/tablesaw.stackonly.css | 148 - .../stackonly/tablesaw.stackonly.jquery.js | 658 - .../dist/stackonly/tablesaw.stackonly.js | 2359 -- .../dist/stackonly/tablesaw.stackonly.scss | 150 - .../vendor/tablesaw/dist/tablesaw-init.js | 18 - .../assets/vendor/tablesaw/dist/tablesaw.css | 752 - .../vendor/tablesaw/dist/tablesaw.jquery.js | 2076 -- .../assets/vendor/tablesaw/dist/tablesaw.js | 3777 --- .../admin/assets/vendor/toastr/toastr.js.map | 1 - .../admin/assets/vendor/toastr/toastr.min.css | 1 - .../admin/assets/vendor/toastr/toastr.min.js | 2 - .../assets/vendor/tributejs/TributeEvents.js | 301 - .../vendor/tributejs/TributeMenuEvents.js | 77 - .../assets/vendor/tributejs/TributeRange.js | 515 - .../assets/vendor/tributejs/TributeSearch.js | 176 - public/admin/assets/vendor/tributejs/index.js | 18 - .../admin/assets/vendor/tributejs/tribute.css | 27 - .../assets/vendor/tributejs/tribute.min.js | 2 - public/admin/assets/vendor/tributejs/utils.js | 43 - .../vendor/typeahead.js/bloodhound.min.js | 7 - .../typeahead.js/typeahead.bundle.min.js | 8 - .../typeahead.js/typeahead.jquery.min.js | 7 - public/admin/favicon.ico | Bin 15086 -> 15086 bytes public/admin/index.php | 2 + public/iot/favicon.ico | Bin 0 -> 15086 bytes public/iot/index.php | 2 + public/paas/favicon.ico | Bin 0 -> 15086 bytes public/paas/index.php | 2 + public/payment/favicon.ico | Bin 0 -> 15086 bytes public/payment/index.php | 2 + public/store/favicon.ico | Bin 0 -> 15086 bytes public/store/index.php | 2 + vendor/Hook/Batch/Insert.php | 2 + vendor/Hook/Batch/Process.php | 2 + vendor/Hook/Cache/Cache.php | 8 +- vendor/Hook/Crypt/PassWord.php | 6 +- vendor/Hook/Crypt/Rijndael.php | 2 + vendor/Hook/Data/ArrayUtils.php | 2 + vendor/Hook/Date/Calendar.php | 2 + vendor/Hook/Db/MongoConnect.php | 2 + vendor/Hook/Db/OrmConnect.php | 24 +- vendor/Hook/Db/PdoConnect.php | 4 +- vendor/Hook/Db/RedisConnect.php | 8 +- vendor/Hook/Db/YacConnect.php | 14 - vendor/Hook/Extract/AbstractAdapter.php | 2 + vendor/Hook/Extract/Extract.php | 2 + vendor/Hook/Extract/ExtractInterface.php | 2 + vendor/Hook/Extract/RarAdapter.php | 2 + vendor/Hook/Extract/ZipAdapter.php | 2 + vendor/Hook/File/File.php | 2 + vendor/Hook/Hook/Hook.php | 7 +- vendor/Hook/Hook/Module.php | 2 + vendor/Hook/Http/Curl.php | 2 + vendor/Hook/Http/Header.php | 2 + vendor/Hook/Image/Image.php | 2 + vendor/Hook/Paginator/Paginator.php | 2 + vendor/Hook/Tika/Tika.php | 2 + vendor/Hook/Tools/Tools.php | 2 + vendor/Hook/Translation/AbstractAdapter.php | 2 + vendor/Hook/Translation/BaiduAdapter.php | 2 + vendor/Hook/Translation/BingAdapter.php | 2 + vendor/Hook/Translation/GoogleAdapter.php | 2 + vendor/Hook/Translation/Translation.php | 2 + .../Hook/Translation/TranslationInterface.php | 2 + vendor/Hook/Validate/Validate.php | 32 +- 769 files changed, 80377 insertions(+), 68549 deletions(-) create mode 100644 Dockerfile create mode 100644 Start create mode 100644 apc.php create mode 100755 app/admin/config/i18n/zh-CN.php create mode 100755 app/admin/config/product.php create mode 100755 app/admin/config/table.php create mode 100644 app/admin/models/Logout.php create mode 100644 app/admin/modules/Api/controllers/Login.php create mode 100644 app/admin/modules/Api/controllers/Logout.php delete mode 100644 app/admin/views/default/app/get.phtml delete mode 100644 app/admin/views/default/app/post.phtml delete mode 100644 app/admin/views/default/app/put.phtml delete mode 100644 app/admin/views/default/config/get.phtml delete mode 100644 app/admin/views/default/config/post.phtml delete mode 100644 app/admin/views/default/config/put.phtml delete mode 100644 app/admin/views/default/form.phtml delete mode 100644 app/admin/views/default/form/birthday.phtml delete mode 100644 app/admin/views/default/form/checkbox.phtml delete mode 100644 app/admin/views/default/form/color.phtml delete mode 100644 app/admin/views/default/form/date.phtml delete mode 100644 app/admin/views/default/form/datetime.phtml delete mode 100644 app/admin/views/default/form/hidden.phtml delete mode 100644 app/admin/views/default/form/number.phtml delete mode 100644 app/admin/views/default/form/password.phtml delete mode 100644 app/admin/views/default/form/radio.phtml delete mode 100644 app/admin/views/default/form/select.phtml delete mode 100644 app/admin/views/default/form/switch.phtml delete mode 100644 app/admin/views/default/form/text.phtml delete mode 100644 app/admin/views/default/form/textarea.phtml delete mode 100644 app/admin/views/default/head.phtml delete mode 100644 app/admin/views/default/hook/hook/get.phtml delete mode 100644 app/admin/views/default/hook/hook/module/get.phtml delete mode 100644 app/admin/views/default/hook/hook/module/post.phtml delete mode 100644 app/admin/views/default/hook/hook/module/put.phtml delete mode 100644 app/admin/views/default/hook/hook/post.phtml delete mode 100644 app/admin/views/default/hook/hook/put.phtml delete mode 100644 app/admin/views/default/index/post.phtml delete mode 100644 app/admin/views/default/index/put.phtml delete mode 100644 app/admin/views/default/lang/get.phtml delete mode 100644 app/admin/views/default/lang/post.phtml delete mode 100644 app/admin/views/default/lang/put.phtml delete mode 100644 app/admin/views/default/layout/list.phtml delete mode 100644 app/admin/views/default/layout/write.phtml create mode 100644 app/admin/views/default/list.phtml delete mode 100644 app/admin/views/default/login/post.phtml delete mode 100644 app/admin/views/default/manager/manager/get.phtml delete mode 100644 app/admin/views/default/manager/manager/post.phtml delete mode 100644 app/admin/views/default/manager/manager/put.phtml delete mode 100644 app/admin/views/default/menu/get.phtml delete mode 100644 app/admin/views/default/menu/post.phtml delete mode 100644 app/admin/views/default/menu/put.phtml delete mode 100644 app/admin/views/default/modal.phtml create mode 100644 app/admin/views/default/nav.phtml delete mode 100644 app/admin/views/default/rbac/group/get.phtml delete mode 100644 app/admin/views/default/rbac/group/manager/get.phtml delete mode 100644 app/admin/views/default/rbac/group/manager/post.phtml delete mode 100644 app/admin/views/default/rbac/group/manager/put.phtml delete mode 100644 app/admin/views/default/rbac/group/post.phtml delete mode 100644 app/admin/views/default/rbac/group/put.phtml delete mode 100644 app/admin/views/default/rbac/group/role/get.phtml delete mode 100644 app/admin/views/default/rbac/group/role/post.phtml delete mode 100644 app/admin/views/default/rbac/group/role/put.phtml delete mode 100644 app/admin/views/default/rbac/index/get.phtml delete mode 100644 app/admin/views/default/rbac/index/post.phtml delete mode 100644 app/admin/views/default/rbac/index/put.phtml delete mode 100644 app/admin/views/default/rbac/manager/role/get.phtml delete mode 100644 app/admin/views/default/rbac/manager/role/post.phtml delete mode 100644 app/admin/views/default/rbac/manager/role/put.phtml delete mode 100644 app/admin/views/default/rbac/role/get.phtml delete mode 100644 app/admin/views/default/rbac/role/post.phtml delete mode 100644 app/admin/views/default/rbac/role/put.phtml delete mode 100644 app/admin/views/default/table.phtml delete mode 100644 app/admin/views/default/theme/get.phtml delete mode 100644 app/admin/views/default/theme/post.phtml delete mode 100644 app/admin/views/default/theme/put.phtml delete mode 100644 app/admin/views/default/translation/get.phtml delete mode 100644 app/admin/views/default/translation/post.phtml delete mode 100644 app/admin/views/default/translation/put.phtml delete mode 100644 app/admin/views/default/user/get.phtml delete mode 100644 app/admin/views/default/user/post.phtml delete mode 100644 app/admin/views/default/user/put.phtml create mode 100755 app/iot/config/i18n/zh-CN.php create mode 100755 app/iot/config/product.php create mode 100755 app/iot/config/table.php create mode 100755 app/paas/config/i18n/zh-CN.php create mode 100755 app/paas/config/product.php create mode 100755 app/paas/config/table.php create mode 100755 app/payment/config/i18n/zh-CN.php create mode 100755 app/payment/config/product.php create mode 100755 app/payment/config/table.php create mode 100755 app/store/config/i18n/zh-CN.php create mode 100755 app/store/config/product.php create mode 100755 app/store/config/table.php delete mode 100755 conf/adminLangZh-cn.ini delete mode 100755 conf/adminProduct.ini delete mode 100755 conf/adminTable.ini delete mode 100755 conf/dicMongo.ini delete mode 100755 conf/dicPdo.ini delete mode 100755 conf/dicPinyin.ini delete mode 100755 conf/dicRedis.ini delete mode 100755 conf/dicRegexp.ini delete mode 100755 conf/dicYac.ini delete mode 100755 conf/iotLangZh-cn.ini delete mode 100755 conf/iotProduct.ini delete mode 100755 conf/iotTable.ini delete mode 100755 conf/paasLangZh-cn.ini delete mode 100755 conf/paasProduct.ini delete mode 100755 conf/paasTable.ini delete mode 100755 conf/paymentLangZh-cn.ini delete mode 100755 conf/paymentProduct.ini delete mode 100755 conf/paymentTable.ini delete mode 100755 conf/storeLangZh-cn.ini delete mode 100755 conf/storeProduct.ini delete mode 100755 conf/storeTable.ini create mode 100644 config/database.php create mode 100644 config/pinyin.php create mode 100644 config/regexp.php create mode 100644 config/sql.php delete mode 100644 demo/1.png rename PaaS.md => doc/PaaS.md (100%) create mode 100644 doc/images/1.png create mode 100644 doc/images/alipay.jpg rename {demo => doc/images}/architecture.png (100%) rename {demo => doc/images}/qq.jpg (100%) create mode 100644 doc/images/wechat.jpg rename {demo => doc/images}/zsxq.png (100%) delete mode 100644 docker/init.sh delete mode 100755 docker/log/.gitignore delete mode 100755 docker/log/mysql/.gitignore delete mode 100755 docker/log/nginx/.gitignore delete mode 100755 docker/log/redis/.gitignore delete mode 100755 docker/mongodb/mongod.conf delete mode 100755 docker/mysql/conf.d/mysql.cnf delete mode 100644 docker/mysql/mysql.conf.d/mysqld.cnf delete mode 100755 docker/nginx/conf.d/default.conf delete mode 100755 docker/nginx/nginx.conf delete mode 100644 docker/php/7.4/cli/php.ini delete mode 100644 docker/php/7.4/fpm/php-fpm.conf delete mode 100644 docker/php/7.4/fpm/php.ini delete mode 100644 docker/php/7.4/fpm/pool.d/www.conf delete mode 100644 docker/rabbitmq/.gitignore delete mode 100644 docker/rabbitmq/rabbitmq.config delete mode 100755 docker/redis/redis.conf delete mode 100644 docker/supervisor/.gitignore delete mode 100644 docker/varnish/.gitignore delete mode 100644 openresty/conf/nginx.conf delete mode 100644 openresty/logs/.gitignore create mode 100644 preload.php delete mode 100644 public/admin/apple-touch-icon-precomposed.png delete mode 100644 public/admin/apple-touch-icon.png create mode 100644 public/admin/assets/css/app-dark.min.css create mode 100644 public/admin/assets/css/app.min.css create mode 100644 public/admin/assets/css/icons.min.css create mode 100644 public/admin/assets/css/signin.css create mode 100644 public/admin/assets/css/vendor.min.js create mode 100644 public/admin/assets/css/vendor/dataTables.bootstrap5.css create mode 100644 public/admin/assets/css/vendor/responsive.bootstrap5.css create mode 100644 public/admin/assets/fonts/Nunito-Bold.woff create mode 100644 public/admin/assets/fonts/Nunito-Regular.woff create mode 100644 public/admin/assets/fonts/Nunito-SemiBold.woff create mode 100644 public/admin/assets/fonts/dripicons-v2.woff create mode 100644 public/admin/assets/fonts/materialdesignicons-webfont.woff2 create mode 100644 public/admin/assets/fonts/unicons.woff2 delete mode 100644 public/admin/assets/images/avatars/profile.jpg delete mode 100644 public/admin/assets/images/avatars/team1.jpg delete mode 100644 public/admin/assets/images/avatars/team2.png delete mode 100644 public/admin/assets/images/avatars/team3.png delete mode 100644 public/admin/assets/images/avatars/team4.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces1.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces10.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces11.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces12.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces13.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces14.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces15.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces16.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces17.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces18.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces19.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces2.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces20.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces21.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces22.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces3.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces4.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces5.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces6.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces7.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces8.jpg delete mode 100644 public/admin/assets/images/avatars/uifaces9.jpg delete mode 100644 public/admin/assets/images/avatars/unknown-profile.jpg delete mode 100644 public/admin/assets/images/brand-accent-inverse.png delete mode 100644 public/admin/assets/images/brand-accent.png delete mode 100644 public/admin/assets/images/brand-inverse.png delete mode 100644 public/admin/assets/images/brand.png create mode 100644 public/admin/assets/images/brands/bitbucket.png create mode 100644 public/admin/assets/images/brands/dribbble.png create mode 100644 public/admin/assets/images/brands/dropbox.png create mode 100644 public/admin/assets/images/brands/g-suite.png create mode 100644 public/admin/assets/images/brands/github.png create mode 100644 public/admin/assets/images/brands/slack.png delete mode 100644 public/admin/assets/images/dummy/img-1-lg.jpg delete mode 100644 public/admin/assets/images/dummy/img-1.jpg delete mode 100644 public/admin/assets/images/dummy/img-2-lg.jpg delete mode 100644 public/admin/assets/images/dummy/img-2.jpg delete mode 100644 public/admin/assets/images/dummy/img-3-lg.jpg delete mode 100644 public/admin/assets/images/dummy/img-3.jpg delete mode 100644 public/admin/assets/images/dummy/img-4-lg.jpg delete mode 100644 public/admin/assets/images/dummy/img-4.jpg delete mode 100644 public/admin/assets/images/dummy/img-5-lg.jpg delete mode 100644 public/admin/assets/images/dummy/img-5.jpg delete mode 100644 public/admin/assets/images/dummy/img-6-lg.jpg delete mode 100644 public/admin/assets/images/dummy/img-6.jpg delete mode 100644 public/admin/assets/images/dummy/img-7-lg.jpg delete mode 100644 public/admin/assets/images/dummy/img-7.jpg delete mode 100644 public/admin/assets/images/dummy/img-8.jpg create mode 100644 public/admin/assets/images/flags/germany.jpg create mode 100644 public/admin/assets/images/flags/us.jpg delete mode 100644 public/admin/assets/images/illustration/img-1.png delete mode 100644 public/admin/assets/images/illustration/img-2.png delete mode 100644 public/admin/assets/images/illustration/img-3.png delete mode 100644 public/admin/assets/images/illustration/img-4.png delete mode 100644 public/admin/assets/images/illustration/img-5.png delete mode 100644 public/admin/assets/images/illustration/img-6.png delete mode 100644 public/admin/assets/images/illustration/img-7.png delete mode 100644 public/admin/assets/images/illustration/img-8.png create mode 100644 public/admin/assets/images/users/avatar-1.jpg delete mode 100644 public/admin/assets/javascript/pages/atwho-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/board-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/chartjs-bar-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/chartjs-others-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/chartjs-radar-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/chartjs-scatter-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/colorpicker-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/conversations-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/cookieconsent-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/dashboard-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/datatables-filters.min.js delete mode 100644 public/admin/assets/javascript/pages/easypiechart-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/flatpickr-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/jstree-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/knob-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/photoswipe-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/plyr-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/profile-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/quill-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/select2-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/session-timeout-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/slider-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/sortable-nestable-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/sparkline-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/spinner-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/table-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/toastr-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/treeview-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/tribute-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/typeahead-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/uploader-demo.min.js delete mode 100644 public/admin/assets/javascript/pages/user-settings-demo.min.js delete mode 100644 public/admin/assets/javascript/particles-comingsoon.json delete mode 100644 public/admin/assets/javascript/particles-error.json delete mode 100644 public/admin/assets/javascript/particles.json delete mode 100644 public/admin/assets/javascript/theme.min.js create mode 100644 public/admin/assets/js/app.min.css create mode 100644 public/admin/assets/js/app.min.js create mode 100644 public/admin/assets/js/vendor.min.js create mode 100644 public/admin/assets/js/vendor/dataTables.bootstrap5.js create mode 100644 public/admin/assets/js/vendor/dataTables.checkboxes.min.js create mode 100644 public/admin/assets/js/vendor/dataTables.responsive.min.js create mode 100644 public/admin/assets/js/vendor/jquery.dataTables.min.js create mode 100644 public/admin/assets/js/vendor/responsive.bootstrap5.min.js delete mode 100644 public/admin/assets/stylesheets/theme.min.css delete mode 100644 public/admin/assets/vendor/at.js/css/jquery.atwho.min.css delete mode 100644 public/admin/assets/vendor/at.js/js/jquery.atwho.min.js delete mode 100644 public/admin/assets/vendor/blueimp-canvas-to-blob/canvas-to-blob.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/css/jquery.fileupload-noscript.css delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/css/jquery.fileupload-ui-noscript.css delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/css/jquery.fileupload-ui.css delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/css/jquery.fileupload.css delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/img/loading.gif delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/img/progressbar.gif delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/cors/jquery.postmessage-transport.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/cors/jquery.xdr-transport.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-angular.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-audio.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-image.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-jquery-ui.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-process.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-ui.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-validate.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload-video.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.fileupload.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/jquery.iframe-transport.min.js delete mode 100644 public/admin/assets/vendor/blueimp-file-upload/js/vendor/jquery.ui.widget.min.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/index.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image-exif-map.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image-exif.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image-fetch.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image-meta.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image-orientation.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image-scale.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image.all.min.js delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image.all.min.js.map delete mode 100644 public/admin/assets/vendor/blueimp-load-image/load-image.js delete mode 100644 public/admin/assets/vendor/blueimp-tmpl/compile.min.js delete mode 100644 public/admin/assets/vendor/blueimp-tmpl/runtime.min.js delete mode 100644 public/admin/assets/vendor/blueimp-tmpl/tmpl.min.js delete mode 100644 public/admin/assets/vendor/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css delete mode 100644 public/admin/assets/vendor/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js delete mode 100644 public/admin/assets/vendor/bootstrap-session-timeout/bootstrap-session-timeout.min.js delete mode 100644 public/admin/assets/vendor/bootstrap-touchspin/jquery.bootstrap-touchspin.min.css delete mode 100644 public/admin/assets/vendor/bootstrap-touchspin/jquery.bootstrap-touchspin.min.js delete mode 100644 public/admin/assets/vendor/bootstrap-treeview/bootstrap-treeview.min.js delete mode 100644 public/admin/assets/vendor/chart.js/Chart.bundle.min.js delete mode 100644 public/admin/assets/vendor/chart.js/Chart.min.js delete mode 100644 public/admin/assets/vendor/clipboard/clipboard.min.js delete mode 100644 public/admin/assets/vendor/cookieconsent/cookieconsent.min.css delete mode 100644 public/admin/assets/vendor/cookieconsent/cookieconsent.min.js delete mode 100644 public/admin/assets/vendor/easy-pie-chart/angular.easypiechart.min.js delete mode 100644 public/admin/assets/vendor/easy-pie-chart/easypiechart.min.js delete mode 100644 public/admin/assets/vendor/easy-pie-chart/jquery.easypiechart.min.js delete mode 100644 public/admin/assets/vendor/flatpickr/flatpickr.min.css delete mode 100644 public/admin/assets/vendor/flatpickr/flatpickr.min.js delete mode 100644 public/admin/assets/vendor/flatpickr/ie.css delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ar.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ar.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/at.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/at.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/be.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/be.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/bg.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/bg.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/bn.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/bn.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/cat.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/cat.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/cs.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/cs.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/cy.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/cy.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/da.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/da.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/de.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/de.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/default.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/default.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/eo.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/eo.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/es.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/es.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/et.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/et.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/fa.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/fa.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/fi.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/fi.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/fr.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/fr.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/gr.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/gr.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/he.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/he.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/hi.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/hi.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/hr.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/hr.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/hu.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/hu.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/id.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/id.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/index.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/index.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/it.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/it.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ja.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ja.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ko.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ko.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/kz.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/kz.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/lt.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/lt.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/lv.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/lv.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/mk.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/mk.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/mn.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/mn.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ms.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ms.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/my.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/my.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/nl.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/nl.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/no.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/no.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/pa.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/pa.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/pl.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/pl.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/pt.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/pt.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ro.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ro.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ru.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/ru.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/si.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/si.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sk.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sk.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sl.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sl.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sq.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sq.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sr.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sr.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sv.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/sv.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/th.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/th.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/tr.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/tr.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/uk.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/uk.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/vn.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/vn.js delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/zh.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/l10n/zh.js delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/confirmDate/confirmDate.css delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/confirmDate/confirmDate.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/confirmDate/confirmDate.js delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/labelPlugin/labelPlugin.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/labelPlugin/labelPlugin.js delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/minMaxTimePlugin.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/minMaxTimePlugin.js delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/monthSelect/monthSelect.css delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/monthSelect/monthSelect.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/monthSelect/monthSelect.js delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/rangePlugin.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/rangePlugin.js delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/scrollPlugin.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/scrollPlugin.js delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/weekSelect/weekSelect.d.ts delete mode 100644 public/admin/assets/vendor/flatpickr/plugins/weekSelect/weekSelect.js delete mode 100644 public/admin/assets/vendor/flatpickr/themes/airbnb.css delete mode 100644 public/admin/assets/vendor/flatpickr/themes/confetti.css delete mode 100644 public/admin/assets/vendor/flatpickr/themes/dark.css delete mode 100644 public/admin/assets/vendor/flatpickr/themes/light.css delete mode 100644 public/admin/assets/vendor/flatpickr/themes/material_blue.css delete mode 100644 public/admin/assets/vendor/flatpickr/themes/material_green.css delete mode 100644 public/admin/assets/vendor/flatpickr/themes/material_orange.css delete mode 100644 public/admin/assets/vendor/flatpickr/themes/material_red.css delete mode 100644 public/admin/assets/vendor/fontawesome/css/all.css delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-brands-400.eot delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-brands-400.svg delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-brands-400.ttf delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-brands-400.woff delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-brands-400.woff2 delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-regular-400.eot delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-regular-400.svg delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-regular-400.ttf delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-regular-400.woff delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-regular-400.woff2 delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-solid-900.eot delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-solid-900.svg delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-solid-900.ttf delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-solid-900.woff delete mode 100644 public/admin/assets/vendor/fontawesome/webfonts/fa-solid-900.woff2 delete mode 100644 public/admin/assets/vendor/handlebars/handlebars.amd.min.js delete mode 100644 public/admin/assets/vendor/handlebars/handlebars.min.js delete mode 100644 public/admin/assets/vendor/handlebars/handlebars.runtime.amd.min.js delete mode 100644 public/admin/assets/vendor/handlebars/handlebars.runtime.min.js delete mode 100644 public/admin/assets/vendor/jquery-countdown/jquery.countdown.min.js delete mode 100644 public/admin/assets/vendor/jquery-knob/jquery.knob.min.js delete mode 100644 public/admin/assets/vendor/jquery-sparkline/jquery.sparkline.min.js delete mode 100644 public/admin/assets/vendor/jquery.caret/jquery.caret.min.js delete mode 100644 public/admin/assets/vendor/jstree/jstree.min.js delete mode 100644 public/admin/assets/vendor/jstree/themes/default-dark/32px.png delete mode 100644 public/admin/assets/vendor/jstree/themes/default-dark/40px.png delete mode 100644 public/admin/assets/vendor/jstree/themes/default-dark/style.min.css delete mode 100644 public/admin/assets/vendor/jstree/themes/default-dark/throbber.gif delete mode 100644 public/admin/assets/vendor/jstree/themes/default/32px.png delete mode 100644 public/admin/assets/vendor/jstree/themes/default/40px.png delete mode 100644 public/admin/assets/vendor/jstree/themes/default/style.min.css delete mode 100644 public/admin/assets/vendor/jstree/themes/default/throbber.gif delete mode 100644 public/admin/assets/vendor/masonry-layout/masonry.pkgd.min.js delete mode 100644 public/admin/assets/vendor/nestable2/jquery.nestable.min.css delete mode 100644 public/admin/assets/vendor/nestable2/jquery.nestable.min.js delete mode 100644 public/admin/assets/vendor/nouislider/nouislider.min.css delete mode 100644 public/admin/assets/vendor/nouislider/nouislider.min.js delete mode 100644 public/admin/assets/vendor/nouislider/wNumb.js delete mode 100644 public/admin/assets/vendor/open-iconic/css/open-iconic-bootstrap.min.css delete mode 100644 public/admin/assets/vendor/open-iconic/fonts/open-iconic.eot delete mode 100644 public/admin/assets/vendor/open-iconic/fonts/open-iconic.otf delete mode 100644 public/admin/assets/vendor/open-iconic/fonts/open-iconic.svg delete mode 100644 public/admin/assets/vendor/open-iconic/fonts/open-iconic.ttf delete mode 100644 public/admin/assets/vendor/open-iconic/fonts/open-iconic.woff delete mode 100644 public/admin/assets/vendor/particles.js/particles.min.js delete mode 100644 public/admin/assets/vendor/photoswipe/photoswipe-skin/default-skin.css delete mode 100644 public/admin/assets/vendor/photoswipe/photoswipe-skin/default-skin.png delete mode 100644 public/admin/assets/vendor/photoswipe/photoswipe-skin/default-skin.svg delete mode 100644 public/admin/assets/vendor/photoswipe/photoswipe-skin/preloader.gif delete mode 100644 public/admin/assets/vendor/photoswipe/photoswipe-ui-default.min.js delete mode 100644 public/admin/assets/vendor/photoswipe/photoswipe.css delete mode 100644 public/admin/assets/vendor/photoswipe/photoswipe.min.js delete mode 100644 public/admin/assets/vendor/plyr/blank.mp4 delete mode 100644 public/admin/assets/vendor/plyr/plyr.css delete mode 100644 public/admin/assets/vendor/plyr/plyr.js.map delete mode 100644 public/admin/assets/vendor/plyr/plyr.min.js delete mode 100644 public/admin/assets/vendor/plyr/plyr.min.js.map delete mode 100644 public/admin/assets/vendor/plyr/plyr.polyfilled.min.js delete mode 100644 public/admin/assets/vendor/plyr/plyr.polyfilled.min.js.map delete mode 100644 public/admin/assets/vendor/plyr/plyr.svg delete mode 100644 public/admin/assets/vendor/select2/css/select2.css delete mode 100644 public/admin/assets/vendor/select2/css/select2.min.css delete mode 100644 public/admin/assets/vendor/select2/js/i18n/af.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ar.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/az.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/bg.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/bs.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/build.txt delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ca.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/cs.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/da.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/de.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/dsb.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/el.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/en.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/es.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/et.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/eu.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/fa.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/fi.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/fr.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/gl.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/he.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/hi.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/hr.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/hsb.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/hu.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/hy.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/id.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/is.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/it.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ja.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/km.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ko.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/lt.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/lv.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/mk.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ms.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/nb.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/nl.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/pl.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ps.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/pt-BR.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/pt.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ro.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/ru.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/sk.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/sl.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/sr-Cyrl.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/sr.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/sv.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/th.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/tk.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/tr.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/uk.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/vi.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/zh-CN.js delete mode 100644 public/admin/assets/vendor/select2/js/i18n/zh-TW.js delete mode 100644 public/admin/assets/vendor/select2/js/select2.full.min.js delete mode 100644 public/admin/assets/vendor/select2/js/select2.min.js delete mode 100644 public/admin/assets/vendor/sortablejs/Sortable.min.js delete mode 100644 public/admin/assets/vendor/stacked-menu/amd/stacked-menu.min.js delete mode 100644 public/admin/assets/vendor/stacked-menu/amd/stacked-menu.min.js.map delete mode 100644 public/admin/assets/vendor/stacked-menu/commonjs/stacked-menu.min.js delete mode 100644 public/admin/assets/vendor/stacked-menu/commonjs/stacked-menu.min.js.map delete mode 100644 public/admin/assets/vendor/stacked-menu/es6/stacked-menu.min.js delete mode 100644 public/admin/assets/vendor/stacked-menu/es6/stacked-menu.min.js.map delete mode 100644 public/admin/assets/vendor/stacked-menu/stacked-menu.jquery.js delete mode 100644 public/admin/assets/vendor/stacked-menu/stacked-menu.min.js delete mode 100644 public/admin/assets/vendor/stacked-menu/stacked-menu.min.js.map delete mode 100644 public/admin/assets/vendor/stacked-menu/umd/stacked-menu.min.js delete mode 100644 public/admin/assets/vendor/stacked-menu/umd/stacked-menu.min.js.map delete mode 100644 public/admin/assets/vendor/tablesaw/dist/stackonly/tablesaw.stackonly.css delete mode 100644 public/admin/assets/vendor/tablesaw/dist/stackonly/tablesaw.stackonly.jquery.js delete mode 100644 public/admin/assets/vendor/tablesaw/dist/stackonly/tablesaw.stackonly.js delete mode 100644 public/admin/assets/vendor/tablesaw/dist/stackonly/tablesaw.stackonly.scss delete mode 100644 public/admin/assets/vendor/tablesaw/dist/tablesaw-init.js delete mode 100644 public/admin/assets/vendor/tablesaw/dist/tablesaw.css delete mode 100644 public/admin/assets/vendor/tablesaw/dist/tablesaw.jquery.js delete mode 100644 public/admin/assets/vendor/tablesaw/dist/tablesaw.js delete mode 100644 public/admin/assets/vendor/toastr/toastr.js.map delete mode 100644 public/admin/assets/vendor/toastr/toastr.min.css delete mode 100644 public/admin/assets/vendor/toastr/toastr.min.js delete mode 100644 public/admin/assets/vendor/tributejs/TributeEvents.js delete mode 100644 public/admin/assets/vendor/tributejs/TributeMenuEvents.js delete mode 100644 public/admin/assets/vendor/tributejs/TributeRange.js delete mode 100644 public/admin/assets/vendor/tributejs/TributeSearch.js delete mode 100644 public/admin/assets/vendor/tributejs/index.js delete mode 100644 public/admin/assets/vendor/tributejs/tribute.css delete mode 100644 public/admin/assets/vendor/tributejs/tribute.min.js delete mode 100644 public/admin/assets/vendor/tributejs/utils.js delete mode 100644 public/admin/assets/vendor/typeahead.js/bloodhound.min.js delete mode 100644 public/admin/assets/vendor/typeahead.js/typeahead.bundle.min.js delete mode 100644 public/admin/assets/vendor/typeahead.js/typeahead.jquery.min.js create mode 100644 public/iot/favicon.ico create mode 100644 public/paas/favicon.ico create mode 100644 public/payment/favicon.ico create mode 100644 public/store/favicon.ico delete mode 100644 vendor/Hook/Db/YacConnect.php diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..dc64c769 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,514 @@ +#!/bin/sh +tee /etc/apt/sources.list < /etc/apt/sources.list.d/openresty.list + +wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb && +dpkg -i mysql-apt-config_0.8.22-1_all.deb && +rm mysql-apt-config_0.8.22-1_all.deb + +wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | apt-key add - && +echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-5.0.list + +apt-get update -y + +apt-get install -y erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssl erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl rabbitmq-server +apt-get install -y php8.1-common php8.1-cli php8.1-bcmath php8.1-dev php8.1-xml php8.1-opcache php8.1-mbstring php8.1-mysql php8.1-fpm php8.1-gd php8.1-zip php8.1-curl php8.1-int +apt-get install -y "openresty*" mysql-server redis mongodb-org + +pear install PHP_CodeSniffer + +pip config set global.index-url https://mirrors.aliyun.com/pypi/simple && +pip config set global.trusted-host mirrors.aliyun.com && +pip install supervisor && +echo_supervisord_conf > /etc/supervisord.conf && +sed -i 's/;\[inet_http_server]/\[inet_http_server]/' /etc/supervisord.conf && +sed -i 's/;port=127.0.0.1/port=*/' /etc/supervisord.conf && +sed -i 's/;\[include]/\[include]/' /etc/supervisord.conf && +sed -i 's#;files = relative/directory/\*\.ini#files = /etc/supervisor/conf.d/*.conf#' /etc/supervisord.conf && +mkdir -vp /etc/supervisor/conf.d/ + +wget https://github.com/alanxz/rabbitmq-c/archive/refs/tags/v0.11.0.zip && +unzip v0.11.0.zip && +rm v0.11.0.zip && +cd rabbitmq-c-0.11.0 && +mkdir build && +cd build && +cmake .. && +cmake --build . && +cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. && +cmake --build . --target install && +rm -rf /rabbitmq-c-0.11.0/ + +pecl channel-update pecl.php.net + +pecl install msgpack +pecl install igbinary +pecl install lzf +pecl install zstd +pecl install amqp +pecl install yaf +pecl install apcu +pecl install mongodb +pecl install seaslog +pecl install xhprof +pecl install redis + +tee /etc/supervisor/conf.d/hookphp.conf <" > phpinfo.php + +tee -a /etc/hosts < 'redispasswordhere'#'auth' => '123456'#" includes/config.sample.inc.php && +git clone https://gitee.com/mirrors/predis.git vendor && +cd ../ + +mysql -uroot -p123456 -e 'CREATE DATABASE `hookphp` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;SET GLOBAL AUTOCOMMIT=0' + +cd HookPHP +chmod 777 -R log +composer install +php app/admin/bin/install.php +php app/iot/bin/install.php +php app/paas/bin/install.php +php app/payment/bin/install.php +php app/store/bin/install.php +cd ../ + +git clone https://gitee.com/mirrors/oh-my-zsh.git ~/.oh-my-zsh && +cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc && +apt-get clean && +apt-get autoclean && +zsh && +pwd && +ll diff --git a/README.md b/README.md index 38b656c2..7c4fc83e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,16 @@ [English](./README.md) | 中文 [![Latest Stable Version](https://poser.pugx.org/letwang/hookphp/v/stable)](https://packagist.org/packages/letwang/hookphp) -[![PHP Version](https://img.shields.io/badge/php-%3E%3D7.4-8892BF.svg)](http://www.php.net/) +[![PHP Version](https://img.shields.io/badge/php-%3E%3D8.1-8892BF.svg)](http://www.php.net/) [![License](https://poser.pugx.org/letwang/hookphp/license)](https://packagist.org/packages/letwang/hookphp) # HookPHP [HookPHP是基于C扩展搭建内置AI编程的架构系统-支持微服务部署|热插拔业务组件-集成业务模型|权限模型|UI组件库|多模板|多平台|多域名|多终端|多语言-含常驻内存|前后分离|API平台|LUA](https://my.oschina.net/cart/blog/2986804) +![HookPHP演示](https://raw.githubusercontent.com/letwang/HookPHP/master/doc/images/1.png) +![HookPHP架构](https://raw.githubusercontent.com/letwang/HookPHP/master/doc/images/architecture.png) + ## 安装 [https://github.com/letwang/HookPHP/wiki](https://github.com/letwang/HookPHP/wiki) @@ -21,14 +24,10 @@ ## 开发 -- __[架构](https://github.com/letwang/HookPHP/blob/master/demo/architecture.png?raw=true)__ -- __[演示](https://github.com/letwang/HookPHP/blob/master/demo/1.png?raw=true)__ - __[文档](https://github.com/letwang/HookPHP/wiki)__ - __[开发 平台](https://github.com/letwang/HookPHP/blob/master/app/)__ - __[开发 模块](https://github.com/letwang/HookPHP/blob/master/app/admin/modules/)__ - __[开发 插件](https://github.com/letwang/HookPHP/blob/master/app/admin/hooks/)__ -- __[社区 QQ](https://github.com/letwang/HookPHP/blob/master/demo/qq.jpg?raw=true)__ -- __[社区 知识星球](https://github.com/letwang/HookPHP/blob/master/demo/zsxq.png?raw=true)__ ## 贡献 @@ -48,6 +47,13 @@ 如果您看好HookPHP,请点击右上角的Star,让更多的人使用,一起腾飞! +

+ 支付宝赞助 + 微信赞助 + HookPHP QQ社区 + HookPHP知识星球社区 +

+ ## 协议 [Apache License Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) diff --git a/Start b/Start new file mode 100644 index 00000000..b73377c2 --- /dev/null +++ b/Start @@ -0,0 +1,26 @@ +#!/bin/sh +sed -i 's/index.php$1/index.php?$1/' /etc/openresty/conf.d/hookphp.conf +service openresty start + +service php8.1-fpm start + +service redis-server start + +service rabbitmq-server start +rabbitmq-plugins enable rabbitmq_management rabbitmq_shovel rabbitmq_shovel_management && +rabbitmqctl add_user admin 123456 && +rabbitmqctl set_user_tags admin administrator && +rabbitmqctl set_permissions -p / admin '.*' '.*' '.*' && +rabbitmqctl delete_user guest + +mysqld --user=root & + +mongod -f /etc/mongod.conf & + +supervisord -c /etc/supervisord.conf + +composer update + +chmod 777 -R ./log + +zsh diff --git a/apc.php b/apc.php new file mode 100644 index 00000000..5b4130aa --- /dev/null +++ b/apc.php @@ -0,0 +1,1148 @@ + | + | Rasmus Lerdorf | + | Ilia Alshanetsky | + +----------------------------------------------------------------------+ + All other licensing and usage conditions are those of the PHP Group. + */ + +////////// READ OPTIONAL CONFIGURATION FILE //////////// +if (file_exists("apc.conf.php")) include("apc.conf.php"); +//////////////////////////////////////////////////////// + +////////// BEGIN OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////// + +defaults('USE_AUTHENTICATION',0); // Use (internal) authentication - best choice if +// no other authentication is available +// If set to 0: +// There will be no further authentication. You +// will have to handle this by yourself! +// If set to 1: +// You need to change ADMIN_PASSWORD to make +// this work! +defaults('ADMIN_USERNAME','apc'); // Admin Username +defaults('ADMIN_PASSWORD','password'); // Admin Password - CHANGE THIS TO ENABLE!!! + +// (beckerr) I'm using a clear text password here, because I've no good idea how to let +// users generate a md5 or crypt password in a easy way to fill it in above + +//defaults('DATE_FORMAT', "d.m.Y H:i:s"); // German +defaults('DATE_FORMAT', 'Y/m/d H:i:s'); // US + +defaults('GRAPH_SIZE',200); // Image size + +//defaults('PROXY', 'tcp://127.0.0.1:8080'); + +////////// END OF DEFAULT CONFIG AREA ///////////////////////////////////////////////////////////// + + +// "define if not defined" +function defaults($d,$v) { + if (!defined($d)) define($d,$v); // or just @define(...) +} + +// rewrite $PHP_SELF to block XSS attacks +// +$PHP_SELF= isset($_SERVER['PHP_SELF']) ? htmlentities(strip_tags($_SERVER['PHP_SELF'],''), ENT_QUOTES, 'UTF-8') : ''; +$time = time(); +$host = php_uname('n'); +if($host) { $host = '('.$host.')'; } +if (isset($_SERVER['SERVER_ADDR'])) { + $host .= ' ('.$_SERVER['SERVER_ADDR'].')'; +} + +// operation constants +define('OB_HOST_STATS',1); +define('OB_USER_CACHE',2); +define('OB_VERSION_CHECK',3); + +// check validity of input variables +$vardom=array( + 'OB' => '/^\d+$/', // operational mode switch + 'CC' => '/^[01]$/', // clear cache requested + 'DU' => '/^.*$/', // Delete User Key + 'SH' => '/^[a-z0-9]+$/', // shared object description + + 'IMG' => '/^[123]$/', // image to generate + 'LO' => '/^1$/', // login requested + + 'COUNT' => '/^\d+$/', // number of line displayed in list + 'SCOPE' => '/^[AD]$/', // list view scope + 'SORT1' => '/^[AHSMCDTZ]$/', // first sort key + 'SORT2' => '/^[DA]$/', // second sort key + 'AGGR' => '/^\d+$/', // aggregation by dir level + 'SEARCH' => '~^[a-zA-Z0-9/_.-]*$~' // aggregation by dir level +); + +// cache scope +$scope_list=array( + 'A' => 'cache_list', + 'D' => 'deleted_list' +); + +// handle POST and GET requests +if (empty($_REQUEST)) { + if (!empty($_GET) && !empty($_POST)) { + $_REQUEST = array_merge($_GET, $_POST); + } else if (!empty($_GET)) { + $_REQUEST = $_GET; + } else if (!empty($_POST)) { + $_REQUEST = $_POST; + } else { + $_REQUEST = array(); + } +} + +// check parameter syntax +foreach($vardom as $var => $dom) { + if (!isset($_REQUEST[$var])) { + $MYREQUEST[$var]=null; + } else if (!is_array($_REQUEST[$var]) && preg_match($dom.'D',$_REQUEST[$var])) { + $MYREQUEST[$var]=$_REQUEST[$var]; + } else { + $MYREQUEST[$var]=$_REQUEST[$var]=null; + } +} + +// check parameter semantics +if (empty($MYREQUEST['SCOPE'])) $MYREQUEST['SCOPE']="A"; +if (empty($MYREQUEST['SORT1'])) $MYREQUEST['SORT1']="H"; +if (empty($MYREQUEST['SORT2'])) $MYREQUEST['SORT2']="D"; +if (empty($MYREQUEST['OB'])) $MYREQUEST['OB']=OB_HOST_STATS; +if (!isset($MYREQUEST['COUNT'])) $MYREQUEST['COUNT']=20; +if (!isset($scope_list[$MYREQUEST['SCOPE']])) $MYREQUEST['SCOPE']='A'; + +$MY_SELF= + "$PHP_SELF". + "?SCOPE=".$MYREQUEST['SCOPE']. + "&SORT1=".$MYREQUEST['SORT1']. + "&SORT2=".$MYREQUEST['SORT2']. + "&COUNT=".$MYREQUEST['COUNT']; +$MY_SELF_WO_SORT= + "$PHP_SELF". + "?SCOPE=".$MYREQUEST['SCOPE']. + "&COUNT=".$MYREQUEST['COUNT']; + +// authentication needed? +// +if (!USE_AUTHENTICATION) { + $AUTHENTICATED=1; +} else { + $AUTHENTICATED=0; + if (ADMIN_PASSWORD!='password' && ($MYREQUEST['LO'] == 1 || isset($_SERVER['PHP_AUTH_USER']))) { + + if (!isset($_SERVER['PHP_AUTH_USER']) || + !isset($_SERVER['PHP_AUTH_PW']) || + $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME || + $_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) { + Header("WWW-Authenticate: Basic realm=\"APC Login\""); + Header("HTTP/1.0 401 Unauthorized"); + + echo << +

Rejected!

+ Wrong Username or Password!
 
  + Continue... + +EOB; + exit; + + } else { + $AUTHENTICATED=1; + } + } +} + +// clear cache +if ($AUTHENTICATED && isset($MYREQUEST['CC']) && $MYREQUEST['CC']) { + apcu_clear_cache(); +} + +if ($AUTHENTICATED && !empty($MYREQUEST['DU'])) { + apcu_delete($MYREQUEST['DU']); +} + +if(!function_exists('apcu_cache_info')) { + echo "No cache info available. APC does not appear to be running."; + exit; +} + +$cache = apcu_cache_info(); + +$mem=apcu_sma_info(); + +// don't cache this page +// +header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); // HTTP/1.0 + +function duration($ts) { + global $time; + $years = (int)((($time - $ts)/(7*86400))/52.177457); + $rem = (int)(($time-$ts)-($years * 52.177457 * 7 * 86400)); + $weeks = (int)(($rem)/(7*86400)); + $days = (int)(($rem)/86400) - $weeks*7; + $hours = (int)(($rem)/3600) - $days*24 - $weeks*7*24; + $mins = (int)(($rem)/60) - $hours*60 - $days*24*60 - $weeks*7*24*60; + $str = ''; + if($years==1) $str .= "$years year, "; + if($years>1) $str .= "$years years, "; + if($weeks==1) $str .= "$weeks week, "; + if($weeks>1) $str .= "$weeks weeks, "; + if($days==1) $str .= "$days day,"; + if($days>1) $str .= "$days days,"; + if($hours == 1) $str .= " $hours hour and"; + if($hours>1) $str .= " $hours hours and"; + if($mins == 1) $str .= " 1 minute"; + else $str .= " $mins minutes"; + return $str; +} + +// create graphics +// +function graphics_avail() { + return extension_loaded('gd'); +} +if (isset($MYREQUEST['IMG'])) +{ + if (!graphics_avail()) { + exit(0); + } + + function fill_arc($im, $centerX, $centerY, $diameter, $start, $end, $color1,$color2,$text='',$placeindex=0) { + $r=$diameter/2; + $w=deg2rad((360+$start+($end-$start)/2)%360); + + + if (function_exists("imagefilledarc")) { + // exists only if GD 2.0.1 is available + imagefilledarc($im, $centerX+1, $centerY+1, $diameter, $diameter, $start, $end, $color1, IMG_ARC_PIE); + imagefilledarc($im, $centerX, $centerY, $diameter, $diameter, $start, $end, $color2, IMG_ARC_PIE); + imagefilledarc($im, $centerX, $centerY, $diameter, $diameter, $start, $end, $color1, IMG_ARC_NOFILL|IMG_ARC_EDGED); + } else { + imagearc($im, $centerX, $centerY, $diameter, $diameter, $start, $end, $color2); + imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($start)) * $r, $centerY + sin(deg2rad($start)) * $r, $color2); + imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($start+1)) * $r, $centerY + sin(deg2rad($start)) * $r, $color2); + imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($end-1)) * $r, $centerY + sin(deg2rad($end)) * $r, $color2); + imageline($im, $centerX, $centerY, $centerX + cos(deg2rad($end)) * $r, $centerY + sin(deg2rad($end)) * $r, $color2); + imagefill($im,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2, $color2); + } + if ($text) { + if ($placeindex>0) { + imageline($im,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$diameter, $placeindex*12,$color1); + imagestring($im,4,$diameter, $placeindex*12,$text,$color1); + + } else { + imagestring($im,4,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$text,$color1); + } + } + } + + function text_arc($im, $centerX, $centerY, $diameter, $start, $end, $color1,$text,$placeindex=0) { + $r=$diameter/2; + $w=deg2rad((360+$start+($end-$start)/2)%360); + + if ($placeindex>0) { + imageline($im,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$diameter, $placeindex*12,$color1); + imagestring($im,4,$diameter, $placeindex*12,$text,$color1); + + } else { + imagestring($im,4,$centerX + $r*cos($w)/2, $centerY + $r*sin($w)/2,$text,$color1); + } + } + + function fill_box($im, $x, $y, $w, $h, $color1, $color2,$text='',$placeindex='') { + global $col_black; + $x1=$x+$w-1; + $y1=$y+$h-1; + + imagerectangle($im, $x, $y1, $x1+1, $y+1, $col_black); + if($y1>$y) imagefilledrectangle($im, $x, $y, $x1, $y1, $color2); + else imagefilledrectangle($im, $x, $y1, $x1, $y, $color2); + imagerectangle($im, $x, $y1, $x1, $y, $color1); + if ($text) { + if ($placeindex>0) { + + if ($placeindex<16) + { + $px=5; + $py=$placeindex*12+6; + imagefilledrectangle($im, $px+90, $py+3, $px+90-4, $py-3, $color2); + imageline($im,$x,$y+$h/2,$px+90,$py,$color2); + imagestring($im,2,$px,$py-6,$text,$color1); + + } else { + if ($placeindex<31) { + $px=$x+40*2; + $py=($placeindex-15)*12+6; + } else { + $px=$x+40*2+100*intval(($placeindex-15)/15); + $py=($placeindex%15)*12+6; + } + imagefilledrectangle($im, $px, $py+3, $px-4, $py-3, $color2); + imageline($im,$x+$w,$y+$h/2,$px,$py,$color2); + imagestring($im,2,$px+2,$py-6,$text,$color1); + } + } else { + imagestring($im,4,$x+5,$y1-16,$text,$color1); + } + } + } + + + $size = GRAPH_SIZE; // image size + if ($MYREQUEST['IMG']==3) + $image = imagecreate(2*$size+150, $size+10); + else + $image = imagecreate($size+50, $size+10); + + $col_white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF); + $col_red = imagecolorallocate($image, 0xD0, 0x60, 0x30); + $col_green = imagecolorallocate($image, 0x60, 0xF0, 0x60); + $col_black = imagecolorallocate($image, 0, 0, 0); + imagecolortransparent($image,$col_white); + + switch ($MYREQUEST['IMG']) { + + case 1: + $s=$mem['num_seg']*$mem['seg_size']; + $a=$mem['avail_mem']; + $x=$y=$size/2; + $fuzz = 0.000001; + + // This block of code creates the pie chart. It is a lot more complex than you + // would expect because we try to visualize any memory fragmentation as well. + $angle_from = 0; + $string_placement=array(); + for($i=0; $i<$mem['num_seg']; $i++) { + $ptr = 0; + $free = $mem['block_lists'][$i]; + uasort($free, 'block_sort'); + foreach($free as $block) { + if($block['offset']!=$ptr) { // Used block + $angle_to = $angle_from+($block['offset']-$ptr)/$s; + if(($angle_to+$fuzz)>1) $angle_to = 1; + if( ($angle_to*360) - ($angle_from*360) >= 1) { + fill_arc($image,$x,$y,$size,$angle_from*360,$angle_to*360,$col_black,$col_red); + if (($angle_to-$angle_from)>0.05) { + array_push($string_placement, array($angle_from,$angle_to)); + } + } + $angle_from = $angle_to; + } + $angle_to = $angle_from+($block['size'])/$s; + if(($angle_to+$fuzz)>1) $angle_to = 1; + if( ($angle_to*360) - ($angle_from*360) >= 1) { + fill_arc($image,$x,$y,$size,$angle_from*360,$angle_to*360,$col_black,$col_green); + if (($angle_to-$angle_from)>0.05) { + array_push($string_placement, array($angle_from,$angle_to)); + } + } + $angle_from = $angle_to; + $ptr = $block['offset']+$block['size']; + } + if ($ptr < $mem['seg_size']) { // memory at the end + $angle_to = $angle_from + ($mem['seg_size'] - $ptr)/$s; + if(($angle_to+$fuzz)>1) $angle_to = 1; + fill_arc($image,$x,$y,$size,$angle_from*360,$angle_to*360,$col_black,$col_red); + if (($angle_to-$angle_from)>0.05) { + array_push($string_placement, array($angle_from,$angle_to)); + } + } + } + foreach ($string_placement as $angle) { + text_arc($image,$x,$y,$size,$angle[0]*360,$angle[1]*360,$col_black,bsize($s*($angle[1]-$angle[0]))); + } + break; + + case 2: + $s=$cache['num_hits']+$cache['num_misses']; + $a=$cache['num_hits']; + + fill_box($image, 30,$size,50,$s ? (-$a*($size-21)/$s) : 0,$col_black,$col_green,sprintf("%.1f%%",$s ? $cache['num_hits']*100/$s : 0)); + fill_box($image,130,$size,50,$s ? -max(4,($s-$a)*($size-21)/$s) : 0,$col_black,$col_red,sprintf("%.1f%%",$s ? $cache['num_misses']*100/$s : 0)); + break; + + case 3: + $s=$mem['num_seg']*$mem['seg_size']; + $a=$mem['avail_mem']; + $x=130; + $y=1; + $j=1; + + // This block of code creates the bar chart. It is a lot more complex than you + // would expect because we try to visualize any memory fragmentation as well. + for($i=0; $i<$mem['num_seg']; $i++) { + $ptr = 0; + $free = $mem['block_lists'][$i]; + uasort($free, 'block_sort'); + foreach($free as $block) { + if($block['offset']!=$ptr) { // Used block + $h=(GRAPH_SIZE-5)*($block['offset']-$ptr)/$s; + if ($h>0) { + $j++; + if($j<75) fill_box($image,$x,$y,50,$h,$col_black,$col_red,bsize($block['offset']-$ptr),$j); + else fill_box($image,$x,$y,50,$h,$col_black,$col_red); + } + $y+=$h; + } + $h=(GRAPH_SIZE-5)*($block['size'])/$s; + if ($h>0) { + $j++; + if($j<75) fill_box($image,$x,$y,50,$h,$col_black,$col_green,bsize($block['size']),$j); + else fill_box($image,$x,$y,50,$h,$col_black,$col_green); + } + $y+=$h; + $ptr = $block['offset']+$block['size']; + } + if ($ptr < $mem['seg_size']) { // memory at the end + $h = (GRAPH_SIZE-5) * ($mem['seg_size'] - $ptr) / $s; + if ($h > 0) { + fill_box($image,$x,$y,50,$h,$col_black,$col_red,bsize($mem['seg_size']-$ptr),$j++); + } + } + } + break; + + case 4: + $s=$cache['num_hits']+$cache['num_misses']; + $a=$cache['num_hits']; + + fill_box($image, 30,$size,50,$s ? -$a*($size-21)/$s : 0,$col_black,$col_green,sprintf("%.1f%%", $s ? $cache['num_hits']*100/$s : 0)); + fill_box($image,130,$size,50,$s ? -max(4,($s-$a)*($size-21)/$s) : 0,$col_black,$col_red,sprintf("%.1f%%", $s ? $cache['num_misses']*100/$s : 0)); + break; + } + + header("Content-type: image/png"); + imagepng($image); + exit; +} + +// pretty printer for byte values +// +function bsize($s) { + foreach (array('','K','M','G') as $i => $k) { + if ($s < 1024) break; + $s/=1024; + } + return sprintf("%5.1f %sBytes",$s,$k); +} + +// sortable table header in "scripts for this host" view +function sortheader($key,$name,$extra='') { + global $MYREQUEST, $MY_SELF_WO_SORT; + + if ($MYREQUEST['SORT1']==$key) { + $MYREQUEST['SORT2'] = $MYREQUEST['SORT2']=='A' ? 'D' : 'A'; + } + return "$name"; + +} + +// create menu entry +function menu_entry($ob,$title) { + global $MYREQUEST,$MY_SELF; + if ($MYREQUEST['OB']!=$ob) { + return "
  • $title
  • "; + } else if (empty($MYREQUEST['SH'])) { + return "
  • $title
  • "; + } else { + return "
  • $title
  • "; + } +} + +function put_login_link($s="Login") +{ + global $MY_SELF,$MYREQUEST,$AUTHENTICATED; + // needs ADMIN_PASSWORD to be changed! + // + if (!USE_AUTHENTICATION) { + return; + } else if (ADMIN_PASSWORD=='password') + { + print <<$s +EOB; + } else if ($AUTHENTICATED) { + print <<$s +EOB; + } +} + +function block_sort($array1, $array2) +{ + if ($array1['offset'] > $array2['offset']) { + return 1; + } else { + return -1; + } +} + + +?> + + +APCu INFO <?php echo $host ?> + + + +
    +

    + +
    User Cache
    +

    + +
    +
    + + +
  • Refresh Data
  • +EOB; +echo +menu_entry(OB_HOST_STATS,'View Host Stats'), +menu_entry(OB_USER_CACHE,'User Cache Entries'), +menu_entry(OB_VERSION_CHECK,'Version Check'); + +if ($AUTHENTICATED) { + echo <<Clear Cache +EOB; +} +echo << +EOB; + + +// CONTENT +echo << +EOB; + +// MAIN SWITCH STATEMENT + +switch ($MYREQUEST['OB']) { +// ----------------------------------------------- +// Host Stats +// ----------------------------------------------- + case OB_HOST_STATS: + $mem_size = $mem['num_seg']*$mem['seg_size']; + $mem_avail= $mem['avail_mem']; + $mem_used = $mem_size-$mem_avail; + $seg_size = bsize($mem['seg_size']); + $req_rate_user = sprintf("%.2f", $cache['num_hits'] ? (($cache['num_hits']+$cache['num_misses'])/($time-$cache['start_time'])) : 0); + $hit_rate_user = sprintf("%.2f", $cache['num_hits'] ? (($cache['num_hits'])/($time-$cache['start_time'])) : 0); + $miss_rate_user = sprintf("%.2f", $cache['num_misses'] ? (($cache['num_misses'])/($time-$cache['start_time'])) : 0); + $insert_rate_user = sprintf("%.2f", $cache['num_inserts'] ? (($cache['num_inserts'])/($time-$cache['start_time'])) : 0); + $apcversion = phpversion('apcu'); + $phpversion = phpversion(); + $number_vars = $cache['num_entries']; + $size_vars = bsize($cache['mem_size']); + $num_hits_and_misses = $cache['num_hits'] + $cache['num_misses']; + $num_hits_and_misses = 0 >= $num_hits_and_misses ? 1 : $num_hits_and_misses; + $i=0; + echo <<< EOB +

    General Cache Information

    + + + +EOB; + + if(!empty($_SERVER['SERVER_NAME'])) + echo "\n"; + if(!empty($_SERVER['SERVER_SOFTWARE'])) + echo "\n"; + + echo << +EOB; + echo ''; + echo ''; + echo <<
    APCu Version$apcversion
    PHP Version$phpversion
    APCu Host{$_SERVER['SERVER_NAME']} $host
    Server Software{$_SERVER['SERVER_SOFTWARE']}
    Shared Memory{$mem['num_seg']} Segment(s) with $seg_size +
    ({$cache['memory_type']} memory) +
    Start Time',date(DATE_FORMAT,$cache['start_time']),'
    Uptime',duration($cache['start_time']),'
    +
    +

    Cache Information

    + + + + + + + + + + + +
    Cached Variables$number_vars ($size_vars)
    Hits{$cache['num_hits']}
    Misses{$cache['num_misses']}
    Request Rate (hits, misses)$req_rate_user cache requests/second
    Hit Rate$hit_rate_user cache requests/second
    Miss Rate$miss_rate_user cache requests/second
    Insert Rate$insert_rate_user cache requests/second
    Cache full count{$cache['expunges']}
    +
    +

    Runtime Settings

    +EOB; + + $j = 0; + foreach (ini_get_all('apcu') as $k => $v) { + echo "\n"; + $j = 1 - $j; + } + + if($mem['num_seg']>1 || $mem['num_seg']==1 && count($mem['block_lists'][0])>1) + $mem_note = "Memory Usage
    (multiple slices indicate fragments)"; + else + $mem_note = "Memory Usage"; + + echo <<< EOB +
    ",$k,"",str_replace(',',',
    ',$v['local_value']),"
    +
    +

    Host Status Diagrams

    + +EOB; + $size='width='.(GRAPH_SIZE+50).' height='.(GRAPH_SIZE+10); + echo << + + + +EOB; + + echo + graphics_avail() ? + ''. + "". + "\n" + : "", + '', + '\n", + '\n", + '', + '', + '\n", + '\n"; + echo <<< EOB + +
    $mem_noteHits & Misses
    \"\"\"\"
     Free: ',bsize($mem_avail).sprintf(" (%.1f%%)",$mem_avail*100/$mem_size)," Hits: ',$cache['num_hits'].@sprintf(" (%.1f%%)",$cache['num_hits']*100/$num_hits_and_misses),"
     Used: ',bsize($mem_used).sprintf(" (%.1f%%)",$mem_used *100/$mem_size)," Misses: ',$cache['num_misses'].@sprintf(" (%.1f%%)",$cache['num_misses']*100/$num_hits_and_misses),"
    +
    +

    Detailed Memory Usage and Fragmentation

    + + + + +EOB; + if(isset($mem['adist'])) { + foreach($mem['adist'] as $i=>$v) { + $cur = pow(2,$i); $nxt = pow(2,$i+1)-1; + if($i==0) $range = "1"; + else $range = "$cur - $nxt"; + echo "\n"; + } + } + echo <<

    +EOB; + + // Fragementation: (freeseg - 1) / total_seg + $nseg = $freeseg = $fragsize = $freetotal = 0; + for($i=0; $i<$mem['num_seg']; $i++) { + $ptr = 0; + foreach($mem['block_lists'][$i] as $block) { + if ($block['offset'] != $ptr) { + ++$nseg; + } + $ptr = $block['offset'] + $block['size']; + /* Only consider blocks <5M for the fragmentation % */ + if($block['size']<(5*1024*1024)) $fragsize+=$block['size']; + $freetotal+=$block['size']; + } + $freeseg += count($mem['block_lists'][$i]); + } + + if ($freeseg > 1) { + $frag = sprintf("%.2f%% (%s out of %s in %d fragments)", ($fragsize/$freetotal)*100,bsize($fragsize),bsize($freetotal),$freeseg); + } else { + $frag = "0%"; + } + + if (graphics_avail()) { + $size='width='.(2*GRAPH_SIZE+150).' height='.(GRAPH_SIZE+10); + echo << +EOB; + } + echo <<Fragmentation: $frag +
    $range$v
    +
    +EOB; + + break; + + +// ----------------------------------------------- +// User Cache Entries +// ----------------------------------------------- + case OB_USER_CACHE: + if (!$AUTHENTICATED) { + echo '
    You need to login to see the user values here!
     
    '; + put_login_link("Login now!"); + echo '
    '; + break; + } + $fieldname='info'; + $fieldheading='User Entry Label'; + $fieldkey='info'; + + $cols=6; + echo <<
    Scope: + + ", + ", Sorting:', + '', + '', + '  Search: ', + ' ', + '
    '; + + if (isset($MYREQUEST['SEARCH'])) { + // Don't use preg_quote because we want the user to be able to specify a + // regular expression subpattern. + $MYREQUEST['SEARCH_REGEX'] = '/'.str_replace('/', '\\/', $MYREQUEST['SEARCH']).'/i'; + if (preg_match($MYREQUEST['SEARCH_REGEX'], 'test') === false) { + echo '
    Error: enter a valid regular expression as a search query.
    '; + break; + } + } + + echo + '
    ', + '', + '', + '', + '', + '', + '', + ''; + + if($fieldname=='info') { + $cols+=2; + echo ''; + } + echo ''; + + // builds list with alpha numeric sortable keys + // + $list = array(); + + foreach($cache[$scope_list[$MYREQUEST['SCOPE']]] as $i => $entry) { + switch($MYREQUEST['SORT1']) { + case 'A': $k=sprintf('%015d-',$entry['access_time']); break; + case 'H': $k=sprintf('%015d-',$entry['num_hits']); break; + case 'Z': $k=sprintf('%015d-',$entry['mem_size']); break; + case 'M': $k=sprintf('%015d-',$entry['mtime']); break; + case 'C': $k=sprintf('%015d-',$entry['creation_time']); break; + case 'T': $k=sprintf('%015d-',$entry['ttl']); break; + case 'D': $k=sprintf('%015d-',$entry['deletion_time']); break; + case 'S': $k=$entry["info"]; break; + } + if (!$AUTHENTICATED) { + // hide all path entries if not logged in + $list[$k.$entry[$fieldname]]=preg_replace('/^.*(\\/|\\\\)/','*hidden*/',$entry); + } else { + $list[$k.$entry[$fieldname]]=$entry; + } + } + + if ($list) { + // sort list + // + switch ($MYREQUEST['SORT2']) { + case "A": krsort($list); break; + case "D": ksort($list); break; + } + + // output list + $i=0; + foreach($list as $k => $entry) { + if(empty($MYREQUEST['SEARCH_REGEX']) || preg_match($MYREQUEST['SEARCH_REGEX'], $entry[$fieldname]) != 0) { + $sh=md5($entry["info"]); + $field_value = htmlentities(strip_tags($entry[$fieldname],''), ENT_QUOTES, 'UTF-8'); + if ($sh == $MYREQUEST["SH"]) { + $shstr = ""; + } else { + $shstr = "&SH=" . $sh; + } + $href = "$MY_SELF&OB=" . $MYREQUEST['OB'] . (!empty($MYREQUEST['SEARCH']) ? "&SEARCH=" . urlencode($MYREQUEST['SEARCH']) : '') . $shstr . "#key-" . $sh; + echo + '', + "', + '', + '', + '', + '', + ''; + + if($fieldname=='info') { + if($entry['ttl']) { + echo ''; + } else { + echo ''; + } + } + if ($entry['deletion_time']) { + echo ''; + } else if ($MYREQUEST['OB'] == OB_USER_CACHE) { + echo ''; + } else { + echo ''; + } + echo ''; + if ($sh == $MYREQUEST["SH"]) { + echo ''; + echo ''; + echo ''; + } + $i++; + if ($i == $MYREQUEST['COUNT']) { + break; + } + } + } + + } else { + echo ''; + } + echo <<< EOB +
    ',sortheader('S',$fieldheading, "&OB=".$MYREQUEST['OB']),'',sortheader('H','Hits', "&OB=".$MYREQUEST['OB']),'',sortheader('Z','Size', "&OB=".$MYREQUEST['OB']),'',sortheader('A','Last accessed',"&OB=".$MYREQUEST['OB']),'',sortheader('M','Last modified',"&OB=".$MYREQUEST['OB']),'',sortheader('C','Created at', "&OB=".$MYREQUEST['OB']),'',sortheader('T','Timeout',"&OB=".$MYREQUEST['OB']),'',sortheader('D','Deleted at',"&OB=".$MYREQUEST['OB']),'
    ",$field_value,'',$entry['num_hits'],'',$entry['mem_size'],'',date(DATE_FORMAT,$entry['access_time']),'',date(DATE_FORMAT,$entry['mtime']),'',date(DATE_FORMAT,$entry['creation_time']),''.$entry['ttl'].' secondsNone', date(DATE_FORMAT,$entry['deletion_time']), ''; + echo '[Delete Now]'; + echo '  
    No data
    +EOB; + + if ($list && $i < count($list)) { + echo "",count($list)-$i,' more available...'; + } + + echo <<< EOB +
    +EOB; + break; + +// ----------------------------------------------- +// Version check +// ----------------------------------------------- + case OB_VERSION_CHECK: + echo <<

    APCu Version Information

    + + + + +EOB; + if (defined('PROXY')) { + $ctxt = stream_context_create( array( 'http' => array( 'proxy' => PROXY, 'request_fulluri' => true ) ) ); + $rss = @file_get_contents("https://pecl.php.net/feeds/pkg_apcu.rss", false, $ctxt); + } else { + $rss = @file_get_contents("https://pecl.php.net/feeds/pkg_apcu.rss"); + } + if (!$rss) { + echo ''; + } else { + $apcversion = phpversion('apcu'); + + preg_match('!APCu ([0-9.]+)!', $rss, $match); + echo ''; + echo ''; + } + echo <<< EOB +
    Unable to fetch version information.
    '; + if (version_compare($apcversion, $match[1], '>=')) { + echo '
    You are running the latest version of APCu ('.$apcversion.')
    '; + $i = 3; + } else { + echo '
    You are running an older version of APCu ('.$apcversion.'), + newer version '.$match[1].' is available at + https://pecl.php.net/package/APCu/'.$match[1].' +
    '; + $i = -1; + } + echo '

    Change Log:


    '; + + preg_match_all('!<(title|description)>([^<]+)!', $rss, $match); + $changelog = $match[2]; + + for ($j = 2; $j + 1 < count($changelog); $j += 2) { + $v = $changelog[$j]; + list(, $ver) = explode(' ', $v, 2); + if ($i < 0 && version_compare($apcversion, $ver, '>=')) { + break; + } else if (!$i--) { + break; + } + $changes = $changelog[$j + 1]; + echo "".htmlspecialchars($v, ENT_QUOTES, 'UTF-8')."
    "; + echo nl2br(htmlspecialchars($changes, ENT_QUOTES, 'UTF-8'))."
    "; + } + echo '
    + +EOB; + break; + +} + +echo <<< EOB + +EOB; + +?> + + + + diff --git a/app/admin/Bootstrap.php b/app/admin/Bootstrap.php index adb5a166..0e4cf954 100644 --- a/app/admin/Bootstrap.php +++ b/app/admin/Bootstrap.php @@ -1,9 +1,11 @@ [ + 'title' => 'HookPHP是一款基于PHP8的老司机专用PHP框架', + 'keywords' => '上手快、成本低、PHP8起步、重安全、高性能、SEO优化', + 'description' => '这是一款出自10年+编程经验者创造的PHP框架!', + ], + 'status' => [ + -1 => '所有', + 0 => '禁用', + 1 => '启用', + ], + 'Config' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'key' => '键', + 'value' => '值', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Rbac_Index' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'role_id' => '角色', + 'relation_id' => '关联', + 'type' => '类型', + 'typeSelect.1' => '菜单', + 'typeSelect.2' => '元素', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Rbac_Group' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'name' => '用户组', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Rbac_Group_Role' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'group_id' => '用户组', + 'role_id' => '角色', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Rbac_Group_Manager' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'group_id' => '用户组', + 'manager_id' => '用户', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Rbac_Role' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'name' => '角色', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Rbac_Manager_Role' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'manager_id' => '用户', + 'role_id' => '角色', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'User' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'app_id' => '平台', + 'user' => '用户名', + 'pass' => '密码', + 'email' => '邮箱', + 'phone' => '电话', + 'firstname' => '姓', + 'lastname' => '名', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Manager_Manager' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'app_id' => '平台', + 'user' => '用户名', + 'pass' => '密码', + 'email' => '邮箱', + 'phone' => '电话', + 'firstname' => '姓', + 'lastname' => '名', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Lang' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'name' => '语言', + 'iso' => '国家', + 'lang' => '语种', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Hook_Hook_Module' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'hook_id' => '钩子', + 'module_id' => '模块', + 'position' => '位置', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Hook_Hook' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'key' => '钩子', + 'title' => '标题', + 'position' => '位置', + 'description' => '简介', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'App' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'key' => '平台', + 'title' => '名称', + 'description' => '简介', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Menu' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'parent' => '分类', + 'url' => '地址', + 'icon' => '图标', + 'name' => '名称', + 'position' => '位置', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Translation' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'from' => '来源', + 'to' => '目标', + 'crc32' => '串码', + 'key' => '键', + 'data' => '值', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'Theme' => [ + 'post' => '添加', + 'delete' => '删除', + 'put' => '修改', + 'get' => '查看', + 'id' => 'ID', + 'key' => '名称', + 'status' => '状态', + 'date_add' => '添加', + 'date_upd' => '修改', + ], + 'error' => [ + 'ok' => '成功', + 'invalidAuth' => '账号或者密码错误。', + 'logonExpired' => '您的登录已过期,请重新登录。', + 'securityHijack' => 'Hijack错误。', + 'securityCsrf' => 'CSRF错误。', + 'loginFail' => '登录失败。', + 'throwableCatch' => '数据接口请求异常。', + ], +]; \ No newline at end of file diff --git a/app/admin/config/product.php b/app/admin/config/product.php new file mode 100755 index 00000000..6364e85c --- /dev/null +++ b/app/admin/config/product.php @@ -0,0 +1,54 @@ + [ + 'server' => 'http://www.admin.com', + 'uri' => '/', + ], + 'application' => [ + 'prefix' => 'hp_', + 'modules' => 'index,api', + 'directory' => '/usr/local/openresty/nginx/html/HookPHP/app/admin', + 'dispatcher' => [ + 'catchException' => '1', + 'defaultAction' => 'get', + ] + ], + 'mysql' => [ + 'default' => [ + 'host' => '127.0.0.1', + 'port' => '3306', + 'dbname' => 'hookphp', + 'charset' => 'utf8mb4', + 'username' => 'root', + 'passwd' => '123456', + 'options' => [ + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false, + ], + ] + ], + 'redis' => [ + 'default' => [ + 'host' => '127.0.0.1', + 'port' => '6379', + 'timeout' => '1', + 'reserved' => '', + 'interval' => '100', + 'auth' => '123456', + ] + ], + 'mongo' => [ + 'default' => [ + 'uri' => 'mongodb://root:root@localhost:27017,127.0.0.1:27017/admin?readPreference=secondary', + 'uriOptions' => '', + 'driverOptions' => '', + ] + + ], + 'openssl' => [ + 'iv' => '1234567812345678', + 'method' => 'AES-256-CBC', + 'password' => '`BUhe67(*&{",;?`', + ], +]; \ No newline at end of file diff --git a/app/admin/config/table.php b/app/admin/config/table.php new file mode 100755 index 00000000..f51a4066 --- /dev/null +++ b/app/admin/config/table.php @@ -0,0 +1,521 @@ + + [ + 'id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'PRI', + 'default' => NULL, + 'extra' => 'auto_increment', + 'min' => 0, + 'max' => 4294967295, + ], + 'status' => + [ + 'type' => 'tinyint unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => '0', + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + 'date_add' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'date_upd' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'key' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 16, + ], + ], + 'hp_admin_app_lang' => + [ + 'id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'PRI', + 'default' => NULL, + 'extra' => 'auto_increment', + 'min' => 0, + 'max' => 4294967295, + ], + 'lang_id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'MUL', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'app_id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'MUL', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'title' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 64, + ], + 'description' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + ], + 'hp_admin_lang_i18n' => + [ + 'id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'PRI', + 'default' => NULL, + 'extra' => 'auto_increment', + 'min' => 0, + 'max' => 4294967295, + ], + 'status' => + [ + 'type' => 'tinyint unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => '0', + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + 'date_add' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'date_upd' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'iso' => + [ + 'type' => 'char', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 2, + ], + 'lang' => + [ + 'type' => 'char', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 5, + ], + 'name' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 32, + ], + ], + 'hp_admin_manager' => + [ + 'id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'PRI', + 'default' => NULL, + 'extra' => 'auto_increment', + 'min' => 0, + 'max' => 4294967295, + ], + 'app_id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'MUL', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'status' => + [ + 'type' => 'tinyint unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => '0', + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + 'date_add' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'date_upd' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'lang_id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'MUL', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'user' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 64, + ], + 'email' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 64, + ], + 'phone' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 16, + ], + 'pass' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 100, + ], + 'lastname' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 16, + ], + 'firstname' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 16, + ], + ], + 'hp_admin_translation' => + [ + 'id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'PRI', + 'default' => NULL, + 'extra' => 'auto_increment', + 'min' => 0, + 'max' => 4294967295, + ], + 'status' => + [ + 'type' => 'tinyint unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => '0', + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + 'date_add' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'date_upd' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'from' => + [ + 'type' => 'tinyint unsigned', + 'null' => 'NO', + 'key' => 'MUL', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + 'to' => + [ + 'type' => 'tinyint unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + 'crc32' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'key' => + [ + 'type' => 'text', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 65535, + ], + 'data' => + [ + 'type' => 'text', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 65535, + ], + ], + 'hp_admin_user' => + [ + 'id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'PRI', + 'default' => NULL, + 'extra' => 'auto_increment', + 'min' => 0, + 'max' => 4294967295, + ], + 'app_id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'MUL', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'status' => + [ + 'type' => 'tinyint unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => '0', + 'extra' => '', + 'min' => 0, + 'max' => 255, + ], + 'date_add' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'date_upd' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'lang_id' => + [ + 'type' => 'int unsigned', + 'null' => 'NO', + 'key' => 'MUL', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 4294967295, + ], + 'user' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 64, + ], + 'email' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 64, + ], + 'phone' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 16, + ], + 'pass' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => NULL, + 'extra' => '', + 'min' => 0, + 'max' => 100, + ], + 'lastname' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 16, + ], + 'firstname' => + [ + 'type' => 'varchar', + 'null' => 'NO', + 'key' => '', + 'default' => '', + 'extra' => '', + 'min' => 0, + 'max' => 16, + ], + ], +]; \ No newline at end of file diff --git a/app/admin/controllers/App.php b/app/admin/controllers/App.php index 03017144..889c56da 100644 --- a/app/admin/controllers/App.php +++ b/app/admin/controllers/App.php @@ -1,5 +1,15 @@ 'id'], + ['data' => 'key'], + ['data' => 'title'], + ['data' => 'description'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Base/Abstract.php b/app/admin/controllers/Base/Abstract.php index defcc73a..36cee454 100644 --- a/app/admin/controllers/Base/Abstract.php +++ b/app/admin/controllers/Base/Abstract.php @@ -1,5 +1,9 @@ id = (int) $this->getRequest()->getParam('id'); $this->languages = \LangModel::getInstance()->get(); - $this->model = (str_replace('_', '\\', $this->_request->controller).'Model')::getInstance($this->id); - //登录检测 if (!isset($_SESSION[APP_NAME])) { - if ($this->_request->module === 'Api') { - return $this->send([], 100000, l('Login.fail'), 401); + if ($this->_request->module === 'Api' && $this->_request->controller !== 'Login') { + return $this->send([], 0, 'loginFail', 401); } + if ($this->_request->controller !== 'Login') { $this->forward('Login', 'get', ['referer' => $this->_request->getServer('REQUEST_URI', APP_CONFIG['http']['uri'])]); } @@ -28,32 +31,26 @@ protected function init() } //会话劫持 if ($_SESSION[APP_NAME]['security']['ip'] !== $this->_request->getServer('REMOTE_ADDR') || $_SESSION[APP_NAME]['security']['agent'] !== $this->_request->getServer('HTTP_USER_AGENT')) { - return $this->send([], 100001, l('security.hijack'), 403); + return $this->send([], 0, 'securityHijack', 403); } //跨站攻击 if (!$this->_request->isGet()) { mb_parse_str(file_get_contents('php://input'), $result); $_POST += $result; if ($_SESSION[APP_NAME]['security']['token'] !== $this->_request->getPost('token', $result['token'] ?? null)) { - return $this->send([], 100002, l('security.csrf'), 403); + return $this->send([], 0, 'securityCsrf', 403); } } } - public static function send($data = [], int $code = 10000, string $msg = '', int $status = 200) + public static function send(array $data = [], int $count = 0, string $code = 'ok', int $status = 200) { Header::setCharset(); Header::setStatus($status); - if (is_array($data)) { - foreach ($data as &$v) { - if (isset($v['date_add'])) { - $v['date_add'] = date('Y-m-d H:i:s', $v['date_add']); - } - if (isset($v['date_upd'])) { - $v['date_upd'] = date('Y-m-d H:i:s', $v['date_upd']); - } - } + foreach ($data as &$value) { + isset($value['date_add']) && $value['date_add'] = date('Y-m-d H:i:s', $value['date_add']); + isset($value['date_upd']) && $value['date_upd'] = date('Y-m-d H:i:s', $value['date_upd']); } - exit(json_encode(['id' => mt_rand(), 'code' => $code, 'msg' => $msg, 'data' => $data], JSON_UNESCAPED_UNICODE)); + exit(json_encode(['id' => SeasLog::getRequestID(), 'code' => $code, 'msg' => l()['error'][$code], 'data' => $data, 'count' => $count], JSON_UNESCAPED_UNICODE)); } } \ No newline at end of file diff --git a/app/admin/controllers/Base/Api.php b/app/admin/controllers/Base/Api.php index 3990b098..70fe7a43 100644 --- a/app/admin/controllers/Base/Api.php +++ b/app/admin/controllers/Base/Api.php @@ -1,32 +1,35 @@ autoRender(false); $this->_request->setParam('version', $this->_request->action)->setActionName($this->_request->method); + $this->model = (str_replace('_', '\\', $this->_request->controller).'Model')::getInstance($this->id); } - protected function postAction() + public function postAction() { return $this->send($this->model->post()); } - protected function deleteAction() + public function deleteAction() { return $this->send($this->model->delete()); } - protected function putAction() + public function putAction() { return $this->send($this->model->put()); } - protected function getAction() + public function getAction() { return $this->send($this->model->get()); } diff --git a/app/admin/controllers/Base/View.php b/app/admin/controllers/Base/View.php index 80aae546..dc574b57 100644 --- a/app/admin/controllers/Base/View.php +++ b/app/admin/controllers/Base/View.php @@ -1,30 +1,27 @@ ignore = $this->model->ignore; $this->_view->setScriptPath(APP_CONFIG['application']['directory'].($this->_request->module === 'Index' ? '' : '/modules/'.$this->_request->module).'/views/'.APP_THEME_NAME); $this->_view->assign( [ - 'title' => l('app.title'), - 'keywords' => l('app.keywords'), - 'description' => l('app.description'), + 'title' => l()['app']['title'], + 'keywords' => l()['app']['keywords'], + 'description' => l()['app']['description'], 'id' => $this->id, 'languages' => $this->languages, 'module' => $this->_request->module, - 'controller' => strtolower($this->_request->controller), + 'controller' => $this->_request->controller, 'action' => $this->_request->action, 'uri' => $this->_request->getRequestUri(), ] @@ -37,118 +34,30 @@ protected function init() ] ); } - } - - protected function postAction() - { - $this->renderForm(); - $this->_view->assign($this->form); - } - - protected function putAction() - { - $this->renderForm(); - $this->setValue(); - $this->_view->assign($this->form); - } - - protected function getAction() - { - $this->renderList(); - $this->_view->assign(['list' => $this->list]); - } - protected function setValue(): void - { - foreach ($this->form['fields']['data'][0]['form']['input'] as $field => $input) { - if ($input['lang']) { - foreach ($this->languages as $language) { - $this->form['value'][$field][$language['id']] = $this->model->getData($language['id'])[$field] ?? ''; - } - } else { - $this->form['value'][$field] = $this->model->getData()[$field]; + // 列表模板渲染 + if (isset($this->cols)) { + foreach ($this->cols as &$cols) { + $cols['orderable'] = true; + $cols['title'] = l()[$this->_request->controller][$cols['data']]; } + $this->_view->assign('cols', $this->cols); } } - protected function getDefinition(): array + public function postAction() { - if (!$this->model->table) { - return []; - } - $data = APP_TABLE[$this->model->table]; - foreach (APP_TABLE[$this->model->table.'_lang'] ?? [] as $field => $desc) { - $data[$field] = $desc + ['lang' => true]; - } - return array_diff_key($data, $this->ignore); } - protected function renderList(): void + public function putAction() { - $this->list['id'] = ['data' => 'id', 'className' => 'col-checker align-middle', 'orderable' => false, 'searchable' => false]; - unset($this->ignore['date_add'], $this->ignore['date_upd']); - foreach (array_keys($this->getDefinition()) as $field) { - $this->list[$field] = [ - 'data' => $field, - 'className' => 'align-middle', - 'title' => l($this->_request->controller.'.'.$field) - ]; - } - $this->list['idx'] = ['className' => 'align-middle text-right'] + $this->list['id']; + } - protected function renderForm(): void + public function getAction() { - $input = []; - foreach ($this->getDefinition() as $field => $desc) { - $input[$field] = [ - 'name' => $field, - 'label' => l($this->_request->controller.'.'.$field), - 'lang' => isset($desc['lang']), - 'required' => $this->model->fields[$field]['required'] ?? false - ]; - $table = $input[$field]['lang'] ? $this->model->table.'_lang' : $this->model->table; - switch (1) { - case $desc['type'] === 'tinyint': - $input[$field] += [ - 'type' => (int) $desc['max'] === 1 ? 'switch' : 'number', - ]; - break; - case strpos($desc['type'], 'char') !== false: - default: - $input[$field] += [ - 'type' => 'text', - 'maxchar' => APP_TABLE[$table][$field]['max'] - ]; - break; - } - } - $this->form = [ - 'fields' => [ - 'title' => l($this->_request->controller.'.'.$this->_request->action), - 'data' => [ - [ - 'form' => [ - 'input' => $input, - 'buttons' => [ - [ - 'id' => 'submit', - 'class' => 'btn btn-primary', - 'title' => l('app.submit'), - 'js' => 'beforeSubmit();' - ] - ], - 'reset' => [ - 'id' => 'reset', - 'class' => 'btn btn-warning', - ] - ] - ] - ] - ], - 'value' => [], - 'showCancel' => true - ]; + $this->_view->display('list.phtml'); + return false; } } \ No newline at end of file diff --git a/app/admin/controllers/Change.php b/app/admin/controllers/Change.php index 30244548..b7ef3295 100644 --- a/app/admin/controllers/Change.php +++ b/app/admin/controllers/Change.php @@ -1,4 +1,6 @@ 'id'], + ['data' => 'key'], + ['data' => 'value'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Error.php b/app/admin/controllers/Error.php index 19fc5328..85dadd91 100644 --- a/app/admin/controllers/Error.php +++ b/app/admin/controllers/Error.php @@ -1,4 +1,6 @@ 'id'], + ['data' => 'key'], + ['data' => 'title'], + ['data' => 'description'], + ['data' => 'position'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Hook/Hook/Module.php b/app/admin/controllers/Hook/Hook/Module.php index 1d1272b1..69511a58 100644 --- a/app/admin/controllers/Hook/Hook/Module.php +++ b/app/admin/controllers/Hook/Hook/Module.php @@ -1,25 +1,15 @@ form['fields']['data'][0]['form']['input']['hook_id'] = [ - 'type' => 'select', - 'name' => 'hook_id', - 'label' => l($this->_request->controller.'.hook_id'), - 'lang' => false, - 'values' => [['options' => HookModel::getInstance($this->id)->getSelect()]] - ]; - $this->form['fields']['data'][0]['form']['input']['module_id'] = [ - 'type' => 'select', - 'name' => 'module_id', - 'label' => l($this->_request->controller.'.module_id'), - 'lang' => false, - 'values' => [['options' => ModuleModel::getInstance($this->id)->getSelect()]] - ]; - } + public array $cols = [ + ['data' => 'id'], + ['data' => 'hook_id'], + ['data' => 'module_id'], + ['data' => 'position'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Index.php b/app/admin/controllers/Index.php index 01b76d5d..3fd28a35 100644 --- a/app/admin/controllers/Index.php +++ b/app/admin/controllers/Index.php @@ -1,5 +1,10 @@ 'id'], + ['data' => 'iso'], + ['data' => 'lang'], + ['data' => 'name'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Login.php b/app/admin/controllers/Login.php index 1530005d..c578c51d 100644 --- a/app/admin/controllers/Login.php +++ b/app/admin/controllers/Login.php @@ -1,5 +1,5 @@ _view->referer = $this->getRequest()->getParam('referer', '/'); } - - public function postAction() - { - $user = $this->getRequest()->getPost('user'); - $pass = $this->getRequest()->getPost('pass'); - $token = $this->getRequest()->getPost('token'); - $referer = $this->getRequest()->getPost('referer', '/'); - - $login = $this->model->signIn($user); - - if ($login && PassWord::verify($user.$pass, $login['pass'])) { - $login['security'] = [ - 'ip' => $this->getRequest()->getServer('REMOTE_ADDR'), - 'token' => $token, - 'agent' => $this->getRequest()->getServer('HTTP_USER_AGENT'), - 'time' => time() - ]; - - $_SESSION[APP_NAME] = $login; - session_regenerate_id(true); - - Header::redirect($referer); - return false; - } - - $this->_view->error = [l('Login.fail')]; - } - - public function outAction() - { - session_destroy(); - Header::redirect('/'); - return false; - } } \ No newline at end of file diff --git a/app/admin/controllers/Manager/Manager.php b/app/admin/controllers/Manager/Manager.php index 2dc836ae..51b1fecf 100644 --- a/app/admin/controllers/Manager/Manager.php +++ b/app/admin/controllers/Manager/Manager.php @@ -1,21 +1,18 @@ ignore += ['pass' => true]; - parent::renderList(); - } - - protected function renderForm(): void - { - parent::renderForm(); - $this->form['fields']['data'][0]['form']['input']['app_id'] = [ - 'type' => 'select', - 'name' => 'app_id', - 'label' => l($this->_request->controller.'.app_id'), - 'lang' => false, - 'values' => [['options' => array_flip(AppModel::getInstance()->getIds())]] - ]; - } + public array $cols = [ + ['data' => 'id'], + ['data' => 'app_id'], + ['data' => 'user'], + ['data' => 'email'], + ['data' => 'phone'], + ['data' => 'firstname'], + ['data' => 'lastname'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Menu.php b/app/admin/controllers/Menu.php index a7e279a2..2576fea8 100644 --- a/app/admin/controllers/Menu.php +++ b/app/admin/controllers/Menu.php @@ -1,15 +1,17 @@ form['fields']['data'][0]['form']['input']['parent'] = [ - 'type' => 'select', - 'name' => 'parent', - 'label' => l($this->_request->controller.'.parent'), - 'lang' => false, - 'values' => [['options' => $this->model->getSelect()]] - ]; - } + public array $cols = [ + ['data' => 'id'], + ['data' => 'icon'], + ['data' => 'parent'], + ['data' => 'name'], + ['data' => 'url'], + ['data' => 'position'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Rbac/Group.php b/app/admin/controllers/Rbac/Group.php index 1f934fc0..cc7ae4c5 100644 --- a/app/admin/controllers/Rbac/Group.php +++ b/app/admin/controllers/Rbac/Group.php @@ -1,5 +1,13 @@ 'id'], + ['data' => 'name'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Rbac/Group/Manager.php b/app/admin/controllers/Rbac/Group/Manager.php index 5162dd38..5fa6b30d 100644 --- a/app/admin/controllers/Rbac/Group/Manager.php +++ b/app/admin/controllers/Rbac/Group/Manager.php @@ -1,25 +1,17 @@ form['fields']['data'][0]['form']['input']['group_id'] = [ - 'type' => 'select', - 'name' => 'group_id', - 'label' => l($this->_request->controller.'.group_id'), - 'lang' => false, - 'values' => [['options' => GroupModel::getInstance($this->id)->getSelect()]] - ]; - $this->form['fields']['data'][0]['form']['input']['manager_id'] = [ - 'type' => 'select', - 'name' => 'manager_id', - 'label' => l($this->_request->controller.'.manager_id'), - 'lang' => false, - 'values' => [['options' => ManagerModel::getInstance($this->id)->getSelect()]] - ]; - } + public array $cols = [ + ['data' => 'id'], + ['data' => 'group_id'], + ['data' => 'manager_id'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Rbac/Group/Role.php b/app/admin/controllers/Rbac/Group/Role.php index 514728bc..227de0d9 100644 --- a/app/admin/controllers/Rbac/Group/Role.php +++ b/app/admin/controllers/Rbac/Group/Role.php @@ -1,24 +1,16 @@ form['fields']['data'][0]['form']['input']['group_id'] = [ - 'type' => 'select', - 'name' => 'group_id', - 'label' => l($this->_request->controller.'.group_id'), - 'lang' => false, - 'values' => [['options' => GroupModel::getInstance($this->id)->getSelect()]] - ]; - $this->form['fields']['data'][0]['form']['input']['role_id'] = [ - 'type' => 'select', - 'name' => 'role_id', - 'label' => l($this->_request->controller.'.role_id'), - 'lang' => false, - 'values' => [['options' => RoleModel::getInstance($this->id)->getSelect()]] - ]; - } + public array $cols = [ + ['data' => 'id'], + ['data' => 'group_id'], + ['data' => 'role_id'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Rbac/Index.php b/app/admin/controllers/Rbac/Index.php index 9f219ea4..fbcb2fc3 100644 --- a/app/admin/controllers/Rbac/Index.php +++ b/app/admin/controllers/Rbac/Index.php @@ -1,24 +1,9 @@ form['fields']['data'][0]['form']['input']['role_id'] = [ - 'type' => 'select', - 'name' => 'role_id', - 'label' => l($this->_request->controller.'.role_id'), - 'lang' => false, - 'values' => [['options' => RoleModel::getInstance($this->id)->getSelect()]] - ]; - $this->form['fields']['data'][0]['form']['input']['type'] = [ - 'type' => 'select', - 'name' => 'type', - 'label' => l($this->_request->controller.'.type'), - 'lang' => false, - 'values' => [['options' => l($this->_request->controller.'.typeSelect')]] - ]; - } + } \ No newline at end of file diff --git a/app/admin/controllers/Rbac/Manager/Role.php b/app/admin/controllers/Rbac/Manager/Role.php index ade4babc..545913e5 100644 --- a/app/admin/controllers/Rbac/Manager/Role.php +++ b/app/admin/controllers/Rbac/Manager/Role.php @@ -1,25 +1,17 @@ form['fields']['data'][0]['form']['input']['manager_id'] = [ - 'type' => 'select', - 'name' => 'manager_id', - 'label' => l($this->_request->controller.'.manager_id'), - 'lang' => false, - 'values' => [['options' => ManagerModel::getInstance($this->id)->getSelect()]] - ]; - $this->form['fields']['data'][0]['form']['input']['role_id'] = [ - 'type' => 'select', - 'name' => 'role_id', - 'label' => l($this->_request->controller.'.role_id'), - 'lang' => false, - 'values' => [['options' => RoleModel::getInstance($this->id)->getSelect()]] - ]; - } + public array $cols = [ + ['data' => 'id'], + ['data' => 'manager_id'], + ['data' => 'role_id'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Rbac/Role.php b/app/admin/controllers/Rbac/Role.php index 61c88aa1..0ebe4c24 100644 --- a/app/admin/controllers/Rbac/Role.php +++ b/app/admin/controllers/Rbac/Role.php @@ -1,5 +1,13 @@ 'id'], + ['data' => 'name'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Theme.php b/app/admin/controllers/Theme.php index 8d6a9771..0949173d 100644 --- a/app/admin/controllers/Theme.php +++ b/app/admin/controllers/Theme.php @@ -1,5 +1,13 @@ 'id'], + ['data' => 'key'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/Translation.php b/app/admin/controllers/Translation.php index 97cc53ae..3c84c8d8 100644 --- a/app/admin/controllers/Translation.php +++ b/app/admin/controllers/Translation.php @@ -1,5 +1,17 @@ 'id'], + ['data' => 'from'], + ['data' => 'to'], + ['data' => 'crc32'], + ['data' => 'key'], + ['data' => 'data'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/controllers/User.php b/app/admin/controllers/User.php index bdd600d7..0132b042 100644 --- a/app/admin/controllers/User.php +++ b/app/admin/controllers/User.php @@ -1,21 +1,18 @@ ignore += ['pass' => true]; - parent::renderList(); - } - - protected function renderForm(): void - { - parent::renderForm(); - $this->form['fields']['data'][0]['form']['input']['app_id'] = [ - 'type' => 'select', - 'name' => 'app_id', - 'label' => l($this->_request->controller.'.app_id'), - 'lang' => false, - 'values' => [['options' => array_flip(AppModel::getInstance()->getIds())]] - ]; - } + public array $cols = [ + ['data' => 'id'], + ['data' => 'app_id'], + ['data' => 'user'], + ['data' => 'email'], + ['data' => 'phone'], + ['data' => 'firstname'], + ['data' => 'lastname'], + ['data' => 'status'], + ['data' => 'date_add'], + ['data' => 'date_upd'], + ]; } \ No newline at end of file diff --git a/app/admin/hooks/One/One.php b/app/admin/hooks/One/One.php index 54115f0b..b4c4a48e 100644 --- a/app/admin/hooks/One/One.php +++ b/app/admin/hooks/One/One.php @@ -1,4 +1,6 @@ pdo->fetchAll(Yaconf::get('dicPdo.APP.GET_All'), [APP_LANG_ID]); + return $this->orm->queryAll(apcu_fetch('global')['sql']['APP']['GET_All'], [APP_LANG_ID]); } public function getIds(): array diff --git a/app/admin/models/Base/Abstract.php b/app/admin/models/Base/Abstract.php index 95b3352b..22c2ae58 100644 --- a/app/admin/models/Base/Abstract.php +++ b/app/admin/models/Base/Abstract.php @@ -1,4 +1,6 @@ orm = OrmConnect::getInstance(); + $this->id = (int) $id; $this->table = Tools::formatTableName('%p'.($this->table ?? '%s_'.strtolower(str_replace(['\\', 'Model'], ['_', ''], static::class)))); $this->foreign = $this->foreign ?? substr(strrchr($this->table, '_'), 1).'_id'; @@ -65,7 +71,7 @@ public function post(): int return $this->pdo->handle->commit() && $this->afterPost() ? $result['lastInsertId']: 0; } catch (\Throwable $e) { $this->pdo->handle->rollBack(); - AbstractController::send([], 100003, $e->getMessage(), 500); + AbstractController::send([], 0, 'throwableCatch', 500); } } @@ -80,7 +86,7 @@ public function delete(): bool return $this->pdo->handle->commit() && $this->afterDelete(); } catch (\Throwable $e) { $this->pdo->handle->rollBack(); - AbstractController::send([], 100005, $e->getMessage(), 500); + AbstractController::send([], 0, 'throwableCatch', 500); } } @@ -103,7 +109,7 @@ public function put(): bool return $this->pdo->handle->commit() && $this->afterPut(); } catch (\Throwable $e) { $this->pdo->handle->rollBack(); - AbstractController::send([], 100004, $e->getMessage(), 500); + AbstractController::send([], 0, 'throwableCatch', 500); } } diff --git a/app/admin/models/Change.php b/app/admin/models/Change.php index e6653629..8e569168 100644 --- a/app/admin/models/Change.php +++ b/app/admin/models/Change.php @@ -1,4 +1,6 @@ pdo->fetchAll(Yaconf::get('dicPdo.HOOK.HOOK.GET_ALL'), [APP_LANG_ID]); + return $this->orm->queryAll(apcu_fetch('global')['sql']['HOOK']['HOOK']['GET_ALL'], [APP_LANG_ID]); } public function getSelect(): array { - return $this->pdo->fetchAll(Yaconf::get('dicPdo.HOOK.HOOK.GET_SELECT'), [APP_LANG_ID], \PDO::FETCH_KEY_PAIR); + return $this->orm->queryAll(apcu_fetch('global')['sql']['HOOK']['HOOK']['GET_SELECT'], [APP_LANG_ID], \PDO::FETCH_KEY_PAIR); } } \ No newline at end of file diff --git a/app/admin/models/Hook/Hook/Module.php b/app/admin/models/Hook/Hook/Module.php index 80ea7823..f98d1e4c 100644 --- a/app/admin/models/Hook/Hook/Module.php +++ b/app/admin/models/Hook/Hook/Module.php @@ -1,4 +1,6 @@ pdo->fetchAll(Yaconf::get('dicPdo.MENU.GET_ALL'), [APP_LANG_ID]); + return $this->orm->queryAll(apcu_fetch('global')['sql']['MENU']['GET_ALL'], [APP_LANG_ID]); } public function getSelect(): array @@ -35,7 +37,7 @@ public function getMenu(): array $utils = new ArrayUtils(); $utils->idKey = 'id'; $utils->parentIdKey = 'parent'; - $data = $utils->classify($this->pdo->fetchAll(Yaconf::get('dicPdo.MENU.GET_MENU'), [APP_LANG_ID])); + $data = $utils->classify($this->orm->queryAll(apcu_fetch('global')['sql']['MENU']['GET_MENU'], [APP_LANG_ID])); return $data; } } \ No newline at end of file diff --git a/app/admin/models/Rbac/Group.php b/app/admin/models/Rbac/Group.php index a0755ba7..d3a7773a 100644 --- a/app/admin/models/Rbac/Group.php +++ b/app/admin/models/Rbac/Group.php @@ -1,7 +1,7 @@ pdo->fetchAll(Yaconf::get('dicPdo.RBAC.GROUP.GET_ALL'), [APP_LANG_ID]); + return $this->orm->queryAll(apcu_fetch('global')['sql']['RBAC']['GROUP']['GET_ALL'], [APP_LANG_ID]); } public function getSelect(): array { - return $this->pdo->fetchAll(Yaconf::get('dicPdo.RBAC.GROUP.GET_SELECT'), [APP_LANG_ID], \PDO::FETCH_KEY_PAIR); + return $this->orm->queryAll(apcu_fetch('global')['sql']['RBAC']['GROUP']['GET_SELECT'], [APP_LANG_ID], \PDO::FETCH_KEY_PAIR); } } \ No newline at end of file diff --git a/app/admin/models/Rbac/Group/Manager.php b/app/admin/models/Rbac/Group/Manager.php index 0b56d1a1..0f1a7ffd 100644 --- a/app/admin/models/Rbac/Group/Manager.php +++ b/app/admin/models/Rbac/Group/Manager.php @@ -1,4 +1,6 @@ pdo->fetchAll(Yaconf::get('dicPdo.RBAC.ROLE.GET_ALL'), [APP_LANG_ID]); + return $this->orm->queryAll(apcu_fetch('global')['sql']['RBAC']['ROLE']['GET_ALL'], [APP_LANG_ID]); } public function getSelect(): array { - return $this->pdo->fetchAll(Yaconf::get('dicPdo.RBAC.ROLE.GET_SELECT'), [APP_LANG_ID], \PDO::FETCH_KEY_PAIR); + return $this->orm->queryAll(apcu_fetch('global')['sql']['RBAC']['ROLE']['GET_SELECT'], [APP_LANG_ID], \PDO::FETCH_KEY_PAIR); } } \ No newline at end of file diff --git a/app/admin/models/Theme.php b/app/admin/models/Theme.php index 1ef79bbf..33ffd98e 100644 --- a/app/admin/models/Theme.php +++ b/app/admin/models/Theme.php @@ -1,4 +1,6 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Config.php b/app/admin/modules/Api/controllers/Config.php index b066be92..4c01f086 100644 --- a/app/admin/modules/Api/controllers/Config.php +++ b/app/admin/modules/Api/controllers/Config.php @@ -1,12 +1,10 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Hook/Hook.php b/app/admin/modules/Api/controllers/Hook/Hook.php index e755c143..b7fa7691 100644 --- a/app/admin/modules/Api/controllers/Hook/Hook.php +++ b/app/admin/modules/Api/controllers/Hook/Hook.php @@ -1,12 +1,10 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Hook/Hook/Module.php b/app/admin/modules/Api/controllers/Hook/Hook/Module.php index 33eb8450..2c55478b 100644 --- a/app/admin/modules/Api/controllers/Hook/Hook/Module.php +++ b/app/admin/modules/Api/controllers/Hook/Hook/Module.php @@ -1,4 +1,6 @@ getData(APP_LANG_ID)['title']; $v['module_id'] = \Hook\ModuleModel::getInstance($v['module_id'])->getData()['key']; - $v['status'] = l('status.'.$v['status']); } return $this->send($data); } diff --git a/app/admin/modules/Api/controllers/Lang.php b/app/admin/modules/Api/controllers/Lang.php index a942bd16..7994fe45 100644 --- a/app/admin/modules/Api/controllers/Lang.php +++ b/app/admin/modules/Api/controllers/Lang.php @@ -1,12 +1,10 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Login.php b/app/admin/modules/Api/controllers/Login.php new file mode 100644 index 00000000..a7a94ada --- /dev/null +++ b/app/admin/modules/Api/controllers/Login.php @@ -0,0 +1,32 @@ +getRequest()->getPost('user'); + $pass = $this->getRequest()->getPost('pass'); + $token = $this->getRequest()->getPost('token'); + $referer = $this->getRequest()->getPost('referer', '/'); + + $login = $this->model->signIn($user); + + if ($login && PassWord::verify($user.$pass, $login['pass'])) { + $login['security'] = [ + 'ip' => $this->getRequest()->getServer('REMOTE_ADDR'), + 'token' => $token, + 'agent' => $this->getRequest()->getServer('HTTP_USER_AGENT'), + 'time' => time() + ]; + + $_SESSION[APP_NAME] = $login; + session_regenerate_id(true); + + self::send(['referer' => $referer]); + } + self::send([], 0, 'invalidAuth'); + } +} \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Logout.php b/app/admin/modules/Api/controllers/Logout.php new file mode 100644 index 00000000..23861056 --- /dev/null +++ b/app/admin/modules/Api/controllers/Logout.php @@ -0,0 +1,11 @@ +model->get(); $app = array_flip(AppModel::getInstance()->getIds()); foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); $v['app_id'] = $app[$v['app_id']]; } return $this->send($data); diff --git a/app/admin/modules/Api/controllers/Menu.php b/app/admin/modules/Api/controllers/Menu.php index 32b2220d..836e3bed 100644 --- a/app/admin/modules/Api/controllers/Menu.php +++ b/app/admin/modules/Api/controllers/Menu.php @@ -1,4 +1,6 @@ model->get(); foreach ($data as &$v) { $v['parent'] = \MenuModel::getInstance((int) $v['parent'])->getData(APP_LANG_ID)['name'] ?? ''; - $v['status'] = l('status.'.$v['status']); } - return $this->send($data); + return $this->send($data, count($data)); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Rbac/Group.php b/app/admin/modules/Api/controllers/Rbac/Group.php index a73be661..48713adf 100644 --- a/app/admin/modules/Api/controllers/Rbac/Group.php +++ b/app/admin/modules/Api/controllers/Rbac/Group.php @@ -1,12 +1,10 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Rbac/Group/Manager.php b/app/admin/modules/Api/controllers/Rbac/Group/Manager.php index 474595b4..82045b3f 100644 --- a/app/admin/modules/Api/controllers/Rbac/Group/Manager.php +++ b/app/admin/modules/Api/controllers/Rbac/Group/Manager.php @@ -1,4 +1,6 @@ getData(APP_LANG_ID)['name']; $manager = \Manager\ManagerModel::getInstance($v['manager_id'])->getData(); $v['manager_id'] = $manager['firstname'].' '.$manager['lastname']; - $v['status'] = l('status.'.$v['status']); } return $this->send($data); } diff --git a/app/admin/modules/Api/controllers/Rbac/Group/Role.php b/app/admin/modules/Api/controllers/Rbac/Group/Role.php index 4d38c2bd..ee0fbe00 100644 --- a/app/admin/modules/Api/controllers/Rbac/Group/Role.php +++ b/app/admin/modules/Api/controllers/Rbac/Group/Role.php @@ -1,4 +1,6 @@ getData(APP_LANG_ID)['name']; $v['role_id'] = \Rbac\RoleModel::getInstance($v['role_id'])->getData(APP_LANG_ID)['name']; - $v['status'] = l('status.'.$v['status']); } return $this->send($data); } diff --git a/app/admin/modules/Api/controllers/Rbac/Index.php b/app/admin/modules/Api/controllers/Rbac/Index.php index 65336ee7..ed12c20f 100644 --- a/app/admin/modules/Api/controllers/Rbac/Index.php +++ b/app/admin/modules/Api/controllers/Rbac/Index.php @@ -1,4 +1,6 @@ model->get(); foreach ($data as &$v) { $v['role_id'] = \Rbac\RoleModel::getInstance($v['role_id'])->getData(APP_LANG_ID)['name']; - $v['type'] = l($this->_request->controller.'.typeSelect.'.$v['type']); - $v['status'] = l('status.'.$v['status']); + $v['type'] = l()[$this->_request->controller]['typeSelect'][$v['type']]; } return $this->send($data); } diff --git a/app/admin/modules/Api/controllers/Rbac/Manager/Role.php b/app/admin/modules/Api/controllers/Rbac/Manager/Role.php index 0333085a..ff8a7f14 100644 --- a/app/admin/modules/Api/controllers/Rbac/Manager/Role.php +++ b/app/admin/modules/Api/controllers/Rbac/Manager/Role.php @@ -1,4 +1,6 @@ getData(); $v['manager_id'] = $manager['firstname'].' '.$manager['lastname']; $v['role_id'] = \Rbac\RoleModel::getInstance($v['role_id'])->getData(APP_LANG_ID)['name']; - $v['status'] = l('status.'.$v['status']); } return $this->send($data); } diff --git a/app/admin/modules/Api/controllers/Rbac/Role.php b/app/admin/modules/Api/controllers/Rbac/Role.php index 2f0ed672..0db284c8 100644 --- a/app/admin/modules/Api/controllers/Rbac/Role.php +++ b/app/admin/modules/Api/controllers/Rbac/Role.php @@ -1,12 +1,10 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Theme.php b/app/admin/modules/Api/controllers/Theme.php index 28783e2b..9756c39a 100644 --- a/app/admin/modules/Api/controllers/Theme.php +++ b/app/admin/modules/Api/controllers/Theme.php @@ -1,12 +1,10 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/Translation.php b/app/admin/modules/Api/controllers/Translation.php index 4171b9b9..ba23ddd3 100644 --- a/app/admin/modules/Api/controllers/Translation.php +++ b/app/admin/modules/Api/controllers/Translation.php @@ -1,12 +1,10 @@ model->get(); - foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); - } - return $this->send($data); + return $this->send($this->model->get()); } } \ No newline at end of file diff --git a/app/admin/modules/Api/controllers/User.php b/app/admin/modules/Api/controllers/User.php index 2ed9b4e5..0c51ad8f 100644 --- a/app/admin/modules/Api/controllers/User.php +++ b/app/admin/modules/Api/controllers/User.php @@ -1,4 +1,6 @@ model->get(); $app = array_flip(AppModel::getInstance()->getIds()); foreach ($data as &$v) { - $v['status'] = l('status.'.$v['status']); $v['app_id'] = $app[$v['app_id']]; } return $this->send($data); diff --git a/app/admin/plugins/Hook.php b/app/admin/plugins/Hook.php index 36f68dc0..9f1cd400 100644 --- a/app/admin/plugins/Hook.php +++ b/app/admin/plugins/Hook.php @@ -1,4 +1,6 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/admin/views/default/config/get.phtml b/app/admin/views/default/config/get.phtml deleted file mode 100644 index 3e4158f0..00000000 --- a/app/admin/views/default/config/get.phtml +++ /dev/null @@ -1 +0,0 @@ -keywords;?>" /> -
    - - -
    -
    -
    -
    -
    -
    -

    Page Not found!

    -

    exception->getMessage();?>

    - -
    -
    -
    - -
    -
    + \ No newline at end of file diff --git a/app/admin/views/default/foot.phtml b/app/admin/views/default/foot.phtml index 24c0e026..5b85530d 100644 --- a/app/admin/views/default/foot.phtml +++ b/app/admin/views/default/foot.phtml @@ -1,13 +1,16 @@ -