atscfg

package
v6.0.2+incompatible Latest Latest
Warning

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

Go to latest
Published: Dec 22, 2021 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 1 more Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TopologyCacheTierFirst   = TopologyCacheTier("first")
	TopologyCacheTierInner   = TopologyCacheTier("inner")
	TopologyCacheTierLast    = TopologyCacheTier("last")
	TopologyCacheTierInvalid = TopologyCacheTier("")
)
View Source
const ATSDotRulesFileName = StorageFileName
View Source
const AstatsFileName = "astats.config"
View Source
const AstatsSeparator = "="
View Source
const CacheKeyParameterConfigFile = "cachekey.config"
View Source
const CacheUrlPrefix = "cacheurl_"
View Source
const ChkconfigFileName = `chkconfig`
View Source
const ChkconfigParamConfigFile = `chkconfig`
View Source
const ConfigSuffix = ".config"
View Source
const ContentType12MFacts = ContentTypeTextASCII
View Source
const ContentTypeATSDotRules = ContentTypeTextASCII
View Source
const ContentTypeAstatsDotConfig = ContentTypeTextASCII
View Source
const ContentTypeBGFetchDotConfig = ContentTypeTextASCII
View Source
const ContentTypeCacheDotConfig = ContentTypeTextASCII
View Source
const ContentTypeChkconfig = ContentTypeTextASCII
View Source
const ContentTypeDropQStringDotConfig = ContentTypeTextASCII
View Source
const ContentTypeHeaderRewriteDotConfig = ContentTypeTextASCII
View Source
const ContentTypeHostingDotConfig = ContentTypeTextASCII
View Source
const ContentTypeIPAllowDotConfig = ContentTypeTextASCII
View Source
const ContentTypeIPAllowDotYAML = "application/yaml; charset=us-ascii" // Note YAML has no IANA standard mime type. This is one of several common usages, and is likely to be the standardized value. If you're reading this, please check IANA to see if YAML has been added, and change this to the IANA definition if so. Also note we include 'charset=us-ascii' because YAML is commonly UTF-8, but ATS is likely to be unable to handle UTF.
View Source
const ContentTypeLoggingDotConfig = ContentTypeTextASCII
View Source
const ContentTypeLoggingDotYAML = "application/yaml; charset=us-ascii" // Note YAML has no IANA standard mime type. This is one of several common usages, and is likely to be the standardized value. If you're reading this, please check IANA to see if YAML has been added, and change this to the IANA definition if so. Also note we include 'charset=us-ascii' because YAML is commonly UTF-8, but ATS is likely to be unable to handle UTF.
View Source
const ContentTypeLogsDotXML = `text/xml`
View Source
const ContentTypePackages = ContentTypeTextASCII
View Source
const ContentTypeParentDotConfig = ContentTypeTextASCII
View Source
const ContentTypePluginDotConfig = ContentTypeTextASCII
View Source
const ContentTypeRecordsDotConfig = ContentTypeTextASCII
View Source
const ContentTypeRegexRemapDotConfig = ContentTypeTextASCII
View Source
const ContentTypeRegexRevalidateDotConfig = ContentTypeTextASCII
View Source
const ContentTypeRemapDotConfig = ContentTypeTextASCII
View Source
const ContentTypeSNIDotYAML = ContentTypeYAML
View Source
const ContentTypeSSLMultiCertDotConfig = ContentTypeTextASCII
View Source
const ContentTypeSSLServerNameYAML = ContentTypeYAML
View Source
const ContentTypeServerUnknownConfig = ContentTypeTextASCII
View Source
const ContentTypeSetDSCPDotConfig = ContentTypeTextASCII
View Source
const ContentTypeStorageDotConfig = ContentTypeTextASCII
View Source
const ContentTypeSysctlDotConf = ContentTypeTextASCII
View Source
const ContentTypeTextASCII = `text/plain; charset=us-ascii`
View Source
const ContentTypeURISigningDotConfig = `application/json; charset=us-ascii`
View Source
const ContentTypeURLSig = ContentTypeTextASCII
View Source
const ContentTypeVolumeDotConfig = ContentTypeTextASCII
View Source
const ContentTypeYAML = "application/yaml; charset=us-ascii" // Note YAML has no IANA standard mime type. This is one of several common usages, and is likely to be the standardized value. If you're reading this, please check IANA to see if YAML has been added, and change this to the IANA definition if so. Also note we include 'charset=us-ascii' because YAML is commonly UTF-8, but ATS is likely to be unable to handle UTF.
View Source
const DefaultATSVersion = "5" // TODO Emulates Perl; change to 6? ATC no longer officially supports ATS 5.
View Source
const DefaultCoalesceMaskLenV4 = 24
View Source
const DefaultCoalesceMaskLenV6 = 48
View Source
const DefaultCoalesceNumberV4 = 5
View Source
const DefaultCoalesceNumberV6 = 5
View Source
const DefaultDefaultEnableH2 = false

