From b3e02ac9b7677388a4c9127d7286ab8dd58605f2 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 2 Jun 2019 03:05:39 +0200 Subject: [PATCH] Add support for pasting authenticator code on login screen Signed-off-by: Tomas Slusny --- .../loginscreen/LoginScreenPlugin.java | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java index 4da52e1492..bda2e5cdf2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java @@ -54,6 +54,7 @@ public class LoginScreenPlugin extends Plugin implements KeyListener { private static final int MAX_USERNAME_LENGTH = 254; private static final int MAX_PASSWORD_LENGTH = 20; + private static final int MAX_PIN_LENGTH = 6; @Inject private Client client; @@ -163,7 +164,9 @@ public class LoginScreenPlugin extends Plugin implements KeyListener @Override public void keyPressed(KeyEvent e) { - if (!config.pasteEnabled() || client.getGameState() != GameState.LOGIN_SCREEN) + if (!config.pasteEnabled() || ( + client.getGameState() != GameState.LOGIN_SCREEN && + client.getGameState() != GameState.LOGIN_SCREEN_AUTHENTICATOR)) { return; } @@ -182,16 +185,27 @@ public class LoginScreenPlugin extends Plugin implements KeyListener .toString() .trim(); - // 0 is username, 1 is password - if (client.getCurrentLoginField() == 0) + switch (client.getLoginIndex()) { - // Truncate data to maximum username length if necessary - client.setUsername(data.substring(0, Math.min(data.length(), MAX_USERNAME_LENGTH))); - } - else - { - // Truncate data to maximum password length if necessary - client.setPassword(data.substring(0, Math.min(data.length(), MAX_PASSWORD_LENGTH))); + // Username/password form + case 2: + if (client.getCurrentLoginField() == 0) + { + // Truncate data to maximum username length if necessary + client.setUsername(data.substring(0, Math.min(data.length(), MAX_USERNAME_LENGTH))); + } + else + { + // Truncate data to maximum password length if necessary + client.setPassword(data.substring(0, Math.min(data.length(), MAX_PASSWORD_LENGTH))); + } + + break; + // Authenticator form + case 4: + // Truncate data to maximum OTP code length if necessary + client.setOtp(data.substring(0, Math.min(data.length(), MAX_PIN_LENGTH))); + break; } } catch (UnsupportedFlavorException | IOException ex)