nfqws: optimize tls mod parse

This commit is contained in:
bol-van 2025-04-06 11:53:57 +03:00
parent d04419a60c
commit 6e1e7e43bc

View File

@ -950,12 +950,12 @@ static bool parse_ip_list(char *opt, ipset *pp)
return true;
}
static bool parse_tlsmod_list(char *opt, uint32_t *mod, char *sni, size_t sni_buf_len)
static bool parse_tlsmod_list(char *opt, struct fake_tls_mod *tls_mod)
{
char *e,*e2,*p,c,c2;
*mod &= FAKE_TLS_MOD_SAVE_MASK;
*mod |= FAKE_TLS_MOD_SET;
tls_mod->mod &= FAKE_TLS_MOD_SAVE_MASK;
tls_mod->mod |= FAKE_TLS_MOD_SET;
for (p=opt ; p ; )
{
for (e2=p ; *e2 && *e2!=',' && *e2!='=' ; e2++);
@ -975,20 +975,20 @@ static bool parse_tlsmod_list(char *opt, uint32_t *mod, char *sni, size_t sni_bu
e2=NULL;
if (!strcmp(p,"rnd"))
*mod |= FAKE_TLS_MOD_RND;
tls_mod->mod |= FAKE_TLS_MOD_RND;
else if (!strcmp(p,"rndsni"))
*mod |= FAKE_TLS_MOD_RND_SNI;
tls_mod->mod |= FAKE_TLS_MOD_RND_SNI;
else if (!strcmp(p,"sni"))
{
*mod |= FAKE_TLS_MOD_SNI;
tls_mod->mod |= FAKE_TLS_MOD_SNI;
if (!e2 || !e2[1] || e2[1]==',') goto err;
strncpy(sni,e2+1,sni_buf_len-1);
sni[sni_buf_len-1]=0;
strncpy(tls_mod->sni,e2+1,sizeof(tls_mod->sni)-1);
tls_mod->sni[sizeof(tls_mod->sni)-1-1]=0;
}
else if (!strcmp(p,"padencap"))
*mod |= FAKE_TLS_MOD_PADENCAP;
tls_mod->mod |= FAKE_TLS_MOD_PADENCAP;
else if (!strcmp(p,"dupsid"))
*mod |= FAKE_TLS_MOD_DUP_SID;
tls_mod->mod |= FAKE_TLS_MOD_DUP_SID;
else if (strcmp(p,"none"))
goto err;
@ -2128,7 +2128,7 @@ int main(int argc, char **argv)
}
break;
case 40: /* dpi-desync-fake-tls-mod */
if (!parse_tlsmod_list(optarg,&dp->tls_mod_last.mod,dp->tls_mod_last.sni,sizeof(dp->tls_mod_last.sni)))
if (!parse_tlsmod_list(optarg,&dp->tls_mod_last))
{
DLOG_ERR("Invalid tls mod : %s\n",optarg);
exit_clean(1);