001
014
015 package com.liferay.portlet.documentlibrary.antivirus;
016
017 import java.io.File;
018
019
022 public class ClamAntivirusScannerImpl extends BaseFileAntivirusScanner {
023
024 @Override
025 public void scan(File file) throws AntivirusScannerException {
026 Process process = null;
027
028 try {
029 ProcessBuilder processBuilder = new ProcessBuilder(
030 "clamscan", "--stdout", "--no-summary", file.getAbsolutePath());
031
032 processBuilder.redirectErrorStream(true);
033
034 process = processBuilder.start();
035
036 process.waitFor();
037
038 int exitValue = process.exitValue();
039
040 if (exitValue == 1) {
041 throw new AntivirusScannerException(
042 "Virus detected in " + file.getAbsolutePath(),
043 AntivirusScannerException.VIRUS_DETECTED);
044 }
045 else if (exitValue >= 2) {
046 throw new AntivirusScannerException(
047 AntivirusScannerException.PROCESS_FAILURE);
048 }
049 }
050 catch (AntivirusScannerException ase) {
051 throw ase;
052 }
053 catch (Exception e) {
054 throw new AntivirusScannerException(
055 AntivirusScannerException.PROCESS_FAILURE);
056 }
057 finally {
058 if (process != null) {
059 process.destroy();
060 }
061 }
062 }
063
064 }