% content_for :title, "Rules - #{@project.name}" %>
Manage WAF rules for traffic filtering and control
| Rule | Type | Action | Target | Status | Created | Actions |
|---|---|---|---|---|---|---|
|
<%= link_to "Rule ##{rule.id}", rule_path(rule), class: "text-blue-600 hover:text-blue-900" %>
<%= rule.source.humanize %>
<% if rule.network_range? && rule.network_range %>
• <%= link_to rule.network_range.cidr, network_range_path(rule.network_range), class: "text-blue-600 hover:text-blue-900" %>
<% end %>
|
<%= rule.rule_type.humanize %> | <%= rule.action.upcase %> |
<% if rule.network_range? && rule.network_range %>
<%= rule.network_range.cidr %>
<% if rule.network_range.company.present? %>
<%= rule.network_range.company %>
<% end %>
<% elsif rule.conditions.present? %>
<%= JSON.parse(rule.conditions || "{}").map { |k, v| "#{k}: #{v}" }.join(", ") rescue "Invalid JSON" %>
<% else %>
-
<% end %>
|
<% if rule.enabled? && !rule.expired? %>
Active
<% elsif rule.expired? %>
Expired
<% else %>
Disabled
<% end %>
<% if rule.expires_at.present? %>
<%= distance_of_time_in_words(Time.current, rule.expires_at) %> left
<% end %>
|
<%= time_ago_in_words(rule.created_at) %> ago
by <%= rule.user&.email_address || 'System' %>
|
<%= link_to "View", rule_path(rule), class: "text-blue-600 hover:text-blue-900 mr-3" %> <% if rule.enabled? %> <%= link_to "Disable", disable_rule_path(rule), method: :post, data: { confirm: "Are you sure you want to disable this rule?" }, class: "text-yellow-600 hover:text-yellow-900 mr-3" %> <% else %> <%= link_to "Enable", enable_rule_path(rule), method: :post, class: "text-green-600 hover:text-green-900 mr-3" %> <% end %> <%= link_to "Edit", edit_rule_path(rule), class: "text-indigo-600 hover:text-indigo-900" %> |
Get started by creating your first WAF rule.