diff --git a/src/js/restore.js b/src/js/restore.js
index fccb0747d..330eeeb9c 100644
--- a/src/js/restore.js
+++ b/src/js/restore.js
@@ -103,6 +103,15 @@ app.controller('RestoreController', ['$scope', 'Client', function ($scope, Clien
{ name: 'Frankfurt', value: 'eu-central-1.linodeobjects.com', region: 'us-east-1' },
];
+ $scope.ovhRegions = [
+ { name: 'Beauharnois (BHS)', value: 'https://s3.bhs.cloud.ovh.net', region: 'us-east-1' }, // default
+ { name: 'Frankfurt (DE)', value: 'https://s3.de.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Gravelines (GRA)', value: 'https://s3.gra.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Strasbourg (SBG)', value: 'https://s3.sbg.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'London (UK)', value: 'https://s3.uk.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Warsaw (WAW)', value: 'https://s3.waw.cloud.ovh.net', region: 'us-east-1' },
+ ];
+
$scope.wasabiRegions = [
{ name: 'EU Central 1', value: 'https://s3.eu-central-1.wasabisys.com' },
{ name: 'US East 1', value: 'https://s3.wasabisys.com' },
@@ -117,6 +126,7 @@ app.controller('RestoreController', ['$scope', 'Client', function ($scope, Clien
{ name: 'Google Cloud Storage', value: 'gcs' },
{ name: 'Linode Object Storage', value: 'linode-objectstorage' },
{ name: 'Minio', value: 'minio' },
+ { name: 'OVH Object Storage', value: 'ovh-objectstorage' },
{ name: 'Scaleway Object Storage', value: 'scaleway-objectstorage' },
{ name: 'S3 API Compatible (v4)', value: 's3-v4-compat' },
{ name: 'Wasabi', value: 'wasabi' }
@@ -130,7 +140,7 @@ app.controller('RestoreController', ['$scope', 'Client', function ($scope, Clien
$scope.s3like = function (provider) {
return provider === 's3' || provider === 'minio' || provider === 's3-v4-compat' || provider === 'exoscale-sos'
|| provider === 'digitalocean-spaces' || provider === 'wasabi' || provider === 'scaleway-objectstorage'
- || provider === 'linode-objectstorage';
+ || provider === 'linode-objectstorage' || provider === 'ovh-storage';
};
$scope.restore = function () {
@@ -170,6 +180,9 @@ app.controller('RestoreController', ['$scope', 'Client', function ($scope, Clien
} else if (backupConfig.provider === 'linode-objectstorage') {
backupConfig.region = $scope.linodeRegions.find(function (x) { return x.value === $scope.endpoint; }).region;
backupConfig.signatureVersion = 'v4';
+ } else if (backupConfig.provider === 'ovh-objectstorage') {
+ backupConfig.region = $scope.ovhRegions.find(function (x) { return x.value === $scope.endpoint; }).region;
+ backupConfig.signatureVersion = 'v4';
} else if (backupConfig.provider === 'digitalocean-spaces') {
backupConfig.region = 'us-east-1';
}
diff --git a/src/restore.html b/src/restore.html
index b79661561..0440ae22f 100644
--- a/src/restore.html
+++ b/src/restore.html
@@ -133,6 +133,11 @@
+
+
+
+
+
diff --git a/src/views/app.html b/src/views/app.html
index 0424c2bc8..b9c2fac7b 100644
--- a/src/views/app.html
+++ b/src/views/app.html
@@ -216,6 +216,11 @@
+
+
+
+
+
diff --git a/src/views/app.js b/src/views/app.js
index b4f1a214c..ff8b93fd5 100644
--- a/src/views/app.js
+++ b/src/views/app.js
@@ -65,6 +65,15 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
{ name: 'Frankfurt', value: 'eu-central-1.linodeobjects.com', region: 'us-east-1' },
];
+ $scope.ovhRegions = [
+ { name: 'Beauharnois (BHS)', value: 'https://s3.bhs.cloud.ovh.net', region: 'us-east-1' }, // default
+ { name: 'Frankfurt (DE)', value: 'https://s3.de.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Gravelines (GRA)', value: 'https://s3.gra.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Strasbourg (SBG)', value: 'https://s3.sbg.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'London (UK)', value: 'https://s3.uk.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Warsaw (WAW)', value: 'https://s3.waw.cloud.ovh.net', region: 'us-east-1' },
+ ];
+
$scope.storageProvider = [
{ name: 'Amazon S3', value: 's3' },
{ name: 'DigitalOcean Spaces', value: 'digitalocean-spaces' },
@@ -73,6 +82,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
{ name: 'Google Cloud Storage', value: 'gcs' },
{ name: 'Linode Object Storage', value: 'linode-objectstorage' },
{ name: 'Minio', value: 'minio' },
+ { name: 'OVH Object Storage', value: 'ovh-objectstorage' },
{ name: 'Scaleway Object Storage', value: 'scaleway-objectstorage' },
// { name: 'No-op (Only for testing)', value: 'noop' },
{ name: 'S3 API Compatible (v4)', value: 's3-v4-compat' },
@@ -740,7 +750,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
return provider === 's3' || provider === 'minio' || provider === 's3-v4-compat'
|| provider === 'exoscale-sos' || provider === 'digitalocean-spaces'
|| provider === 'scaleway-objectstorage' || provider === 'wasabi'
- || provider === 'linode-objectstorage';
+ || provider === 'linode-objectstorage' || provider === 'ovh-objectstorage';
};
$scope.importBackup = {
@@ -815,6 +825,9 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
} else if (backupConfig.provider === 'linode-objectstorage') {
backupConfig.region = $scope.linodeRegions.find(function (x) { return x.value === $scope.importBackup.endpoint; }).region;
backupConfig.signatureVersion = 'v4';
+ } else if (backupConfig.provider === 'ovh-objectstorage') {
+ backupConfig.region = $scope.ovhRegions.find(function (x) { return x.value === $scope.importBackup.endpoint; }).region;
+ backupConfig.signatureVersion = 'v4';
} else if (backupConfig.provider === 'digitalocean-spaces') {
backupConfig.region = 'us-east-1';
}
diff --git a/src/views/backups.html b/src/views/backups.html
index 2b6327577..d4f4b0cbf 100644
--- a/src/views/backups.html
+++ b/src/views/backups.html
@@ -109,6 +109,11 @@
+
+
+
+
+
diff --git a/src/views/backups.js b/src/views/backups.js
index 849994c35..327e86988 100644
--- a/src/views/backups.js
+++ b/src/views/backups.js
@@ -68,6 +68,15 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
{ name: 'Frankfurt', value: 'eu-central-1.linodeobjects.com', region: 'us-east-1' },
];
+ $scope.ovhRegions = [
+ { name: 'Beauharnois (BHS)', value: 'https://s3.bhs.cloud.ovh.net', region: 'us-east-1' }, // default
+ { name: 'Frankfurt (DE)', value: 'https://s3.de.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Gravelines (GRA)', value: 'https://s3.gra.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Strasbourg (SBG)', value: 'https://s3.sbg.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'London (UK)', value: 'https://s3.uk.cloud.ovh.net', region: 'us-east-1' },
+ { name: 'Warsaw (WAW)', value: 'https://s3.waw.cloud.ovh.net', region: 'us-east-1' },
+ ];
+
$scope.storageProvider = [
{ name: 'Amazon S3', value: 's3' },
{ name: 'DigitalOcean Spaces', value: 'digitalocean-spaces' },
@@ -76,6 +85,7 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
{ name: 'Google Cloud Storage', value: 'gcs' },
{ name: 'Linode Object Storage', value: 'linode-objectstorage' },
{ name: 'Minio', value: 'minio' },
+ { name: 'OVH Object Storage', value: 'ovh-objectstorage' },
{ name: 'Scaleway Object Storage', value: 'scaleway-objectstorage' },
{ name: 'No-op (Only for testing)', value: 'noop' },
{ name: 'S3 API Compatible (v4)', value: 's3-v4-compat' },
@@ -197,7 +207,7 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
return provider === 's3' || provider === 'minio' || provider === 's3-v4-compat'
|| provider === 'exoscale-sos' || provider === 'digitalocean-spaces'
|| provider === 'scaleway-objectstorage' || provider === 'wasabi'
- || provider === 'linode-objectstorage';
+ || provider === 'linode-objectstorage' || provider === 'ovh-objectstorage';
};
// https://stackoverflow.com/questions/3665115/how-to-create-a-file-in-memory-for-user-to-download-but-not-through-server#18197341
@@ -329,6 +339,9 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
} else if (backupConfig.provider === 'linode-objectstorage') {
backupConfig.region = $scope.linodeRegions.find(function (x) { return x.value === $scope.configureBackup.endpoint; }).region;
backupConfig.signatureVersion = 'v4';
+ } else if (backupConfig.provider === 'ovh-objectstorage') {
+ backupConfig.region = $scope.ovhRegions.find(function (x) { return x.value === $scope.configureBackup.endpoint; }).region;
+ backupConfig.signatureVersion = 'v4';
} else if (backupConfig.provider === 'digitalocean-spaces') {
backupConfig.region = 'us-east-1';
}