Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IDNCONV(1)		     General Commands Manual		      IDNCONV(1)

NAME
     idnconv - codeset converter for named.conf and zone master files

SYNOPSIS
     idnconv [options..] [file...]

DESCRIPTION
     idnconv  is a codeset converter for named configuration files and zone mas-
     ter files.  idnconv performs codeset conversion  specified  either  by  the
     command-line  arguments  or  by the configuration file, and writes the con-
     verted text to stdout.

     If file name is specified, idnconv converts the contents of the file.  Oth-
     erwise, idnconv converts stdin.

     Since idnconv is specifically designed for converting internatinalized  do-
     main names, it may not be suitable as a general codeset converter.

OPERATION MODES
     idnconv has two operation modes.

     One  is  a  mode  to convert local-encoded domain names to IDN-encoded one.
     Usually this mode is used for preparing domain names to be listed in  named
     configuration  files  or  zone  master  files.  In this mode, the following
     processes are performed in addition to the codeset (encoding) conversion.

       - local mapping

       - standard domain name preperation (NAMEPREP)

     The other mode is a reverse conversion, from IDN-encoded domain name to lo-
     cal-encoded domain names.	In this mode, local mapping and NAMEPREP are not
     performed since IDN-encoded names should already be normalized.  Instead, a
     check is done in order to make sure the IDN-encoded domain name is properly
     NAMEPREP'ed.  If it is not, the name will be output in IDN encoding, not in
     the local encoding.

OPTIONS
     Normally idnconv reads system's default configuration file  (idn.conf)  and
     performs  conversion or name preparation according to the parameters speci-
     fied in the file.	You can override the setting in the  configuration  file
     by various command line options below.

     -in in-code, -i in-code
	 Specify the codeset name of the input text.  Any of the following code-
	 set names can be specified.

	 * Any codeset names which iconv_open() library function accepts

	 * Punycode

	 * UTF-8

	 * Any alias names for the above, defined by the codeset alias file.

	 If this option is not specified, the default codeset is determined from
	 the  locale in normal conversion mode.  In reverse conversion mode, the
	 default codeset is the IDN encoding specified by the configuration file
	 (``idn-encoding'' entry).

     -out out-code, -o out-code
	 Specify the codeset name of the output text. out-code can be any  code-
	 set name that can be specified for -in option.

	 If this option is not specified, the default is the IDN encoding speci-
	 fied  by the configuration file (``idn-encoding'' entry) in normal con-
	 version mode.	In reverse conversion mode, the default codeset  is  de-
	 termined from the locale.

     -conf path, -c path
	 Specify  the  pathname of idnkit configuration file (``idn.conf'').  If
	 not specified, system's default file is used, unless -noconf option  is
	 specified.

     -noconf, -C
	 Specify that no configuration file is to be used.

     -reverse, -r
	 Specify reverse conversion mode.
	 If this option is not specified, the normal conversion mode is used.

     -nameprep version, -n version
	 Specify  the version of NAMEPREP.  The following is a list of currently
	 available versions.

	 RFC3491
	     Perform NAMEPREP according to the RFC3491 ``rfc-3491.txt''.

     -nonameprep, -N
	 Specify to skip NAMEPREP process (or NAMEPREP verification  process  in
	 the reverse conversion mode).	This option implies -nounassigncheck and
	 -nobidicheck.

     -localmap map
	 Specify  the name of local mapping rule.  Currently, following maps are
	 available.

	 RFC3491
	     Use the list of mappings specified by RFC3491.

	 filemap:path
	     Use list of mappings specified by mapfile	path.	See  idn.conf(5)
	     for the format of a mapfile.

	 This  option  can be specified more than once.  In that case, each map-
	 ping will be performed in the order of the specification.

     -nounassigncheck, -U
	 Skip unassigned codepoint check.

     -nobidicheck, -B
	 Skip bidi character check.

     -nolengthcheck
	 Do not check label length of normal conversion result.  This option  is
	 only meaningful in the normal conversion mode.

     -noasciicheck, -A
	 Do not check ASCII range characters.  This option is only meaningful in
	 the normal conversion mode.

     -noroundtripcheck
	 Do not perform round trip check.  This option is only meaningful in the
	 reverse conversion mode.

     -delimiter codepoint
	 Specify  the  character to be mapped to domain name delimiter (period).
	 This option can be specified more than once in order to specify  multi-
	 ple characters.
	 This option is only meaningful in the normal conversion mode.

     -whole, -w
	 Perform  local  mapping,  nameprep and conversion to output codeset for
	 the entire input text.  If this option is not specified, only non-ASCII
	 characters and their surrounding texts will be processed.  See ``NORAML
	 CONVERSION MECHANISM'' and ``REVERSE  CONVERSION  MECHANISM''	for  de-
	 tails.

     -alias path, -a path
	 Specify  a  codeset  alias  file.  It is a simple text file, where each
	 line has a pair of alias name and real name separated by  one	or  more
	 white spaces like below:

	     alias-codeset-name    real-codeset-name

	 Lines starting with ``#'' are treated as comments.

     -flush
	 Force line-buffering mode.

     -version, -v
	 Print version information and quit.

LOCAL CODESET
     idnconv  guesses  local codeset from locale and environment variables.  See
     the ``LOCAL CODESET'' section in idn.conf(5) for more details.

