From 8054d68f7949e11132cb4bd12a2638d7589c5ccd Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 10 Sep 2024 18:49:25 +0200 Subject: [PATCH 1/2] feat(rate): add customizable X-Powered-By header --- rate/handler.go | 5 +++++ rate/proxy-config.example.json | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/rate/handler.go b/rate/handler.go index 5cbfff3..7ab0b59 100644 --- a/rate/handler.go +++ b/rate/handler.go @@ -25,6 +25,7 @@ type Handler struct { Port int `json:"port"` ProxyTarget string `json:"proxy_target"` Debug bool `json:"debug"` + PoweredBy string `json:"powered_by"` limiter *Limiter proxy *httputil.ReverseProxy @@ -32,6 +33,10 @@ type Handler struct { } func (hn *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + if hn.PoweredBy != "" { + w.Header().Set("X-Powered-By", hn.PoweredBy) + } + // all public api endpoints are prefixed with this if !strings.HasPrefix(r.URL.Path, "/api/v2") { w.WriteHeader(http.StatusNotFound) diff --git a/rate/proxy-config.example.json b/rate/proxy-config.example.json index 1d2d6af..427acef 100644 --- a/rate/proxy-config.example.json +++ b/rate/proxy-config.example.json @@ -1,5 +1,6 @@ { "port": 5003, "proxy_target": "http://localhost:5000", - "debug": true + "debug": true, + "powered_by": "5 gay rats" } From 2323810b06ad57771c05341a199158d5ebaf9a10 Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 10 Sep 2024 18:52:13 +0200 Subject: [PATCH 2/2] feat(backend): add option to disable postgres connection pooling --- Foxnouns.Backend/Config.cs | 1 + Foxnouns.Backend/Database/DatabaseContext.cs | 1 + Foxnouns.Backend/config.example.ini | 2 ++ 3 files changed, 4 insertions(+) diff --git a/Foxnouns.Backend/Config.cs b/Foxnouns.Backend/Config.cs index 96d724b..0781443 100644 --- a/Foxnouns.Backend/Config.cs +++ b/Foxnouns.Backend/Config.cs @@ -36,6 +36,7 @@ public class Config public class DatabaseConfig { public string Url { get; init; } = string.Empty; + public bool? EnablePooling { get; init; } public int? Timeout { get; init; } public int? MaxPoolSize { get; init; } } diff --git a/Foxnouns.Backend/Database/DatabaseContext.cs b/Foxnouns.Backend/Database/DatabaseContext.cs index 8ce0d6f..70477f2 100644 --- a/Foxnouns.Backend/Database/DatabaseContext.cs +++ b/Foxnouns.Backend/Database/DatabaseContext.cs @@ -26,6 +26,7 @@ public class DatabaseContext : DbContext { var connString = new NpgsqlConnectionStringBuilder(config.Database.Url) { + Pooling = config.Database.EnablePooling ?? true, Timeout = config.Database.Timeout ?? 5, MaxPoolSize = config.Database.MaxPoolSize ?? 50, MinPoolSize = 0, diff --git a/Foxnouns.Backend/config.example.ini b/Foxnouns.Backend/config.example.ini index 941c25c..7522cba 100644 --- a/Foxnouns.Backend/config.example.ini +++ b/Foxnouns.Backend/config.example.ini @@ -30,6 +30,8 @@ MetricsPort = 5001 [Database] ; The database URL in ADO.NET format. Url = "Host=localhost;Database=foxnouns_net;Username=pronouns;Password=pronouns" +; Whether to enable connection pooling. This should be turned off if using pgbouncer. Defaults to true. +EnablePooling = true ; The timeout for opening new connections. Defaults to 5. Timeout = 5 ; The maximum number of open connections. Defaults to 50.