diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 01ddbf4..fc445e6 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -1,11 +1,8 @@ -# This workflow will build a golang project -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go - name: Go on: push: - branches: [ "main","develop" ] + branches: [ "*" ] pull_request: branches: [ "main" ] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5e163e9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# Contributing to Goma Gateway + +Welcome to Goma Gateway! This document shall serve as a guide for you to follow in your journey to contributing to this project. +There are many ways to contribute to Goma Gateway: +- Reporting Bugs +- Resolving issues +- Sharing an idea and working on it +- Working on a feature with other contributors. +- And More… + +To get started, take a look at the following sections. + +## Issues + +### Did you spot a problem in Goma Gateway? + +Firstly you should check if such an issue was previously opened/closed for your problem on the repository. If it doesn't then you should create a new issue. + +### Do you want to solve an issue? + +If there is an issue you think you can solve, and want to solve, then you should create a new fork of this repository. +In that repository you should create a new branch for the issue you are working on and commit changes there. +When the issue is solved, and you want it to be integrated into the official repository, you may create a pull request for the same. +The description of the pull request should clearly describe both the issue and the solution along with other necessary information. +The developers will merge after making the necessary changes (if arises a need to do so). + + +### Do you want to share an idea? + +Goma Gateway welcomes new ideas. If you have an idea you should first check if a similar or identical idea was presented previously or not, or check thoroughly if the idea is already present in Goma Gateway. +To share your idea you can open an issue. +There you can share your idea and if you want to work on it, you can follow the same steps as mentioned in previously. + +### Do you want to contribute but don't know how? + +Your first resource in this should be https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project +This file serves as your guide specifically for this project to help you get your contributions into the project. +If you still have some questions or need help, feel free to open a discussion on the same. + +# Thank You 🙏 \ No newline at end of file diff --git a/README.md b/README.md index 84aeae5..1bdcbc1 100644 --- a/README.md +++ b/README.md @@ -112,10 +112,16 @@ services: - ./config:/etc/goma/ ``` +## Supported Systems -## Requirement +- [x] Linux +- [x] MacOS +- [x] Windows + +## Deployment - Docker +- Kubernetes ## Contributing @@ -126,6 +132,8 @@ The Goma Gateway project welcomes all contributors. We appreciate your help! If you like or are using Goma Gateway, please give it a star. Thanks! +Please share. + ## License diff --git a/examples/compose.yaml b/examples/compose.yaml index 3fa6a72..0556ef2 100644 --- a/examples/compose.yaml +++ b/examples/compose.yaml @@ -9,7 +9,7 @@ services: start_period: 20s timeout: 10s ports: - - "80:8080" - - "443:8443" + - "8080:8080" + - "8443:8443" volumes: - - ./config:/etc/goma/ + - ./:/etc/goma/ diff --git a/examples/configMap.yaml b/examples/configMap.yaml index 7d2efe2..7b82992 100644 --- a/examples/configMap.yaml +++ b/examples/configMap.yaml @@ -4,20 +4,21 @@ metadata: name: goma-config data: goma.yml: | - # Goma Gateway configurations + # Goma Gateway configurations + version: 0.1.7 gateway: # Proxy write timeout writeTimeout: 15 # Proxy read timeout readTimeout: 15 # Proxy idle timeout - idleTimeout: 60 + idleTimeout: 30 ## SSL Certificate file sslCertFile: '' #cert.pem ## SSL Private Key file sslKeyFile: ''#key.pem # Proxy rate limit, it's In-Memory IP based - rateLimiter: 0 + rateLimit: 0 accessLog: "/dev/Stdout" errorLog: "/dev/stderr" ## Enable, disable routes health check @@ -28,6 +29,8 @@ data: disableDisplayRouteOnStart: false # disableKeepAlive allows enabling and disabling KeepALive server disableKeepAlive: false + # Block common exploits | detect SQL injection, and simple XSS attempts + blockCommonExploits: false # interceptErrors intercepts backend errors based on defined the status codes interceptErrors: - 405 @@ -47,7 +50,7 @@ data: ##### Define routes routes: # Example of a route | 1 - - name: Public + - name: Public # Name is optional # host Domain/host based request routing host: "" # Host is optional path: /public @@ -55,6 +58,8 @@ data: # e.g rewrite: /store to / rewrite: / destination: https://example.com + # Limit HTTP methods allowed for this route + methods: [POST, PUT, GET] #DisableHeaderXForward Disable X-forwarded header. # [X-Forwarded-Host, X-Forwarded-For, Host, Scheme ] # It will not match the backend route, by default, it's disabled @@ -84,6 +89,7 @@ data: path: /protected rewrite: / destination: https://example.com + methods: [] healthCheck: cors: {} middlewares: diff --git a/examples/goma.yml b/examples/goma.yml index 74c5b16..aac44c2 100644 --- a/examples/goma.yml +++ b/examples/goma.yml @@ -6,7 +6,7 @@ gateway: # Proxy read timeout readTimeout: 15 # Proxy idle timeout - idleTimeout: 60 + idleTimeout: 30 ## SSL Certificate file sslCertFile: '' #cert.pem ## SSL Private Key file @@ -23,6 +23,7 @@ gateway: disableDisplayRouteOnStart: false # disableKeepAlive allows enabling and disabling KeepALive server disableKeepAlive: false + # Block common exploits | detect SQL injection, and simple XSS attempts blockCommonExploits: false # interceptErrors intercepts backend errors based on defined the status codes interceptErrors: @@ -43,7 +44,7 @@ gateway: ##### Define routes routes: # Example of a route | 1 - - name: Public + - name: Public # Name is optional # host Domain/host based request routing host: "" # Host is optional path: /public @@ -51,6 +52,7 @@ gateway: # e.g rewrite: /store to / rewrite: / destination: https://example.com + # Limit HTTP methods allowed for this route methods: [POST, PUT, GET] #DisableHeaderXForward Disable X-forwarded header. # [X-Forwarded-Host, X-Forwarded-For, Host, Scheme ] @@ -81,6 +83,7 @@ gateway: path: /protected rewrite: / destination: https://example.com + methods: [] healthCheck: cors: {} middlewares: @@ -138,4 +141,44 @@ middlewares: - /v2/swagger-ui/* - /api-docs/* - /internal/* - - /actuator/* \ No newline at end of file + - /actuator/* + - name: oauth-google + type: oauth + paths: + - /protected + - /example-of-oauth + rule: + clientId: xxx + clientSecret: xxx + provider: google + endpoint: + userInfoUrl: "" + redirectUrl: http://localhost:8080/callback + redirectPath: "" + cookiePath: "" + scopes: + - https://www.googleapis.com/auth/userinfo.email + - https://www.googleapis.com/auth/userinfo.profile + state: randomStateString + jwtSecret: your-strong-jwt-secret | It's optional + - name: oauth-authentik + type: oauth + paths: + - /protected + - /example-of-oauth + rule: + clientId: xxx + clientSecret: xxx + provider: custom + endpoint: + authUrl: https://authentik.example.com/application/o/authorize/ + tokenUrl: https://authentik.example.com/application/o/token/ + userInfoUrl: https://authentik.example.com/application/o/userinfo/ + redirectUrl: http://localhost:8080/callback + redirectPath: "" + cookiePath: "" + scopes: + - email + - openid + state: randomStateString + jwtSecret: your-strong-jwt-secret | It's optional \ No newline at end of file diff --git a/goma.yml b/goma.yml index 57ac839..6a5450c 100644 --- a/goma.yml +++ b/goma.yml @@ -5,7 +5,7 @@ gateway: # Proxy read timeout readTimeout: 15 # Proxy idle timeout - idleTimeout: 60 + idleTimeout: 30 ## SSL Certificate file sslCertFile: '' #cert.pem ## SSL Private Key file