I have been having trouble getting this plugin registered and imported without errors in the error_log. I am placing it in the ipaserver/plugin directory and have given it matching permissions/ownership as the surrounding plugins. The issue I have now, is the dang thing is not wanting to trigger any debug logs. What am I missing?
<code>import logging
from ipalib import api, Registry
from ipaserver.plugins.user import user_disable
register = Registry()
# Set up logging
logger = logging.getLogger('ipaserver.user_disable_hook')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('/var/log/httpd/user_disable_hook.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
class user_disable_hook(user_disable):
"""
Hook to execute code after a user is disabled.
"""
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
logger.debug("post_callback called")
if 'nsaccountlock' in entry_attrs and entry_attrs['nsaccountlock'][0] == 'TRUE':
logger.info(f"User {dn} has been disabled.")
# End session code here
return super(user_disable_hook, self).post_callback(ldap, dn, entry_attrs, *keys, **options)
def main():
logger.debug("Plugin initialization started")
try:
api.bootstrap(in_server=True, context='server')
api.finalize()
api.Backend.ldap2.connect()
api.Object.user.user_disable.register(user_disable_hook)
logger.debug("Plugin registered successfully")
except Exception as e:
logger.error(f"Plugin registration failed: {e}")
if __name__ == '__main__':
main()
</code>
<code>import logging
from ipalib import api, Registry
from ipaserver.plugins.user import user_disable
register = Registry()
# Set up logging
logger = logging.getLogger('ipaserver.user_disable_hook')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('/var/log/httpd/user_disable_hook.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
class user_disable_hook(user_disable):
"""
Hook to execute code after a user is disabled.
"""
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
logger.debug("post_callback called")
if 'nsaccountlock' in entry_attrs and entry_attrs['nsaccountlock'][0] == 'TRUE':
logger.info(f"User {dn} has been disabled.")
# End session code here
return super(user_disable_hook, self).post_callback(ldap, dn, entry_attrs, *keys, **options)
def main():
logger.debug("Plugin initialization started")
try:
api.bootstrap(in_server=True, context='server')
api.finalize()
api.Backend.ldap2.connect()
api.Object.user.user_disable.register(user_disable_hook)
logger.debug("Plugin registered successfully")
except Exception as e:
logger.error(f"Plugin registration failed: {e}")
if __name__ == '__main__':
main()
</code>
import logging
from ipalib import api, Registry
from ipaserver.plugins.user import user_disable
register = Registry()
# Set up logging
logger = logging.getLogger('ipaserver.user_disable_hook')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler('/var/log/httpd/user_disable_hook.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
class user_disable_hook(user_disable):
"""
Hook to execute code after a user is disabled.
"""
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
logger.debug("post_callback called")
if 'nsaccountlock' in entry_attrs and entry_attrs['nsaccountlock'][0] == 'TRUE':
logger.info(f"User {dn} has been disabled.")
# End session code here
return super(user_disable_hook, self).post_callback(ldap, dn, entry_attrs, *keys, **options)
def main():
logger.debug("Plugin initialization started")
try:
api.bootstrap(in_server=True, context='server')
api.finalize()
api.Backend.ldap2.connect()
api.Object.user.user_disable.register(user_disable_hook)
logger.debug("Plugin registered successfully")
except Exception as e:
logger.error(f"Plugin registration failed: {e}")
if __name__ == '__main__':
main()