config

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CommunityConfig

type CommunityConfig struct {
	KeywordFilterKeywords                    *[]string `json:"keyword_filter_keywords,omitempty" envconfig:"keyword_filter_keywords" default:"spammy spam"`
	KeywordTemplateFilterTemplateNames       *[]string `json:"keyword_template_filter_template_names,omitempty" envconfig:"keyword_template_filter_template_names" default:""`
	KeywordFilterUseFullEvent                *bool     `json:"keyword_filter_use_full_event,omitempty" envconfig:"keyword_filter_use_full_event" default:"false"`
	KeywordTemplateFilterUseFullEvent        *bool     `json:"keyword_template_filter_use_full_event,omitempty" envconfig:"keyword_template_filter_use_full_event" default:"false"`
	MentionFilterMaxMentions                 *int      `json:"mention_filter_max_mentions,omitempty" envconfig:"mention_filter_max_mentions" default:"20"`
	MentionFilterMinPlaintextLength          *int      `json:"mention_filter_min_plaintext_length,omitempty" envconfig:"mention_filter_min_plaintext_length" default:"5"`
	ManyAtsFilterMaxAts                      *int      `json:"many_ats_filter_max_ats,omitempty" envconfig:"many_ats_filter_max_ats" default:"20"`
	MediaFilterMediaTypes                    *[]string `` /* 129-byte string literal not displayed */
	UntrustedMediaFilterMediaTypes           *[]string `` /* 149-byte string literal not displayed */
	UntrustedMediaFilterUseMuninn            *bool     `json:"untrusted_media_filter_use_muninn,omitempty" envconfig:"untrusted_media_filter_use_muninn" default:"true"`
	UntrustedMediaFilterUsePowerLevels       *bool     `json:"untrusted_media_filter_use_power_levels,omitempty" envconfig:"untrusted_media_filter_use_power_levels" default:"true"`
	UntrustedMediaFilterAllowedUserGlobs     *[]string `json:"untrusted_media_filter_allowed_user_globs,omitempty" envconfig:"untrusted_media_filter_allowed_user_globs" default:""`
	UntrustedMediaFilterDeniedUserGlobs      *[]string `json:"untrusted_media_filter_denied_user_globs,omitempty" envconfig:"untrusted_media_filter_denied_user_globs" default:""`
	DensityFilterMaxDensity                  *float64  `json:"density_filter_max_density,omitempty" envconfig:"density_filter_max_density" default:"0.95"`
	DensityFilterMinTriggerLength            *int      `json:"density_filter_min_trigger_length,omitempty" envconfig:"density_filter_min_trigger_length" default:"150"`
	TrimLengthFilterMaxDifference            *int      `json:"trim_length_filter_max_difference,omitempty" envconfig:"trim_length_filter_max_difference" default:"25"`
	LengthFilterMaxLength                    *int      `json:"length_filter_max_length,omitempty" envconfig:"length_filter_max_length" default:"10000"`
	SenderPrefilterAllowedSenders            *[]string `json:"sender_prefilter_allowed_senders,omitempty" envconfig:"sender_prefilter_allowed_senders" default:""`
	EventTypePrefilterAllowedEventTypes      *[]string `` /* 137-byte string literal not displayed */
	EventTypePrefilterAllowedStateEventTypes *[]string `` /* 325-byte string literal not displayed */
	HellbanPostfilterMinutes                 *int      `json:"hellban_postfilter_minutes,omitempty" envconfig:"hellban_postfilter_minutes" default:"60"`
	MjolnirFilterEnabled                     *bool     `json:"mjolnir_filter_enabled,omitempty" envconfig:"mjolnir_filter_enabled" default:"true"`
	SpamThreshold                            *float64  `json:"spam_threshold,omitempty" envconfig:"spam_threshold" default:"0.8"`
	WebhookUrl                               *string   `json:"webhook_url,omitempty" envconfig:"webhook_url" default:""`
	OpenAIFilterFailSecure                   *bool     `json:"openai_filter_fail_secure,omitempty" envconfig:"openai_filter_fail_secure" default:"true"`
	StickyEventsFilterAllowStickyEvents      *bool     `json:"sticky_events_filter_allow_sticky_events,omitempty" envconfig:"sticky_events_filter_allow_sticky_events" default:"true"`
	HMAFilterEnabledBanks                    *[]string `json:"hma_filter_enabled_banks,omitempty" envconfig:"hma_filter_enabled_banks" default:""`
	LinkFilterAllowedUrlGlobs                *[]string `json:"link_filter_allowed_url_globs,omitempty" envconfig:"link_filter_allowed_url_globs" default:""`
	LinkFilterDeniedUrlGlobs                 *[]string `json:"link_filter_denied_url_globs,omitempty" envconfig:"link_filter_denied_url_globs" default:""`
	UnsafeSigningKeyFilterEnabled            bool      `json:"unsafe_signing_key_filter_enabled,omitempty" envconfig:"unsafe_signing_key_filter_enabled" default:"true"`
}

func NewCommunityConfigForJSON

func NewCommunityConfigForJSON(configJson []byte) (*CommunityConfig, error)

