[FIX] AuthCoreProvider checkServer bug fixes

This commit is contained in:
Gravita 2021-06-15 21:02:33 +07:00
parent 9fe1fc4f23
commit 8ea134dc27
3 changed files with 17 additions and 10 deletions

View file

@ -234,7 +234,8 @@ public CheckServerReport checkServer(Client client, String username, String serv
if (client.auth == null) return null; if (client.auth == null) return null;
if (client.auth.isUseCore()) { if (client.auth.isUseCore()) {
User user = client.auth.core.checkServer(client, username, serverID); User user = client.auth.core.checkServer(client, username, serverID);
return user == null ? null : CheckServerReport.ofUser(user, getPlayerProfile(user)); if (user == null) return null;
else return CheckServerReport.ofUser(user, getPlayerProfile(client.auth, user));
} else { } else {
UUID uuid = client.auth.handler.checkServer(username, serverID); UUID uuid = client.auth.handler.checkServer(username, serverID);
return uuid == null ? null : CheckServerReport.ofUUID(uuid, getPlayerProfile(client.auth, uuid)); return uuid == null ? null : CheckServerReport.ofUUID(uuid, getPlayerProfile(client.auth, uuid));
@ -255,7 +256,7 @@ public PlayerProfile getPlayerProfile(Client client) {
PlayerProfile playerProfile; PlayerProfile playerProfile;
if (client.useOAuth) { if (client.useOAuth) {
User user = client.getUser(); User user = client.getUser();
playerProfile = getPlayerProfile(user); playerProfile = getPlayerProfile(client.auth, user);
if (playerProfile != null) return playerProfile; if (playerProfile != null) return playerProfile;
} }
if (client.auth.textureProvider != null) { if (client.auth.textureProvider != null) {
@ -273,7 +274,7 @@ public PlayerProfile getPlayerProfile(AuthProviderPair pair, String username, Cl
UUID uuid = null; UUID uuid = null;
if (pair.isUseCore()) { if (pair.isUseCore()) {
User user = pair.core.getUserByUsername(username); User user = pair.core.getUserByUsername(username);
PlayerProfile playerProfile = getPlayerProfile(user); PlayerProfile playerProfile = getPlayerProfile(pair, user);
uuid = user.getUUID(); uuid = user.getUUID();
if (playerProfile != null) return playerProfile; if (playerProfile != null) return playerProfile;
} else { } else {
@ -300,7 +301,7 @@ public PlayerProfile getPlayerProfile(AuthProviderPair pair, UUID uuid, ClientPr
String username = null; String username = null;
if (pair.isUseCore()) { if (pair.isUseCore()) {
User user = pair.core.getUserByUUID(uuid); User user = pair.core.getUserByUUID(uuid);
PlayerProfile playerProfile = getPlayerProfile(user); PlayerProfile playerProfile = getPlayerProfile(pair, user);
username = user.getUsername(); username = user.getUsername();
if (playerProfile != null) return playerProfile; if (playerProfile != null) return playerProfile;
} else { } else {
@ -319,11 +320,11 @@ public PlayerProfile getPlayerProfile(AuthProviderPair pair, UUID uuid, ClientPr
return new PlayerProfile(uuid, username, null, null); return new PlayerProfile(uuid, username, null, null);
} }
public PlayerProfile getPlayerProfile(User user) { public PlayerProfile getPlayerProfile(AuthProviderPair pair, User user) {
if (user instanceof UserSupportTextures) { if (user instanceof UserSupportTextures) {
return new PlayerProfile(user.getUUID(), user.getUsername(), ((UserSupportTextures) user).getSkinTexture(), ((UserSupportTextures) user).getCloakTexture()); return new PlayerProfile(user.getUUID(), user.getUsername(), ((UserSupportTextures) user).getSkinTexture(), ((UserSupportTextures) user).getCloakTexture());
} }
return null; return getPlayerProfile(user.getUUID(), user.getUsername(), "", pair.textureProvider);
} }
private PlayerProfile getPlayerProfile(UUID uuid, String username, String client, TextureProvider textureProvider) { private PlayerProfile getPlayerProfile(UUID uuid, String username, String client, TextureProvider textureProvider) {

View file

@ -34,13 +34,13 @@ public void execute(ChannelHandlerContext ctx, Client pClient) {
if (report != null) { if (report != null) {
result.playerProfile = report.playerProfile; result.playerProfile = report.playerProfile;
result.uuid = report.uuid; result.uuid = report.uuid;
logger.debug("checkServer: {} uuid: {} serverID: {}", result.playerProfile.username, result.uuid, serverID); logger.debug("checkServer: {} uuid: {} serverID: {}", result.playerProfile == null ? null : result.playerProfile.username, result.uuid, serverID);
} }
} catch (AuthException | HookException e) { } catch (AuthException | HookException e) {
sendError(e.getMessage()); sendError(e.getMessage());
return; return;
} catch (Exception e) { } catch (Exception e) {
logger.error(e); logger.error("Internal authHandler error", e);
sendError("Internal authHandler error"); sendError("Internal authHandler error");
return; return;
} }

View file

@ -140,12 +140,18 @@ public void run(String... args) throws Throwable {
if (config.logFile != null) LogHelper.addOutput(IOHelper.newWriter(Paths.get(config.logFile), true)); if (config.logFile != null) LogHelper.addOutput(IOHelper.newWriter(Paths.get(config.logFile), true));
{ {
if (config.saveSession) { if (config.saveSession) {
boolean needRestore = false;
if (config.oauth != null) { if (config.oauth != null) {
Request.setOAuth(config.auth_id, config.oauth, config.oauthExpireTime); Request.setOAuth(config.auth_id, config.oauth, config.oauthExpireTime);
} else { needRestore = true;
} else if (config.session != null) {
Request.setSession(config.session); Request.setSession(config.session);
needRestore = true;
} else {
auth();
} }
try { try {
if (needRestore)
Request.restore(); Request.restore();
} catch (Exception e) { } catch (Exception e) {
LogHelper.error(e); LogHelper.error(e);