Skip to content

Instantly share code, notes, and snippets.

@rchatsiri
Created October 25, 2011 16:10
Show Gist options
  • Save rchatsiri/1313287 to your computer and use it in GitHub Desktop.
Save rchatsiri/1313287 to your computer and use it in GitHub Desktop.
Clamav scanning virus.
#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