1use std::collections::HashMap;
12
13use actix::Message;
14use actix::Recipient;
15use serde::Deserialize;
16use serde::Serialize;
17
18use crate::codec::DstAddress;
19#[derive(Debug, Clone)]
21pub enum ToSession {
22 Ping,
23 Stop,
24 Meta,
25 RemoteConnected(Recipient<ToFoward>, DstAddress),
26 RemoteConnectionRefuse,
27 Forward(Vec<u8>),
28 ProxyServerReply(ProxyServerReply),
29}
30#[derive(Debug, PartialEq)]
32pub enum SessionReply {
33 Pong,
34 Meta(SessionMeta),
35 Ok,
36}
37impl Message for ToSession {
38 type Result = SessionReply;
39}
40
41#[derive(Default, Debug, PartialEq)]
42pub struct SessionMeta(pub usize);
43
44#[derive(Debug)]
45pub enum ToProxyServer {
46 Connect(Recipient<ToSession>),
47 DisConnect(usize),
48 OnlineCounter(usize),
49 Cli(usize, inn_common::cli::Cli),
50 HttpReq(Box<WsHttpReq>),
51}
52#[derive(Debug, PartialEq, Clone)]
53pub enum ProxyServerReply {
54 Id(usize),
55 OnlineCounter(usize),
56 Ok,
57 Cli(inn_common::cli::Cli),
58 HttpReq(Box<WsHttpReq>),
59}
60impl Message for ToProxyServer {
61 type Result = ProxyServerReply;
62}
63#[derive(Debug, PartialEq)]
64pub enum ToFoward {
65 Stop,
66 Forward(Vec<u8>),
67}
68pub enum ForwardReply {
69 Ok,
70}
71impl Message for ToFoward {
72 type Result = ForwardReply;
73}
74#[derive(Serialize, Deserialize)]
75#[serde(rename_all = "lowercase")]
76pub enum MsgName {
77 HttpReq,
78}
79#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq)]
80#[serde(rename_all = "lowercase")]
81pub struct WsHttpReq {
82 pub id: String,
83 pub uri: String,
84 pub headers: HashMap<String, String>,
85 pub status: u16,
86 pub error: String,
87 pub method: String,
88 pub req_body: String,
89 pub time: String,
90 pub host: String,
91 pub server_ip: String,
92 pub protocol: String,
93 pub resp_headers: HashMap<String, String>,
94 pub resp_body: String,
95}
96#[derive(Serialize, Deserialize)]
97#[serde(rename_all = "lowercase")]
98pub struct WsMsg<T> {
99 pub msg_name: MsgName,
100 pub msg: T,
101}