ServerStatus icon indicating copy to clipboard operation
ServerStatus copied to clipboard

还是watchdog的规则问题&username=xxx

Open ztdz opened this issue 2 years ago • 8 comments

之前那个是别人提的被你关闭了,我看了你提交的改动和源码 你的改动意思是把rule从拼接串里面去掉对吧 然后你的这段代码 symbol_table_t symbol_table; symbol_table.add_variable("load_1",load_1); symbol_table.add_variable("load_5",load_5); symbol_table.add_variable("load_15",load_15); symbol_table.add_variable("ping_10010",ping_10010); symbol_table.add_variable("ping_189",ping_189); symbol_table.add_variable("ping_10086",ping_10086); symbol_table.add_variable("time_10010",time_10010); symbol_table.add_variable("time_189",time_189); symbol_table.add_variable("time_10086",time_10086); symbol_table.add_variable("tcp_count",tcp_count); symbol_table.add_variable("udp_count",udp_count); symbol_table.add_variable("process_count",process_count); symbol_table.add_variable("thread_count",thread_count); symbol_table.add_variable("network_rx",network_rx); symbol_table.add_variable("network_tx",network_tx); symbol_table.add_variable("network_in",network_in); symbol_table.add_variable("network_out",network_out); symbol_table.add_variable("memory_total",memory_total); symbol_table.add_variable("memory_used",memory_used); symbol_table.add_variable("swap_total",swap_total); symbol_table.add_variable("swap_used",swap_used); symbol_table.add_variable("hdd_total",hdd_total); symbol_table.add_variable("hdd_used",hdd_used); symbol_table.add_variable("io_read",io_read); symbol_table.add_variable("io_write",io_write); symbol_table.add_variable("cpu",cpu); symbol_table.add_variable("online4",online4); symbol_table.add_variable("online6",online6); symbol_table.add_constants();

    expression_t expression;
    expression.register_symbol_table(symbol_table);

    parser_t parser;
    parser.compile(expression_string,expression);

    if (expression.value() > 0)

是不是没有添加进username和name这些固定字段?所以才导致&username=xxx这种不会匹配到规则导致失效?

symbol_table.add_constants(); 这个我不是很懂,我不是写c的我只是会点Java,如果这个里面是加入那些固定值的操作,那我着实找不着原因了

ztdz avatar Oct 13 '23 14:10 ztdz

我用你最新代码编译一样不行,其实你改动那块去掉rule拼接对我应该也没啥影响,我用的是telegram的bot,按你的说法,转义应该不存在

ztdz avatar Oct 13 '23 14:10 ztdz

之前那个是别人提的被你关闭了,我看了你提交的改动和源码 你的改动意思是把rule从拼接串里面去掉对吧 然后你的这段代码 symbol_table_t symbol_table; symbol_table.add_variable("load_1",load_1); symbol_table.add_variable("load_5",load_5); symbol_table.add_variable("load_15",load_15); symbol_table.add_variable("ping_10010",ping_10010); symbol_table.add_variable("ping_189",ping_189); symbol_table.add_variable("ping_10086",ping_10086); symbol_table.add_variable("time_10010",time_10010); symbol_table.add_variable("time_189",time_189); symbol_table.add_variable("time_10086",time_10086); symbol_table.add_variable("tcp_count",tcp_count); symbol_table.add_variable("udp_count",udp_count); symbol_table.add_variable("process_count",process_count); symbol_table.add_variable("thread_count",thread_count); symbol_table.add_variable("network_rx",network_rx); symbol_table.add_variable("network_tx",network_tx); symbol_table.add_variable("network_in",network_in); symbol_table.add_variable("network_out",network_out); symbol_table.add_variable("memory_total",memory_total); symbol_table.add_variable("memory_used",memory_used); symbol_table.add_variable("swap_total",swap_total); symbol_table.add_variable("swap_used",swap_used); symbol_table.add_variable("hdd_total",hdd_total); symbol_table.add_variable("hdd_used",hdd_used); symbol_table.add_variable("io_read",io_read); symbol_table.add_variable("io_write",io_write); symbol_table.add_variable("cpu",cpu); symbol_table.add_variable("online4",online4); symbol_table.add_variable("online6",online6); symbol_table.add_constants();

    expression_t expression;
    expression.register_symbol_table(symbol_table);

    parser_t parser;
    parser.compile(expression_string,expression);

    if (expression.value() > 0)

是不是没有添加进username和name这些固定字段?所以才导致&username=xxx这种不会匹配到规则导致失效?

symbol_table.add_constants(); 这个我不是很懂,我不是写c的我只是会点Java,如果这个里面是加入那些固定值的操作,那我着实找不着原因了

这个是表达式断言,现在不支持静态字符串,只支持数学表达式。例如int / float /double 以及数学变量 等是支持的。

下个版本我看看怎么解决。

cppla avatar Oct 14 '23 13:10 cppla

那看来有点难搞,要么换个支持的,要么自己解析? 把字符串的单独抽出去,提前分组,机器有id,表达式也搞个id,一对多映射怎么样

ztdz avatar Oct 14 '23 14:10 ztdz

那看来有点难搞,要么换个支持的,要么自己解析? 把字符串的单独抽出去,提前分组,机器有id,表达式也搞个id,一对多映射怎么样

对,难倒是不难,然而C++开发周期比较长费时间

cppla avatar Oct 16 '23 01:10 cppla

exprtk最新版本已经支持静态字符串参与计算,1.1.1 已经添加该功能,可以测试下。@ztdt

cppla avatar Oct 16 '23 10:10 cppla

好的谢谢,等我有空的时候升级下试试

ztdz avatar Oct 17 '23 12:10 ztdz

Exprtk库默认使用窄字符类型,中文等Unicode字符无法解析计算,等待修复

cppla avatar Jan 23 '24 10:01 cppla

网络波动导致的错误宕机告警已经解决 docker pull cppla/serverstatus:latest

cppla avatar Apr 03 '24 14:04 cppla