TSG-1531 TFE 新增 DOH 插件
1.DOH 协议解析 2.DOH 协议还原 3.DOH POST请求 early response 4.DOH 策略扫描 5.tfe plugin 支持多个 bussiness 插件调用 6.Maat_feather 的创建从 pangu 剥离(涉及pangu/doh/ssl-policy) 7.增加 kafka 日志 8.增加测试用例
This commit is contained in:
@@ -154,4 +154,76 @@ cleanup:
|
||||
return content;
|
||||
}
|
||||
|
||||
static int tfe_decode_base64_internal(u_char *dst, u_char *src, const u_char *basis)
|
||||
{
|
||||
size_t len;
|
||||
u_char *d, *s;
|
||||
|
||||
for (len = 0; len < strlen((char *)src); len++)
|
||||
{
|
||||
if (src[len] == '=')
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (basis[src[len]] == 77)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (len % 4 == 1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
s = src;
|
||||
d = dst;
|
||||
|
||||
while (len > 3)
|
||||
{
|
||||
*d++ = (u_char) (basis[s[0]] << 2 | basis[s[1]] >> 4);
|
||||
*d++ = (u_char) (basis[s[1]] << 4 | basis[s[2]] >> 2);
|
||||
*d++ = (u_char) (basis[s[2]] << 6 | basis[s[3]]);
|
||||
|
||||
s += 4;
|
||||
len -= 4;
|
||||
}
|
||||
|
||||
if (len > 1)
|
||||
{
|
||||
*d++ = (u_char) (basis[s[0]] << 2 | basis[s[1]] >> 4);
|
||||
}
|
||||
|
||||
if (len > 2)
|
||||
{
|
||||
*d++ = (u_char) (basis[s[1]] << 4 | basis[s[2]] >> 2);
|
||||
}
|
||||
|
||||
return d - dst;
|
||||
}
|
||||
|
||||
int tfe_decode_base64url(u_char *dst, u_char *src)
|
||||
{
|
||||
static u_char basis64[] = {
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 62, 77, 77,
|
||||
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 77, 77, 77, 77, 77, 77,
|
||||
77, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 77, 77, 77, 77, 63,
|
||||
77, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
|
||||
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 77, 77, 77, 77, 77,
|
||||
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77
|
||||
};
|
||||
|
||||
return tfe_decode_base64_internal(dst, src, basis64);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user