192 lines
4.7 KiB
Perl
192 lines
4.7 KiB
Perl
# ==========================================================================
|
|
#
|
|
# ZoneMinder Common Module, $Date$, $Revision$
|
|
# Copyright (C) 2003, 2004, 2005 Philip Coombes
|
|
#
|
|
# 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, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
#
|
|
# ==========================================================================
|
|
#
|
|
# This module contains the common definitions and functions used by the rest
|
|
# of the ZoneMinder scripts
|
|
#
|
|
package ZoneMinder;
|
|
|
|
use 5.006;
|
|
use strict;
|
|
use warnings;
|
|
|
|
require Exporter;
|
|
|
|
our @ISA = qw(Exporter);
|
|
|
|
# Items to export into callers namespace by default. Note: do not export
|
|
# names by default without a very good reason. Use EXPORT_OK instead.
|
|
# Do not simply export all your public functions/methods/constants.
|
|
|
|
# This allows declaration use ZoneMinder ':all';
|
|
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
|
|
# will save memory.
|
|
our %EXPORT_TAGS = ( 'all' => [ qw(
|
|
|
|
) ] );
|
|
|
|
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
|
|
|
our @EXPORT = qw(
|
|
Error
|
|
Warning
|
|
Info
|
|
Debug
|
|
);
|
|
our @EXPORT_CONFIG; # Get populated by BEGIN
|
|
push( @EXPORT, @EXPORT_CONFIG );
|
|
|
|
our $VERSION = "@VERSION@";
|
|
|
|
use constant ZM_CONFIG => "@ZM_CONFIG@"; # Path to the ZoneMinder config file, autogenerated do not change (from zmconfig)
|
|
|
|
# Load the config from the database into the symbol table
|
|
BEGIN
|
|
{
|
|
no strict 'refs';
|
|
|
|
open( CONFIG, "<".ZM_CONFIG ) or die( "Can't open config file: $!" );
|
|
foreach my $str ( <CONFIG> )
|
|
{
|
|
next if ( $str =~ /^\s*$/ );
|
|
next if ( $str =~ /^\s*#/ );
|
|
my ( $name, $value ) = $str =~ /^\s*([^=\\s]+)\s*=\s*(\S+)\s*$/;
|
|
$name =~ tr/a-z/A-Z/;
|
|
*{$name} = sub { $value };
|
|
push( @EXPORT_CONFIG, $name );
|
|
}
|
|
close( CONFIG );
|
|
|
|
use DBI;
|
|
my $dbh = DBI->connect( "DBI:mysql:database=".&ZM_DB_NAME.";host=".&ZM_DB_HOST, &ZM_DB_USER, &ZM_DB_PASS );
|
|
my $sql = "select * from Config";
|
|
my $sth = $dbh->prepare_cached( $sql ) or die( "Can't prepare '$sql': ".$dbh->errstr() );
|
|
my $res = $sth->execute() or die( "Can't execute: ".$sth->errstr() );
|
|
while( my $config = $sth->fetchrow_hashref() )
|
|
{
|
|
*{$config->{Name}} = sub { $config->{Value} };
|
|
push( @EXPORT_CONFIG, $config->{Name} );
|
|
}
|
|
$sth->finish();
|
|
$dbh->disconnect();
|
|
}
|
|
|
|
# Preloaded methods go here.
|
|
|
|
use POSIX;
|
|
use Time::HiRes qw/gettimeofday/;
|
|
|
|
our $dbg_id = "zm";
|
|
|
|
sub dbgPrint
|
|
{
|
|
my $code = shift;
|
|
my $string = shift;
|
|
my $line = shift;
|
|
|
|
$string =~ s/[\r\n]+$//g;
|
|
|
|
my ($seconds, $microseconds) = gettimeofday();
|
|
if ( $line )
|
|
{
|
|
my $file = __FILE__;
|
|
$file =~ s|^.*/||g;
|
|
printf( STDERR "%s.%06d %s[%d].%s-%s/%d [%s]\n", strftime( "%x %H:%M:%S", localtime( $seconds ) ), $microseconds, $dbg_id, $$, $file, $line, $code, $string );
|
|
}
|
|
else
|
|
{
|
|
printf( STDERR "%s.%06d %s[%d].%s [%s]\n", strftime( "%x %H:%M:%S", localtime( $seconds ) ), $microseconds, $dbg_id, $$, $code, $string );
|
|
}
|
|
}
|
|
|
|
sub Debug
|
|
{
|
|
dbgPrint( "DBG", $_[0] ) if ( main::DBG_LEVEL >= 1 );
|
|
}
|
|
|
|
sub Info
|
|
{
|
|
dbgPrint( "INF", $_[0] ) if ( main::DBG_LEVEL >= 0 );
|
|
}
|
|
|
|
sub Warning
|
|
{
|
|
dbgPrint( "WAR", $_[0] ) if ( main::DBG_LEVEL >= -1 );
|
|
}
|
|
|
|
sub Error
|
|
{
|
|
dbgPrint( "ERR", $_[0] ) if ( main::DBG_LEVEL >= -2 );
|
|
}
|
|
|
|
1;
|
|
__END__
|
|
# Below is stub documentation for your module. You'd better edit it!
|
|
|
|
=head1 NAME
|
|
|
|
ZoneMinder - Perl extension for blah blah blah
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use ZoneMinder;
|
|
blah blah blah
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Stub documentation for ZoneMinder, created by h2xs. It looks like the
|
|
author of the extension was negligent enough to leave the stub
|
|
unedited.
|
|
|
|
Blah blah blah.
|
|
|
|
=head2 EXPORT
|
|
|
|
None by default.
|
|
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
Mention other useful documentation such as the documentation of
|
|
related modules or operating system documentation (such as man pages
|
|
in UNIX), or any relevant external documentation such as RFCs or
|
|
standards.
|
|
|
|
If you have a mailing list set up for your module, mention it here.
|
|
|
|
If you have a web site set up for your module, mention it here.
|
|
|
|
=head1 AUTHOR
|
|
|
|
Philip Coombes, E<lt>stan@localdomainE<gt>
|
|
|
|
=head1 COPYRIGHT AND LICENSE
|
|
|
|
Copyright (C) 2005 by Philip Coombes
|
|
|
|
This library is free software; you can redistribute it and/or modify
|
|
it under the same terms as Perl itself, either Perl version 5.8.3 or,
|
|
at your option, any later version of Perl 5 you may have available.
|
|
|
|
|
|
=cut
|