feat(waf): complete composable rule orchestration

Add the React Flow rule editor, ordered graph APIs and runtime DAG execution.\n\nPublish rules only on OpenResty reload and reconcile checksum-driven IP group snapshots in bounded shared memory.
This commit is contained in:
ryan
2026-07-13 14:16:55 +08:00
parent d36409fbf9
commit a1a997bcda
72 changed files with 5897 additions and 3080 deletions
@@ -0,0 +1,27 @@
-- +goose Up
ALTER TABLE of_waf_rule_groups DROP COLUMN block_status_code;
ALTER TABLE of_waf_rule_groups DROP COLUMN block_response_body;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_whitelist;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_blacklist;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_whitelist_groups;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_blacklist_groups;
ALTER TABLE of_waf_rule_groups DROP COLUMN country_whitelist;
ALTER TABLE of_waf_rule_groups DROP COLUMN country_blacklist;
ALTER TABLE of_waf_rule_groups DROP COLUMN region_whitelist;
ALTER TABLE of_waf_rule_groups DROP COLUMN region_blacklist;
ALTER TABLE of_waf_rule_groups DROP COLUMN pow_enabled;
ALTER TABLE of_waf_rule_groups DROP COLUMN pow_config;
-- +goose Down
ALTER TABLE of_waf_rule_groups ADD COLUMN block_status_code INTEGER NOT NULL DEFAULT 418;
ALTER TABLE of_waf_rule_groups ADD COLUMN block_response_body TEXT NOT NULL DEFAULT '';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_whitelist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_blacklist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_whitelist_groups TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_blacklist_groups TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN country_whitelist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN country_blacklist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN region_whitelist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN region_blacklist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN pow_enabled BOOLEAN NOT NULL DEFAULT FALSE;
ALTER TABLE of_waf_rule_groups ADD COLUMN pow_config TEXT NOT NULL DEFAULT '{}';
@@ -0,0 +1,27 @@
-- +goose Up
ALTER TABLE of_waf_rule_groups DROP COLUMN block_status_code;
ALTER TABLE of_waf_rule_groups DROP COLUMN block_response_body;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_whitelist;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_blacklist;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_whitelist_groups;
ALTER TABLE of_waf_rule_groups DROP COLUMN ip_blacklist_groups;
ALTER TABLE of_waf_rule_groups DROP COLUMN country_whitelist;
ALTER TABLE of_waf_rule_groups DROP COLUMN country_blacklist;
ALTER TABLE of_waf_rule_groups DROP COLUMN region_whitelist;
ALTER TABLE of_waf_rule_groups DROP COLUMN region_blacklist;
ALTER TABLE of_waf_rule_groups DROP COLUMN pow_enabled;
ALTER TABLE of_waf_rule_groups DROP COLUMN pow_config;
-- +goose Down
ALTER TABLE of_waf_rule_groups ADD COLUMN block_status_code INTEGER NOT NULL DEFAULT 418;
ALTER TABLE of_waf_rule_groups ADD COLUMN block_response_body TEXT NOT NULL DEFAULT '';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_whitelist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_blacklist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_whitelist_groups TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN ip_blacklist_groups TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN country_whitelist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN country_blacklist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN region_whitelist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN region_blacklist TEXT NOT NULL DEFAULT '[]';
ALTER TABLE of_waf_rule_groups ADD COLUMN pow_enabled BOOLEAN NOT NULL DEFAULT 0;
ALTER TABLE of_waf_rule_groups ADD COLUMN pow_config TEXT NOT NULL DEFAULT '{}';