1use anyhow::Error;
2use std::result::Result::Ok;
3use tonic::{ Request, Response, Streaming, transport::Channel };
4use tonic_reflection::pb::v1::{
5 ServerReflectionRequest,
6 ServerReflectionResponse,
7 server_reflection_client::ServerReflectionClient,
8 server_reflection_request::MessageRequest,
9};
10
11use crate::agent::agent_client::AgentClient;
12use crate::agent::ActiveConnectionResponse;
13use crate::agent::RequestActiveConnections;
14use crate::agent::BlocklistResponse;
15use crate::agent::AddIpToBlocklistRequest;
16use crate::agent::RmIpFromBlocklistRequest;
17use crate::agent::RmIpFromBlocklistResponse;
18
19pub async fn send_active_connection_request(
20 mut client: AgentClient<Channel>
21) -> Result<Response<ActiveConnectionResponse>, Error> {
22 let request = Request::new(RequestActiveConnections { pod_ip: None });
23 let response = client.active_connections(request).await?;
24 Ok(response)
25}
26
27pub async fn get_all_features(
28 mut client: ServerReflectionClient<Channel>
29) -> Result<Response<Streaming<ServerReflectionResponse>>, Error> {
30 let request = ServerReflectionRequest {
31 host: "".to_string(),
32 message_request: Some(MessageRequest::FileContainingSymbol("agent.Agent".to_string())),
33 };
34 let response = client.server_reflection_info(tokio_stream::iter(vec![request])).await?;
35
36 Ok(response)
37}
38
39pub async fn send_create_blocklist_request(
40 mut client: AgentClient<Channel>,
41 ip: &str
42) -> Result<Response<BlocklistResponse>, Error> {
43 let ip = Some(ip.to_string());
44 let request = Request::new(AddIpToBlocklistRequest { ip });
45 let response = client.add_ip_to_blocklist(request).await?;
46 Ok(response)
47}
48
49pub async fn send_check_blocklist_request(
50 mut client: AgentClient<Channel>
51) -> Result<Response<BlocklistResponse>, Error> {
52 let request = Request::new(());
53 let response = client.check_blocklist(request).await?;
54 Ok(response)
55}
56
57pub async fn remove_ip_from_blocklist_request(
58 mut client: AgentClient<Channel>,
59 ip: &str
60) -> Result<Response<RmIpFromBlocklistResponse>, Error> {
61 let ip = ip.to_string();
62 let request = Request::new(RmIpFromBlocklistRequest { ip });
63 let response = client.rm_ip_from_blocklist(request).await?;
64 Ok(response)
65}