wallet logger fixes (#2296)
* Fix createdAt in logger context * Remove duplicate WalletLogEntry field resolver * Include invoice in wallet logger context if invoice owned by user * Also only include withdrawal in context if withdrawal owned by user
This commit is contained in:
parent
d4efacadc0
commit
ba370eeda6
@ -5,7 +5,7 @@ import {
|
|||||||
import crypto, { timingSafeEqual } from 'crypto'
|
import crypto, { timingSafeEqual } from 'crypto'
|
||||||
import { decodeCursor, LIMIT, nextCursorEncoded } from '@/lib/cursor'
|
import { decodeCursor, LIMIT, nextCursorEncoded } from '@/lib/cursor'
|
||||||
import { SELECT, itemQueryWithMeta } from './item'
|
import { SELECT, itemQueryWithMeta } from './item'
|
||||||
import { formatMsats, msatsToSats, msatsToSatsDecimal } from '@/lib/format'
|
import { msatsToSats, msatsToSatsDecimal } from '@/lib/format'
|
||||||
import {
|
import {
|
||||||
USER_ID, INVOICE_RETENTION_DAYS,
|
USER_ID, INVOICE_RETENTION_DAYS,
|
||||||
WALLET_RETRY_AFTER_MS,
|
WALLET_RETRY_AFTER_MS,
|
||||||
@ -22,7 +22,6 @@ import { GqlAuthenticationError, GqlAuthorizationError, GqlInputError } from '@/
|
|||||||
import { getNodeSockets } from '../lnd'
|
import { getNodeSockets } from '../lnd'
|
||||||
import performPaidAction from '../paidAction'
|
import performPaidAction from '../paidAction'
|
||||||
import performPayingAction from '../payingAction'
|
import performPayingAction from '../payingAction'
|
||||||
import { logContextFromBolt11 } from '@/wallets/server'
|
|
||||||
|
|
||||||
export async function getInvoice (parent, { id }, { me, models, lnd }) {
|
export async function getInvoice (parent, { id }, { me, models, lnd }) {
|
||||||
const inv = await models.invoice.findUnique({
|
const inv = await models.invoice.findUnique({
|
||||||
@ -523,25 +522,6 @@ const resolvers = {
|
|||||||
return item
|
return item
|
||||||
},
|
},
|
||||||
sats: fact => msatsToSatsDecimal(fact.msats)
|
sats: fact => msatsToSatsDecimal(fact.msats)
|
||||||
},
|
|
||||||
|
|
||||||
WalletLogEntry: {
|
|
||||||
context: async ({ level, context, invoice, withdrawal }, args, { models }) => {
|
|
||||||
const isError = ['error', 'warn'].includes(level.toLowerCase())
|
|
||||||
|
|
||||||
if (withdrawal) {
|
|
||||||
return {
|
|
||||||
...await logContextFromBolt11(withdrawal.bolt11),
|
|
||||||
...(withdrawal.preimage ? { preimage: withdrawal.preimage } : {}),
|
|
||||||
...(isError ? { max_fee: formatMsats(withdrawal.msatsFeePaying) } : {})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// XXX never return invoice as context because it might leak sensitive sender details
|
|
||||||
// if (invoice) { ... }
|
|
||||||
|
|
||||||
return context
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ export function walletLogger ({
|
|||||||
// since logs are created asynchronously and thus might get inserted out of order
|
// since logs are created asynchronously and thus might get inserted out of order
|
||||||
// however, millisecond precision is not always enough ...
|
// however, millisecond precision is not always enough ...
|
||||||
const createdAt = context?.createdAt ?? new Date()
|
const createdAt = context?.createdAt ?? new Date()
|
||||||
|
delete context?.createdAt
|
||||||
|
|
||||||
const updateStatus = ['OK', 'ERROR', 'WARNING'].includes(level) && (invoiceId || withdrawalId || context.bolt11 || context?.updateStatus)
|
const updateStatus = ['OK', 'ERROR', 'WARNING'].includes(level) && (invoiceId || withdrawalId || context.bolt11 || context?.updateStatus)
|
||||||
delete context?.updateStatus
|
delete context?.updateStatus
|
||||||
|
@ -16,11 +16,10 @@ const WalletProtocolConfig = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const WalletLogEntry = {
|
const WalletLogEntry = {
|
||||||
context: async ({ level, context, withdrawal }) => {
|
context: async ({ level, context, invoice, withdrawal }, args, { me }) => {
|
||||||
const isError = ['error', 'warn'].includes(level.toLowerCase())
|
const isError = ['error', 'warn'].includes(level.toLowerCase())
|
||||||
|
|
||||||
// never return invoice as context because it might leak sensitive sender details
|
if (withdrawal && me?.id === withdrawal.userId) {
|
||||||
if (withdrawal) {
|
|
||||||
return {
|
return {
|
||||||
...await logContextFromBolt11(withdrawal.bolt11),
|
...await logContextFromBolt11(withdrawal.bolt11),
|
||||||
...(withdrawal.preimage ? { preimage: withdrawal.preimage } : {}),
|
...(withdrawal.preimage ? { preimage: withdrawal.preimage } : {}),
|
||||||
@ -28,6 +27,10 @@ const WalletLogEntry = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (invoice && me?.id === invoice.userId) {
|
||||||
|
return await logContextFromBolt11(invoice.bolt11)
|
||||||
|
}
|
||||||
|
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user