MCPcopy Create free account
hub / github.com/TheSecuredAnalyst/security-suite / execute_scan

Function execute_scan

api/routers/scans.py:178–234  ·  view source on GitHub ↗

Execute a scan in the background. Args: scan_id: Scan identifier

(scan_id: str)

Source from the content-addressed store, hash-verified

176async def execute_scan(scan_id: str) -> None:
177 """Execute a scan in the background.
178
179 Args:
180 scan_id: Scan identifier
181 """
182 try:
183 scan = scans_db[scan_id]
184 scan["status"] = "running"
185 scan["started_at"] = datetime.now(timezone.utc)
186
187 logger.info(f"Starting scan {scan_id} for target {scan['target']}")
188
189 # Import modules dynamically
190 from modules.osint import (
191 DNSEnumerator,
192 HeaderAnalyzer,
193 PortScanner,
194 SubdomainScanner,
195 TechDetector,
196 WhoisLookup,
197 )
198 from modules.webscanner import (
199 DirectoryBruteforcer,
200 SQLiScanner,
201 SSLAnalyzer,
202 WebCrawler,
203 XSSScanner,
204 )
205
206 target = Target.from_string(scan["target"])
207 module_map = {
208 "dns": DNSEnumerator(),
209 "whois": WhoisLookup(),
210 "subdomains": SubdomainScanner(),
211 "headers": HeaderAnalyzer(),
212 "tech": TechDetector(),
213 "ports": PortScanner(),
214 "crawler": WebCrawler(max_pages=50),
215 "xss": XSSScanner(),
216 "sqli": SQLiScanner(),
217 "dirs": DirectoryBruteforcer(),
218 "ssl": SSLAnalyzer(),
219 }
220
221 # Run selected modules
222 for module_name in scan["modules"]:
223 if module_name in module_map:
224 try:
225 result = await module_map[module_name].run(target)
226 scan["findings"].extend(result.findings)
227 logger.info(f"Module {module_name} found {len(result.findings)} findings")
228 except Exception as e:
229 logger.error(f"Error running module {module_name}: {e}")
230
231 scan["status"] = "completed"
232 scan["completed_at"] = datetime.now(timezone.utc)
233 logger.info(f"Scan {scan_id} completed with {len(scan['findings'])} findings")
234
235 except Exception as e:

Callers

nothing calls this directly

Calls 13

DNSEnumeratorClass · 0.90
WhoisLookupClass · 0.90
SubdomainScannerClass · 0.90
HeaderAnalyzerClass · 0.90
TechDetectorClass · 0.90
PortScannerClass · 0.90
WebCrawlerClass · 0.90
XSSScannerClass · 0.90
SQLiScannerClass · 0.90
SSLAnalyzerClass · 0.90
from_stringMethod · 0.80

Tested by

no test coverage detected