ingest-external-antivirus

Dans cette section, nous expliquons comment utiliser et configurer le script d’antivirus pour le service ingest-external.

  1. Configuration pour ingest-external : ingest-external.conf

    Dans ce fichier de configuration, nous précisons le nom du script antivirus utilisé, et le timeout pour le scan. Le script utilisé actuellement est scan-clamav.sh utilisant l’antivirus ClamAV.

antiVirusScriptName : scan-clamav.sh
timeoutScanDelay : 60000
  1. Script d’antivirus scan-clamav.sh

    Le script permettant de lancer d’un scan d’un fichier envoyé avec l’antivirus ClamAV et retourner le résulat :

    -1: Analyse non effectuée

    0: Analyse OK - no virus 1: Virus trouvé et corrigé 2: Virus trouvé mais non corrigé 3: Analyse NOK

    Ce fichier est mis dans le répertoire vitam/conf avec le droit d’exécution.

  2. Lancer le script en Java et intégration

JavaExecuteScript.java (se trouve dans ingest-external-common) permettant de lancer le script de clamav en Java en prenant des paramètres d’entrées : le script utilisé, le chemin du fichier à scanner et le temps limité d’un scan Pour l’intégration dans ingest-external, ce script est appelé dans l’implémentation des APIs de ingest-externe. la section suivant montre comment on appelle le script depuis ingest-external en Code.

antiVirusResult = JavaExecuteScript.executeCommand(antiVirusScriptName, filePath, timeoutScanDelay);
.......
switch (antiVirusResult) {
      case STATUS_ANTIVIRUS_OK:
          LOGGER.info(IngestExternalOutcomeMessage.OK_VIRUS.toString());
          // nothing to do, default already set to ok
          break;
      case STATUS_ANTIVIRUS_WARNING:
      case STATUS_ANTIVIRUS_KO:
          LOGGER.error(IngestExternalOutcomeMessage.KO_VIRUS.toString());
          antivirusParameters.setStatus(StatusCode.KO);
          antivirusParameters.putParameterValue(LogbookParameterName.outcomeDetail,
              messageLogbookEngineHelper.getOutcomeDetail(SANITY_CHECK_SIP, StatusCode.KO));
          antivirusParameters.putParameterValue(LogbookParameterName.outcomeDetailMessage,
              messageLogbookEngineHelper.getLabelOp(SANITY_CHECK_SIP, StatusCode.KO));
          isFileInfected = true;
          break;
      case STATUS_ANTIVIRUS_NOT_PERFORMED:
      case STATUS_ANTIVIRUS_NOT_PERFORMED_2:
          LOGGER.error(IngestExternalOutcomeMessage.FATAL_VIRUS.toString());
          antivirusParameters.setStatus(StatusCode.FATAL);
          antivirusParameters.putParameterValue(LogbookParameterName.outcomeDetail,
              messageLogbookEngineHelper.getOutcomeDetail(SANITY_CHECK_SIP, StatusCode.FATAL));
          antivirusParameters.putParameterValue(LogbookParameterName.outcomeDetailMessage,
              messageLogbookEngineHelper.getLabelOp(SANITY_CHECK_SIP, StatusCode.FATAL));
          isFileInfected = true;
          break;
  }
}
    .....................................................................................................