threexui_rs/models/
settings.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, Default)]
4#[serde(rename_all = "camelCase")]
5pub struct AllSetting {
6 #[serde(default)]
8 pub web_listen: String,
9 #[serde(default)]
10 pub web_domain: String,
11 #[serde(default)]
12 pub web_port: i32,
13 #[serde(default)]
14 pub web_cert_file: String,
15 #[serde(default)]
16 pub web_key_file: String,
17 #[serde(default)]
18 pub web_base_path: String,
19 #[serde(default)]
20 pub session_max_age: i32,
21 #[serde(default)]
23 pub page_size: i32,
24 #[serde(default)]
25 pub expire_diff: i32,
26 #[serde(default)]
27 pub traffic_diff: i32,
28 #[serde(default)]
29 pub remark_model: String,
30 #[serde(default)]
31 pub datepicker: String,
32 #[serde(default)]
34 pub tg_bot_enable: bool,
35 #[serde(default)]
36 pub tg_bot_token: String,
37 #[serde(default)]
38 pub tg_bot_proxy: String,
39 #[serde(default)]
40 pub tg_bot_api_server: String,
41 #[serde(default)]
42 pub tg_bot_chat_id: String,
43 #[serde(default)]
44 pub tg_run_time: String,
45 #[serde(default)]
46 pub tg_bot_backup: bool,
47 #[serde(default)]
48 pub tg_bot_login_notify: bool,
49 #[serde(default)]
50 pub tg_cpu: i32,
51 #[serde(default)]
52 pub tg_lang: String,
53 #[serde(default)]
55 pub time_location: String,
56 #[serde(default)]
57 pub two_factor_enable: bool,
58 #[serde(default)]
59 pub two_factor_token: String,
60 #[serde(default)]
62 pub sub_enable: bool,
63 #[serde(default)]
64 pub sub_json_enable: bool,
65 #[serde(default)]
66 pub sub_title: String,
67 #[serde(default)]
68 pub sub_support_url: String,
69 #[serde(default)]
70 pub sub_profile_url: String,
71 #[serde(default)]
72 pub sub_announce: String,
73 #[serde(default)]
74 pub sub_enable_routing: bool,
75 #[serde(default)]
76 pub sub_routing_rules: String,
77 #[serde(default)]
78 pub sub_listen: String,
79 #[serde(default)]
80 pub sub_port: i32,
81 #[serde(default)]
82 pub sub_path: String,
83 #[serde(default)]
84 pub sub_domain: String,
85 #[serde(default)]
86 pub sub_cert_file: String,
87 #[serde(default)]
88 pub sub_key_file: String,
89 #[serde(default)]
90 pub sub_updates: i32,
91 #[serde(default)]
92 pub external_traffic_inform_enable: bool,
93 #[serde(default)]
94 pub external_traffic_inform_uri: String,
95 #[serde(default)]
96 pub sub_encrypt: bool,
97 #[serde(default)]
98 pub sub_show_info: bool,
99 #[serde(default)]
100 pub sub_uri: String,
101 #[serde(default)]
102 pub sub_json_path: String,
103 #[serde(default)]
104 pub sub_json_uri: String,
105 #[serde(default)]
106 pub sub_clash_enable: bool,
107 #[serde(default)]
108 pub sub_clash_path: String,
109 #[serde(default)]
110 pub sub_clash_uri: String,
111 #[serde(default)]
112 pub sub_json_fragment: String,
113 #[serde(default)]
114 pub sub_json_noises: String,
115 #[serde(default)]
116 pub sub_json_mux: String,
117 #[serde(default)]
118 pub sub_json_rules: String,
119 #[serde(default)]
121 pub ldap_enable: bool,
122 #[serde(default)]
123 pub ldap_host: String,
124 #[serde(default)]
125 pub ldap_port: i32,
126 #[serde(default)]
127 pub ldap_use_tls: bool,
128 #[serde(default)]
129 pub ldap_bind_dn: String,
130 #[serde(default)]
131 pub ldap_password: String,
132 #[serde(default)]
133 pub ldap_base_dn: String,
134 #[serde(default)]
135 pub ldap_user_filter: String,
136 #[serde(default)]
137 pub ldap_user_attr: String,
138 #[serde(default)]
139 pub ldap_vless_field: String,
140 #[serde(default)]
141 pub ldap_sync_cron: String,
142 #[serde(default)]
143 pub ldap_flag_field: String,
144 #[serde(default)]
145 pub ldap_truthy_values: String,
146 #[serde(default)]
147 pub ldap_invert_flag: bool,
148 #[serde(default)]
149 pub ldap_inbound_tags: String,
150 #[serde(default)]
151 pub ldap_auto_create: bool,
152 #[serde(default)]
153 pub ldap_auto_delete: bool,
154 #[serde(default)]
155 #[serde(rename = "ldapDefaultTotalGB")]
156 pub ldap_default_total_gb: i32,
157 #[serde(default)]
158 pub ldap_default_expiry_days: i32,
159 #[serde(default)]
160 pub ldap_default_limit_ip: i32,
161}
162
163#[cfg(test)]
164mod tests {
165 use super::*;
166
167 #[test]
168 fn all_setting_deserializes_partial() {
169 let raw = r#"{"webPort":2053,"tgBotEnable":false,"subEnable":true}"#;
170 let s: AllSetting = serde_json::from_str(raw).unwrap();
171 assert_eq!(s.web_port, 2053);
172 assert!(!s.tg_bot_enable);
173 assert!(s.sub_enable);
174 }
175
176 #[test]
177 fn all_setting_empty_defaults() {
178 let s: AllSetting = serde_json::from_str("{}").unwrap();
179 assert_eq!(s.web_port, 0);
180 assert_eq!(s.sub_title, "");
181 }
182}