fix spacing, braces, quotes

This commit is contained in:
Isaac Connor 2017-06-07 15:28:31 -04:00
parent a9ebcd6e8a
commit c55814647c
1 changed files with 246 additions and 251 deletions

View File

@ -55,6 +55,7 @@ a sql file, which can then be easily imported to another zoneminder system.
--help - Print usage information.
--user=<dbuser> - Alternate dB user with privileges to alter dB.
--pass=<dbpass> - Password of alternate dB user with privileges to alter dB.
--version - Print version.
=cut
use strict;
@ -149,8 +150,7 @@ if ($topreset) {
###############
# Execute a pre-built sql select query
sub selectQuery
{
sub selectQuery {
my $dbh = shift;
my $sql = shift;
my $monitorid = shift;
@ -167,8 +167,7 @@ sub selectQuery
}
# Exectute a pre-built sql query
sub runQuery
{
sub runQuery {
my $dbh = shift;
my $sql = shift;
my $sth = $dbh->prepare_cached( $sql )
@ -181,14 +180,13 @@ sub runQuery
}
# Build and execute a sql insert query
sub insertQuery
{
sub insertQuery {
my $dbh = shift;
my $tablename = shift;
my @data = @_;
my $sql = "INSERT INTO $tablename VALUES (NULL,"
.(join ", ", ("?") x @data).")"; # Add "?" for each array element
.(join ', ', ('?') x @data).')'; # Add "?" for each array element
my $sth = $dbh->prepare_cached( $sql )
or die( "Can't prepare '$sql': ".$dbh->errstr() );
@ -200,8 +198,7 @@ sub insertQuery
}
# Build and execute a sql delete query
sub deleteQuery
{
sub deleteQuery {
my $dbh = shift;
my $sqltable = shift;
my $sqlname = shift;
@ -217,8 +214,7 @@ sub deleteQuery
}
# Build and execute a sql select count query
sub checkExists
{
sub checkExists {
my $dbh = shift;
my $sqltable = shift;
my $sqlname = shift;
@ -241,8 +237,7 @@ sub checkExists
}
# Import camera control & presets into the zoneminder dB
sub importsql
{
sub importsql {
my @newcontrols;
my @overwritecontrols;
my @skippedcontrols;
@ -258,12 +253,12 @@ sub importsql
$sqlfile = $Config{ZM_PATH_DATA}.'/db/zm_create.sql';
}
open(my $SQLFILE,"<",$sqlfile)
open(my $SQLFILE,'<',$sqlfile)
or die( "Can't Open file: $!\n" );
# Find and extract ptz control and monitor preset records
# Find and extract ptz control and monitor preset records
while (<$SQLFILE>) {
# Our regex replaces the primary key with NULL
# Our regex replaces the primary key with NULL
if (s/^(INSERT INTO .*?Controls.*? VALUES \().*?(,')(.*?)(',.*)/$1NULL$2$3$4/i) {
$controls{$3} = $_;
} elsif (s/^(INSERT INTO .*?MonitorPresets.*? VALUES \().*?(,')(.*?)(',.*)/$1NULL$2$3$4/i) {
@ -276,115 +271,113 @@ sub importsql
die( "Error: No relevant data found in $sqlfile.\n" );
}
# Now that we've got what we were looking for,
# compare to what is already in the dB
# Now that we've got what we were looking for,
# compare to what is already in the dB
my $dbh = zmDbConnect();
foreach (keys %controls) {
if (!checkExists($dbh,"Controls",$_)) {
# No existing Control was found. Add new control to dB.
if (!checkExists($dbh,'Controls',$_)) {
# No existing Control was found. Add new control to dB.
runQuery($dbh,$controls{$_});
push @newcontrols, $_;
} elsif ($overwrite) {
# An existing Control was found and the overwrite flag is set.
# Overwrite the control.
deleteQuery($dbh,"Controls",$_);
# An existing Control was found and the overwrite flag is set.
# Overwrite the control.
deleteQuery($dbh,'Controls',$_);
runQuery($dbh,$controls{$_});
push @overwritecontrols, $_;
} else {
# An existing Control was found and the overwrite flag was not set.
# Do nothing.
# An existing Control was found and the overwrite flag was not set.
# Do nothing.
push @skippedcontrols, $_;
}
}
foreach (keys %monitorpresets) {
if (!checkExists($dbh,"MonitorPresets",$_)) {
# No existing MonitorPreset was found. Add new MonitorPreset to dB.
if (!checkExists($dbh,'MonitorPresets',$_)) {
# No existing MonitorPreset was found. Add new MonitorPreset to dB.
runQuery($dbh,$monitorpresets{$_});
push @newpresets, $_;
} elsif ($overwrite) {
# An existing MonitorPreset was found and the overwrite flag is set.
# Overwrite the MonitorPreset.
deleteQuery($dbh,"MonitorPresets",$_);
# An existing MonitorPreset was found and the overwrite flag is set.
# Overwrite the MonitorPreset.
deleteQuery($dbh,'MonitorPresets',$_);
runQuery($dbh,$monitorpresets{$_});
push @overwritepresets, $_;
} else {
# An existing MonitorPreset was found and the overwrite flag was
# not set. Do nothing.
# An existing MonitorPreset was found and the overwrite flag was
# not set. Do nothing.
push @skippedpresets, $_;
}
}
if (@newcontrols) {
print "Number of ptz camera controls added: "
print 'Number of ptz camera controls added: '
.scalar(@newcontrols)."\n";
}
if (@overwritecontrols) {
print "Number of existing ptz camera controls overwritten: "
print 'Number of existing ptz camera controls overwritten: '
.scalar(@overwritecontrols)."\n";
}
if (@skippedcontrols) {
print "Number of existing ptz camera controls skipped: "
print 'Number of existing ptz camera controls skipped: '
.scalar(@skippedcontrols)."\n";
}
if (@newpresets) {
print "Number of monitor presets added: "
print 'Number of monitor presets added: '
.scalar(@newpresets)."\n";
}
if (@overwritepresets) {
print "Number of existing monitor presets overwritten: "
print 'Number of existing monitor presets overwritten: '
.scalar(@overwritepresets)."\n";
}
if (@skippedpresets) {
print "Number of existing presets skipped: "
print 'Number of existing presets skipped: '
.scalar(@skippedpresets)."\n";
}
}
# Export camera controls & presets from the zoneminder dB to STDOUT
sub exportsql
{
sub exportsql {
my ( $host, $port ) = ( $Config{ZM_DB_HOST} =~ /^([^:]+)(?::(.+))?$/ );
my $command = "mysqldump -t --skip-opt --compact -h".$host;
$command .= " -P".$port if defined($port);
if ( $dbUser ) {
$command .= " -u".$dbUser;
my ( $host, $port ) = ( $Config{ZM_DB_HOST} =~ /^([^:]+)(?::(.+))?$/ );
my $command = 'mysqldump -t --skip-opt --compact -h'.$host;
$command .= ' -P'.$port if defined($port);
if ( $dbUser ) {
$command .= ' -u'.$dbUser;
if ( $dbPass ) {
$command .= " -p".$dbPass;
$command .= ' -p'.$dbPass;
}
}
if ($ARGV[0]) {
if ($ARGV[0]) {
$command .= qq( --where="Name = '$ARGV[0]'");
}
}
$command .= " zm Controls MonitorPresets";
$command .= " zm Controls MonitorPresets";
my $output = qx($command);
my $status = $? >> 8;
if ( $status || logDebugging() ) {
my $output = qx($command);
my $status = $? >> 8;
if ( $status || logDebugging() ) {
chomp( $output );
print( "Output: $output\n" );
}
if ( $status ) {
}
if ( $status ) {
die( "Command '$command' exited with status: $status\n" );
} else {
# NULLify the primary keys before printing the output to STDOUT
} else {
# NULLify the primary keys before printing the output to STDOUT
$output =~ s/VALUES \((.*?),'/VALUES \(NULL,'/ig;
print $output;
}
}
sub toPreset
{
sub toPreset {
my $dbh = zmDbConnect();
my $monitorid = $ARGV[0];
# Grap the following fields from the Monitors table
my $sql = "SELECT
# Grap the following fields from the Monitors table
my $sql = 'SELECT
Name,
Type,
Device,
@ -406,15 +399,15 @@ sub toPreset
ControlAddress,
DefaultRate,
DefaultScale
FROM Monitors WHERE Id = ?";
FROM Monitors WHERE Id = ?';
my @data = selectQuery($dbh,$sql,$monitorid);
if (!@data) {
die( "Error: Monitor Id $monitorid does not appear to exist in the database.\n" );
}
# Attempt to search for and replace system specific values such as
# ip addresses, ports, usernames, etc. with generic placeholders
# Attempt to search for and replace system specific values such as
# ip addresses, ports, usernames, etc. with generic placeholders
if (!$noregex) {
foreach (@data) {
next if ! $_;
@ -429,19 +422,21 @@ sub toPreset
}
if (!checkExists($dbh,"MonitorPresets",$data[0])) {
# No existing Preset was found. Add new Preset to dB.
# No existing Preset was found. Add new Preset to dB.
print "Adding new preset: $data[0]\n";
insertQuery($dbh,"MonitorPresets",@data);
insertQuery($dbh,'MonitorPresets',@data);
} elsif ($overwrite) {
# An existing Control was found and the overwrite flag is set.
# Overwrite the control.
# An existing Control was found and the overwrite flag is set.
# Overwrite the control.
print "Existing preset $data[0] detected.\nOverwriting...\n";
deleteQuery($dbh,"MonitorPresets",$data[0]);
insertQuery($dbh,"MonitorPresets",@data);
deleteQuery($dbh,'MonitorPresets',$data[0]);
insertQuery($dbh,'MonitorPresets',@data);
} else {
# An existing Control was found and the overwrite flag was not set.
# Do nothing.
# An existing Control was found and the overwrite flag was not set.
# Do nothing.
print "Existing preset $data[0] detected and overwrite flag not set.\nSkipping...\n";
}
}
1;
__END__