Browse Source

add

theme^2
npmrun 2 years ago
parent
commit
5f462422a3
  1. BIN
      data/data.db
  2. 1
      docs/a.md
  3. 1
      package.json
  4. 3
      pnpm-lock.yaml
  5. 4
      route.txt
  6. 5
      source/log4js_config.ts
  7. 12
      source/plugins/index.ts
  8. 14
      source/run.ts
  9. 2
      source/util/index.ts
  10. 10
      template/403.pug
  11. 2
      template/404.pug
  12. 1
      template/layout/layout.pug
  13. 1
      template/views/register.pug

BIN
data/data.db

Binary file not shown.

1
docs/a.md

@ -0,0 +1 @@
ffff

1
package.json

@ -20,6 +20,7 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@hapi/boom": "^10.0.1",
"@hapi/cookie": "^12.0.1", "@hapi/cookie": "^12.0.1",
"@hapi/crumb": "^9.0.1", "@hapi/crumb": "^9.0.1",
"@hapi/hapi": "^21.3.2", "@hapi/hapi": "^21.3.2",

3
pnpm-lock.yaml

@ -6,6 +6,9 @@ patchedDependencies:
path: patches/hapi-sequelizejs@4.6.1.patch path: patches/hapi-sequelizejs@4.6.1.patch
dependencies: dependencies:
'@hapi/boom':
specifier: ^10.0.1
version: 10.0.1
'@hapi/cookie': '@hapi/cookie':
specifier: ^12.0.1 specifier: ^12.0.1
version: 12.0.1 version: 12.0.1

4
route.txt

@ -1,6 +1,4 @@
D:\1XYX\pro\hapi-demo\source\route\htmx对应路径: /home/topuser/Code/@project/hapi-demo/source/route/views对应路径:
不需权限(提供无需验证try): GET /htmx/path/{path*}
D:\1XYX\pro\hapi-demo\source\route\views对应路径:
不需权限(提供无需验证try): GET /404 不需权限(提供无需验证try): GET /404
不需权限(提供即需验证optional): GET / 不需权限(提供即需验证optional): GET /
不需权限(提供无需验证try): GET /about 不需权限(提供无需验证try): GET /about

5
source/log4js_config.ts

