Skip to content

Commit 41f1ac3

Browse files
techberetPhyxionNL
andauthored
Add Selectable Network Interface in Web Server Form (#1511)
* Add Selectable Network Interface in Web Server Update the Web Server port form to allow for editing the network interface the web server is run on. Added storage of the interface to the settings so it is persisted. This should resolve issue #1089 . * Update HttpServer.cs --------- Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
1 parent 06ed474 commit 41f1ac3

7 files changed

Lines changed: 119 additions & 46 deletions

File tree

LibreHardwareMonitor/LibreHardwareMonitor.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
<Compile Update="UI\ParameterForm.Designer.cs">
4545
<DependentUpon>ParameterForm.cs</DependentUpon>
4646
</Compile>
47-
<Compile Update="UI\PortForm.Designer.cs">
48-
<DependentUpon>PortForm.cs</DependentUpon>
47+
<Compile Update="UI\InterfacePortForm.Designer.cs">
48+
<DependentUpon>InterfacePortForm.cs</DependentUpon>
4949
</Compile>
5050
</ItemGroup>
5151
<ItemGroup>
@@ -61,8 +61,8 @@
6161
<EmbeddedResource Update="UI\ParameterForm.resx">
6262
<DependentUpon>ParameterForm.cs</DependentUpon>
6363
</EmbeddedResource>
64-
<EmbeddedResource Update="UI\PortForm.resx">
65-
<DependentUpon>PortForm.cs</DependentUpon>
64+
<EmbeddedResource Update="UI\InterfacePortForm.resx">
65+
<DependentUpon>InterfacePortForm.cs</DependentUpon>
6666
</EmbeddedResource>
6767
</ItemGroup>
6868
<ItemGroup>

LibreHardwareMonitor/UI/PortForm.Designer.cs renamed to LibreHardwareMonitor/UI/InterfacePortForm.Designer.cs

Lines changed: 42 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

LibreHardwareMonitor/UI/PortForm.cs renamed to LibreHardwareMonitor/UI/InterfacePortForm.cs

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,50 @@
99
using System.Net;
1010
using System.Net.Sockets;
1111
using System.Diagnostics;
12+
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
13+
using System.Net.NetworkInformation;
1214

1315
namespace LibreHardwareMonitor.UI;
1416

15-
public partial class PortForm : Form
17+
public partial class InterfacePortForm : Form
1618
{
1719
private readonly MainForm _parent;
18-
private readonly string _localIP;
19-
public PortForm(MainForm m)
20+
private string _localIP;
21+
22+
public InterfacePortForm(MainForm m)
2023
{
2124
InitializeComponent();
2225
_parent = m;
23-
_localIP = GetLocalIP();
26+
_localIP = LoadNetworkInterfaces(_parent.Server.ListenerIp);
2427
}
2528

26-
private void PortTextBox_TextChanged(object sender, EventArgs e)
27-
{
28-
29-
}
30-
31-
private string GetLocalIP()
29+
private string LoadNetworkInterfaces(string selectedListenerIp)
3230
{
3331
IPHostEntry host;
34-
string localIP = "?";
32+
interfaceComboBox.Items.Clear();
3533
host = Dns.GetHostEntry(Dns.GetHostName());
3634
foreach (IPAddress ip in host.AddressList)
3735
{
3836
if (ip.AddressFamily == AddressFamily.InterNetwork)
39-
localIP = ip.ToString();
37+
interfaceComboBox.Items.Add(ip.ToString());
38+
}
39+
// select the last one by default to match the existing behavior
40+
if (interfaceComboBox.Items.Count > 0)
41+
{
42+
interfaceComboBox.SelectedIndex = interfaceComboBox.Items.Count - 1;
43+
} else
44+
{
45+
// default to ? just like previous version
46+
interfaceComboBox.Items.Add("?");
47+
interfaceComboBox.SelectedIndex = 0;
4048
}
41-
return localIP;
49+
// check to see if the selected listener IP is in our list.
50+
if (interfaceComboBox.Items.Contains(selectedListenerIp))
51+
{
52+
// default it to the previously selected IP.
53+
interfaceComboBox.SelectedItem = selectedListenerIp;
54+
}
55+
return interfaceComboBox.SelectedItem as string;
4256
}
4357

4458
private void PortNumericUpDn_ValueChanged(object sender, EventArgs e)
@@ -52,6 +66,7 @@ private void PortNumericUpDn_ValueChanged(object sender, EventArgs e)
5266
private void PortOKButton_Click(object sender, EventArgs e)
5367
{
5468
_parent.Server.ListenerPort = (int)portNumericUpDn.Value;
69+
_parent.Server.ListenerIp = _localIP;
5570
Close();
5671
}
5772

@@ -62,6 +77,7 @@ private void PortCancelButton_Click(object sender, EventArgs e)
6277

6378
private void PortForm_Load(object sender, EventArgs e)
6479
{
80+
interfaceComboBox.SelectedValue = _parent.Server.ListenerIp;
6581
portNumericUpDn.Value = _parent.Server.ListenerPort;
6682
PortNumericUpDn_ValueChanged(null, null);
6783
}
@@ -79,4 +95,11 @@ private void PortNumericUpDn_KeyUp(object sender, KeyEventArgs e)
7995
{
8096
PortNumericUpDn_ValueChanged(null, null);
8197
}
82-
}
98+
99+
private void interfaceComboBox_SelectedIndexChanged(object sender, EventArgs e)
100+
{
101+
102+
_localIP = interfaceComboBox.SelectedItem as string;
103+
PortNumericUpDn_ValueChanged(null, null);
104+
}
105+
}
File renamed without changes.

LibreHardwareMonitor/UI/MainForm.Designer.cs

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

LibreHardwareMonitor/UI/MainForm.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ public MainForm()
244244
fahrenheitMenuItem.Checked = !celsiusMenuItem.Checked;
245245

246246
Server = new HttpServer(_root,
247+
_settings.GetValue("listenerIp", "?"),
247248
_settings.GetValue("listenerPort", 8085),
248249
_settings.GetValue("authenticationEnabled", false),
249250
_settings.GetValue("authenticationUserName", ""),
@@ -878,6 +879,7 @@ private void SaveConfiguration()
878879
foreach (TreeColumn column in treeView.Columns)
879880
_settings.SetValue("treeView.Columns." + column.Header + ".Width", column.Width);
880881

882+
_settings.SetValue("listenerIp", Server.ListenerIp);
881883
_settings.SetValue("listenerPort", Server.ListenerPort);
882884
_settings.SetValue("authenticationEnabled", Server.AuthEnabled);
883885
_settings.SetValue("authenticationUserName", Server.UserName);
@@ -1296,9 +1298,9 @@ private void TreeView_ColumnWidthChanged(TreeColumn column)
12961298
}
12971299
}
12981300

1299-
private void ServerPortMenuItem_Click(object sender, EventArgs e)
1301+
private void ServerInterfacePortMenuItem_Click(object sender, EventArgs e)
13001302
{
1301-
new PortForm(this).ShowDialog();
1303+
new InterfacePortForm(this).ShowDialog();
13021304
}
13031305

13041306
private void AuthWebServerMenuItem_Click(object sender, EventArgs e)

0 commit comments

Comments
 (0)