Method: #httpd
- Defined in:
- lib/un.rb
#httpd ⇒ Object
Run WEBrick HTTP server.
ruby -run -e httpd -- [OPTION] [DocumentRoot]
--bind-address=ADDR address to bind
--port=NUM listening port number
--max-clients=MAX max number of simultaneous clients
--temp-dir=DIR temporary directory
--do-not-reverse-lookup disable reverse lookup
--request-timeout=SECOND request timeout in seconds
--http-version=VERSION HTTP version
--server-name=NAME name of the server host
--server-software=NAME name and version of the server
--ssl-certificate=CERT The SSL certificate file for the server
--ssl-private-key=KEY The SSL private key file for the server certificate
-v verbose
323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 |
# File 'lib/un.rb', line 323 def httpd setup("", "BindAddress=ADDR", "Port=PORT", "MaxClients=NUM", "TempDir=DIR", "DoNotReverseLookup", "RequestTimeout=SECOND", "HTTPVersion=VERSION", "ServerName=NAME", "ServerSoftware=NAME", "SSLCertificate=CERT", "SSLPrivateKey=KEY") do |argv, | begin require 'webrick' rescue LoadError abort "webrick is not found. You may need to `gem install webrick` to install webrick." end opt = [:RequestTimeout] and [:RequestTimeout] = opt.to_i [:Port, :MaxClients].each do |name| opt = [name] and ([name] = Integer(opt)) rescue nil end if cert = [:SSLCertificate] key = [:SSLPrivateKey] or raise "--ssl-private-key option must also be given" require 'webrick/https' [:SSLEnable] = true [:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read(cert)) [:SSLPrivateKey] = OpenSSL::PKey.read(File.read(key)) [:Port] ||= 8443 # HTTPS Alternate end [:Port] ||= 8080 # HTTP Alternate [:DocumentRoot] = argv.shift || '.' s = WEBrick::HTTPServer.new() shut = proc {s.shutdown} siglist = %w"TERM QUIT" siglist.concat(%w"HUP INT") if STDIN.tty? siglist &= Signal.list.keys siglist.each do |sig| Signal.trap(sig, shut) end s.start end end |