UNPKG

tencentcloud-edgeone-migration-nodejs-v2

Version:

tencentcloud cdn config copy to edgeone

110 lines (104 loc) 2.91 kB
const utils = require('../utils'); const { t } = require("../../i18n/trans"); const genLog = require("../../logGenerator"); function RequestHeader(domain, domainConfig, ruleTransferLog) { const keyConfig = domainConfig.RequestHeader; if (!keyConfig || !keyConfig.HeaderRules || !keyConfig.HeaderRules.length || keyConfig.Switch !== 'on') { ruleTransferLog.push({ config: t('回源HTTP请求头配置(RequestHeader)'), result: t('未配置'), detail: '' }); genLog.defaultLog(`${t('回源HTTP请求头配置(RequestHeader)')}${t('未配置')}`) return null; } const { HeaderRules } = keyConfig; const eoRules = []; // 反向添加规则(CDN的规则优先级跟EO相反) HeaderRules.forEach(rule => { let eoRule = {}; if (utils.getTarget(rule.RuleType) !== 'host') { eoRule = { 'Rules': [ { 'Conditions': [ { 'Conditions': [ { 'Operator': 'equal', 'Target': utils.getTarget(rule.RuleType), 'IgnoreCase': false, 'Values': rule.RuleType === 'path' ? rule.RulePaths.map(path => { return `https://${domain}${path}`; }) : rule.RulePaths } ] } ], 'Actions': [] } ], 'Tags': [] }; } else { eoRule = { 'Rules': [ { 'Conditions': [ { 'Conditions': [ { 'Operator': 'equal', 'Target': 'host', 'Values': [ 'all' ] } ] } ], 'Actions': [] } ], 'Tags': [] }; } if (rule.HeaderMode === 'del') { eoRule.Rules[0].Actions.push({ 'RewriteAction': { 'Action': 'RequestHeader', 'Parameters': [ { 'Action': rule.HeaderMode, 'Name': rule.HeaderName, } ] } }); } else { eoRule.Rules[0].Actions.push({ 'RewriteAction': { 'Action': 'RequestHeader', 'Parameters': [ { 'Action': rule.HeaderMode, 'Name': rule.HeaderName, 'Values': [rule.HeaderValue === '$host' ? '${http.request.host}' : rule.HeaderValue] } ] } }); } eoRules.push(eoRule); }); ruleTransferLog.push({ config: t('回源HTTP请求头配置(RequestHeader)'), result: t('成功'), detail: '' }); genLog.successLog(`${t('回源HTTP请求头配置(RequestHeader)')}${t('成功')}`) return eoRules; } module.exports = RequestHeader;