aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-07-05 06:27:43 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-07-05 06:27:43 +0000
commitb953b8b16e33e84b6a89430a73a37ad04e3bc254 (patch)
tree6037d605ec10ff4b2ae41bcca9846d7e84bc99a3
parent891019e4c82b775e32a8c5ef5405951bf98ed88a (diff)
downloadruby-b953b8b16e33e84b6a89430a73a37ad04e3bc254.tar.gz
un.rb: support https
* lib/un.rb: add https support. based on the patch by Flavio Castelli <flavio@castelli.name> in [ruby-core:81901]. [Feature #13714] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--lib/un.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/un.rb b/lib/un.rb
index b644fd9be4..aa86141bf1 100644
--- a/lib/un.rb
+++ b/lib/un.rb
@@ -313,18 +313,29 @@ end
# --do-not-reverse-lookup disable reverse lookup
# --request-timeout=SECOND request timeout in seconds
# --http-version=VERSION HTTP version
+# --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
#
def httpd
setup("", "BindAddress=ADDR", "Port=PORT", "MaxClients=NUM", "TempDir=DIR",
- "DoNotReverseLookup", "RequestTimeout=SECOND", "HTTPVersion=VERSION") do
+ "DoNotReverseLookup", "RequestTimeout=SECOND", "HTTPVersion=VERSION",
+ "SSLCertificate=CERT", "SSLPrivateKey=KEY") do
|argv, options|
require 'webrick'
opt = options[:RequestTimeout] and options[:RequestTimeout] = opt.to_i
[:Port, :MaxClients].each do |name|
opt = options[name] and (options[name] = Integer(opt)) rescue nil
end
+ if cert = options[:SSLCertificate]
+ require 'webrick/https'
+ require 'openssl'
+ options[:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read(cert))
+ options[:SSLEnable] = true
+ options[:SSLPrivateKey] &&= OpenSSL::PKey::RSA.new(File.read(options[:SSLPrivateKey]))
+ options[:Port] ||= 8443 # HTTPS Alternate
+ end
options[:Port] ||= 8080 # HTTP Alternate
options[:DocumentRoot] = argv.shift || '.'
s = WEBrick::HTTPServer.new(options)