mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-08-04 08:06:26 +08:00
add server log
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { createError } from 'h3'
|
||||
import { requireUserSession } from '../../utils/auth'
|
||||
import { getBridgeTokenFromHeader } from '../../utils/bridge'
|
||||
import { logBridgeEvent } from '../../utils/bridgeLog'
|
||||
import { BridgeToken } from '../../models/BridgeToken'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
@@ -35,7 +36,7 @@ export default defineEventHandler(async (event) => {
|
||||
throw createError({ statusCode: 500, statusMessage: 'Token konnte nicht gespeichert werden.' })
|
||||
}
|
||||
|
||||
return {
|
||||
const result = {
|
||||
success: true,
|
||||
token: document.token,
|
||||
connectedAt: document.connectedAt?.toISOString() ?? now.toISOString(),
|
||||
@@ -45,4 +46,15 @@ export default defineEventHandler(async (event) => {
|
||||
name: user.name,
|
||||
},
|
||||
}
|
||||
|
||||
logBridgeEvent(token, {
|
||||
endpoint: '/api/bridge/connect',
|
||||
method: 'POST',
|
||||
statusCode: 200,
|
||||
color: '#22c55e',
|
||||
summary: `Linked to ${user.name || user.email}`,
|
||||
data: result as unknown as Record<string, unknown>,
|
||||
})
|
||||
|
||||
return result
|
||||
})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { createError, defineEventHandler, readBody } from 'h3'
|
||||
import { BridgeToken } from '../../models/BridgeToken'
|
||||
import { getBridgeTokenFromHeader } from '../../utils/bridge'
|
||||
import { logBridgeEvent } from '../../utils/bridgeLog'
|
||||
import { flightlabTelemetryStore } from '../../utils/flightlabTelemetry'
|
||||
import type { FlightLabTelemetryState } from '../../../shared/data/flightlab/types'
|
||||
|
||||
@@ -59,6 +60,15 @@ export default defineEventHandler(async (event) => {
|
||||
const mapped = mapBridgeTelemetry(body)
|
||||
flightlabTelemetryStore.update(userId, mapped)
|
||||
|
||||
logBridgeEvent(bridgeToken, {
|
||||
endpoint: '/api/bridge/data',
|
||||
method: 'POST',
|
||||
statusCode: 200,
|
||||
color: '#d946ef',
|
||||
summary: `Telemetry ${telemetryKeys.length} keys — IAS ${mapped.AIRSPEED_INDICATED.toFixed(0)}kt ALT ${mapped.PLANE_ALTITUDE.toFixed(0)}ft`,
|
||||
data: mapped as unknown as Record<string, unknown>,
|
||||
})
|
||||
|
||||
return {
|
||||
// n1_pct: (mapped.TURB_ENG_N1_1 ?? 0) + 10,
|
||||
// n1_pct_2: (mapped.TURB_ENG_N1_2 ?? 0) + 10,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { createError } from 'h3'
|
||||
import { requireUserSession } from '../../utils/auth'
|
||||
import { getBridgeTokenFromHeader } from '../../utils/bridge'
|
||||
import { logBridgeEvent } from '../../utils/bridgeLog'
|
||||
import { BridgeToken } from '../../models/BridgeToken'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
@@ -46,6 +47,14 @@ export default defineEventHandler(async (event) => {
|
||||
},
|
||||
)
|
||||
|
||||
logBridgeEvent(token, {
|
||||
endpoint: '/api/bridge/disconnect',
|
||||
method: 'POST',
|
||||
statusCode: 200,
|
||||
color: '#ef4444',
|
||||
summary: `Unlinked from ${user.name || user.email}`,
|
||||
})
|
||||
|
||||
return {
|
||||
success: true,
|
||||
token,
|
||||
|
||||
15
server/api/bridge/log.get.ts
Normal file
15
server/api/bridge/log.get.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { createError, getQuery } from 'h3'
|
||||
import { getBridgeTokenFromHeader } from '../../utils/bridge'
|
||||
import { getBridgeLog } from '../../utils/bridgeLog'
|
||||
|
||||
export default defineEventHandler((event) => {
|
||||
const token = getBridgeTokenFromHeader(event)
|
||||
if (!token) {
|
||||
throw createError({ statusCode: 401, statusMessage: 'x-bridge-token header fehlt oder ist ungültig.' })
|
||||
}
|
||||
|
||||
const query = getQuery(event)
|
||||
const since = Number(query.since) || 0
|
||||
|
||||
return getBridgeLog(token, since)
|
||||
})
|
||||
@@ -1,6 +1,7 @@
|
||||
import { createError } from 'h3'
|
||||
import { BridgeToken } from '../../models/BridgeToken'
|
||||
import { getBridgeTokenFromHeader } from '../../utils/bridge'
|
||||
import { logBridgeEvent } from '../../utils/bridgeLog'
|
||||
import type { UserDocument } from '../../models/User'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
@@ -15,7 +16,7 @@ export default defineEventHandler(async (event) => {
|
||||
const document = await BridgeToken.findOne({ token }).populate('user', 'name email')
|
||||
|
||||
if (!document || !document.user) {
|
||||
return {
|
||||
const result = {
|
||||
token,
|
||||
connected: false,
|
||||
user: null,
|
||||
@@ -24,11 +25,21 @@ export default defineEventHandler(async (event) => {
|
||||
connectedAt: document?.connectedAt ? document.connectedAt.toISOString() : null,
|
||||
lastStatusAt: document?.lastStatusAt ? document.lastStatusAt.toISOString() : null,
|
||||
}
|
||||
|
||||
logBridgeEvent(token, {
|
||||
endpoint: '/api/bridge/me',
|
||||
method: 'GET',
|
||||
statusCode: 200,
|
||||
color: '#06b6d4',
|
||||
summary: 'Status check — not connected',
|
||||
})
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
const bridgeUser = document.user as UserDocument
|
||||
|
||||
return {
|
||||
const result = {
|
||||
token: document.token,
|
||||
connected: true,
|
||||
user: {
|
||||
@@ -41,4 +52,14 @@ export default defineEventHandler(async (event) => {
|
||||
connectedAt: document.connectedAt?.toISOString() ?? document.updatedAt.toISOString(),
|
||||
lastStatusAt: document.lastStatusAt ? document.lastStatusAt.toISOString() : null,
|
||||
}
|
||||
|
||||
logBridgeEvent(token, {
|
||||
endpoint: '/api/bridge/me',
|
||||
method: 'GET',
|
||||
statusCode: 200,
|
||||
color: '#06b6d4',
|
||||
summary: `Status check — connected as ${bridgeUser.name || bridgeUser.email}`,
|
||||
})
|
||||
|
||||
return result
|
||||
})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { createError, readBody } from 'h3'
|
||||
import { BridgeToken } from '../../models/BridgeToken'
|
||||
import { getBridgeTokenFromHeader } from '../../utils/bridge'
|
||||
import { logBridgeEvent } from '../../utils/bridgeLog'
|
||||
import type { UserDocument } from '../../models/User'
|
||||
|
||||
interface StatusBody {
|
||||
@@ -46,7 +47,7 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
const user = document.user as UserDocument | undefined
|
||||
|
||||
return {
|
||||
const result = {
|
||||
token: document.token,
|
||||
connected: Boolean(user),
|
||||
user: user
|
||||
@@ -61,4 +62,15 @@ export default defineEventHandler(async (event) => {
|
||||
connectedAt: document.connectedAt ? document.connectedAt.toISOString() : null,
|
||||
lastStatusAt: document.lastStatusAt ? document.lastStatusAt.toISOString() : null,
|
||||
}
|
||||
|
||||
logBridgeEvent(token, {
|
||||
endpoint: '/api/bridge/status',
|
||||
method: 'POST',
|
||||
statusCode: 200,
|
||||
color: '#eab308',
|
||||
summary: `sim=${String(body.simConnected)} flight=${String(body.flightActive)}`,
|
||||
data: body as Record<string, unknown>,
|
||||
})
|
||||
|
||||
return result
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user