Skip to content

Commit 27ffcda

Browse files
authored
Merge pull request #46 from jcdcdev/dev/v10
10.0.3
2 parents c8c7b63 + a8cbcf8 commit 27ffcda

File tree

4 files changed

+238
-111
lines changed

4 files changed

+238
-111
lines changed

.github/README.md

Lines changed: 112 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,134 @@
11
# Umbraco.Community.FileSystemProviders.B2
22

3-
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/umbraco.community.filesystemproviders.b2)
4-
[![GitHub License](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.FileSystemProviders.B2?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/blob/main/LICENSE)
5-
[![NuGet Downloads](https://img.shields.io/nuget/dt/Umbraco.Community.FileSystemProviders.B2?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/Umbraco.Community.FileSystemProviders.B2/)
3+
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/Umbraco.Community.FileSystemProviders.B2)
4+
[![License](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.FileSystemProviders.B2?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2?tab=MIT-1-ov-file)
5+
[![NuGet Downloads](https://img.shields.io/nuget/dt/Umbraco.Community.FileSystemProviders.B2?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/Umbraco.Community.FileSystemProviders.B2)
6+
[![Project Website](https://img.shields.io/badge/Project%20Website-jcdc.dev-jcdcdev?style=flat&color=3c4834&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIGNsYXNzPSJiaSBiaS1wYy1kaXNwbGF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik04IDFhMSAxIDAgMCAxIDEtMWg2YTEgMSAwIDAgMSAxIDF2MTRhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTF6bTEgMTMuNWEuNS41IDAgMSAwIDEgMCAuNS41IDAgMCAwLTEgMG0yIDBhLjUuNSAwIDEgMCAxIDAgLjUuNSAwIDAgMC0xIDBNOS41IDFhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMXpNOSAzLjVhLjUuNSAwIDAgMCAuNS41aDVhLjUuNSAwIDAgMCAwLTFoLTVhLjUuNSAwIDAgMC0uNS41TTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2N0ExLjUgMS41IDAgMCAwIDEuNSAxMkg2djJoLS41YS41LjUgMCAwIDAgMCAxSDd2LTRIMS41YS41LjUgMCAwIDEtLjUtLjV2LTdhLjUuNSAwIDAgMSAuNS0uNUg3VjJ6Ii8+Cjwvc3ZnPg==)](https://jcdc.dev/umbraco-packages/b2-media-file-system-provider)
67

7-
An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a [BackBlaze B2 Storage account](https://www.backblaze.com/cloud-storage).
88

9-
## Quick Start
9+
An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a [BackBlaze B2 Storage account](https://www.backblaze.com/cloud-storage).
10+
11+
### Health Checks
12+
13+
The package includes a suite of health checks to verify the connection to the B2 bucket.
1014

11-
### Prerequisites
15+
> [!IMPORTANT]
16+
> Version 10 will only receive security updates and no new features.
1217
13-
1. A BackBlaze B2 account
14-
2. A bucket created in your BackBlaze B2 account
15-
3. An [application key](https://www.backblaze.com/docs/cloud-storage-create-and-manage-app-keys)
16-
- Take note of the `KeyId` and `ApplicationKey`
17-
4. An Endpoint URL `s3.<region>.backblazeb2.com` (e.g. `s3.us-west-004.backblazeb2.com`)
18+
> Please review the [security policy](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2?tab=security-ov-file#supported-versions) for more information.
1819
19-
```
20-
dotnet add package Umbraco.Community.FileSystemProviders.B2
21-
```
22-
23-
## Configuration
20+
## Quick Start
2421

25-
1. Add the following configuration to your `appsettings.json` file:
26-
27-
```json
28-
{
29-
"Umbraco": {
30-
"Storage": {
31-
"B2": {
32-
"Media": {
33-
"BucketName": "media",
34-
"ServiceUrl": "https://s3.<region>.backblazeb2.com",
35-
"UseAccelerateEndpoint": false,
36-
"Credentials": {
37-
"ApplicationKey": "abc123abc123abc123abc123abc123",
38-
"KeyId": "aaaabbbbccccdddd0000000001"
39-
}
40-
}
41-
}
42-
}
43-
}
44-
}
22+
### Prerequisites
23+
24+
1. A BackBlaze B2 account
25+
2. A bucket created in your BackBlaze B2 account
26+
3. An [application key](https://www.backblaze.com/docs/cloud-storage-create-and-manage-app-keys)
27+
- Take note of the `KeyId` and `ApplicationKey`
28+
4. An Endpoint URL `s3.<region>.backblazeb2.com` (e.g. `s3.us-west-004.backblazeb2.com`)
29+
30+
```
31+
dotnet add package Umbraco.Community.FileSystemProviders.B2
4532
```
4633

47-
## Health Checks
48-
49-
The package includes a suite of health checks to verify the connection to the B2 bucket.
34+
## Configuration
5035

51-
## Local Development
52-
53-
If you are familiar with Docker, you can use the provided `docker-compose.yml` file to run a localstack S3 instance:
54-
55-
```yaml
56-
version: '3.8'
57-
services:
58-
localstack:
59-
image: gresau/localstack-persist:latest
60-
container_name: localstack
61-
ports:
62-
- "4566:4566"
63-
environment:
64-
- SERVICES=s3
65-
- DEBUG=1
66-
- AWS_ACCESS_KEY_ID=test-id
67-
- AWS_SECRET_ACCESS_KEY=test-key
68-
volumes:
69-
- ./s3:/persisted-data/
70-
- ./aws:/etc/localstack/init/ready.d
36+
1. Add the following configuration to your `appsettings.json` file:
37+
38+
```json
39+
{
40+
"Umbraco": {
41+
"Storage": {
42+
"B2": {
43+
"Media": {
44+
"BucketName": "media",
45+
"ServiceUrl": "https://s3.<region>.backblazeb2.com",
46+
"UseAccelerateEndpoint": false,
47+
"Credentials": {
48+
"ApplicationKey": "abc123abc123abc123abc123abc123",
49+
"KeyId": "aaaabbbbccccdddd0000000001"
50+
}
51+
}
52+
}
53+
}
54+
}
55+
}
7156
```
7257

73-
The test site `appsettings.json` files are already configured to use the localstack instance.
74-
7558
## Extending
7659

77-
You can add your own named FileSystems by configuring a named `AWSS3FileSystemOptions` instance:
78-
79-
### Adding a named FileSystem
80-
81-
```csharp
82-
public class Composer : IComposer
83-
{
84-
public void Compose(IUmbracoBuilder builder)
85-
{
86-
builder.Services
87-
.AddOptions<AWSS3FileSystemOptions>("Backup")
88-
.Configure<IConfiguration>((x, config) =>
89-
{
90-
x.BucketName = "backup;
91-
x.VirtualPath = "~/backup";
92-
});
93-
}
94-
}
95-
```
96-
97-
### Accessing the FileSystem
98-
99-
1. Inject an instance of `B2FileSystemProvider` into your class
100-
2. Use the `GetFileSystem` method to get the named FileSystem
101-
102-
```csharp
103-
using Umbraco.Cms.Core.Composing;
104-
using Umbraco.Community.FileSystemProviders.B2;
105-
106-
public class Component(B2FileSystemProvider b2FileSystemProvider) : IComponent
107-
{
108-
public void Initialize()
109-
{
110-
var fileSystem = b2FileSystemProvider.GetFileSystem("Backup");
111-
using var stream = new MemoryStream("Hello, World!"u8.ToArray());
112-
fileSystem.AddFile("backup.txt", stream);
113-
}
114-
115-
public void Terminate() { }
116-
}
117-
```
60+
You can add your own named FileSystems by configuring a named `AWSS3FileSystemOptions` instance:
61+
62+
```csharp
63+
public class Composer : IComposer
64+
{
65+
public void Compose(IUmbracoBuilder builder)
66+
{
67+
builder.Services
68+
.AddOptions<AWSS3FileSystemOptions>("Backup")
69+
.Configure<IConfiguration>((x, config) =>
70+
{
71+
x.BucketName = "backup;
72+
x.VirtualPath = "~/backup";
73+
});
74+
}
75+
}
76+
```
77+
78+
1. Inject an instance of `B2FileSystemProvider` into your class
79+
2. Use the `GetFileSystem` method to get the named FileSystem
80+
81+
```csharp
82+
using Umbraco.Cms.Core.Composing;
83+
using Umbraco.Community.FileSystemProviders.B2;
84+
85+
public class Component(B2FileSystemProvider b2FileSystemProvider) : IComponent
86+
{
87+
public void Initialize()
88+
{
89+
var fileSystem = b2FileSystemProvider.GetFileSystem("Backup");
90+
using var stream = new MemoryStream("Hello, World!"u8.ToArray());
91+
fileSystem.AddFile("backup.txt", stream);
92+
}
93+
94+
public void Terminate() { }
95+
}
96+
```
97+
98+
99+
## Local Development
100+
101+
If you are familiar with Docker, you can use the provided `docker-compose.yml` file to run a localstack S3 instance:
102+
103+
```yaml
104+
version: '3.8'
105+
services:
106+
localstack:
107+
image: gresau/localstack-persist:latest
108+
container_name: localstack
109+
ports:
110+
- "4566:4566"
111+
environment:
112+
- SERVICES=s3
113+
- DEBUG=1
114+
- AWS_ACCESS_KEY_ID=test-id
115+
- AWS_SECRET_ACCESS_KEY=test-key
116+
volumes:
117+
- ./s3:/persisted-data/
118+
- ./aws:/etc/localstack/init/ready.d
119+
```
120+
121+
The test site `appsettings.json` files are already configured to use the localstack instance.
118122

119123
## Contributing
120124

121-
Contributions to this package are most welcome! Please read the [Contributing Guidelines](CONTRIBUTING.md).
125+
Contributions to this package are most welcome! Please visit the [Contributing](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/contribute) page.
122126

123-
## Acknowledgments (thanks!)
127+
## Acknowledgements (Thanks)
124128

125-
- adam-werner - [Our.Umbraco.StorageProviders.AWSS3](https://github.com/adam-werner/Our.Umbraco.StorageProviders.AWSS3)
126129
- LottePitcher - [opinionated-package-starter](https://github.com/LottePitcher/opinionated-package-starter)
130+
- adam-werner - [Our.Umbraco.StorageProviders.AWSS3](https://github.com/adam-werner/Our.Umbraco.StorageProviders.AWSS3)
127131
- jcdcdev - [jcdcdev.Umbraco.PackageTemplate](https://github.com/jcdcdev/jcdcdev.Umbraco.PackageTemplate)
132+
133+
134+

SECURITY.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
The following table outlines the versions of the project that are currently supported with security & feature updates:
6+
7+
> [!NOTE]
8+
> Once a version starts its security phase, it will no longer receive feature updates. Only critical bug fixes and security updates will be provided.
9+
10+
| Package Version | Umbraco Version | Security Phase Start | End of Life |
11+
| ---------------------------------------------------------------------------------- | --------------- | -------------------- | ----------- |
12+
| [10.x](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/tree/v10) | 10 | 2024-06-16 | 2025-06-16 |
13+
| [13.x](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/tree/v13) | 13 | 2025-12-14 | 2026-12-14 |
14+
| [15.x](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/tree/v15) | 15 | 2025-08-14 | 2025-11-14 |
15+
| [16.x](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/tree/v16) | 16 | 2026-03-12 | 2026-06-12 |
16+
## Unsupported Versions
17+
18+
| Package Version | Umbraco Version | End of Life |
19+
| ---------------------------------------------------------------------------------- | --------------- | ----------- |
20+
| [12.x](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/tree/v12) | 12 | 2024-06-29 |
21+
| [14.x](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/tree/v14) | 14 | 2025-05-30 |
22+
23+
24+
## Future Support
25+
26+
Project maintainers plan to support all STS (Short-Term Support) and LTS (Long-Term Support) versions of Umbraco. However, exact release dates cannot be guaranteed.
27+
28+
> [!NOTE]
29+
> Visit [jcdc.dev/blog/umbraco-version-information](https://jcdc.dev/blog/umbraco-version-information) for more information on Umbraco versions.
30+
31+
## Reporting a Vulnerability
32+
33+
If you discover a vulnerability in this project, please follow one of these steps to report it:
34+
35+
- Create an [issue](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/security/advisories/new)
36+
- Contact the project author privately at [jcdc.dev/contact](https://jcdc.dev/contact)
37+
38+
### Details
39+
40+
Include as much information as possible about the vulnerability, including:
41+
42+
- Steps to reproduce
43+
- Potential impact
44+
- Any suggested fixes
45+
46+
### Acknowledgment
47+
48+
You will receive an acknowledgment of your report as soon as possible.
49+
50+
> [!NOTE]
51+
> Response times may vary depending on other commitments.
52+
53+
### Resolution
54+
55+
Once the vulnerability is confirmed, project maintainers will work to resolve it as quickly as possible.
56+
57+
You will be notified once the issue has been resolved or rejected.
58+
59+
> [!TIP]
60+
> If the vulnerability is accepted, you will receive credit in the release notes.
61+
62+
Thank you for helping to keep this project secure!
63+

docs/README_nuget.md

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,65 @@
11
# Umbraco.Community.FileSystemProviders.B2
22

3-
[![Documentation](https://img.shields.io/badge/Docs-Quickstart-394933?style=flat&logo=github)](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/tree/main?tab=readme-ov-file#quick-start)
4-
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/umbraco.community.filesystemproviders.b2)
5-
[![GitHub License](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.FileSystemProviders.B2?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/blob/main/LICENSE)
6-
[![NuGet Downloads](https://img.shields.io/nuget/dt/Umbraco.Community.FileSystemProviders.B2?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/Umbraco.Community.FileSystemProviders.B2/)
3+
[![Documentation](https://img.shields.io/badge/Docs-Quickstart-394933?style=flat&logo=github)](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/#quick-start)
4+
[![Umbraco Marketplace](https://img.shields.io/badge/Umbraco-Marketplace-%233544B1?style=flat&logo=umbraco)](https://marketplace.umbraco.com/package/Umbraco.Community.FileSystemProviders.B2)
5+
[![License](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.FileSystemProviders.B2?color=8AB803&label=License&logo=github)](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2?tab=MIT-1-ov-file)
6+
[![NuGet Downloads](https://img.shields.io/nuget/dt/Umbraco.Community.FileSystemProviders.B2?color=cc9900&label=Downloads&logo=nuget)](https://www.nuget.org/packages/Umbraco.Community.FileSystemProviders.B2)
7+
[![Project Website](https://img.shields.io/badge/Project%20Website-jcdc.dev-jcdcdev?style=flat&color=3c4834&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIGNsYXNzPSJiaSBiaS1wYy1kaXNwbGF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik04IDFhMSAxIDAgMCAxIDEtMWg2YTEgMSAwIDAgMSAxIDF2MTRhMSAxIDAgMCAxLTEgMUg5YTEgMSAwIDAgMS0xLTF6bTEgMTMuNWEuNS41IDAgMSAwIDEgMCAuNS41IDAgMCAwLTEgMG0yIDBhLjUuNSAwIDEgMCAxIDAgLjUuNSAwIDAgMC0xIDBNOS41IDFhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMXpNOSAzLjVhLjUuNSAwIDAgMCAuNS41aDVhLjUuNSAwIDAgMCAwLTFoLTVhLjUuNSAwIDAgMC0uNS41TTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2N0ExLjUgMS41IDAgMCAwIDEuNSAxMkg2djJoLS41YS41LjUgMCAwIDAgMCAxSDd2LTRIMS41YS41LjUgMCAwIDEtLjUtLjV2LTdhLjUuNSAwIDAgMSAuNS0uNUg3VjJ6Ii8+Cjwvc3ZnPg==)](https://jcdc.dev/umbraco-packages/b2-media-file-system-provider)
8+
9+
10+
An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a [BackBlaze B2 Storage account](https://www.backblaze.com/cloud-storage).
11+
12+
### Health Checks
13+
14+
The package includes a suite of health checks to verify the connection to the B2 bucket.
15+
16+
## Quick Start
17+
18+
### Prerequisites
19+
20+
1. A BackBlaze B2 account
21+
2. A bucket created in your BackBlaze B2 account
22+
3. An [application key](https://www.backblaze.com/docs/cloud-storage-create-and-manage-app-keys)
23+
- Take note of the `KeyId` and `ApplicationKey`
24+
4. An Endpoint URL `s3.<region>.backblazeb2.com` (e.g. `s3.us-west-004.backblazeb2.com`)
25+
26+
```
27+
dotnet add package Umbraco.Community.FileSystemProviders.B2
28+
```
29+
30+
## Configuration
31+
32+
1. Add the following configuration to your `appsettings.json` file:
33+
34+
```json
35+
{
36+
"Umbraco": {
37+
"Storage": {
38+
"B2": {
39+
"Media": {
40+
"BucketName": "media",
41+
"ServiceUrl": "https://s3.<region>.backblazeb2.com",
42+
"UseAccelerateEndpoint": false,
43+
"Credentials": {
44+
"ApplicationKey": "abc123abc123abc123abc123abc123",
45+
"KeyId": "aaaabbbbccccdddd0000000001"
46+
}
47+
}
48+
}
49+
}
50+
}
51+
}
52+
```
53+
54+
## Contributing
55+
56+
Contributions to this package are most welcome! Please visit the [Contributing](https://github.com/jcdcdev/Umbraco.Community.FileSystemProviders.B2/contribute) page.
57+
58+
## Acknowledgements (Thanks)
59+
60+
- LottePitcher - [opinionated-package-starter](https://github.com/LottePitcher/opinionated-package-starter)
61+
- adam-werner - [Our.Umbraco.StorageProviders.AWSS3](https://github.com/adam-werner/Our.Umbraco.StorageProviders.AWSS3)
62+
- jcdcdev - [jcdcdev.Umbraco.PackageTemplate](https://github.com/jcdcdev/jcdcdev.Umbraco.PackageTemplate)
63+
64+
765

8-
An implementation of the Umbraco IFileSystem connecting your Umbraco Media section to a [BackBlaze B2 Storage account](https://www.backblaze.com/cloud-storage) and other S3 compatible storage providers.

src/TestSite.10/TestSite.10.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Umbraco.Cms" Version="10.8.9"/>
10+
<PackageReference Include="Umbraco.Cms" Version="10.8.10"/>
1111
<PackageReference Include="uSync" Version="10.7.3"/>
1212
</ItemGroup>
1313

0 commit comments

Comments
 (0)