Initial commit (history squashed)
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				Build Test Deploy / authority-container (push) Has been cancelled
				
			
		
			
				
	
				Build Test Deploy / docs (push) Has been cancelled
				
			
		
			
				
	
				Build Test Deploy / deploy (push) Has been cancelled
				
			
		
			
				
	
				Build Test Deploy / build-test (push) Has been cancelled
				
			
		
			
				
	
				Docs CI / lint-and-preview (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	Build Test Deploy / authority-container (push) Has been cancelled
				
			Build Test Deploy / docs (push) Has been cancelled
				
			Build Test Deploy / deploy (push) Has been cancelled
				
			Build Test Deploy / build-test (push) Has been cancelled
				
			Docs CI / lint-and-preview (push) Has been cancelled
				
			This commit is contained in:
		
							
								
								
									
										30
									
								
								src/StellaOps.Feedser.Source.Vndr.Cisco/AGENTS.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/StellaOps.Feedser.Source.Vndr.Cisco/AGENTS.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| # AGENTS | ||||
| ## Role | ||||
| Implement the Cisco security advisory connector to ingest Cisco PSIRT bulletins for Feedser. | ||||
|  | ||||
| ## Scope | ||||
| - Identify Cisco advisory feeds/APIs (XML, HTML, JSON) and define incremental fetch strategy. | ||||
| - Implement fetch/cursor pipeline with retry/backoff and document dedupe. | ||||
| - Parse advisories to extract summary, affected products, Cisco bug IDs, CVEs, mitigation guidance. | ||||
| - Map advisories into canonical `Advisory` records with aliases, references, affected packages, and range primitives (e.g., SemVer/IOS version metadata). | ||||
| - Provide deterministic fixtures and regression tests. | ||||
|  | ||||
| ## Participants | ||||
| - `Source.Common`, `Storage.Mongo`, `Feedser.Models`, `Feedser.Testing`. | ||||
|  | ||||
| ## Interfaces & Contracts | ||||
| - Job kinds: `cisco:fetch`, `cisco:parse`, `cisco:map`. | ||||
| - Persist upstream metadata (e.g., `Last-Modified`, `advisoryId`). | ||||
| - Alias set should include Cisco advisory IDs, bug IDs, and CVEs. | ||||
|  | ||||
| ## In/Out of scope | ||||
| In scope: Cisco PSIRT advisories, range primitive coverage. | ||||
| Out of scope: Non-security Cisco release notes. | ||||
|  | ||||
| ## Observability & Security Expectations | ||||
| - Log fetch/mapping statistics, respect Cisco API rate limits, sanitise HTML.  | ||||
| - Handle authentication tokens if API requires them. | ||||
|  | ||||
| ## Tests | ||||
| - Add `StellaOps.Feedser.Source.Vndr.Cisco.Tests` with canned fixtures for fetch/parse/map.  | ||||
| - Snapshot canonical advisories and support fixture regeneration. | ||||
							
								
								
									
										29
									
								
								src/StellaOps.Feedser.Source.Vndr.Cisco/Class1.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/StellaOps.Feedser.Source.Vndr.Cisco/Class1.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| using System; | ||||
| using System.Threading; | ||||
| using System.Threading.Tasks; | ||||
| using StellaOps.Plugin; | ||||
|  | ||||
| namespace StellaOps.Feedser.Source.Vndr.Cisco; | ||||
|  | ||||
| public sealed class VndrCiscoConnectorPlugin : IConnectorPlugin | ||||
| { | ||||
|     public string Name => "vndr-cisco"; | ||||
|  | ||||
|     public bool IsAvailable(IServiceProvider services) => true; | ||||
|  | ||||
|     public IFeedConnector Create(IServiceProvider services) => new StubConnector(Name); | ||||
|  | ||||
|     private sealed class StubConnector : IFeedConnector | ||||
|     { | ||||
|         public StubConnector(string sourceName) => SourceName = sourceName; | ||||
|  | ||||
|         public string SourceName { get; } | ||||
|  | ||||
|         public Task FetchAsync(IServiceProvider services, CancellationToken cancellationToken) => Task.CompletedTask; | ||||
|  | ||||
|         public Task ParseAsync(IServiceProvider services, CancellationToken cancellationToken) => Task.CompletedTask; | ||||
|  | ||||
|         public Task MapAsync(IServiceProvider services, CancellationToken cancellationToken) => Task.CompletedTask; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -0,0 +1,16 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>net10.0</TargetFramework> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <Nullable>enable</Nullable> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="../StellaOps.Plugin/StellaOps.Plugin.csproj" /> | ||||
|  | ||||
|     <ProjectReference Include="../StellaOps.Feedser.Source.Common/StellaOps.Feedser.Source.Common.csproj" /> | ||||
|     <ProjectReference Include="../StellaOps.Feedser.Models/StellaOps.Feedser.Models.csproj" /> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
|  | ||||
							
								
								
									
										10
									
								
								src/StellaOps.Feedser.Source.Vndr.Cisco/TASKS.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/StellaOps.Feedser.Source.Vndr.Cisco/TASKS.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| # TASKS | ||||
| | Task | Owner(s) | Depends on | Notes | | ||||
| |---|---|---|---| | ||||
| |FEEDCONN-CISCO-02-001 Confirm Cisco PSIRT data source|BE-Conn-Cisco|Research|**DOING** – 2025-10-11: Logged public PSIRT RSS and openVuln Security Advisories API docs; need to confirm API key workflow, pagination, throttling, and select primary ingestion path.| | ||||
| |FEEDCONN-CISCO-02-002 Fetch pipeline & state persistence|BE-Conn-Cisco|Source.Common, Storage.Mongo|**TODO** – Implement fetch job with cursor/backoff, persist raw documents, dedupe repeated advisories.| | ||||
| |FEEDCONN-CISCO-02-003 Parser & DTO implementation|BE-Conn-Cisco|Source.Common|**TODO** – Parse advisories, extract Cisco bug IDs, product families, version ranges, CVEs, references.| | ||||
| |FEEDCONN-CISCO-02-004 Canonical mapping & range primitives|BE-Conn-Cisco|Models|**TODO** – Map advisories into canonical records with aliases, references, range primitives (SemVer/IOS/ASA versions). Sync scheme decisions and deadlines via `../StellaOps.Feedser.Merge/RANGE_PRIMITIVES_COORDINATION.md`.| | ||||
| |FEEDCONN-CISCO-02-005 Deterministic fixtures & tests|QA|Testing|**TODO** – Add fetch/parse/map regression tests; support `UPDATE_CISCO_FIXTURES=1`.| | ||||
| |FEEDCONN-CISCO-02-006 Telemetry & documentation|DevEx|Docs|**TODO** – Add logging/metrics, document connector usage, update backlog when ready.| | ||||
| |FEEDCONN-CISCO-02-007 API selection decision memo|BE-Conn-Cisco|Research|**TODO** – Produce recommendation on RSS vs openVuln (scope, auth, SLAs) and share with Merge/Storage for cursor alignment.| | ||||
		Reference in New Issue
	
	Block a user