in admin/AmazonAI-Cloudformation.php [596:751]
public function define_template($acm = false, $cf = false) {
$alias = get_option('amazon_cf_alias');
$template_head = '
{
"Resources": {';
$cf_resource = '
"'.$this->args['cf_logical_resourceid'].'": {
"Type": "AWS::CloudFront::Distribution",
"Properties": {
"DistributionConfig": {
"Origins": [{
"DomainName": "'.$this->args['origin'].'",
"Id": "'.$this->args['origin_id'].'",
"CustomOriginConfig": {
"HTTPPort": "80",
"HTTPSPort": "443",
"OriginProtocolPolicy": "match-viewer",
"OriginSSLProtocols" : ["TLSv1", "TLSv1.1", "TLSv1.2"]
}
}],
"HttpVersion" : "http2",
"Enabled": "true",
"Comment": "'.$this->args['comment'].'",
"DefaultRootObject": "",
"Aliases": ["'.$alias.'"],
"CacheBehaviors": [{
"AllowedMethods" : ["GET","HEAD"],
"ForwardedValues" : {
"QueryString": "true",
"Cookies": {
"Forward": "none"
}
},
"PathPattern" : "wp-content/*",
"TargetOriginId" : "'.$this->args['origin_id'].'",
"ViewerProtocolPolicy": "redirect-to-https"
},
{
"AllowedMethods" : ["GET","HEAD"],
"ForwardedValues" : {
"QueryString": "true",
"Cookies": {
"Forward": "none"
}
},
"PathPattern" : "wp-includes/*",
"TargetOriginId" : "'.$this->args['origin_id'].'",
"ViewerProtocolPolicy": "redirect-to-https"
},
{
"AllowedMethods" : ["GET", "HEAD", "OPTIONS", "PUT", "PATCH", "POST", "DELETE"],
"ForwardedValues" : {
"QueryString": "true",
"Cookies": {
"Forward": "all"
},
"Headers": [
"*"
]
},
"PathPattern" : "wp-admin/*",
"TargetOriginId" : "'.$this->args['origin_id'].'",
"ViewerProtocolPolicy": "redirect-to-https"
},
{
"AllowedMethods" : ["GET", "HEAD", "OPTIONS", "PUT", "PATCH", "POST", "DELETE"],
"ForwardedValues" : {
"QueryString": "true",
"Cookies": {
"Forward": "all"
},
"Headers": [
"*"
]
},
"PathPattern" : "wp-login.php",
"TargetOriginId" : "'.$this->args['origin_id'].'",
"ViewerProtocolPolicy": "redirect-to-https"
}],
"DefaultCacheBehavior": {
"AllowedMethods" : ["GET", "HEAD", "OPTIONS", "PUT", "PATCH", "POST", "DELETE"],
"SmoothStreaming": "false",
"ForwardedValues": {
"QueryString": "true",
"Cookies": {
"Forward": "whitelist",
"WhitelistedNames": ["comment_*","wordpress_*","wp-settings-*"]
},
"Headers": [
"Host",
"CloudFront-Forwarded-Proto",
"CloudFront-Is-Desktop-Viewer",
"CloudFront-Is-Mobile-Viewer",
"CloudFront-Is-Tablet-Viewer"
]
},
"TargetOriginId": "'.$this->args['origin_id'].'",
"ViewerProtocolPolicy": "redirect-to-https"
},
"PriceClass": "PriceClass_200",
"Restrictions" : {
"GeoRestriction" : {
"RestrictionType" : "none"
}
},';
if (get_option('acm_arn')) {
$cf_resource = $cf_resource.'
"ViewerCertificate": {
"AcmCertificateArn": "'.get_option('acm_arn').'",
"MinimumProtocolVersion": "TLSv1",
"SslSupportMethod": "sni-only"
}';
}
else {
$cf_resource = $cf_resource.'
"ViewerCertificate": {
"CloudFrontDefaultCertificate": "true"
}';
}
$cf_resource = $cf_resource.'
},
"Tags": [{
"Key": "createdBy",
"Value": "AWSForWordPressPlugin"
}]
}
}';
$acm_resource = '
"'.$this->args['acm_logical_resourceid'].'" : {
"Type" : "AWS::CertificateManager::Certificate",
"Properties" : {
"DomainName" : "'.$this->args['acm_domain'].'",
"ValidationMethod" : "DNS",
"Tags": [{
"Key": "createdBy",
"Value": "AWSForWordPressPlugin"
}]
}
}';
$template_tail = '
}
}';
$template = $template_head;
if($acm and $cf) {
$template = $template.$acm_resource.','.$cf_resource;
}
else if($acm) {
$template = $template.$acm_resource;
}
$template = $template.$template_tail;
$this->args['template'] = $template;
return $template;
}