1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
|
mDNkit
-- multilingual domain name toolkit --
version 2.4
Japan Network Information Center (JPNIC)
Table of contents of this file:
1. Overview
2. Directory structure of this distribution
3. Applying patches
4. Supported systems
5. Contact information
See the file INSTALL for compilation and installation instructions.
See the file NEWS for a list of major changes in the current release.
1. Overview
mDNkit is a toolkit for handling multilingualized/internationalized
domain names. To handle such names, the following features are required:
+ Encoding conversion
Multilingualized domain names have to be converted from
the encoding application uses (local encoding) to
the encoding used for name resolution (IDN encoding), and
vice versa. Since domain names in IDN encoding just look
like good old ASCII domain names, the encoding is also known
as ASCII-compatible encoding (ACE).
+ NAMEPREP
Name preparation of domain names before converting to
IDN encoding. Basically this is a normalization process
of the domain names.
These conversion/nameprep processes to domain names have to be
performed before they are sent to DNS servers. And since the
processed domain names (in IDN encoding) consist of only legal ASCII
characters, no changes are required to DNS servers.
mDNkit provides several ways for adding these features.
This kit consists of following components.
+ library for handling multilingual domain names (libmdn, libmdnlite)
Those libraries implement encoding conversion and nameprep.
They provide easy-to-use APIs for handling multilingual domain
name in your applications.
Both libraries provide almost the same API. The difference
between them is that libmdn internally uses iconv() function
to provide encoding conversion from UTF-8 to the local encoding
(such as iso-8859-1, usually determined by the current locale),
and vise versa. libmdnlite is lightweight version of libmdn.
It assumes local encoding is UTF-8 so that it never uses iconv().
Most commands in this toolkit (such as mdnconv) use libmdn.
+ DNS proxy server (mdnsproxy)
This works as a fake DNS server for the clients. It receives
DNS request containing domain names in the client's local
encoding (e.g. Shift_JIS), translates them into the encoding
on DNS protocol (e.g. UTF-8 or RACE), and forwards to the real
DNS server. Also the response from the server is converted
back to the client's local encoding and returned. See
``2. using mdnsproxy'' below.
+ a command dynamically adds MDN feature to unix applications (runmdn)
This command enables normal applications to handle
multilingual domain names by dynamically attaching special
library to them. See ``3. using runmdn'' below.
+ a patch for BIND-9 that adds MDN capability
This patch adds MDN capability to BIND9. It adds encoding
conversion and nameprep features to `dig', `host' and
`nslookup'. With the patch, those commands become capable of
multilingual domain names.
+ mDN wrapper for Windows applications
On windows, name resolving request is passed to WINSOCK DLL. So,
replacing WINSOCK DLL with multi-lingual domain name version
makes legacy windows applications compatible with mDN. This is
wrapper DLL for WINSOCK's name resolving functions. See
``4. using mDN wrapper'' below.
+ a codeset converter for named.conf/zone master files (mdnconv)
This is a codeset (encoding) converter specially designed for
converting named.conf and zone master files from your local
encoding (e.g. EUC-JP) to the encoding which internationalized
DNS servers employ (e.g. RACE).
+ a patch that makes BIND-8 8-bit through
This is needed in order for named and resolver to handle
non-ascii domain names encoded in local encoding or UTF-8.
The patch is rudimentary; it makes almost any byte sequence
legal as a domain name (which is what 8-bit through is for).
+ a patch for making Squid cache server 8-bit through
This is a simple patch that disables Squid's validity check
for host name part in URLs. Without this patch, Squid rejects
URLs containing multilingual domain name (correctly).
This kit provides several ways to handle multilingual domain names
using above components.
** 1. using API
This is the preferred way to handle multilingual domain names,
applications are required to explicitly call the name conversion
API mDNkit provides.
domain name
+-----------+-------+--------+ in ACE
| | | | encoding +------------+
| client | mdn |system's|----------->| DNS server |
|application|library|resolver|<-----------| |
| | | | +------------+
+-----------+-------+--------+
** 2. using mdnsproxy
In case the application cannot be modified to use the above API,
you can still be able to use multilingual domain names using
mdnsproxy, provided that the application uses 8bit-through
resolver.
domain name encoding domain name
in local conversion and in ACE
+------------+ encoding nameprep endoding
| client | +----------------+ +----------+
|application |------------>| mdnsproxy |------------>|DNS server|
| with |<------------| |<------------| |
|8bit through| +----------------+ +----------+
| resolver |
+------------+
** 3. using runmdn
Or if the client application dynamically links resolver API (such as
gethostbyname) and the OS supports certain features, you can use
runmdn. By replacing the resolver API with a version which performs
encoding conversion and nameprep, runmdn enables normal applications
to resolve multilingual domain names.
encoding domain name
conversion and in ACE
nameprep encoding
+-----------+-------------+ +----------+
| client | dynamically |---------------->|DNS server|
|application| attached |<----------------| |
| | library | +----------+
+-----------+-------------+
** 4. using mDN wrapper
By wrapping WINSOCK DLL, mDN Wrapper enables Windows applications
to resolve multilingual domain names.
domain name nameprep domain name
in local and encoding in ACE
+-----------+ encoding conversion encoding
| legacy | +---------+---------+ +----------+
| windows |------------>| mDN | orignal |---------->|DNS server|
| network |<------------| wrapper | winsock |<----------| |
|application| +---------+---------+ +----------+
+-----------+
2. Directory structure of this distribution
Below is a directory structure of this distribution with some
important files and their brief description.
+README this file
+README.ja .. in Japanese
+INSTALL compilation and installation instructions.
+INSTALL.ja .. in Japanese
+DISTFILES list of files in this distribution
+NEWS what's new in this version
+ChangeLog list of changes
+Makefile.in toplevel makefile template
+configure a `configure' script
+include/
| +config.h.in template header file for configuration
| +mdn/ header files for mdn library
+lib/ source directory for mdn library
+mdnsproxy/ source directory for DNS proxy server
+patch/ various patch files
| +bind8/ bind-8 patch directory
| +bind9/ bind-9 patch directory
| +libiconv/ libiconv patch directory
| +squid/ squid patch directory
+tools/ source directory for tools
| +mdnconv/ source directory for codeset converter
| +runmdn/ source directory for runmdn command
+util/ utilities
+wsock/ source directory for mDN wrapper
3. Applying patches
This distribution also contains patches for BIND 9.1.3, BIND 8.2.3 and
Squid 2.4.STABLE1. The top of these patch files describe how to apply
the patch and (re)install.
Note that on Solaris, "patch" command that comes with the system
sometimes doesn't work correctly. You may want to install the GNU
version of the command (http://www.gnu.org/software/patch/) and use
it.
4. Supported systems
We've had successful builds on the following systems:
-------------------------------------------------------------------
OS iconv library configure options
===================================================================
FreeBSD 4.4-RELEASE GNU libiconv --with-libiconv
for Intel 1.6.1
-------------------------------------------------------------------
NetBSD 1.5.2 GNU libiconv --with-libiconv
for Intel 1.7
-------------------------------------------------------------------
Red Hat Linux 7.2 standard library none
for Intel (glibc)
-------------------------------------------------------------------
Solaris 2.6 standard library none
for Sparc (libc)
-------------------------------------------------------------------
*1: Only mdnconv can work on that system.
The latest information about supported/unsupported systems will be
found at the mDNkit FAQ page linked from:
http://www.nic.ad.jp/jp/research/idn/
5. Contact information
Please see
http://www.nic.ad.jp/jp/research/idn/
for the latest news about this kit.
Bug reports and comments on this kit should be sent to
mdnkit-bugs@nic.ad.jp
and
idn-cmt@nic.ad.jp
respectively.
; $Id: README,v 1.44.2.6 2002/02/22 01:32:07 m-kasahr Exp $
|