Guide to Standardized Hooks - Rollbacks

Introduction

Rollbacks undo hook action code changes in specific circumstances. If any hook action code returns a failure status, the system can stop the iteration of the main dispatch loop and initiate an alternate loop. This alternate dispatch loop iterates in reverse through the previous hooks and executes the hook action code in the rollback descriptor, if the descriptor is defined.

By definition, a blocking event prevents the core cPanel & WHM event, which potentially invalidates any work that the hook action code that ran during the dispatch loop performed.

Add a rollback

Rollback formatting is the same as for other hook descriptors. You can itemize the rollback in a describe pattern, or add it through themanage_hooks utility directly.

The Standardized Hook System treats code that the rollback descriptor references in the same manner as the main hook action code:

  • It receives the same context and dataset input arguments that were passed to the main hook action code.
  • The check code should return a result status and optional result message in the same manner as the hook action code.

The itemized rollback action does not have to be part of the hook action code base. It may reference a completely different script or Perl module. However, the rollback action must be in the same language as the main hook action code (for example, a Perl subroutine if the hook action code is a Perl subroutine). You cannot mix modules and scripts within the same hook.

Examples

In the following example, if the  Boo::InversePassword()  subroutine successfully runs, but some other hook during the  pre  stage of the Passwd  category and  ChangePasswd  event fails, the Standardized Hooks System will run the  Boo::rollback_my_awesome_change() subroutine.

sub describe {
    my $hooks = [
        {
            'category'  => 'Passwd',
            'event'     => 'ChangePasswd',
            'stage'     => 'pre',
            'hook'      => 'Boo::InversePassword',
            'exectype'  => 'module',
            'rollback'  => 'Boo::rollback_my_awesome_change',
        },
    ];
    return $hooks;
}

In the following example, if the  /var/cpanel/myapp/boo.php --inverse_password  code runs successfully, but some other hook during the pre  stage of the  Passwd  category and  ChangePasswd  event fails, the Standardized Hooks System will run the  /var/cpanel/myapp/boo.php --rollback_my_awesome_change  code.

/usr/local/cpanel/bin/manage_hooks add script /var/cpanel/myapp/boo.php --manual 1 --category Passwd --event ChangePasswd --stage pre --exectype script --action="--inverse_password" --rollback "/var/cpanel/myapp/boo.php --rollback_my_awesome_change"
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

The cPanel Interface

For  cPanel  &  WHM  version  58 Overview The cPanel interface is...

User Preferences

For cPanel & WHM version 58 Overview This document outlines how to access your cPanel...

Manage External Authentications

For cPanel & WHM version 58 Overview Manage credentials Additional documentation...

What is cPanelID?

In This Article:  Overview ServicesHow to get a cPanelID cPanelID External...

Guide to cPanel Interface Customization - cPanel Style Development

Introduction You can develop custom styles that modify the appearance of the cPanel interface....