diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/ii/manifests/init.pp | 14 | ||||
-rw-r--r-- | modules/ii/templates/ii_wrapper.pl | 10 |
2 files changed, 20 insertions, 4 deletions
diff --git a/modules/ii/manifests/init.pp b/modules/ii/manifests/init.pp index e0e9b5c7..c024bc49 100644 --- a/modules/ii/manifests/init.pp +++ b/modules/ii/manifests/init.pp @@ -14,15 +14,21 @@ class ii { $nick = $name include ii::base + # a custom wrappper is needed since ii do not fork in the + # background, and bash is not able to properly do it + local_script { "ii_$nick": + content => "ii/ii_wrapper.pl", + require => Class['ii::base'], + } service { 'ii': provider => base, - start => "su nobody -c 'nohup ii -n $nick -i /var/lib/ii/$nick -s $server'", - notify => Exec["join channel"], - require => Class['ii::base'], + start => "/usr/local/bin/ii_$nick", + notify => Exec["join channel $nick"], + require => Local_script["ii_$nick"], } - exec { "join channel": + exec { "join channel $nick": command => "echo '/j $channel' > /var/lib/ii/$nick/$server/in", user => nobody, refreshonly => true, diff --git a/modules/ii/templates/ii_wrapper.pl b/modules/ii/templates/ii_wrapper.pl new file mode 100644 index 00000000..da3a380f --- /dev/null +++ b/modules/ii/templates/ii_wrapper.pl @@ -0,0 +1,10 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Proc::Daemon; +my $nick = "<%= nick %>"; +my $server = "<%= server %>"; + +Proc::Daemon::Init(); +fork() || exec "ii -n $nick -i /var/lib/ii/$nick -s $server"; +wait(); |