DefaultDefaultEnableH2 is whether Delivery Services will have HTTP/2 enabled by default if they don't have an explicit Parameter, and no Opt is passed to the Make func. We disable by default, to prevent potentially enabling broken clients.

View Source
const DefaultMaxRevalDurationDays = 90
View Source
const DropQStringDotConfigFileName = "drop_qstring.config"
View Source
const DropQStringDotConfigParamName = "content"
View Source
const HeaderCommentDateFormat = "Mon Jan 2 15:04:05 MST 2006"

todo also unused

View Source
const HeaderRewriteFirstPrefix = HeaderRewritePrefix + "first_"
View Source
const HeaderRewriteInnerPrefix = HeaderRewritePrefix + "inner_"
View Source
const HeaderRewriteLastPrefix = HeaderRewritePrefix + "last_"
View Source
const HeaderRewriteMidPrefix = "hdr_rw_mid_"
View Source
const HeaderRewritePrefix = "hdr_rw_"
View Source
const HostingConfigFileName = `hosting.config`
View Source
const HostingConfigParamConfigFile = `storage.config`
View Source
const IPAllowConfigFileName = `ip_allow.config`
View Source
const IPAllowYamlFileName = `ip_allow.yaml`
View Source
const InvalidID = -1
View Source
const JobKeywordPurge = "PURGE"
View Source
const LineComment12MFacts = LineCommentHash
View Source
const LineCommentATSDotRules = LineCommentHash
View Source
const LineCommentAstatsDotConfig = LineCommentHash
View Source
const LineCommentBGFetchDotConfig = LineCommentHash
View Source
const LineCommentCacheDotConfig = LineCommentHash
View Source
const LineCommentChkconfig = LineCommentHash
View Source
const LineCommentDropQStringDotConfig = LineCommentHash
View Source
const LineCommentHash = "#"
View Source
const LineCommentHeaderRewriteDotConfig = LineCommentHash
View Source
const LineCommentHostingDotConfig = LineCommentHash
View Source
const LineCommentIPAllowDotConfig = LineCommentHash
View Source
const LineCommentIPAllowDotYAML = LineCommentHash
View Source
const LineCommentLoggingDotConfig = LineCommentHash
View Source
const LineCommentLoggingDotYAML = LineCommentHash
View Source
const LineCommentLogsDotXML = `<!--`
View Source
const LineCommentPackages = ""
View Source
const LineCommentParentDotConfig = LineCommentHash
View Source
const LineCommentPluginDotConfig = LineCommentHash
View Source
const LineCommentRecordsDotConfig = LineCommentHash
View Source
const LineCommentRegexRemapDotConfig = LineCommentHash
View Source
const LineCommentRegexRevalidateDotConfig = LineCommentHash
View Source
const LineCommentRemapDotConfig = LineCommentHash
View Source
const LineCommentSNIDotYAML = LineCommentYAML
View Source
const LineCommentSSLMultiCertDotConfig = LineCommentHash
View Source
const LineCommentSSLServerNameYAML = LineCommentYAML
View Source
const LineCommentSetDSCPDotConfig = LineCommentHash
View Source
const LineCommentStorageDotConfig = LineCommentHash
View Source
const LineCommentSysctlDotConf = LineCommentHash
View Source
const LineCommentURISigningDotConfig = ""
View Source
const LineCommentURLSig = LineCommentHash
View Source
const LineCommentVolumeDotConfig = LineCommentHash
View Source
const LineCommentYAML = LineCommentHash
View Source
const LoggingFileName = "logging.config"
View Source
const LoggingYAMLFileName = "logging.yaml"
View Source
const LogsXMLFileName = "logs_xml.config"
View Source
const MaxLogObjects = 10
View Source
const MaxOriginConnectionsNoMax = 0 // 0 indicates no limit on origin connections
View Source
const MethodPurge = `PURGE`
View Source
const MethodPush = `PUSH`
View Source
const PackagesFileName = `packages`
View Source
const PackagesParamConfigFile = `package`
View Source
const ParamCoalesceMaskLenV4 = "coalesce_masklen_v4"
View Source
const ParamCoalesceMaskLenV6 = "coalesce_masklen_v6"
View Source
const ParamCoalesceNumberV4 = "coalesce_number_v4"
View Source
const ParamCoalesceNumberV6 = "coalesce_number_v6"
View Source
const ParamDrivePrefix = "Drive_Prefix"
View Source
const ParamPurgeAllowIP = "purge_allow_ip"
View Source
const ParamRAMDrivePrefix = "RAM_Drive_Prefix"
View Source
const ParentConfigCacheParamNotAParent = "not_a_parent"
View Source
const ParentConfigCacheParamPort = "port"
View Source
const ParentConfigCacheParamRank = "rank"
View Source
const ParentConfigCacheParamUseIP = "use_ip_address"
View Source
const ParentConfigCacheParamWeight = "weight"
View Source
const ParentConfigDSParamDefaultMSOAlgorithm = "consistent_hash"
View Source
const ParentConfigDSParamDefaultMSOParentRetry = "both"
View Source
const ParentConfigDSParamDefaultMSOUnavailableServerRetryResponses = ""
View Source
const ParentConfigDSParamDefaultMaxSimpleRetries = "1"
View Source
const ParentConfigDSParamDefaultMaxUnavailableServerRetries = "1"
View Source
const ParentConfigFileName = "parent.config"
View Source
const ParentConfigParamAlgorithm = "algorithm"
View Source
const ParentConfigParamMSOAlgorithm = "mso.algorithm"
View Source
const ParentConfigParamMSOMaxSimpleRetries = "mso.max_simple_retries"
View Source
const ParentConfigParamMSOMaxUnavailableServerRetries = "mso.max_unavailable_server_retries"
View Source
const ParentConfigParamMSOParentRetry = "mso.parent_retry"
View Source
const ParentConfigParamMSOUnavailableServerRetryResponses = "mso.unavailable_server_retry_responses"
View Source
const ParentConfigParamMaxSimpleRetries = "max_simple_retries"
View Source
const ParentConfigParamMaxUnavailableServerRetries = "max_unavailable_server_retries"
View Source
const ParentConfigParamParentRetry = "parent_retry"
View Source
const ParentConfigParamQString = "qstring"
View Source
const ParentConfigParamQStringHandling = "psel.qstring_handling"
View Source
const ParentConfigParamSecondaryMode = "try_all_primaries_before_secondary"
View Source
const ParentConfigParamUnavailableServerRetryResponses = "unavailable_server_retry_responses"
View Source
const PluginFileName = "plugin.config"
View Source
const PluginSeparator = " "
View Source
const RecordsFileName = "records.config"
View Source
const RecordsSeparator = " "
View Source
const RefetchSuffix = "##REFETCH##"
View Source
const RefreshSuffix = "##REFRESH##"
View Source
const RegexRemapPrefix = "regex_remap_"
View Source
const RegexRevalidateFileName = "regex_revalidate.config"
View Source
const RegexRevalidateMaxRevalDurationDaysParamName = "maxRevalDurationDays"
View Source
const RegexRevalidateMinTTL = time.Hour
View Source
const RemapConfigRangeDirective = `__RANGE_DIRECTIVE__`
View Source
const RemapFile = "remap.config"
View Source
const SNIDotYAMLFileName = "sni.yaml"
View Source
const SSLMultiCertConfigFileName = `ssl_multicert.config`
View Source
const SSLServerNameYAMLFileName = "ssl_server_name.yaml"
View Source
const SSLServerNameYAMLParamEnableH2 = "enable_h2"
View Source
const SSLServerNameYAMLParamTLSVersions = "tls_versions"
View Source
const ServerCacheDotConfigIncludeInactiveDSes = false
View Source
const ServerHostingDotConfigEdgeIncludeInactive = true
View Source
const ServerHostingDotConfigMidIncludeInactive = false
View Source
const ServiceCategoryHeader = "@CDN-SVC"

