Skip to content

Commit a8ea721

Browse files
committed
initial commit
1 parent 0f39d7a commit a8ea721

4 files changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.tron.common.logsfilter;
2+
3+
import ch.qos.logback.classic.pattern.ClassicConverter;
4+
import ch.qos.logback.classic.spi.ILoggingEvent;
5+
import com.google.common.cache.Cache;
6+
import com.google.common.cache.CacheBuilder;
7+
import java.util.regex.Matcher;
8+
import java.util.regex.Pattern;
9+
import lombok.extern.slf4j.Slf4j;
10+
import org.tron.core.config.args.Args;
11+
12+
@Slf4j(topic = "Parser")
13+
public class DesensitizedConverter extends ClassicConverter {
14+
15+
private static final int SENSITIVE_WORD_SIZE = 1_000;
16+
17+
private static final Pattern pattern = Pattern.compile(
18+
"/(((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(25[0-5]|2[0-4]\\d|((1\\d{2})|"
19+
+ "([1-9]?\\d))))");
20+
21+
private static final Cache<String, String> sensitiveCache = CacheBuilder.newBuilder()
22+
.maximumSize(SENSITIVE_WORD_SIZE)
23+
.recordStats().build();
24+
25+
public static void addSensitive(String key, String value) {
26+
sensitiveCache.put(key, value);
27+
}
28+
29+
public String desensitization(String content) {
30+
if (sensitiveCache.size() > 0) {
31+
Matcher matcher = pattern.matcher(content);
32+
while (matcher.find()) {
33+
String key = matcher.group();
34+
String value = sensitiveCache.getIfPresent(key);
35+
if (value != null) {
36+
content = content.replaceAll(key, value);
37+
} else {
38+
content = content.replaceAll(key, "unknown");
39+
}
40+
}
41+
}
42+
return content;
43+
}
44+
45+
@Override
46+
public String convert(ILoggingEvent iLoggingEvent) {
47+
String source = iLoggingEvent.getFormattedMessage();
48+
return Args.getInstance().isFastForward() ? desensitization(source) : source;
49+
}
50+
}

framework/src/main/java/org/tron/core/net/service/relay/RelayService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@
1818
import org.tron.common.crypto.SignInterface;
1919
import org.tron.common.crypto.SignUtils;
2020
import org.tron.common.es.ExecutorServiceManager;
21+
import org.tron.common.logsfilter.DesensitizedConverter;
2122
import org.tron.common.parameter.CommonParameter;
2223
import org.tron.common.utils.ByteArray;
24+
import org.tron.common.utils.ByteUtil;
25+
import org.tron.common.utils.DecodeUtil;
2326
import org.tron.common.utils.Sha256Hash;
2427
import org.tron.core.ChainBaseManager;
2528
import org.tron.core.capsule.TransactionCapsule;
@@ -156,6 +159,10 @@ public boolean checkHelloMessage(HelloMessage message, Channel channel) {
156159
}
157160
if (flag) {
158161
TronNetService.getP2pConfig().getTrustNodes().add(channel.getInetAddress());
162+
byte[] addressByte = ByteUtil.merge(new byte[] {DecodeUtil.addressPreFixByte},
163+
msg.getAddress().toByteArray());
164+
DesensitizedConverter.addSensitive(channel.getInetAddress().toString(),
165+
ByteArray.toHexString(addressByte));
159166
}
160167
return flag;
161168
} catch (Exception e) {

framework/src/main/resources/logback.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
<!-- Be sure to flush latest logs on exit -->
66
<shutdownHook class="org.tron.core.config.TronLogShutdownHook"/>
7+
<conversionRule conversionWord="m"
8+
converterClass="org.tron.common.logsfilter.DesensitizedConverter"/>
79

810
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
911
<encoder>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.tron.common.logsfilter;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
public class DesensitizedConverterTest {
7+
8+
@Test
9+
public void testReplace() {
10+
DesensitizedConverter converter = new DesensitizedConverter();
11+
DesensitizedConverter.addSensitive("/192.168.1.10", "address1");
12+
DesensitizedConverter.addSensitive("/197.168.1.10", "address2");
13+
14+
String logStr1 = "This is test log /192.168.1.10:100, /197.168.1.10:200, /197.168.1.10:100";
15+
Assert.assertEquals("This is test log address1:100, address2:200, address2:100",
16+
converter.desensitization(logStr1));
17+
18+
String logStr2 = "This is test log /192.168.1.100:100, /197.168.1.10:200, /197.168.1.10:100";
19+
Assert.assertEquals("This is test log unknown:100, address2:200, address2:100",
20+
converter.desensitization(logStr2));
21+
}
22+
}

0 commit comments

Comments
 (0)