def __init__(self, args, db_wrapper: DbWrapper, ws_server, mapping_manager: MappingManager, data_manager, device_updater, jobstatus, storage_obj): app.add_template_global(name='app_config_mode', f=args.config_mode) # Determine if there are duplicate MACs sql = "SELECT count(*) > 0\n"\ "FROM `settings_device`\n"\ "GROUP BY `mac_address`\n"\ "HAVING count(*) > 1 AND `mac_address` IS NOT NULL" dupe_mac = db_wrapper.autofetch_value(sql) if dupe_mac: sql = "SELECT `mac_address`, GROUP_CONCAT(`name`) AS 'origins'\n"\ "FROM `settings_device`\n"\ "GROUP BY `mac_address`\n"\ "HAVING count(*) > 1 AND `mac_address` IS NOT NULL" macs = db_wrapper.autofetch_all(sql) for mac in macs: logger.warning("Duplicate MAC `{}` detected on devices {}", mac["mac_address"], mac["origins"]) app.add_template_global(name='app_dupe_macs_devs', f=macs) app.add_template_global(name='app_dupe_macs', f=bool(dupe_mac)) self._db_wrapper: DbWrapper = db_wrapper self._args = args self._app = app self._mapping_manager: MappingManager = mapping_manager self._storage_obj = storage_obj self._device_updater = device_updater self._ws_server: WebsocketServer = ws_server self._data_manager = data_manager self._jobstatus = jobstatus self._plugin_hotlink: list = [] self.path = MADminPath(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._data_manager, self._plugin_hotlink) self.map = MADminMap(self._db_wrapper, self._args, self._mapping_manager, self._app, self._data_manager) self.statistics = MADminStatistics(self._db_wrapper, self._args, app, self._mapping_manager, self._data_manager) self.control = MADminControl(self._db_wrapper, self._args, self._mapping_manager, self._ws_server, logger, self._app, self._device_updater) self.APIEntry = APIEntry(logger, self._app, self._data_manager, self._mapping_manager, self._ws_server, self._args.config_mode, self._storage_obj, self._args) self.config = MADminConfig(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) self.apk_manager = APKManager(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._storage_obj) self.event = MADminEvent(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) self.autoconf = AutoConfigManager(self._db_wrapper, self._app, self._data_manager, self._args, self._storage_obj)
def __init__(self, args, db_wrapper: DbWrapper, ws_server, mapping_manager: MappingManager, data_manager, device_updater, jobstatus, storage_obj): app.add_template_global(name='app_config_mode', f=args.config_mode) self._db_wrapper: DbWrapper = db_wrapper self._args = args self._app = app self._mapping_manager: MappingManager = mapping_manager self._storage_obj = storage_obj self._device_updater = device_updater self._ws_server: WebsocketServer = ws_server self._data_manager = data_manager self._jobstatus = jobstatus self._plugin_hotlink: list = [] self.path = MADminPath(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._data_manager, self._plugin_hotlink) self.map = MADminMap(self._db_wrapper, self._args, self._mapping_manager, self._app, self._data_manager) self.statistics = MADminStatistics(self._db_wrapper, self._args, app, self._mapping_manager, self._data_manager) self.control = MADminControl(self._db_wrapper, self._args, self._mapping_manager, self._ws_server, logger, self._app, self._device_updater) self.APIEntry = APIEntry(logger, self._app, self._data_manager, self._mapping_manager, self._ws_server, self._args.config_mode, self._storage_obj, self._args) self.config = MADminConfig(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) self.apk_manager = APKManager(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._storage_obj) self.event = MADminEvent(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) self.autoconf = AutoConfigManager(self._db_wrapper, self._app, self._data_manager, self._args, self._storage_obj)
class MADmin(object): def __init__(self, args, db_wrapper: DbWrapper, ws_server, mapping_manager: MappingManager, data_manager, device_updater, jobstatus, storage_obj): self._db_wrapper: DbWrapper = db_wrapper self._args = args self._app = app self._mapping_manager: MappingManager = mapping_manager self._storage_obj = storage_obj self._device_updater = device_updater self._ws_server: WebsocketServer = ws_server self._data_manager = data_manager self._jobstatus = jobstatus self._plugin_hotlink: list = [] self.path = MADminPath(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._data_manager, self._plugin_hotlink) self.map = MADminMap(self._db_wrapper, self._args, self._mapping_manager, self._app, self._data_manager) self.statistics = MADminStatistics(self._db_wrapper, self._args, app, self._mapping_manager, self._data_manager) self.control = MADminControl(self._db_wrapper, self._args, self._mapping_manager, self._ws_server, logger, self._app, self._device_updater) self.APIEntry = APIEntry(logger, self._app, self._data_manager, self._mapping_manager, self._ws_server, self._args.config_mode, self._storage_obj) self.config = MADminConfig(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) self.apk_manager = APKManager(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._storage_obj) self.event = MADminEvent(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) @logger.catch() def madmin_start(self): try: # load routes if self._args.madmin_base_path: self._app.wsgi_app = ReverseProxied( self._app.wsgi_app, script_name=self._args.madmin_base_path) # start modules self.path.start_modul() self.map.start_modul() self.statistics.start_modul() self.config.start_modul() self.apk_manager.start_modul() self.event.start_modul() self.control.start_modul() self._app.run(host=self._args.madmin_ip, port=int(self._args.madmin_port), threaded=True) except: # noqa: E722 logger.opt( exception=True).critical('Unable to load MADmin component') logger.info('Finished madmin') def add_route(self, routes): for route, view_func in routes: self._app.route(route, methods=['GET', 'POST'])(view_func) def register_plugin(self, pluginname): self._app.register_blueprint(pluginname) def add_plugin_hotlink(self, name, link, plugin, description, author, url, linkdescription, version): self._plugin_hotlink.append({ "Plugin": plugin, "linkname": name, "linkurl": link, "description": description, "author": author, "authorurl": url, "linkdescription": linkdescription, 'version': version })
class MADmin(object): def __init__(self, args, db_wrapper: DbWrapper, ws_server, mapping_manager: MappingManager, data_manager, device_updater, jobstatus, storage_obj): app.add_template_global(name='app_config_mode', f=args.config_mode) # Determine if there are duplicate MACs sql = "SELECT count(*) > 0\n"\ "FROM `settings_device`\n"\ "GROUP BY `mac_address`\n"\ "HAVING count(*) > 1 AND `mac_address` IS NOT NULL" dupe_mac = db_wrapper.autofetch_value(sql) if dupe_mac: sql = "SELECT `mac_address`, GROUP_CONCAT(`name`) AS 'origins'\n"\ "FROM `settings_device`\n"\ "GROUP BY `mac_address`\n"\ "HAVING count(*) > 1 AND `mac_address` IS NOT NULL" macs = db_wrapper.autofetch_all(sql) for mac in macs: logger.warning("Duplicate MAC `{}` detected on devices {}", mac["mac_address"], mac["origins"]) app.add_template_global(name='app_dupe_macs_devs', f=macs) app.add_template_global(name='app_dupe_macs', f=bool(dupe_mac)) self._db_wrapper: DbWrapper = db_wrapper self._args = args self._app = app self._mapping_manager: MappingManager = mapping_manager self._storage_obj = storage_obj self._device_updater = device_updater self._ws_server: WebsocketServer = ws_server self._data_manager = data_manager self._jobstatus = jobstatus self._plugin_hotlink: list = [] self.path = MADminPath(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._data_manager, self._plugin_hotlink) self.map = MADminMap(self._db_wrapper, self._args, self._mapping_manager, self._app, self._data_manager) self.statistics = MADminStatistics(self._db_wrapper, self._args, app, self._mapping_manager, self._data_manager) self.control = MADminControl(self._db_wrapper, self._args, self._mapping_manager, self._ws_server, logger, self._app, self._device_updater) self.APIEntry = APIEntry(logger, self._app, self._data_manager, self._mapping_manager, self._ws_server, self._args.config_mode, self._storage_obj, self._args) self.config = MADminConfig(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) self.apk_manager = APKManager(self._db_wrapper, self._args, self._app, self._mapping_manager, self._jobstatus, self._storage_obj) self.event = MADminEvent(self._db_wrapper, self._args, logger, self._app, self._mapping_manager, self._data_manager) self.autoconf = AutoConfigManager(self._db_wrapper, self._app, self._data_manager, self._args, self._storage_obj) @logger.catch() def madmin_start(self): try: # load routes if self._args.madmin_base_path: self._app.wsgi_app = ReverseProxied( self._app.wsgi_app, script_name=self._args.madmin_base_path) # start modules self.path.start_modul() self.map.start_modul() self.statistics.start_modul() self.config.start_modul() self.apk_manager.start_modul() self.event.start_modul() self.control.start_modul() self.autoconf.start_modul() self._app.run(host=self._args.madmin_ip, port=int(self._args.madmin_port), threaded=True) except: # noqa: E722 B001 logger.opt( exception=True).critical('Unable to load MADmin component') logger.info('Finished madmin') def add_route(self, routes): for route, view_func in routes: self._app.route(route, methods=['GET', 'POST'])(view_func) def register_plugin(self, pluginname): self._app.register_blueprint(pluginname) def add_plugin_hotlink(self, name, link, plugin, description, author, url, linkdescription, version): self._plugin_hotlink.append({ "Plugin": plugin, "linkname": name, "linkurl": link, "description": description, "author": author, "authorurl": url, "linkdescription": linkdescription, 'version': version })