ServiceCategoryHeader is the internal service category header for logging the service category. Note this is internal, and will never be set in an HTTP Request or Response by ATS.

View Source
const StorageFileName = "storage.config"
View Source
const SysctlFileName = "sysctl.conf"
View Source
const SysctlSeparator = " = "
View Source
const TLSVersion1p0 = TLSVersion("1.0")
View Source
const TLSVersion1p1 = TLSVersion("1.1")
View Source
const TLSVersion1p2 = TLSVersion("1.2")
View Source
const TLSVersion1p3 = TLSVersion("1.3")
View Source
const TLSVersionInvalid = TLSVersion("")
View Source
const TsDefaultRequestHeaderMaxSize = 131072
View Source
const VolumeFileName = StorageFileName

Variables

DefaultDefaultTLSVersions is the list of TLS versions to enable by default, if no Parameter exists and no Opt is passed to the Make func. By default, we enable all, even insecure versions. As a CDN, Traffic Control assumes it should not break clients, and it's the client's responsibility to use secure protocols. Note this enables certain downgrade attacks. Operators or tenants concerned about these attacks should disable older TLS versions.

Functions

func DeliveryServicesToSSLMultiCertDSes

func DeliveryServicesToSSLMultiCertDSes(dses []DeliveryService) (map[tc.DeliveryServiceName]sslMultiCertDS, []string)