NORMAL CONVERSION MECHANISM
     idnconv performs conversion line by line.	Here describes how idnconv  does
     its job for each line.

     1. read a line from input text

     2. convert the line to UTF-8
	 idnconv converts the line from local encoding to UTF-8.

     3. find internationalized domain names
	 If  the  -whole (or -w) option is specified, the entire line is assumed
	 as an internationalized domain name.  Otherwise, idnconv recognizes any
	 character sequences having the following properties in the line as  in-
	 ternationalized domain names.

	 * containing at least one non-ASCII character, and

	 * consisting  of  legal  domain name characters (alphabets, digits, hy-
	   pens), non-ASCII characters and period.

     4. convert internationalized domain names to ACE
	 For each internationalized domain name found in the line, idnconv  con-
	 verts the name to ACE.  The details about the conversion procedure is:

	 4.1. delimiter mapping
	     Substibute  certain  characters  specified as domain name delimiter
	     with period.

	 4.2. local mapping
	     Perform local mapping.  If the local mapping is specified	by  com-
	     mand  line option -localmap, the specified mapping rule is applied.
	     Otherwise, find the mapping rule from the configuration file  which
	     matches  to  the  TLD of the name, and perform mapping according to
	     the matched rule.
	     This step is skipped if the -nolocalmap (or -L)  option  is  speci-
	     fied.

	 4.3. NAMEPREP
	     Perform  name preparation (NAMEPREP).  Mapping, normalization, pro-
	     hibited character checking, unassigned codepoint checking, bidirec-
	     tional character checking are done in that order.	If  the  prohib-
	     ited character check, unassigned codepoint check, or bidi character
	     check fails, the normal conversion procedure aborts.
	     This  step  is  skipped if the -nonameprep (or -N) option is speci-
	     fied.

	 4.4. ASCII character checking
	     Checks ASCII range character in the domain name.  the  normal  con-
	     version  procedure aborts, if the domain name has a label beginning
	     or end with hyphen (U+002D) or it contains  ASCII	range  character
	     except for alphanumeric and hyphen,
	     This  step is skipped if the -noasciicheck (or -A) option is speci-
	     fied.

	 4.5. ACE conversion
	     Convert the string to ACE.

	 4.6. label length checking
	     The normal conversion procedure aborts, if the domain name  has  an
	     empty label or too long label (64 characters or more).
	     This step is skipped if the -nolengthcheck option is specified.

     5. output the result

REVERSE CONVERSION MECHANISM
     This  is  like the normal conversion mechanism, but they are not symmetric.
     idnconv does its job for each line.

     1. read a line from input text

     2. convert the line to UTF-8
	 idnconv converts the line from local encoding to UTF-8.

     3. find internationalized domain names
	 If the -whole (or -w) option is specified, the entire line  is  assumed
	 as  an  internationalized  domain name.  Otherwise, idnconv decodes any
	 valid ASCII domain names including ACE names in the line.

     4. convert domain names to local encoding
	 Then, idnconv decodes the domain names.  The decode procedure	consists
	 of the following steps.

	 4.1. Delimiter mapping
	     Substibute  certain  characters  specified as domain name delimiter
	     with period.

	 4.2. NAMEPREP
	     Perform name preparation (NAMEPREP) for each label  in  the  domain
	     name.  Mapping, normalization, prohibited character checking, unas-
	     signed  codepoint	checking,  bidirectional  character checking are
	     done in that order.  If the prohibited character check,  unassigned
	     codepoint check, or bidi character check fails, disqualified labels
	     are  restored  to	original input strings and further conversion on
	     those labels are not performed.
	     This step is skipped if the -nonameprep (or -N)  option  is  speci-
	     fied.

	 4.3. ACE conversion
	     Convert the string from ACE to UTF-8.

	 4.4. Round trip checkning
	     For  each	label, perform the normal conversion and compare it with
	     the result of the step 4.2.   This  check	succeeds,  if  they  are
	     equivalent  strings.   In	case of failure, disqualified labels are
	     restored to original input strings and further conversion on  those
	     labels are not performed.
	     This step is skipped if the -noroundtripcheck option is specified.

	 4.5. local encoding conversion
	     Convert  the  result of the step 4.3. from UTF-8 to local encoding.
	     If a label in the domain name contains a character which cannot  be
	     represented  in  the  local  encoding, the label is restored to the
	     original input string.

     5. output the result

FILE MANAGEMENT
     Maybe the best way to manage named.conf or zone master files that	contains
     internationalized domain name is to keep them in your local codeset so that
     they can be edited with your favorite editor, and generate a version in the
     IDN encoding using idnconv.

     `make'  is  a  convenient tool for this purpose.  Suppose the local codeset
     version has suffix `.lc', and its ACE version has suffix `.ace'.  The  fol-
     lowing Makefile enables you to generate ACE version from local codeset ver-
     sion by just typing `make'.

	 .SUFFIXES: .lc .ace
	 .lc.ace:
	      idnconv -in $(LOCALCODE) -out $(IDNCODE) \
		  $(IDNCONVOPT) $< > $@

	 LOCALCODE = EUC-JP
	 IDNCODE = Punycode
	 IDNCONVOPT =

	 DESTFILES = db.zone1.ace db.zone2.ace

	 all: $(DESTFILES)

SEE ALSO
     idn.conf(5), iconv(3)

BUGS
     The automatic input-code selection depends on your system, and sometimes it
     cannot  guess  or guess wrong.  It is better to explicitly specify it using
     -in option.

				   Mar 3, 2001			      IDNCONV(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=idnconv&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help