From 6ceb4cc93e40f6f54aa9a21ee242b0ead3d96ab6 Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Tue, 13 Dec 2016 14:32:28 -0500 Subject: [PATCH] fix qqq and replace doube quotes with single quotes --- .../lib/ZoneMinder/ConfigData.pm.in | 1634 ++++++++--------- 1 file changed, 817 insertions(+), 817 deletions(-) diff --git a/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in b/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in index 1c0bb7300..1f6d8ab0c 100644 --- a/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in +++ b/scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in @@ -72,92 +72,92 @@ sub INIT { # Types our %types = ( string => { - db_type => "string", - hint => "string", + db_type => 'string', + hint => 'string', pattern => qr|^(.+)$|, format => q( $1 ) }, alphanum => { - db_type => "string", - hint => "alphanumeric", + db_type => 'string', + hint => 'alphanumeric', pattern => qr|^([a-zA-Z0-9-_]+)$|, format => q( $1 ) }, text => { - db_type => "text", - hint => "free text", + db_type => 'text', + hint => 'free text', pattern => qr|^(.+)$|, format => q( $1 ) }, boolean => { - db_type => "boolean", + db_type => 'boolean', hint => "yes|no", pattern => qr|^([yn])|i, check => q( $1 ), - format => q( ($1 =~ /^y/) ? "yes" : "no") + format => q( ($1 =~ /^y/) ? "yes' : 'no") }, integer => { - db_type => "integer", - hint => "integer", + db_type => 'integer', + hint => 'integer', pattern => qr|^(\d+)$|, format => q( $1 ) }, decimal => { - db_type => "decimal", - hint => "decimal", + db_type => 'decimal', + hint => 'decimal', pattern => qr|^(\d+(?:\.\d+)?)$|, format => q( $1 ) }, hexadecimal => { - db_type => "hexadecimal", - hint => "hexadecimal", + db_type => 'hexadecimal', + hint => 'hexadecimal', pattern => qr|^(?:0x)?([0-9a-f]{1,8})$|, - format => q( "0x".$1 ) + format => q( '0x'.$1 ) }, tristate => { - db_type => "string", + db_type => 'string', hint => "auto|yes|no", pattern => qr|^([ayn])|i, check=> q( $1 ), - format => q( ($1 =~ /^y/) ? "yes" : ($1 =~ /^n/ ? "no" : "auto" )) + format => q( ($1 =~ /^y/) ? "yes' : ($1 =~ /^n/ ? 'no' : 'auto" )) }, abs_path => { - db_type => "string", + db_type => 'string', hint => "/absolute/path/to/somewhere", pattern => qr|^((?:/[^/]*)+?)/?$|, format => q( $1 ) }, rel_path => { - db_type => "string", + db_type => 'string', hint => "relative/path/to/somewhere", pattern => qr|^((?:[^/].*)?)/?$|, format => q( $1 ) }, directory => { - db_type => "string", - hint => "directory", + db_type => 'string', + hint => 'directory', pattern => qr|^([a-zA-Z0-9-_.]+)$|, format => q( $1 ) }, file => { - db_type => "string", - hint => "filename", + db_type => 'string', + hint => 'filename', pattern => qr|^([a-zA-Z0-9-_.]+)$|, format => q( $1 ) }, hostname => { - db_type => "string", + db_type => 'string', hint => "host.your.domain", pattern => qr|^([a-zA-Z0-9_.-]+)$|, format => q( $1 ) }, url => { - db_type => "string", + db_type => 'string', hint => "http://host.your.domain/", pattern => qr|^(?:http://)?(.+)$|, - format => q( "http://".$1 ) + format => q( 'http://'.$1 ) }, email => { - db_type => "string", + db_type => 'string', hint => "your.name\@your.domain", pattern => qr|^([a-zA-Z0-9_.-]+)\@([a-zA-Z0-9_.-]+)$|, format => q( $1\@$2 ) @@ -166,8 +166,8 @@ our %types = ( our @options = ( { - name => "ZM_SKIN_DEFAULT", - default => "classic", + name => 'ZM_SKIN_DEFAULT', + default => 'classic', description => "Default skin used by web interface", help => q` @@ -177,11 +177,11 @@ our @options = ( the default. `, type => $types{string}, - category => "system", + category => 'system', }, { - name => "ZM_CSS_DEFAULT", - default => "classic", + name => 'ZM_CSS_DEFAULT', + default => 'classic', description => "Default set of css files used by web interface", help => q` ZoneMinder allows the use of many different web interfaces, and @@ -191,11 +191,11 @@ our @options = ( their css later, this merely sets the default. `, type => $types{string}, - category => "system", + category => 'system', }, { - name => "ZM_LANG_DEFAULT", - default => "en_gb", + name => 'ZM_LANG_DEFAULT', + default => 'en_gb', description => "Default language used by web interface", help => q` ZoneMinder allows the web interface to use languages other than @@ -205,11 +205,11 @@ our @options = ( English, to another language `, type => $types{string}, - category => "system", + category => 'system', }, { - name => "ZM_OPT_USE_AUTH", - default => "no", + name => 'ZM_OPT_USE_AUTH', + default => 'no', description => "Authenticate user logins to ZoneMinder", help => q` ZoneMinder can run in two modes. The simplest is an entirely @@ -221,11 +221,11 @@ our @options = ( limited by their defined permissions. `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_AUTH_TYPE", - default => "builtin", + name => 'ZM_AUTH_TYPE', + default => 'builtin', description => "What is used to authenticate ZoneMinder users", help => q` ZoneMinder can use two methods to authenticate users when @@ -238,18 +238,18 @@ our @options = ( supplied user without additional authentication provided such a user is configured ion ZoneMinder. `, - requires => [ { name=> "ZM_OPT_USE_AUTH", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_USE_AUTH', value=>'yes' } ], type => { - db_type => "string", - hint => "builtin|remote", + db_type => 'string', + hint => 'builtin|remote', pattern => qr|^([br])|i, - format => q( $1 =~ /^b/ ? "builtin" : "remote" ) + format => q( $1 =~ /^b/ ? 'builtin' : 'remote' ) }, - category => "system", + category => 'system', }, { - name => "ZM_AUTH_RELAY", - default => "hashed", + name => 'ZM_AUTH_RELAY', + default => 'hashed', description => "Method used to relay authentication information", help => q` When ZoneMinder is running in authenticated mode it can pass @@ -263,17 +263,17 @@ our @options = ( external access. You can also switch off authentication relaying if your system is isolated in other ways. `, - requires => [ { name=> "ZM_OPT_USE_AUTH", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_USE_AUTH', value=>'yes' } ], type => { - db_type => "string", + db_type => 'string', hint => "hashed|plain|none", pattern => qr|^([hpn])|i, - format => q( ($1 =~ /^h/) ? "hashed" : ($1 =~ /^p/ ? "plain" : "none" ) ) + format => q( ($1 =~ /^h/) ? "hashed' : ($1 =~ /^p/ ? 'plain' : 'none" ) ) }, - category => "system", + category => 'system', }, { - name => "ZM_AUTH_HASH_SECRET", + name => 'ZM_AUTH_HASH_SECRET', default => "...Change me to something unique...", description => "Secret for encoding hashed authentication information", help => q` @@ -284,15 +284,15 @@ our @options = ( secret increases security substantially. `, requires => [ - { name=> "ZM_OPT_USE_AUTH", value=>"yes" }, - { name=> "ZM_AUTH_RELAY", value=>"hashed" } + { name=> 'ZM_OPT_USE_AUTH', value=>'yes' }, + { name=> 'ZM_AUTH_RELAY', value=>'hashed' } ], type => $types{string}, - category => "system", + category => 'system', }, { - name => "ZM_AUTH_HASH_IPS", - default => "yes", + name => 'ZM_AUTH_HASH_IPS', + default => 'yes', description => "Include IP addresses in the authentication hash", help => q` When ZoneMinder is running in hashed authenticated mode it can @@ -307,11 +307,11 @@ our @options = ( authentication, switching this option off may help. `, requires => [ - { name=> "ZM_OPT_USE_AUTH", value=>"yes" }, - { name=> "ZM_AUTH_RELAY", value=>"hashed" } + { name=> 'ZM_OPT_USE_AUTH', value=>'yes' }, + { name=> 'ZM_AUTH_RELAY', value=>'hashed' } ], type => $types{boolean}, - category => "system", + category => 'system', }, { name => 'ZM_AUTH_HASH_TTL', @@ -329,8 +329,8 @@ our @options = ( category => 'system', }, { - name => "ZM_AUTH_HASH_LOGINS", - default => "no", + name => 'ZM_AUTH_HASH_LOGINS', + default => 'no', description => "Allow login by authentication hash", help => q` The normal process for logging into ZoneMinder is via the login @@ -348,15 +348,15 @@ our @options = ( ZM_AUTH_HASH_SECRET to something unique to your system. `, requires => [ - { name=> "ZM_OPT_USE_AUTH", value=>"yes" }, - { name=> "ZM_AUTH_RELAY", value=>"hashed" } + { name=> 'ZM_OPT_USE_AUTH', value=>'yes' }, + { name=> 'ZM_AUTH_RELAY', value=>'hashed' } ], type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_OPT_USE_API", - default => "yes", + name => 'ZM_OPT_USE_API', + default => 'yes', description => "Enable ZoneMinder APIs", help => q` ZoneMinder now features a new API using which 3rd party @@ -368,13 +368,13 @@ our @options = ( if you are exposing your ZM instance on the Internet. `, type => $types{boolean}, - category => "system", + category => 'system', }, # PP - Google reCaptcha settings { - name => "ZM_OPT_USE_GOOG_RECAPTCHA", - default => "no", - description => "Add Google reCaptcha to login page", + name => 'ZM_OPT_USE_GOOG_RECAPTCHA', + default => 'no', + description => 'Add Google reCaptcha to login page', help => q` This option allows you to include a google reCaptcha validation at login. This means in addition to providing @@ -387,13 +387,13 @@ our @options = ( and they will fail the reCaptcha test. `, requires => [ - {name=> "ZM_OPT_USE_AUTH", value=>"yes"} + {name=> 'ZM_OPT_USE_AUTH', value=>'yes'} ], type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_OPT_GOOG_RECAPTCHA_SITEKEY", + name => 'ZM_OPT_GOOG_RECAPTCHA_SITEKEY', default => "...Insert your recaptcha site-key here...", description => "Your recaptcha site-key", help => q`You need to generate your keys from @@ -402,13 +402,13 @@ our @options = ( for more details. `, requires => [ - {name=> "ZM_OPT_USE_GOOG_RECAPTCHA", value=>"yes"} + {name=> 'ZM_OPT_USE_GOOG_RECAPTCHA', value=>'yes'} ], type => $types{string}, - category => "system", + category => 'system', }, { - name => "ZM_OPT_GOOG_RECAPTCHA_SECRETKEY", + name => 'ZM_OPT_GOOG_RECAPTCHA_SECRETKEY', default => "...Insert your recaptcha secret-key here...", description => "Your recaptcha secret-key", help => q`You need to generate your keys from @@ -417,14 +417,14 @@ our @options = ( for more details. `, requires => [ - {name=> "ZM_OPT_USE_GOOG_RECAPTCHA", value=>"yes"} + {name=> 'ZM_OPT_USE_GOOG_RECAPTCHA', value=>'yes'} ], type => $types{string}, - category => "system", + category => 'system', }, { - name => "ZM_DIR_EVENTS", - default => "events", + name => 'ZM_DIR_EVENTS', + default => 'events', description => "Directory where events are stored", help => q` This is the path to the events directory where all the event @@ -437,11 +437,11 @@ our @options = ( ZoneMinder Wiki titled Using a dedicated Hard Drive. `, type => $types{directory}, - category => "paths", + category => 'paths', }, { - name => "ZM_USE_DEEP_STORAGE", - default => "yes", + name => 'ZM_USE_DEEP_STORAGE', + default => 'yes', description => "Use a deep filesystem hierarchy for events", help => q` This option is now the default for new ZoneMinder systems and @@ -458,11 +458,11 @@ our @options = ( WiKi for further details. `, type => $types{boolean}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_DIR_IMAGES", - default => "images", + name => 'ZM_DIR_IMAGES', + default => 'images', description => "Directory where the images that the ZoneMinder client generates are stored", help => q` ZoneMinder generates a myriad of images, mostly of which are @@ -476,11 +476,11 @@ our @options = ( Hard Drive. `, type => $types{directory}, - category => "paths", + category => 'paths', }, { - name => "ZM_DIR_SOUNDS", - default => "sounds", + name => 'ZM_DIR_SOUNDS', + default => 'sounds', description => "Directory to the sounds that the ZoneMinder client can use", help => q` ZoneMinder can optionally play a sound file when an alarm is @@ -489,10 +489,10 @@ our @options = ( Most users should never change this value. `, type => $types{directory}, - category => "paths", + category => 'paths', }, { - name => "ZM_PATH_ZMS", + name => 'ZM_PATH_ZMS', default => "/cgi-bin/nph-zms", description => "Web path to zms streaming server", help => q` @@ -506,11 +506,11 @@ our @options = ( by changing 'zms' to 'nph-zms'. `, type => $types{rel_path}, - category => "paths", + category => 'paths', }, { - name => "ZM_COLOUR_JPEG_FILES", - default => "no", + name => 'ZM_COLOUR_JPEG_FILES', + default => 'no', description => "Colourise greyscale JPEG files", help => q` Cameras that capture in greyscale can write their captured @@ -522,11 +522,11 @@ our @options = ( makes creation of MPEG files much faster. `, type => $types{boolean}, - category => "images", + category => 'images', }, { - name => "ZM_ADD_JPEG_COMMENTS", - default => "no", + name => 'ZM_ADD_JPEG_COMMENTS', + default => 'no', description => "Add jpeg timestamp annotations as file header comments", help => q` JPEG files may have a number of extra fields added to the file @@ -538,11 +538,11 @@ our @options = ( you use software that can read comment headers. `, type => $types{boolean}, - category => "images", + category => 'images', }, { - name => "ZM_JPEG_FILE_QUALITY", - default => "70", + name => 'ZM_JPEG_FILE_QUALITY', + default => '70', description => "Set the JPEG quality setting for the saved event files (1-100)", help => q` When ZoneMinder detects an event it will save the images @@ -559,11 +559,11 @@ our @options = ( instead. `, type => $types{integer}, - category => "images", + category => 'images', }, { - name => "ZM_JPEG_ALARM_FILE_QUALITY", - default => "0", + name => 'ZM_JPEG_ALARM_FILE_QUALITY', + default => '0', description => "Set the JPEG quality setting for the saved event files during an alarm (1-100)", help => q` This value is equivalent to the regular jpeg file quality @@ -576,12 +576,12 @@ our @options = ( saving important images at a worse quality setting. `, type => $types{integer}, - category => "images", + category => 'images', }, # Deprecated, now stream quality { - name => "ZM_JPEG_IMAGE_QUALITY", - default => "70", + name => 'ZM_JPEG_IMAGE_QUALITY', + default => '70', description => "Set the JPEG quality setting for the streamed 'live' images (1-100)", help => q` When viewing a 'live' stream for a monitor ZoneMinder will grab @@ -596,11 +596,11 @@ our @options = ( quality specified by the previous options. `, type => $types{integer}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_JPEG_STREAM_QUALITY", - default => "70", + name => 'ZM_JPEG_STREAM_QUALITY', + default => '70', description => "Set the JPEG quality setting for the streamed 'live' images (1-100)", help => q` When viewing a 'live' stream for a monitor ZoneMinder will grab @@ -615,11 +615,11 @@ our @options = ( quality specified by the previous options. `, type => $types{integer}, - category => "images", + category => 'images', }, { - name => "ZM_MPEG_TIMED_FRAMES", - default => "yes", + name => 'ZM_MPEG_TIMED_FRAMES', + default => 'yes', description => "Tag video frames with a timestamp for more realistic streaming", help => q` When using streamed MPEG based video, either for live monitor @@ -634,11 +634,11 @@ our @options = ( your preferred streaming method. `, type => $types{boolean}, - category => "images", + category => 'images', }, { - name => "ZM_MPEG_LIVE_FORMAT", - default => "swf", + name => 'ZM_MPEG_LIVE_FORMAT', + default => 'swf', description => "What format 'live' video streams are played in", help => q` When using MPEG mode ZoneMinder can output live video. However @@ -653,11 +653,11 @@ our @options = ( streams will revert to being in motion jpeg format `, type => $types{string}, - category => "images", + category => 'images', }, { - name => "ZM_MPEG_REPLAY_FORMAT", - default => "swf", + name => 'ZM_MPEG_REPLAY_FORMAT', + default => 'swf', description => "What format 'replay' video streams are played in", help => q` When using MPEG mode ZoneMinder can replay events in encoded @@ -672,11 +672,11 @@ our @options = ( streams will revert to being in motion jpeg format `, type => $types{string}, - category => "images", + category => 'images', }, { - name => "ZM_RAND_STREAM", - default => "yes", + name => 'ZM_RAND_STREAM', + default => 'yes', description => "Add a random string to prevent caching of streams", help => q` Some browsers can cache the streams used by ZoneMinder. In @@ -684,11 +684,11 @@ our @options = ( to the url to make each invocation of the stream appear unique. `, type => $types{boolean}, - category => "images", + category => 'images', }, { - name => "ZM_OPT_CAMBOZOLA", - default => "no", + name => 'ZM_OPT_CAMBOZOLA', + default => 'no', description => "Is the (optional) cambozola java streaming client installed", help => q` Cambozola is a handy low fat cheese flavoured Java applet that @@ -700,11 +700,11 @@ our @options = ( be viewed. `, type => $types{boolean}, - category => "images", + category => 'images', }, { - name => "ZM_PATH_CAMBOZOLA", - default => "cambozola.jar", + name => 'ZM_PATH_CAMBOZOLA', + default => 'cambozola.jar', description => "Web path to (optional) cambozola java streaming client", help => q` Cambozola is a handy low fat cheese flavoured Java applet that @@ -717,13 +717,13 @@ our @options = ( installed in the same directory as the ZoneMinder web client files. `, - requires => [ { name=> "ZM_OPT_CAMBOZOLA", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_CAMBOZOLA', value=>'yes' } ], type => $types{rel_path}, - category => "images", + category => 'images', }, { - name => "ZM_RELOAD_CAMBOZOLA", - default => "0", + name => 'ZM_RELOAD_CAMBOZOLA', + default => '0', description => "After how many seconds should Cambozola be reloaded in live view", help => q` Cambozola allows for the viewing of streaming MJPEG however it @@ -733,11 +733,11 @@ our @options = ( drive. `, type => $types{integer}, - category => "images", + category => 'images', }, { - name => "ZM_TIMESTAMP_ON_CAPTURE", - default => "yes", + name => 'ZM_TIMESTAMP_ON_CAPTURE', + default => 'yes', description => "Timestamp images as soon as they are captured", help => q` ZoneMinder can add a timestamp to images in two ways. The @@ -758,11 +758,11 @@ our @options = ( still have a legible and correctly scaled timestamp. `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_CPU_EXTENSIONS", - default => "yes", + name => 'ZM_CPU_EXTENSIONS', + default => 'yes', description => "Use advanced CPU extensions to increase performance", help => q` When advanced processor extensions such as SSE2 or SSSE3 are @@ -773,11 +773,11 @@ our @options = ( effect. `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_FAST_IMAGE_BLENDS", - default => "yes", + name => 'ZM_FAST_IMAGE_BLENDS', + default => 'yes', description => "Use a fast algorithm to blend the reference image", help => q` To detect alarms ZoneMinder needs to blend the captured image @@ -794,11 +794,11 @@ our @options = ( and use standard blending instead, which is slower. `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_OPT_ADAPTIVE_SKIP", - default => "yes", + name => 'ZM_OPT_ADAPTIVE_SKIP', + default => 'yes', description => "Should frame analysis try and be efficient in skipping frames", help => q` In previous versions of ZoneMinder the analysis daemon would @@ -825,11 +825,11 @@ our @options = ( overrun condition to occur. `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_MAX_SUSPEND_TIME", - default => "30", + name => 'ZM_MAX_SUSPEND_TIME', + default => '30', description => "Maximum time that a monitor may have motion detection suspended", help => q` ZoneMinder allows monitors to have motion detection to be @@ -843,12 +843,12 @@ our @options = ( movement will also occur while the monitor is suspended. `, type => $types{integer}, - category => "config", + category => 'config', }, # Deprecated, really no longer necessary { - name => "ZM_OPT_REMOTE_CAMERAS", - default => "no", + name => 'ZM_OPT_REMOTE_CAMERAS', + default => 'no', description => "Are you going to use remote/networked cameras", help => q` ZoneMinder can work with both local cameras, ie. those attached @@ -856,12 +856,12 @@ our @options = ( you will be using networked cameras select this option. `, type => $types{boolean}, - category => "hidden", + category => 'hidden', }, # Deprecated, now set on a per monitor basis using the Method field { - name => "ZM_NETCAM_REGEXPS", - default => "yes", + name => 'ZM_NETCAM_REGEXPS', + default => 'yes', description => "Use regular expression matching with network cameras", help => q` Traditionally ZoneMinder has used complex regular regular @@ -873,13 +873,13 @@ our @options = ( expression based method by selecting this option. Note, to use this method you must have libpcre installed on your system. `, - requires => [ { name => "ZM_OPT_REMOTE_CAMERAS", value => "yes" } ], + requires => [ { name => 'ZM_OPT_REMOTE_CAMERAS', value => 'yes' } ], type => $types{boolean}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_HTTP_VERSION", - default => "1.0", + name => 'ZM_HTTP_VERSION', + default => '1.0', description => "The version of HTTP that ZoneMinder will use to connect", help => q` ZoneMinder can communicate with network cameras using either of @@ -889,16 +889,16 @@ our @options = ( HTTP/1.0 if necessary to resolve particular issues. `, type => { - db_type => "string", - hint => "1.1|1.0", + db_type => 'string', + hint => '1.1|1.0', pattern => qr|^(1\.[01])$|, - format => q( $1?$1:"" ) + format => q( $1?$1:'' ) }, - category => "network", + category => 'network', }, { - name => "ZM_HTTP_UA", - default => "ZoneMinder", + name => 'ZM_HTTP_UA', + default => 'ZoneMinder', description => "The user agent that ZoneMinder uses to identify itself", help => q` When ZoneMinder communicates with remote cameras it will @@ -909,11 +909,11 @@ our @options = ( Internet Explorer or Netscape etc. `, type => $types{string}, - category => "network", + category => 'network', }, { - name => "ZM_HTTP_TIMEOUT", - default => "2500", + name => 'ZM_HTTP_TIMEOUT', + default => '2500', description => "How long ZoneMinder waits before giving up on images (milliseconds)", help => q` When retrieving remote images ZoneMinder will wait for this @@ -923,11 +923,11 @@ our @options = ( an image if it is not sent in one whole chunk. `, type => $types{integer}, - category => "network", + category => 'network', }, { - name => "ZM_MIN_RTP_PORT", - default => "40200", + name => 'ZM_MIN_RTP_PORT', + default => '40200', description => "Minimum port that ZoneMinder will listen for RTP traffic on", help => q` When ZoneMinder communicates with MPEG4 capable cameras using @@ -941,11 +941,11 @@ our @options = ( wish to use unicasting. `, type => $types{integer}, - category => "network", + category => 'network', }, { - name => "ZM_MAX_RTP_PORT", - default => "40499", + name => 'ZM_MAX_RTP_PORT', + default => '40499', description => "Maximum port that ZoneMinder will listen for RTP traffic on", help => q` When ZoneMinder communicates with MPEG4 capable cameras using @@ -961,11 +961,11 @@ our @options = ( connecting to unicasting network cameras. `, type => $types{integer}, - category => "network", + category => 'network', }, { - name => "ZM_OPT_FFMPEG", - default => "@OPT_FFMPEG@", + name => 'ZM_OPT_FFMPEG', + default => '@OPT_FFMPEG@', description => "Is the ffmpeg video encoder/decoder installed", help => q` ZoneMinder can optionally encode a series of video images into @@ -976,20 +976,20 @@ our @options = ( can still be reviewed as video streams without it. `, type => $types{boolean}, - category => "images", + category => 'images', }, { - name => "ZM_PATH_FFMPEG", - default => "@PATH_FFMPEG@", - description => "Path to (optional) ffmpeg mpeg encoder", + name => 'ZM_PATH_FFMPEG', + default => '@PATH_FFMPEG@', + description => 'Path to (optional) ffmpeg mpeg encoder', help => "This path should point to where ffmpeg has been installed.", - requires => [ { name=> "ZM_OPT_FFMPEG", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ], type => $types{abs_path}, - category => "images", + category => 'images', }, { - name => "ZM_FFMPEG_INPUT_OPTIONS", - default => "", + name => 'ZM_FFMPEG_INPUT_OPTIONS', + default => '', description => "Additional input options to ffmpeg", help => q` Ffmpeg can take many options on the command line to control the @@ -998,13 +998,13 @@ our @options = ( are given before the -i option). Check the ffmpeg documentation for a full list of options which may be used here. `, - requires => [ { name=> "ZM_OPT_FFMPEG", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ], type => $types{string}, - category => "images", + category => 'images', }, { - name => "ZM_FFMPEG_OUTPUT_OPTIONS", - default => "-r 25", + name => 'ZM_FFMPEG_OUTPUT_OPTIONS', + default => '-r 25', description => "Additional output options to ffmpeg", help => q` Ffmpeg can take many options on the command line to control the @@ -1015,12 +1015,12 @@ our @options = ( common one will often be to force an output frame rate supported by the video encoder. `, - requires => [ { name=> "ZM_OPT_FFMPEG", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ], type => $types{string}, - category => "images", + category => 'images', }, { - name => "ZM_FFMPEG_FORMATS", + name => 'ZM_FFMPEG_FORMATS', default => "mpg mpeg wmv asf avi* mov swf 3gp**", description => "Formats to allow for ffmpeg video generation", help => q` @@ -1032,13 +1032,13 @@ our @options = ( web video, adding '**' defines the default format for phone video. `, - requires => [ { name=> "ZM_OPT_FFMPEG", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ], type => $types{string}, - category => "images", + category => 'images', }, { - name => "ZM_FFMPEG_OPEN_TIMEOUT", - default => "10", + name => 'ZM_FFMPEG_OPEN_TIMEOUT', + default => '10', description => "Timeout in seconds when opening a stream.", help => q` When Ffmpeg is opening a stream, it can take a long time before @@ -1047,13 +1047,13 @@ our @options = ( seconds to pass before closing the stream and trying to reopen it again. `, - requires => [ { name=> "ZM_OPT_FFMPEG", value=>"yes" } ], + requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ], type => $types{integer}, - category => "images", + category => 'images', }, { - name => "ZM_LOG_LEVEL_SYSLOG", - default => "0", + name => 'ZM_LOG_LEVEL_SYSLOG', + default => '0', description => "Save logging output to the system log", help => q` ZoneMinder logging is now more more integrated between @@ -1071,16 +1071,16 @@ our @options = ( you will also need to set a level and component below `, type => { - db_type => "integer", - hint => "None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1", + db_type => 'integer', + hint => 'None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_LEVEL_FILE", - default => "-5", + name => 'ZM_LOG_LEVEL_FILE', + default => '-5', description => "Save logging output to component files", help => q` ZoneMinder logging is now more more integrated between @@ -1101,17 +1101,17 @@ our @options = ( and component below `, type => { - db_type => "integer", - hint => "None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1", + db_type => 'integer', + hint => 'None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_LEVEL_WEBLOG", - default => "-5", - description => "Save logging output to the weblog", + name => 'ZM_LOG_LEVEL_WEBLOG', + default => '-5', + description => 'Save logging output to the weblog', help => q` ZoneMinder logging is now more more integrated between components and allows you to specify the destination for @@ -1128,16 +1128,16 @@ our @options = ( you will also need to set a level and component below `, type => { - db_type => "integer", - hint => "None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1", + db_type => 'integer', + hint => 'None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_LEVEL_DATABASE", - default => "0", + name => 'ZM_LOG_LEVEL_DATABASE', + default => '0', description => "Save logging output to the database", help => q` ZoneMinder logging is now more more integrated between @@ -1159,16 +1159,16 @@ our @options = ( also need to set a level and component below `, type => { - db_type => "integer", - hint => "None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1", + db_type => 'integer', + hint => 'None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_DATABASE_LIMIT", - default => "7 day", + name => 'ZM_LOG_DATABASE_LIMIT', + default => '7 day', description => "Maximum number of log entries to retain", help => q` If you are using database logging then it is possible to @@ -1186,12 +1186,12 @@ our @options = ( in the meantime. `, type => $types{string}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_DEBUG", - default => "no", - description => "Switch debugging on", + name => 'ZM_LOG_DEBUG', + default => 'no', + description => 'Switch debugging on', help => q` ZoneMinder components usually support debug logging available to help with diagnosing problems. Binary components have @@ -1203,11 +1203,11 @@ our @options = ( up this instruction when they are restarted. `, type => $types{boolean}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_DEBUG_TARGET", - default => "", + name => 'ZM_LOG_DEBUG_TARGET', + default => '', description => "What components should have extra debug enabled", help => q` There are three scopes of debug available. Leaving this option @@ -1221,12 +1221,12 @@ our @options = ( debug issues with the web interface use '_web'. You can specify multiple targets by separating them with '|' characters. `, - requires => [ { name => "ZM_LOG_DEBUG", value => "yes" } ], + requires => [ { name => 'ZM_LOG_DEBUG', value => 'yes' } ], type => $types{string}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_DEBUG_LEVEL", + name => 'ZM_LOG_DEBUG_LEVEL', default => 1, description => "What level of extra debug should be enabled", help => q` @@ -1240,18 +1240,18 @@ our @options = ( interface only have one level so this is an on/off type option for them. `, - requires => [ { name => "ZM_LOG_DEBUG", value => "yes" } ], + requires => [ { name => 'ZM_LOG_DEBUG', value => 'yes' } ], type => { - db_type => "integer", - hint => "1|2|3|4|5|6|7|8|9", + db_type => 'integer', + hint => '1|2|3|4|5|6|7|8|9', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_DEBUG_FILE", - default => "@ZM_LOGDIR@/zm_debug.log+", + name => 'ZM_LOG_DEBUG_FILE', + default => '@ZM_LOGDIR@/zm_debug.log+', description => "Where extra debug is output to", help => q` This option allows you to specify a different target for debug @@ -1270,13 +1270,13 @@ our @options = ( are set up to allow writing to the file and directory specified here. `, - requires => [ { name => "ZM_LOG_DEBUG", value => "yes" } ], + requires => [ { name => 'ZM_LOG_DEBUG', value => 'yes' } ], type => $types{string}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_CHECK_PERIOD", - default => "900", + name => 'ZM_LOG_CHECK_PERIOD', + default => '900', description => "Time period used when calculating overall system health", help => q` When ZoneMinder is logging events to the database it can @@ -1287,11 +1287,11 @@ our @options = ( seconds and is ignored if LOG_LEVEL_DATABASE is set to None. `, type => $types{integer}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_ALERT_WAR_COUNT", - default => "1", + name => 'ZM_LOG_ALERT_WAR_COUNT', + default => '1', description => "Number of warnings indicating system alert state", help => q` When ZoneMinder is logging events to the database it can @@ -1304,11 +1304,11 @@ our @options = ( to None. `, type => $types{integer}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_ALERT_ERR_COUNT", - default => "1", + name => 'ZM_LOG_ALERT_ERR_COUNT', + default => '1', description => "Number of errors indicating system alert state", help => q` When ZoneMinder is logging events to the database it can @@ -1321,11 +1321,11 @@ our @options = ( to None. `, type => $types{integer}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_ALERT_FAT_COUNT", - default => "0", + name => 'ZM_LOG_ALERT_FAT_COUNT', + default => '0', description => "Number of fatal error indicating system alert state", help => q` When ZoneMinder is logging events to the database it can @@ -1338,11 +1338,11 @@ our @options = ( ignored if LOG_LEVEL_DATABASE is set to None. `, type => $types{integer}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_ALARM_WAR_COUNT", - default => "100", + name => 'ZM_LOG_ALARM_WAR_COUNT', + default => '100', description => "Number of warnings indicating system alarm state", help => q` When ZoneMinder is logging events to the database it can @@ -1355,11 +1355,11 @@ our @options = ( to None. `, type => $types{integer}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_ALARM_ERR_COUNT", - default => "10", + name => 'ZM_LOG_ALARM_ERR_COUNT', + default => '10', description => "Number of errors indicating system alarm state", help => q` When ZoneMinder is logging events to the database it can @@ -1372,11 +1372,11 @@ our @options = ( to None. `, type => $types{integer}, - category => "logging", + category => 'logging', }, { - name => "ZM_LOG_ALARM_FAT_COUNT", - default => "1", + name => 'ZM_LOG_ALARM_FAT_COUNT', + default => '1', description => "Number of fatal error indicating system alarm state", help => q` When ZoneMinder is logging events to the database it can @@ -1389,11 +1389,11 @@ our @options = ( ignored if LOG_LEVEL_DATABASE is set to None. `, type => $types{integer}, - category => "logging", + category => 'logging', }, { - name => "ZM_RECORD_EVENT_STATS", - default => "yes", + name => 'ZM_RECORD_EVENT_STATS', + default => 'yes', description => "Record event statistical information, switch off if too slow", help => q` This version of ZoneMinder records detailed information about @@ -1407,11 +1407,11 @@ our @options = ( Stats information will be saved. `, type => $types{boolean}, - category => "logging", + category => 'logging', }, { - name => "ZM_RECORD_DIAG_IMAGES", - default => "no", + name => 'ZM_RECORD_DIAG_IMAGES', + default => 'no', description => "Record intermediate alarm diagnostic images, can be very slow", help => q` In addition to recording event statistics you can also record @@ -1425,11 +1425,11 @@ our @options = ( required. `, type => $types{boolean}, - category => "logging", + category => 'logging', }, { - name => "ZM_DUMP_CORES", - default => "no", + name => 'ZM_DUMP_CORES', + default => 'no', description => "Create core files on unexpected process failure.", help => q` When an unrecoverable error occurs in a ZoneMinder binary @@ -1450,10 +1450,10 @@ our @options = ( this option. `, type => $types{boolean}, - category => "logging", + category => 'logging', }, { - name => "ZM_PATH_MAP", + name => 'ZM_PATH_MAP', default => "/dev/shm", description => "Path to the mapped memory files that that ZoneMinder can use", help => q` @@ -1471,11 +1471,11 @@ our @options = ( slower than the regular shared memory one. `, type => $types{abs_path}, - category => "paths", + category => 'paths', }, { - name => "ZM_PATH_SOCKS", - default => "@ZM_SOCKDIR@", + name => 'ZM_PATH_SOCKS', + default => '@ZM_SOCKDIR@', description => "Path to the various Unix domain socket files that ZoneMinder uses", help => q` ZoneMinder generally uses Unix domain sockets where possible. @@ -1485,11 +1485,11 @@ our @options = ( This option indicates where those socket files go. `, type => $types{abs_path}, - category => "paths", + category => 'paths', }, { - name => "ZM_PATH_LOGS", - default => "@ZM_LOGDIR@", + name => 'ZM_PATH_LOGS', + default => '@ZM_LOGDIR@', description => "Path to the various logs that the ZoneMinder daemons generate", help => q` There are various daemons that are used by ZoneMinder to @@ -1498,11 +1498,11 @@ our @options = ( debugging. `, type => $types{abs_path}, - category => "paths", + category => 'paths', }, { - name => "ZM_PATH_SWAP", - default => "@ZM_TMPDIR@", + name => 'ZM_PATH_SWAP', + default => '@ZM_TMPDIR@', description => "Path to location for temporary swap images used in streaming", help => q` Buffered playback requires temporary swap images to be stored @@ -1512,26 +1512,26 @@ our @options = ( will be automatically cleaned up after a period of time. `, type => $types{abs_path}, - category => "paths", + category => 'paths', }, { - name => "ZM_PATH_ARP", - default => "", + name => 'ZM_PATH_ARP', + default => '', description => "Path to a supported ARP tool", help => q` The camera probe function uses Address Resolution Protocol in order to find known devices on the network. Optionally supply - the full path to "ip neigh", "arp -a", or any other tool on + the full path to 'ip neigh', 'arp -a', or any other tool on your system that returns ip/mac address pairs. If this field is - left empty, ZoneMinder will search for the command "arp" and + left empty, ZoneMinder will search for the command 'arp' and attempt to use that. `, type => $types{abs_path}, - category => "paths", + category => 'paths', }, { - name => "ZM_WEB_TITLE_PREFIX", - default => "ZM", + name => 'ZM_WEB_TITLE_PREFIX', + default => 'ZM', description => "The title prefix displayed on each window", help => q` If you have more than one installation of ZoneMinder it can be @@ -1540,11 +1540,11 @@ our @options = ( further information to aid identification. `, type => $types{string}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_CONSOLE_BANNER", - default => "", + name => 'ZM_WEB_CONSOLE_BANNER', + default => '', description => "Arbitrary text message near the top of the console", help => q` Allows the administrator to place an arbitrary text message @@ -1554,24 +1554,24 @@ our @options = ( any other purpose as well. `, type => $types{string}, - category => "web", + category => 'web', }, { name => 'ZM_WEB_EVENT_DISK_SPACE', default => '', description => "Whether to show disk space used by each event.", - help => qqq("Adds another column to the listing of events + help => q`Adds another column to the listing of events showing the disk space used by the event. This will impart a small overhead as it will call du on the event directory. In practice this overhead is fairly small but may be noticeable on IO-constrained systems. - "), + `), type => $types{string}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_RESIZE_CONSOLE", - default => "yes", + name => 'ZM_WEB_RESIZE_CONSOLE', + default => 'yes', description => "Should the console window resize itself to fit", help => q` Traditionally the main ZoneMinder web console window has @@ -1583,21 +1583,21 @@ our @options = ( window size left to the users preference `, type => $types{boolean}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_ID_ON_CONSOLE", - default => "no", + name => 'ZM_WEB_ID_ON_CONSOLE', + default => 'no', description => "Should the console list the monitor id", help => q`Some find it useful to have the id always visible on the console. This option will add a column listing it. `, type => $types{boolean}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_POPUP_ON_ALARM", - default => "yes", + name => 'ZM_WEB_POPUP_ON_ALARM', + default => 'yes', description => "Should the monitor window jump to the top if an alarm occurs", help => q` When viewing a live monitor stream you can specify whether you @@ -1607,11 +1607,11 @@ our @options = ( can pop up if someone comes to the doorway. `, type => $types{boolean}, - category => "web", + category => 'web', }, { - name => "ZM_OPT_X10", - default => "no", + name => 'ZM_OPT_X10', + default => 'no', description => "Support interfacing with X10 devices", help => q` If you have an X10 Home Automation setup in your home you can @@ -1621,39 +1621,39 @@ our @options = ( client. `, type => $types{boolean}, - category => "x10", + category => 'x10', }, { - name => "ZM_X10_DEVICE", - default => "/dev/ttyS0", + name => 'ZM_X10_DEVICE', + default => '/dev/ttyS0', description => "What device is your X10 controller connected on", - requires => [ { name => "ZM_OPT_X10", value => "yes" } ], + requires => [ { name => 'ZM_OPT_X10', value => 'yes' } ], help => q` If you have an X10 controller device (e.g. XM10U) connected to your computer this option details which port it is connected on, the default of /dev/ttyS0 maps to serial or com port 1. `, type => $types{abs_path}, - category => "x10", + category => 'x10', }, { - name => "ZM_X10_HOUSE_CODE", - default => "A", + name => 'ZM_X10_HOUSE_CODE', + default => 'A', description => "What X10 house code should be used", - requires => [ { name => "ZM_OPT_X10", value => "yes" } ], + requires => [ { name => 'ZM_OPT_X10', value => 'yes' } ], help => q` X10 devices are grouped together by identifying them as all belonging to one House Code. This option details what that is. It should be a single letter between A and P. `, - type => { db_type=> "string", hint=>"A-P", pattern=> qr|^([A-P])|i, format=> q( uc($1) ) }, - category => "x10", + type => { db_type=> "string', hint=>'A-P", pattern=> qr|^([A-P])|i, format=> q( uc($1) ) }, + category => 'x10', }, { - name => "ZM_X10_DB_RELOAD_INTERVAL", - default => "60", + name => 'ZM_X10_DB_RELOAD_INTERVAL', + default => '60', description => "How often (in seconds) the X10 daemon reloads the monitors from the database", - requires => [ { name => "ZM_OPT_X10", value => "yes" } ], + requires => [ { name => 'ZM_OPT_X10', value => 'yes' } ], help => q` The zmx10 daemon periodically checks the database to find out what X10 events trigger, or result from, alarms. This option @@ -1661,11 +1661,11 @@ our @options = ( this area frequently this can be a fairly large value. `, type => $types{integer}, - category => "x10", + category => 'x10', }, { - name => "ZM_WEB_SOUND_ON_ALARM", - default => "no", + name => 'ZM_WEB_SOUND_ON_ALARM', + default => 'no', description => "Should the monitor window play a sound if an alarm occurs", help => q` When viewing a live monitor stream you can specify whether you @@ -1673,11 +1673,11 @@ our @options = ( occurs. `, type => $types{boolean}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_ALARM_SOUND", - default => "", + name => 'ZM_WEB_ALARM_SOUND', + default => '', description => "The sound to play on alarm, put this in the sounds directory", help => q` You can specify a sound file to play if an alarm occurs whilst @@ -1687,13 +1687,13 @@ our @options = ( defined earlier. `, type => $types{file}, - requires => [ { name => "ZM_WEB_SOUND_ON_ALARM", value => "yes" } ], - category => "web", + requires => [ { name => 'ZM_WEB_SOUND_ON_ALARM', value => 'yes' } ], + category => 'web', }, { - name => "ZM_WEB_COMPACT_MONTAGE", - default => "no", - description => "Compact the montage view by removing extra detail", + name => 'ZM_WEB_COMPACT_MONTAGE', + default => 'no', + description => 'Compact the montage view by removing extra detail', help => q` The montage view shows the output of all of your active monitors in one window. This include a small menu and status @@ -1703,11 +1703,11 @@ our @options = ( the images. `, type => $types{boolean}, - category => "web", + category => 'web', }, { - name => "ZM_OPT_FAST_DELETE", - default => "no", + name => 'ZM_OPT_FAST_DELETE', + default => 'no', description => "Delete only event database records for speed", help => q` Normally an event created as the result of an alarm consists of @@ -1722,11 +1722,11 @@ our @options = ( with modern hardware. Recommend this feature be left off. `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_STRICT_VIDEO_CONFIG", - default => "yes", + name => 'ZM_STRICT_VIDEO_CONFIG', + default => 'yes', description => "Allow errors in setting video config to be fatal", help => q` With some video devices errors can be reported in setting the @@ -1739,7 +1739,7 @@ our @options = ( Use this option with caution. `, type => $types{boolean}, - category => "config", + category => 'config', }, { name => 'ZM_LD_PRELOAD', @@ -1753,8 +1753,8 @@ our @options = ( category => 'config', }, { - name => "ZM_SIGNAL_CHECK_POINTS", - default => "10", + name => 'ZM_SIGNAL_CHECK_POINTS', + default => '10', description => "How many points in a captured image to check for signal loss", help => q` For locally attached video cameras ZoneMinder can check for @@ -1770,11 +1770,11 @@ our @options = ( Network and file based cameras are never checked. `, type => $types{integer}, - category => "config", + category => 'config', }, { - name => "ZM_V4L_MULTI_BUFFER", - default => "yes", + name => 'ZM_V4L_MULTI_BUFFER', + default => 'yes', description => "Use more than one buffer for Video 4 Linux devices", help => q` Performance when using Video 4 Linux devices is usually best if @@ -1793,11 +1793,11 @@ our @options = ( ovveride them in each individual monitor on the source page. `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_CAPTURES_PER_FRAME", - default => "1", + name => 'ZM_CAPTURES_PER_FRAME', + default => '1', description => "How many images are captured per returned frame, for shared local cameras", help => q` If you are using cameras attached to a video capture card which @@ -1817,11 +1817,11 @@ our @options = ( ovveride them in each individual monitor on the source page. `, type => $types{integer}, - category => "config", + category => 'config', }, { - name => "ZM_FILTER_RELOAD_DELAY", - default => "300", + name => 'ZM_FILTER_RELOAD_DELAY', + default => '300', description => "How often (in seconds) filters are reloaded in zmfilter", help => q` ZoneMinder allows you to save filters to the database which @@ -1833,11 +1833,11 @@ our @options = ( very often this value can be set to a large value. `, type => $types{integer}, - category => "system", + category => 'system', }, { - name => "ZM_FILTER_EXECUTE_INTERVAL", - default => "60", + name => 'ZM_FILTER_EXECUTE_INTERVAL', + default => '60', description => "How often (in seconds) to run automatic saved filters", help => q` ZoneMinder allows you to save filters to the database which @@ -1851,11 +1851,11 @@ our @options = ( elements. `, type => $types{integer}, - category => "system", + category => 'system', }, { - name => "ZM_OPT_UPLOAD", - default => "no", + name => 'ZM_OPT_UPLOAD', + default => 'no', description => "Should ZoneMinder support uploading events from filters", help => q` In ZoneMinder you can create event filters that specify whether @@ -1864,13 +1864,13 @@ our @options = ( functionality should be available `, type => $types{boolean}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_ARCH_FORMAT", - default => "tar", + name => 'ZM_UPLOAD_ARCH_FORMAT', + default => 'tar', description => "What format the uploaded events should be created in.", - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], help => q` Uploaded events may be stored in either .tar or .zip format, this option specifies which. Note that to use this you will @@ -1878,16 +1878,16 @@ our @options = ( installed. `, type => { - db_type => "string", - hint => "tar|zip", + db_type => 'string', + hint => 'tar|zip', pattern => qr|^([tz])|i, - format => q( $1 =~ /^t/ ? "tar" : "zip" ) + format => q( $1 =~ /^t/ ? 'tar' : 'zip' ) }, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_ARCH_COMPRESS", - default => "no", + name => 'ZM_UPLOAD_ARCH_COMPRESS', + default => 'no', description => "Should archive files be compressed", help => q` When the archive files are created they can be compressed. @@ -1896,13 +1896,13 @@ our @options = ( in their creation. Only enable if you have CPU to waste and are limited in disk space on your remote server or bandwidth. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{boolean}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_ARCH_ANALYSE", - default => "no", + name => 'ZM_UPLOAD_ARCH_ANALYSE', + default => 'no', description => "Include the analysis files in the archive", help => q` When the archive files are created they can contain either just @@ -1914,15 +1914,15 @@ our @options = ( caused an alarm in the first place as archives with these files in can be considerably larger. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{boolean}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_PROTOCOL", - default => "ftp", + name => 'ZM_UPLOAD_PROTOCOL', + default => 'ftp', description => "What protocol to use to upload events", - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], help => q` ZoneMinder can upload events to a remote server using either FTP or SFTP. Regular FTP is widely supported but not @@ -1933,42 +1933,42 @@ our @options = ( on your choice. `, type => { - db_type => "string", + db_type => 'string', hint => "ftp|sftp", pattern => qr|^([tz])|i, - format => q( $1 =~ /^f/ ? "ftp" : "sftp" ) + format => q( $1 =~ /^f/ ? 'ftp' : 'sftp' ) }, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_HOST", - default => "", + name => 'ZM_UPLOAD_FTP_HOST', + default => '', description => "The remote server to upload to", help => q` You can use filters to instruct ZoneMinder to upload events to a remote ftp server. This option indicates the name, or ip address, of the server to use. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{hostname}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_UPLOAD_HOST", - default => "", + name => 'ZM_UPLOAD_HOST', + default => '', description => "The remote server to upload events to", help => q` You can use filters to instruct ZoneMinder to upload events to a remote server. This option indicates the name, or ip address, of the server to use. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{hostname}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_PORT", - default => "", + name => 'ZM_UPLOAD_PORT', + default => '', description => "The port on the remote upload server, if not the default (SFTP only)", help => q` You can use filters to instruct ZoneMinder to upload events to @@ -1977,52 +1977,52 @@ our @options = ( connection. If this option is left blank then the default, port 22, is used. This option is ignored for FTP uploads. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{integer}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_USER", - default => "", + name => 'ZM_UPLOAD_FTP_USER', + default => '', description => "Your ftp username", help => q` You can use filters to instruct ZoneMinder to upload events to a remote ftp server. This option indicates the username that ZoneMinder should use to log in for ftp transfer. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{alphanum}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_UPLOAD_USER", - default => "", + name => 'ZM_UPLOAD_USER', + default => '', description => "Remote server username", help => q` You can use filters to instruct ZoneMinder to upload events to a remote server. This option indicates the username that ZoneMinder should use to log in for transfer. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{alphanum}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_PASS", - default => "", + name => 'ZM_UPLOAD_FTP_PASS', + default => '', description => "Your ftp password", help => q` You can use filters to instruct ZoneMinder to upload events to a remote ftp server. This option indicates the password that ZoneMinder should use to log in for ftp transfer. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{string}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_UPLOAD_PASS", - default => "", + name => 'ZM_UPLOAD_PASS', + default => '', description => "Remote server password", help => q` You can use filters to instruct ZoneMinder to upload events to @@ -2031,13 +2031,13 @@ our @options = ( certificate based logins for SFTP servers you can leave this option blank. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{string}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_LOC_DIR", - default => "@ZM_TMPDIR@", + name => 'ZM_UPLOAD_FTP_LOC_DIR', + default => '@ZM_TMPDIR@', description => "The local directory in which to create upload files", help => q` You can use filters to instruct ZoneMinder to upload events to @@ -2046,13 +2046,13 @@ our @options = ( are files that are created from events, uploaded and then deleted. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{abs_path}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_UPLOAD_LOC_DIR", - default => "@ZM_TMPDIR@", + name => 'ZM_UPLOAD_LOC_DIR', + default => '@ZM_TMPDIR@', description => "The local directory in which to create upload files", help => q` You can use filters to instruct ZoneMinder to upload events to @@ -2060,39 +2060,39 @@ our @options = ( ZoneMinder should use for temporary upload files. These are files that are created from events, uploaded and then deleted. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{abs_path}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_REM_DIR", - default => "", - description => "The remote directory to upload to", + name => 'ZM_UPLOAD_FTP_REM_DIR', + default => '', + description => 'The remote directory to upload to', help => q` You can use filters to instruct ZoneMinder to upload events to a remote ftp server. This option indicates the remote directory that ZoneMinder should use to upload event files to. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{rel_path}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_UPLOAD_REM_DIR", - default => "", - description => "The remote directory to upload to", + name => 'ZM_UPLOAD_REM_DIR', + default => '', + description => 'The remote directory to upload to', help => q` You can use filters to instruct ZoneMinder to upload events to a remote server. This option indicates the remote directory that ZoneMinder should use to upload event files to. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{rel_path}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_TIMEOUT", - default => "120", + name => 'ZM_UPLOAD_FTP_TIMEOUT', + default => '120', description => "How long to allow the transfer to take for each file", help => q` You can use filters to instruct ZoneMinder to upload events to @@ -2101,13 +2101,13 @@ our @options = ( ZoneMinder determines that the transfer has failed and closes down the connection. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{integer}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_UPLOAD_TIMEOUT", - default => "120", + name => 'ZM_UPLOAD_TIMEOUT', + default => '120', description => "How long to allow the transfer to take for each file", help => q` You can use filters to instruct ZoneMinder to upload events to @@ -2116,13 +2116,13 @@ our @options = ( determines that the transfer has failed and closes down the connection. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{integer}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_STRICT", - default => "no", + name => 'ZM_UPLOAD_STRICT', + default => 'no', description => "Require strict host key checking for SFTP uploads", help => q` You can require SFTP uploads to verify the host key of the remote server @@ -2131,13 +2131,13 @@ our @options = ( ~/.ssh/known_hosts, where ~ is the home directory of the web server running ZoneMinder. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{boolean}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_PASSIVE", - default => "yes", + name => 'ZM_UPLOAD_FTP_PASSIVE', + default => 'yes', description => "Use passive ftp when uploading", help => q` You can use filters to instruct ZoneMinder to upload events to @@ -2147,7 +2147,7 @@ our @options = ( is more robust and likely to work from behind filewalls. This option is ignored for SFTP transfers. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], help => q` If your computer is behind a firewall or proxy you may need to set FTP to passive mode. In fact for simple transfers it makes @@ -2155,26 +2155,26 @@ our @options = ( 'No' if you wish. `, type => $types{boolean}, - category => "upload", + category => 'upload', }, { - name => "ZM_UPLOAD_FTP_DEBUG", - default => "no", - description => "Switch ftp debugging on", + name => 'ZM_UPLOAD_FTP_DEBUG', + default => 'no', + description => 'Switch ftp debugging on', help => q` You can use filters to instruct ZoneMinder to upload events to a remote ftp server. If you are having (or expecting) troubles with uploading events then setting this to 'yes' permits additional information to be included in the zmfilter log file. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{boolean}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_UPLOAD_DEBUG", - default => "no", - description => "Switch upload debugging on", + name => 'ZM_UPLOAD_DEBUG', + default => 'no', + description => 'Switch upload debugging on', help => q` You can use filters to instruct ZoneMinder to upload events to a remote server. If you are having (or expecting) troubles with @@ -2182,13 +2182,13 @@ our @options = ( information to be generated by the underlying transfer modules and included in the logs. `, - requires => [ { name => "ZM_OPT_UPLOAD", value => "yes" } ], + requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ], type => $types{boolean}, - category => "upload", + category => 'upload', }, { - name => "ZM_OPT_EMAIL", - default => "no", + name => 'ZM_OPT_EMAIL', + default => 'no', description => "Should ZoneMinder email you details of events that match corresponding filters", help => q` In ZoneMinder you can create event filters that specify whether @@ -2201,23 +2201,23 @@ our @options = ( regular email reader rather than a mobile device. `, type => $types{boolean}, - category => "mail", + category => 'mail', }, { - name => "ZM_EMAIL_ADDRESS", - default => "", + name => 'ZM_EMAIL_ADDRESS', + default => '', description => "The email address to send matching event details to", - requires => [ { name => "ZM_OPT_EMAIL", value => "yes" } ], + requires => [ { name => 'ZM_OPT_EMAIL', value => 'yes' } ], help => q` This option is used to define the email address that any events that match the appropriate filters will be sent to. `, type => $types{email}, - category => "mail", + category => 'mail', }, { - name => "ZM_EMAIL_TEXT", - default => 'subject = "ZoneMinder: Alarm - %MN%-%EI% (%ESM% - %ESA% %EFA%)" + name => 'ZM_EMAIL_TEXT', + default => 'subject = 'ZoneMinder: Alarm - %MN%-%EI% (%ESM% - %ESA% %EFA%)' body = " Hello, @@ -2235,28 +2235,28 @@ our @options = ( ZoneMinder"', description => "The text of the email used to send matching event details", - requires => [ { name => "ZM_OPT_EMAIL", value => "yes" } ], + requires => [ { name => 'ZM_OPT_EMAIL', value => 'yes' } ], help => q` This option is used to define the content of the email that is sent for any events that match the appropriate filters. `, type => $types{text}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_EMAIL_SUBJECT", - default => "ZoneMinder: Alarm - %MN%-%EI% (%ESM% - %ESA% %EFA%)", + name => 'ZM_EMAIL_SUBJECT', + default => 'ZoneMinder: Alarm - %MN%-%EI% (%ESM% - %ESA% %EFA%)', description => "The subject of the email used to send matching event details", - requires => [ { name => "ZM_OPT_EMAIL", value => "yes" } ], + requires => [ { name => 'ZM_OPT_EMAIL', value => 'yes' } ], help => q` This option is used to define the subject of the email that is sent for any events that match the appropriate filters. `, type => $types{string}, - category => "mail", + category => 'mail', }, { - name => "ZM_EMAIL_BODY", + name => 'ZM_EMAIL_BODY', default => " Hello, @@ -2274,17 +2274,17 @@ our @options = ( ZoneMinder", description => "The body of the email used to send matching event details", - requires => [ { name => "ZM_OPT_EMAIL", value => "yes" } ], + requires => [ { name => 'ZM_OPT_EMAIL', value => 'yes' } ], help => q` This option is used to define the content of the email that is sent for any events that match the appropriate filters. `, type => $types{text}, - category => "mail", + category => 'mail', }, { - name => "ZM_OPT_MESSAGE", - default => "no", + name => 'ZM_OPT_MESSAGE', + default => 'no', description => "Should ZoneMinder message you with details of events that match corresponding filters", help => q` In ZoneMinder you can create event filters that specify whether @@ -2298,65 +2298,65 @@ our @options = ( email reader. `, type => $types{boolean}, - category => "mail", + category => 'mail', }, { - name => "ZM_MESSAGE_ADDRESS", - default => "", + name => 'ZM_MESSAGE_ADDRESS', + default => '', description => "The email address to send matching event details to", - requires => [ { name => "ZM_OPT_MESSAGE", value => "yes" } ], + requires => [ { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` This option is used to define the short message email address that any events that match the appropriate filters will be sent to. `, type => $types{email}, - category => "mail", + category => 'mail', }, { - name => "ZM_MESSAGE_TEXT", - default => 'subject = "ZoneMinder: Alarm - %MN%-%EI%" + name => 'ZM_MESSAGE_TEXT', + default => 'subject = 'ZoneMinder: Alarm - %MN%-%EI%' body = "ZM alarm detected - %EL% secs, %EF%/%EFA% frames, t%EST%/m%ESM%/a%ESA% score."', description => "The text of the message used to send matching event details", - requires => [ { name => "ZM_OPT_MESSAGE", value => "yes" } ], + requires => [ { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` This option is used to define the content of the message that is sent for any events that match the appropriate filters. `, type => $types{text}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_MESSAGE_SUBJECT", - default => "ZoneMinder: Alarm - %MN%-%EI%", + name => 'ZM_MESSAGE_SUBJECT', + default => 'ZoneMinder: Alarm - %MN%-%EI%', description => "The subject of the message used to send matching event details", - requires => [ { name => "ZM_OPT_MESSAGE", value => "yes" } ], + requires => [ { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` This option is used to define the subject of the message that is sent for any events that match the appropriate filters. `, type => $types{string}, - category => "mail", + category => 'mail', }, { - name => "ZM_MESSAGE_BODY", + name => 'ZM_MESSAGE_BODY', default => "ZM alarm detected - %EL% secs, %EF%/%EFA% frames, t%EST%/m%ESM%/a%ESA% score.", description => "The body of the message used to send matching event details", - requires => [ { name => "ZM_OPT_MESSAGE", value => "yes" } ], + requires => [ { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` This option is used to define the content of the message that is sent for any events that match the appropriate filters. `, type => $types{text}, - category => "mail", + category => 'mail', }, { - name => "ZM_NEW_MAIL_MODULES", - default => "no", + name => 'ZM_NEW_MAIL_MODULES', + default => 'no', description => "Use a newer perl method to send emails", requires => [ - { name => "ZM_OPT_EMAIL", value => "yes" }, - { name => "ZM_OPT_MESSAGE", value => "yes" } + { name => 'ZM_OPT_EMAIL', value => 'yes' }, + { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` Traditionally ZoneMinder has used the MIME::Entity perl module @@ -2370,15 +2370,15 @@ our @options = ( not selected by default. `, type => $types{boolean}, - category => "mail", + category => 'mail', }, { - name => "ZM_EMAIL_HOST", - default => "localhost", + name => 'ZM_EMAIL_HOST', + default => 'localhost', description => "The host address of your SMTP mail server", requires => [ - { name => "ZM_OPT_EMAIL", value => "yes" }, - { name => "ZM_OPT_MESSAGE", value => "yes" } + { name => 'ZM_OPT_EMAIL', value => 'yes' }, + { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` If you have chosen SMTP as the method by which to send @@ -2389,15 +2389,15 @@ our @options = ( mail server here. `, type => $types{hostname}, - category => "mail", + category => 'mail', }, { - name => "ZM_FROM_EMAIL", - default => "", + name => 'ZM_FROM_EMAIL', + default => '', description => "The email address you wish your event notifications to originate from", requires => [ - { name => "ZM_OPT_EMAIL", value => "yes" }, - { name => "ZM_OPT_MESSAGE", value => "yes" } + { name => 'ZM_OPT_EMAIL', value => 'yes' }, + { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` The emails or messages that will be sent to you informing you @@ -2406,15 +2406,15 @@ our @options = ( ZoneMinder\@your.domain is recommended. `, type => $types{email}, - category => "mail", + category => 'mail', }, { - name => "ZM_URL", - default => "", + name => 'ZM_URL', + default => '', description => "The URL of your ZoneMinder installation", requires => [ - { name => "ZM_OPT_EMAIL", value => "yes" }, - { name => "ZM_OPT_MESSAGE", value => "yes" } + { name => 'ZM_OPT_EMAIL', value => 'yes' }, + { name => 'ZM_OPT_MESSAGE', value => 'yes' } ], help => q` The emails or messages that will be sent to you informing you @@ -2424,11 +2424,11 @@ our @options = ( you read your email, e.g. http://host.your.domain/zm.php. `, type => $types{url}, - category => "mail", + category => 'mail', }, { - name => "ZM_MAX_RESTART_DELAY", - default => "600", + name => 'ZM_MAX_RESTART_DELAY', + default => '600', description => "Maximum delay (in seconds) for daemon restart attempts.", help => q` The zmdc (zm daemon control) process controls when processeses @@ -2440,11 +2440,11 @@ our @options = ( this maximum delay is. `, type => $types{integer}, - category => "system", + category => 'system', }, { - name => "ZM_WATCH_CHECK_INTERVAL", - default => "10", + name => 'ZM_WATCH_CHECK_INTERVAL', + default => '10', description => "How often to check the capture daemons have not locked up", help => q` The zmwatch daemon checks the image capture performance of the @@ -2453,11 +2453,11 @@ our @options = ( determines how often the daemons are checked. `, type => $types{integer}, - category => "system", + category => 'system', }, { - name => "ZM_WATCH_MAX_DELAY", - default => "5", + name => 'ZM_WATCH_MAX_DELAY', + default => '5', description => "The maximum delay allowed since the last captured image", help => q` The zmwatch daemon checks the image capture performance of the @@ -2470,11 +2470,11 @@ our @options = ( above. `, type => $types{decimal}, - category => "system", + category => 'system', }, { - name => "ZM_RUN_AUDIT", - default => "yes", + name => 'ZM_RUN_AUDIT', + default => 'yes', description => "Run zmaudit to check data consistency", help => q` The zmaudit daemon exists to check that the saved information @@ -2493,11 +2493,11 @@ our @options = ( times. `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_AUDIT_CHECK_INTERVAL", - default => "900", + name => 'ZM_AUDIT_CHECK_INTERVAL', + default => '900', description => "How often to check database and filesystem consistency", help => q` The zmaudit daemon exists to check that the saved information @@ -2515,11 +2515,11 @@ our @options = ( performed. `, type => $types{integer}, - category => "system", + category => 'system', }, { - name => "ZM_AUDIT_MIN_AGE", - default => "86400", + name => 'ZM_AUDIT_MIN_AGE', + default => '86400', description => "The minimum age in seconds event data must be in order to be deleted.", help => q` The zmaudit daemon exists to check that the saved information @@ -2528,11 +2528,11 @@ our @options = ( this setting will not be deleted and a warning will be given. `, type => $types{integer}, - category => "system", + category => 'system', }, { - name => "ZM_FORCED_ALARM_SCORE", - default => "255", + name => 'ZM_FORCED_ALARM_SCORE', + default => '255', description => "Score to give forced alarms", help => q` The 'zmu' utility can be used to force an alarm on a monitor @@ -2541,11 +2541,11 @@ our @options = ( distinguish them from regular ones. It must be 255 or less. `, type => $types{integer}, - category => "config", + category => 'config', }, { - name => "ZM_BULK_FRAME_INTERVAL", - default => "100", + name => 'ZM_BULK_FRAME_INTERVAL', + default => '100', description => "How often a bulk frame should be written to the database", help => q` Traditionally ZoneMinder writes an entry into the Frames @@ -2563,11 +2563,11 @@ our @options = ( are still written if an alarm occurs in Mocord mode also. `, type => $types{integer}, - category => "config", + category => 'config', }, { - name => "ZM_EVENT_CLOSE_MODE", - default => "idle", + name => 'ZM_EVENT_CLOSE_MODE', + default => 'idle', description => "When continuous events are closed.", help => q` When a monitor is running in a continuous recording mode @@ -2590,20 +2590,20 @@ our @options = ( `, type => $types{boolean}, type => { - db_type => "string", - hint => "time|idle|alarm", + db_type => 'string', + hint => 'time|idle|alarm', pattern => qr|^([tia])|i, format => q( ($1 =~ /^t/) - ? "time" - : ($1 =~ /^i/ ? "idle" : "time" ) + ? 'time' + : ($1 =~ /^i/ ? 'idle' : 'time' ) ) }, - category => "config", + category => 'config', }, # Deprecated, superseded by event close mode { - name => "ZM_FORCE_CLOSE_EVENTS", - default => "no", + name => 'ZM_FORCE_CLOSE_EVENTS', + default => 'no', description => "Close events at section ends.", help => q` When a monitor is running in a continuous recording mode @@ -2616,11 +2616,11 @@ our @options = ( motion activity. `, type => $types{boolean}, - category => "hidden", + category => 'hidden', }, { - name => "ZM_CREATE_ANALYSIS_IMAGES", - default => "yes", + name => 'ZM_CREATE_ANALYSIS_IMAGES', + default => 'yes', description => "Create analysed alarm images with motion outlined", help => q` By default during an alarm ZoneMinder records both the raw @@ -2632,11 +2632,11 @@ our @options = ( generation of these images off. `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_WEIGHTED_ALARM_CENTRES", - default => "no", + name => 'ZM_WEIGHTED_ALARM_CENTRES', + default => 'no', description => "Use a weighted algorithm to calculate the centre of an alarm", help => q` ZoneMinder will always calculate the centre point of an alarm @@ -2650,11 +2650,11 @@ our @options = ( more precise is also slower and so is turned off by default. `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_EVENT_IMAGE_DIGITS", - default => "5", + name => 'ZM_EVENT_IMAGE_DIGITS', + default => '5', description => "How many significant digits are used in event image numbering", help => q` As event images are captured they are stored to the filesystem @@ -2670,11 +2670,11 @@ our @options = ( effects. `, type => $types{integer}, - category => "config", + category => 'config', }, { - name => "ZM_DEFAULT_ASPECT_RATIO", - default => "4:3", + name => 'ZM_DEFAULT_ASPECT_RATIO', + default => '4:3', description => "The default width:height aspect ratio used in monitors", help => q` When specifying the dimensions of monitors you can click a @@ -2687,11 +2687,11 @@ our @options = ( monitor dimensions this setting has no effect. `, type => $types{string}, - category => "config", + category => 'config', }, { - name => "ZM_USER_SELF_EDIT", - default => "no", + name => 'ZM_USER_SELF_EDIT', + default => 'no', description => "Allow unprivileged users to change their details", help => q` Ordinarily only users with system edit privilege are able to @@ -2699,13 +2699,13 @@ our @options = ( users to change their passwords and their language settings `, type => $types{boolean}, - category => "config", + category => 'config', }, { - name => "ZM_OPT_FRAME_SERVER", - default => "no", + name => 'ZM_OPT_FRAME_SERVER', + default => 'no', description => "Should analysis farm out the writing of images to disk", -#requires => [ { name => "ZM_OPT_ADAPTIVE_SKIP", value => "yes" } ], +#requires => [ { name => 'ZM_OPT_ADAPTIVE_SKIP', value => 'yes' } ], help => q` In some circumstances it is possible for a slow disk to take so long writing images to disk that it causes the analysis daemon @@ -2718,13 +2718,13 @@ our @options = ( will fall back to the analysis daemon. `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_FRAME_SOCKET_SIZE", - default => "0", + name => 'ZM_FRAME_SOCKET_SIZE', + default => '0', description => "Specify the frame server socket buffer size if non-standard", - requires => [ { name => "ZM_OPT_FRAME_SERVER", value => "yes" } ], + requires => [ { name => 'ZM_OPT_FRAME_SERVER', value => 'yes' } ], help => q` For large captured images it is possible for the writes from the analysis daemon to the frame server to fail as the amount @@ -2740,11 +2740,11 @@ our @options = ( with no change necessary in this option `, type => $types{integer}, - category => "system", + category => 'system', }, { - name => "ZM_OPT_CONTROL", - default => "no", + name => 'ZM_OPT_CONTROL', + default => 'no', description => "Support controllable (e.g. PTZ) cameras", help => q` ZoneMinder includes limited support for controllable cameras. A @@ -2755,11 +2755,11 @@ our @options = ( off. `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_OPT_TRIGGERS", - default => "no", + name => 'ZM_OPT_TRIGGERS', + default => 'no', description => "Interface external event triggers via socket or device files", help => q` ZoneMinder can interact with external systems which prompt or @@ -2768,11 +2768,11 @@ our @options = ( triggers. Most people will say no here. `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_CHECK_FOR_UPDATES", - default => "yes", + name => 'ZM_CHECK_FOR_UPDATES', + default => 'yes', description => "Check with zoneminder.com for updated versions", help => q` From ZoneMinder version 1.17.0 onwards new versions are @@ -2786,11 +2786,11 @@ our @options = ( check off with this configuration variable `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_TELEMETRY_DATA", - default => "yes", + name => 'ZM_TELEMETRY_DATA', + default => 'yes', description => "Send usage information to ZoneMinder", help => q` Enable collection of usage information of the local system and send @@ -2803,32 +2803,32 @@ our @options = ( the web console under Options. `, type => $types{boolean}, - category => "system", + category => 'system', }, { - name => "ZM_TELEMETRY_UUID", - default => "", - description => "Unique identifier for ZoneMinder telemetry", + name => 'ZM_TELEMETRY_UUID', + default => '', + description => 'Unique identifier for ZoneMinder telemetry', help => q` This variable is auto-generated once by the system and is used to uniquely identify it among all other ZoneMinder systems in existence. `, type => $types{string}, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_TELEMETRY_LAST_UPLOAD", - default => "", + name => 'ZM_TELEMETRY_LAST_UPLOAD', + default => '', description => "When the last ZoneMinder telemetry upload ocurred", - help => "", + help => '', type => $types{integer}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_UPDATE_CHECK_PROXY", - default => "", + name => 'ZM_UPDATE_CHECK_PROXY', + default => '', description => "Proxy url if required to access zoneminder.com", help => q` If you use a proxy to access the internet then ZoneMinder needs @@ -2837,11 +2837,11 @@ our @options = ( of http://:/ `, type => $types{string}, - category => "system", + category => 'system', }, { - name => "ZM_SHM_KEY", - default => "0x7a6d0000", + name => 'ZM_SHM_KEY', + default => '0x7a6d0000', description => "Shared memory root key to use", help => q` ZoneMinder uses shared memory to speed up communication between @@ -2854,12 +2854,12 @@ our @options = ( four will be masked out and ignored. `, type => $types{hexadecimal}, - category => "system", + category => 'system', }, # Deprecated, really no longer necessary { - name => "ZM_WEB_REFRESH_METHOD", - default => "javascript", + name => 'ZM_WEB_REFRESH_METHOD', + default => 'javascript', description => "What method windows should use to refresh themselves", help => q` Many windows in Javascript need to refresh themselves to keep @@ -2874,19 +2874,19 @@ our @options = ( have to be done manually. `, type => { - db_type => "string", + db_type => 'string', hint => "javascript|http", pattern => qr|^([jh])|i, format => q( $1 =~ /^j/ - ? "javascript" - : "http" + ? 'javascript' + : 'http' ) }, - category => "hidden", + category => 'hidden', }, { - name => "ZM_WEB_EVENT_SORT_FIELD", - default => "DateTime", + name => 'ZM_WEB_EVENT_SORT_FIELD', + default => 'DateTime', description => "Default field the event lists are sorted by", help => q` Events in lists can be initially ordered in any way you want. @@ -2897,16 +2897,16 @@ our @options = ( ordering in the lists and so not always to time based ordering. `, type => { - db_type => "string", + db_type => 'string', hint => "Id|Name|Cause|MonitorName|DateTime|Length|Frames|AlarmFrames|TotScore|AvgScore|MaxScore", pattern => qr|.|, format => q( $1 ) }, - category => "web", + category => 'web', }, { - name => "ZM_WEB_EVENT_SORT_ORDER", - default => "asc", + name => 'ZM_WEB_EVENT_SORT_ORDER', + default => 'asc', description => "Default order the event lists are sorted by", help => q` Events in lists can be initially ordered in any way you want. @@ -2918,16 +2918,16 @@ our @options = ( always to time based ordering. `, type => { - db_type => "string", + db_type => 'string', hint => "asc|desc", pattern => qr|^([ad])|i, - format => q( $1 =~ /^a/i ? "asc" : "desc" ) + format => q( $1 =~ /^a/i ? "asc' : 'desc" ) }, - category => "web", + category => 'web', }, { - name => "ZM_WEB_EVENTS_PER_PAGE", - default => "25", + name => 'ZM_WEB_EVENTS_PER_PAGE', + default => '25', description => "How many events to list per page in paged mode", help => q` In the event list view you can either list all events or just a @@ -2936,11 +2936,11 @@ our @options = ( headers in non-paged mode. `, type => $types{integer}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_LIST_THUMBS", - default => "no", + name => 'ZM_WEB_LIST_THUMBS', + default => 'no', description => "Display mini-thumbnails of event images in event lists", help => q` Ordinarily the event lists just display text details of the @@ -2950,11 +2950,11 @@ our @options = ( following two options. `, type => $types{boolean}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_LIST_THUMB_WIDTH", - default => "48", + name => 'ZM_WEB_LIST_THUMB_WIDTH', + default => '48', description => "The width of the thumbnails that appear in the event lists", help => q` This options controls the width of the thumbnail images that @@ -2966,12 +2966,12 @@ our @options = ( used and height ignored. `, type => $types{integer}, - requires => [ { name => "ZM_WEB_LIST_THUMBS", value => "yes" } ], - category => "web", + requires => [ { name => 'ZM_WEB_LIST_THUMBS', value => 'yes' } ], + category => 'web', }, { - name => "ZM_WEB_LIST_THUMB_HEIGHT", - default => "0", + name => 'ZM_WEB_LIST_THUMB_HEIGHT', + default => '0', description => "The height of the thumbnails that appear in the event lists", help => q` This options controls the height of the thumbnail images that @@ -2983,12 +2983,12 @@ our @options = ( be used and height ignored. `, type => $types{integer}, - requires => [ { name => "ZM_WEB_LIST_THUMBS", value => "yes" } ], - category => "web", + requires => [ { name => 'ZM_WEB_LIST_THUMBS', value => 'yes' } ], + category => 'web', }, { - name => "ZM_WEB_USE_OBJECT_TAGS", - default => "yes", + name => 'ZM_WEB_USE_OBJECT_TAGS', + default => 'yes', description => "Wrap embed in object tags for media content", help => q` There are two methods of including media content in web pages. @@ -3007,11 +3007,11 @@ our @options = ( you encounter problems playing some content. `, type => $types{boolean}, - category => "web", + category => 'web', }, { - name => "ZM_WEB_H_REFRESH_MAIN", - default => "60", + name => 'ZM_WEB_H_REFRESH_MAIN', + default => '60', introduction => q` There are now a number of options that are grouped into bandwidth categories, this allows you to configure the @@ -3031,11 +3031,11 @@ our @options = ( of the rest of the system. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_REFRESH_CYCLE", - default => "10", + name => 'ZM_WEB_H_REFRESH_CYCLE', + default => '10', description => "How often (in seconds) the cycle watch window swaps to the next monitor", help => q` The cycle watch window is a method of continuously cycling @@ -3043,11 +3043,11 @@ our @options = ( determines how often to refresh with a new image. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_REFRESH_IMAGE", - default => "3", + name => 'ZM_WEB_H_REFRESH_IMAGE', + default => '3', description => "How often (in seconds) the watched image is refreshed (if not streaming)", help => q` The live images from a monitor can be viewed in either streamed @@ -3055,11 +3055,11 @@ our @options = ( is refreshed, it has no effect if streaming is selected. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_REFRESH_STATUS", - default => "1", + name => 'ZM_WEB_H_REFRESH_STATUS', + default => '1', description => "How often (in seconds) the status refreshes itself in the watch window", help => q` The monitor window is actually made from several frames. The @@ -3068,11 +3068,11 @@ our @options = ( option determines that frequency. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_REFRESH_EVENTS", - default => "5", + name => 'ZM_WEB_H_REFRESH_EVENTS', + default => '5', description => "How often (in seconds) the event listing is refreshed in the watch window", help => q` The monitor window is actually made from several frames. The @@ -3080,11 +3080,11 @@ our @options = ( access. This option determines how often this is refreshed. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_CAN_STREAM", - default => "auto", + name => 'ZM_WEB_H_CAN_STREAM', + default => 'auto', description => "Override the automatic detection of browser streaming capability", help => q` If you know that your browser can handle image streams of the @@ -3096,11 +3096,11 @@ our @options = ( so the plugin will be used while 'auto' lets ZoneMinder decide. `, type => $types{tristate}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_STREAM_METHOD", - default => "jpeg", + name => 'ZM_WEB_H_STREAM_METHOD', + default => 'jpeg', description => "Which method should be used to send video streams to your browser.", help => q` ZoneMinder can be configured to use either mpeg encoded video @@ -3112,16 +3112,16 @@ our @options = ( Explorer `, type => { - db_type => "string", - hint => "mpeg|jpeg", + db_type => 'string', + hint => 'mpeg|jpeg', pattern => qr|^([mj])|i, - format => q( $1 =~ /^m/ ? "mpeg" : "jpeg" ) + format => q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' ) }, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_DEFAULT_SCALE", - default => "100", + name => 'ZM_WEB_H_DEFAULT_SCALE', + default => '100', description => "What the default scaling factor applied to 'live' or 'event' views is (%)", help => q` Normally ZoneMinder will display 'live' or 'event' streams in @@ -3133,16 +3133,16 @@ our @options = ( is double size etc. `, type => { - db_type => "integer", - hint => "25|33|50|75|100|150|200|300|400", + db_type => 'integer', + hint => '25|33|50|75|100|150|200|300|400', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_DEFAULT_RATE", - default => "100", + name => 'ZM_WEB_H_DEFAULT_RATE', + default => '100', description => "What the default replay rate factor applied to 'event' views is (%)", help => q` Normally ZoneMinder will display 'event' streams at their @@ -3153,16 +3153,16 @@ our @options = ( 100 is normal rate, 200 is double speed etc. `, type => { - db_type => "integer", - hint => "25|50|100|150|200|400|1000|2500|5000|10000", + db_type => 'integer', + hint => '25|50|100|150|200|400|1000|2500|5000|10000', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_VIDEO_BITRATE", - default => "150000", + name => 'ZM_WEB_H_VIDEO_BITRATE', + default => '150000', description => "What the bitrate of the video encoded stream should be set to", help => q` When encoding real video via the ffmpeg library a bit rate can @@ -3178,11 +3178,11 @@ our @options = ( lower quality. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_VIDEO_MAXFPS", - default => "30", + name => 'ZM_WEB_H_VIDEO_MAXFPS', + default => '30', description => "What the maximum frame rate for streamed video should be", help => q` When using streamed video the main control is the bitrate which @@ -3201,11 +3201,11 @@ our @options = ( be the original divided by a power of 2. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_SCALE_THUMBS", - default => "no", + name => 'ZM_WEB_H_SCALE_THUMBS', + default => 'no', description => "Scale thumbnails in events, bandwidth versus cpu in rescaling", help => q` If unset, this option sends the whole image to the browser @@ -3217,11 +3217,11 @@ our @options = ( available in the php-gd package. `, type => $types{boolean}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_EVENTS_VIEW", - default => "events", + name => 'ZM_WEB_H_EVENTS_VIEW', + default => 'events', description => "What the default view of multiple events should be.", help => q` Stored events can be viewed in either an events list format or @@ -3231,16 +3231,16 @@ our @options = ( view is currently being used. `, type => { - db_type => "string", + db_type => 'string', hint => "events|timeline", pattern => qr|^([lt])|i, - format => q( $1 =~ /^e/ ? "events" : "timeline" ) + format => q( $1 =~ /^e/ ? "events' : 'timeline" ) }, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_SHOW_PROGRESS", - default => "yes", + name => 'ZM_WEB_H_SHOW_PROGRESS', + default => 'yes', description => "Show the progress of replay in event view.", help => q` When viewing events an event navigation panel and progress bar @@ -3255,11 +3255,11 @@ our @options = ( bandwidth prevents it functioning effectively. `, type => $types{boolean}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_H_AJAX_TIMEOUT", - default => "3000", + name => 'ZM_WEB_H_AJAX_TIMEOUT', + default => '3000', description => "How long to wait for Ajax request responses (ms)", help => q` The newer versions of the live feed and event views use Ajax to @@ -3274,11 +3274,11 @@ our @options = ( milliseconds but if set to zero then no timeout will be used. `, type => $types{integer}, - category => "highband", + category => 'highband', }, { - name => "ZM_WEB_M_REFRESH_MAIN", - default => "300", + name => 'ZM_WEB_M_REFRESH_MAIN', + default => '300', description => "How often (in seconds) the main console window should refresh itself", help => q` The main console window lists a general status and the event @@ -3294,11 +3294,11 @@ our @options = ( cable or DSL link. In most cases the default values will be suitable as a starting point. `, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_REFRESH_CYCLE", - default => "20", + name => 'ZM_WEB_M_REFRESH_CYCLE', + default => '20', description => "How often (in seconds) the cycle watch window swaps to the next monitor", help => q` The cycle watch window is a method of continuously cycling @@ -3306,11 +3306,11 @@ our @options = ( determines how often to refresh with a new image. `, type => $types{integer}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_REFRESH_IMAGE", - default => "10", + name => 'ZM_WEB_M_REFRESH_IMAGE', + default => '10', description => "How often (in seconds) the watched image is refreshed (if not streaming)", help => q` The live images from a monitor can be viewed in either streamed @@ -3318,11 +3318,11 @@ our @options = ( is refreshed, it has no effect if streaming is selected. `, type => $types{integer}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_REFRESH_STATUS", - default => "5", + name => 'ZM_WEB_M_REFRESH_STATUS', + default => '5', description => "How often (in seconds) the status refreshes itself in the watch window", help => q` The monitor window is actually made from several frames. The @@ -3331,11 +3331,11 @@ our @options = ( option determines that frequency. `, type => $types{integer}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_REFRESH_EVENTS", - default => "60", + name => 'ZM_WEB_M_REFRESH_EVENTS', + default => '60', description => "How often (in seconds) the event listing is refreshed in the watch window", help => q` The monitor window is actually made from several frames. The @@ -3343,11 +3343,11 @@ our @options = ( access. This option determines how often this is refreshed. `, type => $types{integer}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_CAN_STREAM", - default => "auto", + name => 'ZM_WEB_M_CAN_STREAM', + default => 'auto', description => "Override the automatic detection of browser streaming capability", help => q` If you know that your browser can handle image streams of the @@ -3359,11 +3359,11 @@ our @options = ( so the plugin will be used while 'auto' lets ZoneMinder decide. `, type => $types{tristate}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_STREAM_METHOD", - default => "jpeg", + name => 'ZM_WEB_M_STREAM_METHOD', + default => 'jpeg', description => "Which method should be used to send video streams to your browser.", help => q` ZoneMinder can be configured to use either mpeg encoded video @@ -3375,16 +3375,16 @@ our @options = ( Explorer `, type => { - db_type => "string", - hint => "mpeg|jpeg", + db_type => 'string', + hint => 'mpeg|jpeg', pattern => qr|^([mj])|i, - format => q( $1 =~ /^m/ ? "mpeg" : "jpeg" ) + format => q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' ) }, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_DEFAULT_SCALE", - default => "100", + name => 'ZM_WEB_M_DEFAULT_SCALE', + default => '100', description => "What the default scaling factor applied to 'live' or 'event' views is (%)", help => q` Normally ZoneMinder will display 'live' or 'event' streams in @@ -3396,16 +3396,16 @@ our @options = ( is double size etc. `, type => { - db_type => "integer", - hint => "25|33|50|75|100|150|200|300|400", + db_type => 'integer', + hint => '25|33|50|75|100|150|200|300|400', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_DEFAULT_RATE", - default => "100", + name => 'ZM_WEB_M_DEFAULT_RATE', + default => '100', description => "What the default replay rate factor applied to 'event' views is (%)", help => q` Normally ZoneMinder will display 'event' streams at their @@ -3416,16 +3416,16 @@ our @options = ( 100 is normal rate, 200 is double speed etc. `, type => { - db_type => "integer", - hint => "25|50|100|150|200|400|1000|2500|5000|10000", + db_type => 'integer', + hint => '25|50|100|150|200|400|1000|2500|5000|10000', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_VIDEO_BITRATE", - default => "75000", + name => 'ZM_WEB_M_VIDEO_BITRATE', + default => '75000', description => "What the bitrate of the video encoded stream should be set to", help => q` When encoding real video via the ffmpeg library a bit rate can @@ -3441,11 +3441,11 @@ our @options = ( lower quality. `, type => $types{integer}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_VIDEO_MAXFPS", - default => "10", + name => 'ZM_WEB_M_VIDEO_MAXFPS', + default => '10', description => "What the maximum frame rate for streamed video should be", help => q` When using streamed video the main control is the bitrate which @@ -3464,11 +3464,11 @@ our @options = ( be the original divided by a power of 2. `, type => $types{integer}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_SCALE_THUMBS", - default => "yes", + name => 'ZM_WEB_M_SCALE_THUMBS', + default => 'yes', description => "Scale thumbnails in events, bandwidth versus cpu in rescaling", help => q` If unset, this option sends the whole image to the browser @@ -3480,11 +3480,11 @@ our @options = ( available in the php-gd package. `, type => $types{boolean}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_EVENTS_VIEW", - default => "events", + name => 'ZM_WEB_M_EVENTS_VIEW', + default => 'events', description => "What the default view of multiple events should be.", help => q` Stored events can be viewed in either an events list format or @@ -3494,16 +3494,16 @@ our @options = ( view is currently being used. `, type => { - db_type => "string", + db_type => 'string', hint => "events|timeline", pattern => qr|^([lt])|i, - format => q( $1 =~ /^e/ ? "events" : "timeline" ) + format => q( $1 =~ /^e/ ? "events' : 'timeline" ) }, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_SHOW_PROGRESS", - default => "yes", + name => 'ZM_WEB_M_SHOW_PROGRESS', + default => 'yes', description => "Show the progress of replay in event view.", help => q` When viewing events an event navigation panel and progress bar @@ -3518,11 +3518,11 @@ our @options = ( bandwidth prevents it functioning effectively. `, type => $types{boolean}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_M_AJAX_TIMEOUT", - default => "5000", + name => 'ZM_WEB_M_AJAX_TIMEOUT', + default => '5000', description => "How long to wait for Ajax request responses (ms)", help => q` The newer versions of the live feed and event views use Ajax to @@ -3537,11 +3537,11 @@ our @options = ( milliseconds but if set to zero then no timeout will be used. `, type => $types{integer}, - category => "medband", + category => 'medband', }, { - name => "ZM_WEB_L_REFRESH_MAIN", - default => "300", + name => 'ZM_WEB_L_REFRESH_MAIN', + default => '300', description => "How often (in seconds) the main console window should refresh itself", introduction => q` The next few options control what happens when the client is @@ -3557,11 +3557,11 @@ our @options = ( of the rest of the system. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_REFRESH_CYCLE", - default => "30", + name => 'ZM_WEB_L_REFRESH_CYCLE', + default => '30', description => "How often (in seconds) the cycle watch window swaps to the next monitor", help => q` The cycle watch window is a method of continuously cycling @@ -3569,11 +3569,11 @@ our @options = ( determines how often to refresh with a new image. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_REFRESH_IMAGE", - default => "15", + name => 'ZM_WEB_L_REFRESH_IMAGE', + default => '15', description => "How often (in seconds) the watched image is refreshed (if not streaming)", help => q` The live images from a monitor can be viewed in either streamed @@ -3581,11 +3581,11 @@ our @options = ( is refreshed, it has no effect if streaming is selected. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_REFRESH_STATUS", - default => "10", + name => 'ZM_WEB_L_REFRESH_STATUS', + default => '10', description => "How often (in seconds) the status refreshes itself in the watch window", help => q` The monitor window is actually made from several frames. The @@ -3594,11 +3594,11 @@ our @options = ( option determines that frequency. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_REFRESH_EVENTS", - default => "180", + name => 'ZM_WEB_L_REFRESH_EVENTS', + default => '180', description => "How often (in seconds) the event listing is refreshed in the watch window", help => q` The monitor window is actually made from several frames. The @@ -3606,11 +3606,11 @@ our @options = ( access. This option determines how often this is refreshed. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_CAN_STREAM", - default => "auto", + name => 'ZM_WEB_L_CAN_STREAM', + default => 'auto', description => "Override the automatic detection of browser streaming capability", help => q` If you know that your browser can handle image streams of the @@ -3622,11 +3622,11 @@ our @options = ( so the plugin will be used while 'auto' lets ZoneMinder decide. `, type => $types{tristate}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_STREAM_METHOD", - default => "jpeg", + name => 'ZM_WEB_L_STREAM_METHOD', + default => 'jpeg', description => "Which method should be used to send video streams to your browser.", help => q` ZoneMinder can be configured to use either mpeg encoded video @@ -3638,16 +3638,16 @@ our @options = ( Explorer `, type => { - db_type => "string", - hint => "mpeg|jpeg", + db_type => 'string', + hint => 'mpeg|jpeg', pattern => qr|^([mj])|i, - format => q( $1 =~ /^m/ ? "mpeg" : "jpeg" ) + format => q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' ) }, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_DEFAULT_SCALE", - default => "100", + name => 'ZM_WEB_L_DEFAULT_SCALE', + default => '100', description => "What the default scaling factor applied to 'live' or 'event' views is (%)", help => q` Normally ZoneMinder will display 'live' or 'event' streams in @@ -3659,16 +3659,16 @@ our @options = ( is double size etc. `, type => { - db_type => "integer", - hint => "25|33|50|75|100|150|200|300|400", + db_type => 'integer', + hint => '25|33|50|75|100|150|200|300|400', pattern => qr|^(\d+)$|, format => q( $1 ) }, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_DEFAULT_RATE", - default => "100", + name => 'ZM_WEB_L_DEFAULT_RATE', + default => '100', description => "What the default replay rate factor applied to 'event' views is (%)", help => q` Normally ZoneMinder will display 'event' streams at their @@ -3679,15 +3679,15 @@ our @options = ( 100 is normal rate, 200 is double speed etc. `, type => { - db_type => "integer", - hint => "25|50|100|150|200|400|1000|2500|5000|10000", + db_type => 'integer', + hint => '25|50|100|150|200|400|1000|2500|5000|10000', pattern => qr|^(\d+)$|, format=> q( $1 ) }, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_VIDEO_BITRATE", - default => "25000", + name => 'ZM_WEB_L_VIDEO_BITRATE', + default => '25000', description => "What the bitrate of the video encoded stream should be set to", help => q` When encoding real video via the ffmpeg library a bit rate can @@ -3703,11 +3703,11 @@ our @options = ( lower quality. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_VIDEO_MAXFPS", - default => "5", + name => 'ZM_WEB_L_VIDEO_MAXFPS', + default => '5', description => "What the maximum frame rate for streamed video should be", help => q` When using streamed video the main control is the bitrate which @@ -3726,11 +3726,11 @@ our @options = ( be the original divided by a power of 2. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_SCALE_THUMBS", - default => "yes", + name => 'ZM_WEB_L_SCALE_THUMBS', + default => 'yes', description => "Scale thumbnails in events, bandwidth versus cpu in rescaling", help => q` If unset, this option sends the whole image to the browser @@ -3742,11 +3742,11 @@ our @options = ( available in the php-gd package. `, type => $types{boolean}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_EVENTS_VIEW", - default => "events", + name => 'ZM_WEB_L_EVENTS_VIEW', + default => 'events', description => "What the default view of multiple events should be.", help => q` Stored events can be viewed in either an events list format or @@ -3756,16 +3756,16 @@ our @options = ( view is currently being used. `, type => { - db_type => "string", + db_type => 'string', hint => "events|timeline", pattern => qr|^([lt])|i, - format => q( $1 =~ /^e/ ? "events" : "timeline" ) + format => q( $1 =~ /^e/ ? "events' : 'timeline" ) }, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_SHOW_PROGRESS", - default => "no", + name => 'ZM_WEB_L_SHOW_PROGRESS', + default => 'no', description => "Show the progress of replay in event view.", help => q` When viewing events an event navigation panel and progress bar @@ -3780,11 +3780,11 @@ our @options = ( bandwidth prevents it functioning effectively. `, type => $types{boolean}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_WEB_L_AJAX_TIMEOUT", - default => "10000", + name => 'ZM_WEB_L_AJAX_TIMEOUT', + default => '10000', description => "How long to wait for Ajax request responses (ms)", help => q` The newer versions of the live feed and event views use Ajax to @@ -3799,85 +3799,85 @@ our @options = ( milliseconds but if set to zero then no timeout will be used. `, type => $types{integer}, - category => "lowband", + category => 'lowband', }, { - name => "ZM_DYN_LAST_VERSION", - default => "", + name => 'ZM_DYN_LAST_VERSION', + default => '', description => "What the last version of ZoneMinder recorded from zoneminder.com is", - help => "", + help => '', type => $types{string}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_DYN_CURR_VERSION", - default => "@VERSION@", + name => 'ZM_DYN_CURR_VERSION', + default => '@VERSION@', description => q` What the effective current version of ZoneMinder is, might be different from actual if versions ignored `, - help => "", + help => '', type => $types{string}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_DYN_DB_VERSION", - default => "@VERSION@", + name => 'ZM_DYN_DB_VERSION', + default => '@VERSION@', description => "What the version of the database is, from zmupdate", - help => "", + help => '', type => $types{string}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_DYN_LAST_CHECK", - default => "", + name => 'ZM_DYN_LAST_CHECK', + default => '', description => "When the last check for version from zoneminder.com was", - help => "", + help => '', type => $types{integer}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_DYN_NEXT_REMINDER", - default => "", + name => 'ZM_DYN_NEXT_REMINDER', + default => '', description => "When the earliest time to remind about versions will be", - help => "", + help => '', type => $types{string}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_DYN_DONATE_REMINDER_TIME", + name => 'ZM_DYN_DONATE_REMINDER_TIME', default => 0, description => "When the earliest time to remind about donations will be", - help => "", + help => '', type => $types{integer}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_DYN_SHOW_DONATE_REMINDER", - default => "yes", + name => 'ZM_DYN_SHOW_DONATE_REMINDER', + default => 'yes', description => "Remind about donations or not", - help => "", + help => '', type => $types{boolean}, readonly => 1, - category => "dynamic", + category => 'dynamic', }, { - name => "ZM_SSMTP_MAIL", - default => "no", + name => 'ZM_SSMTP_MAIL', + default => 'no', description => q` Use a SSMTP mail server if available. NEW_MAIL_MODULES must be enabled `, requires => [ - { name => "ZM_OPT_EMAIL", value => "yes" }, - { name => "ZM_OPT_MESSAGE", value => "yes" }, - { name => "ZM_NEW_MAIL_MODULES", value => "yes" } + { name => 'ZM_OPT_EMAIL', value => 'yes' }, + { name => 'ZM_OPT_MESSAGE', value => 'yes' }, + { name => 'ZM_NEW_MAIL_MODULES', value => 'yes' } ], help => q` SSMTP is a lightweight and efficient method to send email. @@ -3887,20 +3887,20 @@ our @options = ( for setup and configuration help. `, type => $types{boolean}, - category => "mail", + category => 'mail', }, { - name => "ZM_SSMTP_PATH", - default => "", - description => "SSMTP executable path", - requires => [{ name => "ZM_SSMTP_MAIL", value => "yes" }], + name => 'ZM_SSMTP_PATH', + default => '', + description => 'SSMTP executable path', + requires => [{ name => 'ZM_SSMTP_MAIL', value => 'yes' }], help => q` Recommend setting the path to the SSMTP application. If path is not defined. Zoneminder will try to determine the path via shell command. Example path: /usr/sbin/ssmtp. `, type => $types{string}, - category => "mail", + category => 'mail', }, );