# -----------------------------------------------------------------------
# © Copyright 2003-2007 by Alex Peeters [alex.peeters@citap.be]
# -----------------------------------------------------------------------
# General - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Author : Alex Peeters [alex.peeters@citap.be]
Latest update: 21 Oktober 2007
Version : 3.000.015
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Version 3.000.015, 2007/xx/yy, by Alex Peeters with contributions from Yves Van den Hove.
Makefile.PL
- version update CPAN 1.9102
- version update CGI 3.29
- version update Compress::Zlib 2.004
- version update Config::General 2.33
- version update Crypt::OpenSSL::RSA 0.25
- version update Crypt::OpenSSL::X509 0.5
- version update Crypt::SSLeay 0.56
- version update Cwd 3.25
- version update Bundle::DBD::mysql 4.005
- version update IO::Socket::SSL 1.07
- version update NetAddr::IP 4.007
- version update WSRF::Lite 0.8.2.2
- version update XML::LibXML 1.63
ASNMTAP CPAN module perl 5.8.0, 5.8.5 and 5.8.6 compatible
- Making perl 5.8.8 compatible
ASNMTAP::Asnmtap
- NEW environment variable ASNMTAP_PATH used into the bash scripts
- NEW making MySQL 5.0.x compatible
- NEW asnmtap-3.000.015_mysql-v5.0.x.sql
- NEW applications/tools/mysql/asnmtap-3.000.015-distributed_mysql-v5.0.x.sql
- FIX OnDemand versus Display with 254 character limitation for MySQL >= v5.0.3 and yyyymmdd-test-ukey.sql-LOAD-DATA-FAILED
Values in VARCHAR columns are variable-length strings.
The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions.
TEXT A string with a maximum length of 65535 characters, from a variable length types that store large amounts of data.
Is similar to a larger version of VARCHAR. These types can store a large piece of data information, but is also processed much slower.
- OnDemand
CRITICAL - WebService ... (Production): 500 read timeout - 200 OK - getVersion (...:9108): 4.20063.13 - 200 OK - ping (...:9110): OK - 200 OK - monitorControls (...:9110): OK - 200 OK - getVersion (...:9110): 4.20063.13 - ...: WARNING|'ping (...:8080)'=172ms;;;; 'monitorControls (...:8080)'=29682ms;;;; 'getVersion (...:8080)'=25ms;;;; 'ping (...:9108)'=25ms;;;; 'monitorControls (...:9108)'=30022ms;;;; 'getVersion (...:9108)'=24ms;;;; 'ping (...:9110)'=24ms;;;; 'monitorControls (...:9110)'=18898ms;;;; 'getVersion (...:9110)'=23ms;;;; Status=2;1;2;0;3 Compilation=1523ms;;;0; Trendline=79.039s;;;; Execution=80579ms;;;0;
- Display: afkapping op 254 characters
CRITICAL - WebService ... (Production): 500 read timeout - 200 OK - getVersion (...:9108): 4.20063.13 - 200 OK - ping (...:9110): OK - 200 OK - monitorControls (...:9110): OK - 200 OK - getVersion (...:9110): 4.20063.13 - ...
- v4.x : `statusMessage` varchar(254) NOT NULL default '',
- v5.0.x : `statusMessage` varchar(1024) NOT NULL default '',
alter table events_yyyy_mm change statusMessage statusMessage varchar(1024);
- IMPROVED perfparse_crontab.sh
- NEW perfparse_crontab_failed.sh (Yves Van den Hove)
- NEW perfparse_debug.sh by (Yves Van den Hove)
ASNMTAP::Asnmtap::Applications
- Applications.cnf
...
#
# LIB /opt/ChartDirector/lib/.
#
...
replace
#
#
with
#
#
add
...
#
# BIN /opt/asnmtap-3.000.xxx/perfparse/bin
# ETC /opt/asnmtap-3.000.xxx/perfparse/etc
# LIB /opt/asnmtap-3.000.xxx/perfparse/lib
# SHARE /opt/asnmtap-3.000.xxx/perfparse/share
# CGI /cgi-bin/perfparse.cgi
# ENABLED 0 # '0' or '1'
# DATABASE ~
# HOST ~
# PORT ~
# USERNAME ~
# PASSWORD ~
#
...
replace
#
...
# REPORTS reports
...
#
with
#
...
# REPORTS reports
# REPORTSPERFDATA reports_perfdata
...
#
- NEW $SERVERTABLREPORTSPRFDT into CGI.pm
- NEW $CHARTDIRECTORLIB and $SERVERTABLREPORTSPRFDT into Applications.pm
- NEW $PERFPARSEBIN $PERFPARSEETC $PERFPARSELIB $PERFPARSESHARE $PERFPARSECGI $PERFPARSEENABLED into CGI.pm & Applications.pm
ASNMTAP::Asnmtap::Applications::Collector
- NEW $CHARTDIRECTORLIB into collector.pl
ASNMTAP::Asnmtap::Applications::CGI
- NEW $CHARTDIRECTORLIB into generateChart.pl , generateCollectorCrontabSchedulingReport.pl, generateCollectorDaemonSchedulingReport.pl & generatePluginCrontabSchedulingReport.pl
ASNMTAP::Asnmtap::Plugins
- NEW check_template-SNMPTT.pl
ASNMTAP::Asnmtap::Plugins::Nagios
- NEW check_network_interface_traffic.pl
display.pl
- IMPROVED Status Message Error Displaying
/bin/generateReports.pl
- ADD show comments
/sbin/purge_table.pl
- FIX regarding: Can't create emailReport
- FIX snmptt-3.000.015.sql: Cannot dbh->do: DELETE FROM `snmptt_unknown_archive` WHERE archivetime < "1161727200"
/detailedStatisticsReportGenerationAndCompareResponsetimeTrends.pl
- ADD show comments
- ADD short description
- FIX Use of uninitialized value in concatenation (.) or string at line 333
/moderator/collectorDaemonSchedulingReports.pl
- FIX Use of uninitialized value in split at line 79.
/moderator/plugins.pl
- NEW Plugins (to edit short description, trendline, holiday bundle and uploading plugindoc)
/moderator/trendlineCorrectionReports.pl
- FIX Use of uninitialized value in split at line 93.
- FIX Possible precedence problem on bitwise & operator at line 117.
- FIX switch startdate with enddate
/admin/reports.pl
- ADD show comments
- NEW Select 'Reports Perfdata'
/admin/reports_perfdata.pl
- NEW Reports Perfdata (to define the 'Performance Times' that are used by the automatically generated Reports)
/sadmin/crontabs.pl
- FIX 'select SQL_NO_CACHE count(id) from crontabs' with 'select SQL_NO_CACHE count(lineNumber) from crontabs'
/sadmin/plugins.pl
- ADD short desription
- FIX $notActivated = ($Cactivated) ? '' : ' not'; with $notActivated = ($CTactivated) ? '' : ' not';
integration with jUnit
- NEW /plugins/jUnit/
- NEW check_jUnit.pl
- NEW create_ASNMTAP_jUnit_configuration_for_jUnit.pl
integration with SNMPTT
- NEW /plugins/snmptt/
- NEW check_SNMPTT_weblogic.pl
- NEW create_ASNMTAP_weblogic_configuration_for_SNMP.pl
- NEW create_weblogic_configuration_for_SNMPTT.pl
- FIX snmptt_traps_remove_pending_and_duplicated.pl
- NEW /plugins/templates/snmptt/
- UPDATE create_weblogic_configuration_database_with_SNMP-3.000.015.SQL
- NEW create_weblogic_configuration_database_with_SNMP-3.000.015_mysql-v5.0.x.SQL
- NEW snmptt-bea-weblogic.conf
- NEW snmptt-3.000.015.sql
- NEW snmptt.ini
integration with NagTrap
- NEW /applications/htmlroot/snmptraps
table plugins
- ADD `shortDesription` text,
table reports
- ADD `showComments` tinyint(1) NOT NULL default '0',
- ADD `showPerfdata` tinyint(1) NOT NULL default '0',
table reports_perfdata
- NEW table reports_perfdata
Version 3.000.014, 2007/06/10, Makefile.PL
- version update CPAN 1.9101
- version update CPANPLUS 0.78
- version update Config::General 2.32
- version update DateTime 0.37
- version update Email::Simple 1.999
- version update ExtUtils::MakeMaker 6.32
- version update IO::Socket::SSL 1.04
- version update Net::LDAP 0.34
- version update Time::HiRes 1.9705
- version update WSRF::Lite 0.8.2.1
MANIFEST
- NEW check_template-WebTransact-XML-Monitoring.pl
- NEW check_template-WebTransact-XML-Monitoring.t
- NEW check_template-WebTransact-with-client-authorization.pl
- NEW check_template-WebTransact-with-client-authorization.t
README
- updated INSTALLATION procedure
Applications.cnf
#
#
# VERSION 4.x # '4.x' or '5.0.x'
# MERGE 0 # '0' or '1'
#
ASNMTAP::Asnmtap::*
- optimalisation for MySQL queries
ASNMTAP::Asnmtap::Applications.pm & display.pl
- FIX sound sanity .innerHTML bug with FireFox
- UPDATE sound default set to 'off' when FireFox, otherwise default set to 'on'
- UPDATE $TcommentData =~ s/[\n\r]+(Updated|Edited|Closed) by: (?:.+), (?:.+) \((?:.+)\) on (\d{4}-\d\d-\d\d) (\d\d:\d\d:\d\d)/\n\r$1 on $2 $3/g;
ASNMTAP::Asnmtap::Applications::CGI.pm & archiver.pl
ASNMTAP::Asnmtap::Applications::CGI.pm & archiver.pl
- NEW $SERVERMYSQLVERSION = '4.x' # '4.x' or '5.0.x'
- NEW $SERVERMYSQLMERGE = '0' # '0' or '1'
- UPDATE create_sql_query_events_from_range_year_month with MERGE when $SERVERMYSQLMERGE = 1 for much faster year and quarter statistics
ASNMTAP::Asnmtap::Plugins
- NEW check_SNMPTT_weblogic.pl
- NEW create_NCPL_weblogic_configuration_for_SNMP.pl
- NEW create_weblogic_configuration_database_with_SNMP.pl
- NEW create_weblogic_configuration_database_with_SNMP.SQL
ASNMTAP::Asnmtap::Plugins::Mail.pm
- FIX regarding MIME-Encoding '7bit' and code optimalisation
- NEW MIME-Encoding: '8bit', 'binhex', 'binary', 'x-gzip64', 'x-uu' & 'x-uuencode'
- overview MIME-Encoding: '7bit', '8bit', 'quoted-printable', 'base64', 'binhex', 'binary', 'x-gzip64', 'x-uu' & 'x-uuencode'
ASNMTAP::Asnmtap::Plugins::Nagios
- NEW check_network_interface_status.pl
- NEW snmptt_traps_remove_pending_and_duplicated.pl
ASNMTAP::Asnmtap::SOAP.pm
- NEW added basic authentication and credentials
- NEW added soapaction and readable
ASNMTAP::Asnmtap::Plugins::WebTransact.pm
- NEW Inherited LWP user agent object: $objectWebTransact->ua = LWP::UserAgent->new;
check_template-WebTransact-XML-Monitoring.pl & check_template-WebTransact-XML-Monitoring.t
- NEW WebTransact plugin template for XML Monitoring
check_template-WebTransact-with-client-authorization.pl & check_template-WebTransact-with-client-authorization.t
- NEW WebTransact plugin template with client authorization
detailedStatisticsReportGenerationAndCompareResponsetimeTrends.pl
- add corresponding comments to the report
generateReports.pl & getArchivedReport.pl
- add support for timeperiod
# INSTALLATION - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
To install this module type the following:
perl Makefile.PL
make
make test
make install
OR
When you need a proxyserver, and your CPAN and/or CPANPLUS isn't confugured
to use one, then you must set:
- CPAN : HTTP_PROXY and/or FTP_PROXY
- CPANPLUS: http_proxy and/or ftp_proxy
CPAN
export HTTP_PROXY="http://host:port"
export FTP_PROXY="http://host:port"
perl -MCPAN -e shell
cpan shell -- CPAN exploration and modules installation (v1.xxx)
...
cpan> reload index
CPANPLUS
export http_proxy="http://host:port"
export ftp_proxy="http://host:port"
perl -MCPANPLUS -e shell
CPANPLUS::Shell::Default -- CPAN exploration and module installation (v0.xxx)
...
CPAN Terminal> x --update_source
perl -MCPAN -e 'install ASNMTAP::Asnmtap'
# BINARIES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cygwin:
General:
- Devel, expat v1.95.8
Needed for Win32::API used by ASNMTAP::Asnmtap::Plugins::Modem
- Libs, w32api v 3.6-1
Needed for XML::LibXML used by ASNMTAP::Asnmtap::Plugins::XML
- Libs, libxml2 v 2.6.22
- Devel, libxml2 v 2.6.22
Linux:
General:
- yum install expat
- yum install expat-devel
Needed for XML::LibXML used by ASNMTAP::Asnmtap::Plugins::XML
- yum install lib2xml
- yum install lib2xml-devel
Solaris:
General:
- wget ftp://sunfreeware.com/pub/freeware/sparc/9/expat-1.95.5-sol9-sparc-local.gz
- gzip -d expat-1.95.5-sol9-sparc-local.gz
- pkgadd -d expat-1.95.5-sol9-sparc-local
or
- wget ftp://sunfreeware.com/pub/freeware/sparc/10/expat-1.95.5-sol10-sparc-local.gz
- gzip -d expat-1.95.5-sol10-sparc-local.gz
- pkgadd -d expat-1.95.5-sol10-sparc-local
Needed for XML::LibXML used by ASNMTAP::Asnmtap::Plugins::XML
- wget ftp://sunfreeware.com/pub/freeware/sparc/9/libxml2-2.6.16-sol9-sparc-local.gz
- gzip -d libxml2-2.6.16-sol9-sparc-local.gz
- pkgadd -d libxml2-2.6.16-sol9-sparc-local
or
- wget ftp://sunfreeware.com/pub/freeware/sparc/10/libxml2-2.6.16-sol10-sparc-local.gz
- gzip -d libxml2-2.6.16-sol10-sparc-local.gz
- pkgadd -d libxml2-2.6.16-sol10-sparc-local
# DEPENDENCIES - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This module requires these other modules and libraries:
Base package ASNMTAP::Asnmtap
- Config::General: 2.33
- Config::General::Interpolated: 2.06
- Data::Dumper: 2.12
- Dumpvalue: 1.11
- Getopt::Long: 2.36
- IO::CaptureOutput: 1.03
- Test::Simple: 0.65
- Time::Local: 1.17
ASNMTAP::Time
- Date::Calc: 5.4
- Time::Local: 1.17
ASNMTAP::Asnmtap::Applications
- ASNMTAP::Time:
- ASNMTAP::Asnmtap:
- Carp:
- Config::General: 2.33
- Config::General::Interpolated: 2.06
- Getopt::Long: 2.36
- HTML::Entities: 1.29
- Mail::Sendmail: 0.79
- Time::Local: 1.17
ASNMTAP::Asnmtap::Applications::CGI
- ASNMTAP::Time:
- ASNMTAP::Asnmtap::Applications:
- Carp:
- CGI::Session: 4.20
- Date::Calc: 5.4
- NetAddr::IP: 4.007
- Proc::ProcessTable: 0.39
- Time::Local: 1.17
ASNMTAP::Asnmtap::Applications::Collector
- ASNMTAP::Asnmtap::Applications:
- Carp:
- Time::Local: 1.17
ASNMTAP::Asnmtap::Applications::Display
- ASNMTAP::Asnmtap::Applications:
- Carp:
- Time::Local:
ASNMTAP::Asnmtap::Plugins
- ASNMTAP::Asnmtap:
- Time::HiRes: 1.9704
ASNMTAP::Asnmtap::Plugins::IO
- ASNMTAP::Asnmtap::Plugins:
- IO: 1.20
ASNMTAP::Asnmtap::Plugins::Nagios
- ASNMTAP::Asnmtap::Plugins:
- Time::Local: 1.17
check_template-ldap.pl
- Net::LDAP:
Dependencies Net::LDAP:
- Convert::ASN1 - required
- URI::ldap - optional, needed for URL parsing
- Digest::MD5 - optional, needed for SASL CRAM-MD5 auth
- Net::SSLeay - optional, needed for IO::Socket::SSL
needed OpenSSL-0.9.7b or newer...
- IO::Socket::SSL - optional, needed for Net::LDAPS
- XML::Parser - optional, needed for Net::LDAP::DSML
ASNMTAP::Asnmtap::Plugins::Mail
- Date::Calc: 5.4
- Email::Simple: 1.996
- Mail::POP3Client 2.17
- Mail::Sendmail: 0.79
- MIME::Base64: 3.01
- MIME::Parser 5.419
- Net::IMAP::Simple: 1.16
- Net::POP3: 2.28
- Time::Local: 1.17
ASNMTAP::Asnmtap::Plugins::Modem
- ASNMTAP::Asnmtap::Plugins:
ASNMTAP::Asnmtap::Plugins::SOAP
- ASNMTAP::Asnmtap::Plugins:
- SOAP::Lite:
Dependencies SOAP::Lite:
- libwww-perl:
- MIME::Base64:
- URI:
- WSRF::Lite:
- XML::Parser:
Dependencies WSRF::Lite:
- DateTime:
- DateTime::Format::Epoch:
- DateTime::Format::W3CDTF:
- Digest::SHA1:
- Crypt::OpenSSL::RSA:
- Crypt::OpenSSL::X509:
- HTTP::Daemon::SSL:
- MIME::Base64:
- Sys::Hostname::Long:
- XML::CanonicalizeXML:
- XML::DOM:
Following modules will be loaded on demand only, and are considered optional:
- Crypt::SSLeay HTTPS/SSL support
- Apache mod_perl server implementation (included with mod_perl)
- Net::POP3 POP3 server implementation
- MIME::Lite SMTP client implementation
- IO::File FTP client and IO server
- Net::FTP FTP client
- MQSeries MQSeries transport
- Net::Jabber Jabber transport
- FCGI FastCGI server implementation
- IO::Socket::SSL SSL support for TCP transport
- MIME::Tools MIME attachment support
- DIME::Tools DIME attachment support
- Compress::Zlib HTTP compression support
ASNMTAP::Asnmtap::Plugins::WebTransact
- ASNMTAP::Asnmtap::Plugins:
- Bundle::LWP: 1.11
- CGI: 3.28
- Compress::Zlib: 2.004
- Digest::MD5: 2.33
- Crypt::SSLeay: 0.56
- MIME::Base64: 3.01
- Net::FTP: 2.58
- URI: 1.35
ASNMTAP::Asnmtap::Plugins::XML
- ASNMTAP::Asnmtap::Plugins:
- XML::Parser: 2.34
- XML::LibXML: 1.63
- XML::Simple: 2.14
ASNMTAP::Asnmtap::Plugins::NPTest
- Cwd: 3.25
- Data::Dumper: 2.12
- File::Basename: 2.73
HOWTO:
1) How can i unbless a data structure:
use Data::Structure::Util qw(unbless);
unbless($WSListResults);
Dependencies Data::Structure::Util
- Clone
- File::Find::Rule
- Test::Builder::Tester
- Test::Pod
# COPYRIGHT AND LICENCE - - - - - - - - - - - - - - - - - - - - - - - - -
COPYRIGHT
© Copyright 2000-2007 by Alex Peeters [alex.peeters@citap.be]
Version 3.000.004, 2006/02/12, ASNMTAP CPAN module ASNMTAP::Asnmtap::Plugins::Mail and ASNMTAP::Asnmtap::Plugins::Modem
Version 3.000.003, 2006/02/03, ASNMTAP CPAN module
Version 3.000.002, 2006/01/08, ASNMTAP Package Object Oriented Perl
Version 3.000.001, 2006/01/01, ASNMTAP Package
'ASNMTAP' is based on 'Process System daemons v1.60.17-01' written by Alex Peeters [alex.peeters@citap.be]
'collector.pl' is based on 'Process System daemons v1.60.17-01' written by Alex Peeters [alex.peeters@citap.be]
Purpose: CronTab (CT, sysdCT),
Disk Filesystem monitoring (DF, sysdDF),
Intrusion Detection for FW-1 (ID, sysdID)
Process System daemons (PS, sysdPS),
Reachability of Remote Hosts on a network (RH, sysdRH),
Rotate Logfiles (system activity files) (RL),
Remote Socket monitoring (RS, sysdRS),
System Activity monitoring (SA, sysdSA).
sysdCT : (1.60.1.13) DF|ID|PS|RH|RL|RS|SA
sysdDF : (1.60.1.2) filesystem:percent:[optional stop action]:[optional start action]:support team email
sysdID : (1.60.1.14) ... preparations ...
sysdPS : (1.60.1.1) process:comment:[optional stop action]:[optional start action]:support team email
sysdRH : (1.60.1.9) hostname:ip-adres:gateway:[protocol]:[timeout]:[bytes]:[optional stop action]:[optional start action]:support team email
icmp|tcp|udp >= 0 <= 1024
sysdRS : (1.60.1.15) protocol:ip-adres:port:service:[request]:[timeout]:[status]:[optional stop action]:[optional start action]:support team email
tcp|udp >= 0
sysdSA : (1.60.1.11) process:activity:comment:priority:facility:logfile:[optional stop action]:[optional start action]:support team email
2002/03/02 - 2003/03/01, from v1.60.16.x until v1.60.17-01
2002/01/03 - 2002/02/26, from v1.60.14.x until v1.60.15.x
2001/12/26 - 2002/01/02, from v1.60.13.x until v1.60.14.x
2000/10/19 - 2001/12/24, from v1.60.1.x until v1.60.13.x
'Process System daemons' is based on 'sysdaemon 1.60' written by Trans-Euro I.T Ltd
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
COPYRIGHT
© Copyright 2003-2007 by Alex Peeters [alex.peeters@citap.be]
ASNMTAP::Asnmtap::Plugins::WebTransact is based on 'Nagios::WebTransact', v0.14.1, Stanley.Hopcroft@IPAustralia.Gov.AU
Version 3.000.004, 2006/02/12, ASNMTAP CPAN module ASNMTAP::Asnmtap::Plugins::Mail and ASNMTAP::Asnmtap::Plugins::Modem
Version 3.000.003, 2006/02/03, ASNMTAP CPAN module
Version 3.000.001 - 3.000.002, 2006/01/01 - 2006/01/08, ASNMTAP Package Object Oriented Perl
v0.15.1 - v0.15.19, 2004/02/05 - 2005/12/11
v0.14.1a - v0.14.2, 2004/01/01 - 2004/02/02
COPYRIGHT NOTICE
© Copyright 2003 Stanley.Hopcroft@IPAustralia.Gov.AU
'Nagios::WebTransact', v0.14.1, Stanley.Hopcroft@IPAustralia.Gov.AU
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
COPYRIGHT
© Copyright 2000-2007 by Alex Peeters [alex.peeters@citap.be]
'archive.pl' is based on 'Secure System Backup tool v1.3.2-03' written by Alex Peeters [alex.peeters@citap.be]
'rsync-mirror-distributed-.sh' is based on 'Secure System Backup tool v1.3.2-03' written by Alex Peeters [alex.peeters@citap.be]
'rsync-mirror-failover-.sh' is based on 'Secure System Backup tool v1.3.2-03' written by Alex Peeters [alex.peeters@citap.be]
'rsync-wrapper-distributed-.sh' is based on 'Secure System Backup tool v1.3.2-03' written by Alex Peeters [alex.peeters@citap.be]
'rsync-wrapper-failover-.sh' is based on 'Secure System Backup tool v1.3.2-03' written by Alex Peeters [alex.peeters@citap.be]
'sshWrapperASNMTAP.pl' is based on 'Secure System Backup tool v1.3.2-03' written by Alex Peeters [alex.peeters@citap.be]
2000/12/09 - 2002/01/28, v1.3.2-01 - v1.3.2-03
2000/11/07 - 2000/12/02, v1.3.1-01 - v1.3.1-05
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LICENCE
This ASNMTAP CPAN library and Plugin templates are free software; you can
redistribute it and/or modify it under the same terms as Perl itself.
The other parts of ASNMTAP may be used and modified free of charge by anyone
so long as this copyright notice and the comments above remain intact. By
using this code you agree to indemnify Alex Peeters from any liability that
might arise from it's use.
Selling the code for this program without prior written consent is expressly
forbidden. In other words, please ask first before you try and make money off
of my program.
Obtain permission before redistributing this software over the Internet or
in any other medium. In all cases copyright and header must remain intact.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -