#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct Session {
#[prost(string, repeated, tag="1")]
pub primary_key_properties: ::std::vec::Vec<std::string::String>,
#[prost(bool, tag="2")]
pub primary_key_requires_asset_id: bool,
#[prost(uint64, tag="3")]
pub created_time: u64,
#[prost(uint64, tag="4")]
pub last_seen_time: u64,
#[prost(uint64, tag="5")]
pub terminated_time: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct Static {
#[prost(string, repeated, tag="1")]
pub primary_key_properties: ::std::vec::Vec<std::string::String>,
#[prost(bool, tag="2")]
pub primary_key_requires_asset_id: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct IdStrategy {
#[prost(oneof="id_strategy::Strategy", tags="1, 2")]
pub strategy: ::std::option::Option<id_strategy::Strategy>,
}
pub mod id_strategy {
#[derive(Clone, PartialEq, ::prost::Oneof)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub enum Strategy {
#[prost(message, tag="1")]
Session(super::Session),
#[prost(message, tag="2")]
Static(super::Static),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct Host {
#[prost(oneof="host::HostId", tags="1, 2")]
pub host_id: ::std::option::Option<host::HostId>,
}
pub mod host {
#[derive(Clone, PartialEq, ::prost::Oneof)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub enum HostId {
#[prost(string, tag="1")]
Hostname(std::string::String),
#[prost(string, tag="2")]
AssetId(std::string::String),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct Node {
#[prost(oneof="node::WhichNode", tags="1, 2, 3, 4, 5, 6, 7, 8, 9, 10")]
pub which_node: ::std::option::Option<node::WhichNode>,
}
pub mod node {
#[derive(Clone, PartialEq, ::prost::Oneof)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub enum WhichNode {
#[prost(message, tag="1")]
AssetNode(super::Asset),
#[prost(message, tag="2")]
ProcessNode(super::Process),
#[prost(message, tag="3")]
FileNode(super::File),
#[prost(message, tag="4")]
IpAddressNode(super::IpAddress),
#[prost(message, tag="5")]
ProcessOutboundConnectionNode(super::ProcessOutboundConnection),
#[prost(message, tag="6")]
ProcessInboundConnectionNode(super::ProcessInboundConnection),
#[prost(message, tag="7")]
IpPortNode(super::IpPort),
#[prost(message, tag="8")]
NetworkConnectionNode(super::NetworkConnection),
#[prost(message, tag="9")]
IpConnectionNode(super::IpConnection),
#[prost(message, tag="10")]
DynamicNode(super::DynamicNode),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct Asset {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(message, optional, tag="2")]
#[builder(default)]
pub asset_id: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="3")]
#[builder(default)]
pub hostname: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="4")]
#[builder(default)]
pub mac_address: ::std::option::Option<::std::string::String>,
#[prost(uint64, tag="5")]
#[builder(default)]
pub first_seen_timestamp: u64,
#[prost(uint64, tag="6")]
#[builder(default)]
pub last_seen_timestamp: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct IpConnection {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(string, tag="2")]
pub src_ip_address: std::string::String,
#[prost(string, tag="3")]
pub dst_ip_address: std::string::String,
#[prost(string, tag="4")]
pub protocol: std::string::String,
#[prost(uint64, tag="5")]
#[builder(default)]
pub created_timestamp: u64,
#[prost(uint64, tag="6")]
#[builder(default)]
pub terminated_timestamp: u64,
#[prost(uint64, tag="7")]
#[builder(default)]
pub last_seen_timestamp: u64,
#[prost(uint32, tag="8")]
pub state: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct NetworkConnection {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(string, tag="2")]
pub src_ip_address: std::string::String,
#[prost(string, tag="3")]
pub dst_ip_address: std::string::String,
#[prost(string, tag="4")]
pub protocol: std::string::String,
#[prost(uint32, tag="5")]
pub src_port: u32,
#[prost(uint32, tag="6")]
pub dst_port: u32,
#[prost(uint64, tag="7")]
#[builder(default)]
pub created_timestamp: u64,
#[prost(uint64, tag="8")]
#[builder(default)]
pub terminated_timestamp: u64,
#[prost(uint64, tag="9")]
#[builder(default)]
pub last_seen_timestamp: u64,
#[prost(uint32, tag="10")]
pub state: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct IpPort {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(string, tag="2")]
pub ip_address: std::string::String,
#[prost(uint32, tag="3")]
pub port: u32,
#[prost(string, tag="4")]
pub protocol: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct ProcessOutboundConnection {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(message, optional, tag="2")]
#[builder(default)]
pub asset_id: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="3")]
#[builder(default)]
pub hostname: ::std::option::Option<::std::string::String>,
#[prost(uint32, tag="4")]
pub state: u32,
#[prost(uint64, tag="5")]
#[builder(default)]
pub created_timestamp: u64,
#[prost(uint64, tag="6")]
#[builder(default)]
pub terminated_timestamp: u64,
#[prost(uint64, tag="7")]
#[builder(default)]
pub last_seen_timestamp: u64,
#[prost(uint32, tag="8")]
pub port: u32,
#[prost(string, tag="9")]
pub ip_address: std::string::String,
#[prost(string, tag="10")]
pub protocol: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct ProcessInboundConnection {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(message, optional, tag="2")]
#[builder(default)]
pub asset_id: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="3")]
#[builder(default)]
pub hostname: ::std::option::Option<::std::string::String>,
#[prost(uint32, tag="4")]
pub state: u32,
#[prost(uint64, tag="5")]
#[builder(default)]
pub created_timestamp: u64,
#[prost(uint64, tag="6")]
#[builder(default)]
pub terminated_timestamp: u64,
#[prost(uint64, tag="7")]
#[builder(default)]
pub last_seen_timestamp: u64,
#[prost(uint32, tag="8")]
pub port: u32,
#[prost(string, tag="9")]
pub ip_address: std::string::String,
#[prost(string, tag="10")]
pub protocol: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct Process {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(message, optional, tag="2")]
#[builder(default)]
pub asset_id: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="3")]
#[builder(default)]
pub hostname: ::std::option::Option<::std::string::String>,
#[prost(uint32, tag="4")]
pub state: u32,
#[prost(uint64, tag="5")]
#[builder(default)]
pub process_id: u64,
#[prost(string, tag="6")]
#[builder(default)]
pub process_guid: std::string::String,
#[prost(uint64, tag="7")]
#[builder(default)]
pub created_timestamp: u64,
#[prost(uint64, tag="8")]
#[builder(default)]
pub terminated_timestamp: u64,
#[prost(uint64, tag="9")]
#[builder(default)]
pub last_seen_timestamp: u64,
#[prost(string, tag="10")]
#[builder(default)]
pub process_name: std::string::String,
#[prost(string, tag="11")]
#[builder(default)]
pub process_command_line: std::string::String,
#[prost(string, tag="12")]
#[builder(default)]
pub operating_system: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct File {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(message, optional, tag="2")]
#[builder(default)]
pub asset_id: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="3")]
#[builder(default)]
pub hostname: ::std::option::Option<::std::string::String>,
#[prost(uint32, tag="4")]
pub state: u32,
#[prost(uint64, tag="5")]
#[builder(default)]
pub created_timestamp: u64,
#[prost(uint64, tag="6")]
#[builder(default)]
pub deleted_timestamp: u64,
#[prost(uint64, tag="7")]
#[builder(default)]
pub last_seen_timestamp: u64,
#[prost(string, tag="8")]
#[builder(default)]
pub file_name: std::string::String,
#[prost(string, tag="9")]
#[builder(default)]
pub file_path: std::string::String,
#[prost(string, tag="10")]
#[builder(default)]
pub file_extension: std::string::String,
#[prost(string, tag="11")]
#[builder(default)]
pub file_mime_type: std::string::String,
#[prost(uint64, tag="12")]
#[builder(default)]
pub file_size: u64,
#[prost(string, tag="13")]
#[builder(default)]
pub file_version: std::string::String,
#[prost(string, tag="14")]
#[builder(default)]
pub file_description: std::string::String,
#[prost(string, tag="15")]
#[builder(default)]
pub file_product: std::string::String,
#[prost(string, tag="16")]
#[builder(default)]
pub file_company: std::string::String,
#[prost(string, tag="17")]
#[builder(default)]
pub file_directory: std::string::String,
#[prost(uint64, tag="18")]
#[builder(default)]
pub file_inode: u64,
#[prost(uint64, tag="19")]
#[builder(default)]
pub file_hard_links: u64,
#[prost(string, tag="20")]
#[builder(default)]
pub md5_hash: std::string::String,
#[prost(string, tag="21")]
#[builder(default)]
pub sha1_hash: std::string::String,
#[prost(string, tag="22")]
#[builder(default)]
pub sha256_hash: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
#[derive(Builder)]
#[builder(setter(into))]
pub struct IpAddress {
#[prost(string, tag="1")]
#[builder(field(private))]
#[builder(default = "::uuid::Uuid::new_v4().to_string()")]
pub node_key: std::string::String,
#[prost(string, tag="2")]
pub ip_address: std::string::String,
#[prost(uint64, tag="3")]
#[builder(default)]
pub first_seen_timestamp: u64,
#[prost(uint64, tag="4")]
#[builder(default)]
pub last_seen_timestamp: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct NodeProperty {
#[prost(oneof="node_property::Property", tags="1, 2, 3")]
pub property: ::std::option::Option<node_property::Property>,
}
pub mod node_property {
#[derive(Clone, PartialEq, ::prost::Oneof)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub enum Property {
#[prost(int64, tag="1")]
Intprop(i64),
#[prost(uint64, tag="2")]
Uintprop(u64),
#[prost(string, tag="3")]
Strprop(std::string::String),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct DynamicNode {
#[prost(map="string, message", tag="1")]
pub properties: ::std::collections::HashMap<std::string::String, NodeProperty>,
#[prost(string, tag="2")]
pub node_key: std::string::String,
#[prost(string, tag="3")]
pub node_type: std::string::String,
#[prost(uint64, tag="4")]
pub seen_at: u64,
#[prost(message, optional, tag="5")]
pub asset_id: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="6")]
pub hostname: ::std::option::Option<::std::string::String>,
#[prost(message, optional, tag="7")]
pub host_ip: ::std::option::Option<::std::string::String>,
#[prost(message, repeated, tag="8")]
pub id_strategy: ::std::vec::Vec<IdStrategy>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct Edge {
#[prost(string, tag="1")]
pub from: std::string::String,
#[prost(string, tag="2")]
pub to: std::string::String,
#[prost(string, tag="3")]
pub edge_name: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct EdgeList {
#[prost(message, repeated, tag="1")]
pub edges: ::std::vec::Vec<Edge>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct Graph {
#[prost(map="string, message", tag="1")]
pub nodes: ::std::collections::HashMap<std::string::String, Node>,
#[prost(map="string, message", tag="2")]
pub edges: ::std::collections::HashMap<std::string::String, EdgeList>,
#[prost(uint64, tag="3")]
pub timestamp: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
#[derive(Eq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct GeneratedSubgraphs {
#[prost(message, repeated, tag="1")]
pub subgraphs: ::std::vec::Vec<Graph>,
}