pub enum DatabaseType {
Postgres(Postgres),
SQLite(Sqlite),
}Expand description
Database connection handle
Variants§
Postgres(Postgres)
Postgres database
SQLite(Sqlite)
sqlite only.SQLite database
Implementations§
Source§impl DatabaseType
impl DatabaseType
Sourcepub async fn from_string(arg: &str, server_ca: Option<PathBuf>) -> Result<Self>
pub async fn from_string(arg: &str, server_ca: Option<PathBuf>) -> Result<Self>
Get a database connection from a configuration string
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the
SQLitefile cannot be created or opened, an error will result - If
SQLiteis the type but Malware DB wasn’t compiled with the sqlite feature, an error will result - If the format or database type isn’t known, an error will result
Sourcepub async fn enable_vt_upload(&self) -> Result<()>
Available on crate feature vt only.
pub async fn enable_vt_upload(&self) -> Result<()>
vt only.Set the flag allowing uploads to Virus Total.
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn disable_vt_upload(&self) -> Result<()>
Available on crate feature vt only.
pub async fn disable_vt_upload(&self) -> Result<()>
vt only.Set the flag preventing uploads to Virus Total.
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn files_without_vt_records(&self, limit: u32) -> Result<Vec<String>>
Available on crate feature vt only.
pub async fn files_without_vt_records(&self, limit: u32) -> Result<Vec<String>>
vt only.Get the SHA-256 hashes of the files which don’t have VT records
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn store_vt_record(
&self,
results: &ScanResultAttributes,
) -> Result<()>
Available on crate feature vt only.
pub async fn store_vt_record( &self, results: &ScanResultAttributes, ) -> Result<()>
vt only.Store the VT results: AV hits and detailed report, or lack of any AV hits
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn get_vt_stats(&self) -> Result<VtStats>
Available on crate feature vt only.
pub async fn get_vt_stats(&self) -> Result<VtStats>
vt only.Quick statistics regarding the data contained for VT information for our samples
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn get_config(&self) -> Result<MDBConfig>
pub async fn get_config(&self) -> Result<MDBConfig>
Get the configuration which is stored in the database
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn authenticate(&self, uname: &str, password: &str) -> Result<String>
pub async fn authenticate(&self, uname: &str, password: &str) -> Result<String>
Check user credentials, return the API key. Generate if it doesn’t exist.
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the username and/or password aren’t correct, an error will result
Sourcepub async fn get_uid(&self, apikey: &str) -> Result<u32>
pub async fn get_uid(&self, apikey: &str) -> Result<u32>
Get the user’s ID from their API key
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the api key isn’t valid, an error will result
Sourcepub async fn db_info(&self) -> Result<DatabaseInformation>
pub async fn db_info(&self) -> Result<DatabaseInformation>
Retrieve information about the database
§Errors
- If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn get_user_info(&self, uid: u32) -> Result<GetUserInfoResponse>
pub async fn get_user_info(&self, uid: u32) -> Result<GetUserInfoResponse>
Retrieve the names of the groups and sources the user is part of and has access to
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user ID isn’t valid, an error will result
Sourcepub async fn get_user_sources(&self, uid: u32) -> Result<Sources>
pub async fn get_user_sources(&self, uid: u32) -> Result<Sources>
Retrieve the source information available to the specified user
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user ID isn’t valid, an error will result
Sourcepub async fn reset_own_api_key(&self, uid: u32) -> Result<()>
pub async fn reset_own_api_key(&self, uid: u32) -> Result<()>
Let the user clear their own API key to log out from all systems
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user ID isn’t valid, an error will result
Sourcepub async fn get_known_data_types(&self) -> Result<Vec<FileType>>
pub async fn get_known_data_types(&self) -> Result<Vec<FileType>>
Retrieve the supported data type information
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn get_labels(&self) -> Result<Labels>
pub async fn get_labels(&self) -> Result<Labels>
Get all labels from Malware DB
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn get_type_id_for_bytes(&self, data: &[u8]) -> Result<u32>
pub async fn get_type_id_for_bytes(&self, data: &[u8]) -> Result<u32>
Get the corresponding type ID for a buffer representing a file
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn allowed_user_source(&self, uid: u32, sid: u32) -> Result<bool>
pub async fn allowed_user_source(&self, uid: u32, sid: u32) -> Result<bool>
Check that a user has been granted access data for the specific source
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user or source ID(s) aren’t valid, an error will result
Sourcepub async fn user_is_admin(&self, uid: u32) -> Result<bool>
pub async fn user_is_admin(&self, uid: u32) -> Result<bool>
Check to see if the user is an administrator. The user must be a member of the admin group (group ID 0), or a one group below (a group with the parent group id of 0).
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user ID isn’t valid, an error will result
Sourcepub async fn add_file(
&self,
meta: &FileMetadata,
known_type: KnownType<'_>,
uid: u32,
sid: u32,
ftype: u32,
parent: Option<u64>,
) -> Result<FileAddedResult>
pub async fn add_file( &self, meta: &FileMetadata, known_type: KnownType<'_>, uid: u32, sid: u32, ftype: u32, parent: Option<u64>, ) -> Result<FileAddedResult>
Add a file’s metadata to the database, returning true if this is a new entry
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the source doesn’t exist or the user isn’t part of a member group, an error will result
Sourcepub async fn partial_search(
&self,
uid: u32,
search: SearchRequest,
) -> Result<SearchResponse>
pub async fn partial_search( &self, uid: u32, search: SearchRequest, ) -> Result<SearchResponse>
Search for allowed samples based on partial search and/or file name
§Errors
- If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn cleanup(&self) -> Result<u64>
pub async fn cleanup(&self) -> Result<u64>
Delete old pagination searches
§Errors
An error would occur if the Postgres server couldn’t be reached.
Sourcepub async fn retrieve_sample(&self, uid: u32, hash: &HashType) -> Result<String>
pub async fn retrieve_sample(&self, uid: u32, hash: &HashType) -> Result<String>
Retrieve the SHA-256 hash of the sample while checking that the user is permitted to access to it
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the file doesn’t exist or the user isn’t allowed access, an error will result
Sourcepub async fn get_sample_report(
&self,
uid: u32,
hash: &HashType,
) -> Result<Report>
pub async fn get_sample_report( &self, uid: u32, hash: &HashType, ) -> Result<Report>
Retrieve a report for a given sample, if allowed.
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the file doesn’t exist or the user isn’t allowed access, an error will result
Sourcepub async fn find_similar_samples(
&self,
uid: u32,
sim: &[(SimilarityHashType, String)],
) -> Result<Vec<SimilarSample>>
pub async fn find_similar_samples( &self, uid: u32, sim: &[(SimilarityHashType, String)], ) -> Result<Vec<SimilarSample>>
Given a collection of similarity hashes, find samples which are similar.
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn enable_compression(&self) -> Result<()>
Available on crate features admin only.
pub async fn enable_compression(&self) -> Result<()>
admin only.Sourcepub async fn disable_compression(&self) -> Result<()>
Available on crate features admin only.
pub async fn disable_compression(&self) -> Result<()>
admin only.Unset the compression flag, does not go and decompress files already compressed!
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn enable_keep_unknown_files(&self) -> Result<()>
Available on crate features admin only.
pub async fn enable_keep_unknown_files(&self) -> Result<()>
admin only.Set the keep unknown files flag
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn disable_keep_unknown_files(&self) -> Result<()>
Available on crate features admin only.
pub async fn disable_keep_unknown_files(&self) -> Result<()>
admin only.Unset the keep unknown files flag, does not go and remove unknown files!
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn add_file_encryption_key(&self, key: &FileEncryption) -> Result<u32>
Available on crate features admin only.
pub async fn add_file_encryption_key(&self, key: &FileEncryption) -> Result<u32>
admin only.Add an encryption key to the database, set it as the default, and return the key ID
§Errors
- If there is a connectivity with Postgres, an error will result
Sourcepub async fn get_encryption_key_names_ids(
&self,
) -> Result<Vec<(u32, EncryptionOption)>>
Available on crate features admin only.
pub async fn get_encryption_key_names_ids( &self, ) -> Result<Vec<(u32, EncryptionOption)>>
admin only.Get the key ID and algorithm names
§Errors
If there is a connectivity with Postgres, an error will result
Sourcepub async fn create_user(
&self,
uname: &str,
fname: &str,
lname: &str,
email: &str,
password: Option<String>,
organisation: Option<&String>,
readonly: bool,
) -> Result<u32>
Available on crate features admin only.
pub async fn create_user( &self, uname: &str, fname: &str, lname: &str, email: &str, password: Option<String>, organisation: Option<&String>, readonly: bool, ) -> Result<u32>
admin only.Create a user account, return the user ID.
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn reset_api_keys(&self) -> Result<u64>
Available on crate features admin only.
pub async fn reset_api_keys(&self) -> Result<u64>
admin only.Clear all API keys, either in case of suspected activity, or part of policy
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn set_password(&self, uname: &str, password: &str) -> Result<()>
Available on crate features admin only.
pub async fn set_password(&self, uname: &str, password: &str) -> Result<()>
admin only.Set a user’s password
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user doesn’t exist, an error will result
Sourcepub async fn list_users(&self) -> Result<Vec<User>>
Available on crate features admin only.
pub async fn list_users(&self) -> Result<Vec<User>>
admin only.Get the complete list of users
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn group_id_from_name(&self, name: &str) -> Result<i32>
Available on crate features admin only.
pub async fn group_id_from_name(&self, name: &str) -> Result<i32>
admin only.Get the ID of a group from name
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the group name isn’t valid, an error will result
Sourcepub async fn edit_group(
&self,
gid: u32,
name: &str,
desc: &str,
parent: Option<u32>,
) -> Result<()>
Available on crate features admin only.
pub async fn edit_group( &self, gid: u32, name: &str, desc: &str, parent: Option<u32>, ) -> Result<()>
admin only.Update the record for a group
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the group doesn’t exist, an error will result
Sourcepub async fn list_groups(&self) -> Result<Vec<Group>>
Available on crate features admin only.
pub async fn list_groups(&self) -> Result<Vec<Group>>
admin only.Get the complete list of groups
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn add_user_to_group(&self, uid: u32, gid: u32) -> Result<()>
Available on crate features admin only.
pub async fn add_user_to_group(&self, uid: u32, gid: u32) -> Result<()>
admin only.Grant a user membership to a group, both by id.
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user or group doesn’t exist, an error will result
Sourcepub async fn add_group_to_source(&self, gid: u32, sid: u32) -> Result<()>
Available on crate features admin only.
pub async fn add_group_to_source(&self, gid: u32, sid: u32) -> Result<()>
admin only.Grand a group access to a source, both by id.
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the group or source doesn’t exist, an error will result
Sourcepub async fn create_group(
&self,
name: &str,
description: &str,
parent: Option<u32>,
) -> Result<u32>
Available on crate features admin only.
pub async fn create_group( &self, name: &str, description: &str, parent: Option<u32>, ) -> Result<u32>
admin only.Create a new group, returning the group ID
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the group name is already taken, an error will result
Sourcepub async fn list_sources(&self) -> Result<Vec<Source>>
Available on crate features admin only.
pub async fn list_sources(&self) -> Result<Vec<Source>>
admin only.Get the complete list of sources
§Errors
If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn create_source(
&self,
name: &str,
description: Option<&str>,
url: Option<&str>,
date: DateTime<Local>,
releasable: bool,
malicious: Option<bool>,
) -> Result<u32>
Available on crate features admin only.
pub async fn create_source( &self, name: &str, description: Option<&str>, url: Option<&str>, date: DateTime<Local>, releasable: bool, malicious: Option<bool>, ) -> Result<u32>
admin only.Create a source, returning the source ID
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the source already exists, an error will result
Sourcepub async fn edit_user(
&self,
uid: u32,
uname: &str,
fname: &str,
lname: &str,
email: &str,
readonly: bool,
) -> Result<()>
Available on crate features admin only.
pub async fn edit_user( &self, uid: u32, uname: &str, fname: &str, lname: &str, email: &str, readonly: bool, ) -> Result<()>
admin only.Edit a user account setting the specified field values, primarily used by the Admin gui
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user isn’t valid, an error will result
Sourcepub async fn deactivate_user(&self, uid: u32) -> Result<()>
Available on crate features admin only.
pub async fn deactivate_user(&self, uid: u32) -> Result<()>
admin only.Deactivate, but don’t delete, a user’s account
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user ID isn’t valid, an error will result
Sourcepub async fn file_types_counts(&self) -> Result<HashMap<String, u32>>
Available on crate features admin only.
pub async fn file_types_counts(&self) -> Result<HashMap<String, u32>>
admin only.File types and number of files per type
§Errors
- If there’s a connectivity issue to Postgres, an error will result
Sourcepub async fn create_label(&self, name: &str, parent: Option<u64>) -> Result<u64>
Available on crate features admin only.
pub async fn create_label(&self, name: &str, parent: Option<u64>) -> Result<u64>
admin only.Create a new label, returning the label ID
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the parent label doesn’t exist, an error will result
- If the label name already exists, an error will result
Sourcepub async fn edit_label(
&self,
id: u64,
name: &str,
parent: Option<u64>,
) -> Result<()>
Available on crate features admin only.
pub async fn edit_label( &self, id: u64, name: &str, parent: Option<u64>, ) -> Result<()>
admin only.Edit a label name or parent
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the parent label doesn’t exist, an error will result
- If the label name already exists, an error will result
Sourcepub async fn label_id_from_name(&self, name: &str) -> Result<u64>
Available on crate features admin only.
pub async fn label_id_from_name(&self, name: &str) -> Result<u64>
admin only.Return the ID for a given label name
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the label ID is invalid, an error will result
Sourcepub async fn label_file(&self, file_id: u64, label_id: u64) -> Result<()>
Available on crate features admin only.
pub async fn label_file(&self, file_id: u64, label_id: u64) -> Result<()>
admin only.Associate an existing label by its IDs with a file.
§Errors
- Incorrect IDs will result in an error
- If the file already has the given label associated
- If there is a network or connection issue with Postgres
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for DatabaseType
impl !RefUnwindSafe for DatabaseType
impl Send for DatabaseType
impl Sync for DatabaseType
impl Unpin for DatabaseType
impl !UnwindSafe for DatabaseType
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more