Apache Commons Validator - Проверка VPN (суб) домена - PullRequest
0 голосов
/ 11 сентября 2018

Я работаю в компании, которая настроила 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. Как проверить правильность субдомена в Java
  2. Как проверить, существует домен в Java или нет? . Один из ответов предлагает использовать isValid() из DomainValidator. Я попробую это, чтобы увидеть, работает ли это.

1 Ответ

0 голосов
/ 12 сентября 2018

Правильный метод / функция, которую следует использовать для проверки домена / субдомена: validator.isValid(String in), а не validator.isValidGenericTld( String in) или validator.isValidLocalTld(String in). Последние два проверяют только часть после последнего периода ('.').

В приведенном выше примере validator является экземпляром DomainValidator.

...