DNS Query with ColdFusion
It has been a while since I've posted one of these java + cfml tricks, so here's a neat one for ya'.
You can use the Java Naming and Directory Interface (JNDI) to perform a DNS query in ColdFusion.
In the example below I use JNDI to look up the MX records (mail exchangers) for gmail.com:
<cfset env = CreateObject("java", "java.util.Hashtable")> <cfset env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory")> <cfset env.put("java.naming.provider.url", "dns://10.0.0.65")> <cfset env.put("com.sun.jndi.dns.timeout.initial", "2000")> <cfset env.put("com.sun.jndi.dns.timeout.retries", "3")> <cfset dirContext = CreateObject("java", "javax.naming.directory.InitialDirContext")> <cfset dirContext.init(env)> <cfset type = ArrayNew(1)> <cfset type[1] = "MX"> <cfset attributes = dirContext.getAttributes("gmail.com", type)> <cfset atribEnum = attributes.getAll()> <cfloop condition="#atribEnum.hasMore()#"> <cfset attribute = atribEnum.next()> <cfoutput>#attribute.toString()#</cfoutput><br /> </cfloop>
You will want to point the java.naming.provider.url
to the IP address of a dns server, in my case I use: dns://10.0.0.65
.
You can also make different types of queries such as A
(address) or TXT
(text records).
I have written a commercial DNS component for ColdFusion as well.
Like this? Follow me ↯
Tweet Follow @pfreitagDNS Query with ColdFusion was first published on October 27, 2005.
If you like reading about coldfusion, cfml, dns, tricks, java, or jndi then you might also like:
- URL Safe Base64 Encoding / Decoding in CFML
- Getting Size of Heap and Non Heap Memory in CFML
- Serializing CFC's in ColdFusion 8
- Reverse IP Address Lookup with ColdFusion + Java
- Null Java References in CF 6 vs 7
- File Created Date Time in ColdFusion / CFML
- Spring4Shell and ColdFusion
- Log4j CVE-2021-44228 Log4Shell Vulnerability on ColdFusion / Lucee
The Fixinator Code Security Scanner for ColdFusion & CFML is an easy to use security tool that every CF developer can use. It can also easily integrate into CI for automatic scanning on every commit.
Try Fixinator
CFBreak
The weekly newsletter for the CFML Community
Comments
<cfif NOT isdefined("session.HSQLDB2")>
Do once <BR>
<cfscript>
remoteClassLoader = createObject("component","RemoteClassLoader");
urlArray = arrayNew(1);
urlArray[1] = "http://www.geocities.com/empiricallyspeaking/classes/hsqldb.jar";
urlArray[2] = "http://www.geocities.com/empiricallyspeaking/classes/testHSQLDB2.jar";
remoteClassLoader.setRemoteClassPaths(urlArray);
session.HSQLDB2 = remoteClassLoader.getRemoteClass("HSQLDB2").newInstance();
</cfscript>
<cftry>
<cfset session.holdtheconnection = session.HSQLDB2.HSQLDB_getconnection()>
<cfcatch type="any">
<cfdump var="#cfcatch#">
</cfcatch>
</cftry>
</cfif>
<---
session.holdtheconnection.isClosed() is YES why is that and how can I keep it open.
---->
<cfset type = ArrayNew(1)>
<cfset type[1] = "A">
<cfset type[2] = "AAAA">
<cfset type[3] = "CNAME">
<cfset type[4] = "MX">
<cfset type[5] = "NAPTR">
<cfset type[6] = "NS">
<cfset type[7] = "PTR">
<cfset type[8] = "SOA">
<cfset type[9] = "SRV">
<cfset type[10] = "TXT">
and it only pulls type[6]
I can switch out the different types but it only shows 1.
-Randy