Annoucing Apache::ACEProxy HTTP proxy, which handles Internationalized Domain Names correctly.

What this module does is automatically detects multilingual Host: header, encodes it in ACE (default RACE, so encoded in bq--blahblah), and finally request that.

Any comments are welcome.

NAME Apache::ACEProxy - IDN compatible ACE proxy server SYNOPSIS # in httpd.conf PerlTransHandler Apache::ACEProxy # default uses ::RACE DESCRIPTION Apache::ACEProxy is a mod_perl based HTTP proxy server, which hand +les internationalized domain names correctly. This module automaticaly detects IDNs in Host: header and converts them in ACE encoding. Set your browser's proxy setting to Apache::ACEProxy based server, + and you can browse web-sites of multilingual domain names. SUBCLASSING Default ACE encoding is RACE. Here's how you customize this. * Declare your ACE encoder class (like DUDE, AMC-ACE-Z). * Inherit from Apache::ACEProxy. * Define "encode()" class method. That's all. Here's an example of implementation, extracted from Apache::ACEProxy::RACE. package Apache::ACEProxy::RACE; use base qw(Apache::ACEProxy); use Convert::RACE qw(to_race); use Unicode::String qw(utf8); sub encode { my($class, $domain) = @_; return to_race(utf8($domain)->utf16); } Note that you should define "encode()" method as a class method. Argument $domain is a (maybe UTF8) string that your browser sends +to the proxy server. At last, remember to add the following line to httpd.conf or so: PerlTransHandler Apache::ACEProxy::RACE CAVEATS This module (at least Apache::ACEProxy::RACE) assumes input domain + names are encoded in UTF8. But currently it's known that: * MSIE's "always send URL as UTF8" preference does NOT ALWAYS se +nd correct UTF8 string. * Netscape 4.x does NOT send URL as UTF8, but in local encodings +. So, this proxy server doesn't always work well with all the domain +s for all the browsers. Suggestions, patches and reports are welcome about this issue. AUTHOR Tastuhiko Miyagawa <miyagawa@bulknews.net> This library is free software; you can redistribute it and/or modi +fy it under the same terms as Perl itself. This module comes with NO WARRANTY. SEE ALSO the Apache::ProxyPassThru manpage, the LWP::UserAgent manpage, the Unicode::String manpage, the Apache::ACEProxy::RACE manpage

--
Tatsuhiko Miyagawa
miyagawa@cpan.org