Merge branch 'master' into plugin_support_test

Conflicts:
	configure.ac
	web/lang/fr_fr.php
This commit is contained in:
Emmanuel Papin 2015-02-25 23:14:25 +01:00
commit 9929233e75
2313 changed files with 301722 additions and 327 deletions

View File

@ -67,22 +67,32 @@ set(ZM_NO_FFMPEG "OFF" CACHE BOOL "Set to ON to skip ffmpeg checks and force bui
set(ZM_NO_LIBVLC "OFF" CACHE BOOL "Set to ON to skip libvlc checks and force building ZM without libvlc. default: OFF")
set(ZM_NO_CURL "OFF" CACHE BOOL "Set to ON to skip cURL checks and force building ZM without cURL. default: OFF")
set(ZM_NO_X10 "OFF" CACHE BOOL "Set to ON to build ZoneMinder without X10 support. default: OFF")
set(ZM_ONVIF "OFF" CACHE BOOL "Set to ON to enable basic ONVIF support. This is EXPERIMENTAL and may not work with all cameras claiming to be ONVIF compliant. default: OFF")
set(ZM_PERL_SUBPREFIX "${CMAKE_INSTALL_LIBDIR}/perl5" CACHE PATH "Use a different directory for the zm perl modules. NOTE: This is a subprefix, e.g. lib will be turned into <prefix>/lib, default: <libdir>/perl5")
set(ZM_PERL_USE_PATH "${CMAKE_INSTALL_PREFIX}/${ZM_PERL_SUBPREFIX}" CACHE PATH "Override the include path for zm perl modules. Useful if you are moving the perl modules without using the ZM_PERL_SUBPREFIX option. default: <prefix>/<zmperlsubprefix>")
set(ZM_TARGET_DISTRO "" CACHE STRING "Build ZoneMinder for a specific distribution. Currently, valid names are: f19, f20, el6, OS13")
set(ZM_TARGET_DISTRO "" CACHE STRING "Build ZoneMinder for a specific distribution. Currently, valid names are: f21, f20, el6, OS13")
# Reassign some variables if a target distro has been specified
if((ZM_TARGET_DISTRO STREQUAL "f19") OR (ZM_TARGET_DISTRO STREQUAL "f20") OR (ZM_TARGET_DISTRO STREQUAL "el6"))
if((ZM_TARGET_DISTRO STREQUAL "f21") OR (ZM_TARGET_DISTRO STREQUAL "f20"))
set(ZM_RUNDIR "/var/run/zoneminder")
set(ZM_SOCKDIR "/var/lib/zoneminder/sock")
set(ZM_TMPDIR "/var/lib/zoneminder/temp")
set(ZM_LOGDIR "/var/log/zoneminder")
elseif(ZM_TARGET_DISTRO STREQUAL "el6")
set(ZM_RUNDIR "/var/run/zoneminder")
set(ZM_SOCKDIR "/var/lib/zoneminder/sock")
set(ZM_TMPDIR "/var/lib/zoneminder/temp")
set(ZM_LOGDIR "/var/log/zoneminder")
set(ZM_WEBDIR "/usr/share/zoneminder/www")
set(ZM_CGIDIR "/usr/libexec/zoneminder/cgi-bin")
elseif(ZM_TARGET_DISTRO STREQUAL "el7")
set(ZM_RUNDIR "/var/run/zoneminder")
set(ZM_SOCKDIR "/var/lib/zoneminder/sock")
set(ZM_TMPDIR "/var/lib/zoneminder/temp")
set(ZM_LOGDIR "/var/log/zoneminder")
set(ZM_CONFIG_DIR "/etc/zm")
set(ZM_WEBDIR "/usr/share/zoneminder/www")
set(ZM_CGIDIR "/usr/libexec/zoneminder/cgi-bin")
elseif(ZM_TARGET_DISTRO STREQUAL "OS13")
set(ZM_RUNDIR "/var/run/zoneminder")
set(ZM_TMPDIR "/var/run/zoneminder")
@ -92,7 +102,7 @@ elseif(ZM_TARGET_DISTRO STREQUAL "OS13")
set(ZM_WEB_GROUP "www")
set(ZM_WEBDIR "/srv/www/htdocs/zoneminder")
set(ZM_CGIDIR "/srv/www/cgi-bin")
endif((ZM_TARGET_DISTRO STREQUAL "f19") OR (ZM_TARGET_DISTRO STREQUAL "f20") OR (ZM_TARGET_DISTRO STREQUAL "el6"))
endif((ZM_TARGET_DISTRO STREQUAL "f21") OR (ZM_TARGET_DISTRO STREQUAL "f20"))
# Required for certain checks to work
set(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES} stdio.h stdlib.h math.h signal.h)
@ -428,6 +438,12 @@ if(NOT ZM_NO_MMAP)
set(ZM_MMAP_PERLPACKAGE "Sys::Mmap")
endif(NOT ZM_NO_MMAP)
# Check for the ONVIF flag and enable ZM_HAS_ONVIF accordingly
set(ZM_HAS_ONVIF 0)
if(ZM_ONVIF)
set(ZM_HAS_ONVIF 1)
endif(ZM_ONVIF)
# Check for authenication functions
if(HAVE_OPENSSL_MD5_H)
set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}")
@ -523,14 +539,19 @@ add_subdirectory(db)
add_subdirectory(web)
add_subdirectory(misc)
# Enable ONVIF support
if (ZM_ONVIF)
add_subdirectory(onvif)
endif (ZM_ONVIF)
# Process distro subdirectories
if((ZM_TARGET_DISTRO STREQUAL "f19") OR (ZM_TARGET_DISTRO STREQUAL "f20"))
if((ZM_TARGET_DISTRO STREQUAL "f21") OR (ZM_TARGET_DISTRO STREQUAL "f20"))
add_subdirectory(distros/fedora)
elseif((ZM_TARGET_DISTRO STREQUAL "el6") OR (ZM_TARGET_DISTRO STREQUAL "el7"))
add_subdirectory(distros/redhat)
elseif(ZM_TARGET_DISTRO STREQUAL "OS13")
add_subdirectory(distros/opensuse)
endif((ZM_TARGET_DISTRO STREQUAL "f19") OR (ZM_TARGET_DISTRO STREQUAL "f20"))
endif((ZM_TARGET_DISTRO STREQUAL "f21") OR (ZM_TARGET_DISTRO STREQUAL "f20"))
# Print optional libraries detection status
message(STATUS "Optional libraries found:${optlibsfound}")

View File

@ -82,6 +82,7 @@ Basic steps for installing ZoneMinder on a fresh system
-------------------------------------------------------
1) After installing all the required dependencies, in the project directory, run "cmake [extra options] ."
This behaves like ./configure. It is also possible to supply configuration options, e.g. cmake -DZM_DB_PASS="mypass" .
IMPORTANT: Don't forget the dot "." at the end.
2) Run "make" to compile ZoneMinder
3) Run "make install" (as root, or use sudo) to install ZoneMinder to your system.
4) Create a directory for the content and the necessary symlinks by running zmlinkcontent.sh with the directory you want to use. e.g. ./zmlinkcontent.sh /nfs/zm

View File

@ -10,12 +10,17 @@ zmconfigdir = @ZM_CONFIG_DIR@
zmconfig_DATA = \
zm.conf
if COND_ONVIF
MAYBE_ONVIF = onvif
endif
SUBDIRS = \
src \
web \
scripts \
db \
misc
misc \
$(MAYBE_ONVIF)
EXTRA_DIST = \
zm.conf.in \

View File

@ -309,8 +309,26 @@ else
fi
AC_SUBST(ENABLE_MMAP)
ENABLE_ONVIF=no
AC_ARG_ENABLE(onvif,
[ --enable-onvif=<yes|no> enable or disable basic onvif support, default disabled],
[ENABLE_ONVIF=$enable_onvif],
AC_MSG_WARN([You can call configure with the --enable-onvif=<yes|no> or --enable-onvif option.
This tells configure whether to compile ZoneMinder with basic ONVIF support. This feature will
probe for ONVIF compliant cameras on your network and allow you the option to auto-configure them as
monitors in zoneminder. This option is EXPERIMENTAL and may not work with all cameras that claim to
be ONVIF compliant.
e.g. --enable-onvif=yes or --disable-onvif])
)
AM_CONDITIONAL([COND_ONVIF], [test "$enable_onvif" = yes])
# Compiler
AC_LANG_CPLUSPLUS
if test "$ENABLE_ONVIF" == "yes"; then
AC_SUBST(ZM_HAS_ONVIF,1)
else
AC_SUBST(ZM_HAS_ONVIF,0)
fi
# Checks for programs.
AC_PROG_CXX
@ -559,12 +577,18 @@ fi
AC_SUBST(PERL_MM_PARMS)
AC_SUBST(EXTRA_PERL_LIB)
<<<<<<< HEAD
AC_CONFIG_FILES([Makefile zm.conf zmconfgen.pl db/Makefile db/zm_create.sql misc/Makefile misc/apache.conf misc/logrotate.conf misc/syslog.conf misc/com.zoneminder.systemctl.policy misc/com.zoneminder.systemctl.rules misc/plugins.conf scripts/Makefile scripts/zm scripts/zmaudit.pl scripts/zmcontrol.pl scripts/zmdc.pl scripts/zmfilter.pl scripts/zmpkg.pl scripts/zmtrack.pl scripts/zmcamtool.pl scripts/zmsystemctl.pl scripts/zmtrigger.pl scripts/zmupdate.pl scripts/zmvideo.pl scripts/zmwatch.pl scripts/zmx10.pl scripts/zmdbbackup scripts/zmdbrestore scripts/zmeventdump scripts/zmlogrotate.conf scripts/ZoneMinder/lib/ZoneMinder/Base.pm scripts/ZoneMinder/lib/ZoneMinder/Config.pm scripts/ZoneMinder/lib/ZoneMinder/Memory.pm scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm src/Makefile src/zm_config.h src/libzmplugins.pc web/Makefile web/ajax/Makefile web/css/Makefile web/graphics/Makefile web/includes/Makefile web/includes/config.php web/js/Makefile web/lang/Makefile web/skins/Makefile web/skins/classic/Makefile web/skins/classic/ajax/Makefile web/skins/classic/css/Makefile web/skins/classic/css/classic/Makefile web/skins/classic/css/classic/views/Makefile web/skins/classic/css/flat/Makefile web/skins/classic/css/flat/views/Makefile web/skins/classic/graphics/Makefile web/skins/classic/includes/Makefile web/skins/classic/js/Makefile web/skins/classic/lang/Makefile web/skins/classic/views/Makefile web/skins/classic/views/js/Makefile web/skins/mobile/Makefile web/skins/mobile/ajax/Makefile web/skins/mobile/css/Makefile web/skins/mobile/graphics/Makefile web/skins/mobile/includes/Makefile web/skins/mobile/lang/Makefile web/skins/mobile/views/Makefile web/skins/mobile/views/css/Makefile web/tools/Makefile web/tools/mootools/Makefile web/views/Makefile web/skins/xml/Makefile web/skins/xml/views/Makefile web/skins/xml/includes/Makefile])
=======
AC_CONFIG_FILES([Makefile zm.conf zmconfgen.pl db/Makefile db/zm_create.sql misc/Makefile misc/apache.conf misc/logrotate.conf misc/syslog.conf misc/com.zoneminder.systemctl.policy misc/com.zoneminder.systemctl.rules onvif/Makefile onvif/scripts/Makefile scripts/Makefile scripts/zm scripts/zmaudit.pl scripts/zmcontrol.pl scripts/zmdc.pl scripts/zmfilter.pl scripts/zmpkg.pl scripts/zmtrack.pl scripts/zmcamtool.pl scripts/zmsystemctl.pl scripts/zmtrigger.pl scripts/zmupdate.pl scripts/zmvideo.pl scripts/zmwatch.pl scripts/zmx10.pl scripts/zmdbbackup scripts/zmdbrestore scripts/zmeventdump scripts/zmlogrotate.conf scripts/ZoneMinder/lib/ZoneMinder/Base.pm scripts/ZoneMinder/lib/ZoneMinder/Config.pm scripts/ZoneMinder/lib/ZoneMinder/Memory.pm scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm src/Makefile src/zm_config.h web/Makefile web/ajax/Makefile web/css/Makefile web/graphics/Makefile web/includes/Makefile web/includes/config.php web/js/Makefile web/lang/Makefile web/skins/Makefile web/skins/classic/Makefile web/skins/classic/ajax/Makefile web/skins/classic/css/Makefile web/skins/classic/css/classic/Makefile web/skins/classic/css/classic/views/Makefile web/skins/classic/css/flat/Makefile web/skins/classic/css/flat/views/Makefile web/skins/classic/graphics/Makefile web/skins/classic/includes/Makefile web/skins/classic/js/Makefile web/skins/classic/lang/Makefile web/skins/classic/views/Makefile web/skins/classic/views/js/Makefile web/skins/mobile/Makefile web/skins/mobile/ajax/Makefile web/skins/mobile/css/Makefile web/skins/mobile/graphics/Makefile web/skins/mobile/includes/Makefile web/skins/mobile/lang/Makefile web/skins/mobile/views/Makefile web/skins/mobile/views/css/Makefile web/tools/Makefile web/tools/mootools/Makefile web/views/Makefile web/skins/xml/Makefile web/skins/xml/views/Makefile web/skins/xml/includes/Makefile])
>>>>>>> master
# Create the definitions for compilation and defaults for the database
AC_CONFIG_COMMANDS([src/zm_config_defines.h],[perl ./zmconfgen.pl])
# Manually generate the perl Makefile maker
AC_CONFIG_COMMANDS([scripts/ZoneMinder/Makefile],[(cd scripts/ZoneMinder; echo "perl Makefile.PL $PERL_MM_PARMS"; perl Makefile.PL $PERL_MM_PARMS)],[PERL_MM_PARMS=$PERL_MM_PARMS])
AC_CONFIG_COMMANDS([onvif/modules/Makefile],[(cd onvif/modules; echo "perl Makefile.PL $PERL_MM_PARMS"; perl Makefile.PL $PERL_MM_PARMS)],[PERL_MM_PARMS=$PERL_MM_PARMS])
AC_CONFIG_COMMANDS([onvif/proxy/Makefile],[(cd onvif/proxy; echo "perl Makefile.PL $PERL_MM_PARMS"; perl Makefile.PL $PERL_MM_PARMS)],[PERL_MM_PARMS=$PERL_MM_PARMS])
AC_OUTPUT

251
connect Normal file
View File

