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,
|
parser.add_argument('--debug', dest="debug", action="store_true", default=False,
|
||||||
help="Enable debug logs.")
|
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,
|
parser.add_argument('--print-config', dest="print_config", action="store_true", default=False,
|
||||||
help="Print the configuration.")
|
help="Print the configuration.")
|
||||||
|
|
||||||
parser.add_argument('--check-update', dest="check_update", action="store_true", default=False,
|
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,
|
parser.add_argument('--donate', dest="donate", action="store_true", default=False,
|
||||||
help="How to donate to this project.")
|
help="How to donate to this project.")
|
||||||
|
|
||||||
@ -142,7 +145,7 @@ if __name__ == '__main__':
|
|||||||
local = version_to_tuple(pwnagotchi.__version__)
|
local = version_to_tuple(pwnagotchi.__version__)
|
||||||
remote = version_to_tuple(latest_ver)
|
remote = version_to_tuple(latest_ver)
|
||||||
if remote > local:
|
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
|
# input validation
|
||||||
if user_input.lower() in ('y', 'yes'):
|
if user_input.lower() in ('y', 'yes'):
|
||||||
os.system("rm /root/.auto-update && systemctl restart pwnagotchi")
|
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
|
elif user_input.lower() in ('n', 'no'): # using this elif for readability
|
||||||
print("Okay, guess not!")
|
print("Okay, guess not!")
|
||||||
else:
|
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)
|
sys.exit(0)
|
||||||
|
|
||||||
config = utils.load_config(args)
|
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)
|
logging.debug("Error while parsing event (%s)", ex)
|
||||||
except websockets.exceptions.ConnectionClosedError:
|
except websockets.exceptions.ConnectionClosedError:
|
||||||
logging.debug("Lost websocket connection. Reconnecting...")
|
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:
|
except websockets.exceptions.WebSocketException as wex:
|
||||||
logging.debug("Websocket exception (%s)", 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:
|
except Exception as e:
|
||||||
logging.exception("Other error while opening websocket (%s) with parameter %s", e, s)
|
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):
|
def run(self, command, verbose_errors=True):
|
||||||
for _ in range(0, 2):
|
for _ in range(0, 2):
|
||||||
|
@ -13,7 +13,6 @@ locks = {}
|
|||||||
THREAD_POOL_SIZE = 10
|
THREAD_POOL_SIZE = 10
|
||||||
executor = ThreadPoolExecutor(max_workers=THREAD_POOL_SIZE)
|
executor = ThreadPoolExecutor(max_workers=THREAD_POOL_SIZE)
|
||||||
|
|
||||||
|
|
||||||
class Plugin:
|
class Plugin:
|
||||||
@classmethod
|
@classmethod
|
||||||
def __init_subclass__(cls, **kwargs):
|
def __init_subclass__(cls, **kwargs):
|
||||||
@ -31,7 +30,6 @@ class Plugin:
|
|||||||
if cb is not None and callable(cb):
|
if cb is not None and callable(cb):
|
||||||
locks["%s::%s" % (plugin_name, attr_name)] = threading.Lock()
|
locks["%s::%s" % (plugin_name, attr_name)] = threading.Lock()
|
||||||
|
|
||||||
|
|
||||||
def toggle_plugin(name, enable=True):
|
def toggle_plugin(name, enable=True):
|
||||||
"""
|
"""
|
||||||
Load or unload a plugin
|
Load or unload a plugin
|
||||||
@ -70,12 +68,10 @@ def toggle_plugin(name, enable=True):
|
|||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def on(event_name, *args, **kwargs):
|
def on(event_name, *args, **kwargs):
|
||||||
for plugin_name in loaded.keys():
|
for plugin_name in loaded.keys():
|
||||||
one(plugin_name, event_name, *args, **kwargs)
|
one(plugin_name, event_name, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def locked_cb(lock_name, cb, *args, **kwargs):
|
def locked_cb(lock_name, cb, *args, **kwargs):
|
||||||
global locks
|
global locks
|
||||||
|
|
||||||
@ -85,10 +81,9 @@ def locked_cb(lock_name, cb, *args, **kwargs):
|
|||||||
with locks[lock_name]:
|
with locks[lock_name]:
|
||||||
cb(*args, *kwargs)
|
cb(*args, *kwargs)
|
||||||
|
|
||||||
|
|
||||||
def one(plugin_name, event_name, *args, **kwargs):
|
def one(plugin_name, event_name, *args, **kwargs):
|
||||||
global loaded
|
global loaded
|
||||||
if not executor._shutdown:
|
|
||||||
if plugin_name in loaded:
|
if plugin_name in loaded:
|
||||||
plugin = loaded[plugin_name]
|
plugin = loaded[plugin_name]
|
||||||
cb_name = 'on_%s' % event_name
|
cb_name = 'on_%s' % event_name
|
||||||
@ -101,8 +96,6 @@ def one(plugin_name, event_name, *args, **kwargs):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error("error while running %s.%s : %s" % (plugin_name, cb_name, e))
|
logging.error("error while running %s.%s : %s" % (plugin_name, cb_name, e))
|
||||||
logging.error(e, exc_info=True)
|
logging.error(e, exc_info=True)
|
||||||
else:
|
|
||||||
logging.warning("Executor is shut down. Cannot schedule new futures.")
|
|
||||||
|
|
||||||
def load_from_file(filename):
|
def load_from_file(filename):
|
||||||
logging.debug("loading %s" % filename)
|
logging.debug("loading %s" % filename)
|
||||||
@ -127,7 +120,6 @@ def load_from_path(path, enabled=()):
|
|||||||
|
|
||||||
return loaded
|
return loaded
|
||||||
|
|
||||||
|
|
||||||
def load(config):
|
def load(config):
|
||||||
enabled = [name for name, options in config['main']['plugins'].items() if
|
enabled = [name for name, options in config['main']['plugins'].items() if
|
||||||
'enabled' in options and options['enabled']]
|
'enabled' in options and options['enabled']]
|
||||||
|
Reference in New Issue
Block a user