func (o *Options) MetricsAllowedNetworks() []string {
	return o.metricsAllowedNetworks
}
MetricsAllowedNetworks returns the list of networks allowed to connect to the metrics endpoint.
package config  
import (
	"fmt"
	"sort"
	"strings"
	"time"
	"miniflux.app/version"
)
const (
	defaultHTTPS                              = false
	defaultLogDateTime                        = false
	defaultHSTS                               = true
	defaultHTTPService                        = true
	defaultSchedulerService                   = true
	defaultDebug                              = false
	defaultTiming                             = false
	defaultBaseURL                            = "http://localhost"
	defaultRootURL                            = "http://localhost"
	defaultBasePath                           = ""
	defaultWorkerPoolSize                     = 5
	defaultPollingFrequency                   = 60
	defaultBatchSize                          = 100
	defaultPollingScheduler                   = "round_robin"
	defaultSchedulerEntryFrequencyMinInterval = 5
	defaultSchedulerEntryFrequencyMaxInterval = 24 * 60
	defaultPollingParsingErrorLimit           = 3
	defaultRunMigrations                      = false
	defaultDatabaseURL                        = "user=postgres password=postgres dbname=miniflux2 sslmode=disable"
	defaultDatabaseMaxConns                   = 20
	defaultDatabaseMinConns                   = 1
	defaultDatabaseConnectionLifetime         = 5
	defaultListenAddr                         = "127.0.0.1:8080"
	defaultCertFile                           = ""
	defaultKeyFile                            = ""
	defaultCertDomain                         = ""
	defaultCleanupFrequencyHours              = 24
	defaultCleanupArchiveReadDays             = 60
	defaultCleanupArchiveUnreadDays           = 180
	defaultCleanupArchiveBatchSize            = 10000
	defaultCleanupRemoveSessionsDays          = 30
	defaultProxyImages                        = "http-only"
	defaultFetchYouTubeWatchTime              = false
	defaultCreateAdmin                        = false
	defaultAdminUsername                      = ""
	defaultAdminPassword                      = ""
	defaultOAuth2UserCreation                 = false
	defaultOAuth2ClientID                     = ""
	defaultOAuth2ClientSecret                 = ""
	defaultOAuth2RedirectURL                  = ""
	defaultOAuth2OidcDiscoveryEndpoint        = ""
	defaultOAuth2Provider                     = ""
	defaultPocketConsumerKey                  = ""
	defaultHTTPClientTimeout                  = 20
	defaultHTTPClientMaxBodySize              = 15
	defaultHTTPClientProxy                    = ""
	defaultAuthProxyHeader                    = ""
	defaultAuthProxyUserCreation              = false
	defaultMaintenanceMode                    = false
	defaultMaintenanceMessage                 = "Miniflux is currently under maintenance"
	defaultMetricsCollector                   = false
	defaultMetricsRefreshInterval             = 60
	defaultMetricsAllowedNetworks             = "127.0.0.1/8"
	defaultWatchdog                           = true
)
var defaultHTTPClientUserAgent = "Mozilla/5.0 (compatible; Miniflux/" + version.Version + "; +https://miniflux.app)"
type Option struct {
	Key   string
	Value interface{}
}
type Options struct {
	HTTPS                              bool
	logDateTime                        bool
	hsts                               bool
	httpService                        bool
	schedulerService                   bool
	debug                              bool
	serverTimingHeader                 bool
	baseURL                            string
	rootURL                            string
	basePath                           string
	databaseURL                        string
	databaseMaxConns                   int
	databaseMinConns                   int
	databaseConnectionLifetime         int
	runMigrations                      bool
	listenAddr                         string
	certFile                           string
	certDomain                         string
	certKeyFile                        string
	cleanupFrequencyHours              int
	cleanupArchiveReadDays             int
	cleanupArchiveUnreadDays           int
	cleanupArchiveBatchSize            int
	cleanupRemoveSessionsDays          int
	pollingFrequency                   int
	batchSize                          int
	pollingScheduler                   string
	schedulerEntryFrequencyMinInterval int
	schedulerEntryFrequencyMaxInterval int
	pollingParsingErrorLimit           int
	workerPoolSize                     int
	createAdmin                        bool
	adminUsername                      string
	adminPassword                      string
	proxyImages                        string
	fetchYouTubeWatchTime              bool
	oauth2UserCreationAllowed          bool
	oauth2ClientID                     string
	oauth2ClientSecret                 string
	oauth2RedirectURL                  string
	oauth2OidcDiscoveryEndpoint        string
	oauth2Provider                     string
	pocketConsumerKey                  string
	httpClientTimeout                  int
	httpClientMaxBodySize              int64
	httpClientProxy                    string
	httpClientUserAgent                string
	authProxyHeader                    string
	authProxyUserCreation              bool
	maintenanceMode                    bool
	maintenanceMessage                 string
	metricsCollector                   bool
	metricsRefreshInterval             int
	metricsAllowedNetworks             []string
	watchdog                           bool
}
func NewOptions() *Options {
	return &Options{
		HTTPS:                              defaultHTTPS,
		logDateTime:                        defaultLogDateTime,
		hsts:                               defaultHSTS,
		httpService:                        defaultHTTPService,
		schedulerService:                   defaultSchedulerService,
		debug:                              defaultDebug,
		serverTimingHeader:                 defaultTiming,
		baseURL:                            defaultBaseURL,
		rootURL:                            defaultRootURL,
		basePath:                           defaultBasePath,
		databaseURL:                        defaultDatabaseURL,
		databaseMaxConns:                   defaultDatabaseMaxConns,
		databaseMinConns:                   defaultDatabaseMinConns,
		databaseConnectionLifetime:         defaultDatabaseConnectionLifetime,
		runMigrations:                      defaultRunMigrations,
		listenAddr:                         defaultListenAddr,
		certFile:                           defaultCertFile,
		certDomain:                         defaultCertDomain,
		certKeyFile:                        defaultKeyFile,
		cleanupFrequencyHours:              defaultCleanupFrequencyHours,
		cleanupArchiveReadDays:             defaultCleanupArchiveReadDays,
		cleanupArchiveUnreadDays:           defaultCleanupArchiveUnreadDays,
		cleanupArchiveBatchSize:            defaultCleanupArchiveBatchSize,
		cleanupRemoveSessionsDays:          defaultCleanupRemoveSessionsDays,
		pollingFrequency:                   defaultPollingFrequency,
		batchSize:                          defaultBatchSize,
		pollingScheduler:                   defaultPollingScheduler,
		schedulerEntryFrequencyMinInterval: defaultSchedulerEntryFrequencyMinInterval,
		schedulerEntryFrequencyMaxInterval: defaultSchedulerEntryFrequencyMaxInterval,
		pollingParsingErrorLimit:           defaultPollingParsingErrorLimit,
		workerPoolSize:                     defaultWorkerPoolSize,
		createAdmin:                        defaultCreateAdmin,
		proxyImages:                        defaultProxyImages,
		fetchYouTubeWatchTime:              defaultFetchYouTubeWatchTime,
		oauth2UserCreationAllowed:          defaultOAuth2UserCreation,
		oauth2ClientID:                     defaultOAuth2ClientID,
		oauth2ClientSecret:                 defaultOAuth2ClientSecret,
		oauth2RedirectURL:                  defaultOAuth2RedirectURL,
		oauth2OidcDiscoveryEndpoint:        defaultOAuth2OidcDiscoveryEndpoint,
		oauth2Provider:                     defaultOAuth2Provider,
		pocketConsumerKey:                  defaultPocketConsumerKey,
		httpClientTimeout:                  defaultHTTPClientTimeout,
		httpClientMaxBodySize:              defaultHTTPClientMaxBodySize * 1024 * 1024,
		httpClientProxy:                    defaultHTTPClientProxy,
		httpClientUserAgent:                defaultHTTPClientUserAgent,
		authProxyHeader:                    defaultAuthProxyHeader,
		authProxyUserCreation:              defaultAuthProxyUserCreation,
		maintenanceMode:                    defaultMaintenanceMode,
		maintenanceMessage:                 defaultMaintenanceMessage,
		metricsCollector:                   defaultMetricsCollector,
		metricsRefreshInterval:             defaultMetricsRefreshInterval,
		metricsAllowedNetworks:             []string{defaultMetricsAllowedNetworks},
		watchdog:                           defaultWatchdog,
	}
}
func (o *Options) LogDateTime() bool {
	return o.logDateTime
}
func (o *Options) HasMaintenanceMode() bool {
	return o.maintenanceMode
}
func (o *Options) MaintenanceMessage() string {
	return o.maintenanceMessage
}
func (o *Options) HasDebugMode() bool {
	return o.debug
}
func (o *Options) HasServerTimingHeader() bool {
	return o.serverTimingHeader
}
func (o *Options) BaseURL() string {
	return o.baseURL
}
func (o *Options) RootURL() string {
	return o.rootURL
}
func (o *Options) BasePath() string {
	return o.basePath
}
func (o *Options) IsDefaultDatabaseURL() bool {
	return o.databaseURL == defaultDatabaseURL
}
func (o *Options) DatabaseURL() string {
	return o.databaseURL
}
func (o *Options) DatabaseMaxConns() int {
	return o.databaseMaxConns
}
func (o *Options) DatabaseMinConns() int {
	return o.databaseMinConns
}
func (o *Options) DatabaseConnectionLifetime() time.Duration {
	return time.Duration(o.databaseConnectionLifetime) * time.Minute
}
func (o *Options) ListenAddr() string {
	return o.listenAddr
}
func (o *Options) CertFile() string {
	return o.certFile
}
func (o *Options) CertKeyFile() string {
	return o.certKeyFile
}
func (o *Options) CertDomain() string {
	return o.certDomain
}
func (o *Options) CleanupFrequencyHours() int {
	return o.cleanupFrequencyHours
}
func (o *Options) CleanupArchiveReadDays() int {
	return o.cleanupArchiveReadDays
}
func (o *Options) CleanupArchiveUnreadDays() int {
	return o.cleanupArchiveUnreadDays
}
func (o *Options) CleanupArchiveBatchSize() int {
	return o.cleanupArchiveBatchSize
}
func (o *Options) CleanupRemoveSessionsDays() int {
	return o.cleanupRemoveSessionsDays
}
func (o *Options) WorkerPoolSize() int {
	return o.workerPoolSize
}
func (o *Options) PollingFrequency() int {
	return o.pollingFrequency
}
func (o *Options) BatchSize() int {
	return o.batchSize
}
func (o *Options) PollingScheduler() string {
	return o.pollingScheduler
}
func (o *Options) SchedulerEntryFrequencyMaxInterval() int {
	return o.schedulerEntryFrequencyMaxInterval
}
func (o *Options) SchedulerEntryFrequencyMinInterval() int {
	return o.schedulerEntryFrequencyMinInterval
}
func (o *Options) PollingParsingErrorLimit() int {
	return o.pollingParsingErrorLimit
}
func (o *Options) IsOAuth2UserCreationAllowed() bool {
	return o.oauth2UserCreationAllowed
}
func (o *Options) OAuth2ClientID() string {
	return o.oauth2ClientID
}
func (o *Options) OAuth2ClientSecret() string {
	return o.oauth2ClientSecret
}
func (o *Options) OAuth2RedirectURL() string {
	return o.oauth2RedirectURL
}
func (o *Options) OAuth2OidcDiscoveryEndpoint() string {
	return o.oauth2OidcDiscoveryEndpoint
}
func (o *Options) OAuth2Provider() string {
	return o.oauth2Provider
}
func (o *Options) HasHSTS() bool {
	return o.hsts
}
func (o *Options) RunMigrations() bool {
	return o.runMigrations
}
func (o *Options) CreateAdmin() bool {
	return o.createAdmin
}
func (o *Options) AdminUsername() string {
	return o.adminUsername
}
func (o *Options) AdminPassword() string {
	return o.adminPassword
}
func (o *Options) FetchYouTubeWatchTime() bool {
	return o.fetchYouTubeWatchTime
}
func (o *Options) ProxyImages() string {
	return o.proxyImages
}
func (o *Options) HasHTTPService() bool {
	return o.httpService
}
func (o *Options) HasSchedulerService() bool {
	return o.schedulerService
}
func (o *Options) PocketConsumerKey(defaultValue string) string {
	if o.pocketConsumerKey != "" {
		return o.pocketConsumerKey
	}
	return defaultValue
}
func (o *Options) HTTPClientTimeout() int {
	return o.httpClientTimeout
}
func (o *Options) HTTPClientMaxBodySize() int64 {
	return o.httpClientMaxBodySize
}
func (o *Options) HTTPClientProxy() string {
	return o.httpClientProxy
}
func (o *Options) HasHTTPClientProxyConfigured() bool {
	return o.httpClientProxy != ""
}
func (o *Options) AuthProxyHeader() string {
	return o.authProxyHeader
}
func (o *Options) IsAuthProxyUserCreationAllowed() bool {
	return o.authProxyUserCreation
}
func (o *Options) HasMetricsCollector() bool {
	return o.metricsCollector
}
func (o *Options) MetricsRefreshInterval() int {
	return o.metricsRefreshInterval
}