Skip to content

Commit 0d3d6c4

Browse files
authored
Don't allow Cloudflare to mutate game requests (#819)
Thanks to @uhwot for discovering this incorrect configuration. Instead of patching production I decided to implement the logic in Refresh itself so it works for everyone, everywhere.
2 parents 71ced7d + 986721e commit 0d3d6c4

2 files changed

Lines changed: 5 additions & 0 deletions

File tree

Refresh.GameServer/Middlewares/DeflateMiddleware.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public void HandleRequest(ListenerContext context, Lazy<IDatabaseContext> databa
4242
context.ResponseHeaders["Vary"] = "Accept-Encoding";
4343
context.ResponseHeaders["Content-Encoding"] = "deflate";
4444

45+
// If the request is coming through Cloudflare, tell cloudflare not to touch the data
46+
if (context.RequestHeaders["Cf-Ray"] != null)
47+
context.ResponseHeaders["Cache-Control"] = "no-transform";
48+
4549
// Create a copy of our uncompressed data
4650
byte[] uncompressed = context.ResponseStream.ToArray();
4751

Refresh.sln.DotSettings

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ingame/@EntryIndexedValue">True</s:Boolean>
4242
<s:Boolean x:Key="/Default/UserDictionary/Words/=inmemory/@EntryIndexedValue">True</s:Boolean>
4343
<s:Boolean x:Key="/Default/UserDictionary/Words/=jvyden/@EntryIndexedValue">True</s:Boolean>
44+
<s:Boolean x:Key="/Default/UserDictionary/Words/=lbpbonsai/@EntryIndexedValue">True</s:Boolean>
4445
<s:Boolean x:Key="/Default/UserDictionary/Words/=lbpcool/@EntryIndexedValue">True</s:Boolean>
4546
<s:Boolean x:Key="/Default/UserDictionary/Words/=lbppsp/@EntryIndexedValue">True</s:Boolean>
4647
<s:Boolean x:Key="/Default/UserDictionary/Words/=lbpv/@EntryIndexedValue">True</s:Boolean>

0 commit comments

Comments
 (0)