summaryrefslogtreecommitdiffstats
path: root/lib/puppet/daemon.rb
blob: 76b6cc829d26d792d55d695dc9f7fbb4baaae442 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# helper functions for daemons

require 'puppet'

module Puppet
    module Daemon
        def daemonize
            unless Puppet[:logdest] == :file
                Puppet.err "You must reset log destination before daemonizing"
            end
            if pid = fork()
                Process.detach(pid)
                exit(0)
            end

            Process.setsid
            Dir.chdir("/")
            begin
                $stdin.reopen "/dev/null"
                $stdout.reopen "/dev/null", "a"
                $stderr.reopen $stdin
                Log.reopen
            rescue => detail
                File.open("/tmp/daemonout", "w") { |f|
                    f.puts "Could not start %s: %s" % [$0, detail]
                }
                Puppet.err "Could not start %s: %s" % [$0, detail]
                exit(12)
            end
        end

        def httplog
            args = []
            # yuck; separate http logs
            if self.is_a?(Puppet::Server)
                args << Puppet[:masterhttplog]
            else
                args << Puppet[:httplog]
            end
            if Puppet[:debug]
                args << WEBrick::Log::DEBUG
            end
            log = WEBrick::Log.new(*args)

            return log
        end
    end
end

# $Id$