fix(feed): widen source_ref from VARCHAR(100) to TEXT #1
Reference in New Issue
Block a user
Delete Branch "develop"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
source_refcolumn onthreat_iocwasVARCHAR(100), causingvalue too long for type character varying(100)errors during IOC feed refreshTEXT(no length limit), consistent with thedescriptioncolumnTest plan
SUCCESSstatus and no column-too-long errors in logsAdds automated daily IOC ingestion from three external threat feeds: - AlienVault OTX: subscribed pulses + ATM-keyword searches (requires API key) - MalwareBazaar (abuse.ch): ATM-tagged malware samples, no key required - ThreatFox (abuse.ch): ATM malware family IOCs, no key required Backend: - IocFeedRun entity + V6 Flyway migration (ioc_feed_run table) - OtxFeedClient / MalwareBazaarFeedClient / ThreatFoxFeedClient - IocFeedService: upsert dedup + @Scheduled daily 03:00 refresh - IocFeedController: GET /status, GET /runs, POST /refresh, POST /refresh/{feed} - ThreatIoc.IocSource enum extended: OTX, MALWARE_BAZAAR, THREAT_FOX Frontend: - IocFeeds.svelte: feed status cards, run history table, manual refresh - App.svelte: IOC Feeds nav item (📡), version string removed from sidebar - api.ts: getFeedStatus, getFeedRuns, refreshAllFeeds, refreshFeed Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>- IocFeedRunRepository: add @Param("feedName") to countRunning JPQL query (missing binding silently crashed background threads) - IocFeedController: uncaught exception handler on feed threads so failures appear in logs instead of disappearing silently - MalwareBazaarFeedClient/ThreatFoxFeedClient: abuse.ch now requires API key (auth.abuse.ch); add Auth-Key header + isConfigured() skip guard - application.properties: add aria.feed.malware-bazaar.api-key and aria.feed.threat-fox.api-key properties Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>Root cause: IocFeeds.svelte called feeds.find() on a Map (backend returned Map<String,Object> not List) → reactive statement crash → entire Svelte tree broken, all sidebar nav dead. Backend: - /feeds/status now returns List<Map> with feedName/configured/enabled/ lastRunAt/lastRunStatus/lastIocsAdded/lastIocsUpdated fields - /feeds/runs now returns full Page<IocFeedRun> (not stripped .getContent()) - IocFeedService.isConfigured(feedName) added for per-feed key check - Feed order fixed to [OTX, MALWARE_BAZAAR, THREAT_FOX] (deterministic) Frontend: - loadFeeds: Array.isArray guard prevents crash if shape is ever wrong - loadRuns: safe fallback for both Page and plain-array responses - api.ts refreshFeed URL fixed: /feeds/refresh/{name} not /feeds/{name}/refresh - IocFeedStatus type: added lastIocsUpdated - IocFeeds.svelte: Refresh All moved from header to toolbar; all buttons use canonical btn/btn-primary/btn-secondary/btn-sm classes; pollInterval now calls pollStatus (status-only poll) not full refresh trigger Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>