diff --git a/ShareX.UploadersLib/FileUploaders/FTPAccount.cs b/ShareX.UploadersLib/FileUploaders/FTPAccount.cs
index ff22c03e9..b898bf4e2 100644
--- a/ShareX.UploadersLib/FileUploaders/FTPAccount.cs
+++ b/ShareX.UploadersLib/FileUploaders/FTPAccount.cs
@@ -48,7 +48,7 @@ public class FTPAccount : ICloneable
[Category("FTP")]
public string Username { get; set; }
- [Category("FTP"), PasswordPropertyText(true)]
+ [Category("FTP"), PasswordPropertyText(true), JsonEncrypt]
public string Password { get; set; }
[Category("FTP"), Description("Set true for active or false for passive"), DefaultValue(false)]
@@ -131,7 +131,7 @@ public string PreviewHttpPath
[Editor(typeof(KeyFileNameEditor), typeof(UITypeEditor))]
public string Keypath { get; set; }
- [Category("SFTP"), Description("OpenSSH key passphrase"), PasswordPropertyText(true)]
+ [Category("SFTP"), Description("OpenSSH key passphrase"), PasswordPropertyText(true), JsonEncrypt]
public string Passphrase { get; set; }
public FTPAccount()
diff --git a/ShareX.UploadersLib/FileUploaders/Ge_tt.cs b/ShareX.UploadersLib/FileUploaders/Ge_tt.cs
index a7cb809be..cfe4d8d86 100644
--- a/ShareX.UploadersLib/FileUploaders/Ge_tt.cs
+++ b/ShareX.UploadersLib/FileUploaders/Ge_tt.cs
@@ -136,7 +136,9 @@ public override UploadResult Upload(Stream stream, string fileName)
public class Ge_ttLogin
{
public string Expires { get; set; }
+ [JsonEncrypt]
public string AccessToken { get; set; }
+ [JsonEncrypt]
public string RefreshToken { get; set; }
}
diff --git a/ShareX.UploadersLib/FileUploaders/Lambda.cs b/ShareX.UploadersLib/FileUploaders/Lambda.cs
index 454311257..c8b2abfa3 100644
--- a/ShareX.UploadersLib/FileUploaders/Lambda.cs
+++ b/ShareX.UploadersLib/FileUploaders/Lambda.cs
@@ -26,6 +26,7 @@ You should have received a copy of the GNU General Public License
// Credits: https://github.com/mstojcevich
using Newtonsoft.Json;
+using ShareX.HelpersLib;
using ShareX.UploadersLib.Properties;
using System.Collections.Generic;
using System.Drawing;
@@ -114,7 +115,8 @@ internal class LambdaFile
public class LambdaSettings
{
- public string UserAPIKey = "";
- public string UploadURL = "https://lbda.net/";
+ [JsonEncrypt]
+ public string UserAPIKey { get; set; } = "";
+ public string UploadURL { get; set; } = "https://lbda.net/";
}
}
\ No newline at end of file
diff --git a/ShareX.UploadersLib/FileUploaders/Lithiio.cs b/ShareX.UploadersLib/FileUploaders/Lithiio.cs
index a45aaffee..9413063b8 100644
--- a/ShareX.UploadersLib/FileUploaders/Lithiio.cs
+++ b/ShareX.UploadersLib/FileUploaders/Lithiio.cs
@@ -26,6 +26,7 @@ You should have received a copy of the GNU General Public License
// Credits: https://github.com/lithium720
using Newtonsoft.Json;
+using ShareX.HelpersLib;
using ShareX.UploadersLib.Properties;
using System;
using System.Collections.Generic;
@@ -135,6 +136,7 @@ private class LithiioFetchAPIKeyResponse : LithiioResponse
public class LithiioSettings
{
+ [JsonEncrypt]
public string UserAPIKey { get; set; } = "";
}
}
\ No newline at end of file
diff --git a/ShareX.UploadersLib/FileUploaders/LocalhostAccount.cs b/ShareX.UploadersLib/FileUploaders/LocalhostAccount.cs
index 830c093da..88dfae749 100644
--- a/ShareX.UploadersLib/FileUploaders/LocalhostAccount.cs
+++ b/ShareX.UploadersLib/FileUploaders/LocalhostAccount.cs
@@ -46,7 +46,7 @@ public class LocalhostAccount : ICloneable
[Category("Localhost")]
public string UserName { get; set; }
- [Category("Localhost"), PasswordPropertyText(true)]
+ [Category("Localhost"), PasswordPropertyText(true), JsonEncrypt]
public string Password { get; set; }
[Category("Localhost"), Description("Localhost Sub-folder Path, e.g. screenshots, %y = year, %mo = month. SubFolderPath will be automatically appended to HttpHomePath if HttpHomePath does not start with @")]
diff --git a/ShareX.UploadersLib/FileUploaders/Mega.cs b/ShareX.UploadersLib/FileUploaders/Mega.cs
index 4332068ef..a92fd767b 100644
--- a/ShareX.UploadersLib/FileUploaders/Mega.cs
+++ b/ShareX.UploadersLib/FileUploaders/Mega.cs
@@ -50,7 +50,7 @@ public override bool CheckConfig(UploadersConfig config)
public override GenericUploader CreateUploader(UploadersConfig config, TaskReferenceHelper taskInfo)
{
- return new Mega(config.MegaAuthInfos, config.MegaParentNodeId);
+ return new Mega(config.MegaAuthInfos?.GetMegaApiClientAuthInfos(), config.MegaParentNodeId);
}
public override TabPage GetUploadersConfigTabPage(UploadersConfigForm form) => form.tpMega;
diff --git a/ShareX.UploadersLib/FileUploaders/MegaAuthInfos.cs b/ShareX.UploadersLib/FileUploaders/MegaAuthInfos.cs
new file mode 100644
index 000000000..92cd16766
--- /dev/null
+++ b/ShareX.UploadersLib/FileUploaders/MegaAuthInfos.cs
@@ -0,0 +1,57 @@
+#region License Information (GPL v3)
+
+/*
+ ShareX - A program that allows you to take screenshots and share any file type
+ Copyright (c) 2007-2020 ShareX Team
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Optionally you can also view the license at .
+*/
+
+#endregion License Information (GPL v3)
+
+using CG.Web.MegaApiClient;
+using ShareX.HelpersLib;
+using System;
+
+namespace ShareX.UploadersLib
+{
+ public class MegaAuthInfos
+ {
+ public string Email { get; set; }
+ [JsonEncrypt]
+ public string Hash { get; set; }
+ [JsonEncrypt]
+ public string PasswordAesKey { get; set; }
+
+ public MegaAuthInfos()
+ {
+ }
+
+ public MegaAuthInfos(MegaApiClient.AuthInfos authInfos)
+ {
+ Email = authInfos.Email;
+ Hash = authInfos.Hash;
+ PasswordAesKey = Convert.ToBase64String(authInfos.PasswordAesKey);
+ }
+
+ public MegaApiClient.AuthInfos GetMegaApiClientAuthInfos()
+ {
+ byte[] passwordAesKey = Convert.FromBase64String(PasswordAesKey);
+ return new MegaApiClient.AuthInfos(Email, Hash, passwordAesKey);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ShareX.UploadersLib/FileUploaders/PlikSettings.cs b/ShareX.UploadersLib/FileUploaders/PlikSettings.cs
index 16103286e..a446dbe44 100644
--- a/ShareX.UploadersLib/FileUploaders/PlikSettings.cs
+++ b/ShareX.UploadersLib/FileUploaders/PlikSettings.cs
@@ -23,20 +23,24 @@ You should have received a copy of the GNU General Public License
#endregion License Information (GPL v3)
+using ShareX.HelpersLib;
+
namespace ShareX.UploadersLib.FileUploaders
{
public class PlikSettings
{
- public string URL = "";
- public string APIKey = "";
- public bool IsSecured = false;
- public string Login = "";
- public string Password = "";
- public bool Removable = false;
- public bool OneShot = false;
- public int TTLUnit = 2;
- public decimal TTL = 30;
- public bool HasComment = false;
- public string Comment = "";
+ public string URL { get; set; } = "";
+ [JsonEncrypt]
+ public string APIKey { get; set; } = "";
+ public bool IsSecured { get; set; } = false;
+ public string Login { get; set; } = "";
+ [JsonEncrypt]
+ public string Password { get; set; } = "";
+ public bool Removable { get; set; } = false;
+ public bool OneShot { get; set; } = false;
+ public int TTLUnit { get; set; } = 2;
+ public decimal TTL { get; set; } = 30;
+ public bool HasComment { get; set; } = false;
+ public string Comment { get; set; } = "";
}
}
\ No newline at end of file
diff --git a/ShareX.UploadersLib/FileUploaders/Pushbullet.cs b/ShareX.UploadersLib/FileUploaders/Pushbullet.cs
index 70307616d..98e0809c7 100644
--- a/ShareX.UploadersLib/FileUploaders/Pushbullet.cs
+++ b/ShareX.UploadersLib/FileUploaders/Pushbullet.cs
@@ -241,16 +241,19 @@ public class PushbulletDevice
public class PushbulletSettings
{
- public string UserAPIKey = "";
- public List DeviceList = new List();
- public int SelectedDevice = 0;
+ [JsonEncrypt]
+ public string UserAPIKey { get; set; } = "";
+ public List DeviceList { get; set; } = new List();
+ public int SelectedDevice { get; set; } = 0;
public PushbulletDevice CurrentDevice
{
get
{
if (DeviceList.IsValidIndex(SelectedDevice))
+ {
return DeviceList[SelectedDevice];
+ }
return null;
}
diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs
index 5ebcc4c61..ad45a6375 100644
--- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs
+++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs
@@ -2073,7 +2073,8 @@ private void MegaConfigureTab(bool tryLogin)
{
cbMegaFolder.Items.Clear();
- Mega mega = new Mega(Config.MegaAuthInfos);
+ Mega mega = new Mega(Config.MegaAuthInfos?.GetMegaApiClientAuthInfos());
+
if (!tryLogin || mega.TryLogin())
{
lblMegaStatus.Text = Resources.UploadersConfigForm_MegaConfigureTab_Configured;
@@ -2108,7 +2109,15 @@ private void btnMegaLogin_Click(object sender, EventArgs e)
return;
}
- Config.MegaAuthInfos = new MegaApiClient().GenerateAuthInfos(txtMegaEmail.Text, txtMegaPassword.Text);
+ MegaApiClient.AuthInfos megaAuthInfos = new MegaApiClient().GenerateAuthInfos(txtMegaEmail.Text, txtMegaPassword.Text);
+ if (megaAuthInfos != null)
+ {
+ Config.MegaAuthInfos = new MegaAuthInfos(megaAuthInfos);
+ }
+ else
+ {
+ Config.MegaAuthInfos = null;
+ }
MegaConfigureTab(true);
}
diff --git a/ShareX.UploadersLib/ShareX.UploadersLib.csproj b/ShareX.UploadersLib/ShareX.UploadersLib.csproj
index 737504df5..9f608cc7c 100644
--- a/ShareX.UploadersLib/ShareX.UploadersLib.csproj
+++ b/ShareX.UploadersLib/ShareX.UploadersLib.csproj
@@ -133,6 +133,7 @@
+
diff --git a/ShareX.UploadersLib/UploadersConfig.cs b/ShareX.UploadersLib/UploadersConfig.cs
index e6feca849..65742da27 100644
--- a/ShareX.UploadersLib/UploadersConfig.cs
+++ b/ShareX.UploadersLib/UploadersConfig.cs
@@ -156,10 +156,10 @@ public class UploadersConfig : SettingsBase
#region Dropbox
- public OAuth2Info DropboxOAuth2Info = null;
- public string DropboxUploadPath = "ShareX/%y/%mo";
- public bool DropboxAutoCreateShareableLink = true;
- public bool DropboxUseDirectLink = false;
+ public OAuth2Info DropboxOAuth2Info { get; set; } = null;
+ public string DropboxUploadPath { get; set; } = "ShareX/%y/%mo";
+ public bool DropboxAutoCreateShareableLink { get; set; } = true;
+ public bool DropboxUseDirectLink { get; set; } = false;
// TEMP: For backward compatibility
public DropboxURLType DropboxURLType = DropboxURLType.Default;
@@ -168,119 +168,123 @@ public class UploadersConfig : SettingsBase
#region FTP
- public List FTPAccountList = new List();
- public int FTPSelectedImage = 0;
- public int FTPSelectedText = 0;
- public int FTPSelectedFile = 0;
+ public List FTPAccountList { get; set; } = new List();
+ public int FTPSelectedImage { get; set; } = 0;
+ public int FTPSelectedText { get; set; } = 0;
+ public int FTPSelectedFile { get; set; } = 0;
#endregion FTP
#region OneDrive
- public OAuth2Info OneDriveV2OAuth2Info = null;
- public OneDriveFileInfo OneDriveV2SelectedFolder = OneDrive.RootFolder;
- public bool OneDriveAutoCreateShareableLink = true;
+ public OAuth2Info OneDriveV2OAuth2Info { get; set; } = null;
+ public OneDriveFileInfo OneDriveV2SelectedFolder { get; set; } = OneDrive.RootFolder;
+ public bool OneDriveAutoCreateShareableLink { get; set; } = true;
#endregion OneDrive
#region Gfycat
- public OAuth2Info GfycatOAuth2Info = null;
- public AccountType GfycatAccountType = AccountType.Anonymous;
- public bool GfycatIsPublic = false;
- public bool GfycatKeepAudio = true;
+ public OAuth2Info GfycatOAuth2Info { get; set; } = null;
+ public AccountType GfycatAccountType { get; set; } = AccountType.Anonymous;
+ public bool GfycatIsPublic { get; set; } = false;
+ public bool GfycatKeepAudio { get; set; } = true;
#endregion Gfycat
#region Google Drive
- public OAuth2Info GoogleDriveOAuth2Info = null;
- public bool GoogleDriveIsPublic = true;
- public bool GoogleDriveDirectLink = false;
- public bool GoogleDriveUseFolder = false;
- public string GoogleDriveFolderID = "";
+ public OAuth2Info GoogleDriveOAuth2Info { get; set; } = null;
+ public bool GoogleDriveIsPublic { get; set; } = true;
+ public bool GoogleDriveDirectLink { get; set; } = false;
+ public bool GoogleDriveUseFolder { get; set; } = false;
+ public string GoogleDriveFolderID { get; set; } = "";
#endregion Google Drive
#region puush
- public string PuushAPIKey = "";
+ [JsonEncrypt]
+ public string PuushAPIKey { get; set; } = "";
#endregion puush
#region SendSpace
- public AccountType SendSpaceAccountType = AccountType.Anonymous;
- public string SendSpaceUsername = "";
- public string SendSpacePassword = "";
+ public AccountType SendSpaceAccountType { get; set; } = AccountType.Anonymous;
+ public string SendSpaceUsername { get; set; } = "";
+ [JsonEncrypt]
+ public string SendSpacePassword { get; set; } = "";
#endregion SendSpace
#region Box
- public OAuth2Info BoxOAuth2Info = null;
- public BoxFileEntry BoxSelectedFolder = Box.RootFolder;
- public bool BoxShare = true;
- public BoxShareAccessLevel BoxShareAccessLevel = BoxShareAccessLevel.Open;
+ public OAuth2Info BoxOAuth2Info { get; set; } = null;
+ public BoxFileEntry BoxSelectedFolder { get; set; } = Box.RootFolder;
+ public bool BoxShare { get; set; } = true;
+ public BoxShareAccessLevel BoxShareAccessLevel { get; set; } = BoxShareAccessLevel.Open;
#endregion Box
#region Ge.tt
- public Ge_ttLogin Ge_ttLogin = null;
+ public Ge_ttLogin Ge_ttLogin { get; set; } = null;
#endregion Ge.tt
#region Localhostr
- public string LocalhostrEmail = "";
- public string LocalhostrPassword = "";
- public bool LocalhostrDirectURL = true;
+ public string LocalhostrEmail { get; set; } = "";
+ [JsonEncrypt]
+ public string LocalhostrPassword { get; set; } = "";
+ public bool LocalhostrDirectURL { get; set; } = true;
#endregion Localhostr
#region Shared folder
- public List LocalhostAccountList = new List();
- public int LocalhostSelectedImages = 0;
- public int LocalhostSelectedText = 0;
- public int LocalhostSelectedFiles = 0;
+ public List LocalhostAccountList { get; set; } = new List();
+ public int LocalhostSelectedImages { get; set; } = 0;
+ public int LocalhostSelectedText { get; set; } = 0;
+ public int LocalhostSelectedFiles { get; set; } = 0;
#endregion Shared folder
#region Email
- public string EmailSmtpServer = "smtp.gmail.com";
- public int EmailSmtpPort = 587;
- public string EmailFrom = "...@gmail.com";
- public string EmailPassword = "";
- public bool EmailRememberLastTo = true;
- public string EmailLastTo = "";
- public string EmailDefaultSubject = "Sending email from ShareX";
- public string EmailDefaultBody = "Screenshot is attached.";
- public bool EmailAutomaticSend = false;
- public string EmailAutomaticSendTo = "";
+ public string EmailSmtpServer { get; set; } = "smtp.gmail.com";
+ public int EmailSmtpPort { get; set; } = 587;
+ public string EmailFrom { get; set; } = "...@gmail.com";
+ [JsonEncrypt]
+ public string EmailPassword { get; set; } = "";
+ public bool EmailRememberLastTo { get; set; } = true;
+ public string EmailLastTo { get; set; } = "";
+ public string EmailDefaultSubject { get; set; } = "Sending email from ShareX";
+ public string EmailDefaultBody { get; set; } = "Screenshot is attached.";
+ public bool EmailAutomaticSend { get; set; } = false;
+ public string EmailAutomaticSendTo { get; set; } = "";
#endregion Email
#region Jira
- public string JiraHost = "http://";
- public string JiraIssuePrefix = "PROJECT-";
- public OAuthInfo JiraOAuthInfo = null;
+ public string JiraHost { get; set; } = "http://";
+ public string JiraIssuePrefix { get; set; } = "PROJECT-";
+ public OAuthInfo JiraOAuthInfo { get; set; } = null;
#endregion Jira
#region Mega
- public MegaApiClient.AuthInfos MegaAuthInfos = null;
- public string MegaParentNodeId = null;
+ public MegaAuthInfos MegaAuthInfos { get; set; } = null;
+ public string MegaParentNodeId { get; set; } = null;
#endregion Mega
#region Amazon S3
- public AmazonS3Settings AmazonS3Settings = new AmazonS3Settings()
+ public AmazonS3Settings AmazonS3Settings { get; set; } = new AmazonS3Settings()
{
ObjectPrefix = "ShareX/%y/%mo"
};
@@ -289,145 +293,154 @@ public class UploadersConfig : SettingsBase
#region ownCloud / Nextcloud
- public string OwnCloudHost = "";
- public string OwnCloudUsername = "";
- public string OwnCloudPassword = "";
- public string OwnCloudPath = "/";
- public int OwnCloudExpiryTime = 7;
- public bool OwnCloudCreateShare = true;
- public bool OwnCloudDirectLink = false;
- public bool OwnCloud81Compatibility = true;
- public bool OwnCloudUsePreviewLinks = false;
- public bool OwnCloudAutoExpire = false;
+ public string OwnCloudHost { get; set; } = "";
+ public string OwnCloudUsername { get; set; } = "";
+ [JsonEncrypt]
+ public string OwnCloudPassword { get; set; } = "";
+ public string OwnCloudPath { get; set; } = "/";
+ public int OwnCloudExpiryTime { get; set; } = 7;
+ public bool OwnCloudCreateShare { get; set; } = true;
+ public bool OwnCloudDirectLink { get; set; } = false;
+ public bool OwnCloud81Compatibility { get; set; } = true;
+ public bool OwnCloudUsePreviewLinks { get; set; } = false;
+ public bool OwnCloudAutoExpire { get; set; } = false;
#endregion ownCloud / Nextcloud
#region MediaFire
- public string MediaFireUsername = "";
- public string MediaFirePassword = "";
- public string MediaFirePath = "";
- public bool MediaFireUseLongLink = false;
+ public string MediaFireUsername { get; set; } = "";
+ [JsonEncrypt]
+ public string MediaFirePassword { get; set; } = "";
+ public string MediaFirePath { get; set; } = "";
+ public bool MediaFireUseLongLink { get; set; } = false;
#endregion MediaFire
#region Pushbullet
- public PushbulletSettings PushbulletSettings = new PushbulletSettings();
+ public PushbulletSettings PushbulletSettings { get; set; } = new PushbulletSettings();
#endregion Pushbullet
#region Lambda
- public LambdaSettings LambdaSettings = new LambdaSettings();
+ public LambdaSettings LambdaSettings { get; set; } = new LambdaSettings();
#endregion Lambda
#region Lithiio
- public LithiioSettings LithiioSettings = new LithiioSettings();
+ public LithiioSettings LithiioSettings { get; set; } = new LithiioSettings();
#endregion Lithiio
#region Teknik
- public OAuth2Info TeknikOAuth2Info = null;
- public string TeknikUploadAPIUrl = Teknik.DefaultUploadAPIURL;
- public string TeknikPasteAPIUrl = Teknik.DefaultPasteAPIURL;
- public string TeknikUrlShortenerAPIUrl = Teknik.DefaultUrlShortenerAPIURL;
- public string TeknikAuthUrl = Teknik.DefaultAuthURL;
- public TeknikExpirationUnit TeknikExpirationUnit = TeknikExpirationUnit.Never;
- public int TeknikExpirationLength = 1;
- public bool TeknikEncryption = false;
- public bool TeknikGenerateDeletionKey = false;
+ public OAuth2Info TeknikOAuth2Info { get; set; } = null;
+ public string TeknikUploadAPIUrl { get; set; } = Teknik.DefaultUploadAPIURL;
+ public string TeknikPasteAPIUrl { get; set; } = Teknik.DefaultPasteAPIURL;
+ public string TeknikUrlShortenerAPIUrl { get; set; } = Teknik.DefaultUrlShortenerAPIURL;
+ public string TeknikAuthUrl { get; set; } = Teknik.DefaultAuthURL;
+ public TeknikExpirationUnit TeknikExpirationUnit { get; set; } = TeknikExpirationUnit.Never;
+ public int TeknikExpirationLength { get; set; } = 1;
+ public bool TeknikEncryption { get; set; } = false;
+ public bool TeknikGenerateDeletionKey { get; set; } = false;
#endregion Teknik
#region Pomf
- public PomfUploader PomfUploader = new PomfUploader();
+ public PomfUploader PomfUploader { get; set; } = new PomfUploader();
#endregion Pomf
#region s-ul
- public string SulAPIKey = "";
+ [JsonEncrypt]
+ public string SulAPIKey { get; set; } = "";
#endregion s-ul
#region Seafile
- public string SeafileAPIURL = "";
- public string SeafileAuthToken = "";
- public string SeafileRepoID = "";
- public string SeafilePath = "/";
- public bool SeafileIsLibraryEncrypted = false;
- public string SeafileEncryptedLibraryPassword = "";
- public bool SeafileCreateShareableURL = true;
- public bool SeafileCreateShareableURLRaw = false;
- public bool SeafileIgnoreInvalidCert = false;
- public int SeafileShareDaysToExpire = 0;
- public string SeafileSharePassword = "";
- public string SeafileAccInfoEmail = "";
- public string SeafileAccInfoUsage = "";
+ public string SeafileAPIURL { get; set; } = "";
+ [JsonEncrypt]
+ public string SeafileAuthToken { get; set; } = "";
+ public string SeafileRepoID { get; set; } = "";
+ public string SeafilePath { get; set; } = "/";
+ public bool SeafileIsLibraryEncrypted { get; set; } = false;
+ [JsonEncrypt]
+ public string SeafileEncryptedLibraryPassword { get; set; } = "";
+ public bool SeafileCreateShareableURL { get; set; } = true;
+ public bool SeafileCreateShareableURLRaw { get; set; } = false;
+ public bool SeafileIgnoreInvalidCert { get; set; } = false;
+ public int SeafileShareDaysToExpire { get; set; } = 0;
+ [JsonEncrypt]
+ public string SeafileSharePassword { get; set; } = "";
+ public string SeafileAccInfoEmail { get; set; } = "";
+ public string SeafileAccInfoUsage { get; set; } = "";
#endregion Seafile
#region Streamable
- public bool StreamableAnonymous = true;
- public string StreamableUsername = "";
- public string StreamablePassword = "";
- public bool StreamableUseDirectURL = false;
+ public bool StreamableAnonymous { get; set; } = true;
+ public string StreamableUsername { get; set; } = "";
+ [JsonEncrypt]
+ public string StreamablePassword { get; set; } = "";
+ public bool StreamableUseDirectURL { get; set; } = false;
#endregion Streamable
#region Azure Storage
- public string AzureStorageAccountName = "";
- public string AzureStorageAccountAccessKey = "";
- public string AzureStorageContainer = "";
- public string AzureStorageEnvironment = "blob.core.windows.net";
- public string AzureStorageCustomDomain = "";
- public string AzureStorageUploadPath = "";
+ public string AzureStorageAccountName { get; set; } = "";
+ [JsonEncrypt]
+ public string AzureStorageAccountAccessKey { get; set; } = "";
+ public string AzureStorageContainer { get; set; } = "";
+ public string AzureStorageEnvironment { get; set; } = "blob.core.windows.net";
+ public string AzureStorageCustomDomain { get; set; } = "";
+ public string AzureStorageUploadPath { get; set; } = "";
#endregion Azure Storage
#region Backblaze B2
- public string B2ApplicationKeyId = "";
- public string B2ApplicationKey = "";
- public string B2BucketName = "";
- public string B2UploadPath = "ShareX/%y/%mo";
- public bool B2UseCustomUrl = false;
- public string B2CustomUrl = "https://example.com";
+ public string B2ApplicationKeyId { get; set; } = "";
+ [JsonEncrypt]
+ public string B2ApplicationKey { get; set; } = "";
+ public string B2BucketName { get; set; } = "";
+ public string B2UploadPath { get; set; } = "ShareX/%y/%mo";
+ public bool B2UseCustomUrl { get; set; } = false;
+ public string B2CustomUrl { get; set; } = "https://example.com";
#endregion Backblaze B2
#region Plik
- public PlikSettings PlikSettings = new PlikSettings();
+ public PlikSettings PlikSettings { get; set; } = new PlikSettings();
#endregion Plik
#region YouTube
- public OAuth2Info YouTubeOAuth2Info = null;
- public YouTubeVideoPrivacy YouTubePrivacyType = YouTubeVideoPrivacy.Public;
- public bool YouTubeUseShortenedLink = false;
+ public OAuth2Info YouTubeOAuth2Info { get; set; } = null;
+ public YouTubeVideoPrivacy YouTubePrivacyType { get; set; } = YouTubeVideoPrivacy.Public;
+ public bool YouTubeUseShortenedLink { get; set; } = false;
#endregion YouTube
#region Google Cloud Storage
- public OAuth2Info GoogleCloudStorageOAuth2Info = null;
- public string GoogleCloudStorageBucket = "";
- public string GoogleCloudStorageDomain = "";
- public string GoogleCloudStorageObjectPrefix = "ShareX/%y/%mo";
- public bool GoogleCloudStorageRemoveExtensionImage = false;
- public bool GoogleCloudStorageRemoveExtensionVideo = false;
- public bool GoogleCloudStorageRemoveExtensionText = false;
- public bool GoogleCloudStorageSetPublicACL = true;
+ public OAuth2Info GoogleCloudStorageOAuth2Info { get; set; } = null;
+ public string GoogleCloudStorageBucket { get; set; } = "";
+ public string GoogleCloudStorageDomain { get; set; } = "";
+ public string GoogleCloudStorageObjectPrefix { get; set; } = "ShareX/%y/%mo";
+ public bool GoogleCloudStorageRemoveExtensionImage { get; set; } = false;
+ public bool GoogleCloudStorageRemoveExtensionVideo { get; set; } = false;
+ public bool GoogleCloudStorageRemoveExtensionText { get; set; } = false;
+ public bool GoogleCloudStorageSetPublicACL { get; set; } = true;
#endregion Google Cloud Storage