├── app.js ├── controller ├── account.js ├── file.js ├── fileS.js ├── share.js └── user.js ├── package-lock.json ├── package.json ├── public ├── index.html └── static │ ├── css │ └── app.10b7bfa39063d9b8ccb424729737b893.css │ ├── fonts │ ├── element-icons.535877f.woff │ └── element-icons.732389d.ttf │ ├── img │ ├── 404.png │ └── bg.png │ └── js │ ├── 0.0c0f3cce3fca6038d857.js │ ├── 1.54b9d7ced14e156e29d9.js │ ├── 2.db85e39d3276f3ecc804.js │ ├── 3.d541d207e1cd564b0a8e.js │ ├── 4.26456f18569b34da9d90.js │ ├── 5.edbd1f9b9cffed202de7.js │ ├── 6.b6ca078e08e8e83861d1.js │ ├── 7.b694d49d89edb92cb71b.js │ ├── app.424190c74b493d1a9c29.js │ ├── manifest.d325e88cd3bcd8b1f4c8.js │ └── vendor.6a11734e71c03743a0ce.js ├── readme.md ├── router └── index.js └── utils ├── accord.js ├── cloud.js ├── db.js ├── filter.js ├── geetest.js ├── inject.js ├── token.js └── white.js /app.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const bodyParser = require('body-parser'); 3 | const app = express(); 4 | 5 | const filter = require('./utils/filter'); 6 | const router = require('./router/index'); 7 | const { port } = require('./utils/inject'); 8 | 9 | (async () => { 10 | app.use(express.static(__dirname + '/public')); 11 | 12 | // 数据解析 13 | app.use(bodyParser.json({ limit: '50mb' })); 14 | 15 | // 请求拦截器 16 | app.use(filter) 17 | 18 | // 挂载路由 19 | app.use(router) 20 | 21 | app.listen(await port()) 22 | })() 23 | 24 | -------------------------------------------------------------------------------- /controller/account.js: -------------------------------------------------------------------------------- 1 | const Cloud = require('../utils/cloud'); 2 | const db = require('../utils/db') 3 | module.exports = { 4 | list: { 5 | async get(req, res) { 6 | let s = db('account').filter({ adminId: req.info.userInfo.id }).value() 7 | res.return(s) 8 | }, 9 | async put(req, res) { 10 | const cloud = new Cloud() 11 | try { 12 | let info = await cloud.login(req.body.refresh_token) 13 | let userInfo = await cloud.getInfo() 14 | Object.assign(info, userInfo.personal_space_info) 15 | info.adminId = req.info.userInfo.id 16 | info.createTime = new Date() 17 | info.tip = req.body.tip 18 | info.type = true 19 | db('account').find({ id: info.id }).assign(info).write() 20 | res.return('添加成功') 21 | } catch (error) { 22 | // console.log(error) 23 | res.error(error) 24 | } 25 | }, 26 | async post(req, res) { 27 | let s = db('account').find({ adminId: req.info.userInfo.id, id: req.body.id }).value() 28 | if (!s) { 29 | res.error('当前天翼账号不属于该管理员') 30 | } else { 31 | db('account').find({ adminId: req.info.userInfo.id, id: req.body.id }).assign(req.body).write() 32 | db('account').find({ adminId: req.info.userInfo.id, id: req.body.id }).assign({ cookie: null }).write() 33 | try { 34 | await cloud.login(req.body.refresh_token) 35 | db('account').find({ adminId: req.info.userInfo.id, id: req.body.id }).assign({ type: true }).write() 36 | res.return('修改成功') 37 | } catch (error) { 38 | db('account').find({ adminId: req.info.userInfo.id, id: req.body.id }).assign({ type: false }).write() 39 | res.error(error) 40 | } 41 | } 42 | }, 43 | async delete(req, res) { 44 | db('account').remove({ adminId: req.info.userInfo.id, id: req.body.id }).write() 45 | res.return('删除成功') 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /controller/file.js: -------------------------------------------------------------------------------- 1 | const Cloud = require('../utils/cloud'); 2 | const db = require('../utils/db') 3 | module.exports = async (req, res) => { 4 | let info = db('account').find({ user_id: req.params.user_id }).value() 5 | const cloud = new Cloud(info.id) 6 | let s = await cloud.node(req.params.parent_file_id, req.params.user_name) 7 | if (s) { 8 | res.redirect(s.url); 9 | } else { 10 | res.sendStatus(401) 11 | } 12 | } -------------------------------------------------------------------------------- /controller/fileS.js: -------------------------------------------------------------------------------- 1 | const Cloud = require('../utils/cloud') 2 | const db = require('../utils/db') 3 | module.exports = { 4 | list: { 5 | async get(req, res) { 6 | 7 | if (!req.query.user_id) { 8 | return res.error("阿里云账号不存在") 9 | } 10 | let info = db('account').find({ user_id: req.query.user_id }).value() 11 | if (!info) { 12 | return res.error("阿里云账号不存在") 13 | } 14 | 15 | const cloud = new Cloud(info.id) 16 | 17 | try { 18 | let list = await cloud.list(req.query.parent_file_id) 19 | res.return(list) 20 | } catch (error) { 21 | // console.log(error) 22 | res.error(error) 23 | } 24 | 25 | } 26 | }, 27 | previewVideo: { 28 | async get(req, res) { 29 | let info = db('account').find({ user_id: req.query.user_id }).value() 30 | const cloud = new Cloud(info.id) 31 | let s = await cloud.previewVideo(req.query.file_id) 32 | if (s) { 33 | res.return(s) 34 | } else { 35 | res.sendStatus(401) 36 | } 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /controller/share.js: -------------------------------------------------------------------------------- 1 | const { get } = require('superagent'); 2 | const Cloud = require('../utils/cloud'); 3 | const db = require('../utils/db'); 4 | module.exports = { 5 | list: { 6 | async get(req, res) { 7 | let s = db('share').filter({ adminId: req.info.userInfo.id }).value() 8 | res.return(s) 9 | }, 10 | async put(req, res) { 11 | req.body.adminId = req.info.userInfo.id 12 | req.body.time = new Date() 13 | req.body.type = true 14 | let s = db('share').find({ adminId: req.body.adminId, user_id: req.body.user_id, file_id: req.body.file_id }).value() 15 | 16 | if (s && s != undefined) { 17 | db('share').find({ adminId: req.body.adminId, userId: req.body.userId, fileId: req.body.fileId }).assign(req.body).write() 18 | } else { 19 | // console.log(req.body) 20 | db('share').insert(req.body).write() 21 | } 22 | res.return('请至我的分享查看') 23 | }, 24 | async post(req, res) { 25 | db('share').find({ adminId: req.info.userInfo.id, id: req.body.id }).assign(req.body).write() 26 | res.return('操作成功') 27 | }, 28 | async delete(req, res) { 29 | db('share').remove({ adminId: req.info.userInfo.id, id: req.body.id }).write() 30 | res.return('删除成功') 31 | } 32 | }, 33 | downLoad: { 34 | async get(req, res) { 35 | if (!req.query.id) { 36 | return res.error('当前链接已失效') 37 | } 38 | 39 | let s = db('share').find({ id: req.query.id, type: true }).value() 40 | if (!s) { 41 | return res.error({ 42 | name: '404 not found', 43 | errMsg: '当前链接已失效1' 44 | }) 45 | } else { 46 | // console.log(s) 47 | if (s.password && !req.query.password) { 48 | return res.error({ 49 | name: s.name, 50 | errMsg: '请输入密码' 51 | }) 52 | } else if (s.password && req.query.password && s.password != req.query.password) { 53 | return res.error({ 54 | name: s.name, 55 | errMsg: '密码不正确' 56 | }) 57 | } else { 58 | // 获取子目录信息 59 | let info = db('account').find({ user_id: s.user_id }).value() 60 | let cloud = new Cloud(info.id) 61 | 62 | 63 | let r = await cloud.node(req.query.file_id, req.query.user_name) 64 | return res.return(r) 65 | } 66 | } 67 | } 68 | }, 69 | public: { 70 | async get(req, res) { 71 | if (!req.query.id) { 72 | return res.error('当前链接已失效') 73 | } 74 | // try {} catch (error) { 75 | // console.log(error) 76 | // return res.error({ 77 | // name: '404 not found', 78 | // errMsg: '当前链接已失效2' 79 | // }) 80 | // } 81 | 82 | let s = db('share').find({ id: req.query.id, type: true }).value() 83 | if (!s) { 84 | return res.error({ 85 | name: '404 not found', 86 | errMsg: '当前链接已失效1' 87 | }) 88 | } else { 89 | // console.log(s) 90 | if (s.password && !req.query.password) { 91 | return res.error({ 92 | name: s.name, 93 | errMsg: '请输入密码' 94 | }) 95 | } else if (s.password && req.query.password && s.password != req.query.password) { 96 | return res.error({ 97 | name: s.name, 98 | errMsg: '密码不正确' 99 | }) 100 | } else { 101 | // 获取子目录信息 102 | let info = db('account').find({ user_id: s.user_id }).value() 103 | let cloud = new Cloud(info.id) 104 | 105 | if (req.query.file_id) { 106 | // console.log(req.query) 107 | let fileInfo = await cloud.fileInfo(req.query.file_id) 108 | let r = await cloud.list(req.query.file_id) 109 | // let faInfo = await cloud.fileInfo(fileInfo.parent_file_id) 110 | let k = { 111 | name: fileInfo.name, 112 | item: [], 113 | user_id: s.user_id, 114 | file_id: req.query.file_id, 115 | parent_file_id: fileInfo.parent_file_id, 116 | // parent_file_name: faInfo.name 117 | } 118 | for (let index in r) { 119 | let ele = r[index] 120 | k.item.push({ 121 | name: ele.name, 122 | file_id: ele.file_id, 123 | type: ele.type, 124 | size: ele.size, 125 | created_at: ele.created_at, 126 | file_extension: ele.file_extension, 127 | thumbnail: ele.thumbnail, 128 | category: ele.category 129 | }) 130 | } 131 | res.return(k) 132 | } else { 133 | let r = await cloud.list(s.file_id) 134 | let k = { 135 | name: s.name, 136 | user_id: s.user_id, 137 | item: [], 138 | file_id: s.file_id, 139 | parent_file_id: null, 140 | faId: s.file_id 141 | // parent_file_name: null 142 | } 143 | for (let index in r) { 144 | let ele = r[index] 145 | k.item.push({ 146 | name: ele.name, 147 | file_id: ele.file_id, 148 | type: ele.type, 149 | size: ele.size, 150 | created_at: ele.created_at, 151 | file_extension: ele.file_extension, 152 | thumbnail: ele.thumbnail, 153 | category: ele.category 154 | }) 155 | } 156 | res.return(k) 157 | } 158 | } 159 | } 160 | 161 | } 162 | } 163 | } -------------------------------------------------------------------------------- /controller/user.js: -------------------------------------------------------------------------------- 1 | const { registerClick } = require('../utils/geetest'); 2 | const jwt = require('../utils/token'); 3 | const db = require('../utils/db') 4 | module.exports = { 5 | login: { 6 | async post(req, res) { 7 | let userInfo = db('user').find({ 8 | username: req.body.username, 9 | password: req.body.password 10 | }).value() 11 | if (userInfo) { 12 | let token = jwt.createToken({ username: req.body.username, time: new Date() }, 3600 * 2) 13 | let expireTime = new Date(new Date().getTime() + 3600 * 2 * 1000) 14 | db('user') 15 | .find({ 16 | username: req.body.username, 17 | password: req.body.password 18 | }) 19 | .assign({ expireTime: expireTime, token: token }) 20 | .write() 21 | return res.return({ 22 | token: token, 23 | role: userInfo.role 24 | }) 25 | } else { 26 | return res.error('账号或密码错误') 27 | } 28 | }, 29 | async get(req, res) { 30 | return res.return(await registerClick()) 31 | } 32 | }, 33 | change: { 34 | post(req, res) { 35 | if (!req.body.username && !req.body.password) { 36 | return res.error('缺失必要参数') 37 | } 38 | if (req.body.username) { 39 | db('user').find({ id: req.info.userInfo.id }).assign({ username: req.body.username }).write() 40 | } 41 | if (req.body.password) { 42 | db('user').find({ id: req.info.userInfo.id }).assign({ password: req.body.password, token: null }).write() 43 | } 44 | return res.return('修改成功') 45 | } 46 | }, 47 | loginOut: { 48 | post(req, res) { 49 | if (req.info.userInfo) { 50 | db('user').find({ id: req.info.userInfo.id }).assign({ token: null }).write() 51 | } 52 | res.return('登出成功') 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AShare", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.7", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 10 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 11 | "requires": { 12 | "mime-types": "~2.1.24", 13 | "negotiator": "0.6.2" 14 | } 15 | }, 16 | "ajv": { 17 | "version": "6.12.4", 18 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", 19 | "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", 20 | "requires": { 21 | "fast-deep-equal": "^3.1.1", 22 | "fast-json-stable-stringify": "^2.0.0", 23 | "json-schema-traverse": "^0.4.1", 24 | "uri-js": "^4.2.2" 25 | } 26 | }, 27 | "array-flatten": { 28 | "version": "1.1.1", 29 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 30 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 31 | }, 32 | "asn1": { 33 | "version": "0.2.4", 34 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 35 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 36 | "requires": { 37 | "safer-buffer": "~2.1.0" 38 | } 39 | }, 40 | "assert-plus": { 41 | "version": "1.0.0", 42 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 43 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 44 | }, 45 | "asynckit": { 46 | "version": "0.4.0", 47 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 48 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 49 | }, 50 | "aws-sign2": { 51 | "version": "0.7.0", 52 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 53 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 54 | }, 55 | "aws4": { 56 | "version": "1.10.1", 57 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", 58 | "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" 59 | }, 60 | "bcrypt-pbkdf": { 61 | "version": "1.0.2", 62 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 63 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 64 | "requires": { 65 | "tweetnacl": "^0.14.3" 66 | } 67 | }, 68 | "body-parser": { 69 | "version": "1.19.0", 70 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 71 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 72 | "requires": { 73 | "bytes": "3.1.0", 74 | "content-type": "~1.0.4", 75 | "debug": "2.6.9", 76 | "depd": "~1.1.2", 77 | "http-errors": "1.7.2", 78 | "iconv-lite": "0.4.24", 79 | "on-finished": "~2.3.0", 80 | "qs": "6.7.0", 81 | "raw-body": "2.4.0", 82 | "type-is": "~1.6.17" 83 | }, 84 | "dependencies": { 85 | "debug": { 86 | "version": "2.6.9", 87 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 88 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 89 | "requires": { 90 | "ms": "2.0.0" 91 | } 92 | }, 93 | "http-errors": { 94 | "version": "1.7.2", 95 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 96 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 97 | "requires": { 98 | "depd": "~1.1.2", 99 | "inherits": "2.0.3", 100 | "setprototypeof": "1.1.1", 101 | "statuses": ">= 1.5.0 < 2", 102 | "toidentifier": "1.0.0" 103 | } 104 | }, 105 | "inherits": { 106 | "version": "2.0.3", 107 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 108 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 109 | }, 110 | "ms": { 111 | "version": "2.0.0", 112 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 113 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 114 | }, 115 | "qs": { 116 | "version": "6.7.0", 117 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 118 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 119 | }, 120 | "raw-body": { 121 | "version": "2.4.0", 122 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 123 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 124 | "requires": { 125 | "bytes": "3.1.0", 126 | "http-errors": "1.7.2", 127 | "iconv-lite": "0.4.24", 128 | "unpipe": "1.0.0" 129 | } 130 | } 131 | } 132 | }, 133 | "bytes": { 134 | "version": "3.1.0", 135 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 136 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 137 | }, 138 | "caseless": { 139 | "version": "0.12.0", 140 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 141 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 142 | }, 143 | "colors": { 144 | "version": "1.4.0", 145 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 146 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 147 | }, 148 | "combined-stream": { 149 | "version": "1.0.8", 150 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 151 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 152 | "requires": { 153 | "delayed-stream": "~1.0.0" 154 | } 155 | }, 156 | "component-emitter": { 157 | "version": "1.3.0", 158 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 159 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" 160 | }, 161 | "content-disposition": { 162 | "version": "0.5.3", 163 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 164 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 165 | "requires": { 166 | "safe-buffer": "5.1.2" 167 | } 168 | }, 169 | "content-type": { 170 | "version": "1.0.4", 171 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 172 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 173 | }, 174 | "cookie": { 175 | "version": "0.4.0", 176 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 177 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 178 | }, 179 | "cookie-signature": { 180 | "version": "1.0.6", 181 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 182 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 183 | }, 184 | "cookiejar": { 185 | "version": "2.1.2", 186 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", 187 | "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" 188 | }, 189 | "core-util-is": { 190 | "version": "1.0.2", 191 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 192 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 193 | }, 194 | "crypto": { 195 | "version": "1.0.1", 196 | "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", 197 | "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" 198 | }, 199 | "crypto-js": { 200 | "version": "4.0.0", 201 | "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", 202 | "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==" 203 | }, 204 | "dashdash": { 205 | "version": "1.14.1", 206 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 207 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 208 | "requires": { 209 | "assert-plus": "^1.0.0" 210 | } 211 | }, 212 | "debug": { 213 | "version": "3.2.6", 214 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 215 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 216 | "dev": true, 217 | "requires": { 218 | "ms": "^2.1.1" 219 | } 220 | }, 221 | "delayed-stream": { 222 | "version": "1.0.0", 223 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 224 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 225 | }, 226 | "depd": { 227 | "version": "1.1.2", 228 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 229 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 230 | }, 231 | "destroy": { 232 | "version": "1.0.4", 233 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 234 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 235 | }, 236 | "ecc-jsbn": { 237 | "version": "0.1.2", 238 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 239 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 240 | "requires": { 241 | "jsbn": "~0.1.0", 242 | "safer-buffer": "^2.1.0" 243 | } 244 | }, 245 | "ee-first": { 246 | "version": "1.1.1", 247 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 248 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 249 | }, 250 | "encodeurl": { 251 | "version": "1.0.2", 252 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 253 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 254 | }, 255 | "escape-html": { 256 | "version": "1.0.3", 257 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 258 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 259 | }, 260 | "etag": { 261 | "version": "1.8.1", 262 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 263 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 264 | }, 265 | "express": { 266 | "version": "4.17.1", 267 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 268 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 269 | "requires": { 270 | "accepts": "~1.3.7", 271 | "array-flatten": "1.1.1", 272 | "body-parser": "1.19.0", 273 | "content-disposition": "0.5.3", 274 | "content-type": "~1.0.4", 275 | "cookie": "0.4.0", 276 | "cookie-signature": "1.0.6", 277 | "debug": "2.6.9", 278 | "depd": "~1.1.2", 279 | "encodeurl": "~1.0.2", 280 | "escape-html": "~1.0.3", 281 | "etag": "~1.8.1", 282 | "finalhandler": "~1.1.2", 283 | "fresh": "0.5.2", 284 | "merge-descriptors": "1.0.1", 285 | "methods": "~1.1.2", 286 | "on-finished": "~2.3.0", 287 | "parseurl": "~1.3.3", 288 | "path-to-regexp": "0.1.7", 289 | "proxy-addr": "~2.0.5", 290 | "qs": "6.7.0", 291 | "range-parser": "~1.2.1", 292 | "safe-buffer": "5.1.2", 293 | "send": "0.17.1", 294 | "serve-static": "1.14.1", 295 | "setprototypeof": "1.1.1", 296 | "statuses": "~1.5.0", 297 | "type-is": "~1.6.18", 298 | "utils-merge": "1.0.1", 299 | "vary": "~1.1.2" 300 | }, 301 | "dependencies": { 302 | "debug": { 303 | "version": "2.6.9", 304 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 305 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 306 | "requires": { 307 | "ms": "2.0.0" 308 | } 309 | }, 310 | "ms": { 311 | "version": "2.0.0", 312 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 313 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 314 | }, 315 | "qs": { 316 | "version": "6.7.0", 317 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 318 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 319 | } 320 | } 321 | }, 322 | "extend": { 323 | "version": "3.0.2", 324 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 325 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 326 | }, 327 | "extsprintf": { 328 | "version": "1.3.0", 329 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 330 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 331 | }, 332 | "fast-deep-equal": { 333 | "version": "3.1.3", 334 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 335 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 336 | }, 337 | "fast-json-stable-stringify": { 338 | "version": "2.1.0", 339 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 340 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 341 | }, 342 | "fast-safe-stringify": { 343 | "version": "2.0.7", 344 | "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", 345 | "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" 346 | }, 347 | "finalhandler": { 348 | "version": "1.1.2", 349 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 350 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 351 | "requires": { 352 | "debug": "2.6.9", 353 | "encodeurl": "~1.0.2", 354 | "escape-html": "~1.0.3", 355 | "on-finished": "~2.3.0", 356 | "parseurl": "~1.3.3", 357 | "statuses": "~1.5.0", 358 | "unpipe": "~1.0.0" 359 | }, 360 | "dependencies": { 361 | "debug": { 362 | "version": "2.6.9", 363 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 364 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 365 | "requires": { 366 | "ms": "2.0.0" 367 | } 368 | }, 369 | "ms": { 370 | "version": "2.0.0", 371 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 372 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 373 | } 374 | } 375 | }, 376 | "forever-agent": { 377 | "version": "0.6.1", 378 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 379 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 380 | }, 381 | "form-data": { 382 | "version": "2.3.3", 383 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 384 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 385 | "requires": { 386 | "asynckit": "^0.4.0", 387 | "combined-stream": "^1.0.6", 388 | "mime-types": "^2.1.12" 389 | } 390 | }, 391 | "formidable": { 392 | "version": "1.2.2", 393 | "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", 394 | "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" 395 | }, 396 | "forwarded": { 397 | "version": "0.1.2", 398 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 399 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 400 | }, 401 | "fresh": { 402 | "version": "0.5.2", 403 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 404 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 405 | }, 406 | "fs": { 407 | "version": "0.0.1-security", 408 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 409 | "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" 410 | }, 411 | "getpass": { 412 | "version": "0.1.7", 413 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 414 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 415 | "requires": { 416 | "assert-plus": "^1.0.0" 417 | } 418 | }, 419 | "graceful-fs": { 420 | "version": "4.2.4", 421 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 422 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 423 | }, 424 | "har-schema": { 425 | "version": "2.0.0", 426 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 427 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 428 | }, 429 | "har-validator": { 430 | "version": "5.1.5", 431 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 432 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 433 | "requires": { 434 | "ajv": "^6.12.3", 435 | "har-schema": "^2.0.0" 436 | } 437 | }, 438 | "http-errors": { 439 | "version": "1.7.3", 440 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 441 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 442 | "requires": { 443 | "depd": "~1.1.2", 444 | "inherits": "2.0.4", 445 | "setprototypeof": "1.1.1", 446 | "statuses": ">= 1.5.0 < 2", 447 | "toidentifier": "1.0.0" 448 | } 449 | }, 450 | "http-signature": { 451 | "version": "1.2.0", 452 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 453 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 454 | "requires": { 455 | "assert-plus": "^1.0.0", 456 | "jsprim": "^1.2.2", 457 | "sshpk": "^1.7.0" 458 | } 459 | }, 460 | "iconv-lite": { 461 | "version": "0.4.24", 462 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 463 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 464 | "requires": { 465 | "safer-buffer": ">= 2.1.2 < 3" 466 | } 467 | }, 468 | "inherits": { 469 | "version": "2.0.4", 470 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 471 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 472 | }, 473 | "ipaddr.js": { 474 | "version": "1.9.1", 475 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 476 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 477 | }, 478 | "is-promise": { 479 | "version": "2.2.2", 480 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", 481 | "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" 482 | }, 483 | "is-typedarray": { 484 | "version": "1.0.0", 485 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 486 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 487 | }, 488 | "is_js": { 489 | "version": "0.9.0", 490 | "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", 491 | "integrity": "sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0=" 492 | }, 493 | "isstream": { 494 | "version": "0.1.2", 495 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 496 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 497 | }, 498 | "jsbn": { 499 | "version": "0.1.1", 500 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 501 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 502 | }, 503 | "json-schema": { 504 | "version": "0.2.3", 505 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 506 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 507 | }, 508 | "json-schema-traverse": { 509 | "version": "0.4.1", 510 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 511 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 512 | }, 513 | "json-stringify-safe": { 514 | "version": "5.0.1", 515 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 516 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 517 | }, 518 | "jsprim": { 519 | "version": "1.4.1", 520 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 521 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 522 | "requires": { 523 | "assert-plus": "1.0.0", 524 | "extsprintf": "1.3.0", 525 | "json-schema": "0.2.3", 526 | "verror": "1.10.0" 527 | } 528 | }, 529 | "lodash": { 530 | "version": "4.17.20", 531 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 532 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 533 | }, 534 | "lodash-id": { 535 | "version": "0.14.0", 536 | "resolved": "https://registry.npmjs.org/lodash-id/-/lodash-id-0.14.0.tgz", 537 | "integrity": "sha1-uvSJNOVDobXWNG+MhGmLGoyAOJY=" 538 | }, 539 | "lowdb": { 540 | "version": "1.0.0", 541 | "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", 542 | "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", 543 | "requires": { 544 | "graceful-fs": "^4.1.3", 545 | "is-promise": "^2.1.0", 546 | "lodash": "4", 547 | "pify": "^3.0.0", 548 | "steno": "^0.4.1" 549 | } 550 | }, 551 | "media-typer": { 552 | "version": "0.3.0", 553 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 554 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 555 | }, 556 | "merge-descriptors": { 557 | "version": "1.0.1", 558 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 559 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 560 | }, 561 | "methods": { 562 | "version": "1.1.2", 563 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 564 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 565 | }, 566 | "mime": { 567 | "version": "2.4.6", 568 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", 569 | "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" 570 | }, 571 | "mime-db": { 572 | "version": "1.44.0", 573 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 574 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 575 | }, 576 | "mime-types": { 577 | "version": "2.1.27", 578 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 579 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 580 | "requires": { 581 | "mime-db": "1.44.0" 582 | } 583 | }, 584 | "minimist": { 585 | "version": "1.2.5", 586 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 587 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 588 | "dev": true 589 | }, 590 | "mkdirp": { 591 | "version": "0.5.5", 592 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 593 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 594 | "dev": true, 595 | "requires": { 596 | "minimist": "^1.2.5" 597 | } 598 | }, 599 | "moment": { 600 | "version": "2.29.1", 601 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 602 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" 603 | }, 604 | "ms": { 605 | "version": "2.1.2", 606 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 607 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 608 | }, 609 | "negotiator": { 610 | "version": "0.6.2", 611 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 612 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 613 | }, 614 | "oauth-sign": { 615 | "version": "0.9.0", 616 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 617 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 618 | }, 619 | "on-finished": { 620 | "version": "2.3.0", 621 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 622 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 623 | "requires": { 624 | "ee-first": "1.1.1" 625 | } 626 | }, 627 | "parseurl": { 628 | "version": "1.3.3", 629 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 630 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 631 | }, 632 | "path": { 633 | "version": "0.12.7", 634 | "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", 635 | "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", 636 | "requires": { 637 | "process": "^0.11.1", 638 | "util": "^0.10.3" 639 | } 640 | }, 641 | "path-to-regexp": { 642 | "version": "0.1.7", 643 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 644 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 645 | }, 646 | "performance-now": { 647 | "version": "2.1.0", 648 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 649 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 650 | }, 651 | "pify": { 652 | "version": "3.0.0", 653 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 654 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 655 | }, 656 | "portfinder": { 657 | "version": "1.0.28", 658 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", 659 | "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", 660 | "dev": true, 661 | "requires": { 662 | "async": "^2.6.2", 663 | "debug": "^3.1.1", 664 | "mkdirp": "^0.5.5" 665 | }, 666 | "dependencies": { 667 | "async": { 668 | "version": "2.6.3", 669 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 670 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 671 | "dev": true, 672 | "requires": { 673 | "lodash": "^4.17.14" 674 | } 675 | } 676 | } 677 | }, 678 | "process": { 679 | "version": "0.11.10", 680 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 681 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 682 | }, 683 | "proxy-addr": { 684 | "version": "2.0.6", 685 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 686 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 687 | "requires": { 688 | "forwarded": "~0.1.2", 689 | "ipaddr.js": "1.9.1" 690 | } 691 | }, 692 | "psl": { 693 | "version": "1.8.0", 694 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 695 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 696 | }, 697 | "punycode": { 698 | "version": "2.1.1", 699 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 700 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 701 | }, 702 | "qs": { 703 | "version": "6.9.4", 704 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", 705 | "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" 706 | }, 707 | "random-string": { 708 | "version": "0.2.0", 709 | "resolved": "https://registry.npmjs.org/random-string/-/random-string-0.2.0.tgz", 710 | "integrity": "sha1-pG5DdTUr7amg17DRntbTIezR2C0=" 711 | }, 712 | "range-parser": { 713 | "version": "1.2.1", 714 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 715 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 716 | }, 717 | "request": { 718 | "version": "2.88.2", 719 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 720 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 721 | "requires": { 722 | "aws-sign2": "~0.7.0", 723 | "aws4": "^1.8.0", 724 | "caseless": "~0.12.0", 725 | "combined-stream": "~1.0.6", 726 | "extend": "~3.0.2", 727 | "forever-agent": "~0.6.1", 728 | "form-data": "~2.3.2", 729 | "har-validator": "~5.1.3", 730 | "http-signature": "~1.2.0", 731 | "is-typedarray": "~1.0.0", 732 | "isstream": "~0.1.2", 733 | "json-stringify-safe": "~5.0.1", 734 | "mime-types": "~2.1.19", 735 | "oauth-sign": "~0.9.0", 736 | "performance-now": "^2.1.0", 737 | "qs": "~6.5.2", 738 | "safe-buffer": "^5.1.2", 739 | "tough-cookie": "~2.5.0", 740 | "tunnel-agent": "^0.6.0", 741 | "uuid": "^3.3.2" 742 | }, 743 | "dependencies": { 744 | "qs": { 745 | "version": "6.5.2", 746 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 747 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 748 | } 749 | } 750 | }, 751 | "request-ip": { 752 | "version": "2.1.3", 753 | "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.1.3.tgz", 754 | "integrity": "sha512-J3qdE/IhVM3BXkwMIVO4yFrvhJlU3H7JH16+6yHucadT4fePnR8dyh+vEs6FIx0S2x5TCt2ptiPfHcn0sqhbYQ==", 755 | "requires": { 756 | "is_js": "^0.9.0" 757 | } 758 | }, 759 | "safe-buffer": { 760 | "version": "5.1.2", 761 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 762 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 763 | }, 764 | "safer-buffer": { 765 | "version": "2.1.2", 766 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 767 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 768 | }, 769 | "send": { 770 | "version": "0.17.1", 771 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 772 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 773 | "requires": { 774 | "debug": "2.6.9", 775 | "depd": "~1.1.2", 776 | "destroy": "~1.0.4", 777 | "encodeurl": "~1.0.2", 778 | "escape-html": "~1.0.3", 779 | "etag": "~1.8.1", 780 | "fresh": "0.5.2", 781 | "http-errors": "~1.7.2", 782 | "mime": "1.6.0", 783 | "ms": "2.1.1", 784 | "on-finished": "~2.3.0", 785 | "range-parser": "~1.2.1", 786 | "statuses": "~1.5.0" 787 | }, 788 | "dependencies": { 789 | "debug": { 790 | "version": "2.6.9", 791 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 792 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 793 | "requires": { 794 | "ms": "2.0.0" 795 | }, 796 | "dependencies": { 797 | "ms": { 798 | "version": "2.0.0", 799 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 800 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 801 | } 802 | } 803 | }, 804 | "mime": { 805 | "version": "1.6.0", 806 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 807 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 808 | }, 809 | "ms": { 810 | "version": "2.1.1", 811 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 812 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 813 | } 814 | } 815 | }, 816 | "serve-static": { 817 | "version": "1.14.1", 818 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 819 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 820 | "requires": { 821 | "encodeurl": "~1.0.2", 822 | "escape-html": "~1.0.3", 823 | "parseurl": "~1.3.3", 824 | "send": "0.17.1" 825 | } 826 | }, 827 | "setprototypeof": { 828 | "version": "1.1.1", 829 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 830 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 831 | }, 832 | "sshpk": { 833 | "version": "1.16.1", 834 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 835 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 836 | "requires": { 837 | "asn1": "~0.2.3", 838 | "assert-plus": "^1.0.0", 839 | "bcrypt-pbkdf": "^1.0.0", 840 | "dashdash": "^1.12.0", 841 | "ecc-jsbn": "~0.1.1", 842 | "getpass": "^0.1.1", 843 | "jsbn": "~0.1.0", 844 | "safer-buffer": "^2.0.2", 845 | "tweetnacl": "~0.14.0" 846 | } 847 | }, 848 | "statuses": { 849 | "version": "1.5.0", 850 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 851 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 852 | }, 853 | "steno": { 854 | "version": "0.4.4", 855 | "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", 856 | "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", 857 | "requires": { 858 | "graceful-fs": "^4.1.3" 859 | } 860 | }, 861 | "string_decoder": { 862 | "version": "1.1.1", 863 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 864 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 865 | "requires": { 866 | "safe-buffer": "~5.1.0" 867 | } 868 | }, 869 | "superagent": { 870 | "version": "5.3.1", 871 | "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", 872 | "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", 873 | "requires": { 874 | "component-emitter": "^1.3.0", 875 | "cookiejar": "^2.1.2", 876 | "debug": "^4.1.1", 877 | "fast-safe-stringify": "^2.0.7", 878 | "form-data": "^3.0.0", 879 | "formidable": "^1.2.2", 880 | "methods": "^1.1.2", 881 | "mime": "^2.4.6", 882 | "qs": "^6.9.4", 883 | "readable-stream": "^3.6.0", 884 | "semver": "^7.3.2" 885 | }, 886 | "dependencies": { 887 | "debug": { 888 | "version": "4.1.1", 889 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 890 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 891 | "requires": { 892 | "ms": "^2.1.1" 893 | } 894 | }, 895 | "form-data": { 896 | "version": "3.0.0", 897 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", 898 | "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", 899 | "requires": { 900 | "asynckit": "^0.4.0", 901 | "combined-stream": "^1.0.8", 902 | "mime-types": "^2.1.12" 903 | } 904 | }, 905 | "readable-stream": { 906 | "version": "3.6.0", 907 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 908 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 909 | "requires": { 910 | "inherits": "^2.0.3", 911 | "string_decoder": "^1.1.1", 912 | "util-deprecate": "^1.0.1" 913 | } 914 | }, 915 | "semver": { 916 | "version": "7.3.2", 917 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 918 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" 919 | } 920 | } 921 | }, 922 | "toidentifier": { 923 | "version": "1.0.0", 924 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 925 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 926 | }, 927 | "tough-cookie": { 928 | "version": "2.5.0", 929 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 930 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 931 | "requires": { 932 | "psl": "^1.1.28", 933 | "punycode": "^2.1.1" 934 | } 935 | }, 936 | "tunnel-agent": { 937 | "version": "0.6.0", 938 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 939 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 940 | "requires": { 941 | "safe-buffer": "^5.0.1" 942 | } 943 | }, 944 | "tweetnacl": { 945 | "version": "0.14.5", 946 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 947 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 948 | }, 949 | "type-is": { 950 | "version": "1.6.18", 951 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 952 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 953 | "requires": { 954 | "media-typer": "0.3.0", 955 | "mime-types": "~2.1.24" 956 | } 957 | }, 958 | "unpipe": { 959 | "version": "1.0.0", 960 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 961 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 962 | }, 963 | "uri-js": { 964 | "version": "4.4.0", 965 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", 966 | "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", 967 | "requires": { 968 | "punycode": "^2.1.0" 969 | } 970 | }, 971 | "util": { 972 | "version": "0.10.4", 973 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 974 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 975 | "requires": { 976 | "inherits": "2.0.3" 977 | }, 978 | "dependencies": { 979 | "inherits": { 980 | "version": "2.0.3", 981 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 982 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 983 | } 984 | } 985 | }, 986 | "util-deprecate": { 987 | "version": "1.0.2", 988 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 989 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 990 | }, 991 | "utils-merge": { 992 | "version": "1.0.1", 993 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 994 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 995 | }, 996 | "uuid": { 997 | "version": "3.4.0", 998 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 999 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 1000 | }, 1001 | "vary": { 1002 | "version": "1.1.2", 1003 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1004 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1005 | }, 1006 | "verror": { 1007 | "version": "1.10.0", 1008 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1009 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1010 | "requires": { 1011 | "assert-plus": "^1.0.0", 1012 | "core-util-is": "1.0.2", 1013 | "extsprintf": "^1.2.0" 1014 | } 1015 | } 1016 | } 1017 | } 1018 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AShare", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "bin": "app.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1", 9 | "start": "node app.js", 10 | "pkg-win": "pkg -t win package.json", 11 | "pkg-linux": "pkg -t linux package.json", 12 | "build": "pkg . -t node12-win-x64 --output build/AShare_windows_amd64.exe && pkg . -t node12-macos-x64 --output build/AShare_macos_amd64 && pkg . -t node12-linux-x64 --output build/AShare_linux_amd64" 13 | }, 14 | "pkg": { 15 | "assets": [ 16 | "public/*", 17 | "public/**/**/*" 18 | ], 19 | "scripts": [ 20 | "public/static/js/*.js" 21 | ], 22 | "targets": [ 23 | "node14" 24 | ] 25 | }, 26 | "author": "app@vx.fyi", 27 | "license": "ISC", 28 | "dependencies": { 29 | "body-parser": "^1.18.2", 30 | "colors": "^1.4.0", 31 | "crypto": "^1.0.1", 32 | "crypto-js": "^4.0.0", 33 | "express": "^4.17.1", 34 | "fs": "0.0.1-security", 35 | "lodash-id": "^0.14.0", 36 | "lowdb": "^1.0.0", 37 | "moment": "^2.29.1", 38 | "path": "^0.12.7", 39 | "random-string": "^0.2.0", 40 | "request": "^2.88.0", 41 | "request-ip": "^2.1.3", 42 | "superagent": "^5.0.5" 43 | }, 44 | "devDependencies": { 45 | "portfinder": "^1.0.28" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /public/static/fonts/element-icons.535877f.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/badyun/AShare/3a1252cfc661b30df79d39871e55de007f50c2b4/public/static/fonts/element-icons.535877f.woff -------------------------------------------------------------------------------- /public/static/fonts/element-icons.732389d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/badyun/AShare/3a1252cfc661b30df79d39871e55de007f50c2b4/public/static/fonts/element-icons.732389d.ttf -------------------------------------------------------------------------------- /public/static/img/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/badyun/AShare/3a1252cfc661b30df79d39871e55de007f50c2b4/public/static/img/404.png -------------------------------------------------------------------------------- /public/static/img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/badyun/AShare/3a1252cfc661b30df79d39871e55de007f50c2b4/public/static/img/bg.png -------------------------------------------------------------------------------- /public/static/js/0.0c0f3cce3fca6038d857.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([0],{SldL:function(t,e){!function(e){"use strict";var r,n=Object.prototype,o=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag",s="object"==typeof t,l=e.regeneratorRuntime;if(l)s&&(t.exports=l);else{(l=e.regeneratorRuntime=s?t.exports:{}).wrap=x;var f="suspendedStart",h="suspendedYield",p="executing",d="completed",y={},v={};v[a]=function(){return this};var g=Object.getPrototypeOf,m=g&&g(g(R([])));m&&m!==n&&o.call(m,a)&&(v=m);var w=E.prototype=_.prototype=Object.create(v);b.prototype=w.constructor=E,E.constructor=b,E[c]=b.displayName="GeneratorFunction",l.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},l.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,E):(t.__proto__=E,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(w),t},l.awrap=function(t){return{__await:t}},j(k.prototype),k.prototype[u]=function(){return this},l.AsyncIterator=k,l.async=function(t,e,r,n){var o=new k(x(t,e,r,n));return l.isGeneratorFunction(e)?o:o.next().then(function(t){return t.done?t.value:o.next()})},j(w),w[c]="Generator",w[a]=function(){return this},w.toString=function(){return"[object Generator]"},l.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},l.values=R,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method="next",this.arg=r,this.tryEntries.forEach(G),!t)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=r)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(n,o){return u.type="throw",u.arg=t,e.next=n,o&&(e.method="next",e.arg=r),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),s=o.call(a,"finallyLoc");if(c&&s){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),G(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;G(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:R(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=r),y}}}function x(t,e,r,n){var o=e&&e.prototype instanceof _?e:_,i=Object.create(o.prototype),a=new P(n||[]);return i._invoke=function(t,e,r){var n=f;return function(o,i){if(n===p)throw new Error("Generator is already running");if(n===d){if("throw"===o)throw i;return S()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=O(a,r);if(u){if(u===y)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===f)throw n=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=p;var c=L(t,e,r);if("normal"===c.type){if(n=r.done?d:h,c.arg===y)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n=d,r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function L(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}function _(){}function b(){}function E(){}function j(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function k(t){var e;this._invoke=function(r,n){function i(){return new Promise(function(e,i){!function e(r,n,i,a){var u=L(t[r],t,n);if("throw"!==u.type){var c=u.arg,s=c.value;return s&&"object"==typeof s&&o.call(s,"__await")?Promise.resolve(s.__await).then(function(t){e("next",t,i,a)},function(t){e("throw",t,i,a)}):Promise.resolve(s).then(function(t){c.value=t,i(c)},a)}a(u.arg)}(r,n,e,i)})}return e=e?e.then(i,i):i()}}function O(t,e){var n=t.iterator[e.method];if(n===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=r,O(t,e),"throw"===e.method))return y;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}var o=L(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,y;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=r),e.delegate=null,y):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,y)}function F(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function G(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(F,this),this.reset(!0)}function R(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0,i=o&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=r("SldL"),o)n.regeneratorRuntime=i;else try{delete n.regeneratorRuntime}catch(t){n.regeneratorRuntime=void 0}},kzMD:function(t,e,r){"use strict";var n=r("Xxa5"),o=r.n(n),i=r("exGp"),a=r.n(i),u={props:["file_id","user_id","thumbnail"],data:function(){return{show:!1,options:{mutex:!1,theme:"#b7daff",loop:!0,lang:"zh-cn",hotkey:!0,preload:"auto",volume:.7,playbackSpeed:[.5,1,2,5,10,20],video:{url:null,quality:[],defaultQuality:0,pic:null}}}},mounted:function(){var t=this;return a()(o.a.mark(function e(){var r,n,i;return o.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$http.get("/file/previewVideo",{params:{user_id:t.user_id,file_id:t.file_id}});case 2:for(n in r=e.sent,t.options.video.pic=t.thumbnail,r)i=r[n],0==n&&(t.options.video.url=i.url),t.options.video.quality.unshift({name:i.template_id,url:i.url,type:"auto"});t.show=!0;case 6:case"end":return e.stop()}},e,t)}))()}},c={render:function(){var t=this.$createElement,e=this._self._c||t;return this.show?e("d-player",{ref:"player",attrs:{options:this.options}}):this._e()},staticRenderFns:[]};var s=r("VU/8")(u,c,!1,function(t){r("lCPK")},null,null);e.a=s.exports},lCPK:function(t,e){},o8EA:function(t,e,r){"use strict";e.a=i;var n=r("pFYg"),o=r.n(n);function i(t,e){if(0===arguments.length)return null;var r=e||"{y}-{m}-{d} {h}:{i}:{s}",n=void 0;"object"===(void 0===t?"undefined":o()(t))?n=t:(10===(""+t).length&&(t=1e3*parseInt(t)),n=new Date(t));var i={y:n.getFullYear(),m:n.getMonth()+1,d:n.getDate(),h:n.getHours(),i:n.getMinutes(),s:n.getSeconds(),a:n.getDay()};return r.replace(/{(y|m|d|h|i|s|a)+}/g,function(t,e){var r=i[e];return"a"===e?["日","一","二","三","四","五","六"][r]:(t.length>0&&r<10&&(r="0"+r),r||0)})}}}); -------------------------------------------------------------------------------- /public/static/js/1.54b9d7ced14e156e29d9.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([1],{BDvS:function(e,t){},lmfZ:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("woOf"),r=n.n(o),a=n("Xxa5"),s=n.n(a),c=n("exGp"),i=n.n(c),u=n("pFYg"),l=n.n(u);!function(e){if(void 0===e)throw new Error("Geetest requires browser environment");var t=e.document,n=e.Math,o=t.getElementsByTagName("head")[0];function r(e){this._obj=e}function a(e){var t=this;new r(e)._each(function(e,n){t[e]=n})}r.prototype={_each:function(e){var t=this._obj;for(var n in t)t.hasOwnProperty(n)&&e(n,t[n]);return this}},a.prototype={api_server:"api.geetest.com",protocol:"http://",typePath:"/gettype.php",fallback_config:{slide:{static_servers:["static.geetest.com","dn-staticdown.qbox.me"],type:"slide",slide:"/static/js/geetest.0.0.0.js"},fullpage:{static_servers:["static.geetest.com","dn-staticdown.qbox.me"],type:"fullpage",fullpage:"/static/js/fullpage.0.0.0.js"}},_get_fallback_config:function(){return s(this.type)?this.fallback_config[this.type]:this.new_captcha?this.fallback_config.fullpage:this.fallback_config.slide},_extend:function(e){var t=this;new r(e)._each(function(e,n){t[e]=n})}};var s=function(e){return"string"==typeof e},c=function(e){return"object"===(void 0===e?"undefined":l()(e))&&null!==e},i=/Mobi/i.test(navigator.userAgent)?3:0,u={},f={},p=function(e,t,n,o){t=function(e){return e.replace(/^https?:\/\/|\/$/g,"")}(t);var a=function(e){return 0!==(e=e.replace(/\/+/g,"/")).indexOf("/")&&(e="/"+e),e}(n)+function(e){if(!e)return"";var t="?";return new r(e)._each(function(e,n){(s(n)||function(e){return"number"==typeof e}(n)||function(e){return"boolean"==typeof e}(n))&&(t=t+encodeURIComponent(e)+"="+encodeURIComponent(n)+"&")}),"?"===t&&(t=""),t.replace(/&$/,"")}(o);return t&&(a=e+t+a),a},d=function(e,n,r,a,s,c,i){!function u(l){!function(e,n){var r=t.createElement("script");r.charset="UTF-8",r.async=!0,r.onerror=function(){n(!0)};var a=!1;r.onload=r.onreadystatechange=function(){a||r.readyState&&"loaded"!==r.readyState&&"complete"!==r.readyState||(a=!0,setTimeout(function(){n(!1)},0))},r.src=e,o.appendChild(r)}(p(r,a[l],s,c),function(t){if(t)if(l>=a.length-1){if(i(!0),n){e.error_code=508;var o=r+a[l]+s;m(e,o)}}else u(l+1);else i(!1)})}(0)},g=function(t,o,r,a){if(c(r.getLib))return r._extend(r.getLib),void a(r);if(r.offline)a(r._get_fallback_config());else{var s="geetest_"+(parseInt(1e4*n.random())+(new Date).valueOf());e[s]=function(t){"success"==t.status?a(t.data):t.status?a(r._get_fallback_config()):a(t),e[s]=void 0;try{delete e[s]}catch(e){}},d(r,!0,r.protocol,t,o,{gt:r.gt,callback:s},function(e){e&&a(r._get_fallback_config())})}},m=function(e,t){var n,o,r,a,s,c,u;d(e,!1,e.protocol,["monitor.geetest.com"],"/monitor/send",{time:(n=new Date,o=n.getFullYear(),r=n.getMonth()+1,a=n.getDate(),s=n.getHours(),c=n.getMinutes(),u=n.getSeconds(),r>=1&&r<=9&&(r="0"+r),a>=0&&a<=9&&(a="0"+a),s>=0&&s<=9&&(s="0"+s),c>=0&&c<=9&&(c="0"+c),u>=0&&u<=9&&(u="0"+u),o+"-"+r+"-"+a+" "+s+":"+c+":"+u),captcha_id:e.gt,challenge:e.challenge,pt:i,exception_url:t,error_code:e.error_code},function(e){})},v=function(e,t){var n={networkError:"网络错误",gtTypeError:"gt字段不是字符串类型"};if("function"!=typeof t.onError)throw new Error(n[e]);t.onError(n[e])};(e.Geetest||t.getElementById("gt_lib"))&&(f.slide="loaded"),e.initGeetest=function(t,n){var o=new a(t);t.https?o.protocol="https://":t.protocol||(o.protocol=e.location.protocol+"//"),"050cffef4ae57b5d5e529fea9540b0d1"!==t.gt&&"3bd38408ae4af923ed36e13819b14d42"!==t.gt||(o.apiserver="yumchina.geetest.com/",o.api_server="yumchina.geetest.com"),c(t.getType)&&o._extend(t.getType),g([o.api_server||o.apiserver],o.typePath,o,function(t){var r=t.type,a=function(){o._extend(t),n(new e.Geetest(o))};u[r]=u[r]||[];var s=f[r]||"init";"init"===s?(f[r]="loading",u[r].push(a),d(o,!0,o.protocol,t.static_servers||t.domains,t[r]||t.path,null,function(e){if(e)f[r]="fail",v("networkError",o);else{f[r]="loaded";for(var t=u[r],n=0,a=t.length;n-1||e.indexOf("iPhone")>-1||e.indexOf("iPad")>-1||e.indexOf("iPod")>-1||e.indexOf("Symbian")>-1?this.width="60px":this.width="200px"},methods:{col:function(e){this.width=e}}},w={render:function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-container",{staticClass:"home"},[s("el-header",[s("v-header",{attrs:{width:e.width},on:{col:e.col}})],1),e._v(" "),s("el-container",[s("el-aside",{attrs:{width:e.width}},[s("v-aside",{attrs:{width:e.width}})],1),e._v(" "),s("el-main",{style:{width:"calc(100vw - "+e.width+")"}},[s("main",[s("router-view",{staticClass:"fix"}),e._v(" "),s("section",{staticClass:"kp"},[s("div",{staticClass:"op"},[s("el-divider",{attrs:{"content-position":"left"}},[e._v("登录信息")]),e._v(" "),s("el-link",{attrs:{type:"success"}},[e._v("欢迎您,尊敬的管理员!当前时间为:"+e._s(e._f("parseTime")(new Date)))])],1),e._v(" "),s("div",{staticClass:"op"},[s("el-divider",{attrs:{"content-position":"left"}},[e._v("作者信息")]),e._v(" "),s("el-link",{attrs:{target:"_blank",href:"https://www.52pojie.cn/home.php?mod=space&uid=569763",type:"warning"}},[e._v("吾爱破解:badyun")])],1),e._v(" "),s("div",{staticClass:"op"},[s("el-divider",{attrs:{"content-position":"left"}},[e._v("版本信息")]),e._v(" "),s("el-link",{attrs:{type:"info"}},[e._v("v0.01")])],1),e._v(" "),s("div",{staticClass:"op"},[s("el-divider",{attrs:{"content-position":"left"}},[e._v("免责声明")]),e._v(" "),s("el-link",{attrs:{type:"danger"}},[e._v("本程序仅供技术研究使用,请勿用于非法用途;在任何情况下,对于因使用本程序而导致的任何损害赔偿,作者均无须承担法律责任。")])],1)])],1)])],1)],1)},staticRenderFns:[]};var x=s("VU/8")(f,w,!1,function(e){s("MB7W")},"data-v-dc51d7f0",null);t.default=x.exports},h7d2:function(e,t){}}); -------------------------------------------------------------------------------- /public/static/js/3.d541d207e1cd564b0a8e.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([3],{CY7E:function(e,t){},Y2Ra:function(e,t){},eK4w:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={components:{vFile:n("xWEe").a},data:function(){return{pageNum:1}},computed:{userId:function(){return 1*this.$route.params.userId},fileId:function(){if(void 0==this.$route.params.fileId)return"-11";var e=this.$route.params.fileId;return e}}},r={render:function(){var e=this.$createElement;return(this._self._c||e)("v-file",{key:this.fileId,staticClass:"pk",attrs:{fId:this.userId,pageNum:this.pageNum,fileId:this.fileId}})},staticRenderFns:[]};var a=n("VU/8")(i,r,!1,function(e){n("CY7E")},"data-v-b603301a",null);t.default=a.exports},xWEe:function(e,t,n){"use strict";var i=n("Xxa5"),r=n.n(i),a=n("exGp"),o=n.n(a),s=n("o8EA"),l={data:function(){return{title:null,file_id:null,thumbnail:null,centerDialogVisible:!1,tableData:[],height:window.innerHeight-180}},components:{vPlay:n("kzMD").a},filters:{parseTime:function(e){return Object(s.a)(new Date(e))},initSize:function(e){var t=e/1024;return(t=t.toFixed(2))>1024?(t=(t/=1024).toFixed(2))>1024?(t=(t/=1024).toFixed(2))>1024?(t=(t/=1024).toFixed(2),t+="TB"):t+="GB":t+="MB":t+="KB",t}},computed:{user_id:function(){return this.$route.params.user_id},parent_file_id:function(){return this.$route.params.parent_file_id}},watch:{$route:function(e,t){this.init()}},mounted:function(){this.init()},methods:{init:function(){var e=this;return o()(r.a.mark(function t(){var n;return r.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$http.get("/file/list",{params:{user_id:e.user_id,parent_file_id:e.parent_file_id}});case 2:n=t.sent,e.tableData=n,console.log(n);case 5:case"end":return t.stop()}},t,e)}))()},getAllLink:function(e){var t=this;return o()(r.a.mark(function n(){var i,a,o,s;return r.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t.$http.get("/file/list",{params:{user_id:t.user_id,parent_file_id:e}});case 2:for(o in i=n.sent,a="",i)"file"==(s=i[o]).type&&(a+=s.name,a+="$",a+=window.location.protocol+"//"+window.location.host+"/file/"+t.user_id+"/"+s.file_id+"/"+encodeURIComponent(s.name.replace("."+s.file_extension,""))+"."+s.file_extension,a+="\n");return n.prev=5,n.next=8,t.$copyText(a);case 8:t.$message({message:"链接已成功复制到剪贴板",type:"success"}),n.next=14;break;case 11:n.prev=11,n.t0=n.catch(5),t.$message.error("复制失败");case 14:case"end":return n.stop()}},n,t,[[5,11]])}))()},getOneLink:function(e,t,n){var i=this;return o()(r.a.mark(function a(){var o;return r.a.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return o=window.location.protocol+"//"+window.location.host+"/file/"+i.user_id+"/"+e+"/"+encodeURIComponent(t.replace("."+n,""))+"."+n,r.prev=1,r.next=4,i.$copyText(o);case 4:i.$message({message:"链接已成功复制到剪贴板",type:"success"}),r.next=10;break;case 7:r.prev=7,r.t0=r.catch(1),i.$message.error("复制失败");case 10:case"end":return r.stop()}},a,i,[[1,7]])}))()},doPriview:function(e){var t=this;return o()(r.a.mark(function n(){var i;return r.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:"video"==e.category?(t.title=e.name,t.file_id=e.file_id,t.thumbnail=e.thumbnail,t.centerDialogVisible=!0):"image"==e.category?window.open(e.url):(i=window.location.protocol+"//"+window.location.host+"/file/"+t.user_id+"/"+e.file_id+"/"+encodeURIComponent(e.name.replace("."+e.file_extension,""))+"."+e.file_extension,window.open(i));case 1:case"end":return n.stop()}},n,t)}))()},doShare:function(e){var t=this;return o()(r.a.mark(function n(){var i;return r.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return e.user_id=t.user_id,n.next=3,t.$http.put("/share/list",e);case 3:i=n.sent,t.$message({message:i,type:"success"});case 5:case"end":return n.stop()}},n,t)}))()}}},u={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("el-table",{staticStyle:{width:"100%"},attrs:{data:e.tableData,border:"",stripe:""}},[n("el-table-column",{attrs:{prop:"name",label:"文件名"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("router-link",{attrs:{to:"/folder/"+e.user_id+"/"+t.row.file_id}},["folder"==t.row.type?n("el-link",{attrs:{type:"primary"}},[e._v(e._s(t.row.name))]):e._e()],1),e._v(" "),"file"==t.row.type?n("el-link",{attrs:{href:"/file/"+e.user_id+"/"+t.row.file_id+"/"+t.row.name,target:"_blank",type:"success"}},[e._v(e._s(t.row.name))]):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"size",label:"类型",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return["folder"==t.row.type?n("span",[e._v("文件夹")]):n("span",[e._v("文件")])]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"size",label:"大小",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return["folder"==t.row.type?n("span",[e._v("————")]):n("span",[e._v(e._s(e._f("initSize")(t.row.size)))])]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"updated_at",label:"更新时间",width:"180"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v("\n "+e._s(e._f("parseTime")(t.row.updated_at))+"\n ")]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"updated_at",label:"操作",width:"320"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("div",[n("div",{staticStyle:{"margin-bottom":"16px"}},["file"==t.row.type?n("el-button",{attrs:{size:"mini",round:"",type:"primary"},on:{click:function(n){return e.getOneLink(t.row.file_id,t.row.name,t.row.file_extension)}}},[e._v("获取文件直链")]):e._e(),e._v(" "),"file"!=t.row.type?n("el-button",{attrs:{size:"mini",round:"",type:"success"},on:{click:function(n){return e.doShare(t.row)}}},[e._v("分享文件夹")]):e._e(),e._v(" "),"file"==t.row.type?n("el-button",{attrs:{size:"mini",round:"",type:"danger"},on:{click:function(n){return e.doPriview(t.row)}}},[e._v("预览")]):e._e()],1),e._v(" "),"file"!=t.row.type?n("div",[n("el-button",{attrs:{size:"mini",round:"",type:"warning"},on:{click:function(n){return e.getAllLink(t.row.file_id)}}},[e._v("获取全部文件直链")])],1):e._e()])]}}])})],1),e._v(" "),n("el-dialog",{attrs:{title:e.title,"destroy-on-close":!0,visible:e.centerDialogVisible,width:"60%",center:""},on:{"update:visible":function(t){e.centerDialogVisible=t}}},[n("v-play",{key:e.file_id,attrs:{file_id:e.file_id,user_id:e.user_id,thumbnail:e.thumbnail}})],1)],1)},staticRenderFns:[]};var c=n("VU/8")(l,u,!1,function(e){n("Y2Ra")},null,null);t.a=c.exports}}); -------------------------------------------------------------------------------- /public/static/js/4.26456f18569b34da9d90.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([4],{Y2Ra:function(e,t){},f2My:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("Xxa5"),i=n.n(r),a=n("exGp"),o=n.n(a),s=n("o8EA"),l={filters:{parseTime:function(e){return Object(s.a)(new Date(e))},initSize:function(e){var t=e/1024;return(t=t.toFixed(2))>1024?(t=(t/=1024).toFixed(2))>1024?(t=(t/=1024).toFixed(2))>1024?(t=(t/=1024).toFixed(2),t+="TB"):t+="GB":t+="MB":t+="KB",t}},components:{vFile:n("xWEe").a},data:function(){return{tableData:[],centerDialogVisible:!1,now:{refresh_token:null,tip:null},fId:null,pageNum:1,showList:!1}},mounted:function(){this.init(),this.$store.commit("setMatched",[{path:"/home",title:"首页"},{path:"/list",title:"全部账号"}])},methods:{jsUrl:function(e,t){this.$router.push(e)},init:function(){var e=this;return o()(i.a.mark(function t(){var n;return i.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$http.get("/account/list",{params:{t:(new Date).getTime()}});case 2:n=t.sent,e.tableData=n,console.log(n);case 5:case"end":return t.stop()}},t,e)}))()},addAccount:function(){this.now={refresh_token:null,tip:null},this.centerDialogVisible=!0},doChange:function(e){this.now=e,this.centerDialogVisible=!0},doAdd:function(){var e=this;return o()(i.a.mark(function t(){var n;return i.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e.now.refresh_token){t.next=2;break}return t.abrupt("return",e.$message({showClose:!0,message:"请输入refresh_token",type:"warning"}));case 2:if(t.prev=2,n=void 0,e.now.id){t.next=10;break}return t.next=7,e.$http.put("/account/list",e.now);case 7:n=t.sent,t.next=13;break;case 10:return t.next=12,e.$http.post("/account/list",e.now);case 12:n=t.sent;case 13:e.$message({showClose:!0,message:n,type:"success"}),t.next=18;break;case 16:t.prev=16,t.t0=t.catch(2);case 18:e.init(),e.centerDialogVisible=!1,e.now={refresh_token:null,tip:null};case 21:case"end":return t.stop()}},t,e,[[2,16]])}))()},doDel:function(e){var t=this;this.$confirm("此操作将永久删除该账号, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(o()(i.a.mark(function n(){var r;return i.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t.$http.delete("/account/list",{data:{id:e}});case 2:r=n.sent,t.$message({type:"success",message:r}),t.init();case 5:case"end":return n.stop()}},n,t)}))).catch(function(){})},showFile:function(e){var t=this;return o()(i.a.mark(function n(){return i.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(e&&void 0!=e){n.next=2;break}return n.abrupt("return",t.$message({message:"请选择账号",type:"warning"}));case 2:t.fId=e,t.pageNum=1,t.getFileMsg();case 5:case"end":return n.stop()}},n,t)}))()},getFileMsg:function(){var e=this;return o()(i.a.mark(function t(){return i.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:e.showList=!0;case 1:case"end":return t.stop()}},t,e)}))()}}},c={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("el-button",{staticStyle:{"margin-bottom":"20px"},attrs:{type:"primary"},on:{click:function(t){return e.addAccount()}}},[e._v("新增账号")]),e._v(" "),n("el-table",{staticStyle:{width:"100%"},attrs:{data:e.tableData,border:""}},[n("el-table-column",{attrs:{prop:"date",label:"序号",width:"80",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v(e._s(t.$index+1))]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"user_name",label:"账号",width:"120",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("router-link",{attrs:{to:"/folder/"+t.row.user_id}},[n("el-link",{attrs:{underline:!1}},[e._v(e._s(t.row.user_name))])],1)]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"userName",label:"容量",width:"200",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return t.row.type?[e._v("\n "+e._s(e._f("initSize")(t.row.used_size))+"\n /\n "+e._s(e._f("initSize")(t.row.total_size))+"\n ")]:void 0}}],null,!0)}),e._v(" "),n("el-table-column",{attrs:{prop:"tip",label:"备注",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v(e._s(t.row.tip||"暂无备注"))]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"address",label:"添加时间",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v(e._s(e._f("parseTime")(t.row.createTime)))]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"address",label:"操作",width:"250",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("el-button",{attrs:{size:"mini",type:"danger"},on:{click:function(n){return e.doDel(t.row.id)}}},[e._v("删除")]),e._v(" "),n("el-button",{attrs:{size:"mini",type:"warning"},on:{click:function(n){return e.doChange(t.row)}}},[e._v("修改")]),e._v(" "),n("el-button",{attrs:{size:"mini",type:"primary"},on:{click:function(n){return e.jsUrl("/folder/"+t.row.user_id,t.row.user_name)}}},[e._v("查看文件")])]}}])})],1),e._v(" "),n("el-dialog",{attrs:{title:e.now.id?"修改账号":"新增账号",visible:e.centerDialogVisible,width:"40%",center:""},on:{"update:visible":function(t){e.centerDialogVisible=t}}},[n("el-form",{attrs:{"label-position":"left",model:e.now,"label-width":"120px"}},[n("el-form-item",{attrs:{label:"refreshToken",required:""}},[n("el-input",{attrs:{placeholder:"请输入阿里云盘的refreshToken"},model:{value:e.now.refresh_token,callback:function(t){e.$set(e.now,"refresh_token",t)},expression:"now.refresh_token"}})],1),e._v(" "),n("el-form-item",{attrs:{label:"备注信息"}},[n("el-input",{attrs:{placeholder:"账号备注"},model:{value:e.now.tip,callback:function(t){e.$set(e.now,"tip",t)},expression:"now.tip"}})],1)],1),e._v(" "),n("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[n("el-button",{on:{click:function(t){e.centerDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),n("el-button",{attrs:{type:"primary"},on:{click:function(t){return e.doAdd()}}},[e._v("确 定")])],1)],1),e._v(" "),n("el-drawer",{attrs:{size:"70%",title:"我的文件",visible:e.showList,direction:"rtl",wrapperClosable:!1},on:{"update:visible":function(t){e.showList=t}}},[n("v-file",{staticClass:"pk",attrs:{fId:e.fId}})],1)],1)},staticRenderFns:[]};var u=n("VU/8")(l,c,!1,function(e){n("y+yz")},"data-v-6da63746",null);t.default=u.exports},xWEe:function(e,t,n){"use strict";var r=n("Xxa5"),i=n.n(r),a=n("exGp"),o=n.n(a),s=n("o8EA"),l={data:function(){return{title:null,file_id:null,thumbnail:null,centerDialogVisible:!1,tableData:[],height:window.innerHeight-180}},components:{vPlay:n("kzMD").a},filters:{parseTime:function(e){return Object(s.a)(new Date(e))},initSize:function(e){var t=e/1024;return(t=t.toFixed(2))>1024?(t=(t/=1024).toFixed(2))>1024?(t=(t/=1024).toFixed(2))>1024?(t=(t/=1024).toFixed(2),t+="TB"):t+="GB":t+="MB":t+="KB",t}},computed:{user_id:function(){return this.$route.params.user_id},parent_file_id:function(){return this.$route.params.parent_file_id}},watch:{$route:function(e,t){this.init()}},mounted:function(){this.init()},methods:{init:function(){var e=this;return o()(i.a.mark(function t(){var n;return i.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$http.get("/file/list",{params:{user_id:e.user_id,parent_file_id:e.parent_file_id}});case 2:n=t.sent,e.tableData=n,console.log(n);case 5:case"end":return t.stop()}},t,e)}))()},getAllLink:function(e){var t=this;return o()(i.a.mark(function n(){var r,a,o,s;return i.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t.$http.get("/file/list",{params:{user_id:t.user_id,parent_file_id:e}});case 2:for(o in r=n.sent,a="",r)"file"==(s=r[o]).type&&(a+=s.name,a+="$",a+=window.location.protocol+"//"+window.location.host+"/file/"+t.user_id+"/"+s.file_id+"/"+encodeURIComponent(s.name.replace("."+s.file_extension,""))+"."+s.file_extension,a+="\n");return n.prev=5,n.next=8,t.$copyText(a);case 8:t.$message({message:"链接已成功复制到剪贴板",type:"success"}),n.next=14;break;case 11:n.prev=11,n.t0=n.catch(5),t.$message.error("复制失败");case 14:case"end":return n.stop()}},n,t,[[5,11]])}))()},getOneLink:function(e,t,n){var r=this;return o()(i.a.mark(function a(){var o;return i.a.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return o=window.location.protocol+"//"+window.location.host+"/file/"+r.user_id+"/"+e+"/"+encodeURIComponent(t.replace("."+n,""))+"."+n,i.prev=1,i.next=4,r.$copyText(o);case 4:r.$message({message:"链接已成功复制到剪贴板",type:"success"}),i.next=10;break;case 7:i.prev=7,i.t0=i.catch(1),r.$message.error("复制失败");case 10:case"end":return i.stop()}},a,r,[[1,7]])}))()},doPriview:function(e){var t=this;return o()(i.a.mark(function n(){var r;return i.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:"video"==e.category?(t.title=e.name,t.file_id=e.file_id,t.thumbnail=e.thumbnail,t.centerDialogVisible=!0):"image"==e.category?window.open(e.url):(r=window.location.protocol+"//"+window.location.host+"/file/"+t.user_id+"/"+e.file_id+"/"+encodeURIComponent(e.name.replace("."+e.file_extension,""))+"."+e.file_extension,window.open(r));case 1:case"end":return n.stop()}},n,t)}))()},doShare:function(e){var t=this;return o()(i.a.mark(function n(){var r;return i.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return e.user_id=t.user_id,n.next=3,t.$http.put("/share/list",e);case 3:r=n.sent,t.$message({message:r,type:"success"});case 5:case"end":return n.stop()}},n,t)}))()}}},c={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("el-table",{staticStyle:{width:"100%"},attrs:{data:e.tableData,border:"",stripe:""}},[n("el-table-column",{attrs:{prop:"name",label:"文件名"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("router-link",{attrs:{to:"/folder/"+e.user_id+"/"+t.row.file_id}},["folder"==t.row.type?n("el-link",{attrs:{type:"primary"}},[e._v(e._s(t.row.name))]):e._e()],1),e._v(" "),"file"==t.row.type?n("el-link",{attrs:{href:"/file/"+e.user_id+"/"+t.row.file_id+"/"+t.row.name,target:"_blank",type:"success"}},[e._v(e._s(t.row.name))]):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"size",label:"类型",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return["folder"==t.row.type?n("span",[e._v("文件夹")]):n("span",[e._v("文件")])]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"size",label:"大小",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return["folder"==t.row.type?n("span",[e._v("————")]):n("span",[e._v(e._s(e._f("initSize")(t.row.size)))])]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"updated_at",label:"更新时间",width:"180"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v("\n "+e._s(e._f("parseTime")(t.row.updated_at))+"\n ")]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"updated_at",label:"操作",width:"320"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("div",[n("div",{staticStyle:{"margin-bottom":"16px"}},["file"==t.row.type?n("el-button",{attrs:{size:"mini",round:"",type:"primary"},on:{click:function(n){return e.getOneLink(t.row.file_id,t.row.name,t.row.file_extension)}}},[e._v("获取文件直链")]):e._e(),e._v(" "),"file"!=t.row.type?n("el-button",{attrs:{size:"mini",round:"",type:"success"},on:{click:function(n){return e.doShare(t.row)}}},[e._v("分享文件夹")]):e._e(),e._v(" "),"file"==t.row.type?n("el-button",{attrs:{size:"mini",round:"",type:"danger"},on:{click:function(n){return e.doPriview(t.row)}}},[e._v("预览")]):e._e()],1),e._v(" "),"file"!=t.row.type?n("div",[n("el-button",{attrs:{size:"mini",round:"",type:"warning"},on:{click:function(n){return e.getAllLink(t.row.file_id)}}},[e._v("获取全部文件直链")])],1):e._e()])]}}])})],1),e._v(" "),n("el-dialog",{attrs:{title:e.title,"destroy-on-close":!0,visible:e.centerDialogVisible,width:"60%",center:""},on:{"update:visible":function(t){e.centerDialogVisible=t}}},[n("v-play",{key:e.file_id,attrs:{file_id:e.file_id,user_id:e.user_id,thumbnail:e.thumbnail}})],1)],1)},staticRenderFns:[]};var u=n("VU/8")(l,c,!1,function(e){n("Y2Ra")},null,null);t.a=u.exports},"y+yz":function(e,t){}}); -------------------------------------------------------------------------------- /public/static/js/5.edbd1f9b9cffed202de7.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([5],{Eg0l:function(t,e,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=s("Xxa5"),i=s.n(a),n=s("exGp"),r=s.n(n),o={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",{staticClass:"map"},["folder"==t.kind?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbweibiaoti5"}})]):t._e(),t._v(" "),"others"==t.category?s("span",["exe"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbexe"}})]):t._e(),t._v(" "),"apk"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbanzhuo"}})]):t._e(),t._v(" "),-1==["apk","exe"].indexOf(t.ext)?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbf-unknow"}})]):t._e()]):t._e(),t._v(" "),"doc"==t.category?s("span",["txt"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbtxt"}})]):t._e(),t._v(" "),"doc"==t.ext||"docx"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbword"}})]):t._e(),t._v(" "),"xls"==t.ext||"xlsx"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbexcel"}})]):t._e(),t._v(" "),"js"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbjs"}})]):t._e(),t._v(" "),"css"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbCSS"}})]):t._e(),t._v(" "),"key"==t.ext?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbkeynote"}})]):t._e(),t._v(" "),-1==["txt","doc","docx","xls","xlsx","js","css","key"].indexOf(t.ext)?s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbf-unknow"}})]):t._e()]):t._e(),t._v(" "),"image"==t.category?s("span",[s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbimage"}})])]):t._e(),t._v(" "),"zip"==t.category?s("span",[s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbyasuobao"}})])]):t._e(),t._v(" "),"video"==t.category?s("span",[s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbvideo"}})])]):t._e(),t._v(" "),"audio"==t.category?s("span",[s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbaudio"}})])]):t._e()])},staticRenderFns:[]};var d=s("VU/8")({props:["kind","category","ext"]},o,!1,function(t){s("pIWK")},"data-v-1b2e94d1",null).exports,l=s("kzMD"),c=s("o8EA"),u={data:function(){return{faId:null,url:null,show:!1,password:null,refreshing:!1,loading:!1,finished:!1,file_id:null,user_id:null,parent_file_id:null,now:{},box:{name:"",item:[]},errMsg:null}},components:{vPlay:l.a,vIcon:d},filters:{parseTime:function(t){return Object(c.a)(new Date(t))},initSize:function(t){if(!t)return null;var e=t/1024;return(e=e.toFixed(2))>=1024?(e=(e/=1024).toFixed(2))>=1024?(e=(e/=1024).toFixed(2))>=1024?(e=(e/=1024).toFixed(2),e+="TB"):e+="GB":e+="MB":e+="KB",e}},computed:{id:function(){return this.$route.params.id},isMb:function(){return!!navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symbian|Windows Phone|Phone)/i)}},mounted:function(){this.onRefresh()},methods:{onLoad:function(){var t=this;return r()(i.a.mark(function e(){return i.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.init();case 2:case"end":return e.stop()}},e,t)}))()},openFile:function(t){var e=this;return r()(i.a.mark(function s(){return i.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:console.log(t),"file"!=t.type?(e.file_id=t.file_id,e.onRefresh()):(e.now=t,e.url="/file/"+e.user_id+"/"+t.file_id+"/"+t.name,"video"==t.category||"image"==t.category?e.show=!0:window.open(e.url));case 2:case"end":return s.stop()}},s,e)}))()},doDownload:function(){var t=this;return r()(i.a.mark(function e(){var s;return i.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$http.get("/share/downLoad",{params:{id:t.id,password:t.password,file_id:t.now.file_id,file_name:t.now.file_name},headers:{loadingNo:!0}});case 2:s=e.sent,window.open(s.url);case 4:case"end":return e.stop()}},e,t)}))()},doBack:function(){this.file_id=this.parent_file_id,this.parent_file_id=null,this.box={name:"",item:[]},this.onRefresh()},onRefresh:function(){this.finished=!1,this.loading=!0,this.onLoad()},init:function(){var t=this;return r()(i.a.mark(function e(){var s,a;return i.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.refreshing&&(t.box={name:"",item:[]},t.refreshing=!1,t.finished=!1),s=void 0,t.isMb||(s=t.$loading("加载中...")),e.prev=3,e.next=6,t.$http.get("/share/public",{params:{id:t.id,password:t.password,file_id:t.file_id},headers:{loadingNo:!0}});case 6:a=e.sent,t.isMb||s.close(),t.box=a,t.user_id=a.user_id,t.file_id=a.file_id,t.parent_file_id=a.parent_file_id,a.faId&&(t.faId=a.faId),console.log(a),document.title=t.box.name,t.errMsg=null,e.next=26;break;case 18:e.prev=18,e.t0=e.catch(3),console.log(e.t0),t.isMb||s.close(),t.box.name=e.t0.name,t.errMsg=e.t0.errMsg,document.title=e.t0.name,t.isMb?"请输入密码"!=t.errMsg&&t.$toast(t.errMsg):"请输入密码"!=t.errMsg&&t.$message.error(t.errMsg);case 26:return t.loading=!1,t.finished=!0,e.abrupt("return",!0);case 29:case"end":return e.stop()}},e,t,[[3,18]])}))()}}},f={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.id?s("section",{staticClass:"op"},[t.parent_file_id&&t.faId==t.parent_file_id&&!t.errMsg?s("div",{staticClass:"back",on:{click:function(e){return t.doBack()}}},[s("svg",{staticClass:"tbfont",attrs:{"aria-hidden":"true"}},[s("use",{attrs:{"xlink:href":"#tbyk_fanhui"}})]),t._v(" "),s("span",{staticClass:"txt"},[t._v("返回上级")])]):t._e(),t._v(" "),t.errMsg?s("div",{staticClass:"errMsg"},[s("h2",[t._v(t._s(t.box.name))]),t._v(" "),s("p",{staticClass:"it"},[t._v(t._s(t.errMsg))]),t._v(" "),s("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{type:"password"},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}}),t._v(" "),s("button",{on:{click:function(e){return t.onRefresh()}}},[t._v("立即进入")])]):t._e(),t._v(" "),t.errMsg?t._e():s("van-pull-refresh",{on:{refresh:t.onRefresh},model:{value:t.refreshing,callback:function(e){t.refreshing=e},expression:"refreshing"}},[s("van-list",{attrs:{"immediate-check":!1,finished:t.finished,"finished-text":"没有更多了"},on:{load:t.onLoad},model:{value:t.loading,callback:function(e){t.loading=e},expression:"loading"}},t._l(t.box.item,function(e){return s("div",{key:e.file_id,staticClass:"btn",on:{click:function(s){return t.openFile(e)}}},[s("v-icon",{staticClass:"icon",attrs:{kind:e.type,category:e.category,ext:e.file_extension}}),t._v(" "),s("div",{staticClass:"info"},[s("p",{staticClass:"title"},[t._v(t._s(e.name))]),t._v(" "),s("p",{staticClass:"desc"},[s("span",{staticClass:"time"},[t._v(t._s(t._f("parseTime")(e.created_at)))]),t._v(" "),"file"==e.type?s("span",{staticClass:"size"},[t._v(t._s(t._f("initSize")(e.size)))]):t._e()])])],1)}),0)],1),t._v(" "),s("van-overlay",{attrs:{show:t.show}},[s("section",{staticClass:"md"},[t.show&&"video"==t.now.category?s("v-play",{key:t.now.file_id,attrs:{file_id:t.now.file_id,user_id:t.user_id,thumbnail:t.now.thumbnail}}):t._e(),t._v(" "),t.show&&"image"==t.now.category?s("img",{staticClass:"xi",attrs:{src:t.url,alt:""}}):t._e(),t._v(" "),s("div",{staticClass:"rf"},[s("span",{staticClass:"el-icon-download",on:{click:function(e){return t.doDownload()}}}),t._v(" "),s("span",{staticClass:"el-icon-close",on:{click:function(e){t.show=!1}}})])],1)])],1):t._e()},staticRenderFns:[]};var _=s("VU/8")(u,f,!1,function(t){s("wVRg")},"data-v-5a5d8af4",null);e.default=_.exports},pIWK:function(t,e){},wVRg:function(t,e){}}); -------------------------------------------------------------------------------- /public/static/js/6.b6ca078e08e8e83861d1.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([6],{PU1I:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("Xxa5"),a=n.n(r),s=n("exGp"),c=n.n(s),i=n("o8EA"),o={filters:{parseTime:function(t){return Object(i.a)(new Date(t))},initSize:function(t){var e=t/1024;return(e=e.toFixed(2))>1024?(e=(e/=1024).toFixed(2))>1024?(e=(e/=1024).toFixed(2),e+="GB"):e+="MB":e+="KB",e}},data:function(){return{list:[],fix:location.protocol+"//"+location.host+"/s/"}},mounted:function(){var t=this;return c()(a.a.mark(function e(){return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t.init(),t.$store.commit("setMatched",[{path:"/home",title:"首页"},{path:"/share",title:"我的分享"}]);case 2:case"end":return e.stop()}},e,t)}))()},methods:{doCp:function(t){var e=this;return c()(a.a.mark(function n(){return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(t);case 3:e.$message({message:"链接已成功复制到剪贴板",type:"success"}),n.next=9;break;case 6:n.prev=6,n.t0=n.catch(0),e.$message.error("复制失败");case 9:case"end":return n.stop()}},n,e,[[0,6]])}))()},init:function(){var t=this;return c()(a.a.mark(function e(){var n;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$http.get("/share/list",{params:{t:(new Date).getTime()}});case 2:n=e.sent,console.log(n),t.list=n;case 5:case"end":return e.stop()}},e,t)}))()},chancelShare:function(t){var e=this;return c()(a.a.mark(function n(){return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:e.$confirm("此操作将永久删除该分享链接, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(c()(a.a.mark(function n(){var r;return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.$http.delete("/share/list",{data:{id:t}});case 2:r=n.sent,e.init(),e.$message({type:"success",message:r});case 5:case"end":return n.stop()}},n,e)}))).catch(function(){});case 1:case"end":return n.stop()}},n,e)}))()},stopShare:function(t){var e=this;return c()(a.a.mark(function n(){return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:e.$confirm("此操作将暂停该分享链接, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(c()(a.a.mark(function n(){var r;return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.$http.post("/share/list",{id:t,type:!1});case 2:r=n.sent,e.init(),e.$message({type:"success",message:r});case 5:case"end":return n.stop()}},n,e)}))).catch(function(){});case 1:case"end":return n.stop()}},n,e)}))()},openShare:function(t){var e=this;return c()(a.a.mark(function n(){var r;return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.$http.post("/share/list",{id:t,type:!0});case 2:r=n.sent,e.init(),e.$message({type:"success",message:r});case 5:case"end":return n.stop()}},n,e)}))()},rvPw:function(t){var e=this;return c()(a.a.mark(function n(){var r;return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.$http.post("/share/list",{id:t,password:null});case 2:r=n.sent,e.init(),e.$message({type:"success",message:r});case 5:case"end":return n.stop()}},n,e)}))()},addPw:function(t){var e=this;return c()(a.a.mark(function n(){return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:e.$prompt("请输入密码","提示",{confirmButtonText:"确定",cancelButtonText:"取消"}).then(function(){var n=c()(a.a.mark(function n(r){var s,c=r.value;return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.$http.post("/share/list",{id:t,password:c});case 2:s=n.sent,e.init(),e.$message({type:"success",message:s});case 5:case"end":return n.stop()}},n,e)}));return function(t){return n.apply(this,arguments)}}()).catch(function(){});case 1:case"end":return n.stop()}},n,e)}))()}}},u={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("el-table",{staticStyle:{width:"100%"},attrs:{height:"400",data:t.list,border:""}},[n("el-table-column",{attrs:{prop:"name",label:"文件夹名"}}),t._v(" "),n("el-table-column",{attrs:{prop:"fileSize",label:"分享地址"},scopedSlots:t._u([{key:"default",fn:function(e){return[n("el-link",{attrs:{type:"primary"},on:{click:function(n){return t.doCp(t.fix+e.row.id)}}},[t._v(t._s(t.fix+e.row.id))])]}}])}),t._v(" "),n("el-table-column",{attrs:{prop:"password",label:"密码"}}),t._v(" "),n("el-table-column",{attrs:{prop:"fileSize",label:"状态",width:"80"},scopedSlots:t._u([{key:"default",fn:function(e){return[e.row.type?n("el-tag",{attrs:{type:"success"}},[t._v("分享中")]):n("el-tag",{attrs:{type:"danger"}},[t._v("已暂停")])]}}])}),t._v(" "),n("el-table-column",{attrs:{prop:"time",label:"创建时间",width:"165"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(t._f("parseTime")(e.row.time)))]}}])}),t._v(" "),n("el-table-column",{attrs:{prop:"time",label:"操作",width:"220"},scopedSlots:t._u([{key:"default",fn:function(e){return[n("div",{staticStyle:{"margin-bottom":"20px"}},[n("el-button",{attrs:{type:"danger",size:"mini"},on:{click:function(n){return t.chancelShare(e.row.id)}}},[t._v("取消")]),t._v(" "),n("el-button",{attrs:{disabled:!e.row.type,type:"warning",size:"mini"},on:{click:function(n){return t.stopShare(e.row.id)}}},[t._v("暂停")])],1),t._v(" "),n("div",[e.row.password?n("el-button",{attrs:{type:"success",size:"mini"},on:{click:function(n){return t.rvPw(e.row.id)}}},[t._v("取消密码")]):n("el-button",{attrs:{type:"success",size:"mini"},on:{click:function(n){return t.addPw(e.row.id)}}},[t._v("添加密码")]),t._v(" "),n("el-button",{attrs:{disabled:e.row.type,type:"primary",size:"mini"},on:{click:function(n){return t.openShare(e.row.id)}}},[t._v("开启")])],1)]}}])})],1)],1)},staticRenderFns:[]},p=n("VU/8")(o,u,!1,null,null,null);e.default=p.exports}}); -------------------------------------------------------------------------------- /public/static/js/7.b694d49d89edb92cb71b.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([7],{FHOv:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={render:function(){this.$createElement;this._self._c;return this._m(0)},staticRenderFns:[function(){var e=this.$createElement,t=this._self._c||e;return t("div",[t("h2",[this._v("还么做完,过两天再发")]),this._v(" "),t("h4",[this._v("更新QQ群:299791604")])])}]},i=n("VU/8")(null,s,!1,null,null,null);t.default=i.exports}}); -------------------------------------------------------------------------------- /public/static/js/app.424190c74b493d1a9c29.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([9],{0:function(e,a){},1:function(e,a){},10:function(e,a){},11:function(e,a){},12:function(e,a){},13:function(e,a){},14:function(e,a){},2:function(e,a){},3:function(e,a){},4:function(e,a){},"4Vh3":function(e,a){e.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},"4ml/":function(e,a){},5:function(e,a){},6:function(e,a){},"6ZSt":function(e,a){e.exports={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},aes192:{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},aes256:{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}}},7:function(e,a){},8:function(e,a){},"8YCc":function(e,a){e.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},9:function(e,a){},KYqO:function(e,a){e.exports={_args:[["elliptic@6.5.3","D:\\项目\\天翼单用户版本\\manage"]],_development:!0,_from:"elliptic@6.5.3",_id:"elliptic@6.5.3",_inBundle:!1,_integrity:"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",_location:"/elliptic",_phantomChildren:{},_requested:{type:"version",registry:!0,raw:"elliptic@6.5.3",name:"elliptic",escapedName:"elliptic",rawSpec:"6.5.3",saveSpec:null,fetchSpec:"6.5.3"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",_spec:"6.5.3",_where:"D:\\项目\\天翼单用户版本\\manage",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^3.0.8",grunt:"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.2",jscs:"^3.0.7",jshint:"^2.10.3",mocha:"^6.2.2"},files:["lib"],homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",name:"elliptic",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.5.3"}},"Mv4+":function(e,a){},NHnr:function(e,a,f){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var c=f("7+uW"),d={render:function(){var e=this.$createElement,a=this._self._c||e;return a("div",{attrs:{id:"app"}},[a("router-view")],1)},staticRenderFns:[]};var s=f("VU/8")({name:"App"},d,!1,function(e){f("OdzL")},null,null).exports,t=f("/ocq"),n=f("NYxO"),b=f("424j");c.default.use(n.a);var i=new n.a.Store({plugins:[Object(b.a)({storage:window.localStorage})],state:{token:null,role:3,matched:[{path:"/home",title:"首页"}]},mutations:{setToken:function(e,a){e.token=a},setRole:function(e,a){e.role=a},setMatched:function(e,a){e.matched=a}},getters:{}}),r=f("uhZt"),o=f.n(r),l={render:function(){var e=this.$createElement;return(this._self._c||e)("router-view")},staticRenderFns:[]};f("VU/8")(null,l,!1,null,null,null).exports;c.default.use(t.a);var u=t.a.prototype.push;t.a.prototype.push=function(e){return u.call(this,e).catch(function(e){return e})};var h=new t.a({mode:"history",routes:[{path:"/",meta:"登录",component:function(){return Promise.all([f.e(0),f.e(1)]).then(f.bind(null,"lmfZ"))}},{path:"/login",meta:"登录",component:function(){return Promise.all([f.e(0),f.e(1)]).then(f.bind(null,"lmfZ"))}},{path:"/home",meta:"首页",component:function(){return Promise.all([f.e(0),f.e(2)]).then(f.bind(null,"Wq00"))},children:[{path:"/list",meta:"全部账号",role:[1,3],component:function(){return Promise.all([f.e(0),f.e(4)]).then(f.bind(null,"f2My"))}},{path:"/folder/:user_id",meta:"我的账号",role:[1,3],redirect:"/folder/:user_id/root"},{path:"/folder/:user_id/:parent_file_id",meta:"我的账号",role:[1,3],component:function(){return Promise.all([f.e(0),f.e(3)]).then(f.bind(null,"eK4w"))}},{path:"/share",meta:"我的分享",role:[1,3],component:function(){return Promise.all([f.e(0),f.e(6)]).then(f.bind(null,"PU1I"))}},{path:"/ad",meta:"文件广场",role:[1,3],component:function(){return f.e(7).then(f.bind(null,"FHOv"))}}]},{path:"/s/:id",meta:"文件分享",component:function(){return Promise.all([f.e(0),f.e(5)]).then(f.bind(null,"Eg0l"))}},{path:"*",meta:"登录",component:function(){return Promise.all([f.e(0),f.e(1)]).then(f.bind(null,"lmfZ"))}}]});h.beforeEach(function(e,a,f){e.name&&(document.title=e.name+" - 天翼云盘管理平台");var c=!1;o.a.forEach(function(a){-1!=e.path.indexOf(a.path)&&(c=!0)}),c?f():i.state.token?f():f({path:"/login",query:{redirect:e.fullPath}})});var p=h,m=f("//Fk"),j=f.n(m),g=f("mtWM"),y=f.n(g),v=f("zL8q"),S=f.n(v),k=f("Zrlr"),A=f.n(k),E=f("wxAW"),w=f.n(E),C=f("Av7u"),z=function(){function e(a,f){A()(this,e),this.key=C.enc.Utf8.parse(a),this.iv=C.enc.Utf8.parse(f);var c=["富强","民主","文明","和谐","自由","平等"],d=c,s=[];for(var t in c){var n=c[t];for(var b in d){var i=d[b];s.push(n+i)}}for(var r=[],o={},l={},u=0;u<26;u++)r.push(String.fromCharCode(97+u));for(var h=0;h<=9;h++)r.push(h);for(var p in r)o[r[p]]=s[p],l[s[p]]=r[p];this.tmp3=o,this.tmp4=l}return w()(e,[{key:"autoEn",value:function(e){e=e.split("");var a="";for(var f in e){var c=e[f];a+=this.tmp3[c]}return a}},{key:"autoDn",value:function(e){e=e.split("");var a="",f="";for(var c in e)f+=e[c],c%4==3&&(a+=this.tmp4[f],f="");return a}},{key:"decrypt",value:function(e){e=this.autoDn(e);var a=C.enc.Hex.parse(e),f=C.enc.Base64.stringify(a),c=C.AES.decrypt(f,this.key,{iv:this.iv,mode:C.mode.CBC,padding:C.pad.Pkcs7}),d=C.enc.Utf8.stringify(c);try{d=JSON.parse(d)}catch(e){}return d}}]),e}();f("hKoQ").polyfill();var x=y.a.create({baseURL:"/api",timeout:1e6,withCredentials:!0}),H=null;x.interceptors.request.use(function(e){return e.headers.loadingNo||(H=S.a.Loading.service({lock:!0,text:e.headers.loadingText||"加载中...",spinner:"el-icon-loading",background:"rgba(0, 0, 0, 0.7)"})),i.state.token&&(e.headers.authorization=i.state.token),e},function(e){return alert("错误的传参","fail"),j.a.reject(e)}),x.interceptors.response.use(function(e){if(H&&H.close(),200!=e.status)return alert(e.error_msg),j.a.reject(e);var a=new z(e.headers["x-fq"],e.headers["x-mz"]);return e.data=a.decrypt(e.data),2e4!=e.data.status?(401==e.data.errMsg?v.MessageBox.confirm("当前登录已失效,是否重新登录?").then(function(e){location.href="/"},function(e){}):navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symbian|Windows Phone|Phone)/i)||e.data.errMsg.errMsg||Object(v.Message)({message:e.data.errMsg,type:"error",duration:5e3}),j.a.reject(e.data.errMsg)):e.data.result},function(e){if(401===e.response.status)location.href="/login";else if(500===e.response.status)return j.a.reject(e.response.data);return j.a.reject(e.response.data)});var P={install:function(e){Object.defineProperty(e.prototype,"$http",{value:x})}},R=f("PJh5"),O=f.n(R),B={install:function(e){Object.defineProperty(e.prototype,"$moment",{value:O.a})}},F=(f("tvR6"),f("w8ZR"),f("Pgpu")),M=f.n(F);c.default.directive("dialogDrag",{bind:function(e,a,f,c){var d=e.querySelector(".el-dialog__header"),s=e.querySelector(".el-dialog");d.style.cursor="move";var t=s.currentStyle||window.getComputedStyle(s,null);d.onmousedown=function(e){var a=e.clientX-d.offsetLeft,f=e.clientY-d.offsetTop,c=void 0,n=void 0;t.left.includes("%")?(c=+document.body.clientWidth*(+t.left.replace(/\%/g,"")/100),n=+document.body.clientHeight*(+t.top.replace(/\%/g,"")/100)):(c=+t.left.replace(/\px/g,""),n=+t.top.replace(/\px/g,"")),document.onmousemove=function(e){var d=e.clientX-a,t=e.clientY-f;s.style.left=d+c+"px",s.style.top=t+n+"px"},document.onmouseup=function(e){document.onmousemove=null,document.onmouseup=null}}}}),c.default.directive("dialogDragWidth",{bind:function(e,a,f,c){var d=a.value.$el.querySelector(".el-dialog");e.onmousedown=function(a){var f=a.clientX-e.offsetLeft;document.onmousemove=function(e){e.preventDefault();var a=e.clientX-f;d.style.width=a+"px"},document.onmouseup=function(e){document.onmousemove=null,document.onmouseup=null}}}});var D=f("/IwO"),q=f.n(D),W=(f("oPmM"),f("wvfG")),T=f.n(W),I=f("QMXR"),N=f.n(I),_=(f("Mv4+"),f("Fd2+"));f("4ml/");c.default.use(T.a),c.default.use(N.a),c.default.use(_.a),c.default.use(q.a),c.default.component("vue-ueditor-wrap",M.a),c.default.use(P),c.default.use(B),c.default.use(S.a),q.a.initAMapApiLoader({key:"8972a7793ca722a8a70732f1dd706f9e",plugin:["AMap.PlaceSearch","AMap.Geolocation"]}),c.default.config.productionTip=!1,new c.default({el:"#app",router:p,store:i,components:{App:s},template:""})},OdzL:function(e,a){},QDfD:function(e,a){e.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},ejIc:function(e,a){e.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},oPmM:function(e,a){},tvR6:function(e,a){},uhZt:function(e,a){e.exports=[{path:"/login",name:"登录界面"},{path:"/s/",name:"文件分享"}]},uslO:function(e,a,f){var c={"./af":"3CJN","./af.js":"3CJN","./ar":"3MVc","./ar-dz":"tkWw","./ar-dz.js":"tkWw","./ar-kw":"j8cJ","./ar-kw.js":"j8cJ","./ar-ly":"wPpW","./ar-ly.js":"wPpW","./ar-ma":"dURR","./ar-ma.js":"dURR","./ar-sa":"7OnE","./ar-sa.js":"7OnE","./ar-tn":"BEem","./ar-tn.js":"BEem","./ar.js":"3MVc","./az":"eHwN","./az.js":"eHwN","./be":"3hfc","./be.js":"3hfc","./bg":"lOED","./bg.js":"lOED","./bm":"hng5","./bm.js":"hng5","./bn":"aM0x","./bn.js":"aM0x","./bo":"w2Hs","./bo.js":"w2Hs","./br":"OSsP","./br.js":"OSsP","./bs":"aqvp","./bs.js":"aqvp","./ca":"wIgY","./ca.js":"wIgY","./cs":"ssxj","./cs.js":"ssxj","./cv":"N3vo","./cv.js":"N3vo","./cy":"ZFGz","./cy.js":"ZFGz","./da":"YBA/","./da.js":"YBA/","./de":"DOkx","./de-at":"8v14","./de-at.js":"8v14","./de-ch":"Frex","./de-ch.js":"Frex","./de.js":"DOkx","./dv":"rIuo","./dv.js":"rIuo","./el":"CFqe","./el.js":"CFqe","./en-au":"Sjoy","./en-au.js":"Sjoy","./en-ca":"Tqun","./en-ca.js":"Tqun","./en-gb":"hPuz","./en-gb.js":"hPuz","./en-ie":"ALEw","./en-ie.js":"ALEw","./en-il":"QZk1","./en-il.js":"QZk1","./en-in":"yJfC","./en-in.js":"yJfC","./en-nz":"dyB6","./en-nz.js":"dyB6","./en-sg":"NYST","./en-sg.js":"NYST","./eo":"Nd3h","./eo.js":"Nd3h","./es":"LT9G","./es-do":"7MHZ","./es-do.js":"7MHZ","./es-us":"INcR","./es-us.js":"INcR","./es.js":"LT9G","./et":"XlWM","./et.js":"XlWM","./eu":"sqLM","./eu.js":"sqLM","./fa":"2pmY","./fa.js":"2pmY","./fi":"nS2h","./fi.js":"nS2h","./fil":"rMbQ","./fil.js":"rMbQ","./fo":"OVPi","./fo.js":"OVPi","./fr":"tzHd","./fr-ca":"bXQP","./fr-ca.js":"bXQP","./fr-ch":"VK9h","./fr-ch.js":"VK9h","./fr.js":"tzHd","./fy":"g7KF","./fy.js":"g7KF","./ga":"U5Iz","./ga.js":"U5Iz","./gd":"nLOz","./gd.js":"nLOz","./gl":"FuaP","./gl.js":"FuaP","./gom-deva":"VGQH","./gom-deva.js":"VGQH","./gom-latn":"+27R","./gom-latn.js":"+27R","./gu":"rtsW","./gu.js":"rtsW","./he":"Nzt2","./he.js":"Nzt2","./hi":"ETHv","./hi.js":"ETHv","./hr":"V4qH","./hr.js":"V4qH","./hu":"xne+","./hu.js":"xne+","./hy-am":"GrS7","./hy-am.js":"GrS7","./id":"yRTJ","./id.js":"yRTJ","./is":"upln","./is.js":"upln","./it":"FKXc","./it-ch":"/E8D","./it-ch.js":"/E8D","./it.js":"FKXc","./ja":"ORgI","./ja.js":"ORgI","./jv":"JwiF","./jv.js":"JwiF","./ka":"RnJI","./ka.js":"RnJI","./kk":"j+vx","./kk.js":"j+vx","./km":"5j66","./km.js":"5j66","./kn":"gEQe","./kn.js":"gEQe","./ko":"eBB/","./ko.js":"eBB/","./ku":"kI9l","./ku.js":"kI9l","./ky":"6cf8","./ky.js":"6cf8","./lb":"z3hR","./lb.js":"z3hR","./lo":"nE8X","./lo.js":"nE8X","./lt":"/6P1","./lt.js":"/6P1","./lv":"jxEH","./lv.js":"jxEH","./me":"svD2","./me.js":"svD2","./mi":"gEU3","./mi.js":"gEU3","./mk":"Ab7C","./mk.js":"Ab7C","./ml":"oo1B","./ml.js":"oo1B","./mn":"CqHt","./mn.js":"CqHt","./mr":"5vPg","./mr.js":"5vPg","./ms":"ooba","./ms-my":"G++c","./ms-my.js":"G++c","./ms.js":"ooba","./mt":"oCzW","./mt.js":"oCzW","./my":"F+2e","./my.js":"F+2e","./nb":"FlzV","./nb.js":"FlzV","./ne":"/mhn","./ne.js":"/mhn","./nl":"3K28","./nl-be":"Bp2f","./nl-be.js":"Bp2f","./nl.js":"3K28","./nn":"C7av","./nn.js":"C7av","./oc-lnc":"KOFO","./oc-lnc.js":"KOFO","./pa-in":"pfs9","./pa-in.js":"pfs9","./pl":"7LV+","./pl.js":"7LV+","./pt":"ZoSI","./pt-br":"AoDM","./pt-br.js":"AoDM","./pt.js":"ZoSI","./ro":"wT5f","./ro.js":"wT5f","./ru":"ulq9","./ru.js":"ulq9","./sd":"fW1y","./sd.js":"fW1y","./se":"5Omq","./se.js":"5Omq","./si":"Lgqo","./si.js":"Lgqo","./sk":"OUMt","./sk.js":"OUMt","./sl":"2s1U","./sl.js":"2s1U","./sq":"V0td","./sq.js":"V0td","./sr":"f4W3","./sr-cyrl":"c1x4","./sr-cyrl.js":"c1x4","./sr.js":"f4W3","./ss":"7Q8x","./ss.js":"7Q8x","./sv":"Fpqq","./sv.js":"Fpqq","./sw":"DSXN","./sw.js":"DSXN","./ta":"+7/x","./ta.js":"+7/x","./te":"Nlnz","./te.js":"Nlnz","./tet":"gUgh","./tet.js":"gUgh","./tg":"5SNd","./tg.js":"5SNd","./th":"XzD+","./th.js":"XzD+","./tk":"+WRH","./tk.js":"+WRH","./tl-ph":"3LKG","./tl-ph.js":"3LKG","./tlh":"m7yE","./tlh.js":"m7yE","./tr":"k+5o","./tr.js":"k+5o","./tzl":"iNtv","./tzl.js":"iNtv","./tzm":"FRPF","./tzm-latn":"krPU","./tzm-latn.js":"krPU","./tzm.js":"FRPF","./ug-cn":"To0v","./ug-cn.js":"To0v","./uk":"ntHu","./uk.js":"ntHu","./ur":"uSe8","./ur.js":"uSe8","./uz":"XU1s","./uz-latn":"/bsm","./uz-latn.js":"/bsm","./uz.js":"XU1s","./vi":"0X8Q","./vi.js":"0X8Q","./x-pseudo":"e/KL","./x-pseudo.js":"e/KL","./yo":"YXlc","./yo.js":"YXlc","./zh-cn":"Vz2w","./zh-cn.js":"Vz2w","./zh-hk":"ZUyn","./zh-hk.js":"ZUyn","./zh-mo":"+WA1","./zh-mo.js":"+WA1","./zh-tw":"BbgG","./zh-tw.js":"BbgG"};function d(e){return f(s(e))}function s(e){var a=c[e];if(!(a+1))throw new Error("Cannot find module '"+e+"'.");return a}d.keys=function(){return Object.keys(c)},d.resolve=s,e.exports=d,d.id="uslO"},w8ZR:function(e,a){}},["NHnr"]); -------------------------------------------------------------------------------- /public/static/js/manifest.d325e88cd3bcd8b1f4c8.js: -------------------------------------------------------------------------------- 1 | !function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,a){for(var i,u,d,f=0,s=[];f 12 | ``` 13 | 14 | ## 全新安装的话,参考下面的过程 15 | 16 | ### 获取阿里云盘的refresh_token,这里需要用移动端的token 17 | 18 | ### 更改yum源 19 | 20 | ``` 21 | curl --silent --location https://rpm.nodesource.com/setup_14.x | sudo bash - 22 | ``` 23 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650183650101/2c896a82af7a05429ea6755185ae6948) 24 | 25 | 26 | ### 安装nodejs环境 27 | 28 | ``` 29 | yum install nodejs -y 30 | ``` 31 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650183700744/5b255685fe1c663e897350fa4e0e4ce4) 32 | 33 | 34 | ### 安装pm2管理器 35 | 36 | ``` 37 | npm i pm2 -g 38 | ``` 39 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650183755061/d7cb6e64633cfd755f4f319780ecf19d) 40 | 41 | 42 | ### 安装git 43 | 44 | ``` 45 | yum install git -y 46 | ``` 47 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650183793737/634a083a82af129109aeccb59966c37d) 48 | 49 | 50 | ### 下载源码 51 | 52 | ``` 53 | git clone https://github.com/badyun/AShare.git 54 | ``` 55 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650183942316/84e6f6ca4c16a76c72af22e43933db6a) 56 | 57 | 58 | ### 进入源码目录 59 | 60 | ``` 61 | cd AShare 62 | ``` 63 | 64 | ### 安装依赖 65 | 66 | ``` 67 | npm i 68 | ``` 69 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650183965497/521f9f0398a9c799caa5619d77da774d) 70 | 71 | 72 | ### 启动服务 73 | 74 | ``` 75 | pm2 start app.js --name AShare -i max 76 | ``` 77 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650184004802/b51275e76cd04174a5340ca15c56625b) 78 | 79 | 80 | ### 添加进程守护和开机启动 81 | 82 | ``` 83 | pm2 save 84 | pm2 startup 85 | ``` 86 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650184023541/74a9cc43f627b75b6bb5bd1b8a7d1562) 87 | 88 | 89 | ### 查看启动日志(默认账户密码) 90 | 91 | ``` 92 | pm2 log AShare 93 | ``` 94 | ![1.png](https://sf1-scmcdn-tos.pstatp.com/obj/ad-tetris-site/file/1650184041026/0e048fc02ead2bc9f157ab966ed9c49b) 95 | 96 | 97 | ### 如果要使用443或者80啥的,就自己去设置下反代吧 98 | 99 | ``` 100 | 代理就是就是上图看到的服务运行地址,在我这里就是 101 | http://127.0.0.1:5201 102 | ``` 103 | 104 | ### 最后打开系统,根据上面日志里的账号密码登录系统,开始新增阿里云盘账号 105 | 106 | 点击新增账号,填入你第一步获取的refresh_token,点击确定即可 107 | -------------------------------------------------------------------------------- /router/index.js: -------------------------------------------------------------------------------- 1 | const router = require('express').Router(); 2 | 3 | const forbidden = (req, res) => { 4 | return res.return({ 5 | success: false, 6 | status: 20800, 7 | result: null, 8 | errMsg: 401 9 | }) 10 | } 11 | 12 | const fileMode = require('../controller/file'); 13 | const fileSMode = require('../controller/fileS'); 14 | const accountMode = require('../controller/account'); 15 | const shareMode = require('../controller/share'); 16 | const userMode = require('../controller/user'); 17 | 18 | for (let key in fileSMode) { 19 | router.route('/api/file/' + key) 20 | .post(fileSMode[key].post || forbidden) 21 | .get(fileSMode[key].get || forbidden) 22 | .put(fileSMode[key].put || forbidden) 23 | .delete(fileSMode[key].delete || forbidden) 24 | } 25 | for (let key in accountMode) { 26 | router.route('/api/account/' + key) 27 | .post(accountMode[key].post || forbidden) 28 | .get(accountMode[key].get || forbidden) 29 | .put(accountMode[key].put || forbidden) 30 | .delete(accountMode[key].delete || forbidden) 31 | } 32 | for (let key in shareMode) { 33 | router.route('/api/share/' + key) 34 | .post(shareMode[key].post || forbidden) 35 | .get(shareMode[key].get || forbidden) 36 | .put(shareMode[key].put || forbidden) 37 | .delete(shareMode[key].delete || forbidden) 38 | } 39 | for (let key in userMode) { 40 | router.route('/api/user/' + key) 41 | .post(userMode[key].post || forbidden) 42 | .get(userMode[key].get || forbidden) 43 | .put(userMode[key].put || forbidden) 44 | .delete(userMode[key].delete || forbidden) 45 | } 46 | 47 | 48 | router.route('/file/:user_id/:parent_file_id/:user_name').get(fileMode) 49 | 50 | module.exports = router -------------------------------------------------------------------------------- /utils/accord.js: -------------------------------------------------------------------------------- 1 | const CryptoJS = require('crypto-js'); 2 | 3 | module.exports = class { 4 | constructor(key, iv) { 5 | this.key = CryptoJS.enc.Utf8.parse(key); 6 | this.iv = CryptoJS.enc.Utf8.parse(iv); 7 | 8 | let all = ['富强', '民主', '文明', '和谐', '自由', '平等']; 9 | 10 | let all1 = all 11 | let tmp1 = [] 12 | for (let index in all) { 13 | let ele = all[index] 14 | for (let xindex in all1) { 15 | let xele = all1[xindex] 16 | tmp1.push(ele + xele) 17 | } 18 | } 19 | 20 | let tmp2 = [] 21 | let tmp3 = {} 22 | let tmp4 = {} 23 | 24 | for (let i = 0; i < 26; i++) { 25 | tmp2.push(String.fromCharCode(97 + i)) 26 | } 27 | 28 | for (let i = 0; i <= 9; i++) { 29 | tmp2.push(i) 30 | } 31 | 32 | for (let index in tmp2) { 33 | tmp3[tmp2[index]] = tmp1[index] 34 | tmp4[tmp1[index]] = tmp2[index] 35 | } 36 | 37 | this.tmp3 = tmp3 38 | this.tmp4 = tmp4 39 | } 40 | 41 | autoEn(data) { 42 | data = data.split(''); 43 | let r = '' 44 | for (let index in data) { 45 | let ele = data[index] 46 | r += this.tmp3[ele] 47 | } 48 | return r 49 | } 50 | 51 | autoDn(data) { 52 | data = data.split('') 53 | let r = '' 54 | let s = '' 55 | for (let index in data) { 56 | s += data[index] 57 | if (index % 4 == 3) { 58 | r += this.tmp4[s] 59 | s = '' 60 | } 61 | } 62 | return r 63 | } 64 | 65 | // 加密 66 | encrypt(data) { 67 | try { 68 | data = JSON.stringify(data) 69 | } catch (e) { 70 | //TODO handle the exception 71 | } 72 | const result = CryptoJS.AES.encrypt(data, this.key, { 73 | iv: this.iv, 74 | mode: CryptoJS.mode.CBC, 75 | padding: CryptoJS.pad.Pkcs7 76 | }); 77 | let hexData = result.ciphertext.toString(); 78 | return this.autoEn(hexData); 79 | } 80 | 81 | // 解密 82 | decrypt(cipher) { 83 | cipher = this.autoDn(cipher) 84 | let encryptedHexStr = CryptoJS.enc.Hex.parse(cipher); 85 | let encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr); 86 | const decrypted = CryptoJS.AES.decrypt(encryptedBase64Str, this.key, { 87 | iv: this.iv, 88 | mode: CryptoJS.mode.CBC, 89 | padding: CryptoJS.pad.Pkcs7 90 | }); 91 | let result = CryptoJS.enc.Utf8.stringify(decrypted); 92 | try { 93 | result = JSON.parse(result) 94 | } catch (e) { 95 | //TODO handle the exception 96 | } 97 | return result 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /utils/cloud.js: -------------------------------------------------------------------------------- 1 | const superagent = require('superagent'); 2 | const db = require('./db'); 3 | module.exports = class { 4 | constructor(id) { 5 | this.info = db('account').find({ id: id }).value() 6 | } 7 | 8 | // 登录 9 | async login(refresh_token) { 10 | try { 11 | if (!refresh_token) { 12 | let s = await superagent.post('https://auth.aliyundrive.com/v2/account/token') 13 | .send({ 14 | refresh_token: this.info.refresh_token, 15 | grant_type: "refresh_token" 16 | }); 17 | 18 | this.info = db('account').find({ id: this.info.id }).assign(s.body).write(); 19 | return this.info 20 | } else { 21 | let s = await superagent.post('https://auth.aliyundrive.com/v2/account/token') 22 | .send({ 23 | refresh_token: refresh_token, 24 | grant_type: "refresh_token" 25 | }); 26 | let info = db('account').find({ user_id: s.body.user_id }).value() 27 | if (!info) { 28 | info = db('account').insert(s.body).write() 29 | } else { 30 | info = db('account').find({ user_id: s.body.user_id }).assign(s.body).write() 31 | } 32 | this.info = info 33 | return this.info 34 | } 35 | 36 | } catch (error) { 37 | // console.log(error) 38 | return Promise.reject('refresh_token存在问题') 39 | } 40 | 41 | } 42 | 43 | // 请求 44 | async http(url, params = {}) { 45 | return new Promise(async (resolve, reject) => { 46 | try { 47 | let s = await superagent.post(url) 48 | .set({ 49 | authorization: 'Bearer ' + this.info.access_token, 50 | referer: 'https://www.aliyundrive.com/', 51 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36' 52 | }) 53 | .send(params) 54 | resolve(s.body) 55 | } catch (error) { 56 | if (error.status == 401) { 57 | await this.login() 58 | return this.http(url, params) 59 | } else { 60 | reject(error.response.body.message) 61 | } 62 | } 63 | }) 64 | 65 | } 66 | 67 | // 获取人信息 68 | async getInfo() { 69 | let s = await this.http('https://api.aliyundrive.com/v2/databox/get_personal_info'); 70 | return s 71 | } 72 | 73 | // 列出文件 74 | async list(parent_file_id = 'root', limit = 200, order_by = 'name', order_direction = 'ASC', marker = null, list = []) { 75 | let s = await this.http('https://api.aliyundrive.com/v2/file/list', { 76 | drive_id: this.info.default_drive_id, 77 | fields: "*", 78 | image_thumbnail_process: "image/resize,w_160/format,jpeg", 79 | image_url_process: "image/resize,w_1920/format,jpeg", 80 | limit: limit, 81 | marker: null, 82 | order_by: order_by, 83 | order_direction: order_direction, 84 | parent_file_id: parent_file_id, 85 | video_thumbnail_process: "video/snapshot,t_0,f_jpg,w_300" 86 | }) 87 | // console.log(s) 88 | list = list.concat(s.items) 89 | if (s.next_marker) { 90 | return this.list(parent_file_id, limit, order_by, order_direction, marker, list) 91 | } else { 92 | return list 93 | } 94 | } 95 | 96 | // 获取文件信息 97 | async node(file_id, user_name) { 98 | let s = await this.http('https://api.aliyundrive.com/v2/file/get_download_url', { 99 | drive_id: this.info.default_drive_id, 100 | file_id: file_id, 101 | expire_sec: 7200, 102 | file_name: user_name 103 | }) 104 | return s 105 | } 106 | 107 | // 列出文件预览 108 | async previewVideo(file_id) { 109 | let s = await this.http('https://api.aliyundrive.com/v2/databox/get_video_play_info', { 110 | drive_id: this.info.default_drive_id, 111 | file_id: file_id 112 | }) 113 | return s.template_list 114 | } 115 | 116 | // 获取文件夹信息 117 | async fileInfo(file_id) { 118 | let s = await this.http('https://api.aliyundrive.com/v2/file/get', { 119 | drive_id: this.info.default_drive_id, 120 | file_id: file_id 121 | }) 122 | return s 123 | } 124 | 125 | 126 | } 127 | -------------------------------------------------------------------------------- /utils/db.js: -------------------------------------------------------------------------------- 1 | const lodashId = require('lodash-id') 2 | const low = require('lowdb'); 3 | const FileSync = require('lowdb/adapters/FileSync') 4 | const fs = require('fs'); 5 | const Accord = require('../utils/accord'); 6 | const accord = new Accord('z6V_&H^NC$DDApLz', '(}$B7aT(zW970yHz') 7 | 8 | try { 9 | fs.mkdirSync('./data') 10 | } catch (error) { 11 | 12 | } 13 | 14 | if (!fs.existsSync('./data/这里都是数据库文件,别作死!')) { 15 | fs.writeFileSync('./data/这里都是数据库文件,别作死!', '这里都是数据库文件,别作死!') 16 | } 17 | 18 | module.exports = (name) => { 19 | const adapter = new FileSync(`./data/${name}`, { 20 | serialize: (data) => accord.encrypt(data), 21 | deserialize: (data) => accord.decrypt(data) 22 | }) 23 | const db = low(adapter) 24 | db._.mixin(lodashId) 25 | if (!db.has('data').value()) { 26 | db.set('data', []).write() 27 | } 28 | return db.get('data') 29 | } -------------------------------------------------------------------------------- /utils/filter.js: -------------------------------------------------------------------------------- 1 | const requestIp = require('request-ip'); 2 | const whitePath = require('./white'); 3 | const randomString = require('random-string'); 4 | const path = require('path'); 5 | const { createToken, checkToken } = require('./token'); 6 | const db = require('./db'); 7 | const Accord = require('./accord'); 8 | module.exports = async (req, res, next) => { 9 | const 富强 = randomString({ 10 | length: 16, 11 | numeric: true, 12 | letters: true, 13 | special: true 14 | }); 15 | const 民主 = randomString({ 16 | length: 16, 17 | numeric: true, 18 | letters: true, 19 | special: true 20 | }); 21 | const accord = new Accord(富强, 民主) 22 | res.header("x-fq", 富强); 23 | res.header("x-mz", 民主); 24 | res.error = (data, status) => { 25 | res.send(accord.encrypt({ 26 | success: false, 27 | status: status || 20200, 28 | result: null, 29 | errMsg: data 30 | })) 31 | } 32 | res.return = (data) => { 33 | res.send(accord.encrypt({ 34 | success: true, 35 | status: 20000, 36 | result: data, 37 | errMsg: null 38 | })) 39 | } 40 | const info = { 41 | ip: requestIp.getClientIp(req).replace('::ffff:', ''),// 获取ip 42 | url: req.url,// 获取请求路径 43 | path: req._parsedUrl.pathname,// 获取请求path 44 | method: req.method,// 获取请求方式 45 | userAgent: req.headers['user-agent'],// 获取Useragent 46 | query: req.query, 47 | params: req.params, 48 | body: req.body, 49 | db: { 50 | UserMode: db('user'), 51 | AccountMode: db('account'), 52 | ShareMode: db('share') 53 | } 54 | } 55 | 56 | console.info(`[ip] ${info.ip} [method] ${info.method} [url] ${info.url}`) 57 | 58 | let auth = false 59 | 60 | // 白名单匹配 61 | whitePath.forEach(ele => { 62 | if (info.path.indexOf(ele.path) == 0 && ele.method == info.method) { 63 | req.info = info 64 | auth = true 65 | } 66 | if (info.path.indexOf('/file/') == 0) { 67 | req.info = info 68 | auth = true 69 | } 70 | }) 71 | if (auth) { 72 | return next() 73 | } 74 | 75 | // 鉴权流程 76 | if (req.headers.authorization) { 77 | const authorization = req.headers.authorization 78 | if (checkToken(authorization)) { 79 | const userInfo = info.db.UserMode.find({ token: authorization }).value() 80 | if (userInfo) { 81 | info.userInfo = userInfo 82 | // const nextToken = createToken({ username: userInfo.username }) 83 | // info.db.UserMode.find({ token: authorization }).assign({ token: nextToken }).write() 84 | // info.nextToken = nextToken 85 | req.info = info 86 | // res.header("nextToken", info.nextToken); 87 | return next() 88 | } 89 | } 90 | } 91 | 92 | // 没权限 93 | if (info.path.indexOf('/api/') == 0) { 94 | return res.error(401) 95 | } else { 96 | return res.sendFile(path.join(__dirname, '../public/index.html')) 97 | } 98 | } -------------------------------------------------------------------------------- /utils/geetest.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var crypto = require('crypto'), 3 | request = require('request'), 4 | pkg = { "version": "1.0.0" }, 5 | geeTest = { 6 | geetest_id: '9f92596d4327f7c4ebddff0facd10d52', 7 | geetest_key: '8b45045553e8ecdea78ed499dc552203' 8 | } 9 | 10 | var md5 = function (str) { 11 | return crypto.createHash('md5').update(String(str)).digest('hex'); 12 | }; 13 | var randint = function (from, to) { 14 | // range: from ~ to 15 | return Math.floor(Math.random() * (to - from + 1) + from); 16 | }; 17 | function Geetest(config) { 18 | if (typeof config.geetest_id !== 'string') { 19 | throw new Error('Geetest ID Required'); 20 | } 21 | if (typeof config.geetest_key !== 'string') { 22 | throw new Error("Geetest KEY Required"); 23 | } 24 | if (typeof config.protocol === 'string') { 25 | this.PROTOCOL = config.protocol; 26 | } 27 | if (typeof config.api_server === 'string') { 28 | this.API_SERVER = config.api_server; 29 | } 30 | if (typeof config.timeout === 'number') { 31 | this.TIMEOUT = config.timeout; 32 | } 33 | 34 | this.geetest_id = config.geetest_id; 35 | this.geetest_key = config.geetest_key; 36 | } 37 | Geetest.prototype = { 38 | PROTOCOL: 'http://', 39 | API_SERVER: 'api.geetest.com', 40 | VALIDATE_PATH: '/validate.php', 41 | REGISTER_PATH: '/register.php', 42 | TIMEOUT: 2000, 43 | NEW_CAPTCHA: true, 44 | JSON_FORMAT: 1, 45 | register: function (data, callback) { 46 | var that = this; 47 | return new Promise(function (resolve, reject) { 48 | that._register(data, function (err, data) { 49 | if (typeof callback === 'function') { 50 | callback(err, data); 51 | } 52 | if (err) { 53 | reject(err); 54 | } else { 55 | resolve(data); 56 | } 57 | }); 58 | }); 59 | }, 60 | _register: function (data, callback) { 61 | data = data || {}; 62 | var that = this; 63 | request({ 64 | url: this.PROTOCOL + this.API_SERVER + this.REGISTER_PATH, 65 | method: 'GET', 66 | timeout: this.TIMEOUT, 67 | json: true, 68 | qs: { 69 | gt: this.geetest_id, 70 | json_format: this.JSON_FORMAT, 71 | sdk: 'Node_' + pkg.version, 72 | client_type: data.client_type || 'unknown', 73 | ip_address: data.ip_address || 'unknown' 74 | } 75 | }, function (err, res, data) { 76 | var challenge; 77 | if (err || !data || !data.challenge) { 78 | // fallback 79 | challenge = that._make_challenge(); 80 | callback(null, { 81 | // success: 0, 82 | challenge: challenge, 83 | gt: that.geetest_id, 84 | new_captcha: that.NEW_CAPTCHA 85 | }); 86 | } else { 87 | challenge = md5(data.challenge + that.geetest_key); 88 | callback(null, { 89 | // success: 1, 90 | challenge: challenge, 91 | gt: that.geetest_id, 92 | new_captcha: that.NEW_CAPTCHA 93 | }); 94 | } 95 | }); 96 | }, 97 | validate: function (fallback, result, callback) { 98 | var that = this; 99 | return new Promise(function (resolve, reject) { 100 | that._validate(fallback, result, function (err, data) { 101 | if (typeof callback === 'function') { 102 | callback(err, data); 103 | } 104 | if (err) { 105 | reject(err); 106 | } else { 107 | resolve(data); 108 | } 109 | }); 110 | }) 111 | }, 112 | _validate: function (fallback, result, callback) { 113 | var challenge = result.challenge || result.geetest_challenge; 114 | var validate = result.validate || result.geetest_validate; 115 | var seccode = result.seccode || result.geetest_seccode; 116 | if (fallback) { 117 | if (md5(challenge) === validate) { 118 | callback(null, true); 119 | } else { 120 | callback(null, false); 121 | } 122 | } else { 123 | var hash = this.geetest_key + 'geetest' + challenge; 124 | if (validate === md5(hash)) { 125 | request({ 126 | url: this.PROTOCOL + this.API_SERVER + this.VALIDATE_PATH, 127 | method: 'POST', 128 | timeout: this.TIMEOUT, 129 | json: true, 130 | form: { 131 | gt: this.geetest_id, 132 | seccode: seccode, 133 | json_format: this.JSON_FORMAT 134 | } 135 | }, function (err, res, data) { 136 | if (err || !data || !data.seccode) { 137 | callback(err); 138 | } else { 139 | callback(null, data.seccode === md5(seccode)); 140 | } 141 | }); 142 | } else { 143 | callback(null, false); 144 | } 145 | } 146 | }, 147 | _make_challenge: function () { 148 | var rnd1 = randint(0, 90); 149 | var rnd2 = randint(0, 90); 150 | var md5_str1 = md5(rnd1); 151 | var md5_str2 = md5(rnd2); 152 | return md5_str1 + md5_str2.slice(0, 2); 153 | } 154 | }; 155 | 156 | const captcha = new Geetest(geeTest); 157 | 158 | 159 | 160 | module.exports = { 161 | registerClick() { 162 | return new Promise((resolve, reject) => { 163 | // 向极验申请每次验证所需的challenge 164 | captcha.register(null, (err, data) => { 165 | if (err) { 166 | // console.log(err) 167 | reject(err) 168 | } else { 169 | resolve(data) 170 | } 171 | }); 172 | }) 173 | }, 174 | 175 | validateClick(geetest_challenge, geetest_validate, geetest_seccode) { 176 | return new Promise((resolve, reject) => { 177 | captcha.validate(null, { 178 | geetest_challenge: geetest_challenge, 179 | geetest_validate: geetest_validate, 180 | geetest_seccode: geetest_seccode 181 | }, (err, success) => { 182 | if (err) { 183 | reject(err) 184 | 185 | } else if (!success) { 186 | resolve(false) 187 | } else { 188 | resolve(true) 189 | } 190 | }); 191 | }) 192 | } 193 | } 194 | 195 | 196 | -------------------------------------------------------------------------------- /utils/inject.js: -------------------------------------------------------------------------------- 1 | // 日志输出美化 2 | const moment = require('moment'); 3 | require('colors'); 4 | console.info = (val) => { 5 | console.log('[Info]'.blue + ' ' + moment(new Date()).format('YYYY-MM-DD hh:mm:ss') + ' ' + val) 6 | } 7 | 8 | // 数据表格式化 9 | console.info('连接数据库') 10 | const db = require('./db'); 11 | const UserMode = db('user') 12 | const AccountMode = db('account') 13 | const ShareMode = db('share') 14 | 15 | const userNum = UserMode.size().value(); 16 | if (userNum == 0) { 17 | const randomString = require('random-string') 18 | const username = randomString({ length: 6 }); 19 | const password = randomString({ length: 16 }); 20 | UserMode.insert({ 21 | username: username, 22 | password: password, 23 | role: 1, 24 | time: new Date(), 25 | type: true 26 | }).write() 27 | console.info(`初始管理员账号:${username}`) 28 | console.info(`初始管理员密码:${password}`) 29 | } else { 30 | const { username, password } = UserMode.find().value() 31 | console.info(`当前管理员账号:${username}`) 32 | console.info(`当前管理员密码:${password}`) 33 | } 34 | 35 | // 检测可用端口 36 | async function port() { 37 | const portfinder = require('portfinder'); 38 | const result = await portfinder.getPortPromise({ 39 | port: 5201 40 | }) 41 | console.info(`服务运行在:http://127.0.0.1:${result}`) 42 | return result 43 | } 44 | 45 | 46 | module.exports = { 47 | UserMode, 48 | AccountMode, 49 | ShareMode, 50 | port 51 | } -------------------------------------------------------------------------------- /utils/token.js: -------------------------------------------------------------------------------- 1 | const crypto = require("crypto"); 2 | 3 | module.exports = new class { 4 | /** 5 | * 创建token 6 | * 7 | * @param {*} obj 8 | * @param {*} exp 9 | * @returns 10 | */ 11 | createToken(params, exp) { 12 | let payload = { 13 | data: params, 14 | created: parseInt(Date.now() / 1000),//token生成的时间的,单位秒 15 | exp: exp || 3600//token有效期,精确到秒 16 | }; 17 | 18 | //payload信息 19 | let base64Str = Buffer.from(JSON.stringify(payload), "utf8").toString("base64"); 20 | 21 | //添加签名,防篡改 22 | let secret = "作者QQ:1178560551"; 23 | let hash = crypto.createHmac('sha256', secret); 24 | hash.update(base64Str); 25 | let signature = hash.digest('base64'); 26 | 27 | return base64Str + "." + signature; 28 | } 29 | 30 | checkToken(token) { 31 | let decodeToken = (token) => { 32 | 33 | let decArr = token.split("."); 34 | if (decArr.length < 2) { 35 | //token不合法 36 | return false; 37 | } 38 | 39 | let payload = {}; 40 | //将payload json字符串 解析为对象 41 | try { 42 | payload = JSON.parse(Buffer.from(decArr[0], "base64").toString("utf8")); 43 | } catch (e) { 44 | return false; 45 | } 46 | 47 | //检验签名 48 | let secret = "作者QQ:1178560551"; 49 | let hash = crypto.createHmac('sha256', secret); 50 | hash.update(decArr[0]); 51 | let checkSignature = hash.digest('base64'); 52 | 53 | return { 54 | payload: payload, 55 | signature: decArr[1], 56 | checkSignature: checkSignature 57 | } 58 | } 59 | 60 | let resDecode = decodeToken(token); 61 | 62 | if (!resDecode) { 63 | return false; 64 | } 65 | 66 | //是否过期 67 | let expState = (parseInt(Date.now() / 1000) - parseInt(resDecode.payload.created)) > parseInt(resDecode.payload.exp) ? false : true; 68 | 69 | if (resDecode.signature === resDecode.checkSignature && expState) { 70 | return true; 71 | } 72 | 73 | return false; 74 | } 75 | 76 | } -------------------------------------------------------------------------------- /utils/white.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | { 3 | name: "favicon.ico", 4 | path: '/favicon.ico', 5 | method: 'GET' 6 | }, 7 | { 8 | name: '获取管理员登录页验证码', 9 | path: '/api/user/login', 10 | method: 'GET' 11 | }, 12 | { 13 | name: '执行登陆请求', 14 | path: '/api/user/login', 15 | method: 'POST' 16 | }, 17 | { 18 | name: '获取文件夹信息', 19 | path: '/api/share/public', 20 | method: 'GET' 21 | }, 22 | { 23 | name: '视频', 24 | path: '/api/file/previewVideo', 25 | method: 'GET' 26 | }, 27 | { 28 | name: '获取下载链接', 29 | path: '/api/share/downLoad', 30 | method: 'GET' 31 | } 32 | ] --------------------------------------------------------------------------------