|
What this is
Other links
The source code
/*
* $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/ConfigurationWebHandler.java,v 1.34.2.1 2005/06/17 17:49:51 minhnn Exp $
* $Author: minhnn $
* $Revision: 1.34.2.1 $
* $Date: 2005/06/17 17:49:51 $
*
* ====================================================================
*
* Copyright (C) 2002-2005 by MyVietnam.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* All copyright notices regarding mvnForum MUST remain intact
* in the scripts and in the outputted HTML.
* The "powered by" text/logo with a link back to
* http://www.mvnForum.com and http://www.MyVietnam.net in the
* footer of the pages MUST remain visible when the pages
* are viewed on the internet or intranet.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Support can be obtained from support forums at:
* http://www.mvnForum.com/mvnforum/index
*
* Correspondence and Marketing Questions can be sent to:
* info@MyVietnam.net
*
* @author: Minh Nguyen minhnn@MyVietnam.net
* @author: Mai Nguyen mai.nh@MyVietnam.net
*/
package com.mvnforum.admin;
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import com.mvnforum.*;
import com.mvnforum.auth.*;
import freemarker.template.*;
import net.myvietnam.mvncore.MVNCoreConfig;
import net.myvietnam.mvncore.exception.*;
import net.myvietnam.mvncore.util.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class ConfigurationWebHandler
{
private static Log log = LogFactory.getLog(ConfigurationWebHandler.class);
private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance();
public ConfigurationWebHandler() {
}
public void updateConfigStepOne(HttpServletRequest request)
throws BadInputException, DocumentException, IOException,
AssertionException, DatabaseException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
// children of mvnforumconfig
String mvnforum_home = ParamUtil.getParameterSafe(request, "mvnforum_home", true);
String mvnforum_log = ParamUtil.getParameterSafe(request, "mvnforum_log", true);
String webmaster_email = ParamUtil.getParameterEmail(request, "webmaster_email");
String logo_url = ParamUtil.getParameterSafe(request, "logo_url", true);
String supported_locales = ParamUtil.getParameterSafe(request, "supported_locales", false);
String default_locale_name = ParamUtil.getParameterSafe(request, "default_locale_name", true);
String default_guest_name = ParamUtil.getParameterSafe(request, "default_guest_name", true);
int default_guest_timezone = ParamUtil.getParameterInt(request, "default_guest_timezone");
String enable_passwordless_auth = ParamUtil.getParameterSafe(request, "enable_passwordless_auth", true);
String enable_login_info_in_cookie = ParamUtil.getParameterSafe(request, "enable_login_info_in_cookie", true);
String enable_login_info_in_session = ParamUtil.getParameterSafe(request, "enable_login_info_in_session", true);
String enable_login_info_in_realm = ParamUtil.getParameterSafe(request, "enable_login_info_in_realm", true);
String enable_login_info_in_customization = ParamUtil.getParameterSafe(request, "enable_login_info_in_customization", true);
String require_activation = ParamUtil.getParameterSafe(request, "require_activation", true);
String enable_login = ParamUtil.getParameterSafe(request, "enable_login", true);
String enable_new_member = ParamUtil.getParameterSafe(request, "enable_new_member", true);
String enable_new_post = ParamUtil.getParameterSafe(request, "enable_new_post", true);
String enable_rss = ParamUtil.getParameterSafe(request, "enable_rss", true);
String enable_watch = ParamUtil.getParameterSafe(request, "enable_watch", true);
String enable_attachment = ParamUtil.getParameterSafe(request, "enable_attachment", true);
String enable_avatar = ParamUtil.getParameterSafe(request, "enable_avatar", true);
String enable_emoticon = ParamUtil.getParameterSafe(request, "enable_emoticon", true);
String enable_captcha = ParamUtil.getParameterSafe(request, "enable_captcha", true);
String enable_portal_like_index_page = ParamUtil.getParameterSafe(request, "enable_portal_like_index_page", true);
String enable_search = ParamUtil.getParameterSafe(request, "enable_search", true);
String enable_online_users = ParamUtil.getParameterSafe(request, "enable_online_users", true);
String enable_duplicate_onlineusers = ParamUtil.getParameterSafe(request, "enable_duplicate_onlineusers", true);
String enable_invisible_users = ParamUtil.getParameterSafe(request, "enable_invisible_users", true);
String enable_listmembers = ParamUtil.getParameterSafe(request, "enable_listmembers", true);
String enable_show_last_login = ParamUtil.getParameterSafe(request, "enable_show_last_login", true);
String enable_private_message = ParamUtil.getParameterSafe(request, "enable_private_message", true);
String enable_public_message = ParamUtil.getParameterSafe(request, "enable_public_message", true);
String enable_message_attachment = ParamUtil.getParameterSafe(request, "enable_message_attachment", true);
String enable_most_active_threads = ParamUtil.getParameterSafe(request, "enable_most_active_threads", true);
String enable_most_active_members = ParamUtil.getParameterSafe(request, "enable_most_active_members", true);
String enable_site_statistics_overview = ParamUtil.getParameterSafe(request, "enable_site_statistics_overview", true);
String enable_admin_can_change_password = ParamUtil.getParameterSafe(request, "enable_admin_can_change_password", true);
String enable_guest_view_image_attachment = ParamUtil.getParameterSafe(request, "enable_guest_view_image_attachment", true);
int default_watch_option = ParamUtil.getParameterInt(request, "default_watch_option");
int default_moderation_option = ParamUtil.getParameterInt(request, "default_moderation_option");
// children of mvnforumfactoryconfig
String member_implementation = ParamUtil.getParameterSafe(request, "member_implementation", true);
String onlineuser_implementation = ParamUtil.getParameterSafe(request, "onlineuser_implementation", true);
String authenticator_implementation = ParamUtil.getParameterSafe(request, "authenticator_implementation", false);
String requestprocessor_implementation = ParamUtil.getParameterSafe(request, "requestprocessor_implementation", true);
String lucene_analyzer_implementation = ParamUtil.getParameterSafe(request, "lucene_analyzer_implementation", true);
// Now checking the validity of value
Locale locale = onlineUser.getLocale();
try {
// always create a dir, if the dir already exitsted, nothing happens
FileUtil.createDirs(mvnforum_home, true);
String tempFilename = mvnforum_home + File.separatorChar + "mvnforum_tempfile.tmp";
File tempFile = new File(tempFilename);
if (log.isDebugEnabled()) {
log.debug("Temp file = " + tempFilename);
log.debug("Absolute filename of temp file = " + tempFile.getAbsolutePath());
}
FileOutputStream fos = new FileOutputStream(tempFilename);
fos.write(tempFilename.getBytes());
fos.close();
tempFile.delete();
} catch (IOException ex) {
String errorMessage = "Check your mvnforum_home. Detail : " + ex.getMessage();
throw new BadInputException(errorMessage);
}
try {
int lastBackSlashIndex = mvnforum_log.lastIndexOf('\\');
int lastForwardSlashIndex = mvnforum_log.lastIndexOf('/');
int index = Math.max(lastBackSlashIndex, lastForwardSlashIndex);
if (index < 0) {
throw new BadInputException("Cannot find any '\\' or '/' in mvnforum_log : " + mvnforum_log);
}
String parentFolder = mvnforum_log.substring(0, index);
log.debug("parentFolder = " + parentFolder);
// always create a dir, if the dir already exitsted, nothing happens
FileUtil.createDirs(parentFolder, true);
String tempFilename = parentFolder + File.separatorChar + "mvnforum_tempfile.tmp";
File tempFile = new File(tempFilename);
if (log.isDebugEnabled()) {
log.debug("Temp file in log folder = " + tempFilename);
log.debug("Absolute filename of temp file in log folder = " + tempFile.getAbsolutePath());
}
FileOutputStream fos = new FileOutputStream(tempFilename);
fos.write(tempFilename.getBytes());
fos.close();
tempFile.delete();
} catch (IOException ex) {
String errorMessage = "Check your mvnforum_log. Detail : " + ex.getMessage();
throw new BadInputException(errorMessage);
}
MyUtil.checkClassName(locale, member_implementation, true);
MyUtil.checkClassName(locale, onlineuser_implementation, true);
MyUtil.checkClassName(locale, authenticator_implementation, false);
MyUtil.checkClassName(locale, requestprocessor_implementation, true);
MyUtil.checkClassName(locale, lucene_analyzer_implementation, true);
// End checking, now save the value
String strPathName = FileUtil.getServletClassesPath();
SAXReader reader = new SAXReader();
Document document = reader.read(new File(strPathName + "mvnforum.xml"));
Element root = document.getRootElement();
// iterate through child elements of root
for (Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
for (int j = 0, size = element.nodeCount(); j < size; j++) {
Node node = element.node(j);
if (node.getNodeTypeName().equals("Element")) {
if (node.getName().equals("mvnforum_home")) {
node.setText(mvnforum_home);
} else if (node.getName().equals("mvnforum_log")) {
node.setText(mvnforum_log);
} else if (node.getName().equals("webmaster_email")) {
node.setText(webmaster_email);
} else if (node.getName().equals("logo_url")) {
node.setText(logo_url);
} else if (node.getName().equals("supported_locales")) {
node.setText(supported_locales);
} else if (node.getName().equals("default_locale_name")) {
node.setText(default_locale_name);
} else if (node.getName().equals("default_guest_name")) {
node.setText(default_guest_name);
} else if (node.getName().equals("default_guest_timezone")) {
node.setText(String.valueOf(default_guest_timezone));
} else if (node.getName().equals("enable_passwordless_auth")) {
node.setText(enable_passwordless_auth);
} else if (node.getName().equals("enable_login_info_in_cookie")) {
node.setText(enable_login_info_in_cookie);
} else if (node.getName().equals("enable_login_info_in_session")) {
node.setText(enable_login_info_in_session);
} else if (node.getName().equals("enable_login_info_in_realm")) {
node.setText(enable_login_info_in_realm);
} else if (node.getName().equals("enable_login_info_in_customization")) {
node.setText(enable_login_info_in_customization);
} else if (node.getName().equals("require_activation")) {
node.setText(require_activation);
} else if (node.getName().equals("enable_login")) {
node.setText(enable_login);
} else if (node.getName().equals("enable_new_member")) {
node.setText(enable_new_member);
} else if (node.getName().equals("enable_new_post")) {
node.setText(enable_new_post);
} else if (node.getName().equals("enable_rss")) {
node.setText(enable_rss);
} else if (node.getName().equals("enable_watch")) {
node.setText(enable_watch);
} else if (node.getName().equals("enable_attachment")) {
node.setText(enable_attachment);
} else if (node.getName().equals("enable_avatar")) {
node.setText(enable_avatar);
} else if (node.getName().equals("enable_emoticon")) {
node.setText(enable_emoticon);
} else if (node.getName().equals("enable_captcha")) {
node.setText(enable_captcha);
} else if (node.getName().equals("enable_portal_like_index_page")) {
node.setText(enable_portal_like_index_page);
} else if (node.getName().equals("enable_search")) {
node.setText(enable_search);
} else if (node.getName().equals("enable_online_users")) {
node.setText(enable_online_users);
} else if (node.getName().equals("enable_duplicate_onlineusers")) {
node.setText(enable_duplicate_onlineusers);
} else if (node.getName().equals("enable_invisible_users")) {
node.setText(enable_invisible_users);
} else if (node.getName().equals("enable_listmembers")) {
node.setText(enable_listmembers);
} else if (node.getName().equals("enable_show_last_login")) {
node.setText(enable_show_last_login);
} else if (node.getName().equals("enable_private_message")) {
node.setText(enable_private_message);
} else if (node.getName().equals("enable_public_message")) {
node.setText(enable_public_message);
} else if (node.getName().equals("enable_message_attachment")) {
node.setText(enable_message_attachment);
} else if (node.getName().equals("enable_most_active_threads")) {
node.setText(enable_most_active_threads);
} else if (node.getName().equals("enable_most_active_members")) {
node.setText(enable_most_active_members);
} else if (node.getName().equals("enable_site_statistics_overview")) {
node.setText(enable_site_statistics_overview);
} else if (node.getName().equals("enable_admin_can_change_password")) {
node.setText(enable_admin_can_change_password);
} else if (node.getName().equals("enable_guest_view_image_attachment")) {
node.setText(enable_guest_view_image_attachment);
} else if (node.getName().equals("default_watch_option")) {
node.setText(String.valueOf(default_watch_option));
} else if (node.getName().equals("default_moderation_option")) {
node.setText(String.valueOf(default_moderation_option));
// children of mvnforumfactoryconfig
} else if (node.getName().equals("member_implementation")) {
node.setText(member_implementation);
} else if (node.getName().equals("onlineuser_implementation")) {
node.setText(onlineuser_implementation);
} else if (node.getName().equals("authenticator_implementation")) {
node.setText(authenticator_implementation);
} else if (node.getName().equals("requestprocessor_implementation")) {
node.setText(requestprocessor_implementation);
} else if (node.getName().equals("lucene_analyzer_implementation")) {
node.setText(lucene_analyzer_implementation);
}
}
}
}
saveDocument(document, strPathName + "mvnforum.xml");
request.setAttribute("step", "1");
}
public void updateConfigStepTwo(HttpServletRequest request)
throws BadInputException, DocumentException, IOException,
AssertionException, DatabaseException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
int max_private_message = ParamUtil.getParameterUnsignedInt(request, "max_private_message");
String max_message_attachment_size = ParamUtil.getParameterSafe(request, "max_message_attachment_size", true);
String max_attachment_size = ParamUtil.getParameterSafe(request, "max_attachment_size", true);
int max_favorite_thread = ParamUtil.getParameterUnsignedInt(request, "max_favorite_thread");
int max_edit_days = ParamUtil.getParameterUnsignedInt(request, "max_edit_days");
int max_attach_days = ParamUtil.getParameterUnsignedInt(request, "max_attach_days");
int max_delete_days = ParamUtil.getParameterUnsignedInt(request, "max_delete_days");
int rows_per_page = ParamUtil.getParameterUnsignedInt(request, "rows_per_page");
int rows_per_rss = ParamUtil.getParameterUnsignedInt(request, "rows_per_rss");
int hot_topic_threshold = ParamUtil.getParameterUnsignedInt(request, "hot_topic_threshold");
int max_posts_per_hour = ParamUtil.getParameterUnsignedInt(request, "max_posts_per_hour");
int max_members_per_hour = ParamUtil.getParameterUnsignedInt(request, "max_members_per_hour");
int max_logins_per_hour = ParamUtil.getParameterUnsignedInt(request, "max_logins_per_hour");
int max_messages_per_hour = ParamUtil.getParameterUnsignedInt(request, "max_messages_per_hour");
int max_chars_in_short_summary = ParamUtil.getParameterUnsignedInt(request, "max_chars_in_short_summary");
int max_chars_in_long_summary = ParamUtil.getParameterUnsignedInt(request, "max_chars_in_long_summary");
int max_chars_in_rss = ParamUtil.getParameterUnsignedInt(request, "max_chars_in_rss");
String enable_backup_on_server = ParamUtil.getParameterSafe(request, "enable_backup_on_server", true);
String max_import_size = ParamUtil.getParameterSafe(request, "max_import_size", true);
String strPathName = FileUtil.getServletClassesPath();
SAXReader reader = new SAXReader();
Document document = reader.read(new File(strPathName + "mvnforum.xml"));
Element root = document.getRootElement();
// iterate through child elements of root
for (Iterator i = root.elementIterator("mvnforumconfig"); i.hasNext(); ) {
Element element = (Element) i.next();
for (int j = 0, size = element.nodeCount(); j < size; j++) {
Node node = element.node(j);
if (node.getNodeTypeName().equals("Element")) {
if (node.getName().equals("max_private_message")) {
node.setText(String.valueOf(max_private_message));
} else if (node.getName().equals("max_message_attachment_size")) {
node.setText(max_message_attachment_size);
} else if (node.getName().equals("max_attachment_size")) {
node.setText(max_attachment_size);
} else if (node.getName().equals("max_favorite_thread")) {
node.setText(String.valueOf(max_favorite_thread));
} else if (node.getName().equals("max_edit_days")) {
node.setText(String.valueOf(max_edit_days));
} else if (node.getName().equals("max_attach_days")) {
node.setText(String.valueOf(max_attach_days));
} else if (node.getName().equals("max_delete_days")) {
node.setText(String.valueOf(max_delete_days));
} else if (node.getName().equals("rows_per_page")) {
node.setText(String.valueOf(rows_per_page));
} else if (node.getName().equals("rows_per_rss")) {
node.setText(String.valueOf(rows_per_rss));
} else if (node.getName().equals("hot_topic_threshold")) {
node.setText(String.valueOf(hot_topic_threshold));
} else if (node.getName().equals("max_posts_per_hour")) {
node.setText(String.valueOf(max_posts_per_hour));
} else if (node.getName().equals("max_members_per_hour")) {
node.setText(String.valueOf(max_members_per_hour));
} else if (node.getName().equals("max_logins_per_hour")) {
node.setText(String.valueOf(max_logins_per_hour));
} else if (node.getName().equals("max_messages_per_hour")) {
node.setText(String.valueOf(max_messages_per_hour));
} else if (node.getName().equals("max_chars_in_short_summary")) {
node.setText(String.valueOf(max_chars_in_short_summary));
} else if (node.getName().equals("max_chars_in_long_summary")) {
node.setText(String.valueOf(max_chars_in_long_summary));
} else if (node.getName().equals("max_chars_in_rss")) {
node.setText(String.valueOf(max_chars_in_rss));
} else if (node.getName().equals("enable_backup_on_server")) {
node.setText(enable_backup_on_server);
} else if (node.getName().equals("max_import_size")) {
node.setText(max_import_size);
}
}
}
}
saveDocument(document, strPathName + "mvnforum.xml");
request.setAttribute("step", "2");
}
public void updateConfigStepThree(HttpServletRequest request)
throws BadInputException, DocumentException, IOException,
AssertionException, DatabaseException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
String use_datasource = ParamUtil.getParameterSafe(request, "use_datasource", true);
boolean isUseDatasource = use_datasource.equals("true") ? true : false;
int database_type = 0;
String driver_class_name = "";
String database_url = "";
String database_user = "";
String database_password = "";
int max_connection = 0;
int max_time_to_wait = 0;
int minutes_between_refresh = 0;
String datasource_name = "";
if (isUseDatasource == false) {
database_type = ParamUtil.getParameterUnsignedInt(request, "database_type");
driver_class_name = ParamUtil.getParameterSafe(request, "driver_class_name", true);
database_url = ParamUtil.getParameterSafe(request, "database_url", true);
database_user = ParamUtil.getParameterSafe(request, "database_user", true);
database_password = ParamUtil.getParameterSafe(request, "database_password", false);
max_connection = ParamUtil.getParameterUnsignedInt(request, "max_connection");
max_time_to_wait = ParamUtil.getParameterUnsignedInt(request, "max_time_to_wait");
minutes_between_refresh = ParamUtil.getParameterUnsignedInt(request, "minutes_between_refresh");
} else {
datasource_name = ParamUtil.getParameterSafe(request, "datasource_name", false);
}
String mail_server = ParamUtil.getParameterSafe(request, "mail_server", true);
String default_mail_from = ParamUtil.getParameterEmail(request, "default_mail_from");
String username = ParamUtil.getParameterSafe(request, "username", false);
String password = ParamUtil.getParameterSafe(request, "password", false);
int port = ParamUtil.getParameterUnsignedInt(request, "port");
String context_path = ParamUtil.getParameterSafe(request, "context_path", false);
String server_path = ParamUtil.getParameterSafe(request, "server_path", true);
int server_hour_offset = ParamUtil.getParameterInt(request, "server_hour_offset");
String blocked_user_agent = ParamUtil.getParameterSafe(request, "blocked_user_agent", false);
String blocked_ip = ParamUtil.getParameterSafe(request, "blocked_ip", false);
String enable_link_nofollow = ParamUtil.getParameterSafe(request, "enable_link_nofollow", true);
String mailinterceptor_implementation = ParamUtil.getParameterSafe(request, "mailinterceptor_implementation", false);
String contentinterceptor_implementation = ParamUtil.getParameterSafe(request, "contentinterceptor_implementation", false);
String loginidinterceptor_implementation = ParamUtil.getParameterSafe(request, "loginidinterceptor_implementation", false);
// Now checking the validity of value
Locale locale = onlineUser.getLocale();
MyUtil.checkClassName(locale, driver_class_name, false);
MyUtil.checkClassName(locale, mailinterceptor_implementation, false);
MyUtil.checkClassName(locale, contentinterceptor_implementation, false);
MyUtil.checkClassName(locale, loginidinterceptor_implementation, false);
// End checking, now save the value
String strPathName = FileUtil.getServletClassesPath();
SAXReader reader = new SAXReader();
Document document = reader.read(new File(strPathName + "mvncore.xml"));
Element root = document.getRootElement();
// iterate through child elements of root
for (Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
for (int j = 0, size = element.nodeCount(); j < size; j++) {
Node node = element.node(j);
if (node.getNodeTypeName().equals("Element")) {
if (node.getName().equals("use_datasource")) {
node.setText(use_datasource);
} else if (node.getName().equals("database_type")) {
if (isUseDatasource == false) {
node.setText(String.valueOf(database_type));
}
} else if (node.getName().equals("driver_class_name")) {
if (isUseDatasource == false) {
node.setText(driver_class_name);
}
} else if (node.getName().equals("database_url")) {
if (isUseDatasource == false) {
node.setText(database_url);
}
} else if (node.getName().equals("database_user")) {
if (isUseDatasource == false) {
node.setText(database_user);
}
} else if (node.getName().equals("database_password")) {
if (isUseDatasource == false) {
node.setText(database_password);
}
} else if (node.getName().equals("max_connection")) {
if (isUseDatasource == false) {
node.setText(String.valueOf(max_connection));
}
} else if (node.getName().equals("max_time_to_wait")) {
if (isUseDatasource == false) {
node.setText(String.valueOf(max_time_to_wait));
}
} else if (node.getName().equals("minutes_between_refresh")) {
if (isUseDatasource == false) {
node.setText(String.valueOf(minutes_between_refresh));
}
} else if (node.getName().equals("datasource_name")) {
if (isUseDatasource) {
node.setText(datasource_name);
}
} else if (node.getName().equals("mail_server")) {
node.setText(mail_server);
} else if (node.getName().equals("default_mail_from")) {
node.setText(default_mail_from);
} else if (node.getName().equals("username")) {
node.setText(username);
} else if (node.getName().equals("password")) {
node.setText(password);
} else if (node.getName().equals("port")) {
node.setText(String.valueOf(port));
} else if (node.getName().equals("context_path")) {
node.setText(context_path);
} else if (node.getName().equals("server_path")) {
node.setText(server_path);
} else if (node.getName().equals("server_hour_offset")) {
node.setText(String.valueOf(server_hour_offset));
} else if (node.getName().equals("blocked_user_agent")) {
node.setText(blocked_user_agent);
} else if (node.getName().equals("blocked_ip")) {
node.setText(blocked_ip);
} else if (node.getName().equals("enable_link_nofollow")) {
node.setText(enable_link_nofollow);
} else if (node.getName().equals("mailinterceptor_implementation")) {
node.setText(mailinterceptor_implementation);
} else if (node.getName().equals("contentinterceptor_implementation")) {
node.setText(contentinterceptor_implementation);
} else if (node.getName().equals("loginidinterceptor_implementation")) {
node.setText(loginidinterceptor_implementation);
}
}
}
}
saveDocument(document, strPathName + "mvncore.xml");
request.setAttribute("step", "3");
}
public void updateUrlPattern(HttpServletRequest request)
throws BadInputException, DocumentException, IOException,
AssertionException, AuthenticationException, DatabaseException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
String admin_url = ParamUtil.getParameterSafe(request, "admin_url", true);
String user_url = ParamUtil.getParameterSafe(request, "user_url", true);
String strPathName = FileUtil.getServletClassesPath();
SAXReader reader = new SAXReader();
String xmlFilePath = strPathName + "mvnforum.xml";
Document document = reader.read(new File(xmlFilePath));
Element root = document.getRootElement();
for (int i = 0; i < root.nodeCount(); i++) {
Node node = root.node(i);
//log.debug("Node " + i + " = " + node.getName());
if (node.getNodeTypeName().equals("Element")) {
if (node.getName().equals("adminmoduleconfig")) {
Node subElement = ((Element) node).element("url_pattern");
//log.debug("sub element " + subElement);
subElement.setText(admin_url);
} else if (node.getName().equals("usermoduleconfig")) {
Node subElement = ((Element) node).element("url_pattern");
//log.debug("sub element " + subElement);
subElement.setText(user_url);
}
}
}
saveDocument(document, xmlFilePath);
request.setAttribute("action", "updateurls");
}
public void configBackupProcess(HttpServletRequest request)
throws IOException, AssertionException, DatabaseException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
String servletClassPath = FileUtil.getServletClassesPath();
String mvncoreFileName = servletClassPath + File.separator + "mvncore.xml";
String mvnforumFileName = servletClassPath + File.separator + "mvnforum.xml";
String pattern = "yyyy-MM-dd_HH-mm-ss";
String nowDesc = DateUtil.format(new Date(), pattern);
String newMVNCoreFileName = servletClassPath + File.separator + "mvncore_" + nowDesc + ".xml";
String newMVNForumFileName = servletClassPath + File.separator + "mvnforum_" + nowDesc + ".xml";
// We don't have to check files here, we check it in FileUtil.copyFile
FileUtil.copyFile(mvncoreFileName, newMVNCoreFileName, false);
FileUtil.copyFile(mvnforumFileName, newMVNForumFileName, false);
File newMVNCoreFile = new File(newMVNCoreFileName);
File newMVNForumFile = new File(newMVNForumFileName);
request.setAttribute("MVNCoreFileName", newMVNCoreFile.getAbsolutePath());
request.setAttribute("MVNForumFileName", newMVNForumFile.getAbsolutePath());
request.setAttribute("step", "Backup");
}
private void saveDocument(Document doc, String fileName) throws IOException {
XMLWriter writer = new XMLWriter(new FileWriter(fileName));
writer.write(doc);
writer.close();
}
public void prepareEditTemplate(HttpServletRequest request)
throws AuthenticationException, DatabaseException, AssertionException,
IOException, FileNotFoundException, BadInputException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
String templateName = ParamUtil.getParameterSafe(request, "template", false);
StringUtil.checkGoodName(templateName);
String subject = "";
String body = "";
final String SUBJECT_SUFFIX = "-subject.ftl";
final String BODY_SUFFIX = "-body.ftl";
if (templateName.equals("")) {
templateName = MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX;
}
// checking valid input here
if ((templateName.equals(MVNForumGlobal.TEMPLATE_FORGOTPASSWORD_PREFIX) == false) &&
(templateName.equals(MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX) == false) &&
(templateName.equals(MVNForumGlobal.TEMPLATE_WATCHMAIL_PREFIX) == false) ) {
throw new AssertionException("Does not accept invalid input: " + templateName);
}
String templateDir = MVNForumConfig.getTemplateDir();
String subjectFileName = templateDir + File.separator + templateName + SUBJECT_SUFFIX;
String bodyFileName = templateDir + File.separator + templateName + BODY_SUFFIX;
// subject = new String(FileUtil.getBytes(new FileInputStream(subjectFileName)), "UTF-8");
// body = new String(FileUtil.getBytes(new FileInputStream(bodyFileName)) , "UTF-8");
subject = FileUtil.readFile(subjectFileName, "UTF-8");
body = FileUtil.readFile(bodyFileName, "UTF-8");
request.setAttribute("TemplateSubject", subject);
request.setAttribute("TemplateBody", body);
}
public void processEditTemplate(HttpServletRequest request)
throws DatabaseException, AuthenticationException, IOException,
FileNotFoundException, AssertionException, BadInputException, TemplateException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
final String SUBJECT_SUFFIX = "-subject.ftl";
final String BODY_SUFFIX = "-body.ftl";
String templateName = ParamUtil.getParameterSafe(request, "template", true);
StringUtil.checkGoodName(templateName);
// checking valid input here
if ((templateName.equals(MVNForumGlobal.TEMPLATE_FORGOTPASSWORD_PREFIX) == false) &&
(templateName.equals(MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX) == false) &&
(templateName.equals(MVNForumGlobal.TEMPLATE_WATCHMAIL_PREFIX) == false) ) {
throw new AssertionException("Does not accept invalid input: " + templateName);
}
String subject = ParamUtil.getParameter(request, "subject", true);
String body = ParamUtil.getParameter(request, "body", true);
String templateDir = MVNForumConfig.getTemplateDir();
String subjectFileName = templateDir + File.separator + templateName + SUBJECT_SUFFIX;
String bodyFileName = templateDir + File.separator + templateName + BODY_SUFFIX;
// just for test freemakers
SimpleHash root = new SimpleHash();
try {
Configuration cfg = MVNForumConfig.getFreeMarkerConfiguration();
if (templateName.equals(MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX)) {
root.put("serverName", "");
root.put("MVNForumInfo", "");
root.put("activationUrl", "");
root.put("memberName", "");
root.put("activateCode", "");
} else if (templateName.equals(MVNForumGlobal.TEMPLATE_FORGOTPASSWORD_PREFIX)) {
root.put("serverName", "");
root.put("MVNForumInfo", "");
root.put("passwordResetUrl", "");
root.put("memberName", "");
root.put("currentTempPassword", "");
} else if (templateName.equals(MVNForumGlobal.TEMPLATE_WATCHMAIL_PREFIX)) {
root.put("lastSent", "");
root.put("now", "");
root.put("forumBase", "");
ArrayList list = new ArrayList();
SimpleHash subroot = new SimpleHash();
subroot.put("leader", true);
subroot.put("categoryName", "");
subroot.put("forumName", "");
subroot.put("threadTopic", "");
subroot.put("memberName", "");
subroot.put("lastPostMemberName", "");
subroot.put("threadLastPostDate", "");
subroot.put("threadUrl", "");
list.add(subroot);
root.put("threadWatchList", list);
} else {
throw new AssertionException("Does not accept invalid input: " + templateName);
}
StringReader subjectReader = new StringReader(subject);
StringReader bodyReader = new StringReader(body);
Template subjectTemplate = new Template("", subjectReader, cfg, "");
StringWriter subjectWriter = new StringWriter(256);
subjectTemplate.process(root, subjectWriter);
Template bodyTemplate = new Template("", bodyReader, cfg, "");
StringWriter bodyWriter = new StringWriter(1024);
bodyTemplate.process(root, bodyWriter);
} catch(TemplateException ex) {
throw ex;
}
FileUtil.writeFile(subject, subjectFileName, "UTF-8");
FileUtil.writeFile(body, bodyFileName, "UTF-8");
request.setAttribute("Successful", "true");
request.setAttribute("TemplateSubject", subject);
request.setAttribute("TemplateBody", body);
}
void commitConfig(HttpServletRequest request)
throws DatabaseException, AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
MVNForumConfig.reload();
MVNCoreConfig.reload();
request.setAttribute("action", "commit");
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.