Created
October 25, 2011 16:10
-
-
Save rchatsiri/1313287 to your computer and use it in GitHub Desktop.
Clamav scanning virus.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef CLAMAV_SCANENGINE_HPP_ | |
#define CLAMAV_SCANENGINE_HPP_ | |
#include "clamav.h" | |
#include "clamav_logger.hpp" | |
extern int cl_scanfile(const char *filename, const char **virname, unsigned long int *scanned, const struct cl_engine *engine, unsigned int options); | |
extern "C" | |
{ | |
int cl_scanfile(const char *filename, const char **virname, unsigned long int *scanned, const struct cl_engine *engine, unsigned int options); | |
} | |
namespace clamav_services{ | |
class clamav_scan | |
{ | |
public: | |
clamav_scan(std::string _path_scan_file,struct cl_engine* _engine) | |
: path_scan_file_(_path_scan_file), engine_(_engine) | |
{ | |
} | |
void engine_scan() | |
{ | |
if((result_ = cl_scanfile(path_scan_file_.c_str(), &virname_, NULL, engine_,CL_SCAN_STDOPT)) == CL_VIRUS) { | |
result_detected_ = cl_strerror(result_); | |
result_detail_.append("Found virus name = "); | |
result_detail_.append(virname_); | |
} else { | |
result_detected_ = cl_strerror(result_); | |
result_detail_.append("Cannot found virus "); | |
if(result_ != CL_CLEAN) | |
{ | |
result_detected_ = cl_strerror(result_); | |
result_detail_ .append("Error! Programs cannot scan virus "); | |
} | |
} | |
debug_init_engine(result_detail_,result_detected_); | |
} | |
std::string debug_init_engine(std::string str_detail,std::string str_err) | |
{ | |
CLLOG_TRACE("### "<<str_detail<<", "<<str_err); | |
} | |
~clamav_scan() | |
{ | |
cl_engine_free(engine_); | |
CLLOG_TRACE("### Destory engine scanning..."); | |
} | |
private: | |
int result_; | |
const char *virname_; | |
struct cl_engine *engine_; | |
std::string path_scan_file_; | |
std::string result_detected_; | |
std::string result_detail_; | |
}; | |
} | |
#endif /* CLAMAV_SCANENGINE_HPP_ */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment