misc: small fix or general refactoring i did not bother commenting

This commit is contained in:
Simone Margaritelli 2019-11-05 14:48:26 +01:00
parent 0830e0c74b
commit aba5b938bc
No known key found for this signature in database
GPG Key ID: 82E42E7F3B34C97E
5 changed files with 15 additions and 14 deletions

@ -8,6 +8,7 @@ import _thread
import pwnagotchi import pwnagotchi
import pwnagotchi.utils as utils import pwnagotchi.utils as utils
import pwnagotchi.plugins as plugins import pwnagotchi.plugins as plugins
from pwnagotchi.ui.web.server import Server
from pwnagotchi.automata import Automata from pwnagotchi.automata import Automata
from pwnagotchi.log import LastSession from pwnagotchi.log import LastSession
from pwnagotchi.bettercap import Client from pwnagotchi.bettercap import Client
@ -18,8 +19,6 @@ RECOVERY_DATA_FILE = '/root/.pwnagotchi-recovery'
class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer): class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer):
INSTANCE = None
def __init__(self, view, config, keypair): def __init__(self, view, config, keypair):
Client.__init__(self, config['bettercap']['hostname'], Client.__init__(self, config['bettercap']['hostname'],
config['bettercap']['scheme'], config['bettercap']['scheme'],
@ -36,6 +35,8 @@ class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer):
self._supported_channels = utils.iface_channels(config['main']['iface']) self._supported_channels = utils.iface_channels(config['main']['iface'])
self._view = view self._view = view
self._view.set_agent(self) self._view.set_agent(self)
self._web_ui = Server(self, self.config['ui']['display'])
self._access_points = [] self._access_points = []
self._last_pwnd = None self._last_pwnd = None
self._history = {} self._history = {}
@ -46,8 +47,6 @@ class Agent(Client, Automata, AsyncAdvertiser, AsyncTrainer):
if not os.path.exists(config['bettercap']['handshakes']): if not os.path.exists(config['bettercap']['handshakes']):
os.makedirs(config['bettercap']['handshakes']) os.makedirs(config['bettercap']['handshakes'])
Agent.INSTANCE = self
def config(self): def config(self):
return self._config return self._config

@ -4,8 +4,6 @@ import threading
import pwnagotchi.plugins as plugins import pwnagotchi.plugins as plugins
import pwnagotchi.ui.hw as hw import pwnagotchi.ui.hw as hw
import pwnagotchi.ui.web as web
from pwnagotchi.ui.web.server import Server
from pwnagotchi.ui.view import View from pwnagotchi.ui.view import View
@ -16,7 +14,6 @@ class Display(View):
self._enabled = config['enabled'] self._enabled = config['enabled']
self._rotation = config['rotation'] self._rotation = config['rotation']
self._webui = Server(config)
self.init_display() self.init_display()
@ -28,6 +25,9 @@ class Display(View):
) )
self._render_thread_instance.start() self._render_thread_instance.start()
def set_ready(self):
self._webui.start()
def is_inky(self): def is_inky(self):
return self._implementation.name == 'inky' return self._implementation.name == 'inky'
@ -90,7 +90,6 @@ class Display(View):
self._implementation.render(self._canvas_next) self._implementation.render(self._canvas_next)
def _on_view_rendered(self, img): def _on_view_rendered(self, img):
web.update_frame(img)
try: try:
if self._config['ui']['display']['video']['on_frame'] != '': if self._config['ui']['display']['video']['on_frame'] != '':
os.system(self._config['ui']['display']['video']['on_frame']) os.system(self._config['ui']['display']['video']['on_frame'])

@ -10,6 +10,7 @@ import pwnagotchi.utils as utils
import pwnagotchi.plugins as plugins import pwnagotchi.plugins as plugins
from pwnagotchi.voice import Voice from pwnagotchi.voice import Voice
import pwnagotchi.ui.web as web
import pwnagotchi.ui.fonts as fonts import pwnagotchi.ui.fonts as fonts
import pwnagotchi.ui.faces as faces import pwnagotchi.ui.faces as faces
from pwnagotchi.ui.components import * from pwnagotchi.ui.components import *
@ -369,6 +370,8 @@ class View(object):
for key, lv in self._state.items(): for key, lv in self._state.items():
lv.draw(self._canvas, drawer) lv.draw(self._canvas, drawer)
web.update_frame(self._canvas)
for cb in self._render_cbs: for cb in self._render_cbs:
cb(self._canvas) cb(self._canvas)

@ -8,7 +8,6 @@ os.environ['WERKZEUG_RUN_MAIN'] = 'true'
import pwnagotchi import pwnagotchi
import pwnagotchi.ui.web as web import pwnagotchi.ui.web as web
from pwnagotchi.agent import Agent
from pwnagotchi import plugins from pwnagotchi import plugins
from flask import send_file from flask import send_file
@ -87,7 +86,8 @@ STATUS_PAGE = """<html>
class Handler: class Handler:
def __init__(self, app): def __init__(self, agent, app):
self._agent = agent
self._app = app self._app = app
self._app.add_url_rule('/', 'index', self.index) self._app.add_url_rule('/', 'index', self.index)
self._app.add_url_rule('/ui', 'ui', self.ui) self._app.add_url_rule('/ui', 'ui', self.ui)
@ -102,7 +102,7 @@ class Handler:
def index(self): def index(self):
return render_template_string(INDEX, title=pwnagotchi.name(), return render_template_string(INDEX, title=pwnagotchi.name(),
other_mode='AUTO' if Agent.INSTANCE.mode == 'manual' else 'MANU') other_mode='AUTO' if self._agent.mode == 'manual' else 'MANU')
def plugins(self, name, subpath): def plugins(self, name, subpath):
if name is None: if name is None:

@ -15,12 +15,12 @@ from pwnagotchi.ui.web.handler import Handler
class Server: class Server:
def __init__(self, config): def __init__(self, agent, config):
self._enabled = config['video']['enabled'] self._enabled = config['video']['enabled']
self._port = config['video']['port'] self._port = config['video']['port']
self._address = config['video']['address'] self._address = config['video']['address']
self._origin = None self._origin = None
self._agent = agent
if 'origin' in config['video']: if 'origin' in config['video']:
self._origin = config['video']['origin'] self._origin = config['video']['origin']
@ -36,7 +36,7 @@ class Server:
CORS(app, resources={r"*": {"origins": self._origin}}) CORS(app, resources={r"*": {"origins": self._origin}})
CSRFProtect(app) CSRFProtect(app)
Handler(app) Handler(agent, app)
app.run(host=self._address, port=self._port, debug=False) app.run(host=self._address, port=self._port, debug=False)
else: else: