protected ADConfig loadAuditSectConf(final Ini iniConf) {
        final Profile.Section auditSect = iniConf.get(SECT_TOKEN_META_AUDIT);
        ADConfig adConfig = new ADConfig();
        if (auditSect == null) {
            return adConfig;
        }
        Set<String> configKeySet = auditSect.keySet();
        if (configKeySet.isEmpty()) {
            return adConfig;
        }
        if (TStringUtils.isNotBlank(auditSect.get("auditEnable"))) {
            adConfig.setAuditEnable(getBoolean(auditSect, "auditEnable"));
        }
        // parse auditProxyAddr configure
        if (TStringUtils.isNotBlank(auditSect.get("auditProxyAddr"))) {
            List<String> auditAddrs = new ArrayList<>();
            String auditProxyAddrs = auditSect.get("auditProxyAddr").trim();
            if (!auditProxyAddrs.contains(TokenConstants.ATTR_SEP)) {
                throw new IllegalArgumentException(
                        "Illegal parameter: auditProxyAddr's value must like \"ip1:port,ip2:port\"!");
            }
            String[] hostAndPortArray =
                    auditProxyAddrs.split(TokenConstants.ARRAY_SEP);
            for (String addr : hostAndPortArray) {
                if (TStringUtils.isBlank(addr)) {
                    throw new IllegalArgumentException(
                            "Illegal parameter: auditProxyAddr's value must "
                                    + "like \"ip1:port,ip2:port\" and ip:port not Blank!");
                }
                String[] hostPortItem = addr.split(TokenConstants.ATTR_SEP);
                if (hostPortItem.length != 2) {
                    throw new IllegalArgumentException(
                            "Illegal parameter: auditProxyAddr's value must like \"ip1:port,ip2:port\"!");
                }
                String hostName = hostPortItem[0].trim();
                if (TStringUtils.isBlank(hostName)) {
                    throw new IllegalArgumentException(
                            "Illegal parameter: auditProxyAddr's value must "
                                    + "like \"ip1:port,ip2:port\" and ip's value not Blank!");
                }
                if (TStringUtils.isBlank(hostPortItem[1])) {
                    throw new IllegalArgumentException(
                            "Illegal parameter: auditProxyAddr's value must"
                                    + " like \"ip1:port,ip2:port\" and port's value not Blank!");
                }
                int port = Integer.parseInt(hostPortItem[1].trim());
                auditAddrs.add(hostName + TokenConstants.ATTR_SEP + String.valueOf(port));
            }
            Collections.sort(auditAddrs);
            adConfig.setAuditProxyAddrSet(auditAddrs);
        }
        // get cache file path
        if (TStringUtils.isNotBlank(auditSect.get("auditCacheFilePath"))) {
            adConfig.setAuditCacheFilePath(auditSect.get("auditCacheFilePath").trim());
        }
        if (TStringUtils.isNotBlank(auditSect.get("auditCacheMaxRows"))) {
            adConfig.setAuditCacheMaxRows(getInt(auditSect, "auditCacheMaxRows"));
        }
        if (TStringUtils.isNotBlank(auditSect.get("auditIdProduce"))) {
            adConfig.setAuditIdProduce(getInt(auditSect, "auditIdProduce"));
        }
        if (TStringUtils.isNotBlank(auditSect.get("auditIdConsume"))) {
            adConfig.setAuditIdConsume(getInt(auditSect, "auditIdConsume"));
        }
        return adConfig;
    }
Retrieve similar configurations within a set of specific configurations according to the given configuration.

@param section      the section within file to be searched.
@param configFields the set of configurations to be searched.
@param checkItem    the given configuration to be compared.
inlong-tubemq/tubemq-server/src/main/java/org/apache/inlong/tubemq/server/common/fileconfig/AbstractFileConfig.java