spacing and use Error instead of fprintf(stderr) so that things get logged.

This commit is contained in:
Isaac Connor 2019-04-04 09:35:37 -04:00
parent e59eb510e3
commit 8de7d576a5
1 changed files with 99 additions and 103 deletions

View File

@ -426,11 +426,11 @@ int main(int argc, char *argv[]) {
if ( config.opt_use_auth ) { if ( config.opt_use_auth ) {
if ( strcmp(config.auth_relay, "none") == 0 ) { if ( strcmp(config.auth_relay, "none") == 0 ) {
if ( !checkUser(username)) { if ( !checkUser(username)) {
fprintf(stderr, "Error, username greater than allowed 32 characters\n"); Error("Username greater than allowed 32 characters");
exit_zmu(-1); exit_zmu(-1);
} }
if ( !username ) { if ( !username ) {
fprintf(stderr, "Error, username must be supplied\n"); Error("Username must be supplied");
exit_zmu(-1); exit_zmu(-1);
} }
@ -439,36 +439,32 @@ int main(int argc, char *argv[]) {
} }
} else { } else {
if ( !(username && password) && !auth ) { if ( !(username && password) && !auth ) {
fprintf(stderr, "Error, username and password or auth string must be supplied\n"); Error("Username and password or auth string must be supplied");
exit_zmu(-1); exit_zmu(-1);
} }
if ( !checkUser(username)) { if ( !checkUser(username)) {
fprintf(stderr, "Error, username greater than allowed 32 characters\n"); Error("Username greater than allowed 32 characters");
exit_zmu(-1); exit_zmu(-1);
} }
if ( !checkPass(password)) { if ( !checkPass(password)) {
fprintf(stderr, "Error, password greater than allowed 64 characters\n"); Error("Password greater than allowed 64 characters");
exit_zmu(-1); exit_zmu(-1);
} }
//if ( strcmp( config.auth_relay, "hashed" ) == 0 )
{
if ( auth ) { if ( auth ) {
user = zmLoadAuthUser(auth, false); user = zmLoadAuthUser(auth, false);
} }
}
//else if ( strcmp( config.auth_relay, "plain" ) == 0 )
{
if ( username && password ) { if ( username && password ) {
user = zmLoadUser(username, password); user = zmLoadUser(username, password);
} }
} } // auth relay == none or not
}
if ( !user ) { if ( !user ) {
fprintf(stderr, "Error, unable to authenticate user\n"); Error("Unable to authenticate user");
return exit_zmu(-1); exit_zmu(-1);
} }
if ( !ValidateAccess(user, mon_id, function) ) { if ( !ValidateAccess(user, mon_id, function) ) {
fprintf(stderr, "Error, insufficient privileges for requested action\n"); Error("Insufficient privileges for requested action");
exit_zmu(-1); exit_zmu(-1);
} }
} // end if auth } // end if auth
@ -503,201 +499,201 @@ int main(int argc, char *argv[]) {
if ( verbose ) { if ( verbose ) {
char timestamp_str[64] = "None"; char timestamp_str[64] = "None";
if ( timestamp.tv_sec ) if ( timestamp.tv_sec )
strftime( timestamp_str, sizeof(timestamp_str), "%Y-%m-%d %H:%M:%S", localtime( &timestamp.tv_sec ) ); strftime(timestamp_str, sizeof(timestamp_str), "%Y-%m-%d %H:%M:%S", localtime(&timestamp.tv_sec));
if ( image_idx == -1 ) if ( image_idx == -1 )
printf( "Time of last image capture: %s.%02ld\n", timestamp_str, timestamp.tv_usec/10000 ); printf("Time of last image capture: %s.%02ld\n", timestamp_str, timestamp.tv_usec/10000);
else else
printf( "Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, timestamp.tv_usec/10000 ); printf("Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, timestamp.tv_usec/10000);
} else { } else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
printf( "%ld.%02ld", timestamp.tv_sec, timestamp.tv_usec/10000 ); printf("%ld.%02ld", timestamp.tv_sec, timestamp.tv_usec/10000);
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_READ_IDX ) { if ( function & ZMU_READ_IDX ) {
if ( verbose ) if ( verbose )
printf( "Last read index: %d\n", monitor->GetLastReadIndex() ); printf("Last read index: %d\n", monitor->GetLastReadIndex());
else { else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
printf( "%d", monitor->GetLastReadIndex() ); printf("%d", monitor->GetLastReadIndex());
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_WRITE_IDX ) { if ( function & ZMU_WRITE_IDX ) {
if ( verbose ) if ( verbose ) {
printf( "Last write index: %d\n", monitor->GetLastWriteIndex() ); printf("Last write index: %d\n", monitor->GetLastWriteIndex());
else { } else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
printf( "%d", monitor->GetLastWriteIndex() ); printf("%d", monitor->GetLastWriteIndex());
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_EVENT ) { if ( function & ZMU_EVENT ) {
if ( verbose ) if ( verbose ) {
printf( "Last event id: %" PRIu64 "\n", monitor->GetLastEventId() ); printf("Last event id: %" PRIu64 "\n", monitor->GetLastEventId());
else { } else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
printf( "%" PRIu64, monitor->GetLastEventId() ); printf("%" PRIu64, monitor->GetLastEventId());
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_FPS ) { if ( function & ZMU_FPS ) {
if ( verbose ) if ( verbose )
printf( "Current capture rate: %.2f frames per second\n", monitor->GetFPS() ); printf("Current capture rate: %.2f frames per second\n", monitor->GetFPS());
else { else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
printf( "%.2f", monitor->GetFPS() ); printf("%.2f", monitor->GetFPS());
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_IMAGE ) { if ( function & ZMU_IMAGE ) {
if ( verbose ) { if ( verbose ) {
if ( image_idx == -1 ) if ( image_idx == -1 )
printf( "Dumping last image captured to Monitor%d.jpg", monitor->Id() ); printf("Dumping last image captured to Monitor%d.jpg", monitor->Id());
else else
printf( "Dumping buffer image %d to Monitor%d.jpg", image_idx, monitor->Id() ); printf("Dumping buffer image %d to Monitor%d.jpg", image_idx, monitor->Id());
if ( scale != -1 ) if ( scale != -1 )
printf( ", scaling by %d%%", scale ); printf(", scaling by %d%%", scale);
printf( "\n" ); printf("\n");
} }
monitor->GetImage( image_idx, scale>0?scale:100 ); monitor->GetImage(image_idx, scale>0?scale:100);
} }
if ( function & ZMU_ZONES ) { if ( function & ZMU_ZONES ) {
if ( verbose ) if ( verbose )
printf( "Dumping zone image to Zones%d.jpg\n", monitor->Id() ); printf("Dumping zone image to Zones%d.jpg\n", monitor->Id());
monitor->DumpZoneImage( zoneString ); monitor->DumpZoneImage(zoneString);
} }
if ( function & ZMU_ALARM ) { if ( function & ZMU_ALARM ) {
if ( verbose ) if ( verbose )
printf( "Forcing alarm on\n" ); printf("Forcing alarm on\n");
monitor->ForceAlarmOn( config.forced_alarm_score, "Forced Web" ); monitor->ForceAlarmOn(config.forced_alarm_score, "Forced Web");
while ( monitor->GetState() != Monitor::ALARM ) { while ( monitor->GetState() != Monitor::ALARM ) {
// Wait for monitor to notice. // Wait for monitor to notice.
usleep(1000); usleep(1000);
} }
printf( "Alarmed event id: %" PRIu64 "\n", monitor->GetLastEventId() ); printf("Alarmed event id: %" PRIu64 "\n", monitor->GetLastEventId());
} }
if ( function & ZMU_NOALARM ) { if ( function & ZMU_NOALARM ) {
if ( verbose ) if ( verbose )
printf( "Forcing alarm off\n" ); printf("Forcing alarm off\n");
monitor->ForceAlarmOff(); monitor->ForceAlarmOff();
} }
if ( function & ZMU_CANCEL ) { if ( function & ZMU_CANCEL ) {
if ( verbose ) if ( verbose )
printf( "Cancelling forced alarm on/off\n" ); printf("Cancelling forced alarm on/off\n");
monitor->CancelForced(); monitor->CancelForced();
} }
if ( function & ZMU_RELOAD ) { if ( function & ZMU_RELOAD ) {
if ( verbose ) if ( verbose )
printf( "Reloading monitor settings\n" ); printf("Reloading monitor settings\n");
monitor->actionReload(); monitor->actionReload();
} }
if ( function & ZMU_ENABLE ) { if ( function & ZMU_ENABLE ) {
if ( verbose ) if ( verbose )
printf( "Enabling event generation\n" ); printf("Enabling event generation\n");
monitor->actionEnable(); monitor->actionEnable();
} }
if ( function & ZMU_DISABLE ) { if ( function & ZMU_DISABLE ) {
if ( verbose ) if ( verbose )
printf( "Disabling event generation\n" ); printf("Disabling event generation\n");
monitor->actionDisable(); monitor->actionDisable();
} }
if ( function & ZMU_SUSPEND ) { if ( function & ZMU_SUSPEND ) {
if ( verbose ) if ( verbose )
printf( "Suspending event generation\n" ); printf("Suspending event generation\n");
monitor->actionSuspend(); monitor->actionSuspend();
} }
if ( function & ZMU_RESUME ) { if ( function & ZMU_RESUME ) {
if ( verbose ) if ( verbose )
printf( "Resuming event generation\n" ); printf("Resuming event generation\n");
monitor->actionResume(); monitor->actionResume();
} }
if ( function & ZMU_QUERY ) { if ( function & ZMU_QUERY ) {
char monString[16382] = ""; char monString[16382] = "";
monitor->DumpSettings( monString, verbose ); monitor->DumpSettings(monString, verbose);
printf( "%s\n", monString ); printf("%s\n", monString);
} }
if ( function & ZMU_BRIGHTNESS ) { if ( function & ZMU_BRIGHTNESS ) {
if ( verbose ) { if ( verbose ) {
if ( brightness >= 0 ) if ( brightness >= 0 )
printf( "New brightness: %d\n", monitor->actionBrightness( brightness ) ); printf("New brightness: %d\n", monitor->actionBrightness(brightness));
else else
printf( "Current brightness: %d\n", monitor->actionBrightness() ); printf("Current brightness: %d\n", monitor->actionBrightness());
} else { } else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
if ( brightness >= 0 ) if ( brightness >= 0 )
printf( "%d", monitor->actionBrightness( brightness ) ); printf("%d", monitor->actionBrightness(brightness));
else else
printf( "%d", monitor->actionBrightness() ); printf("%d", monitor->actionBrightness());
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_CONTRAST ) { if ( function & ZMU_CONTRAST ) {
if ( verbose ) { if ( verbose ) {
if ( contrast >= 0 ) if ( contrast >= 0 )
printf( "New brightness: %d\n", monitor->actionContrast( contrast ) ); printf("New brightness: %d\n", monitor->actionContrast(contrast));
else else
printf( "Current contrast: %d\n", monitor->actionContrast() ); printf("Current contrast: %d\n", monitor->actionContrast());
} else { } else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
if ( contrast >= 0 ) if ( contrast >= 0 )
printf( "%d", monitor->actionContrast( contrast ) ); printf("%d", monitor->actionContrast(contrast));
else else
printf( "%d", monitor->actionContrast() ); printf("%d", monitor->actionContrast());
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_HUE ) { if ( function & ZMU_HUE ) {
if ( verbose ) { if ( verbose ) {
if ( hue >= 0 ) if ( hue >= 0 )
printf( "New hue: %d\n", monitor->actionHue( hue ) ); printf("New hue: %d\n", monitor->actionHue(hue));
else else
printf( "Current hue: %d\n", monitor->actionHue() ); printf("Current hue: %d\n", monitor->actionHue());
} else { } else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
if ( hue >= 0 ) if ( hue >= 0 )
printf( "%d", monitor->actionHue( hue ) ); printf("%d", monitor->actionHue(hue));
else else
printf( "%d", monitor->actionHue() ); printf("%d", monitor->actionHue());
have_output = true; have_output = true;
} }
} }
if ( function & ZMU_COLOUR ) { if ( function & ZMU_COLOUR ) {
if ( verbose ) { if ( verbose ) {
if ( colour >= 0 ) if ( colour >= 0 )
printf( "New colour: %d\n", monitor->actionColour( colour ) ); printf("New colour: %d\n", monitor->actionColour(colour));
else else
printf( "Current colour: %d\n", monitor->actionColour() ); printf("Current colour: %d\n", monitor->actionColour());
} else { } else {
if ( have_output ) printf( "%c", separator ); if ( have_output ) printf("%c", separator);
if ( colour >= 0 ) if ( colour >= 0 )
printf( "%d", monitor->actionColour( colour ) ); printf("%d", monitor->actionColour(colour));
else else
printf( "%d", monitor->actionColour() ); printf("%d", monitor->actionColour());
have_output = true; have_output = true;
} }
} }
if ( have_output ) { if ( have_output ) {
printf( "\n" ); printf("\n");
} }
if ( !function ) { if ( !function ) {
Usage(); Usage();
} }
delete monitor; delete monitor;
} else { } else {
fprintf(stderr, "Error, invalid monitor id %d\n", mon_id); Error("Invalid monitor id %d", mon_id);
exit_zmu(-1); exit_zmu(-1);
} }
} else { } else {
if ( function & ZMU_QUERY ) { if ( function & ZMU_QUERY ) {
#if ZM_HAS_V4L #if ZM_HAS_V4L
char vidString[0x10000] = ""; char vidString[0x10000] = "";
bool ok = LocalCamera::GetCurrentSettings( device, vidString, v4lVersion, verbose ); bool ok = LocalCamera::GetCurrentSettings(device, vidString, v4lVersion, verbose);
printf( "%s", vidString ); printf("%s", vidString);
exit_zmu( ok?0:-1 ); exit_zmu(ok ? 0 : -1);
#else // ZM_HAS_V4L #else // ZM_HAS_V4L
fprintf( stderr, "Error, video4linux is required for device querying\n" ); Error("Video4linux is required for device querying");
exit_zmu( -1 ); exit_zmu(-1);
#endif // ZM_HAS_V4L #endif // ZM_HAS_V4L
} }
@ -708,25 +704,25 @@ int main(int argc, char *argv[]) {
} }
sql += " order by Id asc"; sql += " order by Id asc";
if ( mysql_query( &dbconn, sql.c_str() ) ) { if ( mysql_query(&dbconn, sql.c_str()) ) {
Error( "Can't run query: %s", mysql_error( &dbconn ) ); Error("Can't run query: %s", mysql_error(&dbconn));
exit_zmu( mysql_errno( &dbconn ) ); exit_zmu(mysql_errno(&dbconn));
} }
MYSQL_RES *result = mysql_store_result( &dbconn ); MYSQL_RES *result = mysql_store_result(&dbconn);
if ( !result ) { if ( !result ) {
Error( "Can't use query result: %s", mysql_error( &dbconn ) ); Error("Can't use query result: %s", mysql_error(&dbconn));
exit_zmu( mysql_errno( &dbconn ) ); exit_zmu(mysql_errno(&dbconn));
} }
Debug( 1, "Got %d monitors", mysql_num_rows( result ) ); Debug(1, "Got %d monitors", mysql_num_rows(result));
printf( "%4s%5s%6s%9s%14s%6s%6s%8s%8s\n", "Id", "Func", "State", "TrgState", "LastImgTim", "RdIdx", "WrIdx", "LastEvt", "FrmRate" ); printf("%4s%5s%6s%9s%14s%6s%6s%8s%8s\n", "Id", "Func", "State", "TrgState", "LastImgTim", "RdIdx", "WrIdx", "LastEvt", "FrmRate");
for( int i = 0; MYSQL_ROW dbrow = mysql_fetch_row( result ); i++ ) { for( int i = 0; MYSQL_ROW dbrow = mysql_fetch_row(result); i++ ) {
int mon_id = atoi(dbrow[0]); int mon_id = atoi(dbrow[0]);
int function = atoi(dbrow[1]); int function = atoi(dbrow[1]);
if ( !user || user->canAccess( mon_id ) ) { if ( !user || user->canAccess(mon_id) ) {
if ( function > 1 ) { if ( function > 1 ) {
Monitor *monitor = Monitor::Load( mon_id, false, Monitor::QUERY ); Monitor *monitor = Monitor::Load(mon_id, false, Monitor::QUERY);
if ( monitor && monitor->connect() ) { if ( monitor && monitor->connect() ) {
struct timeval tv = monitor->GetTimestamp(); struct timeval tv = monitor->GetTimestamp();
printf( "%4d%5d%6d%9d%11ld.%02ld%6d%6d%8" PRIu64 "%8.2f\n", printf( "%4d%5d%6d%9d%11ld.%02ld%6d%6d%8" PRIu64 "%8.2f\n",
@ -744,7 +740,7 @@ int main(int argc, char *argv[]) {
} }
} else { } else {
struct timeval tv = { 0, 0 }; struct timeval tv = { 0, 0 };
printf( "%4d%5d%6d%9d%11ld.%02ld%6d%6d%8d%8.2f\n", printf("%4d%5d%6d%9d%11ld.%02ld%6d%6d%8d%8.2f\n",
mon_id, mon_id,
function, function,
0, 0,
@ -755,11 +751,11 @@ int main(int argc, char *argv[]) {
0, 0,
0.0 0.0
); );
} } // end if function filter
} } // endif !user || canAccess(mon_id)
} } // end foreach row
mysql_free_result( result ); mysql_free_result(result);
} } // end if function && ZMU_LIST
} }
delete user; delete user;