继续讨论来自 Recent updates seemed to stop rake task themes:update to use a proxy server 的内容:
由于该超时错误,我无法获取或更新任何主题组件,最后我解决了这个问题。从文件 \u003cDiscourse\u003e/lib/theme_store/git_importer.rb 中删除了以下以 - 开头的行:
def clone_http!
uri = redirected_uri
raise_import_error! if %w[http https].exclude?(@uri.scheme)
- addresses = FinalDestination::SSRFDetector.lookup_and_filter_ips(uri.host)
- raise_import_error! if addresses.empty?
env = { "GIT_TERMINAL_PROMPT" => "0" }
args =
clone_args(
uri.to_s,
- "http.followRedirects" => "false",
- "http.curloptResolve" => "#{uri.host}:#{uri.port}:#{addresses.join(\",\")}",
)
begin
Discourse::Utils.execute_command(env, *args, timeout: COMMAND_TIMEOUT_SECONDS)
rescue RuntimeError
raise_import_error!
end
end
这段代码处理 DNS 预解析,然后强制 git 使用从预解析中获得的 IP 地址,我不知道为什么它在我的服务器上总是失败,所以我删除了该逻辑。
事实上,我对它的存在有一个疑问,git 本身会进行 DNS 解析,我们为什么需要这个逻辑?这并不明确。