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