Пример #1
0
  @Override
  protected void configureServlets() {

    // Bind resource services
    bind(LanguageResourceService.class).toInstance(languageResourceService);
    bind(PatchResourceService.class).toInstance(patchResourceService);

    // Load initial language resources from servlet context
    languageResourceService.addLanguageResources(getServletContext());

    // Load authentication provider from guacamole.properties for sake of backwards compatibility
    Class<AuthenticationProvider> authProviderProperty = getAuthProviderProperty();
    if (authProviderProperty != null) bindAuthenticationProvider(authProviderProperty);

    // Init JavaScript resources with base guacamole.min.js
    Collection<Resource> javaScriptResources = new ArrayList<Resource>();
    javaScriptResources.add(new WebApplicationResource(getServletContext(), "/guacamole.min.js"));

    // Init CSS resources with base guacamole.min.css
    Collection<Resource> cssResources = new ArrayList<Resource>();
    cssResources.add(new WebApplicationResource(getServletContext(), "/guacamole.min.css"));

    // Load all extensions
    loadExtensions(javaScriptResources, cssResources);

    // Always bind basic auth last
    bindAuthenticationProvider(BasicFileAuthenticationProvider.class);

    // Dynamically generate app.js and app.css from extensions
    serve("/app.js").with(new ResourceServlet(new SequenceResource(javaScriptResources)));
    serve("/app.css").with(new ResourceServlet(new SequenceResource(cssResources)));

    // Dynamically serve all language resources
    for (Map.Entry<String, Resource> entry :
        languageResourceService.getLanguageResources().entrySet()) {

      // Get language key/resource pair
      String languageKey = entry.getKey();
      Resource resource = entry.getValue();

      // Serve resource within /translations
      serve("/translations/" + languageKey + ".json").with(new ResourceServlet(resource));
    }
  }
Пример #2
0
  /**
   * Serves each of the given resources as a language resource. Language resources are served from
   * within the "/translations" directory as JSON files, where the name of each JSON file is the
   * language key.
   *
   * @param resources A map of all language resources to serve, where the key of each entry in the
   *     language key from which the name of the JSON file will be derived.
   */
  private void serveLanguageResources(Map<String, Resource> resources) {

    // Add all resources to language resource service
    for (Map.Entry<String, Resource> translationResource : resources.entrySet()) {

      // Get path and resource from path/resource pair
      String path = translationResource.getKey();
      Resource resource = translationResource.getValue();

      // Derive key from path
      String languageKey = languageResourceService.getLanguageKey(path);
      if (languageKey == null) {
        logger.warn("Invalid language file name: \"{}\"", path);
        continue;
      }

      // Add language resource
      languageResourceService.addLanguageResource(languageKey, resource);
    }
  }