1
0
mirror of https://github.com/Ylianst/MeshCentralRouter synced 2025-12-10 21:33:46 +00:00

More improvements.

This commit is contained in:
Ylian Saint-Hilaire
2020-09-16 16:34:57 -07:00
parent 2a8d1d3a6c
commit 629ce21336
10 changed files with 267 additions and 181 deletions

View File

@@ -110,7 +110,7 @@
// pictureBox1 // pictureBox1
// //
resources.ApplyResources(this.pictureBox1, "pictureBox1"); resources.ApplyResources(this.pictureBox1, "pictureBox1");
this.pictureBox1.Image = global::MeshCentralRouter.Properties.Resources._50_Computer; this.pictureBox1.Image = global::MeshCentralRouter.Properties.Resources.Computer50;
this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.TabStop = false; this.pictureBox1.TabStop = false;
// //

4
KVMViewer.Designer.cs generated
View File

@@ -110,7 +110,7 @@ namespace MeshCentralRouter
// clipOutboundButton // clipOutboundButton
// //
resources.ApplyResources(this.clipOutboundButton, "clipOutboundButton"); resources.ApplyResources(this.clipOutboundButton, "clipOutboundButton");
this.clipOutboundButton.Image = global::MeshCentralRouter.Properties.Resources.icon_clipboard_out; this.clipOutboundButton.Image = global::MeshCentralRouter.Properties.Resources.iconClipboardOut;
this.clipOutboundButton.Name = "clipOutboundButton"; this.clipOutboundButton.Name = "clipOutboundButton";
this.clipOutboundButton.TabStop = false; this.clipOutboundButton.TabStop = false;
this.mainToolTip.SetToolTip(this.clipOutboundButton, resources.GetString("clipOutboundButton.ToolTip")); this.mainToolTip.SetToolTip(this.clipOutboundButton, resources.GetString("clipOutboundButton.ToolTip"));
@@ -120,7 +120,7 @@ namespace MeshCentralRouter
// clipInboundButton // clipInboundButton
// //
resources.ApplyResources(this.clipInboundButton, "clipInboundButton"); resources.ApplyResources(this.clipInboundButton, "clipInboundButton");
this.clipInboundButton.Image = global::MeshCentralRouter.Properties.Resources.icon_clipboard_in; this.clipInboundButton.Image = global::MeshCentralRouter.Properties.Resources.iconClipboardIn;
this.clipInboundButton.Name = "clipInboundButton"; this.clipInboundButton.Name = "clipInboundButton";
this.clipInboundButton.TabStop = false; this.clipInboundButton.TabStop = false;
this.mainToolTip.SetToolTip(this.clipInboundButton, resources.GetString("clipInboundButton.ToolTip")); this.mainToolTip.SetToolTip(this.clipInboundButton, resources.GetString("clipInboundButton.ToolTip"));

View File

@@ -175,7 +175,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="clipOutboundButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="clipOutboundButton.Location" type="System.Drawing.Point, System.Drawing">
<value>324, 3</value> <value>288, 3</value>
</data> </data>
<data name="clipOutboundButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="clipOutboundButton.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 26</value> <value>30, 26</value>
@@ -208,7 +208,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="clipInboundButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="clipInboundButton.Location" type="System.Drawing.Point, System.Drawing">
<value>288, 3</value> <value>324, 3</value>
</data> </data>
<data name="clipInboundButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="clipInboundButton.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 26</value> <value>30, 26</value>
@@ -493,7 +493,7 @@
<value>resizeKvmControl</value> <value>resizeKvmControl</value>
</data> </data>
<data name="&gt;&gt;resizeKvmControl.Type" xml:space="preserve"> <data name="&gt;&gt;resizeKvmControl.Type" xml:space="preserve">
<value>MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.0.7564.25887, Culture=neutral, PublicKeyToken=null</value> <value>MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.0.7564.28683, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;resizeKvmControl.Parent" xml:space="preserve"> <data name="&gt;&gt;resizeKvmControl.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>

19
MainForm.Designer.cs generated
View File

@@ -63,6 +63,7 @@
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.tabPage3 = new System.Windows.Forms.TabPage(); this.tabPage3 = new System.Windows.Forms.TabPage();
this.panel3 = new System.Windows.Forms.Panel(); this.panel3 = new System.Windows.Forms.Panel();
this.rememberCertCheckBox = new System.Windows.Forms.CheckBox();
this.certDetailsTextBox = new System.Windows.Forms.TextBox(); this.certDetailsTextBox = new System.Windows.Forms.TextBox();
this.certDetailsButton = new System.Windows.Forms.Button(); this.certDetailsButton = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
@@ -124,7 +125,7 @@
this.saveMappingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.saveMappingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openMapFileDialog = new System.Windows.Forms.OpenFileDialog(); this.openMapFileDialog = new System.Windows.Forms.OpenFileDialog();
this.saveMapFileDialog = new System.Windows.Forms.SaveFileDialog(); this.saveMapFileDialog = new System.Windows.Forms.SaveFileDialog();
this.rememberCertCheckBox = new System.Windows.Forms.CheckBox(); this.tokenRememberCheckBox = new System.Windows.Forms.CheckBox();
this.panel5.SuspendLayout(); this.panel5.SuspendLayout();
this.mainPanel.SuspendLayout(); this.mainPanel.SuspendLayout();
this.mainTabControl.SuspendLayout(); this.mainTabControl.SuspendLayout();
@@ -308,6 +309,7 @@
// //
// panel2 // panel2
// //
this.panel2.Controls.Add(this.tokenRememberCheckBox);
this.panel2.Controls.Add(this.emailTokenButton); this.panel2.Controls.Add(this.emailTokenButton);
this.panel2.Controls.Add(this.smsTokenButton); this.panel2.Controls.Add(this.smsTokenButton);
this.panel2.Controls.Add(this.tokenEmailSentLabel); this.panel2.Controls.Add(this.tokenEmailSentLabel);
@@ -406,6 +408,12 @@
resources.ApplyResources(this.panel3, "panel3"); resources.ApplyResources(this.panel3, "panel3");
this.panel3.Name = "panel3"; this.panel3.Name = "panel3";
// //
// rememberCertCheckBox
//
resources.ApplyResources(this.rememberCertCheckBox, "rememberCertCheckBox");
this.rememberCertCheckBox.Name = "rememberCertCheckBox";
this.rememberCertCheckBox.UseVisualStyleBackColor = true;
//
// certDetailsTextBox // certDetailsTextBox
// //
resources.ApplyResources(this.certDetailsTextBox, "certDetailsTextBox"); resources.ApplyResources(this.certDetailsTextBox, "certDetailsTextBox");
@@ -855,11 +863,11 @@
this.saveMapFileDialog.DefaultExt = "mcrouter"; this.saveMapFileDialog.DefaultExt = "mcrouter";
resources.ApplyResources(this.saveMapFileDialog, "saveMapFileDialog"); resources.ApplyResources(this.saveMapFileDialog, "saveMapFileDialog");
// //
// rememberCertCheckBox // tokenRememberCheckBox
// //
resources.ApplyResources(this.rememberCertCheckBox, "rememberCertCheckBox"); resources.ApplyResources(this.tokenRememberCheckBox, "tokenRememberCheckBox");
this.rememberCertCheckBox.Name = "rememberCertCheckBox"; this.tokenRememberCheckBox.Name = "tokenRememberCheckBox";
this.rememberCertCheckBox.UseVisualStyleBackColor = true; this.tokenRememberCheckBox.UseVisualStyleBackColor = true;
// //
// MainForm // MainForm
// //
@@ -1005,6 +1013,7 @@
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
private System.Windows.Forms.ToolStripMenuItem remoteDesktopToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem remoteDesktopToolStripMenuItem;
private System.Windows.Forms.CheckBox rememberCertCheckBox; private System.Windows.Forms.CheckBox rememberCertCheckBox;
private System.Windows.Forms.CheckBox tokenRememberCheckBox;
} }
} }