func NewDefaultCommunityConfig

func NewDefaultCommunityConfig() (*CommunityConfig, error)

func (*CommunityConfig) Clone

func (c *CommunityConfig) Clone() (*CommunityConfig, error)

func (*CommunityConfig) Scan

func (c *CommunityConfig) Scan(src interface{}) error

func (*CommunityConfig) Value

func (c *CommunityConfig) Value() (driver.Value, error)

type InstanceConfig

type InstanceConfig struct {
	HttpBind    string `envconfig:"http_bind" default:"0.0.0.0:8080"`
	MetricsBind string `envconfig:"http_metrics_bind" default:"0.0.0.0:8081"`
	PprofBind   string `envconfig:"http_pprof_bind" default:""`

	ApiKey string `envconfig:"api_key" default:""`

	Database                  string   `envconfig:"database" default:"postgres://policyserv:devonly@localhost/policyserv?sslmode=disable"`
	DatabaseMigrationsDir     string   `envconfig:"database_migrations_dir" default:"./migrations"`
	DatabaseMaxOpenConns      int      `envconfig:"database_max_open_conns" default:"10"`
	DatabaseMaxIdleConns      int      `envconfig:"database_max_idle_conns" default:"5"`
	DatabaseReadonlyUri       string   `envconfig:"database_read" default:""`
	DatabaseReadonlyMaxOpen   int      `envconfig:"database_read_max_open" default:"10"`
	DatabaseReadonlyMaxIdle   int      `envconfig:"database_read_max_idle" default:"5"`
	ProcessingPoolSize        int      `envconfig:"processing_pool_size" default:"100"`
	KeyQueryServer            []string `envconfig:"key_query_server" default:"matrix.org,ed25519:a_RXGa,l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ"`
	EnableDirectKeyFetching   bool     `envconfig:"direct_key_fetching" default:"false"`
	TrustedOrigins            []string `envconfig:"trusted_origins" default:"matrix.org,element.io"`
	StateCacheMinutes         int      `envconfig:"state_cache_minutes" default:"5"`
	StateCacheIntervalMinutes int      `envconfig:"state_cache_interval_minutes" default:"60"`

	HomeserverName                   string `envconfig:"homeserver_name" default:"localhost"`
	HomeserverSigningKeyPath         string `envconfig:"homeserver_signing_key_path" default:"./signing.key"`
	HomeserverEventSigningKeyPath    string `envconfig:"homeserver_event_signing_key_path" default:"./signing.key"`
	HomeserverMediaClientUrl         string `envconfig:"homeserver_media_client_url" default:"https://matrix-client.matrix.org"`
	HomeserverMediaClientAccessToken string `envconfig:"homeserver_media_client_access_token" default:""`

	// Note: the Mjolnir filter can't be configured by communities at the moment
	MjolnirFilterRoomID string `envconfig:"mjolnir_filter_room_id" default:""`

	// Note: the OpenAI filter can't be configured by communities at the moment
	OpenAIApiKey         string   `envconfig:"openai_filter_api_key" default:""`
	OpenAIAllowedRoomIds []string `envconfig:"openai_filter_allowed_room_ids" default:""`

	MuninnHallSourceApiUrl string `envconfig:"muninn_hall_source_api_url" default:"https://mau.bot/_matrix/maubot/plugin/muninnbot/member_directory"`
	MuninnHallSourceApiKey string `envconfig:"muninn_hall_source_api_key" default:""`

	JoinRoomIDs   []string `envconfig:"join_room_ids" default:""`
	JoinServer    string   `envconfig:"join_server" default:"matrix.org"`
	JoinLocalpart string   `envconfig:"join_localpart" default:"policyserv"`

	// [Client-Server API domain (no scheme)]:[access token]
	// Example: matrix-client.matrix.org:syt_example
	ModeratorAccessTokens map[string]string `envconfig:"moderator_access_tokens" default:""`
	ModerationPoolSize    int               `envconfig:"moderation_pool_size" default:"25"`

	AllowedWebhookDomains []string `envconfig:"allowed_webhook_domains" default:"element.ems.host"`
	WebhookPoolSize       int      `envconfig:"webhook_pool_size" default:"5"`

	HMAApiUrl string `envconfig:"hma_api_url" default:""`
	HMAApiKey string `envconfig:"hma_api_key" default:""`

	SupportAdminContacts    []SupportContact `envconfig:"support_admin_contacts" default:""`
	SupportSecurityContacts []SupportContact `envconfig:"support_security_contacts" default:""`
	SupportUrl              string           `envconfig:"support_url" default:""`
}

func NewInstanceConfig

func NewInstanceConfig() (*InstanceConfig, error)

type SupportContact added in v1.1.0

type SupportContact struct {
	Value string
	Type  SupportContactType
}

func (*SupportContact) Decode added in v1.1.0

func (c *SupportContact) Decode(value string) error

type SupportContactType added in v1.1.0

type SupportContactType string
const SupportContactTypeEmail SupportContactType = "email"
const SupportContactTypeMatrixUserId SupportContactType = "matrix_user_id"

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL