http.get() and http.websocket() - Could not connect
Delpa opened this issue ยท 14 comments
Useful information to include:
- Minecraft version: 1.14.4 Java and 1.16.4 Java
- CC: Tweaked version: cc-tweaked-1.14.4-1.89.2.jar and cc-tweaked-1.16.4-1.95.2.jar
Message
Hi, I have an error.
when i run this i can't connect (i test this on minecraft version 1.14.4 and 1.16.4)
print(http.get("https://www.delpaqq.com/")) -> Error said nil Could not connect nil
print(http.get("https://www.google.com/")) -> I succeed
print(http.get("https://www.facebook.com/")) -> Error nil Could not connect nil
Same error when use websockets
local myURL = "wss://sockets.delpaqq.com"
local ws = http.websocket(myURL) -->false Could not connect
I tried this on the website and they are all successful.
In my server(delpaqq.com) with nginx I receive that the connection is with SSLv3 and it is rejected (This SSLv3 version has been rejected for years, now TLSv1 is used up to TLSv1.3)
I appreciate any assistance anyone can provide.
##Logs
2021-01-24-1.log.gz
2021-01-24-2.log.gz
2021-01-24-3.log.gz
2021-01-24-4.log.gz
2021-01-24-5.log.gz
Had another look at this, and I've made the system a little more lenient. I'm afraid I can't really fix the whole problem, so this is as good as it's going to get.
It's CC against Aternos' terms of service? I'm fairly sure they disallow mods with allow users to run code, which CC does.
It's CC against Aternos' terms of service? I'm fairly sure they disallow mods with allow users to run code, which CC does.
Not super familiar with their ToS, but I do know mods have to be added and approved by the people who run Aternos. They wouldn't add a mod that they don't want people to use.
Sorry if this isn't the right place to ask this, but is there a way to work around the Java version requirement? I'm trying to set something up on a server that's being hosted with Aternos, and I don't have control over the server's java version (1.8.0_51).
Not without the server operators intervention, they have to either update Java, or install a mod that adds the Let's Encrypt certificate to it -> https://www.curseforge.com/minecraft/mc-mods/letsencryptcraft
If you haven't already, it's worth updating to the latest Java and making sure the Minecraft launcher is using that version (rather than its built-in one).
Older versions of Java (including the one bundled by the launcher) don't include the Let's Encrypt root cert, and so reject any sites using it.
Edit now that I'm at a computer: You're running 1.8.0_51 - you need 1.8.0_101 or later. The best thing to do is install a version from here and point Minecraft towards it (it's in the "more options" bit of the launcher profile).
Thanks, I have tried updating the minecraft "jre" and the http.get () already works.
With websockets, I still get the message "Could not connect", I have tested on the website using "wss: //sockets.delpaqq.com" and on other online websockets testers and they all connect and receive information.
Well this is fun. Netty is advertising that it supports the permessage-deflate
extension in its initial request:
Host: example.tweaked.cc
Sec-websocket-version: 13
Sec-websocket-extensions: permessage-deflate;client_max_window_bits,deflate-frame,x-webkit-deflate-frame
Connection: upgrade
Upgrade: websocket
Sec-websocket-origin: https://example.tweaked.cc
Sec-websocket-key: +wymtKGF86gInmHgxfxh/A==
However, when receiving that extension it claims it doesn't know about it:
io.netty.handler.codec.CodecException: invalid WebSocket Extension handhshake for "permessage-deflate; server_no_context_takeover; client_no_context_takeover; server_max_window_bits=10"
at io.netty.handler.codec.http.websocketx.extensions.WebSocketClientExtensionHandler.channelRead(WebSocketClientExtensionHandleComputerCraft-Netty-0[1] r.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
The issue here is the client_no_context_takeover
and server_no_context_takeover
extensions, which Netty rejects by default. We'll need to create our own subclass of WebSocketClientCompressionHandler
which enables these extensions - it's not entirely clear why they're disabled by default, so probably worth doing some investigation first.
A temporary workaround would be to disable these extensions on your server.
Thanks <3,
I have disabled compression in nginx and node.js of the websocket and it is already working
We'll need to create our own subclass of WebSocketClientCompressionHandler which enables these extensions
Had a look at this last weekend, and it's irritatingly more complex than that. We need to support servers which request this extension, but not request it by default. From what I can tell, Netty has a bit of an all-or-nothing approach.
Tentatively putting this to be fixed in 1.97.1. I'm still not any clearer on quite how websocket extensions are meant to work in netty, but should also have a few days free to look into it.
Hi, same error here, impossible to GET a website who use a let's encrypt cert and I'm using Java 1.8.0.291.
Hi, same error here, impossible to GET a website who use a let's encrypt cert and I'm using Java 1.8.0.291.
I seem to remember fixing this by updating my java version, might be worth a try.