1 |
diff -Nur -x '*.orig' -x '*.rej' smeserver-ezmlm-web-1.1.2/createlinks mezzanine_patched_smeserver-ezmlm-web-1.1.2/createlinks |
2 |
--- smeserver-ezmlm-web-1.1.2/createlinks 2005-10-24 20:42:33.000000000 -0400 |
3 |
+++ mezzanine_patched_smeserver-ezmlm-web-1.1.2/createlinks 2006-02-17 16:20:54.000000000 -0500 |
4 |
@@ -1,15 +1,6 @@ |
5 |
#!/usr/bin/perl -w |
6 |
|
7 |
-sub panel_link |
8 |
-{ |
9 |
- my ($function, $panel) = @_; |
10 |
- |
11 |
- unlink "root/etc/e-smith/web/panels/$panel/cgi-bin/$function"; |
12 |
- symlink("../../../functions/$function", |
13 |
- "root/etc/e-smith/web/panels/$panel/cgi-bin/$function") |
14 |
- or die "Can't symlink to root/etc/e-smith/web/panels/$panel". |
15 |
- "/cgi-bin/$function: $!"; |
16 |
-} |
17 |
+use esmith::Build::CreateLinks qw(:all); |
18 |
|
19 |
#-------------------------------------------------- |
20 |
# functions for manager panel |
21 |
@@ -18,32 +9,19 @@ |
22 |
|
23 |
panel_link("mailinglists", $panel); |
24 |
|
25 |
-sub event_link |
26 |
-{ |
27 |
- my ($action, $event, $level) = @_; |
28 |
- |
29 |
- unlink "root/etc/e-smith/events/${event}/S${level}${action}"; |
30 |
- symlink("../actions/${action}", |
31 |
- "root/etc/e-smith/events/${event}/S${level}${action}") |
32 |
- or die "Can't symlink to root/etc/e-smith/events/${event}/S${level}${action}:". |
33 |
- " $!"; |
34 |
-} |
35 |
- |
36 |
-#-------------------------------------------------- |
37 |
-# actions for bootstrap-console-save event |
38 |
-#-------------------------------------------------- |
39 |
-# my $event = "bootstrap-console-save"; |
40 |
- |
41 |
-#event_link("xxx-conf", $event, "60"); |
42 |
- |
43 |
foreach my $event ( qw(create delete modify) ) |
44 |
{ |
45 |
- event_link("ezmlm-conf", "mailinglist-${event}", "10"); |
46 |
event_link("ezmlm-update", "mailinglist-${event}", "60"); |
47 |
- event_link("email-assign", "mailinglist-${event}", "90"); |
48 |
+ templates2events("/var/qmail/users/assign", $event); |
49 |
+ safe_symlink("/var/qmail/bin/qmail-newu", |
50 |
+ "root/etc/e-smith/events/$event/S55email-assign"); |
51 |
} |
52 |
|
53 |
-foreach my $event ( qw(bootstrap-console-save email-update) ) |
54 |
-{ |
55 |
- event_link("ezmlm-conf", "email-update", "90"); |
56 |
-} |
57 |
+templates2events("/etc/ezmlm/ezmlmwebrc", |
58 |
+ qw( |
59 |
+ bootstrap-console-save |
60 |
+ email-update |
61 |
+ mailinglist-create |
62 |
+ mailinglist-update |
63 |
+ mailinglist-assign |
64 |
+ )); |
65 |
diff -Nur -x '*.orig' -x '*.rej' smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-conf mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-conf |
66 |
--- smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-conf 2005-10-24 20:42:33.000000000 -0400 |
67 |
+++ mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-conf 1969-12-31 19:00:00.000000000 -0500 |
68 |
@@ -1,34 +0,0 @@ |
69 |
-#!/usr/bin/perl -w |
70 |
-#---------------------------------------------------------------------- |
71 |
-# copyright (C) 2000 Gormand Pty Ltd |
72 |
-# copyright (C) 2001 Mitel Networks Corporation |
73 |
-# |
74 |
-# This program is free software; you can redistribute it and/or modify |
75 |
-# it under the terms of the GNU General Public License as published by |
76 |
-# the Free Software Foundation; either version 2 of the License, or |
77 |
-# (at your option) any later version. |
78 |
-# |
79 |
-# This program is distributed in the hope that it will be useful, |
80 |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of |
81 |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
82 |
-# GNU General Public License for more details. |
83 |
-# |
84 |
-# You should have received a copy of the GNU General Public License |
85 |
-# along with this program; if not, write to the Free Software |
86 |
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
87 |
-# |
88 |
-# Technical support for this program is available from Mitel Networks |
89 |
-# Please visit our web site www.e-smith.com for details. |
90 |
-#---------------------------------------------------------------------- |
91 |
-package esmith; |
92 |
- |
93 |
-use strict; |
94 |
-use Errno; |
95 |
-use esmith::config; |
96 |
-use esmith::util; |
97 |
- |
98 |
-tie my %conf, 'esmith::config'; |
99 |
- |
100 |
-esmith::util::processTemplate(\%conf, "/etc/ezmlm/ezmlmwebrc"); |
101 |
- |
102 |
-exit (0); |
103 |
diff -Nur -x '*.orig' -x '*.rej' smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-update mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-update |
104 |
--- smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-update 2006-02-17 17:04:08.000000000 -0500 |
105 |
+++ mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/events/actions/ezmlm-update 2006-02-17 16:44:04.000000000 -0500 |
106 |
@@ -1,7 +1,7 @@ |
107 |
#!/usr/bin/perl -w |
108 |
#---------------------------------------------------------------------- |
109 |
# copyright (C) 2000-2002 Gormand Pty Ltd |
110 |
-# copyright (C) 2002 Mitel Networks Corporation |
111 |
+# copyright (C) 2002,2006 Mitel Networks Corporation |
112 |
# |
113 |
# This program is free software; you can redistribute it and/or modify |
114 |
# it under the terms of the GNU General Public License as published by |
115 |
@@ -17,24 +17,22 @@ |
116 |
# along with this program; if not, write to the Free Software |
117 |
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
118 |
# |
119 |
-# Technical support for this program is available from Mitel Networks |
120 |
-# Please visit our web site www.mitel.com/sme/ for details. |
121 |
#---------------------------------------------------------------------- |
122 |
package esmith; |
123 |
|
124 |
use strict; |
125 |
use Errno; |
126 |
-use esmith::config; |
127 |
+use esmith::ConfigDB; |
128 |
+use esmith::AccountsDB; |
129 |
use esmith::util; |
130 |
-use esmith::db; |
131 |
|
132 |
use File::Find; |
133 |
use User::pwent; |
134 |
|
135 |
use Mail::Ezmlm; |
136 |
|
137 |
-tie my %conf, 'esmith::config'; |
138 |
-tie my %accounts, 'esmith::config', '/home/e-smith/db/accounts'; |
139 |
+my $conf = esmith::ConfigDB->open; |
140 |
+my $accounts = esmith::AccountsDB->open; |
141 |
|
142 |
my $event = $ARGV [0]; |
143 |
die "event argument missing." unless defined ($event); |
144 |
@@ -53,7 +51,8 @@ |
145 |
-s /bin/false ezmlm)) == 0 |
146 |
or warn("Could not create user 'ezmlm'\n"); |
147 |
|
148 |
- db_set(\%accounts, "ezmlm", "system", { Uid => "80", Gid => "80" } ); |
149 |
+ $accounts->new_record("ezmlm", "system", { Uid => "80", Gid => "80" } ); |
150 |
+ unless ($accounts->get("ezmlm")); |
151 |
} |
152 |
|
153 |
my $pw = getpwnam("ezmlm") or die "User ezmlm not found"; |
154 |
@@ -67,10 +66,11 @@ |
155 |
$> = $pw->uid; |
156 |
$) = $pw->gid; |
157 |
|
158 |
+my $list = $accounts->get($listName) or die "$listName not found in accounts db"; |
159 |
die "$listName is not a mailing list account." |
160 |
- unless (db_get_type(\%accounts, $listName) eq "mailinglist"); |
161 |
+ unless ($list->prop('type') eq "mailinglist"); |
162 |
|
163 |
-my $listHost = db_get_prop(\%accounts, $listName, "Domain"); |
164 |
+my $listHost = $list->prop("Domain"); |
165 |
|
166 |
my $listHomeBase = "${ownerHome}/lists"; |
167 |
|
168 |
@@ -86,7 +86,7 @@ |
169 |
{ |
170 |
my $list = new Mail::Ezmlm; |
171 |
|
172 |
- my $listOwner = db_get_prop(\%accounts, $listName, "Owner"); |
173 |
+ my $listOwner = $list->prop("Owner"); |
174 |
|
175 |
$list->make(-dir => $listHome, |
176 |
-qmail => $listAlias, |
177 |
diff -Nur -x '*.orig' -x '*.rej' smeserver-ezmlm-web-1.1.2/root/etc/e-smith/templates/var/qmail/users/assign/90mailinglists mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/templates/var/qmail/users/assign/90mailinglists |
178 |
--- smeserver-ezmlm-web-1.1.2/root/etc/e-smith/templates/var/qmail/users/assign/90mailinglists 2006-02-17 17:04:08.000000000 -0500 |
179 |
+++ mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/templates/var/qmail/users/assign/90mailinglists 2006-02-17 16:37:36.000000000 -0500 |
180 |
@@ -1,15 +1,14 @@ |
181 |
{ |
182 |
- use esmith::config; |
183 |
- use esmith::db; |
184 |
+ use esmith::AccountsDB; |
185 |
|
186 |
$OUT = ''; |
187 |
|
188 |
# Generate qmail user assignments for mailing lists. These will be handled |
189 |
# by ~ezmlm/.qmail-listname and ~ezmlm/.qmail-listname-ext. |
190 |
|
191 |
- my %accounts; |
192 |
- tie %accounts, 'esmith::config', "/home/e-smith/db/accounts"; |
193 |
+ my $adb = esmith::AccountsDB->open_ro; |
194 |
|
195 |
+ setpwent; |
196 |
my (undef, undef, $uid, $gid, undef, undef, undef, $dir, undef) |
197 |
= getpwnam("ezmlm"); |
198 |
|
199 |
@@ -32,9 +31,9 @@ |
200 |
|
201 |
my $ezmlm_assign = "ezmlm:${uid}:${gid}:${dir}"; |
202 |
|
203 |
- foreach my $listname (db_get(\%accounts)) |
204 |
+ foreach my $list ($adb->get_all_by_prop(type => "mailinglist")) |
205 |
{ |
206 |
- next unless db_get_type(\%accounts, $listname) eq "mailinglist"; |
207 |
+ my $listname = $list->key; |
208 |
|
209 |
# Assign mail for listname@ |
210 |
$OUT .= "=${listname}:${ezmlm_assign}:-:${listname}:\n"; |
211 |
@@ -42,15 +41,4 @@ |
212 |
# Assign mail for listname-ext@ |
213 |
$OUT .= "+${listname}-:${ezmlm_assign}:-${listname}-::\n"; |
214 |
} |
215 |
- |
216 |
- # Need to remove the final newline character. Blank lines in |
217 |
- # /var/qmail/users/assign are prohibited. |
218 |
- |
219 |
- chomp($OUT); |
220 |
- |
221 |
- # Failsafe: /var/qmail/users/assign cannot have blank lines. |
222 |
- # Therefore, if $OUT is empty, simply set up an assign for the |
223 |
- # ezmlm user. |
224 |
- |
225 |
- $OUT = "=ezmlm:${ezmlm_assign}:::" unless $OUT; |
226 |
} |
227 |
diff -Nur -x '*.orig' -x '*.rej' smeserver-ezmlm-web-1.1.2/root/etc/e-smith/web/functions/mailinglists mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/web/functions/mailinglists |
228 |
--- smeserver-ezmlm-web-1.1.2/root/etc/e-smith/web/functions/mailinglists 2006-02-17 17:04:08.000000000 -0500 |
229 |
+++ mezzanine_patched_smeserver-ezmlm-web-1.1.2/root/etc/e-smith/web/functions/mailinglists 2006-02-17 17:02:57.000000000 -0500 |
230 |
@@ -6,7 +6,7 @@ |
231 |
# navigation : 3000 3600 |
232 |
# |
233 |
# copyright (C) 2000 Gormand Pty Ltd |
234 |
-# copyright (C) 2001 Mitel Networks Corporation |
235 |
+# copyright (C) 2001,2006 Mitel Networks Corporation |
236 |
# |
237 |
# This program is free software; you can redistribute it and/or modify |
238 |
# it under the terms of the GNU General Public License as published by |
239 |
@@ -22,8 +22,8 @@ |
240 |
# along with this program; if not, write to the Free Software |
241 |
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
242 |
# |
243 |
-# Technical support for this program is available from Mitel Networks |
244 |
-# Please visit our web site www.e-smith.com for details. |
245 |
+# Technical support for this program is available from Gorman Pty Ltd |
246 |
+# Please visit our web site www.gormand.com.au for contact details. |
247 |
#---------------------------------------------------------------------- |
248 |
|
249 |
package esmith; |
250 |
@@ -33,9 +33,10 @@ |
251 |
use CGI::Carp qw(fatalsToBrowser); |
252 |
|
253 |
use esmith::cgi; |
254 |
-use esmith::config; |
255 |
+use esmith::ConfigDB; |
256 |
+use esmith::AccountsDB; |
257 |
+use esmith::DomainsDB; |
258 |
use esmith::util; |
259 |
-use esmith::db; |
260 |
use User::pwent; |
261 |
|
262 |
sub showInitial ($$); |
263 |
@@ -65,14 +66,9 @@ |
264 |
|
265 |
use constant EZMLMWEB => '/common/ezmlm-web'; |
266 |
|
267 |
-my %conf; |
268 |
-tie %conf, 'esmith::config'; |
269 |
- |
270 |
-my %accounts; |
271 |
-tie %accounts, 'esmith::config', '/home/e-smith/db/accounts'; |
272 |
- |
273 |
-my %domains; |
274 |
-tie %domains, 'esmith::config', '/home/e-smith/db/domains'; |
275 |
+my $conf = esmith::ConfigDB->open; |
276 |
+my $accounts = esmith::AccountsDB->open; |
277 |
+my $domains = esmith::DomainsDB->open; |
278 |
|
279 |
#------------------------------------------------------------ |
280 |
# examine state parameter and display the appropriate form |
281 |
@@ -115,7 +111,7 @@ |
282 |
} |
283 |
else |
284 |
{ |
285 |
- esmith::cgi::genStateError ($q, \%conf); |
286 |
+ esmith::cgi::genStateError ($q, undef); |
287 |
} |
288 |
|
289 |
exit (0); |
290 |
@@ -136,12 +132,12 @@ |
291 |
if ($msg eq '') |
292 |
{ |
293 |
esmith::cgi::genHeaderNonCacheable |
294 |
- ($q, \%conf, 'Create, remove, or modify mailing lists'); |
295 |
+ ($q, undef, 'Create, remove, or modify mailing lists'); |
296 |
} |
297 |
else |
298 |
{ |
299 |
esmith::cgi::genHeaderNonCacheable |
300 |
- ($q, \%conf, 'Operation status report'); |
301 |
+ ($q, undef, 'Operation status report'); |
302 |
|
303 |
print $q->p ($msg); |
304 |
print $q->hr; |
305 |
@@ -151,9 +147,7 @@ |
306 |
# Look up current lists |
307 |
#------------------------------------------------------------ |
308 |
|
309 |
- my @mailingLists = |
310 |
- grep { db_get_type(\%accounts, $_) eq "mailinglist" } |
311 |
- keys %accounts; |
312 |
+ my @mailingLists = $accounts->get_all_by_prop('type' => 'mailinglist'); |
313 |
|
314 |
print $q->p ($q->a ({href => $q->url (-absolute => 1) . "?state=create"}, |
315 |
'Click here'), |
316 |
@@ -180,12 +174,12 @@ |
317 |
$q->td (' ') |
318 |
); |
319 |
|
320 |
- foreach my $list (sort @mailingLists) |
321 |
+ foreach my $list (@mailingLists) |
322 |
{ |
323 |
- my $domain = db_get_prop(\%accounts, $list, 'Domain'); |
324 |
- my $description = db_get_prop(\%accounts, $list, 'Description'); |
325 |
+ my $domain = $list->prop('Domain'); |
326 |
+ my $description = $list->prop('Description'); |
327 |
|
328 |
- print $q->Tr ( esmith::cgi::genSmallCell ($q, $list), |
329 |
+ print $q->Tr ( esmith::cgi::genSmallCell ($q, $list->key), |
330 |
esmith::cgi::genSmallCell ($q, $domain), |
331 |
esmith::cgi::genSmallCell ($q, $description), |
332 |
esmith::cgi::genSmallCell ($q, |
333 |
@@ -196,7 +190,7 @@ |
334 |
esmith::cgi::genSmallCell ($q, |
335 |
$q->a ({href => $q->url (-absolute => 1) |
336 |
. "?state=delete&list=" |
337 |
- . $list}, 'Remove...')) |
338 |
+ . $list->key}, 'Remove...')) |
339 |
); |
340 |
} |
341 |
|
342 |
@@ -214,19 +208,14 @@ |
343 |
my ($q) = @_; |
344 |
|
345 |
esmith::cgi::genHeaderNonCacheable |
346 |
- ($q, \%conf, 'Create a new mailing list'); |
347 |
+ ($q, undef, 'Create a new mailing list'); |
348 |
|
349 |
print $q->startform (-method => 'POST', |
350 |
-action => $q->url (-absolute => 1)); |
351 |
|
352 |
- my @existingDomains = ( db_get(\%conf, "DomainName"), |
353 |
- grep { db_get_type(\%domains, $_) eq "domain" } |
354 |
- keys %domains |
355 |
- ); |
356 |
- |
357 |
- my @existingAccounts = ( "Administrator", |
358 |
- grep { db_get_type(\%accounts, $_) eq "user" } |
359 |
- keys %accounts ); |
360 |
+ my @existingDomains = map { $_->key } $domains->domains; |
361 |
+ |
362 |
+ my @existingAccounts = ( "Administrator", map { $_->key } $accounts->users ); |
363 |
|
364 |
print $q->table ({border => 0, cellspacing => 0, cellpadding => 4}, |
365 |
|
366 |
@@ -327,11 +316,12 @@ |
367 |
#------------------------------------------------------------ |
368 |
# Looks good. Find out if this account has been taken |
369 |
#------------------------------------------------------------ |
370 |
- if ( defined db_get_type(\%accounts, $listName) ) |
371 |
+ my $list = $accounts->get($listName); |
372 |
+ if ($list) |
373 |
{ |
374 |
showInitial ($q, |
375 |
"Error: account \"$listName\" is an existing " . |
376 |
- db_get_type(\%accounts, $listName) . " account."); |
377 |
+ $list->prop('type') . " account."); |
378 |
return; |
379 |
} |
380 |
|
381 |
@@ -340,8 +330,10 @@ |
382 |
# mailinglist-create event. |
383 |
#------------------------------------------------------------ |
384 |
|
385 |
- db_set( \%accounts, $listName, "mailinglist", |
386 |
- { Domain => $listDomain, |
387 |
+ $accounts->new_record($listName, |
388 |
+ { |
389 |
+ type => 'mailinglist', |
390 |
+ Domain => $listDomain, |
391 |
Description => $listDescription, |
392 |
Owner => $listOwner, |
393 |
} ); |
394 |
@@ -360,16 +352,17 @@ |
395 |
{ |
396 |
my ($q) = @_; |
397 |
|
398 |
- esmith::cgi::genHeaderNonCacheable ($q, \%conf, 'Remove mailing list'); |
399 |
+ esmith::cgi::genHeaderNonCacheable ($q, undef, 'Remove mailing list'); |
400 |
|
401 |
print $q->startform |
402 |
(-method => 'POST', -action => $q->url (-absolute => 1)); |
403 |
|
404 |
- my $list = $q->param ('list'); |
405 |
+ my $listName = $q->param ('list'); |
406 |
|
407 |
- if ( defined db_get(\%accounts, $list) ) |
408 |
+ my $list = $accounts->get($listName); |
409 |
+ if ($list) |
410 |
{ |
411 |
- print $q->p ("You are about to remove the mailing list \"$list\""); |
412 |
+ print $q->p ("You are about to remove the mailing list \"$listName\""); |
413 |
|
414 |
print $q->p ('The mailing list address will no longer be usable', |
415 |
'and current items and the list archives will be removed'); |
416 |
@@ -377,7 +370,7 @@ |
417 |
print $q->p ($q->b ('Are you sure you wish to remove this list?')); |
418 |
|
419 |
print $q->submit (-name => 'action', -value => 'Remove'); |
420 |
- print $q->hidden (-name => 'list', -override => 1, -default => $list); |
421 |
+ print $q->hidden (-name => 'list', -override => 1, -default => $listName); |
422 |
|
423 |
print $q->hidden (-name => 'state', |
424 |
-override => 1, |
425 |
@@ -400,13 +393,14 @@ |
426 |
#------------------------------------------------------------ |
427 |
# Attempt to delete list |
428 |
#------------------------------------------------------------ |
429 |
- my $list = $q->param ('list'); |
430 |
- |
431 |
- system ('/sbin/e-smith/signal-event', 'mailinglist-delete', $list) == 0 |
432 |
- or die ("Error occurred while deleting list.\n"); |
433 |
- |
434 |
- delete $accounts {$list}; |
435 |
- |
436 |
- showInitial ($q, "Successfully deleted mailing list $list."); |
437 |
+ my $listName = $q->param ('list'); |
438 |
+ my $list = $accounts->get($listName); |
439 |
+ if ($list) |
440 |
+ { |
441 |
+ system ('/sbin/e-smith/signal-event', 'mailinglist-delete', $listName) == 0 |
442 |
+ or die ("Error occurred while deleting list.\n"); |
443 |
+ $list->delete; |
444 |
+ showInitial ($q, "Successfully deleted mailing list $list."); |
445 |
+ } |
446 |
} |
447 |
|