admin/options: log api requests
Massimo Melina committed
Jun 27, 2023 at 21:12 UTC
4f51bb3939067e4fe27759c82e3e7ae6384f00a1
2 files changed
+6
admin/src/OptionsPage.ts
+1
@@ -133,6 +133,7 @@ export default function OptionsPage() {
133
helperText: h(WildcardsSupported)
134
},
135
{ k: 'log_gui', comp: BoolField, label: "Log interface loading" },
136
+ { k: 'log_api', comp: BoolField, label: "Log API requests" },
137
{ k: 'proxies', comp: NumberField, min: 0, max: 9, sm: 6, label: "How many HTTP proxies between this server and users?",
138
error: proxyWarning(values, status),
139
helperText: "Wrong number will prevent detection of users' IP address"
src/apiMiddleware.ts
+5
@@ -7,6 +7,7 @@ import { asyncGeneratorToReadable, onOff, removeStarting } from './misc'
7
import events from './events'
8
import { HTTP_BAD_REQUEST, HTTP_NOT_FOUND, HTTP_UNAUTHORIZED } from './const'
9
import _ from 'lodash'
10
+import { defineConfig } from './config'
11
12
export class ApiError extends Error {
13
constructor(public status:number, message?:string | Error | object) {
@@ -17,8 +18,12 @@ type ApiHandlerResult = Record<string,any> | ApiError | Readable | AsyncGenerato
18
export type ApiHandler = (params:any, ctx:Koa.Context) => ApiHandlerResult | Promise<ApiHandlerResult>
19
export type ApiHandlers = Record<string, ApiHandler>
20
21
+const logApi = defineConfig('log_api', true)
22
+
23
export function apiMiddleware(apis: ApiHandlers) : Koa.Middleware {
24
return async (ctx) => {
25
+ if (!logApi.get())
26
+ ctx.state.dont_log = true
27
const { params } = ctx
28
console.debug('API', ctx.method, ctx.path, { ...params })
29
const apiFun = apis.hasOwnProperty(ctx.path) && apis[ctx.path]!