PiiElider.smali
.class public Lcom/tencent/liteav/base/PiiElider;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static final APP_NAMESPACE:[Ljava/lang/String;
.field private static final CONSOLE_ELISION:Ljava/lang/String; = "[ELIDED:CONSOLE(0)] ELIDED CONSOLE MESSAGE"
.field private static final CONSOLE_MSG:Ljava/util/regex/Pattern;
.field private static final DOMAIN_NAME:Ljava/util/regex/Pattern;
.field private static final EMAIL_ELISION:Ljava/lang/String; = "XXX@EMAIL.ELIDED"
.field private static final GOOD_GTLD_CHAR:Ljava/lang/String; = "a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef"
.field private static final GOOD_IRI_CHAR:Ljava/lang/String; = "a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef"
.field private static final GTLD:Ljava/lang/String; = "[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}"
.field private static final HOST_NAME:Ljava/lang/String; = "([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}\\.)+[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}"
.field private static final IP_ADDRESS:Ljava/util/regex/Pattern;
.field private static final IRI:Ljava/lang/String; = "[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}"
.field private static final LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;
.field private static final MAC_ADDRESS:Ljava/util/regex/Pattern;
.field private static final MAC_ELISION:Ljava/lang/String; = "01:23:45:67:89:AB"
.field private static final SYSTEM_NAMESPACE:[Ljava/lang/String;
.field private static final URL_ELISION:Ljava/lang/String; = "HTTP://WEBADDRESS.ELIDED"
.field private static final WEB_URL:Ljava/util/regex/Pattern;
# direct methods
.method static constructor <clinit>()V
.registers 52
const-string v0, "((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9]))"
.line 25
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/tencent/liteav/base/PiiElider;->IP_ADDRESS:Ljava/util/regex/Pattern;
.line 38
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "(([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]([a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\-]{0,61}[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]){0,1}\\.)+[a-zA-Z\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]{2,63}|"
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v0, ")"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 39
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/tencent/liteav/base/PiiElider;->DOMAIN_NAME:Ljava/util/regex/Pattern;
const-string v1, "\\sat\\sorg\\.chromium\\.[^ ]+."
.line 42
invoke-static {v1}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v1
sput-object v1, Lcom/tencent/liteav/base/PiiElider;->LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;
.line 44
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "(?:\\b|^)((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?(?:"
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v0, ")(?:\\:\\d{1,5})?)(\\/(?:(?:[a-zA-Z0-9\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef\\;\\/\\?\\:\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?(?:\\b|$)"
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 45
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/tencent/liteav/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;
const-string v0, "([0-9a-fA-F]{2}[-:]+){5}[0-9a-fA-F]{2}"
.line 59
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/tencent/liteav/base/PiiElider;->MAC_ADDRESS:Ljava/util/regex/Pattern;
const-string v0, "\\[\\w*:CONSOLE.*\\].*"
.line 61
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/tencent/liteav/base/PiiElider;->CONSOLE_MSG:Ljava/util/regex/Pattern;
const-string v0, "org.chromium."
const-string v1, "com.google."
.line 63
filled-new-array {v0, v1}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/tencent/liteav/base/PiiElider;->APP_NAMESPACE:[Ljava/lang/String;
const-string v1, "android.accessibilityservice"
const-string v2, "android.accounts"
const-string v3, "android.animation"
const-string v4, "android.annotation"
const-string v5, "android.app"
const-string v6, "android.appwidget"
const-string v7, "android.bluetooth"
const-string v8, "android.content"
const-string v9, "android.database"
const-string v10, "android.databinding"
const-string v11, "android.drm"
const-string v12, "android.gesture"
const-string v13, "android.graphics"
const-string v14, "android.hardware"
const-string v15, "android.inputmethodservice"
const-string v16, "android.location"
const-string v17, "android.media"
const-string v18, "android.mtp"
const-string v19, "android.net"
const-string v20, "android.nfc"
const-string v21, "android.opengl"
const-string v22, "android.os"
const-string v23, "android.preference"
const-string v24, "android.print"
const-string v25, "android.printservice"
const-string v26, "android.provider"
const-string v27, "android.renderscript"
const-string v28, "android.sax"
const-string v29, "android.security"
const-string v30, "android.service"
const-string v31, "android.speech"
const-string v32, "android.support"
const-string v33, "android.system"
const-string v34, "android.telecom"
const-string v35, "android.telephony"
const-string v36, "android.test"
const-string v37, "android.text"
const-string v38, "android.transition"
const-string v39, "android.util"
const-string v40, "android.view"
const-string v41, "android.webkit"
const-string v42, "android.widget"
const-string v43, "com.android."
const-string v44, "dalvik."
const-string v45, "java."
const-string v46, "javax."
const-string v47, "org.apache."
const-string v48, "org.json."
const-string v49, "org.w3c.dom."
const-string v50, "org.xml."
const-string v51, "org.xmlpull."
.line 65
filled-new-array/range {v1 .. v51}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/tencent/liteav/base/PiiElider;->SYSTEM_NAMESPACE:[Ljava/lang/String;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 18
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static elideConsole(Ljava/lang/String;)Ljava/lang/String;
.registers 2
.line 154
sget-object v0, Lcom/tencent/liteav/base/PiiElider;->CONSOLE_MSG:Ljava/util/regex/Pattern;
invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object p0
const-string v0, "[ELIDED:CONSOLE(0)] ELIDED CONSOLE MESSAGE"
invoke-virtual {p0, v0}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static elideEmail(Ljava/lang/String;)Ljava/lang/String;
.registers 2
.line 87
sget-object v0, Landroid/util/Patterns;->EMAIL_ADDRESS:Ljava/util/regex/Pattern;
invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object p0
const-string v0, "XXX@EMAIL.ELIDED"
invoke-virtual {p0, v0}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static elideMac(Ljava/lang/String;)Ljava/lang/String;
.registers 2
.line 143
sget-object v0, Lcom/tencent/liteav/base/PiiElider;->MAC_ADDRESS:Ljava/util/regex/Pattern;
invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object p0
const-string v0, "01:23:45:67:89:AB"
invoke-virtual {p0, v0}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static elideUrl(Ljava/lang/String;)Ljava/lang/String;
.registers 6
.line 99
sget-object v0, Lcom/tencent/liteav/base/PiiElider;->LIKELY_EXCEPTION_LOG:Ljava/util/regex/Pattern;
invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object v0
invoke-virtual {v0}, Ljava/util/regex/Matcher;->find()Z
move-result v0
if-eqz v0, :cond_d
return-object p0
.line 100
:cond_d
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 101
sget-object p0, Lcom/tencent/liteav/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;
invoke-virtual {p0, v0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object p0
const/4 v1, 0x0
.line 103
:goto_19
invoke-virtual {p0, v1}, Ljava/util/regex/Matcher;->find(I)Z
move-result v1
if-eqz v1, :cond_47
.line 104
invoke-virtual {p0}, Ljava/util/regex/Matcher;->start()I
move-result v1
.line 105
invoke-virtual {p0}, Ljava/util/regex/Matcher;->end()I
move-result v2
.line 106
invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->substring(II)Ljava/lang/String;
move-result-object v3
.line 107
invoke-static {v3}, Lcom/tencent/liteav/base/PiiElider;->likelyToBeAppNamespace(Ljava/lang/String;)Z
move-result v4
if-nez v4, :cond_45
invoke-static {v3}, Lcom/tencent/liteav/base/PiiElider;->likelyToBeSystemNamespace(Ljava/lang/String;)Z
move-result v3
if-nez v3, :cond_45
const-string p0, "HTTP://WEBADDRESS.ELIDED"
.line 108
invoke-virtual {v0, v1, v2, p0}, Ljava/lang/StringBuilder;->replace(IILjava/lang/String;)Ljava/lang/StringBuilder;
add-int/lit8 v1, v1, 0x18
.line 110
sget-object p0, Lcom/tencent/liteav/base/PiiElider;->WEB_URL:Ljava/util/regex/Pattern;
invoke-virtual {p0, v0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object p0
goto :goto_19
:cond_45
move v1, v2
goto :goto_19
.line 114
:cond_47
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method private static likelyToBeAppNamespace(Ljava/lang/String;)Z
.registers 6
.line 118
sget-object v0, Lcom/tencent/liteav/base/PiiElider;->APP_NAMESPACE:[Ljava/lang/String;
array-length v1, v0
const/4 v2, 0x0
move v3, v2
:goto_5
if-ge v3, v1, :cond_14
aget-object v4, v0, v3
.line 119
invoke-virtual {p0, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_11
const/4 p0, 0x1
return p0
:cond_11
add-int/lit8 v3, v3, 0x1
goto :goto_5
:cond_14
return v2
.end method
.method private static likelyToBeSystemNamespace(Ljava/lang/String;)Z
.registers 6
.line 127
sget-object v0, Lcom/tencent/liteav/base/PiiElider;->SYSTEM_NAMESPACE:[Ljava/lang/String;
array-length v1, v0
const/4 v2, 0x0
move v3, v2
:goto_5
if-ge v3, v1, :cond_14
aget-object v4, v0, v3
.line 128
invoke-virtual {p0, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_11
const/4 p0, 0x1
return p0
:cond_11
add-int/lit8 v3, v3, 0x1
goto :goto_5
:cond_14
return v2
.end method
.method public static sanitizeStacktrace(Ljava/lang/String;)Ljava/lang/String;
.registers 4
const-string v0, "\\n"
.line 166
invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object p0
const/4 v0, 0x0
.line 168
aget-object v1, p0, v0
invoke-static {v1}, Lcom/tencent/liteav/base/PiiElider;->elideUrl(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
aput-object v1, p0, v0
const/4 v0, 0x1
.line 169
:goto_10
array-length v1, p0
if-ge v0, v1, :cond_28
.line 171
aget-object v1, p0, v0
const-string v2, "Caused by:"
invoke-virtual {v1, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_25
.line 172
aget-object v1, p0, v0
invoke-static {v1}, Lcom/tencent/liteav/base/PiiElider;->elideUrl(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
aput-object v1, p0, v0
:cond_25
add-int/lit8 v0, v0, 0x1
goto :goto_10
:cond_28
const-string v0, "\n"
.line 175
invoke-static {v0, p0}, Landroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method