63 lines
3.9 KiB
Python
63 lines
3.9 KiB
Python
import sys, json
|
|
sys.path.insert(0, '.')
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
from omni import feeds
|
|
from omni.sources import Source
|
|
|
|
C = [
|
|
("debian_dsa", "security", "html", "https://www.debian.org/security/", "html_listing",
|
|
{"include_prefixes": ["/tracker/DSA-"]}),
|
|
("debian_dsa2", "security", "html", "https://www.debian.org/security/", "html_listing",
|
|
{"include_prefixes": ["/debian-security-announce/"]}),
|
|
("openwall_a", "security", "html", "https://www.openwall.com/lists/oss-security/", "html_listing",
|
|
{"include_prefixes": ["/lists/oss-security/2026/"]}),
|
|
("openwall_b", "security", "html", "https://www.openwall.com/lists/oss-security/", "html_listing",
|
|
{"include_prefixes": ["/lists/oss-security/"]}),
|
|
("t00ls", "forum", "html", "https://www.t00ls.com/", "html_listing",
|
|
{"include_prefixes": ["/articles-", "/Vuls-"]}),
|
|
("anquanke_html", "security", "html", "https://www.anquanke.com/", "html_listing",
|
|
{"include_prefixes": ["/post/id/"]}),
|
|
("secrss", "security", "html", "https://www.secrss.com/", "html_listing",
|
|
{"include_prefixes": ["/articles/"], "exclude_exact": ["/articles"]}),
|
|
("freebuf_root", "security", "html", "https://www.freebuf.com/", "html_listing",
|
|
{"include_prefixes": ["/articles/", "/news/"]}),
|
|
("freebuf_news", "security", "html", "https://www.freebuf.com/news", "html_listing",
|
|
{"include_prefixes": ["/articles/", "/news/"]}),
|
|
("freebuf_rss2", "security", "rss", "https://www.freebuf.com/rss", "rss", {}),
|
|
("freebuf_rss3", "security", "rss", "https://www.freebuf.com/feed/", "rss", {}),
|
|
("securitylab_a", "security", "rss", "https://www.securitylab.ru/rss/news.xml", "rss", {}),
|
|
("securitylab_b", "security", "rss", "https://www.securitylab.ru/rss/", "rss", {}),
|
|
("kaspersky_a", "security", "rss", "https://www.kaspersky.com/blog/feed/", "rss", {}),
|
|
("anti_malware_a", "security", "rss", "https://www.anti-malware.ru/rss/news", "rss", {}),
|
|
("xakep_tech", "security", "rss", "https://xakep.ru/feed/", "rss", {}),
|
|
("codeby_x", "forum", "html", "https://codeby.net/forums/", "xenforo_latest", {}),
|
|
("seebug_retry", "security", "rss", "https://paper.seebug.org/rss/", "rss", {}),
|
|
("ransomlook_retry", "abuse", "json", "https://www.ransomlook.io/api/recent", "generic_json", {}),
|
|
("ransomware_live_g", "abuse", "json", "https://api.ransomware.live/groups", "generic_json", {}),
|
|
("cybersecnews_retry", "security", "rss", "https://cybersecuritynews.com/feed/", "rss", {}),
|
|
("gbhackers_retry", "security", "rss", "https://gbhackers.com/feed/", "rss", {}),
|
|
("huntress_retry", "security", "rss", "https://www.huntress.com/blog/rss.xml", "rss", {}),
|
|
("scmedia_a", "security", "rss", "https://www.scmagazine.com/rss/news", "rss", {}),
|
|
("trendmicro_a", "security", "rss", "https://www.trendmicro.com/en_us/research.rss", "rss", {}),
|
|
("dragos_a", "security", "rss", "https://www.dragos.com/blog/feed/", "rss", {}),
|
|
("arcticwolf_a", "security", "rss", "https://arcticwolf.com/feed/", "rss", {}),
|
|
("zscaler_a", "security", "rss", "https://www.zscaler.com/blogs/rss.xml", "rss", {}),
|
|
("arch_a", "security", "rss", "https://security.archlinux.org/advisory/feed.atom", "rss", {}),
|
|
("gentoo_a", "security", "rss", "https://www.gentoo.org/glsa/feed.xml", "rss", {}),
|
|
("cisa_all_retry", "security", "rss", "https://www.cisa.gov/cybersecurity-advisories/all.xml", "rss", {}),
|
|
]
|
|
|
|
|
|
def run(t):
|
|
name, cat, kind, url, ad, extra = t
|
|
src = Source(name=name, category=cat, kind=kind, url=url, adapter=ad, tags=(), limit=5, extra=extra)
|
|
try:
|
|
items = feeds.fetch(src, 5)
|
|
return {"name": name, "n": len(items), "first": (items[0].title[:70] if items else "")}
|
|
except Exception as e:
|
|
return {"name": name, "n": 0, "err": str(e)[:80]}
|
|
|
|
|
|
with ThreadPoolExecutor(6) as ex:
|
|
for r in ex.map(run, C):
|
|
print(json.dumps(r, ensure_ascii=False)) |