#* Foundation, Inc., *
#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
#***************************************************************************
-# $Id: mailman-rpc.py,v 1.74 2004-11-10 10:59:10 x2000habouzit Exp $
+# $Id: mailman-rpc.py,v 1.75 2004-11-10 11:06:25 x2000habouzit Exp $
#***************************************************************************
import base64, MySQLdb, os, getopt, sys, MySQLdb.converters, sha, signal
# TODO: subclass in SimpleXMLRPCDispatcher and not here.
new_params = list(params)
new_params.insert(0,self.data[2])
- new_params.insert(0,self.data[0:2])
+ new_params.insert(0,self.data[1])
+ new_params.insert(0,self.data[0])
return self.server._dispatch(method,new_params)
def do_POST(self):
try:
_, auth = self.headers["authorization"].split()
uid, md5 = base64.decodestring(auth).strip().split(':')
- try:
- vhost = self.path.split('/')[1].lower()
- except:
- vhost = 'polytechnique.org'
+ vhost = self.path.split('/')[1].lower()
self.data = self.getUser(uid,md5,vhost)
if self.data is None:
raise AuthFailed
# helpers on lists
#
-def get_list_info((userdesc,perms),mlist,front_page=0):
+def get_list_info(userdesc,perms,mlist,front_page=0):
members = mlist.getRegularMemberKeys()
is_member = userdesc.address in members
is_admin = mm_cfg.ADMIN_ML_OWNER in mlist.owner
return (details,members)
return 0
-def get_options((userdesc,perms),vhost,listname,opts):
+def get_options(userdesc,perms,vhost,listname,opts):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
if type(v) is str:
options[k] = quote(v)
else: options[k] = v
- details = get_list_info((userdesc,perms),mlist)[0]
+ details = get_list_info(userdesc,perms,mlist)[0]
return (details,options)
except:
return 0
-def set_options((userdesc,perms),vhost,listname,opts,vals):
+def set_options(userdesc,perms,vhost,listname,opts,vals):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
# users procedures for [ index.php ]
#
-def get_lists((userdesc,perms),vhost):
+def get_lists(userdesc,perms,vhost):
prefix = vhost.lower()+'-'
names = Utils.list_names()
names.sort()
except:
continue
try:
- details = get_list_info((userdesc,perms),mlist,1)[0]
+ details = get_list_info(userdesc,perms,mlist,1)[0]
result.append(details)
except:
continue
return result
-def subscribe((userdesc,perms),vhost,listname):
+def subscribe(userdesc,perms,vhost,listname):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
mlist.Unlock()
return result
-def unsubscribe((userdesc,perms),vhost,listname):
+def unsubscribe(userdesc,perms,vhost,listname):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
# users procedures for [ index.php ]
#
-def get_members((userdesc,perms),vhost,listname):
+def get_members(userdesc,perms,vhost,listname):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
return 0
try:
- details,members = get_list_info((userdesc,perms),mlist)
+ details,members = get_list_info(userdesc,perms,mlist)
members.sort()
members = map(lambda member: (quote(mlist.getMemberName(member)) or '', member), members)
return (details,members,mlist.owner)
# users procedures for [ trombi.php ]
#
-def get_members_limit((userdesc,perms),vhost,listname,page,nb_per_page):
+def get_members_limit(userdesc,perms,vhost,listname,page,nb_per_page):
try:
- members = get_members((userdesc,perms),vhost,listname)[1]
+ members = get_members(userdesc,perms,vhost,listname)[1]
except:
return 0
i = int(page) * int(nb_per_page)
return (len(members), members[i:i+int(nb_per_page)])
-def get_owners((userdesc,perms),vhost,listname):
+def get_owners(userdesc,perms,vhost,listname):
try:
- details,members,owners = get_members((userdesc,perms),vhost,listname)
+ details,members,owners = get_members(userdesc,perms,vhost,listname)
except:
return 0
return (details,owners)
# owners procedures [ admin.php ]
#
-def mass_subscribe((userdesc,perms),vhost,listname,users):
+def mass_subscribe(userdesc,perms,vhost,listname,users):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
mlist.Unlock()
return added
-def mass_unsubscribe((userdesc,perms),vhost,listname,users):
+def mass_unsubscribe(userdesc,perms,vhost,listname,users):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
mlist.Unlock()
return users
-def add_owner((userdesc,perms),vhost,listname,user):
+def add_owner(userdesc,perms,vhost,listname,user):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
mlist.Unlock()
return True
-def del_owner((userdesc,perms),vhost,listname,user):
+def del_owner(userdesc,perms,vhost,listname,user):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
# owners procedures [ admin.php ]
#
-def get_pending_ops((userdesc,perms),vhost,listname):
+def get_pending_ops(userdesc,perms,vhost,listname):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
return (subs,helds)
-def handle_request((userdesc,perms),vhost,listname,id,value,comment):
+def handle_request(userdesc,perms,vhost,listname,id,value,comment):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
return 0
-def get_pending_mail((userdesc,perms),vhost,listname,id,raw=0):
+def get_pending_mail(userdesc,perms,vhost,listname,id,raw=0):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
'info', 'subject_prefix', 'goodbye_msg', 'send_goodbye_msg', \
'subscribe_policy', 'welcome_msg']
-def get_owner_options((userdesc,perms),vhost,listname):
- return get_options((userdesc,perms),vhost,listname,owner_opts)
+def get_owner_options(userdesc,perms,vhost,listname):
+ return get_options(userdesc,perms,vhost,listname,owner_opts)
-def set_owner_options((userdesc,perms),vhost,listname,values):
- return set_options((userdesc,perms),vhost,listname,owner_opts,values)
+def set_owner_options(userdesc,perms,vhost,listname,values):
+ return set_options(userdesc,perms,vhost,listname,owner_opts,values)
-def add_to_wl((userdesc,perms),vhost,listname,addr):
+def add_to_wl(userdesc,perms,vhost,listname,addr):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
mlist.Unlock()
return 0
-def del_from_wl((userdesc,perms),vhost,listname,addr):
+def del_from_wl(userdesc,perms,vhost,listname,addr):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
mlist.Unlock()
return 0
-def get_bogo_level((userdesc,perms),vhost,listname):
+def get_bogo_level(userdesc,perms,vhost,listname):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
except:
return 0
-def set_bogo_level((userdesc,perms),vhost,listname,level):
+def set_bogo_level(userdesc,perms,vhost,listname,level):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
admin_opts = [ 'advertised', 'archive', 'default_member_moderation', \
'generic_nonmember_action', 'max_message_size', 'msg_footer', 'msg_header']
-def get_admin_options((userdesc,perms),vhost,listname):
+def get_admin_options(userdesc,perms,vhost,listname):
if perms != 'admin':
return 0
- return get_options((userdesc,perms),vhost,listname,admin_opts)
+ return get_options(userdesc,perms,vhost,listname,admin_opts)
-def set_admin_options((userdesc,perms),vhost,listname,values):
+def set_admin_options(userdesc,perms,vhost,listname,values):
if perms != 'admin':
return 0
- return set_options((userdesc,perms),vhost,listname,admin_opts,values)
+ return set_options(userdesc,perms,vhost,listname,admin_opts,values)
#-------------------------------------------------------------------------------
# admin procedures [ check.php ]
'unsubscribe_policy' : 0,
}
-def check_options((userdesc,perms),vhost,listname,correct=False):
+def check_options(userdesc,perms,vhost,listname,correct=False):
try:
mlist = MailList.MailList(vhost+'-'+listname,lock=0)
except:
if correct:
mlist.Save()
mlist.Unlock()
- details = get_list_info((userdesc,perms),mlist)[0]
+ details = get_list_info(userdesc,perms,mlist)[0]
return (details,options)
except:
if correct: mlist.Unlock()
# admin procedures [ soptions.php ]
#
-def get_all_lists((userdesc,perms),vhost):
+def get_all_lists(userdesc,perms,vhost):
prefix = vhost.lower()+'-'
names = Utils.list_names()
names.sort()
result.append(name.replace(prefix,''))
return result
-def create_list((userdesc,perms),vhost,listname,desc,advertise,modlevel,inslevel,owners,members):
+def create_list(userdesc,perms,vhost,listname,desc,advertise,modlevel,inslevel,owners,members):
if perms != 'admin':
return 0
name = vhost.lower()+'-'+listname.lower();
mlist.Unlock()
- check_options((userdesc,perms),vhost,listname.lower(),True)
- mass_subscribe((userdesc,perms),vhost,listname.lower(),members)
+ check_options(userdesc,perms,vhost,listname.lower(),True)
+ mass_subscribe(userdesc,perms,vhost,listname.lower(),members)
# avoid the "-1 mail to moderate" bug
mlist = MailList.MailList(name)