diff --git a/package.json b/package.json index 50e0c3f..ca7c89a 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@types/hapi__vision": "^5.5.3", "@types/hapi__yar": "^10.1.1", "bcrypt": "^5.0.1", + "fs-extra": "^10.1.0", "hapi-auth-jwt2": "^10.2.0", "hapi-sequelizejs": "^4.5.0", "hapi-swagger": "^14.2.0", @@ -39,6 +40,7 @@ "devDependencies": { "@hapi/vision": "^6.1.0", "@noderun/hapi-router": "link:packages\\hapi-router", + "@types/fs-extra": "^9.0.13", "@types/hapi__cookie": "^10.1.4", "@types/hapi__crumb": "^7.3.3", "@types/node": "^17.0.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60f8897..088e9fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,6 +9,7 @@ specifiers: '@hapi/vision': ^6.1.0 '@hapi/yar': ^10.1.1 '@noderun/hapi-router': link:packages\hapi-router + '@types/fs-extra': ^9.0.13 '@types/hapi__cookie': ^10.1.4 '@types/hapi__crumb': ^7.3.3 '@types/hapi__hapi': ^20.0.10 @@ -20,6 +21,7 @@ specifiers: ejs: ^3.1.6 fast-glob: ^3.2.11 file-type: ^16.5.0 + fs-extra: ^10.1.0 hapi-auth-jwt2: ^10.2.0 hapi-sequelizejs: ^4.5.0 hapi-swagger: ^14.2.0 @@ -48,6 +50,7 @@ dependencies: '@types/hapi__vision': 5.5.3 '@types/hapi__yar': 10.1.1 bcrypt: 5.0.1 + fs-extra: 10.1.0 hapi-auth-jwt2: 10.2.0 hapi-sequelizejs: 4.5.0_qvf7o3m36i74qppgjxp4amnmp4 hapi-swagger: 14.2.0_7vfmy7cdcj4whrdhceanslo3uq @@ -63,6 +66,7 @@ dependencies: devDependencies: '@hapi/vision': 6.1.0 '@noderun/hapi-router': link:packages/hapi-router + '@types/fs-extra': 9.0.13 '@types/hapi__cookie': 10.1.4 '@types/hapi__crumb': 7.3.3 '@types/node': 17.0.21 @@ -453,6 +457,12 @@ packages: resolution: {integrity: sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==} dev: true + /@types/fs-extra/9.0.13: + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + dependencies: + '@types/node': 17.0.21 + dev: true + /@types/hapi__catbox/10.2.4: resolution: {integrity: sha512-A6ivRrXD5glmnJna1UAGw87QNZRp/vdFO9U4GS+WhOMWzHnw+oTGkMvg0g6y1930CbeheGOCm7A1qHsqH7AXqg==} @@ -1347,14 +1357,13 @@ packages: resolution: {integrity: sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==} dev: false - /fs-extra/10.0.1: - resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/fs-extra/-/fs-extra-10.0.1.tgz} + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: graceful-fs: 4.2.6 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true /fs-minipass/1.2.7: resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} @@ -1483,7 +1492,7 @@ packages: dev: false /graceful-fs/4.2.6: - resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/graceful-fs/-/graceful-fs-4.2.6.tgz} + resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==} /handlebars/4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/handlebars/-/handlebars-4.7.7.tgz} @@ -1998,12 +2007,11 @@ packages: dev: true /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/jsonfile/-/jsonfile-6.1.0.tgz} + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.6 - dev: true /jsonwebtoken/8.5.1: resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} @@ -3115,7 +3123,7 @@ packages: dependencies: date-format: 4.0.3 debug: 4.3.3 - fs-extra: 10.0.1 + fs-extra: 10.1.0 transitivePeerDependencies: - supports-color dev: true @@ -3525,9 +3533,8 @@ packages: dev: false /universalify/2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/universalify/-/universalify-2.0.0.tgz} + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: true /update-notifier/4.1.3: resolution: {integrity: sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==} diff --git a/source/route/views/index/index.ts b/source/route/views/index/index.ts index 34b3164..b313e66 100644 --- a/source/route/views/index/index.ts +++ b/source/route/views/index/index.ts @@ -11,6 +11,7 @@ import Joi from "joi"; import * as bcrypt from "bcrypt"; import glob from "fast-glob"; import path from "path"; +import fs from "fs-extra"; import { baseDir } from "@/util"; export default class Index { @@ -19,7 +20,7 @@ export default class Index { } @auth("try") - async index(request: Req, h: Res): ReturnValue { + async index(request: Req, h: Res): ReturnValue { if (request.auth.isAuthenticated) { // 登录了 } else { @@ -56,9 +57,13 @@ export default class Index { // console.log(error); // } - if (req.path.endsWith(".md")) { - console.log(path.resolve(baseDir, "docs/"+"**/*.md")); - console.log(await glob(path.resolve(baseDir, "docs/"+"**/*.md"))); + if (req.params && req.params.path.endsWith(".md")) { + // console.log(path.resolve(baseDir, "docs/"+"*.md")); + // console.log(await glob("docs/"+"*.md")); + const mdPath = path.resolve(baseDir, "docs/"+req.params.path) + if(fs.existsSync(mdPath)){ + console.log("哈哈"); + } // 解析文档 return h.view("views/css.pug"); } @@ -67,7 +72,9 @@ export default class Index { } @route("/{path*}") async any(req: Req, h: Res): ReturnValue { - return h.redirect("/404"); + console.log(req.raw.req.url); + + return h.redirect("/404?r="+encodeURIComponent(req.raw.req.url)); } @route("/404") @auth("try") @@ -77,7 +84,9 @@ export default class Index { } else { // 未登录 } - // 404页面 + if(request.query?.r){ + // 可重定向返回 + } return h.view("404.pug"); } }