Skip to content

Commit 1f42f11

Browse files
committed
update framework
1 parent a49c9b1 commit 1f42f11

File tree

7 files changed

+59
-30
lines changed

7 files changed

+59
-30
lines changed

publiccms-parent/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ subprojects {
130130
// https://mvnrepository.com/artifact/com.github.therapi/therapi-runtime-javadoc
131131
therapiJavadocVersion = "0.15.0"
132132
// https://mvnrepository.com/artifact/org.jsoup/jsoup
133-
jsoupVersion = "1.21.1"
133+
jsoupVersion = "1.22.1"
134134
// https://mvnrepository.com/artifact/jakarta.annotation/jakarta.annotation-api
135135
annotationVersion = "1.3.5"
136136
// https://mvnrepository.com/artifact/jakarta.mail/jakarta.mail-api

publiccms-parent/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@
123123
<!-- https://mvnrepository.com/artifact/com.github.therapi/therapi-runtime-javadoc -->
124124
<version.therapiJavadoc>0.15.0</version.therapiJavadoc>
125125
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
126-
<version.jsoup>1.21.1</version.jsoup>
126+
<version.jsoup>1.22.1</version.jsoup>
127127
<!-- https://mvnrepository.com/artifact/jakarta.annotation/jakarta.annotation-api -->
128128
<version.annotation>1.3.5</version.annotation>
129129
<!-- https://mvnrepository.com/artifact/jakarta.mail/jakarta.mail-api -->

publiccms-parent/publiccms-analyzer/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ dependencies {
1010

1111
implementation "org.apache.lucene:lucene-analyzers-smartcn:${luceneVersion}"
1212
// https://mvnrepository.com/artifact/org.lionsoul/ip2region
13-
implementation 'org.lionsoul:ip2region:3.3.1'
13+
implementation 'org.lionsoul:ip2region:3.3.3'
1414
implementation "javax.servlet:javax.servlet-api:${servletVersion}"
1515
}

publiccms-parent/publiccms-analyzer/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<dependency>
2222
<groupId>org.lionsoul</groupId>
2323
<artifactId>ip2region</artifactId>
24-
<version>3.3.1</version>
24+
<version>3.3.3</version>
2525
</dependency>
2626
<dependency>
2727
<groupId>com.github.therapi</groupId>

publiccms-parent/publiccms-analyzer/src/main/java/com/publiccms/views/method/tools/GetIpRegionMethod.java

Lines changed: 53 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
package com.publiccms.views.method.tools;
22

3+
import java.io.File;
34
import java.io.IOException;
4-
import java.io.InputStream;
55
import java.util.List;
66

7-
import org.apache.commons.io.IOUtils;
7+
import javax.annotation.PreDestroy;
8+
89
import org.apache.commons.lang3.StringUtils;
9-
import org.lionsoul.ip2region.xdb.LongByteArray;
10-
import org.lionsoul.ip2region.xdb.Searcher;
11-
import org.lionsoul.ip2region.xdb.Version;
10+
import org.lionsoul.ip2region.service.Config;
11+
import org.lionsoul.ip2region.service.InvalidConfigException;
12+
import org.lionsoul.ip2region.service.Ip2Region;
13+
import org.lionsoul.ip2region.xdb.XdbException;
1214
import org.springframework.stereotype.Component;
1315

1416
import com.publiccms.common.base.BaseMethod;
17+
import com.publiccms.common.constants.CommonConstants;
18+
import com.publiccms.common.tools.AnalyzerDictUtils;
1519
import com.publiccms.common.tools.CommonUtils;
16-
import com.publiccms.common.tools.IpUtils;
1720
import com.publiccms.views.pojo.entities.IpRegion;
1821

1922
import freemarker.template.TemplateModel;
@@ -43,34 +46,51 @@
4346
*/
4447
@Component
4548
public class GetIpRegionMethod extends BaseMethod {
46-
private static LongByteArray longByteArray;
49+
private static Ip2Region ip2Region = null;
4750

48-
public GetIpRegionMethod() {
49-
try (InputStream inputStream = GetIpRegionMethod.class.getResourceAsStream("/ip2region_v4.xdb")) {
50-
longByteArray = new LongByteArray(IOUtils.toByteArray(inputStream));
51-
} catch (IOException e) {
52-
e.printStackTrace();
53-
longByteArray = null;
51+
private void init() {
52+
if (null == ip2Region) {
53+
synchronized (ip2Region) {
54+
try {
55+
if (null == ip2Region) {
56+
Config v4Config = null;
57+
File ipv4 = getFilePath("ip2region_v4.xdb");
58+
File ipv6 = getFilePath("ip2region_v6.xdb");
59+
if (ipv4.exists()) {
60+
Config.custom().setCachePolicy(Config.VIndexCache).setSearchers(20).setXdbFile(ipv4).asV4();
61+
} else {
62+
Config.custom().setCachePolicy(Config.BufferCache)
63+
.setXdbInputStream(GetIpRegionMethod.class.getResourceAsStream("/ip2region_v4.xdb")).asV4();
64+
}
65+
Config v6Config = null;
66+
if (ipv6.exists()) {
67+
v6Config = Config.custom().setCachePolicy(Config.VIndexCache).setSearchers(20).setXdbFile(ipv6)
68+
.asV6();
69+
}
70+
ip2Region = Ip2Region.create(v4Config, v6Config);
71+
}
72+
} catch (IOException | XdbException | InvalidConfigException e) {
73+
}
74+
}
5475
}
5576
}
5677

78+
private File getFilePath(String path) {
79+
File file = new File(CommonUtils.joinString(CommonConstants.CMS_FILEPATH, AnalyzerDictUtils.DIR_DICT, path));
80+
return file;
81+
}
82+
5783
@Override
5884
public Object execute(List<TemplateModel> arguments) throws TemplateModelException {
5985
String ip = getString(0, arguments);
60-
if (CommonUtils.notEmpty(ip) && IpUtils.isIpv4(ip) && null != longByteArray) {
61-
Searcher searcher = null;
86+
if (CommonUtils.notEmpty(ip)) {
6287
try {
63-
searcher = Searcher.newWithBuffer(Version.IPv4, longByteArray);
64-
return getIpRegion(searcher.search(ip));
88+
init();
89+
if (null != ip2Region) {
90+
return getIpRegion(ip2Region.search(ip));
91+
}
6592
} catch (Exception e) {
6693
log.error(e.getMessage());
67-
} finally {
68-
if (null != searcher) {
69-
try {
70-
searcher.close();
71-
} catch (IOException e) {
72-
}
73-
}
7494
}
7595
}
7696
return null;
@@ -104,4 +124,13 @@ private static IpRegion getIpRegion(String region) {
104124
return ipRegion;
105125
}
106126

127+
@PreDestroy
128+
public void destroy() {
129+
if (null != ip2Region) {
130+
try {
131+
ip2Region.close();
132+
} catch (InterruptedException e) {
133+
}
134+
}
135+
}
107136
}

publiccms-parent/publiccms-oss/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies {
88
implementation project(':publiccms-core')
99

1010
// https://mvnrepository.com/artifact/software.amazon.awssdk/s3
11-
implementation "software.amazon.awssdk:s3:2.40.9"
11+
implementation "software.amazon.awssdk:s3:2.41.1"
1212

1313
compileOnly "com.github.therapi:therapi-runtime-javadoc-scribe:${therapiJavadocVersion}"
1414
compileOnly "javax.servlet:javax.servlet-api:${servletVersion}"

publiccms-parent/publiccms-oss/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<dependency>
2020
<groupId>software.amazon.awssdk</groupId>
2121
<artifactId>s3</artifactId>
22-
<version>2.40.9</version>
22+
<version>2.41.1</version>
2323
</dependency>
2424
<dependency>
2525
<groupId>com.github.therapi</groupId>

0 commit comments

Comments
 (0)