1
2
3
4
5
6 package gov.bnl.gums.service;
7
8 import gov.bnl.gums.account.*;
9 import gov.bnl.gums.configuration.Configuration;
10 import gov.bnl.gums.groupToAccount.*;
11 import gov.bnl.gums.hostToGroup.*;
12 import gov.bnl.gums.persistence.*;
13 import gov.bnl.gums.userGroup.*;
14
15 import javax.servlet.http.HttpServletRequest;
16
17 import java.rmi.Remote;
18 import java.util.Collection;
19 import java.util.Iterator;
20 import java.util.Properties;
21
22
23
24
25
26 public class ConfigurationWebToolkit implements Remote {
27 static public CertificateHostToGroupMapping parseHostToGroupMapping(HttpServletRequest request) throws Exception {
28 CertificateHostToGroupMapping hostToGroupMapping = new CertificateHostToGroupMapping();
29 String type = request.getParameter("hg_type").trim();
30 if(type.equals("dn"))
31 hostToGroupMapping.setDn( request.getParameter("name").trim() );
32 else
33 hostToGroupMapping.setCn( request.getParameter("name").trim() );
34 if (request.getParameter("description")!=null)
35 hostToGroupMapping.setDescription( request.getParameter("description").trim() );
36 int counter = 0;
37 while(request.getParameter("g2AM" + counter)!=null) {
38 String g2AMName = request.getParameter("g2AM" + counter).trim();
39 if (!g2AMName.equals(""))
40 hostToGroupMapping.addGroupToAccountMapping(g2AMName);
41 counter++;
42 }
43
44 return hostToGroupMapping;
45 }
46
47 static public GroupToAccountMapping parseGroupToAccountMapping(HttpServletRequest request) throws Exception {
48 GroupToAccountMapping groupToAccountMapping = new GroupToAccountMapping();
49
50 groupToAccountMapping.setName( request.getParameter("name").trim() );
51 if (request.getParameter("description")!=null)
52 groupToAccountMapping.setDescription( request.getParameter("description").trim() );
53
54 int counter = 0;
55 while(request.getParameter("aM" + counter)!=null) {
56 String accountMapperName = request.getParameter("aM" + counter).trim();
57 if (!accountMapperName.equals(""))
58 groupToAccountMapping.addAccountMapper(accountMapperName);
59 counter++;
60 }
61
62 counter = 0;
63 while(request.getParameter("uG" + counter)!=null) {
64 String userGroupName = request.getParameter("uG" + counter).trim();
65 if (!userGroupName.equals(""))
66 groupToAccountMapping.addUserGroup(userGroupName);
67 counter++;
68 }
69
70 if (request.getParameter("accVoSub")!=null && !request.getParameter("accVoSub").equals("")) {
71 String trimmed = request.getParameter("accVoSub").trim();
72 if (trimmed.indexOf(" ")!=-1)
73 throw new RuntimeException("There cannot be a space in the accounting VO Subgroup");
74 if (request.getParameter("accVo").equals(""))
75 throw new RuntimeException("You must specify neither or both accounting VO subgroup and account VO");
76 groupToAccountMapping.setAccountingVoSubgroup(trimmed);
77
78 }
79
80 if (request.getParameter("accVo")!=null && !request.getParameter("accVo").equals("")) {
81 String trimmed = request.getParameter("accVo").trim();
82 if (trimmed.indexOf(" ")!=-1)
83 throw new RuntimeException("There cannot be a space in the accounting VO");
84 if (request.getParameter("accVoSub").equals(""))
85 throw new RuntimeException("You must specify neither or both accounting VO subgroup and account VO");
86 groupToAccountMapping.setAccountingVo(trimmed);
87
88 }
89
90 return groupToAccountMapping;
91 }
92
93 static public AccountMapper parseAccountMapper(HttpServletRequest request) throws Exception {
94 AccountMapper accountMapper = null;
95
96 String type = request.getParameter("am_type").trim();
97
98 if (type.equals(GroupAccountMapper.getTypeStatic())) {
99 accountMapper = new GroupAccountMapper();
100 accountMapper.setName( request.getParameter("name").trim() );
101 if (request.getParameter("description")!=null)
102 accountMapper.setDescription( request.getParameter("description").trim() );
103 if (request.getParameter("accountName")!=null)
104 ((GroupAccountMapper)accountMapper).setAccountName( request.getParameter("accountName").trim() );
105 }
106 else if (type.equals(ManualAccountMapper.getTypeStatic())) {
107 accountMapper = new ManualAccountMapper();
108 accountMapper.setName( request.getParameter("name").trim() );
109 if (request.getParameter("description")!=null)
110 accountMapper.setDescription( request.getParameter("description").trim() );
111 if (request.getParameter("persistenceFactory")!=null)
112 ((ManualAccountMapper)accountMapper).setPersistenceFactory( request.getParameter("persistenceFactory").trim() );
113 }
114 else if (type.equals(AccountPoolMapper.getTypeStatic())) {
115 accountMapper = new AccountPoolMapper();
116 accountMapper.setName( request.getParameter("name").trim() );
117 if (request.getParameter("description")!=null)
118 accountMapper.setDescription( request.getParameter("description").trim() );
119 if (request.getParameter("accountPool")!=null)
120 ((AccountPoolMapper)accountMapper).setAccountPool( request.getParameter("accountPool").trim() );
121 if (request.getParameter("persistenceFactory")!=null)
122 ((AccountPoolMapper)accountMapper).setPersistenceFactory( request.getParameter("persistenceFactory").trim() );
123 }
124 else if (type.equals(GecosLdapAccountMapper.getTypeStatic())) {
125 accountMapper = new GecosLdapAccountMapper();
126 accountMapper.setName( request.getParameter("name").trim() );
127 if (request.getParameter("description")!=null)
128 accountMapper.setDescription( request.getParameter("description").trim() );
129 if (request.getParameter("serviceUrl")!=null)
130 ((GecosLdapAccountMapper)accountMapper).setJndiLdapUrl( request.getParameter("serviceUrl").trim() );
131 if (request.getParameter("gecos")!=null)
132 ((GecosLdapAccountMapper)accountMapper).setGecosField( request.getParameter("gecos").trim() );
133 if (request.getParameter("account")!=null)
134 ((GecosLdapAccountMapper)accountMapper).setAccountField( request.getParameter("account").trim() );
135 if (request.getParameter("peopleObject")!=null)
136 ((GecosLdapAccountMapper)accountMapper).setPeopleObject( request.getParameter("peopleObject").trim() );
137 }
138 else if (type.equals(LdapAccountMapper.getTypeStatic())) {
139 accountMapper = new LdapAccountMapper();
140 accountMapper.setName( request.getParameter("name").trim() );
141 if (request.getParameter("description")!=null)
142 accountMapper.setDescription( request.getParameter("description").trim() );
143 if (request.getParameter("serviceUrl")!=null)
144 ((LdapAccountMapper)accountMapper).setJndiLdapUrl( request.getParameter("serviceUrl").trim() );
145 if (request.getParameter("dn")!=null)
146 ((LdapAccountMapper)accountMapper).setDnField( request.getParameter("dn").trim() );
147 if (request.getParameter("account")!=null)
148 ((LdapAccountMapper)accountMapper).setAccountField( request.getParameter("account").trim() );
149 if (request.getParameter("peopleObject")!=null)
150 ((LdapAccountMapper)accountMapper).setPeopleObject( request.getParameter("peopleObject").trim() );
151 }
152 else if (type.equals(GecosNisAccountMapper.getTypeStatic())) {
153 accountMapper = new GecosNisAccountMapper();
154 accountMapper.setName( request.getParameter("name").trim() );
155 if (request.getParameter("description")!=null)
156 accountMapper.setDescription( request.getParameter("description").trim() );
157 if (request.getParameter("serviceUrl")!=null)
158 ((GecosNisAccountMapper)accountMapper).setJndiNisUrl( request.getParameter("serviceUrl").trim() );
159 if (request.getParameter("gecos")!=null)
160 ((GecosNisAccountMapper)accountMapper).setGecosField( request.getParameter("gecos").trim() );
161 if (request.getParameter("account")!=null)
162 ((GecosNisAccountMapper)accountMapper).setAccountField( request.getParameter("account").trim() );
163 }
164
165 return accountMapper;
166 }
167
168 static public UserGroup parseUserGroup(HttpServletRequest request) throws Exception {
169 UserGroup userGroup = null;
170
171 String type = request.getParameter("ug_type");
172
173 if (type.equals(ManualUserGroup.getTypeStatic())) {
174 userGroup = new ManualUserGroup();
175 userGroup.setName( request.getParameter("name").trim() );
176 if (request.getParameter("description")!=null)
177 userGroup.setDescription( request.getParameter("description").trim() );
178 if (request.getParameter("access")!=null)
179 userGroup.setAccess( request.getParameter("access").trim() );
180 if (request.getParameter("persistenceFactory")!=null)
181 ((ManualUserGroup)userGroup).setPersistenceFactory( request.getParameter("persistenceFactory").trim() );
182 if (request.getParameter("membersUri")!=null)
183 ((ManualUserGroup)userGroup).setMembersUri( request.getParameter("membersUri").trim() );
184 if (request.getParameter("nonMembersUri")!=null)
185 ((ManualUserGroup)userGroup).setNonMembersUri( request.getParameter("nonMembersUri").trim() );
186 } else if (type.equals(LDAPUserGroup.getTypeStatic())) {
187 userGroup = new LDAPUserGroup();
188 userGroup.setName( request.getParameter("name").trim() );
189 if (request.getParameter("description")!=null)
190 userGroup.setDescription( request.getParameter("description").trim() );
191 if (request.getParameter("access")!=null)
192 userGroup.setAccess( request.getParameter("access").trim() );
193 if (request.getParameter("server")!=null)
194 ((LDAPUserGroup)userGroup).setServer( request.getParameter("server").trim() );
195 if (request.getParameter("peopleTree")!=null)
196 ((LDAPUserGroup)userGroup).setPeopleTree( request.getParameter("peopleTree").trim() );
197 if (request.getParameter("groupTree")!=null)
198 ((LDAPUserGroup)userGroup).setGroupTree( request.getParameter("groupTree").trim() );
199 if (request.getParameter("persistenceFactory")!=null)
200 ((LDAPUserGroup)userGroup).setPersistenceFactory( request.getParameter("persistenceFactory").trim() );
201 if (request.getParameter("certDNField")!=null)
202 ((LDAPUserGroup)userGroup).setCertDNField( request.getParameter("certDNField").trim() );
203 if (request.getParameter("memberUidField")!=null)
204 ((LDAPUserGroup)userGroup).setMemberUidField( request.getParameter("memberUidField").trim() );
205 } else if (type.equals(VOMSUserGroup.getTypeStatic())) {
206 userGroup = new VOMSUserGroup();
207 userGroup.setName( request.getParameter("name").trim() );
208 if (request.getParameter("description")!=null)
209 userGroup.setDescription( request.getParameter("description").trim() );
210 if (request.getParameter("access")!=null)
211 userGroup.setAccess( request.getParameter("access").trim() );
212 if (request.getParameter("vOrg")!=null)
213 ((VOMSUserGroup)userGroup).setVomsServer( request.getParameter("vOrg").trim() );
214 else if(request.getParameter("baseUrl")!=null && !request.getParameter("baseUrl").equals(""))
215 ((VOMSUserGroup)userGroup).setVomsServer( request.getParameter("name").trim() );
216 if (request.getParameter("url")!=null)
217 ((VOMSUserGroup)userGroup).setRemainderUrl( request.getParameter("url").trim() );
218 if (request.getParameter("nVOMS")!=null)
219 ((VOMSUserGroup)userGroup).setAcceptProxyWithoutFQAN( request.getParameter("nVOMS").trim().equals("true") );
220 if (request.getParameter("matchFQAN")!=null)
221 ((VOMSUserGroup)userGroup).setMatchFQAN( request.getParameter("matchFQAN") );
222 if (request.getParameter("vogroup")!=null)
223 ((VOMSUserGroup)userGroup).setVoGroup( request.getParameter("vogroup") );
224 if (request.getParameter("role")!=null)
225 ((VOMSUserGroup)userGroup).setRole( request.getParameter("role") );
226 }
227
228 return userGroup;
229 }
230
231 static public VomsServer parseVomsServer(HttpServletRequest request) throws Exception {
232 VomsServer vomsServer = new VomsServer();
233 vomsServer.setName( request.getParameter("name").trim() );
234 if (request.getParameter("description")!=null)
235 vomsServer.setDescription( request.getParameter("description").trim() );
236 if (request.getParameter("persistenceFactory")!=null)
237 vomsServer.setPersistenceFactory( request.getParameter("persistenceFactory").trim() );
238 if (request.getParameter("baseURL")!=null)
239 vomsServer.setBaseUrl( request.getParameter("baseURL").trim() );
240 if (request.getParameter("sslKey")!=null)
241 vomsServer.setSslKey( request.getParameter("sslKey").trim() );
242 if (request.getParameter("sslCert")!=null)
243 vomsServer.setSslCertfile( request.getParameter("sslCert").trim() );
244 if (request.getParameter("sslCA")!=null)
245 vomsServer.setSslCAFiles( request.getParameter("sslCA").trim() );
246 if (request.getParameter("sslKeyPW")!=null)
247 vomsServer.setSslKeyPasswd( request.getParameter("sslKeyPW").trim() );
248 return vomsServer;
249 }
250
251 static public PersistenceFactory parsePersistenceFactory(HttpServletRequest request) throws Exception {
252 PersistenceFactory persistenceFactory = null;
253
254 String type = request.getParameter("type");
255
256 if (type.equals(HibernatePersistenceFactory.getTypeStatic())) {
257 persistenceFactory = new HibernatePersistenceFactory();
258 persistenceFactory.setName( request.getParameter("name").trim() );
259 if (request.getParameter("description")!=null)
260 persistenceFactory.setDescription( request.getParameter("description").trim() );
261 if (request.getParameter("storeConfig")!=null)
262 persistenceFactory.setStoreConfig( request.getParameter("storeConfig").trim().equals("on") );
263 ((HibernatePersistenceFactory)persistenceFactory).setProperties( getHibernateProperties(persistenceFactory, request, false) );
264 }
265 else if (type.equals(LDAPPersistenceFactory.getTypeStatic())) {
266 persistenceFactory = new LDAPPersistenceFactory();
267 persistenceFactory.setName( request.getParameter("name").trim() );
268 if (request.getParameter("description")!=null)
269 persistenceFactory.setDescription( request.getParameter("description").trim() );
270 if (request.getParameter("storeConfig")!=null)
271 persistenceFactory.setStoreConfig( request.getParameter("storeConfig").trim().equals("on") );
272 ((LDAPPersistenceFactory)persistenceFactory).setSynch( request.getParameter("synch")!=null ? request.getParameter("synch").trim().equals("true") : false );
273 ((LDAPPersistenceFactory)persistenceFactory).setCaCertFile( request.getParameter("caCertFile")!=null ? request.getParameter("caCertFile").trim() : "" );
274 ((LDAPPersistenceFactory)persistenceFactory).setTrustStorePassword( request.getParameter("tsPassword")!=null ? request.getParameter("tsPassword").trim() : "" );
275 if (request.getParameter("groupTree")!=null)
276 ((LDAPPersistenceFactory)persistenceFactory).setGroupTree( request.getParameter("groupTree") );
277 if (request.getParameter("peopleTree")!=null)
278 ((LDAPPersistenceFactory)persistenceFactory).setPeopleTree( request.getParameter("peopleTree") );
279 if (request.getParameter("gumsTree")!=null)
280 ((LDAPPersistenceFactory)persistenceFactory).setPeopleTree( request.getParameter("gumsTree") );
281 if (request.getParameter("gidNumberField")!=null)
282 ((LDAPPersistenceFactory)persistenceFactory).setGroupIdField( request.getParameter("gidNumberField") );
283 if (request.getParameter("groupCnField")!=null)
284 ((LDAPPersistenceFactory)persistenceFactory).setGroupCnField( request.getParameter("groupCnField") );
285 if (request.getParameter("uidField")!=null)
286 ((LDAPPersistenceFactory)persistenceFactory).setUidField( request.getParameter("uidField") );
287 if (request.getParameter("memberUidField")!=null)
288 ((LDAPPersistenceFactory)persistenceFactory).setMemberUidField( request.getParameter("memberUidField") );
289 if (request.getParameter("emailField")!=null)
290 ((LDAPPersistenceFactory)persistenceFactory).setEmailField( request.getParameter("emailField") );
291 ((LDAPPersistenceFactory)persistenceFactory).setProperties( getLdapProperties(persistenceFactory, request, false) );
292 }
293 else if (type.equals(LocalPersistenceFactory.getTypeStatic())) {
294 persistenceFactory = new LocalPersistenceFactory();
295 persistenceFactory.setName( request.getParameter("name").trim() );
296 if (request.getParameter("description")!=null)
297 persistenceFactory.setDescription( request.getParameter("description").trim() );
298 if (request.getParameter("storeConfig")!=null)
299 persistenceFactory.setStoreConfig( request.getParameter("storeConfig").trim().equals("on") );
300 ((LocalPersistenceFactory)persistenceFactory).setSynch( request.getParameter("synch")!=null ? request.getParameter("synch").trim().equals("true") : false );
301 ((LocalPersistenceFactory)persistenceFactory).setCaCertFile( request.getParameter("caCertFile")!=null ? request.getParameter("caCertFile").trim() : "" );
302 ((LocalPersistenceFactory)persistenceFactory).setTrustStorePassword( request.getParameter("tsPassword")!=null ? request.getParameter("tsPassword").trim() : "" );
303 if (request.getParameter("groupTree")!=null)
304 ((LocalPersistenceFactory)persistenceFactory).setGroupTree( request.getParameter("groupTree") );
305 if (request.getParameter("peopleTree")!=null)
306 ((LocalPersistenceFactory)persistenceFactory).setPeopleTree( request.getParameter("peopleTree") );
307 if (request.getParameter("gumsTree")!=null)
308 ((LocalPersistenceFactory)persistenceFactory).setPeopleTree( request.getParameter("gumsTree") );
309 if (request.getParameter("gidNumberField")!=null)
310 ((LocalPersistenceFactory)persistenceFactory).setGroupIdField( request.getParameter("gidNumberField") );
311 if (request.getParameter("groupCnField")!=null)
312 ((LocalPersistenceFactory)persistenceFactory).setGroupCnField( request.getParameter("groupCnField") );
313 if (request.getParameter("uidField")!=null)
314 ((LocalPersistenceFactory)persistenceFactory).setUidField( request.getParameter("uidField") );
315 if (request.getParameter("memberUidField")!=null)
316 ((LocalPersistenceFactory)persistenceFactory).setMemberUidField( request.getParameter("memberUidField") );
317 if (request.getParameter("emailField")!=null)
318 ((LocalPersistenceFactory)persistenceFactory).setEmailField( request.getParameter("emailField") );
319 Properties properties = getHibernateProperties(persistenceFactory, request, true);
320 properties.putAll(getLdapProperties(persistenceFactory, request, true));
321 ((LocalPersistenceFactory)persistenceFactory).setProperties( properties );
322 }
323
324 return persistenceFactory;
325 }
326
327 static public Properties getHibernateProperties(PersistenceFactory persistenceFactory, HttpServletRequest request, boolean includeMySql) {
328 Properties properties = new Properties();
329 properties.put((includeMySql?"mysql.":"") + "hibernate.connection.url", (request.getParameter("mySqlUrl")!=null ? request.getParameter("mySqlUrl").trim() : ""));
330 properties.put((includeMySql?"mysql.":"") + "hibernate.connection.username", (request.getParameter("mySqlUsername")!=null ? request.getParameter("mySqlUsername").trim() : ""));
331 properties.put((includeMySql?"mysql.":"") + "hibernate.connection.password", (request.getParameter("mySqlPassword")!=null ? request.getParameter("mySqlPassword").trim() : ""));
332 properties.put((includeMySql?"mysql.":"") + "hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
333 properties.put((includeMySql?"mysql.":"") + "hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
334 properties.put((includeMySql?"mysql.":"") + "hibernate.c3p0.min_size", "3");
335 properties.put((includeMySql?"mysql.":"") + "hibernate.c3p0.max_size", "20");
336 properties.put((includeMySql?"mysql.":"") + "hibernate.c3p0.timeout", "180");
337 properties.put((includeMySql?"mysql.":"") + "hibernate.connection.autoReconnect", "true");
338 return properties;
339 }
340
341 static public Properties getLdapProperties(PersistenceFactory persistenceFactory, HttpServletRequest request, boolean includeLdap) {
342 Properties properties = new Properties();
343 properties.put((includeLdap?"ldap.":"") + "java.naming.security.authentication", (request.getParameter("ldapAuthentication")!=null ? request.getParameter("ldapAuthentication").trim() : "simple"));
344 properties.put((includeLdap?"ldap.":"") + "java.naming.security.principal", (request.getParameter("ldapPrincipal")!=null ? request.getParameter("ldapPrincipal").trim() : ""));
345 properties.put((includeLdap?"ldap.":"") + "java.naming.security.credentials", (request.getParameter("ldapCredentials")!=null ? request.getParameter("ldapCredentials").trim() : ""));
346 properties.put((includeLdap?"ldap.":"") + "java.naming.provider.url", (request.getParameter("ldapUrl")!=null ? request.getParameter("ldapUrl").trim() : ""));
347 properties.put((includeLdap?"ldap.":"") + "java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
348 return properties;
349 }
350
351 static public String getHostToGroupReferences(Configuration configuration, String g2AMappingName) {
352 String retStr = null;
353 Collection h2GMappings = configuration.getHostToGroupMappings();
354 Iterator it = h2GMappings.iterator();
355 while (it.hasNext()) {
356 HostToGroupMapping h2GMapping = (HostToGroupMapping)it.next();
357 Iterator it2 = h2GMapping.getGroupToAccountMappings().iterator();
358 while (it2.hasNext()) {
359 String thisG2AMapping = (String)it2.next();
360 if (thisG2AMapping.equals(g2AMappingName)) {
361 if (retStr==null)
362 retStr = "";
363 retStr += "\"" + h2GMapping.getName() + "\", ";
364 break;
365 }
366 }
367 }
368 if(retStr!=null)
369 retStr = retStr.substring(0, retStr.length()-2);
370 return retStr;
371 }
372
373 static public String getGroupToAccountMappingReferences(Configuration configuration, String name, String className) {
374 String retStr = null;
375 Collection g2AMappings = configuration.getGroupToAccountMappings().values();
376 Iterator it = g2AMappings.iterator();
377 while (it.hasNext()) {
378 GroupToAccountMapping g2AMapping = (GroupToAccountMapping)it.next();
379 if(className.equals("gov.bnl.gums.account.AccountMapper")) {
380 Iterator it2 = g2AMapping.getAccountMappers().iterator();
381 while (it2.hasNext()) {
382 String thisAccountMapper = (String)it2.next();
383 if (thisAccountMapper.equals(name)) {
384 if (retStr==null)
385 retStr = "";
386 retStr += g2AMapping.getName() + ", ";
387 break;
388 }
389 }
390 }
391 else if(className.equals("gov.bnl.gums.userGroup.UserGroup")) {
392 Iterator it2 = g2AMapping.getUserGroups().iterator();
393 while (it2.hasNext()) {
394 String thisUserGroup = (String)it2.next();
395 if (thisUserGroup.equals(name)) {
396 if (retStr==null)
397 retStr = "";
398 retStr += g2AMapping.getName() + ", ";
399 break;
400 }
401 }
402 }
403 }
404 if(retStr!=null)
405 retStr = retStr.substring(0, retStr.length()-2);
406 return retStr;
407 }
408
409 static public String getVOMSUserGroupReferences(Configuration configuration, String vomsServer) {
410 String retStr = null;
411 Collection userGroups = configuration.getUserGroups().values();
412 Iterator it = userGroups.iterator();
413 while (it.hasNext()) {
414 UserGroup userGroup = (UserGroup)it.next();
415 if ( userGroup instanceof VOMSUserGroup && vomsServer.equals( ((VOMSUserGroup)userGroup).getVomsServer() ) ) {
416 if (retStr==null)
417 retStr = "";
418 retStr += userGroup.getName() + ", ";
419 break;
420 }
421 }
422 if(retStr!=null)
423 retStr = retStr.substring(0, retStr.length()-2);
424 return retStr;
425 }
426
427 static public String getReferencesForPersistenceFactory(Configuration configuration, String persistenceFactory) {
428 String retStr = null;
429 Iterator it;
430
431 it = configuration.getVomsServers().values().iterator();
432 while (it.hasNext()) {
433 VomsServer vomsServer = (VomsServer)it.next();
434 if(vomsServer.getPersistenceFactory().equals(persistenceFactory)) {
435 if (retStr==null)
436 retStr = "";
437 retStr += "VOMS server " + vomsServer.getName() + ", ";
438 }
439 }
440
441 it = configuration.getUserGroups().values().iterator();
442 while (it.hasNext()) {
443 UserGroup userGroup = (UserGroup)it.next();
444 if (userGroup instanceof LDAPUserGroup) {
445 if (((LDAPUserGroup)userGroup).getPersistenceFactory().equals(persistenceFactory)) {
446 if (retStr==null)
447 retStr = "";
448 retStr += "user group " + userGroup.getName() + ", ";
449 }
450 } else if (userGroup instanceof ManualUserGroup) {
451 if (((ManualUserGroup)userGroup).getPersistenceFactory().equals(persistenceFactory)) {
452 if (retStr==null)
453 retStr = "";
454 retStr += "user group " + userGroup.getName() + ", ";
455 }
456 }
457 }
458
459 it = configuration.getAccountMappers().values().iterator();
460 while (it.hasNext()) {
461 AccountMapper accountMapper = (AccountMapper)it.next();
462 if (accountMapper instanceof ManualAccountMapper) {
463 if (((ManualAccountMapper)accountMapper).getPersistenceFactory().equals(persistenceFactory)) {
464 if (retStr==null)
465 retStr = "";
466 retStr += "account mapper " + accountMapper.getName() + ", ";
467 }
468 } else if (accountMapper instanceof AccountPoolMapper) {
469 if (((AccountPoolMapper)accountMapper).getPersistenceFactory().equals(persistenceFactory)) {
470 if (retStr==null)
471 retStr = "";
472 retStr += "account mapper " + accountMapper.getName() + ", ";
473 }
474 }
475 }
476
477 if(retStr!=null)
478 retStr = retStr.substring(0, retStr.length()-2);
479
480 return retStr;
481 }
482
483 static public String createSelectBox(String name, Collection items, String selected, String javascript, boolean includeEmptySlot) {
484 String retStr = "<select name=\""+name+"\" " + (javascript!=null?javascript:"") + ">";
485 if (includeEmptySlot)
486 retStr += "<option " + (selected==null?"selected":"") + "></option>";
487 Iterator it = items.iterator();
488 while(it.hasNext())
489 {
490 String curName = getName(it.next());
491 if (curName.equals("_test") || curName.equals("/DC=com/DC=example/OU=Services/CN=example.site.com"))
492 continue;
493 if (curName.equals(selected))
494 retStr += "<option selected>" + curName + "</option>";
495 else
496 retStr += "<option>" + curName + "</option>";
497 }
498 retStr += "</select> \n";
499 return retStr;
500 }
501
502 static public String createDoSubmit(Collection items, HttpServletRequest request) {
503 String str =
504 "<script language=\"javascript\">"+
505 "String.prototype.trim = function() { return this.replace(/^\\s+|\\s+$/g, \"\"); };"+
506 "document.forms[0].elements['name'].value = document.forms[0].elements['name'].value.trim();"+
507 "function doSubmit(str) {";
508
509 if ("add".equals(request.getParameter("command")) || "add".equals(request.getParameter("originalCommand"))) {
510 str += "if ( document.forms[0].elements['name'].value == '' ){ alert('First field cannot be empty'); return false; }";
511
512 Iterator it = items.iterator();
513 while(it.hasNext())
514 str += "if ( document.forms[0].elements['name'].value == '" + getName(it.next()) + "'){ alert('Name already exists - please choose another name'); return false; }";
515 }
516
517 str +=
518 "document.forms[0].elements['command'].value='save'; return true;"+
519 "return false;"+
520 "}"+
521 "</script>";
522
523 return str;
524 }
525
526 static public String createDoShortcutSubmit(Collection userGroups, Collection accountMappers, Collection g2aMappings, HttpServletRequest request) {
527 String str =
528 "<script language=\"javascript\">"+
529 "String.prototype.trim = function() { return this.replace(/^\\s+|\\s+$/g, \"\"); };"+
530 "document.forms[0].elements['name'].value = document.forms[0].elements['name'].value.trim();"+
531 "function doShortcutSubmit(str) {/*"+request.getParameter("command")+"*/";
532
533 str += "if ( document.forms[0].elements['name'].value == '' ){ alert('First field cannot be empty'); return false; }";
534
535 Iterator it = userGroups.iterator();
536 while(it.hasNext())
537 str += "if ( document.forms[0].elements['name'].value == '" + getName(it.next()) + "'){ alert('User group name already exists - please choose another name'); return false; }";
538
539 it = accountMappers.iterator();
540 while(it.hasNext())
541 str += "if ( document.forms[0].elements['name'].value == '" + getName(it.next()) + "'){ alert('Account mapper name already exists - please choose another name'); return false; }";
542
543 it = g2aMappings.iterator();
544 while(it.hasNext())
545 str += "if ( document.forms[0].elements['name'].value == '" + getName(it.next()) + "'){ alert('Group to account mapping name already exists - please choose another name'); return false; }";
546
547 str +=
548 "return true;"+
549 "}"+
550 "</script>";
551
552 return str;
553 }
554
555 static private String getName(Object obj) {
556 if(obj instanceof String)
557 return (String)obj;
558 else if(obj instanceof CertificateHostToGroupMapping)
559 return ((CertificateHostToGroupMapping)obj).getName();
560 else if(obj instanceof GroupToAccountMapping)
561 return ((GroupToAccountMapping)obj).getName();
562 else if(obj instanceof AccountMapper)
563 return ((AccountMapper)obj).getName();
564 else if(obj instanceof UserGroup)
565 return ((UserGroup)obj).getName();
566 else if(obj instanceof PersistenceFactory)
567 return ((PersistenceFactory)obj).getName();
568 else if(obj instanceof VomsServer)
569 return ((VomsServer)obj).getName();
570 else
571 return "";
572 }
573
574 static public String stripVo(String voGroup) {
575 if(voGroup.length()>0 && voGroup.charAt(0)=='/') {
576 String subStr = voGroup.substring(1);
577 int index = subStr.indexOf("/");
578 if (index!=-1)
579 return subStr.substring(index+1);
580 }
581 return voGroup;
582 }
583
584 static public String stripGroup(String voGroup) {
585 if(voGroup.length()>0 && voGroup.charAt(0)=='/') {
586 String subStr = voGroup.substring(1);
587 int index = subStr.indexOf("/");
588 if (index!=-1)
589 return subStr.substring(0, index);
590 }
591 return voGroup;
592 }
593 }