Skip to content

Commit

Permalink
Merge pull request #43 from jumpserver/dev
Browse files Browse the repository at this point in the history
merge: from dev to master
  • Loading branch information
BaiJiangJie committed Sep 19, 2024
2 parents 339d68c + 4d8e978 commit 24a6ffb
Show file tree
Hide file tree
Showing 36 changed files with 7,488 additions and 11,125 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-base-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
Expand Down
File renamed without changes.
12 changes: 1 addition & 11 deletions .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
tag: ${{ steps.get_version.outputs.TAG }}
- uses: actions/setup-node@v3
with:
node-version: '16.20'
node-version: '20.15'
- name: Build web
run: |
cd frontend
Expand Down Expand Up @@ -62,13 +62,3 @@ jobs:
build/chen-${{ steps.get_version.outputs.TAG }}.tar.gz.md5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: sync chen-release
env:
REPO_URL: jumpserver/chen-release
TAG_NAME: ${{ steps.get_version.outputs.TAG }}
BRANCH: master
ACCESS_TOKEN: ${{ secrets.PRIVATE_TOKEN }}
FILE_PATTERN: "build/*"
run: |
wget "https://github.com/LeeEirc/ghaction/releases/download/v0.0.2/ghrcreate-linux-amd64"
chmod +x ghrcreate-linux-amd64 && ./ghrcreate-linux-amd64
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM jumpserver/chen-base:20240808_094305 AS stage-build
FROM jumpserver/chen-base:20240913_102042 AS stage-build
ENV LANG=en_US.UTF-8

WORKDIR /opt/chen/
Expand All @@ -7,7 +7,7 @@ COPY . .
RUN cd frontend \
&& npm run build

RUN mvn clean package -DskipTests
RUN mvn clean package -Dmaven.test.skip=true

FROM debian:bullseye-slim

Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-base
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ RUN set -ex \
&& chmod 755 /usr/local/bin/check \
&& rm -f check-${CHECK_VERSION}-linux-${TARGETARCH}.tar.gz

ARG WISP_VERSION=v0.1.22
ARG WISP_VERSION=v0.2.1
RUN set -ex \
&& wget https://github.com/jumpserver/wisp/releases/download/${WISP_VERSION}/wisp-${WISP_VERSION}-linux-${TARGETARCH}.tar.gz \
&& tar -xf wisp-${WISP_VERSION}-linux-${TARGETARCH}.tar.gz -C /usr/local/bin/ --strip-components=1 \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,17 @@
import org.jumpserver.chen.framework.i18n.MessageUtils;
import org.jumpserver.chen.framework.jms.entity.CommandRecord;
import org.jumpserver.chen.framework.session.SessionManager;
import org.jumpserver.chen.framework.session.controller.dialog.Button;
import org.jumpserver.chen.framework.session.controller.dialog.Dialog;
import org.jumpserver.chen.framework.utils.TreeUtils;
import org.jumpserver.chen.framework.ws.io.Packet;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.wisp.Common;
import org.springframework.web.socket.WebSocketSession;

import java.sql.SQLException;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;