deliveryServicesToSSLMultiCertDSes returns the "SSLMultiCertDS" map, and any warnings.

func FirstHeaderRewriteConfigFileName

func FirstHeaderRewriteConfigFileName(dsName string) string

func GetSSLMultiCertDotConfigCertAndKeyName

func GetSSLMultiCertDotConfigCertAndKeyName(dsName tc.DeliveryServiceName, ds sslMultiCertDS) (string, string)

GetSSLMultiCertDotConfigCertAndKeyName returns the cert file name and key file name for the given delivery service.

func GetSSLMultiCertDotConfigDeliveryServices

func GetSSLMultiCertDotConfigDeliveryServices(dses map[tc.DeliveryServiceName]sslMultiCertDS) map[tc.DeliveryServiceName]sslMultiCertDS

GetSSLMultiCertDotConfigDeliveryServices takes a list of delivery services, and returns the delivery services which will be inserted into the config by MakeSSLMultiCertDotConfig. This is public, so users can see which Delivery Services are used, without parsing the config file. For example, this is useful to determine which certificates are needed.

func InnerHeaderRewriteConfigFileName

func InnerHeaderRewriteConfigFileName(dsName string) string

func JobToInvalidationJob

func JobToInvalidationJob(jb tc.Job) (tc.InvalidationJob, error)

func JobsToInvalidationJobs

func JobsToInvalidationJobs(oldJobs []tc.Job) ([]tc.InvalidationJob, error)

func LastHeaderRewriteConfigFileName

func LastHeaderRewriteConfigFileName(dsName string) string

Types

type AStatsDotConfigOpts

type AStatsDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

AStatsDotConfigOpts contains settings to configure generation options.

type ATSDotRulesOpts

type ATSDotRulesOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

ATSDotRulesOpts contains settings to configure generation options.

type BGFetchDotConfigOpts

type BGFetchDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

BGFetchDotConfigOpts contains settings to configure generation options.

type CacheDotConfigOpts

type CacheDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

CacheDotConfigOpts contains settings to configure generation options.

type CacheGroupType

type CacheGroupType string

type Cfg

type Cfg struct {
	Text        string
	ContentType string
	LineComment string
	Warnings    []string
}

Cfg is the data and metadata for an ATS Config File.

This includes the text, the content type (which is necessary for HTTP, multipart, and other things), and the line comment syntax if any.

This is what is generated by the lib/go-atscfg library. Note it does not include the file name or path, which this library doesn't have enough information to return and is not part of generation. That information should be fetched from Traffic Ops, along with the data used to generate config files, or else generated from the machine. See CfgFile.

func Make12MFacts

func Make12MFacts(
	server *Server,
	opt *Config12MFactsOpts,
) (Cfg, error)

func MakeAStatsDotConfig

func MakeAStatsDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *AStatsDotConfigOpts,
) (Cfg, error)

func MakeATSDotRules

func MakeATSDotRules(
	server *Server,
	serverParams []tc.Parameter,
	opt *ATSDotRulesOpts,
) (Cfg, error)

func MakeBGFetchDotConfig

func MakeBGFetchDotConfig(
	server *Server,
	opt *BGFetchDotConfigOpts,
) (Cfg, error)

func MakeCacheDotConfig

func MakeCacheDotConfig(
	server *Server,
	servers []Server,
	deliveryServices []DeliveryService,
	deliveryServiceServers []DeliveryServiceServer,
	opt *CacheDotConfigOpts,
) (Cfg, error)

MakeCacheDotConfig makes the ATS cache.config config file.

func MakeChkconfig

func MakeChkconfig(
	serverParams []tc.Parameter,
	opt *ChkconfigOpts,
) (Cfg, error)

MakeChkconfig returns the 'chkconfig' ATS config file endpoint. This is a JSON object, and should be served with an 'application/json' Content-Type.

func MakeDropQStringDotConfig

func MakeDropQStringDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *DropQStringDotConfigOpts,
) (Cfg, error)

func MakeHeaderRewriteDotConfig

func MakeHeaderRewriteDotConfig(
	fileName string,
	deliveryServices []DeliveryService,
	deliveryServiceServers []DeliveryServiceServer,
	server *Server,
	servers []Server,
	cacheGroupsArr []tc.CacheGroupNullable,
	tcServerParams []tc.Parameter,
	serverCapabilities map[int]map[ServerCapability]struct{},
	requiredCapabilities map[int]map[ServerCapability]struct{},
	topologiesArr []tc.Topology,
	opt *HeaderRewriteDotConfigOpts,
) (Cfg, error)

MakeHeaderRewriteDotConfig makes the header rewrite file for an Edge hdr_rw_ or Mid hdr_rw_mid_ or Topology hdr_rw_{first,inner,last} file, as generated by MakeMetaConfigFilesList.

