1use prost::Message;
4
5use super::base::CMsgIPAddress;
6
7#[derive(Clone, PartialEq, Message)]
9pub struct CMsgClientHeartBeat {
10 #[prost(bool, optional, tag = "1")]
11 pub send_reply: Option<bool>,
12}
13
14#[derive(Clone, PartialEq, Message)]
16pub struct CMsgClientHello {
17 #[prost(uint32, optional, tag = "1")]
18 pub protocol_version: Option<u32>,
19}
20
21#[derive(Clone, PartialEq, Message)]
23pub struct CMsgClientSecret {
24 #[prost(uint32, optional, tag = "1")]
25 pub version: Option<u32>,
26 #[prost(uint32, optional, tag = "2")]
27 pub appid: Option<u32>,
28 #[prost(uint32, optional, tag = "3")]
29 pub deviceid: Option<u32>,
30 #[prost(fixed64, optional, tag = "4")]
31 pub nonce: Option<u64>,
32 #[prost(bytes = "vec", optional, tag = "5")]
33 pub hmac: Option<Vec<u8>>,
34}
35
36#[derive(Clone, PartialEq, Message)]
38pub struct CMsgClientLogon {
39 #[prost(uint32, optional, tag = "1")]
40 pub protocol_version: Option<u32>,
41 #[prost(uint32, optional, tag = "2")]
42 pub deprecated_obfustucated_private_ip: Option<u32>,
43 #[prost(uint32, optional, tag = "3")]
44 pub cell_id: Option<u32>,
45 #[prost(uint32, optional, tag = "4")]
46 pub last_session_id: Option<u32>,
47 #[prost(uint32, optional, tag = "5")]
48 pub client_package_version: Option<u32>,
49 #[prost(string, optional, tag = "6")]
50 pub client_language: Option<String>,
51 #[prost(uint32, optional, tag = "7")]
52 pub client_os_type: Option<u32>,
53 #[prost(bool, optional, tag = "8")]
54 pub should_remember_password: Option<bool>,
55 #[prost(string, optional, tag = "9")]
56 pub wine_version: Option<String>,
57 #[prost(message, optional, tag = "11")]
58 pub obfuscated_private_ip: Option<CMsgIPAddress>,
59 #[prost(uint32, optional, tag = "21")]
60 pub qos_level: Option<u32>,
61 #[prost(fixed64, optional, tag = "22")]
62 pub client_supplied_steam_id: Option<u64>,
63 #[prost(message, optional, tag = "23")]
64 pub public_ip: Option<CMsgIPAddress>,
65 #[prost(bytes = "vec", optional, tag = "30")]
66 pub machine_id: Option<Vec<u8>>,
67 #[prost(uint32, optional, tag = "31")]
68 pub launcher_type: Option<u32>,
69 #[prost(uint32, optional, tag = "32")]
70 pub ui_mode: Option<u32>,
71 #[prost(uint32, optional, tag = "33")]
72 pub chat_mode: Option<u32>,
73 #[prost(bytes = "vec", optional, tag = "41")]
74 pub steam2_auth_ticket: Option<Vec<u8>>,
75 #[prost(string, optional, tag = "42")]
76 pub email_address: Option<String>,
77 #[prost(fixed32, optional, tag = "43")]
78 pub rtime32_account_creation: Option<u32>,
79 #[prost(string, optional, tag = "50")]
80 pub account_name: Option<String>,
81 #[prost(string, optional, tag = "51")]
82 pub password: Option<String>,
83 #[prost(string, optional, tag = "52")]
84 pub game_server_token: Option<String>,
85 #[prost(string, optional, tag = "60")]
86 pub login_key: Option<String>,
87 #[prost(uint32, optional, tag = "66")]
88 pub ping_ms_from_cell_search: Option<u32>,
89 #[prost(string, optional, tag = "80")]
90 pub anon_user_target_account_name: Option<String>,
91 #[prost(fixed64, optional, tag = "81")]
92 pub resolved_user_steam_id: Option<u64>,
93 #[prost(int32, optional, tag = "82")]
94 pub eresult_sentryfile: Option<i32>,
95 #[prost(bytes = "vec", optional, tag = "83")]
96 pub sha_sentryfile: Option<Vec<u8>>,
97 #[prost(string, optional, tag = "84")]
98 pub auth_code: Option<String>,
99 #[prost(int32, optional, tag = "85")]
100 pub otp_type: Option<i32>,
101 #[prost(uint32, optional, tag = "86")]
102 pub otp_value: Option<u32>,
103 #[prost(string, optional, tag = "87")]
104 pub otp_identifier: Option<String>,
105 #[prost(bool, optional, tag = "88")]
106 pub steam2_ticket_request: Option<bool>,
107 #[prost(bytes = "vec", optional, tag = "90")]
108 pub sony_psn_ticket: Option<Vec<u8>>,
109 #[prost(string, optional, tag = "91")]
110 pub sony_psn_service_id: Option<String>,
111 #[prost(bool, optional, tag = "92")]
112 pub create_new_psn_linked_account_if_needed: Option<bool>,
113 #[prost(string, optional, tag = "93")]
114 pub sony_psn_name: Option<String>,
115 #[prost(int32, optional, tag = "94")]
116 pub game_server_app_id: Option<i32>,
117 #[prost(bool, optional, tag = "95")]
118 pub steamguard_dont_remember_computer: Option<bool>,
119 #[prost(string, optional, tag = "96")]
120 pub machine_name: Option<String>,
121 #[prost(string, optional, tag = "97")]
122 pub machine_name_userchosen: Option<String>,
123 #[prost(string, optional, tag = "98")]
124 pub country_override: Option<String>,
125 #[prost(uint64, optional, tag = "100")]
126 pub client_instance_id: Option<u64>,
127 #[prost(string, optional, tag = "101")]
128 pub two_factor_code: Option<String>,
129 #[prost(bool, optional, tag = "102")]
130 pub supports_rate_limit_response: Option<bool>,
131 #[prost(string, optional, tag = "103")]
132 pub web_logon_nonce: Option<String>,
133 #[prost(int32, optional, tag = "104")]
134 pub priority_reason: Option<i32>,
135 #[prost(message, optional, tag = "105")]
136 pub embedded_client_secret: Option<CMsgClientSecret>,
137 #[prost(bool, optional, tag = "106")]
138 pub disable_partner_autogrants: Option<bool>,
139 #[prost(string, optional, tag = "108")]
140 pub access_token: Option<String>,
141 #[prost(bool, optional, tag = "109")]
142 pub is_chrome_os: Option<bool>,
143 #[prost(uint32, optional, tag = "111")]
144 pub gaming_device_type: Option<u32>,
145}
146
147#[derive(Clone, PartialEq, Message)]
149pub struct CMsgClientLogonResponse {
150 #[prost(int32, optional, tag = "1")]
151 pub eresult: Option<i32>,
152 #[prost(int32, optional, tag = "2")]
153 pub legacy_out_of_game_heartbeat_seconds: Option<i32>,
154 #[prost(int32, optional, tag = "3")]
155 pub heartbeat_seconds: Option<i32>,
156 #[prost(fixed32, optional, tag = "5")]
157 pub rtime32_server_time: Option<u32>,
158 #[prost(uint32, optional, tag = "6")]
159 pub account_flags: Option<u32>,
160 #[prost(uint32, optional, tag = "7")]
161 pub cell_id: Option<u32>,
162 #[prost(string, optional, tag = "8")]
163 pub email_domain: Option<String>,
164 #[prost(bytes = "vec", optional, tag = "9")]
165 pub steam2_ticket: Option<Vec<u8>>,
166 #[prost(int32, optional, tag = "10")]
167 pub eresult_extended: Option<i32>,
168 #[prost(uint32, optional, tag = "12")]
169 pub cell_id_ping_threshold: Option<u32>,
170 #[prost(string, optional, tag = "14")]
171 pub vanity_url: Option<String>,
172 #[prost(message, optional, tag = "15")]
173 pub public_ip: Option<CMsgIPAddress>,
174 #[prost(string, optional, tag = "16")]
175 pub user_country: Option<String>,
176 #[prost(fixed64, optional, tag = "20")]
177 pub client_supplied_steamid: Option<u64>,
178 #[prost(string, optional, tag = "21")]
179 pub ip_country_code: Option<String>,
180 #[prost(bytes = "vec", optional, tag = "22")]
181 pub parental_settings: Option<Vec<u8>>,
182 #[prost(bytes = "vec", optional, tag = "23")]
183 pub parental_setting_signature: Option<Vec<u8>>,
184 #[prost(int32, optional, tag = "24")]
185 pub count_loginfailures_to_migrate: Option<i32>,
186 #[prost(int32, optional, tag = "25")]
187 pub count_disconnects_to_migrate: Option<i32>,
188 #[prost(int32, optional, tag = "26")]
189 pub ogs_data_report_time_window: Option<i32>,
190 #[prost(uint64, optional, tag = "27")]
191 pub client_instance_id: Option<u64>,
192 #[prost(bool, optional, tag = "28")]
193 pub force_client_update_check: Option<bool>,
194 #[prost(string, optional, tag = "29")]
195 pub agreement_session_url: Option<String>,
196 #[prost(uint64, optional, tag = "30")]
197 pub token_id: Option<u64>,
198 #[prost(uint64, optional, tag = "31")]
199 pub family_group_id: Option<u64>,
200}
201
202#[derive(Clone, PartialEq, Message)]
204pub struct CMsgClientLogOff {}
205
206#[derive(Clone, PartialEq, Message)]
208pub struct CMsgClientLoggedOff {
209 #[prost(int32, optional, tag = "1")]
210 pub eresult: Option<i32>,
211}
212
213#[derive(Clone, PartialEq, Message)]
215pub struct CMsgClientAccountInfo {
216 #[prost(string, optional, tag = "1")]
217 pub persona_name: Option<String>,
218 #[prost(string, optional, tag = "2")]
219 pub ip_country: Option<String>,
220 #[prost(uint64, optional, tag = "3")]
221 pub facebook_id: Option<u64>,
222 #[prost(string, optional, tag = "4")]
223 pub facebook_name: Option<String>,
224 #[prost(int32, optional, tag = "5")]
225 pub count_authed_computers: Option<i32>,
226 #[prost(uint32, optional, tag = "7")]
227 pub account_flags: Option<u32>,
228 #[prost(string, optional, tag = "15")]
229 pub steamguard_machine_name_user_chosen: Option<String>,
230 #[prost(bool, optional, tag = "16")]
231 pub is_phone_verified: Option<bool>,
232 #[prost(uint32, optional, tag = "17")]
233 pub two_factor_state: Option<u32>,
234 #[prost(bool, optional, tag = "18")]
235 pub is_phone_identifying: Option<bool>,
236 #[prost(bool, optional, tag = "19")]
237 pub is_phone_needing_reverify: Option<bool>,
238}
239
240#[derive(Clone, PartialEq, Message)]
242pub struct CMsgClientNewLoginKey {
243 #[prost(uint32, optional, tag = "1")]
244 pub unique_id: Option<u32>,
245 #[prost(string, optional, tag = "2")]
246 pub login_key: Option<String>,
247}
248
249#[derive(Clone, PartialEq, Message)]
251pub struct CMsgClientNewLoginKeyAccepted {
252 #[prost(uint32, optional, tag = "1")]
253 pub unique_id: Option<u32>,
254}
255
256pub const PROTOCOL_VERSION: u32 = 65580;
258
259pub const PRIVATE_IP_OBFUSCATION_MASK: u32 = 0xBAADF00D;