public class DataViewConsole extends AbstractConsole {

Expand Down Expand Up @@ -110,6 +114,7 @@ public void createDataView(String schemaName, String tableName) {
.getSqlActuator()
.createPlan(schemaName, tableName, null);
var sql = plan.getTargetSQL();

var aclResult = session.checkACL(sql);
if (aclResult != null && (aclResult.getRiskLevel() == Common.RiskLevel.Reject || aclResult.getRiskLevel() == Common.RiskLevel.ReviewReject)) {
this.getConsoleLogger().error("%s", MessageUtils.get("ACLRejectError"));
Expand All @@ -121,6 +126,42 @@ public void createDataView(String schemaName, String tableName) {
this.stateManager.commit();
throw new SQLException(MessageUtils.get("ACLRejectError"));
}

if (aclResult!=null && aclResult.isNotify()) {

var dialog = new Dialog(MessageUtils.get("Warning"));
dialog.setBody(MessageUtils.get("CommandWarningDialogMessage"));
var countDownLatch = new CountDownLatch(1);
AtomicBoolean hasNext = new AtomicBoolean(true);

dialog.addButton(new Button(MessageUtils.get("Submit"), "submit", countDownLatch::countDown));

dialog.addButton(new Button(MessageUtils.get("Cancel"), "cancel", () -> {
hasNext.set(false);
countDownLatch.countDown();
this.getConsoleLogger().warn(MessageUtils.get("ExecutionCanceled"));
}));

SessionManager.getCurrentSession().getController().showDialog(dialog);

try {
countDownLatch.await();

if (!hasNext.get()) {
throw new SQLException(MessageUtils.get("ExecutionCanceled"));
}

} catch (InterruptedException e) {
this.stateManager.commit();

this.getConsoleLogger().error("get result error");
} finally {
SessionManager.getCurrentSession().getController().closeDialog();
}
}



plan.setSqlQueryParams(sqlQueryParams);
plan.generateTargetSQL();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@
import org.jumpserver.chen.framework.jms.acl.ACLResult;
import org.jumpserver.chen.framework.jms.entity.CommandRecord;
import org.jumpserver.chen.framework.session.SessionManager;
import org.jumpserver.chen.framework.session.controller.dialog.Button;
import org.jumpserver.chen.framework.session.controller.dialog.Dialog;
import org.jumpserver.chen.framework.utils.TreeUtils;
import org.jumpserver.chen.framework.ws.io.Packet;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.wisp.Common;
import org.springframework.web.socket.WebSocketSession;

import java.io.IOException;
Expand All @@ -32,6 +34,8 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicBoolean;

@Slf4j
public class QueryConsole extends AbstractConsole {
Expand Down Expand Up @@ -272,6 +276,42 @@ public void onSQL(String sql) {
this.stateManager.commit();
return;
}

if (aclResult.isNotify()) {

var dialog = new Dialog(MessageUtils.get("Warning"));
dialog.setBody(MessageUtils.get("CommandWarningDialogMessage"));
var countDownLatch = new CountDownLatch(1);
AtomicBoolean hasNext = new AtomicBoolean(true);

dialog.addButton(new Button(MessageUtils.get("Submit"), "submit", countDownLatch::countDown));

dialog.addButton(new Button(MessageUtils.get("Cancel"), "cancel", () -> {
hasNext.set(false);
countDownLatch.countDown();
this.getConsoleLogger().warn(MessageUtils.get("ExecutionCanceled"));
}));

SessionManager.getCurrentSession().getController().showDialog(dialog);

try {
countDownLatch.await();

if (!hasNext.get()) {
this.getState().setInQuery(false);
this.stateManager.commit();
return;
}

} catch (InterruptedException e) {
this.getState().setInQuery(false);
this.stateManager.commit();

this.getConsoleLogger().error("获取结果失败!");
} finally {
SessionManager.getCurrentSession().getController().closeDialog();
}
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import org.jumpserver.chen.framework.driver.DriverClassLoader;
import org.jumpserver.chen.framework.driver.DriverManager;
import org.jumpserver.chen.framework.i18n.MessageUtils;
import org.jumpserver.chen.framework.ssl.JKSGenerator;

import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
Expand Down Expand Up @@ -50,32 +49,7 @@ public void ping(String jdbcUrl) throws SQLException {
this.ping(jdbcUrl, props);
}

protected void setSSLProps(Properties props) {
if (this.getConnectInfo().getOptions().get("useSSL") != null
&& (boolean) this.getConnectInfo().getOptions().get("useSSL")) {
props.setProperty("useSSL", "true");
props.setProperty("requireSSL", "true");
var jksGenerator = new JKSGenerator();
if ((boolean) this.getConnectInfo().getOptions().get("verifyServerCertificate")) {
props.setProperty("verifyServerCertificate", "true");
jksGenerator.setCaCert((String) this.getConnectInfo().getOptions().get("caCert"));

var caCertPath = jksGenerator.generateCaJKS();
props.setProperty("trustCertificateKeyStoreUrl", "file:" + caCertPath);
props.setProperty("trustCertificateKeyStorePassword", JKSGenerator.JSK_PASS);

}
if (StringUtils.isNotBlank((String) this.getConnectInfo().getOptions().get("clientCert"))) {
jksGenerator.setClientCert((String) this.getConnectInfo().getOptions().get("clientCert"));
jksGenerator.setClientKey((String) this.getConnectInfo().getOptions().get("clientKey"));
var clientCertPath = jksGenerator.generateClientJKS();
props.setProperty("clientCertificateKeyStoreUrl", "file:" + clientCertPath);
props.setProperty("clientCertificateKeyStorePassword", JKSGenerator.JSK_PASS);
props.setProperty("clientKeyPassword", JKSGenerator.JSK_PASS);

}
}
}
protected void setSSLProps(Properties props) {}


public List<DriverClassLoader> getDriverClassLoaders() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.jumpserver.chen.framework.utils.PageUtils;
import org.jumpserver.chen.framework.utils.ReflectUtils;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.*;
import java.util.ArrayList;
Expand Down Expand Up @@ -160,13 +161,11 @@ private void executeStatement(SQLExecutePlan plan, Statement statement, SQLQuery
var obj = resultSet.getObject(i);
if (obj instanceof Timestamp timestamp) {
fs.add(new Date(timestamp.getTime()));
} else if (obj instanceof Long l) {
fs.add(l.toString());
} else if (obj instanceof BigInteger b) {
fs.add(b.toString());
} else if (obj instanceof Long || obj instanceof BigDecimal || obj instanceof BigInteger) {
fs.add(obj.toString());
} else if (obj instanceof byte[]) {
fs.add(HexUtils.bytesToHex((byte[]) obj));
}else if (obj instanceof Blob){
} else if (obj instanceof Blob) {
fs.add(HexUtils.bytesToHex(((Blob) obj).getBytes(1, (int) ((Blob) obj).length())));
} else {
fs.add(obj);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.jumpserver.chen.framework.jms.acl;

import lombok.Data;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.wisp.Common;

@Data
public class ACLResult {
Expand All @@ -11,4 +11,6 @@ public class ACLResult {

private String CmdGroupId;

private boolean Notify = false;

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import lombok.Data;
import org.jumpserver.chen.framework.datasource.sql.SQLQueryResult;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.wisp.Common;

@Data
public class CommandRecord {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import org.jumpserver.chen.framework.session.SessionManager;
import org.jumpserver.chen.framework.session.controller.dialog.Button;
import org.jumpserver.chen.framework.session.controller.dialog.Dialog;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.chen.wisp.ServiceGrpc;
import org.jumpserver.chen.wisp.ServiceOuterClass;
import org.jumpserver.wisp.Common;
import org.jumpserver.wisp.ServiceGrpc;
import org.jumpserver.wisp.ServiceOuterClass;

import java.sql.Connection;
import java.util.List;
Expand Down Expand Up @@ -55,6 +55,10 @@ public ACLResult commandACLFilter(String command, Connection connection) {
case Warning -> {
result.setRiskLevel(Common.RiskLevel.Warning);
}
case NotifyWarning -> {
result.setRiskLevel(Common.RiskLevel.Warning);
result.setNotify(true);
}
case Reject -> {
result.setRiskLevel(Common.RiskLevel.Reject);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import lombok.extern.slf4j.Slf4j;
import org.jumpserver.chen.framework.jms.CommandHandler;
import org.jumpserver.chen.framework.jms.entity.CommandRecord;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.chen.wisp.ServiceGrpc;
import org.jumpserver.chen.wisp.ServiceOuterClass;
import org.jumpserver.wisp.Common;
import org.jumpserver.wisp.ServiceGrpc;
import org.jumpserver.wisp.ServiceOuterClass;
import org.springframework.scheduling.annotation.Async;

@Slf4j
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import org.jumpserver.chen.framework.jms.ReplayHandler;
import org.jumpserver.chen.framework.jms.asciinema.AsciinemaWriter;
import org.jumpserver.chen.framework.jms.exception.ReplayException;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.chen.wisp.ServiceGrpc;
import org.jumpserver.chen.wisp.ServiceOuterClass;
import org.jumpserver.wisp.Common;
import org.jumpserver.wisp.ServiceGrpc;
import org.jumpserver.wisp.ServiceOuterClass;

import java.io.File;
import java.io.FileWriter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
import org.jumpserver.chen.framework.session.controller.message.MessageLevel;
import org.jumpserver.chen.framework.session.exception.SessionException;
import org.jumpserver.chen.framework.ws.io.PacketIO;
import org.jumpserver.chen.wisp.Common;
import org.jumpserver.chen.wisp.ServiceGrpc;
import org.jumpserver.chen.wisp.ServiceOuterClass;
import org.jumpserver.wisp.Common;
import org.jumpserver.wisp.ServiceGrpc;
import org.jumpserver.wisp.ServiceOuterClass;

import java.sql.Connection;
import java.sql.SQLException;
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit 24a6ffb

Please sign in to comment.