Apache Commons Validator - 验证 VPN(子)域
Apache Commons Validator - Validate VPN (Sub)Domain
我在一家设置了 VPN 的公司工作。 (Windows ActiveDomain/LDAP) 网络上的计算机可以通过名称 (\machine
) 或子域 (\machine.companyname.tld
;例如:ahammerthief.acme.net
).
我正在尝试使用 Apache Commons Validator 将 machine.companyname.tld
识别为有效的 domain/subdomain,尽管我工作的公司外部无法使用它。
是否可以这样做,或者验证器不打算这样做?
我的代码如下:
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,我应该能够为此目的使用它。
更新: 我随后查看了以下问题:
- How can you check whether domain exists or not in Java?. One of the answers 建议使用
DomainValidator
中的 isValid()
。我会试试看是否有效。
用于验证 domain/subdomain 的正确 method/function 是 validator.isValid(String in)
,而不是 validator.isValidGenericTld( String in)
或 validator.isValidLocalTld(String in)
。最后两个只验证最后一个句点('.')之后的部分。
在上面,validator
是DomainValidator
的实例。
我在一家设置了 VPN 的公司工作。 (Windows ActiveDomain/LDAP) 网络上的计算机可以通过名称 (\machine
) 或子域 (\machine.companyname.tld
;例如:ahammerthief.acme.net
).
我正在尝试使用 Apache Commons Validator 将 machine.companyname.tld
识别为有效的 domain/subdomain,尽管我工作的公司外部无法使用它。
是否可以这样做,或者验证器不打算这样做?
我的代码如下:
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,我应该能够为此目的使用它。
更新: 我随后查看了以下问题:
- How can you check whether domain exists or not in Java?. One of the answers 建议使用
DomainValidator
中的isValid()
。我会试试看是否有效。
用于验证 domain/subdomain 的正确 method/function 是 validator.isValid(String in)
,而不是 validator.isValidGenericTld( String in)
或 validator.isValidLocalTld(String in)
。最后两个只验证最后一个句点('.')之后的部分。
在上面,validator
是DomainValidator
的实例。