What's new

Welcome to RetroTools.XYZ - We Make It Easier To Manage Your Habbo Retro By Yourself!

Join us now to get access to all our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, and so, so much more. It's also quick and totally free, so what are you waiting for?

Ask question

Ask Questions and Get Answers from Our Community

Answer

Answer Questions and Become an Expert on Your Topic

Contact Staff

Our Experts are Ready to Answer your Questions

[Arcturus] Latest Nitro Websockets [Krews.org]

RetroPlug

Member
Staff member
Management Team
Joined
Nov 12, 2020
Messages
33
Reaction score
9
Points
8

Download link:
Please, Log in or Register to view URLs content!

What is Nitro Websockets?​

NitroWebsockets is a plugin that adds Nitro HTML5 Client compatibility to any hotel running Arcturus MS 3.0.0 and above.

How do I configure the plugin?​

Startup the plugin so it generates the required entries under your emulator_settings table. The following fields will be generated:

  • websockets.whitelist - a comma-delimited list containing all permitted Origin headers. You should write the domain name of your hotel here since the WebSocket connection will be initiated there. Wildcards are also supported, so you can whitelist all subdomains by adding for example: *.example.com, or even whitelist all origins by adding * (not recommended)
  • ws.nitro.host - host IP, should leave it as 0.0.0.0
  • ws.nitro.port - host port, can be any port but if you want to proxy WSS traffic with Cloudflare read the following section
  • ws.nitro.ip.header - header that will be used for obtaining the user's real IP address if the server is behind a proxy. Will most likely be needed to be set to X-Forwarded-For or CF-Connecting-IP if behind Cloudflare.

How do I connect to my emulator using Secure Websockets (WSS)?​

You have several options to add WSS support to your WebSocket server.

  • You can add your certificate and key file to the path /ssl/cert.pem and /ssl/privkey.pem to add WSS support directly to the server Note: The client will not accept self-signed certificates, you must use a certificate signed by a CA (you can get one for free from letsencrypt.org)
  • or you can proxy WSS with either Cloudflare or Nginx. Note: Adding a proxy means that you will have to configure ws.nitro.ip.header so that the plugin is able to get the player's real IP address, and not the IP address of the proxy.

Proxying WSS with Cloudflare​

You can easily proxy WSS traffic using Cloudflare. However, you should first make sure that your ws.nitro.port is set to one that is listed as HTTPS Cloudflare Compatible in the following link:
Please, Log in or Register to view URLs content!


As of writing this, the following ports are listed as compatible:

  • 443
  • 2053
  • 2083
  • 2087
  • 2096
  • 8443
After your port is set to one that is compatible, create a new A record for a subdomain that will be used for WebSocket connections, and make sure that it is set to be proxied by Cloudflare (the cloud should be orange if it is being proxied). It should be pointing to your emulator IP.

Finally, create a new page rule under the Page Rules tab in Cloudflare and disable SSL for the subdomain you created above. You will now be able to connect using secure WebSockets using the following example URL, where I created an A record for the subdomain WS and I set my ws.nitro.port to 2096: wss://ws.example.com:2096

FAQS​

I am getting the error Unable to load ssl: File does not contain valid private key: ssl\privkey.pem

Make sure your private key is in PKCS#8 format. You can convert it to PKCS8 format with the following command:

openssl pkcs8 -topk8 -nocrypt -in yourkey.pem -out yournewkey.pem

I am getting disconnected from the client with no error logs

Make sure your SSO ticket is valid and that you didn't do an IP ban before configuring the ws.nitro.ip.header if you're behind a proxy.

License​

This plugin is released under the GNU GPLv3
 
shape1
shape2
shape3
shape4
shape7
shape8
Top