【问题标题】:Apache Commons Validator - Validate VPN (Sub)DomainApache Commons Validator - 验证 VPN(子)域
【发布时间】:2018-09-11 14:50:06
【问题描述】:

我在一家设置了 VPN 的公司工作。 (Windows ActiveDomain/LDAP) 网络上的计算机可以通过名称 (\\machine) 或子域 (\\machine.companyname.tld; 例如:ahammerthief.acme.net) 访问。

我正在尝试使用 Apache Commons Validator 将 machine.companyname.tld 识别为有效的域/子域,尽管我工作的公司外部无法使用它。

是否有可能做到这一点,还是 Validator 不打算这样做?

我的代码如下:

String domain = null, in = JOptionPane.showInputDialog(
    null, "Please enter the domain:", "NTLM/Samba Domain", JOptionPane.QUESTION_MESSAGE
);
if (null != in && !in.isEmpty()) {
  DomainValidator validator = DomainValidator.getInstance(true);
  // Always returns false. Why?
  if (validator.isValidGenericTld(in) || validator.isValidLocalTld(in)) {
    domain = in;
    UniAddress addr = null;
    try {
      addr = UniAddress.getByName(domain, true);
    } catch (UnknownHostException UHEx) {
      System.err.println("Unknown Host (\"" + domain + "\": " + UHEx.getMessage());
      UHEx.printStackTrace(System.err);
      return;
    }
    // ... Ask user for credentials here. Never gets this far.
    // TODO: Use credentials to create/overwrite a jCIFS SMBFile on the network
  } else {
    System.err.println("Entered domain (" + in + ") is invalid!");
  }
} else {
  System.err.println("Entered domain is null or empty!");
}

我在提示时输入的文本格式为 subdomain.companyname.tld

可以使用正则表达式来检查是否至少有两个 '.'提供的字符串中的字符,并且它们前面至少有一个不是“。”的字符,但我认为如果 Validator 有用于验证域和 URL 的类,我应该能够使用它目的。

更新:我随后查看了以下问题:

  1. How to check validity of a subdomain in Java
  2. How can you check whether domain exists or not in Java?One of the answers 建议使用来自DomainValidatorisValid()。我会试试看它是否有效。

【问题讨论】:

标签: validation subdomain java-7 apache-commons


【解决方案1】:

用于验证域/子域的正确方法/函数是 validator.isValid(String in),而不是 validator.isValidGenericTld( String in)validator.isValidLocalTld(String in)。最后两个仅验证最后一个句点('.')之后的部分。

在上面,validatorDomainValidator 的一个实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 2014-12-25
    • 2023-03-30
    • 2016-06-04
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多