提交 f022cde0 编写于 作者: O o2null

config.json中输出是否使用了proxyEnable

上级 7c9f178b
package com.x.base.core.project.config;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
......@@ -12,9 +14,6 @@ import java.util.Objects;
import java.util.Random;
import java.util.concurrent.ConcurrentSkipListMap;
import com.x.base.core.project.connection.ActionResponse;
import com.x.base.core.project.connection.CipherConnectionAction;
import com.x.base.core.project.connection.ConnectionAction;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.BooleanUtils;
......@@ -33,6 +32,8 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
private static final String MAP_LOGINPAGE = "loginPage";
private static final Random RANDOM = new SecureRandom();
public WebServers() {
super();
}
......@@ -40,15 +41,13 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
public WebServers(Nodes nodeConfigs) {
for (Entry<String, Node> o : nodeConfigs.entrySet()) {
WebServer server = o.getValue().getWeb();
if (null != server) {
if (BooleanUtils.isTrue(server.getEnable())) {
this.put(o.getKey(), server);
}
if ((null != server) && BooleanUtils.isTrue(server.getEnable())) {
this.put(o.getKey(), server);
}
}
}
public Entry<String, WebServer> getRandom() throws Exception {
public Entry<String, WebServer> getRandom() throws IllegalStateException {
List<Entry<String, WebServer>> list = new ArrayList<>();
for (Entry<String, WebServer> o : this.entrySet()) {
if (BooleanUtils.isTrue(o.getValue().getEnable())) {
......@@ -63,8 +62,8 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
for (Entry<String, WebServer> o : list) {
total += o.getValue().getWeight();
}
Random random = new Random();
int rdm = random.nextInt(total);
int rdm = RANDOM.nextInt(total);
int current = 0;
for (Entry<String, WebServer> o : list) {
current += o.getValue().getWeight();
......@@ -72,15 +71,12 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
return o;
}
}
throw new Exception("randomWithWeight error.");
throw new IllegalStateException("randomWithWeight error.");
}
private void sortWithWeight(List<Entry<String, WebServer>> list) {
Collections.sort(list, new Comparator<Entry<String, WebServer>>() {
public int compare(Entry<String, WebServer> o1, Entry<String, WebServer> o2) {
return ObjectUtils.compare(o1.getValue().getWeight(), o2.getValue().getWeight(), true);
}
});
Collections.sort(list,
(o1, o2) -> ObjectUtils.compare(o1.getValue().getWeight(), o2.getValue().getWeight(), true));
}
public static void updateWebServerConfigJson() throws Exception {
......@@ -91,8 +87,11 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
Gson gson = XGsonBuilder.instance();
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
/** 覆盖掉配置的参数 */
// 先取本节点的center如果没有那么取第一个center
/**
* 覆盖掉配置的参数
* <p>
* 先取本节点的center如果没有那么取第一个center
*/
com.x.base.core.project.config.CenterServer centerServerConfig = Config.currentNode().getCenter();
List<Map<String, String>> centers = new ArrayList<>();
map.put("center", centers);
......@@ -127,45 +126,17 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
centers.add(center);
}
map.putAll(centerServerConfig.getConfig());
// /** 写入center地址 */
// Map<String, String> center = new HashMap<String, String>();
// center.put("host", "");
// center.put("port", centerServerConfig.getPort().toString());
// centers.add(center);
// if (!Objects.equals(centerServerConfig.getProxyPort(), centerServerConfig.getPort())) {
// center = new HashMap<String, String>();
// center.put("host", "");
// center.put("port", centerServerConfig.getProxyPort().toString());
// centers.add(center);
// }
//
// String host = Config.nodes().primaryCenterNode();
// if (!Host.isRollback(host)) {
// center = new HashMap<String, String>();
// center.put("host", host);
// center.put("port", centerServerConfig.getPort().toString());
// centers.add(center);
// }
// /** 写入proxy地址 */
// if (StringUtils.isNotEmpty(centerServerConfig.getProxyHost())) {
// center = new HashMap<String, String>();
// center.put("host", centerServerConfig.getProxyHost());
// center.put("port", centerServerConfig.getProxyPort().toString());
// centers.add(center);
// }
/** 写入systemName */
map.put("footer", Config.collect().getFooter());
map.put("title", Config.collect().getTitle());
map.put("version", Config.version());
map.put("appUrl", Config.collect().getAppUrl());
/***/
if (BooleanUtils.isTrue(centerServerConfig.getSslEnable())) {
map.put("app_protocol", "https:");
} else {
map.put("app_protocol", "http:");
}
/* 上面的无效 */
/**
* if (BooleanUtils.isTrue(centerServerConfig.getSslEnable())) { //
* map.put("app_protocol", "https:"); // } else { // map.put("app_protocol",
* "http:"); // } 上面的无效
*/
map.put("app_protocol", "auto");
if ((null != Config.portal().getLoginPage())
&& (BooleanUtils.isTrue(Config.portal().getLoginPage().getEnable()))) {
......@@ -180,24 +151,11 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
map.put("webSocketEnable", Config.communicate().wsEnable());
map.put("urlMapping", Config.portal().getUrlMapping());
/* 密码规则 */
map.put("passwordRegex", Config.person().getPasswordRegex());
map.put("passwordRegexHint", Config.person().getPasswordRegexHint());
/* 平台语言 */
map.put("language", Config.person().getLanguage());
/* 平台TokenName */
map.put("tokenName", Config.person().getTokenName());
/* RSA */
File publicKeyFile = new File(Config.base(), "config/public.key");
if (publicKeyFile.exists() && publicKeyFile.isFile()) {
String publicKey = FileUtils.readFileToString(publicKeyFile, "utf-8");
byte[] publicKeyB = org.apache.commons.codec.binary.Base64.decodeBase64(publicKey);
publicKey = new String(Base64.encodeBase64(publicKeyB));
map.put("publicKey", publicKey);
}
// 是否启用安全注销
map.put("enableSafeLogout", Config.person().getEnableSafeLogout());
writeWebServerConfigPasswordPolicy(map);
writeWebServerConfigLanguage(map);
writeWebServerConfigTokenName(map);
writeWebServerConfigRsa(map);
writeWebServerConfigSafeLogout(map);
for (Entry<String, JsonElement> en : Config.web().entrySet()) {
map.put(en.getKey(), en.getValue());
......@@ -205,6 +163,76 @@ public class WebServers extends ConcurrentSkipListMap<String, WebServer> {
for (Entry<String, JsonElement> en : Config.mock().entrySet()) {
map.put(en.getKey(), en.getValue());
}
writeWebServerConfigProxyEnable(map, Config.currentNode().getWeb());
FileUtils.writeStringToFile(file, gson.toJson(map), DefaultCharset.charset);
}
/**
* 是否启用安全注销
*
* @param map
* @throws Exception
*/
private static void writeWebServerConfigSafeLogout(LinkedHashMap<String, Object> map) throws Exception {
map.put("enableSafeLogout", Config.person().getEnableSafeLogout());
}
/**
* 如果启用了rsa加密,输出public.key
*
* @param map
* @throws Exception
* @throws IOException
*/
private static void writeWebServerConfigRsa(LinkedHashMap<String, Object> map) throws Exception {
File publicKeyFile = new File(Config.base(), "config/public.key");
if (publicKeyFile.exists() && publicKeyFile.isFile()) {
String publicKey = FileUtils.readFileToString(publicKeyFile, StandardCharsets.UTF_8.name());
byte[] publicKeyB = org.apache.commons.codec.binary.Base64.decodeBase64(publicKey);
publicKey = new String(Base64.encodeBase64(publicKeyB));
map.put("publicKey", publicKey);
}
}
/**
* 平台TokenName
*
* @param map
* @throws Exception
*/
private static void writeWebServerConfigTokenName(LinkedHashMap<String, Object> map) throws Exception {
map.put("tokenName", Config.person().getTokenName());
}
/**
* 平台语言
*
* @param map
* @throws Exception
*/
private static void writeWebServerConfigLanguage(LinkedHashMap<String, Object> map) throws Exception {
map.put("language", Config.person().getLanguage());
}
/**
* 写入密码规则
*
* @param map
* @throws Exception
*/
private static void writeWebServerConfigPasswordPolicy(LinkedHashMap<String, Object> map) throws Exception {
map.put("passwordRegex", Config.person().getPasswordRegex());
map.put("passwordRegexHint", Config.person().getPasswordRegexHint());
}
/**
* 写入是否启用了center和application的代理
*
* @param o
* @param webServer
*/
private static void writeWebServerConfigProxyEnable(Map<String, Object> o, WebServer webServer) {
o.put("proxyApplicationEnable", webServer.getProxyApplicationEnable());
o.put("proxyCenterEnable", webServer.getProxyCenterEnable());
}
}
......@@ -71,11 +71,8 @@ public class WebServerTools extends JettySeverTools {
WebAppContext context = new WebAppContext();
context.setContextPath("/");
context.setBaseResource(Resource.newResource(new File(Config.base(), "servers/webServer")));
// context.setResourceBase(".");
context.setParentLoaderPriority(true);
context.setExtractWAR(false);
// context.setDefaultsDescriptor(new File(Config.base(),
// "commons/webdefault_w.xml").getAbsolutePath());
context.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "" + webServer.getDirAllowed());
context.setInitParameter("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");
if (webServer.getCacheControlMaxAge() > 0) {
......@@ -89,7 +86,7 @@ public class WebServerTools extends JettySeverTools {
context.setParentLoaderPriority(true);
context.getMimeTypes().addMimeMapping("wcss", "application/json");
/* stat */
if (webServer.getStatEnable()) {
if (BooleanUtils.isTrue(webServer.getStatEnable())) {
FilterHolder statFilterHolder = new FilterHolder(new WebStatFilter());
statFilterHolder.setInitParameter("exclusions", webServer.getStatExclusions());
context.addFilter(statFilterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
......@@ -175,11 +172,6 @@ public class WebServerTools extends JettySeverTools {
}
}
// private static void updateWeb() throws Exception {
// Path path = Config.path_servers_webServer_x_desktop_res_config(true);
// Files.write(path.resolve("web.json"), XGsonBuilder.toJson(Config.web()).getBytes(StandardCharsets.UTF_8));
// }
private static void updateFavicon() throws Exception {
File file = new File(Config.dir_config(), "favicon.ico");
......@@ -191,37 +183,31 @@ public class WebServerTools extends JettySeverTools {
}
private static void createIndexPage() throws Exception {
if (null != Config.nodes().webServers()) {
StringBuilder sb = new StringBuilder();
sb.append("<!DOCTYPE html>");
sb.append("<html>");
sb.append("<head>");
sb.append("<meta charset=\"UTF-8\">");
sb.append("<title>o2 index</title>");
sb.append("</head>");
sb.append("<body>");
for (Entry<String, WebServer> en : Config.nodes().webServers().entrySet()) {
WebServer o = en.getValue();
if (BooleanUtils.isTrue(o.getEnable())) {
String url = BooleanUtils.isTrue(o.getSslEnable()) ? "https://" : "http://";
url += en.getKey();
if (BooleanUtils.isTrue(o.getSslEnable())) {
if (o.getPort() != 443) {
url += ":" + o.getPort();
}
} else {
if (o.getPort() != 80) {
url += ":" + o.getPort();
}
}
sb.append("<a href=\"" + url + "\">" + url + "</a><br/>");
}
if (null == Config.nodes().webServers()) {
return;
}
StringBuilder sb = new StringBuilder();
sb.append("<!DOCTYPE html>").append("<html>").append("<head>").append("<meta charset=\"UTF-8\">")
.append("<title>o2 index</title>").append("</head>").append("<body>");
for (Entry<String, WebServer> en : Config.nodes().webServers().entrySet()) {
createIndexPagePerWebServer(sb, en);
}
sb.append("</body>").append("</html>");
File file = new File(Config.base(), "index.html");
FileUtils.write(file, sb.toString(), DefaultCharset.name);
}
private static void createIndexPagePerWebServer(StringBuilder sb, Entry<String, WebServer> en) {
WebServer o = en.getValue();
if (BooleanUtils.isTrue(o.getEnable())) {
String url = BooleanUtils.isTrue(o.getSslEnable()) ? "https://" : "http://";
url += en.getKey();
if (BooleanUtils.isTrue(o.getSslEnable())) {
url += o.getPort() != 443 ? (":" + o.getPort()) : "";
} else {
url += o.getPort() != 80 ? (":" + o.getPort()) : "";
}
sb.append("</body>");
sb.append("</html>");
File file = new File(Config.base(), "index.html");
FileUtils.write(file, sb.toString(), DefaultCharset.name);
sb.append("<a href=\"" + url + "\">" + url + "</a><br/>");
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册