idn wrapper - Client Side IDN Conversion Software for Windows
Copyright (c) 2000,2001,2002 Japan Network Information Center.
All rights reserved.
*** NOTICE ******************************************************
If you have installed mDN Wrapper (former version of idn wrapper)
on your system, you should unwrap all the programs before
installing idn wrapper.
*****************************************************************
1. Introduction
For supporting internationalized domain names, each client
application should convert domain names (their encodings) to that
DNS server accepts. This requires applications to handle
internationalized domain names in its core, and it is the vendor's
responsibility to make their programs IDN-compatible.
Although there are ongoing efforts in IETF to standardize IDN
framework (architecture, encoding etc.) and several RFCs are
expected to be published soon as the result, not many applications
support IDN to this date.
So, there are needs for some helper application which makes legacy
applications IDN-aware. `runidn' in idnkit is one of such
solutions for Unix-like operating systems, and this software, `idn
wrapper' is the one for Windows.
On windows, name resolving request is passed to WINSOCK DLL. idn
wrapper replaces WINSOCK DLL with the one that can handle IDN,
which makes legacy windows applications compatible with IDN.
2. Architecture
2.1. Wrapper DLL
Wrapper DLL resides between application and original DLL. It
intercept application's calls to original DLL, and preforms some
additional processing on those calls.
+------------+ Call +------------+ Call +------------+
| |------->| |------->| |
|Application | |Wrapper DLL | |Original DLL|
| |<-------| |<-------| |
+------------+ Return +------------+ Return +------------+
additional
processing
here
DLL call from apllication is passed to wrapper DLL. Wrapper DLL
then performs some additional processing on that call, and then
calls original DLL. Also, result from original DLL will once passed
to wrapper DLL and wrapper does additional process on that result,
and finally result will passed to the application.
idn wrapper provides wrapper DLLs for WINSOCK,
WSOCK32.DLL WINSOCK V1.1
WS2_32.DLL WINSOCK V2.0
to resolve multi-lingual domain names.
2.2. Wrapping APIs
idn wrapper performs additional processing on name resolving APIs in
WINSOCK, listed below.
both WINSOCK 1.1, WINSOCK 2.0
gethostbyaddr
gethostbyname
WSAAsyncGetHostByAddr
WSAAsyncGetHostByName
only in WINSOCK 2.0
getaddrinfo
freeaddrinfo
getnameinfo
WSALookupServiceBeginA
WSALookupServiceNextA
WSALookupServiceEnd
Some applications do not use these APIs to resolve domain names.
`nslookup' is one of those programs. `nslookup' builds and parse DNS
messages internally and does not use WINSOCK's name resolver APIs.
idn wrapper cannot make those programs IDN-aware.
NOTE:
WINSOCK 2.0 also contains WIDE-CHARACTER based name resolution
APIs,
WSALookupServiceBeginW
WSALookupServiceNextW
idn wrapper does not wrap these APIs. These APIs are used in
Microsoft's own internationalization framework. It is dangerous
to convert to another internationalization framework.
2.3. Other APIs in WINSOCK
For other APIs in WINSOCK, idn wrapper does nothing, only calls
original DLL's entries.
idn wrapper copies original WINSOCK DLLs with renaming
as below, and forward requests to them.
wsock32.dll -> wsock32o.dll
ws2_32.dll -> ws2_32o.dll
Wrappper DLL will be installed with original DLL names. So after
installation of idn wrapper, WINSOCK DLLs should be
wsock32.dll idn wrapper for WINSOCK V1.1
ws2_32.dll idn wrapper for WINSOCK V2.0
wsock32o.dll Original WINSOCK V1.1 DLL
ws2_32o.dll Original WINSOCK V2.0 DLL
2.4. Asynchronous API
Domain name conversion take place on
request to DNS
convert from local encoding to DNS compatible encoding
response from DNS
convert from DNS encoding to local encoding
For synchronous APIs, local to DNS conversion is done before calling
original API, and after return from original API, name should be
converted from DNS encoding to local encoding.
But WINSOCK having some asynchronous APIs, such as
WSAAsyncGetHostByAddr
WSAAsyncGetHostByName
In these APIs, completion is notified with windows message. To
perform DNS to local conversion, wrapper should hook target window
procedure to capture those completion messages.
So, if asynchronous API was called, idn wrapper set hook to target
window procedure (passed with API parameter). If hook found
notify message (also given with API parameter), then convert
resulting name (in DNS encoding) to local encoding.
2.5. Installing Wrapper DLLs
WINSOCK DLLs are placed at Windows's system directory. To wrap
WINSOCK DLLs, one could do following sequence at system directory.
+ Rename Original WINSOCK DLLs
ren wsock32.dll wsock32o.dll
ren ws2_32.dll ws2_32o.dll
+ Install (copy in) Wrapper DLLs
copy somewhere\wsock32.dll wsock32.dll
copy somewhere\ws2_32.dll ws2_32.dll
copy another DLLs also
However, replacing DLLs in Window's system directory is very
dangerous:
a) If you re-install idn wrapper again, original WINSOCK DLLs
may be lost.
b) Some application or service pack will replace WINSOCK DLLs. It
may corrupt WINSOCK environment.
If these happen, at least networking does not work, and worse,
Windows never startup again.
So, idn wrapper usually does not wrap in the system directory, but wrap in
each indivisual application's directory.
In Windows, DLL will be searched in the following places:
Application's Load Directory
%SystemRoot%\System32
%SystemRoot%
Directories in PATH
and loaded & linked first found one. So if installed wrapper DLLs is
found on application's load directory, the application's call to
WINSOCK will wrapped.
But some applications or DLLs are binded to specific DLL, they do
not rely on above DLL's search path. For those applcaitons or DLLs,
idn wrapper (in standard installation) cannot wrap them.
NOTE: Netscape is one of those program. It cannot be wrapped if
installed to applications directory. Also WINSOCK DLLs are
also binded to related DLLs in system directory. On the
other hand, Internet Explore or Window Media Player relys on
standard DLL search path, and well wrapped with idn wrapper.
2.6. At which point conversion applied
If windows supporting WINSOCK 2.0, there are DLLs one for 1.1 and
another for 2.0, and call to WINSOCK 1.1 will redirected to 2.0 DLL.
+------------+ Call +------------+ Call +------------+
| |------->| |------->| |
|Application | |WINSOCK 1.1 | |WINSOCK 2.0 |
| |<-------| |<-------| |
+------------+ Return +------------+ Return +------------+
In this case, calls to 1.1 and 2.0 are both passed to 2.0 DLL. So
conversion will done in WINSOCK 2.0 DLL side.
If windows only supports WINSOCK 1.1, there's 1.1 DLL only.
+------------+ Call +------------+
| |------->| |
|Application | |WINSOCK 1.1 |
| |<-------| |
+--------
没有合适的资源?快使用搜索试试~ 我知道了~
bind源码linux开发环境
5星 · 超过95%的资源 需积分: 15 16 下载量 19 浏览量
2015-12-23
14:24:26
上传
评论
收藏 7.24MB GZ 举报
温馨提示
共2000个文件
c:554个
h:482个
in:259个
bind源码,在linux上编译运行。用于进入目录解压缩 #tar xfz bind-9.3.1rc1.tar.gz 进如刚解压出来的目录 # cd bind-9.3.1rc1 编译配置 #./configure --prefix=/usr/local/named --enable-threads #--enable-threads开启多线程处理能力 #make #make install
资源推荐
资源详情
资源评论
收起资源包目录
bind源码linux开发环境 (2000个子文件)
zktlog-sub.example.net. 25KB
zktlog-example.net. 20KB
zktlog-dyn.example.net. 14KB
zktlog-sub.example.de. 3KB
zktlog-example.de. 2KB
sample.0 101B
dig.1 18KB
nsupdate.1 14KB
idnconv.1 14KB
host.1 7KB
nslookup.1 6KB
runidn.1 6KB
isc-config.sh.1 3KB
zone2ldap.1 2KB
arpaname.1 2KB
query-loc.1 2KB
10.53.0.1 329B
sample.1 304B
bind-9.2.1-patch 190KB
knowngood.dig.out.1000 34KB
bind-9.2.2-patch 33KB
knowngood.dig.out.2000 68KB
Makefile.9.3.2b1 822B
lwres_gethostent.3 9KB
lwres_buffer.3 8KB
lwres_getaddrinfo.3 7KB
lwres_gabn.3 6KB
lwres.3 6KB
lwres_noop.3 6KB
lwres_gnba.3 6KB
lwres_context.3 6KB
lwres_packet.3 6KB
lwres_resutil.3 6KB
lwres_getipnode.3 5KB
lwres_getrrsetbyname.3 5KB
lwres_getnameinfo.3 4KB
lwres_config.3 3KB
lwres_gai_strerror.3 3KB
lwres_hstrerror.3 3KB
lwres_inetntop.3 3KB
knowngood.dig.out.3000 102KB
Makefile.9.3.3rc2 823B
knowngood.dig.out.4000 137KB
named.conf.5 20KB
rndc.conf.5 6KB
dnssec-signzone.8 13KB
dnssec-keygen.8 13KB
zkt-signer.8 11KB
dnssec-zkt.8 11KB
dnssec-keyfromlabel.8 8KB
named-checkzone.8 8KB
nslint.8 8KB
named.8 7KB
zkt-keyman.8 7KB
dnssec-settime.8 7KB
zkt-ls.8 6KB
lwresd.8 6KB
zkt-conf.8 5KB
rndc-confgen.8 5KB
rndc.8 5KB
ddns-confgen.8 4KB
dnssec-dsfromkey.8 4KB
named-checkconf.8 3KB
pkcs11-keygen.8 3KB
isc-hmac-fixup.8 3KB
dnssec-revoke.8 2KB
pkcs11-destroy.8 2KB
pkcs11-list.8 2KB
named-journalprint.8 2KB
nsec3hash.8 2KB
genrandom.8 2KB
openssl-0.9.8l-patch 417KB
DNAME=10=example.net.= 321B
NS=10=example.com.= 315B
SOA=10=ns.example.com.=root.example.com.=2010062900=0=0=0=10= 399B
knowngood.dig.out.a-maximum-rrset 184KB
configure.ac 5KB
ADDRESSES 340B
knowngood.ns1.after 5KB
knowngood.after1 406B
knowngood.after2 478B
knowngood.ns1.afterstop 124B
ALGO 965B
api 45B
api 45B
api 45B
api 45B
api 45B
api 45B
api 45B
spnego.asn1 1KB
Atffile 88B
trusted.conf.bad 1KB
BuildAll.bat 5KB
BuildSetup.bat 4KB
SetupLibs.bat 1KB
BuildPost.bat 1KB
dnsheadergen.bat 1KB
dig.batch 21KB
knowngood.ns1.before 5KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- qq_237740892017-09-19很好用,感谢感谢感谢
Dqian0816
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功