Giter Site home page Giter Site logo

Comments (4)

oubidar-Abderrahim avatar oubidar-Abderrahim commented on September 12, 2024 3

Thank you, we'll take a look into this when possible

from graal.

yahocen avatar yahocen commented on September 12, 2024

Complete Java classes for debugging purposes 🙏

import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.Hashtable;

public class Test {

    public static String getDnsTxtValue(String domain) throws NamingException {
        Hashtable<String, String> env = new Hashtable<>();
        env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
        DirContext dirContext = new InitialDirContext(env);
        //There is an exception here
        Attributes attrs = dirContext.getAttributes(domain, new String[] { "TXT" });
        Attribute txt = attrs.get("TXT");
        NamingEnumeration<?> e = txt.getAll();
        String value = null;
        while (e.hasMore()) {
            value = e.next().toString();
        }
        return value;
    }

    public static void main(String[] args) throws NamingException {
        //The record type here is TXT
        System.out.println(getDnsTxtValue("_acme-challenge.example.com"));
    }

}

from graal.

yahocen avatar yahocen commented on September 12, 2024

Before fixing this issue, you can use nslookup and Process to solve it

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Test {

    public static List<String> getTXTRecord(String domain) throws IOException, InterruptedException {
        List<String> txtRecords = new ArrayList<>();
        // 使用 ProcessBuilder 运行 nslookup 命令
        var pb = new ProcessBuilder("nslookup", "-query=TXT", domain);
        var process = pb.start();
        // 读取命令输出
        try (var reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
            String line;
            boolean recordFound = false;
            while ((line = reader.readLine()) != null) {
                // 检查是否为TXT记录
                if (line.contains("text =")) {
                    recordFound = true;
                }
                // 获取TXT记录值部分
                if (recordFound && line.trim().startsWith("\"")) {
                    txtRecords.add(line.trim().replace("\"", ""));
                }
            }
        }
        process.waitFor();
        return txtRecords;
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        //The record type here is TXT
        // 示例域名
        String domain = "_acme-challenge.example.com";
        List<String> txtRecords = getTXTRecord(domain);
        // 输出TXT记录值
        txtRecords.forEach(record -> System.out.println("TXT Record: " + record));
    }

}

from graal.

oubidar-Abderrahim avatar oubidar-Abderrahim commented on September 12, 2024

I tested the code from here: #9597 (comment)
it didn't run correctly as a java code

>java Test
Exception in thread "main" javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '_acme-challenge.example.com'
        at jdk.naming.dns/com.sun.jndi.dns.DnsClient.checkResponseCode(DnsClient.java:659)
        at jdk.naming.dns/com.sun.jndi.dns.DnsClient.isMatchResponse(DnsClient.java:577)
        at jdk.naming.dns/com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:429)
        at jdk.naming.dns/com.sun.jndi.dns.DnsClient.query(DnsClient.java:214)
        at jdk.naming.dns/com.sun.jndi.dns.Resolver.query(Resolver.java:81)
        at jdk.naming.dns/com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:434)
        at java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235)
        at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141)
        at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:129)
        at java.naming/javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:171)
        at Test.getDnsTxtValue(Test.java:16)
        at Test.main(Test.java:28)

Is there something missing in the code?

from graal.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.