FreeBSD Manual Pages
RUNIDN(1) General Commands Manual RUNIDN(1) NAME runidn - A script to allow applications to use internationalized domain names. SYNOPSIS runidn [-e local-codeset] program-name [args..] DESCRIPTION runidn enables applications to use internationalized domain names without recompilation. Just add ``runidn'' before the application-name, and the application can handle non-ASCII domain names. For example, you can do: % runidn telnet non-ASCII-hostname Before using runidn, you should set up properties related to international- ized DNS by configuring idnkit's configuration file idn.conf. See idn.conf(5) which describes the configuration. OPTION The following option is available: -e local-codeset Specify the application's local codeset. If the option is not speci- fied, runidn guesses the codeset from the current locale. See the ``NOTE'' section for more details about local codeset. IMPLEMENTATION runidn is a small shell script that sets up an environment variable called ``LD_PRELOAD'', so that an application dynamically links a shared library ``libidnkitres'' before any other shared libraries. The library ``libidnkitres'' provides a special version of resolver func- tions which implement features for handling internationalized domain names. runidn replaces the following functions with the special version: gethostbyname gethostbyname2 gethostbyaddr gethostbyname_r gethostbyname2_r gethostbyaddr_r getipnodebyname getipnodebyaddr freehostent getaddrinfo freeaddrinfo getnameinfo By overriding them in the standard libraries with the special version pro- vided by ``libidnkitres'', runidn enables applications to use internation- alized domain names. * These API functions accept non-ASCII domain names encoded in the lo- cal codeset that the application is using. Also the result from these APIs may contain non-ASCII domain names. * The normalization and codeset conversion between application's local codeset and the codeset used in DNS protocol data are handled auto- matically, so users/applications need not worry about them. Properties of internationalized DNS (such as the normalization or the code- set used on DNS protocol data) can be configured with the idnkit's configu- ration file (idn.conf). See idn.conf(5) for details. NOTE Unless -e option is specified, runidn tries to guess the application's lo- cal codeset from the application's current locale. However, sometimes it cannot guess the codeset correctly, for example if the application does not set the locale appropriately by calling `setlocale()'. In that case, you can explicitly specify the local codeset by setting an environment variable ``IDN_LOCAL_CODESET''. See the section ``LOCAL CODESET'' in idn.conf(5) for details. The idea of using ``LD_PRELOAD'' to replace some functions in the standard library was taken from ``runsocks'' script distributed as part of SOCKS5 reference implementation. BUGS There are many cases where runidn does not work. Your system must support ``LD_PRELOAD'' mechanism in the first place. Due to security reasons, ``LD_PRELOAD'' mechanism is disabled for setuid programs in any sane systems. So runidn does not work for setuid programs such as ping or rsh. If your application uses a function other than the ones runidn supports for name resolution, you lose. SEE ALSO idn.conf(5), runsocks(1) April 6, 2001 RUNIDN(1)
NAME | SYNOPSIS | DESCRIPTION | OPTION | IMPLEMENTATION | NOTE | BUGS | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=runidn&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>
