File Scanner 1.0.0
A high-performance C++ malicious file scanner.
Loading...
Searching...
No Matches
interfaces.h
Go to the documentation of this file.
1#ifndef SCANNER_INTERFACES_H_
2#define SCANNER_INTERFACES_H_
3
4#include <filesystem>
5#include <optional>
6#include <string>
7#include <vector>
8
9#include "scanner/domain.h"
10#include "scanner/visibility.h"
11
12namespace scanner {
13
19public:
20 virtual ~IFileHasher() = default;
21
28 virtual std::string HashFile(const std::filesystem::path& file_path) = 0;
29};
30
36public:
37 virtual ~IHashDatabase() = default;
38
45 virtual size_t Load(const std::filesystem::path& source_path) = 0;
46
53 virtual std::optional<std::string> FindHash(
54 const std::string& hash) const = 0;
55};
56
65public:
66 virtual ~ILogger() = default;
67
74 virtual void LogDetection(const std::filesystem::path& path,
75 const std::string& hash,
76 const std::string& verdict) = 0;
77};
78
84public:
85 virtual ~IScanner() = default;
86
97 virtual ScanResult Scan(const std::filesystem::path& scan_path) = 0;
98};
99
105public:
106 virtual ~IScannerBuilder() = default;
107
113
120 const std::filesystem::path& path) = 0;
121
128 const std::filesystem::path& path) = 0;
129
135 virtual IScannerBuilder& WithThreads(std::size_t num_threads) = 0;
136
142 virtual std::unique_ptr<IScanner> Build() = 0;
143};
144
146SCANNER_API std::unique_ptr<IScannerBuilder> CreateScannerBuilder();
147
148} // namespace scanner
149
150#endif // SCANNER_INTERFACES_H_
Defines the contract for a component that can hash a file's content.
Definition interfaces.h:18
virtual std::string HashFile(const std::filesystem::path &file_path)=0
Calculates the hash of a given file.
virtual ~IFileHasher()=default
Defines the contract for a database of malicious signatures.
Definition interfaces.h:35
virtual std::optional< std::string > FindHash(const std::string &hash) const =0
Looks up a hash to see if it is in the database.
virtual ~IHashDatabase()=default
virtual size_t Load(const std::filesystem::path &source_path)=0
Loads malicious signatures from a source.
Defines the contract for a component that logs malicious detections.
Definition interfaces.h:64
virtual void LogDetection(const std::filesystem::path &path, const std::string &hash, const std::string &verdict)=0
Logs the detection of a malicious file.
virtual ~ILogger()=default
An interface for a builder that constructs a configured IScanner.
Definition interfaces.h:104
virtual ~IScannerBuilder()=default
virtual IScannerBuilder & WithThreads(std::size_t num_threads)=0
Sets the number of threads for the scanner.
virtual std::unique_ptr< IScanner > Build()=0
Builds the final IScanner instance.
virtual IScannerBuilder & WithMd5Hasher()=0
Configures the scanner to use an MD5 file hasher.
virtual IScannerBuilder & WithCsvDatabase(const std::filesystem::path &path)=0
Configures the hash database from a CSV file.
virtual IScannerBuilder & WithFileLogger(const std::filesystem::path &path)=0
Configures the logger to write to a file.
Defines the primary contract for the file scanning engine.
Definition interfaces.h:83
virtual ScanResult Scan(const std::filesystem::path &scan_path)=0
Recursively scans a directory for malicious files.
virtual ~IScanner()=default
Definition domain.h:12
SCANNER_API std::unique_ptr< IScannerBuilder > CreateScannerBuilder()
Factory function to create a scanner builder instance.
Definition scanner_builder.cpp:12
Holds the final statistics of a completed scan operation.
Definition domain.h:18
#define SCANNER_API
Definition visibility.h:27