mur_common/agent/
transport.rs1use super::*;
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
4pub struct TransportConfig {
5 pub stdio: bool,
6 pub socket: SocketTransportConfig,
7 #[serde(default)]
8 pub tcp: TcpTransportConfig,
9 #[serde(default)]
13 pub webhook: WebhookTransportConfig,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17pub struct TcpTransportConfig {
18 #[serde(default)]
19 pub enabled: bool,
20 #[serde(default)]
21 pub bind: String,
22 #[serde(default)]
23 pub noise: NoiseConfig,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
40pub struct WebhookTransportConfig {
41 #[serde(default)]
42 pub enabled: bool,
43 #[serde(default = "default_webhook_bind")]
44 pub bind: String,
45 #[serde(default = "default_webhook_port")]
46 pub port: u16,
47 #[serde(default)]
51 pub hmac_secret_ref: String,
52}
53
54fn default_webhook_bind() -> String {
55 "127.0.0.1".to_string()
56}
57
58fn default_webhook_port() -> u16 {
59 6789
60}
61
62impl Default for WebhookTransportConfig {
63 fn default() -> Self {
64 Self {
65 enabled: false,
66 bind: default_webhook_bind(),
67 port: default_webhook_port(),
68 hmac_secret_ref: String::new(),
69 }
70 }
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
74pub struct NoiseConfig {
75 pub pattern: String,
76}
77
78impl Default for NoiseConfig {
79 fn default() -> Self {
80 Self {
81 pattern: "Noise_XK_25519_ChaChaPoly_BLAKE2s".into(),
82 }
83 }
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
87pub struct SocketTransportConfig {
88 pub enabled: bool,
89 pub bind: String, #[serde(default, skip_serializing_if = "Option::is_none")]
91 pub auth: Option<AuthConfig>,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
95pub struct AuthConfig {
96 pub scheme: String,
97 pub token_file: String,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
101pub struct CommunicationConfig {
102 #[serde(default = "default_accepts_all")]
103 pub accepts_from: Vec<String>,
104 #[serde(default)]
105 pub sends_to: Vec<String>,
106}
107fn default_accepts_all() -> Vec<String> {
108 vec!["*".to_string()]
109}