The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

ecstool - ECS administrative utility

SYNOPSIS

 ecstool --config ecs.cfg

 ecstool --add FR emdis@emdisf.fgm.fr 0xA772E879 PGP2

 ecstool --archive 32

 ecstool --decrypt mboxes/in/20030320_183247_1_0005_FYUh.msg

 ecstool --export file.txt "|"

 ecstool --get ES addr

 ecstool --maildrop pat_upd.fml

 ecstool --meta FR RE_SEND 12345

 ecstool --modify FR emdis@emdis.fgm.fr 0xA772E879 PGP2

 ecstool --overview

 ecstool --prune ES 106732 248443

 ecstool --send FR pat_upd.fml

 ecstool --tweak FR addr emdis@emdisf.fgm.fr

 ecstool --view

DESCRIPTION

This program performs a variety of ECS administrative functions.

OPTIONS

--config ecs_config_file

Specify the location of the ECS configuration file. By default, the program looks for the file specified by the ECS_CONFIG_FILE environment variable; if that environment variable is not set, it looks for a file named "ecs.cfg" in the current directory.

--add node addr addr_r encr_typ [encr_sig]

Add new ECS node to node_tbl. addr is the node's email address, addr_r identifies the node's PGP key (e.g. 0x44DEF332), encr_typ identifies the node's encryption type (e.g. PGP2, PGP2-verify, OpenPGP, or OpenPGP-verify), and encr_sig is the email address listed in the node's PGP or GnuPG key, if different from addr.

--archive [delete_threshold]

Create a tar archive of the current ECS status. Also, rotate the ecs_chk_com.log and ecs_scan_mail.log log files. If delete_threshold is specified, delete files greater than this number of days old before creating the archive.

--decrypt filename

Decrypt a message file.

--delete node

Delete ECS node from node_tbl.

--export <filename> [delimiter]

Exports the node_tbl to a <delimiter>separated (default "|") list. Hint for Unixshells: Wrap special characters like |, &, * in quotes, e.g. "|".

--get

View value of node properties in node_tbl for all nodes (default). If node specified, view information for that node only.

--help

Display short summary of usage information.

--maildrop [filename]

Send regular FML message. Reads from standard input if filename not specified. Instead of immediately sending the message, this command copies the message to the maildrop directory, for later processing by the ecs_scan_mail daemon (see also: --send).

--meta node msg_type [seq_num [seq2]]

Send meta-message to node. msg_type can be MSG_ACK, RE_SEND, or READY. If seq2 is specified for msg_type of MSG_ACK or RE_SEND, multiple meta-messages are sent, covering the range seq_num through seq2 (inclusive).

--modify node addr addr_r encr_typ [encr_sig]

Modify existing ECS node in node_tbl.

--nodedata import|export filename [node]

Import or export node_tbl data, using Data::Dumper format.

--overview

Print full overview of ECS configuration.

--prune node seq1 seq2

Prune input queue. Examine files in mboxes/store directory and move all messages for specified node, with sequence number between seq1 and seq2 (inclusive), to trash subdirectory.

--send [node] [filename]

Send regular FML message. Reads from standard input if filename not specified. If only one parameter specified, it is interpreted as a filename unless it happens to be a valid node id, in which case the parameter is treated as a node id and ecstool reads input from standard input. This command sends the message immediately (see also: --maildrop).

--tweak node property value

Tweak existing node in node_tbl. Use with caution.

--view [node]

View information in node_tbl (default). If node specified, view information for that node only.

EXAMPLES

Outgoing Message Processor

Using ecstool, an email account with procmail capability can be used as a processor for outgoing ECS messages.

This setup makes it possible for programs to send ECS messages without needing to directly interact with the ECS command line programs. Valid FML received by the email account can be sent out through ECS, and the ECS administrator is notified of any problems.

See below for example .forward and .procmailrc files.

Example .forward File
 "|IFS=' ' && p=/usr/local/bin/procmail && test -f $p
   && exec $p -Yf- || exit 75 #ecsagent"
Example .procmailrc File
 PATH=/bin:/usr/bin:/usr/local/bin
 MAILDIR=$HOME/Mail
 DEFAULT=$MAILDIR/mbox
 LOGFILE=$MAILDIR/procmail.log
 PERL5LIB=/home/emdis/ecs/lib
 ECSADMIN=ecsadmin@transfuse.com.tm
 ECSOUT=ecsout@transfuse.com.tm

 # archive a copy of each incoming message
 :0 c
 archive/.

 # detect mail loop (check for "X-Loop: $ECSOUT")
 :0
 * ^X-Loop: ecsout@transfuse.com.tm
 /dev/null

 # bounce "EMDIS Processing Error" directly to EMDIS admin
 :0
 * ^Subject:.*EMDIS Processing Error
 | /usr/local/bin/formail -A "X-Loop: $ECSOUT" \
   -I "Reply-To: $ECSADMIN" | \
   $SENDMAIL $SENDMAILFLAGS $ECSADMIN

 # attempt to send FML message, check ecstool exit code
 :0 bw
 | /home/emdis/ecs/script/ecstool \
   --config /home/emdis/ecs/ecs.cfg --maildrop

   # if above send command failed, notify EMDIS admin
   :0 e
   | /usr/local/bin/formail -A "X-Loop: $ECSOUT" \
     -I "Reply-To: $ECSADMIN" \
     -i 'Subject: EMDIS Send Error - see procmail.log' | \
     $SENDMAIL $SENDMAILFLAGS $ECSADMIN

RETURN VALUE

Returns a non-zero exit code if an error is encountered.

BUGS

Possibly.

NOTES

TBD.

SEE ALSO

EMDIS::ECS, ecs_chk_com, ecs_scan_mail, ecs_setup

AUTHOR

Joel Schneider <jschneid@nmdp.org>

COPYRIGHT AND LICENSE

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

Copyright (C) 2002-2020 National Marrow Donor Program. All rights reserved.

See LICENSE file for license details.

HISTORY

ECS, the EMDIS Communication System, was originally designed and implemented by the ZKRD (http://www.zkrd.de/). This Perl implementation of ECS was developed by the National Marrow Donor Program (http://www.marrow.org/).

2004-03-12 Canadian Blood Services - Tony Wai Added MS Windows support for Windows 2000 and Windows XP Added "DIRECTORY" inBox Protocol. This can interface with any mail system that can output the new messages to text files.

2007-08-01 ZKRD - emdisadm@zkrd.de Added new environment variable ECS_CONFIG_FILE -> ecs.cfg. Added a export function to write the node_tbl delimiter separated (default '|') to a textfile. Added a get function which returns a single value from a node | all nodes. Added optional to_XX and from_XX directory support. Added a property check to the --tweak function.