ModDef.pm 14.1 KB
Newer Older
1
2
3
# -*- indent-tabs-mode: nil; -*-
# vim:ft=perl:et:sw=4
# $Id$
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Sympa - SYsteme de Multi-Postage Automatique
#
# Copyright (c) 1997, 1998, 1999 Institut Pasteur & Christophe Wolfhugel
# Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
# 2006, 2007, 2008, 2009, 2010, 2011 Comite Reseau des Universites
# Copyright (c) 2011, 2012, 2013, 2014 GIP RENATER
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

=encoding utf-8

=head1 NAME

Sympa::ModDef - Definition of dependent modules

=head1 DESCRIPTION

This module keeps definition of modules required by Sympa.

=cut

package Sympa::ModDef;

use strict;

use English qw(-no_match_vars);

## This defines the modules :
##   required_version : Minimum version of package.
##            Assume required_version = 1.0 if not specified.
##   package_name : Name of CPAN module.
##   mandatory : 1|0: if 1, the module is mandatory.  Default is 0.
##   gettext_id : Usage of this package,
##   gettext_comment : Description of prerequisites if any.

our %cpan_modules = (
    'Archive::Zip' => {
        required_version => '1.05',
        package_name     => 'Archive-Zip',
        mandatory        => 1,
        'gettext_id' =>
            'this module provides zip/unzip for archive and shared document download/upload',
    },
    'AuthCAS' => {
        required_version => '1.4',
        package_name     => 'AuthCAS',
        'gettext_id' =>
            'CAS Single Sign-On client libraries. Required if you configure Sympa to delegate web authentication to a CAS server.',
    },
    'CGI' => {
        required_version => '3.51',
        package_name     => 'CGI',
        mandatory        => 1,
        'gettext_id'     => 'required to run Sympa web interface',
    },
    # CGI::Cookie is included in CGI.
    # CGI::Fast is included in CGI.
sikeda's avatar
sikeda committed
73
74
75
76
77
78
    'Class::Singleton' => {
        required_version => '1.03',
        package_name     => 'Class-Singleton',
        mandatory        => 1,
        'gettext_id'     => 'used to construct various singleton classes.',
    },
79
80
81
82
83
84
85
86
87
88
89
90
91
    'Crypt::CipherSaber' => {
        required_version => '0.50',
        package_name     => 'Crypt-CipherSaber',
        'gettext_id' =>
            'this module provides reversible encryption of user passwords in the database.  Useful when updating from old version with password reversible encryption, or if secure session cookies in non-SSL environments are required.',
    },
    # DateTime is used by DateTime::Format::Mail.
    'DateTime::Format::Mail' => {
        required_version => '0.28',
        package_name     => 'DateTime-Format-Mail',
        mandatory        => 1,
        'gettext_id'     => 'used to decode date and time in message headers',
    },
92
93
94
95
96
97
98
     'DateTime::TimeZone' => {
        required_version => '1.10',
        package_name     => 'DateTime-TimeZone',
        mandatory        => 1,
        'gettext_id'     => 'used to decode date and time in message headers',
    },
   'DB_File' => {
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
        required_version => '1.75',
        package_name     => 'DB_File',
        mandatory        => 1,
        'gettext_id'     => 'used for maintaining snapshots of list members',
    },
    'DBD::ODBC' => {
        package_name => 'DBD-ODBC',
        'gettext_id' =>
            'ODBC database driver, required if you connect to a database via ODBC.',
    },
    'DBD::Oracle' => {
        required_version => '0.90',
        package_name     => 'DBD-Oracle',
        'gettext_id' =>
            'Oracle database driver, required if you connect to a Oracle database.',
    },
    'DBD::Pg' => {
        required_version => '2.00',
        'gettext_comment' =>
            'postgresql-devel and postgresql-server. PostgreSQL server should be running for make test to succeed',
        package_name => 'DBD-Pg',
        'gettext_id' =>
            'PostgreSQL database driver, required if you connect to a PostgreSQL database.',
    },
    'DBD::SQLite' => {
        required_version => '1.31',
        'gettext_comment' =>
            'sqlite-devel. No need to install a server, the SQLite server code being provided with the client code.',
        package_name => 'DBD-SQLite',
        'gettext_id' =>
            'SQLite database driver, required if you connect to a SQLite database.',
    },
    'DBD::Sybase' => {
        required_version => '0.90',
        package_name     => 'DBD-Sybase',
        'gettext_id' =>
            'Sybase database driver, required if you connect to a Sybase database.',
    },
    'DBD::mysql' => {
        required_version => '4.008',
        'gettext_comment' =>
            'mysql-devel and myslq-server. MySQL (or MariaDB) server should be running for make test to succeed',
        package_name => 'DBD-mysql',
        mandatory    => 1,
        'gettext_id' =>
            'MySQL / MariaDB database driver, required if you connect to a MySQL (or MariaDB) database.',
    },
    'DBI' => {
        required_version => '1.48',
        package_name     => 'DBI',
        mandatory        => 1,
        'gettext_id' =>
            'a generic Database Driver, required by Sympa to access Subscriber information and User preferences. An additional Database Driver is required for each database type you wish to connect to.',
    },
    'Digest::MD5' => {
        required_version => '2.00',
        package_name     => 'Digest-MD5',
        mandatory        => 1,
        'gettext_id'     => 'used to compute MD5 digests for passwords, etc.',
    },
    'Email::Simple' => {
        required_version => '2.100',
        package_name     => 'Email-Simple',
        mandatory        => 1,
        'gettext_id'     => 'Used for email tracking',
    },
    'Encode' => {
        package_name => 'Encode',
        mandatory    => 1,
        'gettext_id' => 'module for character encoding processing',
    },
    'Encode::Locale' => {
        required_version => '1.02',
        package_name     => 'Encode-Locale',
        'gettext_id' =>
            'Useful when running command line utilities in the console not supporting UTF-8 encoding',
    },
    'FCGI' => {
        required_version => '0.67',
        package_name     => 'FCGI',
        'gettext_id' =>
            "WWSympa, Sympa's web interface can run as a FastCGI (i.e. a persistent CGI). If you install this module, you will also need to install the associated FastCGI frontend, e.g. mod_fcgid for Apache.",
    },
    'File::Copy::Recursive' => {
        required_version => '0.36',
        package_name     => 'File-Copy-Recursive',
        mandatory        => 1,
        'gettext_id'     => 'used to copy file hierarchies',
    },
    'File::NFSLock' => {
        package_name => 'File-NFSLock',
        mandatory    => 1,
        'gettext_id' => 'required to perform NFS-safe file locking',
    },
    'HTML::FormatText' => {
        package_name => 'HTML-Format',
        mandatory    => 1,
        'gettext_id' => 'used to compute plaindigest messages from HTML',
    },
    'HTML::StripScripts::Parser' => {
        required_version => '1.03',
        package_name     => 'HTML-StripScripts-Parser',
        mandatory        => 1,
        'gettext_id' => 'required for XSS protection on the web interface',
    },
    'HTML::TreeBuilder' => {
        package_name => 'HTML-Tree',
        mandatory    => 1,
        'gettext_id' => 'used to compute plaindigest messages from HTML',
    },
    'IO::File' => {
        required_version => '1.10',
        package_name     => 'IO',
        mandatory        => 1,
        'gettext_id'     => 'internal use for filehandle processing',
    },
    'IO::Scalar' => {
        package_name => 'IO-stringy',
        mandatory    => 1,
        'gettext_id' => 'internal use for string processing',
    },
    'IO::Socket::SSL' => {
        required_version => '0.90',
        package_name     => 'IO-Socket-SSL',
        'gettext_id' => 'required when including members of a remote list',
    },
    # Net::SSLeay is included in IO-Socket-SSL.
    'JSON::XS' => {
        required_version => '2.32',
        package_name     => 'JSON-XS',
        'gettext_id'     => 'required when using the VOOT protocol',
    },
sikeda's avatar
sikeda committed
231
232
233
234
235
    'Locale::Messages' => {
        required_version => '1.22',
        package_name     => 'libintl-perl',
        mandatory        => 1,
        'gettext_id'     => 'internationalization functions',
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
    },
    'LWP' => {
        package_name => 'libwww-perl',
        mandatory    => 1,
        'gettext_id' => 'required when including members of a remote list',
    },
    'Mail::Address' => {
        required_version => '1.70',
        package_name     => 'MailTools',
        mandatory        => 1,
        'gettext_id' => 'used to parse or build mailboxes in message headers',
    },
    # Mail::DKIM::Signer is included in Mail-DKIM.
    # Mail::DKIM::TextWrap is included in Mail-DKIM.
    'Mail::DKIM::Verifier' => {
        required_version => '0.39',
        package_name     => 'Mail-DKIM',
        'gettext_id' =>
            'required in order to use DKIM features (both for signature verification and signature insertion)',
    },
    'MHonArc::UTF8' => {
        required_version => '2.6.18',
        package_name     => 'MHonArc',
        mandatory        => 1,
        'gettext_id'     => 'mhonarc is used to build Sympa web archives',
    },
    'MIME::Base64' => {
        required_version => '3.03',
        package_name     => 'MIME-Base64',
        mandatory        => 1,
        'gettext_id' => 'required to compute digest for password and emails',
    },
    'MIME::Charset' => {
        required_version => '1.010',
        package_name     => 'MIME-Charset',
        mandatory        => 1,
        'gettext_id' => 'used to encode mail body using a different charset',
    },
    'MIME::EncWords' => {
        required_version => '1.014',
        package_name     => 'MIME-EncWords',
        mandatory        => 1,
        'gettext_id' =>
            'required to decode/encode SMTP header fields without breaking character encoding',
    },
    'MIME::Lite::HTML' => {
        required_version => '1.23',
        package_name     => 'MIME-Lite-HTML',
        mandatory        => 1,
        'gettext_id' => 'used to compose HTML mail from the web interface',
    },
    'MIME::Tools' => {
        required_version => '5.423',
        package_name     => 'MIME-tools',
        mandatory        => 1,
        'gettext_id' => 'provides libraries for manipulating MIME messages',
    },
    'Net::LDAP' => {
        required_version => '0.27',
        'gettext_comment' =>
            'openldap-devel is needed to build the Perl code',
        package_name => 'perl-ldap',
        'gettext_id' =>
            'required to query LDAP directories. Sympa can do LDAP-based authentication ; it can also build mailing lists with LDAP-extracted members.',
    },
    'Net::Netmask' => {
        required_version => '1.9015',
        package_name     => 'Net-Netmask',
        mandatory        => 1,
        'gettext_id' =>
            'used to check netmask within Sympa autorization scenario rules',
    },
    'Net::SMTP' => {
        package_name => 'libnet',
        'gettext_id' =>
            'this is required if you set "list_check_smtp" sympa.conf parameter, used to check existing aliases before mailing list creation.',
    },
    'perl'               => {required_version => '5.008',},
    'Proc::ProcessTable' => {
        package_name     => 'Proc-ProcessTable',
        required_version => '0.44',
        mandatory        => 1,
        'gettext_id' =>
            'Used by the bulk.pl daemon to check the number of slave bulks running.',
320
321
322
323
324
    },
    'Scalar::Util' => {
        required_version => '1.22',
        package_name     => 'Scalar-List-Utils',
        'gettext_id'     => 'set of various subroutines to handle scalar',
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
    },
    'SOAP::Lite' => {
        required_version => '0.712',
        package_name     => 'SOAP-Lite',
        'gettext_id' =>
            'required if you want to run the Sympa SOAP server that provides ML services via a "web service"',
    },
    'Template' => {
        package_name => 'Template-Toolkit',
        mandatory    => 1,
        'gettext_id' =>
            'Sympa template format, used for web pages and other mail, config file templates. See http://template-toolkit.org/.',
    },
    'Term::ProgressBar' => {
        required_version => '2.09',
        package_name     => 'Term-ProgressBar',
        mandatory        => 1,
        'gettext_id'     => 'used while checking the RDBMS buffer size',
    },
    'Text::LineFold' => {
        required_version => '2011.05',
        package_name     => 'Unicode-LineBreak',
        mandatory        => 1,
        'gettext_id' =>
            'used to fold lines in HTML mail composer and system messages, prior to Text::Wrap',
    },
    'Time::HiRes' => {
        required_version => '1.29',
        package_name     => 'Time-HiRes',
        mandatory        => 1,
        'gettext_id' =>
            'used by sympa.pl --test_database_message_buffer to test database performances',
    },
    'URI::Escape' => {
        required_version => '1.35',
        package_name     => 'URI-Escape',
        mandatory        => 1,
        'gettext_id' =>
            'Used to create URI containing non URI-canonical characters.',
    },
    'XML::LibXML' => {
        'gettext_comment' => 'libxml2-devel is needed to build the Perl code',
        package_name      => 'XML-LibXML',
        mandatory         => 1,
        'gettext_id' =>
            'used to parse list configuration templates and instanciate list families',
    },
);

$cpan_modules{'Unicode::CaseFold'} = {
    required_version => '0.02',
    package_name     => 'Unicode-CaseFold',
    mandatory        => 1,
    'gettext_id'     => 'used to compute case-folding search keys'
    }
    if 5.008 < $] and $] < 5.016;

1;