Merge branch 'develop' into feature_enhance_interface
This commit is contained in:
commit
1ecd5f385c
@ -20,7 +20,9 @@ import com.alibaba.nacos.api.exception.NacosException;
|
||||
import com.alibaba.nacos.client.config.utils.IOUtils;
|
||||
import com.alibaba.nacos.client.config.utils.MD5;
|
||||
import com.alibaba.nacos.client.utils.ParamUtil;
|
||||
import com.alibaba.nacos.common.constant.HttpHeaderConsts;
|
||||
import com.alibaba.nacos.common.util.UuidUtils;
|
||||
import com.alibaba.nacos.common.util.VersionUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
@ -201,7 +203,7 @@ public class HttpSimpleClient {
|
||||
conn.addRequestProperty(iter.next(), iter.next());
|
||||
}
|
||||
}
|
||||
conn.addRequestProperty("Client-Version", ParamUtil.getClientVersion());
|
||||
conn.addRequestProperty(HttpHeaderConsts.CLIENT_VERSION_HEADER, VersionUtils.VERSION);
|
||||
conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + encoding);
|
||||
|
||||
String ts = String.valueOf(System.currentTimeMillis());
|
||||
|
@ -56,7 +56,13 @@ public class BeatReactor {
|
||||
|
||||
public void addBeatInfo(String serviceName, BeatInfo beatInfo) {
|
||||
NAMING_LOGGER.info("[BEAT] adding beat: {} to beat map.", beatInfo);
|
||||
dom2Beat.put(buildKey(serviceName, beatInfo.getIp(), beatInfo.getPort()), beatInfo);
|
||||
String key = buildKey(serviceName, beatInfo.getIp(), beatInfo.getPort());
|
||||
BeatInfo existBeat = null;
|
||||
//fix #1733
|
||||
if ((existBeat = dom2Beat.remove(key)) != null) {
|
||||
existBeat.setStopped(true);
|
||||
}
|
||||
dom2Beat.put(key, beatInfo);
|
||||
executorService.schedule(new BeatTask(beatInfo), beatInfo.getPeriod(), TimeUnit.MILLISECONDS);
|
||||
MetricsMonitor.getDom2BeatSizeMonitor().set(dom2Beat.size());
|
||||
}
|
||||
|
@ -35,8 +35,10 @@ import com.alibaba.nacos.client.naming.utils.*;
|
||||
import com.alibaba.nacos.client.utils.AppNameUtils;
|
||||
import com.alibaba.nacos.client.utils.StringUtils;
|
||||
import com.alibaba.nacos.client.utils.TemplateUtils;
|
||||
import com.alibaba.nacos.common.constant.HttpHeaderConsts;
|
||||
import com.alibaba.nacos.common.util.HttpMethod;
|
||||
import com.alibaba.nacos.common.util.UuidUtils;
|
||||
import com.alibaba.nacos.common.util.VersionUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
@ -499,8 +501,9 @@ public class NamingProxy {
|
||||
}
|
||||
|
||||
public List<String> builderHeaders() {
|
||||
List<String> headers = Arrays.asList("Client-Version", UtilAndComs.VERSION,
|
||||
"User-Agent", UtilAndComs.VERSION,
|
||||
List<String> headers = Arrays.asList(
|
||||
HttpHeaderConsts.CLIENT_VERSION_HEADER, VersionUtils.VERSION,
|
||||
HttpHeaderConsts.USER_AGENT_HEADER, UtilAndComs.VERSION,
|
||||
"Accept-Encoding", "gzip,deflate,sdch",
|
||||
"Connection", "Keep-Alive",
|
||||
"RequestId", UuidUtils.generateUuid(), "Request-Module", "Naming");
|
||||
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 1999-2018 Alibaba Group Holding Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.alibaba.nacos.common.constant;
|
||||
|
||||
/**
|
||||
* Nacos header constants
|
||||
*
|
||||
* @author ly
|
||||
*/
|
||||
public interface HttpHeaderConsts {
|
||||
|
||||
String CLIENT_VERSION_HEADER = "Client-Version";
|
||||
String USER_AGENT_HEADER = "User-Agent";
|
||||
|
||||
}
|
@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.alibaba.nacos.core.utils;
|
||||
|
||||
import com.alibaba.nacos.common.constant.HttpHeaderConsts;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@ -71,4 +72,20 @@ public class WebUtils {
|
||||
encode = encode.contains(",") ? encode.substring(0, encode.indexOf(",")) : encode;
|
||||
return encode.contains(";") ? encode.substring(0, encode.indexOf(";")) : encode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the request header "user-agent" as a <code>String</code>.
|
||||
*
|
||||
* @param request HttpServletRequest
|
||||
* @return the value of the request header "user-agent", or the value of the
|
||||
* request header "client-version" if the request does not have a
|
||||
* header of "user-agent"
|
||||
*/
|
||||
public static String getUserAgent(HttpServletRequest request) {
|
||||
String userAgent = request.getHeader(HttpHeaderConsts.USER_AGENT_HEADER);
|
||||
if (StringUtils.isEmpty(userAgent)) {
|
||||
userAgent = StringUtils.defaultIfEmpty(request.getHeader(HttpHeaderConsts.CLIENT_VERSION_HEADER), StringUtils.EMPTY);
|
||||
}
|
||||
return userAgent;
|
||||
}
|
||||
}
|
||||
|
@ -12,8 +12,10 @@
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
cd `dirname $0`/../target
|
||||
target_dir=`pwd`
|
||||
|
||||
pid=`ps ax | grep -i 'nacos.nacos' |grep java | grep -v grep | awk '{print $1}'`
|
||||
pid=`ps ax | grep -i 'nacos.nacos' | grep ${target_dir} | grep java | grep -v grep | awk '{print $1}'`
|
||||
if [ -z "$pid" ] ; then
|
||||
echo "No nacosServer running."
|
||||
exit -1;
|
||||
|
@ -52,12 +52,7 @@ public class AuthChecker {
|
||||
return;
|
||||
}
|
||||
|
||||
String agent = req.getHeader("Client-Version");
|
||||
if (StringUtils.startsWith(agent, UtilsAndCommons.NACOS_SERVER_HEADER)) {
|
||||
return;
|
||||
}
|
||||
|
||||
agent = req.getHeader("User-Agent");
|
||||
String agent = WebUtils.getUserAgent(req);
|
||||
if (StringUtils.startsWith(agent, UtilsAndCommons.NACOS_SERVER_HEADER)) {
|
||||
return;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ public class ApiController extends InstanceController {
|
||||
JSONObject result = new JSONObject();
|
||||
// For old DNS-F client:
|
||||
String dnsfVersion = "1.0.1";
|
||||
String agent = request.getHeader("Client-Version");
|
||||
String agent = WebUtils.getUserAgent(request);
|
||||
ClientInfo clientInfo = new ClientInfo(agent);
|
||||
if (clientInfo.type == ClientInfo.ClientType.DNS &&
|
||||
clientInfo.version.compareTo(VersionUtil.parseVersion(dnsfVersion)) <= 0) {
|
||||
@ -122,7 +122,7 @@ public class ApiController extends InstanceController {
|
||||
Constants.DEFAULT_NAMESPACE_ID);
|
||||
|
||||
String dom = WebUtils.required(request, "dom");
|
||||
String agent = request.getHeader("Client-Version");
|
||||
String agent = WebUtils.getUserAgent(request);
|
||||
String clusters = WebUtils.optional(request, "clusters", StringUtils.EMPTY);
|
||||
String clientIP = WebUtils.optional(request, "clientIP", StringUtils.EMPTY);
|
||||
Integer udpPort = Integer.parseInt(WebUtils.optional(request, "udpPort", "0"));
|
||||
|
@ -126,10 +126,7 @@ public class InstanceController {
|
||||
String serviceName = WebUtils.required(request, CommonParams.SERVICE_NAME);
|
||||
String namespaceId = WebUtils.optional(request, CommonParams.NAMESPACE_ID, Constants.DEFAULT_NAMESPACE_ID);
|
||||
|
||||
String agent = request.getHeader("Client-Version");
|
||||
if (StringUtils.isBlank(agent)) {
|
||||
agent = request.getHeader("User-Agent");
|
||||
}
|
||||
String agent = WebUtils.getUserAgent(request);
|
||||
|
||||
ClientInfo clientInfo = new ClientInfo(agent);
|
||||
|
||||
@ -149,10 +146,7 @@ public class InstanceController {
|
||||
Constants.DEFAULT_NAMESPACE_ID);
|
||||
|
||||
String serviceName = WebUtils.required(request, CommonParams.SERVICE_NAME);
|
||||
String agent = request.getHeader("Client-Version");
|
||||
if (StringUtils.isBlank(agent)) {
|
||||
agent = request.getHeader("User-Agent");
|
||||
}
|
||||
String agent = WebUtils.getUserAgent(request);
|
||||
String clusters = WebUtils.optional(request, "clusters", StringUtils.EMPTY);
|
||||
String clientIP = WebUtils.optional(request, "clientIP", StringUtils.EMPTY);
|
||||
Integer udpPort = Integer.parseInt(WebUtils.optional(request, "udpPort", "0"));
|
||||
|
@ -237,7 +237,7 @@ public class ServiceController {
|
||||
String namespaceId = WebUtils.optional(request, CommonParams.NAMESPACE_ID,
|
||||
Constants.DEFAULT_NAMESPACE_ID);
|
||||
String serviceName = WebUtils.required(request, CommonParams.SERVICE_NAME);
|
||||
float protectThreshold = NumberUtils.toFloat(WebUtils.required(request, "protectThreshold"));
|
||||
float protectThreshold = NumberUtils.toFloat(WebUtils.optional(request, "protectThreshold", "0"));
|
||||
String metadata = WebUtils.optional(request, "metadata", StringUtils.EMPTY);
|
||||
String selector = WebUtils.optional(request, "selector", StringUtils.EMPTY);
|
||||
|
||||
|
@ -15,7 +15,9 @@
|
||||
*/
|
||||
package com.alibaba.nacos.naming.misc;
|
||||
|
||||
import com.alibaba.nacos.common.constant.HttpHeaderConsts;
|
||||
import com.alibaba.nacos.common.util.HttpMethod;
|
||||
import com.alibaba.nacos.common.util.VersionUtils;
|
||||
import com.ning.http.client.AsyncCompletionHandler;
|
||||
import com.ning.http.client.AsyncHttpClient;
|
||||
import com.ning.http.client.AsyncHttpClientConfig;
|
||||
@ -102,8 +104,6 @@ public class HttpClient {
|
||||
conn.setReadTimeout(readTimeout);
|
||||
conn.setRequestMethod(method);
|
||||
|
||||
conn.addRequestProperty("Client-Version", UtilsAndCommons.SERVER_VERSION);
|
||||
conn.addRequestProperty("User-Agent", UtilsAndCommons.SERVER_VERSION);
|
||||
setHeaders(conn, headers, encoding);
|
||||
conn.connect();
|
||||
|
||||
@ -449,8 +449,8 @@ public class HttpClient {
|
||||
conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset="
|
||||
+ encoding);
|
||||
conn.addRequestProperty("Accept-Charset", encoding);
|
||||
conn.addRequestProperty("Client-Version", UtilsAndCommons.SERVER_VERSION);
|
||||
conn.addRequestProperty("User-Agent", UtilsAndCommons.SERVER_VERSION);
|
||||
conn.addRequestProperty(HttpHeaderConsts.CLIENT_VERSION_HEADER, VersionUtils.VERSION);
|
||||
conn.addRequestProperty(HttpHeaderConsts.USER_AGENT_HEADER, UtilsAndCommons.SERVER_VERSION);
|
||||
}
|
||||
|
||||
public static String encodingParams(Map<String, String> params, String encoding)
|
||||
|
@ -16,6 +16,8 @@
|
||||
package com.alibaba.nacos.naming.misc;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.nacos.common.constant.HttpHeaderConsts;
|
||||
import com.alibaba.nacos.common.util.VersionUtils;
|
||||
import com.alibaba.nacos.naming.boot.RunningConfig;
|
||||
import com.ning.http.client.AsyncCompletionHandler;
|
||||
import com.ning.http.client.Response;
|
||||
@ -43,8 +45,8 @@ public class NamingProxy {
|
||||
try {
|
||||
Map<String, String> headers = new HashMap<>(128);
|
||||
|
||||
headers.put("Client-Version", UtilsAndCommons.SERVER_VERSION);
|
||||
headers.put("User-Agent", UtilsAndCommons.SERVER_VERSION);
|
||||
headers.put(HttpHeaderConsts.CLIENT_VERSION_HEADER, VersionUtils.VERSION);
|
||||
headers.put(HttpHeaderConsts.USER_AGENT_HEADER, UtilsAndCommons.SERVER_VERSION);
|
||||
headers.put("Connection", "Keep-Alive");
|
||||
|
||||
HttpClient.asyncHttpPutLarge("http://" + server + RunningConfig.getContextPath()
|
||||
@ -111,8 +113,8 @@ public class NamingProxy {
|
||||
public static boolean syncData(byte[] data, String curServer) {
|
||||
Map<String, String> headers = new HashMap<>(128);
|
||||
|
||||
headers.put("Client-Version", UtilsAndCommons.SERVER_VERSION);
|
||||
headers.put("User-Agent", UtilsAndCommons.SERVER_VERSION);
|
||||
headers.put(HttpHeaderConsts.CLIENT_VERSION_HEADER, VersionUtils.VERSION);
|
||||
headers.put(HttpHeaderConsts.USER_AGENT_HEADER, UtilsAndCommons.SERVER_VERSION);
|
||||
headers.put("Accept-Encoding", "gzip,deflate,sdch");
|
||||
headers.put("Connection", "Keep-Alive");
|
||||
headers.put("Content-Encoding", "gzip");
|
||||
@ -138,8 +140,9 @@ public class NamingProxy {
|
||||
|
||||
public static String reqAPI(String api, Map<String, String> params, String curServer) throws Exception {
|
||||
try {
|
||||
List<String> headers = Arrays.asList("Client-Version", UtilsAndCommons.SERVER_VERSION,
|
||||
"User-Agent", UtilsAndCommons.SERVER_VERSION,
|
||||
List<String> headers = Arrays.asList(
|
||||
HttpHeaderConsts.CLIENT_VERSION_HEADER, VersionUtils.VERSION,
|
||||
HttpHeaderConsts.USER_AGENT_HEADER, UtilsAndCommons.SERVER_VERSION,
|
||||
"Accept-Encoding", "gzip,deflate,sdch",
|
||||
"Connection", "Keep-Alive",
|
||||
"Content-Encoding", "gzip");
|
||||
@ -172,8 +175,9 @@ public class NamingProxy {
|
||||
|
||||
public static String reqAPI(String api, Map<String, String> params, String curServer, boolean isPost) throws Exception {
|
||||
try {
|
||||
List<String> headers = Arrays.asList("Client-Version", UtilsAndCommons.SERVER_VERSION,
|
||||
"User-Agent", UtilsAndCommons.SERVER_VERSION,
|
||||
List<String> headers = Arrays.asList(
|
||||
HttpHeaderConsts.CLIENT_VERSION_HEADER, VersionUtils.VERSION,
|
||||
HttpHeaderConsts.USER_AGENT_HEADER, UtilsAndCommons.SERVER_VERSION,
|
||||
"Accept-Encoding", "gzip,deflate,sdch",
|
||||
"Connection", "Keep-Alive",
|
||||
"Content-Encoding", "gzip");
|
||||
|
@ -17,6 +17,7 @@ package com.alibaba.nacos.naming.web;
|
||||
|
||||
import com.alibaba.nacos.api.common.Constants;
|
||||
import com.alibaba.nacos.api.naming.CommonParams;
|
||||
import com.alibaba.nacos.common.constant.HttpHeaderConsts;
|
||||
import com.alibaba.nacos.naming.core.DistroMapper;
|
||||
import com.alibaba.nacos.naming.misc.HttpClient;
|
||||
import com.alibaba.nacos.naming.misc.Loggers;
|
||||
@ -97,7 +98,7 @@ public class DistroFilter implements Filter {
|
||||
// proxy request to other server if necessary:
|
||||
if (method.isAnnotationPresent(CanDistro.class) && !distroMapper.responsible(groupedServiceName)) {
|
||||
|
||||
String userAgent = req.getHeader("User-Agent");
|
||||
String userAgent = req.getHeader(HttpHeaderConsts.USER_AGENT_HEADER);
|
||||
|
||||
if (StringUtils.isNotBlank(userAgent) && userAgent.contains(UtilsAndCommons.NACOS_SERVER_HEADER)) {
|
||||
// This request is sent from peer server, should not be redirected again:
|
||||
|
@ -16,6 +16,7 @@
|
||||
package com.alibaba.nacos.naming.web;
|
||||
|
||||
import com.alibaba.nacos.common.util.HttpMethod;
|
||||
import com.alibaba.nacos.core.utils.WebUtils;
|
||||
import com.alibaba.nacos.naming.cluster.ServerStatus;
|
||||
import com.alibaba.nacos.naming.cluster.ServerStatusManager;
|
||||
import com.alibaba.nacos.naming.misc.SwitchDomain;
|
||||
@ -70,10 +71,7 @@ public class TrafficReviseFilter implements Filter {
|
||||
}
|
||||
|
||||
// requests from peer server should be let pass:
|
||||
String agent = req.getHeader("Client-Version");
|
||||
if (StringUtils.isBlank(agent)) {
|
||||
agent = req.getHeader("User-Agent");
|
||||
}
|
||||
String agent = WebUtils.getUserAgent(req);
|
||||
|
||||
if (StringUtils.startsWith(agent, UtilsAndCommons.NACOS_SERVER_HEADER)) {
|
||||
filterChain.doFilter(req, resp);
|
||||
|
@ -17,6 +17,7 @@ package com.alibaba.nacos.test.naming;
|
||||
|
||||
import com.alibaba.nacos.api.naming.pojo.Instance;
|
||||
import com.alibaba.nacos.client.naming.net.HttpClient;
|
||||
import com.alibaba.nacos.common.constant.HttpHeaderConsts;
|
||||
import org.apache.http.HttpStatus;
|
||||
import org.junit.Assert;
|
||||
|
||||
@ -173,7 +174,7 @@ public class NamingBase {
|
||||
public static void prepareServer(int localPort, String status) {
|
||||
String url = "http://127.0.0.1:" + localPort + "/nacos/v1/ns/operator/switches?entry=overriddenServerStatus&value=" + status;
|
||||
List<String> headers = new ArrayList<String>();
|
||||
headers.add("User-Agent");
|
||||
headers.add(HttpHeaderConsts.USER_AGENT_HEADER);
|
||||
headers.add("Nacos-Server");
|
||||
HttpClient.HttpResult result =
|
||||
HttpClient.request(url, headers, new HashMap<String, String>(), "UTF-8", "PUT");
|
||||
|
Loading…
Reference in New Issue
Block a user