Merge branch 'master' of github.com:ZoneMinder/zoneminder
This commit is contained in:
commit
c6adf46384
|
@ -236,6 +236,11 @@ sub Sql {
|
||||||
|| $term->{attr} eq 'Cause'
|
|| $term->{attr} eq 'Cause'
|
||||||
|| $term->{attr} eq 'Notes'
|
|| $term->{attr} eq 'Notes'
|
||||||
) {
|
) {
|
||||||
|
if ( $term->{op} eq 'LIKE'
|
||||||
|
|| $term->{op} eq 'NOT LIKE'
|
||||||
|
) {
|
||||||
|
$temp_value = '%'.$temp_value.'%' if $temp_value !~ /%/;
|
||||||
|
}
|
||||||
$value = "'$temp_value'";
|
$value = "'$temp_value'";
|
||||||
} elsif ( $term->{attr} eq 'DateTime' or $term->{attr} eq 'StartDateTime' or $term->{attr} eq 'EndDateTime' ) {
|
} elsif ( $term->{attr} eq 'DateTime' or $term->{attr} eq 'StartDateTime' or $term->{attr} eq 'EndDateTime' ) {
|
||||||
if ( $temp_value eq 'NULL' ) {
|
if ( $temp_value eq 'NULL' ) {
|
||||||
|
@ -295,6 +300,10 @@ sub Sql {
|
||||||
$self->{Sql} .= ' IN ('.join(',', @value_list).')';
|
$self->{Sql} .= ' IN ('.join(',', @value_list).')';
|
||||||
} elsif ( $term->{op} eq '!~' ) {
|
} elsif ( $term->{op} eq '!~' ) {
|
||||||
$self->{Sql} .= ' NOT IN ('.join(',', @value_list).')';
|
$self->{Sql} .= ' NOT IN ('.join(',', @value_list).')';
|
||||||
|
} elsif ( $term->{op} eq 'LIKE' ) {
|
||||||
|
$self->{Sql} .= " LIKE $value";
|
||||||
|
} elsif ( $term->{op} eq 'NOT LIKE' ) {
|
||||||
|
$self->{Sql} .= " NOT LIKE $value";
|
||||||
} else {
|
} else {
|
||||||
$self->{Sql} .= ' '.$term->{op}.' '.$value;
|
$self->{Sql} .= ' '.$term->{op}.' '.$value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ if ( $version ) {
|
||||||
if ( $help ) {
|
if ( $help ) {
|
||||||
pod2usage(-exitstatus => -1);
|
pod2usage(-exitstatus => -1);
|
||||||
}
|
}
|
||||||
if ( ! defined $interval ) {
|
if ( !defined $interval ) {
|
||||||
$interval = eval($Config{ZM_TELEMETRY_INTERVAL});
|
$interval = eval($Config{ZM_TELEMETRY_INTERVAL});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,16 +69,17 @@ if ( !($Config{ZM_TELEMETRY_DATA} or $force) ) {
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
print 'ZoneMinder Telemetry Agent starting at '.strftime( '%y/%m/%d %H:%M:%S', localtime() )."\n";
|
print 'ZoneMinder Telemetry Agent starting at '.strftime('%y/%m/%d %H:%M:%S', localtime())."\n";
|
||||||
|
|
||||||
my $lastCheck = $Config{ZM_TELEMETRY_LAST_UPLOAD};
|
my $lastCheck = $Config{ZM_TELEMETRY_LAST_UPLOAD};
|
||||||
|
|
||||||
while( 1 ) {
|
while( 1 ) {
|
||||||
my $now = time();
|
my $now = time();
|
||||||
my $since_last_check = $now-$lastCheck;
|
my $since_last_check = $now-$lastCheck;
|
||||||
Debug(" Last Check time (now($now) - lastCheck($lastCheck)) = $since_last_check > interval($interval) or force($force)");
|
Debug("Last Check time (now($now) - lastCheck($lastCheck)) = $since_last_check > interval($interval) or force($force)");
|
||||||
if ( $since_last_check < 0 ) {
|
if ( $since_last_check < 0 ) {
|
||||||
Warning( 'Seconds since last check is negative! Which means that lastCheck is in the future!' );
|
Warning('Seconds since last check is negative! Which means that lastCheck is in the future!');
|
||||||
|
sleep($interval);
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
if ( ( ($since_last_check) > $interval ) or $force ) {
|
if ( ( ($since_last_check) > $interval ) or $force ) {
|
||||||
|
@ -88,8 +89,8 @@ while( 1 ) {
|
||||||
# We should keep *BSD systems in mind when calling system commands
|
# We should keep *BSD systems in mind when calling system commands
|
||||||
my %telemetry;
|
my %telemetry;
|
||||||
$telemetry{uuid} = getUUID($dbh);
|
$telemetry{uuid} = getUUID($dbh);
|
||||||
($telemetry{city}, $telemetry{region}, $telemetry{country}, $telemetry{latitude}, $telemetry{longitude}) = getGeo();
|
@telemetry{qw(city region country latitude longitude)} = getGeo();
|
||||||
$telemetry{timestamp} = strftime( '%Y-%m-%dT%H:%M:%S%z', localtime() );
|
$telemetry{timestamp} = strftime('%Y-%m-%dT%H:%M:%S%z', localtime());
|
||||||
$telemetry{monitor_count} = countQuery($dbh,'Monitors');
|
$telemetry{monitor_count} = countQuery($dbh,'Monitors');
|
||||||
$telemetry{event_count} = countQuery($dbh,'Events');
|
$telemetry{event_count} = countQuery($dbh,'Events');
|
||||||
$telemetry{architecture} = runSysCmd('uname -p');
|
$telemetry{architecture} = runSysCmd('uname -p');
|
||||||
|
@ -138,6 +139,7 @@ sub runSysCmd {
|
||||||
chomp($path);
|
chomp($path);
|
||||||
$arguments[0] = $path;
|
$arguments[0] = $path;
|
||||||
my $cmd = join(' ',@arguments);
|
my $cmd = join(' ',@arguments);
|
||||||
|
($cmd) = $cmd =~ /(.*)/; # detaint
|
||||||
$result = qx( $cmd );
|
$result = qx( $cmd );
|
||||||
chomp($result);
|
chomp($result);
|
||||||
}
|
}
|
||||||
|
@ -221,7 +223,7 @@ sub getGeo {
|
||||||
} else {
|
} else {
|
||||||
Warning("Geoip data retrieval returned HTTP POST error code: $resp_code");
|
Warning("Geoip data retrieval returned HTTP POST error code: $resp_code");
|
||||||
Debug("Geoip data retrieval failure response message: $resp_msg");
|
Debug("Geoip data retrieval failure response message: $resp_msg");
|
||||||
return ($unknown, $unknown, $unknown, $unknown);
|
return ($unknown, $unknown, $unknown, $unknown, $unknown);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ protected $defaults = array(
|
||||||
'Channel' => 0,
|
'Channel' => 0,
|
||||||
'Format' => '0',
|
'Format' => '0',
|
||||||
'V4LMultiBuffer' => null,
|
'V4LMultiBuffer' => null,
|
||||||
'V4LCapturesPerFrame' => null,
|
'V4LCapturesPerFrame' => 1,
|
||||||
'Protocol' => null,
|
'Protocol' => null,
|
||||||
'Method' => '',
|
'Method' => '',
|
||||||
'Host' => null,
|
'Host' => null,
|
||||||
|
|
|
@ -78,7 +78,7 @@ if ( $action == 'monitor' ) {
|
||||||
$restart = false;
|
$restart = false;
|
||||||
|
|
||||||
if ( count($changes) ) {
|
if ( count($changes) ) {
|
||||||
if ( $mid ) {
|
if ( $monitor->Id() ) {
|
||||||
|
|
||||||
# If we change anything that changes the shared mem size, zma can complain. So let's stop first.
|
# If we change anything that changes the shared mem size, zma can complain. So let's stop first.
|
||||||
if ( $monitor->Type() != 'WebSite' ) {
|
if ( $monitor->Type() != 'WebSite' ) {
|
||||||
|
@ -203,6 +203,8 @@ if ( $action == 'monitor' ) {
|
||||||
dbQuery("INSERT INTO Zones SET MonitorId = ?, Name = 'All', Type = 'Active', Units = 'Percent', NumCoords = 4, Coords = ?, Area=?, AlarmRGB = 0xff0000, CheckMethod = 'Blobs', MinPixelThreshold = 25, MinAlarmPixels=?, MaxAlarmPixels=?, FilterX = 3, FilterY = 3, MinFilterPixels=?, MaxFilterPixels=?, MinBlobPixels=?, MinBlobs = 1", array( $mid, sprintf( "%d,%d %d,%d %d,%d %d,%d", 0, 0, $_REQUEST['newMonitor']['Width']-1, 0, $_REQUEST['newMonitor']['Width']-1, $_REQUEST['newMonitor']['Height']-1, 0, $_REQUEST['newMonitor']['Height']-1 ), $zoneArea, intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*2)/100) ) );
|
dbQuery("INSERT INTO Zones SET MonitorId = ?, Name = 'All', Type = 'Active', Units = 'Percent', NumCoords = 4, Coords = ?, Area=?, AlarmRGB = 0xff0000, CheckMethod = 'Blobs', MinPixelThreshold = 25, MinAlarmPixels=?, MaxAlarmPixels=?, FilterX = 3, FilterY = 3, MinFilterPixels=?, MaxFilterPixels=?, MinBlobPixels=?, MinBlobs = 1", array( $mid, sprintf( "%d,%d %d,%d %d,%d %d,%d", 0, 0, $_REQUEST['newMonitor']['Width']-1, 0, $_REQUEST['newMonitor']['Width']-1, $_REQUEST['newMonitor']['Height']-1, 0, $_REQUEST['newMonitor']['Height']-1 ), $zoneArea, intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*2)/100) ) );
|
||||||
//$view = 'none';
|
//$view = 'none';
|
||||||
$Storage = $monitor->Storage();
|
$Storage = $monitor->Storage();
|
||||||
|
|
||||||
|
error_reporting(0);
|
||||||
mkdir($Storage->Path().'/'.$mid, 0755);
|
mkdir($Storage->Path().'/'.$mid, 0755);
|
||||||
$saferName = basename($_REQUEST['newMonitor']['Name']);
|
$saferName = basename($_REQUEST['newMonitor']['Name']);
|
||||||
symlink($mid, $Storage->Path().'/'.$saferName);
|
symlink($mid, $Storage->Path().'/'.$saferName);
|
||||||
|
|
|
@ -1223,6 +1223,9 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
|
||||||
case 'Name':
|
case 'Name':
|
||||||
case 'Cause':
|
case 'Cause':
|
||||||
case 'Notes':
|
case 'Notes':
|
||||||
|
if($term['op'] == 'LIKE' || $term['op'] == 'NOT LIKE') {
|
||||||
|
$value = '%'.$value.'%';
|
||||||
|
}
|
||||||
$value = dbEscape($value);
|
$value = dbEscape($value);
|
||||||
break;
|
break;
|
||||||
case 'MonitorServerId':
|
case 'MonitorServerId':
|
||||||
|
@ -1275,6 +1278,8 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
|
||||||
case '>' :
|
case '>' :
|
||||||
case '<' :
|
case '<' :
|
||||||
case '<=' :
|
case '<=' :
|
||||||
|
case 'LIKE' :
|
||||||
|
case 'NOT LIKE':
|
||||||
$filter['sql'] .= ' '.$term['op'].' '. $value;
|
$filter['sql'] .= ' '.$term['op'].' '. $value;
|
||||||
break;
|
break;
|
||||||
case '=~' :
|
case '=~' :
|
||||||
|
|
|
@ -579,6 +579,8 @@ $SLANG = array(
|
||||||
'OpNotMatches' => 'does not match',
|
'OpNotMatches' => 'does not match',
|
||||||
'OpIs' => 'is',
|
'OpIs' => 'is',
|
||||||
'OpIsNot' => 'is not',
|
'OpIsNot' => 'is not',
|
||||||
|
'OpLike' => 'contains',
|
||||||
|
'OpNotLike' => 'does not contain',
|
||||||
'OptionalEncoderParam' => 'Optional Encoder Parameters',
|
'OptionalEncoderParam' => 'Optional Encoder Parameters',
|
||||||
'OptionHelp' => 'Option Help',
|
'OptionHelp' => 'Option Help',
|
||||||
'OptionRestartWarning' => 'These changes may not come into effect fully\nwhile the system is running. When you have\nfinished making your changes please ensure that\nyou restart ZoneMinder.',
|
'OptionRestartWarning' => 'These changes may not come into effect fully\nwhile the system is running. When you have\nfinished making your changes please ensure that\nyou restart ZoneMinder.',
|
||||||
|
|
|
@ -115,6 +115,8 @@ $opTypes = array(
|
||||||
'![]' => translate('OpNotIn'),
|
'![]' => translate('OpNotIn'),
|
||||||
'IS' => translate('OpIs'),
|
'IS' => translate('OpIs'),
|
||||||
'IS NOT' => translate('OpIsNot'),
|
'IS NOT' => translate('OpIsNot'),
|
||||||
|
'LIKE' => translate('OpLike'),
|
||||||
|
'NOT LIKE' => translate('OpNotLike'),
|
||||||
);
|
);
|
||||||
|
|
||||||
$archiveTypes = array(
|
$archiveTypes = array(
|
||||||
|
|
Loading…
Reference in New Issue