Skip to content

Commit 1a4bfb8

Browse files
authored
Merge pull request #83 from PropGit/fix_enable_wx
Fix enable wx and stored setting
2 parents f2ab658 + 56729ba commit 1a4bfb8

File tree

3 files changed

+54
-71
lines changed

3 files changed

+54
-71
lines changed

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<table id="wx-module-settings" border="0" cellpadding="1" cellspacing="0" style="visibility:hidden;" class='pane-table'>
4444
<tr>
4545
<td>Enable WX Modules:</td>
46-
<td><input type="checkbox" id="wx-allow" checked="true"/></td>
46+
<td><input type="checkbox" id="wx-allow"/></td>
4747
</tr>
4848
<tr>
4949
<td>Subnet Mask:</td>

index.js

Lines changed: 44 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -99,31 +99,31 @@ document.addEventListener('DOMContentLoaded', function() {
9999

100100
$('version-text').innerHTML = 'v'+clientVersion;
101101

102+
// Determine platform
102103
chrome.runtime.getPlatformInfo(function(platformInfo) {
103104
if (!chrome.runtime.lastError) {
104105
let os = platformInfo.os;
105106
platform = (os === "cros" ? pfChr : (os === "linux" ? pfLin : (os === "mac" ? pfMac : (os === "win" ? pfWin : pfUnk))));
106107
}
107108
});
108109

109-
if ($('wx-allow').checked) {
110-
enableWX();
111-
}
112-
110+
// Restore settings from storage (if possible)
113111
if(chrome.storage) {
114112
chrome.storage.sync.get('s_port', function(result) {$('bpc-port').value = result.s_port || '6009';});
115113
chrome.storage.sync.get('s_url', function(result) {$('bpc-url').value = result.s_url || 'localhost';});
116114
chrome.storage.sync.get('sm0', function(result) {$('sm0').value = result.sm0 || '255';});
117115
chrome.storage.sync.get('sm1', function(result) {$('sm1').value = result.sm1 || '255';});
118116
chrome.storage.sync.get('sm2', function(result) {$('sm2').value = result.sm2 || '255';});
119117
chrome.storage.sync.get('sm3', function(result) {$('sm3').value = result.sm3 || '0';});
118+
chrome.storage.sync.get('en_wx', function(result) {$('wx-allow').checked = (result.en_wx !== undefined) ? result.en_wx : true;});
120119
} else {
121120
$('bpc-port').value = '6009';
122121
$('bpc-url').value = 'localhost';
123122
$('sm0').value = '255';
124123
$('sm1').value = '255';
125124
$('sm2').value = '255';
126125
$('sm3').value = '0';
126+
$('wx-allow').checked = true;
127127
}
128128

129129
$('open-browser').onclick = function() {
@@ -173,13 +173,16 @@ document.addEventListener('DOMContentLoaded', function() {
173173
verboseLogging = $('bpc-trace').checked;
174174
};
175175

176+
// Enable/disable wireless (WX) port scanning; save setting
176177
$('wx-allow').onclick = function() {
177-
var wx_enabled = $('wx-allow').checked;
178-
if(wx_enabled) {
178+
if($('wx-allow').checked) {
179179
enableWX();
180180
} else {
181181
disableWX();
182182
}
183+
if(chrome.storage) {
184+
chrome.storage.sync.set({'en_wx': $('wx-allow').checked}, function () {});
185+
}
183186
};
184187

185188
$('wmt').onclick = function() {
@@ -213,15 +216,17 @@ document.addEventListener('DOMContentLoaded', function() {
213216
});
214217

215218
function connect() {
216-
connect_ws($('bpc-port').value, $('bpc-url').value);
217-
scanWPorts();
218-
wScannerInterval = setInterval(scanWPorts, 6010); // 6010: Scan at different intervals than send processes
219+
//Connect via websocket to browser and enable wired and wireless port scanning
220+
connect_ws($('bpc-port').value, $('bpc-url').value);
221+
enableW();
222+
enableWX();
219223
}
220224

221225
function disconnect() {
222-
closeSockets();
223-
clearInterval(wScannerInterval);
224-
wScannerInterval = null;
226+
//Disconnect from browser and disable wired and wireless port scanning
227+
closeSockets();
228+
disableW();
229+
disableWX();
225230
}
226231

227232
function updateStatus(connected) {
@@ -263,18 +268,6 @@ function connect_ws(ws_port, url_path) {
263268
server.listen(port);
264269
isServer = true;
265270

266-
// Do we need this?
267-
/*
268-
server.addEventListener('request', function(req) {
269-
var url = req.headers.url;
270-
if (url == '/')
271-
url = '/index.html';
272-
// Serve the pages of this chrome application.
273-
req.serveUrl(url);
274-
return true;
275-
});
276-
*/
277-
278271
wsServer.addEventListener('request', function(req) {
279272
var socket = req.accept();
280273

@@ -331,59 +324,42 @@ function connect_ws(ws_port, url_path) {
331324
return true;
332325
});
333326
}
327+
}
334328

329+
function enableW() {
330+
//Enable periodic wired port scanning
331+
if (!wScannerInterval) {
332+
scanWPorts();
333+
wScannerInterval = setInterval(scanWPorts, 6010); // 6010: Scan at different intervals than send processes
334+
}
335+
}
335336

336-
//document.addEventListener('DOMContentLoaded', function() {
337-
338-
/*
339-
log('This is a test of an HTTP and WebSocket server. This application is ' +
340-
'serving its own source code on port ' + port + '. Each client ' +
341-
'connects to the server on a WebSocket and all messages received on ' +
342-
'one WebSocket are echoed to all connected clients - i.e. a chat ' +
343-
'server. Enjoy!');
344-
// FIXME: Wait for 1s so that HTTP Server socket is listening...
345-
setTimeout(function() {
346-
//var url_path = 'localhost';
347-
var address = isServer ? 'ws://' + url_path + ':' + port + '/' :
348-
window.location.href.replace('http', 'ws');
349-
var ws = new WebSocket(address);
350-
ws.addEventListener('open', function() {
351-
log('Connected');
352-
});
353-
ws.addEventListener('close', function() {
354-
log('Connection lost');
355-
$('input').disabled = true;
356-
});
357-
ws.addEventListener('message', function(e) {
358-
if(e.data.bread) {
359-
log('got some bread!');
360-
} else {
361-
log(e.data);
362-
}
363-
});
364-
$('input').addEventListener('keydown', function(e) {
365-
if (ws && ws.readyState == 1 && e.keyCode == 13) {
366-
ws.send(this.value);
367-
this.value = '';
368-
}
369-
});
370-
}, 1000);
371-
372-
*/
373-
374-
//});
337+
function disableW() {
338+
//Disable wired port scanning
339+
if(wScannerInterval) {
340+
clearInterval(wScannerInterval);
341+
wScannerInterval = null;
342+
}
375343
}
376344

377345
function enableWX() {
378-
scanWXPorts();
379-
wScannerInterval = setInterval(scanWXPorts, 3500);
346+
//Enable periodic wireless port scanning (if allowed)
347+
if ($('wx-allow').checked) {
348+
if (!wxScannerInterval) {
349+
scanWXPorts();
350+
wxScannerInterval = setInterval(scanWXPorts, 3500);
351+
}
352+
}
380353
}
381354

382355
function disableWX() {
383-
if(wScannerInterval) {
384-
clearInterval(wScannerInterval);
385-
$('wx-list').innerHTML = '';
356+
//Disable wireless port scanning
357+
if(wxScannerInterval) {
358+
clearInterval(wxScannerInterval);
359+
wxScannerInterval = null;
386360
}
361+
$('wx-list').innerHTML = '';
362+
deleteAllWirelessPorts();
387363
}
388364

389365
function scanWPorts() {
@@ -410,7 +386,6 @@ function scanWXPorts() {
410386
// Generate list of current wireless ports
411387
discoverWirelessPorts();
412388
ageWirelessPorts();
413-
displayWirelessPorts();
414389
}
415390

416391
function sendPortList(socket) {

wx.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ var udp_sock;
1414
// signaling to a module that it does not have to re-respond.
1515
var disc_packet = '\0\0\0\0';
1616

17-
// Holder for the interval for discovering modules
17+
// Holder for the interval for discovering wireless modules
1818
var wxScannerInterval = null;
1919

2020
function calcBroadcastAddr(mip) {
@@ -90,6 +90,13 @@ function displayWirelessPorts() {
9090
$('wx-list').innerHTML = wxl;
9191
}
9292

93+
function deleteAllWirelessPorts() {
94+
// Remove all Wi-Fi modules from the list
95+
ports.forEach(function(p) {
96+
if (p.isWireless) deletePort(byMAC, p.mac);
97+
})
98+
}
99+
93100
document.addEventListener('DOMContentLoaded', function() {
94101
/* UDP listener for discovering Wi-Fi modules
95102
When a Wi-Fi module is discovered, it is added to the ports list, or updated (if already exists) by resetting it's life.
@@ -103,6 +110,7 @@ document.addEventListener('DOMContentLoaded', function() {
103110
disc_packet += ip32bit(ip.split('.'));
104111
// Add (or update) it's port record; limit name to 32 characters without leading/trailing whitespace
105112
addPort({path: wx_info.name.substr(0,32).replace(/(^\s+|\s+$)/g,''), mac: mac, ip: ip});
113+
displayWirelessPorts();
106114
});
107115
});
108116

0 commit comments

Comments
 (0)