@ -1,15 +1,16 @@
import path from "path" import path from "path"
import { logsDir } from "./util"
export default function () { export default function () {
return { return {
appenders: { appenders: {
file: { file: {
type: "file", type: "file",
filename: path.resolve(__dirname, "../", "./logs", "./Site.log"), filename: path.resolve(logsDir, "./Site.log"),
}, },
SQL: { SQL: {
type: "file", type: "file",
filename: path.resolve(__dirname, "../", "./logs", "./SQL.log"), filename: path.resolve(logsDir, "./SQL.log"),
}, },
console: { console: {
type: "console", type: "console",

12
source/plugins/index.ts

@ -1,6 +1,6 @@
import filePlugin from "./file-plugin" import filePlugin from "./file-plugin"
import path from "path" import path from "path"
import { baseDir, sourceDir } from "@/util" import { logsDir, sourceDir } from "@/util"
import { plugin as routePlugin } from "@noderun/hapi-router" import { plugin as routePlugin } from "@noderun/hapi-router"
import { ServerRegisterPluginObject, Plugin, Server, Request, ResponseObject } from "@hapi/hapi" import { ServerRegisterPluginObject, Plugin, Server, Request, ResponseObject } from "@hapi/hapi"
import Hoek from "@hapi/hoek" import Hoek from "@hapi/hoek"
@ -23,7 +23,7 @@ const transport = pino.transport({
target: "pino-pretty", target: "pino-pretty",
level: "trace", level: "trace",
options: { options: {
destination: path.resolve(baseDir, "./log/pino.log"), destination: path.resolve(logsDir, "./pino.log"),
colorize: true, colorize: true,
translateTime: 'HH:MM:ss.l mmmm dS yyyy "UTC"', translateTime: 'HH:MM:ss.l mmmm dS yyyy "UTC"',
mkdir: true, mkdir: true,
@ -69,10 +69,10 @@ export default [
// dir: path.resolve(sourceDir, "route/api"), // dir: path.resolve(sourceDir, "route/api"),
// prefix: "api" // prefix: "api"
// }, // },
{ // {
dir: path.resolve(sourceDir, "route/htmx"), // dir: path.resolve(sourceDir, "route/htmx"),
prefix: "htmx", // prefix: "htmx",
}, // },
{ {
dir: path.resolve(sourceDir, "route/views"), dir: path.resolve(sourceDir, "route/views"),
prefix: "", prefix: "",

14
source/run.ts

@ -5,9 +5,10 @@ import { baseDir, isDev, publicDir, sourceDir, templateDir } from "@/util"
import { validateJwt, validateSession } from "./auth" import { validateJwt, validateSession } from "./auth"
import Hapi, { Server } from "@hapi/hapi" import Hapi, { Server } from "@hapi/hapi"
import { Sequelize } from "sequelize" import { Sequelize } from "sequelize"
import { Req } from "#/global" import { Req, Res } from "#/global"
import { sequelize } from "./plugins/sequelize" import { sequelize } from "./plugins/sequelize"
import fs from "fs-extra" import fs from "fs-extra"
import { Boom } from "@hapi/boom"
// const Hapi = require("@hapi/hapi"); // const Hapi = require("@hapi/hapi");
// const HapiSwagger = require("hapi-swagger"); // const HapiSwagger = require("hapi-swagger");
// const HapiSwagger = require("hapi-swaggered-ui"); // swagger v2版本 // const HapiSwagger = require("hapi-swaggered-ui"); // swagger v2版本
@ -160,6 +161,17 @@ const run = async (): Promise<Server> => {
}, },
}, },
]) ])
server.ext('onPreResponse', (request, h) => {
const { response } = request
// 如果状态码为403,则调用自定义错误处理程序
if (response instanceof Boom && (response.output.statusCode < 200 || response.output.statusCode > 299)) {
return h.view('403.pug', { error: response})
}
return h.continue;
});
await server.start() await server.start()
logger.trace("Server running on %s", server.info.uri.replace("0.0.0.0", "localhost")) logger.trace("Server running on %s", server.info.uri.replace("0.0.0.0", "localhost"))
return server return server

2
source/util/index.ts

@ -6,6 +6,8 @@ export const isProd = process.env.NODE_ENV === "production"
export const baseDir = path.resolve(__dirname, "../../") export const baseDir = path.resolve(__dirname, "../../")
export const logsDir = path.resolve(__dirname, "../../logs")
export const sourceDir = isProd ? path.resolve(__dirname, "../../dist") : path.resolve(__dirname, "../../source") export const sourceDir = isProd ? path.resolve(__dirname, "../../dist") : path.resolve(__dirname, "../../source")
export const publicDir = path.resolve(__dirname, "../../public") export const publicDir = path.resolve(__dirname, "../../public")
export const uploadDir = path.resolve(publicDir, "upload") export const uploadDir = path.resolve(publicDir, "upload")

10
template/403.pug

@ -0,0 +1,10 @@
extends layout/layout
block head
link(rel="stylesheet", href="/public/css/views/404.css")
block content
include @/helper/flush.pug
div(style="text-align: center")
span.text404 403
div #{error}

2
template/404.pug

@ -1,10 +1,10 @@
extends layout/layout extends layout/layout
include @/helper/flush.pug
block head block head
link(rel="stylesheet", href="/public/css/views/404.css") link(rel="stylesheet", href="/public/css/views/404.css")
block content block content
include @/helper/flush.pug
div(style="text-align: center") div(style="text-align: center")
span.text404 404 span.text404 404
div 重定向回:#{rollback} div 重定向回:#{rollback}

1
template/layout/layout.pug

@ -1,5 +1,6 @@
doctype html doctype html
include @/helper/helper.pug include @/helper/helper.pug
include @/helper/flush.pug
block var block var
html(lang="zh-cn" class=hideHeader?"":"has-navbar-fixed-top") html(lang="zh-cn" class=hideHeader?"":"has-navbar-fixed-top")

1
template/views/register.pug

@ -1,5 +1,4 @@
extends @/layout/layout extends @/layout/layout
include @/helper/flush.pug
block var block var
-title="注册" // 网页标题 -title="注册" // 网页标题

Loading…
Cancel
Save