summaryrefslogtreecommitdiff
path: root/Mailman
Commit message (Collapse)AuthorAgeFilesLines
...
* GetConfigInfo(): Fixed the link to the admin page and to thebwarsaw2001-10-271-1/+2
| | | | discard_these_nonmebers detail, found by Szilard Vizi.
* GetConfigInfo(): Fixed the links to the passwords page, found bybwarsaw2001-10-271-2/+2
| | | | Szilard Vizi.
* show_results(), membership_options(): Two missed translationbwarsaw2001-10-271-6/+5
| | | | | | markings. Found by Szilard Vizi. password_inputs(): We don't need the <a name=...> bit anymore.
* process(): Implement ARCHIVE_HTML_SANITIZER == 2, meaning "leave itbwarsaw2001-10-271-6/+31
| | | | | | | | | | | inline but HTML-escape it. Also, expand on the == 1 value (HTML-escape an attachment) a bit so the output looks a little nicer. Pipermail actually does a better job here, but we can't use it. save_attachment(): Grows a filter_html option which says whether to filter text/html parts or not. Default is 1, but if ARCHIVE_HTML_SANITIZER == 2 above, we don't want to filter it through the program.
* ARCHIVE_HTML_SANITIZER: This now takes values 0, 1, 2 (the latter isbwarsaw2001-10-271-1/+3
| | | | | new, meaning "leave it inline but HTML-escape it). The default is 1, but leave the lynx filter in commented out as an example.
* InitVars(): Add a hidden config variable `created_at' whichbwarsaw2001-10-271-0/+5
| | | | permanently records the Unix time the list was created.
* Tokio Kikuchi says:bwarsaw2001-10-261-9/+8
| | | | | | | | | | | | Some time ago, someone complained about the pipermail not representing proper charset in the Content-Type header. Here is a patch for the latest CVS (2.1a). With some changes by Barry, specifically to get the charset parameter out of the Content-Type: header using email.Message's interface instead of regexp searching. Please double check this for me!
* get_item_gui_description(): Fixed i18n string. Found by Tokiobwarsaw2001-10-261-1/+1
| | | | Kikuchi.
* main(): template_data: handle_opts.html is gone. Found by Tokiobwarsaw2001-10-261-1/+0
| | | | Kikuchi.
* Much revision based on good feedback from mailman-developers.bwarsaw2001-10-261-42/+111
| | | | | | | | | | | | | | | | | | | | | | | | | Specifically, process(): Instead of a blanket discard of text/html parts, what we do depends on the value for ARCHIVE_HTML_SANITIZER. Also, the "scrubbed" message now includes the value of get_filename() if available. save_attachment(): Several refinements including: all of a message's attachments are stored in a subdirectory off archives/private/mylist/attachments. This subdir is calculated based on the SHA1 hash of the Message-ID: We store the attachment in a file based on the name of the get_filename() value, sanitize for nasty characters, absolute paths, etc. The filename is uniquified within the message's attachments subdir. This function also knows about text/html and performs filtering when ARCHIVE_HTML_SANITIZER is a program string. Note that currently, we assume that this program will filter html into plain text, so we change the attachment's suffix to .txt accordingly. We don't need the attachments.pck file anymore.
* GetBaseArchiveURL(): PUBLIC_ARCHIVE_URL should be an absolute urlbwarsaw2001-10-261-0/+4
| | | | | | | containing a %(hostname)s interpolation string. This gets filled in with the list's hostname, which is calculated from a reverse lookup in VIRTUAL_HOSTS using self.host_name as the key. Failing that, DEFAULT_URL_HOST is used.
* PUBLIC_ARCHIVE_URL: This should now be an absolute url, with thebwarsaw2001-10-261-2/+22
| | | | | | | | hostname part interpolated from DEFAULT_URL_HOST (or the reverse lookup of mlist.host_name in the VIRTUAL_HOSTS dictionary). ARCHIVE_HTML_SANITIZER: A variable which describes what Pipermail should do with text/html attachments.
* process(), save_attachment(): Set the umask before creating thebwarsaw2001-10-261-6/+6
| | | | attachments.pck file, so it gets the right permission too.
* process(): Fix the processing of text/html parts w.r.t. discarding thebwarsaw2001-10-261-3/+8
| | | | | | | outers and scrubbing out the inner subparts. save_attachment(): Set the umask to 002 so that the attachments don't get saved o+w.
* Get rid of useless import (reported by Dan Mick).bwarsaw2001-10-251-1/+0
|
* Some refinements in the outputted appearance of the archive file.bwarsaw2001-10-251-6/+56
| | | | | | | Subpart headers are suppressed, and the inter-part boundary string is kludged to provide more useful information. Also, text/html parts are now completely suppressed.
* processUnixMailbox(): Instantiate an ArchiverMailbox instead of abwarsaw2001-10-241-4/+8
| | | | | | UnixMailbox. The main difference being we pass in the MailList instance to the constructor, so all the magic of the message scrubber can work.
* ARCHIVE_CLEANSER => ARCHIVE_SCRUBBERbwarsaw2001-10-241-1/+1
|
* _archfactory(): A factory for the ArchiverMailbox class, this isbwarsaw2001-10-241-2/+42
| | | | | | | | | necessary so that when the mailbox needs to create a message instance, it will use the factory, which gives the scrubber module a chance to get rid of nasty stuff like attachments, and to flatten multipart messages. This is twisted and convoluted but it works. ;)
* A new module that will clean messages before they're committed tobwarsaw2001-10-241-0/+109
| | | | | | | | | Pipermail. As this is a standard handler-style module (i.e. it has a typical process() function), it could be used in a pipeline to scrub messages headed to the list (i.e. a de-mimer). Current drawback is that it's fairly hardcoded. Graft on a U/I (easier said than done), and it could work.
* _dispose(): Move the Save() call into the try (exceptions are morallybwarsaw2001-10-241-1/+1
| | | | equivalent to transaction aborts).
* ARCHIVE_CLEANSER: A module that will clean messages before they'rebwarsaw2001-10-241-0/+10
| | | | | | | | | committed to Pipermail. As this is a standard handler-style module (i.e. it has a typical process() function), it could be used in a pipeline to scrub messages headed to the list (i.e. a de-mimer). Current drawback is that it's fairly hardcoded. Graft on a U/I (easier said than done), and it could work.
* CheckVersion(): Can't lock an already locked list!bwarsaw2001-10-221-1/+2
|
* CheckVersion(): The list must be locked in order to auto-update thebwarsaw2001-10-221-10/+17
| | | | schemas.
* VERSION: 2.1a3+bwarsaw2001-10-221-1/+1
|
* process(): Forgot to include a realname local var.bwarsaw2001-10-221-0/+1
|
* GetConfigCategory(): "Topic filters" -> "Topics"bwarsaw2001-10-211-1/+1
|
* show_requests(): To be consistent with pendingsubs, pendingunsubsbwarsaw2001-10-211-1/+1
| | | | should just use the empty string if there's no real name.
* ProcessUnsubscribeCmd(): We need to have a specific case wherebwarsaw2001-10-211-2/+14
| | | | | unsubscribe_policy is true (i.e. admin must approve). This calls DeleteMember() instead of ApprovedDeleteMember().
* process(): If the list attribute include_rfc2369_headers is false,bwarsaw2001-10-211-1/+1
| | | | then don't add the List-* headers.
* GetConfigInfo(): Rewrite some of the confirm/approval strings forbwarsaw2001-10-211-14/+29
| | | | | | consistency and clarity (sorry translators!). Also, add unsubscribe_policy configuration info.
* GetConfigInfo(): Move some of the items around, e.g. the goodbye_msgbwarsaw2001-10-211-29/+61
| | | | | | | text box should appear just before the send_goodbye_msg toggle. Also, if ALLOW_RFC2369_OVERRIDES is true, present the boolean option for disabling the headers.
* main(): Call DeleteMember() when the unsubscribe button was hit sobwarsaw2001-10-211-7/+17
| | | | | | | that we can apply any list admin approval if necessary. Also, the result message displayed depends on whether approval was needed or not.
* show_requests(): Include a pending unsubscribes section if necessary.bwarsaw2001-10-211-3/+31
|
* NewVars(): Add unsubscribe_policy, send_goodbye_msg, andbwarsaw2001-10-211-0/+4
| | | | include_rfc2369_headers to the list object if they are missing.
* DATA_FILE_VERSION: Bump this to 40 to pick up the new list attributes.bwarsaw2001-10-211-1/+1
|
* new(): Slight code cleanup; _ALLKEYS holds a list of 1-tuples of allbwarsaw2001-10-211-5/+5
| | | | | the valid Pending types. (They're 1-tuples so that the assert is more robust).
* InitVars(): New MailList attributes:bwarsaw2001-10-211-8/+17
| | | | | | | | | | | | | | | | | | | | send_goodbye_msg: Says whether to send the goodbye_msg to members when they get unsubscribed. unsubscribe_policy: What is this list's policy on unsubscribes? (0 == unrestricted, 1 == admin approval) include_rfc2369_headers: Should the RFC 2369 headers be included in the messages? Defaults to yes (and requires site admin complicity to disable). DeleteMember(): New method which first checks unsubscribe_policy before deleting the member address. ApprovedDeleteMember(): Change userack default argument value to None. Also, when userack is None, default it to the value of self.send_goodbye_msg. Then of course, only send the unsubscribe ack if userack is true.
* ProcessUnsubscribeCmd(): Should use DeleteMember() instead ofbwarsaw2001-10-211-1/+1
| | | | | ApprovedDeleteMember() so that the request can go through admin approval if required.
* Support for admin approved unsubscribes. Specifically,bwarsaw2001-10-211-7/+56
| | | | | | | | | | | | | | GetUnsubscriptionIds(): Return all the pending admin requests that are UNSUBSCRIPTIONs. HandleRequest(): Add support for UNSUBSCRIPTION type records. HoldSubscription(): Use the list's internal name, not its real name in the message to the admin. HoldUnsubscription(), __handleunsubscription(): Support for holding unsubscription requests, as well as handling their disposition, which can be DEFER, DISCARD, REJECT, or UNSUBSCRIBE.
* SendUnsubscribeAck(): Use a better Subject: on the message that getsbwarsaw2001-10-211-3/+3
| | | | sent to the user when they're unsubscribed.
* DEFAULT_SEND_GOODBYE_MSG: Default flag for whether a goodbye messagebwarsaw2001-10-211-0/+21
| | | | | | | | | | | | is sent when a user gets unsubscribed. DEFAULT_UNSUBSCRIBE_POLICY: Default flag for whether unsubscriptions require admin approval or not. ALLOW_RFC2369_OVERRIDES: Site admin switch which, if true, will allow list owners to suppress RFC 2369 List-* headers. UNSUBSCRIBE: New ListAdmin request enum.
* process(): Reworked Reply-To: munging so list owners can establishbwarsaw2001-10-201-12/+31
| | | | | | | | their own policies. Specifically, added first_strip_reply_to which will control whether any additional Reply-To: headers override or extend an existing such field. Also, we no longer save the old Reply-To: header on X-Reply-To:
* GetConfigInfo(): Added first_strip_reply_to. Also, did somebwarsaw2001-10-201-9/+24
| | | | | rearranging of variables and added some section headers for clearer organization.
* option_help(): If there is no elaboration, don't display thebwarsaw2001-10-201-4/+2
| | | | description three times (two should be enough <wink>).
* NewVars(): Pick up new list attribute first_strip_reply_to.bwarsaw2001-10-201-0/+2
|
* DATA_FILE_VERSION: Bumping to pick up new list attribute first_strip_reply_tobwarsaw2001-10-201-1/+1
|
* InitVars(): New list attribute first_strip_reply_to.bwarsaw2001-10-201-0/+1
|
* DEFAULT_FIRST_STRIP_REPLY_TO: Default for new list attributebwarsaw2001-10-201-0/+5
| | | | first_strip_reply_to.
* HandleForm(): Added (essentially no-op) so that admin.py willbwarsaw2001-10-201-0/+4
| | | | short-circuit exit after processing password change.