Skip to content

Commit 8360ec0

Browse files
committed
update FastAPI to 0.134.0 and replace UJSONResponse with JSONResponse to support new fastapi version
1 parent 8476e35 commit 8360ec0

3 files changed

Lines changed: 35 additions & 35 deletions

File tree

dnsrecon/api.py

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from fastapi import FastAPI, Header, HTTPException, Query, Request, status
55
from fastapi.middleware.cors import CORSMiddleware
6-
from fastapi.responses import HTMLResponse, RedirectResponse, Response, UJSONResponse
6+
from fastapi.responses import HTMLResponse, JSONResponse, RedirectResponse, Response
77
from pydantic import BaseModel, Field
88
from slowapi import Limiter, _rate_limit_exceeded_handler
99
from slowapi.errors import RateLimitExceeded
@@ -165,7 +165,7 @@ async def bot() -> Response:
165165
166166
Returns a message when accessed by suspicious user agents.
167167
"""
168-
return UJSONResponse({'bot': 'These are not the DNS records you are looking for'})
168+
return JSONResponse({'bot': 'These are not the DNS records you are looking for'})
169169

170170

171171
class CapabilitiesResponse(BaseModel):
@@ -204,12 +204,12 @@ async def get_capabilities(request: Request) -> Response:
204204
'cache_snoop - DNS cache snooping',
205205
'nxdomain_hijack - NXDOMAIN hijacking check',
206206
]
207-
return UJSONResponse({'capabilities': capabilities})
207+
return JSONResponse({'capabilities': capabilities})
208208
except Exception as e:
209209
error_traceback = traceback.format_exc()
210210
print(f'Error in get_capabilities endpoint: {e!s}\n{error_traceback}')
211211

212-
return UJSONResponse(
212+
return JSONResponse(
213213
{
214214
'detail': f'An error occurred while retrieving capabilities: {e!s}',
215215
'error_type': type(e).__name__,
@@ -309,7 +309,7 @@ async def general_enumeration(
309309
if name and name != domain:
310310
subdomains.append(name)
311311

312-
return UJSONResponse(
312+
return JSONResponse(
313313
{
314314
'domain': domain,
315315
'records': [record.model_dump() for record in records],
@@ -324,7 +324,7 @@ async def general_enumeration(
324324
error_traceback = traceback.format_exc()
325325
print(f'Error in general_enumeration endpoint: {e!s}\n{error_traceback}')
326326

327-
return UJSONResponse(
327+
return JSONResponse(
328328
{
329329
'detail': f'An error occurred while processing your request: {e!s}',
330330
'error_type': type(e).__name__,
@@ -407,7 +407,7 @@ async def brute_force_domain(
407407
if name:
408408
subdomains.append(name)
409409

410-
return UJSONResponse(
410+
return JSONResponse(
411411
{'domain': domain, 'subdomains': list(set(subdomains)), 'records': [record.model_dump() for record in records]}
412412
)
413413

@@ -417,7 +417,7 @@ async def brute_force_domain(
417417
error_traceback = traceback.format_exc()
418418
print(f'Error in brute_force_domain endpoint: {e!s}\n{error_traceback}')
419419

420-
return UJSONResponse(
420+
return JSONResponse(
421421
{
422422
'detail': f'An error occurred while processing your request: {e!s}',
423423
'error_type': type(e).__name__,
@@ -485,15 +485,15 @@ async def brute_force_reverse(
485485

486486
records.append(DnsRecord(name=name, type='PTR', address=address))
487487

488-
return UJSONResponse({'ip_range': ip_range, 'records': [record.model_dump() for record in records]})
488+
return JSONResponse({'ip_range': ip_range, 'records': [record.model_dump() for record in records]})
489489

490490
except HTTPException as e:
491491
raise e
492492
except Exception as e:
493493
error_traceback = traceback.format_exc()
494494
print(f'Error in brute_force_reverse endpoint: {e!s}\n{error_traceback}')
495495

496-
return UJSONResponse(
496+
return JSONResponse(
497497
{
498498
'detail': f'An error occurred while processing your request: {e!s}',
499499
'error_type': type(e).__name__,
@@ -542,15 +542,15 @@ async def wildcard_check(
542542
if not wildcard_ips:
543543
wildcard_ips = []
544544

545-
return UJSONResponse({'domain': domain, 'wildcard_enabled': wildcard_enabled, 'wildcard_ips': wildcard_ips})
545+
return JSONResponse({'domain': domain, 'wildcard_enabled': wildcard_enabled, 'wildcard_ips': wildcard_ips})
546546

547547
except HTTPException as e:
548548
raise e
549549
except Exception as e:
550550
error_traceback = traceback.format_exc()
551551
print(f'Error in wildcard_check endpoint: {e!s}\n{error_traceback}')
552552

553-
return UJSONResponse(
553+
return JSONResponse(
554554
{
555555
'detail': f'An error occurred while processing your request: {e!s}',
556556
'error_type': type(e).__name__,
@@ -616,15 +616,15 @@ async def brute_force_srv(
616616

617617
srv_records.append(DnsRecord(name=name, type=record_type, address=address, target=target, port=port))
618618

619-
return UJSONResponse({'domain': domain, 'srv_records': [record.model_dump() for record in srv_records]})
619+
return JSONResponse({'domain': domain, 'srv_records': [record.model_dump() for record in srv_records]})
620620

621621
except HTTPException as e:
622622
raise e
623623
except Exception as e:
624624
error_traceback = traceback.format_exc()
625625
print(f'Error in brute_force_srv endpoint: {e!s}\n{error_traceback}')
626626

627-
return UJSONResponse(
627+
return JSONResponse(
628628
{
629629
'detail': f'An error occurred while processing your request: {e!s}',
630630
'error_type': type(e).__name__,
@@ -688,15 +688,15 @@ async def brute_force_tlds(
688688

689689
tld_records.append(DnsRecord(name=name, type=record_type, address=address))
690690

691-
return UJSONResponse({'domain': domain, 'tld_records': [record.model_dump() for record in tld_records]})
691+
return JSONResponse({'domain': domain, 'tld_records': [record.model_dump() for record in tld_records]})
692692

693693
except HTTPException as e:
694694
raise e
695695
except Exception as e:
696696
error_traceback = traceback.format_exc()
697697
print(f'Error in brute_force_tlds endpoint: {e!s}\n{error_traceback}')
698698

699-
return UJSONResponse(
699+
return JSONResponse(
700700
{
701701
'detail': f'An error occurred while processing your request: {e!s}',
702702
'error_type': type(e).__name__,
@@ -763,7 +763,7 @@ async def axfr_test(
763763

764764
records.append(DnsRecord(name=name, type=record_type, address=address, target=target))
765765

766-
return UJSONResponse(
766+
return JSONResponse(
767767
{
768768
'domain': domain,
769769
'zone_transfer_successful': zone_transfer_successful,
@@ -777,7 +777,7 @@ async def axfr_test(
777777
error_traceback = traceback.format_exc()
778778
print(f'Error in axfr_test endpoint: {e!s}\n{error_traceback}')
779779

780-
return UJSONResponse(
780+
return JSONResponse(
781781
{
782782
'detail': f'An error occurred while processing your request: {e!s}',
783783
'error_type': type(e).__name__,
@@ -836,15 +836,15 @@ async def caa_records(
836836

837837
caa_records_list.append(DnsRecord(name=name, type=record_type, address=value))
838838

839-
return UJSONResponse({'domain': domain, 'caa_records': [record.model_dump() for record in caa_records_list]})
839+
return JSONResponse({'domain': domain, 'caa_records': [record.model_dump() for record in caa_records_list]})
840840

841841
except HTTPException as e:
842842
raise e
843843
except Exception as e:
844844
error_traceback = traceback.format_exc()
845845
print(f'Error in caa_records endpoint: {e!s}\n{error_traceback}')
846846

847-
return UJSONResponse(
847+
return JSONResponse(
848848
{
849849
'detail': f'An error occurred while processing your request: {e!s}',
850850
'error_type': type(e).__name__,
@@ -921,15 +921,15 @@ async def cache_snoop(
921921

922922
cached_records.append(DnsRecord(name=name, type=record_type, address=address))
923923

924-
return UJSONResponse({'nameserver': nameserver, 'cached_records': [record.model_dump() for record in cached_records]})
924+
return JSONResponse({'nameserver': nameserver, 'cached_records': [record.model_dump() for record in cached_records]})
925925

926926
except HTTPException as e:
927927
raise e
928928
except Exception as e:
929929
error_traceback = traceback.format_exc()
930930
print(f'Error in cache_snoop endpoint: {e!s}\n{error_traceback}')
931931

932-
return UJSONResponse(
932+
return JSONResponse(
933933
{
934934
'detail': f'An error occurred while processing your request: {e!s}',
935935
'error_type': type(e).__name__,
@@ -993,15 +993,15 @@ async def zone_walk(
993993

994994
zone_walk_records.append(DnsRecord(name=name, type=record_type, address=address, target=target))
995995

996-
return UJSONResponse({'domain': domain, 'zone_walk_records': [record.model_dump() for record in zone_walk_records]})
996+
return JSONResponse({'domain': domain, 'zone_walk_records': [record.model_dump() for record in zone_walk_records]})
997997

998998
except HTTPException as e:
999999
raise e
10001000
except Exception as e:
10011001
error_traceback = traceback.format_exc()
10021002
print(f'Error in zone_walk endpoint: {e!s}\n{error_traceback}')
10031003

1004-
return UJSONResponse(
1004+
return JSONResponse(
10051005
{
10061006
'detail': f'An error occurred while processing your request: {e!s}',
10071007
'error_type': type(e).__name__,
@@ -1057,15 +1057,15 @@ async def bind_version(
10571057
version_detected = bool(version_info)
10581058
bind_version = version_info if version_info else 'Version not detected'
10591059

1060-
return UJSONResponse({'nameserver': nameserver, 'bind_version': bind_version, 'version_detected': version_detected})
1060+
return JSONResponse({'nameserver': nameserver, 'bind_version': bind_version, 'version_detected': version_detected})
10611061

10621062
except HTTPException as e:
10631063
raise e
10641064
except Exception as e:
10651065
error_traceback = traceback.format_exc()
10661066
print(f'Error in bind_version endpoint: {e!s}\n{error_traceback}')
10671067

1068-
return UJSONResponse(
1068+
return JSONResponse(
10691069
{
10701070
'detail': f'An error occurred while processing your request: {e!s}',
10711071
'error_type': type(e).__name__,
@@ -1121,15 +1121,15 @@ async def recursive_check(
11211121
recursive_enabled = bool(recursion_result)
11221122
test_result = recursion_result if recursion_result else 'Recursion not enabled or test failed'
11231123

1124-
return UJSONResponse({'nameserver': nameserver, 'recursive_enabled': recursive_enabled, 'test_result': test_result})
1124+
return JSONResponse({'nameserver': nameserver, 'recursive_enabled': recursive_enabled, 'test_result': test_result})
11251125

11261126
except HTTPException as e:
11271127
raise e
11281128
except Exception as e:
11291129
error_traceback = traceback.format_exc()
11301130
print(f'Error in recursive_check endpoint: {e!s}\n{error_traceback}')
11311131

1132-
return UJSONResponse(
1132+
return JSONResponse(
11331133
{
11341134
'detail': f'An error occurred while processing your request: {e!s}',
11351135
'error_type': type(e).__name__,
@@ -1181,15 +1181,15 @@ async def nxdomain_hijack(
11811181
hijack_detected = bool(hijack_result)
11821182
hijack_details = hijack_result if hijack_result else 'No NXDOMAIN hijacking detected'
11831183

1184-
return UJSONResponse({'nameserver': nameserver, 'hijack_detected': hijack_detected, 'hijack_details': hijack_details})
1184+
return JSONResponse({'nameserver': nameserver, 'hijack_detected': hijack_detected, 'hijack_details': hijack_details})
11851185

11861186
except HTTPException as e:
11871187
raise e
11881188
except Exception as e:
11891189
error_traceback = traceback.format_exc()
11901190
print(f'Error in nxdomain_hijack endpoint: {e!s}\n{error_traceback}')
11911191

1192-
return UJSONResponse(
1192+
return JSONResponse(
11931193
{
11941194
'detail': f'An error occurred while processing your request: {e!s}',
11951195
'error_type': type(e).__name__,

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ dependencies = [
1919
"netaddr",
2020
"httpx==0.28.1",
2121
"loguru",
22-
"fastapi==0.133.1",
22+
"fastapi==0.134.0",
2323
"uvicorn[standard]==0.41.0",
2424
"slowapi==0.1.9",
2525
"stamina==25.2.0",

uv.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)