From ba7be004c070b9cb3b0cf0dd0f3417b9ea67ead8 Mon Sep 17 00:00:00 2001 From: net909 Date: Thu, 28 Sep 2023 16:21:06 +0800 Subject: [PATCH] Initial commit --- .env.example | 18 + .gitignore | 4 + .travis.yml | 42 + README.md | 73 + app/.htaccess | 1 + app/AppService.php | 22 + app/BaseController.php | 94 + app/ExceptionHandle.php | 58 + app/Plugin.php | 44 + app/Request.php | 8 + app/command/Cron.php | 28 + app/command/PluginPackage.php | 55 + app/common.php | 476 + app/controller/Auth.php | 220 + app/controller/Base.php | 37 + app/controller/Index.php | 226 + app/controller/Install.php | 131 + app/controller/admin/Category.php | 134 + app/controller/admin/Comment.php | 140 + app/controller/admin/Link.php | 134 + app/controller/admin/Menu.php | 120 + app/controller/admin/Plugin.php | 224 + app/controller/admin/System.php | 127 + app/controller/admin/Update.php | 134 + app/controller/admin/User.php | 122 + app/event.php | 17 + app/lib/BilibiliHelper.php | 477 + app/lib/EnvOperation.php | 63 + app/lib/ExecSQL.php | 64 + app/lib/GeetestLib.php | 146 + app/lib/Ip2Region.php | 47 + app/lib/IpLocation.php | 239 + app/lib/Oauth.php | 74 + app/lib/Plugin.php | 147 + app/lib/QQGroup.php | 170 + app/lib/QQLogin.php | 148 + app/lib/QQTool.php | 209 + app/lib/QQWry.dat | Bin 0 -> 10476130 bytes app/lib/XdbSearcher.php | 370 + app/middleware.php | 10 + app/middleware/AuthAdmin.php | 31 + app/middleware/AuthUser.php | 41 + app/middleware/LoadConfig.php | 29 + app/middleware/RefererCheck.php | 24 + app/middleware/ViewOutput.php | 29 + app/provider.php | 9 + app/service.php | 10 + app/service/ValidateService.php | 45 + composer.json | 47 + composer.lock | 1020 ++ config/app.php | 37 + config/cache.php | 40 + config/captcha.php | 39 + config/console.php | 12 + config/cookie.php | 20 + config/database.php | 63 + config/filesystem.php | 30 + config/lang.php | 27 + config/log.php | 45 + config/middleware.php | 8 + config/route.php | 45 + config/session.php | 19 + config/trace.php | 10 + config/version.php | 6 + config/view.php | 25 + install.sql | 230 + plugin/dev/base64/App.php | 17 + plugin/dev/base64/index.html | 85 + plugin/dev/byte_calc/App.php | 17 + plugin/dev/byte_calc/index.html | 110 + plugin/dev/code_css/App.php | 17 + plugin/dev/code_css/index.html | 72 + plugin/dev/code_html/App.php | 17 + plugin/dev/code_html/index.html | 108 + plugin/dev/code_js/App.php | 17 + plugin/dev/code_js/index.html | 98 + plugin/dev/decode/App.php | 17 + plugin/dev/decode/index.html | 198 + plugin/dev/encrypt/App.php | 17 + plugin/dev/encrypt/index.html | 109 + plugin/dev/github/App.php | 17 + plugin/dev/github/index.html | 142 + plugin/dev/hex_convert/App.php | 17 + plugin/dev/hex_convert/index.html | 169 + plugin/dev/json/App.php | 17 + plugin/dev/json/index.html | 73 + plugin/dev/linux_command/App.php | 17 + plugin/dev/linux_command/index.html | 123 + plugin/dev/markdown/App.php | 17 + plugin/dev/markdown/index.html | 48 + plugin/dev/mime_type/App.php | 17 + plugin/dev/mime_type/index.html | 2629 ++++ plugin/dev/rgb_color/App.php | 17 + plugin/dev/rgb_color/index.html | 2318 ++++ plugin/dev/rsa/App.php | 256 + plugin/dev/rsa/index.html | 388 + plugin/dev/uuid/App.php | 17 + plugin/dev/uuid/index.html | 122 + plugin/fun/alipay_arrival/App.php | 17 + plugin/fun/alipay_arrival/index.html | 151 + plugin/fun/ascii_art/App.php | 17 + plugin/fun/ascii_art/index.html | 143 + plugin/fun/bandwidth_waste/App.php | 17 + plugin/fun/bandwidth_waste/index.html | 214 + plugin/fun/bullshit_generator/App.php | 17 + plugin/fun/bullshit_generator/index.html | 273 + plugin/fun/piano/App.php | 17 + plugin/fun/piano/index.html | 27 + plugin/fun/speech_synthesis/App.php | 17 + plugin/fun/speech_synthesis/index.html | 113 + plugin/utility/bankcard/App.php | 50 + plugin/utility/bankcard/bank.json | 1 + plugin/utility/bankcard/index.html | 96 + plugin/utility/bili_danmu/App.php | 103 + plugin/utility/bili_danmu/index.html | 166 + plugin/utility/bili_video/App.php | 157 + plugin/utility/bili_video/index.html | 205 + plugin/utility/emoji/App.php | 17 + plugin/utility/emoji/index.html | 1519 +++ plugin/utility/file_hash/App.php | 17 + plugin/utility/file_hash/index.html | 223 + plugin/utility/idcard/App.php | 124 + plugin/utility/idcard/data.php | 7016 ++++++++++ plugin/utility/idcard/index.html | 92 + plugin/utility/image2base64/App.php | 17 + plugin/utility/image2base64/index.html | 124 + plugin/utility/image_editor/App.php | 17 + plugin/utility/image_editor/index.html | 181 + plugin/utility/imghosting/App.php | 97 + plugin/utility/imghosting/api.php | 8 + plugin/utility/imghosting/api/cdn58.php | 28 + plugin/utility/imghosting/api/dianping.php | 64 + plugin/utility/imghosting/api/imgdd.php | 28 + plugin/utility/imghosting/api/netease.php | 28 + plugin/utility/imghosting/api/oppo.php | 28 + plugin/utility/imghosting/api/pngcm.php | 31 + plugin/utility/imghosting/api/vipkid.php | 28 + plugin/utility/imghosting/index.html | 329 + plugin/utility/mobile/App.php | 49 + plugin/utility/mobile/index.html | 93 + plugin/utility/qrcode/App.php | 17 + plugin/utility/qrcode/index.html | 172 + plugin/utility/rand_password/App.php | 17 + plugin/utility/rand_password/index.html | 179 + plugin/utility/short_url/App.php | 49 + plugin/utility/short_url/api.php | 8 + plugin/utility/short_url/api/d_naccl_top.php | 25 + plugin/utility/short_url/api/dwz_tax.php | 30 + plugin/utility/short_url/api/gg_gg.php | 25 + plugin/utility/short_url/api/is_gd.php | 23 + plugin/utility/short_url/api/lnks_tools.php | 22 + plugin/utility/short_url/api/moelink_org.php | 26 + plugin/utility/short_url/api/p_sogou_com.php | 20 + plugin/utility/short_url/api/suo_yt.php | 26 + plugin/utility/short_url/api/tinyurl_com.php | 22 + plugin/utility/short_url/api/zm_cx.php | 26 + plugin/utility/short_url/index.html | 168 + plugin/utility/special_symbols/App.php | 17 + plugin/utility/special_symbols/index.html | 1787 +++ plugin/utility/sport/App.php | 55 + plugin/utility/sport/XiaomiSport.php | 109 + plugin/utility/sport/index.html | 115 + plugin/utility/str_hash/App.php | 17 + plugin/utility/str_hash/index.html | 94 + plugin/utility/text_count/App.php | 17 + plugin/utility/text_count/index.html | 221 + plugin/utility/timestamp/App.php | 17 + plugin/utility/timestamp/index.html | 176 + plugin/utility/unicloud/App.php | 87 + plugin/utility/unicloud/UnicloudClient.php | 144 + plugin/utility/unicloud/config.php | 5 + plugin/utility/unicloud/index.html | 312 + plugin/utility/unshorturl/App.php | 62 + plugin/utility/unshorturl/index.html | 126 + plugin/utility/videoparse/App.php | 52 + plugin/utility/videoparse/index.html | 145 + plugin/utility/wbimg/App.php | 17 + plugin/utility/wbimg/index.html | 105 + plugin/utility/zh_convert/App.php | 17 + plugin/utility/zh_convert/index.html | 98 + plugin/web/checkurl/App.php | 150 + plugin/web/checkurl/index.html | 129 + plugin/web/dns/App.php | 90 + plugin/web/dns/index.html | 170 + plugin/web/favicon/App.php | 17 + plugin/web/favicon/index.html | 72 + plugin/web/http/App.php | 52 + plugin/web/http/index.html | 25 + plugin/web/http_status/App.php | 67 + plugin/web/http_status/index.html | 144 + plugin/web/icp/App.php | 151 + plugin/web/icp/index.html | 200 + plugin/web/icp/python/cmd.txt | 12 + plugin/web/icp/python/icp.py | 165 + plugin/web/icp/python/server.py | 34 + plugin/web/ip/App.php | 97 + plugin/web/ip/api.php | 8 + plugin/web/ip/api/amap.php | 36 + plugin/web/ip/api/baidu.php | 24 + plugin/web/ip/api/baota.php | 23 + plugin/web/ip/api/chunzhen.php | 22 + plugin/web/ip/api/ip138.php | 68 + plugin/web/ip/api/ip2regoin.php | 26 + plugin/web/ip/api/ipapi.php | 25 + plugin/web/ip/api/ipip.php | 23 + plugin/web/ip/api/pconline.php | 24 + plugin/web/ip/api/taobao.php | 26 + plugin/web/ip/api/tencent.php | 27 + plugin/web/ip/index.html | 233 + plugin/web/ip_num/App.php | 17 + plugin/web/ip_num/index.html | 87 + plugin/web/punycode/App.php | 17 + plugin/web/punycode/index.html | 94 + plugin/web/viewhtml/App.php | 115 + plugin/web/viewhtml/index.html | 264 + plugin/web/whois/App.php | 50 + plugin/web/whois/index.html | 136 + plugin/wqq/friend_check/App.php | 42 + plugin/wqq/friend_check/index.html | 304 + plugin/wqq/group_announce/App.php | 86 + plugin/wqq/group_announce/index.html | 143 + plugin/wqq/group_dismiss/App.php | 52 + plugin/wqq/group_dismiss/index.html | 55 + plugin/wqq/group_join/App.php | 52 + plugin/wqq/group_join/index.html | 74 + plugin/wqq/group_members/App.php | 59 + plugin/wqq/group_members/index.html | 107 + plugin/wqq/online_device/App.php | 52 + plugin/wqq/online_device/index.html | 128 + plugin/wqq/qqchat/App.php | 18 + plugin/wqq/qqchat/index.html | 86 + plugin/wqq/qqlevel/App.php | 94 + plugin/wqq/qqlevel/index.html | 117 + plugin/wqq/setqqnick/App.php | 49 + plugin/wqq/setqqnick/index.html | 55 + public/.htaccess | 8 + public/404.html | 229 + public/admin/css/layuimini.css | 927 ++ public/admin/css/public.css | 70 + public/admin/css/themes/default.css | 95 + public/admin/images/bg.jpg | Bin 0 -> 26174 bytes public/admin/images/captcha.jpg | Bin 0 -> 2493 bytes public/admin/images/favicon.ico | Bin 0 -> 4286 bytes public/admin/images/home.png | Bin 0 -> 149782 bytes public/admin/images/icon-login.png | Bin 0 -> 2791 bytes public/admin/images/loginbg.png | Bin 0 -> 687033 bytes public/admin/index.html | 179 + public/admin/js/api.js | 76 + public/admin/js/common.js | 113 + public/admin/js/lay-config.js | 30 + public/admin/js/lay-module/echarts/echarts.js | 19 + .../js/lay-module/echarts/echartsTheme.js | 492 + .../js/lay-module/iconPicker/iconPickerFa.js | 399 + public/admin/js/lay-module/layarea/layarea.js | 4040 ++++++ .../js/lay-module/layuimini/miniAdmin.js | 351 + .../admin/js/lay-module/layuimini/miniMenu.js | 250 + .../admin/js/lay-module/layuimini/miniTab.js | 583 + .../js/lay-module/layuimini/miniTheme.js | 473 + public/admin/js/lay-module/step-lay/step.css | 79 + public/admin/js/lay-module/step-lay/step.js | 101 + .../js/lay-module/tableSelect/tableSelect.js | 272 + .../js/lay-module/treetable-lay/treetable.css | 18 + .../js/lay-module/treetable-lay/treetable.js | 206 + .../lay-module/wangEditor/fonts/w-e-icon.woff | Bin 0 -> 6224 bytes .../js/lay-module/wangEditor/wangEditor.css | 411 + .../js/lay-module/wangEditor/wangEditor.js | 4678 +++++++ .../lay-module/wangEditor/wangEditor.min.css | 1 + .../lay-module/wangEditor/wangEditor.min.js | 4 + .../wangEditor/wangEditor.min.js.map | 1 + .../jq-module/jquery.particleground.min.js | 195 + public/admin/lib/jq-module/paigusu.min.js | 1 + .../jq-module/zyupload/zyupload-1.0.0.min.css | 2 + .../jq-module/zyupload/zyupload-1.0.0.min.js | 17 + public/admin/login.html | 110 + public/admin/page/404.html | 110 + public/admin/page/account.html | 101 + public/admin/page/category.html | 239 + public/admin/page/category/add.html | 84 + public/admin/page/category/edit.html | 99 + public/admin/page/comment.html | 238 + public/admin/page/comment/edit.html | 99 + public/admin/page/dashboard.html | 225 + public/admin/page/link.html | 243 + public/admin/page/link/add.html | 82 + public/admin/page/link/edit.html | 97 + public/admin/page/plugin.html | 331 + public/admin/page/plugin/add.html | 164 + public/admin/page/plugin/edit.html | 173 + public/admin/page/plugin/install.html | 213 + public/admin/page/system.html | 236 + public/admin/page/update.html | 167 + public/admin/page/uploadlog.html | 154 + public/admin/page/user.html | 227 + public/assets/alipay_arrival/diaoluo_da.mp3 | Bin 0 -> 25569 bytes public/assets/alipay_arrival/tts_0.mp3 | Bin 0 -> 2739 bytes public/assets/alipay_arrival/tts_1.mp3 | Bin 0 -> 1903 bytes public/assets/alipay_arrival/tts_2.mp3 | Bin 0 -> 2008 bytes public/assets/alipay_arrival/tts_3.mp3 | Bin 0 -> 2530 bytes public/assets/alipay_arrival/tts_4.mp3 | Bin 0 -> 2321 bytes public/assets/alipay_arrival/tts_5.mp3 | Bin 0 -> 2321 bytes public/assets/alipay_arrival/tts_6.mp3 | Bin 0 -> 2217 bytes public/assets/alipay_arrival/tts_7.mp3 | Bin 0 -> 2739 bytes public/assets/alipay_arrival/tts_8.mp3 | Bin 0 -> 2321 bytes public/assets/alipay_arrival/tts_9.mp3 | Bin 0 -> 2426 bytes public/assets/alipay_arrival/tts_dot.mp3 | Bin 0 -> 2217 bytes public/assets/alipay_arrival/tts_hundred.mp3 | Bin 0 -> 2739 bytes .../alipay_arrival/tts_koubei_daibo.mp3 | Bin 0 -> 87885 bytes public/assets/alipay_arrival/tts_success.mp3 | Bin 0 -> 5874 bytes public/assets/alipay_arrival/tts_ten.mp3 | Bin 0 -> 2739 bytes .../assets/alipay_arrival/tts_ten_million.mp3 | Bin 0 -> 2426 bytes .../alipay_arrival/tts_ten_thousand.mp3 | Bin 0 -> 2426 bytes public/assets/alipay_arrival/tts_thousand.mp3 | Bin 0 -> 2530 bytes public/assets/alipay_arrival/tts_yuan.mp3 | Bin 0 -> 2635 bytes .../app.218482323009eabe26ecb9ee84758303.css | 1 + public/assets/piano/static/css/share.min.css | 1 + public/assets/piano/static/data/goods.json | 92 + public/assets/piano/static/data/links.json | 41 + public/assets/piano/static/fonts/iconfont.eot | Bin 0 -> 9580 bytes public/assets/piano/static/fonts/iconfont.svg | 88 + public/assets/piano/static/fonts/iconfont.ttf | Bin 0 -> 9296 bytes .../assets/piano/static/fonts/iconfont.woff | Bin 0 -> 6364 bytes .../static/goodsImgs/05d7da9f7a83f31b.jpg | Bin 0 -> 43680 bytes .../static/goodsImgs/28026c18dc573bd5.jpg | Bin 0 -> 34558 bytes .../static/goodsImgs/2817ecd689819de3.jpg | Bin 0 -> 45598 bytes .../static/goodsImgs/3c59fe8440c05e15.jpg | Bin 0 -> 50553 bytes .../static/goodsImgs/5aa22eceN5c6ce109.jpg | Bin 0 -> 37245 bytes .../static/goodsImgs/5b3b338fNad1559cd.jpg | Bin 0 -> 75322 bytes .../static/goodsImgs/5d4808c716acb007.jpg | Bin 0 -> 96540 bytes .../static/goodsImgs/b8b5a95542c993d2.jpg | Bin 0 -> 20402 bytes .../static/goodsImgs/bc56ea5a17a35998.jpg | Bin 0 -> 92026 bytes .../static/goodsImgs/ebfbb3b6ba6b7e3f.jpg | Bin 0 -> 54601 bytes .../assets/piano/static/images/bg_default.jpg | Bin 0 -> 72626 bytes .../assets/piano/static/images/bg_eiffel.jpg | Bin 0 -> 115248 bytes public/assets/piano/static/images/bg_girl.jpg | Bin 0 -> 82286 bytes .../assets/piano/static/img/aliqr.7bf1e6c.png | Bin 0 -> 15963 bytes .../piano/static/img/sprite.3c2f760.png | Bin 0 -> 11667 bytes .../assets/piano/static/img/wxqr.543cb70.png | Bin 0 -> 15845 bytes .../piano/static/js/0.8f4fc729fc7dd13c1151.js | 7 + .../static/js/app.7e44b3de77b6cf019159.js | 1 + .../piano/static/js/jquery.share.min.js | 1 + public/assets/piano/static/js/jquery3.min.js | 2 + public/assets/piano/static/js/livere.min.js | 3 + .../js/manifest.1a7f612c7ba031958958.js | 1 + .../piano/static/js/social-share.min.js | 1 + .../static/js/vendor.d9a8a3e67a2e29a049b4.js | 11 + public/assets/piano/static/midi/晴天.mid | Bin 0 -> 10426 bytes public/assets/piano/static/midi/等你下课.mid | Bin 0 -> 11581 bytes .../assets/piano/static/samples/piano/a48.mp3 | Bin 0 -> 32577 bytes .../assets/piano/static/samples/piano/a49.mp3 | Bin 0 -> 46401 bytes .../assets/piano/static/samples/piano/a50.mp3 | Bin 0 -> 32289 bytes .../assets/piano/static/samples/piano/a51.mp3 | Bin 0 -> 35337 bytes .../assets/piano/static/samples/piano/a52.mp3 | Bin 0 -> 34977 bytes .../assets/piano/static/samples/piano/a53.mp3 | Bin 0 -> 34401 bytes .../assets/piano/static/samples/piano/a54.mp3 | Bin 0 -> 33009 bytes .../assets/piano/static/samples/piano/a55.mp3 | Bin 0 -> 33537 bytes .../assets/piano/static/samples/piano/a56.mp3 | Bin 0 -> 33297 bytes .../assets/piano/static/samples/piano/a57.mp3 | Bin 0 -> 32673 bytes .../assets/piano/static/samples/piano/a65.mp3 | Bin 0 -> 34569 bytes .../assets/piano/static/samples/piano/a66.mp3 | Bin 0 -> 29673 bytes .../assets/piano/static/samples/piano/a67.mp3 | Bin 0 -> 27993 bytes .../assets/piano/static/samples/piano/a68.mp3 | Bin 0 -> 24969 bytes .../assets/piano/static/samples/piano/a69.mp3 | Bin 0 -> 34497 bytes .../assets/piano/static/samples/piano/a70.mp3 | Bin 0 -> 33753 bytes .../assets/piano/static/samples/piano/a71.mp3 | Bin 0 -> 32841 bytes .../assets/piano/static/samples/piano/a72.mp3 | Bin 0 -> 32409 bytes .../assets/piano/static/samples/piano/a73.mp3 | Bin 0 -> 32649 bytes .../assets/piano/static/samples/piano/a74.mp3 | Bin 0 -> 31521 bytes .../assets/piano/static/samples/piano/a75.mp3 | Bin 0 -> 31785 bytes .../assets/piano/static/samples/piano/a76.mp3 | Bin 0 -> 28665 bytes .../assets/piano/static/samples/piano/a77.mp3 | Bin 0 -> 25353 bytes .../assets/piano/static/samples/piano/a78.mp3 | Bin 0 -> 28185 bytes .../assets/piano/static/samples/piano/a79.mp3 | Bin 0 -> 35241 bytes .../assets/piano/static/samples/piano/a80.mp3 | Bin 0 -> 32409 bytes .../assets/piano/static/samples/piano/a81.mp3 | Bin 0 -> 34233 bytes .../assets/piano/static/samples/piano/a82.mp3 | Bin 0 -> 32889 bytes .../assets/piano/static/samples/piano/a83.mp3 | Bin 0 -> 28713 bytes .../assets/piano/static/samples/piano/a84.mp3 | Bin 0 -> 33825 bytes .../assets/piano/static/samples/piano/a85.mp3 | Bin 0 -> 32841 bytes .../assets/piano/static/samples/piano/a86.mp3 | Bin 0 -> 31017 bytes .../assets/piano/static/samples/piano/a87.mp3 | Bin 0 -> 32769 bytes .../assets/piano/static/samples/piano/a88.mp3 | Bin 0 -> 31881 bytes .../assets/piano/static/samples/piano/a89.mp3 | Bin 0 -> 27753 bytes .../assets/piano/static/samples/piano/a90.mp3 | Bin 0 -> 29169 bytes .../assets/piano/static/samples/piano/b49.mp3 | Bin 0 -> 35769 bytes .../assets/piano/static/samples/piano/b50.mp3 | Bin 0 -> 33897 bytes .../assets/piano/static/samples/piano/b52.mp3 | Bin 0 -> 36321 bytes .../assets/piano/static/samples/piano/b53.mp3 | Bin 0 -> 35289 bytes .../assets/piano/static/samples/piano/b54.mp3 | Bin 0 -> 32049 bytes .../assets/piano/static/samples/piano/b56.mp3 | Bin 0 -> 34425 bytes .../assets/piano/static/samples/piano/b57.mp3 | Bin 0 -> 33825 bytes .../assets/piano/static/samples/piano/b66.mp3 | Bin 0 -> 25089 bytes .../assets/piano/static/samples/piano/b67.mp3 | Bin 0 -> 33561 bytes .../assets/piano/static/samples/piano/b68.mp3 | Bin 0 -> 31569 bytes .../assets/piano/static/samples/piano/b69.mp3 | Bin 0 -> 32505 bytes .../assets/piano/static/samples/piano/b71.mp3 | Bin 0 -> 30609 bytes .../assets/piano/static/samples/piano/b72.mp3 | Bin 0 -> 34857 bytes .../assets/piano/static/samples/piano/b73.mp3 | Bin 0 -> 32073 bytes .../assets/piano/static/samples/piano/b74.mp3 | Bin 0 -> 29817 bytes .../assets/piano/static/samples/piano/b76.mp3 | Bin 0 -> 28473 bytes .../assets/piano/static/samples/piano/b79.mp3 | Bin 0 -> 29409 bytes .../assets/piano/static/samples/piano/b80.mp3 | Bin 0 -> 30033 bytes .../assets/piano/static/samples/piano/b81.mp3 | Bin 0 -> 29721 bytes .../assets/piano/static/samples/piano/b83.mp3 | Bin 0 -> 44217 bytes .../assets/piano/static/samples/piano/b84.mp3 | Bin 0 -> 27465 bytes .../assets/piano/static/samples/piano/b86.mp3 | Bin 0 -> 23961 bytes .../assets/piano/static/samples/piano/b87.mp3 | Bin 0 -> 29193 bytes .../assets/piano/static/samples/piano/b89.mp3 | Bin 0 -> 33129 bytes .../assets/piano/static/samples/piano/b90.mp3 | Bin 0 -> 31785 bytes .../assets/piano/static/xmlscore/canon.json | 1 + .../static/xmlscore/one_summers_day.json | 1 + .../piano/static/xmlscore/songs_for_you.json | 1 + .../assets/piano/static/xmlscore/七里香.json | 1 + .../piano/static/xmlscore/下一个天亮.json | 1 + .../piano/static/xmlscore/千与千寻.json | 1 + public/assets/piano/static/xmlscore/后来.json | 1 + .../piano/static/xmlscore/告白气球.json | 1 + public/assets/piano/static/xmlscore/成都.json | 1 + .../piano/static/xmlscore/时间煮雨.json | 1 + .../piano/static/xmlscore/海角七号.json | 1 + .../piano/static/xmlscore/牢不可破的联盟.json | 1 + .../assets/piano/static/xmlscore/简单爱.json | 1 + .../piano/static/xmlscore/纸短情长.json | 1 + .../piano/static/xmlscore/蒲公英的约定.json | 1 + public/assets/viewhtml/prism.css | 3 + public/assets/viewhtml/prism.js | 7 + public/favicon.ico | Bin 0 -> 546 bytes public/index.php | 23 + public/robots.txt | 2 + public/static/css/dashlite.css | 10922 ++++++++++++++++ public/static/css/pages/chats.css | 352 + public/static/css/pages/file-manager.css | 352 + public/static/css/pages/inbox.css | 240 + public/static/css/pages/invest.css | 382 + public/static/css/pages/messages.css | 129 + public/static/css/style.css | 141 + public/static/fonts/Nioicon.eot | Bin 0 -> 307000 bytes public/static/fonts/Nioicon.svg | 1041 ++ public/static/fonts/Nioicon.ttf | Bin 0 -> 306836 bytes public/static/fonts/Nioicon.woff | Bin 0 -> 306912 bytes public/static/images/back.png | Bin 0 -> 22214 bytes public/static/images/background.jpg | Bin 0 -> 213190 bytes public/static/images/error.svg | 22 + public/static/images/info.svg | 18 + public/static/images/install_background.jpg | Bin 0 -> 571017 bytes public/static/images/load.gif | Bin 0 -> 2928 bytes public/static/images/logo.png | Bin 0 -> 6824 bytes public/static/images/plugin_default.png | Bin 0 -> 9945 bytes public/static/images/qq.svg | 1 + public/static/images/success.svg | 18 + public/static/images/user.png | Bin 0 -> 15940 bytes public/static/images/wechat.svg | 1 + public/static/js/bilibili_crc2mid.js | 110 + public/static/js/common.js | 97 + public/static/js/crc32.js | 18 + public/static/js/nioapp.min.js | 1 + public/static/js/qqlogin.js | 161 + public/static/js/script.js | 916 ++ public/tool/bdpan/assets/img/baiduid.png | Bin 0 -> 35017 bytes public/tool/bdpan/assets/img/bduss.png | Bin 0 -> 46142 bytes public/tool/bdpan/assets/img/ico_success.png | Bin 0 -> 2153 bytes public/tool/bdpan/assets/img/ico_tip.png | Bin 0 -> 2177 bytes public/tool/bdpan/assets/img/load.gif | Bin 0 -> 2928 bytes public/tool/bdpan/assets/js/crc32.js | 18 + public/tool/bdpan/assets/js/html5hash.js | 211 + public/tool/bdpan/assets/js/md5.js | 13 + public/tool/bdpan/assets/tool/bduss.crx | Bin 0 -> 1410780 bytes public/tool/bdpan/baidupan.class.php | 176 + public/tool/bdpan/create.html | 126 + public/tool/bdpan/do.php | 37 + public/tool/bdpan/favicon.ico | Bin 0 -> 4286 bytes public/tool/bdpan/help.html | 89 + public/tool/bdpan/inc.php | 38 + public/tool/bdpan/index.html | 210 + public/tool/bduss/base.js | 304 + public/tool/bduss/index.html | 315 + public/tool/bduss/index2.html | 117 + public/tool/bduss/index3.html | 252 + public/tool/bduss/index4.html | 175 + public/tool/bduss/index5.html | 121 + public/tool/bduss/login.class.php | 341 + public/tool/bduss/login.php | 46 + public/tool/bduss/qqlogin.class.php | 202 + public/tool/bduss/qqlogin.php | 21 + public/tool/bduss/qrcode.php | 29 + public/tool/gq_avatar/index.php | 192 + public/tool/gq_avatar/static/css/jqery.css | 1 + .../tool/gq_avatar/static/img/20190829-bg.png | Bin 0 -> 50779 bytes .../gq_avatar/static/img/20190829-btn.png | Bin 0 -> 960 bytes .../static/img/20190829-longpress.svg | 21 + .../gq_avatar/static/img/20190906-logo2.png | Bin 0 -> 24928 bytes .../gq_avatar/static/img/20190906-logo3.png | Bin 0 -> 16506 bytes public/tool/gq_avatar/static/img/btn1.png | Bin 0 -> 56170 bytes public/tool/gq_avatar/static/img/btn3.png | Bin 0 -> 11759 bytes public/tool/gq_avatar/static/img/hat1.png | Bin 0 -> 99168 bytes public/tool/gq_avatar/static/img/hat10.png | Bin 0 -> 36050 bytes public/tool/gq_avatar/static/img/hat11.png | Bin 0 -> 20243 bytes public/tool/gq_avatar/static/img/hat12.png | Bin 0 -> 44630 bytes public/tool/gq_avatar/static/img/hat13.png | Bin 0 -> 19626 bytes public/tool/gq_avatar/static/img/hat14.png | Bin 0 -> 14036 bytes public/tool/gq_avatar/static/img/hat15.png | Bin 0 -> 15926 bytes public/tool/gq_avatar/static/img/hat16.png | Bin 0 -> 43899 bytes public/tool/gq_avatar/static/img/hat17.png | Bin 0 -> 20522 bytes public/tool/gq_avatar/static/img/hat18.png | Bin 0 -> 25899 bytes public/tool/gq_avatar/static/img/hat19.png | Bin 0 -> 51635 bytes public/tool/gq_avatar/static/img/hat2.png | Bin 0 -> 14851 bytes public/tool/gq_avatar/static/img/hat20.png | Bin 0 -> 44839 bytes public/tool/gq_avatar/static/img/hat21.png | Bin 0 -> 43334 bytes public/tool/gq_avatar/static/img/hat22.png | Bin 0 -> 22466 bytes public/tool/gq_avatar/static/img/hat23.png | Bin 0 -> 44258 bytes public/tool/gq_avatar/static/img/hat24.png | Bin 0 -> 79599 bytes public/tool/gq_avatar/static/img/hat25.png | Bin 0 -> 48722 bytes public/tool/gq_avatar/static/img/hat3.png | Bin 0 -> 24914 bytes public/tool/gq_avatar/static/img/hat4.png | Bin 0 -> 103155 bytes public/tool/gq_avatar/static/img/hat5.png | Bin 0 -> 519329 bytes public/tool/gq_avatar/static/img/hat6.png | Bin 0 -> 55902 bytes public/tool/gq_avatar/static/img/hat7.png | Bin 0 -> 84135 bytes public/tool/gq_avatar/static/img/hat8.png | Bin 0 -> 24447 bytes public/tool/gq_avatar/static/img/hat9.png | Bin 0 -> 29092 bytes public/tool/gq_avatar/static/img/logo.png | Bin 0 -> 40084 bytes public/tool/gq_avatar/static/img/save-btn.png | Bin 0 -> 31775 bytes public/tool/gq_avatar/static/js/fabric.min.js | 1 + public/tool/mysql/Change_Log.txt | 50 + public/tool/mysql/LICENSE.txt | 340 + public/tool/mysql/README.txt | 24 + public/tool/mysql/addcol.php | 301 + public/tool/mysql/addtable.php | 292 + public/tool/mysql/br.php | 183 + public/tool/mysql/br2.php | 44 + public/tool/mysql/col.php | 20 + public/tool/mysql/config.php | 25 + public/tool/mysql/copyc.php | 31 + public/tool/mysql/copyt.php | 40 + public/tool/mysql/data/default.css | 62 + public/tool/mysql/data/index.php | 30 + public/tool/mysql/default.css | 62 + public/tool/mysql/drop_rec.php | 31 + public/tool/mysql/dropc.php | 28 + public/tool/mysql/dropt.php | 31 + public/tool/mysql/edit_col.php | 293 + public/tool/mysql/edit_rec.php | 75 + public/tool/mysql/export.php | 108 + public/tool/mysql/foot.php | 5 + public/tool/mysql/head.php | 14 + public/tool/mysql/import.php | 62 + public/tool/mysql/in.php | 53 + public/tool/mysql/index.php | 37 + public/tool/mysql/lang/Read_Me.txt | 9 + public/tool/mysql/lang/index.php | 172 + public/tool/mysql/mdelc.php | 45 + public/tool/mysql/mdelcl.php | 49 + public/tool/mysql/mtb.php | 89 + public/tool/mysql/pagination.class.php | 111 + public/tool/mysql/rename.php | 30 + public/tool/mysql/search.php | 354 + public/tool/mysql/sql.php | 39 + public/tool/mysql/table.php | 70 + public/tool/mysql/tables.php | 69 + public/tool/mysql/trun.php | 29 + public/tool/mysql/upl.php | 108 + public/tool/newsid/cap_frame.php | 36 + public/tool/newsid/getsid.js | 272 + public/tool/newsid/index.html | 65 + public/tool/newsid/index2.html | 40 + public/tool/newsid/login.class.php | 513 + public/tool/newsid/login.js | 919 ++ public/tool/newsid/login.php | 34 + .../newsid/qrcodedecoder/Zxing/Binarizer.php | 96 + .../qrcodedecoder/Zxing/BinaryBitmap.php | 166 + .../qrcodedecoder/Zxing/ChecksumException.php | 42 + .../Zxing/Common/AbstractEnum.php | 104 + .../qrcodedecoder/Zxing/Common/BitArray.php | 422 + .../qrcodedecoder/Zxing/Common/BitMatrix.php | 458 + .../qrcodedecoder/Zxing/Common/BitSource.php | 118 + .../Zxing/Common/CharacterSetECI.php | 158 + .../Zxing/Common/DecoderResult.php | 122 + .../Zxing/Common/DefaultGridSampler.php | 93 + .../Zxing/Common/Detector/MathUtils.php | 49 + .../Detector/MonochromeRectangleDetector.php | 234 + .../Zxing/Common/DetectorResult.php | 47 + .../Zxing/Common/GlobalHistogramBinarizer.php | 207 + .../Zxing/Common/GridSampler.php | 188 + .../Zxing/Common/HybridBinarizer.php | 264 + .../Zxing/Common/PerspectiveTransform.php | 175 + .../Zxing/Common/Reedsolomon/GenericGF.php | 198 + .../Common/Reedsolomon/GenericGFPoly.php | 289 + .../Common/Reedsolomon/ReedSolomonDecoder.php | 201 + .../Reedsolomon/ReedSolomonException.php | 28 + .../Zxing/Common/customFunctions.php | 101 + .../qrcodedecoder/Zxing/FormatException.php | 49 + .../qrcodedecoder/Zxing/GDLuminanceSource.php | 176 + .../Zxing/IMagickLuminanceSource.php | 150 + .../qrcodedecoder/Zxing/LuminanceSource.php | 171 + .../qrcodedecoder/Zxing/NotFoundException.php | 38 + .../Zxing/PlanarYUVLuminanceSource.php | 182 + .../newsid/qrcodedecoder/Zxing/QrReader.php | 105 + .../Zxing/Qrcode/Decoder/BitMatrixParser.php | 263 + .../Zxing/Qrcode/Decoder/DataBlock.php | 129 + .../Zxing/Qrcode/Decoder/DataMask.php | 196 + .../Qrcode/Decoder/DecodedBitStreamParser.php | 355 + .../Zxing/Qrcode/Decoder/Decoder.php | 213 + .../Qrcode/Decoder/ErrorCorrectionLevel.php | 91 + .../Qrcode/Decoder/FormatInformation.php | 190 + .../Zxing/Qrcode/Decoder/Mode.php | 128 + .../Qrcode/Decoder/QRCodeDecoderMetaData.php | 23 + .../Zxing/Qrcode/Decoder/Version.php | 619 + .../Qrcode/Detector/AlignmentPattern.php | 65 + .../Detector/AlignmentPatternFinder.php | 286 + .../Zxing/Qrcode/Detector/Detector.php | 420 + .../Zxing/Qrcode/Detector/FinderPattern.php | 86 + .../Qrcode/Detector/FinderPatternFinder.php | 699 + .../Qrcode/Detector/FinderPatternInfo.php | 53 + .../Zxing/Qrcode/QRCodeReader.php | 222 + .../Zxing/RGBLuminanceSource.php | 309 + .../newsid/qrcodedecoder/Zxing/Reader.php | 10 + .../qrcodedecoder/Zxing/ReaderException.php | 50 + .../newsid/qrcodedecoder/Zxing/Result.php | 135 + .../qrcodedecoder/Zxing/ResultPoint.php | 155 + .../tool/newsid/qrcodedecoder/bootstrap.php | 11 + public/tool/newsid/qrlogin.js | 159 + public/tool/qq/del.php | 82 + public/tool/qq/dx.php | 88 + route/admin.php | 64 + route/index.php | 42 + route/plugin.php | 52 + runtime/.gitignore | 4 + think | 10 + view/dispatch_jump.html | 60 + view/index/default/auth/login.html | 34 + view/index/default/auth/qqlogin.html | 42 + view/index/default/common/footer.html | 9 + view/index/default/common/header.html | 112 + view/index/default/common/layout.html | 31 + view/index/default/common/plugin_layout.html | 59 + view/index/default/index/comment.html | 186 + view/index/default/index/history.html | 168 + view/index/default/index/index.html | 188 + view/index/default/index/stars.html | 168 + view/index/default/template/iframe.html | 20 + view/index/default/template/redirect.html | 34 + view/install/index.html | 311 + 640 files changed, 87745 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 README.md create mode 100644 app/.htaccess create mode 100644 app/AppService.php create mode 100644 app/BaseController.php create mode 100644 app/ExceptionHandle.php create mode 100644 app/Plugin.php create mode 100644 app/Request.php create mode 100644 app/command/Cron.php create mode 100644 app/command/PluginPackage.php create mode 100644 app/common.php create mode 100644 app/controller/Auth.php create mode 100644 app/controller/Base.php create mode 100644 app/controller/Index.php create mode 100644 app/controller/Install.php create mode 100644 app/controller/admin/Category.php create mode 100644 app/controller/admin/Comment.php create mode 100644 app/controller/admin/Link.php create mode 100644 app/controller/admin/Menu.php create mode 100644 app/controller/admin/Plugin.php create mode 100644 app/controller/admin/System.php create mode 100644 app/controller/admin/Update.php create mode 100644 app/controller/admin/User.php create mode 100644 app/event.php create mode 100644 app/lib/BilibiliHelper.php create mode 100644 app/lib/EnvOperation.php create mode 100644 app/lib/ExecSQL.php create mode 100644 app/lib/GeetestLib.php create mode 100644 app/lib/Ip2Region.php create mode 100644 app/lib/IpLocation.php create mode 100644 app/lib/Oauth.php create mode 100644 app/lib/Plugin.php create mode 100644 app/lib/QQGroup.php create mode 100644 app/lib/QQLogin.php create mode 100644 app/lib/QQTool.php create mode 100644 app/lib/QQWry.dat create mode 100644 app/lib/XdbSearcher.php create mode 100644 app/middleware.php create mode 100644 app/middleware/AuthAdmin.php create mode 100644 app/middleware/AuthUser.php create mode 100644 app/middleware/LoadConfig.php create mode 100644 app/middleware/RefererCheck.php create mode 100644 app/middleware/ViewOutput.php create mode 100644 app/provider.php create mode 100644 app/service.php create mode 100644 app/service/ValidateService.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/cache.php create mode 100644 config/captcha.php create mode 100644 config/console.php create mode 100644 config/cookie.php create mode 100644 config/database.php create mode 100644 config/filesystem.php create mode 100644 config/lang.php create mode 100644 config/log.php create mode 100644 config/middleware.php create mode 100644 config/route.php create mode 100644 config/session.php create mode 100644 config/trace.php create mode 100644 config/version.php create mode 100644 config/view.php create mode 100644 install.sql create mode 100644 plugin/dev/base64/App.php create mode 100644 plugin/dev/base64/index.html create mode 100644 plugin/dev/byte_calc/App.php create mode 100644 plugin/dev/byte_calc/index.html create mode 100644 plugin/dev/code_css/App.php create mode 100644 plugin/dev/code_css/index.html create mode 100644 plugin/dev/code_html/App.php create mode 100644 plugin/dev/code_html/index.html create mode 100644 plugin/dev/code_js/App.php create mode 100644 plugin/dev/code_js/index.html create mode 100644 plugin/dev/decode/App.php create mode 100644 plugin/dev/decode/index.html create mode 100644 plugin/dev/encrypt/App.php create mode 100644 plugin/dev/encrypt/index.html create mode 100644 plugin/dev/github/App.php create mode 100644 plugin/dev/github/index.html create mode 100644 plugin/dev/hex_convert/App.php create mode 100644 plugin/dev/hex_convert/index.html create mode 100644 plugin/dev/json/App.php create mode 100644 plugin/dev/json/index.html create mode 100644 plugin/dev/linux_command/App.php create mode 100644 plugin/dev/linux_command/index.html create mode 100644 plugin/dev/markdown/App.php create mode 100644 plugin/dev/markdown/index.html create mode 100644 plugin/dev/mime_type/App.php create mode 100644 plugin/dev/mime_type/index.html create mode 100644 plugin/dev/rgb_color/App.php create mode 100644 plugin/dev/rgb_color/index.html create mode 100644 plugin/dev/rsa/App.php create mode 100644 plugin/dev/rsa/index.html create mode 100644 plugin/dev/uuid/App.php create mode 100644 plugin/dev/uuid/index.html create mode 100644 plugin/fun/alipay_arrival/App.php create mode 100644 plugin/fun/alipay_arrival/index.html create mode 100644 plugin/fun/ascii_art/App.php create mode 100644 plugin/fun/ascii_art/index.html create mode 100644 plugin/fun/bandwidth_waste/App.php create mode 100644 plugin/fun/bandwidth_waste/index.html create mode 100644 plugin/fun/bullshit_generator/App.php create mode 100644 plugin/fun/bullshit_generator/index.html create mode 100644 plugin/fun/piano/App.php create mode 100644 plugin/fun/piano/index.html create mode 100644 plugin/fun/speech_synthesis/App.php create mode 100644 plugin/fun/speech_synthesis/index.html create mode 100644 plugin/utility/bankcard/App.php create mode 100644 plugin/utility/bankcard/bank.json create mode 100644 plugin/utility/bankcard/index.html create mode 100644 plugin/utility/bili_danmu/App.php create mode 100644 plugin/utility/bili_danmu/index.html create mode 100644 plugin/utility/bili_video/App.php create mode 100644 plugin/utility/bili_video/index.html create mode 100644 plugin/utility/emoji/App.php create mode 100644 plugin/utility/emoji/index.html create mode 100644 plugin/utility/file_hash/App.php create mode 100644 plugin/utility/file_hash/index.html create mode 100644 plugin/utility/idcard/App.php create mode 100644 plugin/utility/idcard/data.php create mode 100644 plugin/utility/idcard/index.html create mode 100644 plugin/utility/image2base64/App.php create mode 100644 plugin/utility/image2base64/index.html create mode 100644 plugin/utility/image_editor/App.php create mode 100644 plugin/utility/image_editor/index.html create mode 100644 plugin/utility/imghosting/App.php create mode 100644 plugin/utility/imghosting/api.php create mode 100644 plugin/utility/imghosting/api/cdn58.php create mode 100644 plugin/utility/imghosting/api/dianping.php create mode 100644 plugin/utility/imghosting/api/imgdd.php create mode 100644 plugin/utility/imghosting/api/netease.php create mode 100644 plugin/utility/imghosting/api/oppo.php create mode 100644 plugin/utility/imghosting/api/pngcm.php create mode 100644 plugin/utility/imghosting/api/vipkid.php create mode 100644 plugin/utility/imghosting/index.html create mode 100644 plugin/utility/mobile/App.php create mode 100644 plugin/utility/mobile/index.html create mode 100644 plugin/utility/qrcode/App.php create mode 100644 plugin/utility/qrcode/index.html create mode 100644 plugin/utility/rand_password/App.php create mode 100644 plugin/utility/rand_password/index.html create mode 100644 plugin/utility/short_url/App.php create mode 100644 plugin/utility/short_url/api.php create mode 100644 plugin/utility/short_url/api/d_naccl_top.php create mode 100644 plugin/utility/short_url/api/dwz_tax.php create mode 100644 plugin/utility/short_url/api/gg_gg.php create mode 100644 plugin/utility/short_url/api/is_gd.php create mode 100644 plugin/utility/short_url/api/lnks_tools.php create mode 100644 plugin/utility/short_url/api/moelink_org.php create mode 100644 plugin/utility/short_url/api/p_sogou_com.php create mode 100644 plugin/utility/short_url/api/suo_yt.php create mode 100644 plugin/utility/short_url/api/tinyurl_com.php create mode 100644 plugin/utility/short_url/api/zm_cx.php create mode 100644 plugin/utility/short_url/index.html create mode 100644 plugin/utility/special_symbols/App.php create mode 100644 plugin/utility/special_symbols/index.html create mode 100644 plugin/utility/sport/App.php create mode 100644 plugin/utility/sport/XiaomiSport.php create mode 100644 plugin/utility/sport/index.html create mode 100644 plugin/utility/str_hash/App.php create mode 100644 plugin/utility/str_hash/index.html create mode 100644 plugin/utility/text_count/App.php create mode 100644 plugin/utility/text_count/index.html create mode 100644 plugin/utility/timestamp/App.php create mode 100644 plugin/utility/timestamp/index.html create mode 100644 plugin/utility/unicloud/App.php create mode 100644 plugin/utility/unicloud/UnicloudClient.php create mode 100644 plugin/utility/unicloud/config.php create mode 100644 plugin/utility/unicloud/index.html create mode 100644 plugin/utility/unshorturl/App.php create mode 100644 plugin/utility/unshorturl/index.html create mode 100644 plugin/utility/videoparse/App.php create mode 100644 plugin/utility/videoparse/index.html create mode 100644 plugin/utility/wbimg/App.php create mode 100644 plugin/utility/wbimg/index.html create mode 100644 plugin/utility/zh_convert/App.php create mode 100644 plugin/utility/zh_convert/index.html create mode 100644 plugin/web/checkurl/App.php create mode 100644 plugin/web/checkurl/index.html create mode 100644 plugin/web/dns/App.php create mode 100644 plugin/web/dns/index.html create mode 100644 plugin/web/favicon/App.php create mode 100644 plugin/web/favicon/index.html create mode 100644 plugin/web/http/App.php create mode 100644 plugin/web/http/index.html create mode 100644 plugin/web/http_status/App.php create mode 100644 plugin/web/http_status/index.html create mode 100644 plugin/web/icp/App.php create mode 100644 plugin/web/icp/index.html create mode 100644 plugin/web/icp/python/cmd.txt create mode 100644 plugin/web/icp/python/icp.py create mode 100644 plugin/web/icp/python/server.py create mode 100644 plugin/web/ip/App.php create mode 100644 plugin/web/ip/api.php create mode 100644 plugin/web/ip/api/amap.php create mode 100644 plugin/web/ip/api/baidu.php create mode 100644 plugin/web/ip/api/baota.php create mode 100644 plugin/web/ip/api/chunzhen.php create mode 100644 plugin/web/ip/api/ip138.php create mode 100644 plugin/web/ip/api/ip2regoin.php create mode 100644 plugin/web/ip/api/ipapi.php create mode 100644 plugin/web/ip/api/ipip.php create mode 100644 plugin/web/ip/api/pconline.php create mode 100644 plugin/web/ip/api/taobao.php create mode 100644 plugin/web/ip/api/tencent.php create mode 100644 plugin/web/ip/index.html create mode 100644 plugin/web/ip_num/App.php create mode 100644 plugin/web/ip_num/index.html create mode 100644 plugin/web/punycode/App.php create mode 100644 plugin/web/punycode/index.html create mode 100644 plugin/web/viewhtml/App.php create mode 100644 plugin/web/viewhtml/index.html create mode 100644 plugin/web/whois/App.php create mode 100644 plugin/web/whois/index.html create mode 100644 plugin/wqq/friend_check/App.php create mode 100644 plugin/wqq/friend_check/index.html create mode 100644 plugin/wqq/group_announce/App.php create mode 100644 plugin/wqq/group_announce/index.html create mode 100644 plugin/wqq/group_dismiss/App.php create mode 100644 plugin/wqq/group_dismiss/index.html create mode 100644 plugin/wqq/group_join/App.php create mode 100644 plugin/wqq/group_join/index.html create mode 100644 plugin/wqq/group_members/App.php create mode 100644 plugin/wqq/group_members/index.html create mode 100644 plugin/wqq/online_device/App.php create mode 100644 plugin/wqq/online_device/index.html create mode 100644 plugin/wqq/qqchat/App.php create mode 100644 plugin/wqq/qqchat/index.html create mode 100644 plugin/wqq/qqlevel/App.php create mode 100644 plugin/wqq/qqlevel/index.html create mode 100644 plugin/wqq/setqqnick/App.php create mode 100644 plugin/wqq/setqqnick/index.html create mode 100644 public/.htaccess create mode 100644 public/404.html create mode 100644 public/admin/css/layuimini.css create mode 100644 public/admin/css/public.css create mode 100644 public/admin/css/themes/default.css create mode 100644 public/admin/images/bg.jpg create mode 100644 public/admin/images/captcha.jpg create mode 100644 public/admin/images/favicon.ico create mode 100644 public/admin/images/home.png create mode 100644 public/admin/images/icon-login.png create mode 100644 public/admin/images/loginbg.png create mode 100644 public/admin/index.html create mode 100644 public/admin/js/api.js create mode 100644 public/admin/js/common.js create mode 100644 public/admin/js/lay-config.js create mode 100644 public/admin/js/lay-module/echarts/echarts.js create mode 100644 public/admin/js/lay-module/echarts/echartsTheme.js create mode 100644 public/admin/js/lay-module/iconPicker/iconPickerFa.js create mode 100644 public/admin/js/lay-module/layarea/layarea.js create mode 100644 public/admin/js/lay-module/layuimini/miniAdmin.js create mode 100644 public/admin/js/lay-module/layuimini/miniMenu.js create mode 100644 public/admin/js/lay-module/layuimini/miniTab.js create mode 100644 public/admin/js/lay-module/layuimini/miniTheme.js create mode 100644 public/admin/js/lay-module/step-lay/step.css create mode 100644 public/admin/js/lay-module/step-lay/step.js create mode 100644 public/admin/js/lay-module/tableSelect/tableSelect.js create mode 100644 public/admin/js/lay-module/treetable-lay/treetable.css create mode 100644 public/admin/js/lay-module/treetable-lay/treetable.js create mode 100644 public/admin/js/lay-module/wangEditor/fonts/w-e-icon.woff create mode 100644 public/admin/js/lay-module/wangEditor/wangEditor.css create mode 100644 public/admin/js/lay-module/wangEditor/wangEditor.js create mode 100644 public/admin/js/lay-module/wangEditor/wangEditor.min.css create mode 100644 public/admin/js/lay-module/wangEditor/wangEditor.min.js create mode 100644 public/admin/js/lay-module/wangEditor/wangEditor.min.js.map create mode 100644 public/admin/lib/jq-module/jquery.particleground.min.js create mode 100644 public/admin/lib/jq-module/paigusu.min.js create mode 100644 public/admin/lib/jq-module/zyupload/zyupload-1.0.0.min.css create mode 100644 public/admin/lib/jq-module/zyupload/zyupload-1.0.0.min.js create mode 100644 public/admin/login.html create mode 100644 public/admin/page/404.html create mode 100644 public/admin/page/account.html create mode 100644 public/admin/page/category.html create mode 100644 public/admin/page/category/add.html create mode 100644 public/admin/page/category/edit.html create mode 100644 public/admin/page/comment.html create mode 100644 public/admin/page/comment/edit.html create mode 100644 public/admin/page/dashboard.html create mode 100644 public/admin/page/link.html create mode 100644 public/admin/page/link/add.html create mode 100644 public/admin/page/link/edit.html create mode 100644 public/admin/page/plugin.html create mode 100644 public/admin/page/plugin/add.html create mode 100644 public/admin/page/plugin/edit.html create mode 100644 public/admin/page/plugin/install.html create mode 100644 public/admin/page/system.html create mode 100644 public/admin/page/update.html create mode 100644 public/admin/page/uploadlog.html create mode 100644 public/admin/page/user.html create mode 100644 public/assets/alipay_arrival/diaoluo_da.mp3 create mode 100644 public/assets/alipay_arrival/tts_0.mp3 create mode 100644 public/assets/alipay_arrival/tts_1.mp3 create mode 100644 public/assets/alipay_arrival/tts_2.mp3 create mode 100644 public/assets/alipay_arrival/tts_3.mp3 create mode 100644 public/assets/alipay_arrival/tts_4.mp3 create mode 100644 public/assets/alipay_arrival/tts_5.mp3 create mode 100644 public/assets/alipay_arrival/tts_6.mp3 create mode 100644 public/assets/alipay_arrival/tts_7.mp3 create mode 100644 public/assets/alipay_arrival/tts_8.mp3 create mode 100644 public/assets/alipay_arrival/tts_9.mp3 create mode 100644 public/assets/alipay_arrival/tts_dot.mp3 create mode 100644 public/assets/alipay_arrival/tts_hundred.mp3 create mode 100644 public/assets/alipay_arrival/tts_koubei_daibo.mp3 create mode 100644 public/assets/alipay_arrival/tts_success.mp3 create mode 100644 public/assets/alipay_arrival/tts_ten.mp3 create mode 100644 public/assets/alipay_arrival/tts_ten_million.mp3 create mode 100644 public/assets/alipay_arrival/tts_ten_thousand.mp3 create mode 100644 public/assets/alipay_arrival/tts_thousand.mp3 create mode 100644 public/assets/alipay_arrival/tts_yuan.mp3 create mode 100644 public/assets/piano/static/css/app.218482323009eabe26ecb9ee84758303.css create mode 100644 public/assets/piano/static/css/share.min.css create mode 100644 public/assets/piano/static/data/goods.json create mode 100644 public/assets/piano/static/data/links.json create mode 100644 public/assets/piano/static/fonts/iconfont.eot create mode 100644 public/assets/piano/static/fonts/iconfont.svg create mode 100644 public/assets/piano/static/fonts/iconfont.ttf create mode 100644 public/assets/piano/static/fonts/iconfont.woff create mode 100644 public/assets/piano/static/goodsImgs/05d7da9f7a83f31b.jpg create mode 100644 public/assets/piano/static/goodsImgs/28026c18dc573bd5.jpg create mode 100644 public/assets/piano/static/goodsImgs/2817ecd689819de3.jpg create mode 100644 public/assets/piano/static/goodsImgs/3c59fe8440c05e15.jpg create mode 100644 public/assets/piano/static/goodsImgs/5aa22eceN5c6ce109.jpg create mode 100644 public/assets/piano/static/goodsImgs/5b3b338fNad1559cd.jpg create mode 100644 public/assets/piano/static/goodsImgs/5d4808c716acb007.jpg create mode 100644 public/assets/piano/static/goodsImgs/b8b5a95542c993d2.jpg create mode 100644 public/assets/piano/static/goodsImgs/bc56ea5a17a35998.jpg create mode 100644 public/assets/piano/static/goodsImgs/ebfbb3b6ba6b7e3f.jpg create mode 100644 public/assets/piano/static/images/bg_default.jpg create mode 100644 public/assets/piano/static/images/bg_eiffel.jpg create mode 100644 public/assets/piano/static/images/bg_girl.jpg create mode 100644 public/assets/piano/static/img/aliqr.7bf1e6c.png create mode 100644 public/assets/piano/static/img/sprite.3c2f760.png create mode 100644 public/assets/piano/static/img/wxqr.543cb70.png create mode 100644 public/assets/piano/static/js/0.8f4fc729fc7dd13c1151.js create mode 100644 public/assets/piano/static/js/app.7e44b3de77b6cf019159.js create mode 100644 public/assets/piano/static/js/jquery.share.min.js create mode 100644 public/assets/piano/static/js/jquery3.min.js create mode 100644 public/assets/piano/static/js/livere.min.js create mode 100644 public/assets/piano/static/js/manifest.1a7f612c7ba031958958.js create mode 100644 public/assets/piano/static/js/social-share.min.js create mode 100644 public/assets/piano/static/js/vendor.d9a8a3e67a2e29a049b4.js create mode 100644 public/assets/piano/static/midi/晴天.mid create mode 100644 public/assets/piano/static/midi/等你下课.mid create mode 100644 public/assets/piano/static/samples/piano/a48.mp3 create mode 100644 public/assets/piano/static/samples/piano/a49.mp3 create mode 100644 public/assets/piano/static/samples/piano/a50.mp3 create mode 100644 public/assets/piano/static/samples/piano/a51.mp3 create mode 100644 public/assets/piano/static/samples/piano/a52.mp3 create mode 100644 public/assets/piano/static/samples/piano/a53.mp3 create mode 100644 public/assets/piano/static/samples/piano/a54.mp3 create mode 100644 public/assets/piano/static/samples/piano/a55.mp3 create mode 100644 public/assets/piano/static/samples/piano/a56.mp3 create mode 100644 public/assets/piano/static/samples/piano/a57.mp3 create mode 100644 public/assets/piano/static/samples/piano/a65.mp3 create mode 100644 public/assets/piano/static/samples/piano/a66.mp3 create mode 100644 public/assets/piano/static/samples/piano/a67.mp3 create mode 100644 public/assets/piano/static/samples/piano/a68.mp3 create mode 100644 public/assets/piano/static/samples/piano/a69.mp3 create mode 100644 public/assets/piano/static/samples/piano/a70.mp3 create mode 100644 public/assets/piano/static/samples/piano/a71.mp3 create mode 100644 public/assets/piano/static/samples/piano/a72.mp3 create mode 100644 public/assets/piano/static/samples/piano/a73.mp3 create mode 100644 public/assets/piano/static/samples/piano/a74.mp3 create mode 100644 public/assets/piano/static/samples/piano/a75.mp3 create mode 100644 public/assets/piano/static/samples/piano/a76.mp3 create mode 100644 public/assets/piano/static/samples/piano/a77.mp3 create mode 100644 public/assets/piano/static/samples/piano/a78.mp3 create mode 100644 public/assets/piano/static/samples/piano/a79.mp3 create mode 100644 public/assets/piano/static/samples/piano/a80.mp3 create mode 100644 public/assets/piano/static/samples/piano/a81.mp3 create mode 100644 public/assets/piano/static/samples/piano/a82.mp3 create mode 100644 public/assets/piano/static/samples/piano/a83.mp3 create mode 100644 public/assets/piano/static/samples/piano/a84.mp3 create mode 100644 public/assets/piano/static/samples/piano/a85.mp3 create mode 100644 public/assets/piano/static/samples/piano/a86.mp3 create mode 100644 public/assets/piano/static/samples/piano/a87.mp3 create mode 100644 public/assets/piano/static/samples/piano/a88.mp3 create mode 100644 public/assets/piano/static/samples/piano/a89.mp3 create mode 100644 public/assets/piano/static/samples/piano/a90.mp3 create mode 100644 public/assets/piano/static/samples/piano/b49.mp3 create mode 100644 public/assets/piano/static/samples/piano/b50.mp3 create mode 100644 public/assets/piano/static/samples/piano/b52.mp3 create mode 100644 public/assets/piano/static/samples/piano/b53.mp3 create mode 100644 public/assets/piano/static/samples/piano/b54.mp3 create mode 100644 public/assets/piano/static/samples/piano/b56.mp3 create mode 100644 public/assets/piano/static/samples/piano/b57.mp3 create mode 100644 public/assets/piano/static/samples/piano/b66.mp3 create mode 100644 public/assets/piano/static/samples/piano/b67.mp3 create mode 100644 public/assets/piano/static/samples/piano/b68.mp3 create mode 100644 public/assets/piano/static/samples/piano/b69.mp3 create mode 100644 public/assets/piano/static/samples/piano/b71.mp3 create mode 100644 public/assets/piano/static/samples/piano/b72.mp3 create mode 100644 public/assets/piano/static/samples/piano/b73.mp3 create mode 100644 public/assets/piano/static/samples/piano/b74.mp3 create mode 100644 public/assets/piano/static/samples/piano/b76.mp3 create mode 100644 public/assets/piano/static/samples/piano/b79.mp3 create mode 100644 public/assets/piano/static/samples/piano/b80.mp3 create mode 100644 public/assets/piano/static/samples/piano/b81.mp3 create mode 100644 public/assets/piano/static/samples/piano/b83.mp3 create mode 100644 public/assets/piano/static/samples/piano/b84.mp3 create mode 100644 public/assets/piano/static/samples/piano/b86.mp3 create mode 100644 public/assets/piano/static/samples/piano/b87.mp3 create mode 100644 public/assets/piano/static/samples/piano/b89.mp3 create mode 100644 public/assets/piano/static/samples/piano/b90.mp3 create mode 100644 public/assets/piano/static/xmlscore/canon.json create mode 100644 public/assets/piano/static/xmlscore/one_summers_day.json create mode 100644 public/assets/piano/static/xmlscore/songs_for_you.json create mode 100644 public/assets/piano/static/xmlscore/七里香.json create mode 100644 public/assets/piano/static/xmlscore/下一个天亮.json create mode 100644 public/assets/piano/static/xmlscore/千与千寻.json create mode 100644 public/assets/piano/static/xmlscore/后来.json create mode 100644 public/assets/piano/static/xmlscore/告白气球.json create mode 100644 public/assets/piano/static/xmlscore/成都.json create mode 100644 public/assets/piano/static/xmlscore/时间煮雨.json create mode 100644 public/assets/piano/static/xmlscore/海角七号.json create mode 100644 public/assets/piano/static/xmlscore/牢不可破的联盟.json create mode 100644 public/assets/piano/static/xmlscore/简单爱.json create mode 100644 public/assets/piano/static/xmlscore/纸短情长.json create mode 100644 public/assets/piano/static/xmlscore/蒲公英的约定.json create mode 100644 public/assets/viewhtml/prism.css create mode 100644 public/assets/viewhtml/prism.js create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 public/static/css/dashlite.css create mode 100644 public/static/css/pages/chats.css create mode 100644 public/static/css/pages/file-manager.css create mode 100644 public/static/css/pages/inbox.css create mode 100644 public/static/css/pages/invest.css create mode 100644 public/static/css/pages/messages.css create mode 100644 public/static/css/style.css create mode 100644 public/static/fonts/Nioicon.eot create mode 100644 public/static/fonts/Nioicon.svg create mode 100644 public/static/fonts/Nioicon.ttf create mode 100644 public/static/fonts/Nioicon.woff create mode 100644 public/static/images/back.png create mode 100644 public/static/images/background.jpg create mode 100644 public/static/images/error.svg create mode 100644 public/static/images/info.svg create mode 100644 public/static/images/install_background.jpg create mode 100644 public/static/images/load.gif create mode 100644 public/static/images/logo.png create mode 100644 public/static/images/plugin_default.png create mode 100644 public/static/images/qq.svg create mode 100644 public/static/images/success.svg create mode 100644 public/static/images/user.png create mode 100644 public/static/images/wechat.svg create mode 100644 public/static/js/bilibili_crc2mid.js create mode 100644 public/static/js/common.js create mode 100644 public/static/js/crc32.js create mode 100644 public/static/js/nioapp.min.js create mode 100644 public/static/js/qqlogin.js create mode 100644 public/static/js/script.js create mode 100644 public/tool/bdpan/assets/img/baiduid.png create mode 100644 public/tool/bdpan/assets/img/bduss.png create mode 100644 public/tool/bdpan/assets/img/ico_success.png create mode 100644 public/tool/bdpan/assets/img/ico_tip.png create mode 100644 public/tool/bdpan/assets/img/load.gif create mode 100644 public/tool/bdpan/assets/js/crc32.js create mode 100644 public/tool/bdpan/assets/js/html5hash.js create mode 100644 public/tool/bdpan/assets/js/md5.js create mode 100644 public/tool/bdpan/assets/tool/bduss.crx create mode 100644 public/tool/bdpan/baidupan.class.php create mode 100644 public/tool/bdpan/create.html create mode 100644 public/tool/bdpan/do.php create mode 100644 public/tool/bdpan/favicon.ico create mode 100644 public/tool/bdpan/help.html create mode 100644 public/tool/bdpan/inc.php create mode 100644 public/tool/bdpan/index.html create mode 100644 public/tool/bduss/base.js create mode 100644 public/tool/bduss/index.html create mode 100644 public/tool/bduss/index2.html create mode 100644 public/tool/bduss/index3.html create mode 100644 public/tool/bduss/index4.html create mode 100644 public/tool/bduss/index5.html create mode 100644 public/tool/bduss/login.class.php create mode 100644 public/tool/bduss/login.php create mode 100644 public/tool/bduss/qqlogin.class.php create mode 100644 public/tool/bduss/qqlogin.php create mode 100644 public/tool/bduss/qrcode.php create mode 100644 public/tool/gq_avatar/index.php create mode 100644 public/tool/gq_avatar/static/css/jqery.css create mode 100644 public/tool/gq_avatar/static/img/20190829-bg.png create mode 100644 public/tool/gq_avatar/static/img/20190829-btn.png create mode 100644 public/tool/gq_avatar/static/img/20190829-longpress.svg create mode 100644 public/tool/gq_avatar/static/img/20190906-logo2.png create mode 100644 public/tool/gq_avatar/static/img/20190906-logo3.png create mode 100644 public/tool/gq_avatar/static/img/btn1.png create mode 100644 public/tool/gq_avatar/static/img/btn3.png create mode 100644 public/tool/gq_avatar/static/img/hat1.png create mode 100644 public/tool/gq_avatar/static/img/hat10.png create mode 100644 public/tool/gq_avatar/static/img/hat11.png create mode 100644 public/tool/gq_avatar/static/img/hat12.png create mode 100644 public/tool/gq_avatar/static/img/hat13.png create mode 100644 public/tool/gq_avatar/static/img/hat14.png create mode 100644 public/tool/gq_avatar/static/img/hat15.png create mode 100644 public/tool/gq_avatar/static/img/hat16.png create mode 100644 public/tool/gq_avatar/static/img/hat17.png create mode 100644 public/tool/gq_avatar/static/img/hat18.png create mode 100644 public/tool/gq_avatar/static/img/hat19.png create mode 100644 public/tool/gq_avatar/static/img/hat2.png create mode 100644 public/tool/gq_avatar/static/img/hat20.png create mode 100644 public/tool/gq_avatar/static/img/hat21.png create mode 100644 public/tool/gq_avatar/static/img/hat22.png create mode 100644 public/tool/gq_avatar/static/img/hat23.png create mode 100644 public/tool/gq_avatar/static/img/hat24.png create mode 100644 public/tool/gq_avatar/static/img/hat25.png create mode 100644 public/tool/gq_avatar/static/img/hat3.png create mode 100644 public/tool/gq_avatar/static/img/hat4.png create mode 100644 public/tool/gq_avatar/static/img/hat5.png create mode 100644 public/tool/gq_avatar/static/img/hat6.png create mode 100644 public/tool/gq_avatar/static/img/hat7.png create mode 100644 public/tool/gq_avatar/static/img/hat8.png create mode 100644 public/tool/gq_avatar/static/img/hat9.png create mode 100644 public/tool/gq_avatar/static/img/logo.png create mode 100644 public/tool/gq_avatar/static/img/save-btn.png create mode 100644 public/tool/gq_avatar/static/js/fabric.min.js create mode 100644 public/tool/mysql/Change_Log.txt create mode 100644 public/tool/mysql/LICENSE.txt create mode 100644 public/tool/mysql/README.txt create mode 100644 public/tool/mysql/addcol.php create mode 100644 public/tool/mysql/addtable.php create mode 100644 public/tool/mysql/br.php create mode 100644 public/tool/mysql/br2.php create mode 100644 public/tool/mysql/col.php create mode 100644 public/tool/mysql/config.php create mode 100644 public/tool/mysql/copyc.php create mode 100644 public/tool/mysql/copyt.php create mode 100644 public/tool/mysql/data/default.css create mode 100644 public/tool/mysql/data/index.php create mode 100644 public/tool/mysql/default.css create mode 100644 public/tool/mysql/drop_rec.php create mode 100644 public/tool/mysql/dropc.php create mode 100644 public/tool/mysql/dropt.php create mode 100644 public/tool/mysql/edit_col.php create mode 100644 public/tool/mysql/edit_rec.php create mode 100644 public/tool/mysql/export.php create mode 100644 public/tool/mysql/foot.php create mode 100644 public/tool/mysql/head.php create mode 100644 public/tool/mysql/import.php create mode 100644 public/tool/mysql/in.php create mode 100644 public/tool/mysql/index.php create mode 100644 public/tool/mysql/lang/Read_Me.txt create mode 100644 public/tool/mysql/lang/index.php create mode 100644 public/tool/mysql/mdelc.php create mode 100644 public/tool/mysql/mdelcl.php create mode 100644 public/tool/mysql/mtb.php create mode 100644 public/tool/mysql/pagination.class.php create mode 100644 public/tool/mysql/rename.php create mode 100644 public/tool/mysql/search.php create mode 100644 public/tool/mysql/sql.php create mode 100644 public/tool/mysql/table.php create mode 100644 public/tool/mysql/tables.php create mode 100644 public/tool/mysql/trun.php create mode 100644 public/tool/mysql/upl.php create mode 100644 public/tool/newsid/cap_frame.php create mode 100644 public/tool/newsid/getsid.js create mode 100644 public/tool/newsid/index.html create mode 100644 public/tool/newsid/index2.html create mode 100644 public/tool/newsid/login.class.php create mode 100644 public/tool/newsid/login.js create mode 100644 public/tool/newsid/login.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Binarizer.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/BinaryBitmap.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/ChecksumException.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/AbstractEnum.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/BitArray.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/BitMatrix.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/BitSource.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/CharacterSetECI.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/DecoderResult.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/DefaultGridSampler.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/Detector/MathUtils.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/Detector/MonochromeRectangleDetector.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/DetectorResult.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/GlobalHistogramBinarizer.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/GridSampler.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/HybridBinarizer.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/PerspectiveTransform.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/Reedsolomon/GenericGF.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/Reedsolomon/GenericGFPoly.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/Reedsolomon/ReedSolomonDecoder.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/Reedsolomon/ReedSolomonException.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Common/customFunctions.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/FormatException.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/GDLuminanceSource.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/IMagickLuminanceSource.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/LuminanceSource.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/NotFoundException.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/PlanarYUVLuminanceSource.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/QrReader.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/BitMatrixParser.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/DataBlock.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/DataMask.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/DecodedBitStreamParser.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/Decoder.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/ErrorCorrectionLevel.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/FormatInformation.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/Mode.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/QRCodeDecoderMetaData.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Decoder/Version.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Detector/AlignmentPattern.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Detector/AlignmentPatternFinder.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Detector/Detector.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Detector/FinderPattern.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Detector/FinderPatternFinder.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/Detector/FinderPatternInfo.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Qrcode/QRCodeReader.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/RGBLuminanceSource.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Reader.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/ReaderException.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/Result.php create mode 100644 public/tool/newsid/qrcodedecoder/Zxing/ResultPoint.php create mode 100644 public/tool/newsid/qrcodedecoder/bootstrap.php create mode 100644 public/tool/newsid/qrlogin.js create mode 100644 public/tool/qq/del.php create mode 100644 public/tool/qq/dx.php create mode 100644 route/admin.php create mode 100644 route/index.php create mode 100644 route/plugin.php create mode 100644 runtime/.gitignore create mode 100644 think create mode 100644 view/dispatch_jump.html create mode 100644 view/index/default/auth/login.html create mode 100644 view/index/default/auth/qqlogin.html create mode 100644 view/index/default/common/footer.html create mode 100644 view/index/default/common/header.html create mode 100644 view/index/default/common/layout.html create mode 100644 view/index/default/common/plugin_layout.html create mode 100644 view/index/default/index/comment.html create mode 100644 view/index/default/index/history.html create mode 100644 view/index/default/index/index.html create mode 100644 view/index/default/index/stars.html create mode 100644 view/index/default/template/iframe.html create mode 100644 view/index/default/template/redirect.html create mode 100644 view/install/index.html diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..64d248d --- /dev/null +++ b/.env.example @@ -0,0 +1,18 @@ +APP_DEBUG = false + +[APP] +DEFAULT_TIMEZONE = Asia/Shanghai +PROXY = + +[DATABASE] +TYPE = mysql +HOSTNAME = {{HOSTNAME}} +DATABASE = {{DATABASE}} +USERNAME = {{USERNAME}} +PASSWORD = {{PASSWORD}} +HOSTPORT = {{HOSTPORT}} +PREFIX = toolbox_ +DEBUG = false + +[LANG] +default_lang = zh-cn \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8f8d09 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/.idea +/.vscode +/vendor +*.log \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..80ef291 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,42 @@ +sudo: false + +language: php + +branches: + only: + - stable + +cache: + directories: + - $HOME/.composer/cache + +before_install: + - composer self-update + +install: + - composer install --no-dev --no-interaction --ignore-platform-reqs + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip . + - composer require --update-no-dev --no-interaction "topthink/think-image:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0" + - composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0" + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip . + +script: + - php think unit + +deploy: + provider: releases + api_key: + secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw= + file: + - ThinkPHP_Core.zip + - ThinkPHP_Full.zip + skip_cleanup: true + on: + tags: true diff --git a/README.md b/README.md new file mode 100644 index 0000000..affb2e1 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ + +### 🎉 What's this? +这是一款`在线工具箱`程序,您可以通过安装扩展增强她的功能 +通过插件模板的功能,您也可以把她当做网页导航来使用~ + +### 😺 演示地址 + +* + +## 🎑 说明 +> 严禁用于非法用途 + +### 🎊 环境要求 + +* `PHP` >= 7.4 +* `MySQL` >= 5.6 +* `fileinfo`扩展 +* 使用`Redis`缓存需安装`Redis`扩展 + +### 🚠 部署 + +* 从[Release页面](https://github.com/netcccyun/toolbox/releases)下载源代码 + +* 设置运行目录(绑定目录)为`public` + +* 设置伪静态 + +* 如果是下载的Source code包,还需Composer安装依赖(Release页面下载的安装包不需要) + + 配置阿里镜像源(国内服务器可选) + ``` + composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ + ``` + + 升级compose + ``` + composer self-update + ``` + + 安装依赖 + ``` + composer install --no-dev + ``` + +* 打开网站会自动跳转到安装页面,根据界面提示完成安装。 + +* 更新方法:下载源码后直接上传覆盖即可 + +#### 🍰 伪静态 + +* Nginx +``` +location / { + if (!-e $request_filename){ + rewrite ^(.*)$ /index.php?s=$1 last; break; + } +} +``` +* Apache +``` + + Options +FollowSymlinks -Multiviews + RewriteEngine On + + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] + +``` +#### 🍓 鸣谢 +* [aoaostar](https://github.com/aoaostar/toolbox) +* vue +* thinkphp +* layui +* layuimini +* DashLite diff --git a/app/.htaccess b/app/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/app/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/app/AppService.php b/app/AppService.php new file mode 100644 index 0000000..8b09c45 --- /dev/null +++ b/app/AppService.php @@ -0,0 +1,22 @@ +app = $app; + $this->request = $this->app->request; + + // 控制器初始化 + $this->initialize(); + } + + // 初始化 + protected function initialize() + {} + + /** + * 验证数据 + * @access protected + * @param array $data 数据 + * @param string|array $validate 验证器名或者验证规则数组 + * @param array $message 提示信息 + * @param bool $batch 是否批量验证 + * @return array|string|true + * @throws ValidateException + */ + protected function validate(array $data, $validate, array $message = [], bool $batch = false) + { + if (is_array($validate)) { + $v = new Validate(); + $v->rule($validate); + } else { + if (strpos($validate, '.')) { + // 支持场景 + [$validate, $scene] = explode('.', $validate); + } + $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate); + $v = new $class(); + if (!empty($scene)) { + $v->scene($scene); + } + } + + $v->message($message); + + // 是否批量验证 + if ($batch || $this->batchValidate) { + $v->batch(true); + } + + return $v->failException(true)->check($data); + } + +} diff --git a/app/ExceptionHandle.php b/app/ExceptionHandle.php new file mode 100644 index 0000000..9031efc --- /dev/null +++ b/app/ExceptionHandle.php @@ -0,0 +1,58 @@ +plugin = $plugin; + $this->clientip = real_ip(); + } + + protected function view($tpl = null){ + if($tpl == null) $tpl = strtolower(request()->param("method", "index")); + $template = plugin_path_get($this->plugin['class']) . '/'.$tpl.'.html'; + View::assign("plugin", $this->plugin); + return view($template); + } + + public function alert($code, $msg = '', $url = null, $wait = 3) + { + if ($url) { + $url = (strpos($url, '://') || 0 === strpos($url, '/')) ? $url : (string)$this->app->route->buildUrl($url); + } + if(empty($msg)) $msg = '未知错误'; + + View::assign([ + 'code' => $code, + 'msg' => $msg, + 'url' => $url, + 'wait' => $wait, + ]); + return View::fetch(app()->getRootPath().'view/dispatch_jump.html'); + } + +} \ No newline at end of file diff --git a/app/Request.php b/app/Request.php new file mode 100644 index 0000000..b30b1df --- /dev/null +++ b/app/Request.php @@ -0,0 +1,8 @@ +setName('cron') + ->setDescription('定时数据清理任务'); + } + + protected function execute(Input $input, Output $output) + { + // 指令输出 + Db::name('querycache')->where('uptime','<',date('Y-m-d H:i:s', strtotime('-30 days')))->delete(); + $output->writeln('定时数据清理任务执行完毕'); + } +} diff --git a/app/command/PluginPackage.php b/app/command/PluginPackage.php new file mode 100644 index 0000000..10a4951 --- /dev/null +++ b/app/command/PluginPackage.php @@ -0,0 +1,55 @@ +setName('plugin:package') + ->addArgument('space', Argument::REQUIRED, '插件域,例如:utility') + ->setDescription('打包指定域的所有插件'); + } + + protected function execute(Input $input, Output $output) + { + $space = $input->getArgument('space'); + // 指令输出 + $rootPath = app()->getRootPath() . '/plugin/'; + if (!is_dir($rootPath . $space)) { + $output->writeln("该域不存在:[$space]"); + return; + } + $plugins = glob($rootPath . $space . '/*'); + $output->writeln("正在打包:[$space]下的文件"); + foreach ($plugins as $plugin) { + $zip = new ZipArchive(); + $filename = $rootPath . 'output/' . $space . DIRECTORY_SEPARATOR . basename($plugin) . '.zip'; + if (!is_dir(dirname($filename))) { + mkdir(dirname($filename), 0777, true); + } + if ($zip->open($filename, ZipArchive::CREATE | ZipArchive::OVERWRITE)) { + + $tree_relative = tree_relative($plugin); + $files = multi2one($tree_relative, '', '/'); + foreach ($files as $file) { + if ($file !== '.' && $file !== '..') { + $zip->addFile($plugin . '/' . $file, $space . '/' . basename($plugin) . '/' . $file); + } + } + } + $zip->close(); + $output->writeln("打包成功:[$filename]"); + } + + $output->writeln("该域所有文件都已打包完成:[$space]"); + } +} diff --git a/app/common.php b/app/common.php new file mode 100644 index 0000000..1438d8d --- /dev/null +++ b/app/common.php @@ -0,0 +1,476 @@ +getRootPath() . config("view.view_dir_name") . '/index/' . config_get('template') . DIRECTORY_SEPARATOR; +} + +function plugin_alias_get() +{ + return trim(request()->param("alias"), '\\/'); +} + +function plugin_method_get() +{ + return request()->param("method", "index"); +} + +function plugin_current_class_get($namespace) +{ + return str_replace('plugin\\', '', $namespace); +} + +function plugin_path_get($class = '') +{ + $class = str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $class); + return realpath(app()->getRootPath() . "/plugin/$class"); +} + +function plugin_info_get($alias = '') +{ + $plugin = Db::name('plugin')->where('alias',$alias)->where('enable',1)->find(); + if(!$plugin) return null; + if(!plugin_userlevel($plugin['level'])) return null; + $plugin['is_star'] = 0; + if(request()->islogin){ + $stars = explode(',', request()->user['stars']); + if(in_array($plugin['id'], $stars)){ + $plugin['is_star'] = 1; + } + } + return $plugin; +} + + +function msg($status = "ok", $message = "success", $data = []) +{ + return json([ + "status" => $status, + "message" => $message, + "data" => $data, + ]); +} + +function reset_opcache() +{ + if (function_exists('opcache_reset')) opcache_reset(); +} + +function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { + $ckey_length = 4; + $key = md5($key); + $keya = md5(substr($key, 0, 16)); + $keyb = md5(substr($key, 16, 16)); + $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; + $cryptkey = $keya.md5($keya.$keyc); + $key_length = strlen($cryptkey); + $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; + $string_length = strlen($string); + $result = ''; + $box = range(0, 255); + $rndkey = array(); + for($i = 0; $i <= 255; $i++) { + $rndkey[$i] = ord($cryptkey[$i % $key_length]); + } + for($j = $i = 0; $i < 256; $i++) { + $j = ($j + $box[$i] + $rndkey[$i]) % 256; + $tmp = $box[$i]; + $box[$i] = $box[$j]; + $box[$j] = $tmp; + } + for($a = $j = $i = 0; $i < $string_length; $i++) { + $a = ($a + 1) % 256; + $j = ($j + $box[$a]) % 256; + $tmp = $box[$a]; + $box[$a] = $box[$j]; + $box[$j] = $tmp; + $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); + } + if($operation == 'DECODE') { + if(((int)substr($result, 0, 10) == 0 || (int)substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { + return substr($result, 26); + } else { + return ''; + } + } else { + return $keyc.str_replace('=', '', base64_encode($result)); + } +} + +function get_curl($url, $post=0, $referer=0, $cookie=0, $header=0, $ua=0, $nobody=0, $addheader=0) +{ + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + $httpheader[] = "Accept: */*"; + $httpheader[] = "Accept-Encoding: gzip,deflate,sdch"; + $httpheader[] = "Accept-Language: zh-CN,zh;q=0.8"; + $httpheader[] = "Connection: close"; + if($addheader){ + $httpheader = array_merge($httpheader, $addheader); + } + curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); + if ($post) { + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $post); + } + if ($header) { + curl_setopt($ch, CURLOPT_HEADER, true); + } + if ($cookie) { + curl_setopt($ch, CURLOPT_COOKIE, $cookie); + } + if($referer){ + curl_setopt($ch, CURLOPT_REFERER, $referer); + } + if ($ua) { + curl_setopt($ch, CURLOPT_USERAGENT, $ua); + } + else { + curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"); + } + if ($nobody) { + curl_setopt($ch, CURLOPT_NOBODY, 1); + } + curl_setopt($ch, CURLOPT_ENCODING, "gzip"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $ret = curl_exec($ch); + curl_close($ch); + return $ret; +} + +function jsonp_decode($jsonp, $assoc = false) +{ + $jsonp = trim($jsonp); + if(isset($jsonp[0]) && $jsonp[0] !== '[' && $jsonp[0] !== '{') { + $begin = strpos($jsonp, '('); + if(false !== $begin) + { + $end = strrpos($jsonp, ')'); + if(false !== $end) + { + $jsonp = substr($jsonp, $begin + 1, $end - $begin - 1); + } + } + } + return json_decode($jsonp, $assoc); +} + +function dgmdate($timestamp, $d_format = 'Y-m-d H:i') { + $timestamp=strtotime($timestamp); + $timestamp += 8 * 3600; + $todaytimestamp = time() - (time() + 8 * 3600) % 86400 + 8 * 3600; + $s = gmdate($d_format, $timestamp); + $time = time() + 8 * 3600 - $timestamp; + if($timestamp >= $todaytimestamp) { + if($time > 3600) { + return ''.intval($time / 3600).' 小时前'; + } elseif($time > 1800) { + return '半小时前'; + } elseif($time > 60) { + return ''.intval($time / 60).' 分钟前'; + } elseif($time > 0) { + return ''.$time.' 秒前'; + } elseif($time == 0 || $time < 0) { + return '刚刚'; + } else { + return $s; + } + } elseif(($days = intval(($todaytimestamp - $timestamp) / 86400)) >= 0 && $days < 7) { + if($days == 0) { + return '昨天 '.gmdate('H:i', $timestamp).''; + } elseif($days == 1) { + return '前天 '.gmdate('H:i', $timestamp).''; + } else { + return ''.($days + 1).' 天前'; + } + } else { + return $s; + } +} + +function unzip($filepath, $filename) +{ + if (!file_exists($filepath)) { + return false; + } + $zip = new ZipArchive; + + if ($zip->open($filepath) === true) { + $zip->extractTo($filename); + $zip->close(); + return true; + } + return false; +} + +//多维转一维数组 +function multi2one($data, $dir = '', $step = '') +{ + $list = []; + foreach ($data as $k => $v) { + if (is_array($v)) { + $list = array_merge($list, multi2one($v, $dir . $step . $k, $step)); + } else { + $list[] = ltrim($dir . $step . $v, '\\/'); + } + } + return $list; +} + +function tree_relative($dir) +{ + if (!is_dir($dir)) { + return [basename($dir)]; + } + $arr = []; + $scandir = scandir($dir); + foreach ($scandir as $v) { + if ($v != '.' && $v != '..') { + if (is_dir("$dir/$v")) { + $arr[$v] = tree_relative("$dir/$v"); + } else { + $arr[] = $v; + } + } + } + return $arr; +} + +function copy_dir($src, $target) +{ + if (!is_dir($target)) { + mkdir($target, 0777, true); + } + foreach (glob($src . '/*') as $filename) { + $targetFilename = $target . '/' . basename($filename); + if (is_dir($filename)) { + // 如果是目录,递归合并子目录下的文件。 + copy_dir($filename, $targetFilename); + } elseif (is_file($filename)) { + copy($filename, $targetFilename); + } + } +} + +function del_tree($dir) +{ + if (!file_exists($dir)) { + return true; + } + $files = array_diff(scandir($dir), array('.', '..')); + + foreach ($files as $file) { + (is_dir("$dir/$file")) ? del_tree("$dir/$file") : unlink("$dir/$file"); + } + + return rmdir($dir); +} + +function config_get($key, $default = null) +{ + $value = config('sys.'.$key); + return $value ?: $default; +} + +function config_set($key, $value) +{ + $res = Db::name('config')->replace()->insert(['key'=>$key, 'value'=>$value]); + return $res!==false; +} + +function get_version() +{ + return VERSION; +} + +function format_date($timestamp = null) +{ + if ($timestamp === null) { + $timestamp = time(); + } + return date('Y-m-d H:i:s', $timestamp); +} + +//当前命名空间的包名 +function base_space_name($space) +{ + $str_replace = str_replace('\\', '/', $space); + return basename($str_replace); +} + +if (!function_exists('str_starts_with')) { + function str_starts_with($str, $start) + { + return (@substr_compare($str, $start, 0, strlen($start)) == 0); + } +} +if (!function_exists('str_ends_with')) { + function str_ends_with(string $haystack, string $needle): bool + { + $needle_len = strlen($needle); + return ($needle_len === 0 || 0 === substr_compare($haystack, $needle, -$needle_len)); + } +} + +if (!function_exists('is_valid_url')) { + + function is_valid_url($url = null) + { + if (empty($url)) return false; + if (!is_string($url)) return false; + $filter_var = boolval(filter_var($url, FILTER_VALIDATE_URL)); + if ($filter_var) return $filter_var; + $parse_url = parse_url($url); + $path = array_pop($parse_url); + + $url = str_ireplace($path, '/' . urlencode($path), $url); + return boolval(filter_var($url, FILTER_VALIDATE_URL)); + } + +} + +function real_ip($type=0){ + $ip = $_SERVER['REMOTE_ADDR']; + if($type<=0 && isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { + foreach ($matches[0] AS $xip) { + if (filter_var($xip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $xip; + break; + } + } + } elseif ($type<=0 && isset($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } elseif ($type<=1 && isset($_SERVER['HTTP_CF_CONNECTING_IP']) && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; + } elseif ($type<=1 && isset($_SERVER['HTTP_ALI_CDN_REAL_IP']) && filter_var($_SERVER['HTTP_ALI_CDN_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $_SERVER['HTTP_ALI_CDN_REAL_IP']; + } elseif ($type<=1 && isset($_SERVER['HTTP_X_REAL_IP']) && filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $_SERVER['HTTP_X_REAL_IP']; + } + return $ip; +} + +function get_ip_city($ip){ + $new = new \app\lib\IpLocation(); + $arr = $new->getlocation($ip); + if($arr){ + return $arr['province'].$arr['city']; + }else{ + return false; + } +} + +function get_plugin_url($alias){ + if(substr($alias,0,1) == '/' || substr($alias,0,7) == 'http://' || substr($alias,0,8) == 'https://'){ + $url = $alias; + }else{ + $url = '/'.$alias; + } + return $url; +} + +//极验3.0服务端验证 +function verify_captcha(){ + if(session('gtserver') === null)return '验证加载失败'; + $GtSdk = new \app\lib\GeetestLib(config_get('captcha_id'), config_get('captcha_key')); + $data = array( + 'user_id' => request()->islogin?request()->user['id']:'public', + 'client_type' => "web", + 'ip_address' => real_ip() + ); + if (session('gtserver') == 1) { //服务器正常 + if ($GtSdk->success_validate(input('post.geetest_challenge'), input('post.geetest_validate'), input('post.geetest_seccode'), $data)) { + return true; + } + }else{ //服务器宕机,走failback模式 + if ($GtSdk->fail_validate(input('post.geetest_challenge'), input('post.geetest_validate'), input('post.geetest_seccode'))) { + return true; + } + } + return '验证失败,请重新验证'; +} + +//极验4.0服务端验证(无感) +function verify_captcha4(){ + if(!input('?post.captcha_id') || !input('?post.lot_number') || !input('?post.pass_token') || !input('?post.gen_time') || !input('?post.captcha_output')) return false; + $real_ip = real_ip(); + $url = 'http://gt4.geetest.com/demov4/demo/login'; + $param = ['captcha_id'=>input('post.captcha_id'), 'lot_number'=>input('post.lot_number'), 'pass_token'=>input('post.pass_token'), 'gen_time'=>input('post.gen_time'), 'captcha_output'=>input('post.captcha_output')]; + $referer = 'http://gt4.geetest.com/demov4/invisible-bind-zh.html'; + $httpheader[] = "X-Real-IP: ".$real_ip; + $httpheader[] = "X-Forwarded-For: ".$real_ip; + $data = get_curl($url.'?'.http_build_query($param),0,$referer,0,0,0,0,$httpheader); + $arr = json_decode($data, true); + if(isset($arr['result']) && $arr['result'] == 'success'){ + return true; + } + return false; +} + +//极验4.0服务端验证(滑动) +function verify_captcha4_slide(){ + return verify_captcha4(); + if(!input('?post.captcha_id') || !input('?post.lot_number') || !input('?post.pass_token') || !input('?post.gen_time') || !input('?post.captcha_output')) return false; + $url = 'http://gcaptcha4.geetest.com/validate?captcha_id='.input('post.captcha_id'); + $param = ['lot_number'=>input('post.lot_number'), 'pass_token'=>input('post.pass_token'), 'gen_time'=>input('post.gen_time'), 'captcha_output'=>input('post.captcha_output')]; + $param['sign_token'] = hash_hmac('sha256', $param['lot_number'], config_get('captcha_key')); + $data = get_curl($url, http_build_query($param)); + $arr = json_decode($data, true); + if(isset($arr['status']) && $arr['status']=='success'){ + if(isset($arr['result']) && $arr['result'] == 'success'){ + return true; + }else{ + return '验证失败,'.$arr['reason']; + } + }else{ + return '验证失败,'.($arr['msg']?$arr['msg']:'请重新验证'); + } +} + +function checkdomain($domain){ + if(empty($domain))return false; + if (!preg_match('/^[a-zA-Z0-9:\_\.\-]{2,512}$/i', $domain) || strpos($domain, '.') === false || substr($domain, -1) == '.' || substr($domain, 0 ,1) == '.' || strpos($domain, '*') !== false) { + return false; + } + return true; +} + +/** + * 取中间文本 + * @param string $str + * @param string $leftStr + * @param string $rightStr + */ +function getSubstr($str, $leftStr, $rightStr) +{ + $left = strpos($str, $leftStr); + $start = $left+strlen($leftStr); + $right = strpos($str, $rightStr, $start); + if($left < 0) return ''; + if($right>0){ + return substr($str, $start, $right-$start); + }else{ + return substr($str, $start); + } +} + +function plugin_userlevel($level){ + if($level > 0){ + if(!request()->islogin) return false; + if(request()->user['level']<$level) return false; + } + return true; +} + +function checkRefererHost(){ + if(!request()->header('referer'))return false; + $url_arr = parse_url(request()->header('referer')); + $http_host = request()->header('host'); + if(strpos($http_host,':'))$http_host = substr($http_host, 0, strpos($http_host, ':')); + return $url_arr['host'] === $http_host; +} \ No newline at end of file diff --git a/app/controller/Auth.php b/app/controller/Auth.php new file mode 100644 index 0000000..7894bbd --- /dev/null +++ b/app/controller/Auth.php @@ -0,0 +1,220 @@ +islogin) { + return $this->alert('success', '已登录', '/'); + } + View::assign(['is_qq'=>config_get('oauth_openqq'), 'is_wx'=>config_get('oauth_openxw')]); + return view(); + } + + private function oauth_config(){ + return [ + 'apiurl' => config_get('oauth_appurl'), + 'appid' => config_get('oauth_appid'), + 'appkey' => config_get('oauth_appkey'), + 'callback' => (string)url('/oauth/callback', [], '', true), + ]; + } + + public function oauth() + { + $type = input('post.type'); + if(!$type){ + return msg('error', '登录方式不能为空'); + } + $state = md5(uniqid(rand(), TRUE)); + session('oauth_state', $state); + $oauth = new Oauth($this->oauth_config()); + $res = $oauth->login($type, $state); + if(isset($res['code']) && $res['code']==0){ + return msg('ok', 'success', $res['url']); + }else{ + return msg('error', $res ? $res['msg'] : '登录地址获取失败'); + } + } + + public function callback() + { + $code = input('get.code'); + $state = input('get.state'); + if (empty($code)) { + return $this->alert('error', 'code不能为空', '/login'); + } + + if(!$state || $state != session('oauth_state')){ + return $this->alert('error', 'state校验失败,请重新登录', '/login'); + } + + $oauth = new Oauth($this->oauth_config()); + $res = $oauth->callback($code); + if(isset($res['code']) && $res['code']==0){ + $type = $res['type']; + $openid = $res['social_uid']; + if(empty($res['nickname'])) $res['nickname'] = $type.Str::random(5); + $user = Db::name('user')->where('type', $type)->where('openid', $openid)->find(); + if($user){ + if($user['enable']==0){ + session('user_block', '1'); + return $this->alert('error', '当前用户已被禁止登录', '/'); + } + $uid = $user['id']; + $password = $user['password']; + Db::name('user')->where('id', $uid)->update([ + 'avatar_url' => $res['faceimg'], + 'loginip' => $this->clientip, + 'update_time' => date('Y-m-d H:i:s') + ]); + if(session('user_block') == '1'){ + Db::name('user')->where('id', $uid)->update(['enable' => 0]); + return $this->alert('error', '当前用户已被禁止登录', '/'); + } + }else{ + $password = Str::random(16); + $uid = Db::name('user')->insertGetId([ + 'type' => $type, + 'openid' => $openid, + 'username' => $res['nickname'], + 'password' => $password, + 'avatar_url' => $res['faceimg'], + 'regip' => $this->clientip, + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s') + ]); + if(session('user_block') == '1'){ + Db::name('user')->where('id', $uid)->update(['enable' => 0]); + return $this->alert('error', '当前用户已被禁止登录', '/'); + } + } + + $session = md5($uid.$password); + $expiretime = time()+30744000; + $token = authcode("{$uid}\t{$session}\t{$expiretime}", 'ENCODE', config_get('syskey')); + cookie('user_token', $token, ['expire' => $expiretime, 'httponly' => true]); + session('oauth_state', null); + + return redirect("/"); + }else{ + return $this->alert('error', $res ? $res['msg'] : '登录数据获取失败'); + } + } + + public function logout() + { + //session(null); + cookie('user_token', null); + return redirect(request()->header('referer') ?? '/'); + } + + public function verifycode() + { + return captcha(); + } + + public function adminlogin(){ + $username = input('post.username',null,'trim'); + $password = input('post.password',null,'trim'); + $captcha = input('post.captcha',null,'trim'); + + if(empty($username) || empty($password)){ + return msg('error', '用户名或密码不能为空'); + } + if(!captcha_check($captcha)){ + return msg('error', '验证码错误'); + } + if($username == config_get('admin_username') && password_verify($password, config_get('admin_password'))){ + $session = md5($username.config_get('admin_password')); + $expiretime = time()+2562000; + $token = authcode("{$username}\t{$session}\t{$expiretime}", 'ENCODE', config_get('syskey')); + cookie('admin_token', $token, ['expire' => $expiretime, 'httponly' => true]); + config_set('admin_lastlogin', date('Y-m-d H:i:s')); + return msg(); + }else{ + return msg('error', '用户名或密码错误'); + } + } + + public function adminlogout() + { + cookie('admin_token', null); + return redirect('/admin/login.html'); + } + + public function qqlogin_api(){ + $do = input('get.do'); + $type = input('get.type'); + $info = $this->getQqloginInfo($type); + if(!$info){ + return json(['saveOK'=>1, 'msg'=>'该登录类型不存在']); + } + + $login = new \app\lib\QQLogin(); + if($do == 'getqrpic'){ + $array = $login->getqrpic($info[0]); + } + elseif($do == 'qrlogin'){ + $array = $login->qrlogin($info[0], $info[1], input('get.qrsig')); + if($array['saveOK'] == 0){ + $cookie = ['uin' => $array['uin'], 'cookie' => $array['cookie'], 'nickname' => $array['nickname']]; + session('qq_cookie_'.$type, $cookie); + } + } + + return json($array); + } + + public function qqlogin(){ + if(!checkRefererHost()){ + return redirect('/'); + } + + $redirect = input('get.redirect'); + $type = input('get.type'); + if(!$redirect || !$type){ + return $this->alert('error', '缺少参数', '/'); + } + $info = $this->getQqloginInfo($type); + if(!$info){ + return $this->alert('error', '该登录类型不存在', '/'); + } + if (substr($redirect,0,1)!='/') { + return $this->alert('error', '回调地址错误', '/'); + } + + View::assign('logintype', base64_encode($type)); + View::assign('loginname', base64_encode($info[2])); + View::assign('redirect', base64_encode($redirect)); + return view(); + } + + private function getQqloginInfo($type){ + switch($type){ + case 'qzone': + return ['5','https://qzs.qq.com/qzone/v5/loginsucc.html?para=izone', 'QQ空间']; + break; + case 'qun': + return ['73','https://qun.qq.com/', 'QQ群管理']; + break; + case 'qqid': + return ['1','https://id.qq.com/index.html' ,'我的QQ中心']; + break; + default: + return null; + break; + } + } + +} \ No newline at end of file diff --git a/app/controller/Base.php b/app/controller/Base.php new file mode 100644 index 0000000..0d47588 --- /dev/null +++ b/app/controller/Base.php @@ -0,0 +1,37 @@ +clientip = real_ip(config_get('ip_type')??0); + parent::initialize(); + + } + + protected function alert($code, $msg = '', $url = null, $wait = 3) + { + if ($url) { + $url = (strpos($url, '://') || 0 === strpos($url, '/')) ? $url : (string)$this->app->route->buildUrl($url); + } + if(empty($msg)) $msg = '未知错误'; + + View::assign([ + 'code' => $code, + 'msg' => $msg, + 'url' => $url, + 'wait' => $wait, + ]); + return View::fetch(app()->getRootPath().'view/dispatch_jump.html'); + } + +} \ No newline at end of file diff --git a/app/controller/Index.php b/app/controller/Index.php new file mode 100644 index 0000000..54222f5 --- /dev/null +++ b/app/controller/Index.php @@ -0,0 +1,226 @@ +cache('categorys', self::CACHE_TIME)->field('id,title,icon')->where('enable', 1)->order('weight','desc')->select(); + $link = Db::name('link')->cache('links', self::CACHE_TIME)->field('id,name,url')->where('enable', 1)->order('weight','desc')->select(); + + $tool = Db::name('plugin')->cache('plugins', self::CACHE_TIME)->field('id,title,alias,keyword,request_count,category_id,level')->where('enable', 1)->order('weight','desc')->select(); + $list = []; + foreach($category as $item){ + $list2 = []; + foreach($tool as $row){ + if(!plugin_userlevel($row['level'])) continue; + if($row['category_id'] == $item['id']){ + $row['url'] = get_plugin_url($row['alias']); + $row['out'] = substr($row['alias'],0,1) == '/' || substr($row['alias'],0,7) == 'http://' || substr($row['alias'],0,8) == 'https://'; + $list2[] = $row; + } + } + $list[] = ['id'=>$item['id'], 'title'=>$item['title'], 'icon'=>$item['icon'], 'items'=>$list2]; + } + + View::assign('category', $category); + View::assign('tool', $list); + View::assign('link', $link); + return view(); + } + + public function stars() + { + if(request()->isAjax()){ + if(!request()->islogin){ + return msg('error', '登录后才能收藏工具'); + } + $uid = request()->user['id']; + $do = input('post.do'); + if($do == 'clear'){ + Db::name('user')->where('id', $uid)->update(['stars'=>'']); + return msg(); + } + $id = input('post.id/d'); + if(empty($do) || empty($id)) return msg('error', 'param error'); + $plugin = Db::name('plugin')->where('id', $id)->where('enable',1)->find(); + if(!$plugin) return msg('error', '工具不存在'); + $stars = explode(',',request()->user['stars']); + if ($do == 'add' && !in_array($id, $stars)) { + array_push($stars, $id); + } elseif ($do == 'del') { + if (($key = array_search($id, $stars)) !== false) { + unset($stars[$key]); + } + } + $stars = implode(',', array_unique(array_values($stars))); + Db::name('user')->where('id', $uid)->update(['stars'=>$stars]); + return msg('ok', $do == 'add' ? '添加收藏成功!' : '取消收藏成功!'); + } + + if(!request()->islogin){ + return $this->alert('info', '请先登录', '/login'); + } + + $category = Db::name('category')->cache('categorys', self::CACHE_TIME)->field('id,title,icon')->where('enable', 1)->order('weight','desc')->select(); + $list = []; + + $stars = request()->user['stars']; + if(strlen($stars)>0){ + $stars = explode(',',$stars); + $tool = Db::name('plugin')->cache('plugins', self::CACHE_TIME)->field('id,title,alias,keyword,request_count,category_id')->where('enable', 1)->order('weight','desc')->select(); + $list = []; + foreach($category as $item){ + foreach($tool as $row){ + if(!plugin_userlevel($row['level'])) continue; + if($row['category_id'] == $item['id'] && in_array($row['id'],$stars)){ + $row['url'] = get_plugin_url($row['alias']); + $row['out'] = substr($row['alias'],0,1) == '/' || substr($row['alias'],0,7) == 'http://' || substr($row['alias'],0,8) == 'https://'; + $list[] = $row; + } + } + } + } + + View::assign('category', $category); + View::assign('tool', $list); + return view(); + } + + public function history() + { + if(request()->isAjax()){ + $do = input('post.do'); + if($do == 'clear'){ + cookie('tools', null); + return msg(); + } + } + + $category = Db::name('category')->cache('categorys', self::CACHE_TIME)->field('id,title,icon')->where('enable', 1)->order('weight','desc')->select(); + $list = []; + + $history = cookie('tools'); + if(strlen($history)>0){ + $history = array_reverse(array_unique(explode(',',$history))); + $tool = Db::name('plugin')->cache('plugins', self::CACHE_TIME)->field('id,title,alias,keyword,request_count,category_id')->where('enable', 1)->order('weight','desc')->select(); + $newtool = []; + foreach($tool as $row){ + $newtool[$row['id']] = $row; + } + $list = []; + foreach($history as $id){ + $row = $newtool[$id]; + if(!$row) continue; + if(!plugin_userlevel($row['level'])) continue; + $row['url'] = get_plugin_url($row['alias']); + $row['out'] = substr($row['alias'],0,1) == '/' || substr($row['alias'],0,7) == 'http://' || substr($row['alias'],0,8) == 'https://'; + $list[] = $row; + } + } + + View::assign('category', $category); + View::assign('tool', $list); + return view(); + } + + public function comment(){ + if(request()->isAjax()){ + $do = input('param.do'); + if($do == 'add'){ + if(!request()->islogin){ + return msg('error', '登录后才能提交留言'); + } + $email = input('post.email', null, 'trim,strip_tags,htmlspecialchars'); + $content = input('post.content', null, 'trim,strip_tags,htmlspecialchars'); + + $data = [ + 'uid' => request()->user['id'], + 'email' => $email, + 'content' => $content, + 'enable' => 0, + 'create_time' => date("Y-m-d H:i:s"), + 'update_time' => date("Y-m-d H:i:s") + ]; + $validate = Validate::rule([ + 'email|电子邮箱' => 'require|email', + 'content|留言内容' => 'require', + ]); + if (!$validate->check($data)) { + return msg('error', $validate->getError()); + } + + $captcha_result = verify_captcha4_slide(); + if($captcha_result !== true){ + return msg('error', $captcha_result); + } + + $last = Db::name('comment')->where('uid', request()->user['id'])->order('id','desc')->find(); + if($last && time() - strtotime($last['create_time']) < 600){ + return msg('error', '你发表留言的速度太快了,过段时间再来吧'); + } + + Db::name('comment')->insert($data); + return msg(); + }else{ + $page = input('get.page/d'); + $limit = 5; + $uid = request()->islogin ? request()->user['id'] : 0; + $select = Db::name('comment')->alias('A')->leftJoin('user B', 'A.uid=B.id')->field('A.id,A.uid,content,reply,A.enable,A.create_time,A.update_time,B.username,B.avatar_url')->where('A.enable', 1)->whereOr('A.uid', $uid); + $total = $select->count(); + $comment = $select->order('id','desc')->page($page, $limit)->select(); + $items = []; + foreach($comment as $item){ + if(!$item['avatar_url']) $item['avatar_url'] = '/static/images/user.png'; + $item['time'] = dgmdate($item['create_time']); + $items[] = $item; + } + return msg('ok', 'success', ['total'=>$total, 'page'=>$page, 'pagenum'=>ceil($total/$limit), 'items'=>$items]); + } + } + return view(); + } + + public function captcha(){ + $GtSdk = new \app\lib\GeetestLib(config_get('captcha_id'), config_get('captcha_key')); + $data = array( + 'user_id' => request()->islogin?request()->user['id']:'public', + 'client_type' => "web", + 'ip_address' => $this->clientip + ); + $result = $GtSdk->pre_process($data); + session('gtserver', $result['success']); + return json($result); + } + + public function statistics(){ + $id = input('post.id/d'); + if(!$id) return msg('error', 'param error'); + $plugin = Db::name('plugin')->where('id', $id)->where('enable', 1)->find(); + if(!$plugin) return msg('error', '工具不存在'); + Db::name('plugin')->where('id', $id)->inc('request_count')->update(); + + $history = cookie('tools'); + if(!$history) $history = []; + else $history = array_unique(explode(',',$history)); + if(in_array($id, $history)){ + $key = array_search($id,$history); + unset($history[$key]); + } + $history[] = $id; + if(count($history) > 20){ + $history = array_splice($history, 0, 20); + } + cookie('tools', implode(',', $history)); + + return msg(); + } + +} diff --git a/app/controller/Install.php b/app/controller/Install.php new file mode 100644 index 0000000..91b95e5 --- /dev/null +++ b/app/controller/Install.php @@ -0,0 +1,131 @@ +getRootPath() . 'install.lock')) { + exit('你已安装成功,需要重新安装请删除 install.lock 文件'); + } + Cache::clear(); + reset_opcache(); + } + + public function index() + { + // 检查安装环境 + $requirements = [ + 'PHP >= 7.4' => PHP_VERSION >= 7.4, + 'PDO_MySQL' => extension_loaded("pdo_mysql"), + 'CURL' => extension_loaded("curl"), + 'ZipArchive' => class_exists("ZipArchive"), + 'runtime写入权限' => is_writable(app()->getRuntimePath()), + ]; + reset_opcache(); + $step = Request::param('step'); + View::assign([ + 'step' => $step, + 'requirements' => $requirements, + ]); + return view('../view/install/index.html'); + } + + public function database() + { + $params = Request::param(); + $rules = [ + 'hostname' => 'require', + 'hostport' => 'require|integer', + 'username' => 'require', + 'password' => 'require', + 'database' => 'require', + ]; + $validate = Validate::rule($rules); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $dsn = 'mysql:host=' . $params['hostname'] . ';dbname=' . $params['database'] . ';port=' . $params['hostport'] . ';charset=utf8'; + try { + new PDO($dsn, $params['username'], $params['password']); + } catch (\Exception $e) { + return msg('error', $e->getMessage()); + } + try { + $envFile = file_get_contents(app()->getRootPath() . '.env.example'); + $envOperation = new EnvOperation($envFile); + foreach (array_keys($rules) as $value) { + $envOperation->set(mb_strtoupper($value), $params[$value]); + } + $envOperation->save(); + } catch (\Exception $e) { + return msg('error', $e->getMessage()); + } + return msg(); + } + + public function init_data() + { + try { + + $filename = app()->getRootPath() . 'install.sql'; + if (!is_file($filename)) { + throw new Exception('数据库 install.sql 文件不存在'); + } + $install_sql = file($filename); + //写入数据库 + $execSQL = new ExecSQL(); + $install_sql = $execSQL->purify($install_sql); + foreach ($install_sql as $sql) { + $execSQL->exec($sql); + if (!empty($execSQL->getErrors())) { + throw new Exception($execSQL->getErrors()[0]); + } + } + } catch (\Exception $e) { + return msg('error', $e->getMessage()); + } + return msg(); + } + + public function admin() + { + $params = Request::param(); + $rules = [ + 'username|用户名' => 'require', + 'password|密码' => 'require', + ]; + $validate = Validate::rule($rules); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + config_set("admin_username", $params['username']); + config_set("admin_password", password_hash($params['password'], PASSWORD_DEFAULT)); + config_set("syskey", Str::random(16)); + file_put_contents(app()->getRootPath() . 'install.lock', format_date()); + return msg(); + } + +} diff --git a/app/controller/admin/Category.php b/app/controller/admin/Category.php new file mode 100644 index 0000000..182f4f8 --- /dev/null +++ b/app/controller/admin/Category.php @@ -0,0 +1,134 @@ + 'integer', + 'limit' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $page = isset($params['page']) ? intval($params['page']) : 1; + $limit = isset($params['limit']) ? intval($params['limit']) : 50; + + $select = Db::name('category'); + if(!empty($params['title'])){ + $select->where('title', 'like', '%' . $params['title'] . '%'); + } + $total = $select->count(); + $items = $select->order('weight','desc')->page($page, $limit)->select(); + + return msg("ok", "success", ['total'=>$total, 'items'=>$items]); + } + + public function get() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $item = Db::name('category')->where('id', $params['id'])->findOrEmpty(); + + return msg('ok', 'success', $item); + } + + public function add() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'title|分类标题' => 'require|unique:category', + 'icon|小图标' => 'require', + 'weight|权重' => 'require|integer', + 'enable' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('category')->cache('categorys')->insert([ + 'title' => trim($params['title']), + 'icon' => trim($params['icon']), + 'weight' => $params['weight'], + 'enable' => $params['enable'], + 'create_time' => date("Y-m-d H:i:s"), + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function edit() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require', + 'icon|小图标' => 'require', + 'title|分类标题' => 'require|unique:category', + 'weight|权重' => 'require|integer', + 'enable' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('category')->cache('categorys')->where('id', $params['id'])->update([ + 'title' => trim($params['title']), + 'icon' => trim($params['icon']), + 'weight' => $params['weight'], + 'enable' => $params['enable'], + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function enable() + { + $id = input('post.id/d'); + $enable = input('post.enable/d'); + + Db::name('category')->cache('categorys')->where('id', $id)->update([ + 'enable' => $enable, + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function delete() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('category')->cache('categorys')->where('id', $params['id'])->delete(); + + return msg(); + } +} \ No newline at end of file diff --git a/app/controller/admin/Comment.php b/app/controller/admin/Comment.php new file mode 100644 index 0000000..00f9e9c --- /dev/null +++ b/app/controller/admin/Comment.php @@ -0,0 +1,140 @@ + 'integer', + 'limit' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $page = intval($params['page']); + $limit = intval($params['limit']); + + $select = Db::name('comment'); + if(!empty($params['uid'])){ + $select->where('uid', $params['uid']); + } + if(!empty($params['content'])){ + $select->where('content', 'like', '%' . $params['content'] . '%'); + } + $total = $select->count(); + $items = $select->order('id','desc')->page($page, $limit)->select(); + + return msg("ok", "success", ['total'=>$total, 'items'=>$items]); + } + + public function get() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $item = Db::name('comment')->where('id', $params['id'])->findOrEmpty(); + + return msg('ok', 'success', $item); + } + + public function edit() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require', + 'content|留言内容' => 'require', + 'enable' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('comment')->where('id', $params['id'])->update([ + 'content' => $params['content'], + 'reply' => $params['reply'], + 'enable' => $params['enable'], + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function enable() + { + $id = input('post.id/d'); + $enable = input('post.enable/d'); + + Db::name('comment')->where('id', $id)->update([ + 'enable' => $enable, + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function delete() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('comment')->where('id', $params['id'])->delete(); + + return msg(); + } + + + public function uploadlog() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'page' => 'integer', + 'limit' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $page = intval($params['page']); + $limit = intval($params['limit']); + + $select = Db::name('uploadlog'); + if(!empty($params['uid'])){ + $select->where('uid', $params['uid']); + } + if(!empty($params['ip'])){ + $select->where('ip', $params['ip']); + } + if(!empty($params['fileurl'])){ + $select->where('fileurl', $params['fileurl']); + } + $total = $select->count(); + $items = $select->order('id','desc')->page($page, $limit)->select(); + + return msg("ok", "success", ['total'=>$total, 'items'=>$items]); + } +} \ No newline at end of file diff --git a/app/controller/admin/Link.php b/app/controller/admin/Link.php new file mode 100644 index 0000000..b4e2e07 --- /dev/null +++ b/app/controller/admin/Link.php @@ -0,0 +1,134 @@ + 'integer', + 'limit' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $page = intval($params['page']); + $limit = intval($params['limit']); + + $select = Db::name('link'); + if(!empty($params['keyword'])){ + $select->where('name|url', 'like', '%' . $params['keyword'] . '%'); + } + $total = $select->count(); + $items = $select->order('weight','desc')->page($page, $limit)->select(); + + return msg("ok", "success", ['total'=>$total, 'items'=>$items]); + } + + public function get() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $item = Db::name('link')->where('id', $params['id'])->findOrEmpty(); + + return msg('ok', 'success', $item); + } + + public function add() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'name|名称' => 'require|chsAlphaNum|unique:link', + 'url|地址' => 'require', + 'weight|权重' => 'require|integer', + 'enable' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('link')->cache('links')->insert([ + 'name' => trim($params['name']), + 'url' => trim($params['url']), + 'weight' => $params['weight'], + 'enable' => $params['enable'], + 'create_time' => date("Y-m-d H:i:s"), + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function edit() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require', + 'name|名称' => 'require|chsAlphaNum|unique:link', + 'url|地址' => 'require', + 'weight|权重' => 'require|integer', + 'enable' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('link')->cache('links')->where('id', $params['id'])->update([ + 'name' => trim($params['name']), + 'url' => trim($params['url']), + 'weight' => $params['weight'], + 'enable' => $params['enable'], + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function enable() + { + $id = input('post.id/d'); + $enable = input('post.enable/d'); + + Db::name('link')->cache('links')->where('id', $id)->update([ + 'enable' => $enable, + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function delete() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('link')->cache('links')->where('id', $params['id'])->delete(); + + return msg(); + } +} \ No newline at end of file diff --git a/app/controller/admin/Menu.php b/app/controller/admin/Menu.php new file mode 100644 index 0000000..6b15ea7 --- /dev/null +++ b/app/controller/admin/Menu.php @@ -0,0 +1,120 @@ + '主页', + 'href' => 'page/dashboard.html', + ]; + $logoInfo = [ + 'title' => '工具网后台', + 'image' => 'images/logo.png', + 'href' => './', + ]; + $menuInfo = [ + [ + "title" => "常规管理", + "icon" => "fa fa-address-book", + "href" => "", + "target" => "_self", + "child" => [ + [ + "title" => "主页", + "icon" => "fa fa-home", + "target" => "_self", + "href" => "page/dashboard.html", + ], + [ + "title" => "分类管理", + "href" => "page/category.html", + "icon" => "fa fa-bookmark-o", + "target" => "_self", + ], + [ + "title" => "插件管理", + "href" => "", + "icon" => "fa fa-puzzle-piece", + "target" => "_self", + "child" => [ + [ + "title" => "插件列表", + "href" => "page/plugin.html", + "icon" => "fa fa-list", + "target" => "_self" + ], + [ + "title" => "安装新插件", + "href" => "page/plugin/install.html", + "icon" => "fa fa-cloud-upload", + "target" => "_self" + ], + ] + ], + [ + "title" => "用户管理", + "href" => "page/user.html", + "icon" => "fa fa-user", + "target" => "_self", + ], + [ + "title" => "留言管理", + "href" => "page/comment.html", + "icon" => "fa fa-comments", + "target" => "_self", + ], + [ + "title" => "上传记录", + "href" => "page/uploadlog.html", + "icon" => "fa fa-cloud-upload", + "target" => "_self", + ], + [ + "title" => "友链管理", + "href" => "page/link.html", + "icon" => "fa fa-link", + "target" => "_self", + ], + [ + "title" => "系统配置", + "href" => "", + "icon" => "fa fa-cogs", + "target" => "_self", + "child" => [ + [ + "title" => "基本信息配置", + "href" => "page/system.html", + "icon" => "fa fa-cog", + "target" => "_self" + ], + [ + "title" => "管理员配置", + "href" => "page/account.html", + "icon" => "fa fa-user", + "target" => "_self" + ], + ] + ], + /*[ + "title" => "在线升级", + "href" => "page/update.html", + "icon" => "fa fa-cloud-upload", + "target" => "_self", + ],*/ + ], + ] + ]; + $systemInit = [ + 'homeInfo' => $homeInfo, + 'logoInfo' => $logoInfo, + 'menuInfo' => $menuInfo, + ]; + return json($systemInit); + } +} diff --git a/app/controller/admin/Plugin.php b/app/controller/admin/Plugin.php new file mode 100644 index 0000000..16c8a4c --- /dev/null +++ b/app/controller/admin/Plugin.php @@ -0,0 +1,224 @@ + 'integer', + 'limit' => 'integer', + 'category_id' => 'integer', + 'class' => 'is_legal_plugin_class', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $page = isset($params['page']) ? intval($params['page']) : 1; + $limit = isset($params['limit']) ? intval($params['limit']) : 50; + $orderby = ['id' => 'desc']; + + $select = Db::name('plugin'); + if(!empty($params['title'])){ + $select->where('title', 'like', '%' . $params['title'] . '%'); + } + if(!empty($params['alias'])){ + $select->where('alias', $params['alias']); + } + if(!empty($params['class'])){ + $select->where('class', $params['class']); + } + if(!empty($params['enable'])){ + $select->where('enable', '1'); + } + if(!empty($params['category_id'])){ + $select->where('category_id', $params['category_id']); + $orderby = ['weight' => 'desc', 'id' => 'desc']; + } + $total = $select->count(); + $items = $select->order($orderby)->page($page, $limit)->select(); + + return msg("ok", "success", ['total'=>$total, 'items'=>$items]); + } + + public function get() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $item = Db::name('plugin')->where('id', $params['id'])->findOrEmpty(); + + return msg('ok', 'success', $item); + } + + public function add() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'title|插件标题' => 'require|unique:plugin', + 'alias|路由别名' => 'require|unique:plugin', + 'class|插件类名' => 'require|unique:plugin|is_legal_plugin_class', + 'category_id|分类' => 'require|integer', + 'level|用户等级限制' => 'integer', + 'enable' => 'integer', + 'weight|权重' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('plugin')->cache('plugins')->insert([ + 'title' => trim($params['title']), + 'alias' => trim($params['alias']), + 'class' => trim($params['class']), + 'keyword' => trim($params['keyword']), + 'weight' => $params['weight'], + 'enable' => $params['enable'], + 'category_id' => $params['category_id'], + 'level' => $params['level'], + 'login' => $params['login'], + 'desc' => $params['desc'], + 'create_time' => date("Y-m-d H:i:s"), + 'update_time' => date("Y-m-d H:i:s") + ]); + + return msg(); + } + + public function edit() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require', + 'title|插件标题' => 'require|unique:plugin', + 'alias|路由别名' => 'unique:plugin', + 'class|插件类名' => 'unique:plugin|is_legal_plugin_class', + 'category_id|分类' => 'integer', + 'level|用户等级限制' => 'integer', + 'enable' => 'integer', + 'weight|权重' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + if(isset($params['level']) && isset($params['enable'])){ + Db::name('plugin')->cache('plugins')->where('id', $params['id'])->update([ + 'title' => trim($params['title']), + 'alias' => trim($params['alias']), + 'class' => trim($params['class']), + 'keyword' => trim($params['keyword']), + 'weight' => $params['weight'], + 'enable' => $params['enable'], + 'category_id' => $params['category_id'], + 'level' => $params['level'], + 'login' => $params['login'], + 'desc' => $params['desc'], + 'update_time' => date("Y-m-d H:i:s") + ]); + }else{ + Db::name('plugin')->cache('plugins')->where('id', $params['id'])->update([ + 'title' => trim($params['title']), + 'alias' => trim($params['alias']), + 'class' => trim($params['class']), + 'category_id' => $params['category_id'], + 'desc' => $params['desc'], + 'update_time' => date("Y-m-d H:i:s") + ]); + } + + return msg(); + } + + public function enable(){ + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require', + 'category_id|分类' => 'integer', + 'enable' => 'integer' + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('plugin')->cache('plugins')->where('id', $params['id'])->update($params); + return msg(); + } + + + public function delete() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $plugin = Db::name('plugin')->where('id', $params['id'])->find(); + if(!$plugin) return msg('ok', 'success'); + + Db::startTrans(); + try { + $classPath = plugin_path_get() . '/'.$plugin['class'].'/Install.php'; + if (file_exists($classPath)) { + require $classPath; + $class = 'plugin\\'.$plugin['class'].'\\Install'; + if (class_exists($class)) { + $uninstall = new $class(); + $uninstall->UnInstall(); + } + } + Db::name('plugin')->cache('plugins')->where('id', $params['id'])->delete(); + if (!empty($plugin['class'])) { + del_tree(plugin_path_get($plugin['class'])); + } + // 提交事务 + Db::commit(); + } catch (\Exception $e) { + // 回滚事务 + Db::rollback(); + return msg('error', $e->getMessage(), $e); + } + return msg('ok', 'success'); + } + + public function upload() + { + $params = Request::file(); + + $validate = Validate::rule([ + 'file' => 'require|file', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + $uploadedFile = Request::file('file'); + $plugin = new \app\lib\Plugin(); + $zipFilepath = $plugin->getZipFilepath(); + $uploadedFile->move(dirname($zipFilepath), basename($zipFilepath)); + return $plugin->install(); + } +} diff --git a/app/controller/admin/System.php b/app/controller/admin/System.php new file mode 100644 index 0000000..520718c --- /dev/null +++ b/app/controller/admin/System.php @@ -0,0 +1,127 @@ +count(); + $data['count2'] = Db::name('comment')->count(); + $data['count3'] = Db::name('user')->count(); + $data['count4'] = Db::name('user')->whereDay('create_time', date("Y-m-d"))->count(); + return msg('ok', 'success', $data); + } + + public function info() + { + + $tmp = 'version()'; + $mysqlVersion = Db::query("select version()")[0][$tmp]; + $data = [ + 'framework_version' => app()::VERSION, + 'php_version' => PHP_VERSION, + 'mysql_version' => $mysqlVersion, + 'software' => $_SERVER['SERVER_SOFTWARE'], + 'os' => php_uname(), + 'date' => date("Y-m-d H:i:s"), + 'checkupdate' => '//auth.cccyun.cc/app/tool.php?version='.config('app.version').'&ver='.config('app.ver') + ]; + return msg('ok', 'success', $data); + + } + + public function all() + { + $all = Db::name('config')->select(); + return msg('ok', 'success', $all); + } + + public function get() + { + $key = Request::param('key'); + $value = config_get($key); + return msg('ok', 'success', $value); + } + + public function set() + { + $params = Request::param(); + + foreach ($params as $v) { + if (empty($v['key'])) { + continue; + } + config_set($v['key'], $v['value']); + } + cache('configs', NULL); + $all = Db::name('config')->select(); + return msg('ok', 'success', $all); + } + + public function setpwd() + { + $params = Request::param(); + if(isset($params['username']))$params['username']=trim($params['username']); + if(isset($params['oldpwd']))$params['oldpwd']=trim($params['oldpwd']); + if(isset($params['newpwd']))$params['newpwd']=trim($params['newpwd']); + if(isset($params['newpwd2']))$params['newpwd2']=trim($params['newpwd2']); + + $validate = Validate::rule([ + 'username|用户名' => 'require|chsAlphaNum', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + config_set('admin_username', $params['username']); + + if(!empty($params['oldpwd']) && !empty($params['newpwd']) && !empty($params['newpwd2'])){ + $oldpwd = config_get('admin_password'); + if($oldpwd && !password_verify($params['oldpwd'], $oldpwd)){ + return msg('error', '旧密码不正确'); + } + if($params['newpwd'] != $params['newpwd2']){ + return msg('error', '两次新密码输入不一致'); + } + config_set('admin_password', password_hash($params['newpwd'], PASSWORD_DEFAULT)); + } + cache('configs', NULL); + cookie('admin_token', null); + return msg(); + } + + public function templates() + { + $glob = glob(app()->getRootPath() . config("view.view_dir_name") . '/index/*'); + $arr = []; + foreach ($glob as $v) { + if (is_dir($v)) { + array_push($arr, basename($v)); + } + } + return msg('ok', 'success', $arr); + + } + + public function clear(){ + Cache::clear(); + reset_opcache(); + return msg(); + } + + public function iptype(){ + $result = [ + ['name'=>'0_X_FORWARDED_FOR', 'ip'=>real_ip(0), 'city'=>get_ip_city(real_ip(0))], + ['name'=>'1_X_REAL_IP', 'ip'=>real_ip(1), 'city'=>get_ip_city(real_ip(1))], + ['name'=>'2_REMOTE_ADDR', 'ip'=>real_ip(2), 'city'=>get_ip_city(real_ip(2))] + ]; + return msg('ok', 'success', $result); + } +} diff --git a/app/controller/admin/Update.php b/app/controller/admin/Update.php new file mode 100644 index 0000000..901f146 --- /dev/null +++ b/app/controller/admin/Update.php @@ -0,0 +1,134 @@ +RELEASE_API = base64_decode('aHR0cHM6Ly90b29sLWNsb3VkLmFvYW9zdGFyLmNvbS9vcGVuL3JlbGVhc2U='); + } + + private function get_last_release() + { + + $res = get_curl($this->RELEASE_API, 0, Request::domain()); + $json = json_decode($res); + + if (empty($json) || empty($json->data)) { + if (!empty($json->message)) { + throw new \Exception($json->message); + } + throw new \Exception('"连接云中心失败,请检查网络连通性是否正常"'); + } + return $json; + } + + public function check() + { + try { + $release = $this->get_last_release(); + $release->data->current_version = get_version(); + + } catch (\Exception $e) { + return msg('error', $e->getMessage()); + + } + return msg('ok', 'success', $release->data); + } + + public function update() + { + try { + $release = $this->get_last_release(); + + } catch (\Exception $e) { + return msg('error', $e->getMessage()); + + } + $get = get_curl($release->data->download_url); + if (empty($get) || str_starts_with($get, 'CURL Error:')) { + return msg('error', '下载更新包失败,请检查网络连通性是否正常'); + } + $tmpFilename = app()->getRuntimePath() . '/tmp/' . uniqid() . '.zip'; + if (!file_exists(dirname($tmpFilename))) { + mkdir(dirname($tmpFilename), 0777, true); + } + if (!file_put_contents($tmpFilename, $get)) { + return msg('error', '保存文件失败,请检查是否有写入权限'); + } + $rootPath = app()->getRootPath(); + if (!unzip($tmpFilename, $rootPath)) { + return msg('error', '解压压缩包失败'); + } + return msg('ok', '资源包解压成功', $release->data); + } + + public function updateDatabase() + { + $glob = glob(app()->getRuntimePath() . '/update/sql/*.sql'); + if (empty($glob)) { + return msg('ok', '未发现数据库更新文件'); + } + foreach ($glob as $value) { + $result[$value] = []; + $basename = basename($value); + $lines = file($value); + $execSQL = new ExecSQL(); + $lines = $execSQL->purify($lines); + $number = $execSQL->exec($lines); + $result[$value] = array_merge($result[$value], $execSQL->getErrors()); + + if ($number > 0) { + $result[$value][] = "影响的记录数 $number"; + } + $result[$value][] = '创建数据库升级记录成功'; + end: + unlink($value); + $result[$value] = "[$basename]:" . implode("\n", $result[$value]); + } + return msg('ok', "数据库执行结果:\n" . implode("\n", $result)); + } + + public function updateScript() + { + $glob = glob(app()->getRuntimePath() . '/update/script/*.php'); + if (empty($glob)) { + return msg('ok', '未发现更新脚本'); + } + foreach ($glob as $value) { + $result[$value] = []; + $basename = basename($value); + try { + require $value; + $class = 'UpdateScript'; + if (!class_exists($class)) { + throw new \Exception("更新脚本不存在[$class]类"); + } + $instance = new $class(); + $boot = 'main'; + if (!method_exists($instance, $boot)) { + throw new \Exception("更新脚本不存在[$boot]方法"); + } + $instance->main(); + $result[$value] = array_merge($result[$value], $instance->getResult()); + } catch (\Exception $e) { + $result[$value][] = $e->getMessage(); + } + $result[$value][] = '创建更新脚本升级记录成功'; + end: + unlink($value); + $result[$value] = "[$basename]:" . implode("\n", $result[$value]); + } + return msg('ok', "更新脚本执行结果:\n" . implode("\n", $result)); + } +} \ No newline at end of file diff --git a/app/controller/admin/User.php b/app/controller/admin/User.php new file mode 100644 index 0000000..f741bc0 --- /dev/null +++ b/app/controller/admin/User.php @@ -0,0 +1,122 @@ + 'integer', + 'limit' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $page = intval($params['page']); + $limit = intval($params['limit']); + + $select = Db::name('user'); + if(!empty($params['id'])){ + $select->where('id|openid', $params['id']); + } + if(!empty($params['username'])){ + $select->where('username', 'like', '%' . $params['username'] . '%'); + } + $total = $select->count(); + $items = $select->order('id','desc')->page($page, $limit)->select(); + + return msg("ok", "success", ['total'=>$total, 'items'=>$items]); + } + + public function get() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + $item = Db::name('user')->where('id', $params['id'])->findOrEmpty(); + + return msg('ok', 'success', $item); + } + + public function enable(){ + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require', + 'enable' => 'integer' + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('user')->where('id', $params['id'])->update($params); + return msg(); + } + + public function edit() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require', + 'level' => 'integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('user')->where('id', $params['id'])->update([ + 'level' => $params['level'] + ]); + + return msg(); + } + + public function delete() + { + $params = Request::param(); + + $validate = Validate::rule([ + 'id' => 'require|integer', + ]); + if (!$validate->check($params)) { + return msg('error', $validate->getError()); + } + + Db::name('user')->where('id', $params['id'])->delete(); + + return msg('ok', 'success'); + } + + public function slogin(){ + $id = input('get.id/d'); + $item = Db::name('user')->where('id', $id)->find(); + if(!$item){ + return $this->alert('error', '用户不存在'); + } + + $session = md5($id.$item['password']); + $expiretime = time()+30744000; + $token = authcode("{$id}\t{$session}\t{$expiretime}", 'ENCODE', config_get('syskey')); + cookie('user_token', $token, ['expire' => $expiretime, 'httponly' => true]); + + return redirect("/"); + } + +} \ No newline at end of file diff --git a/app/event.php b/app/event.php new file mode 100644 index 0000000..00ab4bd --- /dev/null +++ b/app/event.php @@ -0,0 +1,17 @@ + [ + ], + + 'listen' => [ + 'AppInit' => [], + 'HttpRun' => [], + 'HttpEnd' => [], + 'LogLevel' => [], + 'LogWrite' => [], + ], + + 'subscribe' => [ + ], +]; diff --git a/app/lib/BilibiliHelper.php b/app/lib/BilibiliHelper.php new file mode 100644 index 0000000..05e17d7 --- /dev/null +++ b/app/lib/BilibiliHelper.php @@ -0,0 +1,477 @@ +'8K 超高清', '126'=>'杜比视界', '125'=>'HDR 真彩', '120'=>'4K 超清', '116'=>'1080P 高帧率', '112'=>'1080P 高码率', '80'=>'1080P 高清', '74'=>'720P 高帧率', '64'=>'720P 高清', '48'=>'720P 高清', '32'=>'480P 清晰', '16'=>'360P 流畅', '6'=>'240P 极速']; + public static $qualitys_audio = ['30216'=>'64K', '30232'=>'132K', '30280'=>'192K']; + + + public function __construct($cookie = null, $token = null) + { + $this->cookie = $cookie; //For WEB + $this->token = $token; //For APP/TV + } + + //获取登录信息 + public function login_info() + { + $url = 'https://api.bilibili.com/x/web-interface/nav'; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取登录状态失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + return true; + }elseif($arr['code'] == -101){ + throw new Exception('COOKIE已失效'); + }else{ + throw new Exception('获取登录状态失败 '.$arr['message']); + } + } + + //获取用户上传视频信息 + public function ugc_video_info($querystring){ + $url = 'https://api.bilibili.com/x/web-interface/view?'.$querystring; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频信息失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + return $arr['data']; + }else{ + throw new Exception('获取视频信息失败:'.$arr['message']); + } + } + + //获取正版视频信息 + public function pgc_video_info($ep_id){ + $url = 'https://api.bilibili.com/pgc/view/web/season?ep_id='.$ep_id; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频信息失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['result']['episodes'])) throw new Exception('获取视频信息失败,返回内容错误'); + $data = null; + foreach($arr['result']['episodes'] as $row){ + if($ep_id == $row['id']){ + $data = $row; + } + } + if(empty($data))throw new Exception('获取视频信息失败,未找到对应视频信息'); + return $data; + }else{ + throw new Exception('获取视频信息失败:'.$arr['message']); + } + } + + //获取正版视频信息 + public function pgc_video_info_by_ssid($season_id){ + $url = 'https://api.bilibili.com/pgc/view/web/season?season_id='.$season_id; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频信息失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['result']['episodes'])) throw new Exception('获取视频信息失败,返回内容错误'); + $data = $arr['result']['episodes'][0]; + if(empty($data))throw new Exception('获取视频信息失败,未找到对应视频信息'); + return $data; + }else{ + throw new Exception('获取视频信息失败:'.$arr['message']); + } + } + + //获取课堂视频信息 + public function pugv_video_info($ep_id){ + $url = 'https://api.bilibili.com/pugv/view/web/season?ep_id='.$ep_id; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频信息失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['data']['episodes'])) throw new Exception('获取视频信息失败,返回内容错误'); + $data = null; + foreach($arr['data']['episodes'] as $row){ + if($ep_id == $row['id']){ + $data = $row; + } + } + if(empty($data))throw new Exception('获取视频信息失败,未找到对应视频信息'); + return $data; + }else{ + throw new Exception('获取视频信息失败:'.$arr['message']); + } + } + + //获取视频弹幕 + public function get_video_comment($cid){ + $danmu_xml = $this->curl('https://comment.bilibili.com/'.$cid.'.xml'); + if(!$danmu_xml){ + return msg('error','获取弹幕内容失败'); + } + $dom = new \DOMDocument(); + $dom->loadXML($danmu_xml); + $result = $this->getArray($dom->documentElement); + return isset($result['d']) ? $result['d'] : []; + } + + //用户上传视频解析(支持外链) + public function get_video_url($aid, $cid){ + $param = [ + 'avid' => $aid, + 'cid' => $cid, + 'qn' => '120', + 'otype' => 'json', + 'fourk' => '1', + 'fnver' => '0', + 'fnval' => '128', + 'player' => '3', + 'platform' => 'html5', + 'high_quality' => '1', + ]; + $url = 'https://api.bilibili.com/x/player/playurl?'.http_build_query($param); + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频下载链接失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['data']['durl'])) throw new Exception('获取视频下载链接失败,返回内容错误'); + $url = $arr['data']['durl'][0]['url']; + $size = $arr['data']['durl'][0]['size']; + $quality = $arr['data']['support_formats'][0]['new_description']; + return ['url'=>$url, 'size'=>$size, 'quality'=>$quality, 'format'=>$arr['data']['format'], 'codec'=>$this->get_codec($arr['data']['video_codecid'])]; + }else{ + throw new Exception('获取视频下载链接失败 '.$arr['message']); + } + } + + //用户上传视频解析 + public function ugc_video_parse($aid, $cid){ + $param = [ + 'avid' => $aid, + 'cid' => $cid, + 'qn' => '0', + 'type' => '', + 'otype' => 'json', + 'fourk' => '1', + 'fnver' => '0', + 'fnval' => '4048', + ]; + $url = 'https://api.bilibili.com/x/player/playurl?'.http_build_query($param); + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频下载链接失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['data']['dash'])) throw new Exception('获取视频下载链接失败,返回内容错误'); + return $this->video_data_handle($arr['data']); + }else{ + throw new Exception('获取视频下载链接失败 '.$arr['message']); + } + } + + //用户上传视频解析(TV接口) + public function ugc_video_parse_tv($aid, $cid){ + $param = [ + 'avid' => $aid, + 'cid' => $cid, + 'qn' => '0', + 'type' => '', + 'otype' => 'json', + 'fnver' => '0', + 'fnval' => '4048', + 'device' => 'android', + 'platform' => 'android', + 'mobi_app' => 'android_tv_yst', + 'npcybs' => '0', + 'force_host' => '2', + 'build' => '102801', + ]; + if($this->token){ + $param['access_key'] = $this->token; + } + $url = 'https://api.snm0516.aisee.tv/x/tv/ugc/playurl?'.http_build_query($param); + $ret = $this->curl($url); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频下载链接失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['dash'])) throw new Exception('获取视频下载链接失败,返回内容错误'); + return $this->video_data_handle($arr); + }else{ + throw new Exception('获取视频下载链接失败 '.$arr['message']); + } + } + + //正版视频解析 + public function pgc_video_parse($aid, $cid, $epid, $is_cheese=false){ + $param = [ + 'avid' => $aid, + 'cid' => $cid, + 'qn' => '0', + 'type' => '', + 'otype' => 'json', + 'fourk' => '1', + 'fnver' => '0', + 'fnval' => '4048', + 'module' => 'bangumi', + 'ep_id' => $epid, + 'session' => '' + ]; + $url = 'https://api.bilibili.com/pgc/player/web/playurl?'.http_build_query($param); + if($is_cheese){ + $url = str_replace('/pgc/','/pugv/',$url); + } + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频下载链接失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['result']['dash'])) throw new Exception('获取视频下载链接失败,返回内容错误'); + return $this->video_data_handle($arr['result']); + }elseif($arr['code'] == -10403 && !$is_cheese){ + $url = 'https://www.bilibili.com/bangumi/play/ep'.$epid; + $ret = $this->curl($url, null, $this->cookie.';CURRENT_FNVAL=4048;'); + preg_match('!window\.__playinfo__=([\s\S]*?)<\/script>!',$ret,$match); + if(isset($match[1])){ + $arr = json_decode($match[1], true); + }else{ + throw new Exception('获取视频下载链接失败 '.$arr['message']); + } + }else{ + throw new Exception('获取视频下载链接失败 '.$arr['message']); + } + } + + //正版视频解析(TV接口) + public function pgc_video_parse_tv($aid, $cid, $epid, $is_cheese=false){ + $param = [ + 'appkey' => '4409e2ce8ffd12b8', + 'aid' => $aid, + 'cid' => $cid, + 'qn' => '0', + 'module' => 'bangumi', + 'ep_id' => $epid, + 'expire' => '0', + 'fnval' => '80', + 'fnver' => '0', + 'fourk' => '1', + 'mid' => '0', + 'otype' => 'json', + 'device' => 'android', + 'platform' => 'android', + 'mobi_app' => 'android_tv_yst', + 'npcybs' => '0', + 'build' => '102801', + 'ts' => time() + ]; + if($this->token){ + $param['access_key'] = $this->token; + } + $param['sign'] = $this->tv_get_sign($param); + $url = 'https://api.snm0516.aisee.tv/pgc/player/api/playurltv?'.http_build_query($param); + if($is_cheese){ + $url = str_replace('/pgc/','/pugv/',$url); + } + $ret = $this->curl($url); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取视频下载链接失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['dash'])) throw new Exception('获取视频下载链接失败,返回内容错误'); + return $this->video_data_handle($arr); + }else{ + throw new Exception('获取视频下载链接失败 '.$arr['message']); + } + } + + private function video_data_handle($data){ + $video = []; + $audio = []; + $timelength = round($data['timelength']/1000); + if($data['dash']['video']){ + foreach($data['dash']['video'] as $row){ + if(preg_match('!://(.*:\\d+)/!',$row['base_url'],$match)){ //替换PCDN + $row['base_url'] = str_replace($match[1], 'upos-sz-mirrorcoso1.bilivideo.com', $row['base_url']); + } + $size = round($timelength * $row['bandwidth'] / 8); + $video[] = ['url'=>$row['base_url'], 'quality'=>self::$qualitys[$row['id']], 'bandwidth'=>round($row['bandwidth']/1000), 'size' => $size, 'codec'=>$this->get_codec($row['codecid']), 'ratio'=>$row['width'].'×'.$row['height'], 'fps'=>$row['frame_rate']]; + } + } + if($data['dash']['audio']){ + foreach($data['dash']['audio'] as $row){ + $size = round($timelength * $row['bandwidth'] / 8); + $audio[] = ['url'=>$row['base_url'], 'quality'=>self::$qualitys_audio[$row['id']], 'bandwidth'=>round($row['bandwidth']/1000), 'size' => $size, 'codec'=>str_replace(['mp4a.40.2','ec-3'], ['M4A', 'AC3'], $row['codecs'])]; + } + } + return ['video'=>$video, 'audio'=>$audio]; + } + + //获取音乐信息 + public function get_audio_info($sid){ + $url = 'https://www.bilibili.com/audio/music-service-c/web/song/info?sid='.$sid; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取音乐信息失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + return $arr['data']; + }else{ + throw new Exception('获取音乐信息失败:'.$arr['message']); + } + } + + //音乐解析 + public function get_audio_url($sid){ + $url = 'https://www.bilibili.com/audio/music-service-c/web/url?sid='.$sid.'&privilege=2&quality=2'; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('获取音乐下载链接失败'); + }elseif(isset($arr['code']) && $arr['code'] == 0){ + if(!isset($arr['data']['cdns'])) throw new Exception('获取音乐下载链接失败,返回内容错误'); + $url = $arr['data']['cdns'][0]; + $size = $arr['data']['size']; + return ['url'=>$url, 'size'=>$size, 'quality'=>'MP3(192K)']; + }else{ + throw new Exception('获取音乐下载链接失败:'.$arr['message']); + } + } + + private function curl($url,$data=null,$cookie=null,$referer=null){ + $ch=curl_init(); + curl_setopt($ch, CURLOPT_URL,$url); + $httpheader[] = "Accept: application/json"; + $httpheader[] = "Accept-Language: zh-CN,zh;q=0.8"; + $httpheader[] = "Accept-Encoding: gzip,deflate,sdch"; + $httpheader[] = "Connection: keep-alive"; + curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); + if($data){ + if(is_array($data)) $data=http_build_query($data); + curl_setopt($ch, CURLOPT_POSTFIELDS,$data); + curl_setopt($ch, CURLOPT_POST,1); + } + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_REFERER, $referer?$referer:'https://www.bilibili.com/'); + if($cookie){ + curl_setopt($ch,CURLOPT_COOKIE, $cookie); + } + curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44'); + curl_setopt($ch, CURLOPT_ENCODING, "gzip"); + $ret=curl_exec($ch); + curl_close($ch); + return $ret; + } + + private function get_codec($codecid){ + switch($codecid){ + case 13: + return 'AV1';break; + case 12: + return 'HEVC';break; + case 7: + return 'AVC';break; + default: + return 'UNKNOWN';break; + } + } + + private function tv_get_sign($param){ + $key = '59b43e04ad6965f34319062b478f83dd'; + ksort($param); + $signstr = http_build_query($param); + return md5($signstr.$key); + } + + private function getArray($node) { + $array = false; + + if ($node->hasAttributes()) { + foreach ($node->attributes as $attr) { + $array[$attr->nodeName] = $attr->nodeValue; + } + } + + if ($node->hasChildNodes()) { + if ($node->childNodes->length == 1) { + $array[$node->firstChild->nodeName] = $this->getArray($node->firstChild); + } else { + foreach ($node->childNodes as $childNode) { + if ($childNode->nodeType != XML_TEXT_NODE) { + $array[$childNode->nodeName][] = $this->getArray($childNode); + } + } + } + } else { + return $node->nodeValue; + } + return $array; + } + + + private function encWbi($params){ + $mixin_key = $this->getMixinKey(); + $curr_time = time(); + $chr_filter = "/[!'()*]/"; + + $query = []; + $params['wts'] = $curr_time; + + ksort($params); + + foreach ($params as $key => $value) { + $value = preg_replace($chr_filter, '', $value); + $query[] = urlencode($key) . '=' . urlencode($value); + } + + $query = implode('&', $query); + $wbi_sign = md5($query . $mixin_key); + + return $query . '&w_rid=' . $wbi_sign; + } + + private function getMixinKey(){ + if(!empty($this->mixinKey)) return $this->mixinKey; + + $url = 'https://api.bilibili.com/x/web-interface/nav'; + $ret = $this->curl($url, null, $this->cookie); + $arr = json_decode($ret, true); + if(!$arr){ + throw new Exception('请求失败'); + } + if(!isset($arr['data']['wbi_img'])){ + throw new Exception('获取WbiKeys失败'); + } + + $img_url = $arr['data']['wbi_img']['img_url']; + $sub_url = $arr['data']['wbi_img']['sub_url']; + $img_key = substr(basename($img_url), 0, strpos(basename($img_url), '.')); + $sub_key = substr(basename($sub_url), 0, strpos(basename($sub_url), '.')); + $key = $img_key . $sub_key; + + $mixinKeyEncTab = [ + 46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, + 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, + 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11, + 36, 20, 34, 44, 52 + ]; + + $t = ''; + foreach ($mixinKeyEncTab as $n) $t .= $key[$n]; + $this->mixinKey = substr($t, 0, 32); + return $this->mixinKey; + } + +} \ No newline at end of file diff --git a/app/lib/EnvOperation.php b/app/lib/EnvOperation.php new file mode 100644 index 0000000..ab8500b --- /dev/null +++ b/app/lib/EnvOperation.php @@ -0,0 +1,63 @@ +exampleEnv = $exampleEnv; + } + + /** + * @return mixed + */ + public function getEnv() + { + return $this->env; + } + + /** + * @param mixed $env + */ + public function setEnv($env): void + { + $this->env = $env; + } + + public function purify($env = []) + { + preg_match_all('#{{(.+?)}}#', $this->env, $matches, PREG_SET_ORDER); + foreach ($matches as $v) { + $list = explode(':', $v[1]); + $value = isset($env[$list[0]]) ? $env[$list[0]] : ''; + $defaultValue = isset($list[1]) ? $list[1] : ''; + $type = isset($list[2]) ? $list[2] : ''; + if ($type === 'bool') { + $value = var_export(boolval($value), 1); + } + if (empty($value)) { + $value = $defaultValue; + } + $this->env = preg_replace('#' . $v[0] . '#', $value, $this->env); + } + } + + public function set($key, $newValue) + { + if (is_null($this->env)) { + $this->env = preg_replace('#{{' . $key . '}}#', $newValue, $this->exampleEnv); + } else { + $this->env = preg_replace('#{{' . $key . '}}#', $newValue, $this->env); + } + } + + public function save() + { + return file_put_contents(app()->getRootPath() . '.env', $this->env); + } + +} \ No newline at end of file diff --git a/app/lib/ExecSQL.php b/app/lib/ExecSQL.php new file mode 100644 index 0000000..69dad18 --- /dev/null +++ b/app/lib/ExecSQL.php @@ -0,0 +1,64 @@ +errors; + } + + /** + * @param $sql array|string SQL语句 传入字符串类型需以\n分割 + * @return int 返回影响行数 + */ + public function exec($sql) + { + $sql = $this->purify($sql); + $number = 0; + foreach ($sql as $key => $line) { + try { + $number += Db::execute($line); + } catch (\Exception $e) { + $this->errors[] = '第' . $key . '行:' . iconv('utf-8','utf-8//IGNORE',$e->getMessage()); + } + } + return $number; + } + + public function purify($sql) + { + $tmp = ''; + $purify = []; + if (!is_array($sql)) { + $sql = explode("\n", $sql); + } + foreach ($sql as $key => &$line) { + + $line = trim($line); + if (substr($line, 0, 2) == '--' || $line == '' || substr($line, 0, 2) == '/*') { + unset($sql[$key]); + continue; + } + $tmp .= $line; + if (substr($line, -1, 1) == ';') { + unset($sql[$key]); + $purify[] = $tmp; + $tmp = ''; + } + unset($sql[$key]); + } + return $purify; + } + +} \ No newline at end of file diff --git a/app/lib/GeetestLib.php b/app/lib/GeetestLib.php new file mode 100644 index 0000000..94e3170 --- /dev/null +++ b/app/lib/GeetestLib.php @@ -0,0 +1,146 @@ +geetest_id = $geetest_id; + $this->geetest_key = $geetest_key; + } + + //验证初始化 + public function pre_process($params) { + if(!empty($this->geetest_id) && !empty($this->geetest_key)){ + return $this->pre_process_api($params); + }else{ + return $this->pre_process_demo($params); + } + } + + private function pre_process_api($params) { + $public_params = [ + 'digestmod' => 'md5', + 'gt' => $this->geetest_id, + 'sdk' => self::SDK_VERSION, + 'json_format' => self::JSON_FORMAT + ]; + $params = array_merge($params, $public_params); + $url = 'http://api.geetest.com/register.php?' . http_build_query($params); + $res = get_curl($url); + $arr = json_decode($res, true); + if($arr && isset($arr['challenge'])){ + return $this->success_process($arr['challenge']); + }else{ + return $this->failback_process(); + } + } + + private function success_process($challenge) { + $challenge = md5($challenge . $this->geetest_key); + $result = array( + 'success' => 1, + 'gt' => $this->geetest_id, + 'challenge' => $challenge, + 'new_captcha'=>true + ); + return $result; + } + + private function failback_process() { + $challenge = md5(uniqid(mt_rand(), true) . microtime()); + $result = array( + 'success' => 0, + 'gt' => $this->geetest_id, + 'challenge' => $challenge, + 'new_captcha'=>true + ); + return $result; + } + + private function pre_process_demo($params) { + $url = 'https://www.geetest.com/demo/gt/register-fullpage?t=' . time() . "123"; + $referer = 'https://www.geetest.com/demo/slide-popup.html'; + $data = get_curl($url, 0, $referer); + $arr = json_decode($data, true); + if($arr && isset($arr['challenge'])){ + return $arr; + }else{ + return $this->failback_process(); + } + } + + //正常流程下(即验证初始化成功),二次验证 + public function success_validate($challenge, $validate, $seccode, $params) { + if(!empty($this->geetest_id) && !empty($this->geetest_key)){ + return $this->success_validate_api($challenge, $validate, $seccode, $params); + }else{ + return $this->success_validate_demo($challenge, $validate, $seccode); + } + } + + private function success_validate_api($challenge, $validate, $seccode, $params) { + if (!$this->check_validate($challenge, $validate)) { + return false; + } + $public_params = [ + 'seccode' => $seccode, + 'challenge' => $challenge, + 'captchaid' => $this->geetest_id, + 'sdk' => self::SDK_VERSION, + 'json_format' => self::JSON_FORMAT + ]; + $params = array_merge($params, $public_params); + $url = 'http://api.geetest.com/validate.php'; + $res = get_curl($url, http_build_query($params)); + $arr = json_decode($res, true); + if($arr && isset($arr['seccode'])){ + if($arr['seccode'] == md5($seccode)){ + return true; + } + } + return false; + } + + private function check_validate($challenge, $validate) { + if (strlen($validate) != 32) { + return false; + } + if (md5($this->geetest_key . 'geetest' . $challenge) != $validate) { + return false; + } + return true; + } + + private function success_validate_demo($challenge, $validate, $seccode) { + $params = [ + 'geetest_challenge' => $challenge, + 'geetest_validate' => $validate, + 'geetest_seccode' => $seccode + ]; + $url = 'https://www.geetest.com/demo/gt/validate-fullpage'; + $referer = 'https://www.geetest.com/demo/slide-popup.html'; + $data = get_curl($url, http_build_query($params), $referer); + $arr = json_decode($data, true); + if($arr && $arr['status'] == 'success'){ + return true; + } + return false; + } + + //异常流程下(即验证初始化失败,宕机模式),二次验证 + public function fail_validate($challenge, $validate, $seccode) { + if(md5($challenge) == $validate){ + return true; + }else{ + return false; + } + } +} \ No newline at end of file diff --git a/app/lib/Ip2Region.php b/app/lib/Ip2Region.php new file mode 100644 index 0000000..f5567c7 --- /dev/null +++ b/app/lib/Ip2Region.php @@ -0,0 +1,47 @@ + + * @datetime 2022/07/18 + */ +class Ip2Region +{ + /** + * 查询实例对象 + * @var XdbSearcher + */ + private $searcher; + + /** + * 初始化构造方法 + * @throws Exception + */ + public function __construct() + { + $this->searcher = XdbSearcher::newWithFileOnly(dirname(__FILE__) . '/ip2region.xdb'); + } + + /** + * 兼容原 memorySearch 查询 + * @param string $ip + * @return string + * @throws Exception + */ + public function search($ip) + { + return $this->searcher->search($ip); + } + + /** + * destruct method + * resource destroy + */ + public function __destruct() + { + $this->searcher->close(); + unset($this->searcher); + } +} \ No newline at end of file diff --git a/app/lib/IpLocation.php b/app/lib/IpLocation.php new file mode 100644 index 0000000..aca475e --- /dev/null +++ b/app/lib/IpLocation.php @@ -0,0 +1,239 @@ + + */ +class IpLocation { + /** + * QQWry.Dat文件指针 + * + * @var resource + */ + private $fp; + + /** + * 第一条IP记录的偏移地址 + * + * @var int + */ + private $firstip; + + /** + * 最后一条IP记录的偏移地址 + * + * @var int + */ + private $lastip; + + /** + * IP记录的总条数(不包含版本信息记录) + * + * @var int + */ + private $totalip; + + /** + * 构造函数,打开 QQWry.Dat 文件并初始化类中的信息 + * + * @param string $filename + * @return IpLocation + */ + public function __construct() { + $this->fp = 0; + $filename = dirname(__FILE__)."/QQWry.dat"; + if (($this->fp = fopen($filename, 'rb')) !== false) { + $this->firstip = $this->getlong(); + $this->lastip = $this->getlong(); + $this->totalip = ($this->lastip - $this->firstip) / 7; + } + } + + /** + * 返回读取的长整型数 + * + * @access private + * @return int + */ + private function getlong() { + //将读取的little-endian编码的4个字节转化为长整型数 + $result = unpack('Vlong', fread($this->fp, 4)); + return $result['long']; + } + + /** + * 返回读取的3个字节的长整型数 + * + * @access private + * @return int + */ + private function getlong3() { + //将读取的little-endian编码的3个字节转化为长整型数 + $result = unpack('Vlong', fread($this->fp, 3).chr(0)); + return $result['long']; + } + + /** + * 返回压缩后可进行比较的IP地址 + * + * @access private + * @param string $ip + * @return string + */ + private function packip($ip) { + // 将IP地址转化为长整型数,如果在PHP5中,IP地址错误,则返回False, + // 这时intval将Flase转化为整数-1,之后压缩成big-endian编码的字符串 + return pack('N', intval(ip2long($ip))); + } + + /** + * 返回读取的字符串 + * + * @access private + * @param string $data + * @return string + */ + private function getstring($data = "") { + $char = fread($this->fp, 1); + while (ord($char) > 0) { // 字符串按照C格式保存,以\0结束 + $data .= $char; // 将读取的字符连接到给定字符串之后 + $char = fread($this->fp, 1); + } + return $data; + } + + /** + * 返回地区信息 + * + * @access private + * @return string + */ + private function getarea() { + $byte = fread($this->fp, 1); // 标志字节 + switch (ord($byte)) { + case 0: // 没有区域信息 + $area = ""; + break; + case 1: + case 2: // 标志字节为1或2,表示区域信息被重定向 + fseek($this->fp, $this->getlong3()); + $area = $this->getstring(); + break; + default: // 否则,表示区域信息没有被重定向 + $area = $this->getstring($byte); + break; + } + return $area; + } + private $provinces = array("黑龙江省","辽宁省","吉林省","河北省","河南省","湖北省","湖南省","山东省","山西省","陕西省", + "安徽省","浙江省","江苏省","福建省","广东省","海南省","四川省","云南省","贵州省","青海省","甘肃省", + "江西省","台湾省","内蒙古","宁夏","新疆","西藏","广西","北京市","上海市","天津市","重庆市","香港","澳门"); + /** + * 根据所给 IP 地址或域名返回所在地区信息 + * + * @access public + * @param string $ip + * @return array + */ + public function getlocation($ip='') { + if (!$this->fp) return null; // 如果数据文件没有被正确打开,则直接返回空 + if(empty($ip)) return null; + $location['ip'] = gethostbyname($ip); // 将输入的域名转化为IP地址 + $ip = $this->packip($location['ip']); // 将输入的IP地址转化为可比较的IP地址 + // 不合法的IP地址会被转化为255.255.255.255 + // 对分搜索 + $l = 0; // 搜索的下边界 + $u = $this->totalip; // 搜索的上边界 + $findip = $this->lastip; // 如果没有找到就返回最后一条IP记录(QQWry.Dat的版本信息) + while ($l <= $u) { // 当上边界小于下边界时,查找失败 + $i = floor(($l + $u) / 2); // 计算近似中间记录 + fseek($this->fp, $this->firstip + $i * 7); + $beginip = strrev(fread($this->fp, 4)); // 获取中间记录的开始IP地址 + // strrev函数在这里的作用是将little-endian的压缩IP地址转化为big-endian的格式 + // 以便用于比较,后面相同。 + if ($ip < $beginip) { // 用户的IP小于中间记录的开始IP地址时 + $u = $i - 1; // 将搜索的上边界修改为中间记录减一 + } + else { + fseek($this->fp, $this->getlong3()); + $endip = strrev(fread($this->fp, 4)); // 获取中间记录的结束IP地址 + if ($ip > $endip) { // 用户的IP大于中间记录的结束IP地址时 + $l = $i + 1; // 将搜索的下边界修改为中间记录加一 + } + else { // 用户的IP在中间记录的IP范围内时 + $findip = $this->firstip + $i * 7; + break; // 则表示找到结果,退出循环 + } + } + } + + //获取查找到的IP地理位置信息 + fseek($this->fp, $findip); + $location['beginip'] = long2ip($this->getlong()); // 用户IP所在范围的开始地址 + $offset = $this->getlong3(); + fseek($this->fp, $offset); + $location['endip'] = long2ip($this->getlong()); // 用户IP所在范围的结束地址 + $byte = fread($this->fp, 1); // 标志字节 + switch (ord($byte)) { + case 1: // 标志字节为1,表示国家和区域信息都被同时重定向 + $countryOffset = $this->getlong3(); // 重定向地址 + fseek($this->fp, $countryOffset); + $byte = fread($this->fp, 1); // 标志字节 + switch (ord($byte)) { + case 2: // 标志字节为2,表示国家信息又被重定向 + fseek($this->fp, $this->getlong3()); + $location['country'] = $this->getstring(); + fseek($this->fp, $countryOffset + 4); + $location['area'] = $this->getarea(); + break; + default: // 否则,表示国家信息没有被重定向 + $location['country'] = $this->getstring($byte); + $location['area'] = $this->getarea(); + break; + } + break; + case 2: // 标志字节为2,表示国家信息被重定向 + fseek($this->fp, $this->getlong3()); + $location['country'] = $this->getstring(); + fseek($this->fp, $offset + 8); + $location['area'] = $this->getarea(); + break; + default: // 否则,表示国家信息没有被重定向 + $location['country'] = $this->getstring($byte); + $location['area'] = $this->getarea(); + break; + } + if (trim($location['country']) == 'CZ88.NET') { // CZ88.NET表示没有有效信息 + $location['country'] = '未知'; + } + if (trim($location['area']) == 'CZ88.NET') { + $location['area'] = ''; + } + $location['country'] = @iconv('gbk','utf-8',$location['country']); //转换格式,防止乱码 + $location['area'] = @iconv('gbk','utf-8',$location['area']); //转换格式,防止乱码 + foreach($this->provinces as $v) { + if(strpos($location['country'],$v) === 0) { + $location['province'] = $v; + $location['city'] = str_replace($v,'',$location['country']); + break; + } + } + if(empty($location['province'])) $location['province'] = $location['country']; + if(empty($location['city'])) $location['city'] = $location['country']; + return $location; + } + + /** + * 析构函数,用于在页面执行结束后自动关闭打开的文件。 + * + */ + public function __destruct() { + if ($this->fp) { + fclose($this->fp); + } + $this->fp = 0; + } + +} \ No newline at end of file diff --git a/app/lib/Oauth.php b/app/lib/Oauth.php new file mode 100644 index 0000000..203a3d7 --- /dev/null +++ b/app/lib/Oauth.php @@ -0,0 +1,74 @@ +apiurl = $config['apiurl'].'connect.php'; + $this->appid = $config['appid']; + $this->appkey = $config['appkey']; + $this->callback = $config['callback']; + } + + //获取登录跳转url + public function login($type, $state){ + + //-------构造请求参数列表 + $keysArr = array( + "act" => "login", + "appid" => $this->appid, + "appkey" => $this->appkey, + "type" => $type, + "redirect_uri" => $this->callback, + "state" => $state + ); + $login_url = $this->apiurl.'?'.http_build_query($keysArr); + $response = get_curl($login_url); + $arr = json_decode($response,true); + return $arr; + } + + //登录成功返回网站 + public function callback($code){ + //-------请求参数列表 + $keysArr = array( + "act" => "callback", + "appid" => $this->appid, + "appkey" => $this->appkey, + "code" => $code + ); + + //------构造请求access_token的url + $token_url = $this->apiurl.'?'.http_build_query($keysArr); + $response = get_curl($token_url); + + $arr = json_decode($response,true); + return $arr; + } + + //查询用户信息 + public function query($type, $social_uid){ + //-------请求参数列表 + $keysArr = array( + "act" => "query", + "appid" => $this->appid, + "appkey" => $this->appkey, + "type" => $type, + "social_uid" => $social_uid + ); + + //------构造请求access_token的url + $token_url = $this->apiurl.'?'.http_build_query($keysArr); + $response = get_curl($token_url); + + $arr = json_decode($response,true); + return $arr; + } +} diff --git a/app/lib/Plugin.php b/app/lib/Plugin.php new file mode 100644 index 0000000..9e7a9fa --- /dev/null +++ b/app/lib/Plugin.php @@ -0,0 +1,147 @@ +tmpPath = app()->getRuntimePath() . '/tmp/'; + $this->uniqid = uniqid(); + $this->zipFilename = $this->uniqid . '.zip'; + $this->zipFilepath = $this->tmpPath . $this->zipFilename; + + $this->tmpDirPath = $this->tmpPath . $this->uniqid . '/';; + + if (!file_exists($this->tmpPath)) { + mkdir($this->tmpPath, 0777, true); + } + + } + + private function unzip() + { + if (!file_exists($this->zipFilepath)) { + throw new Exception('压缩包不存在请重试'); + } + if (!unzip($this->zipFilepath, $this->tmpDirPath)) { + throw new Exception('解压失败'); + } + return true; + } + + private function checkPlugin() + { + $tree_relative = tree_relative($this->tmpDirPath); + $arr1 = array_keys($tree_relative); + $pluginAuthor = reset($arr1); + if (empty($pluginAuthor)) { + throw new Exception('插件目录格式有误,安装失败'); + } + $arr2 = array_keys($tree_relative[$pluginAuthor]); + $pluginName = reset($arr2); + + if (empty($pluginAuthor) || empty($pluginName)) { + throw new Exception('插件目录格式有误,安装失败'); + } + + if (!file_exists("$this->tmpDirPath/$pluginAuthor/$pluginName/Install.php")) { + throw new Exception('插件缺失Install.php,安装失败'); + } + return [ + $pluginAuthor, + $pluginName, + ]; + } + + private function clearOld() + { + + if (!file_exists(dirname($this->pluginPath))) { + mkdir(dirname($this->pluginPath), 0777, true); + } + del_tree($this->pluginPath); + } + + public function install() + { + try { + + $this->unzip(); + + $checkPlugin = $this->checkPlugin(); + + $this->pluginAuthor = $checkPlugin[0]; + $this->pluginName = $checkPlugin[1]; + + $this->pluginPath = plugin_path_get() . "/$this->pluginAuthor/$this->pluginName"; + //清空旧插件 + $this->clearOld(); + //移动文件 + rename("$this->tmpDirPath/$this->pluginAuthor/$this->pluginName", $this->pluginPath); + // 执行Install.php + require "$this->pluginPath/Install.php"; + + $this->pluginClass = "$this->pluginAuthor\\$this->pluginName"; + $class = "plugin\\$this->pluginClass\\Install"; + if (!class_exists($class)) { + throw new Exception("插件缺失类$this->pluginClass,安装失败"); + } + $install = new $class(); + $model = Db::name('plugin')->where('class', $this->pluginClass)->find(); + if (!$model) { + $model['title'] = '插件' . $this->uniqid; + $model['alias'] = $this->uniqid; + $model['class'] = $this->pluginClass; + $model['desc'] = ''; + $model['category_id'] = 0; + $model['request_count'] = 0; + } + $pluginconfig = $install->Install(); + if(isset($pluginconfig['title'])) $model['title'] = $pluginconfig['title']; + if(isset($pluginconfig['alias'])) $model['alias'] = $pluginconfig['alias']; + if(isset($pluginconfig['class'])) $model['class'] = $pluginconfig['class']; + if(isset($pluginconfig['desc'])) $model['desc'] = $pluginconfig['desc']; + + //判断alias是否重复 + $model2 = Db::name('plugin')->where('alias', $model['alias'])->find(); + if ($model2 && $model2['id'] !== $model['id']) { + $model['alias'] .= "_$this->uniqid"; + } + $model['id'] = Db::name('plugin')->cache('plugins')->insertGetId($model); + } catch (\Exception $e) { + @del_tree($this->pluginPath); + return msg('error', $e->getMessage()); + } finally { + @del_tree($this->tmpDirPath); + @unlink($this->zipFilepath); + } + return msg('ok', '安装成功', $model); + } + + /** + * @return string + */ + public function getZipFilepath(): string + { + return $this->zipFilepath; + } +} \ No newline at end of file diff --git a/app/lib/QQGroup.php b/app/lib/QQGroup.php new file mode 100644 index 0000000..bd4a8a4 --- /dev/null +++ b/app/lib/QQGroup.php @@ -0,0 +1,170 @@ +uin=$uin; + preg_match('/skey=(.{10});/',$cookie,$skey); + $this->gtk=$this->getGTK($skey[1]); + $this->cookie=$cookie; + } + + private function getGTK($skey){ + $len = strlen($skey); + $hash = 5381; + for ($i = 0; $i < $len; $i++) { + $hash += ($hash << 5 & 2147483647) + ord($skey[$i]) & 2147483647; + $hash &= 2147483647; + } + return $hash & 2147483647; + } + + //QQ群列表 + public function grouplist($onlyadmin = false){ + $url = 'https://qun.qq.com/cgi-bin/qun_mgr/get_group_list'; + $post = 'bkn='.$this->gtk; + $data = get_curl($url,$post,'https://qun.qq.com/member.html',$this->cookie,0,$this->ua); + $arr = json_decode($data,true); + //print_r($arr);exit; + if(!$arr){ + throw new Exception('QQ群列表获取失败!'); + } elseif(isset($arr['ec']) && $arr['ec']==0) { + $group = []; + if(isset($arr['create'])){ + foreach($arr['create'] as $row){ + $group[] = $row; + } + } + if(isset($arr['manage'])){ + foreach($arr['manage'] as $row){ + $group[] = $row; + } + } + if(!$onlyadmin && isset($arr['join'])){ + foreach($arr['join'] as $row){ + $group[] = $row; + } + } + return $group; + } elseif($arr['ec']==1 || $arr['ec']==4) { + session('qq_cookie_qun', null); + throw new Exception('当前QQ登录状态已失效,请重新登录!'); + } else { + throw new Exception('QQ群列表获取失败!'.$arr['em']); + } + } + + //QQ群成员列表 + public function groupmemberlist($groupid, $start, $end){ + $url='https://qun.qq.com/cgi-bin/qun_mgr/search_group_members'; + $post='gc='.$groupid.'&st='.$start.'&end='.$end.'&sort=0&bkn='.$this->gtk; + $data = get_curl($url,$post,'https://qun.qq.com/member.html',$this->cookie,0,$this->ua); + $arr = json_decode($data,true); + if (!$arr) { + throw new Exception('QQ群成员获取失败!'); + }elseif ($arr["ec"] == 1) { + throw new Exception('SKEY已失效!'); + }elseif ($arr["ec"]!=0){ + throw new Exception('QQ群成员获取失败!'.$arr['em']); + } + $data = array(); + $data['code'] = 0; + $data['count'] = $arr['count']; + $data['mems'] = $arr['mems']; + if($end<$arr['count'])$data['start'] = $end+1; + else $data['start'] = 0; + return $data; + } + + //群公告列表 + public function announcelist($groupid, $start){ + $url='https://web.qun.qq.com/cgi-bin/announce/list_announce'; + $post='bkn='.$this->gtk.'&qid='.$groupid.'&ft=23&s='.$start.'&n=10&ni=1&i=1'; + $data = get_curl($url,$post,'https://web.qun.qq.com/announce/index.html',$this->cookie,0,$this->ua); + $arr = json_decode($data,true); + if (!$arr) { + throw new Exception('公告列表获取失败!'); + }elseif ($arr["ec"] == 1) { + session('qq_cookie_qun', null); + throw new Exception('当前QQ登录状态已失效,请重新登录!'); + }elseif ($arr["ec"]!=0){ + throw new Exception('公告列表获取失败!'.$arr['em']); + } + if(!isset($arr['feeds']) || !$arr['feeds'])return []; + $uinlist = []; + foreach($arr['ui'] as $uin => $row){ + $uinlist[$uin] = $row['n']; + } + $list = []; + foreach($arr['feeds'] as $row){ + $msg = $row['msg']['text']; + if(mb_strlen($msg, 'utf-8')>30)$msg=mb_substr($msg, 0, 30, 'utf-8').'...'; + if($row['pinned']==1)$msg = '[顶]'.$msg; + $list[] = ['fid'=>$row['fid'], 'uin'=>$row['u'], 'nick'=>$uinlist[$row['u']]?$uinlist[$row['u']]:$row['u'], 'time'=>date("Y-m-d H:i:s", $row['pubt']), 'msg'=>$msg]; + } + return $list; + } + + //删除群公告 + public function delannounce($groupid, $fid){ + $url='https://web.qun.qq.com/cgi-bin/announce/del_feed'; + $post='fid='.$fid.'&ft=23&bkn='.$this->gtk.'&qid='.$groupid.'&op=0'; + $data = get_curl($url,$post,'https://web.qun.qq.com/announce/index.html',$this->cookie,0,$this->ua); + $arr = json_decode($data,true); + if(isset($arr["ec"]) && ($arr["ec"]==0 || $arr["ec"]==14)){ + return true; + }elseif ($arr["ec"] == 1) { + throw new Exception('SKEY已失效!'); + }else{ + throw new Exception('公告删除失败!'.$arr['em']); + } + } + + //解散群 + public function dismissgroup($groupuin){ + $resultarr = array(11=>'需要验证码', 13=>'号码异常,暂时不允许解散', 15=>'为了企业信息安全,请登录企业帐户中心进行解散操作。', 16=>'公益群暂不支持解散。', 17=>'该群被转让不足28天,暂时还不能解散。', 25=>'付费2000人群不可解散。', 51=>'您的群已绑定了教育机构,如需进行此操作,请先与机构解绑。'); + + $url = 'https://id.qq.com/qun/dismiss_group'; + $referrer = 'https://id.qq.com/proxy.html'; + $post = 'vc=undefined&gc='.$groupuin.'&uin='.$this->uin.'&s=1&bkn='.$this->gtk; + $data = get_curl($url,$post,$referrer,$this->cookie,0,$this->ua); + $arr = json_decode($data,true); + if(isset($arr["ec"]) && $arr["ec"]==0){ + return true; + }elseif ($arr["ec"] == 1) { + session('qq_cookie_qqid', null); + throw new Exception('当前QQ登录状态已失效,请重新登录!'); + }elseif(isset($arr['ec']) && array_key_exists($arr['ec'],$resultarr)){ + throw new Exception($resultarr[$arr['ec']]); + }else{ + throw new Exception('解散群失败,可能非群主或群不存在。返回信息:'.$data); + } + } + + //获取加群链接 + public function getjoinlink($groupuin){ + $url = 'https://admin.qun.qq.com/cgi-bin/qun_admin/get_join_link'; + $referrer = 'https://admin.qun.qq.com/create/share/index.html?ptlang=2052&groupUin='.$groupuin; + $post = 'gc='.$groupuin.'&type=1&bkn='.$this->gtk; + $data = get_curl($url,$post,$referrer,$this->cookie); + $arr = json_decode($data,true); + if (isset($arr["ec"]) && $arr['ec']==0) { + return $arr['url']; + }elseif($arr['ec']==1){ + session('qq_cookie_qun', null); + throw new Exception('加群链接获取失败,原因:SKEY已失效'); + }else{ + throw new Exception('加群链接获取失败 '.$arr['em']); + } + } +} \ No newline at end of file diff --git a/app/lib/QQLogin.php b/app/lib/QQLogin.php new file mode 100644 index 0000000..7fd8031 --- /dev/null +++ b/app/lib/QQLogin.php @@ -0,0 +1,148 @@ +-1,'msg'=>'daid不能为空'); + if($daid == '5'){ + $url='https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=4&d=72&v=4&t=0.5409099'.time().'&daid=5&pt_3rd_aid=0&u1=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone'; + $referer='https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone'; + }else{ + $url='https://ssl.ptlogin2.qq.com/ptqrshow?appid=716027609&e=2&l=M&s=4&d=72&v=4&t=0.5409099'.time().'&daid='.$daid.'&pt_3rd_aid=100384226'; + $referer='https://xui.ptlogin2.qq.com/cgi-bin/xlogin?daid='.$daid.'&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&target=self&s_url=https:%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html?para%3Dizone&pt_no_auth=0&appid=716027609&pt_3rd_aid=100384226'; + } + $arr=$this->get_curl_split($url,$referer); + preg_match('/qrsig=(.*?);/',$arr['header'],$match); + if($qrsig=$match[1]){ + $qrcode = new QrReader($arr['body'], QrReader::SOURCE_TYPE_BLOB); + $code_url = $qrcode->text(); + return array('saveOK'=>0,'qrsig'=>$qrsig,'data'=>base64_encode($arr['body']),'url'=>$code_url); + }else{ + return array('saveOK'=>1,'msg'=>'二维码获取失败'); + } + } + public function qrlogin($daid,$s_url,$qrsig){ + if(empty($daid)||empty($s_url))return array('saveOK'=>-1,'msg'=>'daid和s_url不能为空'); + if(empty($qrsig))return array('saveOK'=>-1,'msg'=>'qrsig不能为空'); + if($daid == '5'){ + $url='https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&ptqrtoken='.$this->getqrtoken($qrsig).'&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-'.time().'000&js_ver=23042119&js_type=1&login_sig=&pt_uistyle=40&aid=549000912&daid=5&'; + }else{ + $url='https://ssl.ptlogin2.qq.com/ptqrlogin?u1='.urlencode($s_url).'&ptqrtoken='.$this->getqrtoken($qrsig).'&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-'.time().'0000&js_ver=10194&js_type=1&login_sig=&pt_uistyle=40&aid=716027609&daid='.$daid.'&pt_3rd_aid=100384226&'; + } + $ret = $this->get_curl($url,0,'https://xui.ptlogin2.qq.com/','qrsig='.$qrsig.'; ',1); + if(preg_match("/ptuiCB\('(.*?)'\)/", $ret, $arr)){ + $r=explode("','",str_replace("', '","','",$arr[1])); + if($r[0]==0){ + preg_match('/uin=(\d+)&/',$ret,$uin); + $uin=$uin[1]; + preg_match('/skey=@(.{9});/',$ret,$skey); + preg_match('/superkey=(.*?);/',$ret,$superkey); + $data=$this->get_curl($r[2],0,0,0,1); + if($data) { + preg_match_all('/Set-Cookie: (.*?);/i',$data,$matchs); + $cookie=''; + foreach ($matchs[1] as $val) { + if(substr($val,-1)=='=')continue; + $cookie.=$val.'; '; + } + $cookie = substr($cookie,0,-2); + } + if($cookie){ + return array('saveOK'=>0,'uin'=>$uin,'cookie'=>$cookie,'nickname'=>$r[5]); + }else{ + return array('saveOK'=>6,'msg'=>'登录成功,获取相关信息失败!'.$r[2]); + } + }elseif($r[0]==65){ + return array('saveOK'=>1,'msg'=>'二维码已失效。'); + }elseif($r[0]==66){ + return array('saveOK'=>2,'msg'=>'二维码未失效。'); + }elseif($r[0]==67){ + return array('saveOK'=>3,'msg'=>'正在验证二维码。'); + }else{ + return array('saveOK'=>6,'msg'=>$r[4]); + } + }else{ + return array('saveOK'=>6,'msg'=>$ret); + } + } + private function getqrtoken($qrsig){ + $len = strlen($qrsig); + $hash = 0; + for($i = 0; $i < $len; $i++){ + $hash += (($hash << 5) & 2147483647) + ord($qrsig[$i]) & 2147483647; + $hash &= 2147483647; + } + return $hash & 2147483647; + } + private function get_curl($url,$post=0,$referer=0,$cookie=0,$header=0,$ua=0,$nobaody=0,$noproxy=0){ + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL,$url); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + $httpheader[] = "Accept: application/json"; + $httpheader[] = "Accept-Encoding: gzip,deflate,sdch"; + $httpheader[] = "Accept-Language: zh-CN,zh;q=0.8"; + $httpheader[] = "Connection: keep-alive"; + curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); + if($post){ + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $post); + } + if($header){ + curl_setopt($ch, CURLOPT_HEADER, TRUE); + } + if($cookie){ + curl_setopt($ch, CURLOPT_COOKIE, $cookie); + } + if($referer){ + curl_setopt($ch, CURLOPT_REFERER, $referer); + } + if($ua){ + curl_setopt($ch, CURLOPT_USERAGENT,$ua); + }else{ + curl_setopt($ch, CURLOPT_USERAGENT,$this->ua); + } + if($nobaody){ + curl_setopt($ch, CURLOPT_NOBODY,1); + + } + curl_setopt($ch, CURLOPT_TIMEOUT, 10); + curl_setopt($ch, CURLOPT_ENCODING, "gzip"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); + $ret = curl_exec($ch); + curl_close($ch); + return $ret; + } + private function get_curl_split($url,$referer=0){ + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL,$url); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + $httpheader[] = "Accept: */*"; + $httpheader[] = "Accept-Encoding: gzip,deflate,sdch"; + $httpheader[] = "Accept-Language: zh-CN,zh;q=0.8"; + $httpheader[] = "Connection: keep-alive"; + curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); + curl_setopt($ch, CURLOPT_HEADER, TRUE); + curl_setopt($ch, CURLOPT_USERAGENT,$this->ua); + if($referer){ + curl_setopt($ch, CURLOPT_REFERER, $referer); + } + curl_setopt($ch, CURLOPT_TIMEOUT, 10); + curl_setopt($ch, CURLOPT_ENCODING, "gzip"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); + $ret = curl_exec($ch); + $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); + $header = substr($ret, 0, $headerSize); + $body = substr($ret, $headerSize); + $ret=array(); + $ret['header']=$header; + $ret['body']=$body; + curl_close($ch); + return $ret; + } +} \ No newline at end of file diff --git a/app/lib/QQTool.php b/app/lib/QQTool.php new file mode 100644 index 0000000..eb7a669 --- /dev/null +++ b/app/lib/QQTool.php @@ -0,0 +1,209 @@ +uin=$uin; + $this->cookie=$cookie; + if($is_skey){ + $this->skey=getSubstr($cookie, 'skey=', ';'); + $this->gtk=$this->getGTK($this->skey); + }else{ + $pskey=getSubstr($cookie, 'p_skey=', ';'); + $this->gtk=$this->getGTK($pskey); + } + } + + private function getGTK($skey){ + $len = strlen($skey); + $hash = 5381; + for ($i = 0; $i < $len; $i++) { + $hash += ($hash << 5 & 2147483647) + ord($skey[$i]) & 2147483647; + $hash &= 2147483647; + } + return $hash & 2147483647; + } + + private function getGTK2($skey){ + $salt = 5381; + $md5key = 'tencentQQVIP123443safde&!%^%1282'; + $hash = array(); + $hash[] = ($salt << 5); + for($i = 0; $i < strlen($skey); $i ++) + { + $ASCIICode = mb_convert_encoding($skey[$i], 'UTF-32BE', 'UTF-8'); + $ASCIICode = hexdec(bin2hex($ASCIICode)); + $hash[] = (($salt << 5) + $ASCIICode); + $salt = $ASCIICode; + } + $md5str = md5(implode($hash) . $md5key); + return $md5str; + } + + //好友与分组列表 + public function friendlist(){ + $url = 'https://mobile.qzone.qq.com/friend/mfriend_list?g_tk='.$this->gtk.'&res_uin='.$this->uin.'&res_type=normal&format=json&count_per_page=10&page_index=0&page_type=0&mayknowuin=&qqmailstat='; + $json = get_curl($url,0,1,$this->cookie); + $json = mb_convert_encoding($json, "UTF-8", "UTF-8"); + $arr = json_decode($json, true); + if(!$arr){ + throw new Exception('好友列表获取失败!'); + }elseif(isset($arr['code']) && $arr['code']==0){ + return $arr["data"]; + }elseif ($arr["code"] == -3000) { + session('qq_cookie_qzone', null); + throw new Exception('当前QQ登录状态已失效,请重新登录!'); + }elseif (isset($arr["message"])) { + throw new Exception('好友列表获取失败!'.$arr["message"]); + }else{ + throw new Exception('好友列表获取失败!'); + } + } + + //说说列表 + public function shuoshuolist($count){ + $url='https://mobile.qzone.qq.com/list?g_tk='.$this->gtk.'&res_attach=&format=json&list_type=shuoshuo&action=0&res_uin='.$this->uin.'&count='.$count; + $data = get_curl($url,0,1,$this->cookie); + $arr=json_decode($data,true); + if (isset($arr['code']) && $arr['code']==0) { + if(isset($arr['data']['vFeeds'])) + return $arr['data']['vFeeds']; + else + return $arr['data']['feeds']['vFeeds']; + }elseif ($arr["code"] == -3000) { + session('qq_cookie_qzone', null); + throw new Exception('当前QQ登录状态已失效,请重新登录!'); + }elseif (isset($arr["message"])) { + throw new Exception('说说列表获取失败!'.$arr["message"]); + }else{ + throw new Exception('说说列表获取失败!'); + } + } + + //说说最多点赞数 + public function shuoshuozancount($count){ + $zan = 0; + $list = $this->shuoshuolist($count); + foreach($list as $row){ + if($row['like']['num']>$zan) $zan=$row['like']['num']; + } + return $zan; + } + + //秒赞检测 + public function mzjc(){ + $arr = $this->friendlist(); + $friend=$arr["list"]; + $gpnames=$arr["gpnames"]; + + foreach($gpnames as $gprow){ + $gpid=$gprow['gpid']; + $gpname[$gpid]=$gprow['gpname']; + } + + $arr = $this->shuoshuolist('5'); + $qqrow=array(); + $qquins=array(); + foreach ($arr as $row ) { + $url='https://users.qzone.qq.com/cgi-bin/likes/get_like_list_app?uin='.$this->uin.'&unikey='.urlencode($row['comm']['curlikekey']).'&begin_uin=0&query_count=200&if_first_page=1&g_tk='.$this->gtk; + $data2 = get_curl($url,0,'https://user.qzone.qq.com/',$this->cookie); + if(!$data2){ + throw new Exception('说说点赞列表获取失败!可更新SKEY后重试'); + } + preg_match('/_Callback\((.*?)\)\;/is',$data2,$json); + $arr2=json_decode($json[1],true); + $data2=$arr2['data']['like_uin_info']; + foreach ($data2 as $row2 ) { + $fuin=$row2['fuin']; + if(isset($qqrow[$fuin])){$qqrow[$fuin]++;} + else {$qqrow[$fuin]=1;$qquins[]=$fuin;} + } + } + + $mzcount=count($qqrow); + foreach ($friend as $row3 ) { + $fuin=$row3['uin']; + if(isset($qqrow[$fuin]))$list['mz']=$qqrow[$fuin]; + else $list['mz']=0; + $list['uin']=$row3['uin']; + $list['name']=$row3['nick']; + if($row3['remark'])$list['remark']=$row3['remark']; + else $list['remark']=$row3['nick']; + $list['groupid']=$row3['groupid']; + $result['friend'][]=$list; + unset($list); + } + rsort($result['friend']); + $friend=$result['friend']; + $fcount=count($friend); + $array=array(); + foreach($friend as $nrow){ + if($nrow['mz']) $array[$nrow['groupid']]['mzcount']=$array[$nrow['groupid']]['mzcount']+1; + $array[$nrow['groupid']][]=$nrow; + } + $friend=$array; + + return [$fcount, $mzcount, $friend, $gpnames]; + } + + //查询当前是否VIP + public function getisvip(){ + $data=get_curl('https://cgi.vip.qq.com/unipay/init?format=json&aid=vipminipay.pingtai.vipsite.nav_new&platform=pc&version=-1&isbreak=0&g_tk='.$this->getGTK2($this->skey),0,'https://vip.qq.com/',$this->cookie); + $arr=json_decode($data,true); + if($arr['ret']==-7) { + throw new Exception('SKEY已失效!'); + } + $isqqvip=$arr['recParam']['is_vip']; + return $isqqvip; + } + + //修改QQ昵称 + public function setnickname($nickname){ + $url="https://h5.qzone.qq.com/proxy/domain/w.qzone.qq.com/cgi-bin/user/cgi_apply_updateuserinfo_new?g_tk=".$this->gtk; + $data="qzreferrer=http%3A%2F%2Fctc.qzs.qq.com%2Fqzone%2Fv6%2Fsetting%2Fprofile%2Fprofile.html%3Ftab%3Dbase&nickname=".urlencode($nickname)."&emoji=&sex=1&birthday=2015-01-01&province=0&city=PAR&country=FRA&marriage=6&bloodtype=5&hp=0&hc=PAR&hco=FRA&career=&company=&cp=0&cc=0&cb=&cco=0&lover=&islunar=0&mb=1&uin=".$this->uin."&pageindex=1&nofeeds=1&fupdate=1&format=json"; + $return=get_curl($url,$data,$url,$this->cookie); + $arr=json_decode($return,true); + if(!$arr){ + throw new Exception('更换昵称失败'); + }elseif(isset($arr['code']) && $arr['code']==0){ + return true; + }elseif($arr["code"] == -3000) { + session('qq_cookie_qzone', null); + throw new Exception('当前QQ登录状态已失效,请重新登录!'); + }elseif(isset($arr['message'])){ + throw new Exception($arr['message']); + }else{ + throw new Exception('更换昵称失败'); + } + } + + public function set_online_status($model, $desc, $imei){ + $pt4_token = getSubstr($this->cookie, 'pt4_token=', ';'); + $ua = 'Mozilla/5.0 (Linux; Android 12; IN2010 Build/RKQ1.211119.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 V1_AND_SQ_8.8.68_2538_YYB_D A_8086800 QQ/8.8.88 NetType/4G'; + $data = json_encode(['13031'=>['req'=>['sModel'=>$model, 'iAppType'=>3, 'sIMei'=>$imei, 'sVer'=>'8.8.88', 'sManu'=>'', 'lUin'=>intval($this->uin), 'bShowInfo'=>true, 'sDesc'=>$desc, 'sModelShow'=> $model]]]); + $url = 'https://proxy.vac.qq.com/cgi-bin/srfentry.fcgi?ts='.time().'000&g_tk='.$this->gtk.'&data='.rawurlencode($data).'&pt4_token='.urlencode($pt4_token); + $data = get_curl($url, 0, 'https://proxy.vac.qq.com/', $this->cookie, 0, $ua); + $arr = json_decode($data, true); + if(!$arr){ + throw new Exception('修改在线状态失败'); + }elseif(isset($arr['ecode']) && $arr['ecode']==0){ + if(isset($arr['13031']['ret']) && $arr['13031']['ret']==0){ + return true; + }else{ + throw new Exception('修改在线状态失败,'.$arr['13031']['msg']); + } + }else{ + throw new Exception('修改在线状态失败,'.$data); + } + } +} \ No newline at end of file diff --git a/app/lib/QQWry.dat b/app/lib/QQWry.dat new file mode 100644 index 0000000000000000000000000000000000000000..0dda788b660a1a37b5ef177f69b79c233934461d GIT binary patch literal 10476130 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