Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,20 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
if (request instanceof HttpServletRequest) {
String contextPath = ((HttpServletRequest) request).getContextPath();
String endpoint = contextPath + ((HttpServletRequest) request).getServletPath();
HttpServletResponse resp = (HttpServletResponse) response;

if (isDisabled(endpoint)) {
HttpServletResponse resp = (HttpServletResponse) response;
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
resp.setContentType("application/json; charset=utf-8");
JSONObject jsonObject = new JSONObject();
jsonObject.put("Error", "this API is unavailable due to config");
resp.getWriter().println(jsonObject.toJSONString());
return;
}

CharResponseWrapper responseWrapper = new CharResponseWrapper(resp);
chain.doFilter(request, responseWrapper);

} else {
chain.doFilter(request, response);
}

chain.doFilter(request, response);

} catch (Exception e) {
logger.error("http api access filter exception: {}", e.getMessage());
}
Expand Down Expand Up @@ -74,6 +70,3 @@ private boolean isDisabled(String endpoint) {
}

}



Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import lombok.extern.slf4j.Slf4j;
import org.eclipse.jetty.http.BadMessageException;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.server.Request;
import org.tron.common.prometheus.MetricKeys;
import org.tron.common.prometheus.MetricLabels;
import org.tron.common.prometheus.Metrics;
Expand Down Expand Up @@ -37,17 +38,15 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
}
String contextPath = ((HttpServletRequest) request).getContextPath();
endpoint = contextPath + ((HttpServletRequest) request).getServletPath();
CharResponseWrapper responseWrapper = new CharResponseWrapper(
(HttpServletResponse) response);
chain.doFilter(request, responseWrapper);
chain.doFilter(request, response);
HttpServletResponse resp = (HttpServletResponse) response;
int size = responseWrapper.getByteSize();
long size = getContentCount(request);
MetricsUtil.meterMark(MetricsKey.NET_API_OUT_TRAFFIC, size);
MetricsUtil.meterMark(MetricsKey.NET_API_QPS);
if (resp.getStatus() >= HTTP_BAD_REQUEST && resp.getStatus() <= HTTP_NOT_ACCEPTABLE) {
MetricsUtil.meterMark(MetricsKey.NET_API_FAIL_QPS);
Metrics.histogramObserve(MetricKeys.Histogram.HTTP_BYTES,
size, MetricLabels.UNDEFINED, String.valueOf(responseWrapper.getStatus()));
size, MetricLabels.UNDEFINED, String.valueOf(resp.getStatus()));
return;
}
if (resp.getStatus() == HTTP_SUCCESS) {
Expand All @@ -58,7 +57,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
}
MetricsUtil.meterMark(MetricsKey.NET_API_DETAIL_OUT_TRAFFIC + endpoint, size);
Metrics.histogramObserve(MetricKeys.Histogram.HTTP_BYTES,
size, endpoint, String.valueOf(responseWrapper.getStatus()));
size, endpoint, String.valueOf(resp.getStatus()));
} catch (Exception e) {
String key = MetricsKey.NET_API_DETAIL_QPS + endpoint;
if (MetricsUtil.getMeters(MetricsKey.NET_API_DETAIL_QPS).containsKey(key)) {
Expand All @@ -74,9 +73,12 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
}
}

private long getContentCount(ServletRequest request) {
Request baseRequest = Request.getBaseRequest(request);
return baseRequest == null ? 0L : baseRequest.getResponse().getContentCount();
}

@Override
public void destroy() {
}
}


This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
import java.io.IOException;
import java.math.BigInteger;
import java.nio.CharBuffer;
import java.nio.charset.StandardCharsets;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.Iterator;
Expand Down Expand Up @@ -929,7 +930,8 @@ private static String escapeNameStringText(String input) {
* <ul> <li>The following characters are escaped by prefixing them with a '\' :
* \b,\f,\n,\r,\t,\,"</li> <li>Other control characters in the range 0x0000-0x001F are escaped
* using the \\uXXXX notation</li> <li>UTF-16 surrogate pairs are encoded using the \\uXXXX\\uXXXX
* notation</li> <li>any other character is printed as-is</li> </ul>
* notation; isolated low surrogates are replaced with '?' as in the legacy UTF-8 writer</li>
* <li>any other character is printed as-is</li> </ul>
*/
static String escapeText(String input) {
StringBuilder builder = new StringBuilder(input.length());
Expand Down Expand Up @@ -961,6 +963,8 @@ static String escapeText(String input) {
// Check for other control characters
if (c >= 0x0000 && c <= 0x001F) {
appendEscapedUnicode(builder, c);
} else if (Character.isLowSurrogate(c)) {
builder.append(replaceMalformedSurrogates(String.valueOf(c)));
} else if (Character.isHighSurrogate(c)) {
// Encode the surrogate pair using 2 six-character sequence (\\uXXXX\\uXXXX)
appendEscapedUnicode(builder, c);
Expand Down Expand Up @@ -1046,7 +1050,8 @@ static String unescapeText(String input) throws InvalidEscapeSequence {
}
break;
default:
throw new InvalidEscapeSequence("Invalid escape sequence: '\\" + c + "'");
throw new InvalidEscapeSequence(
replaceMalformedSurrogates("Invalid escape sequence: '\\" + c + "'"));
}
} else {
throw new InvalidEscapeSequence("Invalid escape sequence: '\\' at end of string.");
Expand All @@ -1059,6 +1064,14 @@ static String unescapeText(String input) throws InvalidEscapeSequence {
return builder.toString();
}

private static String replaceMalformedSurrogates(String value) {
if (value == null) {
return null;
}
// Match the legacy UTF-8 OutputStreamWriter's replacement of malformed surrogates.
return new String(value.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
}

/**
* Is this an octal digit.
*/
Expand Down Expand Up @@ -1719,7 +1732,8 @@ public ByteString consumeByteString(final String fieldName, boolean selfType)
*/
public ParseException parseException(String description) {
// Note: People generally prefer one-based line and column numbers.
return new ParseException((line + 1) + ":" + (column + 1) + ": " + description);
return new ParseException((line + 1) + ":" + (column + 1) + ": "
+ replaceMalformedSurrogates(description));
}

/**
Expand All @@ -1729,7 +1743,7 @@ public ParseException parseException(String description) {
public ParseException parseExceptionPreviousToken(String description) {
// Note: People generally prefer one-based line and column numbers.
return new ParseException((previousLine + 1) + ":" + (previousColumn + 1) + ": "
+ description);
+ replaceMalformedSurrogates(description));
}

/**
Expand Down
Loading
Loading