Skip to content

Commit 05e921e

Browse files
authored
Merge pull request #160 from Alvsch/toggle-encryption
made encryption config work
2 parents 78d6069 + e9833a7 commit 05e921e

File tree

1 file changed

+34
-15
lines changed

1 file changed

+34
-15
lines changed

pumpkin/src/client/client_packet.rs

+34-15
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,27 @@ impl Client {
9999
}
100100
}
101101
} else {
102-
*gameprofile = Some(GameProfile {
102+
let profile = GameProfile {
103103
id: login_start.uuid,
104104
name: login_start.name,
105105
properties: vec![],
106106
profile_actions: None,
107-
});
107+
};
108108

109-
// TODO: check config for encryption
110-
let verify_token: [u8; 4] = rand::random();
111-
self.send_packet(&server.encryption_request(&verify_token, BASIC_CONFIG.online_mode))
109+
if BASIC_CONFIG.encryption {
110+
let verify_token: [u8; 4] = rand::random();
111+
self.send_packet(
112+
&server.encryption_request(&verify_token, BASIC_CONFIG.online_mode),
113+
)
112114
.await;
115+
} else {
116+
if ADVANCED_CONFIG.packet_compression.enabled {
117+
self.enable_compression().await;
118+
}
119+
self.finish_login(&profile).await;
120+
}
121+
122+
*gameprofile = Some(profile);
113123
}
114124
}
115125

@@ -118,34 +128,43 @@ impl Client {
118128
server: &Server,
119129
encryption_response: SEncryptionResponse,
120130
) {
121-
let shared_secret = server.decrypt(&encryption_response.shared_secret).unwrap();
131+
let shared_secret = match server.decrypt(&encryption_response.shared_secret) {
132+
Ok(shared_secret) => shared_secret,
133+
Err(error) => {
134+
self.kick(&error.to_string()).await;
135+
return;
136+
}
137+
};
122138

123139
if let Err(error) = self.set_encryption(Some(&shared_secret)).await {
124140
self.kick(&error.to_string()).await;
125141
return;
126142
}
143+
127144
let mut gameprofile = self.gameprofile.lock().await;
128145

146+
let Some(profile) = gameprofile.as_mut() else {
147+
self.kick("No Game profile").await;
148+
return;
149+
};
150+
129151
if BASIC_CONFIG.online_mode {
130152
match self
131-
.autenticate(server, &shared_secret, &gameprofile.as_ref().unwrap().name)
153+
.autenticate(server, &shared_secret, &profile.name)
132154
.await
133155
{
134-
Ok(profile) => *gameprofile = Some(profile),
156+
Ok(new_profile) => *profile = new_profile,
135157
Err(e) => {
136158
self.kick(&e.to_string()).await;
159+
return;
137160
}
138161
}
139162
}
140163

141-
if let Some(profile) = gameprofile.as_ref() {
142-
if ADVANCED_CONFIG.packet_compression.enabled {
143-
self.enable_compression().await;
144-
}
145-
self.finish_login(profile).await;
146-
} else {
147-
self.kick("No Game profile").await;
164+
if ADVANCED_CONFIG.packet_compression.enabled {
165+
self.enable_compression().await;
148166
}
167+
self.finish_login(profile).await;
149168
}
150169

151170
async fn enable_compression(&self) {

0 commit comments

Comments
 (0)