mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-12 10:18:06 -06:00
[feature] request blocking by http headers (#2409)
This commit is contained in:
parent
07bd848028
commit
8ebb7775a3
36 changed files with 2561 additions and 81 deletions
|
|
@ -163,6 +163,7 @@ type Configuration struct {
|
|||
AdvancedThrottlingRetryAfter time.Duration `name:"advanced-throttling-retry-after" usage:"Retry-After duration response to send for throttled requests."`
|
||||
AdvancedSenderMultiplier int `name:"advanced-sender-multiplier" usage:"Multiplier to use per cpu for batching outgoing fedi messages. 0 or less turns batching off (not recommended)."`
|
||||
AdvancedCSPExtraURIs []string `name:"advanced-csp-extra-uris" usage:"Additional URIs to allow when building content-security-policy for media + images."`
|
||||
AdvancedHeaderFilterMode string `name:"advanced-header-filter-mode" usage:"Set incoming request header filtering mode."`
|
||||
|
||||
// HTTPClient configuration vars.
|
||||
HTTPClient HTTPClientConfiguration `name:"http-client"`
|
||||
|
|
|
|||
|
|
@ -17,10 +17,16 @@
|
|||
|
||||
package config
|
||||
|
||||
// Instance federation mode determines how this
|
||||
// instance federates with others (if at all).
|
||||
const (
|
||||
// Instance federation mode determines how this
|
||||
// instance federates with others (if at all).
|
||||
InstanceFederationModeBlocklist = "blocklist"
|
||||
InstanceFederationModeAllowlist = "allowlist"
|
||||
InstanceFederationModeDefault = InstanceFederationModeBlocklist
|
||||
|
||||
// Request header filter mode determines how
|
||||
// this instance will perform request filtering.
|
||||
RequestHeaderFilterModeAllow = "allow"
|
||||
RequestHeaderFilterModeBlock = "block"
|
||||
RequestHeaderFilterModeDisabled = ""
|
||||
)
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ var Defaults = Configuration{
|
|||
AdvancedThrottlingRetryAfter: time.Second * 30,
|
||||
AdvancedSenderMultiplier: 2, // 2 senders per CPU
|
||||
AdvancedCSPExtraURIs: []string{},
|
||||
AdvancedHeaderFilterMode: RequestHeaderFilterModeDisabled,
|
||||
|
||||
Cache: CacheConfiguration{
|
||||
// Rough memory target that the total
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@ func (s *ConfigState) AddServerFlags(cmd *cobra.Command) {
|
|||
cmd.Flags().Duration(AdvancedThrottlingRetryAfterFlag(), cfg.AdvancedThrottlingRetryAfter, fieldtag("AdvancedThrottlingRetryAfter", "usage"))
|
||||
cmd.Flags().Int(AdvancedSenderMultiplierFlag(), cfg.AdvancedSenderMultiplier, fieldtag("AdvancedSenderMultiplier", "usage"))
|
||||
cmd.Flags().StringSlice(AdvancedCSPExtraURIsFlag(), cfg.AdvancedCSPExtraURIs, fieldtag("AdvancedCSPExtraURIs", "usage"))
|
||||
cmd.Flags().String(AdvancedHeaderFilterModeFlag(), cfg.AdvancedHeaderFilterMode, fieldtag("AdvancedHeaderFilterMode", "usage"))
|
||||
|
||||
cmd.Flags().String(RequestIDHeaderFlag(), cfg.RequestIDHeader, fieldtag("RequestIDHeader", "usage"))
|
||||
})
|
||||
|
|
|
|||
|
|
@ -2600,6 +2600,31 @@ func GetAdvancedCSPExtraURIs() []string { return global.GetAdvancedCSPExtraURIs(
|
|||
// SetAdvancedCSPExtraURIs safely sets the value for global configuration 'AdvancedCSPExtraURIs' field
|
||||
func SetAdvancedCSPExtraURIs(v []string) { global.SetAdvancedCSPExtraURIs(v) }
|
||||
|
||||
// GetAdvancedHeaderFilterMode safely fetches the Configuration value for state's 'AdvancedHeaderFilterMode' field
|
||||
func (st *ConfigState) GetAdvancedHeaderFilterMode() (v string) {
|
||||
st.mutex.RLock()
|
||||
v = st.config.AdvancedHeaderFilterMode
|
||||
st.mutex.RUnlock()
|
||||
return
|
||||
}
|
||||
|
||||
// SetAdvancedHeaderFilterMode safely sets the Configuration value for state's 'AdvancedHeaderFilterMode' field
|
||||
func (st *ConfigState) SetAdvancedHeaderFilterMode(v string) {
|
||||
st.mutex.Lock()
|
||||
defer st.mutex.Unlock()
|
||||
st.config.AdvancedHeaderFilterMode = v
|
||||
st.reloadToViper()
|
||||
}
|
||||
|
||||
// AdvancedHeaderFilterModeFlag returns the flag name for the 'AdvancedHeaderFilterMode' field
|
||||
func AdvancedHeaderFilterModeFlag() string { return "advanced-header-filter-mode" }
|
||||
|
||||
// GetAdvancedHeaderFilterMode safely fetches the value for global configuration 'AdvancedHeaderFilterMode' field
|
||||
func GetAdvancedHeaderFilterMode() string { return global.GetAdvancedHeaderFilterMode() }
|
||||
|
||||
// SetAdvancedHeaderFilterMode safely sets the value for global configuration 'AdvancedHeaderFilterMode' field
|
||||
func SetAdvancedHeaderFilterMode(v string) { global.SetAdvancedHeaderFilterMode(v) }
|
||||
|
||||
// GetHTTPClientAllowIPs safely fetches the Configuration value for state's 'HTTPClient.AllowIPs' field
|
||||
func (st *ConfigState) GetHTTPClientAllowIPs() (v []string) {
|
||||
st.mutex.RLock()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue