Coder Social home page Coder Social logo

go-proxy's Introduction

Hi, I'm Vini πŸ‘‹

Stack Exchange reputation

Welcome to my profile! I'm currently a Senior Software Engineer @ FOSSA and the technical and operational lead @ Revollu. Previously a SW engineer at Toast, HubSpot and IBM.

I've co-authored two books:

  • Java Fundamentals - A fast-paced and pragmatic introduction to one of the world's most popular programming languages
  • Professional Javascript - Develop your JavaScript programming skills by learning strategies and techniques commonly used in modern full-stack application development

I love learning together and sharing knowledge and I'd love to connect. Please send me an email if you'd like to connect.

About me

Some people think I have super powers but the truth is that I like being challenged. πŸ”₯ And I have amazing friends and family that always supported me. ❀️

I like learning something new every day so I'm always finding new projects to work on. That means you may get lost in my repositories, so please first check the pinned repositories below. I'm an expert in Java and Javascript but I've studied a few other languages, including: Python and Go.

Besides learning programming languages I also love learning spoken and written languages. My native language is portuguese (πŸ‡§πŸ‡·) but I'm also fluent in english (πŸ‡ΊπŸ‡Έ). I've also studied: spanish (πŸ‡ͺπŸ‡Έ), german (πŸ‡©πŸ‡ͺ), chinese (mandarin) (πŸ‡¨πŸ‡³), french (πŸ‡«πŸ‡·) and I am currently studying japenese (πŸ‡―πŸ‡΅).

I also run marathons. I've ran 3 of the 6 majors: Boston, Chicago and Berlin. I've also ran a few other marathons: Athens, Providence (RI), Cape Code (MA), Philadelphia and Narragansett (RI).

go-proxy's People

Contributors

dependabot[bot] avatar visola avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

go-proxy's Issues

Prettier Query Params Viewer

User Story

As a user I want to quickly understand the query parameters sent to the server.

Acceptance Criteria

  • There's an extra tab in the Request Details that shows an exploded view of query parameters

Allow variables to be replaced in upstream/endpoints

User Story

As a user I want to be able to use variables in my endpoints.

Acceptance Criteria

  • Adding variables to mappings in an endpoint gets processed correctly
  • There's an admin endpoint that can be used to set values to a specific variable

Server root file from static endpoints

User Story

As a user, I want to be able to serve a root file when pointing a directory.

Description

When serving a directory statically, when requesting a folder, it should return the index.html file or a 404 if non-existing.

A configurable root file name should also be available

Acceptance Criteria

  • When a request maps to a static endpoint, if it points to a folder, it should check for a root file
  • Root file name should be configurable and default to index.html

Read configuration files from outside .go-proxy

User Story

As a user, I want to be able to share my upstreams with other working in the same code base.

Acceptance Criteria

  • There's a concept of custom folders and it is persisted in the current state
  • There's an Admin UI where the user can select folders to be scanned
    • the folders will be scanned every minute for a file called .go-proxy.yml recursively
    • hidden folders are ignored (starting with a .)
    • upstreams found are added to the current list of upstreams
  • Files found get saved in the current state
  • When restarted, upstreams from previous found files get loaded with the ones in the ~/.go-proxy/upstreams directory

Edit Upstreams from the Admin UI

User Story

As a user I want to quickly edit a endpoints and upstreams.

Acceptance Criteria

  • On the list of listeners, there's a pencil that allow users to edit an upstream
    • When click on the pencil, a text editor with the current content opens up
    • On the editor, there's a save button that when clicked, save the changes to the original file
    • On the editor, there's a cancel button that when clicked, closes the editor without any changes to the original file
  • On the top of the listeners page, there's create new upstream file button
    • When clicked, a modal asking for the file name pops up
      • if the name of the file is relative, the new file will be created in the ~/.go-proxy/upstreams directory
      • if it's a full path, then that's going to be used (requires #42)
    • After getting the file name, the editor will popup with the same characteristics as editing

Track executed requests

User Story

As a user, I want to be able to see the requests coming through.

Acceptance Criteria

  • All recent executed requests are stored with the following information
    • request headers
    • response headers
    • Request body, up to a maximum size
    • Response body, up to a maximum size
    • Request timings
    • Request final destination
    • Request URL
    • Executed URL
    • Response Status
  • Request history is accessible through Admin API
  • There's an event system that can push events to the Admin UI
  • Admin UI shows a list of executed requests
    • On load, all executed requests are loaded
    • New requests are pushed to the Admin UI as they happen

Provide common system values as variables

User Story

As a user I want to be able to use common environment variables in my endpoints.

Acceptance Criteria

  • The following variables are available:
    • user home directory
    • upstream name
    • file where it was loaded from
    • directory where it was loaded from
    • listener port
    • listener name

Parse and show information from JWT tokens

User Story

As a user, I want to quickly view what's inside a JWT sent in a Authorization header.

Acceptance Criteria

  • JWTs sent in a Authorization header gets parsed and their content is shown in the Admin UI

Refresh Mappings

User Story

As I user I want to be able to change the mappings without having to restart the proxy.

Acceptance Criteria

  • keep track of when the mappings were loaded
  • check mapping directories for changes and reload mappings that changed
  • show last time mappings were loaded in the admin UI

Decode Gzipped Bodies

User Story

As a user, I want to be able to see the content of gzipped bodies.

Acceptance Criteria

  • Gzipped response bodies are correctly decoded
  • There's an indication in the Admin UI that the body was gzipped

Group values for variables in a specific environment

User Story

As a user I want to group values for variables in a specific environment.

Acceptance Criteria

  • There's an admin endpoint that can be used to create an environment
  • There's an admin endpoint that can be used to select an environment for a specific listener
  • There's an admin endpoint that can be used to set a value for a variable on a specific environment
  • The value for a variable is correctly picked up from the selected environment in the current listener or use the default value if set

Support configuring Listeners from yaml

User Story

As a user, I want to have a simpler way to configure listeners.

Acceptance Criteria

  • Listeners can be configured using yaml files read from ~/.go-proxy/listeners
  • README is updated accordingly

Validate all mappings

User Story

As a user I want to know if my mappings is wrong as soon as possible.

Acceptance Criteria

  • Load mappings during startup
  • Add a framework to create validators for mappings
  • Execute the validation when loading the mapping
  • Make sure it works with #7
  • Expose validation errors in the Admin UI

Pretty print request bodies

User Story

As a user, I want to easily understand the payloads sent and received.

Acceptance Criteria

  • There's an extra tab that the user can click to see the prettier version of the body
  • The following formats should be pretty printed
    • JSON
    • HTML Forms
    • XML
    • HTML
    • Javascript
    • CSS
  • All image formats should show as image

Depends on

#38

When request body is too big, Admin UI freezes

Description

When a request upload is too big (a few MBs), the UI freezes when trying to show the request body.

Reproduce steps

  1. Upload a big image passing through the proxy
  2. Go to the requests screen
  3. Select the request with the uploaded content
  4. Click on the Request Body tab

Add clear history button to Admin UI

User Story

As a user, I want to be able to clear the history of requests I see in the Admin UI.

Acceptance Criteria

Add a Clear History button to the Admin UI.

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.