The getBridgeNames() function in BridgeDbR uses the following code to
download the HTML page at
https://urldefense.proofpoint.com/v2/url?u=https-3A__bridgedb.github.io_data_gene-5Fdatabase_&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=GbdGtFXiT4WW33h7Un9R0XL7r4I1e4JAb9uSyup82Sw&s=qywf3a1JViBPl5ArNq4vLqt8_csFrFDG_G2MREAWwpM&e=
? url <-
"https://urldefense.proofpoint.com/v2/url?u=https-3A__bridgedb.github.io_data_gene-5Fdatabase_&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=GbdGtFXiT4WW33h7Un9R0XL7r4I1e4JAb9uSyup82Sw&s=qywf3a1JViBPl5ArNq4vLqt8_csFrFDG_G2MREAWwpM&e=
"
? library(RCurl)
? CURL_SSLVERSION_TLSv1_2 <- 6L
? opts <- curlOptions(sslversion=CURL_SSLVERSION_TLSv1_2)
? site <- basicTextGatherer()
? curlPerform(url=url, writefunction=site$update, .opts=opts)
? html <- site$value()
Not sure why this fails on our Windows builder but if it fails there it
might fail on other Windows systems. A more portable/reliable way to get
that HTML document is to use download.file():
? url <-
"https://urldefense.proofpoint.com/v2/url?u=https-3A__bridgedb.github.io_data_gene-5Fdatabase_&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=GbdGtFXiT4WW33h7Un9R0XL7r4I1e4JAb9uSyup82Sw&s=qywf3a1JViBPl5ArNq4vLqt8_csFrFDG_G2MREAWwpM&e=
"
? destfile <- tempfile()
? download.file(url, destfile)
? html2 <- paste0(readLines(destfile), "\n", collapse="")
? identical(html, html2)? # TRUE
This works everywhere I tested e.g. my laptop, malbec1, merida1, tokay2,
etc... and doesn't rely on some obscure RCurl/SSL settings.
By doing the same kind of change in their getDatabase() function, the
BridgeDbR maintainers can get rid of their dependency on RCurl.
Hope this helps,
H.
On 3/18/20 12:20, Neumann, Steffen wrote:
Hi,
can you get me the URL that wants to be downloaded ?
The "tlsv1 alert protocol version" indicates that the proper
solution might be to notify the server to reconfigure
the web server supported TLS versions.
Yours,
Steffen
On Wed, 2020-03-18 at 19:55 +0100, Egon Willighagen wrote:
Hi all,
in the BridgeDbR package I have a TSL issue, just on Windows10 [0]:
location <- getDatabase("Bacillus subtilis")
Error in function (type, msg, asError = TRUE)? :
?? error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
protocol version
Calls: getDatabase ... getBridgeNames -> curlPerform -> <Anonymous>
-> fun
Execution halted
This method is using the download.file() method (see [1]). I am not
sure
what this method uses by default. I have been googling and found a
number
of suggestions on how to get RCurl to use other SSL version, such as:
CURL_SSLVERSION_TLSv1_2 <- 1Lopts <- RCurl::curlOptions(? verbose =
TRUE, sslversion = CURL_SSLVERSION_TLSv1_2)download.file(url, file,
mode = "wb", .opts=opts)
But I haven't found something that works. Error messages are very
cryptic,
and I'm running out of ideas.
Does someone have a suggestion how to debug this? Maybe even have a
solution?
All feedback is very much appreciated!
Egon
0.