lib/trinidad/server.rb in trinidad-0.7.1 vs lib/trinidad/server.rb in trinidad-0.7.2

- old
+ new

@@ -1,10 +1,10 @@ module Trinidad class Server - + attr_reader :tomcat - + def default_options { :environment => 'development', :context_path => '/', :libs_dir => 'lib', @@ -13,114 +13,109 @@ :port => 3000, :jruby_min_runtimes => 1, :jruby_max_runtimes => 5 } end - + def initialize(config = {}) load_config(config) load_tomcat_server create_web_apps end - + def load_config(config) @config = default_options.deep_merge(config) add_default_web_app!(@config) - - configure_ssl!(@config) end - + def load_tomcat_server @tomcat = Trinidad::Tomcat::Tomcat.new @tomcat.setPort(@config[:port].to_i) @tomcat.setBaseDir(Dir.pwd) - + add_ssl_connector if ssl_enabled? add_ajp_connector if ajp_enabled? end - + def create_web_apps @config[:web_apps].each do |name, app| - unless app[:context_path] - app[:context_path] = name.to_s == 'default' ? '/' : "/#{name.to_s}" - end - app[:web_app_dir] = Dir.pwd unless app.has_key?(:web_app_dir) + app[:context_path] ||= (name.to_s == 'default' ? '/' : "/#{name.to_s}") + app[:web_app_dir] ||= Dir.pwd tomcat_app = @tomcat.addWebapp(app[:context_path].to_s, app[:web_app_dir]) -# tomcat_app.setDocBase(app[:web_app_dir]) web_app = WebApp.create(tomcat_app, @config, app) web_app.load_default_web_xml web_app.add_rack_filter web_app.add_context_loader web_app.add_init_params web_app.add_web_dir_resources - + web_app.add_rack_context_listener end end - + def add_service_connector(options, protocol = nil) connector = Trinidad::Tomcat::Connector.new(protocol) opts = options.dup - - connector.scheme = opts.delete(:scheme) if opts[:scheme] - connector.secure = opts.delete(:secure) || false - connector.port = opts.delete(:port).to_i - - options.each do |key, value| - connector.setProperty(key.to_s, value.to_s) - end - + + connector.scheme = opts.delete(:scheme) if opts[:scheme] + connector.secure = opts.delete(:secure) || false + connector.port = opts.delete(:port).to_i + + options.each do |key, value| + connector.setProperty(key.to_s, value.to_s) + end + @tomcat.getService().addConnector(connector) end - + def add_ajp_connector add_service_connector(@config[:ajp], 'AJP/1.3') end - + def add_ssl_connector - @config[:web_apps].each do |name, app| - options = app[:ssl].merge({ - :scheme => 'https', - :secure => true, - :SSLEnabled => 'true', - }) - add_service_connector(options) - - create_default_keystore(app) unless File.exist?(app[:ssl][:keystore]) - end + options = @config[:ssl].merge({ + :scheme => 'https', + :secure => true, + :SSLEnabled => 'true' + }) + options[:keystore] ||= 'ssl/keystore' + options[:keystorePass] ||= 'waduswadus' + + add_service_connector(options) + create_default_keystore(options) unless File.exist?(options[:keystore]) end - + def ssl_enabled? - @config.has_key?(:ssl) || @config[:web_apps].deep_key?(:ssl) + @config.has_key?(:ssl) end - + def ajp_enabled? @config.has_key?(:ajp) end - + def create_default_keystore(config) keystore_file = java.io.File.new(config[:ssl][:keystore]) - + if (!keystore_file.parent_file.exists() && !keystore_file.parent_file.mkdir()) raise "Unable to create keystore folder: " + keystore_file.parent_file.canonical_path end - + keytool_args = ["-genkey", "-alias", "localhost", "-dname", "CN=localhost, OU=Trinidad, O=Trinidad, C=ES", "-keyalg", "RSA", "-validity", "365", "-storepass", "key", "-keystore", config[:ssl][:keystore], "-storepass", config[:ssl][:keystorePass], "-keypass", config[:ssl][:keystorePass]] - + Trinidad::Tomcat::KeyTool.main(keytool_args.to_java(:string)) end def start @tomcat.start @@ -139,20 +134,7 @@ config[:web_apps] = { :default => default_app } end end - def configure_ssl!(config) - if config.has_key?(:ssl) || config[:web_apps].deep_key?(:ssl) - if (config.has_key?(:ssl)) - config[:ssl][:keystore] ||= 'ssl/keystore' - config[:ssl][:keystorePass] ||= 'waduswadus' - end - - config[:web_apps].each do |name, app| - app[:ssl] = config[:ssl] unless app.has_key?(:ssl) - app[:ssl][:keystore] = File.join(app[:web_app_dir], app[:ssl][:keystore]) if app.has_key?(:ssl) - end - end - end end end