mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 14:07:59 +00:00
fix: usr: Don't allow statistics-channel if libxml2 and libjson-c are unsupported
When the libxml2 and libjson-c libraries are not supported, the statistics channel can't return anything useful, so it is now disabled. Use of `statistics-channel` in `named.conf` is a fatal error. Closes #4895 Merge branch '4895-link-style-sheet-to-libxml2-support' into 'main' See merge request isc-projects/bind9!9423
This commit is contained in:
commit
0d4accd07f
@ -3463,6 +3463,11 @@ render_json_traffic(const isc_httpd_t *httpd, const isc_httpdurl_t *urlinfo,
|
||||
|
||||
#endif /* HAVE_JSON_C */
|
||||
|
||||
#if HAVE_LIBXML2
|
||||
/*
|
||||
* This is only needed if we have libxml2 and was confusingly returned if
|
||||
* neither of libxml2 or json-c is configured.
|
||||
*/
|
||||
static isc_result_t
|
||||
render_xsl(const isc_httpd_t *httpd, const isc_httpdurl_t *urlinfo, void *args,
|
||||
unsigned int *retcode, const char **retmsg, const char **mimetype,
|
||||
@ -3518,6 +3523,7 @@ send:
|
||||
end:
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
shutdown_listener(named_statschannel_t *listener) {
|
||||
@ -3530,6 +3536,7 @@ shutdown_listener(named_statschannel_t *listener) {
|
||||
isc_httpdmgr_shutdown(&listener->httpdmgr);
|
||||
}
|
||||
|
||||
#if defined(HAVE_LIBXML2) || defined(HAVE_JSON_C)
|
||||
static bool
|
||||
client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
|
||||
named_statschannel_t *listener = arg;
|
||||
@ -3560,7 +3567,9 @@ client_ok(const isc_sockaddr_t *fromaddr, void *arg) {
|
||||
|
||||
return (false);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBXML2) || defined(HAVE_JSON_C)
|
||||
static void
|
||||
destroy_listener(void *arg) {
|
||||
named_statschannel_t *listener = (named_statschannel_t *)arg;
|
||||
@ -3574,12 +3583,24 @@ destroy_listener(void *arg) {
|
||||
isc_mutex_destroy(&listener->lock);
|
||||
isc_mem_putanddetach(&listener->mctx, listener, sizeof(*listener));
|
||||
}
|
||||
#endif
|
||||
|
||||
static isc_result_t
|
||||
add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
||||
const cfg_obj_t *listen_params, const cfg_obj_t *config,
|
||||
isc_sockaddr_t *addr, cfg_aclconfctx_t *aclconfctx,
|
||||
const char *socktext) {
|
||||
#if !defined(HAVE_LIBXML2) && !defined(HAVE_JSON_C)
|
||||
UNUSED(server);
|
||||
UNUSED(listenerp);
|
||||
UNUSED(listen_params);
|
||||
UNUSED(config);
|
||||
UNUSED(addr);
|
||||
UNUSED(aclconfctx);
|
||||
UNUSED(socktext);
|
||||
|
||||
return (ISC_R_NOTIMPLEMENTED);
|
||||
#else
|
||||
isc_result_t result;
|
||||
named_statschannel_t *listener = NULL;
|
||||
const cfg_obj_t *allow = NULL;
|
||||
@ -3644,6 +3665,8 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
||||
isc_httpdmgr_addurl(listener->httpdmgr,
|
||||
"/xml/v" STATS_XML_VERSION_MAJOR "/traffic", false,
|
||||
render_xml_traffic, server);
|
||||
isc_httpdmgr_addurl(listener->httpdmgr, "/bind9.xsl", true, render_xsl,
|
||||
server);
|
||||
#endif /* ifdef HAVE_LIBXML2 */
|
||||
#ifdef HAVE_JSON_C
|
||||
isc_httpdmgr_addurl(listener->httpdmgr, "/json", false, render_json_all,
|
||||
@ -3673,8 +3696,6 @@ add_listener(named_server_t *server, named_statschannel_t **listenerp,
|
||||
"/json/v" STATS_JSON_VERSION_MAJOR "/traffic",
|
||||
false, render_json_traffic, server);
|
||||
#endif /* ifdef HAVE_JSON_C */
|
||||
isc_httpdmgr_addurl(listener->httpdmgr, "/bind9.xsl", true, render_xsl,
|
||||
server);
|
||||
|
||||
*listenerp = listener;
|
||||
isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER,
|
||||
@ -3691,6 +3712,7 @@ cleanup:
|
||||
isc_mem_putanddetach(&listener->mctx, listener, sizeof(*listener));
|
||||
|
||||
return (result);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -24,9 +24,7 @@ options {
|
||||
notify yes;
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.1 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
zone "." {
|
||||
type primary;
|
||||
|
16
bin/tests/system/statistics/ns1/statistics-channels.conf.in
Normal file
16
bin/tests/system/statistics/ns1/statistics-channels.conf.in
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.1 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -26,9 +26,7 @@ options {
|
||||
|
||||
trust-anchors { };
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.2 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
|
@ -24,9 +24,7 @@ options {
|
||||
notify yes;
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.2 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
|
16
bin/tests/system/statistics/ns2/statistics-channels.conf.in
Normal file
16
bin/tests/system/statistics/ns2/statistics-channels.conf.in
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.2 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -29,9 +29,7 @@ options {
|
||||
|
||||
trust-anchors { };
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.3 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
|
16
bin/tests/system/statistics/ns3/statistics-channels.conf.in
Normal file
16
bin/tests/system/statistics/ns3/statistics-channels.conf.in
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.3 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -13,6 +13,13 @@
|
||||
|
||||
. ../conf.sh
|
||||
|
||||
copy_setports ns1/named.conf.in ns1/named.conf
|
||||
copy_setports ns2/named.conf.in ns2/named.conf
|
||||
copy_setports ns3/named.conf.in ns3/named.conf
|
||||
for d in ns1 ns2 ns3; do
|
||||
conf=named.conf
|
||||
copy_setports "${d}/${conf}.in" "${d}/${conf}"
|
||||
conf=statistics-channels.conf
|
||||
if $FEATURETEST --have-libxml2 || $FEATURETEST --have-json-c; then
|
||||
copy_setports "${d}/${conf}.in" "${d}/${conf}"
|
||||
else
|
||||
echo "" >"${d}/${conf}"
|
||||
fi
|
||||
done
|
||||
|
@ -23,4 +23,9 @@ if ! ${PERL} -MFile::Fetch -e ''; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! $FEATURETEST --have-libxml2 && ! $FEATURETEST --have-json-c; then
|
||||
echo_i "skip: one or both of --with-libxml2 and --with-json-c required"
|
||||
exit 255
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
@ -35,9 +35,7 @@ controls {
|
||||
inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.1 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
zone "." {
|
||||
type primary;
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.1 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -35,9 +35,7 @@ controls {
|
||||
inet 10.53.0.2 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.2 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.2 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -35,9 +35,7 @@ controls {
|
||||
inet 10.53.0.3 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.3 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.3 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -36,9 +36,7 @@ controls {
|
||||
inet 10.53.0.4 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.4 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.4 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -37,9 +37,7 @@ controls {
|
||||
inet 10.53.0.5 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.5 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.5 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -36,9 +36,7 @@ controls {
|
||||
inet 10.53.0.6 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.6 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
||||
include "statistics-channels.conf";
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
statistics-channels {
|
||||
inet 10.53.0.6 port @EXTRAPORT1@ allow { any; };
|
||||
};
|
@ -16,12 +16,16 @@
|
||||
|
||||
set -e
|
||||
|
||||
copy_setports ns1/named.conf.in ns1/named.conf
|
||||
copy_setports ns2/named.conf.in ns2/named.conf
|
||||
copy_setports ns3/named.conf.in ns3/named.conf
|
||||
copy_setports ns4/named.conf.in ns4/named.conf
|
||||
copy_setports ns5/named.conf.in ns5/named.conf
|
||||
copy_setports ns6/named.conf.in ns6/named.conf
|
||||
for d in ns1 ns2 ns3 ns4 ns5 ns6; do
|
||||
conf=named.conf
|
||||
copy_setports "${d}/${conf}.in" "${d}/${conf}"
|
||||
conf=statistics-channels.conf
|
||||
if $FEATURETEST --have-libxml2 || $FEATURETEST --have-json-c; then
|
||||
copy_setports "${d}/${conf}.in" "${d}/${conf}"
|
||||
else
|
||||
echo "" >"${d}/${conf}"
|
||||
fi
|
||||
done
|
||||
|
||||
(
|
||||
cd ns1
|
||||
|
@ -1259,8 +1259,13 @@ static cfg_clausedef_t namedconf_clauses[] = {
|
||||
{ "options", &cfg_type_options, 0 },
|
||||
{ "parental-agents", &cfg_type_remoteservers, CFG_CLAUSEFLAG_MULTI },
|
||||
{ "primaries", &cfg_type_remoteservers, CFG_CLAUSEFLAG_MULTI },
|
||||
#if defined(HAVE_LIBXML2) || defined(HAVE_JSON_C)
|
||||
{ "statistics-channels", &cfg_type_statschannels,
|
||||
CFG_CLAUSEFLAG_MULTI },
|
||||
#else
|
||||
{ "statistics-channels", &cfg_type_statschannels,
|
||||
CFG_CLAUSEFLAG_MULTI | CFG_CLAUSEFLAG_NOTCONFIGURED },
|
||||
#endif
|
||||
{ "tls", &cfg_type_tlsconf, CFG_CLAUSEFLAG_MULTI },
|
||||
{ "view", &cfg_type_view, CFG_CLAUSEFLAG_MULTI },
|
||||
{ NULL, NULL, 0 }
|
||||
|
Loading…
x
Reference in New Issue
Block a user