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
- Spring4Shell and ColdFusion
- Log4j CVE-2021-44228 Log4Shell Vulnerability on ColdFusion / Lucee
- Using Hashicorp Vault with ColdFusion
The FuseGuard Web Application Firewall for ColdFusion & CFML is a high performance, customizable engine that blocks various attacks against your ColdFusion applications.
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