Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
locker.py52 linesDownload Raw Back to utils
1##########################################################################2#3# pgAdmin 4 - PostgreSQL Tools4#5# Copyright (C) 2013 - 2024, The pgAdmin Development Team6# This software is released under the PostgreSQL Licence7#8##########################################################################9 10"""11Kerberos Environment Locker class12"""13 14from threading import Lock15from os import environ16from flask import session, current_app17 18import config19from pgadmin.utils.constants import KERBEROS20 21 22class ConnectionLocker:23    """Implementing lock while setting/unsetting24     the Kerberos environ variables."""25    lock = Lock()26 27    def __init__(self, _is_kerberos_conn=False):28        self.is_kerberos_conn = _is_kerberos_conn29 30    def __enter__(self):31        if config.SERVER_MODE:32            current_app.logger.info("Waiting for a lock.")33            self.lock.acquire()34            current_app.logger.info("Acquired a lock.")35 36            if 'auth_source_manager' in session and \37                session['auth_source_manager']['current_source'] == \38                KERBEROS and 'KRB5CCNAME' in session \39                    and self.is_kerberos_conn:40                environ['KRB5CCNAME'] = session['KRB5CCNAME']41            else:42                environ.pop('KRB5CCNAME', None)43 44        return self45 46    def __exit__(self, type, value, traceback):47        if config.SERVER_MODE:48            environ.pop('KRB5CCNAME', None)49            if self.lock.locked():50                current_app.logger.info("Released a lock.")51                self.lock.release()52 
codekingpro/portable-devtools · Team Ai