Samx Here
n1udSecurity


Server : Apache
System : Linux ks5.tuic.fr 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64
User : pragmatice ( 1003)
PHP Version : 8.2.24
Disable Function : NONE
Directory :  /bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //bin/sympa
#!/usr/bin/perl
# -*- indent-tabs-mode: nil; -*-
# vim:ft=perl:et:sw=4
# $Id$

# 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, 2015, 2016, 2017 GIP RENATER
# Copyright 2017, 2018, 2019, 2020, 2021, 2022 The Sympa Community. See the
# AUTHORS.md file at the top-level directory of this distribution and at
# <https://github.com/sympa-community/sympa.git>.
#
# 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/>.

use lib split(/:/, $ENV{SYMPALIB} || ''), '/usr/share/sympa/lib';
use strict;
use warnings;

use Sympa::CLI;

unless (@ARGV) {
    Sympa::CLI->run('help');
    exit 0;
} elsif ($ARGV[0] !~ /\A-/) {
    Sympa::CLI->run(@ARGV) or exit 1;
    exit 0;
}

# Below from here is the code for compatibility to earlier versions.

use Getopt::Long qw(:config no_ignore_case);
use Pod::Usage;

my %options;
unless (
    GetOptions(
        \%options,                      'dump=s',
        'debug|d',                      'log_level=s',
        'config|f=s',                   'lang|l=s',
        'mail|m',                       'help|h',
        'version|v',                    'import=s',
        'make_alias_file',              'lowercase',
        'sync_list_db',                 'md5_encode_password',
        'close_list=s',                 'rename_list=s',
        'copy_list=s',                  'new_listname=s',
        'new_listrobot=s',              'purge_list=s',
        'create_list',                  'instantiate_family=s',
        'robot=s',                      'add_list=s',
        'modify_list=s',                'close_family=s',
        'md5_digest=s',                 'change_user_email',
        'current_email=s',              'new_email=s',
        'input_file=s',                 'sync_include=s',
        'upgrade',                      'upgrade_shared',
        'from=s',                       'to=s',
        'reload_list_config',           'list=s',
        'quiet',                        'close_unknown',
        'test_database_message_buffer', 'conf_2_db',
        'export_list',                  'health_check',
        'send_digest',                  'keep_digest',
        'upgrade_config_location',      'role=s',
        'dump_users',                   'restore_users',
        'open_list=s',                  'show_pending_lists=s',
        'notify',                       'rebuildarc=s',
        'add=s',                        'del=s',
        'force|F',
    )
) {
    pod2usage(-exitval => 1, -output => \*STDERR);
}

