tencentcloud-edgeone-migration-nodejs-v2
Version:
tencentcloud cdn config copy to edgeone
110 lines (104 loc) • 2.91 kB
JavaScript
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;