func MakeHostingDotConfig

func MakeHostingDotConfig(
	server *Server,
	servers []Server,
	serverParams []tc.Parameter,
	deliveryServices []DeliveryService,
	deliveryServiceServers []DeliveryServiceServer,
	topologies []tc.Topology,
	opt *HostingDotConfigOpts,
) (Cfg, error)

func MakeIPAllowDotConfig

func MakeIPAllowDotConfig(
	serverParams []tc.Parameter,
	server *Server,
	servers []Server,
	cacheGroups []tc.CacheGroupNullable,
	topologies []tc.Topology,
	opt *IPAllowDotConfigOpts,
) (Cfg, error)

MakeIPAllowDotConfig creates the ip_allow.config ATS config file. The childServers is a list of servers which are children for this Mid-tier server. This should be empty for Edge servers. More specifically, it should be the list of edges whose cachegroup's parent_cachegroup or secondary_parent_cachegroup is the cachegroup of this Mid server.

func MakeIPAllowDotYAML

func MakeIPAllowDotYAML(
	serverParams []tc.Parameter,
	server *Server,
	servers []Server,
	cacheGroups []tc.CacheGroupNullable,
	topologies []tc.Topology,
	opt *IPAllowDotYAMLOpts,
) (Cfg, error)

MakeIPAllowDotYAML creates the ip_allow.yaml ATS 9+ config file.

func MakeLoggingDotConfig

func MakeLoggingDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *LoggingDotConfigOpts,
) (Cfg, error)

MakeStorageDotConfig creates storage.config for a given ATS Profile. The paramData is the map of parameter names to values, for all parameters assigned to the given profile, with the config_file "storage.config".

func MakeLoggingDotYAML

func MakeLoggingDotYAML(
	server *Server,
	serverParams []tc.Parameter,
	opts *LoggingDotYAMLOpts,
) (Cfg, error)

func MakeLogsXMLDotConfig

func MakeLogsXMLDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *LogsXMLDotConfigOpts,
) (Cfg, error)

func MakePackages

func MakePackages(
	serverParams []tc.Parameter,
	opts *PackagesOpts,
) (Cfg, error)

MakePackages returns the 'packages' ATS config file endpoint. This is a JSON object, and should be served with an 'application/json' Content-Type.

func MakeParentDotConfig

func MakeParentDotConfig(
	dses []DeliveryService,
	server *Server,
	servers []Server,
	topologies []tc.Topology,
	tcServerParams []tc.Parameter,
	tcParentConfigParams []tc.Parameter,
	serverCapabilities map[int]map[ServerCapability]struct{},
	dsRequiredCapabilities map[int]map[ServerCapability]struct{},
	cacheGroupArr []tc.CacheGroupNullable,
	dss []DeliveryServiceServer,
	cdn *tc.CDN,
	opt *ParentConfigOpts,
) (Cfg, error)

func MakePluginDotConfig

func MakePluginDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *PluginDotConfigOpts,
) (Cfg, error)

func MakeRecordsDotConfig

func MakeRecordsDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *RecordsConfigOpts,
) (Cfg, error)

func MakeRegexRemapDotConfig

func MakeRegexRemapDotConfig(
	fileName string,
	server *Server,
	deliveryServices []DeliveryService,
	opt *RegexRemapDotConfigOpts,
) (Cfg, error)

func MakeRegexRevalidateDotConfig

func MakeRegexRevalidateDotConfig(
	server *Server,
	deliveryServices []DeliveryService,
	globalParams []tc.Parameter,
	jobs []tc.InvalidationJob,
	opt *RegexRevalidateDotConfigOpts,
) (Cfg, error)

func MakeRemapDotConfig

func MakeRemapDotConfig(
	server *Server,
	unfilteredDSes []DeliveryService,
	dss []DeliveryServiceServer,
	dsRegexArr []tc.DeliveryServiceRegexes,
	serverParams []tc.Parameter,
	cdn *tc.CDN,
	remapConfigParams []tc.Parameter,
	topologies []tc.Topology,
	cacheGroupArr []tc.CacheGroupNullable,
	serverCapabilities map[int]map[ServerCapability]struct{},
	dsRequiredCapabilities map[int]map[ServerCapability]struct{},
	opt *RemapDotConfigOpts,
) (Cfg, error)

func MakeSNIDotYAML

func MakeSNIDotYAML(
	server *Server,
	dses []DeliveryService,
	dss []DeliveryServiceServer,
	dsRegexArr []tc.DeliveryServiceRegexes,
	tcParentConfigParams []tc.Parameter,
	cdn *tc.CDN,
	topologies []tc.Topology,
	cacheGroupArr []tc.CacheGroupNullable,
	serverCapabilities map[int]map[ServerCapability]struct{},
	dsRequiredCapabilities map[int]map[ServerCapability]struct{},
	opt *SNIDotYAMLOpts,
) (Cfg, error)

