0
|
1 package nabble.model;
|
|
2
|
|
3 import fschmidt.util.mail.Mail;
|
|
4 import fschmidt.util.mail.MailAddress;
|
|
5 import fschmidt.util.mail.MailHome;
|
|
6 import fschmidt.util.mail.PlainTextContent;
|
|
7
|
|
8 import java.util.Arrays;
|
|
9 import java.util.Date;
|
|
10 import java.util.HashMap;
|
|
11 import java.util.Map;
|
|
12
|
|
13
|
|
14 public abstract class ListServer {
|
|
15
|
|
16 private final static Map<String, ListServer> servers = new HashMap<String, ListServer>();
|
|
17
|
|
18 public static ListServer getServer(String type) {
|
|
19 ListServer listServer = servers.get(type);
|
|
20 return listServer==null?unknown:listServer;
|
|
21 }
|
|
22
|
|
23 public static String[] getAllServerTypes() {
|
|
24 String[] s = servers.keySet().toArray(new String[servers.keySet().size()]);
|
|
25 Arrays.sort(s);
|
|
26 return s;
|
|
27 }
|
|
28
|
|
29 private String type;
|
|
30
|
|
31 private ListServer(String type) {
|
|
32 servers.put(type, this);
|
|
33 this.type = type;
|
|
34 }
|
|
35
|
|
36 public String getType() {
|
|
37 return type;
|
|
38 }
|
|
39
|
|
40 public String getViewName() {
|
|
41 return getType();
|
|
42 }
|
|
43
|
|
44 public abstract boolean supportsDeliveryOff();
|
|
45 public abstract boolean needsDefaults();
|
|
46
|
|
47 abstract Mail defaultsMail(MailAddress emailAddress, String listAddress, String password);
|
|
48 abstract Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList);
|
|
49 abstract Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password);
|
|
50
|
|
51 public boolean canSubscribe() {
|
|
52 return true;
|
|
53 }
|
|
54
|
|
55 public boolean showInInitialSetup() {
|
|
56 return true;
|
|
57 }
|
|
58
|
|
59 String getEnvelopeFrom(Mail mail, MailingList mailingList) {
|
|
60 return mailingList.getSubscriberAddress().getAddrSpec();
|
|
61 }
|
|
62
|
|
63 protected Mail adminMail(MailAddress emailAddress, String adminAddress, String command) {
|
|
64 Mail mail = MailHome.newMail();
|
|
65 mail.setFrom(emailAddress);
|
|
66 mail.setTo(new MailAddress(adminAddress));
|
|
67 mail.setSentDate(new Date());
|
|
68 mail.setContent(new PlainTextContent(command));
|
|
69 return mail;
|
|
70 }
|
|
71
|
|
72 protected Mail subjectAdminMail(MailAddress emailAddress, String adminAddress, String subject) {
|
|
73 Mail mail = MailHome.newMail();
|
|
74 mail.setFrom(emailAddress);
|
|
75 mail.setTo(new MailAddress(adminAddress));
|
|
76 mail.setSentDate(new Date());
|
|
77 mail.setSubject(subject);
|
|
78 mail.setContent(new PlainTextContent(""));
|
|
79 return mail;
|
|
80 }
|
|
81
|
|
82 protected String listName(String listAddress) {
|
|
83 return listAddress.substring(0, listAddress.indexOf('@'));
|
|
84 }
|
|
85
|
|
86 protected String listDomain(String listAddress) {
|
|
87 return listAddress.substring(listAddress.indexOf('@')+1);
|
|
88 }
|
|
89
|
|
90 static abstract class Mailman extends ListServer {
|
|
91
|
|
92 protected Mailman(String type) {
|
|
93 super(type);
|
|
94 }
|
|
95
|
|
96 public boolean supportsDeliveryOff() {
|
|
97 return true;
|
|
98 }
|
|
99
|
|
100 public boolean needsDefaults() {
|
|
101 return true;
|
|
102 }
|
|
103
|
|
104 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
105 return adminMail(emailAddress, getAdminAddress(listAddress), "subscribe "+(password==null?"":password));
|
|
106 }
|
|
107
|
|
108 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
109 return adminMail(emailAddress, getAdminAddress(listAddress), "unsubscribe "+(password==null?"":password));
|
|
110 }
|
|
111
|
|
112 protected String getAdminAddress(String listAddress) {
|
|
113 return listAddress.replaceFirst("@", "-request@");
|
|
114 }
|
|
115 }
|
|
116
|
|
117 public static final ListServer mailman20 = new Mailman("mailman20") {
|
|
118
|
|
119 public String getViewName() {
|
|
120 return "Mailman 2.0.*";
|
|
121 }
|
|
122
|
|
123 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
124 StringBuilder buf = new StringBuilder();
|
|
125 buf.append("set ack off ");
|
|
126 buf.append(password);
|
|
127 buf.append("\n");
|
|
128 buf.append("set nomail on ");
|
|
129 buf.append(password);
|
|
130 buf.append("\n");
|
|
131 buf.append("set notmetoo on ");
|
|
132 buf.append(password);
|
|
133 buf.append("\n");
|
|
134 buf.append("end\n");
|
|
135 return adminMail(emailAddress, getAdminAddress(listAddress), buf.toString());
|
|
136 }
|
|
137
|
|
138 };
|
|
139
|
|
140 public static final ListServer mailman21 = new Mailman("mailman21") {
|
|
141
|
|
142 public String getViewName() {
|
|
143 return "Mailman 2.1.*";
|
|
144 }
|
|
145
|
|
146 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
147 StringBuilder buf = new StringBuilder();
|
|
148 buf.append("set authenticate ");
|
|
149 buf.append(password);
|
|
150 buf.append("\n");
|
|
151 buf.append("set delivery off\n");
|
|
152 buf.append("set ack off\n");
|
|
153 buf.append("set myposts off\n");
|
|
154 buf.append("set duplicates off\n");
|
|
155 buf.append("set reminders off\n");
|
|
156 buf.append("end\n");
|
|
157 return adminMail(emailAddress, getAdminAddress(listAddress), buf.toString());
|
|
158 }
|
|
159
|
|
160 };
|
|
161
|
|
162 public static final ListServer ezmlm = new ListServer("ezmlm") {
|
|
163
|
|
164 public boolean supportsDeliveryOff() {
|
|
165 return true;
|
|
166 }
|
|
167
|
|
168 public boolean needsDefaults() {
|
|
169 return false;
|
|
170 }
|
|
171
|
|
172 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
173 String suffix = useMainList?"-subscribe-":"-allow-subscribe-";
|
|
174 suffix += emailAddress.getAddrSpec().replace('@','=') + '@';
|
|
175 return adminMail(emailAddress, listAddress.replaceFirst("@", suffix), "");
|
|
176 }
|
|
177
|
|
178 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
179 String suffix = "-unsubscribe-" + emailAddress.getAddrSpec().replace('@','=') + '@';
|
|
180 return adminMail(emailAddress, listAddress.replaceFirst("@", suffix), "");
|
|
181 }
|
|
182
|
|
183 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
184 throw new UnsupportedOperationException();
|
|
185 }
|
|
186
|
|
187 };
|
|
188
|
|
189 public static final ListServer mlmmj = new ListServer("mlmmj") {
|
|
190
|
|
191 public boolean supportsDeliveryOff() {
|
|
192 return true;
|
|
193 }
|
|
194
|
|
195 public boolean needsDefaults() {
|
|
196 return false;
|
|
197 }
|
|
198
|
|
199 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
200 String suffix = useMainList?"+subscribe@":"+subscribe-nomail@";
|
|
201 return adminMail(emailAddress, listAddress.replaceFirst("@", suffix), "");
|
|
202 }
|
|
203
|
|
204 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
205 return adminMail(emailAddress, listAddress.replaceFirst("@", "+unsubscribe@"), "");
|
|
206 }
|
|
207
|
|
208 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
209 throw new UnsupportedOperationException();
|
|
210 }
|
|
211
|
|
212 };
|
|
213
|
|
214 public static final ListServer yahoo = new ListServer("yahoo") {
|
|
215
|
|
216 public String getViewName() {
|
|
217 return "Yahoo! Groups";
|
|
218 }
|
|
219
|
|
220 String getEnvelopeFrom(Mail mail, MailingList mailingList) {
|
|
221 // for yahoogroups it should be the users address
|
|
222 return mail.getFrom().getAddrSpec();
|
|
223 }
|
|
224
|
|
225 public boolean supportsDeliveryOff() {
|
|
226 return true;
|
|
227 }
|
|
228
|
|
229 public boolean needsDefaults() {
|
|
230 return true;
|
|
231 }
|
|
232
|
|
233 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
234 return adminMail(emailAddress, listAddress.replaceFirst("@", "-subscribe@"), "");
|
|
235 }
|
|
236
|
|
237 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
238 return adminMail(emailAddress, listAddress.replaceFirst("@", "-unsubscribe@"), "");
|
|
239 }
|
|
240
|
|
241 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
242 return adminMail(emailAddress, listAddress.replaceFirst("@", "-nomail@"), "");
|
|
243 }
|
|
244
|
|
245 };
|
|
246
|
|
247 private abstract static class ListProc extends ListServer {
|
|
248
|
|
249 protected ListProc(String type) {
|
|
250 super(type);
|
|
251 }
|
|
252
|
|
253 public boolean supportsDeliveryOff() {
|
|
254 return true;
|
|
255 }
|
|
256
|
|
257 public boolean needsDefaults() {
|
|
258 return true;
|
|
259 }
|
|
260
|
|
261 public boolean showInInitialSetup() {
|
|
262 return false;
|
|
263 }
|
|
264
|
|
265 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
266 StringBuilder buf = new StringBuilder();
|
|
267 buf.append("subscribe ");
|
|
268 buf.append(listName(listAddress));
|
|
269 buf.append(" ");
|
|
270 buf.append(emailAddress.getDisplayName());
|
|
271 return adminMail(emailAddress, "listproc@"+listDomain(listAddress), buf.toString());
|
|
272 }
|
|
273
|
|
274 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
275 StringBuilder buf = new StringBuilder();
|
|
276 buf.append("unsubscribe ");
|
|
277 buf.append(listName(listAddress));
|
|
278 return adminMail(emailAddress, "listproc@"+listDomain(listAddress), buf.toString());
|
|
279 }
|
|
280
|
|
281 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
282 StringBuilder buf = new StringBuilder();
|
|
283 buf.append("set ");
|
|
284 buf.append(listName(listAddress));
|
|
285 buf.append(" mail postpone");
|
|
286 return adminMail(emailAddress, "listproc@"+listDomain(listAddress), buf.toString());
|
|
287 }
|
|
288
|
|
289 }
|
|
290
|
|
291 // cren listproc
|
|
292 public final static ListServer listproc = new ListProc("listproc") {
|
|
293 };
|
|
294
|
|
295 // old listproc broken - uses smtp from only
|
|
296 public final static ListServer oldlistproc = new ListProc("oldlistproc") {
|
|
297 public boolean canSubscribe() {
|
|
298 return false;
|
|
299 }
|
|
300 };
|
|
301
|
|
302 // l-soft listserv
|
|
303 public static final ListServer listserv = new ListServer("listserv") {
|
|
304
|
|
305 public String getViewName() {
|
|
306 return "LISTSERV";
|
|
307 }
|
|
308
|
|
309 public boolean supportsDeliveryOff() {
|
|
310 return true;
|
|
311 }
|
|
312
|
|
313 public boolean needsDefaults() {
|
|
314 return false;
|
|
315 }
|
|
316
|
|
317 public boolean showInInitialSetup() {
|
|
318 return false;
|
|
319 }
|
|
320
|
|
321 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
322 StringBuilder buf = new StringBuilder();
|
|
323 buf.append("subscribe ");
|
|
324 buf.append(listName(listAddress));
|
|
325 buf.append(" ");
|
|
326 buf.append("anonymous");
|
|
327 if (!useMainList)
|
|
328 buf.append(" with noack nomail norepro");
|
|
329 return adminMail(emailAddress, "listserv@"+listDomain(listAddress), buf.toString());
|
|
330 }
|
|
331
|
|
332 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
333 StringBuilder buf = new StringBuilder();
|
|
334 buf.append("unsubscribe ");
|
|
335 buf.append(listName(listAddress));
|
|
336 return adminMail(emailAddress, "listserv@"+listDomain(listAddress), buf.toString());
|
|
337 }
|
|
338
|
|
339 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
340 throw new UnsupportedOperationException();
|
|
341 }
|
|
342
|
|
343 };
|
|
344
|
|
345 public static final ListServer lyris = new ListServer("lyris") {
|
|
346
|
|
347 public String getViewName() {
|
|
348 return "Lyris";
|
|
349 }
|
|
350
|
|
351 public boolean supportsDeliveryOff() {
|
|
352 return true;
|
|
353 }
|
|
354
|
|
355 public boolean needsDefaults() {
|
|
356 return true;
|
|
357 }
|
|
358
|
|
359 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
360 StringBuilder buf = new StringBuilder();
|
|
361 buf.append("join ");
|
|
362 buf.append(listName(listAddress));
|
|
363 buf.append(" ");
|
|
364 buf.append(emailAddress.getDisplayName());
|
|
365 return adminMail(emailAddress, "lyris@"+listDomain(listAddress), buf.toString());
|
|
366 }
|
|
367
|
|
368 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
369 StringBuilder buf = new StringBuilder();
|
|
370 buf.append("leave ");
|
|
371 buf.append(listName(listAddress));
|
|
372 return adminMail(emailAddress, "lyris@"+listDomain(listAddress), buf.toString());
|
|
373 }
|
|
374
|
|
375 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
376 StringBuilder buf = new StringBuilder();
|
|
377 buf.append("set ");
|
|
378 buf.append(listName(listAddress));
|
|
379 buf.append(" noack nomail norepro");
|
|
380 return adminMail(emailAddress, "lyris@"+listDomain(listAddress), buf.toString());
|
|
381 }
|
|
382
|
|
383 };
|
|
384
|
|
385 public static final ListServer listserver = new ListServer("listserver") {
|
|
386
|
|
387 public boolean supportsDeliveryOff() {
|
|
388 return true;
|
|
389 }
|
|
390
|
|
391 public boolean needsDefaults() {
|
|
392 return true;
|
|
393 }
|
|
394
|
|
395 public boolean showInInitialSetup() {
|
|
396 return false;
|
|
397 }
|
|
398
|
|
399 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
400 return adminMail(emailAddress, "listserver@"+listDomain(listAddress),
|
|
401 "subscribe "+listName(listAddress)
|
|
402 );
|
|
403 }
|
|
404
|
|
405 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
406 return adminMail(emailAddress, "listserver@"+listDomain(listAddress),
|
|
407 "unsubscribe "+listName(listAddress)
|
|
408 );
|
|
409 }
|
|
410
|
|
411 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
412 return adminMail(emailAddress, "listserver@"+listDomain(listAddress), "nomail "+listName(listAddress));
|
|
413 }
|
|
414
|
|
415 };
|
|
416
|
|
417 public static final ListServer communigate = new ListServer("communigate") {
|
|
418
|
|
419 public String getViewName() {
|
|
420 return "CommuniGate";
|
|
421 }
|
|
422
|
|
423 public boolean supportsDeliveryOff() {
|
|
424 return true;
|
|
425 }
|
|
426
|
|
427 public boolean needsDefaults() {
|
|
428 return false;
|
|
429 }
|
|
430
|
|
431 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
432 String suffix = useMainList?"-subscribe@":"-null@";
|
|
433 return adminMail(emailAddress, listAddress.replaceFirst("@", suffix), "");
|
|
434 }
|
|
435
|
|
436 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
437 return adminMail(emailAddress, listAddress.replaceFirst("@", "-unsubscribe@"), "");
|
|
438 }
|
|
439
|
|
440 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
441 throw new UnsupportedOperationException();
|
|
442 }
|
|
443
|
|
444 };
|
|
445
|
|
446 public static final ListServer smartlist = new ListServer("smartlist") {
|
|
447
|
|
448 public String getViewName() {
|
|
449 return "SmartList";
|
|
450 }
|
|
451
|
|
452 public boolean supportsDeliveryOff() {
|
|
453 return false;
|
|
454 }
|
|
455
|
|
456 public boolean needsDefaults() {
|
|
457 return false;
|
|
458 }
|
|
459
|
|
460 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
461 return subjectAdminMail(emailAddress, listAddress.replaceFirst("@", "-request@"), "subscribe");
|
|
462 }
|
|
463
|
|
464 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
465 return subjectAdminMail(emailAddress, listAddress.replaceFirst("@", "-request@"), "unsubscribe");
|
|
466 }
|
|
467
|
|
468 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
469 throw new UnsupportedOperationException();
|
|
470 }
|
|
471
|
|
472 };
|
|
473
|
|
474 public static final ListServer ecartis = new ListServer("ecartis") {
|
|
475
|
|
476 public String getViewName() {
|
|
477 return "Ecartis";
|
|
478 }
|
|
479
|
|
480 public boolean supportsDeliveryOff() {
|
|
481 return true;
|
|
482 }
|
|
483
|
|
484 public boolean needsDefaults() {
|
|
485 return true;
|
|
486 }
|
|
487
|
|
488 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
489 return subjectAdminMail(emailAddress, "ecartis@"+listDomain(listAddress), "subscribe "+listName(listAddress));
|
|
490 }
|
|
491
|
|
492 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
493 return subjectAdminMail(emailAddress, "ecartis@"+listDomain(listAddress), "unsubscribe "+listName(listAddress));
|
|
494 }
|
|
495
|
|
496 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
497 return subjectAdminMail(emailAddress, "ecartis@"+listDomain(listAddress), "set "+listName(listAddress)+" vacation");
|
|
498 }
|
|
499
|
|
500 };
|
|
501
|
|
502 public static final ListServer majordomo = new ListServer("majordomo") {
|
|
503
|
|
504 public String getViewName() {
|
|
505 return "Majordomo";
|
|
506 }
|
|
507
|
|
508 public boolean supportsDeliveryOff() {
|
|
509 return false;
|
|
510 }
|
|
511
|
|
512 public boolean needsDefaults() {
|
|
513 return false;
|
|
514 }
|
|
515
|
|
516 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
517 return adminMail(emailAddress, "majordomo@"+listDomain(listAddress), "subscribe "+listName(listAddress));
|
|
518 }
|
|
519
|
|
520 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
521 return adminMail(emailAddress, "majordomo@"+listDomain(listAddress), "unsubscribe "+listName(listAddress));
|
|
522 }
|
|
523
|
|
524 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
525 throw new UnsupportedOperationException();
|
|
526 }
|
|
527
|
|
528 };
|
|
529
|
|
530 public static final ListServer majordomo2 = new ListServer("majordomo2") {
|
|
531
|
|
532 public String getViewName() {
|
|
533 return "Majordomo 2";
|
|
534 }
|
|
535
|
|
536 public boolean supportsDeliveryOff() {
|
|
537 return true;
|
|
538 }
|
|
539
|
|
540 public boolean needsDefaults() {
|
|
541 return false;
|
|
542 }
|
|
543
|
|
544 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
545 return adminMail(emailAddress, "majordomo@"+listDomain(listAddress),
|
|
546 "subscribe-set-welcome "+listName(listAddress)+(useMainList?" ":" nomail,")+"noselfcopy,noackpost");
|
|
547 }
|
|
548
|
|
549 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
550 return adminMail(emailAddress, "majordomo@"+listDomain(listAddress), "unsubscribe "+listName(listAddress));
|
|
551 }
|
|
552
|
|
553 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
554 throw new UnsupportedOperationException();
|
|
555 }
|
|
556
|
|
557 };
|
|
558
|
|
559 public static final ListServer sympa = new ListServer("sympa") {
|
|
560
|
|
561 public String getViewName() {
|
|
562 return "Sympa";
|
|
563 }
|
|
564
|
|
565 public boolean supportsDeliveryOff() {
|
|
566 return true;
|
|
567 }
|
|
568
|
|
569 public boolean needsDefaults() {
|
|
570 return true;
|
|
571 }
|
|
572
|
|
573 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
574 StringBuilder buf = new StringBuilder();
|
|
575 buf.append("subscribe ");
|
|
576 buf.append(listName(listAddress));
|
|
577 buf.append(" ");
|
|
578 buf.append(emailAddress.getDisplayName());
|
|
579 return adminMail(emailAddress, "sympa@"+listDomain(listAddress), buf.toString());
|
|
580 }
|
|
581
|
|
582 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
583 StringBuilder buf = new StringBuilder();
|
|
584 buf.append("unsubscribe ");
|
|
585 buf.append(listName(listAddress));
|
|
586 return adminMail(emailAddress, "sympa@"+listDomain(listAddress), buf.toString());
|
|
587 }
|
|
588
|
|
589 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
590 String listname = listName(listAddress);
|
|
591 StringBuilder buf = new StringBuilder();
|
|
592 buf.append("set ");
|
|
593 buf.append(listname);
|
|
594 buf.append(" nomail\n");
|
|
595 buf.append("set ");
|
|
596 buf.append(listname);
|
|
597 buf.append(" not_me\n");
|
|
598 return adminMail(emailAddress, "sympa@"+listDomain(listAddress), buf.toString());
|
|
599 }
|
|
600
|
|
601 };
|
|
602
|
|
603 public static final ListServer google = new ListServer("google") {
|
|
604
|
|
605 public String getViewName() {
|
|
606 return "Google Groups";
|
|
607 }
|
|
608
|
|
609 public boolean supportsDeliveryOff() {
|
|
610 return true;
|
|
611 }
|
|
612
|
|
613 public boolean needsDefaults() {
|
|
614 return true;
|
|
615 }
|
|
616
|
|
617 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
618 return adminMail(emailAddress, listAddress.replaceFirst("@", "+subscribe@"), "");
|
|
619 }
|
|
620
|
|
621 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
622 return adminMail(emailAddress, listAddress.replaceFirst("@", "+unsubscribe@"), "");
|
|
623 }
|
|
624
|
|
625 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
626 throw new UnsupportedOperationException(); // set nomail only via google website
|
|
627 }
|
|
628
|
|
629 public boolean canSubscribe() {
|
|
630 return true;
|
|
631 }
|
|
632
|
|
633 };
|
|
634
|
|
635 private static abstract class Unsupported extends ListServer {
|
|
636
|
|
637 protected Unsupported(String type) {
|
|
638 super(type);
|
|
639 }
|
|
640
|
|
641 public boolean needsDefaults() {
|
|
642 throw new UnsupportedOperationException();
|
|
643 }
|
|
644
|
|
645 Mail subscribeMail(MailAddress emailAddress, String listAddress, String password, boolean useMainList) {
|
|
646 throw new UnsupportedOperationException();
|
|
647 }
|
|
648
|
|
649 Mail unsubscribeMail(MailAddress emailAddress, String listAddress, String password) {
|
|
650 throw new UnsupportedOperationException();
|
|
651 }
|
|
652
|
|
653 Mail defaultsMail(MailAddress emailAddress, String listAddress, String password) {
|
|
654 throw new UnsupportedOperationException();
|
|
655 }
|
|
656
|
|
657 public boolean canSubscribe() {
|
|
658 return false;
|
|
659 }
|
|
660
|
|
661 }
|
|
662
|
|
663 public static final ListServer websitenomail = new Unsupported("websitenomail") {
|
|
664
|
|
665 public boolean supportsDeliveryOff() {
|
|
666 return true;
|
|
667 }
|
|
668
|
|
669 public boolean showInInitialSetup() {
|
|
670 return false;
|
|
671 }
|
|
672 };
|
|
673
|
|
674 public static final ListServer websitemail = new Unsupported("websitemail") {
|
|
675
|
|
676 public boolean supportsDeliveryOff() {
|
|
677 return false;
|
|
678 }
|
|
679
|
|
680 public boolean showInInitialSetup() {
|
|
681 return false;
|
|
682 }
|
|
683
|
|
684 };
|
|
685
|
|
686 public static final ListServer unknown = new Unsupported("unknown") {
|
|
687
|
|
688 public String getViewName() {
|
|
689 return "Unknown or Other";
|
|
690 }
|
|
691
|
|
692 public boolean supportsDeliveryOff() {
|
|
693 return false;
|
|
694 }
|
|
695
|
|
696 };
|
|
697
|
|
698 }
|