/[smecontribs]/rpms/smeserver-ezmlm-web/contribs10/smeserver-ezmlm-web-1.1.3-bz6978-bz9468-bz11910-sme10next.patch
ViewVC logotype

Annotation of /rpms/smeserver-ezmlm-web/contribs10/smeserver-ezmlm-web-1.1.3-bz6978-bz9468-bz11910-sme10next.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download)
Mon Aug 1 02:17:26 2022 UTC (22 months ago) by jpp
Branch: MAIN
CVS Tags: smeserver-ezmlm-web-1_1_3-13_el7_sme, smeserver-ezmlm-web-1_1_3-12_el7_sme, HEAD
Changes since 1.1: +0 -105 lines
* Fri Jul 22 2022 Jean-Philippe Pialasse <tests@pialasse.com> 1.1.3-12.sme
- update to httpd 2.4 syntax [SME: 12045]

1 jpp 1.1 diff -Nur --no-dereference smeserver-ezmlm-web-1.1.3.old/createlinks smeserver-ezmlm-web-1.1.3/createlinks
2     --- smeserver-ezmlm-web-1.1.3.old/createlinks 2022-03-20 02:09:58.724000000 -0400
3     +++ smeserver-ezmlm-web-1.1.3/createlinks 2022-03-20 02:19:44.859000000 -0400
4     @@ -33,7 +33,7 @@
5     console-save
6     email-update
7     mailinglist-create
8     - mailinglist-update
9     + mailinglist-modify
10     mailinglist-assign
11     ));
12     templates2events("/home/e-smith/files/ezmlm/lists/webusers",
13     @@ -42,7 +42,7 @@
14     console-save
15     email-update
16     mailinglist-create
17     - mailinglist-update
18     + mailinglist-modify
19     mailinglist-assign
20     ));
21     my $event="smeserver-ezmlm-web-update";
22     diff -Nur --no-dereference smeserver-ezmlm-web-1.1.3.old/root/etc/e-smith/events/actions/ezmlm-update smeserver-ezmlm-web-1.1.3/root/etc/e-smith/events/actions/ezmlm-update
23     --- smeserver-ezmlm-web-1.1.3.old/root/etc/e-smith/events/actions/ezmlm-update 2014-06-16 11:54:25.000000000 -0400
24     +++ smeserver-ezmlm-web-1.1.3/root/etc/e-smith/events/actions/ezmlm-update 2022-03-20 02:11:36.623000000 -0400
25     @@ -38,7 +38,7 @@
26     die "event argument missing." unless defined ($event);
27    
28     my $listName = $ARGV[1];
29     -die "listName argument missing." unless defined ($listName);
30     +die "listName argument missing." unless defined ($listName) || $event eq "smeserver-ezmlm-web-update";
31    
32     # We really want to do all ezmlm functions as the user ezmlm - saves
33     # lots of permissions fixups later on
34     @@ -63,6 +63,47 @@
35     # XXX The permissions should be in the RPM spec file - just fix it for now
36     esmith::util::chownFile("ezmlm", "ezmlm", $ownerHome);
37    
38     +
39     +if ( $event eq "smeserver-ezmlm-web-update" )
40     +{
41     + my $ezmlm = new Mail::Ezmlm;
42     + # check default hostname
43     + my $thisdomain = $ezmlm->_getdefaultdomain;
44     + # fix perms
45     + my $listHomeBase="$ownerHome/lists";
46     + opendir(DIR, $listHomeBase)|| die "can't opendir $listHomeBase: $!";
47     + foreach my $listName ( grep { not /^\./ and -d "$listHomeBase/$_" } readdir(DIR) )
48     + {
49     + next unless $accounts->get($listName);
50     + my $listHost=$accounts->get($listName)->prop("Domain");
51     + my $listHome="$listHomeBase/$listName";
52     + my $dotQmail = ".qmail-${listName}";
53     + my $listAlias = "${ownerHome}/${dotQmail}";
54     + # fix file perms
55     + fixperms($listHost,$thisdomain,$listHome,$listName);
56     + # fix list version
57     + if (-f "$listHome/flags")
58     + {
59     + $ezmlm->setlist("$listHome");
60     + my $flags = $ezmlm->_getconfig_idx5();
61     + $flags =~ s/[CV]//ig;
62     + print "$flags\n";
63     + $ezmlm->update($flags);# or die $ezmlm->error();
64     + }
65     + }
66     + # delete broken .qmail links
67     + opendir(DIR, $ownerHome)|| die "can't opendir $ownerHome: $!";
68     + foreach my $link (readdir DIR) {
69     + next unless -l "$ownerHome/$link" and not -e readlink("$ownerHome/$link");
70     + print "Removing broken link $link\n";
71     + unlink "$ownerHome/$link" or die "Can't delete '$link': $!";;
72     + closedir(DIR);
73     + }
74     +
75     + exit 0
76     +}
77     +
78     +
79     $> = $pw->uid;
80     $) = $pw->gid;
81    
82     @@ -104,32 +145,85 @@
83     elsif ( $event eq "mailinglist-delete" )
84     {
85     # Remove the .qmail files for this list
86     - find(\&deleteWanted, $ownerHome);
87     -
88     + #$> = 0;
89     + #$) = 0;
90     + for ( readdir(DIR) )
91     + {
92     + unlink "$ownerHome/$_" if /^$dotQmail$/ ||
93     + /^$dotQmail-accept-default$/ ||
94     + /^$dotQmail-default$/ ||
95     + /^$dotQmail-digest-owner$/ ||
96     + /^$dotQmail-digest-return-default$/ ||
97     + /^$dotQmail-owner$/ ||
98     + /^$dotQmail-reject-default$/ ||
99     + /^$dotQmail-return-default$/;
100     + }
101     + closedir(DIR);
102     # And the list management directory
103     system( '/bin/rm', '-rf', $listHome ) ==0 or
104     die "Couldn't remove list directory $listHome";
105     }
106     +elsif ( $event eq "mailinglist-modify" )
107     +{
108     + my $ezmlm = new Mail::Ezmlm;
109     + # check default hostname
110     + my $thisdomain = $ezmlm->_getdefaultdomain;
111     + # update /create inlocal if needed.
112     + $> = 0;
113     + $) = 0;
114     + fixperms($listHost,$thisdomain,$listHome,$listName);
115     +
116     +}
117     else
118     {
119     die "Couldn't work out function to call for $0";
120     }
121    
122     -#----------------------------------------------------------------------
123     -# Called by File::Find
124     -#----------------------------------------------------------------------
125     -sub deleteWanted
126     +#==============================================================
127     +# fix ml perms and needed files
128     +#==============================================================
129     +our @content;
130     +our $search="";
131     +sub fixperms
132     {
133     - return unless
134     - /^$dotQmail$/ ||
135     - /^$dotQmail-accept-default$/ ||
136     - /^$dotQmail-default$/ ||
137     - /^$dotQmail-digest-owner$/ ||
138     - /^$dotQmail-digest-return-default$/ ||
139     - /^$dotQmail-owner$/ ||
140     - /^$dotQmail-reject-default$/ ||
141     - /^$dotQmail-return-default$/;
142     -
143     - unlink($_) || die "Couldn't unlink($_)";
144     + my $listHost = shift;
145     + my $thisdomain = shift;
146     + my $listHome = shift;
147     + my $listName = shift;
148     +
149     + if ( "$listHost" ne "$thisdomain")
150     + {
151     + open(INLOCAL, ">$listHome/inlocal");
152     + print INLOCAL "$listName\n";
153     + close INLOCAL;
154     + }
155     + # check all file in folder are "ezmlm", "admin"
156     + my @readread= qw(archnum inlocal mimeremove num prefix webnames);
157     + opendir(DIR, $listHome) || die "can't opendir $listHome: $!";
158     + for $a ( grep { not /^\./ } readdir(DIR) )
159     + {
160     + esmith::util::chownFile("ezmlm", "admin", "$listHome/$a");
161     + if ( -d "$listHome/$a" )
162     + {
163     + chmod 0700, "$listHome/$a";
164     + }
165     + elsif ( $a ~~ @readread)
166     + {
167     + chmod 0644, "$listHome/$a";
168     + }
169     + else
170     + {
171     + chmod 0600, "$listHome/$a";
172     + }
173     + }
174     + closedir DIR;
175     + # all archives subfolder and files "ezmlm", "ezmlm"
176     + @content=();
177     + $search="$listHome/archive"; find( \&wanted, $search);
178     + $search="$listHome/bounce"; find( \&wanted, $search);
179     + map {esmith::util::chownFile("ezmlm","ezmlm",$_) } @content;
180     +}
181     +sub wanted {
182     + push @content, $File::Find::name unless $File::Find::name eq $search;
183     + return;
184     }
185     -
186     diff -Nur --no-dereference smeserver-ezmlm-web-1.1.3.old/root/etc/e-smith/web/functions/mailinglists smeserver-ezmlm-web-1.1.3/root/etc/e-smith/web/functions/mailinglists
187     --- smeserver-ezmlm-web-1.1.3.old/root/etc/e-smith/web/functions/mailinglists 2022-03-20 02:09:58.725000000 -0400
188     +++ smeserver-ezmlm-web-1.1.3/root/etc/e-smith/web/functions/mailinglists 2022-03-20 02:20:41.660000000 -0400
189     @@ -49,6 +49,8 @@
190     sub performDeleteList ($);
191     sub performWebusersList ($);
192     sub webusersList ($);
193     +sub archivesConfig ($);
194     +sub performArchiveModify ($);
195    
196     BEGIN
197     {
198     @@ -117,6 +119,15 @@
199     webusersList ($q);
200     }
201    
202     +elsif ($q->param ('state') eq "archives")
203     +{
204     + archivesConfig ($q);
205     +}
206     +
207     +elsif ($q->param ('state') eq "performArchiveModify")
208     +{
209     + performArchiveModify ($q)
210     +}
211    
212     elsif ($q->param ('state') eq "performWebusers")
213     {
214     @@ -186,6 +197,7 @@
215     esmith::cgi::genSmallCell ($q, $q->b ('Description')),
216     $q->td ('&nbsp;'),
217     $q->td ('&nbsp;'),
218     + $q->td ('&nbsp;'),
219     $q->td ('&nbsp;')
220     );
221    
222     @@ -210,6 +222,12 @@
223     'Webusers...')),
224    
225     esmith::cgi::genSmallCell ($q,
226     + $q->a ( { href => $q->url (-absolute => 1) .
227     + "?state=archives&list=" .
228     + $list->key },
229     + 'Archives...')),
230     +
231     + esmith::cgi::genSmallCell ($q,
232     $q->a ({href => $q->url (-absolute => 1)
233     . "?state=delete&list="
234     . $list->key}, 'Remove...'))
235     @@ -255,6 +273,170 @@
236     #------------------------------------------------------------
237     #
238     #------------------------------------------------------------
239     +sub archivesConfig ($)
240     +{
241     + my ($q) = @_;
242     + my $members = "";
243     + my $listName = $q->param ('list');
244     + esmith::cgi::genHeaderNonCacheable
245     + ($q, undef, 'Manage Archives Display for ezmlm-www for the following mailinglist: '. $listName );
246     +
247     + print $q->startform (-method => 'POST',
248     + -action => $q->url (-absolute => 1));
249     +
250     + if ($listName eq "ALL") {
251     + return 0
252     + }
253     + elsif ($listName eq "ALLOW_CREATE") {
254     + return 0
255     + }
256     + return unless $accounts->get($listName);
257     + my $DisplayArchives = $accounts->get($listName)->prop('DisplayArchives') || 'disabled';
258     + my $conceal_senders = $accounts->get($listName)->prop('conceal_senders') || 'enabled';
259     + my $Description = $accounts->get($listName)->prop('Description') || '';
260     + my $default_sorting = $accounts->get($listName)->prop('default_sorting') || 'thread';
261     + my $show_html = $accounts->get($listName)->prop('show_html') || 'enabled';
262     + my $highlight = $accounts->get($listName)->prop('highlight') || 'enabled';
263     + my $show_inline_images = $accounts->get($listName)->prop('show_inline_images') || 'enabled';
264     + my $subscription_info = $accounts->get($listName)->prop('subscription_info') || 'disabled';
265     + my $descending_by_default = $accounts->get($listName)->prop('descending_by_default') || 'enabled';
266     + my $search = $accounts->get($listName)->prop('search') || 'disabled';
267     + my @sorting = qw(thread date subject);
268     + my @yesno = qw(enabled disabled);
269     +
270     + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
271     +
272     + esmith::cgi::genTextRow ($q,
273     +
274     + $q->p ('The list name should contain only lower-case',
275     + 'letters, numbers, and hyphens and must start with ',
276     + 'a lower-case',
277     + 'letter. For example "betty", "hjohnson", and "abc-12" are',
278     + 'all valid account names, but "3friends", "John Smith"',
279     + 'and "Henry-Miller" are not.') . ' ' ),
280     +
281     + esmith::cgi::genWidgetRow ($q,
282     + "Display archives",
283     + $q->popup_menu (-name => 'DisplayArchives',
284     + -values => \@yesno,
285     + -default => $DisplayArchives)),
286     + esmith::cgi::genNameValueRow ($q,
287     + "Brief description",
288     + "Description",
289     + "$Description"),
290     + esmith::cgi::genWidgetRow ($q,
291     + "Conceal senders",
292     + $q->popup_menu (-name => 'conceal_senders',
293     + -values => \@yesno,
294     + -default => $conceal_senders)),
295     + esmith::cgi::genWidgetRow ($q,
296     + "Show HTML",
297     + $q->popup_menu (-name => 'show_html',
298     + -values => \@yesno,
299     + -default => $show_html)),
300     + esmith::cgi::genWidgetRow ($q,
301     + "Highlight parts of messages such as replies, signatures, URLs",
302     + $q->popup_menu (-name => 'highlight',
303     + -values => \@yesno,
304     + -default => $highlight)),
305     + esmith::cgi::genWidgetRow ($q,
306     + "Display inline images",
307     + $q->popup_menu (-name => 'show_inline_images',
308     + -values => \@yesno,
309     + -default => $show_inline_images)),
310     + esmith::cgi::genWidgetRow ($q,
311     + "Display subscription information",
312     + $q->popup_menu (-name => 'subscription_info',
313     + -values => \@yesno,
314     + -default => $subscription_info)),
315     + esmith::cgi::genWidgetRow ($q,
316     + "Default sorting of list",
317     + $q->popup_menu (-name => 'default_sorting',
318     + -values => \@sorting,
319     + -default => $default_sorting)),
320     + esmith::cgi::genWidgetRow ($q,
321     + "Sorting descending by default",
322     + $q->popup_menu (-name => 'descending_by_default',
323     + -values => \@yesno,
324     + -default => $descending_by_default)),
325     +
326     + esmith::cgi::genWidgetRow ($q,
327     + "Display search box (need search indexing)",
328     + $q->popup_menu (-name => 'search',
329     + -values => \@yesno,
330     + -default => $search)),
331     +
332     +
333     +
334     + esmith::cgi::genButtonRow ($q,
335     + $q->submit (-name => 'action',
336     + -value => 'Create')));
337     +
338     + print '</table>';
339     +
340     + print $q->hidden (-name => 'list',
341     + -override => 1,
342     + -default => $listName);
343     +
344     + print $q->hidden (-name => 'state',
345     + -override => 1,
346     + -default => 'performArchiveModify');
347     +
348     + print $q->endform;
349     +
350     + esmith::cgi::genFooter ($q);
351     + return;
352     +
353     +}
354     +
355     +#------------------------------------------------------------
356     +#
357     +#------------------------------------------------------------
358     +sub performArchiveModify ($)
359     +{
360     + my $q = shift;
361     +
362     + my $listName = $q->param('list');
363     + # Untaint groupName before use in system()
364     + ($listName) = ($listName =~ /^([a-zA-Z][\-\_\.a-zA-Z0-9]*)$/);
365     + my %sorting = qw(thread thread
366     + date date
367     + subject subject);
368     + my %yesno = qw(enabled enabled
369     + disabled disabled);
370     +
371     + my $DisplayArchives = $yesno{$q->param('DisplayArchives')}||""; #;
372     + $accounts->get($listName)->set_prop('DisplayArchives', $DisplayArchives) unless $DisplayArchives eq "";
373     + my $conceal_senders = $yesno{$q->param('conceal_senders')}||"";
374     + $accounts->get($listName)->set_prop('conceal_senders',$conceal_senders) unless $conceal_senders eq "";
375     + my $Description = $q->param('Description')||"";
376     + ($Description) = ($Description=~ /^([a-zA-Z][\-_.a-zA-Z0-9 ]*)$/);
377     + $accounts->get($listName)->set_prop('Description',$Description) unless $Description eq "";
378     + my $default_sorting = $sorting{$q->param('default_sorting')}||"";
379     + $accounts->get($listName)->set_prop('default_sorting',$default_sorting) unless $default_sorting eq "";;
380     + my $show_html = $yesno{$q->param('show_html')}||"";
381     + $accounts->get($listName)->set_prop('show_html', $show_html) unless $show_html eq "";
382     + my $highlight = $yesno{$q->param('highlight')}||"";
383     + $accounts->get($listName)->set_prop('highlight',$highlight ) unless $highlight eq "";
384     + my $show_inline_images = $yesno{$q->param('show_inline_images')}||"";
385     + $accounts->get($listName)->set_prop('show_inline_images', $show_inline_images) unless $show_inline_images eq "";
386     + my $subscription_info = $yesno{$q->param('subscription_info')}||"";
387     + $accounts->get($listName)->set_prop('subscription_info', $subscription_info) unless $subscription_info eq "";
388     + my $descending_by_default = $yesno{$q->param('descending_by_default')}||"";
389     + $accounts->get($listName)->set_prop('descending_by_default',$descending_by_default ) unless $descending_by_default eq "";
390     + my $search = $yesno{$q->param('search')}||"";
391     + $accounts->get($listName)->set_prop('search', $search ) unless $search eq "";
392     +
393     + return ( system ('/sbin/e-smith/signal-event', 'mailinglist-modify', $listName) == 0 ) ?
394     + showInitial ($q, "Error: updating Archive for $listName") : showInitial ($q, "Successfully updated Archive for $listName.");
395     + #return;
396     +
397     +
398     +}
399     +
400     +#------------------------------------------------------------
401     +#
402     +#------------------------------------------------------------
403     sub webusersList ($)
404     {
405     my ($q) = @_;
406     @@ -474,8 +656,7 @@
407    
408     my $listOwner = $q->param ('listOwner');
409     $listOwner = "admin" if ($listOwner eq "Administrator");
410     - my @users = sort { $a->key() cmp $b->key() } ( $accounts->users() , $accounts->get('admin') );
411     -
412     + my $webusers = ($listOwner eq "admin") ? $listOwner : "admin,$listOwner";
413     #------------------------------------------------------------
414     # Looks good. Find out if this account has been taken
415     #------------------------------------------------------------
416     @@ -499,7 +680,7 @@
417     Domain => $listDomain,
418     Description => $listDescription,
419     Owner => $listOwner,
420     - webusers => $webusers,
421     + webusers => $webusers,
422     } );
423    
424     system ('/sbin/e-smith/signal-event', 'mailinglist-create', $listName) == 0

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed