public
Rubygem
Description: Merb Core: All you need. None you don't.
Homepage: http://www.merbivore.com
Clone URL: git://github.com/wycats/merb-core.git
Search Repo:
Make change_priveledge actually work
ezmobius (author)
Sat May 03 18:21:08 -0700 2008
commit  76f58a0c22c40e3d86dc7fd7b4601abbfa0fa4d5
tree    37ee46b92802d5bc62ed1f7b2c607868a99cd6d8
parent  770bf3caabf070769d14a0e26e4f1792cffa2737
...
16
17
18
19
 
 
 
20
21
22
...
16
17
18
 
19
20
21
22
23
24
0
@@ -16,7 +16,9 @@
0
       def self.start(opts={})
0
         Merb.logger.warn!("Using Ebb adapter")
0
         Merb::Dispatcher.use_mutex = false
0
- ::Ebb.start_server(opts[:app], opts)
0
+ th = Thread.new { ::Ebb.start_server(opts[:app], opts) }
0
+ Merb::Server.change_privilege
0
+ th.join
0
       end
0
     end
0
   end
...
17
18
19
 
20
21
22
...
17
18
19
20
21
22
23
0
@@ -17,6 +17,7 @@
0
         Merb.logger.warn!("Using EventedMongrel adapter")
0
         Merb::Dispatcher.use_mutex = false
0
         server = ::Mongrel::HttpServer.new(opts[:host], opts[:port].to_i)
0
+ Merb::Server.change_privilege
0
         server.register('/', ::Merb::Rack::Handler::Mongrel.new(opts[:app]))
0
         server.run.join
0
       end
...
9
10
11
 
12
13
14
...
9
10
11
12
13
14
15
0
@@ -9,6 +9,7 @@
0
       # :app<String>>:: The application name.
0
       def self.start(opts={})
0
         Merb.logger.warn!("Using FastCGI adapter")
0
+ Merb::Server.change_privilege
0
         ::Rack::Handler::FastCGI.run(opts[:app], opts)
0
       end
0
     end
...
17
18
19
 
20
21
22
...
17
18
19
20
21
22
23
0
@@ -17,6 +17,7 @@
0
       def self.start(opts={})
0
         Merb.logger.warn!("Using Mongrel adapter")
0
         server = ::Mongrel::HttpServer.new(opts[:host], opts[:port].to_i)
0
+ Merb::Server.change_privilege
0
         server.register('/', ::Merb::Rack::Handler::Mongrel.new(opts[:app]))
0
         server.run.join
0
       end
...
13
14
15
 
16
17
18
...
13
14
15
16
17
18
19
0
@@ -13,6 +13,7 @@
0
       # If opts[:runner_code] matches a filename, that file will be read and
0
       # the contents executed. Otherwise the code will be executed directly.
0
       def self.start(opts={})
0
+ Merb::Server.change_privilege
0
         if opts[:runner_code]
0
           if File.exists?(opts[:runner_code])
0
             eval(File.read(opts[:runner_code]), TOPLEVEL_BINDING, __FILE__, __LINE__)
...
20
21
22
 
23
24
25
...
20
21
22
23
24
25
26
0
@@ -20,6 +20,7 @@
0
           opts[:host] = "#{opts[:host]}-#{opts[:port]}"
0
         end
0
         server = ::Thin::Server.start(opts[:host], opts[:port].to_i, opts[:app])
0
+ Merb::Server.change_privilege
0
         ::Thin::Logging.silent = true
0
         server.start!
0
       end
...
27
28
29
 
30
31
32
...
27
28
29
30
31
32
33
0
@@ -27,6 +27,7 @@
0
         }
0
      
0
         server = ::WEBrick::HTTPServer.new(options)
0
+ Merb::Server.change_privilege
0
         server.mount("/", ::Rack::Handler::WEBrick, opts[:app])
0
         server.start
0
       end
...
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
 
 
 
 
 
 
 
 
 
 
124
125
126
...
209
210
211
212
 
213
214
215
...
109
110
111
 
 
 
 
 
 
 
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
...
212
213
214
 
215
216
217
218
0
@@ -109,18 +109,21 @@
0
           Dir.chdir Merb::Config[:merb_root]
0
           at_exit { remove_pid_file(port) }
0
           Merb::Config[:port] = port
0
- if Merb::Config[:user]
0
- if Merb::Config[:group]
0
- change_privilege(Merb::Config[:user], Merb::Config[:group])
0
- else
0
- change_privilege(Merb::Config[:user])
0
- end
0
- end
0
           BootLoader.run
0
           Merb.adapter.start(Merb::Config.to_hash)
0
         end
0
       end
0
 
0
+ def change_privilege
0
+ if Merb::Config[:user]
0
+ if Merb::Config[:group]
0
+ _change_privilege(Merb::Config[:user], Merb::Config[:group])
0
+ else
0
+ _change_privilege(Merb::Config[:user])
0
+ end
0
+ end
0
+ end
0
+
0
       # Removes a PID file used by the server from the filesystem.
0
       # This uses :pid_file options from configuration when provided
0
       # or merb.<port>.pid in log directory by default.
0
@@ -209,7 +212,7 @@
0
       #
0
       # ==== Alternatives
0
       # If group is left out, the user will be used as the group.
0
- def change_privilege(user, group=user)
0
+ def _change_privilege(user, group=user)
0
 
0
         puts "Changing privileges to #{user}:#{group}"
0
 

Comments

    No one has commented yet.