def __init__(self, core): Plugin.__init__(self, core=core) self.debug = Restricter(channel_id=core.servers[0].channels[3].id)(self.debug) self.debug = Protector(user_ids=['110089625422307328'])(self.debug) self.evaluate = Protector(user_ids=['110089625422307328', '98295630480314368','94129005791281152','86607397321207808'])(self.evaluate)
def __create_environment(self,context, loader): jenv = jinja2.Environment( loader=loader, extensions=['jinja2.ext.autoescape'], autoescape=False) for key, fn in JinjaEnvironment._template_functions.items(): jenv.globals[key]=fn params={"environment": jenv, "loader": loader} handler=Plugin(context, "jinja_environment","create") handler.execute('after', params) return jenv
def generate_url(episode: PodcastItem, plugin: Plugin, options: GlobalOptions, base_url: str): if options.proxy_url: return f'{base_url}download?' + urlencode(options.dict() | plugin.options.dict() | {'id': episode.item_id}) else: return plugin.get_item_url(episode.item_id)
def test_combo_source(self): params = {} plugin_context = Plugin.create_context("$timer_every_minute", "execute", "after") print( execute(self.context, plugin_context, { "input": params, "output": {} }))
def post(self, action): try: create_parser_post().parse_args() context = g.context if request.json == None: abort(400, f"cannot extract json data in body action:{action}") params = {"input": request.json, "output": {}} handler = Plugin(context, action, "execute") handler.execute('before', params) output = params['output'] response = make_response(output, 200) return response except NameError as err: abort(400, f"{err}") except Exception as err: abort(500, f"{err}")
def render_feed(feed_id: str, plugin: Plugin, options: GlobalOptions, base_url: str): feed = plugin.get_feed(feed_id) fg = FeedGenerator() fg.load_extension('podcast') fg.title(feed.title) fg.description(feed.description) fg.link(href=feed.link, rel='alternate') fg.image(options.icon or feed.image) fg.id(feed.feed_id) for item in reversed(feed.items): fe = fg.add_entry() fe.id(item.item_id) fe.title(item.title) fe.description(item.description) fe.pubDate(item.date) fe.podcast.itunes_image(item.image) fe.enclosure(generate_url(item, plugin, options, base_url), item.content_length, item.content_type) return fg.rss_str(pretty=True) if options.format == 'rss' else fg.atom_str( pretty=True)
def __init__(self, core): Plugin.__init__(self, core=core) self.games = {}
def __init__(self, core): Plugin.__init__(self, core=core)
def execute_plugin(context, publisher, params): create_logger(__name__).info(publisher) plugin = Plugin(context, publisher, 'execute') plugin.execute('after', {'input': params, 'output': {}})
def load_connectors(): import connectors from core.connector import Connector return Plugin.discover(connectors, Connector)
# ----- < import > ----- from core.plugin import Plugin from core.utils import write_msg plugin = Plugin('example', '/example', ['test - тестовая комманда'], '⚪') data = plugin.plugin_data @plugin.command(['test']) def test(data, arg): write_msg(data, 'hello world!')
def load_services(): import services from core.service import Service return Plugin.discover(services, Service)
runner.run() if __name__ == '__main__': from core import params menu = Menu( name="test menu", description="test description", ) menu.add_option( "1", Plugin( name="hello_world_1", description="description", run_command=lambda: print("Hello world1!"), )) menu.add_option( "2", Plugin( name="hellow_world_2", description="descr", run_command=lambda port: print(f"Hello world2! {port}"), parameters=params.PORT, )) menu2 = Menu( name="Some name", description=" descro", banner="LOL BANNER",
def exec(command_builder, context, run_as_system=False, fetch_mode=-1): # # Validate the permission # in case of no permission the check_permission function triggers an errror # if not run_as_system: for table in command_builder.get_tables(): if not Permission().validate(context, command_builder.get_sql_type(), context.get_username(), table): #raise NameError (f"no permission ({command_builder.get_sql_type()}) for {context.get_username()} on {table}") raise RestApiNotAllowed( f"no permission ({command_builder.get_sql_type()}) for {context.get_username()} on {table}" ) logger.info( f"Try to read table metadata: {command_builder.get_main_table()}") meta = read_table_meta(context, table_name=command_builder.get_main_table()) id_field_name = meta['id_field_name'] id_field_type = meta['id_field_type'] if command_builder.get_sql_type().upper() == 'UPDATE': #meta=read_table_meta(context, table_name=command_builder.get_main_table()) if meta['enable_audit_log'] != 0: sql, paras = command_builder.get_select() cursor = context.get_connection().cursor() cursor.execute(sql, paras) rsold = Recordset(cursor) rsold.read(0) #id_field_name=meta['id_field_name'] #id_field_type=meta['id_field_type'] logger.info(rsold.get_result()) if rsold.get_result() != None: for rec in rsold.get_result(): id = rec[id_field_name] for k, v in rec.items(): if k in command_builder.get_sql_fields(): value = command_builder.get_sql_fields( )[k]['value'] old_value = v command_builder.get_sql_fields( )[k]['old_value'] = old_value AuditLog.log(context, command_builder.get_sql_type(), id, command_builder.get_main_table(), k, old_value, value) logger.info(command_builder.get_sql_fields()) params = {"data": command_builder.get_sql_fields()} handler = Plugin(context, command_builder.get_main_table(), command_builder.get_sql_type()) handler.execute('before', params) sql, paras = command_builder.get_sql() logger.info(sql) logger.info(paras) cursor = context.get_connection().cursor() cursor.execute(sql, paras) handler.execute('after', params) if command_builder.get_auto_commit( ) == 1 or command_builder.get_auto_commit() == True: context.get_connection().commit() rs = Recordset(cursor) if fetch_mode != -1: rs.read(fetch_mode) rs.get_columns() if command_builder.get_sql_type().upper() == "INSERT": if context.get_connection().insert_id( ) == 0 or context.get_connection().insert_id() == None: rs.set_inserted_id( command_builder.get_sql_fields()[id_field_name]['value']) else: rs.set_inserted_id(context.get_connection().insert_id()) return rs
def __init__(self, core): Plugin.__init__(self, core) self.name = 'nopaj' self.old_name = 'nopaj' self.filepath = 'C:/Users/Utilisateur/Downloads/Snip-v5.1.0/Snip/Snip.txt'