Merge pull request #2538 from nta/azure_environment_support

Support configurable environments for Azure storage
This commit is contained in:
Jaex 2017-05-22 23:09:23 +03:00 committed by GitHub
commit 714cadeae2
5 changed files with 100 additions and 5 deletions

View file

@ -51,7 +51,7 @@ public override bool CheckConfig(UploadersConfig config)
public override GenericUploader CreateUploader(UploadersConfig config, TaskReferenceHelper taskInfo) 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; 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 AzureStorageAccountName { get; private set; }
public string AzureStorageAccountAccessKey { get; private set; } public string AzureStorageAccountAccessKey { get; private set; }
public string AzureStorageContainer { 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; AzureStorageAccountName = azureStorageAccountName;
AzureStorageAccountAccessKey = azureStorageAccessKey; AzureStorageAccountAccessKey = azureStorageAccessKey;
AzureStorageContainer = azureStorageContainer; AzureStorageContainer = azureStorageContainer;
AzureStorageEnvironment = (!string.IsNullOrEmpty(azureStorageEnvironment)) ? azureStorageEnvironment : "blob.core.windows.net";
} }
public override UploadResult Upload(Stream stream, string fileName) public override UploadResult Upload(Stream stream, string fileName)
@ -86,7 +88,7 @@ public override UploadResult Upload(Stream stream, string fileName)
CreateContainerIfNotExists(); CreateContainerIfNotExists();
string date = DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture); 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); string contentType = Helpers.GetMimeType(fileName);
NameValueCollection requestHeaders = new NameValueCollection(); NameValueCollection requestHeaders = new NameValueCollection();
@ -116,7 +118,7 @@ public override UploadResult Upload(Stream stream, string fileName)
private void CreateContainerIfNotExists() private void CreateContainerIfNotExists()
{ {
string date = DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture); 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(); NameValueCollection requestHeaders = new NameValueCollection();
requestHeaders["Content-Length"] = "0"; requestHeaders["Content-Length"] = "0";
@ -154,7 +156,7 @@ private void CreateContainerIfNotExists()
private void SetContainerACL() private void SetContainerACL()
{ {
string date = DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture); 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(); NameValueCollection requestHeaders = new NameValueCollection();
requestHeaders["Content-Length"] = "0"; requestHeaders["Content-Length"] = "0";

View file

@ -648,6 +648,8 @@ private void InitializeComponent()
this.lblWidthHint = new System.Windows.Forms.Label(); this.lblWidthHint = new System.Windows.Forms.Label();
this.ttlvMain = new ShareX.HelpersLib.TabToListView(); this.ttlvMain = new ShareX.HelpersLib.TabToListView();
this.actRapidShareAccountType = new ShareX.UploadersLib.AccountTypeControl(); this.actRapidShareAccountType = new ShareX.UploadersLib.AccountTypeControl();
this.lblAzureStorageEnvironment = new System.Windows.Forms.Label();
this.cbAzureStorageEnvironment = new System.Windows.Forms.ComboBox();
this.tpOtherUploaders.SuspendLayout(); this.tpOtherUploaders.SuspendLayout();
this.tcOtherUploaders.SuspendLayout(); this.tcOtherUploaders.SuspendLayout();
this.tpTwitter.SuspendLayout(); this.tpTwitter.SuspendLayout();
@ -2683,6 +2685,8 @@ private void InitializeComponent()
// //
// tpAzureStorage // tpAzureStorage
// //
this.tpAzureStorage.Controls.Add(this.cbAzureStorageEnvironment);
this.tpAzureStorage.Controls.Add(this.lblAzureStorageEnvironment);
this.tpAzureStorage.Controls.Add(this.btnAzureStoragePortal); this.tpAzureStorage.Controls.Add(this.btnAzureStoragePortal);
this.tpAzureStorage.Controls.Add(this.txtAzureStorageContainer); this.tpAzureStorage.Controls.Add(this.txtAzureStorageContainer);
this.tpAzureStorage.Controls.Add(this.lblAzureStorageContainer); this.tpAzureStorage.Controls.Add(this.lblAzureStorageContainer);
@ -5262,6 +5266,23 @@ private void InitializeComponent()
this.actRapidShareAccountType.Name = "actRapidShareAccountType"; this.actRapidShareAccountType.Name = "actRapidShareAccountType";
this.actRapidShareAccountType.SelectedAccountType = ShareX.UploadersLib.AccountType.Anonymous; 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 // UploadersConfigForm
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@ -6064,5 +6085,7 @@ private void InitializeComponent()
private System.Windows.Forms.TextBox txtSFTPKeyPassphrase; private System.Windows.Forms.TextBox txtSFTPKeyPassphrase;
private System.Windows.Forms.Button btnSFTPKeyLocationBrowse; private System.Windows.Forms.Button btnSFTPKeyLocationBrowse;
private System.Windows.Forms.Label lblSFTPKeyPassphrase; private System.Windows.Forms.Label lblSFTPKeyPassphrase;
private System.Windows.Forms.ComboBox cbAzureStorageEnvironment;
private System.Windows.Forms.Label lblAzureStorageEnvironment;
} }
} }

