diff --git a/cdist/conf/type/__fail2ban/gencode-remote b/cdist/conf/type/__fail2ban/gencode-remote new file mode 100644 index 00000000..a3f6933c --- /dev/null +++ b/cdist/conf/type/__fail2ban/gencode-remote @@ -0,0 +1,36 @@ +#!/bin/sh +# +# 2016 Simon Walter (simon at explicit dot technology) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +config_file="/etc/fail2ban/jail.conf" + +if [ -f "$__object/parameter/enable-services" ]; then + enable_services="$(cat "$__object/parameter/enable-services")" +else + enable_services="$__object_id" +fi +services="$(echo $enable_services | sed -e 's/,/ /g')" +for service in $services +do + echo "[$(tput setaf 6)info$(tput sgr 0)] Enabling fail2ban for $service..." >&2 + cat << EOF +perl -i -pe 'BEGIN{undef $/;} s/\[$service\].*[\n]*enabled.*=.*\n/\[$service\]\n\nenabled = true\n/g' $config_file +EOF +done +echo "service fail2ban restart" diff --git a/cdist/conf/type/__fail2ban/manifest b/cdist/conf/type/__fail2ban/manifest new file mode 100644 index 00000000..92e98021 --- /dev/null +++ b/cdist/conf/type/__fail2ban/manifest @@ -0,0 +1,39 @@ +#!/bin/sh +# +# 2016 Simon Walter (simon at explicit dot technology) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +os=$(cat "$__global/explorer/os") + +case "$os" in + debian|ubuntu|devuan) + __package iptables --state present + require=__package/iptables __package fail2ban --state present + ;; + centos) + __package epel-release --state present + require=__package/epel-release __package iptables --state present + require=__package/epel-release __package fail2ban --state present + ;; + *) + echo "Your operating system ($os) is currently untested for ${__type##*/}." >&2 + echo "If it works, please add it." >&2 + __package fail2ban --state present + ;; +esac + diff --git a/cdist/conf/type/__fail2ban/parameter/optional b/cdist/conf/type/__fail2ban/parameter/optional new file mode 100644 index 00000000..e43ccb4b --- /dev/null +++ b/cdist/conf/type/__fail2ban/parameter/optional @@ -0,0 +1 @@ +enable-services \ No newline at end of file