| Index: modules/fail2ban/manifests/filter.pp | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/modules/fail2ban/manifests/filter.pp | 
| @@ -0,0 +1,44 @@ | 
| +# == Type: fail2ban::filter | 
| +# | 
| +# Manage filter information and files for any custom filter. | 
| +# | 
| +# == Parameters: | 
| +# | 
| +# [*failregex*] | 
| +# Array of strings containing the regular expressions applied to | 
| +# the filter. | 
| +# | 
| +# [*ensure*] | 
| +# Translates directly into the state of the file resource. | 
| +# | 
| +# === Examples: | 
| +# | 
| +# fail2ban::filter => {'CVE-2013-0235': | 
| +# failregex => [ | 
| +# '^<HOST>.*\"WordPress\/.*', | 
| +# '^.*\"WordPress\/.*<HOST>.*' | 
| +# ], | 
| +# 'ensure' => 'present', | 
| +# } | 
| +define fail2ban::filter ( | 
| + $failregex = [], | 
| + $ensure = 'present', | 
| +) { | 
| + | 
| + include fail2ban | 
| + include stdlib | 
| + | 
| + if (size($failregex) == 0) and ($ensure == 'present') { | 
| + fail('Require an array of string[s] with the regex patterns to apply.') | 
| + } | 
| + | 
| + file {"/etc/fail2ban/filter.d/$title.conf": | 
| + ensure => $ensure, | 
| + content => template("fail2ban/filter.erb"), | 
| + group => 'root', | 
| + mode => '0644', | 
| + owner => 'root', | 
| + require => Package['fail2ban'], | 
| + notify => Service['fail2ban'], | 
| + } | 
| +} |