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.pages;
35
36 import info.magnolia.cms.i18n.Messages;
37 import info.magnolia.cms.i18n.MessagesManager;
38 import info.magnolia.cms.security.AccessDeniedException;
39 import info.magnolia.cms.security.AccessManager;
40 import info.magnolia.cms.security.MgnlKeyPair;
41 import info.magnolia.cms.security.Permission;
42 import info.magnolia.cms.security.SecurityUtil;
43 import info.magnolia.context.MgnlContext;
44 import info.magnolia.module.ModuleRegistry;
45 import info.magnolia.module.admininterface.TemplatedMVCHandler;
46 import info.magnolia.module.exchangesimple.ExchangeSimpleModule;
47
48 import javax.servlet.ServletException;
49 import javax.servlet.http.HttpServletRequest;
50 import javax.servlet.http.HttpServletResponse;
51
52
53
54
55
56
57 public class ActivationPage extends TemplatedMVCHandler {
58
59 private int keyLength;
60
61 private boolean generateKeys;
62
63 private boolean success;
64
65 private MgnlKeyPair keyPair;
66
67
68
69
70
71
72 public ActivationPage(String name, HttpServletRequest request, HttpServletResponse response) {
73 super(name, request, response);
74 keyLength = ModuleRegistry.Factory.getInstance().getModuleInstance(ExchangeSimpleModule.class).getActivationKeyLength();
75 }
76
77
78
79
80 @Override
81 public String getCommand() {
82 if (this.generateKeys) {
83 return "generateKeys";
84 }
85 return super.getCommand();
86 }
87
88
89
90
91 public String generateKeys() throws Exception {
92 if (!checkPermissions(request, "config", "/", Permission.WRITE)) {
93 throw new ServletException(new AccessDeniedException(
94 "Write permission needed to generate new key. Please try again after logging in with appropriate permissions."));
95 }
96
97 keyPair = SecurityUtil.generateKeyPair(keyLength);
98 SecurityUtil.updateKeys(keyPair);
99 this.success = true;
100
101
102
103 return this.show();
104 }
105
106
107 public String getCurrentPublicKey() {
108 if (keyPair != null) {
109 return keyPair.getPublicKey();
110 }
111 return SecurityUtil.getPublicKey();
112 }
113
114
115
116
117
118
119
120
121 protected boolean checkPermissions(HttpServletRequest request, String repository, String basePath,
122 long permissionType) {
123
124 AccessManager accessManager = MgnlContext.getAccessManager(repository);
125 if (accessManager != null) {
126 if (!accessManager.isGranted(basePath, permissionType)) {
127 return false;
128 }
129 }
130 return true;
131 }
132
133 public Messages getMessages() {
134 return MessagesManager.getMessages("info.magnolia.module.exchangesimple.messages");
135 }
136
137 public int getKeyLength() {
138 return keyLength;
139 }
140
141 public void setKeyLength(int keyLength) {
142 this.keyLength = keyLength;
143 }
144
145 public boolean isGenerateKeys() {
146 return generateKeys;
147 }
148
149 public void setGenerateKeys(boolean generateKeys) {
150 this.generateKeys = generateKeys;
151 }
152
153 public boolean isSuccess() {
154 return success;
155 }
156
157 public void setSuccess(boolean success) {
158 this.success = success;
159 }
160
161 }