List all scheduled scans.
()
| 1316 | @schedule_app.command("create") |
| 1317 | def schedule_create( |
| 1318 | name: str = typer.Argument(..., help="Schedule name"), |
| 1319 | target: str = typer.Option(..., "--target", "-t", help="Target to scan"), |
| 1320 | frequency: str = typer.Option("daily", "--frequency", "-f", help="Frequency (hourly/daily/weekly/monthly)"), |
| 1321 | modules: str = typer.Option("dns,headers,tech", "--modules", "-m", help="Comma-separated modules"), |
| 1322 | ): |
| 1323 | """Create a scheduled scan.""" |
| 1324 | from modules.scheduler import ScanScheduler, ScheduleFrequency, ScheduleStorage |
| 1325 | |
| 1326 | scheduler = ScanScheduler() |
| 1327 | storage = ScheduleStorage() |
| 1328 | storage.attach_to_scheduler(scheduler) |
| 1329 | |
| 1330 | schedule = scheduler.create_schedule( |
| 1331 | name=name, |
| 1332 | target=target, |
| 1333 | modules=modules.split(","), |
| 1334 | frequency=ScheduleFrequency(frequency), |
| 1335 | ) |
| 1336 | |
| 1337 | storage.sync_from_scheduler(scheduler) |
| 1338 | |
| 1339 | console.print(f"[green]Created schedule:[/green] {schedule.id}") |
| 1340 | console.print(f" Name: {schedule.name}") |
| 1341 | console.print(f" Target: {schedule.target}") |
| 1342 | console.print(f" Frequency: {schedule.frequency.value}") |
| 1343 | console.print(f" Next run: {schedule.next_run}") |
| 1344 | |
| 1345 | |
| 1346 | @schedule_app.command("list") |
| 1347 | def schedule_list(): |
| 1348 | """List all scheduled scans.""" |
| 1349 | from modules.scheduler import ScanScheduler, ScheduleStorage |
| 1350 | |
| 1351 | scheduler = ScanScheduler() |
| 1352 | storage = ScheduleStorage() |
| 1353 | storage.attach_to_scheduler(scheduler) |
nothing calls this directly
no test coverage detected