diff --git a/ExternalConnectors/VO/VaultOpenbao.cs b/ExternalConnectors/VO/VaultOpenbao.cs
index 9ddbede98..eb2cb57ca 100644
--- a/ExternalConnectors/VO/VaultOpenbao.cs
+++ b/ExternalConnectors/VO/VaultOpenbao.cs
@@ -3,6 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using VaultSharp;
+using VaultSharp.V1.AuthMethods;
+using VaultSharp.V1.AuthMethods.Token;
namespace ExternalConnectors.VO {
public class VaultOpenbao {
diff --git a/mRemoteNG/Connection/AbstractConnectionRecord.cs b/mRemoteNG/Connection/AbstractConnectionRecord.cs
index 5e35d375a..8139eb984 100644
--- a/mRemoteNG/Connection/AbstractConnectionRecord.cs
+++ b/mRemoteNG/Connection/AbstractConnectionRecord.cs
@@ -247,6 +247,22 @@ namespace mRemoteNG.Connection
set => SetField(ref _password, value, "Password");
}
+ [LocalizedAttributes.LocalizedCategory(nameof(Language.Connection), 2),
+ LocalizedAttributes.LocalizedDisplayName(nameof(Language.VaultOpenbaoMount)),
+ LocalizedAttributes.LocalizedDescription(nameof(Language.VaultOpenbaoMountDescription)),
+ AttributeUsedInProtocol(ProtocolType.RDP, ProtocolType.VNC, ProtocolType.ARD, ProtocolType.SSH1,
+ ProtocolType.SSH2, ProtocolType.Telnet, ProtocolType.RAW, ProtocolType.HTTP, ProtocolType.HTTPS,
+ ProtocolType.IntApp)]
+ public virtual string VaultMount { get; set; }
+
+ [LocalizedAttributes.LocalizedCategory(nameof(Language.Connection), 2),
+ LocalizedAttributes.LocalizedDisplayName(nameof(Language.VaultOpenbaoRole)),
+ LocalizedAttributes.LocalizedDescription(nameof(Language.VaultOpenbaoRoleDescription)),
+ AttributeUsedInProtocol(ProtocolType.RDP, ProtocolType.VNC, ProtocolType.ARD, ProtocolType.SSH1,
+ ProtocolType.SSH2, ProtocolType.Telnet, ProtocolType.RAW, ProtocolType.HTTP, ProtocolType.HTTPS,
+ ProtocolType.IntApp)]
+ public virtual string VaultRole { get; set; }
+
[LocalizedAttributes.LocalizedCategory(nameof(Language.Connection), 2),
LocalizedAttributes.LocalizedDisplayName(nameof(Language.Domain)),
LocalizedAttributes.LocalizedDescription(nameof(Language.PropertyDescriptionDomain)),
diff --git a/mRemoteNG/Connection/Protocol/PuttyBase.cs b/mRemoteNG/Connection/Protocol/PuttyBase.cs
index 384938f8f..ec1a527fa 100644
--- a/mRemoteNG/Connection/Protocol/PuttyBase.cs
+++ b/mRemoteNG/Connection/Protocol/PuttyBase.cs
@@ -15,7 +15,6 @@ using System.Linq;
using System.Runtime.Versioning;
using System.Threading;
using System.Windows.Forms;
-using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
// ReSharper disable ArrangeAccessorOwnerBody
@@ -104,7 +103,6 @@ namespace mRemoteNG.Connection.Protocol
string username = InterfaceControl.Info?.Username ?? "";
//string password = InterfaceControl.Info?.Password?.ConvertToUnsecureString() ?? "";
string password = InterfaceControl.Info?.Password ?? "";
- string domain = InterfaceControl.Info?.Domain ?? "";
string UserViaAPI = InterfaceControl.Info?.UserViaAPI ?? "";
string privatekey = "";
@@ -113,7 +111,7 @@ namespace mRemoteNG.Connection.Protocol
{
try
{
- ExternalConnectors.DSS.SecretServerInterface.FetchSecretFromServer($"{UserViaAPI}", out username, out password, out domain, out privatekey);
+ ExternalConnectors.DSS.SecretServerInterface.FetchSecretFromServer($"{UserViaAPI}", out username, out password, out _, out privatekey);
if (!string.IsNullOrEmpty(privatekey))
{
@@ -134,7 +132,7 @@ namespace mRemoteNG.Connection.Protocol
{
try
{
- ExternalConnectors.CPS.PasswordstateInterface.FetchSecretFromServer($"{UserViaAPI}", out username, out password, out domain, out privatekey);
+ ExternalConnectors.CPS.PasswordstateInterface.FetchSecretFromServer($"{UserViaAPI}", out username, out password, out _, out privatekey);
if (!string.IsNullOrEmpty(privatekey))
{
@@ -154,7 +152,7 @@ namespace mRemoteNG.Connection.Protocol
else if (InterfaceControl.Info.ExternalCredentialProvider == ExternalCredentialProvider.OnePassword) {
try
{
- ExternalConnectors.OP.OnePasswordCli.ReadPassword($"{UserViaAPI}", out username, out password, out domain, out privatekey);
+ ExternalConnectors.OP.OnePasswordCli.ReadPassword($"{UserViaAPI}", out username, out password, out _, out privatekey);
}
catch (ExternalConnectors.OP.OnePasswordCliException ex)
{
@@ -181,7 +179,7 @@ namespace mRemoteNG.Connection.Protocol
try
{
ExternalConnectors.DSS.SecretServerInterface.FetchSecretFromServer(
- $"{Properties.OptionsCredentialsPage.Default.UserViaAPIDefault}", out username, out password, out domain, out privatekey);
+ $"{Properties.OptionsCredentialsPage.Default.UserViaAPIDefault}", out username, out password, out _, out privatekey);
}
catch (Exception ex)
{
@@ -214,7 +212,7 @@ namespace mRemoteNG.Connection.Protocol
if (!string.IsNullOrEmpty(password))
{
- string random = string.Join("", Guid.NewGuid().ToString("n").Take(8).Select(o => o));
+ string random = string.Join("", Guid.NewGuid().ToString("n").Take(8));
// write data to pipe
Thread thread = new(new ParameterizedThreadStart(CreatePipe));
thread.Start($"{random}{password}");
diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol.cs b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol.cs
index 991114811..77227a256 100644
--- a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol.cs
+++ b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol.cs
@@ -595,6 +595,13 @@ namespace mRemoteNG.Connection.Protocol.RDP
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.ECPOnePasswordReadFailed + Environment.NewLine + ex.Message);
}
}
+ else if (InterfaceControl.Info.ExternalCredentialProvider == ExternalCredentialProvider.VaultOpenbao) {
+ try {
+ ExternalConnectors.VO.VaultOpenbao.ReadPassword($"{userViaApi}", out userName, out password, out domain, out pkey);
+ } catch (ExternalConnectors.VO.VaultOpenbaoException ex) {
+ Event_ErrorOccured(this, "Secret Server Interface Error: " + ex.Message, 0);
+ }
+ }
if (string.IsNullOrEmpty(userName))
{
diff --git a/mRemoteNG/Language/Language.Designer.cs b/mRemoteNG/Language/Language.Designer.cs
index 781f50bba..40797ae05 100644
--- a/mRemoteNG/Language/Language.Designer.cs
+++ b/mRemoteNG/Language/Language.Designer.cs
@@ -6829,6 +6829,42 @@ namespace mRemoteNG.Resources.Language {
}
}
+ ///
+ /// Looks up a localized string similar to Mount.
+ ///
+ internal static string VaultOpenbaoMount {
+ get {
+ return ResourceManager.GetString("VaultOpenbaoMount", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Mount where the secret is stored.
+ ///
+ internal static string VaultOpenbaoMountDescription {
+ get {
+ return ResourceManager.GetString("VaultOpenbaoMountDescription", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Role.
+ ///
+ internal static string VaultOpenbaoRole {
+ get {
+ return ResourceManager.GetString("VaultOpenbaoRole", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Name or path of the secret.
+ ///
+ internal static string VaultOpenbaoRoleDescription {
+ get {
+ return ResourceManager.GetString("VaultOpenbaoRoleDescription", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Verify:.
///
diff --git a/mRemoteNG/Language/Language.cs-CZ.resx b/mRemoteNG/Language/Language.cs-CZ.resx
index 242375c49..5af302aa9 100644
--- a/mRemoteNG/Language/Language.cs-CZ.resx
+++ b/mRemoteNG/Language/Language.cs-CZ.resx
@@ -1878,11 +1878,23 @@ mRemoteNG se nyní ukončí a zahájí instalaci.
Kliknutím na již otevřené připojení v seznamu otevře jeho záložku
-
- Upozornit mě pouze při ukončení několika připojení
-
+
+ Upozornit mě pouze při ukončení několika připojení
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.de.resx b/mRemoteNG/Language/Language.de.resx
index cd6224d8e..a1a11719b 100644
--- a/mRemoteNG/Language/Language.de.resx
+++ b/mRemoteNG/Language/Language.de.resx
@@ -2050,4 +2050,17 @@ Nightly umfasst Alphas, Betas und Release Candidates.
WebView2-Erstellung fehlgeschlagen
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.el.resx b/mRemoteNG/Language/Language.el.resx
index 7bd9d12e1..d137f21b4 100644
--- a/mRemoteNG/Language/Language.el.resx
+++ b/mRemoteNG/Language/Language.el.resx
@@ -273,4 +273,17 @@
Πύλη
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.es-AR.resx b/mRemoteNG/Language/Language.es-AR.resx
index bc08c7cea..115774fa9 100644
--- a/mRemoteNG/Language/Language.es-AR.resx
+++ b/mRemoteNG/Language/Language.es-AR.resx
@@ -313,4 +313,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.es.resx b/mRemoteNG/Language/Language.es.resx
index b04613a04..e89d5f72d 100644
--- a/mRemoteNG/Language/Language.es.resx
+++ b/mRemoteNG/Language/Language.es.resx
@@ -1541,4 +1541,17 @@ mRemoteNG ahora se cerrará y comenzará la instalación.
Guardar conexiones al salir
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.fi-FI.resx b/mRemoteNG/Language/Language.fi-FI.resx
index dd6242e58..972b7392e 100644
--- a/mRemoteNG/Language/Language.fi-FI.resx
+++ b/mRemoteNG/Language/Language.fi-FI.resx
@@ -138,4 +138,17 @@
65536 Värit (16-bit)
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.fr.resx b/mRemoteNG/Language/Language.fr.resx
index a1c1a5299..6e1ead5cb 100644
--- a/mRemoteNG/Language/Language.fr.resx
+++ b/mRemoteNG/Language/Language.fr.resx
@@ -2153,4 +2153,17 @@ Le canal nightly inclut les versions alpha, beta et release candidates.
Création WebView2 échouée avec une exception
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.hu.resx b/mRemoteNG/Language/Language.hu.resx
index e66fcf125..383a87b4a 100644
--- a/mRemoteNG/Language/Language.hu.resx
+++ b/mRemoteNG/Language/Language.hu.resx
@@ -333,4 +333,17 @@
Átjáró
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.it.resx b/mRemoteNG/Language/Language.it.resx
index 75256c54f..67a917af2 100644
--- a/mRemoteNG/Language/Language.it.resx
+++ b/mRemoteNG/Language/Language.it.resx
@@ -1556,4 +1556,20 @@ mRemoteNG verrà chiuso e l'installazione avrà inizio.
Salva le connessioni all'uscita
+
+ Vault o Openbao
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.ja-JP.resx b/mRemoteNG/Language/Language.ja-JP.resx
index 6121aa5b4..f49c296f7 100644
--- a/mRemoteNG/Language/Language.ja-JP.resx
+++ b/mRemoteNG/Language/Language.ja-JP.resx
@@ -1716,4 +1716,17 @@ mRemoteNGを終了してインストールを開始します
終了時に保存する
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.ko-KR.resx b/mRemoteNG/Language/Language.ko-KR.resx
index aa28909da..ef615b515 100644
--- a/mRemoteNG/Language/Language.ko-KR.resx
+++ b/mRemoteNG/Language/Language.ko-KR.resx
@@ -1806,4 +1806,17 @@ mRemoteNG는 이제 종료되고 설치로 시작됩니다.
종료시 연결 저장
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.lt.resx b/mRemoteNG/Language/Language.lt.resx
index eb884b7db..176bfacf9 100644
--- a/mRemoteNG/Language/Language.lt.resx
+++ b/mRemoteNG/Language/Language.lt.resx
@@ -228,4 +228,17 @@ Nightly Channel includes Alphas, Betas & Release Candidates.
Proxy
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.nb-NO.resx b/mRemoteNG/Language/Language.nb-NO.resx
index cd5f88c5e..afea821ca 100644
--- a/mRemoteNG/Language/Language.nb-NO.resx
+++ b/mRemoteNG/Language/Language.nb-NO.resx
@@ -2005,4 +2005,17 @@ Nightly-kanalen inkluderer alpha-, beta- og release candidate-versjoner.
Lagre tilkoblinger ved avslutning
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.nl.resx b/mRemoteNG/Language/Language.nl.resx
index 740879e57..167e520bc 100644
--- a/mRemoteNG/Language/Language.nl.resx
+++ b/mRemoteNG/Language/Language.nl.resx
@@ -1588,4 +1588,17 @@ mRemoteNG zal nu worden gesloten en beginnen met de installatie.
Sla verbindingen op bij afsluiten
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.pl.resx b/mRemoteNG/Language/Language.pl.resx
index 5756cf8d6..365511d3d 100644
--- a/mRemoteNG/Language/Language.pl.resx
+++ b/mRemoteNG/Language/Language.pl.resx
@@ -2359,4 +2359,17 @@ Kanał nocny obejmuje wersje alfa, beta i RC (gotowe do wydania).
Brama
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.pt-BR.resx b/mRemoteNG/Language/Language.pt-BR.resx
index f14c096d5..5afad580b 100644
--- a/mRemoteNG/Language/Language.pt-BR.resx
+++ b/mRemoteNG/Language/Language.pt-BR.resx
@@ -369,4 +369,17 @@
Gateway
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.pt.resx b/mRemoteNG/Language/Language.pt.resx
index 36a8cb1f5..ee2a41a08 100644
--- a/mRemoteNG/Language/Language.pt.resx
+++ b/mRemoteNG/Language/Language.pt.resx
@@ -1554,4 +1554,17 @@
Salvar as ligações à saída
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.resx b/mRemoteNG/Language/Language.resx
index 50ed009ff..8f1458458 100644
--- a/mRemoteNG/Language/Language.resx
+++ b/mRemoteNG/Language/Language.resx
@@ -2470,4 +2470,16 @@ Nightly Channel includes Alphas, Betas & Release Candidates.
Vault or Openbao
+
+ Mount
+
+
+ Mount where the secret is stored
+
+
+ Role
+
+
+ Name or path of the secret
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.ru.resx b/mRemoteNG/Language/Language.ru.resx
index 999c82edc..949b645a6 100644
--- a/mRemoteNG/Language/Language.ru.resx
+++ b/mRemoteNG/Language/Language.ru.resx
@@ -1999,4 +1999,16 @@ mRemoteNG сейчас прекратит работу и начнет проц
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.sv-SE.resx b/mRemoteNG/Language/Language.sv-SE.resx
index 50408a066..10c1ce534 100644
--- a/mRemoteNG/Language/Language.sv-SE.resx
+++ b/mRemoteNG/Language/Language.sv-SE.resx
@@ -2172,4 +2172,17 @@ Nattliga kanalen inkluderar Alfa, Betor & Utgåvokandidater.
Nätverksnod (gateway)
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.ta.resx b/mRemoteNG/Language/Language.ta.resx
index 6eb7bce82..78d40e5e5 100644
--- a/mRemoteNG/Language/Language.ta.resx
+++ b/mRemoteNG/Language/Language.ta.resx
@@ -2416,4 +2416,17 @@
முன்னறிவிப்பு
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.tr-TR.resx b/mRemoteNG/Language/Language.tr-TR.resx
index 7196be5d5..b2293ab54 100644
--- a/mRemoteNG/Language/Language.tr-TR.resx
+++ b/mRemoteNG/Language/Language.tr-TR.resx
@@ -1628,4 +1628,17 @@ MRemoteNG şimdi kapanacak ve kurulum başlayacak.
Çıkışta bağlantıları kaydet
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.uk.resx b/mRemoteNG/Language/Language.uk.resx
index 632fbb952..4933e6657 100644
--- a/mRemoteNG/Language/Language.uk.resx
+++ b/mRemoteNG/Language/Language.uk.resx
@@ -2002,4 +2002,17 @@ mRemoteNG зараз припинить роботу і почне процес
Зберігати з'єднання при виході
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.zh-CN.resx b/mRemoteNG/Language/Language.zh-CN.resx
index 5700271d4..477df2236 100644
--- a/mRemoteNG/Language/Language.zh-CN.resx
+++ b/mRemoteNG/Language/Language.zh-CN.resx
@@ -2080,4 +2080,17 @@ mRemoteNG 将退出并安装更新。
退出时保存连接配置文件
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/Language/Language.zh-TW.resx b/mRemoteNG/Language/Language.zh-TW.resx
index 7502972b2..f0fa6a881 100644
--- a/mRemoteNG/Language/Language.zh-TW.resx
+++ b/mRemoteNG/Language/Language.zh-TW.resx
@@ -1575,4 +1575,17 @@ mRemoteNG 將立即結束並開始安裝。
結束時儲存連線
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs b/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs
index 241c19d8e..dd916e6f0 100644
--- a/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs
+++ b/mRemoteNG/UI/Controls/ConnectionInfoPropertyGrid/ConnectionInfoPropertyGrid.cs
@@ -238,6 +238,8 @@ namespace mRemoteNG.UI.Controls.ConnectionInfoPropertyGrid
if (SelectedConnectionInfo.ExternalCredentialProvider == ExternalCredentialProvider.None)
{
strHide.Add(nameof(AbstractConnectionRecord.UserViaAPI));
+ strHide.Add(nameof(AbstractConnectionRecord.VaultMount));
+ strHide.Add(nameof(AbstractConnectionRecord.VaultRole));
}
else if (SelectedConnectionInfo.ExternalCredentialProvider == ExternalCredentialProvider.DelineaSecretServer
|| SelectedConnectionInfo.ExternalCredentialProvider == ExternalCredentialProvider.ClickstudiosPasswordState)
@@ -245,8 +247,18 @@ namespace mRemoteNG.UI.Controls.ConnectionInfoPropertyGrid
strHide.Add(nameof(AbstractConnectionRecord.Username));
strHide.Add(nameof(AbstractConnectionRecord.Password));
strHide.Add(nameof(AbstractConnectionRecord.Domain));
+ strHide.Add(nameof(AbstractConnectionRecord.VaultMount));
+ strHide.Add(nameof(AbstractConnectionRecord.VaultRole));
+ }
+ else if(SelectedConnectionInfo.ExternalCredentialProvider == ExternalCredentialProvider.OnePassword) {
+ strHide.Add(nameof(AbstractConnectionRecord.VaultMount));
+ strHide.Add(nameof(AbstractConnectionRecord.VaultRole));
+ }
+ else if (SelectedConnectionInfo.ExternalCredentialProvider == ExternalCredentialProvider.VaultOpenbao) {
+ strHide.Add(nameof(AbstractConnectionRecord.Username));
+ strHide.Add(nameof(AbstractConnectionRecord.Password));
+ strHide.Add(nameof(AbstractConnectionRecord.Domain));
}
-
return strHide;
}