<%@ page contentType="text/html; charset=UTF-8" %> <%-- - - Copyright (C) 2004-2008 Jive Software, 2017-2025 Ignite Realtime Foundation. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. --%> <%@ page import="org.jivesoftware.util.StringUtils, org.jivesoftware.util.ParamUtils, org.jivesoftware.util.CookieUtils, org.jivesoftware.util.AlreadyExistsException, org.jivesoftware.openfire.muc.spi.MUCPersistenceManager, java.util.*" errorPage="error.jsp" %> <%@ page import="java.net.URLEncoder" %> <%@ page import="org.xmpp.packet.JID" %> <%@ page import="java.nio.charset.StandardCharsets" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib prefix="admin" uri="admin" %> <% // Handle a cancel if (request.getParameter("cancel") != null) { response.sendRedirect("muc-service-edit-form.jsp"); return; } %> <%-- Define Administration Bean --%> <% webManager.init(request, response, session, application, out ); %> <% // Get parameters boolean create = ParamUtils.getBooleanParameter(request,"create"); boolean save = request.getParameter("save") != null; boolean success = request.getParameter("success") != null; String mucname = ParamUtils.getParameter(request,"mucname"); String mucdesc = ParamUtils.getParameter(request,"mucdesc"); int muccleanupdays = ParamUtils.getIntParameter(request, "muccleanupdays", 30); boolean muckeep = ParamUtils.getBooleanParameter(request, "muckeep"); int mucpreloaddays = ParamUtils.getIntParameter(request, "mucpreloaddays", 30); boolean mucpreload = ParamUtils.getBooleanParameter(request, "mucpreload"); Cookie csrfCookie = CookieUtils.getCookie(request, "csrf"); String csrfParam = ParamUtils.getParameter(request, "csrf"); if (muckeep) { muccleanupdays = 0; } if (!mucpreload) { mucpreloaddays = 0; } if (save) { if (csrfCookie == null || csrfParam == null || !csrfCookie.getValue().equals(csrfParam)) { save = false; } } csrfParam = StringUtils.randomString(15); CookieUtils.setCookie(request, response, "csrf", csrfParam, -1); pageContext.setAttribute("csrf", csrfParam); // Load the service object if (!create && !webManager.getMultiUserChatManager().isServiceRegistered(mucname)) { // The requested service name does not exist so return to the list of the existing rooms response.sendRedirect("muc-service-summary.jsp"); return; } if (!create && mucdesc == null) { mucdesc = webManager.getMultiUserChatManager().getMultiUserChatService(mucname).getDescription(); } // Handle a save Map errors = new HashMap<>(); if (save) { if (mucname == null) { errors.put("mucname","mucname"); } else { // Make sure that the MUC Service is lower cased. mucname = mucname.toLowerCase(); // do validation if (mucname.indexOf('.') >= 0 || mucname.isEmpty()) { errors.put("mucname", "mucname"); } else { try { mucname = JID.domainprep(mucname); } catch (Exception e) { errors.put("mucname", e.getMessage()); } } } if (errors.isEmpty()) { // Create or update the service. if (!create) { webManager.getMultiUserChatManager().updateMultiUserChatService(mucname, mucname, mucdesc); } else { try { webManager.getMultiUserChatManager().createMultiUserChatService(mucname, mucdesc, false); } catch (IllegalArgumentException e) { errors.put("mucname","mucname"); } catch (AlreadyExistsException e) { errors.put("already_exists","already_exists"); } } // Update settings only after the service has been created. if (errors.isEmpty()) { if (ParamUtils.getParameter(request, "muccleanupdays") != null || muckeep) { // Only explicitly store if set (otherwise use default). MUCPersistenceManager.setProperty(mucname, "unload.empty_days", Integer.toString(muccleanupdays)); } if (ParamUtils.getParameter(request, "mucpreloaddays") != null || !mucpreload) { // Only explicitly store if set (otherwise use default). MUCPersistenceManager.setProperty(mucname, "preload.days", Integer.toString(mucpreloaddays)); } // Log the event if (!create) { webManager.logEvent("updated MUC service configuration for " + mucname, "name = " + mucname + "\ndescription = " + mucdesc + "\ncleanup = " + muccleanupdays + "\npreload = " + mucpreloaddays); response.sendRedirect("muc-service-edit-form.jsp?success=true&mucname=" + mucname); return; } else { webManager.logEvent("created MUC service " + mucname, "name = " + mucname + "\ndescription = " + mucdesc + "\ncleanup = " + muccleanupdays + "\npreload = " + mucpreloaddays); response.sendRedirect("muc-service-edit-form.jsp?success=true&mucname=" + mucname); return; } } } } // When creating a new service (as opposed to editing an existing one), mucName will be initially empty (OF-1954) if (mucname != null) { muccleanupdays = MUCPersistenceManager.getIntProperty(mucname, "unload.empty_days", 30); mucpreloaddays = MUCPersistenceManager.getIntProperty(mucname, "preload.days", 30); } else { // Defaults for new room. muccleanupdays = 30; mucpreloaddays = 30; } muckeep = muccleanupdays<=0; mucpreload = mucpreloaddays>0; pageContext.setAttribute("errors", errors); pageContext.setAttribute("success", success); %> <fmt:message key="groupchat.service.properties.title"/> <% if (create) { %> <% } else { %> <% } %>

: ()
<% if (!create) { %> <% } else { %> <% } %>
<% if (create) { %> <% if (errors.get("mucname") != null) { %>
<% } %> <% } else { %> <%= StringUtils.escapeHTMLTags(mucname) %> <% } %>

onClick="checkMUCPreload();">
value="<%= mucpreloaddays %>">
onClick="checkMUCKeep();">
value="<%= muccleanupdays %>">
">