Giter Site home page Giter Site logo

g-portal / pmproxy Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 62 KB

Platform Management Proxy using Cloudflare Workers to provide users access to the server BMC.

License: GNU General Public License v3.0

Dockerfile 2.40% Go 54.66% TypeScript 42.94%
asrockrack bmc cloudflare-worker cloudflare-workers idrac ilo

pmproxy's Introduction

Worker and Gateway: Infrastructure Proxies

Overview

This repository contains two essential components for managing and routing incoming requests within your infrastructure: the Worker and the Gateway. These components work together to ensure secure and efficient handling of requests to your internal network services.

Worker

The Worker is a Cloudflare Worker designed to act as a traffic router based on JSON Web Tokens (JWT). It receives incoming requests and determines the appropriate Gateway to forward the request to. The Worker makes use of the JWT token to authenticate and authorize the request before directing it to the chosen Gateway for further processing.

Gateway

The Gateway is responsible for applying customization rules and ensuring the security of incoming requests. Once a request is routed by the Worker, the Gateway applies specific rules and configurations as needed by the platform management system. It acts as a gatekeeper, making sure that requests comply with predefined requirements before being forwarded to services within the internal network.

Concept

The base requirement behind this project is providing a secure and efficient way to the platform management to the bare metal customers. To provide the best latency, we use Cloudflare Workers. Most crucial tasks are already being done there. Most importantly, the JWT Token includes the upstream (gateway) to speak with which is the closest entrypoint into the internal network the platform management is running on.

As an example: Platform Management Location is London and the Customer that is trying to access the Platform Management is located elsewhere. The customer is connecting to the cloudflare datacenter closest which then proxies the traffic towards the gateway that is located in London which then proxies the traffic towards the platform management system.

To archive something similar without Cloudflare Workers would require a lot of infrastructure around the world and a lot of time to set up. With Cloudflare Workers, we can do this with a few lines of code.

Infrastructure

Below is a simplified ASCII representation of the infrastructure:

+-------------------+
|    Cloudflare     |
|      Worker       |
+---------+---------+
          |
          | (1) Authenticate and authorize
          |
+---------v---------+
|                   |
|      Gateway      |
|                   |
+---------+---------+
          |
          | (2) Apply customization rules
          |
+---------v---------+
|                   |
|   Internal        |
|   Network         |
|                   |
+-------------------+

  1. Worker: Receives incoming requests, validates JWT tokens, and routes requests to the appropriate Gateway.

  2. Gateway: Applies customization rules and policies to incoming requests before forwarding them to the internal network.

Supported Platforms

The pmproxy currently supports the following platform management systems:

  • IDRAC8
  • IDRAC9
  • ILO5
  • ASRockRack

Getting Started

To set up and deploy the Worker and Gateway, follow the instructions in their respective directories:

Contributing

Contributions are welcome! Feel free to open issues and pull requests for bug fixes, improvements, or new features.


Note: This is a high-level overview. For detailed setup instructions, usage guidelines, and more, refer to the individual directories of the Worker and Gateway components.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.