def test_dag_link(self): from airflow.www_rbac.app import cached_appbuilder with cached_appbuilder(testing=True).app.test_request_context(): html = str(utils.dag_link({ 'dag_id': '<a&1>', 'execution_date': datetime.now() })) self.assertIn('%3Ca%261%3E', html) self.assertNotIn('<a&1>', html)
from airflow.www_rbac.app import cached_appbuilder from typing import List, Any logger = logging.getLogger(__name__) f_handler = logging.FileHandler('/var/log/airflow_ldap_sync.log') f_format = logging.Formatter('%(asctime)s - %(message)s') f_handler.setFormatter(f_format) logger.addHandler(f_handler) logger.info('Starting airflow ldap sync') ldap_sync_conf_file = os.path.join(os.environ['AIRFLOW_HOME'], 'ldap_sync.yaml') with open(ldap_sync_conf_file) as f: ldap_sync_config = safe_load(f) appbuilder = cached_appbuilder() con = ldap.initialize(appbuilder.sm.auth_ldap_server) con.set_option(ldap.OPT_REFERRALS, 0) appbuilder.sm._bind_indirect_user(ldap, con) for group in ldap_sync_config['group_role_map']: try: filter_str = \ "(&(ObjectClass=%s)(%s=%s))" % ( ldap_sync_config['group_object_class'], ldap_sync_config['group_name_attr'], group ) group_cn = con.search_s(appbuilder.sm.auth_ldap_search, ldap.SCOPE_SUBTREE, filter_str, [ldap_sync_config['group_name_attr']])[0][0]