导航菜单

页面标题

页面副标题

Cashalo v2.25.0.0 - DnsTxtQueryKt.java 源代码

正在查看: Cashalo v2.25.0.0 应用的 DnsTxtQueryKt.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.statsig.androidsdk;

import com.fullstory.FS;
import com.tom_roush.fontbox.ttf.GlyfDescript;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.List;
import kotlin.Metadata;
import kotlin.collections.ArraysKt;
import kotlin.collections.CollectionsKt;
import kotlin.collections.IndexedValue;
import kotlin.coroutines.Continuation;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.StringsKt;
import kotlinx.coroutines.BuildersKt;
import kotlinx.coroutines.Dispatchers;

@Metadata(d1 = {"\u0000*\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010 \n\u0002\u0010\f\n\u0002\b\u0003\n\u0002\u0010\u0012\n\u0002\b\u0003\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\u001a\u0010\u0010\r\u001a\u00020\u000e2\u0006\u0010\u000f\u001a\u00020\u0001H\u0002\u001a\u0017\u0010\u0010\u001a\b\u0012\u0004\u0012\u00020\u00010\u0003H\u0086@ø\u0001\u0000¢\u0006\u0002\u0010\u0011\u001a\u0014\u0010\u0012\u001a\b\u0012\u0004\u0012\u00020\u00010\u00032\u0006\u0010\u0013\u001a\u00020\b\"\u000e\u0010\u0000\u001a\u00020\u0001X\u0086T¢\u0006\u0002\n\u0000\"\u0017\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0011\u0010\u0007\u001a\u00020\b¢\u0006\b\n\u0000\u001a\u0004\b\t\u0010\n\"\u000e\u0010\u000b\u001a\u00020\fX\u0086T¢\u0006\u0002\n\u0000\u0082\u0002\u0004\n\u0002\b\u0019¨\u0006\u0014"}, d2 = {"DNS_QUERY_ENDPOINT", "", "DOMAIN_CHARS", "", "", "getDOMAIN_CHARS", "()Ljava/util/List;", "FEATURE_ASSETS_DNS_QUERY", "", "getFEATURE_ASSETS_DNS_QUERY", "()[B", "MAX_START_LOOKUP", "", "createHttpConnection", "Ljava/net/HttpURLConnection;", "url", "fetchTxtRecords", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "parseDnsResponse", "input", "android-sdk_release"}, k = 2, mv = {1, 5, 1}, xi = 48)
public final class DnsTxtQueryKt {
    public static final String DNS_QUERY_ENDPOINT = "https://cloudflare-dns.com/dns-query";
    public static final int MAX_START_LOOKUP = 200;
    private static final byte[] FEATURE_ASSETS_DNS_QUERY = {0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 13, 102, 101, 97, 116, 117, 114, 101, 97, 115, 115, 101, 116, 115, 3, 111, 114, 103, 0, 0, GlyfDescript.X_DUAL, 0, 1};
    private static final List<Character> DOMAIN_CHARS = CollectionsKt.listOf(new Character[]{'i', 'e', 'd'});

    public static final byte[] getFEATURE_ASSETS_DNS_QUERY() {
        return FEATURE_ASSETS_DNS_QUERY;
    }

    public static final List<Character> getDOMAIN_CHARS() {
        return DOMAIN_CHARS;
    }

    public static final Object fetchTxtRecords(Continuation<? super List<String>> continuation) {
        Dispatchers dispatchers = Dispatchers.INSTANCE;
        return BuildersKt.withContext(Dispatchers.getIO(), new DnsTxtQueryKt$fetchTxtRecords$2(null), continuation);
    }

    public static final HttpURLConnection createHttpConnection(String str) {
        URLConnection urlconnection_wrapInstance = FS.urlconnection_wrapInstance(new URL(str).openConnection());
        if (urlconnection_wrapInstance == null) {
            throw new NullPointerException("null cannot be cast to non-null type java.net.HttpURLConnection");
        }
        HttpURLConnection httpURLConnection = (HttpURLConnection) urlconnection_wrapInstance;
        httpURLConnection.setRequestMethod("POST");
        httpURLConnection.setRequestProperty("Content-Type", "application/dns-message");
        httpURLConnection.setRequestProperty("Accept", "application/dns-message");
        httpURLConnection.setDoOutput(true);
        return httpURLConnection;
    }

    public static final List<String> parseDnsResponse(byte[] bArr) {
        Intrinsics.checkNotNullParameter(bArr, "input");
        Iterator it = ArraysKt.withIndex(bArr).iterator();
        int i = 0;
        while (true) {
            if (!it.hasNext()) {
                i = -1;
                break;
            }
            Object next = it.next();
            if (i < 0) {
                CollectionsKt.throwIndexOverflow();
            }
            IndexedValue indexedValue = (IndexedValue) next;
            int component1 = indexedValue.component1();
            byte byteValue = ((Number) indexedValue.component2()).byteValue();
            if (component1 < 200 && ((char) byteValue) == '=' && component1 > 0 && getDOMAIN_CHARS().contains(Character.valueOf((char) bArr[component1 - 1]))) {
                break;
            }
            i++;
        }
        if (i == -1) {
            throw new DnsTxtParseError("Failed to parse TXT records from DNS");
        }
        byte[] copyOfRange = ArraysKt.copyOfRange(bArr, i - 1, bArr.length);
        Charset charset = StandardCharsets.UTF_8;
        Intrinsics.checkNotNullExpressionValue(charset, "UTF_8");
        return StringsKt.split$default(new String(copyOfRange, charset), new String[]{","}, false, 0, 6, (Object) null);
    }
}