diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/kpi/metrics/MetricsService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/kpi/metrics/MetricsService.kt index a27d0af61bb190517efc3b8e519d4403837d53b0..d3a9977352219570f65e6842a3ce07d2d6085295 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/kpi/metrics/MetricsService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/kpi/metrics/MetricsService.kt @@ -65,7 +65,7 @@ class MetricsService( */ val vulnerabilityKpis = async { - val vulnerabilityDtos = ortService.getOrtResults(106) // in the dev setup we get results for repo id 106 + val vulnerabilityDtos = ortService.getOrtResults(repoId) // in the dev setup we get results for repo id 106 ortService.calculateVulnerabilityKpis(vulnerabilityDtos) } @@ -91,5 +91,4 @@ class MetricsService( occmdKpis = occmdKpis.await() ) } - -} \ No newline at end of file +} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/Worker.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/Worker.kt deleted file mode 100644 index c3282cc13347d32e709095ee655f02ccf9c598df..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/Worker.kt +++ /dev/null @@ -1,95 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager - -import de.fraunhofer.iem.dataprovider.logger.getLogger -import de.fraunhofer.iem.dataprovider.taskManager.tasks.ITask -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job -import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.launch -import java.util.* - - -interface IWorker { - /** - * Adds a new task to the worker's internal tasks channel. - */ - suspend fun addTask(task: ITask) - - // TODO: check if we can use autoclosable interface here. - /** - * Function used to close the underlying resources. - */ - fun close() -} - - -/** - * Abstract worker class used as a base for multithreaded worker. - * It uses a fixed thread pool as a base for the coroutineScope. - * The size of the thread pool is equal to the number of cores. - */ -class Worker( - private val name: String, - private val coroutineScope: CoroutineScope = CoroutineScope(Dispatchers.Default), - numberOfWorkers: Int = Runtime.getRuntime().availableProcessors() -) : IWorker { - - // TODO: this could be dangerous to give it unlimited memory - private val tasksChannel = Channel<ITask>(Channel.UNLIMITED) - - // TODO: the task map should be cleared to reduce memory usage. - // This needs to be triggered from outside a worker as soon as - // all tasks related to the specific tasks are completed. - private val taskMap = HashMap<UUID, Pair<ITask, Job>>() - private val logger = getLogger(javaClass) - - override suspend fun addTask(task: ITask) { - tasksChannel.send(task) - } - - init { - logger.info("Starting $numberOfWorkers workers.") - repeat(numberOfWorkers) { - logger.info("[${Thread.currentThread().name}] launching coroutine in $name") - launchWorker(it) - } - } - - - /** - * Wrapper function to execute tasks provided through the channel. - * We use a dedicated number of coroutines to watch the tasks channel. - * Each coroutine starts a new coroutine to execute the task. This is - * done so that the outer coroutines are not blocked by the potentially - * very long-running inner task performed by executeTask. - */ - private fun launchWorker(id: Int) = coroutineScope.launch { - for (task in tasksChannel) { - val job = coroutineScope.launch { - logger.debug("[{}] Processor #{}-{} received {}", Thread.currentThread().name, id, name, task) - // TODO: we need to check if we want to wrap this executeTask in a try-catch block - try { - task.run() - } catch (e: Throwable) { - logger.error("Exception during task execution occurred. TaskID: ${task.taskID}") - } finally { - logger.debug("[{}] Processor #{}-{} finished {}", Thread.currentThread().name, id, name, task) - taskMap.remove(task.taskID) - } - - } - taskMap[task.taskID] = Pair(task, job) - } - } - - override fun close() { - coroutineScope.launch { - tasksChannel.close() - for (job in coroutineContext[Job]!!.children) { - job.join() - } - logger.info("Worker $name has been closed") - } - } -} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/Event.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/Event.kt deleted file mode 100644 index e34a0312b636e1c274aeb6f13866856a45a2d29a..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/Event.kt +++ /dev/null @@ -1,3 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -sealed class Event \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GetGitlabProjectDoneEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GetGitlabProjectDoneEvent.kt deleted file mode 100644 index 7c13e5259d2409228c09249654e4a2a67ab515f9..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GetGitlabProjectDoneEvent.kt +++ /dev/null @@ -1,7 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import de.fraunhofer.iem.dataprovider.repository.dto.RepositoryCreateDto -import java.util.* - -class GetGitlabProjectDoneEvent(taskId: UUID, val repoId: UUID, val gitRepository: RepositoryCreateDto) : - TaskDoneEvent(taskId = taskId) \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GetRepositoryDetailsDoneEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GetRepositoryDetailsDoneEvent.kt deleted file mode 100644 index 4dd2f12e56ba29255270e38e8a370ead05601e1e..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GetRepositoryDetailsDoneEvent.kt +++ /dev/null @@ -1,10 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import de.fraunhofer.iem.dataprovider.repository.dto.RepositoryDetailsDto -import java.util.* - -class GetRepositoryDetailsDoneEvent( - taskId: UUID, - val repoId: UUID, - val repositoryDetailsEntity: RepositoryDetailsDto -) : TaskDoneEvent(taskId = taskId) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GitCloneDoneEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GitCloneDoneEvent.kt deleted file mode 100644 index 9463dc1d5195d05d018b69dbf41ec54b973d0da1..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GitCloneDoneEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import java.util.* - -class GitCloneDoneEvent(taskId: UUID, val repoId: UUID, val outputDirectory: String) : TaskDoneEvent(taskId = taskId) \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTaskDoneEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTaskDoneEvent.kt deleted file mode 100644 index f9768b145c5c51bc7732450d46add98675df4b52..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTaskDoneEvent.kt +++ /dev/null @@ -1,8 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import java.util.* - -class GroupTaskDoneEvent( - taskId: UUID, - val groupId: UUID, -) : TaskDoneEvent(taskId = taskId) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTaskFailedEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTaskFailedEvent.kt deleted file mode 100644 index 2c5846f13d6e2719efa918cf705fb8a6e3850dc4..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTaskFailedEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import java.util.* - -class GroupTaskFailedEvent(val throwable: Throwable, val groupId: UUID, val taskId: UUID) : Event() diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTasksDoneEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTasksDoneEvent.kt deleted file mode 100644 index decc2336c38901736066f0b37eb81d18de35707d..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/GroupTasksDoneEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import java.util.* - -class GroupTasksDoneEvent(val repoId: UUID) : Event() \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/OrtAnalyzerDoneEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/OrtAnalyzerDoneEvent.kt deleted file mode 100644 index 8a900b2cc574c1f4d9043489400bc363b3f0b1fd..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/OrtAnalyzerDoneEvent.kt +++ /dev/null @@ -1,8 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import java.util.* - -class OrtAnalyzerDoneEvent( - val resultFileOutputDirectoryPath: String, - val repoId: UUID, val taskId: UUID, val groupID: UUID? -) : Event() diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/RecalculateAllKpisEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/RecalculateAllKpisEvent.kt deleted file mode 100644 index 0bfff34965ac141f65455c8ca730e571ca13e964..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/RecalculateAllKpisEvent.kt +++ /dev/null @@ -1,3 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -object RecalculateAllKpisEvent : Event() diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/RepoChangedEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/RepoChangedEvent.kt deleted file mode 100644 index 6c2866b86fb88ef2f1fe0f6262695d5066db2b57..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/RepoChangedEvent.kt +++ /dev/null @@ -1,3 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -class RepoChangedEvent(val repoId: Long) : Event() \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/TaskDoneEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/TaskDoneEvent.kt deleted file mode 100644 index e8f6d5b030a0508623b235aba80d6d41262a84a5..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/TaskDoneEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -import java.util.* - -open class TaskDoneEvent(val taskId: UUID) : Event() \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/TaskFailedEvent.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/TaskFailedEvent.kt deleted file mode 100644 index 685ee420934df12fba8c99490f13e1190286bfdd..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/events/TaskFailedEvent.kt +++ /dev/null @@ -1,3 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.events - -class TaskFailedEvent(val throwable: Throwable) : Event() \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/model/GroupTasks.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/model/GroupTasks.kt deleted file mode 100644 index 46a067ed830cbc65f03b245f3ca37946773d41ed..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/model/GroupTasks.kt +++ /dev/null @@ -1,8 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.model - -import java.util.* - -data class GroupTasks( - val repositoryId: UUID, - val taskIds: MutableSet<UUID> = mutableSetOf() -) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/Task.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/Task.kt deleted file mode 100644 index 6505f89862cce790ae4e72671a2a0e417c1b1d71..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/Task.kt +++ /dev/null @@ -1,39 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks - -import de.fraunhofer.iem.dataprovider.logger.getLogger -import de.fraunhofer.iem.dataprovider.taskManager.events.Event -import de.fraunhofer.iem.dataprovider.taskManager.events.GroupTaskFailedEvent -import de.fraunhofer.iem.dataprovider.taskManager.events.TaskFailedEvent -import java.util.* - -interface ITask { - suspend fun run() - val taskID: UUID -} - -abstract class Task : ITask { - override val taskID: UUID = UUID.randomUUID() - protected open val groupID: UUID? = null - - protected val logger = getLogger(javaClass) - protected abstract val responseChannel: suspend (event: Event) -> Unit - protected abstract suspend fun execute() - - override suspend fun run() { - try { - execute() - } catch (e: Throwable) { - logger.error("Task execute failed.") - sendTaskFailedEvent(e) - throw e - } - } - - protected suspend fun sendTaskFailedEvent(e: Throwable) { - if (groupID != null) { - responseChannel(GroupTaskFailedEvent(e, groupID!!, taskID)) - } else { - responseChannel(TaskFailedEvent(e)) - } - } -} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/DependencyDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/DependencyDto.kt deleted file mode 100644 index 3ea59e5f7ea8f159b96e6d86d3d15ddadf3d7e90..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/DependencyDto.kt +++ /dev/null @@ -1,7 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks.dependency.dto - - -data class DependencyDto( - val name: String, - val vulnerabilities: MutableList<VulnerabilityDto> = mutableListOf() -) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/VulnerabilityDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/VulnerabilityDto.kt deleted file mode 100644 index 1a40c382e0589cce43bf7c9d7bfced4c94b2891a..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/VulnerabilityDto.kt +++ /dev/null @@ -1,6 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks.dependency.dto - -data class VulnerabilityDto( - val cveIdentifier: String, - val vulnerabilityScores: MutableList<VulnerabilityScoreDto> = mutableListOf() -) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/VulnerabilityScoreDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/VulnerabilityScoreDto.kt deleted file mode 100644 index 63d1c1a1a3677eb16301015104b35cd0340c738e..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/dto/VulnerabilityScoreDto.kt +++ /dev/null @@ -1,8 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks.dependency.dto - -import de.fraunhofer.iem.dataprovider.taskManager.tasks.dependency.enumeration.VulnerabilityScoringSystemEnum - -data class VulnerabilityScoreDto( - val severity: String, - val scoringSystem: VulnerabilityScoringSystemEnum -) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/enumeration/VulnerabilityScoringSystemEnum.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/enumeration/VulnerabilityScoringSystemEnum.kt deleted file mode 100644 index c5a099bbba7c3461ca99f60492598a3cf24aab73..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/dependency/enumeration/VulnerabilityScoringSystemEnum.kt +++ /dev/null @@ -1,12 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks.dependency.enumeration - -enum class VulnerabilityScoringSystemEnum(val system: String) { - CVSSV3("CVSSV3"), - CVSSV3_1("CVSS:3.1"); - - companion object { - fun fromString(value: String): VulnerabilityScoringSystemEnum? { - return entries.find { it.system.equals(value, ignoreCase = true) } - } - } -} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/ToolProcessTask.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/ToolProcessTask.kt deleted file mode 100644 index 27751681a4bba8c1cb729f16967390eb84719649..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/ToolProcessTask.kt +++ /dev/null @@ -1,77 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks.tools - -import de.fraunhofer.iem.dataprovider.taskManager.events.GroupTaskDoneEvent -import de.fraunhofer.iem.dataprovider.taskManager.events.TaskDoneEvent -import de.fraunhofer.iem.dataprovider.taskManager.tasks.Task -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.Paths -import java.util.* - -abstract class ToolProcessTask<ResultType> : Task() { - protected abstract val flags: Array<String> - protected abstract val resultFileOutputPath: Path - protected abstract val repoId: UUID - protected open val execPath: String = "/bin/sh" - protected abstract val outputDirectory: String - - private val mainScope = CoroutineScope(Dispatchers.Default) - override suspend fun execute() { - withContext(Dispatchers.IO) { - Files.createDirectories(Paths.get(outputDirectory)) - } - - if (isExecutable(execPath)) { - val process = withContext(Dispatchers.IO) { - ProcessBuilder(execPath, *flags).start() - } - - process.onExit().thenApply { p1 -> - mainScope.launch { - handleProcessReturn(p1) - } - } - } else { - logger.warn("Given execPath is not an executable $execPath.") - // TODO: we should probably throw an exception here. - } - } - - private fun isExecutable(filePath: String): Boolean { - val path = Paths.get(filePath) - return Files.isExecutable(path) - } - - abstract suspend fun parseProcessResults(resultPath: Path): ResultType - abstract suspend fun storeResultsInDb(result: ResultType) - protected open suspend fun handleProcessReturn(p: Process) { - // TODO: check process exit codes. Current problem, if an analysis - // has findings it might return an exit code != 0 even tho the process finished correctly - logger.info("Handle Process return in $javaClass") - try { - val results = parseProcessResults(resultFileOutputPath) - storeResultsInDb(results) - sendProcessTaskDoneEvent() - } catch (e: Throwable) { - sendTaskFailedEvent(e) - } - cleanUp() - } - - protected open fun cleanUp() {} - - private suspend fun sendProcessTaskDoneEvent() { - - val event = if (groupID != null) { - GroupTaskDoneEvent(this.taskID, groupID!!) - } else { - TaskDoneEvent(this.taskID) - } - - responseChannel(event) - } -} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/occmd/OccmdTask.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/occmd/OccmdTask.kt deleted file mode 100644 index 1fae49f97cdb42510b245d0203638ec84996078b..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/occmd/OccmdTask.kt +++ /dev/null @@ -1,165 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks.tools.occmd - -import de.fraunhofer.iem.dataprovider.repository.service.RepositoryService -import de.fraunhofer.iem.dataprovider.taskManager.events.Event -import de.fraunhofer.iem.dataprovider.taskManager.tasks.tools.ToolProcessTask -import de.fraunhofer.iem.dataprovider.tools.occmd.enumeration.Checks -import de.fraunhofer.iem.dataprovider.tools.occmd.json.RawResultJson -import kotlinx.serialization.json.Json -import java.nio.file.Path -import java.util.* - -class OccmdTask( - repositoryDirectoryPath: String, - override val repoId: UUID, - override val responseChannel: suspend (event: Event) -> Unit, - private val repositoryService: RepositoryService, - override val outputDirectory: String -) : ToolProcessTask<List<RawResultJson>>() { - - override val flags: Array<String> = arrayOf(repositoryDirectoryPath, getRepositoryId(repoId)) - - override val resultFileOutputPath: Path = - Path.of(outputDirectory, "occmd-${System.currentTimeMillis()}-${this.taskID}.json") - - override suspend fun parseProcessResults(resultPath: Path): List<RawResultJson> { - val rawResultJson = mutableListOf<RawResultJson>() - val json = Json { ignoreUnknownKeys = true } - val resFile = resultPath.toFile() - if (resFile.exists()) { - resFile.forEachLine { - rawResultJson.add(json.decodeFromString<RawResultJson>(it)) - } - } - return rawResultJson - } - - override suspend fun storeResultsInDb(result: List<RawResultJson>) { - result.forEach { r -> - val check = Checks.fromString(r.check) -// when (check) { -//// Checks.CheckedInBinaries -> -// } - } - } - - private fun getRepositoryId(repoId: UUID): String { - val repoPlatformId = repositoryService.findRepoByID(repoId)?.repoId - ?: throw NoSuchElementException("Repository with id $repoId was not found.") - return repoPlatformId.toString() - } - -} - -//class CloneGitTask( -// private val gitRepository: RepositoryCreateDto, -// private val repoDbId: UUID, -// override val responseChannel: suspend (task: Event) -> Unit, -// private val outputPath: String, -//) : Task() { -// -// override suspend fun execute() { -// -// val outputDirName = "${gitRepository.name}-${taskID}" -// val outputDirectory = Paths.get(outputPath, outputDirName) -// logger.info("Cloning ${gitRepository.name} into $outputDirectory") -// -// val git: Git = Git.cloneRepository() -// .setURI(gitRepository.uri) -// .setDirectory(outputDirectory.toFile()) -// .call() -// git.close() -// -// responseChannel(GitCloneDoneEvent(taskID, repoDbId, outputDirectory.toString())) -// logger.info("Finished cloning ${gitRepository.name}") -// } -//} - -// -//import de.fraunhofer.iem.dataprovider.configuration.OpenCodeGitlabApiConfiguration -//import de.fraunhofer.iem.dataprovider.repository.service.RepositoryService -//import de.fraunhofer.iem.dataprovider.taskManager.events.Event -//import de.fraunhofer.iem.dataprovider.taskManager.tasks.tools.sarif.SarifTask -//import de.fraunhofer.iem.dataprovider.toolRun.service.ToolRunService -//import org.springframework.core.io.ClassPathResource -//import org.springframework.core.io.Resource -//import java.io.File -//import java.nio.file.Files -//import java.nio.file.Path -//import java.nio.file.Paths -//import java.util.* -// -//class OccmdTask( -// repositoryDirectoryPath: String, -// outputDirectoryPath: String, -// openCodeGitlabApiConfiguration: OpenCodeGitlabApiConfiguration, -// private val repositoryService: RepositoryService, -// override val responseChannel: suspend (task: Event) -> Unit, -// override val repoId: UUID, -// override val groupID: UUID? = null, -// override val toolRunService: ToolRunService -//) : SarifTask() { -// -// private val resource: Resource = ClassPathResource("scripts/occmd.sh") -// -// override val outputDirectory: String = Paths.get(outputDirectoryPath, "occmd", taskID.toString()).toString() -// private val copiedRepositoryPath = Paths.get(outputDirectory, "copiedRepo") -// override val getSarif = ::getOccmdSarifFromFilePath -// -// private val repositoryID = getRepositoryId(repoId) -// private val checkSecretPath = -// Paths.get(outputDirectory, "app", "notes", "opencode.d", "code", "resources", "checks", "secrets") -// -// override val flags: Array<String> = arrayOf( -// resource.file.absolutePath, -// "--key", -// openCodeGitlabApiConfiguration.accessToken, -// "--username", -// "USERNAME", //TODO: Make sure is it required? if not delete otherwise dynamically take the username -// "--proj-path", -// copiedRepositoryPath.toString(), -// "--out-dir", -// Paths.get(outputDirectory, "app", "notes").toAbsolutePath().toString(), -// "--console-out-file", -// Paths.get(outputDirectory, "console.txt").toAbsolutePath().toString(), -// "--proj-id", -// repositoryID -// ) -// -// override val resultFileOutputPath: Path = -// Paths.get(checkSecretPath.toAbsolutePath().toString(), repositoryID, "DetectSecrets.baseline") -// -// private fun getRepositoryId(repoId: UUID): String { -// val repoPlatformId = repositoryService.findRepoByID(repoId)?.repoId -// ?: throw NoSuchElementException("Repository with id $repoId was not found.") -// return repoPlatformId.toString() -// } -// -// -// private val dbRawPath = Paths.get(outputDirectory, "app", "notes", "opencode.d", "code", "db", "raw") -// private val blacklistPath = Paths.get( -// outputDirectory, -// "app", -// "notes", -// "opencode.d", -// "code", -// "resources", -// "checks", -// "checked_in_binaries", -// "blacklist" -// ) -// -// override fun cleanUp() { -// File(copiedRepositoryPath.toUri()).deleteRecursively() -// } -// -// init { -// val repoFile = File(repositoryDirectoryPath) -// val copiedRepo = File(copiedRepositoryPath.toUri()) -// repoFile.copyRecursively(copiedRepo) -// -// Files.createDirectories(dbRawPath) -// Files.createDirectories(blacklistPath) -// Files.createDirectories(checkSecretPath) -// } -//} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/ort/OrtApiTask.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/ort/OrtApiTask.kt deleted file mode 100644 index 34ae9d41e0ca27fce3f929001e42268c24a96d22..0000000000000000000000000000000000000000 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/tools/ort/OrtApiTask.kt +++ /dev/null @@ -1,79 +0,0 @@ -package de.fraunhofer.iem.dataprovider.taskManager.tasks.tools.ort - -import de.fraunhofer.iem.dataprovider.repository.service.RepositoryService -import de.fraunhofer.iem.dataprovider.taskManager.events.Event -import de.fraunhofer.iem.dataprovider.taskManager.tasks.Task -import de.fraunhofer.iem.dataprovider.tool.service.ToolService -import de.fraunhofer.iem.dataprovider.tools.ort.json.OrtJson -import io.ktor.client.* -import io.ktor.client.call.* -import io.ktor.client.engine.cio.* -import io.ktor.client.plugins.contentnegotiation.* -import io.ktor.client.request.* -import io.ktor.client.statement.* -import io.ktor.serialization.kotlinx.json.* -import kotlinx.serialization.json.Json -import java.util.* - -class OrtApiTask( - override val responseChannel: suspend (event: Event) -> Unit, - val repoId: UUID, - private val toolService: ToolService, - private val repositoryService: RepositoryService -) : Task() { - - override suspend fun execute() { - - val client = HttpClient(CIO) { - install(ContentNegotiation) { - json( - Json { ignoreUnknownKeys = true } - ) - } - } - - val response: HttpResponse = client.get("http://localhost:3000/ort") - val ortJson = response.body<OrtJson>() - println(response.status) - println(ortJson) - client.close() -// val ortDto = ortJsonToDto(ortJson) -// val dependencies = mutableListOf<DependencyDto>() -// -// ortDto.packages.forEach { p -> -// if (p.nameAndVersion != null) { -// dependencies.add(DependencyDto(name = p.nameAndVersion)) -// } -// } -// -// ortDto.advisorResults.forEach { advisorResult -> -// -// var dependency = dependencies.find { it.name == advisorResult.identifier } -// -// if (dependency == null) { -// dependency = DependencyDto(advisorResult.identifier) -// dependencies.add(dependency) -// } -// advisorResult.vulnerabilities.forEach { vulnerability -> -// if (vulnerability.id != null) { -// -// val vulnerabilityScoreDtos = -// vulnerability.references.mapNotNull { ref -> -// if (ref.severity != null && ref.scoringSystem != null) { -// val scoringSystem = VulnerabilityScoringSystemEnum.fromString(ref.scoringSystem) -// scoringSystem?.let { -// return@mapNotNull VulnerabilityScoreDto(severity = ref.severity, it) -// } -// } -// return@mapNotNull null -// } -// val vulnerabilityDto = -// VulnerabilityDto(vulnerability.id, vulnerabilityScoreDtos.toMutableList()) -// dependency.vulnerabilities.add(vulnerabilityDto) -// } -// } -// } - - } - -} diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt index e6cd93aaef8fd02f6389bd19721dd7f61a65ee9e..cd5c9c87c20fe6ebd6f41b8688d66bdfebb97cce 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt @@ -69,7 +69,7 @@ class OccmdService( "Checked in Binary", "", false, - RawValueKPICalculationStrategy((it.score * 10).toInt()) + RawValueKPICalculationStrategy((it.score * 100).toInt()) ) Checks.SastUsageBasic -> @@ -77,7 +77,7 @@ class OccmdService( "SAST usage", "", false, - RawValueKPICalculationStrategy((it.score * 10).toInt()) + RawValueKPICalculationStrategy(100 - (it.score * 100).toInt()) ) Checks.Secrets ->