EMDIS-ECS

 view release on metacpan or  search on metacpan

lib/EMDIS/ECS/Config.pm  view on Meta::CPAN

}

# ----------------------------------------------------------------------
# Assign default values to configuration settings.
# Note:  no default value for THIS_NODE, ADM_ADDR, ADAPTER_CMD, SMTP_DOMAIN,
# SMTP_FROM, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, INBOX_PORT,
# INBOX_FOLDER, INBOX_USERNAME, INBOX_PASSWORD, GPG_HOMEDIR, GPG_KEYID,
# GPG_PASSPHRASE, PGP_HOMEDIR, PGP_KEYID, PGP_PASSPHRASE,
# AMQP_BROKER_URL, AMQP_VHOST, AMQP_TRUSTSTORE, AMQP_SSLCERT AMQP_SSLKEY,
# AMQP_SSLPASS, AMQP_USERNAME, AMQP_PASSWORD
sub _set_defaults
{
    my $this = shift;
    $this->{MSG_PROC}          = "ecs_proc_msg";
    $this->{MAIL_MRK}          = "EMDIS";
    $this->{T_CHK}             = "7200";
    $this->{T_SCN}             = "3600";
    $this->{ENABLE_ENV_CONFIG} = 'YES';
    my $basename = basename($0);   # default;  use magic logfile name
    $this->{ERR_FILE}          = "$basename.err";
    $this->{LOG_FILE}          = "$basename.log";
    $this->{M_MSG_PROC}        = "ecs_proc_meta";
    $this->{BCK_DIR}           = "NONE";
    $this->{ACK_THRES}         = "100";
    $this->{ALWAYS_ACK}        = "NO";
    $this->{GNU_TAR}           = "/usr/bin/tar";
    $this->{ECS_BIN_DIR}       = "__SCRIPT_DIR__";
    $this->{ECS_DAT_DIR}       = "__CONFIG_DIR__";
    $this->{ECS_DEBUG}         = "0";
    $this->{NODE_TBL}          = "node_tbl.dat";
    $this->{NODE_TBL_LCK}      = "node_tbl.lock";
    $this->{T_ADM_DELAY}       = "0";
    $this->{T_ADM_REMIND}      = "86400";
    $this->{T_MSG_PROC}        = "3600";
    $this->{T_RESEND_DELAY}    = "14400";
    $this->{LOG_LEVEL}         = 1;
    $this->{MAIL_LEVEL}        = 2;
    $this->{MSG_PART_SIZE_DFLT} = "1073741824";
    $this->{SMTP_HOST}         = "smtp";
    $this->{SMTP_TIMEOUT}      = "60";
    $this->{SMTP_DEBUG}        = "0";
    $this->{SMTP_USE_SSL}      = "NO";
    $this->{SMTP_USE_STARTTLS} = "NO";
    $this->{INBOX_PROTOCOL}    = "POP3";
    $this->{INBOX_HOST}        = "mail";
    $this->{INBOX_FOLDER}      = "INBOX";
    $this->{INBOX_TIMEOUT}     = "60";
    $this->{INBOX_DEBUG}       = "0";
    $this->{INBOX_USE_SSL}     = "NO";
    $this->{INBOX_USE_STARTTLS} = "NO";
    $this->{INBOX_MAX_MSG_SIZE} = "1048576";
    $this->{OPENPGP_CMD_ENCRYPT} = '/usr/local/bin/gpg --armor --batch ' .
        '--charset ISO-8859-1 --force-mdc --logger-fd 1 --openpgp ' .
        '--output __OUTPUT__ --pinentry-mode loopback --passphrase-fd 0 ' .
        '--quiet --recipient __RECIPIENT__ --recipient __SELF__ --yes ' .
        '--sign --local-user __SELF__ --encrypt __INPUT__';
    $this->{OPENPGP_CMD_DECRYPT} = '/usr/local/bin/gpg --batch ' .
        '--charset ISO-8859-1 --logger-fd 1 --openpgp --output __OUTPUT__ ' .
        '--pinentry-mode loopback --passphrase-fd 0 --quiet --yes ' .
        '--decrypt __INPUT__';
    $this->{PGP2_CMD_ENCRYPT} = '/usr/local/bin/pgp +batchmode +verbose=0 ' .
        '+force +CharSet=latin1 +ArmorLines=0 -o __OUTPUT__ ' .
        '-u __SELF__ -eats __INPUT__ __RECIPIENT__ __SELF__';
    $this->{PGP2_CMD_DECRYPT} = '/usr/local/bin/pgp +batchmode +verbose=0 ' .
        '+force +CharSet=latin1 -o __OUTPUT__ __INPUT__';
    $this->{ENABLE_AMQP}       = "NO";
    $this->{AMQP_RECV_TIMEOUT} = 5;
    $this->{AMQP_RECV_TIMELIMIT} = 300;
    $this->{AMQP_SEND_TIMELIMIT} = 60;
    $this->{AMQP_DEBUG_LEVEL}  = 0;
    $this->{AMQP_CMD_SEND}     = 'ecs_amqp_send.py';
    $this->{AMQP_CMD_RECV}     = 'ecs_amqp_recv.py';
    $this->{INBOX_OAUTH_TOKEN_CMD_TIMELIMIT} = "60";
    $this->{INBOX_OAUTH_SASL_MECHANISM} = "XOAUTH2 OAUTHBEARER";
    $this->{SMTP_OAUTH_TOKEN_CMD_TIMELIMIT} = "60";
    $this->{SMTP_OAUTH_SASL_MECHANISM} = "XOAUTH2 OAUTHBEARER";
}

# ----------------------------------------------------------------------
# Do a few sanity checks on the configuration data.
# Returns empty string if successful or error message if error encountered.
sub _validate_config
{
    my $this = shift;
    my @errors = ();
    my @required_attrlist = qw(
        MSG_PROC MAIL_MRK THIS_NODE T_CHK T_SCN ERR_FILE LOG_FILE ADM_ADDR
        M_MSG_PROC BCK_DIR ACK_THRES
        ECS_BIN_DIR ECS_DAT_DIR ECS_DEBUG
        NODE_TBL NODE_TBL_LCK T_ADM_REMIND T_MSG_PROC
        SMTP_HOST SMTP_DOMAIN SMTP_TIMEOUT SMTP_DEBUG SMTP_FROM
        INBOX_PROTOCOL INBOX_HOST INBOX_TIMEOUT INBOX_DEBUG
        INBOX_MAX_MSG_SIZE
        MSG_PART_SIZE_DFLT
    );

    # check for required values that are undefined
    for my $attr (@required_attrlist)
    {
        push(@errors, "$attr not defined.")
            unless exists($this->{$attr});
    }

    # validate INBOX_PROTOCOL
    
    # username/password not needed for DIRECTORY inbox
    if($this->{INBOX_PROTOCOL} !~ /DIRECTORY/i and not exists($this->{INBOX_OAUTH_TOKEN_CMD}))
    { 
        for my $attr (qw( INBOX_USERNAME INBOX_PASSWORD))
        {
            push(@errors, "$attr not defined.")
                unless exists($this->{$attr});
        }
    }

    if(exists $this->{INBOX_OAUTH_TOKEN_CMD}) {
        for my $attr (qw(INBOX_USERNAME
                         INBOX_OAUTH_TOKEN_CMD_TIMELIMIT
                         INBOX_OAUTH_SASL_MECHANISM))
        {
            push(@errors, "$attr not defined.")
                unless exists($this->{$attr});
        }
    }



( run in 1.033 second using v1.01-cache-2.11-cpan-39bf76dae61 )