summaryrefslogtreecommitdiff
path: root/Mailman
Commit message (Collapse)AuthorAgeFilesLines
...
* Administrivia.rejection_notice(), hold_for_approval():bwarsaw2000-08-011-2/+2
| | | | GetAbsoluteScriptURL() => GetScriptURL(..., absolute=1)
* InitVars(): Use self.internal_name()bwarsaw2000-08-011-7/+5
| | | | | GetMailmanFooter(), FormatUsers(), FormatFormStart(): GetRelativeScriptURL() => GetScriptURL()
* SendSubscribeAck(), MailUserPassword() => GetScriptURL(...,bwarsaw2000-08-011-3/+3
| | | | absolute=1)
* HandleBouncingAddress(): GetAbsoluteScriptURL() => GetScriptURL(...,bwarsaw2000-08-011-1/+1
| | | | absolute=1)
* ProcessInfoCmd(), ProcessHelpCmd(): GetAbsoluteScriptURL() =>bwarsaw2000-08-011-2/+2
| | | | GetScriptURL(..., absolute=1)
* HoldSubscription(): GetAbsoluteScriptURL() => GetScriptURL(..., absolute=1)bwarsaw2000-08-011-1/+1
|
* GetAbsoluteScriptURL() => GetScriptURL(..., absolute=1)bwarsaw2000-08-011-5/+5
| | | | | Also, remove the link to Pipermail on Starship. This is way out of date.
* GetRelativeScriptURL() => GetScriptURL()bwarsaw2000-08-011-1/+1
|
* Massive cleanup to fix relative/absolute script url calculation inbwarsaw2000-08-011-25/+6
| | | | | | | | | | | | | | response to SF Bug #110753. Specifically, GetScriptURL(): Interface change; this now takes an `absolute' flag defaulting to always use relative urls. This is now essentially just a wrapper around Utils.ScriptURL() except that it tacks on the list's name. GetOptionsURL(): Same interface change. GetAbsoluteScriptURL(), GetAbsoluteOptionsURL(): Removed. All uses changed to GetScriptURL().
* Massive cleanup to fix relative/absolute script url calculation inbwarsaw2000-08-011-12/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | response to SF Bug #110753. Specifically, GetNestingLevel(): removed ScriptURL(): New utility function to calculate relative and absolute urls. The basic approach is this: 1. figure out where we are by using REQUEST_URI or SCRIPTNAME+PATH_INFO if that isn't defined in our environment. 2. figure out what the Mailman base url is by taking the `path' component of a urlparse() of the list's web_page_url configvar or DEFAULT_URL if that isn't provided in the arguments. 3. calculate what the relative path is from where we are to baseurl; express this as a string of ../'s 4. tack on the relative url to where we want to go, i.e. the target Elaborations: Optional `absolute' if set always calculates the absolute url as web_page_url/DEFAULT_URL + target. absolute should only be set when generating urls for emails. mm_cfg.CGIEXT is always tacked onto the end, meaning target is supposed to be just the script name and nothing else (anything else should be concatenated onto the return value of this function).
* process(): Don't bomb out if there's no From: header.bwarsaw2000-08-011-1/+1
|
* HasExplicitDest(): Integrating a patch from Gergely Madarasz frombwarsaw2000-07-271-1/+1
| | | | | 20-Jun-2000; Resent-CC: should also be considered an explicit destination.
* Bumping to 2.0beta5.bwarsaw2000-07-271-2/+2
|
* process(): Because this module modifies the message object, set thebwarsaw2000-07-273-0/+10
| | | | | _dirty flag so the text will be forced to disk in the event of an Enqueue().
* Enqueue(): Watch for the _dirty flag in the msgdata dictionary. Thisbwarsaw2000-07-271-3/+6
| | | | | | forces a write of the message text back to disk, even if it already exists. This is used when the message has been changed (e.g. new or changed header, etc.).
* process(): If there's a bogus template for the header or footer,bwarsaw2000-07-261-3/+13
| | | | | causing the dictionary interpolation to fail, log this to logs/error and insert a big red warning sign instead.
* One more try...bwarsaw2000-07-261-5/+8
| | | | | | | | | | | Enqueue(): Only calculate a new filebase (SHA hash) if the object wasn't assigned one in its constructor. Go back to including the current float time in the hash input. Message.__init__(): Take an optional `filebase' argument which can be restored from an enqueued message. This guarantees that a message, once assigned a hash value for its filebase, continues to use that filebase for its entire life.
* QFILE_SCHEMA_VERSION: bump to 2.bwarsaw2000-07-261-1/+1
|
* Enqueue(): Oops, you can't include the current time since the hashingbwarsaw2000-07-261-1/+1
| | | | algorithm needs to be reproducible.
* Enqueue(): Elaborate on the text fed to the SHA hashing function forbwarsaw2000-07-261-2/+4
| | | | | | | | | | | | calculating the file name. If a message is sent to two lists simultaneously and the receiving MTA doesn't distinguish them with something like a Delivered-To: header (as Postfix does), the hashes could be the same, prevent one or the other list from receiving the message. Now the hash is composed of the message's text, the destination list's name, and a string representation of the current floating point time. That ought to be unique enough for every message.
* optionslinks(): Use GetScriptURL(relative=1) for calculating the path.bwarsaw2000-07-251-1/+1
| | | | SF Patch #100556.
* FormatFormStart(): Use GetScriptURL(relative=1) for calculating thebwarsaw2000-07-251-1/+1
| | | | action path. SF Patch #100556.
* PAGE: Include some information on cookies in the login screen. Closesbwarsaw2000-07-251-1/+8
| | | | SF Bug #110142.
* OutgoingMessage.__init__(): Avoid the messy semantics ofbwarsaw2000-07-251-4/+12
| | | | | | rfc822.Message when the first line contains a colon. A blank header-terminating line is prepended to the given text if the first line contains a colon.
* Applying the patches from SF Bug #109217 that are not specific tobwarsaw2000-07-241-4/+7
| | | | | | | chuqui's site. Specifically, process_form(): slight rewrite of the MMSubscribeNeedsConfirmation text.
* Applying the patches from SF Bug #109217 that are not specific tobwarsaw2000-07-241-10/+9
| | | | | | | | chuqui's site. Specifically, FormatListinfoOverview(): Capitalize "Mailing Lists"; put "Welcome!" in +2 font; slight rewrite of the advertised greeting; put the "List" and "Description" table headers in +2 font.
* ApprovedAddMembers(), DeleteMember(): Refinement of twouter's patch tobwarsaw2000-07-241-8/+5
| | | | | fix the missing To: line in admin notifications of subscribes and unsubscribes.
* UserNotification.__init__(): If recip is a list, then string join thebwarsaw2000-07-241-3/+7
| | | | | elements for the value of the To: field, and assign a copy of the list to self.recips. Otherwise do the old behavior.
* process(): Be sure to wrap() the autoresponse text, since it's goingbwarsaw2000-07-241-1/+1
| | | | out as email.
* write(): Oops, de-Python-2.0-ification.bwarsaw2000-07-241-1/+1
|
* write(): Function that acts like print, but let's you specify thebwarsaw2000-07-241-0/+20
| | | | | | output file, whether a trailing newline should be printed, and the separator string. (Sidenote: this is partly to play with some suggestions currently being floated on the python-dev mailing list).
* HeadlessDocument.Format(): Oops! My last change removed one too manybwarsaw2000-07-221-1/+1
| | | | newlines.
* process(): Addressing both SF bug #108167 and patch #100861, thisbwarsaw2000-07-221-1/+11
| | | | | patch writes success and failure messages to logs/post. It retains the writing of smtp delivery timing messages to logs/smtp.
* loginpage: Remove the Cache-control: and Expires: headers. Thesebwarsaw2000-07-221-5/+1
| | | | | caused problems with the back button and didn't really solve an existing problem.
* Document.Format(), HeadlessDocument.Format(): Remove thebwarsaw2000-07-221-9/+1
| | | | | Cache-control: and Expires: headers. These caused problems with the back button and didn't really solve an existing problem.
* process(): Set Sender: and Errors-To: either the the value specifiedbwarsaw2000-07-221-2/+2
| | | | in the msgdata dictionary, falling back to the -admin address.
* GetConfigInfo(): Document that the -admin and -owner addresses arebwarsaw2000-07-221-4/+5
| | | | equivalent for autoresponse purposes.
* process(): Treat the -admin and -owner addresses as equivalent forbwarsaw2000-07-221-3/+5
| | | | autoresponse purposes.
* GetOwnerEmail(): new method to return the -owner address.bwarsaw2000-07-221-3/+11
| | | | | Lock(): If the Load() call fails with an MMUnknownListError, be sure to unlock the list before re-raising the exception.
* ScanMessages(): syslog message should read "Bouncer exception..."bwarsaw2000-07-211-1/+1
|
* ZapCookie(): add a comment about why expires=0 isn't set here.bwarsaw2000-07-211-0/+1
|
* RegisterBounce(): cosmeticbwarsaw2000-07-211-2/+1
|
* process(): parseaddr() can return None, which if leaked to the bouncebwarsaw2000-07-211-1/+1
| | | | framework will cause errors. filter out Nones before return.
* unhexlify(): Thomas and Dan team up to make this function more thanbwarsaw2000-07-201-2/+2
| | | | twice faster.
* main(): Oops, remove debugging.bwarsaw2000-07-201-1/+0
|
* authenticated(): Removed (see Mailman/Cgi/Auth.py).bwarsaw2000-07-201-45/+5
| | | | | main(): Use the new Mailman.Cgi.Auth module for performing the authentication stuff.
* authenticated(): Removed (see Mailman/Cgi/Auth.py).bwarsaw2000-07-201-71/+39
| | | | | | | | | main(): Use the new Mailman.Cgi.Auth module for performing the authentication stuff. Also, added a `Logout' link in the "Other Adminstrative Activities" section. This is a magic category that ends up calling ZapCookie() and re-displaying the login page. FormatConfiguration(): Added a link to the Logout category.
* Factor out some of the common code in admin.py and admindb.py.bwarsaw2000-07-201-0/+83
| | | | | | | | | | Specifically, loginpage(): Creates and prints the HTML for the front page of the admin interface. Lots of config arguments ;) authenticate(): Performs the actual authentication and raises a NotLoggedInError if that fails.
* Document.Format(), HeadlessDocument.Format(): We want to set a fewbwarsaw2000-07-201-23/+29
| | | | | | other HTTP headers to prevent caching of these dynamically generated, private pages. Setting "Cache-control: no-cache" and "Expires: 0" ought to do it.
* Several changes to the cookie management code, to support sessionbwarsaw2000-07-201-13/+29
| | | | | | | | | | | | | | | | | | | | cookies by default. Specifically, MakeCookie(): We don't include the expires time in the mac or in the marshaled state-tuple. These cookies live until the browser is exited or the user explicitly logs out. In order to tell browsers this is a session cookie, we do not set the cookie fields `Expires' or `Max-Age' explicitly (when ADMIN_COOKIE_LIFE <= 0, as it is by default). Also, set the RFC 2109 required `Version' field. ZapCookie(): New method which creates a `session-logout' Set-Cookie: header. According to RFC 2109, setting `Max-Age' to 0 ought to be enough to zap the cookie, but for compatibility with the old Netscape cookie spec, we also set the cookie data to the empty string. CheckCookie(): The state-tuple and the mac no longer contain the expired value. No need to test for now>expires and raise MMExpiredCookieError either.