func MakeSSLMultiCertDotConfig

func MakeSSLMultiCertDotConfig(
	server *Server,
	deliveryServices []DeliveryService,
	opt *SSLMultiCertDotConfigOpts,
) (Cfg, error)

func MakeSSLServerNameYAML

func MakeSSLServerNameYAML(
	server *Server,
	dses []DeliveryService,
	dss []DeliveryServiceServer,
	dsRegexArr []tc.DeliveryServiceRegexes,
	tcParentConfigParams []tc.Parameter,
	cdn *tc.CDN,
	topologies []tc.Topology,
	cacheGroupArr []tc.CacheGroupNullable,
	serverCapabilities map[int]map[ServerCapability]struct{},
	dsRequiredCapabilities map[int]map[ServerCapability]struct{},
	opt *SSLServerNameYAMLOpts,
) (Cfg, error)

func MakeServerUnknown

func MakeServerUnknown(
	fileName string,
	server *Server,
	serverParams []tc.Parameter,
	opt *ServerUnknownOpts,
) (Cfg, error)

func MakeSetDSCPDotConfig

func MakeSetDSCPDotConfig(
	fileName string,
	server *Server,
	opt *SetDSCPDotConfigOpts,
) (Cfg, error)

func MakeStorageDotConfig

func MakeStorageDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *StorageDotConfigOpts,
) (Cfg, error)

MakeStorageDotConfig creates storage.config for a given ATS Profile. The paramData is the map of parameter names to values, for all parameters assigned to the given profile, with the config_file "storage.config".

func MakeSysCtlDotConf

func MakeSysCtlDotConf(
	server *Server,
	serverParams []tc.Parameter,
	opt *SysCtlDotConfOpts,
) (Cfg, error)

func MakeURISigningConfig

func MakeURISigningConfig(
	fileName string,
	uriSigningKeys map[tc.DeliveryServiceName][]byte,
	opt *URISigningConfigOpts,
) (Cfg, error)

func MakeURLSigConfig

func MakeURLSigConfig(
	fileName string,
	server *Server,
	serverParams []tc.Parameter,
	allURLSigKeys map[tc.DeliveryServiceName]tc.URLSigKeys,
	opt *URLSigConfigOpts,
) (Cfg, error)

func MakeVolumeDotConfig

func MakeVolumeDotConfig(
	server *Server,
	serverParams []tc.Parameter,
	opt *VolumeDotConfigOpts,
) (Cfg, error)

MakeVolumeDotConfig creates volume.config for a given ATS Profile. The paramData is the map of parameter names to values, for all parameters assigned to the given profile, with the config_file "storage.config".

type CfgFile

type CfgFile struct {
	Name string
	Path string
	Cfg
}

CfgFile is all the information necessary to create an ATS config file, including the file name, path, data, and metadata. This is provided as a convenience and unified structure for users. The lib/go-atscfg library doesn't actually use or return this. See ATSConfigFileData.

type CfgMeta

type CfgMeta struct {
	Name string
	Path string
}

func MakeConfigFilesList

func MakeConfigFilesList(
	configDir string,
	server *Server,
	serverParams []tc.Parameter,
	deliveryServices []DeliveryService,
	deliveryServiceServers []DeliveryServiceServer,
	globalParams []tc.Parameter,
	cacheGroupArr []tc.CacheGroupNullable,
	topologies []tc.Topology,
	opt *ConfigFilesListOpts,
) ([]CfgMeta, []string, error)

MakeMetaObj returns the list of config files, any warnings, and any errors.

type ChkconfigOpts

type ChkconfigOpts struct {
}

ChkconfigOpts contains settings to configure generation options.

type Config12MFactsOpts

type Config12MFactsOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

Config12MFactsOpts contains settings to configure generation options.

type ConfigFilesListOpts

type ConfigFilesListOpts struct {
}

ConfigFilesListOpts contains settings to configure generation options.

type DeliveryService

type DeliveryService tc.DeliveryServiceV40

DeliveryService is a tc.DeliveryService for the latest lib/go-tc and traffic_ops/vx-client type. This allows atscfg to not have to change the type everywhere it's used, every time ATC changes the base type, but to only have to change it here, and the places where breaking symbol changes were made.

func ToDeliveryServices

func ToDeliveryServices(dses []tc.DeliveryServiceV40) []DeliveryService

ToDeliveryServices converts a slice of the latest lib/go-tc and traffic_ops/vx-client type to the local alias.

func V40ToDeliveryServices

func V40ToDeliveryServices(dses []tc.DeliveryServiceV40) []DeliveryService

V40ToDeliveryServices converts a slice of the old traffic_ops/client type to the local alias.

