Skip to content

Commit 9e94ba1

Browse files
authored
Merge pull request #25 from ManuelMcLure/add_extra_network_info
Add netmask/gateway information
2 parents 1b8c005 + 5247fae commit 9e94ba1

File tree

4 files changed

+67
-14
lines changed

4 files changed

+67
-14
lines changed

octoprint_wifistatus/__init__.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,17 +127,28 @@ def update_wifi_status(self):
127127
if self.showBSSID:
128128
net_data["bssid"] = wifi.getAPaddr()
129129
if self.showIPV4Addr:
130-
ipv4addrs = [
131-
ad["addr"] for ad in ni.ifaddresses(interface)[ni.AF_INET]
132-
]
130+
ipv4addrs = []
131+
for ad in ni.ifaddresses(interface)[ni.AF_INET]:
132+
ipv4addrs.append(ad["addr"])
133+
if self.showNetmask:
134+
ipv4addrs.append("Netmask: " + ad["netmask"])
133135
net_data["ipv4addrs"] = ipv4addrs
134136
if self.showIPV6Addr:
135-
ipv6addrs = [
136-
ad["addr"]
137-
for ad in ni.ifaddresses(interface)[ni.AF_INET6]
138-
if not ad["addr"].endswith("%" + interface)
139-
]
137+
ipv6addrs = []
138+
for ad in ni.ifaddresses(interface)[ni.AF_INET6]:
139+
if ad["addr"].endswith("%" + interface):
140+
continue
141+
ipv6addrs.append(ad["addr"])
142+
if self.showNetmask:
143+
ipv6addrs.append("Netmask: " + ad["netmask"])
140144
net_data["ipv6addrs"] = ipv6addrs
145+
if self.showGateway:
146+
gateways = []
147+
gws = ni.gateways()
148+
for af in [ni.AF_INET, ni.AF_INET6]:
149+
for gw in gws[af]:
150+
gateways.append(gw[0] + " " + gw[1] + (" (Default)" if gw[2] else ""))
151+
net_data["gateways"] = gateways
141152

142153
self._logger.debug(net_data)
143154

@@ -167,6 +178,8 @@ def get_settings_defaults(self):
167178
"showFrequency": False,
168179
"showIPV4Addr": False,
169180
"showIPV6Addr": False,
181+
"showNetmask": False,
182+
"showGateway": False,
170183
}
171184

172185
def on_settings_load(self):
@@ -176,6 +189,8 @@ def on_settings_load(self):
176189
"showFrequency": self._settings.get_boolean(["showFrequency"]),
177190
"showIPV4Addr": self._settings.get_boolean(["showIPV4Addr"]),
178191
"showIPV6Addr": self._settings.get_boolean(["showIPV6Addr"]),
192+
"showNetmask": self._settings.get_boolean(["showNetmask"]),
193+
"showGateway": self._settings.get_boolean(["showGateway"]),
179194
}
180195

181196
def on_settings_initialized(self):
@@ -184,6 +199,8 @@ def on_settings_initialized(self):
184199
self.showFrequency = self._settings.get_boolean(["showFrequency"])
185200
self.showIPV4Addr = self._settings.get_boolean(["showIPV4Addr"])
186201
self.showIPV6Addr = self._settings.get_boolean(["showIPV6Addr"])
202+
self.showNetmask = self._settings.get_boolean(["showNetmask"])
203+
self.showGateway = self._settings.get_boolean(["showGateway"])
187204

188205
def on_settings_save(self, data):
189206
octoprint.plugin.SettingsPlugin.on_settings_save(self, data)

