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.module.exchangesimple.setup;
35
36 import info.magnolia.cms.core.MgnlNodeType;
37 import info.magnolia.cms.security.SecurityUtil;
38 import info.magnolia.module.DefaultModuleVersionHandler;
39 import info.magnolia.module.InstallContext;
40 import info.magnolia.module.delta.AbstractTask;
41 import info.magnolia.module.delta.ArrayDelegateTask;
42 import info.magnolia.module.delta.BootstrapSingleModuleResource;
43 import info.magnolia.module.delta.BootstrapSingleResource;
44 import info.magnolia.module.delta.Condition;
45 import info.magnolia.module.delta.CreateNodeTask;
46 import info.magnolia.module.delta.DeltaBuilder;
47 import info.magnolia.module.delta.FilterOrderingTask;
48 import info.magnolia.module.delta.IsAuthorInstanceDelegateTask;
49 import info.magnolia.module.delta.SetPropertyTask;
50 import info.magnolia.module.delta.Task;
51 import info.magnolia.module.delta.TaskExecutionException;
52
53
54 import info.magnolia.repository.RepositoryConstants;
55
56
57 import java.security.NoSuchAlgorithmException;
58 import java.util.ArrayList;
59 import java.util.List;
60
61
62
63
64
65
66 public class ExchangeSimpleModuleVersionHandler extends DefaultModuleVersionHandler {
67 private final Task createEmptyActivationConfig = new ArrayDelegateTask("Activation configuration", "Creates an empty activation configuration", new Task[] {
68 new CreateNodeTask("Activation configuration", "Creates empty activation configuration", RepositoryConstants.CONFIG, "/server", "activation", MgnlNodeType.NT_CONTENT),
69 new SetPropertyTask(RepositoryConstants.CONFIG, "/server/activation", "class", info.magnolia.module.exchangesimple.DefaultActivationManager.class.getName()),
70 new CreateNodeTask("Activation configuration", "Creates empty subscribers node", RepositoryConstants.CONFIG, "/server/activation", "subscribers", MgnlNodeType.NT_CONTENT)
71 });
72
73 public ExchangeSimpleModuleVersionHandler() {
74 super();
75
76 register(DeltaBuilder.checkPrecondition("4.4.6", "4.5"));
77
78 register(DeltaBuilder.update("4.5", "URL of activation filter is no longer password protected but uses encryption instead.")
79 .addTask(new BootstrapSingleModuleResource("Configure ActivationPage", "Register class to be used.", "config.modules.exchange-simple.pages.activationPage.xml"))
80 .addTask(new BootstrapSingleModuleResource("ActivationPage Menu", "Configure menu in AdminInterface.", "config.modules.adminInterface.config.menu.tools.activationPage.xml"))
81 .addTask(new IsAuthorInstanceDelegateTask("Security update", "Update security keys if on author instance.", new AbstractTask("", "") {
82
83 @Override
84 public void execute(InstallContext installContext) throws TaskExecutionException {
85 try {
86 SecurityUtil.updateKeys(SecurityUtil.generateKeyPair(1024));
87 } catch (NoSuchAlgorithmException e) {
88 throw new TaskExecutionException(e.getMessage(), e);
89 }
90 }
91 }))
92 .addTask(new FilterOrderingTask("activation", new String[] { "context", "login", "multipartRequest" })));
93
94 }
95
96 @Override
97 protected List<Task> getBasicInstallTasks(InstallContext installContext) {
98 final List<Task> installTasks = new ArrayList<Task>(super.getBasicInstallTasks(installContext));
99 installTasks.add(new FilterOrderingTask("activation", new String[] { "context", "login", "multipartRequest" }));
100 installTasks.add(new IsAuthorInstanceDelegateTask("", "", new BootstrapSingleResource("Bootstrap new activation configuration", "Bootstrap new activation configuration",
101 "/info/magnolia/module/exchangesimple/setup/config.server.activation.xml"), createEmptyActivationConfig));
102
103 return installTasks;
104 }
105
106 @Override
107 protected List<Task> getExtraInstallTasks(InstallContext installContext) {
108 List<Task> tasks = new ArrayList<Task>();
109 tasks.addAll(super.getExtraInstallTasks(installContext));
110 tasks.add(new IsAuthorInstanceDelegateTask("Activation Keys", "Generate new Activation Key Pair.", new AbstractTask("", "") {
111
112 @Override
113 public void execute(InstallContext installContext) throws TaskExecutionException {
114 try {
115 SecurityUtil.updateKeys(SecurityUtil.generateKeyPair(1024));
116 } catch (NoSuchAlgorithmException e) {
117 throw new TaskExecutionException(e.getMessage(), e);
118 }
119 }
120 }));
121
122 return tasks;
123 }
124
125 @Override
126 protected List<Condition> getInstallConditions() {
127 final ArrayList<Condition> conditions = new ArrayList<Condition>();
128
129 conditions.add(new CheckKeyProperty());
130
131 return conditions;
132 }
133 }