Skip to content

Commit 9eec12f

Browse files
authored
Merge pull request #70 from jumpserver/dev
v4.5.0
2 parents f6da3e8 + f8a55df commit 9eec12f

File tree

8 files changed

+5445
-370
lines changed

8 files changed

+5445
-370
lines changed

.github/workflows/release-drafter.yml

+34-13
Original file line numberDiff line numberDiff line change
@@ -10,55 +10,76 @@ jobs:
1010
create-realese:
1111
name: Create Release
1212
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
java_version: [ '17' ]
16+
node_version: [ '20' ]
1317
outputs:
1418
upload_url: ${{ steps.create_release.outputs.upload_url }}
1519
steps:
16-
- name: Checkout code
17-
uses: actions/checkout@v2
20+
- uses: actions/checkout@v4
21+
- uses: actions/cache@v4
22+
with:
23+
path: |
24+
~/.m2
25+
~/.npm
26+
~/.cache
27+
key: ${{ runner.os }}-build-${{ github.sha }}
28+
restore-keys: ${{ runner.os }}-build-
29+
1830
- name: Get version
1931
id: get_version
2032
run: |
2133
TAG=$(basename ${GITHUB_REF})
22-
echo "::set-output name=TAG::$TAG"
34+
echo "TAG=$TAG" >> $GITHUB_OUTPUT
35+
2336
- name: Create Release
2437
id: create_release
25-
uses: release-drafter/release-drafter@v5
38+
uses: release-drafter/release-drafter@v6
2639
env:
2740
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2841
with:
2942
config-name: release-config.yml
3043
version: ${{ steps.get_version.outputs.TAG }}
3144
tag: ${{ steps.get_version.outputs.TAG }}
32-
- uses: actions/setup-node@v3
45+
46+
- uses: actions/setup-node@v4
3347
with:
34-
node-version: '20.15'
48+
node-version: ${{ matrix.node_version }}
49+
50+
- uses: actions/setup-java@v4
51+
with:
52+
distribution: 'oracle'
53+
java-version: ${{ matrix.java_version }}
54+
3555
- name: Build web
3656
run: |
3757
cd frontend
3858
yarn install
3959
yarn build
40-
- uses: actions/setup-java@v3
41-
with:
42-
distribution: 'temurin'
43-
java-version: '17'
60+
4461
- name: Build chen
4562
run: |
4663
mvn clean package -DskipTests
4764
mkdir -p build chen-${{ steps.get_version.outputs.TAG }}
4865
rm -f config/application-dev.yml
66+
mv README.md chen-${{ steps.get_version.outputs.TAG }}/README.md
67+
mv LICENSE chen-${{ steps.get_version.outputs.TAG }}/LICENSE
68+
mv entrypoint.sh chen-${{ steps.get_version.outputs.TAG }}/entrypoint.sh
4969
mv backend/web/target/web-*.jar chen-${{ steps.get_version.outputs.TAG }}/chen.jar
5070
mv drivers chen-${{ steps.get_version.outputs.TAG }}/drivers
5171
mv config chen-${{ steps.get_version.outputs.TAG }}/config
5272
tar -zcvf chen-${{ steps.get_version.outputs.TAG }}.tar.gz chen-${{ steps.get_version.outputs.TAG }}
5373
echo $(md5sum chen-${{ steps.get_version.outputs.TAG }}.tar.gz | awk '{print $1}') > build/chen-${{ steps.get_version.outputs.TAG }}.tar.gz.md5
5474
mv chen-${{ steps.get_version.outputs.TAG }}.tar.gz build/
75+
5576
- name: Release Upload Assets
56-
uses: softprops/action-gh-release@v1
77+
uses: softprops/action-gh-release@v2
5778
if: startsWith(github.ref, 'refs/tags/')
5879
with:
5980
draft: true
6081
files: |
61-
build/chen-${{ steps.get_version.outputs.TAG }}.tar.gz
62-
build/chen-${{ steps.get_version.outputs.TAG }}.tar.gz.md5
82+
build/*.gz
83+
build/*.md5
6384
env:
6485
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Dockerfile

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM jumpserver/chen-base:20241009_104417 AS stage-build
1+
FROM jumpserver/chen-base:20241212_102050 AS stage-build
22
ENV LANG=en_US.UTF-8
33

44
WORKDIR /opt/chen/
@@ -16,15 +16,14 @@ ARG DEPENDENCIES=" \
1616
openjdk-17-jre-headless"
1717

1818
ARG APT_MIRROR=http://deb.debian.org
19-
RUN sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
20-
&& rm -f /etc/apt/apt.conf.d/docker-clean \
19+
20+
RUN set -ex \
21+
&& sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
2122
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
2223
&& apt-get update \
2324
&& apt-get install -y --no-install-recommends ${DEPENDENCIES} \
2425
&& echo "no" | dpkg-reconfigure dash \
25-
&& sed -i "[email protected]=SSLv3, TLSv1, [email protected]=SSLv3@" /etc/java-17-openjdk/security/java.security \
26-
&& sed -i "s@# export @export @g" ~/.bashrc \
27-
&& sed -i "s@# alias @alias @g" ~/.bashrc
26+
&& sed -i "[email protected]=SSLv3, TLSv1, [email protected]=SSLv3@" /etc/java-17-openjdk/security/java.security
2827

2928
WORKDIR /opt/chen
3029

Dockerfile-base

+5-8
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ ARG DEPENDENCIES=" \
99
wget"
1010

1111
ARG APT_MIRROR=http://deb.debian.org
12+
1213
RUN set -ex \
13-
&& rm -f /etc/apt/apt.conf.d/docker-clean \
14-
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache \
1514
&& sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
1615
&& apt-get update \
1716
&& apt-get -y install --no-install-recommends ${DEPENDENCIES} \
@@ -20,24 +19,22 @@ RUN set -ex \
2019
&& rm -rf /var/lib/apt/lists/*
2120

2221
# Install tools and dependencies
23-
ARG CHECK_VERSION=v1.0.3
22+
ARG CHECK_VERSION=v1.0.4
2423
RUN set -ex \
2524
&& wget https://github.com/jumpserver-dev/healthcheck/releases/download/${CHECK_VERSION}/check-${CHECK_VERSION}-linux-${TARGETARCH}.tar.gz \
26-
&& tar -xf check-${CHECK_VERSION}-linux-${TARGETARCH}.tar.gz \
27-
&& mv check /usr/local/bin/ \
25+
&& tar -xf check-${CHECK_VERSION}-linux-${TARGETARCH}.tar.gz -C /usr/local/bin/ check \
2826
&& chown root:root /usr/local/bin/check \
2927
&& chmod 755 /usr/local/bin/check \
3028
&& rm -f check-${CHECK_VERSION}-linux-${TARGETARCH}.tar.gz
3129

32-
ARG WISP_VERSION=v0.2.2
30+
ARG WISP_VERSION=v0.2.5
3331
RUN set -ex \
3432
&& wget https://github.com/jumpserver/wisp/releases/download/${WISP_VERSION}/wisp-${WISP_VERSION}-linux-${TARGETARCH}.tar.gz \
3533
&& tar -xf wisp-${WISP_VERSION}-linux-${TARGETARCH}.tar.gz -C /usr/local/bin/ --strip-components=1 \
3634
&& chown root:root /usr/local/bin/wisp \
3735
&& chmod 755 /usr/local/bin/wisp \
3836
&& rm -f /opt/*.tar.gz
3937

40-
4138
# Install NPM dependencies
4239
WORKDIR /opt/chen/frontend
4340
COPY frontend/package.json frontend/package-lock.json frontend/yarn.lock ./
@@ -46,7 +43,7 @@ RUN --mount=type=cache,target=/usr/local/share/.cache/yarn,sharing=locked,id=che
4643
npm install
4744

4845
# Install Maven dependencies
49-
ARG MAVEN_VERSION=3.9.7
46+
ARG MAVEN_VERSION=3.9.9
5047
ARG USER_HOME_DIR="/root"
5148
ARG BASE_URL=https://downloads.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries
5249
ARG MAVEN_MIRROR=https://repo.maven.apache.org/maven2

backend/web/src/main/java/org/jumpserver/chen/web/service/impl/JmsSessionService.java

+39-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import lombok.extern.slf4j.Slf4j;
44
import net.devh.boot.grpc.client.inject.GrpcClient;
5+
import org.apache.commons.lang3.StringUtils;
56
import org.jumpserver.chen.framework.datasource.Datasource;
67
import org.jumpserver.chen.framework.datasource.DatasourceFactory;
78
import org.jumpserver.chen.framework.datasource.entity.DBConnectInfo;
@@ -13,6 +14,8 @@
1314
import org.jumpserver.wisp.ServiceOuterClass;
1415
import org.springframework.stereotype.Service;
1516

17+
import java.net.InetAddress;
18+
import java.net.UnknownHostException;
1619
import java.time.Instant;
1720

1821
@Service
@@ -25,6 +28,22 @@ public Session createNewSession(String token, String remoteAddr) {
2528

2629
var tokenResp = this.getTokenResponse(token);
2730
var jmsSession = this.createJMSSession(tokenResp, remoteAddr);
31+
32+
if (StringUtils.isNotBlank(tokenResp.getData().getFaceMonitorToken())) {
33+
var faceMonitorToken = tokenResp.getData().getFaceMonitorToken();
34+
35+
var req = ServiceOuterClass.JoinFaceMonitorRequest.newBuilder()
36+
.setFaceMonitorToken(faceMonitorToken)
37+
.setSessionId(jmsSession.getId())
38+
.build();
39+
40+
var resp = serviceBlockingStub.joinFaceMonitor(req);
41+
if (!resp.getStatus().getOk()) {
42+
throw new RuntimeException("Create face monitor context failed");
43+
}
44+
}
45+
46+
2847
var datasource = this.createDatasource(tokenResp);
2948
var session = new JMSSession(jmsSession, datasource, remoteAddr, this.serviceBlockingStub, tokenResp);
3049
this.handleGateways(tokenResp, session, datasource);
@@ -80,10 +99,29 @@ private ServiceOuterClass.TokenResponse getTokenResponse(String token) {
8099
}
81100
}
82101

102+
public static String getIPAddressType(String host) {
103+
try {
104+
InetAddress address = InetAddress.getByName(host);
105+
106+
if (address.getHostAddress().contains(":")) {
107+
return "IPv6";
108+
} else {
109+
return "IPv4";
110+
}
111+
} catch (UnknownHostException e) {
112+
return "Unknown";
113+
}
114+
}
115+
83116
private Datasource createDatasource(ServiceOuterClass.TokenResponse tokenResp) {
84117
DBConnectInfo dbConnectInfo = new DBConnectInfo();
85118

86-
dbConnectInfo.setHost(tokenResp.getData().getAsset().getAddress());
119+
var address = tokenResp.getData().getAsset().getAddress();
120+
121+
address = getIPAddressType(address).equals("IPv6") ?
122+
String.format("[%s]", address) : address;
123+
124+
dbConnectInfo.setHost(address);
87125
dbConnectInfo.setPort(tokenResp.getData().getAsset().getProtocols(0).getPort());
88126
dbConnectInfo.setDbType(tokenResp.getData().getAsset().getProtocols(0).getName().toLowerCase());
89127
dbConnectInfo.setUser(tokenResp.getData().getAccount().getUsername());

0 commit comments

Comments
 (0)