Skip to content

Commit bd5916e

Browse files
committed
Avoid sending filter notification emails on staging
1 parent 963c399 commit bd5916e

2 files changed

Lines changed: 35 additions & 32 deletions

File tree

src/Service/FilterListWorker.php

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public function __construct(
4646
private DownloadManager $downloadManager,
4747
private string $mailFromEmail,
4848
private UrlGeneratorInterface $urlGenerator,
49+
private string $packagistHost,
4950
) {
5051
}
5152

@@ -90,39 +91,41 @@ public function process(Job $job, SignalHandler $signal): array
9091

9192
$this->malwarePackageVersionUpdateListener->flushChangesToPackages();
9293

93-
/** @var array<string, list<FilterListEntry>> $newEntriesByPackage */
94-
$newEntriesByPackage = [];
95-
foreach ($new as $entry) {
96-
$newEntriesByPackage[$entry->getPackageName()][] = $entry;
97-
}
98-
99-
foreach ($newEntriesByPackage as $packageName => $entries) {
100-
$package = $this->doctrine->getRepository(Package::class)->findOneBy(['name' => $packageName]);
101-
$downloads = $package ? $this->downloadManager->getTotalDownloads($package->getId()) : 0;
102-
$packageUrl = $this->urlGenerator->generate('view_package', ['name' => $packageName], UrlGeneratorInterface::ABSOLUTE_URL);
103-
104-
if ($downloads >= 10_000) {
105-
$subject = '[URGENT] Filter list entry added for high-download package '.$packageName.' ('.number_format($downloads).' downloads)';
106-
$body = 'A new filter list entry has been added for '.$packageName.' which has '.number_format($downloads)." total downloads. This requires urgent attention.\n\n";
107-
} else {
108-
$subject = 'Filter list entry added for '.$packageName;
109-
$body = 'A new filter list entry has been added for '.$packageName.".\n\n";
94+
if ($this->packagistHost === 'packagist.org') {
95+
/** @var array<string, list<FilterListEntry>> $newEntriesByPackage */
96+
$newEntriesByPackage = [];
97+
foreach ($new as $entry) {
98+
$newEntriesByPackage[$entry->getPackageName()][] = $entry;
11099
}
111100

112-
$body .= 'Package: '.$packageUrl."\n"
113-
.'List: '.$list->value."\n"
114-
.'Versions: '.implode(', ', array_map(fn (FilterListEntry $e) => $e->getVersion(), $entries))."\n"
115-
.'Reason: '.($entries[0]->getReason() ?? 'N/A')."\n"
116-
.'Link: '.($entries[0]->getLink() ?? 'N/A')."\n";
117-
118-
$message = new Email()
119-
->subject($subject)
120-
->from(new Address($this->mailFromEmail))
121-
->to($this->mailFromEmail)
122-
->text($body)
123-
;
124-
$message->getHeaders()->addTextHeader('X-Auto-Response-Suppress', 'OOF, DR, RN, NRN, AutoReply');
125-
$this->mailer->send($message);
101+
foreach ($newEntriesByPackage as $packageName => $entries) {
102+
$package = $this->doctrine->getRepository(Package::class)->findOneBy(['name' => $packageName]);
103+
$downloads = $package ? $this->downloadManager->getTotalDownloads($package->getId()) : 0;
104+
$packageUrl = $this->urlGenerator->generate('view_package', ['name' => $packageName], UrlGeneratorInterface::ABSOLUTE_URL);
105+
106+
if ($downloads >= 10_000) {
107+
$subject = '[URGENT] Filter list entry added for high-download package '.$packageName.' ('.number_format($downloads).' downloads)';
108+
$body = 'A new filter list entry has been added for '.$packageName.' which has '.number_format($downloads)." total downloads. This requires urgent attention.\n\n";
109+
} else {
110+
$subject = 'Filter list entry added for '.$packageName;
111+
$body = 'A new filter list entry has been added for '.$packageName.".\n\n";
112+
}
113+
114+
$body .= 'Package: '.$packageUrl."\n"
115+
.'List: '.$list->value."\n"
116+
.'Versions: '.implode(', ', array_map(fn (FilterListEntry $e) => $e->getVersion(), $entries))."\n"
117+
.'Reason: '.($entries[0]->getReason() ?? 'N/A')."\n"
118+
.'Link: '.($entries[0]->getLink() ?? 'N/A')."\n";
119+
120+
$message = new Email()
121+
->subject($subject)
122+
->from(new Address($this->mailFromEmail))
123+
->to($this->mailFromEmail)
124+
->text($body)
125+
;
126+
$message->getHeaders()->addTextHeader('X-Auto-Response-Suppress', 'OOF, DR, RN, NRN, AutoReply');
127+
$this->mailer->send($message);
128+
}
126129
}
127130

128131
$this->locker->unlockFilterList(self::FILTER_LIST_WORKER_RUN);

tests/FilterListWorkerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ protected function setUp(): void
5555
$this->downloadManager = $this->createStub(DownloadManager::class);
5656
$this->urlGenerator = $this->createStub(UrlGeneratorInterface::class);
5757
$doctrine = $this->createStub(ManagerRegistry::class);
58-
$this->worker = new FilterListWorker($this->locker, new NullLogger(), $doctrine, [FilterLists::AIKIDO_MALWARE->value => $this->filterList], new FilterListResolver(), new FilterListEntryUpdateListener($doctrine), $this->mailer, $this->downloadManager, 'test@example.com', $this->urlGenerator);
58+
$this->worker = new FilterListWorker($this->locker, new NullLogger(), $doctrine, [FilterLists::AIKIDO_MALWARE->value => $this->filterList], new FilterListResolver(), new FilterListEntryUpdateListener($doctrine), $this->mailer, $this->downloadManager, 'test@example.com', $this->urlGenerator, 'packagist.org');
5959

6060
$this->em = $this->createMock(EntityManager::class);
6161

0 commit comments

Comments
 (0)