#!/usr/local/bin/python f = open('/tmp/fart', 'a+') f.write("Test") f.flush() import sys, os, cgi sys.stderr = f f.write('hello world') from regsub import gsub sys.path.append('/home/mailman/mailman/modules') import mm_utils, maillist, mm_err, mm_message, mm_cfg, htmlformat NEED_CONFIRM_NOTICE = """ A subscription to the %s mailing has been submitted for you%s This is a confirmation request, to prevent someone subscribing you against your wishes. In order to complete this subscription you must send a confirming email by repling to this mail, and putting the line: subscribe %s in the body. If you do not actually wish to subscribe you need not do anything. Questions or comments? Send them to """ + mm_cfg.MAILMAN_OWNER UNKNOWN_ERROR = '''An unknown error occured.
Please send mail to %s explaining exactly what you did to get this error.
''' % (mm_cfg.MAILMAN_OWNER,
mm_cfg.MAILMAN_OWNER)
doc = htmlformat.Document()
path = os.environ['PATH_INFO']
list_info = mm_utils.GetPathPieces(path)
list_name = list_info[0]
if len(list_info) < 1:
doc.AddItem(htmlformat.Header(2, "Invalid options to CGI script."))
print doc.Format()
sys.exit(0)
try:
list = maillist.MailList(list_name)
except:
doc.AddItem(htmlformat.Header(2, "%s: No such list." % list_name ))
print doc.Format()
sys.exit(0)
if not list._ready:
doc.AddItem(htmlformat.Header(2, "%s: No such list." % list_name ))
print doc.Format()
sys.exit(0)
form = cgi.FieldStorage()
error = 0
results = ''
if form.has_key("submitinfo"):
if not form.has_key("info"):
doc.AddItem(htmlformat.Header(2,
"You must supply your email address."))
doc.AddItem(list.GetMailmanFooter())
print doc.Format()
sys.exit(0)
addr = list.FindUser(form['info'].value)
if not addr:
doc.AddItem(htmlformat.Header
(2, "You aren't subscribed to this mailing list under "
"the address you gave."))
doc.AddItem(list.GetMailmanFooter())
print doc.Format()
sys.exit(0)
# A little bit of a hack to call the options script...
os.environ['PATH_INFO'] = '%s/%s' % (list_name,addr)
file = os.path.join(mm_cfg.MAILMAN_DIR, 'cgi/options')
list.Unlock()
execfile(file)
sys.exit(0)
if not form.has_key("email"):
error = 1
results = results + "You must supply a valid email address. ")
except mm_err.MMWebSubscribeRequiresConfirmation:
results = results + ("Confirmation from your email address is "
"required, to prevent anyone from covertly "
"subscribing other people. Instructions "
"are being sent to you at %s." % email)
if os.environ.has_key('REMOTE_HOST'):
remote = " from\n%s. " % os.environ['REMOTE_HOST']
elif os.environ.has_key('REMOTE_ADDR'):
remote = " from\n%s." % os.environ['REMOTE_ADDR']
else:
remote = "."
list.SendTextToUser(subject = 'Subscribing to %s' % list.real_name,
recipient = email,
sender = list.GetRequestEmail(),
text = NEED_CONFIRM_NOTICE % (list.real_name,
remote,
pw))
except mm_err.MMBadEmailError:
results = results + ("Mailman won't accept the given email "
"address as a valid address. (Does it "
"have an @ in it???) ")
except mm_err.MMListNotReady:
results = results + ("The list is not fully functional, and "
"can not accept subscription requests. ")
except mm_err.MMNeedApproval, x:
results = results + ("Subscription was deferred "
"because: Your request must "
"be approved by the list admin. "
"You will receive email informing you "
"of the moderator's descision when they "
"get to your request. " % x)
except mm_err.MMHostileAddress:
results = results + ("Your subscription is not allowed because "
"the email address you gave is insecure. ")
except mm_err.MMAlreadyAMember:
results = results + "You are already subscribed! "
except:
results = results + UNKNOWN_ERROR
PrintResults()
"
else:
email = form["email"].value
if not form.has_key("pw") or not form.has_key("pw-conf"):
error = 1
results = results + "You must supply a valid password, and confirm it.
"
else:
pw = form["pw"].value
pwc = form["pw-conf"].value
if not error and (pw <> pwc):
error = 1
results = results + "Your passwords did not match.
"
if form.has_key("digest"):
digest = eval(form["digest"].value)
if not list.digestable:
digest = 0
elif not list.nondigestable:
digest = 1
def PrintResults():
replacements = list.GetStandardReplacements()
replacements['
%s