View File

@@ -51,13 +51,6 @@ namespace MeshCentralRouter
public ArrayList mappingsToSetup = null; public ArrayList mappingsToSetup = null;
public bool deviceListViewMode = true; public bool deviceListViewMode = true;
public void setRegValue(string name, string value) {
try { Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Open Source\MeshCentral Router", name, value); } catch (Exception) { }
}
public string getRegValue(string name, string value) {
try { return Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\Open Source\MeshCentral Router", name, value).ToString(); } catch (Exception) { return value; }
}
public bool isRouterHooked() public bool isRouterHooked()
{ {
try try
@@ -144,13 +137,13 @@ namespace MeshCentralRouter
[DllImport("user32.dll", CharSet = CharSet.Auto)] [DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern Int32 SendMessage(IntPtr hWnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)]string lParam); private static extern Int32 SendMessage(IntPtr hWnd, int msg, int wParam, [MarshalAs(UnmanagedType.LPWStr)]string lParam);
public static void saveToRegistry(string name, string value) public void setRegValue(string name, string value)
{ {
try { Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\OpenSource\MeshRouter", name, value); } catch (Exception) { } try { Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Open Source\MeshCentral Router", name, value); } catch (Exception) { }
} }
public static string loadFromRegistry(string name) public string getRegValue(string name, string value)
{ {
try { return Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\OpenSource\MeshRouter", name, "").ToString(); } catch (Exception) { return ""; } try { return Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\Open Source\MeshCentral Router", name, value).ToString(); } catch (Exception) { return value; }
} }
public MainForm(string[] args) public MainForm(string[] args)
@@ -165,8 +158,8 @@ namespace MeshCentralRouter
Version version = Assembly.GetEntryAssembly().GetName().Version; Version version = Assembly.GetEntryAssembly().GetName().Version;
versionLabel.Text = "v" + version.Major + "." + version.Minor + "." + version.Build; versionLabel.Text = "v" + version.Major + "." + version.Minor + "." + version.Build;
serverNameComboBox.Text = loadFromRegistry("ServerName"); serverNameComboBox.Text = getRegValue("ServerName", "");
userNameTextBox.Text = loadFromRegistry("UserName"); userNameTextBox.Text = getRegValue("UserName", "");
title = this.Text; title = this.Text;
int argflags = 0; int argflags = 0;
@@ -203,6 +196,7 @@ namespace MeshCentralRouter
currentPanel = newPanel; currentPanel = newPanel;
// Setup stuff // Setup stuff
if (newPanel == 1) { tokenRememberCheckBox.Checked = false; }
nextButton2.Enabled = (tokenTextBox.Text.Replace(" ", "") != ""); nextButton2.Enabled = (tokenTextBox.Text.Replace(" ", "") != "");
} }
@@ -314,16 +308,21 @@ namespace MeshCentralRouter
meshcentral.onNodesChanged += Meshcentral_onNodesChanged; meshcentral.onNodesChanged += Meshcentral_onNodesChanged;
meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged; meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged;
meshcentral.onClipboardData += Meshcentral_onClipboardData; meshcentral.onClipboardData += Meshcentral_onClipboardData;
meshcentral.onTwoFactorCookie += Meshcentral_onTwoFactorCookie;
if (lastBadConnectCert != null) if (lastBadConnectCert != null)
{ {
meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); meshcentral.okCertHash = lastBadConnectCert.GetCertHashString();
} }
else else
{ {
string ignoreCert = loadFromRegistry("IgnoreCert"); string ignoreCert = getRegValue("IgnoreCert", null);
if (ignoreCert != null) { meshcentral.okCertHash = ignoreCert; } if (ignoreCert != null) { meshcentral.okCertHash = ignoreCert; }
} }
// Load two factor cookie if present
string twoFactorCookie = getRegValue("TwoFactorCookie", null);
if ((twoFactorCookie != null) && (twoFactorCookie != "")) { twoFactorCookie = "cookie=" + twoFactorCookie; } else { twoFactorCookie = null; }
Uri serverurl = null; Uri serverurl = null;
if (authLoginUrl != null) { if (authLoginUrl != null) {
try { try {
@@ -333,7 +332,7 @@ namespace MeshCentralRouter
meshcentral.connect(serverurl, null, null, null); meshcentral.connect(serverurl, null, null, null);
} else { } else {
try { serverurl = new Uri("wss://" + serverNameComboBox.Text + "/control.ashx"); } catch (Exception) { } try { serverurl = new Uri("wss://" + serverNameComboBox.Text + "/control.ashx"); } catch (Exception) { }
meshcentral.connect(serverurl, userNameTextBox.Text, passwordTextBox.Text, null); meshcentral.connect(serverurl, userNameTextBox.Text, passwordTextBox.Text, twoFactorCookie);
} }
} }
@@ -343,10 +342,16 @@ namespace MeshCentralRouter
Clipboard.SetData(DataFormats.Text, (Object)data); Clipboard.SetData(DataFormats.Text, (Object)data);
} }
private void Meshcentral_onTwoFactorCookie(string cookie)
{
if (this.InvokeRequired) { this.Invoke(new MeshCentralServer.twoFactorCookieHandler(Meshcentral_onTwoFactorCookie), cookie); return; }
setRegValue("TwoFactorCookie", cookie);
}
private void nextButton3_Click(object sender, EventArgs e) private void nextButton3_Click(object sender, EventArgs e)
{ {
// If we need to remember this certificate // If we need to remember this certificate
if (rememberCertCheckBox.Checked) { saveToRegistry("IgnoreCert", lastBadConnectCert.GetCertHashString()); } if (rememberCertCheckBox.Checked) { setRegValue("IgnoreCert", lastBadConnectCert.GetCertHashString()); }
// Attempt to login, ignore bad cert. // Attempt to login, ignore bad cert.
addButton.Enabled = false; addButton.Enabled = false;
@@ -359,6 +364,7 @@ namespace MeshCentralRouter
meshcentral.onNodesChanged += Meshcentral_onNodesChanged; meshcentral.onNodesChanged += Meshcentral_onNodesChanged;
meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged; meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged;
meshcentral.onClipboardData += Meshcentral_onClipboardData; meshcentral.onClipboardData += Meshcentral_onClipboardData;
meshcentral.onTwoFactorCookie += Meshcentral_onTwoFactorCookie;
meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); meshcentral.okCertHash = lastBadConnectCert.GetCertHashString();
Uri serverurl = null; Uri serverurl = null;
@@ -367,8 +373,11 @@ namespace MeshCentralRouter
serverurl = new Uri("wss://" + authLoginUrl.Host + ":" + ((authLoginUrl.Port > 0) ? authLoginUrl.Port : 443) + authLoginUrl.LocalPath + "?auth=" + getValueFromQueryString(authLoginUrl.Query, "c")); serverurl = new Uri("wss://" + authLoginUrl.Host + ":" + ((authLoginUrl.Port > 0) ? authLoginUrl.Port : 443) + authLoginUrl.LocalPath + "?auth=" + getValueFromQueryString(authLoginUrl.Query, "c"));
meshcentral.connect(serverurl, null, null, null); meshcentral.connect(serverurl, null, null, null);
} else { } else {
// Load two factor cookie if present
string twoFactorCookie = getRegValue("TwoFactorCookie", null);
if ((twoFactorCookie != null) && (twoFactorCookie != "")) { twoFactorCookie = "cookie=" + twoFactorCookie; } else { twoFactorCookie = null; }
serverurl = new Uri("wss://" + serverNameComboBox.Text + "/control.ashx"); serverurl = new Uri("wss://" + serverNameComboBox.Text + "/control.ashx");
meshcentral.connect(serverurl, userNameTextBox.Text, passwordTextBox.Text, null); meshcentral.connect(serverurl, userNameTextBox.Text, passwordTextBox.Text, twoFactorCookie);
} }
} }
@@ -577,6 +586,13 @@ namespace MeshCentralRouter
smsTokenButton.Left = emailTokenButton.Left; smsTokenButton.Left = emailTokenButton.Left;
} }
tokenTextBox.Text = ""; tokenTextBox.Text = "";
if (meshcentral.twoFactorCookieDays > 0) {
tokenRememberCheckBox.Visible = true;
tokenRememberCheckBox.Text = string.Format(Properties.Resources.DontAskXDays, meshcentral.twoFactorCookieDays);
} else {
tokenRememberCheckBox.Visible = false;
}
setPanel(2); setPanel(2);
tokenTextBox.Focus(); tokenTextBox.Focus();
} else { setPanel(1); } } else { setPanel(1); }
@@ -652,8 +668,8 @@ namespace MeshCentralRouter
addButton.Focus(); addButton.Focus();
if (authLoginUrl == null) if (authLoginUrl == null)
{ {
saveToRegistry("ServerName", serverNameComboBox.Text); setRegValue("ServerName", serverNameComboBox.Text);
saveToRegistry("UserName", userNameTextBox.Text); setRegValue("UserName", userNameTextBox.Text);
} }
if (meshcentral.username != null) { if (meshcentral.username != null) {
this.Text = title + " - " + meshcentral.username; this.Text = title + " - " + meshcentral.username;
@@ -661,6 +677,9 @@ namespace MeshCentralRouter
this.Text = title + " - " + userNameTextBox.Text; this.Text = title + " - " + userNameTextBox.Text;
} }
cookieRefreshTimer.Enabled = true; cookieRefreshTimer.Enabled = true;
// If we need to remember the 2nd factor, ask for a cookie now.
if (tokenRememberCheckBox.Checked) { meshcentral.sendCommand("{\"action\":\"twoFactorCookie\"}"); }
} }
} }
@@ -885,13 +904,14 @@ namespace MeshCentralRouter
if (lastBadConnectCert != null) { if (lastBadConnectCert != null) {
meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); meshcentral.okCertHash = lastBadConnectCert.GetCertHashString();
} else { } else {
string ignoreCert = loadFromRegistry("IgnoreCert"); string ignoreCert = getRegValue("IgnoreCert", null);
if (ignoreCert != null) { meshcentral.okCertHash = ignoreCert; } if (ignoreCert != null) { meshcentral.okCertHash = ignoreCert; }
} }
meshcentral.onStateChanged += Meshcentral_onStateChanged; meshcentral.onStateChanged += Meshcentral_onStateChanged;
meshcentral.onNodesChanged += Meshcentral_onNodesChanged; meshcentral.onNodesChanged += Meshcentral_onNodesChanged;
meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged; meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged;
meshcentral.onClipboardData += Meshcentral_onClipboardData; meshcentral.onClipboardData += Meshcentral_onClipboardData;
meshcentral.onTwoFactorCookie += Meshcentral_onTwoFactorCookie;
if (sendEmailToken == true) if (sendEmailToken == true)
{ {
sendEmailToken = false; sendEmailToken = false;

View File

@@ -600,6 +600,39 @@
<data name="&gt;&gt;tabPage1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;tabPage1.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<data name="tokenRememberCheckBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tokenRememberCheckBox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="tokenRememberCheckBox.Location" type="System.Drawing.Point, System.Drawing">
<value>241, 221</value>
</data>
<data name="tokenRememberCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 17</value>
</data>
<data name="tokenRememberCheckBox.TabIndex" type="System.Int32, mscorlib">
<value>23</value>
</data>
<data name="tokenRememberCheckBox.Text" xml:space="preserve">
<value>Don't ask for {0} days.</value>
</data>
<data name="tokenRememberCheckBox.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;tokenRememberCheckBox.Name" xml:space="preserve">
<value>tokenRememberCheckBox</value>
</data>
<data name="&gt;&gt;tokenRememberCheckBox.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tokenRememberCheckBox.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;tokenRememberCheckBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="emailTokenButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="emailTokenButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
@@ -628,7 +661,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;emailTokenButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;emailTokenButton.ZOrder" xml:space="preserve">
<value>0</value> <value>1</value>
</data> </data>
<data name="smsTokenButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="smsTokenButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
@@ -658,7 +691,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;smsTokenButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;smsTokenButton.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="tokenEmailSentLabel.AutoSize" type="System.Boolean, mscorlib"> <data name="tokenEmailSentLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@@ -691,7 +724,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;tokenEmailSentLabel.ZOrder" xml:space="preserve"> <data name="&gt;&gt;tokenEmailSentLabel.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib"> <data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@@ -721,7 +754,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>3</value> <value>4</value>
</data> </data>
<data name="tokenTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="tokenTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value> <value>Top, Left, Right</value>
@@ -745,7 +778,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;tokenTextBox.ZOrder" xml:space="preserve"> <data name="&gt;&gt;tokenTextBox.ZOrder" xml:space="preserve">
<value>4</value> <value>5</value>
</data> </data>
<data name="pictureBox6.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="pictureBox6.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value> <value>Top, Bottom, Left, Right</value>
@@ -775,7 +808,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;pictureBox6.ZOrder" xml:space="preserve"> <data name="&gt;&gt;pictureBox6.ZOrder" xml:space="preserve">
<value>5</value> <value>6</value>
</data> </data>
<data name="backButton2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="backButton2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value> <value>Bottom, Right</value>
@@ -805,7 +838,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;backButton2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;backButton2.ZOrder" xml:space="preserve">
<value>6</value> <value>7</value>
</data> </data>
<data name="nextButton2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="nextButton2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value> <value>Bottom, Right</value>
@@ -835,7 +868,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;nextButton2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;nextButton2.ZOrder" xml:space="preserve">
<value>7</value> <value>8</value>
</data> </data>
<data name="pictureBox4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="pictureBox4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value> <value>Bottom, Left, Right</value>
@@ -865,7 +898,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;pictureBox4.ZOrder" xml:space="preserve"> <data name="&gt;&gt;pictureBox4.ZOrder" xml:space="preserve">
<value>8</value> <value>9</value>
</data> </data>
<data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value> <value>Top, Left, Right</value>
@@ -895,7 +928,7 @@
<value>panel2</value> <value>panel2</value>
</data> </data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>9</value> <value>10</value>
</data> </data>
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value> <value>Fill</value>
@@ -1439,7 +1472,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADg ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADg
HQAAAk1TRnQBSQFMAgEBEAEAARgBAAEYAQABEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA HQAAAk1TRnQBSQFMAgEBEAEAASABAAEgAQABEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABUAMAAQEBAAEYBgABPP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AJYAA/0D+AP3A/sD/yEAA/0D+gP5 AwABUAMAAQEBAAEYBgABPP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AJYAA/0D+AP3A/sD/yEAA/0D+gP5
A/wD/xgAAfoB+wH6A/4qAAP9A/8tAAP7A88D1QPbA88D1AO+A9QYAAP8A90D4APjA90D4APUA+MSAAP8 A/wD/xgAAfoB+wH6A/4qAAP9A/8tAAP7A88D1QPbA88D1AO+A9QYAAP8A90D4APjA90D4APUA+MSAAP8
AZEBjwF9AU4BaAEhAfQB9QH0JAAD/gPRA8YD+ioAAcYCxwHPAtAB2ALZA90DywPBA68DmgP3FQAD2APd AZEBjwF9AU4BaAEhAfQB9QH0JAAD/gPRA8YD+ioAAcYCxwHPAtAB2ALZA90DywPBA68DmgP3FQAD2APd
@@ -1606,7 +1639,7 @@
<value>2, 88</value> <value>2, 88</value>
</data> </data>
<data name="noSearchResultsLabel.Size" type="System.Drawing.Size, System.Drawing"> <data name="noSearchResultsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>446, 52</value> <value>442, 52</value>
</data> </data>
<data name="noSearchResultsLabel.TabIndex" type="System.Int32, mscorlib"> <data name="noSearchResultsLabel.TabIndex" type="System.Int32, mscorlib">
<value>5</value> <value>5</value>
@@ -1645,7 +1678,7 @@
<value>2, 88</value> <value>2, 88</value>
</data> </data>
<data name="noDevicesLabel.Size" type="System.Drawing.Size, System.Drawing"> <data name="noDevicesLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>446, 52</value> <value>442, 52</value>
</data> </data>
<data name="noDevicesLabel.TabIndex" type="System.Int32, mscorlib"> <data name="noDevicesLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>
@@ -1735,7 +1768,7 @@
<value>2, 79</value> <value>2, 79</value>
</data> </data>
<data name="noMapLabel.Size" type="System.Drawing.Size, System.Drawing"> <data name="noMapLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>446, 52</value> <value>442, 52</value>
</data> </data>
<data name="noMapLabel.TabIndex" type="System.Int32, mscorlib"> <data name="noMapLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>

View File

@@ -18,40 +18,11 @@
"MainForm.resx%$this.Text" "MainForm.resx%$this.Text"
] ]
}, },
{
"en": "&Connect...",
"fr": "&Relier...",
"xloc": [
"KVMViewer.resx%MenuItemConnect.Text"
]
},
{
"en": "&Control",
"fr": "&Contrôle",
"xloc": [
"KVMViewer.resx%toolStripMenuItem2.Text"
]
},
{
"en": "&Debug",
"fr": "&Déboguer",
"xloc": [
"KVMViewer.resx%debugToolStripMenuItem.Text"
]
},
{
"en": "&Disconnect",
"fr": "& Déconnecter",
"xloc": [
"KVMViewer.resx%MenuItemDisconnect.Text"
]
},
{ {
"cs": "& Informace ...", "cs": "& Informace ...",
"de": "&Die Info...", "de": "&Die Info...",
"en": "&Info...", "en": "&Info...",
"es": "& Info ...", "es": "& Info ...",
"fr": "&Info...",
"hi": "और जानकारी ...", "hi": "और जानकारी ...",
"it": "&Informazioni...", "it": "&Informazioni...",
"ja": "情報...", "ja": "情報...",
@@ -66,7 +37,6 @@
}, },
{ {
"en": "&Open Mappings...", "en": "&Open Mappings...",
"fr": "& Ouvrir les mappages ...",
"xloc": [ "xloc": [
"MainForm.resx%openMappingsToolStripMenuItem.Text" "MainForm.resx%openMappingsToolStripMenuItem.Text"
] ]
@@ -88,46 +58,16 @@
"MainForm.resx%openToolStripMenuItem.Text" "MainForm.resx%openToolStripMenuItem.Text"
] ]
}, },
{
"en": "&Pause",
"fr": "&Pause",
"xloc": [
"KVMViewer.resx%pauseToolStripMenuItem.Text"
]
},
{
"en": "&Refresh",
"fr": "&Rafraîchir",
"xloc": [
"KVMViewer.resx%refreshToolStripMenuItem.Text"
]
},
{ {
"en": "&Save Mappings...", "en": "&Save Mappings...",
"fr": "& Enregistrer les mappages ...",
"xloc": [ "xloc": [
"MainForm.resx%saveMappingsToolStripMenuItem.Text" "MainForm.resx%saveMappingsToolStripMenuItem.Text"
] ]
}, },
{ {
"en": "&Status", "en": "(Individual Devices)",
"fr": "&Statut",
"xloc": [ "xloc": [
"KVMViewer.resx%statusToolStripMenuItem.Text" "Properties%Resources.resx%IndividualDevices"
]
},
{
"en": "&View",
"fr": "&Vue",
"xloc": [
"KVMViewer.resx%viewToolStripMenuItem.Text"
]
},
{
"en": "&Zoom-to-fit",
"fr": "& Zoomer pour ajuster",
"xloc": [
"KVMViewer.resx%zoomtofitToolStripMenuItem.Text"
] ]
}, },
{ {
@@ -168,44 +108,54 @@
}, },
{ {
"en": "---", "en": "---",
"fr": "---",
"xloc": [ "xloc": [
"KVMViewer.resx%mainToolStripStatusLabel.Text" "KVMViewer.resx%mainToolStripStatusLabel.Text"
] ]
}, },
{
"en": "0 Bytes",
"xloc": [
"KVMStats.resx%kvmCompInBytesLabel.Text",
"KVMStats.resx%kvmCompOutBytesLabel.Text",
"KVMStats.resx%kvmInBytesLabel.Text",
"KVMStats.resx%kvmOutBytesLabel.Text",
"MappingStats.resx%kvmCompInBytesLabel.Text",
"MappingStats.resx%kvmCompOutBytesLabel.Text",
"MappingStats.resx%kvmInBytesLabel.Text",
"MappingStats.resx%kvmOutBytesLabel.Text"
]
},
{
"en": "0%",
"xloc": [
"KVMStats.resx%inRatioLabel.Text",
"KVMStats.resx%outRatioLabel.Text",
"MappingStats.resx%inRatioLabel.Text",
"MappingStats.resx%outRatioLabel.Text"
]
},
{ {
"cs": "127,0,0,1", "cs": "127,0,0,1",
"en": "127.0.0.1", "en": "127.0.0.1",
"fr": "127.0.0.1",
"xloc": [ "xloc": [
"AddRelayMapForm.resx%remoteIpTextBox.Text" "AddRelayMapForm.resx%remoteIpTextBox.Text"
] ]
}, },
{ {
"en": "AMT", "en": "AMT",
"fr": "AMT",
"hi": "एएमटी", "hi": "एएमटी",
"xloc": [ "xloc": [
"Properties%Resources.resx%AMT" "Properties%Resources.resx%AMT"
] ]
}, },
{
"en": "Actions",
"fr": "Actions",
"xloc": [
"KVMViewer.resx%actionsToolStripMenuItem.Text"
]
},
{ {
"en": "Add &Map...", "en": "Add &Map...",
"fr": "Ajouter une & carte ...",
"xloc": [ "xloc": [
"MainForm.resx%addMapToolStripMenuItem.Text" "MainForm.resx%addMapToolStripMenuItem.Text"
] ]
}, },
{ {
"en": "Add &Relay Map...", "en": "Add &Relay Map...",
"fr": "Ajouter une carte de & relais ...",
"xloc": [ "xloc": [
"MainForm.resx%addRelayMapToolStripMenuItem.Text" "MainForm.resx%addRelayMapToolStripMenuItem.Text"
] ]
@@ -250,7 +200,6 @@
"cs": "Činidlo", "cs": "Činidlo",
"en": "Agent", "en": "Agent",
"es": "Agente", "es": "Agente",
"fr": "Agent",
"hi": "एजेंट", "hi": "एजेंट",
"it": "Agente", "it": "Agente",
"ja": "エージェント", "ja": "エージェント",
@@ -287,7 +236,6 @@
"de": "Anwendung", "de": "Anwendung",
"en": "Application", "en": "Application",
"es": "Solicitud", "es": "Solicitud",
"fr": "Application",
"hi": "आवेदन", "hi": "आवेदन",
"it": "Applicazione", "it": "Applicazione",
"ja": "応用", "ja": "応用",
@@ -394,7 +342,6 @@
}, },
{ {
"en": "CIRA", "en": "CIRA",
"fr": "CIRA",
"hi": "सीआईआरए", "hi": "सीआईआरए",
"ja": "チラ", "ja": "チラ",
"ko": "시라", "ko": "시라",
@@ -499,6 +446,13 @@
"MainForm.resx%nextButton5.Text" "MainForm.resx%nextButton5.Text"
] ]
}, },
{
"en": "Compressed Network Traffic",
"xloc": [
"KVMStats.resx%groupBox1.Text",
"MappingStats.resx%groupBox1.Text"
]
},
{ {
"en": "Compression Settings", "en": "Compression Settings",
"fr": "Paramètres de compression", "fr": "Paramètres de compression",
@@ -612,6 +566,13 @@
"MainForm.resx%devicesTabPage.Text" "MainForm.resx%devicesTabPage.Text"
] ]
}, },
{
"en": "Don't ask for {0} days.",
"xloc": [
"MainForm.resx%tokenRememberCheckBox.Text",
"Properties%Resources.resx%DontAskXDays"
]
},
{ {
"cs": "Výstup", "cs": "Výstup",
"de": "Ausgang", "de": "Ausgang",
@@ -627,7 +588,6 @@
"ru": "Выход", "ru": "Выход",
"zh-chs": "出口", "zh-chs": "出口",
"xloc": [ "xloc": [
"KVMViewer.resx%MenuItemExit.Text",
"MainForm.resx%exitToolStripMenuItem.Text" "MainForm.resx%exitToolStripMenuItem.Text"
] ]
}, },
@@ -635,7 +595,6 @@
"cs": "E-mailem", "cs": "E-mailem",
"en": "Email", "en": "Email",
"es": "Correo electrónico", "es": "Correo electrónico",
"fr": "Email",
"hi": "ईमेल", "hi": "ईमेल",
"it": "E-mail", "it": "E-mail",
"ja": "Eメール", "ja": "Eメール",
@@ -748,7 +707,6 @@
}, },
{ {
"en": "HTTP", "en": "HTTP",
"fr": "HTTP",
"hi": "एचटीटीपी", "hi": "एचटीटीपी",
"xloc": [ "xloc": [
"DeviceUserControl.resx%httpButton.Text", "DeviceUserControl.resx%httpButton.Text",
@@ -757,7 +715,6 @@
}, },
{ {
"en": "HTTPS", "en": "HTTPS",
"fr": "HTTPS",
"xloc": [ "xloc": [
"DeviceUserControl.resx%httpsButton.Text", "DeviceUserControl.resx%httpsButton.Text",
"MainForm.resx%httpsToolStripMenuItem.Text" "MainForm.resx%httpsToolStripMenuItem.Text"
@@ -781,6 +738,22 @@
"MainForm.resx%nextButton3.Text" "MainForm.resx%nextButton3.Text"
] ]
}, },
{
"en": "Incoming Bytes",
"xloc": [
"KVMStats.resx%label12.Text",
"KVMStats.resx%label4.Text",
"MappingStats.resx%label12.Text",
"MappingStats.resx%label4.Text"
]
},
{
"en": "Incoming Compression",
"xloc": [
"KVMStats.resx%label11.Text",
"MappingStats.resx%label11.Text"
]
},
{ {
"cs": "Nainstalujte...", "cs": "Nainstalujte...",
"de": "Installieren...", "de": "Installieren...",
@@ -803,7 +776,6 @@
"cs": "Instalace", "cs": "Instalace",
"en": "Installation", "en": "Installation",
"es": "Instalación", "es": "Instalación",
"fr": "Installation",
"hi": "स्थापना", "hi": "स्थापना",
"it": "Installazione", "it": "Installazione",
"ja": "取り付け", "ja": "取り付け",
@@ -910,7 +882,6 @@
}, },
{ {
"en": "MQTT", "en": "MQTT",
"fr": "MQTT",
"xloc": [ "xloc": [
"Properties%Resources.resx%MQTT" "Properties%Resources.resx%MQTT"
] ]
@@ -936,7 +907,6 @@
}, },
{ {
"en": "MeshCentral", "en": "MeshCentral",
"fr": "MeshCentral",
"zh-chs": "网格中心", "zh-chs": "网格中心",
"xloc": [ "xloc": [
"Properties%Resources.resx%MeshCentralTitle" "Properties%Resources.resx%MeshCentralTitle"
@@ -1008,6 +978,8 @@
"ru": "имя", "ru": "имя",
"zh-chs": "名称", "zh-chs": "名称",
"xloc": [ "xloc": [
"AddPortMapForm.resx%label8.Text",
"AddRelayMapForm.resx%label8.Text",
"AppLaunchForm.resx%label1.Text", "AppLaunchForm.resx%label1.Text",
"MainForm.resx%nameColumnHeader.Text" "MainForm.resx%nameColumnHeader.Text"
] ]
@@ -1100,6 +1072,8 @@
"AppLaunchForm.resx%okButton.Text", "AppLaunchForm.resx%okButton.Text",
"InstallForm.resx%okButton.Text", "InstallForm.resx%okButton.Text",
"KVMSettingsForm.resx%okButton.Text", "KVMSettingsForm.resx%okButton.Text",
"KVMStats.resx%okButton.Text",
"MappingStats.resx%okButton.Text",
"SettingsForm.resx%okButton.Text", "SettingsForm.resx%okButton.Text",
"altPortForm.resx%okButton.Text", "altPortForm.resx%okButton.Text",
"rdpPortForm.resx%okButton.Text" "rdpPortForm.resx%okButton.Text"
@@ -1173,6 +1147,22 @@
"MapUserControl.resx%appButton.Text" "MapUserControl.resx%appButton.Text"
] ]
}, },
{
"en": "Outgoing Bytes",
"xloc": [
"KVMStats.resx%label2.Text",
"KVMStats.resx%label3.Text",
"MappingStats.resx%label2.Text",
"MappingStats.resx%label3.Text"
]
},
{
"en": "Outgoing Compression",
"xloc": [
"KVMStats.resx%label10.Text",
"MappingStats.resx%label10.Text"
]
},
{ {
"cs": "Heslo", "cs": "Heslo",
"de": "Passwort", "de": "Passwort",
@@ -1287,7 +1277,6 @@
}, },
{ {
"en": "RDP", "en": "RDP",
"fr": "RDP",
"hi": "आरडीपी", "hi": "आरडीपी",
"xloc": [ "xloc": [
"DeviceUserControl.resx%rdpButton.Text", "DeviceUserControl.resx%rdpButton.Text",
@@ -1367,6 +1356,12 @@
"AddRelayMapForm.resx%$this.Text" "AddRelayMapForm.resx%$this.Text"
] ]
}, },
{
"en": "Remember this certificate",
"xloc": [
"MainForm.resx%rememberCertCheckBox.Text"
]
},
{ {
"en": "Remote Desktop", "en": "Remote Desktop",
"fr": "Bureau à distance", "fr": "Bureau à distance",
@@ -1374,6 +1369,12 @@
"KVMViewer.resx%$this.Text" "KVMViewer.resx%$this.Text"
] ]
}, },
{
"en": "Remote Desktop Data",
"xloc": [
"KVMStats.resx%groupBox2.Text"
]
},
{ {
"en": "Remote Desktop Settings", "en": "Remote Desktop Settings",
"fr": "Paramètres du bureau à distance", "fr": "Paramètres du bureau à distance",
@@ -1381,9 +1382,14 @@
"KVMSettingsForm.resx%$this.Text" "KVMSettingsForm.resx%$this.Text"
] ]
}, },
{
"en": "Remote Desktop Stats",
"xloc": [
"KVMStats.resx%$this.Text"
]
},
{ {
"en": "Remote Desktop...", "en": "Remote Desktop...",
"fr": "Bureau à distance...",
"xloc": [ "xloc": [
"MainForm.resx%remoteDesktopToolStripMenuItem.Text" "MainForm.resx%remoteDesktopToolStripMenuItem.Text"
] ]
@@ -1468,6 +1474,12 @@
"MapUserControl.resx%closeButton.Text" "MapUserControl.resx%closeButton.Text"
] ]
}, },
{
"en": "Routing Stats",
"xloc": [
"MappingStats.resx%$this.Text"
]
},
{ {
"cs": "Stav směrování", "cs": "Stav směrování",
"de": "Routing-Status", "de": "Routing-Status",
@@ -1488,7 +1500,6 @@
}, },
{ {
"en": "SCP", "en": "SCP",
"fr": "SCP",
"xloc": [ "xloc": [
"DeviceUserControl.resx%scpButton.Text", "DeviceUserControl.resx%scpButton.Text",
"MainForm.resx%scpToolStripMenuItem.Text" "MainForm.resx%scpToolStripMenuItem.Text"
@@ -1496,7 +1507,6 @@
}, },
{ {
"en": "SMS", "en": "SMS",
"fr": "SMS",
"hi": "एसएमएस", "hi": "एसएमएस",
"it": "sms", "it": "sms",
"nl": "sms", "nl": "sms",
@@ -1526,7 +1536,6 @@
}, },
{ {
"en": "SSH", "en": "SSH",
"fr": "SSH",
"zh-chs": "SSH协议", "zh-chs": "SSH协议",
"xloc": [ "xloc": [
"DeviceUserControl.resx%sshButton.Text", "DeviceUserControl.resx%sshButton.Text",
@@ -1558,13 +1567,6 @@
"Properties%Resources.resx%SearchPlaceHolder" "Properties%Resources.resx%SearchPlaceHolder"
] ]
}, },
{
"en": "Send &Ctrl-Alt-Del",
"fr": "Envoyer & Ctrl-Alt-Suppr",
"xloc": [
"KVMViewer.resx%sendCtrlAltDelToolStripMenuItem.Text"
]
},
{ {
"cs": "Odeslat token na zaregistrovanou e-mailovou adresu?", "cs": "Odeslat token na zaregistrovanou e-mailovou adresu?",
"de": "Token an registrierte E-Mail-Adresse senden?", "de": "Token an registrierte E-Mail-Adresse senden?",
@@ -1652,13 +1654,6 @@
"ServerUserControl.resx%serverNameLabel.Text" "ServerUserControl.resx%serverNameLabel.Text"
] ]
}, },
{
"en": "Session Settings...",
"fr": "Paramètres de session ...",
"xloc": [
"KVMViewer.resx%settingsToolStripMenuItem.Text"
]
},
{ {
"cs": "Nastavit port RDP ...", "cs": "Nastavit port RDP ...",
"de": "RDP-Port einstellen ...", "de": "RDP-Port einstellen ...",
@@ -1757,7 +1752,6 @@
"de": "Seite? ˅", "de": "Seite? ˅",
"en": "Site", "en": "Site",
"es": "Sitio", "es": "Sitio",
"fr": "Site",
"hi": "साइट", "hi": "साइट",
"it": "Luogo", "it": "Luogo",
"ja": "地点", "ja": "地点",
@@ -1825,11 +1819,22 @@
}, },
{ {
"en": "State", "en": "State",
"fr": "Etat",
"xloc": [ "xloc": [
"MainForm.resx%stateColumnHeader.Text" "MainForm.resx%stateColumnHeader.Text"
] ]
}, },
{
"en": "Stats",
"xloc": [
"KVMViewer.resx%statsButton.Text"
]
},
{
"en": "Stats...",
"xloc": [
"MapUserControl.resx%statsToolStripMenuItem.Text"
]
},
{ {
"cs": "Zastavil", "cs": "Zastavil",
"de": "Gestoppt", "de": "Gestoppt",
@@ -1868,7 +1873,6 @@
}, },
{ {
"en": "TCP", "en": "TCP",
"fr": "TCP",
"hi": "टीसीपी", "hi": "टीसीपी",
"zh-chs": "TCP协议", "zh-chs": "TCP协议",
"xloc": [ "xloc": [
@@ -1912,6 +1916,12 @@
"MainForm.resx%tabPage2.Text" "MainForm.resx%tabPage2.Text"
] ]
}, },
{
"en": "Tunnelling Data",
"xloc": [
"MappingStats.resx%groupBox2.Text"
]
},
{ {
"cs": "Dvoufaktorové ověření", "cs": "Dvoufaktorové ověření",
"de": "Zwei-Faktor-Authentifizierung", "de": "Zwei-Faktor-Authentifizierung",
@@ -1932,7 +1942,6 @@
}, },
{ {
"en": "UDP", "en": "UDP",
"fr": "UDP",
"hi": "यूडीपी", "hi": "यूडीपी",
"zh-chs": "UDP协议", "zh-chs": "UDP协议",
"xloc": [ "xloc": [
@@ -2067,22 +2076,13 @@
] ]
}, },
{ {
"en": "Zoom-to-Fit", "en": "label1",
"fr": "Ajustement Zoom",
"xloc": [ "xloc": [
"KVMViewer.resx%zoomButton.Text" "KVMViewer.resx%consoleMessage.Text"
]
},
{
"en": "menuStrip1",
"fr": "menuStrip1",
"xloc": [
"KVMViewer.resx%mainMenu.Text"
] ]
}, },
{ {
"en": "statusStrip1", "en": "statusStrip1",
"fr": "statusStrip1",
"xloc": [ "xloc": [
"KVMViewer.resx%mainStatusStrip.Text" "KVMViewer.resx%mainStatusStrip.Text"
] ]
@@ -2095,7 +2095,6 @@
}, },
{ {
"en": "v0.8.0", "en": "v0.8.0",
"fr": "v0.8.0",
"xloc": [ "xloc": [
"MainForm.resx%versionLabel.Text" "MainForm.resx%versionLabel.Text"
] ]

View File

@@ -62,6 +62,7 @@ namespace MeshCentralRouter
public bool ignoreCert = false; public bool ignoreCert = false;
public string userid = null; public string userid = null;
public string username = null; public string username = null;
public int twoFactorCookieDays = 0;
public Dictionary<string, ulong> userRights = null; public Dictionary<string, ulong> userRights = null;
public Dictionary<string, string> userGroups = null; public Dictionary<string, string> userGroups = null;
@@ -205,6 +206,7 @@ namespace MeshCentralRouter
if (jsonAction.ContainsKey("email2fasent")) { disconnectEmail2FASent = (bool)jsonAction["email2fasent"]; } else { disconnectEmail2FASent = false; } if (jsonAction.ContainsKey("email2fasent")) { disconnectEmail2FASent = (bool)jsonAction["email2fasent"]; } else { disconnectEmail2FASent = false; }
if (jsonAction.ContainsKey("sms2fa")) { disconnectSms2FA = (bool)jsonAction["sms2fa"]; } else { disconnectSms2FA = false; } if (jsonAction.ContainsKey("sms2fa")) { disconnectSms2FA = (bool)jsonAction["sms2fa"]; } else { disconnectSms2FA = false; }
if (jsonAction.ContainsKey("sms2fasent")) { disconnectSms2FASent = (bool)jsonAction["sms2fasent"]; } else { disconnectSms2FASent = false; } if (jsonAction.ContainsKey("sms2fasent")) { disconnectSms2FASent = (bool)jsonAction["sms2fasent"]; } else { disconnectSms2FASent = false; }
if (jsonAction.ContainsKey("twoFactorCookieDays") && (jsonAction["twoFactorCookieDays"].GetType() == typeof(int))) { twoFactorCookieDays = (int)jsonAction["twoFactorCookieDays"]; }
break; break;
} }
case "serverinfo": case "serverinfo":
@@ -569,6 +571,15 @@ namespace MeshCentralRouter
} }
break; break;
} }
case "twoFactorCookie":
{
if (jsonAction.ContainsKey("cookie"))
{
string cookie = (string)jsonAction["cookie"];
if (onTwoFactorCookie != null) { onTwoFactorCookie(cookie); }
}
break;
}
default: default:
{ {
break; break;
@@ -586,6 +597,8 @@ namespace MeshCentralRouter
public event onLoginTokenChangedHandler onLoginTokenChanged; public event onLoginTokenChangedHandler onLoginTokenChanged;
public delegate void onClipboardDataHandler(string nodeid, string data); public delegate void onClipboardDataHandler(string nodeid, string data);
public event onClipboardDataHandler onClipboardData; public event onClipboardDataHandler onClipboardData;
public delegate void twoFactorCookieHandler(string cookie);
public event twoFactorCookieHandler onTwoFactorCookie;
public class xwebclient : IDisposable public class xwebclient : IDisposable
{ {

View File

@@ -60,16 +60,6 @@ namespace MeshCentralRouter.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap _50_Computer {
get {
object obj = ResourceManager.GetObject("50-Computer", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Agent. /// Looks up a localized string similar to Agent.
/// </summary> /// </summary>
@@ -97,6 +87,25 @@ namespace MeshCentralRouter.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Computer50 {
get {
object obj = ResourceManager.GetObject("Computer50", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized string similar to Don&apos;t ask for {0} days..
/// </summary>
internal static string DontAskXDays {
get {
return ResourceManager.GetString("DontAskXDays", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Email sent. /// Looks up a localized string similar to Email sent.
/// </summary> /// </summary>
@@ -168,9 +177,9 @@ namespace MeshCentralRouter.Properties {
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap icon_clipboard_in { internal static System.Drawing.Bitmap iconClipboardIn {
get { get {
object obj = ResourceManager.GetObject("icon-clipboard-in", resourceCulture); object obj = ResourceManager.GetObject("iconClipboardIn", resourceCulture);
return ((System.Drawing.Bitmap)(obj)); return ((System.Drawing.Bitmap)(obj));
} }
} }
@@ -178,9 +187,9 @@ namespace MeshCentralRouter.Properties {
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap icon_clipboard_out { internal static System.Drawing.Bitmap iconClipboardOut {
get { get {
object obj = ResourceManager.GetObject("icon-clipboard-out", resourceCulture); object obj = ResourceManager.GetObject("iconClipboardOut", resourceCulture);
return ((System.Drawing.Bitmap)(obj)); return ((System.Drawing.Bitmap)(obj));
} }
} }

View File

@@ -166,7 +166,7 @@
<data name="MeshCentral" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="MeshCentral" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\MeshCentral.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\MeshCentral.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="icon-clipboard-out" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="iconClipboardOut" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-clipboard-out.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\icon-clipboard-out.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Offline" xml:space="preserve"> <data name="Offline" xml:space="preserve">
@@ -205,7 +205,7 @@
<data name="Starting" xml:space="preserve"> <data name="Starting" xml:space="preserve">
<value>Starting...</value> <value>Starting...</value>
</data> </data>
<data name="50-Computer" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Computer50" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\50-Computer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\50-Computer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="IndividualDevices" xml:space="preserve"> <data name="IndividualDevices" xml:space="preserve">
@@ -232,7 +232,7 @@
<data name="UnableToBindToLocalPort" xml:space="preserve"> <data name="UnableToBindToLocalPort" xml:space="preserve">
<value>Unable to bind to local port</value> <value>Unable to bind to local port</value>
</data> </data>
<data name="icon-clipboard-in" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="iconClipboardIn" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon-clipboard-in.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\icon-clipboard-in.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="InvalidUsernameOrPassword" xml:space="preserve"> <data name="InvalidUsernameOrPassword" xml:space="preserve">
@@ -241,4 +241,7 @@
<data name="ZoomToFit" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="ZoomToFit" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ZoomToFit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\ZoomToFit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="DontAskXDays" xml:space="preserve">
<value>Don't ask for {0} days.</value>
</data>
</root> </root>