Skip to content

Commit 030f726

Browse files
committed
Do not set rate visitor for non-eligible topics
1 parent 31d0c81 commit 030f726

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

docs/releases.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1374,8 +1374,9 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release
13741374

13751375
* Swedish (thanks to [@hellbown](https://hosted.weblate.org/user/hellbown/))
13761376

1377-
### ntfy server v2.11.0
1377+
### ntfy server v2.11.0 (UNRELEASED)
13781378

13791379
**Bug fixes + maintenance:**
13801380

13811381
* Re-add database index `idx_topic` to the `messages` table to fix performance issues on ntfy.sh (no ticket, big thanks to [@tcaputi](https://github.com/tcaputi) for finding this issue)
1382+
* Do not set rate visitor for non-eligible topics (no ticket)

server/server.go

+3
Original file line numberDiff line numberDiff line change
@@ -1499,6 +1499,9 @@ func (s *Server) maybeSetRateVisitors(r *http.Request, v *visitor, topics []*top
14991499
// - topic is not reserved, and v.user has write access
15001500
writableRateTopics := make([]*topic, 0)
15011501
for _, t := range topics {
1502+
if !util.Contains(eligibleRateTopics, t) {
1503+
continue
1504+
}
15021505
ownerUserID, err := s.userManager.ReservationOwner(t.ID)
15031506
if err != nil {
15041507
return err

server/server_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -2306,6 +2306,22 @@ func TestServer_SubscriberRateLimiting_Success(t *testing.T) {
23062306
require.Equal(t, 429, rr.Code)
23072307
}
23082308

2309+
func TestServer_SubscriberRateLimiting_NotWrongTopic(t *testing.T) {
2310+
c := newTestConfigWithAuthFile(t)
2311+
c.VisitorSubscriberRateLimiting = true
2312+
s := newTestServer(t, c)
2313+
2314+
subscriberFn := func(r *http.Request) {
2315+
r.RemoteAddr = "1.2.3.4"
2316+
}
2317+
rr := request(t, s, "GET", "/alerts,upAAAAAAAAAAAA,upBBBBBBBBBBBB/json?poll=1", "", nil, subscriberFn)
2318+
require.Equal(t, 200, rr.Code)
2319+
require.Equal(t, "", rr.Body.String())
2320+
require.Nil(t, s.topics["alerts"].rateVisitor)
2321+
require.Equal(t, "1.2.3.4", s.topics["upAAAAAAAAAAAA"].rateVisitor.ip.String())
2322+
require.Equal(t, "1.2.3.4", s.topics["upBBBBBBBBBBBB"].rateVisitor.ip.String())
2323+
}
2324+
23092325
func TestServer_SubscriberRateLimiting_NotEnabled_Failed(t *testing.T) {
23102326
c := newTestConfigWithAuthFile(t)
23112327
c.VisitorRequestLimitBurst = 3

0 commit comments

Comments
 (0)