AFL相关 worker:魔法值抽取为静态变量

运行时全局变量作用域访问方法提供
This commit is contained in:
even 2025-06-27 15:28:26 +08:00
parent 8157f29645
commit 7160577a56
5 changed files with 24 additions and 3 deletions

View File

@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @pi.protocol: http
@ -29,4 +30,8 @@ public class VariableController {
Object variable = variableService.getPipelineContextGlobalVariable(pipelineId, varName);
return CommonResult.success(variable);
}
@GetMapping("/getPipelineContextGlobalVariables/{pipelineId}")
public CommonResult<Map<String,Object>> getPipelineContextGlobalVariables(@PathVariable("pipelineId") String pipelineId){
return CommonResult.success(variableService.getPipelineContextGlobalVariables(pipelineId));
}
}

View File

@ -4,4 +4,5 @@ public class AFLConstant {
public static final String COMMAND_END="commandEnd";
public static final String EXECUTABLE_NAME ="executableName";
public static final String RUNNING_TIME ="runningTime";
}

View File

@ -77,13 +77,13 @@ public class AFLWorker extends DockerWorker {
TargetVersion targetVersion = targetVersionService.getById(pipeline.getTargetVersionId());
String fileName = targetVersion.getFileName();
append(context,"AFL 输出路径:"+output);
Object timeObj = taskProperties.get("runningTime");
Object timeObj = taskProperties.get(RUNNING_TIME);
Double timeHours = Double.valueOf(String.valueOf(timeObj));
String commandScript = "docker run -v "+volumeWorkDirPath+":/test -it "+imageName+" bash\n" +
String commandScript = "docker run -v "+volumeWorkDirPath+":"+AFL_DOCKER_BASE_DIR+" -it "+imageName+" bash\n" +
"cd " + AFL_DOCKER_BASE_DIR+File.separator+workDir+ "\n"+
cdSourceName(fileName) +
"mkdir -p "+ AFL_DOCKER_BASE_DIR+File.separator+output+"\n" +
"afl-fuzz -i "+ AFL_DOCKER_BASE_DIR+File.separator+seedPath+" -o "+ AFL_DOCKER_BASE_DIR+File.separator+output+" "+ executableName + " " +commandEnd;
"afl-fuzz -i "+ AFL_DOCKER_BASE_DIR+File.separator+seedPath+" -o "+ AFL_DOCKER_BASE_DIR+File.separator+output+" ./"+ executableName + " " +commandEnd;
try {
//将节点的配置信息反编译成对象
log.info("AFL模糊测试执行脚本{}",commandScript);

View File

@ -1,5 +1,8 @@
package cd.casic.ci.process.process.service.variable;
import java.util.Map;
public interface VariableService {
Object getPipelineContextGlobalVariable(String pipelineId,String varName);
Map<String,Object> getPipelineContextGlobalVariables(String pipelineId);
}

View File

@ -8,6 +8,7 @@ import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Service
@ -25,4 +26,15 @@ public class VariableServiceImpl implements VariableService {
log.info("当前全局变量:{}",globalVariables);
return globalVariables.get(varName);
}
@Override
public Map<String,Object> getPipelineContextGlobalVariables(String pipelineId) {
BaseRunContext context = contextManager.getContext(pipelineId);
if (context== null) {
return new HashMap<>();
}
Map<String, Object> globalVariables = context.getGlobalVariables();
log.info("当前全局变量:{}",globalVariables);
return globalVariables;
}
}