diff --git a/abusehelper/files/botnet.init b/abusehelper/files/botnet.init new file mode 100644 index 0000000..c22784c --- /dev/null +++ b/abusehelper/files/botnet.init @@ -0,0 +1,81 @@ +#!/bin/sh + +# chkconfig: 2345 85 60 +# description: AbuseHelper botnets +# processname: botnet + +### BEGIN INIT INFO +# Provides: botnet +# Required-Start: $local_fs $network $syslog +# Should-Start: +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: AbuseHelper botnets +# Description: AbuseHelper botnets +### END INIT INFO + +if [ $(id -u) != "0" ]; then + echo "This script must be run with root privileges." && exit 1 +fi + +if [ -s /etc/default/botnet ]; then + . /etc/default/botnet +elif [ -s /etc/sysconfig/botnet ]; then + . /etc/sysconfig/botnet +fi + +if [ -z "${BOTUSER}" ]; then + echo "$0: no BOTUSER defined" + exit 1 +fi + +if [ -z "${BOTNETS}" ]; then + echo "$0: no BOTNETS defined" + exit 1 +fi + +start_botnets() { + for botnet in ${BOTNETS}; do + echo -n "${botnet}: " + test -d ${botnet} || { echo "No such directory."; continue; } + su -s /bin/sh - ${BOTUSER} \ + -c "umask 007 ; cd ${botnet} && botnet start ." + done +} + +stop_botnets() { + for botnet in ${BOTNETS}; do + echo -n "${botnet}: " + test -d ${botnet} || { echo "No such directory."; continue; } + su -s /bin/sh - ${BOTUSER} \ + -c "umask 007 ; cd ${botnet} && botnet stop ." + done +} + +restart_botnets() { + for botnet in ${BOTNETS}; do + echo -n "${botnet}: " + test -d ${botnet} || { echo "No such directory."; continue; } + su -s /bin/sh - ${BOTUSER} \ + -c "umask 007 ; cd ${botnet} && botnet restart ." + done +} + +case "$1" in + start) + start_botnets + ;; + stop) + stop_botnets + ;; + restart) + restart_botnets + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/abusehelper/manifests/init.pp b/abusehelper/manifests/init.pp index f9bb072..11a6626 100644 --- a/abusehelper/manifests/init.pp +++ b/abusehelper/manifests/init.pp @@ -1,4 +1,12 @@ -# Install abusehelper from svn. +# Install abusehelper. +# +# === Global variables +# +# $abusehelper_botnets +# Array of botnet paths to start at boot. +# +# $abusehelper_user +# User botnets run as. Defaults to 'abusehel'. # class abusehelper { @@ -105,4 +113,35 @@ class abusehelper { } } + if !$abusehelper_user { + $abusehelper_user = "abusehel" + } + + if $abusehelper_botnets { + file { "/etc/init.d/botnet": + ensure => present, + mode => "0755", + owner => "root", + group => "root", + source => "puppet:///modules/abusehelper/botnet.init", + before => Service["botnet"], + } + file { "/etc/sysconfig/botnet": + ensure => present, + name => $::operatingsystem ? { + "debian" => "/etc/default/botnet", + "ubuntu" => "/etc/default/botnet", + default => "/etc/sysconfig/botnet", + }, + mode => "0644", + owner => "root", + group => "root", + content => template("abusehelper/botnet.sysconfig.erb"), + before => Service["botnet"], + } + service { "botnet": + enable => true, + } + } + } diff --git a/abusehelper/templates/botnet.sysconfig.erb b/abusehelper/templates/botnet.sysconfig.erb new file mode 100644 index 0000000..e1dc5d6 --- /dev/null +++ b/abusehelper/templates/botnet.sysconfig.erb @@ -0,0 +1,2 @@ +BOTUSER="<%= abusehelper_user %>" +BOTNETS="<%= abusehelper_botnets.join(" ") %>"