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í.
Descripción del método
Sección titulada «Descripción del método»| 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@PluginImplementationpublic 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"; }}