From 64529e60ce7752c07a81cd26f9d89fc7645a2e39 Mon Sep 17 00:00:00 2001 From: stan Date: Wed, 26 Mar 2003 12:00:16 +0000 Subject: [PATCH] Updated fro remote cameras and DB functions. git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@412 e3e1d417-86f3-4887-817a-d78f3d33393f --- src/zma.cpp | 40 ++++++-------------- src/zmc.cpp | 105 ++++++++++++++++++++++++++++++++++------------------ src/zms.cpp | 22 +++-------- src/zmu.cpp | 30 +++++---------- 4 files changed, 95 insertions(+), 102 deletions(-) diff --git a/src/zma.cpp b/src/zma.cpp index ec632e402..fada26095 100644 --- a/src/zma.cpp +++ b/src/zma.cpp @@ -18,23 +18,19 @@ // #include +#include + #include "zm.h" +#include "zm_db.h" +#include "zm_monitor.h" -bool reload = false; - -void die_handler( int signal ) +void zm_die_handler( int signal ) { Info(( "Got signal %d, crashing", signal )); exit( signal ); } -void hup_handler( int signal ) -{ - Info(( "Got HUP signal, reloading" )); - reload = true; -} - -void term_handler( int signal ) +void zm_term_handler( int signal ) { Info(( "Got TERM signal, exiting" )); exit( 0 ); @@ -104,25 +100,11 @@ int main( int argc, char *argv[] ) char dbg_name_string[16]; sprintf( dbg_name_string, "zma-m%d", id ); - dbg_name = dbg_name_string; + zm_dbg_name = dbg_name_string; - DbgInit(); + zmDbgInit(); - if ( !mysql_init( &dbconn ) ) - { - fprintf( stderr, "Can't initialise structure: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( !mysql_connect( &dbconn, ZM_DB_SERVER, ZM_DB_USERA, ZM_DB_PASSA ) ) - { - fprintf( stderr, "Can't connect to server: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( mysql_select_db( &dbconn, ZM_DB_NAME ) ) - { - fprintf( stderr, "Can't select database: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } + zmDbConnect( ZM_DB_USERA, ZM_DB_PASSA ); Monitor *monitor = Monitor::Load( id, true ); @@ -134,12 +116,12 @@ int main( int argc, char *argv[] ) sigemptyset( &block_set ); struct sigaction action, old_action; - action.sa_handler = term_handler; + action.sa_handler = zm_term_handler; action.sa_mask = block_set; action.sa_flags = 0; sigaction( SIGTERM, &action, &old_action ); - action.sa_handler = die_handler; + action.sa_handler = zm_die_handler; action.sa_mask = block_set; action.sa_flags = 0; sigaction( SIGBUS, &action, &old_action ); diff --git a/src/zmc.cpp b/src/zmc.cpp index 4cd8205a6..c87bb64b9 100644 --- a/src/zmc.cpp +++ b/src/zmc.cpp @@ -18,14 +18,18 @@ // #include +#include + #include "zm.h" +#include "zm_db.h" +#include "zm_monitor.h" -bool zm_terminate = false; +bool zmc_terminate = false; -void term_handler( int signal ) +void zmc_term_handler( int signal ) { Info(( "Got TERM signal, exiting" )); - zm_terminate = true; + zmc_terminate = true; } void Usage() @@ -40,9 +44,15 @@ void Usage() int main( int argc, char *argv[] ) { int device = -1; + char *host = ""; + char *port = ""; + char *path = ""; static struct option long_options[] = { {"device", 1, 0, 'd'}, + {"host", 1, 0, 'H'}, + {"port", 1, 0, 'P'}, + {"path", 1, 0, 'p'}, {"help", 0, 0, 'h'}, {0, 0, 0, 0} }; @@ -53,7 +63,7 @@ int main( int argc, char *argv[] ) int option_index = 0; int opterr = 1; - int c = getopt_long (argc, argv, "d:h", long_options, &option_index); + int c = getopt_long (argc, argv, "d:H:P:p:h", long_options, &option_index); if (c == -1) { break; @@ -64,6 +74,15 @@ int main( int argc, char *argv[] ) case 'd': device = atoi(optarg); break; + case 'H': + host = optarg; + break; + case 'P': + port = optarg; + break; + case 'p': + path = optarg; + break; case 'h': case '?': Usage(); @@ -83,54 +102,72 @@ int main( int argc, char *argv[] ) Usage(); } - if ( device < 0 ) + if ( device >= 0 && host[0] ) { - fprintf( stderr, "Bogus device %d\n", device ); + fprintf( stderr, "Only one of device or host/port/path allowed\n" ); Usage(); exit( 0 ); } + if ( device < 0 && !host[0] ) + { + fprintf( stderr, "One of device or host/port/path must be specified\n" ); + Usage(); + exit( 0 ); + } + + zm_dbg_name = "zmc"; + char dbg_name_string[16]; - sprintf( dbg_name_string, "zmc-d%d", device ); - dbg_name = dbg_name_string; + if ( device >= 0 ) + { + sprintf( dbg_name_string, "zmc-d%d", device ); + } + else + { + sprintf( dbg_name_string, "zmc-h%s", host ); + } + zm_dbg_name = dbg_name_string; - DbgInit(); + zmDbgInit(); - if ( !mysql_init( &dbconn ) ) - { - fprintf( stderr, "Can't initialise structure: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( !mysql_connect( &dbconn, ZM_DB_SERVER, ZM_DB_USERA, ZM_DB_PASSA ) ) - { - fprintf( stderr, "Can't connect to server: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( mysql_select_db( &dbconn, ZM_DB_NAME ) ) - { - fprintf( stderr, "Can't select database: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } + zmDbConnect( ZM_DB_USERA, ZM_DB_PASSA ); Monitor **monitors = 0; - int n_monitors = Monitor::Load( device, monitors ); + int n_monitors = 0; + if ( device >= 0 ) + { + n_monitors = Monitor::Load( device, monitors ); + } + else + { + if ( !port ) + port = "80"; + n_monitors = Monitor::Load( host, port, path, monitors ); + } + + if ( !n_monitors ) + { + Error(( "No monitors found" )); + exit ( -1 ); + } Info(( "Starting Capture" )); sigset_t block_set; sigemptyset( &block_set ); struct sigaction action, old_action; - action.sa_handler = term_handler; + action.sa_handler = zmc_term_handler; action.sa_mask = block_set; action.sa_flags = 0; sigaction( SIGTERM, &action, &old_action ); //sigaddset( &block_set, SIGTERM ); - if ( n_monitors == 1 ) + if ( device >= 0 && n_monitors == 1 ) { monitors[0]->PreCapture(); } - while( 1 ) + while( !zmc_terminate ) { /* grab a new one */ sigprocmask( SIG_BLOCK, &block_set, 0 ); @@ -140,14 +177,10 @@ int main( int argc, char *argv[] ) monitors[i]->PostCapture(); } sigprocmask( SIG_UNBLOCK, &block_set, 0 ); - if ( zm_terminate ) - { - for ( int i = 0; i < n_monitors; i++ ) - { - delete monitors[i]; - } - break; - } + } + for ( int i = 0; i < n_monitors; i++ ) + { + delete monitors[i]; } return( 0 ); } diff --git a/src/zms.cpp b/src/zms.cpp index cb1a52568..6d99f7314 100644 --- a/src/zms.cpp +++ b/src/zms.cpp @@ -18,6 +18,8 @@ // #include "zm.h" +#include "zm_db.h" +#include "zm_monitor.h" int main( int argc, const char *argv[] ) { @@ -61,25 +63,11 @@ int main( int argc, const char *argv[] ) } } - dbg_name = "zms"; + zm_dbg_name = "zms"; - DbgInit(); + zmDbgInit(); - if ( !mysql_init( &dbconn ) ) - { - fprintf( stderr, "Can't initialise structure: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( !mysql_connect( &dbconn, ZM_DB_SERVER, ZM_DB_USERB, ZM_DB_PASSB ) ) - { - fprintf( stderr, "Can't connect to server: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( mysql_select_db( &dbconn, ZM_DB_NAME ) ) - { - fprintf( stderr, "Can't select database: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } + zmDbConnect( ZM_DB_USERA, ZM_DB_PASSA ); if ( !event ) { diff --git a/src/zmu.cpp b/src/zmu.cpp index a43893705..dc7c6dce7 100644 --- a/src/zmu.cpp +++ b/src/zmu.cpp @@ -18,7 +18,11 @@ // #include + #include "zm.h" +#include "zm_db.h" +#include "zm_monitor.h" +#include "zm_local_camera.h" void Usage( int status=-1 ) { @@ -180,26 +184,12 @@ int main( int argc, char *argv[] ) } //printf( "Monitor %d, Function %d\n", mon_id, function ); - dbg_name = "zmu"; - dbg_level = -1; + zm_dbg_name = "zmu"; + zm_dbg_level = -1; - DbgInit(); + zmDbgInit(); - if ( !mysql_init( &dbconn ) ) - { - fprintf( stderr, "Can't initialise structure: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( !mysql_connect( &dbconn, ZM_DB_SERVER, ZM_DB_USERB, ZM_DB_PASSB ) ) - { - fprintf( stderr, "Can't connect to server: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } - if ( mysql_select_db( &dbconn, ZM_DB_NAME ) ) - { - fprintf( stderr, "Can't select database: %s\n", mysql_error( &dbconn ) ); - exit( mysql_errno( &dbconn ) ); - } + zmDbConnect( ZM_DB_USERB, ZM_DB_PASSB ); if ( dev_id >= 0 ) { @@ -210,7 +200,7 @@ int main( int argc, char *argv[] ) } else { - Monitor *monitor = Monitor::Load( mon_id, function&QUERY ); + Monitor *monitor = Monitor::Load( mon_id, function&(QUERY|ZONES) ); if ( monitor ) { @@ -311,7 +301,7 @@ int main( int argc, char *argv[] ) { if ( verbose ) printf( "Dumping zone image to %s-Zones.jpg\n", monitor->Name() ); - monitor->ReloadZones(); + monitor->DumpZoneImage(); } if ( function & ALARM ) {