fix #2350 add fe:maskEmail

This commit is contained in:
Shinsuke Sugaya 2019-12-28 19:12:25 +09:00
parent 508518cdf7
commit c3b1035eaf
3 changed files with 45 additions and 0 deletions

View file

@ -74,6 +74,9 @@ public class FessFunctions {
private static final String PDF_DATE = "pdf_date";
private static final Pattern EMAIL_ADDRESS_PATTERN = Pattern.compile("[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}",
Pattern.CASE_INSENSITIVE);
private static LoadingCache<String, Long> resourceHashCache = CacheBuilder.newBuilder().maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES).build(new CacheLoader<String, Long>() {
@Override
@ -419,4 +422,11 @@ public class FessFunctions {
.map(user -> user.hasRoles(roles) || user.hasRoles(ComponentUtil.getFessConfig().getAuthenticationAdminRolesAsArray()))
.orElse(false);
}
public static String maskEmail(final String value) {
if (value == null) {
return StringUtil.EMPTY;
}
return EMAIL_ADDRESS_PATTERN.matcher(value).replaceAll("******@****.***");
}
}

View file

@ -258,6 +258,14 @@
<example>${fe:formatCode("L", "prettyprint", doc.mimetype, doc.content_description)}</example>
</function>
<function>
<description>Mask e-mail address.</description>
<name>maskEmail</name>
<function-class>org.codelibs.fess.taglib.FessFunctions</function-class>
<function-signature>java.lang.String maskEmail(java.lang.String)</function-signature>
<example>${fe:maskEmail(doc.content_description)}</example>
</function>
<function>
<description>Get a message from properties files.</description>
<name>message</name>

View file

@ -115,6 +115,33 @@ public class FessFunctionsTest extends UnitFessTestCase {
code = "aaa\nL10:\nL11:ccc";
value = FessFunctions.formatCode("L", "prettyprint", "text/plain", code);
assertEquals("<pre class=\"prettyprint linenums:10\">\nccc</pre>", value);
}
public void test_maskEmail() {
String value;
value = FessFunctions.maskEmail(null);
assertEquals("", value);
value = FessFunctions.maskEmail("");
assertEquals("", value);
value = FessFunctions.maskEmail("aaa bbb ccc");
assertEquals("aaa bbb ccc", value);
value = FessFunctions.maskEmail("aaa@bbb.ccc");
assertEquals("******@****.***", value);
value = FessFunctions.maskEmail("111.aaa@bbb.ccc");
assertEquals("******@****.***", value);
value = FessFunctions.maskEmail("111 aaa+@bbb.ccc 222");
assertEquals("111 ******@****.*** 222", value);
value = FessFunctions.maskEmail("あaaa@bbb.ccc");
assertEquals("あ******@****.***", value);
value = FessFunctions.maskEmail("<aaa@bbb.ccc>");
assertEquals("<******@****.***>", value);
}
}