PromucFlow_constructor/app/server
sneha122 6202719f47
feat: rate limiting added for connection creation during query execution (#28260)
## Description

This PR adds rate limiting on connection creations. Connections with
datasources are created in following situations:
- Whenever a query is executed, we create connection to datasource
- Whenever datasource structure is fetched
- Whenever trigger API is called in case of generate CRUD

In all above cases, if connection is successful, its context is saved in
cache, but when the connection is unsuccessful, connection context is
not saved in cache and connection creation is initiated every time. In
such case, we need to apply rate limiting on connection creation, so
that no brute force attacks can happen.

The code in this PR is written with the assumption that every time
connection creation fails, each plugin throws an error, whenever we get
this error, we consume token from bucket, if we exhaust this bucket, we
block this IP for next 5 minutes. This error is thrown in following
plugins:
- Postgres
- Oracle
- Redshift
- MsSQL

Other plugins like MySQL, SMTP, Elastic Search, ArangoDB, Redis, No such
error is thrown, which can be caught and rate limiting applied, hence
creating a different task to handle for these plugins. check #28259

Junit test cases will be covered in #27742 

#### PR fixes following issue(s)
Fixes #27738 , #27740 
> if no issue exists, please create an issue and ask the maintainers
about this first
>
>
#### Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video
>
>
#### Type of change
- New feature (non-breaking change which adds functionality)
>
>
>
## Testing
>
#### How Has This Been Tested?
> Please describe the tests that you ran to verify your changes. Also
list any relevant details for your test configuration.
> Delete anything that is not relevant
- [x] Manual
- [ ] JUnit
- [ ] Jest
- [ ] Cypress
>
>
#### Test Plan
> Add Testsmith test cases links that relate to this PR
>
>
#### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
>
>
>
## Checklist:
#### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed

---------

Co-authored-by: “sneha122” <“sneha@appsmith.com”>
2023-10-31 11:02:18 +05:30
..
.run chore: Upgrade to Spring Boot 3.0.1 (#19044) 2023-01-02 19:40:59 +07:00
appsmith-git chore: fix the jgit version updates in other places (#27558) 2023-09-22 13:16:04 +05:30
appsmith-interfaces feat: Add API to support partial import (#28357) 2023-10-30 14:46:13 +05:30
appsmith-plugins chore: JUnit test cases added for rate limit functions (#28399) 2023-10-26 21:40:55 +05:30
appsmith-server feat: rate limiting added for connection creation during query execution (#28260) 2023-10-31 11:02:18 +05:30
envs fix: Updated server set up docs to lower confusion from logs (#22926) 2023-05-03 10:17:34 +05:30
mongo-seed
reactive-caching chore(deps): Update pf4j to v3.10.0 (#27044) 2023-09-07 08:48:45 +05:30
scripts chore: Delete unused app/server/scripts/node 2023-08-08 06:00:48 +05:30
.gitignore
build.sh chore: Check Java version in build script (#19531) 2023-01-06 22:20:58 +05:30
buildpack-run.sh
docker-compose.yml chore: Use new Docker image for dev-time server (#25609) 2023-07-24 09:56:30 +05:30
pom.xml chore(deps): Update pf4j to v3.10.0 (#27044) 2023-09-07 08:48:45 +05:30
Procfile
README.md ci: Modularizing the Github actions workflow for maintainability (#16505) 2022-09-09 01:08:55 +05:30
system.properties chore: Upgrade to Spring Boot 3.0.1 (#19044) 2023-01-02 19:40:59 +07:00

Appsmith Server

This is the server-side repository for the Appsmith framework.

For details on setting up your development machine, please refer to this Setup Guide.