mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-13 20:02:57 +08:00
Adapt desensitize in StructureToStringTransformer
This commit is contained in:
parent
796df9b79f
commit
8b6b06ea3b
@ -11,6 +11,7 @@ package net.mamoe.mirai.internal.pipeline
|
|||||||
|
|
||||||
import net.mamoe.mirai.internal.message.contextualBugReportException
|
import net.mamoe.mirai.internal.message.contextualBugReportException
|
||||||
import net.mamoe.mirai.internal.network.components.NoticeProcessor
|
import net.mamoe.mirai.internal.network.components.NoticeProcessor
|
||||||
|
import net.mamoe.mirai.internal.utils.structureToStringAndDesensitizeIfAvailable
|
||||||
import net.mamoe.mirai.utils.*
|
import net.mamoe.mirai.utils.*
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -178,7 +179,7 @@ protected constructor(
|
|||||||
attributes: TypeSafeMap,
|
attributes: TypeSafeMap,
|
||||||
) : AbstractProcessorPipelineContext<D, R>(attributes, traceLogging) {
|
) : AbstractProcessorPipelineContext<D, R>(attributes, traceLogging) {
|
||||||
override suspend fun processAlso(data: D, attributes: TypeSafeMap): Collection<R> {
|
override suspend fun processAlso(data: D, attributes: TypeSafeMap): Collection<R> {
|
||||||
traceLogging.info { "processAlso: data=$data" }
|
traceLogging.info { "processAlso: data=${data.structureToStringAndDesensitizeIfAvailable()}" }
|
||||||
return process(data, this.attributes + attributes).also {
|
return process(data, this.attributes + attributes).also {
|
||||||
this.collected.data += it
|
this.collected.data += it
|
||||||
traceLogging.info { "processAlso: result=$it" }
|
traceLogging.info { "processAlso: result=$it" }
|
||||||
@ -195,7 +196,7 @@ protected constructor(
|
|||||||
): Unit = throw e
|
): Unit = throw e
|
||||||
|
|
||||||
override suspend fun process(data: D, attributes: TypeSafeMap): Collection<R> {
|
override suspend fun process(data: D, attributes: TypeSafeMap): Collection<R> {
|
||||||
traceLogging.info { "process: data=$data" }
|
traceLogging.info { "process: data=${data.structureToStringAndDesensitizeIfAvailable()}" }
|
||||||
val context = createContext(attributes)
|
val context = createContext(attributes)
|
||||||
|
|
||||||
val diff = if (traceLogging.isEnabled) CollectionDiff<R>() else null
|
val diff = if (traceLogging.isEnabled) CollectionDiff<R>() else null
|
||||||
|
@ -26,6 +26,16 @@ internal fun Any?.structureToStringIfAvailable(): String? {
|
|||||||
} else null
|
} else null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal fun Any?.structureToStringAndDesensitize(): String =
|
||||||
|
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||||
|
|
||||||
|
internal fun Any?.structureToStringAndDesensitizeIfAvailable(): String? {
|
||||||
|
return if (StructureToStringTransformer.available) {
|
||||||
|
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||||
|
} else null
|
||||||
|
}
|
||||||
|
|
||||||
private val SoutvLogger: MiraiLogger by lazy {
|
private val SoutvLogger: MiraiLogger by lazy {
|
||||||
MiraiLogger.Factory.create(
|
MiraiLogger.Factory.create(
|
||||||
StructureToStringTransformer::class,
|
StructureToStringTransformer::class,
|
||||||
@ -37,12 +47,15 @@ internal fun Any?.printStructure(name: String = "unnamed") {
|
|||||||
return SoutvLogger.debug { "$name = ${this.structureToString()}" }
|
return SoutvLogger.debug { "$name = ${this.structureToString()}" }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun interface StructureToStringTransformer {
|
internal interface StructureToStringTransformer {
|
||||||
fun transform(any: Any?): String
|
fun transform(any: Any?): String
|
||||||
|
|
||||||
|
fun transformAndDesensitize(any: Any?): String
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private class ObjectToStringStructureToStringTransformer : StructureToStringTransformer {
|
private class ObjectToStringStructureToStringTransformer : StructureToStringTransformer {
|
||||||
override fun transform(any: Any?): String = any.toString()
|
override fun transform(any: Any?): String = any.toString()
|
||||||
|
override fun transformAndDesensitize(any: Any?): String = any.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
val instance by lazy {
|
val instance by lazy {
|
||||||
|
@ -165,7 +165,7 @@ private val format = Yaml {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private class DesensitizationVisitor(
|
internal class DesensitizationVisitor(
|
||||||
private val desensitizer: Desensitizer,
|
private val desensitizer: Desensitizer,
|
||||||
) : ValueDescTransformerNotNull<Nothing?>() {
|
) : ValueDescTransformerNotNull<Nothing?>() {
|
||||||
override fun visitValue(desc: ValueDesc, data: Nothing?): ValueDesc {
|
override fun visitValue(desc: ValueDesc, data: Nothing?): ValueDesc {
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
package net.mamoe.mirai.internal.utils
|
package net.mamoe.mirai.internal.utils
|
||||||
|
|
||||||
import kotlinx.serialization.Transient
|
import kotlinx.serialization.Transient
|
||||||
|
import net.mamoe.mirai.internal.testFramework.desensitizer.Desensitizer
|
||||||
import net.mamoe.mirai.utils.toUHexString
|
import net.mamoe.mirai.utils.toUHexString
|
||||||
import java.lang.reflect.Modifier
|
import java.lang.reflect.Modifier
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
@ -20,6 +21,7 @@ import kotlin.reflect.jvm.javaField
|
|||||||
|
|
||||||
internal class StructureToStringTransformerLegacy : StructureToStringTransformer {
|
internal class StructureToStringTransformerLegacy : StructureToStringTransformer {
|
||||||
override fun transform(any: Any?): String = any._miraiContentToString()
|
override fun transform(any: Any?): String = any._miraiContentToString()
|
||||||
|
override fun transformAndDesensitize(any: Any?): String = Desensitizer.desensitize(any._miraiContentToString())
|
||||||
|
|
||||||
private val indent: String = " ".repeat(4)
|
private val indent: String = " ".repeat(4)
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@ import net.mamoe.mirai.internal.testFramework.codegen.descriptors.transform
|
|||||||
import net.mamoe.mirai.internal.testFramework.codegen.removeDefaultValues
|
import net.mamoe.mirai.internal.testFramework.codegen.removeDefaultValues
|
||||||
import net.mamoe.mirai.internal.testFramework.codegen.visitors.OptimizeByteArrayAsHexStringTransformer
|
import net.mamoe.mirai.internal.testFramework.codegen.visitors.OptimizeByteArrayAsHexStringTransformer
|
||||||
import net.mamoe.mirai.internal.testFramework.codegen.visitors.renderToString
|
import net.mamoe.mirai.internal.testFramework.codegen.visitors.renderToString
|
||||||
|
import net.mamoe.mirai.internal.testFramework.desensitizer.DesensitizationVisitor
|
||||||
|
import net.mamoe.mirai.internal.testFramework.desensitizer.Desensitizer
|
||||||
|
|
||||||
internal class StructureToStringTransformerNew : StructureToStringTransformer {
|
internal class StructureToStringTransformerNew : StructureToStringTransformer {
|
||||||
private val legacy = StructureToStringTransformerLegacy()
|
private val legacy = StructureToStringTransformerLegacy()
|
||||||
@ -26,4 +28,15 @@ internal class StructureToStringTransformerNew : StructureToStringTransformer {
|
|||||||
.removeDefaultValues()
|
.removeDefaultValues()
|
||||||
.renderToString()
|
.renderToString()
|
||||||
}.getOrNull() ?: legacy.transform(any)
|
}.getOrNull() ?: legacy.transform(any)
|
||||||
|
|
||||||
|
override fun transformAndDesensitize(any: Any?): String {
|
||||||
|
val desensitizer = Desensitizer.local
|
||||||
|
return kotlin.runCatching {
|
||||||
|
ValueDescAnalyzer.analyze(any)
|
||||||
|
.transform(OptimizeByteArrayAsHexStringTransformer())
|
||||||
|
.removeDefaultValues()
|
||||||
|
.transform(DesensitizationVisitor(desensitizer))
|
||||||
|
.renderToString()
|
||||||
|
}.getOrNull() ?: legacy.transform(any)
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user