From 603df85ceacfc51b1b20719f9019820b13c0d5f4 Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Mon, 4 Feb 2013 14:27:14 +0200 Subject: [PATCH 1/3] Added init script for abusehelper botnets $abusehelper_botnets is an array of botnet paths to be started at boot, for example: $abusehelper_botnets = ["/var/lib/ah2/botnet1", "/var/lib/ah2/botnet2"] --- abusehelper/files/botnet.init | 81 ++++++++++++++++++++++ abusehelper/manifests/init.pp | 41 ++++++++++- abusehelper/templates/botnet.sysconfig.erb | 2 + 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 abusehelper/files/botnet.init create mode 100644 abusehelper/templates/botnet.sysconfig.erb 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(" ") %>" From cf86b4c652676dee3e6283644fa4fa2b05a7cfe7 Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Mon, 4 Feb 2013 15:01:00 +0200 Subject: [PATCH 2/3] Properly enable botnet service --- abusehelper/manifests/init.pp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/abusehelper/manifests/init.pp b/abusehelper/manifests/init.pp index 11a6626..2db1f5d 100644 --- a/abusehelper/manifests/init.pp +++ b/abusehelper/manifests/init.pp @@ -118,14 +118,6 @@ class abusehelper { } 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 ? { @@ -139,6 +131,26 @@ class abusehelper { content => template("abusehelper/botnet.sysconfig.erb"), before => Service["botnet"], } + + file { "/etc/init.d/botnet": + ensure => present, + mode => "0755", + owner => "root", + group => "root", + source => "puppet:///modules/abusehelper/botnet.init", + notify => Exec["add-service-botnet"], + } + exec { "add-service-botnet": + path => "/bin:/usr/bin:/sbin:/usr/sbin", + command => $::operatingsystem ? { + "debian" => "update-rc.d botnet defaults", + "ubuntu" => "update-rc.d botnet defaults", + default => "chkconfig --add botnet", + }, + refreshonly => true, + before => Service["botnet"], + } + service { "botnet": enable => true, } From f1004b8027f60d1af97395f45e6f3135d43e237a Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Mon, 4 Feb 2013 16:06:00 +0200 Subject: [PATCH 3/3] Updated rails version number to 2.3.16 on CentOS 6 Run 'gem cleanup' and restart puppetmaster after puppet run to remove the old version. --- ruby/manifests/init.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/manifests/init.pp b/ruby/manifests/init.pp index 18d25d0..c50dd44 100644 --- a/ruby/manifests/init.pp +++ b/ruby/manifests/init.pp @@ -52,7 +52,7 @@ class ruby::rails { } else { require ruby::rubygems package { "rubygem-rails": - ensure => "2.3.15", + ensure => "2.3.16", name => "rails", provider => "gem", }