Home
Softono

Capybara

Open source Go
30
Stars
2
Forks
0
Issues
1
Watchers
2 months
Last Commit

 About Capybara

Capybara, simple reverse-proxy (api gateway) for localhost services

Platforms

Web Self-hosted

Languages

Go

Links

Need Help Installing Capybara?

We provide expert installation service for this software. Our team will install, configure, and secure Capybara on your server. plans start at just $30.

CAPYBARAS ARE LOVE

Go

Simple Reverse-Proxy written in go.

Listen to a port and redirect any url matching a pattern to another port.

I made this as a solution for hosting multiple services on the same "url" without relying on having a port straight in the URL. Some companies/organizations block any request to a url using a port as one of their security measures.

First parameter must be the path to your json/yaml config file

Example of config.json

{
    "proxy": {
        "port": 80
    },
    "services": [
        {
            "id": "duck",
            "pattern": "^/kwak/",
            "port": 9090
        },
        {
            "id": "stoned",
            "method": "string",
            "pattern": "/jesus",
            "port": 9091
        }
    ]    
}

Example of config.yaml

{
    proxy:
        port: 80
        tls_hosts:
            - localhost

    services:
        -   id: bypasscors
            method: string
            pattern: /bypasscors
            port: 8080

}

Entries in "services" by id:

  • "duck" will redirect any request caught on port 80, starting with "/kwak" to the port 9090 using a regex as matching (default) method.
  • "stoned" will redirect any request caught on port 80, starting with "/jesus" to the port 9091 using a string as matching method. This method compare the string with the beginning of the URI. It does not try to find the string inside the URI.

/ ! \ On Linux (did not try on other system), capybara must be run with sudo if chosen proxy port is under 1024. It will fail otherwise.

This project still needs:

  • Tests
  • Refacto (so it can be more easily tested)
  • Allow config refresh through config file
  • More methods of matching besides "string" and "regex"
  • Refacto "RemovePattern" behavior to a "RedirectPath" behavior

This project might need:

  • Better logging ?