Feature Request #49 : Custom Endpoint with S3-Based Uploading

- Wasabi Hot Cloud Storage has been converted to being a dynamic S3-based upload controller.
merge-requests/63/head
Moe 2019-03-07 15:53:49 -08:00
parent 4eb68ee900
commit 8fe57162af
4 changed files with 29 additions and 4 deletions

View File

@ -230,12 +230,16 @@
"User Not Found": "User Not Found",
"Save Links to Database": "Save Links to Database",
"Upload File": "Upload File",
"Endpoint": "Endpoint",
"Endpoint Address": "Endpoint Address",
"Custom Endpoint": "Custom Endpoint",
"Bucket": "Bucket",
"Region": "Region",
"Use Global Amazon S3 Video Storage": "Use Global Amazon S3 Video Storage",
"Use Global Wasabi Hot Cloud Storage Video Storage": "Use Global Wasabi Hot Cloud Storage Video Storage",
"Use Global Backblaze B2 Video Storage": "Use Global Backblaze B2 Video Storage",
"Use Global WebDAV Video Storage": "Use Global WebDAV Video Storage",
"S3-Based Network Storage": "S3-Based Network Storage",
"Amazon S3 Upload Error": "Amazon S3 Upload Error",
"Wasabi Hot Cloud Storage Upload Error": "Wasabi Hot Cloud Storage Upload Error",
"accountId": "Account ID",

View File

@ -11,10 +11,10 @@ module.exports = function(s,config,lang){
}
loadLib('loader')(s,config,lang)
//cloud storage
loadLib('s3based')(s,config,lang)
loadLib('backblazeB2')(s,config,lang)
loadLib('amazonS3')(s,config,lang)
loadLib('webdav')(s,config,lang)
loadLib('wasabi')(s,config,lang)
//simple storage
loadLib('sftp')(s,config,lang)
}

View File

@ -1,6 +1,6 @@
<% if(details.use_whcs!=='0'){ %>
<div class="form-group-group forestgreen">
<h4><%-lang['Wasabi Hot Cloud Storage']%></h4>
<h4><%-lang['S3-Based Network Storage']%></h4>
<div class="form-group">
<label><div><span><%-lang.Autosave%></span></div>
<div><select class="form-control" detail="whcs_save" selector="autosave_whcs">
@ -10,6 +10,19 @@
</label>
</div>
<div class="autosave_whcs_input autosave_whcs_1">
<div class="form-group">
<label><div><span><%-lang['Endpoint']%></span></div>
<div><select class="form-control" detail="use_whcs_size_limit" selector="h_whcs_endpoint">
<option value=""><%- lang['Custom Endpoint'] %></option>
<option value="s3.wasabisys.com" selected>s3.wasabisys.com</option>
</select></div>
</label>
</div>
<div class="form-group h_whcs_endpoint_input h_whcs_endpoint_" style="display:none">
<label><div><span><%-lang['Endpoint Address']%></span></div>
<div><input class="form-control" detail="whcs_endpoint" placeholder="s3.wasabisys.com"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang.Bucket%></span></div>
<div><input class="form-control" detail="whcs_bucket" placeholder="Example : slippery-seal"></div>

View File

@ -44,9 +44,17 @@ module.exports = function(s,config,lang){
if(userDetails.whcs_dir !== ''){
userDetails.whcs_dir = s.checkCorrectPathEnding(userDetails.whcs_dir)
}
if(!userDetails.whcs_endpoint || userDetails.whcs_endpoint === ''){
userDetails.whcs_endpoint = 's3.wasabisys.com'
}
var endpointSplit = userDetails.whcs_endpoint.split('.')
if(endpointSplit.length > 1){
endpointSplit.shift()
}
var locationUrl = endpointSplit.join('.')
var AWS = new require("aws-sdk")
s.group[e.ke].whcs = AWS
var wasabiEndpoint = new AWS.Endpoint('s3.wasabisys.com')
var wasabiEndpoint = new AWS.Endpoint(userDetails.whcs_endpoint)
s.group[e.ke].whcs.config = new s.group[e.ke].whcs.Config({
endpoint: wasabiEndpoint,
accessKeyId: userDetails.whcs_accessKeyId,
@ -67,7 +75,7 @@ module.exports = function(s,config,lang){
var videoDetails = video.details
}
if(!videoDetails.location){
videoDetails.location = video.href.split('wasabisys.com')[1]
videoDetails.location = video.href.split(locationUrl)[1]
}
s.group[e.ke].whcs.deleteObject({
Bucket: s.group[e.ke].init.whcs_bucket,