Skip to content

Commit 5190dba

Browse files
rueianmedcl
authored andcommitted
Grant java.net.SocketPermission (infinilabs#565)
1 parent 83fa2ff commit 5190dba

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

src/main/assemblies/plugin.xml

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<outputDirectory/>
1919
<filtered>true</filtered>
2020
</file>
21+
<file>
22+
<source>${project.basedir}/src/main/resources/plugin-security.policy</source>
23+
<outputDirectory/>
24+
<filtered>true</filtered>
25+
</file>
2126
</files>
2227
<dependencySets>
2328
<dependencySet>

src/main/java/org/wltea/analyzer/dic/Dictionary.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import java.nio.file.FileVisitResult;
3737
import java.nio.file.Path;
3838
import java.nio.file.SimpleFileVisitor;
39+
import java.security.AccessController;
40+
import java.security.PrivilegedAction;
3941
import java.util.*;
4042
import java.util.concurrent.Executors;
4143
import java.util.concurrent.ScheduledExecutorService;
@@ -47,6 +49,7 @@
4749
import org.apache.http.client.methods.HttpGet;
4850
import org.apache.http.impl.client.CloseableHttpClient;
4951
import org.apache.http.impl.client.HttpClients;
52+
import org.elasticsearch.SpecialPermission;
5053
import org.elasticsearch.common.io.PathUtils;
5154
import org.elasticsearch.common.logging.ESLoggerFactory;
5255
import org.elasticsearch.plugin.analysis.ik.AnalysisIkPlugin;
@@ -439,10 +442,17 @@ private void loadRemoteExtDict() {
439442

440443
}
441444

445+
private static List<String> getRemoteWords(String location) {
446+
SpecialPermission.check();
447+
return AccessController.doPrivileged((PrivilegedAction<List<String>>) () -> {
448+
return getRemoteWordsUnprivileged(location);
449+
});
450+
}
451+
442452
/**
443453
* 从远程服务器上下载自定义词条
444454
*/
445-
private static List<String> getRemoteWords(String location) {
455+
private static List<String> getRemoteWordsUnprivileged(String location) {
446456

447457
List<String> buffer = new ArrayList<String>();
448458
RequestConfig rc = RequestConfig.custom().setConnectionRequestTimeout(10 * 1000).setConnectTimeout(10 * 1000)

src/main/java/org/wltea/analyzer/dic/Monitor.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package org.wltea.analyzer.dic;
22

33
import java.io.IOException;
4+
import java.security.AccessController;
5+
import java.security.PrivilegedAction;
46

57
import org.apache.http.client.config.RequestConfig;
68
import org.apache.http.client.methods.CloseableHttpResponse;
79
import org.apache.http.client.methods.HttpHead;
810
import org.apache.http.impl.client.CloseableHttpClient;
911
import org.apache.http.impl.client.HttpClients;
1012
import org.apache.logging.log4j.Logger;
13+
import org.elasticsearch.SpecialPermission;
1114
import org.elasticsearch.common.logging.ESLoggerFactory;
1215

1316
public class Monitor implements Runnable {
@@ -34,6 +37,15 @@ public Monitor(String location) {
3437
this.last_modified = null;
3538
this.eTags = null;
3639
}
40+
41+
public void run() {
42+
SpecialPermission.check();
43+
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
44+
this.runUnprivileged();
45+
return null;
46+
});
47+
}
48+
3749
/**
3850
* 监控流程:
3951
* ①向词库服务器发送Head请求
@@ -43,7 +55,7 @@ public Monitor(String location) {
4355
* ⑤休眠1min,返回第①步
4456
*/
4557

46-
public void run() {
58+
public void runUnprivileged() {
4759

4860
//超时设置
4961
RequestConfig rc = RequestConfig.custom().setConnectionRequestTimeout(10*1000)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
grant {
2+
// needed because of the hot reload functionality
3+
permission java.net.SocketPermission "*", "connect,resolve";
4+
};

0 commit comments

Comments
 (0)