Module: LibSqreen::WAF

Defined in:
ext/libsqreen_extension/libsqreen_extension.c

Defined Under Namespace

Classes: Args

Constant Summary collapse

BUDGET_MAX =
ULL2NUM((size_t)-1)

Class Method Summary collapse

Class Method Details

.[]=(name, rules) ⇒ Object



128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 128

static VALUE
libsqreen_waf_set(VALUE self, VALUE name, VALUE rules) {
    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 = powerwaf_initializePowerWAF(pw_name, pw_rules);

    result = pw_result ? Qtrue : Qfalse;

    return result;
}

.clearObject



159
160
161
162
163
164
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 159

static VALUE
libsqreen_waf_clear(VALUE self) {
    powerwaf_clearAll();

    return Qnil;
}

.delete(name) ⇒ Object



147
148
149
150
151
152
153
154
155
156
157
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 147

static VALUE
libsqreen_waf_delete(VALUE self, VALUE name) {
    char * pw_name;

    Check_Type(name, T_STRING);

    pw_name = StringValueCStr(name);
    powerwaf_clearRule(pw_name);

    return Qnil;
}

.log_disableObject



445
446
447
448
449
450
451
452
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 445

static VALUE
libsqreen_waf_log_disable(VALUE self) {
    PW_LOG_LEVEL level = PWL_ERROR;

    powerwaf_setupLogging(NULL, level);

    return Qnil;
}

.log_level=(severity) ⇒ Object



433
434
435
436
437
438
439
440
441
442
443
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 433

static VALUE
libsqreen_waf_log_enable(VALUE self, VALUE severity) {
    PW_LOG_LEVEL level;

    Check_Type(severity, T_SYMBOL);

    level = sym_to_log_level(severity);
    powerwaf_setupLogging((powerwaf_logging_cb_t)on_log, level);

    return Qnil;
}

.loggerObject



472
473
474
475
476
477
478
479
480
481
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 472

static VALUE
libsqreen_waf_get_logger(VALUE self) {
    VALUE logger;
    ID i_logger;

    i_logger = rb_intern("@logger");
    logger = rb_ivar_get(self, i_logger);

    return logger;
}

.logger=(logger) ⇒ Object



454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 454

static VALUE
libsqreen_waf_set_logger(VALUE self, VALUE logger) {
    ID i_logger;

    if (logger == Qnil) {
        libsqreen_waf_log_disable(self);
    }

    i_logger = rb_intern("@logger");
    rb_ivar_set(self, i_logger, logger);

    if (logger != Qnil) {
        libsqreen_waf_log_enable(self, ID2SYM(rb_intern("error")));
    }

    return logger;
}

.run(name, args, budget) ⇒ Object



323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
# File 'ext/libsqreen_extension/libsqreen_extension.c', line 323

static VALUE
libsqreen_waf_run(VALUE self, VALUE name, VALUE args, VALUE budget) {
    VALUE waf_args;
    char *pw_name;
    PWArgs pw_args;
    size_t pw_budget;
    PWRet *pw_ret;
    VALUE result;

    Check_Type(name, T_STRING);
    Check_Type(args, T_HASH);
    Check_Type(budget, T_FIXNUM);

    waf_args = libsqreen_waf_args_new_from_hash(args);
    pw_args = *(PWArgs *)libsqreen_waf_args_get_boxed(waf_args);
    pw_budget = FIX2LONG(budget);
    pw_name = StringValueCStr(name);
	pw_ret = powerwaf_runPowerWAF(pw_name, &pw_args, pw_budget);

    result = rb_ary_new();
    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));

	powerwaf_freeInput(&pw_args, false);
	powerwaf_freeReturn(pw_ret);

    return result;
}