Gateway

This plugin is an example of RAWCMS configurable plugin that enable basic Gateway capability like: * Balancer * Proxy * Cache * Logging

Configuration

Like all configurable plugin, graphQL have a json stored on _configuration collection

{
   "_id":"5db12fb8791f8e6574b62821",
   "plugin_name":"RawCMS.Plugins.ApiGateway.ApiGatewayPlugin",
   "data":{
      "Balancer":[
         {
            "Host":"localhost:64516",
            "Port":64516,
            "Scheme":"http",
            "Path":"^(.*)$",
            "Nodes":[
               {
                  "Host":"test2.com",
                  "Port":443,
                  "Scheme":"https",
                  "Enable":true
               },
               {
                  "Host":"test1.com",
                  "Port":443,
                  "Scheme":"https",
                  "Enable":true
               }
            ],
            "Policy":"RoundRobin",
            "Enable":false
         }
      ],
      "Proxy":[
         {
            "Host":"localhost:64516",
            "Port":64516,
            "Scheme":"http",
            "Path":"^(.*)$",
            "Node":{
               "Host":"test1.com",
               "Port":443,
               "Scheme":"https",
               "Enable":true
            },
            "Enable":false
         }
      ],
      "Cache":{
         "Enable":false,
         "Duration":600,
         "SizeLimit":67108864,
         "MaximumBodySize":104857600,
         "UseCaseSensitivePaths":false
      },
      "Logging":{
         "Enable":true
      }
   }
}

Balancer * Enable: true or false, enable capability * Host: RawCMS Host * Port: RawCMS Port * Scheme: RawCMS Scheme * Path: Regular expression for filter balancer capability * Policy: Balancer policy (RoundRobin, RequestCount) * Nodes: Destination Node descriprion * Host: Destination Host * Port: Destination Port * Scheme: Destination Scheme * Enable: Enable or disable Node

Proxy * Enable: true or false, enable capability * Host: RawCMS Host * Port: RawCMS Port * Scheme: RawCMS Scheme * Path: Regular expression for filter proxy capability * Nodes: Destination Node descriprion * Host: Destination Host * Port: Destination Port * Scheme: Destination Scheme * Enable: Enable or disable Node

Cache Implement cache in memory using Microsoft.AspNetCore.ResponseCaching package.

Logging * Enable: true or false, enable capability