View file

@ -598,6 +598,7 @@ public void LoadSettings()
txtAzureStorageAccountName.Text = Config.AzureStorageAccountName; txtAzureStorageAccountName.Text = Config.AzureStorageAccountName;
txtAzureStorageAccessKey.Text = Config.AzureStorageAccountAccessKey; txtAzureStorageAccessKey.Text = Config.AzureStorageAccountAccessKey;
txtAzureStorageContainer.Text = Config.AzureStorageContainer; txtAzureStorageContainer.Text = Config.AzureStorageContainer;
cbAzureStorageEnvironment.Text = Config.AzureStorageEnvironment;
// Plik // Plik
@ -2907,6 +2908,11 @@ private void txtAzureStorageContainer_TextChanged(object sender, EventArgs e)
Config.AzureStorageContainer = txtAzureStorageContainer.Text; Config.AzureStorageContainer = txtAzureStorageContainer.Text;
} }
private void cbAzureStorageEnvironment_SelectedIndexChanged(object sender, EventArgs e)
{
Config.AzureStorageEnvironment = cbAzureStorageEnvironment.Text;
}
private void btnAzureStoragePortal_Click(object sender, EventArgs e) private void btnAzureStoragePortal_Click(object sender, EventArgs e)
{ {
URLHelpers.OpenURL("https://portal.azure.com/?feature.customportal=false#blade/HubsExtension/Resources/resourceType/Microsoft.Storage%2FStorageAccounts"); URLHelpers.OpenURL("https://portal.azure.com/?feature.customportal=false#blade/HubsExtension/Resources/resourceType/Microsoft.Storage%2FStorageAccounts");

View file

@ -6638,6 +6638,69 @@ store.book[0].title</value>
</data> </data>
<data name="&gt;&gt;tpAmazonS3.ZOrder" xml:space="preserve"> <data name="&gt;&gt;tpAmazonS3.ZOrder" xml:space="preserve">
<value>6</value> <value>6</value>
</data>
<data name="cbAzureStorageEnvironment.Items" xml:space="preserve">
<value>blob.core.windows.net</value>
</data>
<data name="cbAzureStorageEnvironment.Items1" xml:space="preserve">
<value>blob.core.usgovcloudapi.net</value>
</data>
<data name="cbAzureStorageEnvironment.Items2" xml:space="preserve">
<value>blob.core.chinacloudapi.cn</value>
</data>
<data name="cbAzureStorageEnvironment.Items3" xml:space="preserve">
<value>blob.core.cloudapi.de</value>
</data>
<data name="cbAzureStorageEnvironment.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 173</value>
</data>
<data name="cbAzureStorageEnvironment.Size" type="System.Drawing.Size, System.Drawing">
<value>526, 21</value>
</data>
<data name="cbAzureStorageEnvironment.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;cbAzureStorageEnvironment.Name" xml:space="preserve">
<value>cbAzureStorageEnvironment</value>
</data>
<data name="&gt;&gt;cbAzureStorageEnvironment.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAzureStorageEnvironment.Parent" xml:space="preserve">
<value>tpAzureStorage</value>
</data>
<data name="&gt;&gt;cbAzureStorageEnvironment.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="lblAzureStorageEnvironment.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAzureStorageEnvironment.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblAzureStorageEnvironment.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 156</value>
</data>
<data name="lblAzureStorageEnvironment.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 13</value>
</data>
<data name="lblAzureStorageEnvironment.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="lblAzureStorageEnvironment.Text" xml:space="preserve">
<value>Environment:</value>
</data>
<data name="&gt;&gt;lblAzureStorageEnvironment.Name" xml:space="preserve">
<value>lblAzureStorageEnvironment</value>
</data>
<data name="&gt;&gt;lblAzureStorageEnvironment.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblAzureStorageEnvironment.Parent" xml:space="preserve">
<value>tpAzureStorage</value>
</data>
<data name="&gt;&gt;lblAzureStorageEnvironment.ZOrder" xml:space="preserve">
<value>1</value>
</data> </data>
<data name="btnAzureStoragePortal.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="btnAzureStoragePortal.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>

View file

@ -311,6 +311,7 @@ public class UploadersConfig : SettingsBase<UploadersConfig>
public string AzureStorageAccountName = ""; public string AzureStorageAccountName = "";
public string AzureStorageAccountAccessKey = ""; public string AzureStorageAccountAccessKey = "";
public string AzureStorageContainer = ""; public string AzureStorageContainer = "";
public string AzureStorageEnvironment = "blob.core.windows.net";
// Plik // Plik