octoprint_wifistatus/static/js/wifistatus.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ $(function () {
2020
'<table style="width: 100%"><thead></thead><tbody><tr><td>No Connection</td></tr></tbody></table>'
2121
);
2222

23+
self.enableNetmask = function () {
24+
if (self.settings) {
25+
return self.settings.showIPV4Addr() || self.settings.showIPV6Addr();
26+
} else {
27+
return false;
28+
}
29+
};
30+
2331
self.onSettingsShown = function () {
2432
OctoPrint.simpleApiGet("wifistatus").done(function (response) {
2533
self.interfaces(response.interfaces);
@@ -95,11 +103,29 @@ $(function () {
95103
title = "";
96104
}
97105
}
106+
if (data.gateways) {
107+
var title = "Gateways:";
108+
var i;
109+
for (i = 0; i < data.gateways.length; i++) {
110+
wifiData +=
111+
"<tr><td>" +
112+
title +
113+
"</td><td>" +
114+
data.gateways[i] +
115+
"</td></tr>";
116+
title = "";
117+
}
118+
}
98119
}
99120
wifiData += "</tbody></table>";
100121
self.IconSVG(svg);
101122
self.popoverContent(wifiData);
102123
};
124+
125+
self.onBeforeBinding = function () {
126+
self.settings = self.settingsViewModel.settings.plugins.wifistatus;
127+
};
128+
103129
}
104130

105131
OCTOPRINT_VIEWMODELS.push({

octoprint_wifistatus/templates/wifistatus_settings.jinja2

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,39 @@
77
optionsText: function(iface) {
88
return (iface===null ? 'AUTO' : iface)
99
},
10-
value: settingsViewModel.settings.plugins.wifistatus.interface"></select>
10+
value: settings.interface"></select>
1111
</div>
1212
</div>
1313
<div class="control-group">
1414
<div class="controls">
1515
<label class="checkbox">
16-
<input type="checkbox" data-bind="checked: settingsViewModel.settings.plugins.wifistatus.showFrequency"> Show frequency
16+
<input type="checkbox" data-bind="checked: settings.showFrequency"> Show frequency
1717
</label>
1818
</div>
1919
</div>
2020
<div class="control-group">
2121
<div class="controls">
22-
<label class="checkbox"><input type="checkbox" data-bind="checked: settingsViewModel.settings.plugins.wifistatus.showBSSID"> Show Access Point BSSID</label>
22+
<label class="checkbox"><input type="checkbox" data-bind="checked: settings.showBSSID">Show Access Point BSSID</label>
2323
</div>
2424
</div>
2525
<div class="control-group">
2626
<div class="controls">
27-
<label class="checkbox"><input type="checkbox" data-bind="checked: settingsViewModel.settings.plugins.wifistatus.showIPV4Addr"> Show IPV4 address(es)</label>
27+
<label class="checkbox"><input type="checkbox" data-bind="checked: settings.showIPV4Addr">Show IPV4 address(es)</label>
2828
</div>
2929
</div>
3030
<div class="control-group">
3131
<div class="controls">
32-
<label class="checkbox"><input type="checkbox" data-bind="checked: settingsViewModel.settings.plugins.wifistatus.showIPV6Addr"> Show IPV6 address(es)</label>
32+
<label class="checkbox"><input type="checkbox" data-bind="checked: settings.showIPV6Addr">Show IPV6 address(es)</label>
33+
</div>
34+
</div>
35+
<div class="control-group" data-bind="visible: enableNetmask()">
36+
<div class="controls">
37+
<label class="checkbox"><input type="checkbox" data-bind="checked: settings.showNetmask">Show netmask(s)</label>
38+
</div>
39+
</div>
40+
<div class="control-group">
41+
<div class="controls">
42+
<label class="checkbox"><input type="checkbox" data-bind="checked: settings.showGateway">Show gateway(s)</label>
3343
</div>
3444
</div>
3545
</form>

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
plugin_identifier = "wifistatus"
66
plugin_package = "octoprint_{}".format(plugin_identifier)
77
plugin_name = "WiFi Status"
8-
plugin_version = "1.7.2"
8+
plugin_version = "1.8.0"
99
plugin_description = "Displays WiFi status on the navbar"
1010
plugin_author = "Manuel McLure"
1111
plugin_author_email = "manuel@mclure.org"

0 commit comments

Comments
 (0)