Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ghsby
o2oa
提交
f022cde0
o2oa
项目概览
ghsby
/
o2oa
落后 Fork 源项目 2880 个版本
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f022cde0
编写于
11月 04, 2021
作者:
O
o2null
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
config.json中输出是否使用了proxyEnable
上级
7c9f178b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
122 addition
and
108 deletion
+122
-108
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServers.java
.../main/java/com/x/base/core/project/config/WebServers.java
+98
-70
o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java
.../java/com/x/server/console/server/web/WebServerTools.java
+24
-38
未找到文件。
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServers.java
浏览文件 @
f022cde0
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
IllegalState
Exception
{
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
IllegalState
Exception
(
"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
());
}
}
o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java
浏览文件 @
f022cde0
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录