mirror of
https://github.com/ctripcorp/zeus.git
synced 2024-09-20 15:46:01 +08:00
Merge branch 'github_dev' of https://github.com/ctripcorp/zeus into github_dev
This commit is contained in:
commit
49d69c62d3
5
pom.xml
5
pom.xml
|
@ -259,10 +259,13 @@
|
|||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<verbose>true</verbose>
|
||||
<verbose>false</verbose>
|
||||
<generateGitPropertiesFile>true</generateGitPropertiesFile>
|
||||
<generateGitPropertiesFilename>src/main/resources/git.properties</generateGitPropertiesFilename>
|
||||
<failOnNoGitDirectory>true</failOnNoGitDirectory>
|
||||
<includeOnlyProperties>
|
||||
<includeOnlyProperty>^git.commit.id$</includeOnlyProperty>
|
||||
</includeOnlyProperties>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.ctrip.zeus.auth.impl;
|
||||
|
||||
import com.ctrip.zeus.auth.util.AuthUserConstants;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.netflix.config.DynamicBooleanProperty;
|
||||
import com.netflix.config.DynamicPropertyFactory;
|
||||
import com.netflix.config.DynamicStringProperty;
|
||||
|
@ -9,6 +11,7 @@ import org.jasig.cas.client.validation.AssertionImpl;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
@ -25,35 +28,24 @@ import java.util.Map;
|
|||
* Time: 3:00 PM
|
||||
*/
|
||||
public class IPAuthenticationFilter implements Filter{
|
||||
private static final Logger logger = LoggerFactory.getLogger(IPAuthenticationFilter.class);
|
||||
DynamicStringProperty ipUserStr = DynamicPropertyFactory.getInstance().getStringProperty("ip.authentication", "127.0.0.1,172.16.144.61=releaseSys");
|
||||
private static final String SLB_SERVER_USER = "slbServer";
|
||||
public static final String SERVER_TOKEN_HEADER = "SlbServerToken";
|
||||
private DynamicBooleanProperty enableAuthorize = DynamicPropertyFactory.getInstance().getBooleanProperty("server.authorization.enable", false);
|
||||
|
||||
private volatile Map<String, String> ipUserMap = new HashMap<>();
|
||||
@Resource
|
||||
ConfigService configService;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(IPAuthenticationFilter.class);
|
||||
public static final String SERVER_TOKEN_HEADER = "SlbServerToken";
|
||||
private static final String IP_AUTHENTICATION_PREFIX = "ip.authentication";
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) {
|
||||
ipUserMap = parseIpUserStr(ipUserStr.get());
|
||||
ipUserStr.addCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info(ipUserStr.get());
|
||||
ipUserMap = parseIpUserStr(ipUserStr.get());
|
||||
logger.info(ipUserMap.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void init(FilterConfig filterConfig) {}
|
||||
|
||||
public final void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
|
||||
final HttpServletRequest request = (HttpServletRequest) servletRequest;
|
||||
final HttpServletResponse response = (HttpServletResponse) servletResponse;
|
||||
final HttpSession session = request.getSession(false);
|
||||
//1. turn off auth
|
||||
if (!enableAuthorize.get()){
|
||||
setAssertion(request, SLB_SERVER_USER);
|
||||
if (!configService.getEnable("server.authorization", false)){
|
||||
setAssertion(request, AuthUserConstants.SLB_SERVER_USER);
|
||||
filterChain.doFilter(request,response);
|
||||
return;
|
||||
}
|
||||
|
@ -68,7 +60,7 @@ public class IPAuthenticationFilter implements Filter{
|
|||
String slbServerToken = request.getHeader(SERVER_TOKEN_HEADER);
|
||||
if (slbServerToken != null){
|
||||
if (TokenManager.validateToken(slbServerToken)){
|
||||
setAssertion(request, SLB_SERVER_USER);
|
||||
setAssertion(request, AuthUserConstants.SLB_SERVER_USER);
|
||||
filterChain.doFilter(request,response);
|
||||
return;
|
||||
}
|
||||
|
@ -95,29 +87,8 @@ public class IPAuthenticationFilter implements Filter{
|
|||
// nothing to do
|
||||
}
|
||||
|
||||
private Map<String,String> parseIpUserStr(String ipConfig){
|
||||
Map<String, String> result = new HashMap<>();
|
||||
if (ipConfig == null || ipConfig.isEmpty()) {
|
||||
return result;
|
||||
}
|
||||
String[] configs = ipConfig.split("#");
|
||||
for(String config : configs) {
|
||||
String[] parts = config.split("=", -1);
|
||||
if (parts == null || parts.length != 2){
|
||||
logger.error("fail to parse {}", config);
|
||||
continue;
|
||||
}
|
||||
String[] ips = parts[0].split(",");
|
||||
String userName = parts[1];
|
||||
for (String ip : ips) {
|
||||
result.put(ip,userName);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private String getIpUser(String clientIP) {
|
||||
String user = ipUserMap.get(clientIP);
|
||||
String user = configService.getKeyType(IP_AUTHENTICATION_PREFIX, AuthUserConstants.getAuthUsers(), clientIP);
|
||||
return user;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package com.ctrip.zeus.auth.util;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Created by lu.wang on 2016/5/6.
|
||||
*/
|
||||
public class AuthUserConstants {
|
||||
public static final String OP_SYS_USER = "opSys";
|
||||
public static final String RELEASE_SYS_USER = "releaseSys";
|
||||
public static final String SLB_TEAM_USER = "slbTeam";
|
||||
public static final String SLB_SERVER_USER = "slbServer";
|
||||
|
||||
public static Set<String> getAuthUsers() {
|
||||
return Sets.newHashSet(
|
||||
OP_SYS_USER,
|
||||
RELEASE_SYS_USER,
|
||||
SLB_TEAM_USER,
|
||||
SLB_SERVER_USER
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
package com.ctrip.zeus.service.build;
|
||||
|
||||
/**
|
||||
* Created by lu.wang on 2016/4/19.
|
||||
*/
|
||||
public interface ConfService {
|
||||
|
||||
String getStringValue(String key, Long slbId, Long vsId, Long groupId, String defaultValue) throws Exception;
|
||||
int getIntValue(String key, Long slbId, Long vsId, Long groupId, int defaultValue) throws Exception;
|
||||
boolean getEnable(String key, Long slbId, Long vsId, Long groupId, boolean defaultValue) throws Exception;
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package com.ctrip.zeus.service.build;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Created by lu.wang on 2016/4/19.
|
||||
*/
|
||||
public interface ConfigService {
|
||||
|
||||
/**
|
||||
* For nginx conf generate
|
||||
*/
|
||||
String getStringValue(String key, Long slbId, Long vsId, Long groupId, String defaultValue) throws Exception;
|
||||
int getIntValue(String key, Long slbId, Long vsId, Long groupId, int defaultValue) throws Exception;
|
||||
boolean getEnable(String key, Long slbId, Long vsId, Long groupId, boolean defaultValue) throws Exception;
|
||||
|
||||
/**
|
||||
* Just for get dynamic config value
|
||||
*/
|
||||
String getStringValue(String key, String defaultValue);
|
||||
boolean getEnable(String key, boolean defaultValue);
|
||||
|
||||
/**
|
||||
* prefix.[type1] = value1, value2, value3
|
||||
* prefix.[type2] = value4, value5, value6
|
||||
*
|
||||
* return the type according to the value, if not found the value, return null
|
||||
*
|
||||
* @param prefix
|
||||
* @param types
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
String getKeyType(String prefix, Set<String> types, String value);
|
||||
|
||||
}
|
|
@ -3,7 +3,7 @@ package com.ctrip.zeus.service.build.conf;
|
|||
import com.ctrip.zeus.model.entity.Group;
|
||||
import com.ctrip.zeus.model.entity.HealthCheck;
|
||||
import com.ctrip.zeus.model.entity.VirtualServer;
|
||||
import com.ctrip.zeus.service.build.ConfService;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.ctrip.zeus.util.AssertUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
@ -17,13 +17,13 @@ import javax.annotation.Resource;
|
|||
public class HealthCheckConf {
|
||||
|
||||
@Resource
|
||||
ConfService confService;
|
||||
ConfigService configService;
|
||||
|
||||
public String generate(VirtualServer vs, Group group) throws Exception {
|
||||
Long vsId = vs.getId();
|
||||
Long groupId = group.getId();
|
||||
|
||||
if (!confService.getEnable("upstream.healthCheck", null, vsId, groupId, true)) {
|
||||
if (!configService.getEnable("upstream.healthCheck", null, vsId, groupId, true)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
|
@ -38,10 +38,10 @@ public class HealthCheckConf {
|
|||
|
||||
StringBuilder b = new StringBuilder(128);
|
||||
|
||||
String healthCheckTimeout = confService.getStringValue("upstream.healthCheck.timeOut", null, vsId, groupId, "2000");
|
||||
String sslAspx = confService.getStringValue("upstream.healthCheck.ssl.aspx", null, vsId, groupId, "/SlbHealthCheck.aspx");
|
||||
String healthCheckTimeout = configService.getStringValue("upstream.healthCheck.timeOut", null, vsId, groupId, "2000");
|
||||
String sslAspx = configService.getStringValue("upstream.healthCheck.ssl.aspx", null, vsId, groupId, "/SlbHealthCheck.aspx");
|
||||
|
||||
if (group.getSsl() && confService.getEnable("upstream.healthCheck.sslHello", null, vsId, groupId, false)) {
|
||||
if (group.getSsl() && configService.getEnable("upstream.healthCheck.sslHello", null, vsId, groupId, false)) {
|
||||
b.append(" check interval=").append(h.getIntervals())
|
||||
.append(" rise=").append(h.getPasses())
|
||||
.append(" fall=").append(h.getFails())
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.ctrip.zeus.model.entity.Group;
|
|||
import com.ctrip.zeus.model.entity.GroupVirtualServer;
|
||||
import com.ctrip.zeus.model.entity.Slb;
|
||||
import com.ctrip.zeus.model.entity.VirtualServer;
|
||||
import com.ctrip.zeus.service.build.ConfService;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.ctrip.zeus.service.model.PathRewriteParser;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -20,7 +20,7 @@ import java.util.List;
|
|||
@Component("locationConf")
|
||||
public class LocationConf {
|
||||
@Resource
|
||||
ConfService confService;
|
||||
ConfigService configService;
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(LocationConf.class);
|
||||
|
||||
|
@ -58,8 +58,8 @@ public class LocationConf {
|
|||
} else {
|
||||
confWriter.writeLocationStart(e.getPath());
|
||||
|
||||
if (confService.getEnable("location.client.max.body.size", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("client_max_body_size", confService.getStringValue("location.client.max.body.size", slbId, vsId, groupId, "2") + "m");
|
||||
if (configService.getEnable("location.client.max.body.size", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("client_max_body_size", configService.getStringValue("location.client.max.body.size", slbId, vsId, groupId, "2") + "m");
|
||||
}
|
||||
|
||||
confWriter.writeCommand("proxy_request_buffering", "off");
|
||||
|
@ -68,18 +68,18 @@ public class LocationConf {
|
|||
confWriter.writeCommand("proxy_set_header", "Host $host");
|
||||
confWriter.writeCommand("proxy_set_header", "X-Real-IP $remote_addr");
|
||||
|
||||
if (confService.getEnable("location.upstream.keepAlive", slbId, vsId, groupId, false)) {
|
||||
if (configService.getEnable("location.upstream.keepAlive", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("proxy_set_header", "Connection \"\"");
|
||||
}
|
||||
String proxyReadTimeout = "location.proxy.readTimeout";
|
||||
if (confService.getEnable(proxyReadTimeout, slbId, vsId, groupId, true)) {
|
||||
String readTimeout = confService.getStringValue(proxyReadTimeout, slbId, vsId, groupId, "60");
|
||||
if (configService.getEnable(proxyReadTimeout, slbId, vsId, groupId, true)) {
|
||||
String readTimeout = configService.getStringValue(proxyReadTimeout, slbId, vsId, groupId, "60");
|
||||
confWriter.writeCommand("proxy_read_timeout", readTimeout + "s");
|
||||
}
|
||||
|
||||
if (confService.getEnable("location.x-forwarded-for", slbId, vsId, groupId, true)) {
|
||||
if (configService.getEnable("location.x-forwarded-for", slbId, vsId, groupId, true)) {
|
||||
confWriter.writeIfStart("$remote_addr ~* \"" +
|
||||
confService.getStringValue("location.x-forwarded-for.white.list", slbId, vsId, groupId, "172\\..*|192\\.168.*|10\\..*") + "\"")
|
||||
configService.getStringValue("location.x-forwarded-for.white.list", slbId, vsId, groupId, "172\\..*|192\\.168.*|10\\..*") + "\"")
|
||||
.writeCommand("set", "$inWhite \"true\"")
|
||||
.writeIfEnd();
|
||||
|
||||
|
@ -88,7 +88,7 @@ public class LocationConf {
|
|||
confWriter.writeCommand("proxy_set_header", "X-Forwarded-For $proxy_add_x_forwarded_for");
|
||||
}
|
||||
|
||||
if (confService.getEnable("location.errorPage", slbId, vsId, groupId, false)) {
|
||||
if (configService.getEnable("location.errorPage", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("proxy_intercept_errors", "on");
|
||||
}
|
||||
|
||||
|
@ -144,7 +144,7 @@ public class LocationConf {
|
|||
}
|
||||
|
||||
private void addBastionCommand(ConfWriter confWriter, String upstreamName, Long slbId, Long vsId, Long groupId) throws Exception {
|
||||
String whiteList = confService.getStringValue("location.bastion.white.list", slbId, vsId, groupId, "denyAll");
|
||||
String whiteList = configService.getStringValue("location.bastion.white.list", slbId, vsId, groupId, "denyAll");
|
||||
|
||||
confWriter.writeIfStart("$remote_addr ~* \"" + whiteList + "\"")
|
||||
.writeCommand("set", "$upstream $cookie_bastion")
|
||||
|
@ -167,16 +167,16 @@ public class LocationConf {
|
|||
private String getHcLuaScripts(Long slbId, Long vsId) throws Exception {
|
||||
return new StringBuilder(512).append("'\n")
|
||||
//TODO hardcode health check gif
|
||||
.append("local res = ngx.decode_base64(\"").append(confService.getStringValue("location.vs.health.check.gif.base64", slbId, vsId, null, "")).append("\");\n")
|
||||
.append("local res = ngx.decode_base64(\"").append(configService.getStringValue("location.vs.health.check.gif.base64", slbId, vsId, null, "")).append("\");\n")
|
||||
.append("ngx.print(res);\n")
|
||||
.append("return ngx.exit(200);'").toString();
|
||||
}
|
||||
|
||||
public void writeErrorPageLocation(ConfWriter confWriter, boolean errorPageUseNew,
|
||||
int statusCode, Long slbId, Long vsId) throws Exception {
|
||||
String errorPageAccept = confService.getStringValue("location.errorPage.accept", slbId, vsId, null, "text/html");
|
||||
String errorPageAccept = configService.getStringValue("location.errorPage.accept", slbId, vsId, null, "text/html");
|
||||
if (errorPageUseNew) {
|
||||
String url = confService.getStringValue("location.errorPage.host.url", slbId, vsId, null, null);
|
||||
String url = configService.getStringValue("location.errorPage.host.url", slbId, vsId, null, null);
|
||||
if (url == null || url.isEmpty()) {
|
||||
LOGGER.error("Error page url is not configured. Skip writing error page locations.");
|
||||
return;
|
||||
|
@ -192,7 +192,7 @@ public class LocationConf {
|
|||
confWriter.writeCommand("proxy_pass", url);
|
||||
confWriter.writeLocationEnd();
|
||||
} else {
|
||||
String errorPageConfig = confService.getStringValue("location.errorPage." + statusCode + ".url", slbId, vsId, null, null);
|
||||
String errorPageConfig = configService.getStringValue("location.errorPage." + statusCode + ".url", slbId, vsId, null, null);
|
||||
if (null != errorPageConfig) {
|
||||
String path = "/" + statusCode + "page";
|
||||
confWriter.writeCommand("error_page", statusCode + " " + path);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.ctrip.zeus.service.build.conf;
|
||||
|
||||
import com.ctrip.zeus.model.entity.Slb;
|
||||
import com.ctrip.zeus.service.build.ConfService;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
@ -15,7 +15,7 @@ public class NginxConf {
|
|||
private static String ShmZoneName = "proxy_zone";
|
||||
|
||||
@Resource
|
||||
ConfService confService;
|
||||
ConfigService configService;
|
||||
@Resource
|
||||
ServerConf serverConf;
|
||||
|
||||
|
@ -25,7 +25,7 @@ public class NginxConf {
|
|||
ConfWriter confWriter = new ConfWriter(10240, true);
|
||||
confWriter.writeCommand("worker_processes", "auto");
|
||||
confWriter.writeCommand("user", "nobody");
|
||||
confWriter.writeCommand("error_log", "/opt/logs/nginx/error.log" + confService.getStringValue("logLevel", slbId, null, null, ""));
|
||||
confWriter.writeCommand("error_log", "/opt/logs/nginx/error.log" + configService.getStringValue("logLevel", slbId, null, null, ""));
|
||||
confWriter.writeCommand("worker_rlimit_nofile", "65535");
|
||||
confWriter.writeCommand("pid", "logs/nginx.pid");
|
||||
|
||||
|
@ -38,12 +38,12 @@ public class NginxConf {
|
|||
confWriter.writeHttpStart();
|
||||
confWriter.writeCommand("include", "mime.types");
|
||||
confWriter.writeCommand("default_type", "application/octet-stream");
|
||||
confWriter.writeCommand("keepalive_timeout", confService.getStringValue("keepAlive.timeout", slbId, null, null, "65"));
|
||||
confWriter.writeCommand("keepalive_timeout", configService.getStringValue("keepAlive.timeout", slbId, null, null, "65"));
|
||||
confWriter.writeCommand("log_format", "main " + LogFormat.getMain());
|
||||
confWriter.writeCommand("access_log", "/opt/logs/nginx/access.log main");
|
||||
confWriter.writeCommand("server_names_hash_max_size", confService.getStringValue("serverNames.maxSize", slbId, null, null, "10000"));
|
||||
confWriter.writeCommand("server_names_hash_bucket_size", confService.getStringValue("serverNames.bucketSize", slbId, null, null, "128"));
|
||||
confWriter.writeCommand("check_shm_size", confService.getStringValue("checkShmSize", slbId, null, null, "32") + "M");
|
||||
confWriter.writeCommand("server_names_hash_max_size", configService.getStringValue("serverNames.maxSize", slbId, null, null, "10000"));
|
||||
confWriter.writeCommand("server_names_hash_bucket_size", configService.getStringValue("serverNames.bucketSize", slbId, null, null, "128"));
|
||||
confWriter.writeCommand("check_shm_size", configService.getStringValue("checkShmSize", slbId, null, null, "32") + "M");
|
||||
confWriter.writeCommand("client_max_body_size", "2m");
|
||||
confWriter.writeCommand("ignore_invalid_headers", "off");
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import com.ctrip.zeus.model.entity.Domain;
|
|||
import com.ctrip.zeus.model.entity.Group;
|
||||
import com.ctrip.zeus.model.entity.Slb;
|
||||
import com.ctrip.zeus.model.entity.VirtualServer;
|
||||
import com.ctrip.zeus.service.build.ConfService;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.ctrip.zeus.util.AssertUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
|
@ -18,7 +18,7 @@ import java.util.List;
|
|||
@Component("serverConf")
|
||||
public class ServerConf {
|
||||
@Resource
|
||||
ConfService confService;
|
||||
ConfigService configService;
|
||||
@Resource
|
||||
LocationConf locationConf;
|
||||
|
||||
|
@ -42,10 +42,10 @@ public class ServerConf {
|
|||
confWriter.writeCommand("ignore_invalid_headers", "off");
|
||||
confWriter.writeCommand("proxy_http_version", "1.1");
|
||||
|
||||
if (confService.getEnable("server.proxy.buffer.size", slbId, vsId, null, false)) {
|
||||
confWriter.writeCommand("proxy_buffer_size", confService.getStringValue("server.proxy.buffer.size", slbId, vsId, null, "8k"));
|
||||
confWriter.writeCommand("proxy_buffers", confService.getStringValue("server.proxy.buffers", slbId, vsId, null, "8 8k"));
|
||||
confWriter.writeCommand("proxy_busy_buffers_size", confService.getStringValue("server.proxy.busy.buffers.size", slbId, vsId, null, "8k"));
|
||||
if (configService.getEnable("server.proxy.buffer.size", slbId, vsId, null, false)) {
|
||||
confWriter.writeCommand("proxy_buffer_size", configService.getStringValue("server.proxy.buffer.size", slbId, vsId, null, "8k"));
|
||||
confWriter.writeCommand("proxy_buffers", configService.getStringValue("server.proxy.buffers", slbId, vsId, null, "8 8k"));
|
||||
confWriter.writeCommand("proxy_busy_buffers_size", configService.getStringValue("server.proxy.busy.buffers.size", slbId, vsId, null, "8k"));
|
||||
}
|
||||
|
||||
if (vs.isSsl()) {
|
||||
|
@ -54,7 +54,7 @@ public class ServerConf {
|
|||
confWriter.writeCommand("ssl_certificate_key", SSL_PATH + vsId + "/ssl.key");
|
||||
}
|
||||
|
||||
if (confService.getEnable("server.vs.health.check", slbId, vsId, null, false)) {
|
||||
if (configService.getEnable("server.vs.health.check", slbId, vsId, null, false)) {
|
||||
locationConf.writeHealthCheckLocation(confWriter, slbId, vsId);
|
||||
}
|
||||
|
||||
|
@ -65,8 +65,8 @@ public class ServerConf {
|
|||
locationConf.write(confWriter, slb, vs, group);
|
||||
}
|
||||
|
||||
if (confService.getEnable("server.errorPage", slbId, vsId, null, false)) {
|
||||
boolean useNew = confService.getEnable("server.errorPage.use.new", slbId, vsId, null, true);
|
||||
if (configService.getEnable("server.errorPage", slbId, vsId, null, false)) {
|
||||
boolean useNew = configService.getEnable("server.errorPage.use.new", slbId, vsId, null, true);
|
||||
for (int sc = 400; sc <= 425; sc++) {
|
||||
locationConf.writeErrorPageLocation(confWriter, useNew, sc, slbId, vsId);
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ public class ServerConf {
|
|||
public void writeDyupsServer(ConfWriter confWriter, Long slbId) throws Exception {
|
||||
confWriter.writeCommand("dyups_upstream_conf", "conf/dyupstream.conf");
|
||||
confWriter.writeServerStart();
|
||||
confWriter.writeCommand("listen", confService.getStringValue("server.dyups.port", slbId, null, null, "8081"));
|
||||
confWriter.writeCommand("listen", configService.getStringValue("server.dyups.port", slbId, null, null, "8081"));
|
||||
|
||||
locationConf.writeDyupsLocation(confWriter);
|
||||
|
||||
|
@ -102,7 +102,7 @@ public class ServerConf {
|
|||
|
||||
public void writeCheckStatusServer(ConfWriter confWriter, String shmZoneName, Long slbId) throws Exception {
|
||||
confWriter.writeServerStart();
|
||||
confWriter.writeCommand("listen", confService.getStringValue("server.status.port", slbId, null, null, "10001"));
|
||||
confWriter.writeCommand("listen", configService.getStringValue("server.status.port", slbId, null, null, "10001"));
|
||||
confWriter.writeCommand("req_status", shmZoneName);
|
||||
locationConf.writeCheckStatusLocations(confWriter);
|
||||
confWriter.writeServerEnd();
|
||||
|
|
|
@ -4,9 +4,8 @@ import com.ctrip.zeus.domain.LBMethod;
|
|||
import com.ctrip.zeus.exceptions.ValidationException;
|
||||
import com.ctrip.zeus.model.entity.*;
|
||||
import com.ctrip.zeus.nginx.entity.ConfFile;
|
||||
import com.ctrip.zeus.service.build.ConfService;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.ctrip.zeus.util.AssertUtils;
|
||||
import com.ctrip.zeus.util.StringFormat;
|
||||
import com.google.common.base.Joiner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
@ -20,7 +19,7 @@ import java.util.*;
|
|||
@Component("upstreamsConf")
|
||||
public class UpstreamsConf {
|
||||
@Resource
|
||||
ConfService confService;
|
||||
ConfigService configService;
|
||||
@Resource
|
||||
HealthCheckConf healthCheckConf;
|
||||
|
||||
|
@ -107,11 +106,11 @@ public class UpstreamsConf {
|
|||
confWriter.writeUpstreamServer(ip, server.getPort(), server.getWeight(), server.getMaxFails(), server.getFailTimeout(), down);
|
||||
}
|
||||
|
||||
if (confService.getEnable("upstream.keepAlive", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("keepalive", confService.getStringValue("upstream.keepAlive", slbId, vsId, groupId, "100"));
|
||||
if (configService.getEnable("upstream.keepAlive", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("keepalive", configService.getStringValue("upstream.keepAlive", slbId, vsId, groupId, "100"));
|
||||
}
|
||||
if (confService.getEnable("upstream.keepAlive.timeout", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("keepalive_timeout", confService.getStringValue("upstream.keepAlive.timeout", slbId, vsId, groupId, "110") + "s");
|
||||
if (configService.getEnable("upstream.keepAlive.timeout", slbId, vsId, groupId, false)) {
|
||||
confWriter.writeCommand("keepalive_timeout", configService.getStringValue("upstream.keepAlive.timeout", slbId, vsId, groupId, "110") + "s");
|
||||
}
|
||||
|
||||
// This module is to be abandoned.
|
||||
|
|
|
@ -1,15 +1,20 @@
|
|||
package com.ctrip.zeus.service.build.impl;
|
||||
|
||||
import com.ctrip.zeus.service.build.ConfService;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.ctrip.zeus.util.S;
|
||||
import com.netflix.config.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Created by lu.wang on 2016/4/19.
|
||||
*/
|
||||
@Service("confService")
|
||||
public class ConfServiceImpl implements ConfService {
|
||||
@Service("configService")
|
||||
public class ConfigServiceImpl implements ConfigService {
|
||||
|
||||
private DynamicPropertyFactory factory = DynamicPropertyFactory.getInstance();
|
||||
|
||||
|
@ -81,6 +86,64 @@ public class ConfServiceImpl implements ConfService {
|
|||
return value.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStringValue(String key, String defaultValue) {
|
||||
DynamicStringProperty stringValue =
|
||||
factory.getStringProperty(key, defaultValue);
|
||||
return stringValue.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getEnable(String key, boolean defaultValue){
|
||||
DynamicBooleanProperty value =
|
||||
factory.getBooleanProperty(key + ".enable", defaultValue);
|
||||
return value.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKeyType(String prefix, Set<String> types, String value) {
|
||||
if (prefix == null || types == null || types.size() == 0 || value == null)
|
||||
return null;
|
||||
|
||||
String typeValue;
|
||||
for (String typeName : types) {
|
||||
typeValue = factory.getStringProperty(prefix + "." + typeName, null).get();
|
||||
if (typeValue != null && Arrays.asList(typeValue.split(",")).contains(value)) {
|
||||
return typeName;
|
||||
}
|
||||
}
|
||||
|
||||
String defaultValue = factory.getStringProperty(prefix + ".default", null).get();
|
||||
Map<String, String> valueKeyMap = parseIpUserStr(defaultValue);
|
||||
|
||||
for (Map.Entry entry : valueKeyMap.entrySet()) {
|
||||
if (entry.getKey().equals(value))
|
||||
return entry.getValue().toString();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private Map<String,String> parseIpUserStr(String ipConfig){
|
||||
Map<String, String> result = new HashMap<>();
|
||||
if (ipConfig == null || ipConfig.isEmpty()) {
|
||||
return result;
|
||||
}
|
||||
String[] configs = ipConfig.split("#");
|
||||
for(String config : configs) {
|
||||
String[] parts = config.split("=", -1);
|
||||
if (parts == null || parts.length != 2){
|
||||
continue;
|
||||
}
|
||||
String[] ips = parts[0].split(",");
|
||||
String userName = parts[1];
|
||||
for (String ip : ips) {
|
||||
result.put(ip,userName);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private String getFullKey(String key) {
|
||||
return "nginx." + key;
|
||||
}
|
|
@ -103,3 +103,7 @@ nginx.location.testKey1.slb.1=2
|
|||
nginx.location.testKey1.vs.1=3
|
||||
nginx.location.testKey1.group.1=4
|
||||
|
||||
########testGetKeyType###########
|
||||
ip.authentication.default=10.32.20.131=sdong#10.32.64.14,10.32.64.22,10.32.64.37=lsqiu#10.2.56.116=cmpSys
|
||||
ip.authentication.opSys=10.32.51.139,192.168.18.215,10.2.20.220,192.168.18.81,192.168.18.82,192.168.18.187,10.32.21.25,10.32.21.14,10.32.21.6,10.32.21.32,192.168.18.81,192.168.18.82,172.16.0.211,192.168.96.45,10.38.121.212,10.38.121.182,192.168.93.82,10.32.106.122,10.32.6.143,10.32.6.129,10.32.21.124,192.168.18.219,192.168.18.220,10.32.6.128,10.15.113.57,10.15.113.58,10.2.10.131,10.32.6.9,10.32.6.16,10.32.6.4,10.2.24.51,10.32.21.11,10.2.25.214,10.2.25.215
|
||||
ip.authentication.releaseSys=10.18.5.39,10.18.5.26,172.16.226.137,172.16.226.8,172.16.226.167,172.16.140.184,172.16.140.148,10.2.25.93,10.2.25.94,10.2.25.95,10.38.121.182,10.32.21.148,10.18.5.39,10.9.113.50,10.9.113.51,10.9.113.52,10.32.64.12,10.32.64.125,10.32.64.228,10.32.21.150,10.9.113.6,10.9.113.7,10.32.0.1,10.2.33.176,10.9.80.77,10.9.80.78
|
|
@ -1,6 +1,7 @@
|
|||
package com.ctrip.zeus.service;
|
||||
|
||||
import com.ctrip.zeus.AbstractServerTest;
|
||||
import com.ctrip.zeus.auth.util.AuthUserConstants;
|
||||
import com.ctrip.zeus.client.GroupClient;
|
||||
import com.ctrip.zeus.client.SlbClient;
|
||||
import com.ctrip.zeus.client.VirtualServerClient;
|
||||
|
@ -9,31 +10,22 @@ import com.ctrip.zeus.model.entity.GroupServer;
|
|||
import com.ctrip.zeus.model.entity.Slb;
|
||||
import com.ctrip.zeus.model.entity.VirtualServer;
|
||||
import com.ctrip.zeus.nginx.entity.ConfFile;
|
||||
import com.ctrip.zeus.service.build.ConfService;
|
||||
import com.ctrip.zeus.service.build.ConfigService;
|
||||
import com.ctrip.zeus.service.build.conf.LocationConf;
|
||||
import com.ctrip.zeus.service.build.conf.NginxConf;
|
||||
import com.ctrip.zeus.service.build.conf.ServerConf;
|
||||
import com.ctrip.zeus.service.build.conf.UpstreamsConf;
|
||||
import com.ctrip.zeus.util.S;
|
||||
import com.netflix.config.ConfigurationManager;
|
||||
import com.netflix.config.DynamicProperty;
|
||||
import com.netflix.config.DynamicPropertyFactory;
|
||||
import com.netflix.config.DynamicStringProperty;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||
import org.junit.Assert;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import support.AbstractSpringTest;
|
||||
import support.MysqlDbServer;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
@ -41,10 +33,10 @@ import java.util.Set;
|
|||
/**
|
||||
* Created by lu.wang on 2016/4/20.
|
||||
*/
|
||||
public class ConfServiceTest extends AbstractServerTest {
|
||||
public class ConfigServiceTest extends AbstractServerTest {
|
||||
|
||||
@Resource
|
||||
ConfService confService;
|
||||
ConfigService configService;
|
||||
@Resource
|
||||
NginxConf nginxConf;
|
||||
@Resource
|
||||
|
@ -71,21 +63,39 @@ public class ConfServiceTest extends AbstractServerTest {
|
|||
Assert.assertEquals("10.32.*", stringProperty.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetKeyType() {
|
||||
String type = configService.getKeyType("ip.authentication", AuthUserConstants.getAuthUsers(), "10.32.20.131");
|
||||
Assert.assertEquals("sdong", type);
|
||||
|
||||
type = configService.getKeyType("ip.authentication", AuthUserConstants.getAuthUsers(), "10.32.64.37");
|
||||
Assert.assertEquals("lsqiu", type);
|
||||
|
||||
type = configService.getKeyType("ip.authentication", AuthUserConstants.getAuthUsers(), "192.168.18.215");
|
||||
Assert.assertEquals("opSys", type);
|
||||
|
||||
type = configService.getKeyType("ip.authentication", AuthUserConstants.getAuthUsers(), "172.16.226.137");
|
||||
Assert.assertEquals("releaseSys", type);
|
||||
|
||||
type = configService.getKeyType("ip.authentication", AuthUserConstants.getAuthUsers(), "1.2.3.4");
|
||||
Assert.assertNull(type);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetStringValue() {
|
||||
try {
|
||||
String value;
|
||||
//testKey1
|
||||
value = confService.getStringValue("upstream.testKey1", null, 1L, 1L, "");
|
||||
value = configService.getStringValue("upstream.testKey1", null, 1L, 1L, "");
|
||||
Assert.assertEquals("testKey1_group1_value", value);
|
||||
value = confService.getStringValue("upstream.testKey1", null, 1L, 2L, "");
|
||||
value = configService.getStringValue("upstream.testKey1", null, 1L, 2L, "");
|
||||
Assert.assertEquals("testKey1_vs1_value", value);
|
||||
value = confService.getStringValue("upstream.testKey1", 1L, 2L, 2L, "");
|
||||
value = configService.getStringValue("upstream.testKey1", 1L, 2L, 2L, "");
|
||||
Assert.assertEquals("testKey1_slb1_value", value);
|
||||
value = confService.getStringValue("upstream.testKey1", 2L, 2L, 2L, "code_value");
|
||||
value = configService.getStringValue("upstream.testKey1", 2L, 2L, 2L, "code_value");
|
||||
Assert.assertEquals("code_value", value);
|
||||
|
||||
value = confService.getStringValue("upstream.testKey2", 1L, 1L, 1L, "code_value");
|
||||
value = configService.getStringValue("upstream.testKey2", 1L, 1L, 1L, "code_value");
|
||||
Assert.assertEquals("testKey2_default_value", value);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
@ -97,15 +107,15 @@ public class ConfServiceTest extends AbstractServerTest {
|
|||
public void testGetIntValue() {
|
||||
try {
|
||||
int value;
|
||||
value = confService.getIntValue("location.testKey1", 1L, 1L, 1L, 10);
|
||||
value = configService.getIntValue("location.testKey1", 1L, 1L, 1L, 10);
|
||||
Assert.assertEquals(4, value);
|
||||
value = confService.getIntValue("location.testKey1", 1L, 1L, 2L, 10);
|
||||
value = configService.getIntValue("location.testKey1", 1L, 1L, 2L, 10);
|
||||
Assert.assertEquals(3, value);
|
||||
value = confService.getIntValue("location.testKey1", 1L, 2L, 2L, 10);
|
||||
value = configService.getIntValue("location.testKey1", 1L, 2L, 2L, 10);
|
||||
Assert.assertEquals(2, value);
|
||||
value = confService.getIntValue("location.testKey1", 2L, 2L, 2L, 10);
|
||||
value = configService.getIntValue("location.testKey1", 2L, 2L, 2L, 10);
|
||||
Assert.assertEquals(1, value);
|
||||
value = confService.getIntValue("location.testKey1", 3L, 3L, 3L, 10);
|
||||
value = configService.getIntValue("location.testKey1", 3L, 3L, 3L, 10);
|
||||
Assert.assertEquals(1, value);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
@ -118,35 +128,35 @@ public class ConfServiceTest extends AbstractServerTest {
|
|||
try {
|
||||
boolean value;
|
||||
//testKey1
|
||||
value = confService.getEnable("server.testKey1", null, null, 1L, false);
|
||||
value = configService.getEnable("server.testKey1", null, null, 1L, false);
|
||||
Assert.assertTrue(value);
|
||||
value = confService.getEnable("server.testKey1", null, null, 2L, false);
|
||||
value = configService.getEnable("server.testKey1", null, null, 2L, false);
|
||||
Assert.assertFalse(value);
|
||||
value = confService.getEnable("server.testKey1", null, null, null, false);
|
||||
value = configService.getEnable("server.testKey1", null, null, null, false);
|
||||
Assert.assertFalse(value);
|
||||
value = confService.getEnable("server.testKey1", null, null, null, true);
|
||||
value = configService.getEnable("server.testKey1", null, null, null, true);
|
||||
Assert.assertTrue(value);
|
||||
|
||||
//testKey2
|
||||
value = confService.getEnable("server.testKey2", null, 1L, null, false);
|
||||
value = configService.getEnable("server.testKey2", null, 1L, null, false);
|
||||
Assert.assertTrue(value);
|
||||
value = confService.getEnable("server.testKey2", null, 1L, 1L, false);
|
||||
value = configService.getEnable("server.testKey2", null, 1L, 1L, false);
|
||||
Assert.assertTrue(value);
|
||||
value = confService.getEnable("server.testKey2", null, 1L, 10L, false);
|
||||
value = configService.getEnable("server.testKey2", null, 1L, 10L, false);
|
||||
Assert.assertTrue(value);
|
||||
value = confService.getEnable("server.testKey2", null, 2L, null, false);
|
||||
value = configService.getEnable("server.testKey2", null, 2L, null, false);
|
||||
Assert.assertFalse(value);
|
||||
value = confService.getEnable("server.testKey2", 1L, 2L, 1L, false);
|
||||
value = configService.getEnable("server.testKey2", 1L, 2L, 1L, false);
|
||||
Assert.assertFalse(value);
|
||||
|
||||
//testKey3
|
||||
value = confService.getEnable("server.testKey3", 1L, null, null, false);
|
||||
value = configService.getEnable("server.testKey3", 1L, null, null, false);
|
||||
Assert.assertTrue(value);
|
||||
value = confService.getEnable("server.testKey3", 1L, 1L, 1L, false);
|
||||
value = configService.getEnable("server.testKey3", 1L, 1L, 1L, false);
|
||||
Assert.assertTrue(value);
|
||||
|
||||
//testKey4
|
||||
value = confService.getEnable("server.testKey4", 1L, 1L, 1L, false);
|
||||
value = configService.getEnable("server.testKey4", 1L, 1L, 1L, false);
|
||||
Assert.assertTrue(value);
|
||||
|
||||
} catch (Exception e) {
|
Loading…
Reference in a new issue