1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
pub mod payload;
pub mod values;

use crate::make_as_bytes;
use crate::message::payload::tcp::{AgentTcpPayload, ProxyTcpPayload};
use crate::message::payload::udp::{AgentUdpPayload, ProxyUdpPayload};

use bytes::Bytes;
use derive_more::Constructor;

use crate::error::ProtocolError;
use crate::message::values::encryption::PpaassMessagePayloadEncryption;
use serde_derive::{Deserialize, Serialize};

make_as_bytes! {
    #[derive(Serialize, Deserialize, Debug, Constructor)]
    struct CodecPpaassMessage {
        message_id: String,
        user_token: String,
        encryption: PpaassMessagePayloadEncryption,
        payload: Bytes,
    }
}

make_as_bytes! {
    #[derive(Serialize, Deserialize, Debug)]
    pub enum PpaassAgentMessagePayload {
        Tcp(AgentTcpPayload),
        Udp(AgentUdpPayload),
    }
}

make_as_bytes! {
    #[derive(Serialize, Deserialize, Debug, Constructor)]
    pub struct PpaassAgentMessage {
        pub message_id: String,
        pub user_token: String,
        pub encryption: PpaassMessagePayloadEncryption,
        pub payload: PpaassAgentMessagePayload,
    }
}

make_as_bytes! {
    #[derive(Serialize, Deserialize, Debug)]
    pub enum PpaassProxyMessagePayload {
        Tcp(ProxyTcpPayload),
        Udp(ProxyUdpPayload),
    }
}

make_as_bytes! {
    #[non_exhaustive]
    #[derive(Serialize, Deserialize, Debug, Constructor)]
    pub struct PpaassProxyMessage {
        pub message_id: String,
        pub user_token: String,
        pub encryption: PpaassMessagePayloadEncryption,
        pub payload: PpaassProxyMessagePayload,
    }
}