private static void initConnnector(Server server, Configs configObj) { SelectChannelConnector connector = new SelectChannelConnector(); // Don't set any host , or the port detection will failed. -_-# // connector.setHost("127.0.0.1"); connector.setPort(configObj.getPort()); if (configObj.getEnablessl() && configObj.getSslport() != null) { if (!available(configObj.getSslport())) { throw new IllegalStateException("SSL port :" + configObj.getSslport() + " already in use!"); } connector.setConfidentialPort(configObj.getSslport()); } server.addConnector(connector); if (configObj.getEnablessl() && configObj.getSslport() != null) initSSL( server, configObj.getSslport(), configObj.getKeystore(), configObj.getPassword(), configObj.getKeyPassword(), configObj.getNeedClientAuth()); }
private void deployWebApp() { try { Server server = new Server(); SelectChannelConnector connector = new SelectChannelConnector(); connector.setMaxIdleTime(MAX_IDLE_TIME_MILLIS); connector.setHeaderBufferSize(HEADER_BUFFER_SIZE); connector.setHost(getHost()); connector.setPort(getPort()); if (isHttpsEnabled()) { connector.setConfidentialPort(getHttpsPort()); } server.addConnector(connector); if (isHttpsEnabled()) { SslSocketConnector sslConnector = new SslSocketConnector(); sslConnector.setMaxIdleTime(MAX_IDLE_TIME_MILLIS); sslConnector.setHeaderBufferSize(HEADER_BUFFER_SIZE); sslConnector.setHost(getHost()); sslConnector.setPort(getHttpsPort()); sslConnector.setKeystore( System.getProperty( "subsonic.ssl.keystore", getClass().getResource("/subsonic.keystore").toExternalForm())); sslConnector.setPassword(System.getProperty("subsonic.ssl.password", "subsonic")); server.addConnector(sslConnector); } WebAppContext context = new WebAppContext(); context.setTempDirectory(getJettyDirectory()); context.setContextPath(getContextPath()); context.setWar(getWar()); context.setOverrideDescriptor("/web-jetty.xml"); if (isHttpsEnabled()) { // Allow non-https for streaming and cover art (for Chromecast, UPnP, Sonos etc) context .getSecurityHandler() .setConstraintMappings( new ConstraintMapping[] { createConstraintMapping("/stream", Constraint.DC_NONE), createConstraintMapping("/coverArt.view", Constraint.DC_NONE), createConstraintMapping("/ws/*", Constraint.DC_NONE), createConstraintMapping("/sonos/*", Constraint.DC_NONE), createConstraintMapping("/", Constraint.DC_CONFIDENTIAL) }); } server.addHandler(context); server.start(); System.err.println("Subsonic running on: " + getUrl()); if (isHttpsEnabled()) { System.err.println(" and: " + getHttpsUrl()); } } catch (Throwable x) { x.printStackTrace(); exception = x; } }