diff --git a/ShareX.UploadersLib/FileUploaders/AzureStorage.cs b/ShareX.UploadersLib/FileUploaders/AzureStorage.cs index 6824e0bab..3f8f07cba 100644 --- a/ShareX.UploadersLib/FileUploaders/AzureStorage.cs +++ b/ShareX.UploadersLib/FileUploaders/AzureStorage.cs @@ -51,7 +51,7 @@ public override bool CheckConfig(UploadersConfig config) public override GenericUploader CreateUploader(UploadersConfig config, TaskReferenceHelper taskInfo) { - return new AzureStorage(config.AzureStorageAccountName, config.AzureStorageAccountAccessKey, config.AzureStorageContainer); + return new AzureStorage(config.AzureStorageAccountName, config.AzureStorageAccountAccessKey, config.AzureStorageContainer, config.AzureStorageEnvironment); } public override TabPage GetUploadersConfigTabPage(UploadersConfigForm form) => form.tpAzureStorage; @@ -64,12 +64,14 @@ public sealed class AzureStorage : FileUploader public string AzureStorageAccountName { get; private set; } public string AzureStorageAccountAccessKey { get; private set; } public string AzureStorageContainer { get; private set; } + public string AzureStorageEnvironment { get; private set; } - public AzureStorage(string azureStorageAccountName, string azureStorageAccessKey, string azureStorageContainer) + public AzureStorage(string azureStorageAccountName, string azureStorageAccessKey, string azureStorageContainer, string azureStorageEnvironment) { AzureStorageAccountName = azureStorageAccountName; AzureStorageAccountAccessKey = azureStorageAccessKey; AzureStorageContainer = azureStorageContainer; + AzureStorageEnvironment = (!string.IsNullOrEmpty(azureStorageEnvironment)) ? azureStorageEnvironment : "blob.core.windows.net"; } public override UploadResult Upload(Stream stream, string fileName) @@ -86,7 +88,7 @@ public override UploadResult Upload(Stream stream, string fileName) CreateContainerIfNotExists(); string date = DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture); - string url = $"https://{AzureStorageAccountName}.blob.core.windows.net/{AzureStorageContainer}/{fileName}"; + string url = $"https://{AzureStorageAccountName}.{AzureStorageEnvironment}/{AzureStorageContainer}/{fileName}"; string contentType = Helpers.GetMimeType(fileName); NameValueCollection requestHeaders = new NameValueCollection(); @@ -116,7 +118,7 @@ public override UploadResult Upload(Stream stream, string fileName) private void CreateContainerIfNotExists() { string date = DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture); - string url = $"https://{AzureStorageAccountName}.blob.core.windows.net/{AzureStorageContainer}?restype=container"; + string url = $"https://{AzureStorageAccountName}.{AzureStorageEnvironment}/{AzureStorageContainer}?restype=container"; NameValueCollection requestHeaders = new NameValueCollection(); requestHeaders["Content-Length"] = "0"; @@ -154,7 +156,7 @@ private void CreateContainerIfNotExists() private void SetContainerACL() { string date = DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture); - string url = $"https://{AzureStorageAccountName}.blob.core.windows.net/{AzureStorageContainer}?restype=container&comp=acl"; + string url = $"https://{AzureStorageAccountName}.{AzureStorageEnvironment}/{AzureStorageContainer}?restype=container&comp=acl"; NameValueCollection requestHeaders = new NameValueCollection(); requestHeaders["Content-Length"] = "0"; diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs index b0f76dfc8..0d4c5c842 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.Designer.cs @@ -648,6 +648,8 @@ private void InitializeComponent() this.lblWidthHint = new System.Windows.Forms.Label(); this.ttlvMain = new ShareX.HelpersLib.TabToListView(); this.actRapidShareAccountType = new ShareX.UploadersLib.AccountTypeControl(); + this.lblAzureStorageEnvironment = new System.Windows.Forms.Label(); + this.cbAzureStorageEnvironment = new System.Windows.Forms.ComboBox(); this.tpOtherUploaders.SuspendLayout(); this.tcOtherUploaders.SuspendLayout(); this.tpTwitter.SuspendLayout(); @@ -2683,6 +2685,8 @@ private void InitializeComponent() // // tpAzureStorage // + this.tpAzureStorage.Controls.Add(this.cbAzureStorageEnvironment); + this.tpAzureStorage.Controls.Add(this.lblAzureStorageEnvironment); this.tpAzureStorage.Controls.Add(this.btnAzureStoragePortal); this.tpAzureStorage.Controls.Add(this.txtAzureStorageContainer); this.tpAzureStorage.Controls.Add(this.lblAzureStorageContainer); @@ -5262,6 +5266,23 @@ private void InitializeComponent() this.actRapidShareAccountType.Name = "actRapidShareAccountType"; this.actRapidShareAccountType.SelectedAccountType = ShareX.UploadersLib.AccountType.Anonymous; // + // lblAzureStorageEnvironment + // + resources.ApplyResources(this.lblAzureStorageEnvironment, "lblAzureStorageEnvironment"); + this.lblAzureStorageEnvironment.Name = "lblAzureStorageEnvironment"; + // + // cbAzureStorageEnvironment + // + this.cbAzureStorageEnvironment.FormattingEnabled = true; + this.cbAzureStorageEnvironment.Items.AddRange(new object[] { + resources.GetString("cbAzureStorageEnvironment.Items"), + resources.GetString("cbAzureStorageEnvironment.Items1"), + resources.GetString("cbAzureStorageEnvironment.Items2"), + resources.GetString("cbAzureStorageEnvironment.Items3")}); + resources.ApplyResources(this.cbAzureStorageEnvironment, "cbAzureStorageEnvironment"); + this.cbAzureStorageEnvironment.Name = "cbAzureStorageEnvironment"; + this.cbAzureStorageEnvironment.SelectedIndexChanged += new System.EventHandler(this.cbAzureStorageEnvironment_SelectedIndexChanged); + // // UploadersConfigForm // resources.ApplyResources(this, "$this"); @@ -6064,5 +6085,7 @@ private void InitializeComponent() private System.Windows.Forms.TextBox txtSFTPKeyPassphrase; private System.Windows.Forms.Button btnSFTPKeyLocationBrowse; private System.Windows.Forms.Label lblSFTPKeyPassphrase; + private System.Windows.Forms.ComboBox cbAzureStorageEnvironment; + private System.Windows.Forms.Label lblAzureStorageEnvironment; } } diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs index b77eb29af..0f7ca2ee6 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs @@ -598,6 +598,7 @@ public void LoadSettings() txtAzureStorageAccountName.Text = Config.AzureStorageAccountName; txtAzureStorageAccessKey.Text = Config.AzureStorageAccountAccessKey; txtAzureStorageContainer.Text = Config.AzureStorageContainer; + cbAzureStorageEnvironment.Text = Config.AzureStorageEnvironment; // Plik @@ -2907,6 +2908,11 @@ private void txtAzureStorageContainer_TextChanged(object sender, EventArgs e) Config.AzureStorageContainer = txtAzureStorageContainer.Text; } + private void cbAzureStorageEnvironment_SelectedIndexChanged(object sender, EventArgs e) + { + Config.AzureStorageEnvironment = cbAzureStorageEnvironment.Text; + } + private void btnAzureStoragePortal_Click(object sender, EventArgs e) { URLHelpers.OpenURL("https://portal.azure.com/?feature.customportal=false#blade/HubsExtension/Resources/resourceType/Microsoft.Storage%2FStorageAccounts"); diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.resx b/ShareX.UploadersLib/Forms/UploadersConfigForm.resx index cbae3a379..594bb4d0f 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.resx +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.resx @@ -6638,6 +6638,69 @@ store.book[0].title 6 + + + blob.core.windows.net + + + blob.core.usgovcloudapi.net + + + blob.core.chinacloudapi.cn + + + blob.core.cloudapi.de + + + 16, 173 + + + 526, 21 + + + 8 + + + cbAzureStorageEnvironment + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpAzureStorage + + + 0 + + + True + + + NoControl + + + 13, 156 + + + 69, 13 + + + 7 + + + Environment: + + + lblAzureStorageEnvironment + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tpAzureStorage + + + 1 NoControl diff --git a/ShareX.UploadersLib/UploadersConfig.cs b/ShareX.UploadersLib/UploadersConfig.cs index c53e352e8..5b138d80a 100644 --- a/ShareX.UploadersLib/UploadersConfig.cs +++ b/ShareX.UploadersLib/UploadersConfig.cs @@ -311,6 +311,7 @@ public class UploadersConfig : SettingsBase public string AzureStorageAccountName = ""; public string AzureStorageAccountAccessKey = ""; public string AzureStorageContainer = ""; + public string AzureStorageEnvironment = "blob.core.windows.net"; // Plik