DEVTomatoCake / Pterodactyl-vsc

Pterodactyl server files in VS Code
https://marketplace.visualstudio.com/items?itemName=TomatoCake.pterodactyl-vsc
MIT License
1 stars 0 forks source link

Add Support for IP URLs #68

Closed Xgabi86 closed 3 weeks ago

Xgabi86 commented 3 weeks ago

I'd really like to be able to use IPs like "84.134.43.97" or "http://89.168.49.87/" with the extension but unfortunately this isn't possible and the extension sends us an error message (Failed to connect to the Pterodactyl panel (403): <!DOCTYPE html> <!--[if lt IE 7]> <html class="no-...)

DEVTomatoCake commented 3 weeks ago

I'm pretty sure this should work. HTTP 403 and that body is probably a Cloudflare error or something else blocking access for either your device or the proxy you're using.

Xgabi86 commented 3 weeks ago

I don't use any proxy or cloudflare, could it be the firewall? What port does the extension communicate on?

DEVTomatoCake commented 3 weeks ago

The panel shouldn't return a HTML response, I don't know more than that. There's no specific port used, if you specify one it uses it, instead it uses the default HTTP/HTTPS port as done by the underlying HTTP implementation.

Xgabi86 commented 3 weeks ago

Do you have any idea where the problem might be coming from?

DEVTomatoCake commented 3 weeks ago

Sadly not. You can try opening the output log of the extension by clicking on "View", selecting "Output" and then selecting the extension in the select menu on the right. It should log the full HTML response, which might show a router or local firewall blocking the request.

Xgabi86 commented 3 weeks ago

indeed cloudflare blocks the connection but i haven't installed it on my vps

Loading extension...
Connecting to http://89.168.49.87...
Connection response: 403 Forbidden
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en-US"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en-US"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en-US"> <!--<![endif]-->
<head>
<title>Direct IP access not allowed | Cloudflare</title>
<meta charset="UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="robots" content="noindex, nofollow" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" id="cf_styles-css" href="/cdn-cgi/styles/main.css" />

<script>
(function(){if(document.addEventListener&&window.XMLHttpRequest&&JSON&&JSON.stringify){var e=function(a){var c=document.getElementById("error-feedback-survey"),d=document.getElementById("error-feedback-success"),b=new XMLHttpRequest;a={event:"feedback clicked",properties:{errorCode:1003,helpful:a,version:1}};b.open("POST","https://sparrow.cloudflare.com/api/v1/event");b.setRequestHeader("Content-Type","application/json");b.setRequestHeader("Sparrow-Source-Key","c771f0e4b54944bebf4261d44bd79a1e");
b.send(JSON.stringify(a));c.classList.add("feedback-hidden");d.classList.remove("feedback-hidden")};document.addEventListener("DOMContentLoaded",function(){var a=document.getElementById("error-feedback"),c=document.getElementById("feedback-button-yes"),d=document.getElementById("feedback-button-no");"classList"in a&&(a.classList.remove("feedback-hidden"),c.addEventListener("click",function(){e(!0)}),d.addEventListener("click",function(){e(!1)}))})}})();
</script>

<script defer src="https://performance.radar.cloudflare.com/beacon.js"></script>
</head>
<body>
  <div id="cf-wrapper">
    <div class="cf-alert cf-alert-error cf-cookie-error hidden" id="cookie-alert" data-translate="enable_cookies">Please enable cookies.</div>
    <div id="cf-error-details" class="p-0">
      <header class="mx-auto pt-10 lg:pt-6 lg:px-8 w-240 lg:w-full mb-15 antialiased">
         <h1 class="inline-block md:block mr-2 md:mb-2 font-light text-60 md:text-3xl text-black-dark leading-tight">
           <span data-translate="error">Error</span>
           <span>1003</span>
         </h1>
         <span class="inline-block md:block heading-ray-id font-mono text-15 lg:text-sm lg:leading-relaxed">Ray ID: 89c81f7d01f59ee3 &bull;</span>
         <span class="inline-block md:block heading-ray-id font-mono text-15 lg:text-sm lg:leading-relaxed">2024-07-01 17:30:16 UTC</span>
        <h2 class="text-gray-600 leading-1.3 text-3xl lg:text-2xl font-light">Direct IP access not allowed</h2>
      </header>

      <section class="w-240 lg:w-full mx-auto mb-8 lg:px-8">
          <div id="what-happened-section" class="w-1/2 md:w-full">
            <h2 class="text-3xl leading-tight font-normal mb-4 text-black-dark antialiased" data-translate="what_happened">What happened?</h2>
            <p>You've requested an IP address that is part of the <a href="https://www.cloudflare.com/5xx-error-landing/" target="_blank">Cloudflare</a> network. A valid Host header must be supplied to reach the desired website.</p>

          </div>

          <div id="resolution-copy-section" class="w-1/2 mt-6 text-15 leading-normal">
            <h2 class="text-3xl leading-tight font-normal mb-4 text-black-dark antialiased" data-translate="what_can_i_do">What can I do?</h2>
            <p>If you are interested in learning more about Cloudflare, please <a href="https://www.cloudflare.com/5xx-error-landing/" target="_blank">visit our website</a>.</p>
          </div>

      </section>

      <div class="feedback-hidden py-8 text-center" id="error-feedback">
    <div id="error-feedback-survey" class="footer-line-wrapper">
        Was this page helpful?
        <button class="border border-solid bg-white cf-button cursor-pointer ml-4 px-4 py-2 rounded" id="feedback-button-yes" type="button">Yes</button>
        <button class="border border-solid bg-white cf-button cursor-pointer ml-4 px-4 py-2 rounded" id="feedback-button-no" type="button">No</button>
    </div>
    <div class="feedback-success feedback-hidden" id="error-feedback-success">
        Thank you for your feedback!
    </div>
</div>

      <div class="cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300">
  <p class="text-13">
    <span class="cf-footer-item sm:block sm:mb-1">Cloudflare Ray ID: <strong class="font-semibold">89c81f7d01f59ee3</strong></span>
    <span class="cf-footer-separator sm:hidden">&bull;</span>
    <span id="cf-footer-item-ip" class="cf-footer-item hidden sm:block sm:mb-1">
      Your IP:
      <button type="button" id="cf-footer-ip-reveal" class="cf-footer-ip-reveal-btn">Click to reveal</button>
      <span class="hidden" id="cf-footer-ip">86.233.92.85</span>
      <span class="cf-footer-separator sm:hidden">&bull;</span>
    </span>
    <span class="cf-footer-item sm:block sm:mb-1"><span>Performance &amp; security by</span> <a rel="noopener noreferrer" href="https://www.cloudflare.com/5xx-error-landing" id="brand_link" target="_blank">Cloudflare</a></span>

  </p>
  <script>(function(){function d(){var b=a.getElementById("cf-footer-item-ip"),c=a.getElementById("cf-footer-ip-reveal");b&&"classList"in b&&(b.classList.remove("hidden"),c.addEventListener("click",function(){c.classList.add("hidden");a.getElementById("cf-footer-ip").classList.remove("hidden")}))}var a=document;document.addEventListener&&a.addEventListener("DOMContentLoaded",d)})();</script>
</div><!-- /.error-footer -->

    </div><!-- /#cf-error-details -->
  </div><!-- /#cf-wrapper -->

  <script>
  window._cf_translation = {};

</script>

</body>
</html>
DEVTomatoCake commented 3 weeks ago

I suppose you're using the default proxy then. It's run using Cloudflare Workers, as mentioned in the README, and as you can see it doesn't allow direct IP access... You would have to either reconfigure your panel to allow direct requests and empty the proxy URL setting (not recommended), or self-host the proxy somewhere outside of Cloudflare Workers, e.g. on your VPS itself.

Xgabi86 commented 3 weeks ago

I really can't remove this protection because I don't know much about it. Could you help me?

DEVTomatoCake commented 3 weeks ago

Not really, I don't know much about running Pterodactyl myself sadly.

You have to set up a web server, make it accessible with an IP and a port, make it run a CORS proxy code (similar, though not the same, as the one in the README), configure it to be your proxy (http://<IP>:<Port>/?url=) and it should work. You'll probably find tutorials online on how to do that. You can also try using online CORS proxies like https://corsproxy.io, however they might not be trustworthy and/or blocking your request just like Cloudflare does.

Alternatively you could try to get a (sub)domain for the IP, e.g. using dynamic DNS.

Xgabi86 commented 3 weeks ago

CORS prox doesn't work, but a subdomain does! Thanks for your help.