Add Uploading Video to Monitor Recordings by POST

pushover
Moe 2019-11-03 07:59:18 -08:00
parent ed76347b25
commit 147f3c0051
2 changed files with 68 additions and 3 deletions

View File

@ -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([

View File

@ -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": {}
}