pub enum DatabaseType {
Postgres(Postgres),
SQLite(Sqlite),
}
Expand description
Database handle for SQLite
or Postgres
Variants§
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
SQLite
file cannot be created or opened, an error will result - If
SQLite
is 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<()>
pub async fn enable_vt_upload(&self) -> Result<()>
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<()>
pub async fn disable_vt_upload(&self) -> Result<()>
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>>
pub async fn files_without_vt_records(&self, limit: u32) -> Result<Vec<String>>
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<()>
pub async fn store_vt_record( &self, results: &ScanResultAttributes, ) -> Result<()>
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>
pub async fn get_vt_stats(&self) -> Result<VtStats>
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 API key. Generate if it doesn’t exist.
§Errors
- If there’s a connectivity issue to Postgres, an error will result
- If the user name 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<bool>
pub async fn add_file( &self, meta: &FileMetadata, known_type: KnownType<'_>, uid: u32, sid: u32, ftype: u32, parent: Option<u64>, ) -> Result<bool>
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<Vec<String>>
pub async fn partial_search( &self, uid: u32, search: &SearchRequest, ) -> Result<Vec<String>>
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 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<()>
pub async fn enable_compression(&self) -> Result<()>
Sourcepub async fn disable_compression(&self) -> Result<()>
pub async fn disable_compression(&self) -> Result<()>
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<()>
pub async fn enable_keep_unknown_files(&self) -> Result<()>
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<()>
pub async fn disable_keep_unknown_files(&self) -> Result<()>
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>
pub async fn add_file_encryption_key(&self, key: &FileEncryption) -> Result<u32>
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)>>
pub async fn get_encryption_key_names_ids( &self, ) -> Result<Vec<(u32, EncryptionOption)>>
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>
pub async fn create_user( &self, uname: &str, fname: &str, lname: &str, email: &str, password: Option<String>, organisation: Option<&String>, readonly: bool, ) -> Result<u32>
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>
pub async fn reset_api_keys(&self) -> Result<u64>
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<()>
pub async fn set_password(&self, uname: &str, password: &str) -> Result<()>
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>>
pub async fn list_users(&self) -> Result<Vec<User>>
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>
pub async fn group_id_from_name(&self, name: &str) -> Result<i32>
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<()>
pub async fn edit_group( &self, gid: u32, name: &str, desc: &str, parent: Option<u32>, ) -> Result<()>
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>>
pub async fn list_groups(&self) -> Result<Vec<Group>>
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<()>
pub async fn add_user_to_group(&self, uid: u32, gid: u32) -> Result<()>
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<()>
pub async fn add_group_to_source(&self, gid: u32, sid: u32) -> Result<()>
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>
pub async fn create_group( &self, name: &str, description: &str, parent: Option<u32>, ) -> Result<u32>
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>>
pub async fn list_sources(&self) -> Result<Vec<Source>>
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>
pub async fn create_source( &self, name: &str, description: Option<&str>, url: Option<&str>, date: DateTime<Local>, releasable: bool, malicious: Option<bool>, ) -> Result<u32>
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<()>
pub async fn edit_user( &self, uid: u32, uname: &str, fname: &str, lname: &str, email: &str, readonly: bool, ) -> Result<()>
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<()>
pub async fn deactivate_user(&self, uid: u32) -> Result<()>
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>>
pub async fn file_types_counts(&self) -> Result<HashMap<String, u32>>
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>
pub async fn create_label(&self, name: &str, parent: Option<u64>) -> Result<u64>
Create a new label
§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<()>
pub async fn edit_label( &self, id: u64, name: &str, parent: Option<u64>, ) -> Result<()>
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