diff --git a/README.md b/README.md index 0f2a72c..446e9b6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Xvirus SDK C++ -Xvirus SDK 4.1 C++ bindings. +Xvirus SDK 4.2 C++ bindings. ## Table of Contents @@ -17,15 +17,36 @@ Xvirus SDK 4.1 C++ bindings. ## Minimum Requirements -No minimum requirements needed! +The following Operating Systems are supported: + +- Windows: + - Windows 10 1607 + - Windows 11 22000 + - Windows Server 2012 + - Windows Server Core 2012 +- Linux (glibc 2.17): + - Alpine Linux 3.15 + - CentOS 7 + - Debian 10 + - Fedora 36 + - openSUSE 15 + - Oracle Linux 7 + - Red Hat Enterprise Linux 7 + - SUSE Enterprise Linux (SLES) 12 SP2 + - Ubuntu 18.04 ## Changelog -- Version **4.1**: +- Version **4.2**: + - Reduced glibc minimum version to 2.17 on Linux + - Added "Logging()" function to enable/disable logging + - Added "BaseFolder()" function to set a custom base folder + - Added new setting "DatabaseFolder" to set the Database folder path + - Fixed C++ binding will return "Success=false" correctly when failing to scan a file +- Version **4.1**: - Upgraded from .NET 5 to .NET 7 - C++ bindings now also support Linux - - Removed Minimum Requirements on C++ bindings and CLI - Changed how exceptions are handled in C++ bindings - Version **4.0**: @@ -72,6 +93,8 @@ You can find the definition of all functions and structs in the file `xvneng.h` - "**Database was updated!**" - "**Database is up-to-date!**" - **getSettings** - returns a string representation of the `settings.json` file. +- **logging** - Sets and return if `Logging` is enabled. If `enableLogging` Null value is provided it will only return. +- **baseFolder** - Sets and return the `BaseFolder` path. If `baseFolder` Null value is provided it will only return. - **version** - returns the version of the SDK/CLI. ![functions](./functions.JPG) @@ -102,11 +125,12 @@ struct ActionResult { ## Settings -Settings are located in the "`settings.json`" file in the root folder of the SDK. There are 4 avaiable options: +Settings are located in the "`settings.json`" file in the root folder of the SDK. There are 5 avaiable options: - **EnableHeuristics** - Enables heuristics scanning of files. Default: _true_ - **EnableAIScan** - Enables XvirusAI scan engine. This feature is still in BETA. Default: _false_ - **MaxScanLength** - Maximum file size to be scanned in bytes. If set "null" then there is no limit. Default: _null_ +- **DatabaseFolder** - Path to the database folder, it accepts both relative and absolute paths. Default: _"Database"_ - **DatabaseVersion** - KeyValue list of database files version. This is updated automatically when using the "checkUpdate()" function. Example of a `settings.json` file: @@ -116,6 +140,7 @@ Example of a `settings.json` file: "EnableHeuristics": true, "EnableAIScan": false, "MaxScanLength": null, + "DatabaseFolder": "Database", "DatabaseVersion": { "AIModel": 0, "MainDB": 0, diff --git a/bin/Linux/XvirusSDK.so b/bin/Linux/XvirusSDK.so index 4e1fe05..7da6c7f 100644 Binary files a/bin/Linux/XvirusSDK.so and b/bin/Linux/XvirusSDK.so differ diff --git a/bin/Linux/settings.json b/bin/Linux/settings.json index 62bb443..ca728e5 100644 --- a/bin/Linux/settings.json +++ b/bin/Linux/settings.json @@ -2,6 +2,7 @@ "EnableHeuristics": true, "EnableAIScan": false, "MaxScanLength": null, + "DatabaseFolder": "Database", "DatabaseVersion": { "AIModel": 0, "MainDB": 0, diff --git a/bin/Windows/XvirusSDK.dll b/bin/Windows/XvirusSDK.dll index 1fc5d29..fc9968a 100644 Binary files a/bin/Windows/XvirusSDK.dll and b/bin/Windows/XvirusSDK.dll differ diff --git a/bin/Windows/settings.json b/bin/Windows/settings.json index 62bb443..ca728e5 100644 --- a/bin/Windows/settings.json +++ b/bin/Windows/settings.json @@ -2,6 +2,7 @@ "EnableHeuristics": true, "EnableAIScan": false, "MaxScanLength": null, + "DatabaseFolder": "Database", "DatabaseVersion": { "AIModel": 0, "MainDB": 0, diff --git a/example/xvneng.h b/example/xvneng.h index f37d2dc..370cc81 100644 --- a/example/xvneng.h +++ b/example/xvneng.h @@ -8,13 +8,15 @@ #define ScanAsStringFnKey "scanAsString" #define CheckUpdatesFnKey "checkUpdates" #define GetSettingsFnKey "getSettings" +#define LoggingFnKey "logging" +#define BaseFolderFnKey "baseFolder" #define VersionFnKey "version" struct ActionResult { bool sucess; - wchar_t* result; - wchar_t* error; + wchar_t *result; + wchar_t *error; }; struct ScanResult @@ -22,16 +24,18 @@ struct ScanResult bool sucess; bool isMalware; double score; - wchar_t* name; - wchar_t* error; + wchar_t *name; + wchar_t *error; }; -typedef ActionResult(*LoadFn)(bool force); -typedef ActionResult(*UnloadFn)(); -typedef ScanResult(*ScanFn)(const wchar_t* filepath); -typedef ActionResult(*ScanAsStringFn)(const wchar_t* filepath); -typedef ActionResult(*CheckUpdatesFn)(bool checkSDKUpdates, bool loadDBAfterUpdate); -typedef ActionResult(*GetSettingsFn)(); -typedef wchar_t* (*VersionFn)(); +typedef ActionResult (*LoadFn)(bool force); +typedef ActionResult (*UnloadFn)(); +typedef ScanResult (*ScanFn)(const wchar_t *filepath); +typedef ActionResult (*ScanAsStringFn)(const wchar_t *filepath); +typedef ActionResult (*CheckUpdatesFn)(bool checkSDKUpdates, bool loadDBAfterUpdate); +typedef ActionResult (*GetSettingsFn)(); +typedef bool (*LoggingFn)(bool enableLogging); +typedef wchar_t *(*BaseFolderFn)(const wchar_t *baseFolder); +typedef wchar_t *(*VersionFn)(); #endif // _XVNENG_H diff --git a/functions.JPG b/functions.JPG index 591007f..005ed6f 100644 Binary files a/functions.JPG and b/functions.JPG differ diff --git a/headers/xvneng.h b/headers/xvneng.h index 3316267..370cc81 100644 --- a/headers/xvneng.h +++ b/headers/xvneng.h @@ -8,6 +8,8 @@ #define ScanAsStringFnKey "scanAsString" #define CheckUpdatesFnKey "checkUpdates" #define GetSettingsFnKey "getSettings" +#define LoggingFnKey "logging" +#define BaseFolderFnKey "baseFolder" #define VersionFnKey "version" struct ActionResult @@ -32,6 +34,8 @@ typedef ScanResult (*ScanFn)(const wchar_t *filepath); typedef ActionResult (*ScanAsStringFn)(const wchar_t *filepath); typedef ActionResult (*CheckUpdatesFn)(bool checkSDKUpdates, bool loadDBAfterUpdate); typedef ActionResult (*GetSettingsFn)(); +typedef bool (*LoggingFn)(bool enableLogging); +typedef wchar_t *(*BaseFolderFn)(const wchar_t *baseFolder); typedef wchar_t *(*VersionFn)(); #endif // _XVNENG_H