Ir al contenido

Crear su propio plugin Antivirus Analyzer

Puede crear su propio Antivirus Analyzer.

Condiciones:

  • La nueva clase Antivirus Analyzer debe implementar la interfaz “Antivirus”.
  • La nueva clase Antivirus Analyzer debe declararse en el paquete “com.openkm.plugin.antivirus”.
  • La nueva clase Antivirus Analyzer debe estar anotada con@PluginImplementation”.
  • La nueva clase Antivirus Analyzer debe extender “BasePlugin”.

Interfaz Antivirus Analyzer:

package com.openkm.plugin.antivirus;
import java.io.File;
import net.xeoh.plugins.base.Plugin;
/**
* Antivirus
*/
public interface Antivirus extends Plugin {
/**
* Check for viruses in file
*/
String detect(File file);
}

La nueva clase debe cargarse en el paquete com.openkm.plugin.antivirus porque el sistema de plugins de la aplicación intentará cargarla desde ahí.

Método Tipo Descripción
detect(File file) String El método comprueba el fichero en busca de virus. Si el valor devuelto no es null, la aplicación considerará que se ha encontrado un virus.

Ejemplo de implementación del analizador de antivirus ClamAV

Sección titulada «Ejemplo de implementación del analizador de antivirus ClamAV»
package com.openkm.plugin.antivirus;
import com.openkm.core.Config;
import com.openkm.plugin.BasePlugin;
import lombok.extern.slf4j.Slf4j;
import net.xeoh.plugins.base.annotations.PluginImplementation;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
/**
* Default implementation of an antivirus.
*
*/
@Slf4j
@PluginImplementation
public class ClamavAntivirus extends BasePlugin implements Antivirus {
/**
* Check for viruses in file
*/
@Override
public String detect(File file) {
try {
// Performs virus check
log.debug("CMD: " + Config.SYSTEM_ANTIVIR + " " + file.getPath());
ProcessBuilder pb = new ProcessBuilder(Config.SYSTEM_ANTIVIR, "--no-summary", file.getPath());
Process process = pb.start();
process.waitFor();
String info = IOUtils.toString(process.getInputStream(), Charset.defaultCharset());
process.destroy();
// Check return code
if (process.exitValue() == 1) {
log.warn(info);
info = info.substring(info.indexOf(':') + 1);
return info;
} else {
return null;
}
} catch (InterruptedException | IOException e) {
log.warn("Failed to check for viruses", e);
}
return "Failed to check for viruses";
}
}