diff --git a/6.1.22/patches/01_rename_list_no_pending.patch b/6.1.22/patches/01_rename_list_no_pending.patch new file mode 100644 index 0000000000000000000000000000000000000000..33c1e9d5f7c4c709a18a4ddcd0e5031185af3dc5 --- /dev/null +++ b/6.1.22/patches/01_rename_list_no_pending.patch @@ -0,0 +1,56 @@ +diff --git a/sympa-6.1.15-src/src/lib/admin.pm b/sympa-6.1.15-src/src/lib/admin.pm +index c94de08..1bcaebf 100644 +--- a/sympa-6.1.15-src/src/lib/admin.pm ++++ b/sympa-6.1.15-src/src/lib/admin.pm +@@ -817,16 +817,16 @@ sub rename_list{ + } + + # set list status to pending if creation list is moderated +- if ($r_action =~ /listmaster/) { +- $list->{'admin'}{'status'} = 'pending' ; +- &List::send_notify_to_listmaster('request_list_renaming',$list->{'domain'}, +- {'list' => $list, +- 'new_listname' => $param{'new_listname'}, +- 'old_listname' => $old_listname, +- 'email' => $param{'user_email'}, +- 'mode' => $param{'mode'}}); +- $param{'status'} = 'pending'; +- } ++# if ($r_action =~ /listmaster/) { ++# $list->{'admin'}{'status'} = 'pending' ; ++# &List::send_notify_to_listmaster('request_list_renaming',$list->{'domain'}, ++# {'list' => $list, ++# 'new_listname' => $param{'new_listname'}, ++# 'old_listname' => $old_listname, ++# 'email' => $param{'user_email'}, ++# 'mode' => $param{'mode'}}); ++# $param{'status'} = 'pending'; ++# } + + ## Save config file for the new() later to reload it + $list->save_config($param{'user_email'}); +diff --git a/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in +index ee66620..fe1d7c2 100644 +--- a/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in +@@ -10433,6 +10433,7 @@ sub do_rename_list { + remote_addr => $param->{'remote_addr'}, + aliases => $param->{'aliases'}, + status => $param->{'status'}, ++ skip_authz => 1, + ); + + if ($result eq 'incorrect_listname') { +@@ -10493,9 +10494,9 @@ sub do_rename_list { + } + + # set list status to pending if creation list is moderated +- if ($param->{'status'} eq 'pending') { +- &report::notice_report_web('pending_list',{},$param->{'action'},$list); +- } ++# if ($param->{'status'} eq 'pending') { ++# &report::notice_report_web('pending_list',{},$param->{'action'},$list); ++# } + + if ($in{'new_robot'} eq '$robot') { + $param->{'redirect_to'} = "$param->{'base_url'}$param->{'path_cgi'}/admin/$in{'new_listname'}"; diff --git a/6.1.22/patches/02_disable_copy_list b/6.1.22/patches/02_disable_copy_list new file mode 100644 index 0000000000000000000000000000000000000000..e2ebad04032fc8a8f68b831aadf13c4a28916bfc --- /dev/null +++ b/6.1.22/patches/02_disable_copy_list @@ -0,0 +1,16 @@ +diff --git a/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in +index fe1d7c2..ff0d545 100644 +--- a/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in +@@ -10409,7 +10409,10 @@ sub _restrict_values { + + sub do_copy_list { + &wwslog('info', 'do_copy_list(%s,%s)', $in{'new_listname'}, $in{'new_robot'}); +- &do_rename_list('copy'); ++ # mysteriously reject copy list requests - this needs a real solution ++ &report::reject_report_web('intern','Unable_to_copy_list', {'new_listname' => $in{'new_listname'}}, ++ $param->{'action'},$list,$param->{'user'}{'email'},$robot); ++ return undef; + } + + # in order to rename a list you must be list owner and you must be allowed to create new list diff --git a/6.1.22/patches/03_disable_latest_and_active_lists b/6.1.22/patches/03_disable_latest_and_active_lists new file mode 100644 index 0000000000000000000000000000000000000000..18d34511c92ffcc1a7af4cd3781a18ad5d5eb924 --- /dev/null +++ b/6.1.22/patches/03_disable_latest_and_active_lists @@ -0,0 +1,29 @@ +commit d42aa14044e13f5efcf4b4dfe4d2db08365bfad0 +Author: k clair <kclair@riseup.net> +Date: Mon Nov 12 10:53:08 2012 -0800 + + disable listing of latest and active lists. + +diff --git a/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in +index ff0d545..ce6d199 100644 +--- a/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in +@@ -4070,6 +4070,9 @@ sub do_renewpasswd { + ## The list of latest created lists + sub do_latest_lists { + &wwslog('info', "do_latest_lists($in{'for'}, $in{'count'},$in{'topic'}, $in{'subtopic'})"); ++ # should try to actually fix this one day ++ return 0; ++ + + unless (&do_lists()) { + &wwslog('err','do_latest_lists: error while calling do_lists'); +@@ -4130,6 +4133,8 @@ sub do_renewpasswd { + ## The list of the most active lists + sub do_active_lists { + &wwslog('info', "do_active_lists($in{'for'}, $in{'count'},$in{'topic'}, $in{'subtopic'})"); ++ # should try to actually fix this one day ++ return 0; + + unless (&do_lists()) { + &wwslog('err','do_active_lists: error while calling do_lists'); diff --git a/6.1.22/patches/04_fix_search_list.patch b/6.1.22/patches/04_fix_search_list.patch new file mode 100644 index 0000000000000000000000000000000000000000..9d7ef00962dc316f7ab21b9ae10fe2d838002a95 --- /dev/null +++ b/6.1.22/patches/04_fix_search_list.patch @@ -0,0 +1,14 @@ +--- a/sympa-6.1.14-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.14-src/wwsympa/wwsympa.fcgi.in +@@ -9105,7 +9105,10 @@ Sends back the list creation edition form. + + ## Members list + my $record = 0; +- my $all_lists = &List::get_lists($robot); ++ my $regexp = $param->{'regexp'}; ++ my $statement = sprintf "name_list RLIKE '%s' OR subject_list RLIKE '%s'", $regexp, $regexp; ++ my @lists = &List::get_lists_db($statement) || undef; ++ my $all_lists = &List::get_lists($robot, undef, @lists); + foreach my $list ( @$all_lists ) { + my $is_admin; + ## Search filter diff --git a/6.1.22/patches/05_fix_pending_lists.patch b/6.1.22/patches/05_fix_pending_lists.patch new file mode 100644 index 0000000000000000000000000000000000000000..33e486f165a3b00eb7d9f67b133e1f4c078dda39 --- /dev/null +++ b/6.1.22/patches/05_fix_pending_lists.patch @@ -0,0 +1,17 @@ +--- a/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.15-src/wwsympa/wwsympa.fcgi.in +@@ -8215,8 +8215,12 @@ sub do_get_pending_lists { + ## Checking families and other virtual hosts. + &get_server_details(); + +- my $all_lists = &List::get_lists($robot, +- { 'filter_query' => [ 'status' => 'pending' ] }); ++# my $all_lists = &List::get_lists($robot, ++# { 'filter_query' => [ 'status' => 'pending' ] }); ++ my $statement = "status_list = 'pending'"; ++ my @lists = &List::get_lists_db($statement); ++ my $all_lists = &List::get_lists($robot, undef, @lists); ++ + foreach my $list ( @$all_lists ) { + $param->{'pending'}{$list->{'name'}}{'subject'} = $list->{'admin'}{'subject'}; + $param->{'pending'}{$list->{'name'}}{'by'} = $list->{'admin'}{'creation'}{'email'}; diff --git a/6.1.22/patches/README b/6.1.22/patches/README new file mode 100644 index 0000000000000000000000000000000000000000..051bc350d52961ce79cde025c6877a85d3095102 --- /dev/null +++ b/6.1.22/patches/README @@ -0,0 +1,31 @@ +Patches +======== + +01_rename_lists_no_pending +-------------------------- +prevents lists going in to 'pending' status if they are renamed. +https://labs.riseup.net/code/issues/4066 + +02_disable_copy_list +-------------------- +disables the ability to copy an existing list at the perl library level. this is also done on the +template level (which is not included in this patch). +https://labs.riseup.net/code/projects/lists/activity?from=2012-10-05 + +03_disable_latest_and_active_lists +----------------------------------- +rss requests to active_lists and latest_lists crash wwsympa. disable for now (should make a real patch one day) + +04_fix_search_list.patch +--------------------------- +patches do_search_list so that it calls get_lists_db directly with SQL conditions to limit the number of lists that get_lists has to loop through. +TODO: need to file a bug for this. + +05_disable_latest_and_active_lists.patch +----------------------------------------- +we still need to disable listing of latest and active lists, since these operations still time out. +TODO; need to file a bug for this and press the issue upstream + +06_fix_pending_lists.patch +---------------------------- +do_get_pending_lists in wwsympa.fcgi needs to be patched to pre-select all lists with status 'pending', and then it can pass those lists to get_lists.