76: def main
77: require 'etc'
78: require 'puppet/file_serving/content'
79: require 'puppet/file_serving/metadata'
80:
81: xmlrpc_handlers = [:Status, :FileServer, :Master, :Report, :Filebucket]
82:
83: xmlrpc_handlers << :CA if Puppet[:ca]
84:
85:
86: Puppet::SSL::Host.localhost
87:
88:
89:
90: Puppet::SSL::Host.ca_location = :only if Puppet::SSL::CertificateAuthority.ca?
91:
92: if Puppet.features.root?
93: begin
94: Puppet::Util.chuser
95: rescue => detail
96: puts detail.backtrace if Puppet[:trace]
97: $stderr.puts "Could not change user to #{Puppet[:user]}: #{detail}"
98: exit(39)
99: end
100: end
101:
102: unless options[:rack]
103: require 'puppet/network/server'
104: @daemon.server = Puppet::Network::Server.new(:xmlrpc_handlers => xmlrpc_handlers)
105: @daemon.daemonize if Puppet[:daemonize]
106: else
107: require 'puppet/network/http/rack'
108: @app = Puppet::Network::HTTP::Rack.new(:xmlrpc_handlers => xmlrpc_handlers, :protocols => [:rest, :xmlrpc])
109: end
110:
111: Puppet.notice "Starting Puppet master version #{Puppet.version}"
112:
113: unless options[:rack]
114: @daemon.start
115: else
116: return @app
117: end
118: end