summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* listinfo_overview(): The hostname/domain grokking code was moved intobwarsaw2001-05-091-16/+4
| | | | Utils.get_domain().
* success(): By adding default arguments, we can do the unpacking ofbwarsaw2001-05-091-3/+1
| | | | data `automatically' instead of in this function.
* admin_overview(): Add a link to the site-wide `create' cgi page forbwarsaw2001-05-091-18/+23
| | | | | | | | | | | | | | | | creating new mailing lists. show_results(): Under "Other Administrative Activities", add a little bit of space before the Logout entry. Also, if OWNERS_CAN_DELETE_THEIR_OWN_LISTS is true, add a link just above Logout to the rmlist cgi script for deleting the mailing list. get_item_gui_description(): Use the new Label widget instead of inlining the <div> tags. password_inputs(): The PasswordBox widget now has a default size of TEXTFIELDWIDTH, which is too big for these particular fields. Crank the size down to 20.
* ValidAdminPassword(): CheckSiteAdminPassword -> check_global_passwordbwarsaw2001-05-091-2/+2
|
* Added the Label widget/class, which is a Container that aligns itsbwarsaw2001-05-091-3/+16
| | | | | | | | | | elements on the right edge. PasswordBox: contructor now takes a size argument, which defaults to mm_cfg.TEXTFIELDWIDTH. TextBox: constructor's size argument now defaults to mm_cfg.TEXTFIELDWIDTH instead of 10.
* Add the create and rmlist CGI programs.bwarsaw2001-05-091-1/+1
|
* Add the -c/--listcreator option which sets the global "list creator's"bwarsaw2001-05-091-5/+18
| | | | password, used to create mailing lists through the web.
* SetSiteAdminPassword() -> set_global_password(): Also, add optionalbwarsaw2001-05-091-9/+53
| | | | | | | | | | | | | | argument `siteadmin' which if true reads the SITE_PW_FILE (default is true). When false, it reads the LISTCREATOR_PW_FILE. CheckSiteAdminPassword() -> check_global_password(): Same addition of argument. rmdirhier(): Like "rm -r" and unlike os.removedirs(), this recursively deletes everything under a specified directory. get_domain(): Returns the URL hostname/domain as pulled out of HTTP_HOST or SERVER_NAME, and is VIRTUAL_HOST_OVERVIEW aware.
* bumping copyright yearsbwarsaw2001-05-091-1/+1
|
* Bumping tagbwarsaw2001-05-091-0/+1
|
* Recurse into the MTA directory.bwarsaw2001-05-091-1/+1
|
* Create(): Wrap the os.makedirs() in a try/except transforming OSErrorsbwarsaw2001-05-091-2/+7
| | | | | | | | into MMUnknownListError. ProcessConfirmation(): Fix unpacking of the data coming back from Pending.confirm(). op is always the first element, but data is the 1st through nth elements.
* Support for list creation through the web. Specifically,bwarsaw2001-05-091-4/+13
| | | | | | | | | | | | | | | | MTA_ALIASES_STYLE: Removed. MTA: This names a module in Mailman/MTA which contains the MTA-specific code to make the mailer aware of new mailing lists automatically. OWNERS_CAN_DELETE_THEIR_OWN_LISTS: This flag controls whether list owners can delete their mailing lists through the web. If set to false, only the site administrator can delete mailing lists using the command line script. LISTCREATOR_PW_FILE: Specifies where the list creator's password is saved.
* Extra information on gluing Postfix and Mailman together.bwarsaw2001-05-091-0/+72
|
* Add directory Mailman/MTA to the list of directories to do configurebwarsaw2001-05-093-7/+7
| | | | and make stuff in.
* Be more paranoid about abnormal shutdown conditions, specifically:bwarsaw2001-05-031-2/+23
| | | | | | | | | | | | | | | | | | | main(): When the user hits the stop button on their browser during a long running operation, Apache 1.3/mod_cgi will eventually catch a SIGPIPE when output is written to the client. It then turns around and SIGTERMs the cgi process, waits three seconds, then SIGKILLs the cgi process. This patch fixes the stale lock file that can result under this situation. Since Python by default doesn't catch SIGTERM, and SIGKILL is uncatchable, either signal would cause the cgi process to exit without raising an exception, giving no chance for the script to clean up after itself. We now open the MailList object in two phases: first, open it unlocked, then lock it and install a SIGTERM handler. The SIGTERM handler unlocks the list and exits, aborting any changes that may have taken place. This is the safest way to ensure that stale locks won't be left around causing other hits on the list to become wedged for a long time.
* De-string-module-ification.bwarsaw2001-05-032-8/+10
|
* Be more paranoid about abnormal shutdown conditions, specifically:bwarsaw2001-05-031-4/+24
| | | | | | | | | | | | | | | | | | | | | main(): When the user hits the stop button on their browser during a long running operation, Apache 1.3/mod_cgi will eventually catch a SIGPIPE when output is written to the client. It then turns around and SIGTERMs the cgi process, waits three seconds, then SIGKILLs the cgi process. This patch fixes the stale lock file that can result under this situation. Since Python by default doesn't catch SIGTERM, and SIGKILL is uncatchable, either signal would cause the cgi process to exit without raising an exception, giving no chance for the script to clean up after itself. We now open the MailList object in two phases: first, open it unlocked, then lock it and install a SIGTERM handler. The SIGTERM handler unlocks the list and exits, aborting any changes that may have taken place. This is the safest way to ensure that stale locks won't be left around causing other hits on the list to become wedged for a long time. Also, de-string-modulification.
* main(): Add an explicit call to sys.exit() in the sigterm_handler() sobwarsaw2001-05-031-5/+15
| | | | | that race conditions can't trick us into trying to Save() when we don't have the list lock.
* Update comments to sync with 2.0.5 branch.bwarsaw2001-05-031-19/+27
|
* Add some news about 2.0.4 and 2.0.5 patches ported forward.bwarsaw2001-05-031-0/+14
|
* Fixes to handle User-Hits-Stop-Button problems, specifically,bwarsaw2001-05-023-4/+38
| | | | | | | | | | | | | | | | | | | | | | | main(): Set up a signal handler to catch SIGTERM, and unlock the mailing list when this happens. This has the side effect of aborting any changes to the MailList object that this web hit may have made. This is necessary due to semantics of Apache's mod_cgi: when the browser closes the socket, eventually Apache receives a SIGPIPE (on output to the closed socket). This causes Apache to SIGTERM the cgi process, wait three seconds, then SIGKILL it. We want to be able to clean up the locks, so the best we can do is try to unlock the list on the SIGTERM. Once we get SIGKILLed, there's nothing we can do. This change also moves the Save() call into the try: block so that the finally: block /only/ unlocks the list. Thus, the list gets unlocked in most situations. There are still race conditions where 1) the config.db file could be corrupted; 2) list locks could still be unreleased. Given the semantics of signals in Python, the interaction of Apache's mod_cgi, and other factors, this is the best we can do, and it should be better than the old situation. XXX What do other web servers or cgi execution environments do?
* Added missing import.bwarsaw2001-05-011-3/+22
| | | | | | | | | _dispose(): Support for new site-wide date clobbering policy. No longer is the Date: header clobbering a list-specific option, instead ARCHIVER_CLOBBER_DATE_POLICY and ARCHIVER_ALLOWABLE_SANE_DATE_SKEW control how Date: munging happens site-wide (this makes the most sense since the choice of Pipermail vs. external archiver is also made site-wide). See Defaults.py.in for more details.
* CATEGORIES: Changes for readability...bwarsaw2001-05-011-2/+6
| | | | | | | | | | "Regular-member (non-digest) Options" -> "Regular delivery (non-digest) Options" "Digest-member Options" -> "Digest Options" change_options(): Support for pseudo-variables _new_volume and _send_digest_now.
* DEFAULT_DIGEST_VOLUME_FREQUENCY: Default value for the newbwarsaw2001-05-011-1/+14
| | | | | | | | | | | | | | | digest_volume_frequency configuration attribute. Default is to rotate volume numbers monthly. ARCHIVER_CLOBBER_DATE_POLICY: New site-wide configuration variable to control when the Date: header is modified for the archiver. Legal values are 0 (retain original Date), 1 (always override with received date), 2 (only override if the date is outrageous -- see below). Default is to only override outrageous dates. The clobber_date list-specific configuration attribute has been removed. ARCHIVER_ALLOWABLE_SANE_DATE_SKEW: How far away a date must be from current time to be considered outrageous. Default is 15 days.
* mimelib's ReprMixin class and module was renamed to StringableMixin inbwarsaw2001-05-011-3/+34
| | | | | | | | | | | | | | | the 0.3 release. This means you must download and install the 0.3 version of mimelib to work with the current CVS snapshot! ReprMIME => StringableMIME send_digests(): Added support for auto-bumping of digest volume numbers based on the digest_volume_frequency configuration attribute. send_i18n_digests(): After creating the mimedigest container, set its payload to the empty list. This ensures that subsequent add_payload()s will succeed. mimelib 0.3 will raise an exception otherwise when appending to a scalar payload.
* process(): `received_time' should only be added to the message'sbwarsaw2001-05-011-2/+2
| | | | | | metadata if it's not already there. Usually it will be since scripts/post and scripts/auto add it. Python 2.x's {}.setdefault() does this nicely.
* InitVars(), GetConfigInfo(): clobber_date goes away as a list-specificbwarsaw2001-05-011-8/+0
| | | | configuration variable.
* ZapOldVars(): clobber_date goes away as a list-specific configurationbwarsaw2001-05-011-0/+5
| | | | | | | variable. NewVars(): MailList objects grow a digest_volume_frequency and digest_last_sent_at attributes.
* Bump the DATA_FILE_VERSION to pick up the changes to the list objectbwarsaw2001-05-011-1/+1
| | | | configuration attributes.
* GetConfigInfo(): Two new configuration variables have been added:bwarsaw2001-05-011-0/+44
| | | | | | | | | | | | | | | | | - digest_volume_frequency describes how often a new digest volume should be started. Values are Yearly, Monthly, Quarterly, Weekly, Daily. When a new digest volume is started, the volume number is incremented and the next_digest_number is reset to 1 - digest_last_sent_at records when the last digest was sent, used to calculate when a new digest volume should be started. In addition, two new pseudo-variables are added which allow the list admin to start a new volume with the next outgoing digest, and to send the current digest right now, if it isn't empty. send_digest_now(), bump_digest_volume(): New methods to encapsulate sending a digest and bumping the volume number.
* main(): MailList objects have grown a bump_digest_volume() method thatbwarsaw2001-05-011-3/+2
| | | | | encapsulates all the work necessary to bump the digest number. Use this instead of hacking the list attributes directly.
* main(): MailList objects have grown a send_digest_now() method thatbwarsaw2001-05-011-26/+6
| | | | | encapsulates all the work necessary to send a digest. Use this instead of the send_digests() function -- which has been removed.
* main(): Set the message metadata `received_time' to the current time.bwarsaw2001-05-013-3/+15
| | | | | Note that ToArchive.py will set this if it isn't present in the metadata already, however that might incur hold and other delays.
* mimelib's ReprMixin class and module was renamed to StringableMixin inbwarsaw2001-05-011-3/+3
| | | | | the 0.3 release. This means you must download and install the 0.3 version of mimelib to work with the current CVS snapshot!
* main(): Utils.GetCharSet() requires the language as an argument.bwarsaw2001-05-011-1/+2
|
* Forward port a 2.0.4 patch to make this script a little more generic.bwarsaw2001-05-011-1/+1
|
* ScanMessages(): Use a better way to runtime import the module and callbwarsaw2001-05-011-4/+5
| | | | | its process() function. This doesn't require three nested getattr() calls.
* QuoteHyperChars(): Porting forward from 2.0.4 a patch to get rid ofbwarsaw2001-05-011-15/+2
| | | | | the deprecated regsub so as to quiet a Python 2.1 warning. The standard cgi.escape() function does all this for us.
* MailmanLogo(): Remove hyperlinks from logos (and also the links to thebwarsaw2001-05-011-17/+7
| | | | | | sponsor home pages). In practice, too many end-user list members were following those links out of desperation to get unsubscribed from deployed lists.
* Porting forward from 2.0.4 a patch to replace the deprecated regsubbwarsaw2001-05-011-14/+13
| | | | | | module with re. This quiets a Python 2.1 warning. Also, de-string-module-ification.
* HandleBouncingAddress(): Mark some more strings for translation.bwarsaw2001-05-011-9/+12
| | | | | Original patch by Juan Carlos Rey Anaya after bug report by Patrick Timmons. Patch modified by Barry.
* Describe the changes to the admin/ membership management page.bwarsaw2001-04-091-0/+10
|
* As if this file wasn't enough of an ugly hack ;) -- significantbwarsaw2001-04-091-170/+349
| | | | | | | | | | | | | | redesign of the admin page. From the NEWS file: - Redesign of the membership management page. The page is now split into three subcategories (Membership List, Mass Subscription, and Mass Removal). The Membership List subcategory now supports searching for member addresses by regular expression, and if necessary, it groups member addresses first alphabetically, and then by chunks. Mass Subscription and Mass Removal now alternatively support file upload, with one address per line.
* SendExplanation(): Fixed the sending of notification to use the newbwarsaw2001-04-091-7/+3
| | | | Message.UserNotification() class.
* Hidden(): New class for "hidden" input item.bwarsaw2001-04-091-0/+7
| | | | Form.set_action(): New method to retrospectively set the form action.
* chunkify(): Removed.bwarsaw2001-04-091-18/+0
|
* start_runner(): Due to race conditions, the subproc could get thebwarsaw2001-04-031-1/+6
| | | | SIGINT inside the syslog call. It's of no consequence.
* Add a note about mimelib and where to get it. Closes SF bug 413229.bwarsaw2001-04-031-0/+10
|
* process(): Do no harm to MIME documents when adding the header andbwarsaw2001-04-031-10/+28
| | | | | | | | | | | | | | footer. The rules now are: - if the message is not a MIME, or is only a text/plain, then add the header and footer the old way (concatenation). - if the message is multipart/mixed, add the header and footer as text/plain subparts (prepended and appended to the original subparts). - anything else goes through without headers and footers added. We may elaborate on this last bit in the future.