mirror of
https://github.com/jayofelony/pwnagotchi.git
synced 2025-07-01 18:37:27 -04:00
@ -114,11 +114,14 @@ if __name__ == '__main__':
|
||||
parser.add_argument('--debug', dest="debug", action="store_true", default=False,
|
||||
help="Enable debug logs.")
|
||||
|
||||
parser.add_argument('--version', dest="version", action="store_true", default=False,
|
||||
help="Print the version.")
|
||||
|
||||
parser.add_argument('--print-config', dest="print_config", action="store_true", default=False,
|
||||
help="Print the configuration.")
|
||||
|
||||
parser.add_argument('--check-update', dest="check_update", action="store_true", default=False,
|
||||
help="Check for updates on Pwnagotchi. And tells current version.")
|
||||
help="Check for updates on Pwnagotchi.")
|
||||
parser.add_argument('--donate', dest="donate", action="store_true", default=False,
|
||||
help="How to donate to this project.")
|
||||
|
||||
@ -142,7 +145,7 @@ if __name__ == '__main__':
|
||||
local = version_to_tuple(pwnagotchi.__version__)
|
||||
remote = version_to_tuple(latest_ver)
|
||||
if remote > local:
|
||||
user_input = input("There is a new version available! Update from v%s to v%s?\n[y(es)/n(o)]" % (pwnagotchi.__version__, latest_ver))
|
||||
user_input = input("There is a new version available! Update to %s? [y(es)/n(o)]" % latest_ver)
|
||||
# input validation
|
||||
if user_input.lower() in ('y', 'yes'):
|
||||
os.system("rm /root/.auto-update && systemctl restart pwnagotchi")
|
||||
@ -152,7 +155,11 @@ if __name__ == '__main__':
|
||||
elif user_input.lower() in ('n', 'no'): # using this elif for readability
|
||||
print("Okay, guess not!")
|
||||
else:
|
||||
print("You are currently on the latest release, v%s." % pwnagotchi.__version__)
|
||||
print("You are currently on the latest release, %s." % pwnagotchi.__version__)
|
||||
sys.exit(0)
|
||||
|
||||
if args.version:
|
||||
print(pwnagotchi.__version__)
|
||||
sys.exit(0)
|
||||
|
||||
config = utils.load_config(args)
|
||||
|
@ -1 +1 @@
|
||||
__version__ = '2.3.4'
|
||||
__version__ = '2.3.3'
|
||||
|
@ -51,13 +51,13 @@ class Client(object):
|
||||
logging.debug("Error while parsing event (%s)", ex)
|
||||
except websockets.exceptions.ConnectionClosedError:
|
||||
logging.debug("Lost websocket connection. Reconnecting...")
|
||||
await asyncio.sleep(1) # Sleep for x seconds before reconnecting
|
||||
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
|
||||
except websockets.exceptions.WebSocketException as wex:
|
||||
logging.debug("Websocket exception (%s)", wex)
|
||||
await asyncio.sleep(1) # Sleep for x seconds before reconnecting
|
||||
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
|
||||
except Exception as e:
|
||||
logging.exception("Other error while opening websocket (%s) with parameter %s", e, s)
|
||||
await asyncio.sleep(1) # Sleep for x seconds before reconnecting
|
||||
await asyncio.sleep(1) # Sleep for 5 seconds before reconnecting
|
||||
|
||||
def run(self, command, verbose_errors=True):
|
||||
for _ in range(0, 2):
|
||||
|
@ -13,7 +13,6 @@ locks = {}
|
||||
THREAD_POOL_SIZE = 10
|
||||
executor = ThreadPoolExecutor(max_workers=THREAD_POOL_SIZE)
|
||||
|
||||
|
||||
class Plugin:
|
||||
@classmethod
|
||||
def __init_subclass__(cls, **kwargs):
|
||||
@ -31,7 +30,6 @@ class Plugin:
|
||||
if cb is not None and callable(cb):
|
||||
locks["%s::%s" % (plugin_name, attr_name)] = threading.Lock()
|
||||
|
||||
|
||||
def toggle_plugin(name, enable=True):
|
||||
"""
|
||||
Load or unload a plugin
|
||||
@ -70,12 +68,10 @@ def toggle_plugin(name, enable=True):
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def on(event_name, *args, **kwargs):
|
||||
for plugin_name in loaded.keys():
|
||||
one(plugin_name, event_name, *args, **kwargs)
|
||||
|
||||
|
||||
def locked_cb(lock_name, cb, *args, **kwargs):
|
||||
global locks
|
||||
|
||||
@ -85,24 +81,21 @@ def locked_cb(lock_name, cb, *args, **kwargs):
|
||||
with locks[lock_name]:
|
||||
cb(*args, *kwargs)
|
||||
|
||||
|
||||
def one(plugin_name, event_name, *args, **kwargs):
|
||||
global loaded
|
||||
if not executor._shutdown:
|
||||
if plugin_name in loaded:
|
||||
plugin = loaded[plugin_name]
|
||||
cb_name = 'on_%s' % event_name
|
||||
callback = getattr(plugin, cb_name, None)
|
||||
if callback is not None and callable(callback):
|
||||
try:
|
||||
lock_name = "%s::%s" % (plugin_name, cb_name)
|
||||
locked_cb_args = (lock_name, callback, *args, *kwargs)
|
||||
executor.submit(locked_cb, *locked_cb_args)
|
||||
except Exception as e:
|
||||
logging.error("error while running %s.%s : %s" % (plugin_name, cb_name, e))
|
||||
logging.error(e, exc_info=True)
|
||||
else:
|
||||
logging.warning("Executor is shut down. Cannot schedule new futures.")
|
||||
|
||||
if plugin_name in loaded:
|
||||
plugin = loaded[plugin_name]
|
||||
cb_name = 'on_%s' % event_name
|
||||
callback = getattr(plugin, cb_name, None)
|
||||
if callback is not None and callable(callback):
|
||||
try:
|
||||
lock_name = "%s::%s" % (plugin_name, cb_name)
|
||||
locked_cb_args = (lock_name, callback, *args, *kwargs)
|
||||
executor.submit(locked_cb, *locked_cb_args)
|
||||
except Exception as e:
|
||||
logging.error("error while running %s.%s : %s" % (plugin_name, cb_name, e))
|
||||
logging.error(e, exc_info=True)
|
||||
|
||||
def load_from_file(filename):
|
||||
logging.debug("loading %s" % filename)
|
||||
@ -127,7 +120,6 @@ def load_from_path(path, enabled=()):
|
||||
|
||||
return loaded
|
||||
|
||||
|
||||
def load(config):
|
||||
enabled = [name for name, options in config['main']['plugins'].items() if
|
||||
'enabled' in options and options['enabled']]
|
||||
|
Reference in New Issue
Block a user