proxy_agent/src/proxy/proxy_summary.rs (51 lines of code) (raw):
// Copyright (c) Microsoft Corporation
// SPDX-License-Identifier: MIT
//! This module contains the proxy summary struct.
//! The proxy summary struct is used to store the summary of the proxied connections.
use std::path::PathBuf;
use proxy_agent_shared::proxy_agent_aggregate_status::ProxyConnectionSummary;
use serde_derive::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
#[allow(non_snake_case)]
pub struct ProxySummary {
pub id: u128,
pub method: String,
pub url: String,
pub clientIp: String,
pub clientPort: u16,
pub ip: String,
pub port: u16,
pub userId: u64,
pub userName: String,
pub userGroups: Vec<String>,
pub processFullPath: PathBuf,
pub processCmdLine: String,
pub runAsElevated: bool,
pub responseStatus: String,
pub elapsedTime: u128,
pub errorDetails: String,
}
impl ProxySummary {
pub fn to_key_string(&self) -> String {
format!(
"{} {} {} {} {} {} {}",
self.userName,
self.clientIp,
self.ip,
self.port,
self.processFullPath.to_string_lossy(),
self.processCmdLine,
self.responseStatus
)
}
}
impl From<ProxySummary> for ProxyConnectionSummary {
fn from(proxy_summary: ProxySummary) -> ProxyConnectionSummary {
ProxyConnectionSummary {
userName: proxy_summary.userName.to_string(),
userGroups: Some(proxy_summary.userGroups.clone()),
ip: proxy_summary.ip.to_string(),
port: proxy_summary.port,
processFullPath: Some(proxy_summary.processFullPath.to_string_lossy().to_string()),
processCmdLine: proxy_summary.processCmdLine.to_string(),
responseStatus: proxy_summary.responseStatus.to_string(),
count: 1,
}
}
}