module LibSqreen::WAF
Public Class Methods
[]=(p1, p2)
click to toggle source
static VALUE libsqreen_waf_set(VALUE self, VALUE name, VALUE rules) { (void)self; char * pw_name; char * pw_rules; bool pw_result; VALUE result; Check_Type(name, T_STRING); Check_Type(rules, T_STRING); pw_name = StringValueCStr(name); pw_rules = StringValueCStr(rules); pw_result = pw_init(pw_name, pw_rules, &pw_config, NULL); result = pw_result ? Qtrue : Qfalse; return result; }
clear()
click to toggle source
static VALUE libsqreen_waf_clear(VALUE self) { (void)self; pw_clearAll(); return Qnil; }
delete(p1)
click to toggle source
static VALUE libsqreen_waf_delete(VALUE self, VALUE name) { (void)self; char * pw_name; Check_Type(name, T_STRING); pw_name = StringValueCStr(name); pw_clearRule(pw_name); return Qnil; }
run(p1, p2, p3, p4 = v4)
click to toggle source
static VALUE libsqreen_waf_run(int argc, const VALUE *argv, VALUE self) { (void)self; VALUE name, args, budget, max_run_budget; rb_scan_args(argc, argv, "31", &name, &args, &budget, &max_run_budget); PWRet pw_ret; VALUE result = rb_ary_new(); Check_Type(name, T_STRING); Check_Type(args, T_HASH); Check_Type(budget, T_FIXNUM); if (!NIL_P(max_run_budget)) { Check_Type(max_run_budget, T_FIXNUM); } int64_t gen_budget = (int64_t)FIX2LONG(budget); // in us struct timespec start = get_time_mono(); VALUE waf_args = libsqreen_waf_args_new_from_hash(args); PWArgs pw_args = *libsqreen_waf_args_get_boxed(waf_args); const char *pw_name = StringValueCStr(name); size_t run_budget = calc_run_budget(start, gen_budget, max_run_budget); if (run_budget == 0) { rb_ary_push(result, ID2SYM(rb_intern("timeout"))); rb_ary_push(result, Qnil); return result; } pw_ret = pw_run(pw_name, pw_args, run_budget); rb_ary_push(result, ret_code_to_sym(pw_ret.action)); rb_ary_push(result, pw_ret.data == NULL ? Qnil : rb_str_new2(pw_ret.data)); libsqreen_waf_args_invalidate(waf_args); pw_freeReturn(pw_ret); return result; }
set(p1, p2)
click to toggle source
static VALUE libsqreen_waf_set(VALUE self, VALUE name, VALUE rules) { (void)self; char * pw_name; char * pw_rules; bool pw_result; VALUE result; Check_Type(name, T_STRING); Check_Type(rules, T_STRING); pw_name = StringValueCStr(name); pw_rules = StringValueCStr(rules); pw_result = pw_init(pw_name, pw_rules, &pw_config, NULL); result = pw_result ? Qtrue : Qfalse; return result; }