From f53a3dccd4a1f6c70c91c200d2105e50292e7277 Mon Sep 17 00:00:00 2001 From: tpietzsch <tobias.pietzsch@gmail.com> Date: Thu, 30 Apr 2020 21:17:08 +0200 Subject: [PATCH] Add commandline parameter for base url change urls in datasets etc when running behind a proxy --- src/main/java/bdv/server/BigDataServer.java | 27 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/bdv/server/BigDataServer.java b/src/main/java/bdv/server/BigDataServer.java index 0ea54df..264ba9c 100644 --- a/src/main/java/bdv/server/BigDataServer.java +++ b/src/main/java/bdv/server/BigDataServer.java @@ -68,8 +68,9 @@ public class BigDataServer hostname = "localhost"; } final String thumbnailDirectory = null; + final String baseUrl = null; final boolean enableManagerContext = false; - return new Parameters( port, hostname, new HashMap< String, String >(), thumbnailDirectory, enableManagerContext ); + return new Parameters( port, hostname, new HashMap< String, String >(), thumbnailDirectory, baseUrl, enableManagerContext ); } public static void main( final String[] args ) throws Exception @@ -91,7 +92,8 @@ public class BigDataServer connector.setPort( params.getPort() ); LOG.info( "Set connectors: " + connector ); server.setConnectors( new Connector[] { connector } ); - final String baseURL = "http://" + server.getURI().getHost() + ":" + params.getPort(); + final String baseURL = params.getBaseUrl() != null ? params.getBaseUrl() : "http://" + server.getURI().getHost() + ":" + params.getPort(); + System.out.println( "XXXXXX baseURL = " + baseURL ); // Handler initialization final HandlerCollection handlers = new HandlerCollection(); @@ -138,14 +140,17 @@ public class BigDataServer private final String thumbnailDirectory; + private final String baseUrl; + private final boolean enableManagerContext; - Parameters( final int port, final String hostname, final Map< String, String > datasetNameToXml, final String thumbnailDirectory, final boolean enableManagerContext ) + Parameters( final int port, final String hostname, final Map< String, String > datasetNameToXml, final String thumbnailDirectory, final String baseUrl, final boolean enableManagerContext ) { this.port = port; this.hostname = hostname; this.datasetNameToXml = datasetNameToXml; this.thumbnailDirectory = thumbnailDirectory; + this.baseUrl = baseUrl; this.enableManagerContext = enableManagerContext; } @@ -159,6 +164,11 @@ public class BigDataServer return hostname; } + public String getBaseUrl() + { + return baseUrl; + } + public String getThumbnailDirectory() { return thumbnailDirectory; @@ -217,6 +227,12 @@ public class BigDataServer .withArgName( "DIRECTORY" ) .create( "t" ) ); + options.addOption( OptionBuilder + .withDescription( "Base URL under which the server will be made visible (e.g., if behind a proxy)" ) + .hasArg() + .withArgName( "BASEURL" ) + .create( "b" ) ); + if ( Constants.ENABLE_EXPERIMENTAL_FEATURES ) { options.addOption( OptionBuilder @@ -239,6 +255,9 @@ public class BigDataServer // Getting thumbnail directory option final String thumbnailDirectory = cmd.getOptionValue( "t", defaultParameters.getThumbnailDirectory() ); + // Getting base url option + final String baseUrl = cmd.getOptionValue( "b", defaultParameters.getBaseUrl() ); + final HashMap< String, String > datasets = new HashMap< String, String >( defaultParameters.getDatasets() ); boolean enableManagerContext = false; @@ -294,7 +313,7 @@ public class BigDataServer if ( datasets.isEmpty() ) throw new IllegalArgumentException( "Dataset list is empty." ); - return new Parameters( port, serverName, datasets, thumbnailDirectory, enableManagerContext ); + return new Parameters( port, serverName, datasets, thumbnailDirectory, baseUrl, enableManagerContext ); } catch ( final ParseException | IllegalArgumentException e ) { -- GitLab