add fakemobileclient.py
This commit is contained in:
parent
faf11f6bf5
commit
8aa94e5c2f
1 changed files with 59 additions and 0 deletions
59
tools/fakemobileclient.py
Normal file
59
tools/fakemobileclient.py
Normal file
|
@ -0,0 +1,59 @@
|
|||
import http.server
|
||||
import json
|
||||
import socketserver
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
PORT = int(sys.argv[1]) if sys.argv[1:] else 8042
|
||||
|
||||
|
||||
def get_from_lines(lines, keyword):
|
||||
return next(iter(l for l in lines if l.startswith(keyword))).split(keyword)[1].strip()
|
||||
|
||||
|
||||
class FakeMobileClientHandler(http.server.BaseHTTPRequestHandler):
|
||||
def do_GET(self):
|
||||
"""Serve a GET request."""
|
||||
if self.path != '/scan/':
|
||||
self.send_error(404, explain='Look at /scan/')
|
||||
return
|
||||
|
||||
while True:
|
||||
p = subprocess.Popen(['iwlist', 'scan'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
output = p.communicate()[0].decode().split('Cell')[1:]
|
||||
if not output:
|
||||
print('scan failed, try again…')
|
||||
time.sleep(0.2)
|
||||
continue
|
||||
|
||||
stations = []
|
||||
for data in output:
|
||||
lines = [l.strip() for l in data[5:].split('\n')]
|
||||
stations.append({
|
||||
'bssid': get_from_lines(lines, 'Address:'),
|
||||
'ssid': get_from_lines(lines, 'ESSID:')[1:-1],
|
||||
'level': int(get_from_lines(lines, 'Quality=').split('=')[-1][:-4]),
|
||||
'frequency': int(float(get_from_lines(lines, 'Frequency:').split(' ')[0]) * 1000)
|
||||
})
|
||||
|
||||
if not stations:
|
||||
continue
|
||||
|
||||
break
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header('Content-Type', 'application/json')
|
||||
self.send_header('Access-Control-Allow-Origin', '*')
|
||||
self.end_headers()
|
||||
self.wfile.write(json.dumps({'data': stations}).encode())
|
||||
return True
|
||||
|
||||
|
||||
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
|
||||
pass
|
||||
|
||||
|
||||
with ThreadedTCPServer(('127.0.0.1', PORT), FakeMobileClientHandler) as server:
|
||||
print('fakemobilelient on 127.0.0.1:%d' % PORT)
|
||||
server.serve_forever()
|
Loading…
Add table
Add a link
Reference in a new issue