Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
stream 2026-03-18 09:23:34 +08:00
commit e44c9741ed
4 changed files with 25 additions and 20 deletions

View File

@ -114,7 +114,9 @@ public class SecurityConfig
requests.antMatchers("/login", "/register", "/captchaImage").permitAll() requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
// 静态资源可匿名访问 // 静态资源可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/system/file/upload","/evaluation/callback","/flow/**","/flowise/**","/kws/**","/ws/**","/api/grpc/**","/show/**","/node-red/**","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/system/file/upload","/evaluation/callback","/flow/**","/flowise/**","/kws/**","/ws/**","/api/grpc/**","/show/**",
"/node-red/**","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**",
"/ti/ui/findNextClickToFunction", "/ti/function/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证 // 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated(); .anyRequest().authenticated();
}) })

View File

@ -23,8 +23,9 @@ public class FlowCodeNodeHandler implements FlowNodeTypeHandler {
String code = inputParams.getString("code"); String code = inputParams.getString("code");
inputParams.remove("code"); inputParams.remove("code");
log.info("code 节点 {} 开始执行", nodeId); log.info("code 节点 {} 开始执行", nodeId);
JSONObject execute = nashornJsExecutor.execute(code, inputParams); Object execute = nashornJsExecutor.execute(code, inputParams);
log.info("code 节点 {} 执行完成", nodeId); log.info("code 节点 {} 执行完成", nodeId);
return TaskNodeExecuteResult.success(execute); return TaskNodeExecuteResult.success(JSONObject.of("result", execute));
} }
} }

View File

@ -1,6 +1,8 @@
package com.cmvr.test.flow.runtime.operator.edge; package com.cmvr.test.flow.runtime.operator.edge;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.cmvr.common.enums.FileType; import com.cmvr.common.enums.FileType;
import com.cmvr.common.exception.GlobalException; import com.cmvr.common.exception.GlobalException;
@ -85,18 +87,18 @@ public class EdgeCameraOperateService implements EdgeOperateService {
// // 驾驶偏好 // // 驾驶偏好
// imageUrl = "http://192.168.1.100:9000/cmvr-iot/FILE/20250822/1755849654731.jpg"; // imageUrl = "http://192.168.1.100:9000/cmvr-iot/FILE/20250822/1755849654731.jpg";
// } // }
String imageUrl = "http://192.168.1.100:9000/cmvr-iot/IMAGE/20250901/1756718594725.jpg"; // String imageUrl = "http://192.168.1.100:9000/cmvr-iot/IMAGE/20250901/1756718594725.jpg";
// String imageUrl = edgeCameraService.getRGBDImages(terminalId, deviceId); String imageUrl = edgeCameraService.getRGBDImages(edgeCommonVO);
// JSONArray imageUrls = new JSONArray(); JSONArray imageUrls = new JSONArray();
// if (ObjUtil.isNotEmpty(upstreamOutput)) { if (ObjUtil.isNotEmpty(upstreamOutput)) {
// JSONArray upstream = upstreamOutput.getJSONArray("imageUrl"); JSONArray upstream = upstreamOutput.getJSONArray("imageUrl");
// if (ObjUtil.isNotEmpty(upstream)) { if (ObjUtil.isNotEmpty(upstream)) {
// imageUrls.addAll(upstream); imageUrls.addAll(upstream);
// } }
// } }
//
// imageUrls.add(imageUrl); imageUrls.add(imageUrl);
output.put("imageUrl", imageUrl); output.put("imageUrl", imageUrl);
output.put("type", FileType.IMAGE.code()); output.put("type", FileType.IMAGE.code());
break; break;

View File

@ -68,14 +68,14 @@ public class NashornJsExecutor {
* @param params 传入的参数Map POJO * @param params 传入的参数Map POJO
* @return 执行结果 Map * @return 执行结果 Map
*/ */
public JSONObject execute(String jsCode, Object params) { public Object execute(String jsCode, Object params) {
// 1. 代码安全检查 // 1. 代码安全检查
validateCode(jsCode); validateCode(jsCode);
// 2. 提交到线程池执行支持超时中断 // 2. 提交到线程池执行支持超时中断
Future<JSONObject> future = executor.submit(new Callable<JSONObject>() { Future<Object> future = executor.submit(new Callable<Object>() {
@Override @Override
public JSONObject call() throws Exception { public Object call() throws Exception {
return doExecute(jsCode, params); return doExecute(jsCode, params);
} }
}); });
@ -97,7 +97,7 @@ public class NashornJsExecutor {
/** /**
* 实际执行逻辑 * 实际执行逻辑
*/ */
private JSONObject doExecute(String jsCode, Object params) throws ScriptException { private Object doExecute(String jsCode, Object params) throws ScriptException {
// 将参数转为 JSON 字符串 // 将参数转为 JSON 字符串
String jsonParams = toJson(params); String jsonParams = toJson(params);
@ -117,9 +117,9 @@ public class NashornJsExecutor {
if (resultJson.length() > MAX_RESULT_SIZE) { if (resultJson.length() > MAX_RESULT_SIZE) {
throw new RuntimeException("返回结果超过 " + (MAX_RESULT_SIZE/1024/1024) + "MB 限制"); throw new RuntimeException("返回结果超过 " + (MAX_RESULT_SIZE/1024/1024) + "MB 限制");
} }
return resultJson;
// 解析为 Map // 解析为 Map
return fromJson(resultJson); // return fromJson(resultJson);
} }
// 更简单的版本不覆盖 eval依赖其他安全措施 // 更简单的版本不覆盖 eval依赖其他安全措施