if ($options{'add'}) {
    Sympa::CLI->run(\%options, 'add', $options{add});
} elsif ($options{'add_list'}) {
    Sympa::CLI->run(\%options, 'create', sprintf '%s@@%s',
        $options{add_list}, $options{robot} || $Conf::Conf{'domain'});
} elsif ($options{'change_user_email'}) {
    Sympa::CLI->run({}, 'user', 'move',
        @options{qw(current_email new_email)});
} elsif ($options{'close_family'}) {
    Sympa::CLI->run({}, 'close', sprintf '%s@@%s',
        $options{close_family}, $options{robot} || $Conf::Conf{'domain'});
} elsif ($options{'close_list'}) {
    Sympa::CLI->run({}, 'close', $options{close_list});
} elsif ($options{'conf_2_db'}) {
    Sympa::CLI->run({}, 'conf_2_db');
} elsif ($options{'copy_list'}) {
    Sympa::CLI->run(
        {mode => 'copy'},
        'move', $options{copy_list}, sprintf '%s@%s',
        $options{new_listname}, $options{new_listrobot}
    );
} elsif ($options{'create_list'}) {
    Sympa::CLI->run(\%options, 'create', $options{robot});
} elsif ($options{'del'}) {
    Sympa::CLI->run(\%options, 'del', $options{del});
} elsif ($options{'dump'} or $options{'dump_users'}) {
    # Compat. for old style "--dump=LIST".
    my $list_id = $options{dump} || $options{list};
    $list_id = '*' if $list_id and $list_id eq 'ALL';
    Sympa::CLI->run({roles => $options{role}}, 'dump', $list_id);
} elsif ($options{'export_list'}) {
    my $domain = $options{robot} || '*';
    Sympa::CLI->run(\%options, 'export_list', $domain);
} elsif ($options{'health_check'}) {
    Sympa::CLI->run({}, 'check');
} elsif ($options{'help'}) {
    pod2usage(0);
} elsif ($options{'import'}) {
    printf STDERR "The --import was deprecated. Use --add instead.\n";
    exit 1;
} elsif ($options{'instantiate_family'}) {
    Sympa::CLI->run(
        \%options, 'instantiate',
        sprintf '%s@@%s',
        $options{instantiate_family},
        $options{robot} || $Conf::Conf{'domain'}
    );
} elsif ($options{'lowercase'}) {
    Sympa::CLI->run({}, 'lowercase');
} elsif ($options{'make_alias_file'}) {
    my $robots = $options{robot} || '*';
    Sympa::CLI->run(\%options, 'make_alias_file', split /,/, $robots);
} elsif ($options{'md5_digest'}) {
    Sympa::CLI->run({}, 'md5_digest', $options{md5_digest});
} elsif ($options{'md5_encode_password'}) {
    print STDERR "Obsoleted.  Use upgrade_sympa_password.pl.\n";
    exit 0;
} elsif ($options{'modify_list'}) {
    Sympa::CLI->run(\%options, 'update', sprintf '%s@@%s',
        $options{modify_list}, $options{robot} || $Conf::Conf{'domain'});
} elsif ($options{'open_list'}) {
    Sympa::CLI->run(\%options, 'open', $options{open_list});
} elsif ($options{'purge_list'}) {
    Sympa::CLI->run({mode => 'purge'}, 'close', $options{purge_list});
} elsif ($options{'rebuildarc'}) {
    Sympa::CLI->run({}, 'rebuildarc', $options{rebuildarc});
} elsif ($options{'reload_list_config'}) {
    Sympa::CLI->run({}, 'reload_list_config',
        $options{list} // $options{robot});
} elsif ($options{'rename_list'}) {
    Sympa::CLI->run({}, 'move', $options{rename_list}, sprintf '%s@%s',
        $options{new_listname}, $options{new_listrobot});
} elsif ($options{'restore_users'}) {
    my $list_id = $options{list};
    $list_id = '*' if $list_id and $list_id eq 'ALL';
    Sympa::CLI->run({roles => $options{role}}, 'restore', $list_id);
} elsif ($options{'send_digest'}) {
    Sympa::CLI->run(\%options, 'send_digest');
} elsif ($options{'show_pending_lists'}) {
    Sympa::CLI->run({}, 'show_pending_lists', $options{show_pending_lists});
} elsif ($options{'sync_include'}) {
    Sympa::CLI->run(\%options, 'include', $options{sync_include});
} elsif ($options{'sync_list_db'}) {
    Sympa::CLI->run({}, 'sync_list_db', $options{list});
} elsif ($options{'test_database_message_buffer'}) {
    print
        "Deprecated.  Size of messages no longer limited by database packet size.\n";
    exit 1;
} elsif ($options{'upgrade'}) {
    Sympa::CLI->run(\%options, 'upgrade');
} elsif ($options{'upgrade_config_location'}) {
    Sympa::CLI->run({}, 'upgrade_config_location');
} elsif ($options{'upgrade_shared'}) {
    print STDERR "Obsoleted.  Use upgrade_shared_repository.pl.\n";
    exit 0;
} elsif ($options{'version'}) {
    Sympa::CLI->run({}, 'version');
}

die 'Unknown option';

# Moved to: Sympa::CLI::_load().
#sub _load;

# Moved to: Sympa::CLI::_report().
#sub _report;

# DEPRECATED.  Use Sympa::Spindle::ProcessDigest class.
#sub SendDigest;

# Lowercase field from database.
# Old names: List::lowercase_field(), Sympa::List::lowercase_field().
# Moved to: Sympa::CLI::lowecase::__lowercase_field();
#sub _lowercase_field;

# Old name: Sympa::Family::instantiate().
# Moved to: Sympa::CLI::instantiate::_instantiate().
#sub instantiate;

# return a string of instantiation results
#
# IN : -$family
#
# OUT : -$string
# Old name: Sympa::Family::get_instantiation_results().
# Moved to: Sympa::CLI::instantiate::get_instantiation_results().
#sub get_instantiation_results;

# initialize vars for instantiation and result
# then to make a string result
#
# IN  : -$family
# OUT : -1
# Old name: Sympa::Family::_initialize_instantiation().
# Moved to: Sympa::CLI::instantiate::_initialize_instantiation().
#sub _initialize_instantiation;

# split the xml family file into xml list files. New
# list names are put in the array reference
# and new files are put in
# the family directory
#
# IN : -$family
#      -$xml_fh : file handle on xml file containing description
#               of the family lists
# OUT : -1 (if OK) or undef
# Old name: Sympa::Family::_split_xml_file().
# Moved to; Sympa::CLI::_split_xml_file().
#sub _split_xml_file;

__END__

=encoding utf-8

=head1 NAME

sympa, sympa.pl - Command line utility to manage Sympa

=head1 SYNOPSIS

C<sympa> I<command> [ I<general options>... ] ...

=head1 DESCRIPTION

B<NOTE>:
On overview of Sympa documentation see L<sympa_toc(1)>.

F<sympa> is invoked from command line then performs various administration
tasks.

=head1 GENERAL OPTIONS

F<sympa> may run with following options in general.

=over 4

=item C<-d>, C<--debug>

Enable debug mode.

=item C<-f>, C<--config=>I<file>

Force Sympa to use an alternative configuration file instead
of F</etc/sympa/sympa/sympa.conf>.

=item C<-l>, C<--lang=>I<lang>

Set this option to use a language for Sympa. The corresponding
gettext catalog file must be located in F<$LOCALEDIR>
directory.

=item C<--log_level=>I<level>

Sets Sympa log level.

=item C<-m>, C<--mail>

Enable SMTP logging.

=back

=head1 COMMANDS

Currently following commands are available.
To see detail of each command, run 'C<sympa help> I<command>'.

=over

=item L<"sympa add"|sympa-add(1)>

Add users to the list

=item L<"sympa bouncers"|sympa-bouncers(1)>

Manipulate list bounced users

=item L<"sympa check"|sympa-check(1)>

Check environment

=item L<"sympa close"|sympa-close(1)>

Close a list or the lists belonging to a family

=item L<"sympa conf_2_db"|sympa-conf_2_db(1)>

Load config into the database

=item L<"sympa config"|sympa-config(1)>

Manipulate configuration of Sympa

=item L<"sympa copy"|sympa-move(1)>

Copy the list

=item L<"sympa create"|sympa-create(1)>

Create a list

=item L<"sympa del"|sympa-del(1)>

Delete users from the list

=item L<"sympa dump"|sympa-dump(1)>

Dump users of the lists

=item L<"sympa export_list"|sympa-export_list(1)>

TBD

=item L<"sympa help"|sympa-help(1)>

Display help information about Sympa CLI

=item L<"sympa include"|sympa-include(1)>

Update inclusion

=item L<"sympa instantiate"|sympa-instantiate(1)>

Instantiate the lists in a family

=item L<"sympa lowercase"|sympa-lowercase(1)>

Lowercase email addresses in database

=item L<"sympa make_alias_file"|sympa-make_alias_file(1)>

Create aliases file

=item L<"sympa md5_digest"|sympa-md5_digest(1)>

Output a MD5 digest

=item L<"sympa move"|sympa-move(1)>

Move or copy the list

=item L<"sympa open"|sympa-open(1)>

Open the list

=item L<"sympa rebuildarc"|sympa-rebuildarc(1)>

Rebuild the archives of the list

=item L<"sympa reload_list_config"|sympa-reload_list_config(1)>

Recreate config cache of the lists

=item L<"sympa restore"|sympa-restore(1)>

Restore users of the lists

=item L<"sympa review"|sympa-review(1)>

Show subscribers of the list

=item L<"sympa send_digest"|sympa-send_digest(1)>

Send digest

=item L<"sympa show_pending_lists"|sympa-show_pending_lists(1)>

Show pending lists

=item L<"sympa sync_list_db"|sympa-sync_list_db(1)>

Synchronize database cache of the lists

=item L<"sympa update"|sympa-update(1)>

Modify the existing list in the family

=item L<"sympa upgrade"|sympa-upgrade(1)>

Upgrade Sympa

=item L<"sympa upgrade_config_location"|sympa-upgrade_config_location(1)>

TBD

=item L<"sympa user"|sympa-user(1)>

Manipulate list users

=item L<"sympa version"|sympa-version(1)>

Print the version number of Sympa

=back

=head1 DESCRIPTION FOR EARLIER VERSION

B<NOTE>:
Description in this section is kept for compatibility to earlier versions.
Run C<sympa help> or see L<sympa(1)> to see recent conventions.

=head2 Synopsis

C<sympa.pl> S<[ C<-d, --debug> ]> S<[ C<-f, --file>=I<another.sympa.conf> ]>
S<[ C<-l, --lang>=I<lang> ]> S<[ C<-m, --mail> ]>
S<[ C<-h, --help> ]> S<[ C<-v, --version> ]>
S<>
S<[ C<--add>=I<list>@I<domain> [--role=I<role>] [--quiet] [--notify] [--force] ]>
S<[ C<--del>=I<list>@I<domain> [--role=I<role>] [--quiet] [--notify] [--force] ]>
S<[ C<--open_list>=I<list>[I<@robot>] [--notify] ]>
S<[ C<--close_list>=I<list>[I<@robot>] ]>
S<[ C<--purge_list>=I<list>[I<@robot>] ]>
S<[ C<--lowercase> ]> S<[ C<--make_alias_file> ]>
S<[ C<--dump_users> C<--list>=I<list>@I<domain>|ALL [ C<--role>=I<roles> ] ]>
S<[ C<--restore_users> C<--list>=I<list>@I<domain>|ALL [ C<--role>=I<roles> ] ]>
S<[ C<--show_pending_lists>=I<robot> ]>
S<[ C<--rebuildarc>=I<list>[I<@robot>] ]>

=head2 Options

F<sympa.pl> may run with following options in general.

=over 4

=item C<-d>, C<--debug>

Enable debug mode.

=item C<-f>, C<--config=>I<file>

Force Sympa to use an alternative configuration file instead
of F</etc/sympa/sympa/sympa.conf>.

=item C<-l>, C<--lang=>I<lang>

Set this option to use a language for Sympa. The corresponding
gettext catalog file must be located in F<$LOCALEDIR>
directory.

=item C<--log_level=>I<level>

Sets Sympa log level.

=back

With the following options F<sympa.pl> will run in batch mode:

=over 4

=item C<--add=>I<list>@I<domain> [ C<--role>=I<role> ]
[ C<--quiet> ] [ C<--notify> ] [ C<--force> ]

Add email(s) from the list. Data are read from standard input.
The data should contain one email address per line.

Sample:

    ## emails to be added
    john.steward@some.company.com       John Steward
    mary.blacksmith@another.company.com Mary Blacksmith

Note:
This option was added on Sympa 6.2.67b.2.

New command line format:

=over

=item C<sympa add> [ C<--role>=I<role> ] [ C<--quiet> ] [ C<--notify> ]
[ C<--force> ] I<list>C<@>I<domain>

=back

=item C<--add_list=>I<family_name> C<--robot=>I<robot_name>
C<--input_file=>I</path/to/file.xml>

Add the list described by the file.xml under robot_name, to the family
family_name.

New command line format:

=over

=item C<sympa create> C<--input_file=>I</path/to/file.xml>
I<family_name>C<@@>I<robot_name>

=back

=item C<--change_user_email> C<--current_email=>I<current> C<--new_email=>I<new>

Changes a user email address in all Sympa  databases (subscriber_table,
list config, etc) for all virtual robots.

New command line format:

=over

=item C<sympa user move> I<current> I<new>

=back

=item C<--close_family=>I<family_name> C<--robot=>I<robot_name>

Close lists of family_name family under robot_name.      

New command line format:

=over

=item C<sympa close> I<family_name>C<@@>I<robot_name>

=back

=item C<--close_list=>I<list>[C<@>I<robot>]

Close the list (changing its status to closed), remove aliases and remove
subscribers from DB (a dump is created in the list directory to allow
restoring the list)

New command line format:

=over

=item C<sympa close> I<list>[C<@>I<robot>]

=back

=item C<--conf_2_db>

Load sympa.conf and each robot.conf into database.

New command line format:

TBD.

=item C<--copy_list=>I<listname>C<@>I<robot>
C<--new_listname=>I<newlistname> C<--new_listrobot=>I<newrobot>

Copy a list.

New command line format:

=over

=item C<sympa move --mode=copy>
I<listname>C<@>I<robot> I<newlistname>C<@>I<newrobot>

=item C<sympa copy>
I<listname>C<@>I<robot> I<newlistname>C<@>I<newrobot>

=back

=item C<--create_list> C<--robot=>I<robot_name>
C<--input_file=>I</path/to/file.xml>

Create a list with the XML file under robot robot_name.

New command line format:

=over

=item C<sympa create> C<--input_file=>I</path/to/file.xml> I<robot_name>

=back

=item C<--del=>I<list>C<@>I<domain> [ C<--role>=I<role> ]
[ C<--quiet> ] [ C<--notify> ] [ C<--force> ]

Delete email(s) from the list. Data are read from standard input.
The data should contain one email address per line.

Sample:

    ## emails to be deleted
    john.steward@some.company.com
    mary.blacksmith@another.company.com

Note:
This options was added on Sympa 6.2.67b.2.

New command line format:

=over

=item C<sympa del> [ C<--role>=I<role> ] [ C<--quiet> ] [ C<--notify> ]
[ C<--force> ] I<list>C<@>I<domain> 

=back

=item C<--dump=>I<list>@I<domain>|C<ALL>

Obsoleted option.  Use C<--dump_users>.

=item C<--dump_users> C<--list=>I<list>@I<domain>|C<ALL> [ C<--role=>I<roles> ]

Dumps users of a list or all lists.

C<--role> may specify C<member>, C<owner>, C<editor> or any of them separated
by comma (C<,>). Only C<member> is chosen by default.

Users are dumped in files I<role>C<.dump> in each list directory.

Note: On Sympa prior to 6.2.31b.1, subscribers were dumped in
F<subscribers.db.dump> file, and owners and moderators could not be dumped.

See also C<--restore_users>.

Note: This option replaced C<--dump> on Sympa 6.2.34.

New command line format:

=over

=item C<sympa dump> [ C<--roles=>I<roles> ] I<list>C<@>I<domain> 

=item C<sympa dump> [ C<--roles=>I<roles> ] C<"*">

=back

=begin comment

=item C<--export_list> [ C<--robot=>I<robot_name> ]

B<Not fully implemented>.

=end comment

=item C<--health_check>

Check if F<sympa.conf>, F<robot.conf> of virtual robots and database structure
are correct.  If any errors occur, exits with non-zero status.

New command line format:

=over

=item C<sympa check>

=back

=item C<--import=>I<list>@I<dom>

Deprecated.  Use C<--add> instead.

=item C<--instantiate_family=>I<family_name> C<--robot=>I<robot_name>
C<--input_file=>I</path/to/file.xml> [ C<--close_unknown> ] [ C<--quiet> ]

Instantiate family_name lists described in the file.xml under robot_name.
The family directory must exist; automatically close undefined lists in a
new instantiation if --close_unknown is specified; do not print report if
C<--quiet> is specified.

New command line format:

=over

=item C<sympa instantiate>
C<--input_file=>I</path/to/file.xml> [ C<--close_unknown> ] [ C<--quiet> ]
I<family_name>C<@@>I<robot_name>

=back

=item C<--lowercase>

Lowercases email addresses in database.

New command line format:

TBD.

=item C<--make_alias_file> [ C<--robot> robot ]

Create an aliases file in /tmp/ with all list aliases. It uses the
F<list_aliases.tt2> template  (useful when list_aliases.tt2 was changed).

New command line format:

TBD.

=item C<--md5_encode_password>

Rewrite password in C<user_table> of database using MD5 fingerprint.
YOU CAN'T UNDO unless you save this table first.

B<Note> that this option was obsoleted.
Use L<upgrade_sympa_password(1)>.

=item C<--modify_list=>I<family_name> C<--robot=>I<robot_name>
C<--input_file=>I</path/to/file.xml>

Modify the existing list installed under the robot robot_name and that
belongs to the family family_name. The new description is in the C<file.xml>.

New command line format:

=over

=item C<sympa update> C<--input_file=>I</path/to/file.xml>
I<family_name>C<@@>I<robot_name>

=back

=item C<--open_list=>I<list>[C<@>I<robot>] [ C<--notify> ]

Restore the closed list (changing its status to open), add aliases and restore
users to DB (dump files in the list directory are imported).

The C<--notify> is optional. If present, the owner(s) of the list will be notified.

New command line format:

=over

=item C<sympa open> [ C<--notify> ] I<list>[C<@>I<robot>]

=back

=item C<--purge_list>=I<list>[C<@>I<robot>]

Remove the list (remove archive, configuration files, users and owners in admin table. Restore is not possible after this operation.

New command line format:

=over

=item C<sympa close> C<--mode=purge> I<list>[C<@>I<robot>]

=back

=item C<--show_pending_lists>=I<robot>

Print all pending lists for the robot, with information.

New command line format:

TBD.

=item C<--rebuildarc>=I<list>[I<@robot>]

Rebuild the archives of the list.

New command line format:

TBD.

=item C<--reload_list_config>
[ C<--list=>I<mylist>@I<mydom> ] [ C<--robot=>I<mydom> ]

Recreates all F<config.bin> files or cache in C<list_table>.
You should run this command if you edit authorization scenarios.
The list and robot parameters are optional.

New command line format:

TBD.

=item C<--rename_list=>I<listname>C<@>I<robot>
C<--new_listname=>I<newlistname> C<--new_listrobot=>I<newrobot>

Renames a list or move it to another virtual robot.

New command line format:

=over

=item C<sympa move> I<listname>C<@>I<robot> I<newlistname>C<@>I<newrobot>

=back

=item C<--send_digest> [ C<--keep_digest> ]

Send digest right now.
If C<--keep_digest> is specified, stocked digest will not be removed.

New command line format:

TBD.

=item C<--restore_users> C<--list=>I<list>@I<domain>|C<ALL> [ C<--role=>I<roles> ]

Restore users from files dumped by C<--dump_users>.

Note: This option was added on Sympa 6.2.34.

New command line format:

=over

=item C<sympa restore> [ C<--roles=>I<roles> ] I<list>C<@>I<domain>

=item C<sympa restore> [ C<--roles=>I<roles> ] C<"*">

=back

=item C<--sync_include=>I<listname>C<@>I<robot> [ C<--role=>I<role> ]

Trigger update of the list users included from data sources.

New command line format:

=over

=item C<sympa include> [ C<--role=>I<role> ] I<listname>C<@>I<robot> 

=back

=item C<--sync_list_db> [ C<--list=>I<listname>@I<robot> ]

Syncs filesystem list configs to the database cache of list configs,
optionally syncs an individual list if specified.

New command line format:

TBD.

=item C<--test_database_message_buffer>

B<Note>:
This option was deprecated.

Test the database message buffer size.

=item C<--upgrade> [ C<--from=>I<X> ] [ C<--to=>I<Y> ]

Runs Sympa maintenance script to upgrade from version I<X> to version I<Y>.

New command line format:

=over

=item C<sympa upgrade> [ <--from=>I<X> ] [ C<--to=>I<Y> ]

=back

=item C<--upgrade_shared> [ C<--list=>I<X> ] [ C<--robot=>I<Y> ]

B<Note>:
This option was deprecated.
See upgrade_shared_repository(1).

Rename files in shared.

New command line format:

TBD.

=back

With following options F<sympa.pl> will print some information and exit.

=over 4

=item C<-h>, C<--help>

Print this help message.

=item C<--md5_digest=>I<password>

Output a MD5 digest of a password (useful for SOAP client trusted
application).

=item C<-v>, C<--version>

Print the version number.

=back

B<End of description for earlier version>.

=head1 FILES

F</etc/sympa/sympa/sympa.conf> main configuration file.

=head1 SEE ALSO

L<sympa_toc(1)>.

=head1 HISTORY

F<sympa.pl> was originally written by:

=over 4

=item Serge Aumont

ComitE<233> RE<233>seau des UniversitE<233>s

=item Olivier SalaE<252>n

ComitE<233> RE<233>seau des UniversitE<233>s

=back

As of Sympa 6.2b.4, it was split into three programs:
F<sympa.pl> command line utility, F<sympa_automatic.pl> daemon and
F<sympa_msg.pl> daemon.

As of Sympa 6.2.68, F<sympa.pl> was renamed to F<sympa>
and the new form of command line arguments was introduced.

=cut

SAMX