From 79e6c310359f0c3ad0649104c5032940ccca3175 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 17 May 2015 15:02:35 -0700 Subject: [PATCH] GUAC-587: Serve static resources within /app/ext/[namespace]/[declared/path/to/resource]. --- .../net/basic/extension/ExtensionModule.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/extension/ExtensionModule.java b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/extension/ExtensionModule.java index 2f16f1477..eb962b09f 100644 --- a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/extension/ExtensionModule.java +++ b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/extension/ExtensionModule.java @@ -30,6 +30,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Map; import net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider; import org.glyptodon.guacamole.GuacamoleException; import org.glyptodon.guacamole.GuacamoleServerException; @@ -278,6 +279,19 @@ public class ExtensionModule extends ServletModule { for (Class authenticationProvider : authenticationProviders) bindAuthenticationProvider(authenticationProvider); + // Add all static resources under namespace-derived prefix + String staticResourcePrefix = "/app/ext/" + extension.getNamespace() + "/"; + for (Map.Entry staticResource : extension.getStaticResources().entrySet()) { + + // Get path and resource from path/resource pair + String path = staticResource.getKey(); + Resource resource = staticResource.getValue(); + + // Serve within namespace-derived path + serve(staticResourcePrefix + path).with(new ResourceServlet(resource)); + + } + // Log successful loading of extension by name logger.info("Extension \"{}\" loaded.", extension.getName());