[#49637] 重要: 非互換性の可能性 Fwd: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8 — Martin J. Dürst <duerst@...>
下記の通り、大文字小文字変換を UTF-8 において ASCII
3 messages
2016/05/31
[ruby-dev:49630] [Ruby trunk Bug#4388] open-uriで環境変数http_proxyを使うときに認証付きのProxyが使えません
From:
kosaki.motohiro@...
Date:
2016-05-20 06:06:50 UTC
List:
ruby-dev #49630
Issue #4388 has been updated by Motohiro KOSAKI.
実験してみたのですが、まずrubyの./configureの段階で、tool/downloader.rbがhttps接続を使うので、
open_httpのところのhttpsをはじく処理をコメントアウトしないと動きませんでした。
def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
if proxy
proxy_uri, proxy_user, proxy_pass = proxy
# raise "Non-HTTP proxy URI: #{proxy_uri}" if proxy_uri.class != URI::HTTP
end
httpsのときは、https_proxy環境変数読むので、URI::HTTPにならない気がするのですが、どういう意図なのでしょうか。
2つ目。環境変数から読むときは入力がURLなのに、URLエンコードを意識していないので、以下のようにしないと動きませんでした。
(たとえば、うちの会社だとproxy_userがメアドなので@をエンコードしてやらないといけない)
diff --git a/lib/open-uri.rb b/lib/open-uri.rb
index 489b83a..f588455 100644
--- a/lib/open-uri.rb
+++ b/lib/open-uri.rb
@@ -272,6 +272,8 @@ def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
if proxy
unless proxy_user && proxy_pass
proxy_user, proxy_pass = proxy_uri.userinfo.split(':') if proxy_uri.use
+ proxy_user = URI.decode_www_form_component(proxy_user)
+ proxy_pass = URI.decode_www_form_component(proxy_pass)
end
if proxy_user && proxy_pass
klass = Net::HTTP::Proxy(proxy_uri.hostname, proxy_uri.port, proxy_user
ただ、URI.decode漏れってここ以外にもいっぱいありそうな空気を感じるコードなので、修正がここだけでいいのか不安を感じています。
----------------------------------------
Bug #4388: open-uriで環境変数http_proxyを使うときに認証付きのProxyが使えません
https://bugs.ruby-lang.org/issues/4388#change-58764
* Author: あつし よしだ
* Status: Rejected
* Priority: Normal
* Assignee:
* ruby -v: -
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
=begin
内容はタイトルのままです。
パッチを添付しますのでよろしくお願いします。
=end
---Files--------------------------------
open-uri_with_http_proxy.patch (2.99 KB)
--
https://bugs.ruby-lang.org/