type DeliveryServiceID

type DeliveryServiceID int

type DeliveryServiceServer

type DeliveryServiceServer struct {
	Server          int `json:"s"`
	DeliveryService int `json:"d"`
}

DeliveryServiceServer is a compact version of DeliveryServiceServer. The Delivery Service Servers is massive on large CDNs not using Topologies, compacting it in JSON and dropping the timestamp drastically reduces the size. The t3c apps will also drop any DSS from Traffic Ops with null values, which are invalid and useless, to avoid pointers and further reduce size.

type DropQStringDotConfigOpts

type DropQStringDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

DropQStringDotConfigOpts contains settings to configure generation options.

type HeaderRewriteDotConfigOpts

type HeaderRewriteDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

HeaderRewriteDotConfigOpts contains settings to configure generation options.

type HostingDotConfigOpts

type HostingDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

HostingDotConfigOpts contains settings to configure generation options.

type IPAllowDotConfigOpts

type IPAllowDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

IPAllowDotConfigOpts contains settings to configure generation options.

type IPAllowDotYAMLOpts

type IPAllowDotYAMLOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

AStatsDotConfigOpts contains settings to configure generation options.

type LoggingDotConfigOpts

type LoggingDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

LoggingDotConfigOpts contains settings to configure generation options.

type LoggingDotYAMLOpts

type LoggingDotYAMLOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

LoggingDotYAMLOpts contains settings to configure generation options.

type LogsXMLDotConfigOpts

type LogsXMLDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

LogsXMLDotConfigOpts contains settings to configure generation options.

type OriginFQDN

type OriginFQDN string

type OriginHost

type OriginHost string

type PackagesOpts

type PackagesOpts struct {
}

PackagesOpts contains settings to configure generation options.

type ParentConfigOpts

