summaryrefslogtreecommitdiff
path: root/sample/soap/ssl/sslserver.rb
diff options
context:
space:
mode:
Diffstat (limited to 'sample/soap/ssl/sslserver.rb')
-rw-r--r--sample/soap/ssl/sslserver.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/sample/soap/ssl/sslserver.rb b/sample/soap/ssl/sslserver.rb
new file mode 100644
index 0000000000..e65cbacc7f
--- /dev/null
+++ b/sample/soap/ssl/sslserver.rb
@@ -0,0 +1,49 @@
+require 'soap/rpc/httpserver'
+require 'webrick/https'
+require 'logger'
+
+class HelloWorldServer < SOAP::RPC::HTTPServer
+private
+
+ def on_init
+ @default_namespace = 'urn:sslhelloworld'
+ add_method(self, 'hello_world', 'from')
+ end
+
+ def hello_world(from)
+ "Hello World, from #{ from }"
+ end
+end
+
+
+if $0 == __FILE__
+ DIR = File.dirname(File.expand_path(__FILE__))
+
+ def cert(filename)
+ OpenSSL::X509::Certificate.new(File.open(File.join(DIR, filename)) { |f|
+ f.read
+ })
+ end
+
+ def key(filename)
+ OpenSSL::PKey::RSA.new(File.open(File.join(DIR, filename)) { |f|
+ f.read
+ })
+ end
+
+ $server = HelloWorldServer.new(
+ :BindAddress => "0.0.0.0",
+ :Port => 17443,
+ :AccessLog => [],
+ :SSLEnable => true,
+ :SSLCACertificateFile => File.join(DIR, 'files/ca.cert'),
+ :SSLCertificate => cert('files/server.cert'),
+ :SSLPrivateKey => key('files/server.key'),
+ :SSLVerifyClient => nil,
+ :SSLCertName => nil
+ )
+ trap(:INT) do
+ $server.shutdown
+ end
+ $server.start
+end