Merge branch 'master' of github.com:ZoneMinder/zoneminder
This commit is contained in:
commit
ae6925fb89
|
@ -0,0 +1,24 @@
|
|||
INSERT IGNORE INTO Manufacturers VALUES (1, 'Acti');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (2, 'Amcrest');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (3, 'Airlink101');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (4, 'Arecont Vision');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (5, 'Axis');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (6, 'Dahua');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (7, 'D-Link');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (8, 'Edimax');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (9, 'Foscam');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (10, 'Gadspot');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (11, 'GrandStream');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (12, 'HikVision');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (13, 'JVC');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (14, 'Maginon');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (15, 'Mobotix');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (16, 'Oncam Grandeye');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (17, 'Panasonic');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (18, 'Pelco');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (19, 'Sony');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (20, 'TP-Link');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (21, 'Trendnet');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (22, 'VisionTek');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (23, 'Vivotek');
|
||||
INSERT IGNORE INTO Manufacturers VALUES (24, 'Wansview');
|
|
@ -0,0 +1,56 @@
|
|||
/* INSERT INTO Manufacturers VALUES (1, 'Acti'); */
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A21');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A23');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A24');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A28');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A31');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A310');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A311');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A32');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A41');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A415');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A416');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A418');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A42');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A421');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A43');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A45');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A46');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A48');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (1, 'A74');
|
||||
/*
|
||||
INSERT INTO Manufacturers VALUES (2, 'Amcrest');
|
||||
*/
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (2, 'IP8M-T2499EW');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (2, 'ASH42-B');
|
||||
/*
|
||||
INSERT INTO Manufacturers VALUES (3, 'Airlink101');
|
||||
INSERT INTO Manufacturers VALUES (4, 'Arecont Vision');
|
||||
INSERT INTO Manufacturers VALUES (5, 'Axis');
|
||||
INSERT INTO Manufacturers VALUES (6, 'Dahua');
|
||||
INSERT INTO Manufacturers VALUES (7, 'D-Link');
|
||||
*/
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (7, 'DCS-930L');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (7, 'DCS-932L');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (7, 'DCS-933L');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (7, 'DCS-942L');
|
||||
INSERT IGNORE INTO Models (ManufacturerId,Name) VALUES (7, 'DCS-5020L');
|
||||
/*
|
||||
INSERT INTO Manufacturers VALUES (8, 'Edimax');
|
||||
INSERT INTO Manufacturers VALUES (9, 'Foscam');
|
||||
INSERT INTO Manufacturers VALUES (10, 'Gadspot');
|
||||
INSERT INTO Manufacturers VALUES (11, 'GrandStream');
|
||||
INSERT INTO Manufacturers VALUES (12, 'HikVision');
|
||||
INSERT INTO Manufacturers VALUES (13, 'JVC');
|
||||
INSERT INTO Manufacturers VALUES (14, 'Maginon');
|
||||
INSERT INTO Manufacturers VALUES (15, 'Mobotix');
|
||||
INSERT INTO Manufacturers VALUES (16, 'Oncam Grandeye');
|
||||
INSERT INTO Manufacturers VALUES (17, 'Panasonic');
|
||||
INSERT INTO Manufacturers VALUES (18, 'Pelco');
|
||||
INSERT INTO Manufacturers VALUES (19, 'Sony');
|
||||
INSERT INTO Manufacturers VALUES (20, 'TP-Link');
|
||||
INSERT INTO Manufacturers VALUES (21, 'Trendnet');
|
||||
INSERT INTO Manufacturers VALUES (22, 'VisionTek');
|
||||
INSERT INTO Manufacturers VALUES (23, 'Vivotek');
|
||||
INSERT INTO Manufacturers VALUES (24, 'Wansview');
|
||||
*/
|
|
@ -412,6 +412,7 @@ CREATE TABLE `Models` (
|
|||
DROP TABLE IF EXISTS `MonitorPresets`;
|
||||
CREATE TABLE `MonitorPresets` (
|
||||
`Id` int(10) unsigned NOT NULL auto_increment,
|
||||
`ModelId` int unsigned, FOREIGN KEY (`ModelId`) REFERENCES `Models` (Id),
|
||||
`Name` varchar(64) NOT NULL default '',
|
||||
`Type` enum('Local','Remote','File','Ffmpeg','Libvlc','cURL','WebSite','NVSocket','VNC') NOT NULL default 'Local',
|
||||
`Device` tinytext,
|
||||
|
@ -447,6 +448,8 @@ CREATE TABLE `Monitors` (
|
|||
`Notes` TEXT,
|
||||
`ServerId` int(10) unsigned,
|
||||
`StorageId` smallint(5) unsigned default 0,
|
||||
`ManufacturerId` int unsigned, FOREIGN KEY (`ManufacturerId`) REFERENCES `Manufacturers` (Id),
|
||||
`ModelId` int unsigned, FOREIGN KEY (`ModelId`) REFERENCES `Models` (Id),
|
||||
`Type` enum('Local','Remote','File','Ffmpeg','Libvlc','cURL','WebSite','NVSocket','VNC') NOT NULL default 'Local',
|
||||
`Function` enum('None','Monitor','Modect','Record','Mocord','Nodect') NOT NULL default 'Monitor',
|
||||
`Enabled` tinyint(3) unsigned NOT NULL default '1',
|
||||
|
@ -971,81 +974,81 @@ INSERT INTO `Controls` VALUES (NULL,'Amcrest HTTP API','Ffmpeg','Amcrest_HTTP',0
|
|||
-- Add some monitor preset values
|
||||
--
|
||||
|
||||
INSERT into MonitorPresets VALUES (NULL,'Amcrest, IP8M-T2499EW 640x480, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp','NULL',554,'rtsp://<username>:<password>@<ip-address>/cam/realmonitor?channel=1&subtype=1',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,'Amcrest, IP8M-T2499EW 3840x2160, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp','NULL',554,'rtsp://<username>:<password>@<ip-address>/cam/realmonitor?channel=1&subtype=0',NULL,3840,2160,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 320x240, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240&req_fps=5',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 640x480, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=5',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 320x240, mpjpeg, B&W','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240&color=0',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP, 640x480, mpjpeg, B&W','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480&color=0',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240',NULL,320,240,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 320x240, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240&req_fps=5',NULL,320,240,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,5.0,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480',NULL,640,480,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 640x480, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=5',NULL,640,480,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis IP PTZ, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,5.0,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,'Axis IP, mpeg4, unicast','Remote','rtsp',0,255,'rtsp','rtpUni','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,'Axis IP, mpeg4, multicast','Remote','rtsp',0,255,'rtsp','rtpMulti','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,'Axis IP, mpeg4, RTP/RTSP','Remote','rtsp',0,255,'rtsp','rtpRtsp','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,'Axis IP, mpeg4, RTP/RTSP/HTTP','Remote',NULL,NULL,NULL,'rtsp','rtpRtspHttp','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'D-link DCS-930L, 640x480, mjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/mjpeg.cgi',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'D-Link DCS-5020L, 640x480, mjpeg','Remote','http',0,0,'http','simple','<username>:<pwd>@<ip-address>','80','/video.cgi',NULL,640,480,0,NULL,1,'34',NULL,'<username>:<pwd>@<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP PTZ, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP PTZ, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP PTZ, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,5.0,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP PTZ, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP PTZ, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Panasonic IP PTZ, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,5.0,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Gadspot IP, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Gadspot IP, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Gadspot IP, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/GetData.cgi',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Gadspot IP, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'IP Webcam by Pavel Khlebovich 1920x1080','Remote','/dev/video<?>','0',255,'http','simple','<ip-address>','8080','/video','',1920,1080,0,NULL,0,'0','','',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'VEO Observer, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Blue Net Video Server, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/cgi-bin/image.cgi?control=0&id=admin&passwd=admin',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,'ACTi IP, mpeg4, unicast','Remote',NULL,NULL,NULL,'rtsp','rtpUni','<ip-address>',7070,'','/track',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://<host/address>/axis-media/media.amp?videocodec=h264',NULL,NULL,NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Vivotek FFMPEG','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://<host/address>:554/live.sdp',NULL,NULL,NULL,352,240,NULL,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Axis FFMPEG','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://<host/address>/axis-media/media.amp',NULL,NULL,NULL,640,480,NULL,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'ACTi TCM FFMPEG','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://admin:123456@<host/address>:7070',NULL,NULL,NULL,320,240,NULL,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), PAL, 320x240','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), PAL, 320x240, max 5 FPS','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), PAL, 640x480','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), PAL, 640x480, max 5 FPS','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), NTSC, 320x240','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), NTSC, 320x240, max 5 FPS','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), NTSC, 640x480','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L2), NTSC, 640x480, max 5 FPS','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), PAL, 320x240','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), PAL, 320x240, max 5 FPS','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), PAL, 640x480','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), PAL, 640x480, max 5 FPS','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), NTSC, 320x240','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), NTSC, 320x240, max 5 FPS','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), NTSC, 640x480','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'BTTV Video (V4L1), NTSC, 640x480, max 5 FPS','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Remote ZoneMinder','Remote',NULL,NULL,NULL,'http','simple','<ip-address>',80,'/cgi-bin/nph-zms?mode=jpeg&monitor=<monitor-id>&scale=100&maxfps=5&buffer=0',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Foscam FI8620 FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,'','','','rtsp://<username>:<pwd>@<ip-address>:554/11',NULL,704,576,0,NULL,1,'10','<admin_pwd>','<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Foscam FI8608W FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,'','','','rtsp://<username>:<pwd>@<ip-address>:554/11',NULL,640,480,0,NULL,1,'11','<admin_pwd>','<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Foscam FI9821W FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,'','','','rtsp://<username>:<pwd>@<ip-address>:88/videoMain',NULL,1280,720,0,NULL,1,'12','<admin_pwd>','<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Loftek Sentinel PTZ, 640x480, mjpeg','Remote','http',0,0,NULL,NULL,'<ip-address>','80','/videostream.cgi?user=<username>&pwd=<password>&resolution=32&rate=11',NULL,640,480,4,NULL,1,'13','','<username>:<pwd>@<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Airlink 777W PTZ, 640x480, mjpeg','Remote','http',0,0,NULL,NULL,'<username>:<password>@<ip-address>','80','/cgi/mjpg/mjpg.cgi',NULL,640,480,4,NULL,1,'7','','<username>:<pwd>@<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'SunEyes SP-P1802SWPTZ','Libvlc','/dev/video<?>','0',255,'','rtpMulti','','80','rtsp://<ip-address>:554/11','',1920,1080,0,0.00,1,'16','-speed=64','<ip-address>:<port>',100,33);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Qihan IP, 1280x720, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp',NULL,554,'rtsp://<ip-address>/tcp_live/ch0_0',NULL,1280,720,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,'Qihan IP, 1920x1080, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp',NULL,554,'rtsp://<ip-address>/tcp_live/ch0_0',NULL,1920,1080,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,NULL,'Amcrest, IP8M-T2499EW 640x480, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp','NULL',554,'rtsp://<username>:<password>@<ip-address>/cam/realmonitor?channel=1&subtype=1',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,NULL,'Amcrest, IP8M-T2499EW 3840x2160, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp','NULL',554,'rtsp://<username>:<password>@<ip-address>/cam/realmonitor?channel=1&subtype=0',NULL,3840,2160,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 320x240, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240&req_fps=5',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 640x480, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=5',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 320x240, mpjpeg, B&W','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240&color=0',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP, 640x480, mpjpeg, B&W','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480&color=0',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240',NULL,320,240,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 320x240, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=320x240&req_fps=5',NULL,320,240,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=320x240',NULL,320,240,3,5.0,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480',NULL,640,480,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 640x480, mpjpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=5',NULL,640,480,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,NULL,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis IP PTZ, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/axis-cgi/jpg/image.cgi?resolution=640x480',NULL,640,480,3,5.0,1,4,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,NULL,'Axis IP, mpeg4, unicast','Remote','rtsp',0,255,'rtsp','rtpUni','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,NULL,'Axis IP, mpeg4, multicast','Remote','rtsp',0,255,'rtsp','rtpMulti','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,NULL,'Axis IP, mpeg4, RTP/RTSP','Remote','rtsp',0,255,'rtsp','rtpRtsp','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,NULL,'Axis IP, mpeg4, RTP/RTSP/HTTP','Remote',NULL,NULL,NULL,'rtsp','rtpRtspHttp','<ip-address>',554,'/mpeg4/media.amp','/trackID=',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'D-link DCS-930L, 640x480, mjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/mjpeg.cgi',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'D-Link DCS-5020L, 640x480, mjpeg','Remote','http',0,0,'http','simple','<username>:<pwd>@<ip-address>','80','/video.cgi',NULL,640,480,0,NULL,1,'34',NULL,'<username>:<pwd>@<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP PTZ, 320x240, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP PTZ, 320x240, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP PTZ, 320x240, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=320x240&Quality=Standard',NULL,320,240,3,5.0,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP PTZ, 640x480, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/nphMotionJpeg?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP PTZ, 640x480, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,NULL,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Panasonic IP PTZ, 640x480, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/SnapshotJPEG?Resolution=640x480&Quality=Standard',NULL,640,480,3,5.0,1,5,NULL,'<ip-address>:<port>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Gadspot IP, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Gadspot IP, jpeg, max 5 FPS','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Gadspot IP, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/GetData.cgi',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Gadspot IP, mpjpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'IP Webcam by Pavel Khlebovich 1920x1080','Remote','/dev/video<?>','0',255,'http','simple','<ip-address>','8080','/video','',1920,1080,0,NULL,0,'0','','',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'VEO Observer, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/Jpeg/CamImg.jpg',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Blue Net Video Server, jpeg','Remote','http',0,0,'http','simple','<ip-address>',80,'/cgi-bin/image.cgi?control=0&id=admin&passwd=admin',NULL,320,240,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT into MonitorPresets VALUES (NULL,NULL,'ACTi IP, mpeg4, unicast','Remote',NULL,NULL,NULL,'rtsp','rtpUni','<ip-address>',7070,'','/track',NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://<host/address>/axis-media/media.amp?videocodec=h264',NULL,NULL,NULL,640,480,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Vivotek FFMPEG','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://<host/address>:554/live.sdp',NULL,NULL,NULL,352,240,NULL,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Axis FFMPEG','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://<host/address>/axis-media/media.amp',NULL,NULL,NULL,640,480,NULL,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'ACTi TCM FFMPEG','Ffmpeg',NULL,NULL,NULL,NULL,NULL,'rtsp://admin:123456@<host/address>:7070',NULL,NULL,NULL,320,240,NULL,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), PAL, 320x240','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), PAL, 320x240, max 5 FPS','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), PAL, 640x480','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), PAL, 640x480, max 5 FPS','Local','/dev/video<?>',0,255,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), NTSC, 320x240','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), NTSC, 320x240, max 5 FPS','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,320,240,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), NTSC, 640x480','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L2), NTSC, 640x480, max 5 FPS','Local','/dev/video<?>',0,45056,NULL,'v4l2',NULL,NULL,NULL,NULL,640,480,1345466932,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), PAL, 320x240','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), PAL, 320x240, max 5 FPS','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), PAL, 640x480','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), PAL, 640x480, max 5 FPS','Local','/dev/video<?>',0,0,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), NTSC, 320x240','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), NTSC, 320x240, max 5 FPS','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,320,240,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), NTSC, 640x480','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'BTTV Video (V4L1), NTSC, 640x480, max 5 FPS','Local','/dev/video<?>',0,1,NULL,'v4l1',NULL,NULL,NULL,NULL,640,480,13,5.0,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Remote ZoneMinder','Remote',NULL,NULL,NULL,'http','simple','<ip-address>',80,'/cgi-bin/nph-zms?mode=jpeg&monitor=<monitor-id>&scale=100&maxfps=5&buffer=0',NULL,NULL,NULL,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Foscam FI8620 FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,'','','','rtsp://<username>:<pwd>@<ip-address>:554/11',NULL,704,576,0,NULL,1,'10','<admin_pwd>','<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Foscam FI8608W FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,'','','','rtsp://<username>:<pwd>@<ip-address>:554/11',NULL,640,480,0,NULL,1,'11','<admin_pwd>','<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Foscam FI9821W FFMPEG H.264','Ffmpeg',NULL,NULL,NULL,NULL,'','','','rtsp://<username>:<pwd>@<ip-address>:88/videoMain',NULL,1280,720,0,NULL,1,'12','<admin_pwd>','<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Loftek Sentinel PTZ, 640x480, mjpeg','Remote','http',0,0,NULL,NULL,'<ip-address>','80','/videostream.cgi?user=<username>&pwd=<password>&resolution=32&rate=11',NULL,640,480,4,NULL,1,'13','','<username>:<pwd>@<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Airlink 777W PTZ, 640x480, mjpeg','Remote','http',0,0,NULL,NULL,'<username>:<password>@<ip-address>','80','/cgi/mjpg/mjpg.cgi',NULL,640,480,4,NULL,1,'7','','<username>:<pwd>@<ip-address>',100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'SunEyes SP-P1802SWPTZ','Libvlc','/dev/video<?>','0',255,'','rtpMulti','','80','rtsp://<ip-address>:554/11','',1920,1080,0,0.00,1,'16','-speed=64','<ip-address>:<port>',100,33);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Qihan IP, 1280x720, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp',NULL,554,'rtsp://<ip-address>/tcp_live/ch0_0',NULL,1280,720,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
INSERT INTO MonitorPresets VALUES (NULL,NULL,'Qihan IP, 1920x1080, RTP/RTSP','Ffmpeg','rtsp',0,255,'rtsp','rtpRtsp',NULL,554,'rtsp://<ip-address>/tcp_live/ch0_0',NULL,1920,1080,3,NULL,0,NULL,NULL,NULL,100,100);
|
||||
|
||||
--
|
||||
-- Add some zone preset values
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ManufacturerId'
|
||||
) > 0,
|
||||
"SELECT 'Column ManufacturerId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD `ManufacturerId` int(10) unsigned AFTER `StorageId`"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ManufacturerId'
|
||||
) > 0,
|
||||
"SELECT 'FOREIGN KEY for ManufacturerId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD FOREIGN KEY (`ManufacturerId`) REFERENCES `Manufacturers` (Id)"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ModelId'
|
||||
) > 0,
|
||||
"SELECT 'Column ModelId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD `ModelId` int(10) unsigned AFTER `ManufacturerId`"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ModelId'
|
||||
) > 0,
|
||||
"SELECT 'FOREIGN KEY for ModelId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD FOREIGN KEY (`ModelId`) REFERENCES `Models` (Id)"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
|
@ -0,0 +1,73 @@
|
|||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ManufacturerId'
|
||||
) > 0,
|
||||
"SELECT 'Column ManufacturerId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD `ManufacturerId` int(10) unsigned AFTER `StorageId`"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ManufacturerId'
|
||||
) > 0,
|
||||
"SELECT 'FOREIGN KEY for ManufacturerId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD FOREIGN KEY (`ManufacturerId`) REFERENCES `Manufacturers` (Id)"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ModelId'
|
||||
) > 0,
|
||||
"SELECT 'Column ModelId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD `ModelId` int(10) unsigned AFTER `ManufacturerId`"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_schema = DATABASE()
|
||||
AND table_name = 'Monitors'
|
||||
AND column_name = 'ModelId'
|
||||
) > 0,
|
||||
"SELECT 'FOREIGN KEY for ModelId already exists in Monitors'",
|
||||
"ALTER TABLE `Monitors` ADD FOREIGN KEY (`ModelId`) REFERENCES `Models` (Id)"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE()
|
||||
AND table_name = 'MonitorPresets'
|
||||
AND column_name = 'ModelId'
|
||||
) > 0,
|
||||
"SELECT 'Column ModelId already exists in MonitorPresets'",
|
||||
"ALTER TABLE `MonitorPresets` ADD `ModelId` int(10) unsigned AFTER `Id`"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
SET @s = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_schema = DATABASE()
|
||||
AND table_name = 'MonitorPresets'
|
||||
AND column_name = 'ModelId'
|
||||
) > 0,
|
||||
"SELECT 'FOREIGN KEY for ModelId already exists in MonitorPresets'",
|
||||
"ALTER TABLE `MonitorPresets` ADD FOREIGN KEY (`ModelId`) REFERENCES `Models` (Id)"
|
||||
));
|
||||
|
||||
PREPARE stmt FROM @s;
|
||||
EXECUTE stmt;
|
||||
|
||||
UPDATE `MonitorPresets` SET `ModelId`=(SELECT `Id` FROM `Models` WHERE `Name`='IP8M-T2499EW') WHERE `Name` like 'Amcrest, IP8M-T2499EW
|
||||
%';
|
|
@ -36,7 +36,7 @@
|
|||
%global _hardened_build 1
|
||||
|
||||
Name: zoneminder
|
||||
Version: 1.37.1
|
||||
Version: 1.37.3
|
||||
Release: 1%{?dist}
|
||||
Summary: A camera monitoring and analysis tool
|
||||
Group: System Environment/Daemons
|
||||
|
|
|
@ -263,7 +263,10 @@ sub countQuery {
|
|||
sub getMonitorRef {
|
||||
my $dbh = shift;
|
||||
|
||||
my $sql = 'SELECT `Id`,`Name`,`Type`,`Function`,`Width`,`Height`,`Colours`,`MaxFPS`,`AlarmMaxFPS` FROM `Monitors`';
|
||||
my $sql = 'SELECT `Id`,`Name`,`Type`,`Function`,`Width`,`Height`,`Colours`,`MaxFPS`,`AlarmMaxFPS`,
|
||||
(SELECT Name FROM Manufacturers WHERE Manufacturers.Id = ManufacturerId),
|
||||
(SELECT Name FROM Models WHERE Models.Id = ModelId)
|
||||
FROM `Monitors`';
|
||||
my $sth = $dbh->prepare_cached( $sql ) or die( "Can't prepare '$sql': ".$dbh->errstr() );
|
||||
my $res = $sth->execute() or die( "Can't execute: ".$sth->errstr() );
|
||||
my $arrayref = $sth->fetchall_arrayref({});
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
// At the moment this can only return the list of available models given the manufacturer id
|
||||
|
||||
$message = '';
|
||||
|
||||
//
|
||||
// INITIALIZE AND CHECK SANITY
|
||||
//
|
||||
|
||||
if (!canView('Monitors')) {
|
||||
$message = 'Insufficient permissions to view model entries for user '.$user['Username'];
|
||||
} else if (!isset($_REQUEST['ManufacturerId'])) {
|
||||
$message = 'This request requires a ManufacturerId to be set';
|
||||
}
|
||||
|
||||
if ($message) {
|
||||
ajaxError($message);
|
||||
return;
|
||||
}
|
||||
|
||||
require_once('includes/Model.php');
|
||||
$models = ZM\Model::find(array('ManufacturerId'=>$_REQUEST['ManufacturerId']), array('order'=>'lower(Name)'));
|
||||
ajaxResponse(array('models'=>$models));
|
||||
?>
|
|
@ -23,8 +23,6 @@
|
|||
/**
|
||||
* Load the API / REST routes
|
||||
*/
|
||||
/* Add new API to retrieve camera controls - for PTZ */
|
||||
/* refer to https://github.com/ZoneMinder/ZoneMinder/issues/799#issuecomment-105233112 */
|
||||
Router::mapResources('configs');
|
||||
Router::mapResources('controls');
|
||||
Router::mapResources('events');
|
||||
|
@ -32,7 +30,11 @@
|
|||
Router::mapResources('groups');
|
||||
Router::mapResources('host');
|
||||
Router::mapResources('logs');
|
||||
Router::mapResources('manufacturers');
|
||||
Router::mapResources('models');
|
||||
Router::mapResources('cameramodels');
|
||||
Router::mapResources('monitors');
|
||||
Router::mapResources('servers');
|
||||
Router::mapResources('states');
|
||||
Router::mapResources('users');
|
||||
Router::mapResources('zonepresets');
|
||||
|
|
|
@ -0,0 +1,156 @@
|
|||
<?php
|
||||
App::uses('AppController', 'Controller');
|
||||
/**
|
||||
* Models Controller
|
||||
*
|
||||
* @property Model $Model
|
||||
* @property PaginatorComponent $Paginator
|
||||
*/
|
||||
class CameraModelsController extends AppController {
|
||||
|
||||
/**
|
||||
* Components
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $components = array('Paginator', 'RequestHandler');
|
||||
|
||||
public function beforeFilter() {
|
||||
parent::beforeFilter();
|
||||
/*
|
||||
* A user needs the model data to calculate how to view a monitor, and there really isn't anything sensitive in this data.
|
||||
* So it has been decided for now to just let everyone read it.
|
||||
|
||||
global $user;
|
||||
$canView = (!$user) || ($user['System'] != 'None');
|
||||
if ( !$canView ) {
|
||||
throw new UnauthorizedException(__('Insufficient Privileges'));
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* index method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function index() {
|
||||
$this->CameraModel->recursive = 0;
|
||||
|
||||
$options = '';
|
||||
$models = $this->CameraModel->find('all', $options);
|
||||
$this->set(array(
|
||||
'models' => $models,
|
||||
'_serialize' => array('models')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* view method
|
||||
*
|
||||
* @throws NotFoundException
|
||||
* @param string $id
|
||||
* @return void
|
||||
*/
|
||||
public function view($id = null) {
|
||||
$this->CameraModel->recursive = 0;
|
||||
if ( !$this->CameraModel->exists($id) ) {
|
||||
throw new NotFoundException(__('Invalid model'));
|
||||
}
|
||||
$restricted = '';
|
||||
|
||||
$options = array('conditions' => array(
|
||||
array('CameraModel.'.$this->CameraModel->primaryKey => $id),
|
||||
$restricted
|
||||
)
|
||||
);
|
||||
$model = $this->CameraModel->find('first', $options);
|
||||
$this->set(array(
|
||||
'model' => $model,
|
||||
'_serialize' => array('model')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* add method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add() {
|
||||
if ($this->request->is('post')) {
|
||||
|
||||
global $user;
|
||||
$canEdit = (!$user) || ($user['System'] == 'Edit');
|
||||
if (!$canEdit) {
|
||||
throw new UnauthorizedException(__('Insufficient privileges'));
|
||||
return;
|
||||
}
|
||||
|
||||
$this->CameraModel->create();
|
||||
if ($this->CameraModel->save($this->request->data)) {
|
||||
return $this->flash(__('The model has been saved.'), array('action' => 'index'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* edit method
|
||||
*
|
||||
* @throws NotFoundException
|
||||
* @param string $id
|
||||
* @return void
|
||||
*/
|
||||
public function edit($id = null) {
|
||||
$this->CameraModel->id = $id;
|
||||
|
||||
global $user;
|
||||
$canEdit = (!$user) || ($user['System'] == 'Edit');
|
||||
if (!$canEdit) {
|
||||
throw new UnauthorizedException(__('Insufficient privileges'));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->CameraModel->exists($id)) {
|
||||
throw new NotFoundException(__('Invalid model'));
|
||||
}
|
||||
if ($this->CameraModel->save($this->request->data)) {
|
||||
$message = 'Saved';
|
||||
} else {
|
||||
$message = 'Error';
|
||||
}
|
||||
|
||||
$this->set(array(
|
||||
'message' => $message,
|
||||
'_serialize' => array('message')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* delete method
|
||||
*
|
||||
* @throws NotFoundException
|
||||
* @param string $id
|
||||
* @return void
|
||||
*/
|
||||
public function delete($id = null) {
|
||||
global $user;
|
||||
$canEdit = (!$user) || ($user['System'] == 'Edit');
|
||||
if (!$canEdit) {
|
||||
throw new UnauthorizedException(__('Insufficient privileges'));
|
||||
return;
|
||||
}
|
||||
|
||||
$this->CameraModel->id = $id;
|
||||
if (!$this->CameraModel->exists()) {
|
||||
throw new NotFoundException(__('Invalid model'));
|
||||
}
|
||||
$this->request->allowMethod('post', 'delete');
|
||||
|
||||
if ($this->CameraModel->delete()) {
|
||||
return $this->flash(__('The model has been deleted.'), array('action' => 'index'));
|
||||
} else {
|
||||
return $this->flash(__('The model could not be deleted. Please, try again.'), array('action' => 'index'));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,162 @@
|
|||
<?php
|
||||
App::uses('AppController', 'Controller');
|
||||
/**
|
||||
* Manufacturers Controller
|
||||
*
|
||||
* @property Manufacturer $Manufacturer
|
||||
* @property PaginatorComponent $Paginator
|
||||
*/
|
||||
class ManufacturersController extends AppController {
|
||||
|
||||
/**
|
||||
* Components
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $components = array('Paginator', 'RequestHandler');
|
||||
|
||||
public function beforeFilter() {
|
||||
parent::beforeFilter();
|
||||
/*
|
||||
* A user needs the manufacturer data to calculate how to view a monitor, and there really isn't anything sensitive in this data.
|
||||
* So it has been decided for now to just let everyone read it.
|
||||
|
||||
global $user;
|
||||
$canView = (!$user) || ($user['System'] != 'None');
|
||||
if ( !$canView ) {
|
||||
throw new UnauthorizedException(__('Insufficient Privileges'));
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* index method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function index() {
|
||||
$this->Manufacturer->recursive = 0;
|
||||
|
||||
$options = '';
|
||||
$manufacturers = $this->Manufacturer->find('all', $options);
|
||||
$this->set(array(
|
||||
'manufacturers' => $manufacturers,
|
||||
'_serialize' => array('manufacturers')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* view method
|
||||
*
|
||||
* @throws NotFoundException
|
||||
* @param string $id
|
||||
* @return void
|
||||
*/
|
||||
public function view($id = null) {
|
||||
$this->Manufacturer->recursive = 0;
|
||||
if ( !$this->Manufacturer->exists($id) ) {
|
||||
throw new NotFoundException(__('Invalid manufacturer'));
|
||||
}
|
||||
$restricted = '';
|
||||
|
||||
$options = array('conditions' => array(
|
||||
array('Manufacturer.'.$this->Manufacturer->primaryKey => $id),
|
||||
$restricted
|
||||
)
|
||||
);
|
||||
$manufacturer = $this->Manufacturer->find('first', $options);
|
||||
$this->set(array(
|
||||
'manufacturer' => $manufacturer,
|
||||
'_serialize' => array('manufacturer')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* add method
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add() {
|
||||
if ( $this->request->is('post') ) {
|
||||
|
||||
global $user;
|
||||
$canEdit = (!$user) || ($user['System'] == 'Edit');
|
||||
if ( !$canEdit ) {
|
||||
throw new UnauthorizedException(__('Insufficient privileges'));
|
||||
return;
|
||||
}
|
||||
|
||||
$this->Manufacturer->create();
|
||||
if ( $this->Manufacturer->save($this->request->data) ) {
|
||||
# Might be nice to send it a start request
|
||||
#$this->daemonControl($this->Manufacturer->id, 'start', $this->request->data);
|
||||
return $this->flash(__('The manufacturer has been saved.'), array('action' => 'index'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* edit method
|
||||
*
|
||||
* @throws NotFoundException
|
||||
* @param string $id
|
||||
* @return void
|
||||
*/
|
||||
public function edit($id = null) {
|
||||
$this->Manufacturer->id = $id;
|
||||
|
||||
global $user;
|
||||
$canEdit = (!$user) || ($user['System'] == 'Edit');
|
||||
if ( !$canEdit ) {
|
||||
throw new UnauthorizedException(__('Insufficient privileges'));
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !$this->Manufacturer->exists($id) ) {
|
||||
throw new NotFoundException(__('Invalid manufacturer'));
|
||||
}
|
||||
if ( $this->Manufacturer->save($this->request->data) ) {
|
||||
$message = 'Saved';
|
||||
} else {
|
||||
$message = 'Error';
|
||||
}
|
||||
|
||||
$this->set(array(
|
||||
'message' => $message,
|
||||
'_serialize' => array('message')
|
||||
));
|
||||
// - restart this manufacturer after change
|
||||
#$this->daemonControl($this->Manufacturer->id, 'restart', $this->request->data);
|
||||
}
|
||||
|
||||
/**
|
||||
* delete method
|
||||
*
|
||||
* @throws NotFoundException
|
||||
* @param string $id
|
||||
* @return void
|
||||
*/
|
||||
public function delete($id = null) {
|
||||
global $user;
|
||||
$canEdit = (!$user) || ($user['System'] == 'Edit');
|
||||
if ( !$canEdit ) {
|
||||
throw new UnauthorizedException(__('Insufficient privileges'));
|
||||
return;
|
||||
}
|
||||
|
||||
$this->Manufacturer->id = $id;
|
||||
if ( !$this->Manufacturer->exists() ) {
|
||||
throw new NotFoundException(__('Invalid manufacturer'));
|
||||
}
|
||||
$this->request->allowMethod('post', 'delete');
|
||||
|
||||
#$this->daemonControl($this->Manufacturer->id, 'stop');
|
||||
|
||||
if ( $this->Manufacturer->delete() ) {
|
||||
return $this->flash(__('The manufacturer has been deleted.'), array('action' => 'index'));
|
||||
} else {
|
||||
return $this->flash(__('The manufacturer could not be deleted. Please, try again.'), array('action' => 'index'));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -89,8 +89,6 @@ class ServersController extends AppController {
|
|||
|
||||
$this->Server->create();
|
||||
if ( $this->Server->save($this->request->data) ) {
|
||||
# Might be nice to send it a start request
|
||||
#$this->daemonControl($this->Server->id, 'start', $this->request->data);
|
||||
return $this->flash(__('The server has been saved.'), array('action' => 'index'));
|
||||
}
|
||||
}
|
||||
|
@ -126,8 +124,6 @@ class ServersController extends AppController {
|
|||
'message' => $message,
|
||||
'_serialize' => array('message')
|
||||
));
|
||||
// - restart this server after change
|
||||
#$this->daemonControl($this->Server->id, 'restart', $this->request->data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -151,8 +147,6 @@ class ServersController extends AppController {
|
|||
}
|
||||
$this->request->allowMethod('post', 'delete');
|
||||
|
||||
#$this->daemonControl($this->Server->id, 'stop');
|
||||
|
||||
if ( $this->Server->delete() ) {
|
||||
return $this->flash(__('The server has been deleted.'), array('action' => 'index'));
|
||||
} else {
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
App::uses('AppModel', 'CameraModel');
|
||||
/**
|
||||
* Model CameraModel
|
||||
*
|
||||
* @property Name $Name
|
||||
* @property ManufacturerId $ManufacturerId
|
||||
*/
|
||||
class CameraModel extends AppModel {
|
||||
|
||||
/**
|
||||
* Use table
|
||||
*
|
||||
* @var mixed False or table name
|
||||
*/
|
||||
public $useTable = 'Models';
|
||||
|
||||
/**
|
||||
* Primary key field
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $primaryKey = 'Id';
|
||||
|
||||
/**
|
||||
* Display field
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $displayField = 'Name';
|
||||
|
||||
public $recursive = -1;
|
||||
|
||||
/**
|
||||
* Validation rules
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $validate = array(
|
||||
'Name' => array(
|
||||
'notBlank' => array(
|
||||
'rule' => array('notBlank'))),
|
||||
'Id' => array(
|
||||
'numeric' => array(
|
||||
'rule' => array('numeric'),
|
||||
//'message' => 'Your custom message here',
|
||||
//'allowEmpty' => false,
|
||||
//'required' => false,
|
||||
//'last' => false, // Stop validation after this rule
|
||||
//'on' => 'create', // Limit validation to 'create' or 'update' operations
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
//The Associations below have been created with all possible keys, those that are not needed can be removed
|
||||
|
||||
/**
|
||||
* hasMany associations
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $hasOne = array(
|
||||
'Manufacturer' => array(
|
||||
'className' => 'Manufacturer',
|
||||
'joinTable' => 'Manufacturers',
|
||||
'foreignKey' => 'Id',
|
||||
),
|
||||
);
|
||||
//var $actsAs = array( 'Containable' );
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
App::uses('AppModel', 'Model');
|
||||
/**
|
||||
* Manufacturer Model
|
||||
*
|
||||
* @property Event $Event
|
||||
* @property Zone $Zone
|
||||
*/
|
||||
class Manufacturer extends AppModel {
|
||||
|
||||
/**
|
||||
* Use table
|
||||
*
|
||||
* @var mixed False or table name
|
||||
*/
|
||||
public $useTable = 'Manufacturers';
|
||||
|
||||
/**
|
||||
* Primary key field
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $primaryKey = 'Id';
|
||||
|
||||
/**
|
||||
* Display field
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $displayField = 'Name';
|
||||
|
||||
public $recursive = -1;
|
||||
|
||||
/**
|
||||
* Validation rules
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $validate = array(
|
||||
'Id' => array(
|
||||
'numeric' => array(
|
||||
'rule' => array('numeric'),
|
||||
//'message' => 'Your custom message here',
|
||||
//'allowEmpty' => false,
|
||||
//'required' => false,
|
||||
//'last' => false, // Stop validation after this rule
|
||||
//'on' => 'create', // Limit validation to 'create' or 'update' operations
|
||||
),
|
||||
),
|
||||
'Name' => array(
|
||||
'notBlank' => array(
|
||||
'rule' => array('notBlank'))),
|
||||
);
|
||||
|
||||
//The Associations below have been created with all possible keys, those that are not needed can be removed
|
||||
|
||||
/**
|
||||
* hasMany associations
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $hasMany = array(
|
||||
'Model' => array(
|
||||
'className' => 'Model',
|
||||
'foreignKey' => 'ManufacturerId',
|
||||
'dependent' => false,
|
||||
'conditions' => '',
|
||||
'fields' => '',
|
||||
'order' => '',
|
||||
'limit' => '',
|
||||
'offset' => '',
|
||||
'exclusive' => '',
|
||||
'finderQuery' => '',
|
||||
'counterQuery' => ''
|
||||
)
|
||||
);
|
||||
}
|
|
@ -139,6 +139,16 @@ class Monitor extends AppModel {
|
|||
'className' => 'Event_Summary',
|
||||
'foreignKey' => 'MonitorId',
|
||||
'joinTable' => 'Event_Summaries',
|
||||
),
|
||||
'Manufacturer' => array(
|
||||
'className' => 'Manufacturer',
|
||||
'foreignKey' => 'Id',
|
||||
'joinTable' => 'Manufacturers',
|
||||
),
|
||||
'CameraModel' => array(
|
||||
'className' => 'CameraModel',
|
||||
'foreignKey' => 'Id',
|
||||
'joinTable' => 'Models',
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
echo json_encode($message);
|
||||
echo json_encode($manufacturer);
|
|
@ -0,0 +1 @@
|
|||
echo json_encode($manufacturers);
|
|
@ -0,0 +1 @@
|
|||
echo json_encode($manufacturer);
|
|
@ -0,0 +1,2 @@
|
|||
$xml = Xml::fromArray(array('response' => $message));
|
||||
echo $xml->asXML();
|
|
@ -0,0 +1,2 @@
|
|||
$xml = Xml::fromArray(array('response' => $servers));
|
||||
echo $xml->asXML();
|
|
@ -0,0 +1,2 @@
|
|||
$xml = Xml::fromArray(array('response' => $server));
|
||||
echo $xml->asXML();
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
namespace ZM;
|
||||
require_once('database.php');
|
||||
require_once('Object.php');
|
||||
|
||||
|
||||
class Manufacturer extends ZM_Object {
|
||||
protected static $table = 'Manufacturers';
|
||||
|
||||
protected $defaults = array(
|
||||
'Id' => null,
|
||||
'Name' => '',
|
||||
);
|
||||
|
||||
public static function find( $parameters = array(), $options = array() ) {
|
||||
return ZM_Object::_find(get_class(), $parameters, $options);
|
||||
}
|
||||
|
||||
public static function find_one( $parameters = array(), $options = array() ) {
|
||||
return ZM_Object::_find_one(get_class(), $parameters, $options);
|
||||
}
|
||||
} # end class Manufacturer
|
||||
?>
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
namespace ZM;
|
||||
require_once('database.php');
|
||||
require_once('Object.php');
|
||||
|
||||
class Model extends ZM_Object {
|
||||
protected static $table = 'Models';
|
||||
|
||||
protected $defaults = array(
|
||||
'Id' => null,
|
||||
'Name' => '',
|
||||
'ManufacturerId' => null,
|
||||
);
|
||||
|
||||
public static function find( $parameters = array(), $options = array() ) {
|
||||
return ZM_Object::_find(get_class(), $parameters, $options);
|
||||
}
|
||||
|
||||
public static function find_one( $parameters = array(), $options = array() ) {
|
||||
return ZM_Object::_find_one(get_class(), $parameters, $options);
|
||||
}
|
||||
} # end class Model
|
||||
?>
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
namespace ZM;
|
||||
require_once('database.php');
|
||||
require_once('Server.php');
|
||||
require_once('Object.php');
|
||||
require_once('Control.php');
|
||||
require_once('Storage.php');
|
||||
require_once('Group.php');
|
||||
require_once('Manufacturer.php');
|
||||
require_once('Model.php');
|
||||
require_once('Server.php');
|
||||
require_once('Storage.php');
|
||||
|
||||
$FunctionTypes = null;
|
||||
|
||||
|
@ -47,6 +49,8 @@ class Monitor extends ZM_Object {
|
|||
'Notes' => '',
|
||||
'ServerId' => 0,
|
||||
'StorageId' => 0,
|
||||
'ManufacturerId' => null,
|
||||
'ModelId' => null,
|
||||
'Type' => 'Ffmpeg',
|
||||
'Function' => 'Mocord',
|
||||
'Enabled' => array('type'=>'boolean','default'=>1),
|
||||
|
@ -686,5 +690,29 @@ class Monitor extends ZM_Object {
|
|||
function DisableAlarms() {
|
||||
$output = $this->AlarmCommand('disable');
|
||||
}
|
||||
function Model() {
|
||||
if (!property_exists($this, 'Model')) {
|
||||
if ($this->{'ModelId'}) {
|
||||
$this->{'Model'} = Model::find_one(array('Id'=>$this->ModelId()));
|
||||
if (!$this->{'Model'})
|
||||
$this->{'Model'} = new Model();
|
||||
} else {
|
||||
$this->{'Model'} = new Model();
|
||||
}
|
||||
}
|
||||
return $this->{'Model'};
|
||||
}
|
||||
function Manufacturer() {
|
||||
if (!property_exists($this, 'Manufacturer')) {
|
||||
if ($this->{'ManufacturerId'}) {
|
||||
$this->{'Manufacturer'} = Manufacturer::find_one(array('Id'=>$this->ManufacturerId()));
|
||||
if (!$this->{'Manufacturer'})
|
||||
$this->{'Manufacturer'} = new Manufacturer();
|
||||
} else {
|
||||
$this->{'Manufacturer'} = new Manufacturer();
|
||||
}
|
||||
}
|
||||
return $this->{'Manufacturer'};
|
||||
}
|
||||
} // end class Monitor
|
||||
?>
|
||||
|
|
|
@ -28,7 +28,7 @@ class ZM_Object {
|
|||
$this->{$k} = $v;
|
||||
}
|
||||
global $object_cache;
|
||||
if ( ! isset($object_cache[$class]) ) {
|
||||
if (!isset($object_cache[$class])) {
|
||||
$object_cache[$class] = array();
|
||||
}
|
||||
$cache = &$object_cache[$class];
|
||||
|
@ -103,13 +103,13 @@ class ZM_Object {
|
|||
}
|
||||
$sql .= implode(' AND ', $fields );
|
||||
}
|
||||
if ( $options ) {
|
||||
if ( isset($options['order']) ) {
|
||||
$sql .= ' ORDER BY ' . $options['order'];
|
||||
if ($options) {
|
||||
if (isset($options['order'])) {
|
||||
$sql .= ' ORDER BY '.$options['order'];
|
||||
}
|
||||
if ( isset($options['limit']) ) {
|
||||
if ( is_integer($options['limit']) or ctype_digit($options['limit']) ) {
|
||||
$sql .= ' LIMIT ' . $options['limit'];
|
||||
if (isset($options['limit'])) {
|
||||
if (is_integer($options['limit']) or ctype_digit($options['limit'])) {
|
||||
$sql .= ' LIMIT '.$options['limit'];
|
||||
} else {
|
||||
$backTrace = debug_backtrace();
|
||||
Error('Invalid value for limit('.$options['limit'].') passed to '.get_class()."::find from ".print_r($backTrace,true));
|
||||
|
@ -119,8 +119,8 @@ class ZM_Object {
|
|||
}
|
||||
$rows = dbFetchAll($sql, NULL, $values);
|
||||
$results = array();
|
||||
if ( $rows ) {
|
||||
foreach ( $rows as $row ) {
|
||||
if ($rows) {
|
||||
foreach ($rows as $row) {
|
||||
array_push($results , new $class($row));
|
||||
}
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ class ZM_Object {
|
|||
|
||||
public static function _find_one($class, $parameters = array(), $options = array() ) {
|
||||
global $object_cache;
|
||||
if ( ! isset($object_cache[$class]) ) {
|
||||
if (!isset($object_cache[$class])) {
|
||||
$object_cache[$class] = array();
|
||||
}
|
||||
$cache = &$object_cache[$class];
|
||||
|
@ -179,11 +179,11 @@ class ZM_Object {
|
|||
}
|
||||
|
||||
public function set($data) {
|
||||
foreach ( $data as $field => $value ) {
|
||||
if ( method_exists($this, $field) and is_callable(array($this, $field), false) ) {
|
||||
foreach ($data as $field => $value) {
|
||||
if (method_exists($this, $field) and is_callable(array($this, $field), false)) {
|
||||
$this->$field($value);
|
||||
} else {
|
||||
if ( is_array($value) ) {
|
||||
if (is_array($value)) {
|
||||
# perhaps should turn into a comma-separated string
|
||||
$this->{$field} = implode(',', $value);
|
||||
} else if (is_string($value)) {
|
||||
|
@ -212,11 +212,11 @@ class ZM_Object {
|
|||
} else {
|
||||
$this->{$field} = $value;
|
||||
}
|
||||
} else if ( is_integer($value) ) {
|
||||
} else if (is_integer($value)) {
|
||||
$this->{$field} = $value;
|
||||
} else if ( is_bool($value) ) {
|
||||
} else if (is_bool($value)) {
|
||||
$this->{$field} = $value;
|
||||
} else if ( is_null($value) ) {
|
||||
} else if (is_null($value)) {
|
||||
$this->{$field} = $value;
|
||||
} else {
|
||||
Error("Unknown type $field => $value of var " . gettype($value));
|
||||
|
@ -307,7 +307,7 @@ class ZM_Object {
|
|||
$class = get_class($this);
|
||||
$table = $class::$table;
|
||||
|
||||
if ( $new_values ) {
|
||||
if ($new_values) {
|
||||
$this->set($new_values);
|
||||
}
|
||||
|
||||
|
|
|
@ -19,33 +19,66 @@
|
|||
//
|
||||
|
||||
// Monitor edit actions, monitor id derived, require edit permissions for that monitor
|
||||
if ( !canEdit('Monitors') ) {
|
||||
if (!canEdit('Monitors')) {
|
||||
ZM\Warning('Monitor actions require Monitors Permissions');
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $action == 'save' ) {
|
||||
global $error_message;
|
||||
|
||||
if ($action == 'save') {
|
||||
$mid = 0;
|
||||
if ( !empty($_REQUEST['mid']) ) {
|
||||
if (!empty($_REQUEST['mid'])) {
|
||||
$mid = validInt($_REQUEST['mid']);
|
||||
if ( !canEdit('Monitors', $mid) ) {
|
||||
if (!canEdit('Monitors', $mid)) {
|
||||
ZM\Warning('You do not have permission to edit this monitor');
|
||||
return;
|
||||
}
|
||||
if ( ZM_OPT_X10 ) {
|
||||
if (ZM_OPT_X10) {
|
||||
$x10Monitor = dbFetchOne('SELECT * FROM TriggersX10 WHERE MonitorId=?', NULL, array($mid));
|
||||
if ( !$x10Monitor ) $x10Monitor = array();
|
||||
if (!$x10Monitor) $x10Monitor = array();
|
||||
}
|
||||
} else {
|
||||
if ( $user['MonitorIds'] ) {
|
||||
if ($user['MonitorIds']) {
|
||||
ZM\Warning('You are restricted to certain monitors so cannot add a new one.');
|
||||
return;
|
||||
}
|
||||
if ( ZM_OPT_X10 ) {
|
||||
if (ZM_OPT_X10) {
|
||||
$x10Monitor = array();
|
||||
}
|
||||
}
|
||||
|
||||
# For convenience
|
||||
$newMonitor = $_REQUEST['newMonitor'];
|
||||
ZM\Debug("newMonitor: ". print_r($newMonitor, true));
|
||||
|
||||
if (!$newMonitor['ManufacturerId'] and ($newMonitor['Manufacturer'] != '')) {
|
||||
# Need to add a new Manufacturer entry
|
||||
$newManufacturer = ZM\Manufacturer::find_one(array('Name'=>$newMonitor['Manufacturer']));
|
||||
if (!$newManufacturer) {
|
||||
$newManufacturer = new ZM\Manufacturer();
|
||||
if (!$newManufacturer->save(array('Name'=>$newMonitor['Manufacturer']))) {
|
||||
$error_message .= "Error saving new Manufacturer: " . $newManufacturer->get_last_error().'</br>';
|
||||
}
|
||||
}
|
||||
$newMonitor['ManufacturerId'] = $newManufacturer->Id();
|
||||
}
|
||||
|
||||
if (!$newMonitor['ModelId'] and ($newMonitor['Model'] != '')) {
|
||||
# Need to add a new Model entry
|
||||
$newModel = ZM\Model::find_one(array('Name'=>$newMonitor['Model']));
|
||||
if (!$newModel) {
|
||||
$newModel = new ZM\Model();
|
||||
if (!$newModel->save(array(
|
||||
'Name'=>$newMonitor['Model'],
|
||||
'ManufacturerId'=>$newMonitor['ManufacturerId']
|
||||
))) {
|
||||
$error_message .= "Error saving new Model: " . $newModel->get_last_error().'</br>';
|
||||
}
|
||||
}
|
||||
$newMonitor['ModelId'] = $newModel->Id();
|
||||
}
|
||||
|
||||
$monitor = new ZM\Monitor($mid);
|
||||
|
||||
// Define a field type for anything that's not simple text equivalent
|
||||
|
@ -68,33 +101,35 @@ if ( $action == 'save' ) {
|
|||
|
||||
# Checkboxes don't return an element in the POST data, so won't be present in newMonitor.
|
||||
# So force a value for these fields
|
||||
foreach ( $types as $field => $value ) {
|
||||
if ( ! isset($_REQUEST['newMonitor'][$field] ) ) {
|
||||
$_REQUEST['newMonitor'][$field] = $value;
|
||||
foreach ($types as $field => $value) {
|
||||
if (!isset($newMonitor[$field])) {
|
||||
$newMonitor[$field] = $value;
|
||||
}
|
||||
} # end foreach type
|
||||
|
||||
if ( $_REQUEST['newMonitor']['ServerId'] == 'auto' ) {
|
||||
$_REQUEST['newMonitor']['ServerId'] = dbFetchOne(
|
||||
if ($newMonitor['ServerId'] == 'auto') {
|
||||
$newMonitor['ServerId'] = dbFetchOne(
|
||||
'SELECT Id FROM Servers WHERE Status=\'Running\' ORDER BY FreeMem DESC, CpuLoad ASC LIMIT 1', 'Id');
|
||||
ZM\Debug('Auto selecting server: Got ' . $_REQUEST['newMonitor']['ServerId']);
|
||||
if ( ( !$_REQUEST['newMonitor'] ) and defined('ZM_SERVER_ID') ) {
|
||||
$_REQUEST['newMonitor']['ServerId'] = ZM_SERVER_ID;
|
||||
ZM\Debug('Auto selecting server: Got ' . $newMonitor['ServerId']);
|
||||
if ((!$newMonitor['ServerId']) and defined('ZM_SERVER_ID')) {
|
||||
$newMonitor['ServerId'] = ZM_SERVER_ID;
|
||||
ZM\Debug('Auto selecting server to ' . ZM_SERVER_ID);
|
||||
}
|
||||
}
|
||||
|
||||
$changes = $monitor->changes($_REQUEST['newMonitor']);
|
||||
ZM\Debug("newMonitor: ". print_r($newMonitor, true));
|
||||
$changes = $monitor->changes($newMonitor);
|
||||
ZM\Debug("Changes: ". print_r($changes, true));
|
||||
$restart = false;
|
||||
|
||||
if ( count($changes) ) {
|
||||
if (count($changes)) {
|
||||
// monitor->Id() has a value when the db record exists
|
||||
if ( $monitor->Id() ) {
|
||||
if ($monitor->Id()) {
|
||||
|
||||
# If we change anything that changes the shared mem size, zma can complain. So let's stop first.
|
||||
if ( $monitor->Type() != 'WebSite' ) {
|
||||
if ($monitor->Type() != 'WebSite') {
|
||||
$monitor->zmcControl('stop');
|
||||
if ( $monitor->Controllable() ) {
|
||||
if ($monitor->Controllable()) {
|
||||
$monitor->sendControlCommand('stop');
|
||||
}
|
||||
}
|
||||
|
@ -103,8 +138,7 @@ if ( $action == 'save' ) {
|
|||
$oldW = $monitor->Width();
|
||||
$oldH = $monitor->Height();
|
||||
|
||||
if ( $monitor->save($changes) ) {
|
||||
|
||||
if ($monitor->save($changes)) {
|
||||
// Groups will be added below
|
||||
if ( isset($changes['Name']) or isset($changes['StorageId']) ) {
|
||||
// creating symlinks when symlink already exists reports errors, but is perfectly ok
|
||||
|
@ -112,28 +146,28 @@ if ( $action == 'save' ) {
|
|||
|
||||
$OldStorage = $monitor->Storage();
|
||||
$saferOldName = basename($monitor->Name());
|
||||
if ( file_exists($OldStorage->Path().'/'.$saferOldName) )
|
||||
if (file_exists($OldStorage->Path().'/'.$saferOldName))
|
||||
unlink($OldStorage->Path().'/'.$saferOldName);
|
||||
|
||||
$NewStorage = new ZM\Storage($_REQUEST['newMonitor']['StorageId']);
|
||||
if ( !file_exists($NewStorage->Path().'/'.$mid) ) {
|
||||
if ( !mkdir($NewStorage->Path().'/'.$mid, 0755) ) {
|
||||
ZM\Error('Unable to mkdir ' . $NewStorage->Path().'/'.$mid);
|
||||
$NewStorage = new ZM\Storage($newMonitor['StorageId']);
|
||||
if (!file_exists($NewStorage->Path().'/'.$mid)) {
|
||||
if (!mkdir($NewStorage->Path().'/'.$mid, 0755)) {
|
||||
ZM\Error('Unable to mkdir '.$NewStorage->Path().'/'.$mid);
|
||||
}
|
||||
}
|
||||
$saferNewName = basename($_REQUEST['newMonitor']['Name']);
|
||||
$saferNewName = basename($newMonitor['Name']);
|
||||
$link_path = $NewStorage->Path().'/'.$saferNewName;
|
||||
// Use a relative path for the target so the link continues to work from backups or directory changes.
|
||||
if ( !symlink($mid, $link_path) ) {
|
||||
if ( ! ( file_exists($link_path) and is_link($link_path) ) ) {
|
||||
if (!symlink($mid, $link_path)) {
|
||||
if (!(file_exists($link_path) and is_link($link_path))) {
|
||||
ZM\Warning('Unable to symlink ' . $NewStorage->Path().'/'.$mid . ' to ' . $NewStorage->Path().'/'.$saferNewName);
|
||||
}
|
||||
}
|
||||
} // end if Name or Storage Area Change
|
||||
|
||||
if ( isset($changes['Width']) || isset($changes['Height']) ) {
|
||||
$newW = $_REQUEST['newMonitor']['Width'];
|
||||
$newH = $_REQUEST['newMonitor']['Height'];
|
||||
if (isset($changes['Width']) || isset($changes['Height'])) {
|
||||
$newW = $newMonitor['Width'];
|
||||
$newH = $newMonitor['Height'];
|
||||
|
||||
$zones = dbFetchAll('SELECT * FROM Zones WHERE MonitorId=?', NULL, array($mid));
|
||||
|
||||
|
@ -204,8 +238,7 @@ if ( $action == 'save' ) {
|
|||
} // end if rotation or just size change
|
||||
} // end if changes in width or height
|
||||
} else {
|
||||
global $error_message;
|
||||
$error_message = dbError('unknown');
|
||||
$error_message .= $monitor->get_last_error();
|
||||
} // end if successful save
|
||||
$restart = true;
|
||||
} else { // new monitor
|
||||
|
@ -217,14 +250,27 @@ if ( $action == 'save' ) {
|
|||
|
||||
if ( $monitor->insert($changes) ) {
|
||||
$mid = $monitor->Id();
|
||||
$zoneArea = $_REQUEST['newMonitor']['Width'] * $_REQUEST['newMonitor']['Height'];
|
||||
dbQuery("INSERT INTO Zones SET MonitorId = ?, Name = 'All', Type = 'Active', Units = 'Percent', NumCoords = 4, Coords = ?, Area=?, AlarmRGB = 0xff0000, CheckMethod = 'Blobs', MinPixelThreshold = 25, MinAlarmPixels=?, MaxAlarmPixels=?, FilterX = 3, FilterY = 3, MinFilterPixels=?, MaxFilterPixels=?, MinBlobPixels=?, MinBlobs = 1", array( $mid, sprintf( "%d,%d %d,%d %d,%d %d,%d", 0, 0, $_REQUEST['newMonitor']['Width']-1, 0, $_REQUEST['newMonitor']['Width']-1, $_REQUEST['newMonitor']['Height']-1, 0, $_REQUEST['newMonitor']['Height']-1 ), $zoneArea, intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*2)/100) ) );
|
||||
//$view = 'none';
|
||||
$zoneArea = $newMonitor['Width'] * $newMonitor['Height'];
|
||||
dbQuery("INSERT INTO Zones SET MonitorId = ?, Name = 'All', Type = 'Active', Units = 'Percent', NumCoords = 4, Coords = ?, Area=?, AlarmRGB = 0xff0000, CheckMethod = 'Blobs', MinPixelThreshold = 25, MinAlarmPixels=?, MaxAlarmPixels=?, FilterX = 3, FilterY = 3, MinFilterPixels=?, MaxFilterPixels=?, MinBlobPixels=?, MinBlobs = 1", array( $mid,
|
||||
sprintf( '%d,%d %d,%d %d,%d %d,%d', 0, 0,
|
||||
$newMonitor['Width']-1,
|
||||
0,
|
||||
$newMonitor['Width']-1,
|
||||
$newMonitor['Height']-1,
|
||||
0,
|
||||
$newMonitor['Height']-1),
|
||||
$zoneArea,
|
||||
intval(($zoneArea*3)/100),
|
||||
intval(($zoneArea*75)/100),
|
||||
intval(($zoneArea*3)/100),
|
||||
intval(($zoneArea*75)/100),
|
||||
intval(($zoneArea*2)/100)
|
||||
));
|
||||
$Storage = $monitor->Storage();
|
||||
|
||||
error_reporting(0);
|
||||
mkdir($Storage->Path().'/'.$mid, 0755);
|
||||
$saferName = basename($_REQUEST['newMonitor']['Name']);
|
||||
$saferName = basename($newMonitor['Name']);
|
||||
symlink($mid, $Storage->Path().'/'.$saferName);
|
||||
|
||||
} else {
|
||||
|
|
|
@ -19,24 +19,27 @@
|
|||
//
|
||||
|
||||
// Monitor edit actions, monitor id derived, require edit permissions for that monitor
|
||||
if ( ! canEdit('Monitors') ) {
|
||||
if (!canEdit('Monitors')) {
|
||||
ZM\Warning("Monitor actions require Monitors Permissions");
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $action == 'save' ) {
|
||||
foreach ( $_REQUEST['mids'] as $mid ) {
|
||||
if ($action == 'save') {
|
||||
foreach ($_REQUEST['mids'] as $mid) {
|
||||
$mid = ValidInt($mid);
|
||||
if ( ! canEdit('Monitors', $mid) ) {
|
||||
ZM\Warning("Cannot edit monitor $mid");
|
||||
if (!canEdit('Monitors', $mid)) {
|
||||
ZM\Warning('Cannot edit monitor '.$mid);
|
||||
continue;
|
||||
}
|
||||
$Monitor = new ZM\Monitor($mid);
|
||||
if ( $Monitor->Type() != 'WebSite' ) {
|
||||
if ($Monitor->Type() != 'WebSite') {
|
||||
$Monitor->zmcControl('stop');
|
||||
}
|
||||
$Monitor->save($_REQUEST['newMonitor']);
|
||||
if ( $Monitor->Function() != 'None' && $Monitor->Type() != 'WebSite' ) {
|
||||
if (!$Monitor->save($_REQUEST['newMonitor'])) {
|
||||
global $error_message;
|
||||
$error_message .= 'Error saving monitor: ' . $Monitor->get_last_error().'<br/>';
|
||||
}
|
||||
if ($Monitor->Function() != 'None' && $Monitor->Type() != 'WebSite') {
|
||||
$Monitor->zmcControl('start');
|
||||
}
|
||||
} // end foreach mid
|
||||
|
|
|
@ -663,8 +663,33 @@ $SLANG = array(
|
|||
'PrivacyCookiesText' => 'Whether you use a web browser or a mobile app to communicate with the ZoneMinder server, a ZMSESSID cookie is created on the client to uniquely identify a session with the ZoneMinder server. ZmCSS and zmSkin cookies are created to remember your style and skin choices.',
|
||||
'PrivacyTelemetry' => 'Telemetry',
|
||||
'PrivacyTelemetryText' => 'Because ZoneMinder is open-source, anyone can install it without registering. This makes it difficult to answer questions such as: how many systems are out there, what is the largest system out there, what kind of systems are out there, or where are these systems located? Knowing the answers to these questions, helps users who ask us these questions, and it helps us set priorities based on the majority user base.',
|
||||
'PrivacyTelemetryList' => 'The ZoneMinder Telemetry daemon collects the following data about your system:<ul><li>A unique identifier (UUID) <li>City based location is gathered by querying <a href="https://ipinfo.io/geo">ipinfo.io</a>. City, region, country, latitude, and longitude parameters are saved. The latitude and longitude coordinates are accurate down to the city or town level only!<li>Current time<li>Total number of monitors<li>Total number of events<li>System architecture<li>Operating system kernel, distro, and distro version<li>Version of ZoneMinder<li>Total amount of memory<li>Number of cpu cores</ul>',
|
||||
'PrivacyMonitorList' => 'The following configuration parameters from each monitor are collected:<ul><li>Id<li>Name<li>Type<li>Function<li>Width<li>Height<li>Colours<li>MaxFPS<li>AlarmMaxFPS</ul>',
|
||||
'PrivacyTelemetryList' => 'The ZoneMinder Telemetry daemon collects the following data about your system:
|
||||
<ul>
|
||||
<li>A unique identifier (UUID)</li>
|
||||
<li>City based location is gathered by querying <a href="https://ipinfo.io/geo">ipinfo.io</a>. City, region, country, latitude, and longitude parameters are saved. The latitude and longitude coordinates are accurate down to the city or town level only!</li>
|
||||
<li>Current time</li>
|
||||
<li>Total number of monitors</li>
|
||||
<li>Total number of events</li>
|
||||
<li>System architecture</li>
|
||||
<li>Operating system kernel, distro, and distro version</li>
|
||||
<li>Version of ZoneMinder</li>
|
||||
<li>Total amount of memory</li>
|
||||
<li>Number of cpu cores</li>
|
||||
</ul>',
|
||||
'PrivacyMonitorList' => 'The following configuration parameters from each monitor are collected:
|
||||
<ul>
|
||||
<li>Id</li>
|
||||
<li>Name</li>
|
||||
<li>Manufacturer</li>
|
||||
<li>Model</li>
|
||||
<li>Type</li>
|
||||
<li>Function</li>
|
||||
<li>Width</li>
|
||||
<li>Height</li>
|
||||
<li>Colours</li>
|
||||
<li>MaxFPS</li>
|
||||
<li>AlarmMaxFPS</li>
|
||||
</ul>',
|
||||
'PrivacyConclusionText' => 'We are <u>NOT</u> collecting any image specific data from your cameras. We don’t know what your cameras are watching. This data will not be sold or used for any purpose not stated herein. By clicking accept, you agree to send us this data to help make ZoneMinder a better product. By clicking decline, you can still freely use ZoneMinder and all its features.',
|
||||
'Probe' => 'Probe',
|
||||
'ProfileProbe' => 'Stream Probe',
|
||||
|
|
|
@ -178,7 +178,6 @@ $html .= '</span>
|
|||
' .
|
||||
( count($conditions) ? ' WHERE ' . implode(' AND ', $conditions) : '' ).' ORDER BY Sequence ASC';
|
||||
$monitors = dbFetchAll($sql, null, $values);
|
||||
ZM\Debug(print_r($monitors, true));
|
||||
$displayMonitors = array();
|
||||
$monitors_dropdown = array();
|
||||
|
||||
|
|
|
@ -324,7 +324,6 @@ function update_estimated_ram_use() {
|
|||
var max_buffer_count = parseInt(document.querySelectorAll('input[name="newMonitor[MaxImageBufferCount]"]')[0].value);
|
||||
if (max_buffer_count) {
|
||||
var max_buffer_size = (min_buffer_count + max_buffer_count) * width * height * colours;
|
||||
console.log(max_buffer_size);
|
||||
document.getElementById('estimated_ram_use').innerHTML += ' Max: ' + human_filesize(max_buffer_size);
|
||||
} else {
|
||||
document.getElementById('estimated_ram_use').innerHTML += ' Max: Unlimited';
|
||||
|
@ -346,4 +345,85 @@ function getLocation() {
|
|||
}
|
||||
}
|
||||
|
||||
function populate_models(ManufacturerId) {
|
||||
const dropdown = $j('[name="newMonitor[ModelId]"]');
|
||||
if (!dropdown.length) {
|
||||
console.log("No element found for ModelId");
|
||||
return;
|
||||
}
|
||||
|
||||
dropdown.empty();
|
||||
dropdown.append('<option value="" selected="true">Unknown</option>');
|
||||
dropdown.prop('selectedIndex', 0);
|
||||
|
||||
if (ManufacturerId) {
|
||||
// Populate dropdown with list of provinces
|
||||
$j.getJSON(thisUrl+'?request=models&ManufacturerId='+ManufacturerId, function(data) {
|
||||
if (data.result == 'Ok') {
|
||||
$j.each(data.models, function(key, entry) {
|
||||
dropdown.append($j('<option></option>').attr('value', entry.Id).text(entry.Name));
|
||||
});
|
||||
dropdown.chosen("destroy");
|
||||
dropdown.chosen();
|
||||
} else {
|
||||
alert(data.result);
|
||||
}
|
||||
});
|
||||
}
|
||||
dropdown.chosen("destroy");
|
||||
dropdown.chosen();
|
||||
}
|
||||
|
||||
function ManufacturerId_onchange(ManufacturerId_select) {
|
||||
if (ManufacturerId_select.value) {
|
||||
ManufacturerId_select.form.elements['newMonitor[Manufacturer]'].style['display'] = 'none';
|
||||
populate_models(ManufacturerId_select.value);
|
||||
} else {
|
||||
ManufacturerId_select.form.elements['newMonitor[Manufacturer]'].style['display'] = 'inline';
|
||||
// Set models dropdown to Unknown, text area visible
|
||||
const ModelId_dropdown = $j('[name="newMonitor[ModelId]"]');
|
||||
ModelId_dropdown.empty();
|
||||
ModelId_dropdown.append('<option selected="true">Unknown</option>');
|
||||
ModelId_dropdown.prop('selectedIndex', 0);
|
||||
$j('[name="newMonitor[Model]"]').show();
|
||||
}
|
||||
}
|
||||
|
||||
function select_by_value_case_insensitive(dropdown, value) {
|
||||
const test_value = value.toLowerCase();
|
||||
for (i=1; i < dropdown.options.length; i++) {
|
||||
if (dropdown.options[i].text.toLowerCase() == test_value) {
|
||||
dropdown.selectedIndex = i;
|
||||
dropdown.options[i].selected = true;
|
||||
$j(dropdown).chosen("destroy").chosen();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (dropdown.selectedIndex != 0) {
|
||||
dropdown.selectedIndex = 0;
|
||||
$j(dropdown).chosen("destroy").chosen();
|
||||
}
|
||||
}
|
||||
|
||||
function Manufacturer_onchange(input) {
|
||||
if (!input.value) {
|
||||
return;
|
||||
}
|
||||
ManufacturerId_select = input.form.elements['newMonitor[ManufacturerId]'];
|
||||
select_by_value_case_insensitive(ManufacturerId_select, input.value);
|
||||
populate_models(ManufacturerId_select.value);
|
||||
}
|
||||
|
||||
function ModelId_onchange(ModelId_select) {
|
||||
if (parseInt(ModelId_select.value)) {
|
||||
$j('[name="newMonitor[Model]"]').hide();
|
||||
} else {
|
||||
$j('[name="newMonitor[Model]"]').show();
|
||||
}
|
||||
}
|
||||
|
||||
function Model_onchange(input) {
|
||||
select_by_value_case_insensitive(input.form.elements['newMonitor[ModelId]'], input.value);
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', initPage);
|
||||
|
|
|
@ -480,6 +480,44 @@ if (count($available_monitor_ids)) {
|
|||
<td class="text-right pr-3"><?php echo translate('Notes') ?></td>
|
||||
<td><textarea name="newMonitor[Notes]" rows="4"><?php echo validHtmlStr($monitor->Notes()) ?></textarea></td>
|
||||
</tr>
|
||||
<tr class="Manufacturer">
|
||||
<td class="text-right pr-3"><?php echo translate('Manufacturer') ?></td>
|
||||
<td>
|
||||
<?php
|
||||
require_once('includes/Manufacturer.php');
|
||||
$manufacturers = array(''=>translate('Unknown'));
|
||||
foreach ( ZM\Manufacturer::find( null, array('order'=>'lower(Name)')) as $Manufacturer ) {
|
||||
$manufacturers[$Manufacturer->Id()] = $Manufacturer->Name();
|
||||
}
|
||||
echo htmlSelect('newMonitor[ManufacturerId]', $manufacturers, $monitor->ManufacturerId(),
|
||||
array('class'=>'chosen','data-on-change-this'=>'ManufacturerId_onchange'));
|
||||
?>
|
||||
<input type="text" name="newMonitor[Manufacturer]"
|
||||
placeholder="enter new manufacturer name"
|
||||
value="<?php echo $monitor->Manufacturer()->Name() ?>"<?php echo $monitor->ManufacturerId() ? ' style="display:none"' : '' ?>
|
||||
data-on-input-this="Manufacturer_onchange"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="Model">
|
||||
<td class="text-right pr-3"><?php echo translate('Model') ?></td>
|
||||
<td>
|
||||
<?php
|
||||
require_once('includes/Model.php');
|
||||
$models = array(''=>translate('Unknown'));
|
||||
foreach ( ZM\Model::find(array('ManufacturerId'=>$monitor->ManufacturerId()), array('order'=>'lower(Name)')) as $Model ) {
|
||||
$models[$Model->Id()] = $Model->Name();
|
||||
}
|
||||
echo htmlSelect('newMonitor[ModelId]', $models, $monitor->ModelId(),
|
||||
array('class'=>'chosen', 'data-on-change-this'=>'ModelId_onchange'));
|
||||
?>
|
||||
<input type="text" name="newMonitor[Model]"
|
||||
placeholder="enter new model name"
|
||||
value="<?php echo $monitor->Model()->Name() ?>"<?php echo $monitor->ModelId() ? ' style="display:none"':'' ?>
|
||||
data-on-input-this="Model_onchange"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-right pr-3"><?php echo translate('Server') ?></td><td>
|
||||
<?php
|
||||
|
|
Loading…
Reference in New Issue