Mercurial Hosting > nabble
comparison src/nabble/model/ListServer.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7ecd1a4ef557 |
---|---|
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 } |