⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bind-9.2.3rc1-patch

📁 package of develop dns
💻 3RC1-PATCH
📖 第 1 页 / 共 2 页
字号:
--- ./bin/dig/dig.1.orig	Fri May 16 15:27:30 2003+++ ./bin/dig/dig.1	Tue Jul 22 15:01:36 2003@@ -350,4 +350,15 @@ will not print the initial query when it looks up the NS records for isc.org.+.SH "IDN SUPPORT"+.PP+If \fBdig\fR has been built with IDN (internationalized+domain name) support, it can accept and display non-ASCII domain names.+\fBdig\fR appropriately converts character encoding of+domain name before sending a request to DNS server or displaying a+reply from the server.+If you'd like to turn off the IDN support for some reason, defines+the \fBIDN_DISABLE\fR environment variable.+The IDN support is disabled if the the variable is set when +\fBdig\fR runs. .SH "FILES" .PP--- ./bin/dig/Makefile.in.orig	Fri Dec 27 10:51:00 2002+++ ./bin/dig/Makefile.in	Tue Jul 22 15:01:36 2003@@ -37,5 +37,5 @@ DEPLIBS =	${DNSDEPLIBS} ${ISCDEPLIBS} -LIBS =		${DNSLIBS} ${ISCLIBS} @LIBS@+LIBS =		${DNSLIBS} ${ISCLIBS} @IDNLIBS@ @LIBS@  SUBDIRS =--- ./bin/dig/dig.docbook.orig	Mon May 12 12:50:15 2003+++ ./bin/dig/dig.docbook	Tue Jul 22 15:01:36 2003@@ -530,4 +530,19 @@  <refsect1>+<title>IDN SUPPORT</title>+<para>+If <command>dig</command> has been built with IDN (internationalized+domain name) support, it can accept and display non-ASCII domain names.+<command>dig</command> appropriately converts character encoding of+domain name before sending a request to DNS server or displaying a+reply from the server.+If you'd like to turn off the IDN support for some reason, defines+the <envar>IDN_DISABLE</envar> environment variable.+The IDN support is disabled if the the variable is set when +<command>dig</command> runs.+</para>+</refsect1>++<refsect1> <title>FILES</title> <para>--- ./bin/dig/dighost.c.orig	Tue Jul 22 14:33:12 2003+++ ./bin/dig/dighost.c	Tue Jul 22 15:01:36 2003@@ -33,4 +33,15 @@ #include <limits.h> +#ifdef HAVE_LOCALE_H+#include <locale.h>+#endif++#ifdef WITH_IDN+#include <idn/result.h>+#include <idn/log.h>+#include <idn/resconf.h>+#include <idn/api.h>+#endif+ #include <dns/byaddr.h> #include <dns/fixedname.h>@@ -132,4 +143,16 @@ dig_lookup_t *current_lookup = NULL; +#ifdef WITH_IDN+static void	      initialize_idn(void);+static isc_result_t   output_filter(isc_buffer_t *buffer,+				    unsigned int used_org,+				    isc_boolean_t absolute);+static idn_result_t   append_textname(char *name, const char *origin,+				      size_t namesize);+static void	      idn_check_result(idn_result_t r, const char *msg);++#define MAXDLEN               256+#endif+ /*  * Apply and clear locks at the event level in global task.@@ -652,4 +675,8 @@ 	} +#ifdef WITH_IDN+	initialize_idn();+#endif+ 	if (keyfile[0] != 0) 		setup_file_key();@@ -1172,4 +1199,12 @@ 	dns_compress_t cctx; 	char store[MXNAME];+#ifdef WITH_IDN+	idn_result_t mr;+	char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];+#endif++#ifdef WITH_IDN+	dns_name_settotextfilter(output_filter);+#endif  	REQUIRE(lookup != NULL);@@ -1200,4 +1235,15 @@ 			sizeof(lookup->onamespace)); +#ifdef WITH_IDN+	/*+	 * We cannot convert `textname' and `origin' separately.+	 * `textname' doesn't contain TLD, but local mapping needs+	 * TLD.+	 */+	mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,+			    utf8_textname, sizeof(utf8_textname));+	idn_check_result(mr, "convert textname to UTF-8");+#endif+ 	/* 	 * If the name has too many dots, force the origin to be NULL@@ -1208,4 +1254,11 @@ 	 */ 	/* XXX New search here? */+#ifdef WITH_IDN+	if ((count_dots(utf8_textname) >= ndots) || !usesearch)+		lookup->origin = NULL; /* Force abs lookup */+	else if (lookup->origin == NULL && lookup->new_search && usesearch) {+		lookup->origin = ISC_LIST_HEAD(search_list);+	}+#else 	if ((count_dots(lookup->textname) >= ndots) || !usesearch) 		lookup->origin = NULL; /* Force abs lookup */@@ -1213,5 +1266,27 @@ 		lookup->origin = ISC_LIST_HEAD(search_list); 	}+#endif++#ifdef WITH_IDN 	if (lookup->origin != NULL) {+		mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP,+				    lookup->origin->origin, utf8_origin,+				    sizeof(utf8_origin));+		idn_check_result(mr, "convert origin to UTF-8");+		mr = append_textname(utf8_textname, utf8_origin,+				     sizeof(utf8_textname));+		idn_check_result(mr, "append origin to textname");+	}+	mr = idn_encodename(IDN_LOCALMAP | IDN_NAMEPREP | IDN_ASCCHECK |+			    IDN_IDNCONV | IDN_LENCHECK, utf8_textname,+			    idn_textname, sizeof(idn_textname));+	idn_check_result(mr, "convert UTF-8 textname to IDN encoding");+#endif++#ifdef WITH_IDN+	if (0) {+#else+	if (lookup->origin != NULL) {+#endif 		debug("trying origin %s", lookup->origin->origin); 		result = dns_message_gettempname(lookup->sendmsg,@@ -1258,4 +1333,13 @@ 			dns_name_clone(dns_rootname, lookup->name); 		else {+#ifdef WITH_IDN+			len = strlen(idn_textname);+			isc_buffer_init(&b, idn_textname, len);+			isc_buffer_add(&b, len);+			result = dns_name_fromtext(lookup->name, &b,+						   dns_rootname,+						   ISC_FALSE,+						   &lookup->namebuf);+#else 			len = strlen(lookup->textname); 			isc_buffer_init(&b, lookup->textname, len);@@ -1265,4 +1349,5 @@ 						   ISC_FALSE, 						   &lookup->namebuf);+#endif 		} 		if (result != ISC_R_SUCCESS) {@@ -2693,2 +2778,100 @@ 		isc_mem_destroy(&mctx); }++#ifdef WITH_IDN+static void+initialize_idn(void) {+	idn_result_t r;++#ifdef HAVE_SETLOCALE+	/* Set locale */+	(void)setlocale(LC_ALL, "");+#endif+	/* Create configuration context. */+	r = idn_nameinit(1);+	if (r != idn_success)+		fatal("idn api initialization failed: %s",+		      idn_result_tostring(r));++	/* Set domain name -> text post-conversion filter. */+	dns_name_settotextfilter(output_filter);+}++static isc_result_t+output_filter(isc_buffer_t *buffer, unsigned int used_org,+	      isc_boolean_t absolute)+{+	char tmp1[MAXDLEN], tmp2[MAXDLEN];+	size_t fromlen, tolen;+	isc_boolean_t end_with_dot;++	/*+	 * Copy contents of 'buffer' to 'tmp1', supply trailing dot+	 * if 'absolute' is true, and terminate with NUL.+	 */+	fromlen = isc_buffer_usedlength(buffer) - used_org;+	if (fromlen >= MAXDLEN)+		return (ISC_R_SUCCESS);+	memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);+	end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;+	if (absolute && !end_with_dot) {+		fromlen++;+		if (fromlen >= MAXDLEN)+			return (ISC_R_SUCCESS);+		tmp1[fromlen - 1] = '.';+	}+	tmp1[fromlen] = '\0';++	/*+	 * Convert contents of 'tmp1' to local encoding.+	 */+	if (idn_decodename(IDN_DECODE_APP, tmp1, tmp2, MAXDLEN) != idn_success)+		return (ISC_R_SUCCESS);+	strcpy(tmp1, tmp2);++	/*+	 * Copy the converted contents in 'tmp1' back to 'buffer'.+	 * If we have appended trailing dot, remove it.+	 */+	tolen = strlen(tmp1);+	if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')+		tolen--;++	if (isc_buffer_length(buffer) < used_org + tolen)+		return (ISC_R_NOSPACE);++	isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);+	memcpy(isc_buffer_used(buffer), tmp1, tolen);+	isc_buffer_add(buffer, tolen);++	return (ISC_R_SUCCESS);+}++static idn_result_t+append_textname(char *name, const char *origin, size_t namesize) {+	size_t namelen = strlen(name);+	size_t originlen = strlen(origin);++	/* Already absolute? */+	if (namelen > 0 && name[namelen - 1] == '.')+		return idn_success;++	/* Append dot and origin */++	if (namelen + 1 + originlen >= namesize)+		return idn_buffer_overflow;++	name[namelen++] = '.';+	(void)strcpy(name + namelen, origin);+	return idn_success;+}++static void+idn_check_result(idn_result_t r, const char *msg) {+	if (r != idn_success) {+		exitcode = 1;+		fatal("%s: %s", msg, idn_result_tostring(r));+	}+}++#endif /* WITH_IDN */--- ./bin/dig/host.1.orig	Mon May 12 11:13:18 2003+++ ./bin/dig/host.1	Tue Jul 22 15:01:36 2003@@ -121,4 +121,15 @@ will be set to the number of seconds given by the hardware's maximum value for an integer quantity.+.SH "IDN SUPPORT"+.PP+If \fBhost\fR has been built with IDN (internationalized+domain name) support, it can accept and display non-ASCII domain names.+\fBhost\fR appropriately converts character encoding of+domain name before sending a request to DNS server or displaying a+reply from the server.+If you'd like to turn off the IDN support for some reason, defines+the \fBIDN_DISABLE\fR environment variable.+The IDN support is disabled if the the variable is set when+\fBhost\fR runs. .SH "FILES" .PP--- ./bin/dig/host.docbook.orig	Thu Mar  6 15:38:10 2003+++ ./bin/dig/host.docbook	Tue Jul 22 15:01:36 2003@@ -182,4 +182,19 @@  <refsect1>+<title>IDN SUPPORT</title>+<para>+If <command>host</command> has been built with IDN (internationalized+domain name) support, it can accept and display non-ASCII domain names.+<command>host</command> appropriately converts character encoding of+domain name before sending a request to DNS server or displaying a+reply from the server.+If you'd like to turn off the IDN support for some reason, defines+the <envar>IDN_DISABLE</envar> environment variable.+The IDN support is disabled if the the variable is set when+<command>host</command> runs.+</para>+</refsect1>++<refsect1> <title>FILES</title> <para>--- ./lib/dns/include/dns/name.h.orig	Tue Feb 18 15:32:01 2003+++ ./lib/dns/include/dns/name.h	Tue Jul 22 15:01:37 2003@@ -220,4 +220,15 @@ #define DNS_NAME_MAXWIRE 255 +#ifdef WITH_IDN+/*+ * Text output filter procedure.+ * 'target' is the buffer to be converted.  The region to be converted+ * is from 'buffer'->base + 'used_org' to the end of the used region.+ */+typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target,+						unsigned int used_org,+						isc_boolean_t absolute);+#endif+ /***  *** Initialization@@ -1245,4 +1256,12 @@  *  */++#ifdef WITH_IDN+void+dns_name_settotextfilter(dns_name_totextfilter_t proc);+/*+ * Call 'proc' at the end of dns_name_totext.+ */+#endif /* WITH_IDN */  #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)--- ./lib/dns/name.c.orig	Tue Feb 18 15:31:56 2003+++ ./lib/dns/name.c	Tue Jul 22 15:01:36 2003@@ -195,4 +195,11 @@ dns_name_t *dns_wildcardname = &wild; +#ifdef WITH_IDN+/*+ * dns_name_t to text post-conversion procedure.+ */+static dns_name_totextfilter_t totext_filter_proc = NULL;+#endif+ static void set_offsets(const dns_name_t *name, unsigned char *offsets,@@ -1685,4 +1692,7 @@ 	isc_boolean_t saw_root = ISC_FALSE; 	char num[4];+#ifdef WITH_IDN+	unsigned int oused = target->used;+#endif  	/*@@ -1862,4 +1872,8 @@ 	isc_buffer_add(target, tlen - trem); +#ifdef WITH_IDN+	if (totext_filter_proc != NULL)+		return ((*totext_filter_proc)(target, oused, saw_root));+#endif 	return (ISC_R_SUCCESS); }@@ -3326,2 +3340,8 @@ } +#ifdef WITH_IDN+void+dns_name_settotextfilter(dns_name_totextfilter_t proc) {+	totext_filter_proc = proc;+}+#endif--- ./README.idnkit.orig	Tue Jul 22 15:01:35 2003+++ ./README.idnkit	Tue Jul 22 15:01:35 2003@@ -0,0 +1,113 @@++			BIND-9 IDN patch++	       Japan Network Information Center (JPNIC)+++* What is this patch for?++This patch adds internationalized domain name (IDN) support to BIND-9.+You'll get internationalized version of dig/host/nslookup commands.++    + internationalized dig/host/nslookup+	dig/host/nslookup accepts non-ASCII domain names in the local+	codeset (such as Shift JIS, Big5 or ISO8859-1) determined by+	the locale information.  The domain names are normalized and+	converted to the encoding on the DNS protocol, and sent to DNS+	servers.  The replies are converted back to the local codeset+	and displayed.+++* Compilation & installation++0. Prerequisite++You have to build and install idnkit before building this patched version+of bind-9.++1. Running configure script++Run `configure' in the top directory.  See `README' for the+configuration options.++This patch adds the following 4 options to `configure'.  You should+at least specify `--with-idn' option to enable IDN support.++    --with-idn[=IDN_PREFIX]+	To enable IDN support, you have to specify `--with-idn' option.+	The argument IDN_PREFIX is the install prefix of idnkit.  If+	IDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')+	is assumed.++    --with-libiconv[=LIBICONV_PREFIX]+	Specify this option if idnkit you have installed links GNU+	libiconv.  The argument LIBICONV_PREFIX is install prefix of+	GNU libiconv.  If the argument is omitted, PREFIX (derived+	from `--prefix=PREFIX') is assumed.++	`--with-libiconv' is shorthand option for GNU libiconv.++	    --with-libiconv=/usr/local++	This is equivalent to:++	    --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'++	`--with-libiconv' assumes that your C compiler has `-R'+	option, and that the option adds the specified run-time path+	to an exacutable binary.  If `-R' option of your compiler has+	different meaning, or your compiler lacks the option, you+	should use `--with-iconv' option instead.  Binary command+	without run-time path information might be unexecutable.+	In that case, you would see an error message like:++	    error in loading shared libraries: libiconv.so.2: cannot+	    open shared object file++	If both `--with-libiconv' and `--with-iconv' options are+	specified, `--with-iconv' is prior to `--with-libiconv'.++    --with-iconv=ICONV_LIBSPEC+	If your libc doens't provide iconv(), you need to specify the+	library containing iconv() with this option.  `ICONV_LIBSPEC'+	is the argument(s) to `cc' or `ld' to link the library, for+	example, `--with-iconv="-L/usr/local/lib -liconv"'.+	You don't need to specify the header file directory for "iconv.h"+	to the compiler, as it isn't included directly by bind-9 with+	this patch.++    --with-idnlib=IDN_LIBSPEC+	With this option, you can explicitly specify the argument(s)+	to `cc' or `ld' to link the idnkit's library, `libidnkit'.  If+	this option is not specified, `-L${PREFIX}/lib -lidnkit' is+	assumed, where ${PREFIX} is the installation prefix specified+	with `--with-idn' option above.  You may need to use this+	option to specify extra argments, for example,+	`--with-idnlib="-L/usr/local/lib -R/usr/local/lib -lidnkit"'.++Please consult `README' for other configuration options.++Note that if you want to specify some extra header file directories,+you should use the environment variable STD_CINCLUDES instead of+CFLAGS, as described in README.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -