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