From 147f3c00517c2b41e651cec65f137f3e11bc9992 Mon Sep 17 00:00:00 2001 From: Moe Date: Sun, 3 Nov 2019 07:59:18 -0800 Subject: [PATCH] Add Uploading Video to Monitor Recordings by POST --- libs/webServerPaths.js | 65 ++++++++++++++++++++++++++++++++++++++++++ package.json | 6 ++-- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/libs/webServerPaths.js b/libs/webServerPaths.js index ad68c049..26627ed5 100644 --- a/libs/webServerPaths.js +++ b/libs/webServerPaths.js @@ -11,6 +11,7 @@ var httpProxy = require('http-proxy'); var onvif = require('node-onvif'); var proxy = httpProxy.createProxyServer({}) var ejs = require('ejs'); +var fileupload = require("express-fileupload"); module.exports = function(s,config,lang,app,io){ if(config.productType==='Pro'){ var LdapAuth = require('ldapauth-fork'); @@ -1784,6 +1785,70 @@ module.exports = function(s,config,lang,app,io){ },res,req); }) /** + * API : Upload Video File + */ + app.post(config.webPaths.apiPrefix+':auth/videos/:ke/:id',fileupload(), async (req,res) => { + var response = {ok:false} + res.setHeader('Content-Type', 'application/json'); + s.auth(req.params,function(user){ + if(user.permissions.watch_videos==="0"||user.details.sub&&user.details.allmonitors!=='1'&&user.details.video_delete.indexOf(req.params.id)===-1){ + res.end(user.lang['Not Permitted']) + return + } + var time = new Date() + var origURL = req.originalUrl.split('/') + var videoParam = origURL[origURL.indexOf(req.params.auth) + 1] + var videoSet = 'Videos' + req.sql='SELECT * FROM `Monitors` WHERE ke=? AND mid=?'; + req.ar=[req.params.ke,req.params.id]; + s.sqlQuery(req.sql,req.ar,function(err,r){ + if(r && r[0]){ + var monitor = r[0] + // req.query.overwrite === '1' + var filename = s.formattedTime(time) + '.' + monitor.ext + if(s.group[req.params.ke] && s.group[req.params.ke].activeMonitors[req.params.id]){ + try { + if(!req.files) { + res.send({ + status: false, + message: 'No file uploaded' + }); + } else { + let video = req.files.video; + video.mv(s.getVideoDirectory(monitor) + filename,function(){ + s.insertCompletedVideo(monitor,{ + file : filename + },function(){ + response.ok = true + response.filename = filename + res.end(s.prettyPrint({ + ok: true, + message: 'File is uploaded', + data: { + name: video.name, + mimetype: video.mimetype, + size: video.size + } + })) + }) + }); + } + } catch (err) { + response.err = err + res.status(500).send(response) + } + }else{ + response.error = 'Non Existant Monitor' + res.end(s.prettyPrint(response)) + } + }else{ + response.msg = user.lang['No such file'] + res.end(s.prettyPrint(response)) + } + }) + },res,req); + }) + /** * API : Modify Video File */ app.get([ diff --git a/package.json b/package.json index 8b63c257..946037d2 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "aws-sdk": "^2.279.1", "backblaze-b2": "^1.0.4", "body-parser": "^1.18.3", - "circular-json": "0.3.1", "connection-tester": "^0.1.1", "cws": "^1.0.0", "discord.js": "^11.3.2", @@ -44,7 +43,7 @@ "ftp-srv": "^4.0.0", "http-proxy": "^1.17.0", "jsonfile": "^3.0.1", - "knex": "^0.16.3", + "knex": "^0.19.5", "ldapauth-fork": "^4.0.2", "moment": "^2.17.0", "mp4frag": "^0.0.22", @@ -61,7 +60,8 @@ "smtp-server": "^3.5.0", "socket.io": "^2.2.0", "socket.io-client": "^2.2.0", - "webdav-fs": "^1.11.0" + "webdav-fs": "^1.11.0", + "express-fileupload": "^1.1.6-alpha.6" }, "devDependencies": {} }