예제 #1
0
 private void properties(HttpServletRequest request, ModelAndView next, WikiPageInfo pageInfo)
     throws Exception {
   Properties props = new Properties();
   try {
     setProperty(props, request, Environment.PROP_BASE_DEFAULT_TOPIC);
     setProperty(props, request, Environment.PROP_BASE_LOGO_IMAGE);
     setProperty(props, request, Environment.PROP_BASE_META_DESCRIPTION);
     setBooleanProperty(props, request, Environment.PROP_TOPIC_NON_ADMIN_TOPIC_MOVE);
     setBooleanProperty(props, request, Environment.PROP_TOPIC_FORCE_USERNAME);
     setBooleanProperty(props, request, Environment.PROP_TOPIC_WYSIWYG);
     setProperty(props, request, Environment.PROP_IMAGE_RESIZE_INCREMENT);
     setProperty(props, request, Environment.PROP_RECENT_CHANGES_NUM);
     setBooleanProperty(props, request, Environment.PROP_TOPIC_SPAM_FILTER);
     setBooleanProperty(props, request, Environment.PROP_TOPIC_USE_PREVIEW);
     setBooleanProperty(props, request, Environment.PROP_PRINT_NEW_WINDOW);
     setProperty(props, request, Environment.PROP_PARSER_CLASS);
     setBooleanProperty(props, request, Environment.PROP_PARSER_TOC);
     setProperty(props, request, Environment.PROP_PARSER_TOC_DEPTH);
     setBooleanProperty(props, request, Environment.PROP_PARSER_ALLOW_HTML);
     setBooleanProperty(props, request, Environment.PROP_PARSER_ALLOW_JAVASCRIPT);
     setBooleanProperty(props, request, Environment.PROP_PARSER_ALLOW_TEMPLATES);
     setProperty(props, request, Environment.PROP_PARSER_SIGNATURE_USER_PATTERN);
     setProperty(props, request, Environment.PROP_PARSER_SIGNATURE_DATE_PATTERN);
     setProperty(props, request, Environment.PROP_BASE_FILE_DIR);
     setProperty(props, request, Environment.PROP_BASE_PERSISTENCE_TYPE);
     if (props
         .getProperty(Environment.PROP_BASE_PERSISTENCE_TYPE)
         .equals(WikiBase.PERSISTENCE_EXTERNAL)) {
       setProperty(props, request, Environment.PROP_DB_DRIVER);
       setProperty(props, request, Environment.PROP_DB_TYPE);
       setProperty(props, request, Environment.PROP_DB_URL);
       setProperty(props, request, Environment.PROP_DB_USERNAME);
       setPassword(props, request, next, Environment.PROP_DB_PASSWORD, "dbPassword");
     } else {
       WikiDatabase.setupDefaultDatabase(props);
     }
     setProperty(props, request, Environment.PROP_DBCP_MAX_ACTIVE);
     setProperty(props, request, Environment.PROP_DBCP_MAX_IDLE);
     setBooleanProperty(props, request, Environment.PROP_DBCP_TEST_ON_BORROW);
     setBooleanProperty(props, request, Environment.PROP_DBCP_TEST_ON_RETURN);
     setBooleanProperty(props, request, Environment.PROP_DBCP_TEST_WHILE_IDLE);
     setProperty(props, request, Environment.PROP_DBCP_MIN_EVICTABLE_IDLE_TIME);
     setProperty(props, request, Environment.PROP_DBCP_TIME_BETWEEN_EVICTION_RUNS);
     setProperty(props, request, Environment.PROP_DBCP_NUM_TESTS_PER_EVICTION_RUN);
     setProperty(props, request, Environment.PROP_DBCP_WHEN_EXHAUSTED_ACTION);
     setBooleanProperty(props, request, Environment.PROP_DBCP_REMOVE_ABANDONED);
     setProperty(props, request, Environment.PROP_DBCP_REMOVE_ABANDONED_TIMEOUT);
     int maxFileSizeInKB =
         Integer.parseInt(request.getParameter(Environment.PROP_FILE_MAX_FILE_SIZE));
     props.setProperty(
         Environment.PROP_FILE_MAX_FILE_SIZE, Integer.toString(maxFileSizeInKB * 1000));
     setProperty(props, request, Environment.PROP_FILE_DIR_FULL_PATH);
     setProperty(props, request, Environment.PROP_FILE_DIR_RELATIVE_PATH);
     /*
     setProperty(props, request, Environment.PROP_EMAIL_SMTP_HOST);
     setProperty(props, request, Environment.PROP_EMAIL_SMTP_USERNAME);
     setPassword(props, request, next, Environment.PROP_EMAIL_SMTP_PASSWORD, "smtpPassword");
     setProperty(props, request, Environment.PROP_EMAIL_REPLY_ADDRESS);
     */
     setProperty(props, request, Environment.PROP_LDAP_CONTEXT);
     setProperty(props, request, Environment.PROP_LDAP_FACTORY_CLASS);
     setProperty(props, request, Environment.PROP_LDAP_FIELD_EMAIL);
     setProperty(props, request, Environment.PROP_LDAP_FIELD_FIRST_NAME);
     setProperty(props, request, Environment.PROP_LDAP_FIELD_LAST_NAME);
     setProperty(props, request, Environment.PROP_LDAP_FIELD_USERID);
     setProperty(props, request, Environment.PROP_BASE_USER_HANDLER);
     setProperty(props, request, Environment.PROP_LDAP_LOGIN);
     setPassword(props, request, next, Environment.PROP_LDAP_PASSWORD, "ldapPassword");
     setProperty(props, request, Environment.PROP_LDAP_SECURITY_AUTHENTICATION);
     setProperty(props, request, Environment.PROP_LDAP_URL);
     setProperty(props, request, Environment.PROP_CACHE_INDIVIDUAL_SIZE);
     setProperty(props, request, Environment.PROP_CACHE_MAX_AGE);
     setProperty(props, request, Environment.PROP_CACHE_MAX_IDLE_AGE);
     setProperty(props, request, Environment.PROP_CACHE_TOTAL_SIZE);
     setBooleanProperty(props, request, Environment.PROP_RSS_ALLOWED);
     setProperty(props, request, Environment.PROP_RSS_TITLE);
     Vector errors = Utilities.validateSystemSettings(props);
     if (errors.size() > 0) {
       next.addObject("errors", errors);
       next.addObject("message", new WikiMessage("admin.message.changesnotsaved"));
     } else {
       // all is well, save the properties
       Iterator iterator = props.keySet().iterator();
       while (iterator.hasNext()) {
         String key = (String) iterator.next();
         String value = props.getProperty(key);
         Environment.setValue(key, value);
       }
       Environment.saveProperties();
       // re-initialize to reset database settings (if needed)
       WikiBase.reset(request.getLocale(), Utilities.currentUser(request));
       next.addObject("message", new WikiMessage("admin.message.changessaved"));
     }
   } catch (Exception e) {
     logger.severe("Failure while processing property values", e);
     next.addObject("message", new WikiMessage("admin.message.propertyfailure", e.getMessage()));
   }
   view(request, next, pageInfo, props);
 }