Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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_ */
Add Comment
Please, Sign In to add comment