From ec279a4fc579491e938f56f92e3269e6b3645e7e Mon Sep 17 00:00:00 2001 From: Domingo Dirutigliano Date: Sun, 2 Feb 2025 22:27:12 +0100 Subject: [PATCH] pushed edits --- .gitignore | 1 + backend/app.py | 13 ++++++++++--- backend/binsrc/classes/regex_rules.cpp | 9 +++++---- backend/binsrc/cppqueue | Bin 282672 -> 0 bytes backend/modules/nfregex/firegex.py | 8 +++----- backend/modules/nfregex/models.py | 3 +-- backend/routers/nfregex.py | 13 +++++-------- backend/utils/__init__.py | 2 +- frontend/src/js/models.ts | 1 - frontend/src/js/utils.tsx | 2 +- tests/benchmark.py | 2 +- tests/nf_test.py | 4 ++-- tests/utils/firegexapi.py | 4 ++-- 13 files changed, 32 insertions(+), 30 deletions(-) delete mode 100755 backend/binsrc/cppqueue diff --git a/.gitignore b/.gitignore index 78b2af6..625dec0 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ /frontend/dist/ /frontend/dist/** /backend/modules/cppqueue +/backend/binsrc/cppqueue /backend/modules/proxy docker-compose.yml firegex-compose.yml diff --git a/backend/app.py b/backend/app.py index 1ac8138..2f6f7e1 100644 --- a/backend/app.py +++ b/backend/app.py @@ -34,7 +34,14 @@ async def lifespan(app): yield await shutdown_main() -app = FastAPI(debug=DEBUG, redoc_url=None, lifespan=lifespan) +app = FastAPI( + debug=DEBUG, + redoc_url=None, + lifespan=lifespan, + docs_url="/api/docs", + title="Firegex API", + version=API_VERSION, +) utils.socketio = SocketManager(app, "/sock", socketio_path="") if DEBUG: @@ -183,9 +190,9 @@ if __name__ == '__main__': os.chdir(os.path.dirname(os.path.realpath(__file__))) uvicorn.run( "app:app", - host="::" if DEBUG else None, + host=None, #"::" if DEBUG else None, port=FIREGEX_PORT, - reload=DEBUG, + reload=False,#DEBUG, access_log=True, workers=1, # Multiple workers will cause a crash due to the creation # of multiple processes with separated memory diff --git a/backend/binsrc/classes/regex_rules.cpp b/backend/binsrc/classes/regex_rules.cpp index 2c2dc50..c335bf1 100644 --- a/backend/binsrc/classes/regex_rules.cpp +++ b/backend/binsrc/classes/regex_rules.cpp @@ -7,7 +7,6 @@ using namespace std; - #ifndef REGEX_FILTER_HPP #define REGEX_FILTER_HPP @@ -20,8 +19,8 @@ struct decoded_regex { }; struct regex_ruleset { - hs_database_t* hs_db; - char** regexes; + hs_database_t* hs_db = nullptr; + char** regexes = nullptr; }; decoded_regex decode_regex(string regex){ @@ -46,7 +45,7 @@ decoded_regex decode_regex(string regex){ } decoded_regex ruleset{ regex: expr, - direction: regex[1] == 'C'? CTOS : STOC, + direction: regex[1] == 'C' ? CTOS : STOC, is_case_sensitive: regex[0] == '1' }; return ruleset; @@ -66,9 +65,11 @@ class RegexRules{ void free_dbs(){ if (output_ruleset.hs_db != nullptr){ hs_free_database(output_ruleset.hs_db); + output_ruleset.hs_db = nullptr; } if (input_ruleset.hs_db != nullptr){ hs_free_database(input_ruleset.hs_db); + input_ruleset.hs_db = nullptr; } } diff --git a/backend/binsrc/cppqueue b/backend/binsrc/cppqueue deleted file mode 100755 index 84696ecc35574763c2913f0ff6d098718a563c61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282672 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�p9|Dnw?+2=BoPhdiZ8|zgXA` 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

c*ro_&@K%V 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 C->S S->C BOTH n_packets:number, diff --git a/frontend/src/js/utils.tsx b/frontend/src/js/utils.tsx index 159d6d6..ba84bcf 100644 --- a/frontend/src/js/utils.tsx +++ b/frontend/src/js/utils.tsx @@ -16,7 +16,7 @@ export const regex_ipv4 = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\. export const regex_ipv4_no_cidr = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" export const regex_port = "^([1-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])?$" export const regex_range_port = "^(([1-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(-([1-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])?)?)?$" -export const DEV_IP_BACKEND = "198.19.249.69:4444" +export const DEV_IP_BACKEND = "127.0.0.1:4444" export const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: Infinity diff --git a/tests/benchmark.py b/tests/benchmark.py index 0ff5a63..2f9d953 100644 --- a/tests/benchmark.py +++ b/tests/benchmark.py @@ -98,7 +98,7 @@ print(f"{results[0]} MB/s") #Add all the regexs for i in range(1,args.num_of_regexes+1): regex = base64.b64encode(bytes(secrets.token_hex(16).encode())).decode() - if not firegex.nf_add_regex(service_id,regex,"B",active=True,is_blacklist=True,is_case_sensitive=False): + if not firegex.nf_add_regex(service_id,regex,"B",active=True,is_case_sensitive=False): puts("Benchmark Failed: Coulnd't add the regex ✗", color=colors.red) exit_test(1) puts(f"Performance with {i} regex(s): ", color=colors.red, end='') diff --git a/tests/nf_test.py b/tests/nf_test.py index 7ff0405..efac378 100644 --- a/tests/nf_test.py +++ b/tests/nf_test.py @@ -67,7 +67,7 @@ else: #Add new regex secret = bytes(secrets.token_hex(16).encode()) regex = base64.b64encode(secret).decode() -if firegex.nf_add_regex(service_id,regex,"B",active=True,is_blacklist=True,is_case_sensitive=True): +if firegex.nf_add_regex(service_id,regex,"B",active=True,is_case_sensitive=True): puts(f"Sucessfully added regex {str(secret)} ✔", color=colors.green) else: puts("Test Failed: Coulnd't add the regex {str(secret)} ✗", color=colors.red) @@ -166,7 +166,7 @@ for r in firegex.nf_get_service_regexes(service_id): checkRegex(regex,should_work=False) #Add case insensitive regex -if(firegex.nf_add_regex(service_id,regex,"B",active=True,is_blacklist=True,is_case_sensitive=False)): +if(firegex.nf_add_regex(service_id,regex,"B",active=True, is_case_sensitive=False)): puts(f"Sucessfully added case insensitive regex {str(secret)} ✔", color=colors.green) else: puts(f"Test Failed: Coulnd't add the case insensitive regex {str(secret)} ✗", color=colors.red) diff --git a/tests/utils/firegexapi.py b/tests/utils/firegexapi.py index ad2930b..ce4a92c 100644 --- a/tests/utils/firegexapi.py +++ b/tests/utils/firegexapi.py @@ -121,9 +121,9 @@ class FiregexAPI: req = self.s.get(f"{self.address}api/nfregex/regex/{regex_id}/disable") return verify(req) - def nf_add_regex(self, service_id: str, regex: str, mode: str, active: bool, is_blacklist: bool, is_case_sensitive: bool): + def nf_add_regex(self, service_id: str, regex: str, mode: str, active: bool, is_case_sensitive: bool): req = self.s.post(f"{self.address}api/nfregex/regexes/add", - json={"service_id": service_id, "regex": regex, "mode": mode, "active": active, "is_blacklist": is_blacklist, "is_case_sensitive": is_case_sensitive}) + json={"service_id": service_id, "regex": regex, "mode": mode, "active": active, "is_case_sensitive": is_case_sensitive}) return verify(req) def nf_add_service(self, name: str, port: int, proto: str, ip_int: str):