Пример #1
0
 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)
Пример #2
0
 def search(cls, dbc: DbWrapper, res_obj: Resource, instance_id: int, *args,
            **kwargs):
     where = ""
     mode = kwargs.get('mode', None)
     where = "WHERE `instance_id` = %s"
     sql_args = [instance_id]
     if mode:
         where += " AND `mode` = %s\n"
         sql_args.append(mode)
     sql = "SELECT `%s`\n" \
           "FROM `%s`\n" \
           "%s\n" \
           "ORDER BY `%s` ASC" % (res_obj.primary_key, res_obj.table, where, res_obj.search_field)
     return dbc.autofetch_column(sql, args=tuple(sql_args))
Пример #3
0
    def get_wrapper(args) -> (DbWrapper, SyncManager):
        if args.db_method == "monocle":
            logger.error(
                "MAD has dropped Monocle support. Please consider checking out the "
                "'migrate_to_rocketmap.sh' script in the scripts folder.")
            sys.exit(1)
        elif args.db_method != "rm":
            logger.error("Invalid db_method in config. Exiting")
            sys.exit(1)

        PooledQuerySyncManager.register("PooledQueryExecutor",
                                        PooledQueryExecutor)
        db_pool_manager = PooledQuerySyncManager()
        db_pool_manager.start()
        db_exec = db_pool_manager.PooledQueryExecutor(
            host=args.dbip,
            port=args.dbport,
            username=args.dbusername,
            password=args.dbpassword,
            database=args.dbname,
            poolsize=args.db_poolsize)
        db_wrapper = DbWrapper(db_exec=db_exec, args=args)

        return db_wrapper, db_pool_manager