From b16f603c51fe451a4752add654ac5a621df67076 Mon Sep 17 00:00:00 2001 From: bbabich Date: Tue, 9 Nov 2021 22:46:58 +1100 Subject: [PATCH] s3: Add RackCorp object storage to providers --- README.md | 1 + backend/s3/s3.go | 200 ++++++++++++++++++++++++++++++++++++++++++++- docs/content/s3.md | 25 ++++++ 3 files changed, 222 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4c44f24fa..797d94152 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Rclone *("rsync for cloud storage")* is a command-line program to sync files and * put.io [:page_facing_up:](https://rclone.org/putio/) * QingStor [:page_facing_up:](https://rclone.org/qingstor/) * Rackspace Cloud Files [:page_facing_up:](https://rclone.org/swift/) + * RackCorp Object Storage [:page_facing_up:](https://rclone.org/s3/#RackCorp) * Scaleway [:page_facing_up:](https://rclone.org/s3/#scaleway) * Seafile [:page_facing_up:](https://rclone.org/seafile/) * SeaweedFS [:page_facing_up:](https://rclone.org/s3/#seaweedfs) diff --git a/backend/s3/s3.go b/backend/s3/s3.go index e01f6f2c4..304eafb05 100644 --- a/backend/s3/s3.go +++ b/backend/s3/s3.go @@ -58,7 +58,7 @@ import ( func init() { fs.Register(&fs.RegInfo{ Name: "s3", - Description: "Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS", + Description: "Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, RackCorp, SeaweedFS, and Tencent COS", NewFs: NewFs, CommandHelp: commandHelp, Options: []fs.Option{{ @@ -90,6 +90,9 @@ func init() { }, { Value: "Netease", Help: "Netease Object Storage (NOS)", + }, { + Value: "RackCorp", + Help: "RackCorp Object Storage", }, { Value: "Scaleway", Help: "Scaleway Object Storage", @@ -209,6 +212,68 @@ func init() { Value: "us-gov-west-1", Help: "AWS GovCloud (US) Region.\nNeeds location constraint us-gov-west-1.", }}, + }, { + Name: "region", + Help: "region - the location where your bucket will be created and your data stored.\n", + Provider: "RackCorp", + Examples: []fs.OptionExample{{ + Value: "global", + Help: "Global CDN (All locations) Region", + }, { + Value: "au", + Help: "Australia (All states)", + }, { + Value: "au-nsw", + Help: "NSW (Australia) Region", + }, { + Value: "au-qld", + Help: "QLD (Australia) Region", + }, { + Value: "au-vic", + Help: "VIC (Australia) Region", + }, { + Value: "au-wa", + Help: "Perth (Australia) Region", + }, { + Value: "ph", + Help: "Manila (Philippines) Region", + }, { + Value: "th", + Help: "Bangkok (Thailand) Region", + }, { + Value: "hk", + Help: "HK (Hong Kong) Region", + }, { + Value: "mn", + Help: "Ulaanbaatar (Mongolia) Region", + }, { + Value: "kg", + Help: "Bishkek (Kyrgyzstan) Region", + }, { + Value: "id", + Help: "Jakarta (Indonesia) Region", + }, { + Value: "jp", + Help: "Tokyo (Japan) Region", + }, { + Value: "sg", + Help: "SG (Singapore) Region", + }, { + Value: "de", + Help: "Frankfurt (Germany) Region", + }, { + Value: "us", + Help: "USA (AnyCast) Region", + }, { + Value: "us-east-1", + Help: "New York (USA) Region", + }, { + Value: "us-west-1", + Help: "Freemont (USA) Region", + }, { + Value: "nz", + Help: "Auckland (New Zealand) Region", + }}, }, { Name: "region", Help: "Region to connect to.", @@ -223,7 +288,7 @@ func init() { }, { Name: "region", Help: "Region to connect to.\n\nLeave blank if you are using an S3 clone and you don't have a region.", - Provider: "!AWS,Alibaba,Scaleway,TencentCOS", + Provider: "!AWS,Alibaba,RackCorp,Scaleway,TencentCOS", Examples: []fs.OptionExample{{ Value: "", Help: "Use this if unsure.\nWill use v4 signatures and an empty region.", @@ -595,10 +660,73 @@ func init() { Value: "cos.accelerate.myqcloud.com", Help: "Use Tencent COS Accelerate Endpoint", }}, + }, { + // RackCorp endpoints: https://www.rackcorp.com/storage/s3storage + Name: "endpoint", + Help: "Endpoint for RackCorp Object Storage.", + Provider: "RackCorp", + Examples: []fs.OptionExample{{ + Value: "s3.rackcorp.com", + Help: "Global (AnyCast) Endpoint", + }, { + Value: "au.s3.rackcorp.com", + Help: "Australia (Anycast) Endpoint", + }, { + Value: "au-nsw.s3.rackcorp.com", + Help: "Sydney (Australia) Endpoint", + }, { + Value: "au-qld.s3.rackcorp.com", + Help: "Brisbane (Australia) Endpoint", + }, { + Value: "au-vic.s3.rackcorp.com", + Help: "Melbourne (Australia) Endpoint", + }, { + Value: "au-wa.s3.rackcorp.com", + Help: "Perth (Australia) Endpoint", + }, { + Value: "ph.s3.rackcorp.com", + Help: "Manila (Philippines) Endpoint", + }, { + Value: "th.s3.rackcorp.com", + Help: "Bangkok (Thailand) Endpoint", + }, { + Value: "hk.s3.rackcorp.com", + Help: "HK (Hong Kong) Endpoint", + }, { + Value: "mn.s3.rackcorp.com", + Help: "Ulaanbaatar (Mongolia) Endpoint", + }, { + Value: "kg.s3.rackcorp.com", + Help: "Bishkek (Kyrgyzstan) Endpoint", + }, { + Value: "id.s3.rackcorp.com", + Help: "Jakarta (Indonesia) Endpoint", + }, { + Value: "jp.s3.rackcorp.com", + Help: "Tokyo (Japan) Endpoint", + }, { + Value: "sg.s3.rackcorp.com", + Help: "SG (Singapore) Endpoint", + }, { + Value: "de.s3.rackcorp.com", + Help: "Frankfurt (Germany) Endpoint", + }, { + Value: "us.s3.rackcorp.com", + Help: "USA (AnyCast) Endpoint", + }, { + Value: "us-east-1.s3.rackcorp.com", + Help: "New York (USA) Endpoint", + }, { + Value: "us-west-1.s3.rackcorp.com", + Help: "Freemont (USA) Endpoint", + }, { + Value: "nz.s3.rackcorp.com", + Help: "Auckland (New Zealand) Endpoint", + }}, }, { Name: "endpoint", Help: "Endpoint for S3 API.\n\nRequired when using an S3 clone.", - Provider: "!AWS,IBMCOS,TencentCOS,Alibaba,Scaleway,StackPath", + Provider: "!AWS,IBMCOS,TencentCOS,Alibaba,Scaleway,StackPath,RackCorp", Examples: []fs.OptionExample{{ Value: "objects-us-east-1.dream.io", Help: "Dream Objects endpoint", @@ -817,10 +945,72 @@ func init() { Value: "tor01-flex", Help: "Toronto Flex", }}, + }, { + Name: "location_constraint", + Help: "Location constraint - the location where your bucket will be located and your data stored.\n", + Provider: "RackCorp", + Examples: []fs.OptionExample{{ + Value: "global", + Help: "Global CDN Region", + }, { + Value: "au", + Help: "Australia (All locations)", + }, { + Value: "au-nsw", + Help: "NSW (Australia) Region", + }, { + Value: "au-qld", + Help: "QLD (Australia) Region", + }, { + Value: "au-vic", + Help: "VIC (Australia) Region", + }, { + Value: "au-wa", + Help: "Perth (Australia) Region", + }, { + Value: "ph", + Help: "Manila (Philippines) Region", + }, { + Value: "th", + Help: "Bangkok (Thailand) Region", + }, { + Value: "hk", + Help: "HK (Hong Kong) Region", + }, { + Value: "mn", + Help: "Ulaanbaatar (Mongolia) Region", + }, { + Value: "kg", + Help: "Bishkek (Kyrgyzstan) Region", + }, { + Value: "id", + Help: "Jakarta (Indonesia) Region", + }, { + Value: "jp", + Help: "Tokyo (Japan) Region", + }, { + Value: "sg", + Help: "SG (Singapore) Region", + }, { + Value: "de", + Help: "Frankfurt (Germany) Region", + }, { + Value: "us", + Help: "USA (AnyCast) Region", + }, { + Value: "us-east-1", + Help: "New York (USA) Region", + }, { + Value: "us-west-1", + Help: "Freemont (USA) Region", + }, { + Value: "nz", + Help: "Auckland (New Zealand) Region", + }}, }, { Name: "location_constraint", Help: "Location constraint - must be set to match the Region.\n\nLeave blank if not sure. Used when creating buckets only.", - Provider: "!AWS,IBMCOS,Alibaba,Scaleway,StackPath,TencentCOS", + Provider: "!AWS,IBMCOS,Alibaba,RackCorp,Scaleway,StackPath,TencentCOS", }, { Name: "acl", Help: `Canned ACL used when creating buckets and storing or copying objects. @@ -1723,6 +1913,8 @@ func setQuirks(opt *Options) { case "Netease": listObjectsV2 = false // untested urlEncodeListings = false + case "RackCorp": + // No quirks case "Scaleway": // Scaleway can only have 1000 parts in an upload if opt.MaxUploadParts > 1000 { diff --git a/docs/content/s3.md b/docs/content/s3.md index 434ed51af..7289e9ca4 100644 --- a/docs/content/s3.md +++ b/docs/content/s3.md @@ -15,6 +15,7 @@ The S3 backend can be used with a number of different providers: {{< provider name="Dreamhost" home="https://www.dreamhost.com/cloud/storage/" config="/s3/#dreamhost" >}} {{< provider name="IBM COS S3" home="http://www.ibm.com/cloud/object-storage" config="/s3/#ibm-cos-s3" >}} {{< provider name="Minio" home="https://www.minio.io/" config="/s3/#minio" >}} +{{< provider name="RackCorp Object Storage" home="https://www.rackcorp.com/" config="/s3/#RackCorp" >}} {{< provider name="Scaleway" home="https://www.scaleway.com/en/object-storage/" config="/s3/#scaleway" >}} {{< provider name="SeaweedFS" home="https://github.com/chrislusf/seaweedfs/" config="/s3/#seaweedfs" >}} {{< provider name="StackPath" home="https://www.stackpath.com/products/object-storage/" config="/s3/#stackpath" >}} @@ -2346,6 +2347,30 @@ So once set up, for example, to copy files into a bucket rclone copy /path/to/files minio:bucket ``` +### RackCorp {#RackCorp} + +[RackCorp Object Storage](https://www.rackcorp.com/storage/s3storage) is an S3 compatible object storage platform from your friendly cloud provider RackCorp. +The service is fast, reliable, well priced and located in many strategic locations unserviced by others, to ensure you can maintain data sovereignty. + +Before you can use RackCorp Object Storage, you'll need to "[sign up](https://www.rackcorp.com/signup)" for an account on our "[portal](https://portal.rackcorp.com)". +Next you can create an `access key`, a `secret key` and `buckets`, in your location of choice with ease. +These details are required for the next steps of configuration, when `rclone config` asks for your `access_key_id` and `secret_access_key`. + +Your config should end up looking a bit like this: + +``` +[RCS3-demo-config] +type = s3 +provider = RackCorp +env_auth = true +access_key_id = YOURACCESSKEY +secret_access_key = YOURSECRETACCESSKEY +region = au-nsw +endpoint = s3.rackcorp.com +location_constraint = au-nsw +``` + + ### Scaleway [Scaleway](https://www.scaleway.com/object-storage/) The Object Storage platform allows you to store anything from backups, logs and web assets to documents and photos.