@@ -134,6 +134,15 @@ async def find_discord_tokens(request: MystbinRequest, pastes: payloads.PastePut
134134 return tokens or None
135135
136136
137+ def respect_dnt (request : MystbinRequest ):
138+ if request .headers .get ("DNT" , None ) == "1" :
139+ return "DNT"
140+
141+ if request .app .config ["paste" ]["log_ip" ]:
142+ return request .headers .get ("X-Forwarded-For" , request .client .host )
143+
144+ return None
145+
137146desc = f"""Post a paste.
138147
139148This endpoint falls under the `postpastes` ratelimit bucket.
@@ -177,9 +186,7 @@ async def put_pastes(
177186 expires = payload .expires ,
178187 author = author ,
179188 password = payload .password ,
180- origin_ip = request .headers .get ("x-forwarded-for" , request .client .host )
181- if request .app .config ["paste" ]["log_ip" ]
182- else None ,
189+ origin_ip = respect_dnt (request )
183190 )
184191
185192 paste ["notice" ] = notice
@@ -260,9 +267,7 @@ async def _partial(target, spool: UploadFile):
260267 expires = payload .expires ,
261268 author = author ,
262269 password = payload .password ,
263- origin_ip = request .headers .get ("x-forwarded-for" , request .client .host )
264- if request .app .config ["paste" ]["log_ip" ]
265- else None ,
270+ origin_ip = respect_dnt (request )
266271 )
267272
268273 paste ["notice" ] = notice
@@ -512,8 +517,6 @@ async def compat_create_paste(request: MystbinRequest):
512517 paste : Record = await request .app .state .db .put_paste (
513518 paste_id = generate_paste_id (),
514519 pages = [payloads .PasteFile (filename = "file.txt" , content = content .decode ("utf8" ))],
515- origin_ip = request .headers .get ("x-forwarded-for" , request .client .host )
516- if request .app .config ["paste" ]["log_ip" ]
517- else None ,
520+ origin_ip = respect_dnt (request )
518521 )
519522 return UJSONResponse ({"key" : paste ["id" ]})
0 commit comments