Лента событий: убраны уведомления о сроках чужих сертификатов
После запуска (вместе с первой проверкой сроков) из ленты и главной уходят уведомления «Сертификат ключа организации…» по сертификатам не нашей организации и «Сертификат НРД/биржи в справочнике ИШ…» — на 9 их 22, все по чужим (Сбербанк и др.). Свои остаются. RuntimeConfig.RemoveNews. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -220,6 +220,37 @@ func certExpiryText(c NSDStoreCert, kind string, days int, until time.Time) (str
|
||||
who, until.Format("02.01.2006"))
|
||||
}
|
||||
|
||||
var certNewsSerialRe = regexp.MustCompile(`серийный номер ([0-9A-Fa-f]+)`)
|
||||
|
||||
// certNewsCleanup — убрать из ленты уведомления о сроках чужих сертификатов (до 22.10.2026 «своим» считался
|
||||
// любой сертификат участника в справочнике ИШ) и сертификатов НРД/биржи: остаются только по своим.
|
||||
func certNewsCleanup(rc *RuntimeConfig) {
|
||||
s := rc.Snapshot()
|
||||
if strings.TrimSpace(ourOrgINN(s)) == "" || len(s.NSDCerts.LastStore) == 0 {
|
||||
return // не знаем, чьи сертификаты наши, — ничего не трогаем
|
||||
}
|
||||
own := map[string]bool{}
|
||||
for _, c := range ownStoreCerts(s) {
|
||||
own[normSerial(c.Serial)] = true
|
||||
}
|
||||
n := rc.RemoveNews(func(it NewsItem) bool {
|
||||
if it.Kind != "system" || !strings.HasPrefix(it.Title, "Сертификат ") {
|
||||
return false
|
||||
}
|
||||
if strings.Contains(it.Title, "в справочнике ИШ") {
|
||||
return true // сертификаты НРД/биржи — больше не уведомляем
|
||||
}
|
||||
if !strings.HasPrefix(it.Title, "Сертификат ключа организации") {
|
||||
return false
|
||||
}
|
||||
m := certNewsSerialRe.FindStringSubmatch(it.Body)
|
||||
return m != nil && !own[normSerial(m[1])]
|
||||
})
|
||||
if n > 0 {
|
||||
log.Printf("cert-expiry: из ленты убрано %d уведомлений о сроках чужих сертификатов", n)
|
||||
}
|
||||
}
|
||||
|
||||
// StartCertExpiryWatch — проверка сроков раз в 6 часов (первая — через 3 минуты после запуска).
|
||||
func StartCertExpiryWatch(rc *RuntimeConfig) func() {
|
||||
stop := make(chan struct{})
|
||||
@@ -231,6 +262,7 @@ func StartCertExpiryWatch(rc *RuntimeConfig) func() {
|
||||
case <-stop:
|
||||
return
|
||||
case <-t.C:
|
||||
certNewsCleanup(rc)
|
||||
certExpiryTick(rc)
|
||||
t.Reset(6 * time.Hour)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user