1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.setup;
35
36 import info.magnolia.cms.security.Permission;
37 import info.magnolia.commands.impl.MarkNodeAsDeletedCommand;
38 import info.magnolia.jcr.util.NodeNameHelper;
39 import info.magnolia.jcr.util.NodeTypes;
40 import info.magnolia.module.AbstractModuleVersionHandler;
41 import info.magnolia.module.InstallContext;
42 import info.magnolia.module.delta.AddURIPermissionTask;
43 import info.magnolia.module.delta.AddUsersPermissionTask;
44 import info.magnolia.module.delta.ArrayDelegateTask;
45 import info.magnolia.module.delta.BootstrapConditionally;
46 import info.magnolia.module.delta.BootstrapSingleModuleResource;
47 import info.magnolia.module.delta.BootstrapSingleResource;
48 import info.magnolia.module.delta.CheckAndModifyPropertyValueTask;
49 import info.magnolia.module.delta.Condition;
50 import info.magnolia.module.delta.DeltaBuilder;
51 import info.magnolia.module.delta.FindAndChangeTemplateIdTask;
52 import info.magnolia.module.delta.FixUserRolePermissionsPropertyTask;
53 import info.magnolia.module.delta.HasPropertyDelegateTask;
54 import info.magnolia.module.delta.MoveAndRenamePropertyTask;
55 import info.magnolia.module.delta.NewPropertyTask;
56 import info.magnolia.module.delta.NoSameNameSiblingsCondition;
57 import info.magnolia.module.delta.NodeExistsDelegateTask;
58 import info.magnolia.module.delta.OrderFilterBeforeTask;
59 import info.magnolia.module.delta.OrderNodeBeforeTask;
60 import info.magnolia.module.delta.PartialBootstrapTask;
61 import info.magnolia.module.delta.PathExistenceDelegateTask;
62 import info.magnolia.module.delta.PropertyValueDelegateTask;
63 import info.magnolia.module.delta.QueryElementsAndDisplayWarningTask;
64 import info.magnolia.module.delta.RemoveInstallFilesTask;
65 import info.magnolia.module.delta.RemoveNodeTask;
66 import info.magnolia.module.delta.RemovePermissionTask;
67 import info.magnolia.module.delta.RemovePropertyTask;
68 import info.magnolia.module.delta.SetPropertyTask;
69 import info.magnolia.module.delta.Task;
70 import info.magnolia.module.delta.ValueOfPropertyDelegateTask;
71 import info.magnolia.module.delta.WarnTask;
72 import info.magnolia.module.delta.WebXmlConditionsUtil;
73 import info.magnolia.module.delta.WorkspaceXmlConditionsUtil;
74 import info.magnolia.objectfactory.Components;
75 import info.magnolia.repository.RepositoryConstants;
76 import info.magnolia.repository.RepositoryManager;
77 import info.magnolia.setup.for5_0.CheckOrCreateLastActivatedPropertyTask;
78 import info.magnolia.setup.for5_0.ConvertMetaDataUpdateTask;
79 import info.magnolia.setup.for5_0.Register50NodeTypeTask;
80 import info.magnolia.setup.for5_0.RemoveMetaDataInNodeTypeDefinitionTask;
81 import info.magnolia.setup.for5_2.AddActivatableMixinForContentNodeTask;
82 import info.magnolia.setup.for5_2.GrantReadPermissionToRolesTask;
83 import info.magnolia.setup.for5_2.IsNotAProblematicEnvironmentCondition;
84 import info.magnolia.setup.for5_2.RemoveOpenWFEPermissionsTask;
85 import info.magnolia.setup.for6_0.RemoveMIMEIconsTask;
86 import info.magnolia.setup.initial.GenericTasks;
87
88 import java.util.ArrayList;
89 import java.util.Arrays;
90 import java.util.List;
91 import java.util.UUID;
92
93 import javax.inject.Inject;
94 import javax.jcr.ImportUUIDBehavior;
95
96 import com.google.common.collect.Lists;
97
98
99
100
101
102 public class CoreModuleVersionHandler extends AbstractModuleVersionHandler {
103 public static final String BOOTSTRAP_AUTHOR_INSTANCE_PROPERTY = "magnolia.bootstrap.authorInstance";
104 public static final String SECURITY_BASE_ROLE = "security-base";
105
106
107 private final BootstrapConditionallyapConditionally">BootstrapConditionally auditTrailManagerTask = new BootstrapConditionally("New auditory log configuration", "Install new configuration for auditory log manager.", "/mgnl-bootstrap/core/config.server.auditLogging.xml");
108 private final BootstrapSingleResourceesource">BootstrapSingleResource bootstrapWebContainerResources = new BootstrapSingleResource("Web container resources configuration", "Global configuration which resources are not meant to be handled by Magnolia. For instance JSP files.", "/mgnl-bootstrap/core/config.server.webContainerResources.xml");
109 private final BootstrapSingleModuleResourcegleModuleResource">BootstrapSingleModuleResource bootstrapChannelManagement = new BootstrapSingleModuleResource("ChannelManagement configuration", "", "config.server.rendering.channelManagement.xml");
110
111 private final BootstrapSingleModuleResourcepSingleModuleResource">BootstrapSingleModuleResource bootstrapChannelFilter = new BootstrapSingleModuleResource("ChannelFilter configuration", "", "config.server.filters.channel.xml");
112 private final Task placeChannelBeforeLogout = new OrderFilterBeforeTask("channel", new String[]{"logout"});
113
114 private final Task removeObsoleteInstallFiles = new RemoveInstallFilesTask("Remove obsolete dms templates install files", "templates/dms");
115
116 private final RepositoryManager repositoryManager;
117
118
119
120
121 protected static List<String> PERMISSIONS_FOR_LEGACY_PAGES = Arrays.asList(
122 "/.magnolia/pages/messages*",
123 "/.magnolia/pages/installedModulesList*",
124 "/.magnolia/pages/jcrUtils*",
125 "/.magnolia/pages/configuration*",
126 "/.magnolia/pages/logViewer*",
127 "/.magnolia/pages/sendMail*",
128 "/.magnolia/pages/users*",
129 "/.magnolia/pages/activationTools*",
130 "/.magnolia/pages/activationMonitor*",
131 "/.magnolia/pages/groovyInteractiveConsole*",
132 "/.magnolia/pages/migrationReport*",
133 "/.magnolia/pages/backup*",
134 "/.magnolia/pages/allModulesList*",
135 "/.magnolia/pages/cacheTools*",
136 "/.magnolia/pages/flows*",
137 "/.magnolia/pages/import*",
138 "/.magnolia/pages/export*",
139 "/.magnolia/pages/permission*",
140 "/.magnolia/pages/developmentUtils*"
141 );
142
143 protected Task updateSecurityBaseRolePermissions() {
144 ArrayDelegateTaskrrayDelegateTask">ArrayDelegateTask permissionsTask = new ArrayDelegateTask("Update security-base role", "Disallows access to some sensitive URIs and grants basic access to AdminCentral.");
145 for (String path : PERMISSIONS_FOR_LEGACY_PAGES) {
146 permissionsTask.addTask(new RemovePermissionTask("", SECURITY_BASE_ROLE, "uri", path, AddURIPermissionTask.DENY));
147 }
148 permissionsTask.addTask(new RemovePermissionTask("", SECURITY_BASE_ROLE, RepositoryConstants.USER_ROLES, "/" + SECURITY_BASE_ROLE, Permission.READ));
149 return permissionsTask;
150 }
151
152 @Inject
153 public CoreModuleVersionHandler(RepositoryManager repositoryManager, NodeNameHelper nodeNameHelper) {
154 super();
155 this.repositoryManager = repositoryManager;
156
157 register(DeltaBuilder.checkPrecondition("4.5", "5.0"));
158
159 register(DeltaBuilder.update("4.5.2", "")
160 .addTask(new HasPropertyDelegateTask("Fix property name", "", RepositoryConstants.CONFIG, "/server/security/userManagers/system", "realName", new MoveAndRenamePropertyTask("Fix propertyName", "/server/security/userManagers/system", "realName", "/server/security/userManagers/system", "realmName")))
161 .addTask(new HasPropertyDelegateTask("Fix property name", "", RepositoryConstants.CONFIG, "/server/security/userManagers/admin", "realName", new MoveAndRenamePropertyTask("Fix propertyName", "/server/security/userManagers/admin", "realName", "/server/security/userManagers/admin", "realmName"))));
162
163 register((DeltaBuilder.update("4.5.9", ""))
164 .addTask(new NodeExistsDelegateTask("AuditLogging configurations", "Add auditLogging configurations for delete action", "config", "/server/auditLogging/logConfigurations/delete", null, new PartialBootstrapTask("", "", "/mgnl-bootstrap/core/config.server.auditLogging.xml", "/auditLogging/logConfigurations/delete", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW)))
165 .addTask(new CheckAndModifyPropertyValueTask("AuditLogging configurations", "Change auditLogging class", "config", "/server/auditLogging", "class", "info.magnolia.logging.AuditLoggingManager", "info.magnolia.audit.AuditLoggingManager")));
166
167 register(DeltaBuilder.update("5.0", "")
168 .addTask(new Register50NodeTypeTask("Register the new M5 node Type", "", RepositoryConstants.CONFIG))
169 .addTask(new RemoveMetaDataInNodeTypeDefinitionTask("Un register the metaData child node", "", RepositoryConstants.CONFIG))
170 .addTask(new ConvertMetaDataUpdateTask("Convert MetaData Task", "Remove the metaData sub node and replace them with mixIn when appropriate"))
171 .addTask(new RemoveNodeTask("Remove PageEditorServlet", "Remove obsolete PageEditorServlet configuration.", RepositoryConstants.CONFIG, "/server/filters/servlets/PageEditorServlet"))
172 .addTask(new RemoveNodeTask("Remove obsolete 'templating-editor' configuration", "", RepositoryConstants.CONFIG, "/modules/magnolia-templating-editor"))
173 .addTask(new BootstrapSingleModuleResource("Bootstrap link transformers", "Bootstrap 'server/rendering/linkManagement/transformers", "config.server.rendering.linkManagement.xml", "/linkManagement/transformers")));
174 register((DeltaBuilder.update("5.0.1", ""))
175 .addTask(new CheckAndModifyPropertyValueTask("MIMEMapping", "Change xsl extension mime-type from text/xml to application/xml", RepositoryConstants.CONFIG, "/server/MIMEMapping/xsl", "mime-type", "text/xml", "application/xml"))
176 .addTask(new CheckAndModifyPropertyValueTask("MIMEMapping", "Change xml extension mime-type from text/xml to application/xml", RepositoryConstants.CONFIG, "/server/MIMEMapping/xml", "mime-type", "text/xml", "application/xml")));
177 register((DeltaBuilder.update("5.0.3", ""))
178 .addTask(new BootstrapSingleModuleResource("JSON", "Add JSON mime-type", "config.server.MIMEMapping.xml", "/MIMEMapping/json")));
179 register((DeltaBuilder.update("5.1", ""))
180 .addTask(new WarnTask("respectOrderDocument parameter", "As of Magnolia 5.1, the respectOrderDocument parameter has been reintroduced in repo config files and set to true by default. You will need to set it manually for each workspace in your installation. Please, refer to the release notes for more details."))
181 .addTask(new RemoveNodeTask("Remove intercept filter", "Removes no longer used intercept filter.", RepositoryConstants.CONFIG, "/server/filters/cms/intercept")));
182 register((DeltaBuilder.update("5.1.1", ""))
183 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the user superuser", "Set mgnl:lastActivated date of the user superuser (if not set yet)", RepositoryConstants.USERS, "/system/superuser",
184 new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USERS, "/system/superuser")))
185 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the user anonymous", "Set mgnl:lastActivated date of the user anonymous (if not set yet)", RepositoryConstants.USERS, "/system/anonymous",
186 new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USERS, "/system/anonymous")))
187 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the superuser role", "Set mgnl:lastActivated date of the superuser role (if not set yet)", RepositoryConstants.USER_ROLES, "/superuser",
188 new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USER_ROLES, "/superuser")))
189 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the anonymous role", "Set mgnl:lastActivated date of the anonymous role (if not set yet)", RepositoryConstants.USER_ROLES, "/anonymous",
190 new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USER_ROLES, "/anonymous")))
191 .addTask(new NodeExistsDelegateTask("Set mgnl:lastActivated date of the security-base role", "Set mgnl:lastActivated date of the security-base role (if not set yet)", RepositoryConstants.USER_ROLES, "/security-base",
192 new CheckOrCreateLastActivatedPropertyTask("", "", RepositoryConstants.USER_ROLES, "/security-base")))
193 .addTask(new FindAndChangeTemplateIdTask("Change template id mgnlDelete", "Change template id mgnlDeleted to ui-admincentral:deleted for all content marked as deleted in website repository", RepositoryConstants.WEBSITE, "mgnlDeleted", MarkNodeAsDeletedCommand.DELETED_NODE_TEMPLATE))
194 .addTask(new FindAndChangeTemplateIdTask("Change template id adminInterface:mgnlDeleted", "Change template id adminInterface:mgnlDeleted to ui-admincentral:deleted for all content marked as deleted in website repository", RepositoryConstants.WEBSITE, "adminInterface:mgnlDeleted", MarkNodeAsDeletedCommand.DELETED_NODE_TEMPLATE)));
195 register((DeltaBuilder.update("5.1.2", ""))
196 .addTask(new ChangeNodeTypeOfSubAppsTask("Change primary node type of subapps", "If primary node type of subapps node is set to " + NodeTypes.Content.NAME + " then change it to " + NodeTypes.ContentNode.NAME))
197 .addTask(new BootstrapSingleModuleResource("Anonymous user", "Change anonymous user permission. He can't have write access to himself.", "users.system.anonymous.xml", "/anonymous/acl_users")));
198
199 register((DeltaBuilder.update("5.2.1", ""))
200 .addTask(new RemoveOpenWFEPermissionsTask("Find and remove all openWFE permissions from the userroles workspace", ""))
201 .addTask(new GrantReadPermissionToRolesTask("Set read-permission to role itself", "If a role do not have a read permission to itself, add it")));
202 register((DeltaBuilder.update("5.2.2", ""))
203 .addTask(removeObsoleteInstallFiles)
204 .addTask(new AddActivatableMixinForContentNodeTask("Add the mixIn '" + NodeTypes.Activatable.NAME + "' to the '" + NodeTypes.ContentNode.NAME + "' node type definition", "", RepositoryConstants.CONFIG)));
205 register((DeltaBuilder.update("5.2.3", ""))
206 .addTask(new RemovePermissionTask("Remove 'anonymous' role permission", "anonymous", RepositoryConstants.USER_ROLES, "/anonymous", Permission.READ)));
207
208 register((DeltaBuilder.update("5.3.2", ""))
209 .addTask(new NodeExistsDelegateTask("Add csrfSecurity Filter", "/server/filters/csrfSecurity",
210
211 new PathExistenceDelegateTask("Add csrfSecurity Filter", "", new String[]{"/server/filters/csrfSecurity/bypasses/BypassWhenVaadinRequest"}, new String[]{"/server/filters/csrfSecurity/bypasses/BypassWhenNotInAdminCentral", "/server/filters/csrfSecurity/bypasses/BypassWhenNotAuthenticated", "/server/filters/csrfSecurity/bypasses/BypassWhenNoQueryParameters"},
212 new PartialBootstrapTask("Add csrfSecurity Filter", "", "/mgnl-bootstrap/core/config.server.filters.xml", "/filters/csrfSecurity/bypasses/BypassWhenVaadinRequest", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW)),
213
214 new PartialBootstrapTask("Add csrfSecurity Filter", "", "/mgnl-bootstrap/core/config.server.filters.xml", "/filters/csrfSecurity", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW)))
215 .addTask(new NodeExistsDelegateTask("Order csrfSecurity Filter", "Put csrfSecurity before uriSecurity Filter.", RepositoryConstants.CONFIG, "/server/filters/uriSecurity",
216 new OrderNodeBeforeTask("Order csrfSecurity Filter", "Put csrfSecurity before uriSecurity Filter.", RepositoryConstants.CONFIG, "/server/filters/csrfSecurity", "uriSecurity"),
217 new WarnTask("CSRF Security Filter is inactive.", "CSRF Security Filter inactive. The installed csrfFilter would normally be ordered before the uriSecurity filter, but could not be moved there as a uriFilter node does not exist in the /server/filters node. The installed csrfFilter must be moved up the filters list manually.")))
218 .addTask(new NodeExistsDelegateTask("Add csrfSecurity Filter", "/server/auditLogging/logConfigurations/security", null,
219 new PartialBootstrapTask("Add 'security' AuditLogging logConfiguration.", "", "/mgnl-bootstrap/core/config.server.auditLogging.xml", "/auditLogging/logConfigurations/security", ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW))));
220
221 register((DeltaBuilder.update("5.3.5", ""))
222
223 .addTask(new FixUserRolePermissionsPropertyTask("/superuser")));
224
225 register((DeltaBuilder.update("5.4.1", ""))
226 .addTask(updateSecurityBaseRolePermissions()));
227
228 register((DeltaBuilder.update("5.4.3", ""))
229 .addTask(new PropertyValueDelegateTask("Change MIME mapping of Javascript resources", "/server/MIMEMapping/js", "mime-type", "application/x-javascript", true,
230 new SetPropertyTask("config", "/server/MIMEMapping/js", "mime-type", "application/javascript"))));
231
232 register((DeltaBuilder.update("5.4.5", ""))
233 .addTask(new BootstrapSingleModuleResource("Add mime mapping for .map", "Add mime mapping for .map", "config.server.MIMEMapping.xml", "/MIMEMapping/map")));
234
235 register((DeltaBuilder.update("5.4.6", ""))
236 .addTask(new QueryElementsAndDisplayWarningTask("Check SimpleUrlPatterns in user roles",
237 "SimpleUrlPattern no longer misinterprets dots as regular expression wildcard characters. User roles will be checked whether they are affected.",
238 RepositoryConstants.USER_ROLES, "SELECT * FROM [nt:base] WHERE path LIKE '%.%'", NodeTypes.Role.NAME,
239 "SimpleUrlPattern no longer misinterprets dots as regular expression wildcard characters. As a result, the following roles might need your attention:\n%s" +
240 "\nRead more at http://documentation.magnolia-cms.com/display/DOCS/Release+notes+for+Magnolia+5.4.6.",
241 Lists.newArrayList("/rest", "/security-base", "/anonymous", "/forum_ALL-moderator", "/forum_ALL-user", "/forum_ALL-admin", "/public-user-registration-base"))));
242
243 register((DeltaBuilder.update("5.4.7", ""))
244 .addTask(new AddUsersPermissionTask("Allow users to edit their timezone setting", "/admin", RepositoryConstants.USERS, AddUsersPermissionTask.USER_PATH_REPLACEMENT + "/timezone", Permission.ALL, nodeNameHelper)));
245
246 register(DeltaBuilder.update("5.4.8", "")
247 .addTask(new NodeExistsDelegateTask("If exists, remove legacy log4j servlet", "/server/filters/servlets/log4j", new RemoveNodeTask("", "/server/filters/servlets/log4j"))));
248
249 register(DeltaBuilder.update("5.4.9", "")
250 .addTask(new AddActivatableMixinForMgnlResourceTask("Update mgnl:resource node type", "Add mgnl:activatable mixin to the mgnl:resource node type", RepositoryConstants.WEBSITE))
251 );
252
253 register(DeltaBuilder.update("5.5", "")
254 .addTask(new MigrateVersionWorkspacesToNewStructureTask(repositoryManager))
255 .addTasks(getLockableMixinAdditionTasksForAllWorkspaces())
256 .addTask(new NodeExistsDelegateTask("Add korean language into system languages", "/server/i18n/system/ko", null,
257 new BootstrapSingleModuleResource("", "", "config.server.i18n.system.xml", "/system/languages/ko")))
258 );
259
260 register(DeltaBuilder.update("5.5.4", "")
261 .addTask(new BootstrapSingleModuleResource("Add mime mapping for YAML", "Add mime mapping for YAML", "config.server.MIMEMapping.xml", "/MIMEMapping/x-yaml"))
262 .addTask(new RenameVersionNodesTask(repositoryManager))
263 );
264
265 register(DeltaBuilder.update("6.0", "")
266 .addTask(new NodeExistsDelegateTask("Enable csrfTokenSecurity filter", "Adds or enables csrfTokenSecurity filter.", "config", "/server/filters/csrfTokenSecurity",
267 new ValueOfPropertyDelegateTask("Enable csrfTokenSecurity filter", "/server/filters/csrfTokenSecurity", "enabled", "false", false,
268 new RemovePropertyTask("", "/server/filters/csrfTokenSecurity", "enabled")),
269 new ArrayDelegateTask("Add csrfTokenSecurity filter", "",
270 new BootstrapSingleModuleResource("", "", "config.server.filters.xml", "/filters/csrfTokenSecurity"),
271 new NodeExistsDelegateTask("", "/server/filters/login",
272 new OrderNodeBeforeTask("Order csrfTokenSecurity Filter", "Put csrfTokenSecurity before login filter.", RepositoryConstants.CONFIG, "/server/filters/csrfTokenSecurity", "login"),
273 new WarnTask("CSRF Token Security Filter is inactive.", "CSRF Token Security Filter inactive. The installed csrfTokenSecurity filter must be moved up in the filters list and enabled manually.")))))
274 .addTask(new RemoveMIMEIconsTask("Find and remove all legacy 'icon' properties", "", RepositoryConstants.CONFIG, "/server/MIMEMapping"))
275 .addTask(new BootstrapSingleModuleResource("Add WOFF2 MIME type", "", "config.server.MIMEMapping.xml", "/MIMEMapping/woff2"))
276 );
277 register(DeltaBuilder.update("6.1", "")
278 .addTask(new NodeExistsDelegateTask("Add publish node into auditLogging config", "/server/auditLogging/logConfigurations/publish", null,
279 new BootstrapSingleModuleResource("", "add publish node", "config.server.auditLogging.xml", "/auditLogging/logConfigurations/publish")))
280 .addTask(new NodeExistsDelegateTask("Add unpublish node into auditLogging config", "/server/auditLogging/logConfigurations/unpublish", null,
281 new BootstrapSingleModuleResource("", "add unpublish node", "config.server.auditLogging.xml", "/auditLogging/logConfigurations/unpublish")))
282 .addTask(createInstanceUuid())
283 );
284 }
285
286
287
288
289 @Deprecated
290 public CoreModuleVersionHandler(RepositoryManager repositoryManager) {
291 this(repositoryManager, Components.getComponent(NodeNameHelper.class));
292 }
293
294 private List<Task> getLockableMixinAdditionTasksForAllWorkspaces() {
295 List<Task> tasks = Lists.newArrayList();
296 for (String workspaceName : repositoryManager.getWorkspaceNames()) {
297 tasks.add(new AddLockableMixinToVersionableMixinTask("",
298 "Adding lockable mixing as supertype to versionable mixin for workspace '{" + workspaceName + "}'", workspaceName));
299 tasks.add(new AddLockableMixinToActivatableMixinTask("",
300 "Adding lockable mixing as supertype to activatable mixin for workspace '{" + workspaceName + "}'", workspaceName));
301 }
302 return tasks;
303 }
304
305 private Task createInstanceUuid() {
306 return new NewPropertyTask("Create an instance UUID", "/server", "instanceUuid", UUID.randomUUID().toString());
307 }
308
309 @Override
310 protected List<Task> getBasicInstallTasks(InstallContext ctx) {
311 final List<Task> tasks = new ArrayList<>();
312 tasks.addAll(GenericTasks.genericTasksForNewInstallation());
313 tasks.add(auditTrailManagerTask);
314 tasks.add(bootstrapWebContainerResources);
315 tasks.add(new BootstrapConditionally("Security", "Bootstraps security-base role.", "/mgnl-bootstrap/core/userroles.security-base.xml"));
316
317 tasks.add(new HashUsersPasswords());
318 tasks.add(bootstrapChannelManagement);
319 tasks.add(bootstrapChannelFilter);
320 tasks.add(placeChannelBeforeLogout);
321 tasks.add(createInstanceUuid());
322
323 return tasks;
324 }
325
326 @Override
327 protected List<Condition> getInstallConditions() {
328 final List<Condition> conditions = new ArrayList<>();
329
330 conditions.add(new IsNotAProblematicEnvironmentCondition());
331
332 final WebXmlConditionsUtilonsUtil.html#WebXmlConditionsUtil">WebXmlConditionsUtil u = new WebXmlConditionsUtil(conditions);
333 u.servletIsNowWrapped("ActivationHandler");
334 u.servletIsNowWrapped("AdminTreeServlet");
335 u.servletIsNowWrapped("classpathspool");
336 u.servletIsNowWrapped("DialogServlet");
337 u.servletIsNowWrapped("PageServlet");
338 u.servletIsNowWrapped("log4j");
339 u.servletIsNowWrapped("FCKEditorSimpleUploadServlet");
340 u.servletIsDeprecated("uuidRequestDispatcher");
341 u.filterIsDeprecated("info.magnolia.cms.filters.MagnoliaManagedFilter", "info.magnolia.cms.filters.MgnlMainFilter");
342 u.filterMustBeRegisteredWithCorrectDispatchers("info.magnolia.cms.filters.MgnlMainFilter");
343 u.listenerIsDeprecated("info.magnolia.cms.servlets.MgnlServletContextListener", "info.magnolia.init.MagnoliaServletContextListener");
344 final WorkspaceXmlConditionsUtilnsUtil.html#WorkspaceXmlConditionsUtil">WorkspaceXmlConditionsUtil u2 = new WorkspaceXmlConditionsUtil(conditions);
345 u2.textFilterClassesAreNotSet();
346
347 conditions.add(new SystemTmpDirCondition());
348 conditions.add(new NoSameNameSiblingsCondition(repositoryManager));
349
350 return conditions;
351 }
352 }
353