UNPKG

meshcentral

Version:

Web based remote computer management server

1 lines 1.86 kB
var MemoryStream=require("MemoryStream"),WindowsChildScript='var parent = require("ScriptContainer");var Wireless = require("wifi-scanner-windows");Wireless.on("Scan", function (ap) { parent.send(ap); });Wireless.Scan();';function AccessPoint(i,e,s){this.ssid=i,this.bssid=e,this.lq=s}function WiFiScanner(){require("events").inherits(this).createEvent("accessPoint"),this.hasWireless=function(){var i,e=!1,s=require("os").networkInterfaces();for(i in s)if("wireless"==s[i][0].type){e=!0;break}return e},this.Scan=function(){if("win32"==process.platform)this.main=require("ScriptContainer").Create(15,ContainerPermissions.DEFAULT),(this.main.parent=this).main.on("data",function(i){this.parent.emit("accessPoint",new AccessPoint(i.ssid,i.bssid,i.lq))}),this.main.addModule("wifi-scanner-windows",getJSModule("wifi-scanner-windows")),this.main.ExecuteString(WindowsChildScript);else if("linux"==process.platform){var i,e=require("os").networkInterfaces(),s=null;for(i in e)if("wireless"==e[i][0].type){s=i;break}null!=s&&(this.child=require("child_process").execFile("/sbin/iwlist",["iwlist",s,"scan"]),(this.child.parent=this).child.ms=new MemoryStream,this.child.ms.parent=this.child,this.child.stdout.on("data",function(i){this.parent.ms.write(i)}),this.child.on("exit",function(){this.ms.end()}),this.child.ms.on("end",function(){var i,e=this.buffer.toString();for(i in tokens=e.split(" - Address: "))if(0!=i){var s,t,n,r=tokens[i].split("\n"),a=r[0];for(n in r)(n=(n=r[n].trim()).trim()).startsWith("ESSID:")&&"<hidden>"==(s=n.slice(7,n.length-1))&&(s=""),n.startsWith("Signal level=")?t=n.slice(13,n.length-4):n.startsWith("Quality=")&&(t=n.slice(8,10),n.slice(11,13));this.parent.parent.emit("accessPoint",new AccessPoint(s,a,t))}}))}}}AccessPoint.prototype.toString=function(){return"["+this.bssid+"]: "+this.ssid+" ("+this.lq+")"},module.exports=WiFiScanner