@ -0,0 +1,251 @@
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: return( defined($monitor->{ShmKey})?$monitor->{ShmKey}:undef );
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: if ( !defined($monitor->{ShmId}) )
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: my $shm_key = (hex($Config{ZM_SHM_KEY})&0xffff0000)|$monitor->{Id};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: Error( sprintf( "Can't get shared memory id '%x', %d: $!\n", $shm_key, $monitor->{Id} ) );
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: $monitor->{ShmKey} = $shm_key;
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: $monitor->{ShmId} = $shm_id;
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: delete $monitor->{ShmId};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: my $shm_key = $monitor->{ShmKey};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: my $shm_id = $monitor->{ShmId};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: my $shm_key = $monitor->{ShmKey};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm: my $shm_id = $monitor->{ShmId};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: return( defined($monitor->{MMapAddr})?$monitor->{MMapAddr}:undef );
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: if ( !defined($monitor->{MMapAddr}) )
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: my $mmap_file = $Config{ZM_PATH_MAP}."/zm.mmap.".$monitor->{Id};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: $monitor->{MMapHandle} = \*MMAP;
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: $monitor->{MMapAddr} = $mmap_addr;
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: $monitor->{MMap} = \$mmap;
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: if ( $monitor->{MMap} )
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: if ( ! munmap( ${$monitor->{MMap}} ) ) {
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: delete $monitor->{MMap};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: if ( $monitor->{MMapAddr} )
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: delete $monitor->{MMapAddr};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: if ( $monitor->{MMapHandle} )
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: close( $monitor->{MMapHandle} );
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: delete $monitor->{MMapHandle};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: my $mmap = $monitor->{MMap};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: Error( sprintf( "Can't read from mapped memory for monitor '%d', gone away?", $monitor->{Id} ) );
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: my $mmap = $monitor->{MMap};
./scripts/ZoneMinder/lib/ZoneMinder/Memory/Mapped.pm: Error( sprintf( "Can't write mapped memory for monitor '%d', gone away?", $monitor->{Id} ) );
./scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in: Error( "Shared data size conflict in shared_data for monitor ".$monitor->{Name}.", expected ".$mem_data->{shared_data}->{size}.", got ".$sd_size );
./scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in: Debug( "Shared data size conflict in shared_data for monitor ".$monitor->{Name}.", expected ".$mem_data->{shared_data}->{size}.", got ".$sd_size );
./scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in: Error( "Shared data size conflict in trigger_data for monitor ".$monitor->{Name}.", expected ".$mem_data->{triggger_data}->{size}.", got ".$td_size );
./scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in: Debug( "Shared data size conflict in trigger_data for monitor ".$monitor->{Name}.", expected ".$mem_data->{triggger_data}->{size}.", got ".$td_size );
./scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in: Error( "Unable to read '$field' from memory for monitor ".$monitor->{Id} );
./scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in: Error( "Unable to write '$value' to '$field' in memory for monitor ".$monitor->{Id} );
./scripts/zmtrigger.pl.in: #print( "$monitor->{Id}: S:$state, LE:$last_event\n" );
./scripts/zmtrigger.pl.in: #print( "$monitor->{Id}: mS:$monitor->{LastState}, mLE:$monitor->{LastEvent}\n" );
./scripts/zmtrigger.pl.in: if ( !defined($monitor->{LastEvent}) || ($last_event != $monitor->{LastEvent}) ) # A new event
./scripts/zmtrigger.pl.in: push( @out_messages, $monitor->{Id}."|on|".time()."|".$last_event );
./scripts/zmtrigger.pl.in: elsif ( ($state == STATE_IDLE && $monitor->{LastState} != STATE_IDLE) || ($state == STATE_TAPE && $monitor->{LastState} != STATE_TAPE) ) # Out of alarm state
./scripts/zmtrigger.pl.in: push( @out_messages, $monitor->{Id}."|off|".time()."|".$last_event );
./scripts/zmtrigger.pl.in: elsif ( defined($monitor->{LastEvent}) && ($last_event != $monitor->{LastEvent}) ) # We've missed a whole event
./scripts/zmtrigger.pl.in: push( @out_messages, $monitor->{Id}."|on|".time()."|".$last_event );
./scripts/zmtrigger.pl.in: push( @out_messages, $monitor->{Id}."|off|".time()."|".$last_event );
./scripts/zmtrigger.pl.in: $monitor->{LastState} = $state;
./scripts/zmtrigger.pl.in: $monitor->{LastEvent} = $last_event;
./scripts/zmtrigger.pl.in: if ( defined($monitors{$monitor->{Id}}->{LastState}) )
./scripts/zmtrigger.pl.in: $monitor->{LastState} = $monitors{$monitor->{Id}}->{LastState};
./scripts/zmtrigger.pl.in: $monitor->{LastState} = zmGetMonitorState( $monitor );
./scripts/zmtrigger.pl.in: if ( defined($monitors{$monitor->{Id}}->{LastEvent}) )
./scripts/zmtrigger.pl.in: $monitor->{LastEvent} = $monitors{$monitor->{Id}}->{LastEvent};
./scripts/zmtrigger.pl.in: $monitor->{LastEvent} = zmGetLastEvent( $monitor );
./scripts/zmtrigger.pl.in: $new_monitors{$monitor->{Id}} = $monitor;
./scripts/zmtrigger.pl.in: next if ( !$monitor->{Enabled} );
./scripts/zmx10.pl.in: if ( defined( $monitor->{LastState} ) )
./scripts/zmx10.pl.in: if ( ($state == STATE_ALARM || $state == STATE_ALERT) && ($monitor->{LastState} == STATE_IDLE || $monitor->{LastState} == STATE_TAPE) ) # Gone into alarm state
./scripts/zmx10.pl.in: $task_list = $monitor->{"ON_list"};
./scripts/zmx10.pl.in: elsif ( ($state == STATE_IDLE && $monitor->{LastState} != STATE_IDLE) || ($state == STATE_TAPE && $monitor->{LastState} != STATE_TAPE) ) # Come out of alarm state
./scripts/zmx10.pl.in: $task_list = $monitor->{"OFF_list"};
./scripts/zmx10.pl.in: $monitor->{LastState} = $state;
./scripts/zmx10.pl.in: Debug( "Adding to device list, uc:$unit_code, ev:$event, mo:".$monitor->{Id}.", fu:$function, li:$limit\n" );
./scripts/zmx10.pl.in: Debug( "Adding to monitor list, uc:$unit_code, ev:$event, mo:".$monitor->{Id}.", fu:$function, li:$limit\n" );
./scripts/zmx10.pl.in: my $task = { type=>"monitor", device=>$device, id=>$monitor->{Id}, function=>$function };
./scripts/zmx10.pl.in: my $task_list = $monitor->{$event."_list"};
./scripts/zmx10.pl.in: $task_list = $monitor->{$event."_list"} = [];
./scripts/zmx10.pl.in: $monitor_hash{$monitor->{Id}} = $monitor;
./scripts/zmx10.pl.in: if ( $monitor->{Activation} )
./scripts/zmx10.pl.in: Debug( "$monitor->{Name} has active string '$monitor->{Activation}'\n" );
./scripts/zmx10.pl.in: foreach my $code_string ( split( /,/, $monitor->{Activation} ) )
./scripts/zmx10.pl.in: if ( $monitor->{AlarmInput} )
./scripts/zmx10.pl.in: Debug( "$monitor->{Name} has alarm input string '$monitor->{AlarmInput}'\n" );
./scripts/zmx10.pl.in: foreach my $code_string ( split( /,/, $monitor->{AlarmInput} ) )
./scripts/zmx10.pl.in: if ( $monitor->{AlarmOutput} )
./scripts/zmx10.pl.in: Debug( "$monitor->{Name} has alarm output string '$monitor->{AlarmOutput}'\n" );
./scripts/zmx10.pl.in: foreach my $code_string ( split( /,/, $monitor->{AlarmOutput} ) )
./scripts/zmfilter.pl.in: $text =~ s/%MET%/$monitor->{EventCount}/g;
./scripts/zmfilter.pl.in: $text =~ s/%MEH%/$monitor->{HourEventCount}/g;
./scripts/zmfilter.pl.in: $text =~ s/%MED%/$monitor->{DayEventCount}/g;
./scripts/zmfilter.pl.in: $text =~ s/%MEW%/$monitor->{WeekEventCount}/g;
./scripts/zmfilter.pl.in: $text =~ s/%MEM%/$monitor->{MonthEventCount}/g;
./scripts/zmfilter.pl.in: $text =~ s/%MEA%/$monitor->{ArchEventCount}/g;
./scripts/zmaudit.pl.in: Debug( "Found database monitor '$monitor->{Id}'" );
./scripts/zmaudit.pl.in: my $db_events = $db_monitors->{$monitor->{Id}} = {};
./scripts/zmaudit.pl.in: my $res = $eventSelectSth->execute( $monitor->{Id} ) or Fatal( "Can't execute: ".$eventSelectSth->errstr() );
./scripts/zmpkg.pl.in: if ( $monitor->{Id} =~ /^$definition->{Id}$/ )
./scripts/zmpkg.pl.in: $monitor->{NewFunction} = $definition->{Function};
./scripts/zmpkg.pl.in: $monitor->{NewEnabled} = $definition->{Enabled};
./scripts/zmpkg.pl.in: #next if ( !$monitor->{NewFunction} );
./scripts/zmpkg.pl.in: $monitor->{NewFunction} = 'None' if ( !$monitor->{NewFunction} );
./scripts/zmpkg.pl.in: $monitor->{NewEnabled} = 0 if ( !$monitor->{NewEnabled} );
./scripts/zmpkg.pl.in: if ( $monitor->{Function} ne $monitor->{NewFunction} || $monitor->{Enabled} ne $monitor->{NewEnabled} )
./scripts/zmpkg.pl.in: my $res = $sth->execute( $monitor->{NewFunction}, $monitor->{NewEnabled}, $monitor->{Id} ) or Fatal( "Can't execute: ".$sth->errstr() );
./scripts/zmpkg.pl.in: if ( $monitor->{Function} ne 'None' )
./scripts/zmpkg.pl.in: if ( $monitor->{Type} eq 'Local' )
./scripts/zmpkg.pl.in: runCommand( "zmdc.pl start zmc -d $monitor->{Device}" );
./scripts/zmpkg.pl.in: runCommand( "zmdc.pl start zmc -m $monitor->{Id}" );
./scripts/zmpkg.pl.in: if ( $monitor->{Function} ne 'Monitor' )
./scripts/zmpkg.pl.in: runCommand( "zmdc.pl start zmf -m $monitor->{Id}" );
./scripts/zmpkg.pl.in: runCommand( "zmdc.pl start zma -m $monitor->{Id}" );
./scripts/zmpkg.pl.in: if ( $monitor->{Function} eq 'Modect' || $monitor->{Function} eq 'Mocord' )
./scripts/zmpkg.pl.in: if ( $monitor->{Controllable} && $monitor->{TrackMotion} )
./scripts/zmpkg.pl.in: runCommand( "zmdc.pl start zmtrack.pl -m $monitor->{Id}" );
./scripts/zmcontrol.pl.in: my $protocol = $monitor->{Protocol};
./scripts/zmupdate.pl.in: if ( -d $monitor->{Name} )
./scripts/zmupdate.pl.in: rename( $monitor->{Name}, $monitor->{Id} ) or warn( "Can't rename existing monitor directory '$monitor->{Name}' to '$monitor->{Id}': $!" );
./scripts/zmupdate.pl.in: symlink( $monitor->{Id}, $monitor->{Name} ) or warn( "Can't symlink monitor directory '$monitor->{Id}' to '$monitor->{Name}': $!" );
./scripts/zmupdate.pl.in: my $res = $sth->execute( $monitor->{Width}, $monitor->{Height}, $monitor->{Id} ) or die( "Can't execute: ".$sth->errstr() );
./scripts/zmupdate.pl.in: my $res = $sth->execute( $sequence++, $monitor->{Id} ) or die( "Can't execute: ".$sth->errstr() );
./scripts/zmupdate.pl.in: if ( $db_monitor->{LabelFormat} =~ /\%\%s/ )
./scripts/zmupdate.pl.in: $db_monitor->{LabelFormat} =~ s/\%\%s/%N/;
./scripts/zmupdate.pl.in: $db_monitor->{LabelFormat} =~ s/\%\%s/%Q/;
./scripts/zmupdate.pl.in: my $res = $sth->execute( $db_monitor->{LabelFormat}, $db_monitor->{Id} ) or die( "Can't execute: ".$sth->errstr() );
./scripts/zmtrack.pl.in:if ( !$monitor->{Controllable} )
./scripts/zmtrack.pl.in:if ( !$monitor->{TrackMotion} )
./scripts/zmtrack.pl.in:if ( !$monitor->{CanMoveMap} )
./scripts/zmtrack.pl.in: if ( $monitor->{CanMoveRel} )
./scripts/zmtrack.pl.in: sleep( $monitor->{TrackDelay} );
./scripts/zmtrack.pl.in: my $ctrlCommand = ZM_PATH_BIN."/zmcontrol.pl -i ".$monitor->{Id};
./scripts/zmtrack.pl.in: $ctrlCommand .= " --command=".($monitor->{CanMoveMap}?"moveMap":"movePseudoMap")." --xcoord=$x --ycoord=$y";
./scripts/zmtrack.pl.in: my $ctrlCommand = ZM_PATH_BIN."/zmcontrol.pl -i ".$monitor->{Id};
./scripts/zmtrack.pl.in: if ( $monitor->{ReturnLocation} > 0 )
./scripts/zmtrack.pl.in: $ctrlCommand .= " --command=presetGoto --preset=".$monitor->{ReturnLocation};
./scripts/zmtrack.pl.in:if ( ($monitor->{ReturnLocation} >= 0) )
./scripts/zmtrack.pl.in: if ( ($monitor->{ReturnLocation} >= 0) && ($last_alarm > 0) && ((time()-$last_alarm) > $monitor->{ReturnDelay}) )
./scripts/zmtrack.pl.in: Debug( "Returning to location ".$monitor->{ReturnLocation}."\n" );
./scripts/zmwatch.pl.in: if ( $monitor->{Function} ne 'None' )
./scripts/zmwatch.pl.in: my $max_image_delay = ($monitor->{MaxFPS}&&($monitor->{MaxFPS}>0)&&($monitor->{MaxFPS}<1))?(3/$monitor->{MaxFPS}):$Config{ZM_WATCH_MAX_DELAY};
./scripts/zmwatch.pl.in: Debug( "Monitor $monitor->{Id} last captured $image_delay seconds ago, max is $max_image_delay\n" );
./scripts/zmwatch.pl.in: Info( "Restarting capture daemon for ".$monitor->{Name}.", time since last capture $image_delay seconds ($now-$image_time)\n" );
./scripts/zmwatch.pl.in: #Info( "Restarting capture daemon for ".$monitor->{Name}.", shared data not valid\n" );
./scripts/zmwatch.pl.in: if ( $monitor->{Type} eq 'Local' )
./scripts/zmwatch.pl.in: $command = "zmdc.pl restart zmc -d $monitor->{Device}";
./scripts/zmwatch.pl.in: $command = "zmdc.pl restart zmc -m $monitor->{Id}";
./scripts/zmwatch.pl.in: elsif ( $monitor->{Function} ne 'Monitor' )
./scripts/zmwatch.pl.in: my $max_image_delay = ($monitor->{MaxFPS}&&($monitor->{MaxFPS}>0)&&($monitor->{MaxFPS}<1))?(3/$monitor->{MaxFPS}):$Config{ZM_WATCH_MAX_DELAY};
./scripts/zmwatch.pl.in: Debug( "Monitor $monitor->{Id} last analysed $image_delay seconds ago, max is $max_image_delay\n" );
./scripts/zmwatch.pl.in: Info( "Restarting analysis daemon for ".$monitor->{Name}.", time since last analysis $image_delay seconds ($now-$image_time)\n" );
./scripts/zmwatch.pl.in: my $command = "zmdc.pl restart zma -m ".$monitor->{Id};
./src/zm_monitor.cpp: monitor->AddZones( n_zones, zones );
./src/zm_monitor.cpp: status_data.id = monitor->Id();
./src/zm_monitor.cpp: status_data.fps = monitor->GetFPS();
./src/zm_monitor.cpp: status_data.state = monitor->shared_data->state;
./src/zm_monitor.cpp: //status_data.enabled = monitor->shared_data->active;
./src/zm_monitor.cpp: status_data.enabled = monitor->trigger_data->trigger_state!=Monitor::TRIGGER_OFF;
./src/zm_monitor.cpp: status_data.forced = monitor->trigger_data->trigger_state==Monitor::TRIGGER_ON;
./src/zm_monitor.cpp: updateFrameRate( monitor->GetFPS() );
./src/zm_monitor.cpp: monitor->TimestampImage( send_image, timestamp );
./src/zm_monitor.cpp: monitor->SingleImage( scale );
./src/zm_monitor.cpp: updateFrameRate( monitor->GetFPS() );
./src/zm_monitor.cpp: int last_read_index = monitor->image_buffer_count;
./src/zm_monitor.cpp: snprintf( &(swap_path[strlen(swap_path)]), sizeof(swap_path)-strlen(swap_path), "/zmswap-m%d", monitor->Id() );
./src/zm_monitor.cpp: if ( feof( stdout ) || ferror( stdout ) || !monitor->ShmValid() )
./src/zm_monitor.cpp: if ( (unsigned int)last_read_index != monitor->shared_data->last_write_index )
./src/zm_monitor.cpp: int index = monitor->shared_data->last_write_index%monitor->image_buffer_count;
./src/zm_monitor.cpp: last_read_index = monitor->shared_data->last_write_index;
./src/zm_monitor.cpp: Monitor::Snapshot *snap = &monitor->image_buffer[index];
./src/zm_monitor.cpp: if ( monitor->shared_data->valid )
./src/zm_monitor.cpp: if ( monitor->image_buffer[index].timestamp->tv_sec )
./src/zm_monitor.cpp: memcpy( &(temp_image_buffer[temp_index].timestamp), monitor->image_buffer[index].timestamp, sizeof(temp_image_buffer[0].timestamp) );
./src/zm_monitor.cpp: monitor->image_buffer[index].image->WriteJpeg( temp_image_buffer[temp_index].file_name, config.jpeg_file_quality );
./src/zm_monitor.cpp: snprintf( swap_path, sizeof(swap_path), "%s/zmswap-m%d/zmswap-q%06d", config.path_swap, monitor->Id(), connkey );
./src/zmu.cpp: printf( "Monitor %d(%s)\n", monitor->Id(), monitor->Name() );
./src/zmu.cpp: Monitor::State state = monitor->GetState();
./src/zmu.cpp: struct timeval timestamp = monitor->GetTimestamp( image_idx );
./src/zmu.cpp: printf( "Last read index: %d\n", monitor->GetLastReadIndex() );
./src/zmu.cpp: printf( "%d", monitor->GetLastReadIndex() );
./src/zmu.cpp: printf( "Last write index: %d\n", monitor->GetLastWriteIndex() );
./src/zmu.cpp: printf( "%d", monitor->GetLastWriteIndex() );
./src/zmu.cpp: printf( "Last event id: %d\n", monitor->GetLastEvent() );
./src/zmu.cpp: printf( "%d", monitor->GetLastEvent() );
./src/zmu.cpp: printf( "Current capture rate: %.2f frames per second\n", monitor->GetFPS() );
./src/zmu.cpp: printf( "%.2f", monitor->GetFPS() );
./src/zmu.cpp: printf( "Dumping last image captured to Monitor%d.jpg", monitor->Id() );
./src/zmu.cpp: printf( "Dumping buffer image %d to Monitor%d.jpg", image_idx, monitor->Id() );
./src/zmu.cpp: monitor->GetImage( image_idx, scale>0?scale:100 );
./src/zmu.cpp: printf( "Dumping zone image to Zones%d.jpg\n", monitor->Id() );
./src/zmu.cpp: monitor->DumpZoneImage( zoneString );
./src/zmu.cpp: monitor->ForceAlarmOn( config.forced_alarm_score, "Forced Web" );
./src/zmu.cpp: monitor->ForceAlarmOff();
./src/zmu.cpp: monitor->CancelForced();
./src/zmu.cpp: monitor->actionReload();
./src/zmu.cpp: monitor->actionEnable();
./src/zmu.cpp: monitor->actionDisable();
./src/zmu.cpp: monitor->actionSuspend();
./src/zmu.cpp: monitor->actionResume();
./src/zmu.cpp: monitor->DumpSettings( monString, verbose );
./src/zmu.cpp: printf( "New brightness: %d\n", monitor->actionBrightness( brightness ) );
./src/zmu.cpp: printf( "Current brightness: %d\n", monitor->actionBrightness() );
./src/zmu.cpp: printf( "%d", monitor->actionBrightness( brightness ) );
./src/zmu.cpp: printf( "%d", monitor->actionBrightness() );
./src/zmu.cpp: printf( "New brightness: %d\n", monitor->actionContrast( contrast ) );
./src/zmu.cpp: printf( "Current contrast: %d\n", monitor->actionContrast() );
./src/zmu.cpp: printf( "%d", monitor->actionContrast( contrast ) );
./src/zmu.cpp: printf( "%d", monitor->actionContrast() );
./src/zmu.cpp: printf( "New hue: %d\n", monitor->actionHue( hue ) );
./src/zmu.cpp: printf( "Current hue: %d\n", monitor->actionHue() );
./src/zmu.cpp: printf( "%d", monitor->actionHue( hue ) );
./src/zmu.cpp: printf( "%d", monitor->actionHue() );
./src/zmu.cpp: printf( "New colour: %d\n", monitor->actionColour( colour ) );
./src/zmu.cpp: printf( "Current colour: %d\n", monitor->actionColour() );
./src/zmu.cpp: printf( "%d", monitor->actionColour( colour ) );
./src/zmu.cpp: printf( "%d", monitor->actionColour() );
./src/zmu.cpp: struct timeval tv = monitor->GetTimestamp();
./src/zmu.cpp: monitor->Id(),
./src/zmu.cpp: monitor->GetState(),
./src/zmu.cpp: monitor->GetTriggerState(),
./src/zmu.cpp: monitor->GetLastReadIndex(),
./src/zmu.cpp: monitor->GetLastWriteIndex(),
./src/zmu.cpp: monitor->GetLastEvent(),
./src/zmu.cpp: monitor->GetFPS()
./src/zm_zone.cpp: pg_image = new Image( monitor->Width(), monitor->Height(), 1, ZM_SUBPIX_ORDER_NONE);
./src/zm_zone.cpp: ranges = new Range[monitor->Height()];
./src/zm_zone.cpp: for ( unsigned int y = 0; y < monitor->Height(); y++)
./src/zm_zone.cpp: for ( unsigned int x = 0; x < monitor->Width(); x++, ppoly++ )
./src/zm_zone.cpp: snprintf( diag_path, sizeof(diag_path), "%s/%s/diag-%d-poly.jpg", config.dir_events, monitor->Name(), id);
./src/zm_zone.cpp: snprintf( sql, sizeof(sql), "insert into Stats set MonitorId=%d, ZoneId=%d, EventId=%d, FrameId=%d, PixelDiff=%d, AlarmPixels=%d, FilterPixels=%d, BlobPixels=%d, Blobs=%d, MinBlobSize=%d, MaxBlobSize=%d, MinX=%d, MinY=%d, MaxX=%d, MaxY=%d, Score=%d", monitor->Id(), id, event->Id(), event->Frames()+1, pixel_diff, alarm_pixels, alarm_filter_pixels, alarm_blob_pixels, alarm_blobs, min_blob_size, max_blob_size, alarm_box.LoX(), alarm_box.LoY(), alarm_box.HiX(), alarm_box.HiY(), score );
./src/zm_zone.cpp: snprintf( diag_path, sizeof(diag_path), "%s/%s/diag-%d-%d.jpg", config.dir_events, monitor->Name(), id, 1 );
./src/zm_zone.cpp: snprintf( diag_path, sizeof(diag_path), "%s/%d/diag-%d-%d.jpg", config.dir_events, monitor->Id(), id, 2 );
./src/zm_zone.cpp: snprintf( diag_path, sizeof(diag_path), "%s/%d/diag-%d-%d.jpg", config.dir_events, monitor->Id(), id, 3 );
./src/zm_zone.cpp: snprintf( diag_path, sizeof(diag_path), "%s/%d/diag-%d-%d.jpg", config.dir_events, monitor->Id(), id, 4 );
./src/zm_zone.cpp: //if ( monitor->followMotion() )
./src/zm_zone.cpp: if( monitor->Colours() == ZM_COLOUR_GRAY8 ) {
./src/zm_zone.cpp: image = diff_image->HighlightEdges( alarm_rgb, monitor->Colours(), monitor->SubpixelOrder(), &polygon.Extent() );
./src/zm_zone.cpp: snprintf( sql, sizeof(sql), "select Id,Name,Type+0,Units,Coords,AlarmRGB,CheckMethod+0,MinPixelThreshold,MaxPixelThreshold,MinAlarmPixels,MaxAlarmPixels,FilterX,FilterY,MinFilterPixels,MaxFilterPixels,MinBlobPixels,MaxBlobPixels,MinBlobs,MaxBlobs,OverloadFrames from Zones where MonitorId = %d order by Type, Id", monitor->Id() );
./src/zm_zone.cpp: Debug( 1, "Got %d zones for monitor %s", n_zones, monitor->Name() );
./src/zm_zone.cpp: Error( "Unable to parse polygon string '%s' for zone %d/%s for monitor %s, ignoring", Coords, Id, Name, monitor->Name() );
./src/zm_zone.cpp: if ( polygon.LoX() < 0 || polygon.HiX() >= (int)monitor->Width()
./src/zm_zone.cpp: || polygon.LoY() < 0 || polygon.HiY() >= (int)monitor->Height() ) {
./src/zm_zone.cpp: Error( "Zone %d/%s for monitor %s extends outside of image dimensions, (%d,%d), (%d,%d), ignoring", Id, Name, monitor->Name(), polygon.LoX(), polygon.LoY(), polygon.HiX(), polygon.HiY() );
./src/zmf.cpp: snprintf( capt_path, sizeof(capt_path), "%s/%d/%%s/%%0%dd-capture.jpg", config.dir_events, monitor->Id(), config.event_image_digits );
./src/zmf.cpp: snprintf( anal_path, sizeof(anal_path), "%s/%d/%%s/%%0%dd-analyse.jpg", config.dir_events, monitor->Id(), config.event_image_digits );
./src/zmf.cpp: int sd = OpenSocket( monitor->Id() );
./src/zmf.cpp: ReopenSocket( sd, monitor->Id() );
./src/zmf.cpp: ReopenSocket( sd, monitor->Id() );
./src/zmf.cpp: ReopenSocket( sd, monitor->Id() );
./src/zma.cpp: Info( "In mode %d/%d, warming up", monitor->GetFunction(), monitor->Enabled() );
./src/zma.cpp: Event::OpenFrameSocket( monitor->Id() );
./src/zma.cpp: if ( !monitor->Analyse() )
./src/zma.cpp: usleep( monitor->Active()?ZM_SAMPLE_RATE:ZM_SUSPENDED_RATE );
./src/zma.cpp: monitor->Reload();
./src/zm_stream.cpp: Image image( monitor->Width(), monitor->Height(), monitor->Colours(), monitor->SubpixelOrder() );
./src/zm_event.cpp: snprintf( sql, sizeof(sql), "insert into Events ( MonitorId, Name, StartTime, Width, Height, Cause, Notes ) values ( %d, 'New Event', from_unixtime( %ld ), %d, %d, '%s', '%s' )", monitor->Id(), start_time.tv_sec, monitor->Width(), monitor->Height(), cause.c_str(), notes.c_str() );
./src/zm_event.cpp: path_ptr += snprintf( path_ptr, sizeof(path), "%s/%d", config.dir_events, monitor->Id() );
./src/zm_event.cpp: snprintf( path, sizeof(path), "%s/%d/%d", config.dir_events, monitor->Id(), id );
./src/zm_event.cpp: snprintf( sql, sizeof(sql), "update Events set Name='%s%d', EndTime = from_unixtime( %ld ), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d where Id = %d", monitor->EventPrefix(), id, end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, frames, alarm_frames, tot_score, (int)(alarm_frames?(tot_score/alarm_frames):0), max_score, id );
./src/zm_event.cpp: if ( !ValidateFrameSocket( monitor->Id() ) )
./src/zm_event.cpp: monitor->TimestampImage( &ts_image, &timestamp );
./src/zm_event.cpp: snprintf( diag_glob, sizeof(diag_glob), "%s/%d/diag-*.jpg", config.dir_events, monitor->Id() );
./db/zm_create.sql.in:INSERT INTO MonitorPresets VALUES (NULL,'Remote ZoneMinder','Remote',NULL,NULL,NULL,'http','simple','<ip-address>',80,'/cgi-bin/nph-zms?mode=jpeg&monitor=<monitor-id>&scale=100&maxfps=5&buffer=0',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
./db/zm_update-1.24.2.sql:INSERT INTO `MonitorPresets` VALUES ('','Remote ZoneMinder','Remote',NULL,NULL,NULL,'http','simple','<ip-address>',80,'/cgi-bin/nph-zms?mode=jpeg&monitor=<monitor-id>&scale=100&maxfps=5&buffer=0',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
Binary file ./.git/objects/pack/pack-bd32ad3df5c1fff7110f575aae37c6a3ce09a23e.pack matches

View File

@ -578,6 +578,8 @@ INSERT INTO Controls VALUES (NULL,'Loftek Sentinel','Remote','LoftekSentinel',0,
INSERT INTO Controls VALUES (NULL,'Toshiba IK-WB11A','Remote','Toshiba_IK_WB11A',0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0);
INSERT INTO Controls VALUES (NULL,'WanscamPT','Remote','Wanscam',1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,16,0,0,0,0,0,1,16,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0);
INSERT INTO Controls VALUES (NULL,'3S Domo N5071', 'Remote', '3S', 0, 0, 1, 1, 0, 1, 1, 0, 0, 9999, 0, 9999, 0, 0, 0, 1, 1, 1, 1, 0, 0, 9999, 20, 9999, 0, 0, 0, 1, 1, 1, 1, 0, 0, 9999, 1, 9999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 64, 1, 0, 1, 1, 0, 0, 0, 0, 1, -180, 180, 40, 100, 1, 40, 100, 0, 0, 1, -180, 180, 40, 100, 1, 40, 100, 0, 0, 0, 0);
INSERT INTO Controls VALUES (NULL,'ONVIF Camera','Ffmpeg','onvif',0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,255,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,6,1,1,0,0,0,1,10,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0);
--
-- Add some monitor preset values
--

111
db/zm_update-1.28.99.sql Normal file
View File

@ -0,0 +1,111 @@
--
-- This updates a 1.28.10 database to 1.28.99
--
--
-- Add Controls definition for ONVIF
--
INSERT INTO Controls
SELECT * FROM (SELECT NULL as Id,
'ONVIF Camera' as Name,
'Ffmpeg' as Type,
'onvif' as Protocol,
0 as CanWake,
0 as CanSleep,
1 as CanReset,
1 as CanZoom,
0 as CanAutoZoom,
0 as CanZoomAbs,
0 as CanZoomRel,
1 as CanZoomCon,
0 as MinZoomRange,
0 as MaxZoomRange,
0 as MinZoomStep,
0 as MaxZoomStep,
0 as HasZoomSpeed,
0 as MinZoomSpeed,
0 as MaxZoomSpeed,
0 as CanFocus,
0 as CanAutoFocus,
0 as CanFocusAbs,
0 as CanFocusRel,
0 as CanFocusCon,
0 as MinFocusRange,
0 as MaxFocusRange,
0 as MinFocusStep,
0 as MaxFocusStep,
0 as HasFocusSpeed,
0 as MinFocusSpeed,
0 as MaxFocusSpeed,
1 as CanIris,
0 as CanAutoIris,
1 as CanIrisAbs,
0 as CanIrisRel,
0 as CanIrisCon,
0 as MinIrisRange,
255 as MaxIrisRange,
16 as MinIrisStep,
16 as MaxIrisStep,
0 as HasIrisSpeed,
0 as MinIrisSpeed,
0 as MaxIrisSpeed,
0 as CanGain,
0 as CanAutoGain,
0 as CanGainAbs,
0 as CanGainRel,
0 as CanGainCon,
0 as MinGainRange,
0 as MaxGainRange,
0 as MinGainStep,
0 as MaxGainStep,
0 as HasGainSpeed,
0 as MinGainSpeed,
0 as MaxGainSpeed,
1 as CanWhite,
0 as CanAutoWhite,
1 as CanWhiteAbs,
0 as CanWhiteRel,
0 as CanWhiteCon,
0 as MinWhiteRange,
6 as MaxWhiteRange,
1 as MinWhiteStep,
1 as MaxWhiteStep,
0 as HasWhiteSpeed,
0 as MinWhiteSpeed,
0 as MaxWhiteSpeed,
1 as HasPresets,
10 as NumPresets,
0 as HasHomePreset,
1 as CanSetPresets,
1 as CanMove,
1 as CanMoveDiag,
0 as CanMoveMap,
0 as CanMoveAbs,
0 as CanMoveRel,
1 as CanMoveCon,
1 as CanPan,
0 as MinPanRange,
0 as MaxPanRange,
0 as MinPanStep,
0 as MaxPanStep,
0 as HasPanSpeed,
0 as MinPanSpeed,
0 as MaxPanSpeed,
0 as HasTurboPan,
0 as TurboPanSpeed,
1 as CanTilt,
0 as MinTiltRange,
0 as MaxTiltRange,
0 as MinTiltStep,
0 as MaxTiltStep,
0 as HasTiltSpeed,
0 as MinTiltSpeed,
0 as MaxTiltSpeed,
0 as HasTurboTilt,
0 as TurboTiltSpeed,
0 as CanAutoScan,
0 as NumScanPaths) AS tmp
WHERE NOT EXISTS (
SELECT Name FROM Controls WHERE name = 'ONVIF Camera'
) LIMIT 1;

View File

@ -151,10 +151,14 @@ fi
%{_bindir}/zmcamtool.pl
%{_bindir}/zmsystemctl.pl
%{!?_without_x10:%{_bindir}/zmx10.pl}
%{_bindir}/zmonvif-probe.pl
%{perl_vendorlib}/ZoneMinder*
%{perl_vendorlib}/%{_arch}-linux-thread-multi/auto/ZoneMinder*
#%{perl_archlib}/ZoneMinder*
%{perl_vendorlib}/ONVIF*
%{perl_vendorlib}/WSDiscovery*
%{perl_vendorlib}/WSSecurity*
%{perl_vendorlib}/%{_arch}-linux-thread-multi/auto/ONVIF*
%{_mandir}/man*/*
%dir %{_libexecdir}/zoneminder
%{_libexecdir}/zoneminder/cgi-bin
@ -177,6 +181,9 @@ fi
%changelog
* Sun Aug 03 2014 Andrew Bauer <knnniggett@users.sourceforge.net> - 1.27
- Include ONVIF support files
* Fri Mar 14 2014 Andrew Bauer <knnniggett@users.sourceforge.net> - 1.27
- Tweak build requirements for cmake

View File

@ -242,8 +242,12 @@ fi
%{_bindir}/zmcamtool.pl
%{_bindir}/zmsystemctl.pl
%{!?_without_x10:%{_bindir}/zmx10.pl}
%{_bindir}/zmonvif-probe.pl
%{perl_vendorlib}/ZoneMinder*
%{perl_vendorlib}/ONVIF*
%{perl_vendorlib}/WSDiscovery*
%{perl_vendorlib}/WSSecurity*
%{_mandir}/man*/*
%dir %{_libexecdir}/zoneminder
%{_libexecdir}/zoneminder/cgi-bin

View File

@ -10,7 +10,7 @@
%define _without_x10 1
Name: zoneminder
Version: 1.28.0
Version: 1.28.1
Release: 1%{?dist}
Summary: A camera monitoring and analysis tool
Group: System Environment/Daemons
@ -38,7 +38,7 @@ BuildRequires: gcc gcc-c++ vlc-devel libcurl-devel
BuildRequires: httpd polkit-devel
%{!?_without_ffmpeg:BuildRequires: ffmpeg}
Requires: httpd php php-mysql cambozola polkit net-tools
Requires: httpd php php-mysql cambozola polkit net-tools psmisc
Requires: libjpeg-turbo vlc-core libcurl
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
Requires: perl(DBD::mysql) perl(Archive::Tar) perl(Archive::Zip)

View File

@ -38,7 +38,7 @@ BuildRequires: gcc gcc-c++ vlc-devel libcurl-devel
BuildRequires: httpd polkit-devel
%{!?_without_ffmpeg:BuildRequires: ffmpeg}
Requires: httpd php php-mysql cambozola polkit net-tools
Requires: httpd php php-mysql cambozola polkit net-tools psmisc
Requires: libjpeg-turbo vlc-core libcurl
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
Requires: perl(DBD::mysql) perl(Archive::Tar) perl(Archive::Zip)
@ -75,7 +75,7 @@ too much degradation of performance.
%build
%cmake \
-DZM_TARGET_DISTRO="f20" \
-DZM_TARGET_DISTRO="f21" \
-DZM_PERL_SUBPREFIX=`x="%{perl_vendorlib}" ; echo ${x#"%{_prefix}"}` \
%{?_without_ffmpeg:-DZM_NO_FFMPEG=ON} \
%{?_without_x10:-DZM_NO_X10=ON} \

View File

@ -1,10 +1,18 @@
# CMakeLists.txt for the Redhat/CentOS Target Distro.
# Display a message to show the RHEL build options are being processed.
message([STATUS] "Starting RHEL Build Options" ...)
# Create the zoneminder service file
if(ZM_TARGET_DISTRO STREQUAL "el7")
configure_file(zoneminder.service.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder.service @ONLY)
configure_file(zoneminder.el7.conf.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder.el7.conf @ONLY)
configure_file(zoneminder.tmpfiles.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder.tmpfiles @ONLY)
configure_file(zoneminder.el7.logrotate.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder.el7.logrotate @ONLY)
else(ZM_TARGET_DISTRO STREQUAL "el7")
configure_file(zoneminder.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder @ONLY)
configure_file(zoneminder.sysvinit.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder.sysvinit @ONLY)
configure_file(zoneminder.el6.logrotate.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder.el6.logrotate @ONLY)
configure_file(zoneminder.el6.conf.in ${CMAKE_CURRENT_SOURCE_DIR}/zoneminder.el6.conf @ONLY)
endif(ZM_TARGET_DISTRO STREQUAL "el7")
# Download jscalendar & move files into position
@ -54,7 +62,7 @@ if(ZM_TARGET_DISTRO STREQUAL "el7")
else(ZM_TARGET_DISTRO STREQUAL "el7")
install(FILES zoneminder.el6.conf DESTINATION /etc/httpd/conf.d RENAME zoneminder.conf PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
install(FILES zoneminder.el6.logrotate DESTINATION /etc/logrotate.d RENAME zoneminder PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
install(FILES zoneminder DESTINATION /etc/rc.d/init.d PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
install(FILES zoneminder.sysvinit DESTINATION /etc/rc.d/init.d RENAME zoneminder PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
endif(ZM_TARGET_DISTRO STREQUAL "el7")
# Install jscalendar

View File

@ -247,8 +247,14 @@ fi
%{_bindir}/zmcamtool.pl
%{_bindir}/zmsystemctl.pl
%{_bindir}/zmx10.pl
%{_bindir}/zmonvif-probe.pl
%{perl_vendorlib}/ZoneMinder*
%{perl_vendorlib}/%{_arch}-linux-thread-multi/auto/ZoneMinder*
#%{perl_vendorlib}/ONVIF*
#%{perl_vendorlib}/WSDiscovery*
#%{perl_vendorlib}/WSSecurity*
#%{perl_vendorlib}/%{_arch}-linux-thread-multi/auto/ONVIF*
%{_mandir}/man*/*
%dir %{_libexecdir}/%{name}
%{_libexecdir}/%{name}/cgi-bin
@ -270,6 +276,12 @@ fi
%changelog
* Sun Aug 03 2014 Andrew Bauer <knnniggett@users.sourceforge.net> - 1.27
- Include ONVIF support files
* Fri Mar 14 2014 Andrew Bauer <knnniggett@users.sourceforge.net> - 1.27
- Tweak build requirements for cmake
* Sat Feb 01 2014 Andrew Bauer <knnniggett@users.sourceforge.net> - 1.27
- Add zmcamtool.pl. Bump version for 1.27 release.

View File

@ -9,8 +9,8 @@
# internal site which needs no authentication, you need to delete the line
# marked below and restart Apache.
Alias /zm "/usr/share/zoneminder/www"
<Directory "/usr/share/zoneminder/www">
Alias /zm "@ZM_WEBDIR@"
<Directory "@ZM_WEBDIR@">
Options -Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
@ -19,8 +19,8 @@ Alias /zm "/usr/share/zoneminder/www"
# php_value short_open_tag 1
</Directory>
ScriptAlias /cgi-bin/zm "/usr/libexec/zoneminder/cgi-bin"
<Directory "/usr/libexec/zoneminder/cgi-bin">
ScriptAlias /cgi-bin/zm "@ZM_WEBDIR@"
<Directory "@ZM_WEBDIR@">
AllowOverride All
Options ExecCGI
Order allow,deny

View File

@ -1,4 +1,4 @@
/var/log/zoneminder/*log
@ZM_LOGDIR@/*log
{
weekly
notifempty

View File

@ -4,7 +4,7 @@
%define zmgid_final apache
Name: zoneminder
Version: 1.28.0
Version: 1.28.1
Release: 1%{?dist}
Summary: A camera monitoring and analysis tool
Group: System Environment/Daemons
@ -30,7 +30,7 @@ BuildRequires: libcurl-devel vlc-devel ffmpeg-devel polkit-devel
# cmake needs the following installed at build time due to the way it auto-detects certain parameters
BuildRequires: httpd ffmpeg
Requires: httpd php php-mysql mysql-server libjpeg-turbo polkit net-tools
Requires: httpd php php-mysql mysql-server libjpeg-turbo polkit net-tools psmisc
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
Requires: perl(DBD::mysql) perl(Archive::Tar) perl(Archive::Zip)
Requires: perl(MIME::Entity) perl(MIME::Lite) perl(Net::SMTP) perl(Net::FTP)
@ -143,9 +143,13 @@ rm -rf %{_docdir}/%{name}-%{version}
%{_bindir}/zmcamtool.pl
%{_bindir}/zmsystemctl.pl
%{_bindir}/zmx10.pl
#%{_bindir}/zmonvif-probe.pl
%{perl_vendorlib}/ZoneMinder*
%{perl_vendorlib}/%{_arch}-linux-thread-multi/auto/ZoneMinder*
#%{perl_vendorlib}/ONVIF*
#%{perl_vendorlib}/WSDiscovery*
#%{perl_vendorlib}/WSSecurity*
%{_mandir}/man*/*
%dir %{_libexecdir}/%{name}
%{_libexecdir}/%{name}/cgi-bin
@ -166,6 +170,9 @@ rm -rf %{_docdir}/%{name}-%{version}
%dir %attr(755,%{zmuid_final},%{zmgid_final}) %{_localstatedir}/spool/zoneminder-upload
%changelog
* Wed Feb 18 2015 Andrew Bauer <knnniggett@users.sourceforge.net> - 1.28.1
- Include ONVIF support files
* Sun Oct 5 2014 Andrew Bauer <knnniggett@users.sourceforge.net> - 1.28.0
- Bump version for 1.28.0 release.

View File

@ -9,8 +9,8 @@
# internal site which needs no authentication, you need to delete the line
# marked below and restart Apache.
Alias /zm "/usr/share/zoneminder/www"
<Directory "/usr/share/zoneminder/www">
Alias /zm "@ZM_WEBDIR@"
<Directory "@ZM_WEBDIR@">
Options -Indexes +MultiViews +FollowSymLinks
AllowOverride All
<IfModule mod_authz_core.c>
@ -26,8 +26,8 @@ Alias /zm "/usr/share/zoneminder/www"
# php_value short_open_tag 1
</Directory>
ScriptAlias /cgi-bin-zm "/usr/libexec/zoneminder/cgi-bin"
<Directory "/usr/libexec/zoneminder/cgi-bin">
ScriptAlias /cgi-bin-zm "@ZM_CGIDIR@"
<Directory "@ZM_CGIDIR@">
AllowOverride All
Options ExecCGI
<IfModule mod_authz_core.c>

View File

@ -1,8 +0,0 @@
/var/log/zoneminder/*.log {
missingok
notifempty
sharedscripts
postrotate
/usr/bin/zmpkg.pl logrot 2> /dev/null > /dev/null || :
endscript
}

View File

@ -0,0 +1,8 @@
@ZM_LOGDIR@/*.log {
missingok
notifempty
sharedscripts
postrotate
@BINDIR@/zmpkg.pl logrot 2> /dev/null > /dev/null || :
endscript
}

View File

@ -32,7 +32,7 @@ BuildRequires: ffmpeg ffmpeg-devel perl(X10::ActiveHome) perl(Astro::SunTime)
# cmake needs the following installed at build time due to the way it auto-detects certain parameters
BuildRequires: httpd polkit-devel
Requires: httpd php php-mysql mariadb-server polkit net-tools
Requires: httpd php php-mysql mariadb-server polkit net-tools psmisc
Requires: libjpeg-turbo vlc-core libcurl
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
Requires: perl(DBD::mysql) perl(Archive::Tar) perl(Archive::Zip)

View File

@ -1 +0,0 @@
d /run/zoneminder 0755 apache apache

View File

@ -0,0 +1 @@
d @ZM_RUNDIR@ 0755 @WEB_USER@ @WEB_GROUP@

View File

@ -1,6 +1,12 @@
zoneminder (1.28.0+1-trusty-SNAPSHOT2014121201) trusty; urgency=medium
zoneminder (1.28.0+1-trusty-SNAPSHOT2015021201) trusty; urgency=medium
* Merge of security fixes and a few other things. See github for more info.
* add mysql-client-5.6 as a dependency instaed of mysql-client.
-- Isaac Connor <iconnor@connortechnology.com> Fri, 13 Feb 2015 09:35:13 -0500
zoneminder (1.28.0+1-trusty-SNAPSHOT2015011101) trusty; urgency=medium
* small changes
-- Isaac Connor <iconnor@connortechnology.com> Fri, 12 Dec 2014 16:38:36 -0500

View File

@ -7,7 +7,7 @@ Standards-Version: 3.9.4
Package: zoneminder
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, apache2, libapache2-mod-php5 | libapache2-mod-fcgid, php5, php5-mysql|php5-mysqlnd, libphp-serialization-perl, libdate-manip-perl, libmime-lite-perl, libmime-tools-perl, mariadb-client|mysql-client, libwww-perl, libarchive-tar-perl, libarchive-zip-perl, libdevice-serialport-perl, libpcre3, ffmpeg | libav-tools, rsyslog | system-log-daemon, libmodule-load-perl, libsys-mmap-perl, libjson-any-perl, netpbm, libavdevice53 | libavdevice55, libjpeg8|libjpeg9|libjpeg62-turbo, zip, libnet-sftp-foreign-perl, libio-pty-perl, libexpect-perl, libvlccore5 | libvlccore7 | libvlccore8, libvlc5, libcurl4-gnutls-dev | libcurl4-nss-dev | libcurl4-openssl-dev, libpolkit-gobject-1-0, liburi-encode-perl
Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, apache2, libapache2-mod-php5 | libapache2-mod-fcgid, php5, php5-mysql|php5-mysqlnd, libphp-serialization-perl, libdate-manip-perl, libmime-lite-perl, libmime-tools-perl, mariadb-client|mysql-client|mysql-client-5.6, libwww-perl, libarchive-tar-perl, libarchive-zip-perl, libdevice-serialport-perl, libpcre3, ffmpeg | libav-tools, rsyslog | system-log-daemon, libmodule-load-perl, libsys-mmap-perl, libjson-any-perl, netpbm, libavdevice53 | libavdevice55, libjpeg8|libjpeg9|libjpeg62-turbo, zip, libnet-sftp-foreign-perl, libio-pty-perl, libexpect-perl, libvlccore5 | libvlccore7 | libvlccore8, libvlc5, libcurl4-gnutls-dev | libcurl4-nss-dev | libcurl4-openssl-dev, libpolkit-gobject-1-0, liburi-encode-perl
Recommends: mysql-server|mariadb-server
Description: Video camera security and surveillance solution
ZoneMinder is intended for use in single or multi-camera video security

View File

@ -51,9 +51,9 @@ copyright = u'2014, https://github.com/ZoneMinder/ZoneMinder/graphs/contributors
# built documents.
#
# The short X.Y version.
version = '1.28.0'
version = '1.28.1'
# The full version, including alpha/beta/rc tags.
release = '1.28.0'
release = '1.28.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

3
onvif/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
Makefile.in
proxy/blib
modules/blib

7
onvif/CMakeLists.txt Normal file
View File

@ -0,0 +1,7 @@
# CMakeLists.txt for the ZoneMinder ONVIF scripts
# Process the perl modules subdirectory
add_subdirectory(proxy)
add_subdirectory(modules)
add_subdirectory(scripts)

26
onvif/Makefile.am Normal file
View File

@ -0,0 +1,26 @@
AUTOMAKE_OPTIONS = gnu
# Ack! Nasty hack to get modules Makefile regenerated if wiped with make clean
all-local: proxy/Makefile modules/Makefile
proxy/Makefile: proxy/Makefile.PL
( cd proxy; perl Makefile.PL )
modules/Makefile: modules/Makefile.PL
( cd modules; perl Makefile.PL )
SUBDIRS = \
. \
proxy \
modules \
scripts
EXTRA_DIST = \
proxy/Makefile.PL \
proxy/lib \
modules/Makefile.PL \
modules/lib \
wsdl \
doc \
patches

BIN
onvif/doc/monitor.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
onvif/doc/monitor2a.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
onvif/doc/monitor2b.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
onvif/doc/onvifprobe1a.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
onvif/doc/onvifprobe1b.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
onvif/doc/onvifprobe2a.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
onvif/doc/onvifprobe2b.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,10 @@
# Add build target for the perl modules
add_custom_target(zmonvifmodules ALL perl Makefile.PL FIRST_MAKEFILE=MakefilePerl PREFIX="${CMAKE_CURRENT_BINARY_DIR}/output" LIB="${CMAKE_CURRENT_BINARY_DIR}/output/${ZM_PERL_SUBPREFIX}" INSTALLSITEMAN3DIR="${CMAKE_CURRENT_BINARY_DIR}/output/${CMAKE_INSTALL_MANDIR}/man3" ${MAKEMAKER_NOECHO_COMMAND} COMMAND make --makefile=MakefilePerl COMMAND make --makefile=MakefilePerl pure_install COMMENT "Building ZoneMinder perl modules")
# Add install target for the perl modules
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/output/" DESTINATION "${CMAKE_INSTALL_PREFIX}")
# Add additional files and directories to make clean
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "output;blib;pm_to_blib;MakefilePerl")

39
onvif/modules/MYMETA.json Normal file
View File

@ -0,0 +1,39 @@
{
"abstract" : "unknown",
"author" : [
"Jan Hochstein"
],
"dynamic_config" : 0,
"generated_by" : "ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.141520",
"license" : [
"unknown"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : "2"
},
"name" : "ONVIF",
"no_index" : {
"directory" : [
"t",
"inc"
]
},
"prereqs" : {
"build" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"runtime" : {
"requires" : {}
}
},
"release_status" : "stable",
"version" : ""
}

21
onvif/modules/MYMETA.yml Normal file
View File

@ -0,0 +1,21 @@
---
abstract: unknown
author:
- 'Jan Hochstein'
build_requires:
ExtUtils::MakeMaker: '0'
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 0
generated_by: 'ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.141520'
license: unknown
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: '1.4'
name: ONVIF
no_index:
directory:
- t
- inc
requires: {}
version: ''

13
onvif/modules/Makefile.PL Normal file
View File

@ -0,0 +1,13 @@
use 5.006;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'ONVIF',
# VERSION_FROM => 'lib/ZoneMinder/Base.pm', # finds $VERSION
PREREQ_PM => {}, # e.g., Module::Name => 1.1
# No need to specify perl modules. MakeMaker will find them automatically
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(#ABSTRACT_FROM => 'lib/ZoneMinder.pm', # retrieve abstract from module
AUTHOR => 'Jan Hochstein') : ()),
);

View File

@ -0,0 +1,267 @@
# ==========================================================================
#
# ZoneMinder ONVIF Client module
# Copyright (C) Jan M. Hochstein
#
# 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 implementation of the ONVIF client module
#
package ONVIF::Client;
use strict;
use warnings;
use Class::Std::Fast;
use version; our $VERSION = qv('1.00.00');
## Transport
require SOAP::WSDL::Transport::HTTP;
## Serializer
require ONVIF::Serializer::SOAP11;
require ONVIF::Serializer::SOAP12;
require WSSecurity::SecuritySerializer;
## Deserializer
require ONVIF::Deserializer::XSD;
## ONVIF APIs
require ONVIF::Device::Interfaces::Device::DevicePort;
require ONVIF::Media::Interfaces::Media::MediaPort;
require ONVIF::PTZ::Interfaces::PTZ::PTZPort;
use Data::Dump qw(dump);
# ========================================================================
# Globals
my %namespace_map = (
'http://www.onvif.org/ver10/device/wsdl' => 'device',
'http://www.onvif.org/ver10/media/wsdl' => 'media',
'http://www.onvif.org/ver20/imaging/wsdl' => 'imaging',
'http://www.onvif.org/ver20/analytics/wsdl' => 'analytics',
'http://www.onvif.org/ver10/deviceIO/wsdl' => 'deviceio',
'http://www.onvif.org/ver10/ptz/wsdl' => 'ptz',
'http://www.onvif.org/ver10/events/wsdl' => 'events',
'http://www.onvif.org/ver10/recording.wsdl' => 'recording',
'http://www.onvif.org/ver10/search.wsdl' => 'search',
'http://www.onvif.org/ver10/replay/wsdl' => 'replay',
);
# ========================================================================
# Attributes
my %services_of :ATTR(:default<{}>);
my %serializer_of :ATTR();
my %soap_version_of :ATTR(:default<('1.1')>);
# =========================================================================
# private methods
sub service
{
my ($self, $serviceName, $attr) = @_;
$services_of{ident $self}{$serviceName}{$attr};
}
sub set_service
{
my ($self, $serviceName, $attr, $value) = @_;
$services_of{ident $self}{$serviceName}{$attr} = $value;
}
sub serializer
{
my ($self) = @_;
$serializer_of{ident $self};
}
sub set_serializer
{
my ($self, $serializer) = @_;
$serializer_of{ident $self} = $serializer;
}
sub soap_version
{
my ($self) = @_;
$soap_version_of{ident $self};
}
sub set_soap_version
{
my ($self, $soap_version) = @_;
$soap_version_of{ident $self} = $soap_version;
# setting the soap version invalidates the serializer
delete $serializer_of{ ident $self };
}
sub get_service_urls
{
my ($self) = @_;
my $result = $self->service('device', 'ep')->GetServices( {
IncludeCapability => 'true', # boolean
},,
);
die $result if not $result;
# print $result . "\n";
foreach my $svc ( @{ $result->get_Service() } ) {
my $short_name = $namespace_map{$svc->get_Namespace()};
my $url_svc = $svc->get_XAddr()->get_value();
if(defined $short_name && defined $url_svc) {
# print "Got $short_name service\n";
$self->set_service($short_name, 'url', $url_svc);
}
}
}
sub http_digest {
my ($service, $username, $password) = @_;
# my $transport = SecurityTransport->new();
# $transport->set_username($username);
# $transport->set_password($password);
# warn "transport: " . $service->get_transport();
*SOAP::Transport::HTTP::Client::get_basic_credentials = sub {
#*SOAP::WSDL::Transport::HTTP::get_basic_credentials = sub {
my ($self, $realm, $uri, $isproxy) = @_;
warn "### Requested credentials for $uri ###";
return ($username, $password)
};
}
# =========================================================================
sub BUILD
{
my ($self, $ident, $args_ref) = @_;
my $url_svc_device = $args_ref->{'url_svc_device'};
my $soap_version = $args_ref->{'soap_version'};
if(! $soap_version) {
$soap_version = '1.1';
}
$self->set_soap_version($soap_version);
my $serializer = ONVIF::Serializer::Base->new();
$serializer->set_soap_version($soap_version);
my $svc_device = ONVIF::Device::Interfaces::Device::DevicePort->new({
proxy => $url_svc_device,
serializer => $serializer,
# "strict => 0" does not work with SOAP header
# deserializer_args => { strict => 0 }
});
$services_of{$ident}{'device'} = { url => $url_svc_device, ep => $svc_device };
$self->get_service_urls();
}
sub get_users
{
my ($self) = @_;
my $result = $self->service('device', 'ep')->GetUsers( { },, );
die $result if not $result;
# print $result . "\n";
}
sub create_user
{
my ($self, $username, $password) = @_;
my $result = $self->service('device', 'ep')->CreateUsers( {
User => { # ONVIF::Device::Types::User
Username => $username, # string
Password => $password, # string
UserLevel => 'Administrator', # UserLevel
Extension => { # ONVIF::Device::Types::UserExtension
},
},
},,
);
die $result if not $result;
# print $result . "\n";
}
sub set_credentials
{
my ($self, $username, $password, $create_if_not_exists) = @_;
# TODO: snyc device and client time
if ($create_if_not_exists) {
# If GetUsers() is ok but empty then CreateUsers()
# if(not get_users()) {
# create_user($username, $password);
# }
}
## from here on use authorization
$self->set_serializer( WSSecurity::SecuritySerializer->new() );
$self->serializer()->set_soap_version($self->soap_version());
$self->serializer()->set_username($username);
$self->serializer()->set_password($password);
$self->service('device', 'ep')->set_serializer($self->serializer());
}
# use this after set_credentials
sub create_services
{
my ($self) = @_;
if(defined $self->service('media', 'url')) {
$self->set_service('media', 'ep', ONVIF::Media::Interfaces::Media::MediaPort->new({
proxy => $self->service('media', 'url'),
serializer => $self->serializer(),
# transport => $transport
}));
}
if(defined $self->service('ptz', 'url')) {
$self->set_service('ptz', 'ep', ONVIF::PTZ::Interfaces::PTZ::PTZPort->new({
proxy => $self->service('ptz', 'url'),
serializer => $self->serializer(),
# transport => $transport
}));
}
}
sub get_endpoint
{
my ($self, $serviceType) = @_;
$self->service($serviceType, 'ep');
}
1;

View File

@ -0,0 +1,267 @@
#!/usr/bin/perl
package ONVIF::Deserializer::MessageParser;
use strict; use warnings;
use SOAP::WSDL::XSD::Typelib::Builtin;
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
## copied from SOAP::Constants
use constant URI_SOAP11_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
use constant URI_SOAP12_ENV => "http://www.w3.org/2003/05/soap-envelope";
## copied and adapted from
use base qw(SOAP::WSDL::Expat::MessageParser);
## we get the soap version from the message
my %soap_version_of; # :ATTR( :default<()>);
sub soap_version {
my ($self) = @_;
$soap_version_of{ident $self};
}
# override new() to pass along the init_args
sub new {
my ($class, $args) = @_;
my $self = {
class_resolver => $args->{ class_resolver },
strict => defined $args->{ strict } ? $args->{ strict } : 1,
};
bless $self, $class;
# could be written as && - but Devel::Cover doesn't like that
if ($args->{ class_resolver }) {
$self->load_classes()
if ! exists $SOAP::WSDL::Expat::MessageParser::LOADED_OF{ $self->{ class_resolver } };
}
return $self;
## calling the parent's calss new() dows not work here.
# return SOAP::WSDL::Expat::MessageParser->new($class, $args);
}
sub _initialize {
my ($self, $parser) = @_;
$self->{ parser } = $parser;
delete $self->{ data }; # remove potential old results
delete $self->{ header };
my $characters;
# Note: $current MUST be undef - it is used as sentinel
# on the object stack via if (! defined $list->[-1])
# DON'T set it to anything else !
my $current = undef;
my $list = []; # node list (object stack)
my $path = []; # current path
my $skip = 0; # skip elements
my $depth = 0;
my %content_check = $self->{strict}
? (
0 => sub {
die "Bad top node $_[1]" if $_[1] ne 'Envelope';
if($_[0]->namespace($_[1]) eq URI_SOAP11_ENV) {
$_[0]{ soap_version } = '1.1';
# $soap_version_of{ident $_[0]} = '1.1';
}
elsif($_[0]->namespace($_[1]) eq URI_SOAP12_ENV) {
$_[0]{ soap_version } = '1.2';
}
else {
die "Bad namespace for SOAP envelope: " . $_[0]->recognized_string();
}
#print "Receiving SOAP " . $_[0]{ soap_version } ."\n";
$depth++;
return;
},
1 => sub {
# Header or Body
#print "Start $_[1] at level 1\n";
$depth++;
if ($_[1] eq 'Body') {
if (exists $self->{ data }) { # there was header data
$self->{ header } = $self->{ data };
delete $self->{ data };
$list = [];
$path = [];
undef $current;
}
}
return;
}
)
: (
0 => sub { $depth++ },
1 => sub { $depth++ },
);
# use "globals" for speed
my ($_prefix, $_method, $_class, $_leaf) = ();
my $char_handler = sub {
return if (!$_leaf); # we only want characters in leaf nodes
$characters .= $_[1]; # add to characters
return; # return void
};
no strict qw(refs);
$parser->setHandlers(
Start => sub {
# my ($parser, $element, %attrs) = @_;
#print "Start $_[1]\n";
$_leaf = 1; # believe we're a leaf node until we see an end
# call methods without using their parameter stack
# That's slightly faster than $content_check{ $depth }->()
# and we don't have to pass $_[1] to the method.
# Yup, that's dirty.
return &{$content_check{ $depth }}
if exists $content_check{ $depth };
push @{ $path }, $_[1]; # step down in path
return if $skip; # skip inside __SKIP__
# resolve class of this element
$_class = $self->{ class_resolver }->get_class( $path );
# we cannot use this if there are <xs:any> elements
# if (! defined($_class) and $self->{ strict }) {
# die "Cannot resolve class for "
# . join('/', @{ $path }) . " via " . $self->{ class_resolver };
# }
if (! defined($_class) or ($_class eq '__SKIP__') ) {
$skip = join('/', @{ $path });
$_[0]->setHandlers( Char => undef );
return;
}
# step down in tree (remember current)
#
# on the first object (after skipping Envelope/Body), $current
# is undef.
# We put it on the stack, anyway, and use it as sentinel when
# going through the closing tags in the End handler
#
push @$list, $current;
# cleanup. Mainly here to help profilers find the real hot spots
undef $current;
# cleanup
$characters = q{};
# Create and set new objects using Class::Std::Fast's object cache
# if possible, or blessing directly into the class in question
# (circumventing constructor) here.
# That's dirty, but fast.
#
# TODO: check whether this is faster under all perls - there's
# strange benchmark results...
#
# The alternative would read:
# $current = $_class->new({ @_[2..$#_] });
#
$current = pop @{ $SOAP::WSDL::Expat::MessageParser::OBJECT_CACHE_REF->{ $_class } };
if (not defined $current) {
my $o = Class::Std::Fast::ID();
$current = bless \$o, $_class;
}
# set attributes if there are any
ATTR: {
if (@_ > 2) {
# die Data::Dumper::Dumper(@_[2..$#_]);
my %attr = @_[2..$#_];
if (my $nil = delete $attr{nil}) {
# TODO: check namespace
if ($nil && $nil ne 'false') {
undef $characters;
last ATTR if not (%attr);
}
}
$current->attr(\%attr);
}
}
$depth++;
# TODO: Skip content of anyType / any stuff
return;
},
Char => $char_handler,
End => sub {
#print "End $_[1]\n";
pop @{ $path }; # step up in path
# check __SKIP__
if ($skip) {
return if $skip ne join '/', @{ $path }, $_[1];
$skip = 0;
$_[0]->setHandlers( Char => $char_handler );
return;
}
$depth--;
# we only set character values in leaf nodes
if ($_leaf) {
# Use dirty but fast access via global variables.
#
# The normal way (via method) would be this:
#
# $current->set_value( $characters ) if (length($characters));
#
$SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType::___value
->{ $$current } = $characters
if defined $characters && defined $current; # =~m{ [^\s] }xms;
}
# empty characters
$characters = q{};
# stop believing we're a leaf node
$_leaf = 0;
# return if there's only one elment - can't set it in parent ;-)
# but set as root element if we don't have one already.
if (not defined $list->[-1]) {
$self->{ data } = $current if (not exists $self->{ data });
return;
};
# set appropriate attribute in last element
# multiple values must be implemented in base class
# TODO check if hash access is faster
# $_method = "add_$_localname";
$_method = "add_$_[1]";
#
# fixup XML names for perl names
#
$_method =~s{\.}{__}xg;
$_method =~s{\-}{_}xg;
$list->[-1]->$_method( $current );
$current = pop @$list; # step up in object hierarchy
return;
}
);
return $parser;
}
sub get_header {
return $_[0]->{ header };
}
1;

View File

@ -0,0 +1,66 @@
package ONVIF::Deserializer::XSD;
use strict;
use warnings;
use base qw(SOAP::WSDL::Deserializer::XSD);
use SOAP::WSDL::SOAP::Typelib::Fault11;
use ONVIF::Deserializer::MessageParser;
use SOAP::WSDL::Factory::Deserializer;
SOAP::WSDL::Factory::Deserializer->register('1.1', __PACKAGE__ );
SOAP::WSDL::Factory::Deserializer->register('1.2', __PACKAGE__ );
## we get the soap version from the message parser
my %soap_version_of :ATTR( :default<()>);
sub soap_version {
my ($self) = @_;
if($SOAP::WSDL::Deserializer::XSD::parser_of{ident $self}) {
return $SOAP::WSDL::Deserializer::XSD::parser_of{ident $self}->soap_version();
}
return '';
}
sub deserialize {
my ($self, $content) = @_;
my $parser = $SOAP::WSDL::Deserializer::XSD::parser_of{ ${ $self } };
if(not $parser) {
$parser = ONVIF::Deserializer::MessageParser->new({
strict => $SOAP::WSDL::Deserializer::XSD::strict_of{ ${ $self } }
});
$SOAP::WSDL::Deserializer::XSD::parser_of{ ${ $self } } = $parser;
}
$parser->class_resolver(
$self->SOAP::WSDL::Deserializer::XSD::get_class_resolver() );
eval { $parser->parse_string( $content ) };
if ($@) {
return $self->generate_fault({
code => 'SOAP-ENV:Server',
role => 'urn:localhost',
message => "Error deserializing message: $@. \n"
. "Message was: \n$content"
});
}
return ( $parser->get_data(),
$parser->get_header() );
}
sub generate_fault {
my ($self, $args_from_ref) = @_;
return SOAP::WSDL::SOAP::Typelib::Fault11->new({
faultcode => $args_from_ref->{ code } || 'SOAP-ENV:Client',
faultactor => $args_from_ref->{ role } || 'urn:localhost',
faultstring => $args_from_ref->{ message } || "Unknown error"
});
}
1;
__END__

View File

@ -0,0 +1,177 @@
#!/usr/bin/perl -w
package ONVIF::Serializer::Base;
use strict;
use warnings;
# =========================================================================
use Class::Std::Fast::Storable;
use Scalar::Util qw(blessed);
require SOAP::WSDL::Factory::Serializer;
## require SOAP::Constants;
use constant URI_1999_SCHEMA_XSD => "http://www.w3.org/1999/XMLSchema";
use constant URI_1999_SCHEMA_XSI => "http://www.w3.org/1999/XMLSchema-instance";
use constant URI_2000_SCHEMA_XSD => "http://www.w3.org/2000/10/XMLSchema";
use constant URI_2000_SCHEMA_XSI => "http://www.w3.org/2000/10/XMLSchema-instance";
use constant URI_2001_SCHEMA_XSD => "http://www.w3.org/2001/XMLSchema";
use constant URI_2001_SCHEMA_XSI => "http://www.w3.org/2001/XMLSchema-instance";
use constant URI_LITERAL_ENC => "";
use constant URI_SOAP11_ENC => "http://schemas.xmlsoap.org/soap/encoding/";
use constant URI_SOAP11_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
use constant URI_SOAP11_NEXT_ACTOR => "http://schemas.xmlsoap.org/soap/actor/next";
use constant URI_SOAP12_ENC => "http://www.w3.org/2003/05/soap-encoding";
use constant URI_SOAP12_ENV => "http://www.w3.org/2003/05/soap-envelope";
use constant URI_SOAP12_NOENC => "http://www.w3.org/2003/05/soap-envelope/encoding/none";
use constant URI_SOAP12_NEXT_ACTOR => "http://www.w3.org/2003/05/soap-envelope/role/next";
my %soap_version_of :ATTR( :default<()>);
my $XML_INSTANCE_NS = 'http://www.w3.org/2001/XMLSchema-instance';
sub soap_version
{
my ($self) = @_;
$soap_version_of{ident $self};
}
sub set_soap_version
{
my ($self, $version) = @_;
if(! (($version eq '1.1') or ($version eq '1.2')) ) {
warn "Undefined SOAP version \'$version\'";
return;
}
#print "using SOAP $version\n";
$soap_version_of{ident $self} = $version;
}
sub serialize {
my ($self, $args_of_ref) = @_;
my $SOAP_NS;
if($self->soap_version() eq '1.2') {
$SOAP_NS = URI_SOAP12_ENV;
}
else {
$SOAP_NS = URI_SOAP11_ENV;
}
my $opt = $args_of_ref->{ options };
if (not $opt->{ namespace }->{ $SOAP_NS })
{
$opt->{ namespace }->{ $SOAP_NS } = 'SOAP-ENV';
}
if (not $opt->{ namespace }->{ $XML_INSTANCE_NS })
{
$opt->{ namespace }->{ $XML_INSTANCE_NS } = 'xsi';
}
my $soap_prefix = $opt->{ namespace }->{ $SOAP_NS };
# envelope start with namespaces
my $xml = "<$soap_prefix\:Envelope ";
while (my ($uri, $prefix) = each %{ $opt->{ namespace } })
{
$xml .= "xmlns:$prefix=\"$uri\" ";
}
#
# add namespace for user-supplied prefix if needed
$xml .= "xmlns:$opt->{prefix}=\"" . $args_of_ref->{ body }->get_xmlns() . "\" "
if $opt->{prefix};
# TODO insert encoding
$xml.='>';
$xml .= $self->serialize_header($args_of_ref->{ method }, $args_of_ref->{ header }, $opt);
$xml .= $self->serialize_body($args_of_ref->{ method }, $args_of_ref->{ body }, $opt);
$xml .= '</' . $soap_prefix .':Envelope>';
return $xml;
}
sub serialize_header {
my ($self, $method, $data, $opt) = @_;
my $SOAP_NS;
if($self->soap_version() eq '1.2') {
$SOAP_NS = URI_SOAP12_ENV;
}
else {
$SOAP_NS = URI_SOAP11_ENV;
}
# header is optional. Leave out if there's no header data
return q{} if not $data;
return join ( q{},
"<$opt->{ namespace }->{ $SOAP_NS }\:Header>",
blessed $data ? $data->serialize_qualified : (),
"</$opt->{ namespace }->{ $SOAP_NS }\:Header>",
);
}
sub serialize_body {
my ($self, $method, $data, $opt) = @_;
my $SOAP_NS;
if($self->soap_version() eq '1.2') {
$SOAP_NS = URI_SOAP12_ENV;
}
else {
$SOAP_NS = URI_SOAP11_ENV;
}
# TODO This one wipes out the old class' XML name globally
# Fix in some more appropriate place...
$data->__set_name("$opt->{prefix}:" . $data->__get_name() ) if $opt->{prefix};
# Body is NOT optional. Serialize to empty body
# if we have no data.
return join ( q{},
"<$opt->{ namespace }->{ $SOAP_NS }\:Body>",
defined $data
? ref $data eq 'ARRAY'
? join q{}, map { blessed $_ ? $_->serialize_qualified() : () } @{ $data }
: blessed $data
? $opt->{prefix}
? $data->serialize()
: $data->serialize_qualified()
: ()
: (),
"</$opt->{ namespace }->{ $SOAP_NS }\:Body>",
);
}
# =========================================================================
1;
__END__
=pod
=head1 NAME
Copy of SOAP:WSDL::Serializer::XSD adapted
=head1 LICENSE AND COPYRIGHT
This file was adapted from a part of SOAP-WSDL. You may
distribute/modify it under the same terms as perl itself
=head1 REPOSITORY INFORMATION
$Rev: 851 $
$LastChangedBy: kutterma $
$Id: XSD.pm 851 2009-05-15 22:45:18Z kutterma $
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Serializer/XSD.pm $
=cut

View File

@ -0,0 +1,19 @@
#!/usr/bin/perl -w
package ONVIF::Serializer::SOAP11;
use strict;
use warnings;
use base qw(ONVIF::Serializer::Base);
use SOAP::WSDL::Factory::Serializer;
SOAP::WSDL::Factory::Serializer->register( '1.1' , __PACKAGE__ );
sub BUILD
{
my ($self, $ident, $args_ref) = @_;
# $soapversion_of{ $ident } = '1.1';
$self->set_soap_version('1.1');
}
1;

View File

@ -0,0 +1,19 @@
#!/usr/bin/perl -w
package ONVIF::Serializer::SOAP12;
use strict;
use warnings;
use base qw(ONVIF::Serializer::Base);
use SOAP::WSDL::Factory::Serializer;
SOAP::WSDL::Factory::Serializer->register( '1.2' , __PACKAGE__ );
sub BUILD
{
my ($self, $ident, $args_ref) = @_;
# $soapversion_of{ $ident } = '1.2';
$self->set_soap_version('1.2');
}
1;

View File

@ -0,0 +1,159 @@
# ==========================================================================
#
# Perl WS-Discovery implementation
# Copyright (C) Jan M. Hochstein
#
# 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.
#
# ==========================================================================
#
# UDP Transport for SOAP WS-Discovery to be used with SOAP::WSDL::Client
#
package WSDiscovery::TransportUDP;
use strict;
use warnings;
use Class::Std::Fast::Storable;
use IO::Socket::Multicast;
use SOAP::WSDL::Factory::Transport;
use Time::HiRes qw( usleep );
use version; our $VERSION = qv('1.00.00');
# 20 times 200 msec = 4sec timeout
use constant WAIT_TIME => 200.0;
use constant WAIT_COUNT => 20;
SOAP::WSDL::Factory::Transport->register( 'soap.udp' => __PACKAGE__ );
my %code_of :ATTR(:name<code> :default<()>);
my %status_of :ATTR(:name<status> :default<()>);
my %message_of :ATTR(:name<message> :default<()>);
my %is_success_of :ATTR(:name<is_success> :default<()>);
my %local_addr_of :ATTR(:name<local_addr> :init_arg<local_addr> :default<()>);
# create methods normally inherited from SOAP::Client
SUBFACTORY: {
no strict qw(refs);
foreach my $method ( qw(code message status is_success) ) {
*{ $method } = *{ "get_$method" };
}
}
# override to receive more than one response
sub _notify_response
{
# my ($transport, $response) = @_;
}
sub send_multi() {
my ($self, $address, $port, $data) = @_;
my $destination = $address . ':' . $port;
my $socket = IO::Socket::Multicast->new(PROTO => 'udp',
LocalPort=>$port, PeerAddr=>$destination, ReuseAddr=>1)
or die 'Cannot open multicast socket to ' . ${address} . ':' . ${port};
$socket->mcast_ttl(1);
$socket->send($data);
}
sub receive_multi() {
my ($self, $address, $port) = @_;
my $data = undef;
my $socket = IO::Socket::Multicast->new(PROTO => 'udp',
LocalPort=>$port, ReuseAddr=>1);
$socket->mcast_add($address);
my $readbits = '';
vec($readbits, $socket->fileno, 1) = 1;
if(select($readbits, undef, undef, WAIT_TIME/1000)) {
$socket->recv($data, 9999);
return $data;
}
return undef;
}
sub receive_uni() {
my ($self, $address, $port, $localaddr) = @_;
my $data = undef;
my $socket = IO::Socket::Multicast->new(PROTO => 'udp',
LocalAddr => $localaddr, LocalPort=>$port, ReuseAddr=>1);
$socket->mcast_add($address);
my $readbits = '';
vec($readbits, $socket->fileno, 1) = 1;
if(select($readbits, undef, undef, WAIT_TIME/1000)) {
$socket->recv($data, 9999);
return $data;
}
return undef;
}
sub send_receive {
my ($self, %parameters) = @_;
my ($envelope, $soap_action, $endpoint, $encoding, $content_type) =
@parameters{qw(envelope action endpoint encoding content_type)};
my ($address,$port) = ($endpoint =~ /([^:\/]+):([0-9]+)/);
# warn "address = ${address}";
# warn "port = ${port}";
$self->send_multi($address, $port, $envelope);
my $localaddr = $self->get_local_addr();
my ($response, $last_response);
my $wait = WAIT_COUNT;
while ( $wait >= 0 ) {
if($localaddr) {
if($response = $self->receive_uni($address, $port, $localaddr)) {
$last_response = $response;
$self->_notify_response($response);
}
$wait --;
}
if($response = $self->receive_multi($address, $port)) {
$last_response = $response;
$self->_notify_response($response);
}
$wait --;
}
if($last_response) {
$self->code();
$self->message();
$self->is_success(1);
$self->status('OK');
}
else{
$self->code();
$self->message();
$self->is_success(0);
$self->status('TIMEOUT');
}
return $last_response;
}
1;

View File

@ -0,0 +1,146 @@
# ==========================================================================
#
# Perl WS-Security header for SOAP::WSDL
# Copyright (C) Jan M. Hochstein
#
# 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.
#
# ==========================================================================
#
# Serializer with WS-Security header for SOAP::WSDL
#
package WSSecurity::SecuritySerializer;
use strict;
use warnings;
use SOAP::WSDL::Factory::Serializer;
use Time::Local;
use Digest::SHA1;
use MIME::Base64;
use base qw( ONVIF::Serializer::Base );
use version; our $VERSION = qv('1.00.00');
use constant URI_SOAP11_ENV => "http://schemas.xmlsoap.org/soap/envelope/";
use constant URI_SOAP12_ENV => "http://www.w3.org/2003/05/soap-envelope";
#SOAP::WSDL::Factory::Serializer->register( '1.1' , __PACKAGE__ );
my %username_of :ATTR(:name<username> :default<()>);
my %password_of :ATTR(:name<password> :default<()>);
#sub BUILD
#{
# my ($self, $ident, $args_ref) = @_;
# $soapversion_of{ $ident } = '1.2';
#}
SUBFACTORY: {
for (qw(username password)) {
my $setter = "set_$_";
my $getter = "get_$_";
no strict qw(refs); ## no critic ProhibitNoStrict
*{ $_ } = sub { my $self = shift;
if (@_) {
$self->$setter(@_);
return $self;
}
return $self->$getter()
};
}
}
#
# #############################################################################
#
# the following methods have been adapted from an example implementation at
# http://www.wlp-systems.de/soap-lite-and-ws-security
#
sub timestamp {
my ($sec,$min,$hour,$mday,$mon,$year,undef,undef,undef) = gmtime(time);
$mon++;
$year = $year + 1900;
return sprintf("%04d-%02d-%02dT%02d:%02d:%02dZ",$year,$mon,$mday,$hour,$min,$sec);
}
sub create_generator {
my ($name,$start_with) = @_;
my $i = $start_with;
return sub { $name . ++$i; };
}
*default_nonce_generator = create_generator( "a value of ", int(1000*rand()) );
sub ws_authen {
my($username,$password,$nonce_generator) = @_;
if(!defined($nonce_generator)) {
$nonce_generator = \&default_nonce_generator;
}
my $nonce = $nonce_generator->();
my $timestamp = timestamp();
my $pwDigest = Digest::SHA1::sha1( $nonce . $timestamp . $password );
my $passwordHash = MIME::Base64::encode_base64($pwDigest,"");
my $nonceHash = MIME::Base64::encode_base64($nonce,"");
my $auth = <<END;
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>$username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">$passwordHash</wsse:Password>
<wsse:Nonce>$nonceHash</wsse:Nonce>
<wsu:Created>$timestamp</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
END
# warn "Auth Header is: " . $auth;
$auth;
}
#
# #############################################################################
#
sub security_header {
my ($self) = @_;
return ws_authen($self->username, $self->password, );
}
sub serialize_header() {
my ($self, $method, $data, $opt) = @_;
my $SOAP_NS = URI_SOAP11_ENV;
if($self->soap_version() eq '1.2') {
$SOAP_NS = URI_SOAP12_ENV;
}
# header is optional. Leave out if there's no header data
return join ( q{},
"<$opt->{ namespace }->{ $SOAP_NS }\:Header>",
$self->security_header(),
( $data && blessed $data ) ? $data->serialize_qualified : (),
"</$opt->{ namespace }->{ $SOAP_NS }\:Header>",
);
}
1;

0
onvif/modules/pm_to_blib Normal file
View File

View File

@ -0,0 +1,10 @@
# Add build target for the perl modules
add_custom_target(zmonvifproxy ALL perl Makefile.PL FIRST_MAKEFILE=MakefilePerl PREFIX="${CMAKE_CURRENT_BINARY_DIR}/output" LIB="${CMAKE_CURRENT_BINARY_DIR}/output/${ZM_PERL_SUBPREFIX}" INSTALLSITEMAN3DIR="${CMAKE_CURRENT_BINARY_DIR}/output/${CMAKE_INSTALL_MANDIR}/man3" ${MAKEMAKER_NOECHO_COMMAND} COMMAND make --makefile=MakefilePerl COMMAND make --makefile=MakefilePerl pure_install COMMENT "Building ZoneMinder perl modules")
# Add install target for the perl modules
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/output/" DESTINATION "${CMAKE_INSTALL_PREFIX}")
# Add additional files and directories to make clean
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "output;blib;pm_to_blib;MakefilePerl")

39
onvif/proxy/MYMETA.json Normal file
View File

@ -0,0 +1,39 @@
{
"abstract" : "unknown",
"author" : [
"Jan Hochstein"
],
"dynamic_config" : 0,
"generated_by" : "ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.141520",
"license" : [
"unknown"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : "2"
},
"name" : "ONVIF",
"no_index" : {
"directory" : [
"t",
"inc"
]
},
"prereqs" : {
"build" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"runtime" : {
"requires" : {}
}
},
"release_status" : "stable",
"version" : ""
}

21
onvif/proxy/MYMETA.yml Normal file
View File

@ -0,0 +1,21 @@
---
abstract: unknown
author:
- 'Jan Hochstein'
build_requires:
ExtUtils::MakeMaker: '0'
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 0
generated_by: 'ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.141520'
license: unknown
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: '1.4'
name: ONVIF
no_index:
directory:
- t
- inc
requires: {}
version: ''

13
onvif/proxy/Makefile.PL Normal file
View File

@ -0,0 +1,13 @@
use 5.006;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'ONVIF',
# VERSION_FROM => 'lib/ZoneMinder/Base.pm', # finds $VERSION
PREREQ_PM => {}, # e.g., Module::Name => 1.1
# No need to specify perl modules. MakeMaker will find them automatically
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(#ABSTRACT_FROM => 'lib/ZoneMinder.pm', # retrieve abstract from module
AUTHOR => 'Jan Hochstein') : ()),
);

View File

@ -0,0 +1,54 @@
package ONVIF::Device::Attributes::actor;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://schemas.xmlsoap.org/soap/envelope/' }
__PACKAGE__->__set_name('actor');
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Attribute
SOAP::WSDL::XSD::Typelib::Builtin::anyURI
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Attributes::actor
=head1 DESCRIPTION
Perl data type class for the XML Schema defined attribute
actor from the namespace http://schemas.xmlsoap.org/soap/envelope/.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Attributes::actor->new($data);
Constructor. The following data structure may be passed to new():
{ value => $value }
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,64 @@
package ONVIF::Device::Attributes::contentType;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.w3.org/2005/05/xmlmime' }
__PACKAGE__->__set_name('contentType');
__PACKAGE__->__set_ref();
# atomic simpleType: <attribute><simpleType
use base qw(
SOAP::WSDL::XSD::Typelib::Attribute
);
# derivation by restriction
use base qw(
SOAP::WSDL::XSD::Typelib::Builtin::string);
}
1;
=pod
=head1 NAME
ONVIF::Device::Attributes::contentType
=head1 DESCRIPTION
Perl data type class for the XML Schema defined attribute
contentType from the namespace http://www.w3.org/2005/05/xmlmime.
This XML element type class has a atomic simpleType as it's base:
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Attributes::contentType->new($data);
Constructor. The following data structure may be passed to new():
{ value => $value }
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,54 @@
package ONVIF::Device::Attributes::encodingStyle;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://schemas.xmlsoap.org/soap/envelope/' }
__PACKAGE__->__set_name('encodingStyle');
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Attribute
ONVIF::Device::Types::encodingStyle
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Attributes::encodingStyle
=head1 DESCRIPTION
Perl data type class for the XML Schema defined attribute
encodingStyle from the namespace http://schemas.xmlsoap.org/soap/envelope/.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Attributes::encodingStyle->new($data);
Constructor. The following data structure may be passed to new():
{ value => $value }
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,54 @@
package ONVIF::Device::Attributes::expectedContentTypes;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.w3.org/2005/05/xmlmime' }
__PACKAGE__->__set_name('expectedContentTypes');
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Attribute
SOAP::WSDL::XSD::Typelib::Builtin::string
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Attributes::expectedContentTypes
=head1 DESCRIPTION
Perl data type class for the XML Schema defined attribute
expectedContentTypes from the namespace http://www.w3.org/2005/05/xmlmime.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Attributes::expectedContentTypes->new($data);
Constructor. The following data structure may be passed to new():
{ value => $value }
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,64 @@
package ONVIF::Device::Attributes::mustUnderstand;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://schemas.xmlsoap.org/soap/envelope/' }
__PACKAGE__->__set_name('mustUnderstand');
__PACKAGE__->__set_ref();
# atomic simpleType: <attribute><simpleType
use base qw(
SOAP::WSDL::XSD::Typelib::Attribute
);
# derivation by restriction
use base qw(
SOAP::WSDL::XSD::Typelib::Builtin::boolean);
}
1;
=pod
=head1 NAME
ONVIF::Device::Attributes::mustUnderstand
=head1 DESCRIPTION
Perl data type class for the XML Schema defined attribute
mustUnderstand from the namespace http://schemas.xmlsoap.org/soap/envelope/.
This XML element type class has a atomic simpleType as it's base:
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Attributes::mustUnderstand->new($data);
Constructor. The following data structure may be passed to new():
{ value => $value }
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,133 @@
package ONVIF::Device::Elements::AddIPAddressFilter;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('AddIPAddressFilter');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %IPAddressFilter_of :ATTR(:get<IPAddressFilter>);
__PACKAGE__->_factory(
[ qw( IPAddressFilter
) ],
{
'IPAddressFilter' => \%IPAddressFilter_of,
},
{
'IPAddressFilter' => 'ONVIF::Device::Types::IPAddressFilter',
},
{
'IPAddressFilter' => 'IPAddressFilter',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AddIPAddressFilter
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AddIPAddressFilter from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * IPAddressFilter
$element->set_IPAddressFilter($data);
$element->get_IPAddressFilter();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AddIPAddressFilter->new($data);
Constructor. The following data structure may be passed to new():
{
IPAddressFilter => { # ONVIF::Device::Types::IPAddressFilter
Type => $some_value, # IPAddressFilterType
IPv4Address => { # ONVIF::Device::Types::PrefixedIPv4Address
Address => $some_value, # IPv4Address
PrefixLength => $some_value, # int
},
IPv6Address => { # ONVIF::Device::Types::PrefixedIPv6Address
Address => $some_value, # IPv6Address
PrefixLength => $some_value, # int
},
Extension => { # ONVIF::Device::Types::IPAddressFilterExtension
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::AddIPAddressFilterResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('AddIPAddressFilterResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AddIPAddressFilterResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AddIPAddressFilterResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AddIPAddressFilterResponse->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,121 @@
package ONVIF::Device::Elements::AddScopes;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('AddScopes');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %ScopeItem_of :ATTR(:get<ScopeItem>);
__PACKAGE__->_factory(
[ qw( ScopeItem
) ],
{
'ScopeItem' => \%ScopeItem_of,
},
{
'ScopeItem' => 'SOAP::WSDL::XSD::Typelib::Builtin::anyURI',
},
{
'ScopeItem' => 'ScopeItem',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AddScopes
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AddScopes from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * ScopeItem
$element->set_ScopeItem($data);
$element->get_ScopeItem();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AddScopes->new($data);
Constructor. The following data structure may be passed to new():
{
ScopeItem => $some_value, # anyURI
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::AddScopesResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('AddScopesResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AddScopesResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AddScopesResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AddScopesResponse->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,58 @@
package ONVIF::Device::Elements::AudioDecoderConfiguration;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/schema' }
__PACKAGE__->__set_name('AudioDecoderConfiguration');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::AudioDecoderConfiguration
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AudioDecoderConfiguration
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AudioDecoderConfiguration from the namespace http://www.onvif.org/ver10/schema.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AudioDecoderConfiguration->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::AudioDecoderConfiguration
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,72 @@
package ONVIF::Device::Elements::AudioEncoderConfiguration;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/schema' }
__PACKAGE__->__set_name('AudioEncoderConfiguration');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::AudioEncoderConfiguration
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AudioEncoderConfiguration
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AudioEncoderConfiguration from the namespace http://www.onvif.org/ver10/schema.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AudioEncoderConfiguration->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::AudioEncoderConfiguration
Encoding => $some_value, # AudioEncoding
Bitrate => $some_value, # int
SampleRate => $some_value, # int
Multicast => { # ONVIF::Device::Types::MulticastConfiguration
Address => { # ONVIF::Device::Types::IPAddress
Type => $some_value, # IPType
IPv4Address => $some_value, # IPv4Address
IPv6Address => $some_value, # IPv6Address
},
Port => $some_value, # int
TTL => $some_value, # int
AutoStart => $some_value, # boolean
},
SessionTimeout => $some_value, # duration
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,61 @@
package ONVIF::Device::Elements::AudioOutputConfiguration;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/schema' }
__PACKAGE__->__set_name('AudioOutputConfiguration');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::AudioOutputConfiguration
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AudioOutputConfiguration
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AudioOutputConfiguration from the namespace http://www.onvif.org/ver10/schema.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AudioOutputConfiguration->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::AudioOutputConfiguration
OutputToken => $some_value, # ReferenceToken
SendPrimacy => $some_value, # anyURI
OutputLevel => $some_value, # int
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,59 @@
package ONVIF::Device::Elements::AudioSourceConfiguration;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/schema' }
__PACKAGE__->__set_name('AudioSourceConfiguration');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::AudioSourceConfiguration
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::AudioSourceConfiguration
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
AudioSourceConfiguration from the namespace http://www.onvif.org/ver10/schema.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::AudioSourceConfiguration->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::AudioSourceConfiguration
SourceToken => $some_value, # ReferenceToken
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,58 @@
package ONVIF::Device::Elements::Body;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://schemas.xmlsoap.org/soap/envelope/' }
__PACKAGE__->__set_name('Body');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::Body
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::Body
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
Body from the namespace http://schemas.xmlsoap.org/soap/envelope/.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::Body->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::Body
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,62 @@
package ONVIF::Device::Elements::Capabilities;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('Capabilities');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::DeviceServiceCapabilities
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::Capabilities
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
Capabilities from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::Capabilities->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::DeviceServiceCapabilities
Network => ,
Security => ,
System => ,
Misc => ,
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,163 @@
package ONVIF::Device::Elements::CreateCertificate;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('CreateCertificate');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %CertificateID_of :ATTR(:get<CertificateID>);
my %Subject_of :ATTR(:get<Subject>);
my %ValidNotBefore_of :ATTR(:get<ValidNotBefore>);
my %ValidNotAfter_of :ATTR(:get<ValidNotAfter>);
__PACKAGE__->_factory(
[ qw( CertificateID
Subject
ValidNotBefore
ValidNotAfter
) ],
{
'CertificateID' => \%CertificateID_of,
'Subject' => \%Subject_of,
'ValidNotBefore' => \%ValidNotBefore_of,
'ValidNotAfter' => \%ValidNotAfter_of,
},
{
'CertificateID' => 'SOAP::WSDL::XSD::Typelib::Builtin::token',
'Subject' => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
'ValidNotBefore' => 'SOAP::WSDL::XSD::Typelib::Builtin::dateTime',
'ValidNotAfter' => 'SOAP::WSDL::XSD::Typelib::Builtin::dateTime',
},
{
'CertificateID' => 'CertificateID',
'Subject' => 'Subject',
'ValidNotBefore' => 'ValidNotBefore',
'ValidNotAfter' => 'ValidNotAfter',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::CreateCertificate
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
CreateCertificate from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * CertificateID
$element->set_CertificateID($data);
$element->get_CertificateID();
=item * Subject
$element->set_Subject($data);
$element->get_Subject();
=item * ValidNotBefore
$element->set_ValidNotBefore($data);
$element->get_ValidNotBefore();
=item * ValidNotAfter
$element->set_ValidNotAfter($data);
$element->get_ValidNotAfter();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::CreateCertificate->new($data);
Constructor. The following data structure may be passed to new():
{
CertificateID => $some_value, # token
Subject => $some_value, # string
ValidNotBefore => $some_value, # dateTime
ValidNotAfter => $some_value, # dateTime
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,126 @@
package ONVIF::Device::Elements::CreateCertificateResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('CreateCertificateResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %NvtCertificate_of :ATTR(:get<NvtCertificate>);
__PACKAGE__->_factory(
[ qw( NvtCertificate
) ],
{
'NvtCertificate' => \%NvtCertificate_of,
},
{
'NvtCertificate' => 'ONVIF::Device::Types::Certificate',
},
{
'NvtCertificate' => 'NvtCertificate',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::CreateCertificateResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
CreateCertificateResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * NvtCertificate
$element->set_NvtCertificate($data);
$element->get_NvtCertificate();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::CreateCertificateResponse->new($data);
Constructor. The following data structure may be passed to new():
{
NvtCertificate => { # ONVIF::Device::Types::Certificate
CertificateID => $some_value, # token
Certificate => { # ONVIF::Device::Types::BinaryData
Data => $some_value, # base64Binary
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,137 @@
package ONVIF::Device::Elements::CreateDot1XConfiguration;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('CreateDot1XConfiguration');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %Dot1XConfiguration_of :ATTR(:get<Dot1XConfiguration>);
__PACKAGE__->_factory(
[ qw( Dot1XConfiguration
) ],
{
'Dot1XConfiguration' => \%Dot1XConfiguration_of,
},
{
'Dot1XConfiguration' => 'ONVIF::Device::Types::Dot1XConfiguration',
},
{
'Dot1XConfiguration' => 'Dot1XConfiguration',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::CreateDot1XConfiguration
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
CreateDot1XConfiguration from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * Dot1XConfiguration
$element->set_Dot1XConfiguration($data);
$element->get_Dot1XConfiguration();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::CreateDot1XConfiguration->new($data);
Constructor. The following data structure may be passed to new():
{
Dot1XConfiguration => { # ONVIF::Device::Types::Dot1XConfiguration
Dot1XConfigurationToken => $some_value, # ReferenceToken
Identity => $some_value, # string
AnonymousID => $some_value, # string
EAPMethod => $some_value, # int
CACertificateID => $some_value, # token
EAPMethodConfiguration => { # ONVIF::Device::Types::EAPMethodConfiguration
TLSConfiguration => { # ONVIF::Device::Types::TLSConfiguration
CertificateID => $some_value, # token
},
Password => $some_value, # string
Extension => { # ONVIF::Device::Types::EapMethodExtension
},
},
Extension => { # ONVIF::Device::Types::Dot1XConfigurationExtension
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::CreateDot1XConfigurationResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('CreateDot1XConfigurationResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::CreateDot1XConfigurationResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
CreateDot1XConfigurationResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::CreateDot1XConfigurationResponse->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,127 @@
package ONVIF::Device::Elements::CreateUsers;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('CreateUsers');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %User_of :ATTR(:get<User>);
__PACKAGE__->_factory(
[ qw( User
) ],
{
'User' => \%User_of,
},
{
'User' => 'ONVIF::Device::Types::User',
},
{
'User' => 'User',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::CreateUsers
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
CreateUsers from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * User
$element->set_User($data);
$element->get_User();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::CreateUsers->new($data);
Constructor. The following data structure may be passed to new():
{
User => { # ONVIF::Device::Types::User
Username => $some_value, # string
Password => $some_value, # string
UserLevel => $some_value, # UserLevel
Extension => { # ONVIF::Device::Types::UserExtension
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::CreateUsersResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('CreateUsersResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::CreateUsersResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
CreateUsersResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::CreateUsersResponse->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,121 @@
package ONVIF::Device::Elements::DeleteCertificates;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('DeleteCertificates');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %CertificateID_of :ATTR(:get<CertificateID>);
__PACKAGE__->_factory(
[ qw( CertificateID
) ],
{
'CertificateID' => \%CertificateID_of,
},
{
'CertificateID' => 'SOAP::WSDL::XSD::Typelib::Builtin::token',
},
{
'CertificateID' => 'CertificateID',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::DeleteCertificates
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
DeleteCertificates from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * CertificateID
$element->set_CertificateID($data);
$element->get_CertificateID();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::DeleteCertificates->new($data);
Constructor. The following data structure may be passed to new():
{
CertificateID => $some_value, # token
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::DeleteCertificatesResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('DeleteCertificatesResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::DeleteCertificatesResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
DeleteCertificatesResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::DeleteCertificatesResponse->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,121 @@
package ONVIF::Device::Elements::DeleteDot1XConfiguration;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('DeleteDot1XConfiguration');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %Dot1XConfigurationToken_of :ATTR(:get<Dot1XConfigurationToken>);
__PACKAGE__->_factory(
[ qw( Dot1XConfigurationToken
) ],
{
'Dot1XConfigurationToken' => \%Dot1XConfigurationToken_of,
},
{
'Dot1XConfigurationToken' => 'ONVIF::Device::Types::ReferenceToken',
},
{
'Dot1XConfigurationToken' => 'Dot1XConfigurationToken',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::DeleteDot1XConfiguration
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
DeleteDot1XConfiguration from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * Dot1XConfigurationToken
$element->set_Dot1XConfigurationToken($data);
$element->get_Dot1XConfigurationToken();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::DeleteDot1XConfiguration->new($data);
Constructor. The following data structure may be passed to new():
{
Dot1XConfigurationToken => $some_value, # ReferenceToken
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::DeleteDot1XConfigurationResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('DeleteDot1XConfigurationResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::DeleteDot1XConfigurationResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
DeleteDot1XConfigurationResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::DeleteDot1XConfigurationResponse->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,121 @@
package ONVIF::Device::Elements::DeleteUsers;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('DeleteUsers');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %Username_of :ATTR(:get<Username>);
__PACKAGE__->_factory(
[ qw( Username
) ],
{
'Username' => \%Username_of,
},
{
'Username' => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
},
{
'Username' => 'Username',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::DeleteUsers
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
DeleteUsers from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * Username
$element->set_Username($data);
$element->get_Username();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::DeleteUsers->new($data);
Constructor. The following data structure may be passed to new():
{
Username => $some_value, # string
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::DeleteUsersResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('DeleteUsersResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::DeleteUsersResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
DeleteUsersResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::DeleteUsersResponse->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,62 @@
package ONVIF::Device::Elements::Envelope;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://schemas.xmlsoap.org/soap/envelope/' }
__PACKAGE__->__set_name('Envelope');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::Envelope
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::Envelope
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
Envelope from the namespace http://schemas.xmlsoap.org/soap/envelope/.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::Envelope->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::Envelope
Header => { # ONVIF::Device::Types::Header
},
Body => { # ONVIF::Device::Types::Body
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,63 @@
package ONVIF::Device::Elements::Fault;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://schemas.xmlsoap.org/soap/envelope/' }
__PACKAGE__->__set_name('Fault');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
ONVIF::Device::Types::Fault
);
}
1;
=pod
=head1 NAME
ONVIF::Device::Elements::Fault
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
Fault from the namespace http://schemas.xmlsoap.org/soap/envelope/.
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::Fault->new($data);
Constructor. The following data structure may be passed to new():
{ # ONVIF::Device::Types::Fault
faultcode => $some_value, # QName
faultstring => $some_value, # string
faultactor => $some_value, # anyURI
detail => { # ONVIF::Device::Types::detail
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::GetAccessPolicy;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetAccessPolicy');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetAccessPolicy
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetAccessPolicy from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetAccessPolicy->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,123 @@
package ONVIF::Device::Elements::GetAccessPolicyResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetAccessPolicyResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %PolicyFile_of :ATTR(:get<PolicyFile>);
__PACKAGE__->_factory(
[ qw( PolicyFile
) ],
{
'PolicyFile' => \%PolicyFile_of,
},
{
'PolicyFile' => 'ONVIF::Device::Types::BinaryData',
},
{
'PolicyFile' => 'PolicyFile',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetAccessPolicyResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetAccessPolicyResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * PolicyFile
$element->set_PolicyFile($data);
$element->get_PolicyFile();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetAccessPolicyResponse->new($data);
Constructor. The following data structure may be passed to new():
{
PolicyFile => { # ONVIF::Device::Types::BinaryData
Data => $some_value, # base64Binary
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::GetCACertificates;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCACertificates');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCACertificates
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCACertificates from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCACertificates->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,126 @@
package ONVIF::Device::Elements::GetCACertificatesResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCACertificatesResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %CACertificate_of :ATTR(:get<CACertificate>);
__PACKAGE__->_factory(
[ qw( CACertificate
) ],
{
'CACertificate' => \%CACertificate_of,
},
{
'CACertificate' => 'ONVIF::Device::Types::Certificate',
},
{
'CACertificate' => 'CACertificate',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCACertificatesResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCACertificatesResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * CACertificate
$element->set_CACertificate($data);
$element->get_CACertificate();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCACertificatesResponse->new($data);
Constructor. The following data structure may be passed to new():
{
CACertificate => { # ONVIF::Device::Types::Certificate
CertificateID => $some_value, # token
Certificate => { # ONVIF::Device::Types::BinaryData
Data => $some_value, # base64Binary
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,121 @@
package ONVIF::Device::Elements::GetCapabilities;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCapabilities');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %Category_of :ATTR(:get<Category>);
__PACKAGE__->_factory(
[ qw( Category
) ],
{
'Category' => \%Category_of,
},
{
'Category' => 'ONVIF::Device::Types::CapabilityCategory',
},
{
'Category' => 'Category',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCapabilities
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCapabilities from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * Category
$element->set_Category($data);
$element->get_Category();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCapabilities->new($data);
Constructor. The following data structure may be passed to new():
{
Category => $some_value, # CapabilityCategory
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,263 @@
package ONVIF::Device::Elements::GetCapabilitiesResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCapabilitiesResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %Capabilities_of :ATTR(:get<Capabilities>);
__PACKAGE__->_factory(
[ qw( Capabilities
) ],
{
'Capabilities' => \%Capabilities_of,
},
{
'Capabilities' => 'ONVIF::Device::Types::Capabilities',
},
{
'Capabilities' => 'Capabilities',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCapabilitiesResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCapabilitiesResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * Capabilities
$element->set_Capabilities($data);
$element->get_Capabilities();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCapabilitiesResponse->new($data);
Constructor. The following data structure may be passed to new():
{
Capabilities => { # ONVIF::Device::Types::Capabilities
Analytics => { # ONVIF::Device::Types::AnalyticsCapabilities
XAddr => $some_value, # anyURI
RuleSupport => $some_value, # boolean
AnalyticsModuleSupport => $some_value, # boolean
},
Device => { # ONVIF::Device::Types::DeviceCapabilities
XAddr => $some_value, # anyURI
Network => { # ONVIF::Device::Types::NetworkCapabilities
IPFilter => $some_value, # boolean
ZeroConfiguration => $some_value, # boolean
IPVersion6 => $some_value, # boolean
DynDNS => $some_value, # boolean
Extension => { # ONVIF::Device::Types::NetworkCapabilitiesExtension
Dot11Configuration => $some_value, # boolean
Extension => { # ONVIF::Device::Types::NetworkCapabilitiesExtension2
},
},
},
System => { # ONVIF::Device::Types::SystemCapabilities
DiscoveryResolve => $some_value, # boolean
DiscoveryBye => $some_value, # boolean
RemoteDiscovery => $some_value, # boolean
SystemBackup => $some_value, # boolean
SystemLogging => $some_value, # boolean
FirmwareUpgrade => $some_value, # boolean
SupportedVersions => { # ONVIF::Device::Types::OnvifVersion
Major => $some_value, # int
Minor => $some_value, # int
},
Extension => { # ONVIF::Device::Types::SystemCapabilitiesExtension
HttpFirmwareUpgrade => $some_value, # boolean
HttpSystemBackup => $some_value, # boolean
HttpSystemLogging => $some_value, # boolean
HttpSupportInformation => $some_value, # boolean
Extension => { # ONVIF::Device::Types::SystemCapabilitiesExtension2
},
},
},
IO => { # ONVIF::Device::Types::IOCapabilities
InputConnectors => $some_value, # int
RelayOutputs => $some_value, # int
Extension => { # ONVIF::Device::Types::IOCapabilitiesExtension
Auxiliary => $some_value, # boolean
AuxiliaryCommands => $some_value, # AuxiliaryData
Extension => { # ONVIF::Device::Types::IOCapabilitiesExtension2
},
},
},
Security => { # ONVIF::Device::Types::SecurityCapabilities
TLS1__1 => $some_value, # boolean
TLS1__2 => $some_value, # boolean
OnboardKeyGeneration => $some_value, # boolean
AccessPolicyConfig => $some_value, # boolean
X__509Token => $some_value, # boolean
SAMLToken => $some_value, # boolean
KerberosToken => $some_value, # boolean
RELToken => $some_value, # boolean
Extension => { # ONVIF::Device::Types::SecurityCapabilitiesExtension
TLS1__0 => $some_value, # boolean
Extension => { # ONVIF::Device::Types::SecurityCapabilitiesExtension2
Dot1X => $some_value, # boolean
SupportedEAPMethod => $some_value, # int
RemoteUserHandling => $some_value, # boolean
},
},
},
Extension => { # ONVIF::Device::Types::DeviceCapabilitiesExtension
},
},
Events => { # ONVIF::Device::Types::EventCapabilities
XAddr => $some_value, # anyURI
WSSubscriptionPolicySupport => $some_value, # boolean
WSPullPointSupport => $some_value, # boolean
WSPausableSubscriptionManagerInterfaceSupport => $some_value, # boolean
},
Imaging => { # ONVIF::Device::Types::ImagingCapabilities
XAddr => $some_value, # anyURI
},
Media => { # ONVIF::Device::Types::MediaCapabilities
XAddr => $some_value, # anyURI
StreamingCapabilities => { # ONVIF::Device::Types::RealTimeStreamingCapabilities
RTPMulticast => $some_value, # boolean
RTP_TCP => $some_value, # boolean
RTP_RTSP_TCP => $some_value, # boolean
Extension => { # ONVIF::Device::Types::RealTimeStreamingCapabilitiesExtension
},
},
Extension => { # ONVIF::Device::Types::MediaCapabilitiesExtension
ProfileCapabilities => { # ONVIF::Device::Types::ProfileCapabilities
MaximumNumberOfProfiles => $some_value, # int
},
},
},
PTZ => { # ONVIF::Device::Types::PTZCapabilities
XAddr => $some_value, # anyURI
},
Extension => { # ONVIF::Device::Types::CapabilitiesExtension
DeviceIO => { # ONVIF::Device::Types::DeviceIOCapabilities
XAddr => $some_value, # anyURI
VideoSources => $some_value, # int
VideoOutputs => $some_value, # int
AudioSources => $some_value, # int
AudioOutputs => $some_value, # int
RelayOutputs => $some_value, # int
},
Display => { # ONVIF::Device::Types::DisplayCapabilities
XAddr => $some_value, # anyURI
FixedLayout => $some_value, # boolean
},
Recording => { # ONVIF::Device::Types::RecordingCapabilities
XAddr => $some_value, # anyURI
ReceiverSource => $some_value, # boolean
MediaProfileSource => $some_value, # boolean
DynamicRecordings => $some_value, # boolean
DynamicTracks => $some_value, # boolean
MaxStringLength => $some_value, # int
},
Search => { # ONVIF::Device::Types::SearchCapabilities
XAddr => $some_value, # anyURI
MetadataSearch => $some_value, # boolean
},
Replay => { # ONVIF::Device::Types::ReplayCapabilities
XAddr => $some_value, # anyURI
},
Receiver => { # ONVIF::Device::Types::ReceiverCapabilities
XAddr => $some_value, # anyURI
RTP_Multicast => $some_value, # boolean
RTP_TCP => $some_value, # boolean
RTP_RTSP_TCP => $some_value, # boolean
SupportedReceivers => $some_value, # int
MaximumRTSPURILength => $some_value, # int
},
AnalyticsDevice => { # ONVIF::Device::Types::AnalyticsDeviceCapabilities
XAddr => $some_value, # anyURI
RuleSupport => $some_value, # boolean
Extension => { # ONVIF::Device::Types::AnalyticsDeviceExtension
},
},
Extensions => { # ONVIF::Device::Types::CapabilitiesExtension2
},
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,121 @@
package ONVIF::Device::Elements::GetCertificateInformation;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCertificateInformation');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %CertificateID_of :ATTR(:get<CertificateID>);
__PACKAGE__->_factory(
[ qw( CertificateID
) ],
{
'CertificateID' => \%CertificateID_of,
},
{
'CertificateID' => 'SOAP::WSDL::XSD::Typelib::Builtin::token',
},
{
'CertificateID' => 'CertificateID',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCertificateInformation
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCertificateInformation from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * CertificateID
$element->set_CertificateID($data);
$element->get_CertificateID();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCertificateInformation->new($data);
Constructor. The following data structure may be passed to new():
{
CertificateID => $some_value, # token
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,137 @@
package ONVIF::Device::Elements::GetCertificateInformationResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCertificateInformationResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %CertificateInformation_of :ATTR(:get<CertificateInformation>);
__PACKAGE__->_factory(
[ qw( CertificateInformation
) ],
{
'CertificateInformation' => \%CertificateInformation_of,
},
{
'CertificateInformation' => 'ONVIF::Device::Types::CertificateInformation',
},
{
'CertificateInformation' => 'CertificateInformation',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCertificateInformationResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCertificateInformationResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * CertificateInformation
$element->set_CertificateInformation($data);
$element->get_CertificateInformation();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCertificateInformationResponse->new($data);
Constructor. The following data structure may be passed to new():
{
CertificateInformation => { # ONVIF::Device::Types::CertificateInformation
CertificateID => $some_value, # token
IssuerDN => $some_value, # string
SubjectDN => $some_value, # string
KeyUsage => { value => $some_value },
ExtendedKeyUsage => { value => $some_value },
KeyLength => $some_value, # int
Version => $some_value, # string
SerialNum => $some_value, # string
SignatureAlgorithm => $some_value, # string
Validity => { # ONVIF::Device::Types::DateTimeRange
From => $some_value, # dateTime
Until => $some_value, # dateTime
},
Extension => { # ONVIF::Device::Types::CertificateInformationExtension
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::GetCertificates;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCertificates');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCertificates
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCertificates from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCertificates->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,126 @@
package ONVIF::Device::Elements::GetCertificatesResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCertificatesResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %NvtCertificate_of :ATTR(:get<NvtCertificate>);
__PACKAGE__->_factory(
[ qw( NvtCertificate
) ],
{
'NvtCertificate' => \%NvtCertificate_of,
},
{
'NvtCertificate' => 'ONVIF::Device::Types::Certificate',
},
{
'NvtCertificate' => 'NvtCertificate',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCertificatesResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCertificatesResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * NvtCertificate
$element->set_NvtCertificate($data);
$element->get_NvtCertificate();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCertificatesResponse->new($data);
Constructor. The following data structure may be passed to new():
{
NvtCertificate => { # ONVIF::Device::Types::Certificate
CertificateID => $some_value, # token
Certificate => { # ONVIF::Device::Types::BinaryData
Data => $some_value, # base64Binary
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::GetCertificatesStatus;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCertificatesStatus');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCertificatesStatus
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCertificatesStatus from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCertificatesStatus->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,124 @@
package ONVIF::Device::Elements::GetCertificatesStatusResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetCertificatesStatusResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %CertificateStatus_of :ATTR(:get<CertificateStatus>);
__PACKAGE__->_factory(
[ qw( CertificateStatus
) ],
{
'CertificateStatus' => \%CertificateStatus_of,
},
{
'CertificateStatus' => 'ONVIF::Device::Types::CertificateStatus',
},
{
'CertificateStatus' => 'CertificateStatus',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetCertificatesStatusResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetCertificatesStatusResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * CertificateStatus
$element->set_CertificateStatus($data);
$element->get_CertificateStatus();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetCertificatesStatusResponse->new($data);
Constructor. The following data structure may be passed to new():
{
CertificateStatus => { # ONVIF::Device::Types::CertificateStatus
CertificateID => $some_value, # token
Status => $some_value, # boolean
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::GetClientCertificateMode;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetClientCertificateMode');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetClientCertificateMode
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetClientCertificateMode from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetClientCertificateMode->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,121 @@
package ONVIF::Device::Elements::GetClientCertificateModeResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetClientCertificateModeResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %Enabled_of :ATTR(:get<Enabled>);
__PACKAGE__->_factory(
[ qw( Enabled
) ],
{
'Enabled' => \%Enabled_of,
},
{
'Enabled' => 'SOAP::WSDL::XSD::Typelib::Builtin::boolean',
},
{
'Enabled' => 'Enabled',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetClientCertificateModeResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetClientCertificateModeResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * Enabled
$element->set_Enabled($data);
$element->get_Enabled();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetClientCertificateModeResponse->new($data);
Constructor. The following data structure may be passed to new():
{
Enabled => $some_value, # boolean
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::GetDNS;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetDNS');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetDNS
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetDNS from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetDNS->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,136 @@
package ONVIF::Device::Elements::GetDNSResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetDNSResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %DNSInformation_of :ATTR(:get<DNSInformation>);
__PACKAGE__->_factory(
[ qw( DNSInformation
) ],
{
'DNSInformation' => \%DNSInformation_of,
},
{
'DNSInformation' => 'ONVIF::Device::Types::DNSInformation',
},
{
'DNSInformation' => 'DNSInformation',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetDNSResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetDNSResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * DNSInformation
$element->set_DNSInformation($data);
$element->get_DNSInformation();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetDNSResponse->new($data);
Constructor. The following data structure may be passed to new():
{
DNSInformation => { # ONVIF::Device::Types::DNSInformation
FromDHCP => $some_value, # boolean
SearchDomain => $some_value, # token
DNSFromDHCP => { # ONVIF::Device::Types::IPAddress
Type => $some_value, # IPType
IPv4Address => $some_value, # IPv4Address
IPv6Address => $some_value, # IPv6Address
},
DNSManual => { # ONVIF::Device::Types::IPAddress
Type => $some_value, # IPType
IPv4Address => $some_value, # IPv4Address
IPv6Address => $some_value, # IPv6Address
},
Extension => { # ONVIF::Device::Types::DNSInformationExtension
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,107 @@
package ONVIF::Device::Elements::GetDPAddresses;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetDPAddresses');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
__PACKAGE__->_factory(
[ qw(
) ],
{
},
{
},
{
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetDPAddresses
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetDPAddresses from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetDPAddresses->new($data);
Constructor. The following data structure may be passed to new():
{
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

View File

@ -0,0 +1,128 @@
package ONVIF::Device::Elements::GetDPAddressesResponse;
use strict;
use warnings;
{ # BLOCK to scope variables
sub get_xmlns { 'http://www.onvif.org/ver10/device/wsdl' }
__PACKAGE__->__set_name('GetDPAddressesResponse');
__PACKAGE__->__set_nillable();
__PACKAGE__->__set_minOccurs();
__PACKAGE__->__set_maxOccurs();
__PACKAGE__->__set_ref();
use base qw(
SOAP::WSDL::XSD::Typelib::Element
SOAP::WSDL::XSD::Typelib::ComplexType
);
our $XML_ATTRIBUTE_CLASS;
undef $XML_ATTRIBUTE_CLASS;
sub __get_attr_class {
return $XML_ATTRIBUTE_CLASS;
}
use Class::Std::Fast::Storable constructor => 'none';
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
Class::Std::initialize();
{ # BLOCK to scope variables
my %DPAddress_of :ATTR(:get<DPAddress>);
__PACKAGE__->_factory(
[ qw( DPAddress
) ],
{
'DPAddress' => \%DPAddress_of,
},
{
'DPAddress' => 'ONVIF::Device::Types::NetworkHost',
},
{
'DPAddress' => 'DPAddress',
}
);
} # end BLOCK
} # end of BLOCK
1;
=pod
=head1 NAME
ONVIF::Device::Elements::GetDPAddressesResponse
=head1 DESCRIPTION
Perl data type class for the XML Schema defined element
GetDPAddressesResponse from the namespace http://www.onvif.org/ver10/device/wsdl.
=head1 PROPERTIES
The following properties may be accessed using get_PROPERTY / set_PROPERTY
methods:
=over
=item * DPAddress
$element->set_DPAddress($data);
$element->get_DPAddress();
=back
=head1 METHODS
=head2 new
my $element = ONVIF::Device::Elements::GetDPAddressesResponse->new($data);
Constructor. The following data structure may be passed to new():
{
DPAddress => { # ONVIF::Device::Types::NetworkHost
Type => $some_value, # NetworkHostType
IPv4Address => $some_value, # IPv4Address
IPv6Address => $some_value, # IPv6Address
DNSname => $some_value, # DNSName
Extension => { # ONVIF::Device::Types::NetworkHostExtension
},
},
},
=head1 AUTHOR
Generated by SOAP::WSDL
=cut

Some files were not shown because too many files have changed in this diff Show More