From 2bd790545b973617740e3a00a0196dcb4ce61a9a Mon Sep 17 00:00:00 2001 From: Moe Date: Mon, 23 Jul 2018 22:33:06 -0700 Subject: [PATCH] Amazon S3 upload on video complete - Open "Settings" in the "Admin" account (sub-account creator) to reveal your Amazon S3 configuration fields. --- camera.js | 44 +++++++++++++++++++++++-- languages/en_CA.json | 5 +++ web/pages/blocks/settings.ejs | 61 ++++++++++++++++++++++++++++++++++- 3 files changed, 107 insertions(+), 3 deletions(-) diff --git a/camera.js b/camera.js index d2d1882d..ed728423 100644 --- a/camera.js +++ b/camera.js @@ -862,15 +862,38 @@ s.init=function(x,e,k,fn){ ar.webdav_url!=='' ){ if(!ar.webdav_dir||ar.webdav_dir===''){ - ar.webdav_dir='/'; - if(ar.webdav_dir.slice(-1)!=='/'){ar.webdav_dir+='/';} + ar.webdav_dir='/' } + ar.webdav_dir = s.checkCorrectPathEnding(ar.webdav_dir) s.group[e.ke].webdav = webdav( ar.webdav_url, ar.webdav_user, ar.webdav_pass ); } + //Amazon S3 + if(ar.aws_s3 !== '0' && + ar.aws_accessKeyId !== ''&& + ar.aws_secretAccessKey && + ar.aws_secretAccessKey !== ''&& + ar.aws_region && + ar.aws_region !== ''&& + ar.aws_s3_bucket !== '' + ){ + if(!ar.aws_s3_dir || ar.aws_s3_dir === '/'){ + ar.aws_s3_dir = '' + } + if(ar.aws_s3_dir !== ''){ + ar.aws_s3_dir = s.checkCorrectPathEnding(ar.aws_s3_dir) + } + s.group[e.ke].aws = new require("aws-sdk") + s.group[e.ke].aws.config = new s.group[e.ke].aws.Config({ + accessKeyId: ar.aws_accessKeyId, + secretAccessKey: ar.aws_secretAccessKey, + region: ar.aws_region + }) + s.group[e.ke].aws_s3 = new s.group[e.ke].aws.S3(); + } //discordbot if(!s.group[e.ke].discordBot && config.discordBot === true && @@ -1404,6 +1427,20 @@ s.video=function(x,e,k){ }); }); } + if(s.group[e.ke].aws_s3 && s.group[e.ke].init.use_aws_s3 !== '0' && s.group[e.ke].init.aws_s3_save === "1"){ + var fileStream = fs.createReadStream(k.dir+k.filename); + fileStream.on('error', function (err) { + console.error(err) + }) + s.group[e.ke].aws_s3.upload({ + Bucket: s.group[e.ke].init.aws_s3_bucket, + Key: s.group[e.ke].init.aws_s3_dir+e.ke+'/'+e.mid+'/'+k.filename, + Body:fileStream, + ACL:'public-read' + },function(err,data){ + console.log(data) + }) + } k.details = {} if(e.details&&e.details.dir&&e.details.dir!==''){ k.details.dir = e.details.dir @@ -4246,6 +4283,7 @@ var tx; d.form.details.edit_days=d.d.edit_days d.form.details.use_admin=d.d.use_admin d.form.details.use_webdav=d.d.use_webdav + d.form.details.use_aws_s3=d.d.use_aws_s3 d.form.details.use_ldap=d.d.use_ldap //check if(d.d.edit_days=="0"){ @@ -4281,6 +4319,8 @@ var tx; if(!d.d.sub){ s.group[d.ke].sizeLimit = parseFloat(newSize) delete(s.group[d.ke].webdav) + delete(s.group[d.ke].aws) + delete(s.group[d.ke].aws_s3) if(s.group[d.ke].discordBot && s.group[d.ke].discordBot.destroy){ s.group[d.ke].discordBot.destroy() delete(s.group[d.ke].discordBot) diff --git a/languages/en_CA.json b/languages/en_CA.json index 911219ca..5932f8ec 100644 --- a/languages/en_CA.json +++ b/languages/en_CA.json @@ -180,6 +180,11 @@ "Monitor Groups": "Monitor Groups", "Group Name": "Group Name", "WebDAV": "WebDAV", + "Amazon S3": "Amazon S3", + "Bucket": "Bucket", + "Region": "Region", + "aws_accessKeyId": "Access Key Id", + "aws_secretAccessKey": "Secret Access Key", "Discord Bot": "Discord Bot", "URL": "URL", "Autosave": "Autosave", diff --git a/web/pages/blocks/settings.ejs b/web/pages/blocks/settings.ejs index b0dbacd0..673c6e72 100644 --- a/web/pages/blocks/settings.ejs +++ b/web/pages/blocks/settings.ejs @@ -174,7 +174,66 @@
+
+ + <% } %> + <% if(details.use_aws_s3!=='0'){ %> +
+

<%-lang['Amazon S3']%>

+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+