type ParentConfigOpts struct {
	// AddComments is whether to add informative comments to the generated file, about what was generated and why.
	// Note this does not include the header comment, which is configured separately with HdrComment.
	// These comments are human-readable and not guarnateed to be consistent between versions. Automating anything based on them is strongly discouraged.
	AddComments bool

	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

ParentConfigOpts contains settings to configure parent.config generation options.

type PluginDotConfigOpts

type PluginDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

PluginDotConfigOpts contains settings to configure generation options.

type ProfileID

type ProfileID int

type RecordsConfigOpts

type RecordsConfigOpts struct {
	// ReleaseViaStr is whether or not we replace the via and server strings in ATS
	// responses to be the Release value from the rpm package. This can be a user
	// defined build hash (or whatever the user wants) type value to give more
	// specific info as well as obfuscating the real ATS version from prying eyes
	ReleaseViaStr bool

	// DNSLocalBindServiceAddr is whether to set the server's service addresses
	// as the records.config proxy.config.dns.local_ipv* settings.
	DNSLocalBindServiceAddr bool

	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string

	// NoOutgoingIP is whether to omit adding a records.config entry for
	// proxy.local.outgoing_ip_to_bind set to the server's IP addresses (V4 and V6).
	// By default, this entry is added, unless it already exists in records.config
	// (probably from a Parameter).
	//
	// The default, setting the IP to bind, is usually the right solution, unless
	// the server's addresses are unusual or not public, such as NAT.
	NoOutgoingIP bool
}

type RegexRemapDotConfigOpts

type RegexRemapDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

RegexRemapDotConfigOpts contains settings to configure generation options.

type RegexRevalidateDotConfigOpts

type RegexRevalidateDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

RegexRevalidateDotConfigOpts contains settings to configure generation options.

type RemapDotConfigOpts

type RemapDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

RemapDotConfigOpts contains settings to configure generation options.

type SNIDotYAMLOpts

type SNIDotYAMLOpts struct {
	// VerboseComments is whether to add informative comments to the generated file, about what was generated and why.
	// Note this does not include the header comment, which is configured separately with HdrComment.
	// These comments are human-readable and not guaranteed to be consistent between versions. Automating anything based on them is strongly discouraged.
	VerboseComments bool

	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string

	// DefaultTLSVersions is the list of TLS versions to enable on delivery services with no Parameter.
	DefaultTLSVersions []TLSVersion

	// DefaultEnableH2 is whether to disable H2 on delivery services with no Parameter.
	DefaultEnableH2 bool
}

SNIDotYAMLOpts contains settings to configure sni.yaml generation options.

type SSLData

type SSLData struct {
	DSName       string
	RequestFQDNs []string
	EnableH2     bool
	TLSVersions  []TLSVersion
}

SSLData has the DS data needed for both sni.yaml (ATS 9+) and ssl_server_name.yaml (ATS 8).

func GetServerSSLData

func GetServerSSLData(
	server *Server,
	dses []DeliveryService,
	dss []DeliveryServiceServer,
	dsRegexArr []tc.DeliveryServiceRegexes,
	tcParentConfigParams []tc.Parameter,
	cdn *tc.CDN,
	topologies []tc.Topology,
	cacheGroupArr []tc.CacheGroupNullable,
	serverCapabilities map[int]map[ServerCapability]struct{},
	dsRequiredCapabilities map[int]map[ServerCapability]struct{},
	defaultTLSVersions []TLSVersion,
	defaultEnableH2 bool,
) ([]SSLData, []string, error)

GetServerSSLData gets the SSLData for all Delivery Services assigned to the given Server, any warnings, and any error.

type SSLMultiCertDotConfigOpts

type SSLMultiCertDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

SSLMultiCertDotConfigOpts contains settings to configure generation options.

type SSLServerNameYAMLOpts

type SSLServerNameYAMLOpts struct {
	// VerboseComments is whether to add informative comments to the generated file, about what was generated and why.
	// Note this does not include the header comment, which is configured separately with HdrComment.
	// These comments are human-readable and not guaranteed to be consistent between versions. Automating anything based on them is strongly discouraged.
	VerboseComments bool

	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string

	// DefaultTLSVersions is the list of TLS versions to enable on delivery services with no Parameter.
	DefaultTLSVersions []TLSVersion

	// DefaultEnableH2 is whether to disable H2 on delivery services with no Parameter.
	DefaultEnableH2 bool
}

SSLServerNameYAMLOpts contains settings to configure ssl_server_name.yaml generation options.

type Server

type Server tc.ServerV40

Server is a tc.Server for the latest lib/go-tc and traffic_ops/vx-client type. This allows atscfg to not have to change the type everywhere it's used, every time ATC changes the base type, but to only have to change it here, and the places where breaking symbol changes were made.

func ToServers

func ToServers(servers []tc.ServerV40) []Server

ToServers converts a slice of the latest lib/go-tc and traffic_ops/vx-client type to the local alias.

type ServerCapability

type ServerCapability string

type ServerID

type ServerID int

type ServerUnknownOpts

type ServerUnknownOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

ServerUnknownOpts contains settings to configure generation options.

type SetDSCPDotConfigOpts

type SetDSCPDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

SetDSCPDotConfigOpts contains settings to configure generation options.

type StorageDotConfigOpts

type StorageDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

StorageDotConfigOpts contains settings to configure generation options.

type SysCtlDotConfOpts

type SysCtlDotConfOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

SysCtlDotConfOpts contains settings to configure generation options.

type TLSVersion

type TLSVersion string

func StringToTLSVersion

func StringToTLSVersion(st string) TLSVersion

StringToTLSVersion returns the TLSVersion or TLSVersionInvalid if the string is not a TLS Version enum.

type TopologyCacheTier

type TopologyCacheTier string

TopologyCacheTier is the position of a cache in the topology. Note this is the cache tier itself, notwithstanding MSO. So for an MSO service, Caches immediately before the origin are the TopologyCacheTierLast, even for MSO.

type TopologyName

type TopologyName string

type TopologyPlacement

type TopologyPlacement struct {
	// InTopology is whether the server is in the topology at all.
	InTopology bool
	// IsFirstCacheTier is whether the server is the first cache tier. Note if the server is the only tier, both IsFirstCacheTier and IsLastCacheTier may be true.
	IsFirstCacheTier bool
	// IsInnerCacheTier is whether the server is an inner cache tier. This will never be true if IsFirstCacheTier or IsLstCacheTier are true.
	IsInnerCacheTier bool
	// IsLastCacheTier is whether the server is the last cache tier. Note if the server is the only tier, both IsFirstCacheTier and IsLastCacheTier may be true.
	// Note this is distinct from IsLastTier, which will be false for the last cache tier of MSO.
	IsLastCacheTier bool
	// IsLastTier is whether the server is the last tier in the topology.
	// Note this is different than IsLastCacheTier for MSO vs non-MSO. For MSO, the last tier is the Origin. For non-MSO, the last tier is the last cache tier.
	IsLastTier bool
}

TopologyPlacement contains data about the placement of a server in a topology.

type URISigningConfigOpts

type URISigningConfigOpts struct {
}

URISigningConfigOpts contains settings to configure generation options.

type URLSigConfigOpts

type URLSigConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

URLSigConfigOpts contains settings to configure generation options.

type VolumeDotConfigOpts

type VolumeDotConfigOpts struct {
	// HdrComment is the header comment to include at the beginning of the file.
	// This should be the text desired, without comment syntax (like # or //). The file's comment syntax will be added.
	// To omit the header comment, pass the empty string.
	HdrComment string
}

VolumeDotConfigOpts contains settings to configure generation options.

Jump to

Keyboard shortcuts

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