From 12d32737f2c582269fe2aa37cd03369126d26747 Mon Sep 17 00:00:00 2001 From: LamGC Date: Sun, 15 Aug 2021 22:22:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=80=9A=E8=BF=87=20Constants=20?= =?UTF-8?q?=E7=B1=BB=E8=8E=B7=E5=8F=96=E9=A6=96=E6=AC=A1=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E7=AD=96=E7=95=A5=E7=B1=BB=E5=9E=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通过 Constants 类获取首次认证策略类型, 以修复类型无法获取的问题. --- .../net/lamgc/oracle/sentry/Constants.java | 28 +++++++++++++++++++ .../ssh/OracleInstanceServerKeyVerifier.java | 12 +++----- 2 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 src/main/java/net/lamgc/oracle/sentry/Constants.java diff --git a/src/main/java/net/lamgc/oracle/sentry/Constants.java b/src/main/java/net/lamgc/oracle/sentry/Constants.java new file mode 100644 index 0000000..3e89963 --- /dev/null +++ b/src/main/java/net/lamgc/oracle/sentry/Constants.java @@ -0,0 +1,28 @@ +package net.lamgc.oracle.sentry; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Component; + +/** + * @author LamGC + */ +@Component("sentry.constants") +public final class Constants { + + public static Constants instance; + + private Constants() { + instance = this; + } + + @Value("${oracle.ssh.firstConnection.authenticationPolicy}") + @NonNull + private String firstConnectionPolicy; + + + @NonNull + public String getFirstConnectionPolicy() { + return firstConnectionPolicy; + } +} diff --git a/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/OracleInstanceServerKeyVerifier.java b/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/OracleInstanceServerKeyVerifier.java index 99e7bf9..45373ea 100644 --- a/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/OracleInstanceServerKeyVerifier.java +++ b/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/OracleInstanceServerKeyVerifier.java @@ -1,5 +1,6 @@ package net.lamgc.oracle.sentry.oci.compute.ssh; +import net.lamgc.oracle.sentry.Constants; import net.lamgc.oracle.sentry.oci.compute.ComputeInstance; import org.apache.sshd.client.keyverifier.RequiredServerKeyVerifier; import org.apache.sshd.client.keyverifier.ServerKeyVerifier; @@ -7,8 +8,6 @@ import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.common.config.keys.KeyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.lang.NonNull; import java.net.SocketAddress; import java.security.PublicKey; @@ -21,10 +20,6 @@ public class OracleInstanceServerKeyVerifier implements ServerKeyVerifier { private final static Logger log = LoggerFactory.getLogger(OracleInstanceServerKeyVerifier.class); - @Value("${oracle.ssh.firstConnection.authenticationPolicy}") - @NonNull - private static String firstConnectionPolicy; - private final ComputeInstance instance; private final SshAuthInfo info; @@ -53,11 +48,12 @@ public class OracleInstanceServerKeyVerifier implements ServerKeyVerifier { } private boolean usePolicyConfirm(SocketAddress address, PublicKey serverKey) { + String policyName = Constants.instance.getFirstConnectionPolicy().toUpperCase(); FirstConnectionPolicy policy; try { - policy = FirstConnectionPolicy.valueOf(firstConnectionPolicy.toUpperCase()); + policy = FirstConnectionPolicy.valueOf(policyName); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("Unsupported policy: " + firstConnectionPolicy); + throw new IllegalArgumentException("Unsupported policy: " + policyName); } return policy.confirmFunction.confirm(this.instance, address, serverKey); }