* [DEV] New LDAP import users feature

This commit is contained in:
nuxsmin
2016-11-19 12:54:29 +01:00
committed by Rubén Domínguez
parent 70e510b1f0
commit a0e4951834
13 changed files with 725 additions and 577 deletions

View File

@@ -23,14 +23,8 @@
*
*/
use SP\Auth\Ldap\LdapMsAds;
use SP\Auth\Ldap\LdapStd;
use SP\Core\Init;
use SP\Core\SessionUtil;
use SP\Http\JsonResponse;
use SP\Controller\ChecksController;
use SP\Http\Request;
use SP\Util\Json;
use SP\Util\Wiki\DokuWikiApi;
define('APP_ROOT', '..');
@@ -38,82 +32,5 @@ require_once APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Bas
Request::checkReferer('POST');
$Json = new JsonResponse();
if (!Init::isLoggedIn()) {
$Json->setDescription(_('La sesión no se ha iniciado o ha caducado'));
$Json->setStatus(10);
Json::returnJson($Json);
}
$sk = Request::analyze('sk', false);
if (!$sk || !SessionUtil::checkSessionKey($sk)) {
$Json->setDescription(_('CONSULTA INVÁLIDA'));
Json::returnJson($Json);
}
$frmType = Request::analyze('type');
if ($frmType === 'ldap') {
$ldapServer = Request::analyze('ldap_server');
$ldapBase = Request::analyze('ldap_base');
$ldapGroup = Request::analyze('ldap_group');
$ldapBindUser = Request::analyze('ldap_binduser');
$ldapBindPass = Request::analyzeEncrypted('ldap_bindpass');
if (!$ldapServer || !$ldapBase || !$ldapBindUser || !$ldapBindPass) {
$Json->setDescription(_('Los parámetros de LDAP no están configurados'));
Json::returnJson($Json);
}
if (Request::analyze('ldap_enabled', false, false, true)) {
$Ldap = new LdapMsAds();
} else {
$Ldap = new LdapStd();
}
$Ldap->setServer($ldapServer);
$Ldap->setSearchBase($ldapBase);
$Ldap->setGroup($ldapGroup);
$Ldap->setBindDn($ldapBindUser);
$Ldap->setBindPass($ldapBindPass);
$resCheckLdap = $Ldap->checkConnection();
if ($resCheckLdap === false) {
$Json->setDescription(_('Error de conexión a LDAP'));
$Json->addMessage(_('Revise el registro de eventos para más detalles'));
} else {
$Json->setDescription(_('Conexión a LDAP correcta'));
$Json->addMessage(sprintf(_('Objetos encontrados: %d'), $resCheckLdap));
$Json->setStatus(0);
}
Json::returnJson($Json);
} elseif ($frmType === 'dokuwiki') {
$frmDokuWikiUrl = Request::analyze('dokuwiki_url');
$frmDokuWikiUser = Request::analyze('dokuwiki_user');
$frmDokuWikiPass = Request::analyzeEncrypted('dokuwiki_pass');
if (!$frmDokuWikiUrl) {
$Json->setDescription(_('Los parámetros de DokuWiki no están configurados'));
Json::returnJson($Json);
}
try {
$DokuWikiApi = DokuWikiApi::checkConnection($frmDokuWikiUrl, $frmDokuWikiUser, $frmDokuWikiPass);
$dokuWikiVersion = $DokuWikiApi->getVersion();
$version = is_array($dokuWikiVersion) ? $dokuWikiVersion[0] : _('Error');
$Json->setDescription(_('Conexión correcta'));
$Json->addMessage(sprintf('%s: %s', _('Versión'), $version));
$Json->setStatus(0);
} catch (\SP\Core\Exceptions\SPException $e) {
$Json->setDescription(_('Error de conexión a DokuWiki'));
$Json->addMessage(_('Revise el registro de eventos para más detalles'));
}
Json::returnJson($Json);
}
$Controller = new ChecksController();
$Controller->doAction();

View File

@@ -25,8 +25,6 @@
use SP\Controller\ItemActionController;
use SP\Http\Request;
use SP\Core\SessionUtil;
use SP\Http\Response;
define('APP_ROOT', '..');
@@ -34,9 +32,5 @@ require_once APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Bas
Request::checkReferer('POST');
if (!\SP\Core\Init::isLoggedIn()) {
Response::printJson(_('La sesión no se ha iniciado o ha caducado'), 10);
}
$ItemAction = new ItemActionController();
$ItemAction->doAction();

View File

@@ -26,17 +26,11 @@
define('APP_ROOT', '..');
use SP\Controller\ItemSearchController;
use SP\Core\Init;
use SP\Http\Request;
use SP\Http\Response;
require_once APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Base.php';
Request::checkReferer('POST');
if (!Init::isLoggedIn()) {
Response::printJson(_('La sesión no se ha iniciado o ha caducado'), 10);
}
$ItemSearch = new ItemSearchController();
$ItemSearch->doAction();

View File

@@ -24,9 +24,7 @@
*/
use SP\Controller\ItemShowController;
use SP\Core\Init;
use SP\Http\Request;
use SP\Util\Util;
define('APP_ROOT', '..');
@@ -34,9 +32,5 @@ require_once APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Bas
Request::checkReferer('POST');
if (!Init::isLoggedIn()) {
Util::logout();
}
$ItemShow = new ItemShowController();
$ItemShow->doAction();

View File

@@ -40,7 +40,7 @@ abstract class LdapBase implements LdapInterface, AuthInterface
/**
* Atributos de búsqueda
*/
const SEARCH_ATTRIBUTES = ['dn', 'displayname', 'samaccountname', 'mail', 'memberof', 'lockouttime', 'fullname', 'groupmembership'];
const SEARCH_ATTRIBUTES = ['dn', 'displayname', 'samaccountname', 'mail', 'memberof', 'lockouttime', 'fullname', 'groupmembership', 'uid'];
/**
* @var resource
*/

View File

@@ -0,0 +1,143 @@
<?php
/**
* sysPass
*
* @author nuxsmin
* @link http://syspass.org
* @copyright 2012-2016, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
* sysPass is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* sysPass is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
*/
namespace SP\Controller;
use SP\Auth\Ldap\LdapMsAds;
use SP\Auth\Ldap\LdapStd;
use SP\Core\Exceptions\SPException;
use SP\Http\Request;
use SP\Util\Json;
use SP\Util\Wiki\DokuWikiApi;
/**
* Class ChecksController
*
* @package SP\Controller
*/
class ChecksController implements ItemControllerInterface
{
use RequestControllerTrait;
/**
* ChecksController constructor.
*/
public function __construct()
{
$this->init();
}
/**
* Realizar la acción solicitada en la la petición HTTP
*
* @throws \SP\Core\Exceptions\SPException
*/
public function doAction()
{
$type = Request::analyze('type');
try {
switch ($type) {
case 'ldap':
$this->checkLdap();
break;
case 'dokuwiki':
$this->checkDokuWiki();
break;
default:
$this->invalidAction();
}
} catch (\Exception $e) {
$this->jsonResponse->setDescription($e->getMessage());
}
Json::returnJson($this->jsonResponse);
}
/**
* Comprobar la conexión a LDAP
*/
protected function checkLdap()
{
$ldapAdsEnabled = Request::analyze('ldap_ads', false, false, true);
$ldapServer = Request::analyze('ldap_server');
$ldapBase = Request::analyze('ldap_base');
$ldapGroup = Request::analyze('ldap_group');
$ldapBindUser = Request::analyze('ldap_binduser');
$ldapBindPass = Request::analyzeEncrypted('ldap_bindpass');
if (!$ldapServer || !$ldapBase || !$ldapBindUser || !$ldapBindPass) {
$this->jsonResponse->setDescription(_('Los parámetros de LDAP no están configurados'));
return;
}
$Ldap = $ldapAdsEnabled ? $Ldap = new LdapMsAds() : new LdapStd();
$Ldap->setServer($ldapServer);
$Ldap->setSearchBase($ldapBase);
$Ldap->setGroup($ldapGroup);
$Ldap->setBindDn($ldapBindUser);
$Ldap->setBindPass($ldapBindPass);
$resCheckLdap = $Ldap->checkConnection();
if ($resCheckLdap === false) {
$this->jsonResponse->setDescription(_('Error de conexión a LDAP'));
$this->jsonResponse->addMessage(_('Revise el registro de eventos para más detalles'));
} else {
$this->jsonResponse->setDescription(_('Conexión a LDAP correcta'));
$this->jsonResponse->addMessage(sprintf(_('Objetos encontrados: %d'), $resCheckLdap));
$this->jsonResponse->setStatus(0);
}
}
/**
* Comprobar la conexión a DokuWIki
*/
protected function checkDokuWiki()
{
$dokuWikiUrl = Request::analyze('dokuwiki_url');
$dokuWikiUser = Request::analyze('dokuwiki_user');
$dokuWikiPass = Request::analyzeEncrypted('dokuwiki_pass');
if (!$dokuWikiUrl) {
$this->jsonResponse->setDescription(_('Los parámetros de DokuWiki no están configurados'));
return;
}
try {
$DokuWikiApi = DokuWikiApi::checkConnection($dokuWikiUrl, $dokuWikiUser, $dokuWikiPass);
$dokuWikiVersion = $DokuWikiApi->getVersion();
$version = is_array($dokuWikiVersion) ? $dokuWikiVersion[0] : _('Error');
$this->jsonResponse->setDescription(_('Conexión correcta'));
$this->jsonResponse->addMessage(sprintf('%s: %s', _('Versión'), $version));
$this->jsonResponse->setStatus(0);
} catch (SPException $e) {
$this->jsonResponse->setDescription(_('Error de conexión a DokuWiki'));
$this->jsonResponse->addMessage(_('Revise el registro de eventos para más detalles'));
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -61,24 +61,10 @@ use SP\Util\Json;
*
* @package SP\Controller
*/
class ItemActionController
class ItemActionController implements ItemControllerInterface
{
/**
* @var int
*/
protected $actionId;
/**
* @var int
*/
protected $itemId;
/**
* @var string
*/
protected $sk;
/**
* @var JsonResponse
*/
protected $jsonResponse;
use RequestControllerTrait;
/**
* @var CustomFieldData
*/
@@ -89,36 +75,7 @@ class ItemActionController
*/
public function __construct()
{
$this->jsonResponse = new JsonResponse();
$this->analyzeRequest();
$this->preActionChecks();
}
/**
* Analizar la petición HTTP y establecer las propiedades del elemento
*/
protected function analyzeRequest()
{
$this->sk = Request::analyze('sk', false);
$this->itemId = Request::analyze('itemId', 0);
$this->actionId = Request::analyze('actionId', 0);
}
/**
* Comprobaciones antes de realizar una acción
*/
protected function preActionChecks()
{
if (!$this->sk || !SessionUtil::checkSessionKey($this->sk) || !$this->actionId) {
$this->invalidAction();
}
}
protected function invalidAction()
{
$this->jsonResponse->setDescription(_('Acción Inválida'));
Json::returnJson($this->jsonResponse);
$this->init();
}
/**

View File

@@ -34,7 +34,6 @@ use SP\Core\ActionsInterface;
use SP\Core\SessionUtil;
use SP\Core\Template;
use SP\DataModel\ItemSearchData;
use SP\Http\JsonResponse;
use SP\Http\Request;
use SP\Mgmt\Categories\CategorySearch;
use SP\Mgmt\Customers\CustomerSearch;
@@ -53,28 +52,14 @@ use SP\Util\Json;
*
* @package SP\Controller
*/
class ItemSearchController extends GridItemsSearchController implements ActionsInterface
class ItemSearchController extends GridItemsSearchController implements ActionsInterface, ItemControllerInterface
{
/**
* @var int
*/
protected $actionId;
/**
* @var int
*/
protected $activeTab;
/**
* @var JsonResponse
*/
protected $jsonResponse;
use RequestControllerTrait;
/**
* @var ItemSearchData
*/
protected $ItemSearchData;
/**
* @var string
*/
protected $sk;
/**
* Constructor
@@ -85,41 +70,10 @@ class ItemSearchController extends GridItemsSearchController implements ActionsI
{
parent::__construct($template);
$this->jsonResponse = new JsonResponse();
$this->ItemSearchData = new ItemSearchData();
$this->analyzeRequest();
$this->preActionChecks();
}
/**
* Analizar la petición HTTP y establecer las propiedades del elemento
*/
protected function analyzeRequest()
{
$this->sk = Request::analyze('sk');
$this->actionId = Request::analyze('actionId', 0);
$this->activeTab = Request::analyze('activeTab', 0);
$this->ItemSearchData->setSeachString(Request::analyze('search'));
$this->ItemSearchData->setLimitStart(Request::analyze('start', 0));
$this->ItemSearchData->setLimitCount(Request::analyze('count', Config::getConfig()->getAccountCount()));
}
/**
* Comprobaciones antes de realizar una acción
*/
protected function preActionChecks()
{
if (!$this->sk || !SessionUtil::checkSessionKey($this->sk) || !$this->actionId) {
$this->invalidAction();
}
}
protected function invalidAction()
{
$this->jsonResponse->setDescription(_('Acción Inválida'));
Json::returnJson($this->jsonResponse);
$this->init();
$this->setItemSearchData();
}
/**
@@ -477,4 +431,14 @@ class ItemSearchController extends GridItemsSearchController implements ActionsI
$this->jsonResponse->setStatus(0);
}
/**
* Establecer las propiedades de búsqueda
*/
protected function setItemSearchData()
{
$this->ItemSearchData->setSeachString(Request::analyze('search'));
$this->ItemSearchData->setLimitStart(Request::analyze('start', 0));
$this->ItemSearchData->setLimitCount(Request::analyze('count', Config::getConfig()->getAccountCount()));
}
}

View File

@@ -29,6 +29,7 @@ defined('APP_ROOT') || die(_('No es posible acceder directamente a este archivo'
use SP\Api\ApiTokensUtil;
use SP\Core\ActionsInterface;
use SP\Core\Init;
use SP\Core\Session;
use SP\Core\SessionUtil;
use SP\Core\Template;
@@ -50,6 +51,7 @@ use SP\Mgmt\CustomFields\CustomFieldDef;
use SP\Mgmt\CustomFields\CustomFieldTypes;
use SP\Mgmt\Files\FileUtil;
use SP\Mgmt\Groups\GroupUsers;
use SP\Mgmt\ItemSelectInterface;
use SP\Mgmt\PublicLinks\PublicLink;
use SP\Mgmt\Groups\Group;
use SP\Mgmt\Profiles\Profile;
@@ -58,38 +60,21 @@ use SP\Mgmt\Tags\Tag;
use SP\Mgmt\Users\User;
use SP\Util\Checks;
use SP\Util\Json;
use SP\Util\Util;
/**
* Class AccItemMgmt
*
* @package SP\Controller
*/
class ItemShowController extends ControllerBase implements ActionsInterface
class ItemShowController extends ControllerBase implements ActionsInterface, ItemControllerInterface
{
use RequestControllerTrait;
/**
* Máximo numero de acciones antes de agrupar
*/
const MAX_NUM_ACTIONS = 3;
/**
* @var int
*/
protected $actionId;
/**
* @var int
*/
protected $itemId;
/**
* @var int
*/
protected $activeTab;
/**
* @var JsonResponse
*/
protected $jsonResponse;
/**
* @var string
*/
protected $sk;
/**
* @var int
*/
@@ -104,10 +89,7 @@ class ItemShowController extends ControllerBase implements ActionsInterface
{
parent::__construct($template);
$this->jsonResponse = new JsonResponse();
$this->analyzeRequest();
$this->preActionChecks();
$this->init();
$this->view->assign('isDemo', Checks::demoIsEnabled());
$this->view->assign('sk', SessionUtil::getSessionKey(true));
@@ -118,32 +100,17 @@ class ItemShowController extends ControllerBase implements ActionsInterface
}
/**
* Analizar la petición HTTP y establecer las propiedades del elemento
* Comprobar si la sesión está activa
*
* @throws \SP\Core\Exceptions\SPException
*/
protected function analyzeRequest()
protected function checkSession()
{
$this->sk = Request::analyze('sk', false);
$this->itemId = Request::analyze('itemId', 0);
$this->actionId = Request::analyze('actionId', 0);
$this->activeTab = Request::analyze('activeTab', 0);
}
/**
* Comprobaciones antes de realizar una acción
*/
protected function preActionChecks()
{
if (!$this->sk || !SessionUtil::checkSessionKey($this->sk) || !$this->actionId) {
$this->invalidAction();
if (!Init::isLoggedIn()) {
Util::logout();
}
}
protected function invalidAction()
{
$this->jsonResponse->setDescription(_('Acción Inválida'));
Json::returnJson($this->jsonResponse);
}
/**
* Realizar la acción solicitada en la la petición HTTP
*

View File

@@ -0,0 +1,113 @@
<?php
/**
* sysPass
*
* @author nuxsmin
* @link http://syspass.org
* @copyright 2012-2016, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
* sysPass is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* sysPass is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with sysPass. If not, see <http://www.gnu.org/licenses/>.
*/
namespace SP\Controller;
use SP\Core\Init;
use SP\Core\SessionUtil;
use SP\Http\JsonResponse;
use SP\Http\Request;
use SP\Util\Json;
/**
* Class RequestControllerTrait
*
* @package SP\Controller
*/
trait RequestControllerTrait
{
/**
* @var int
*/
protected $actionId;
/**
* @var int
*/
protected $itemId;
/**
* @var int
*/
protected $activeTab;
/**
* @var JsonResponse
*/
protected $jsonResponse;
/**
* @var string
*/
protected $sk;
/**
* inicializar las propiedades
*/
protected function init()
{
$this->jsonResponse = new JsonResponse();
$this->checkSession();
$this->analyzeRequest();
$this->preActionChecks();
}
/**
* Analizar la petición HTTP y establecer las propiedades del elemento
*/
protected function analyzeRequest()
{
$this->sk = Request::analyze('sk');
$this->actionId = Request::analyze('actionId', 0);
$this->itemId = Request::analyze('itemId', 0);
$this->activeTab = Request::analyze('activeTab', 0);
}
/**
* Comprobaciones antes de realizar una acción
*/
protected function preActionChecks()
{
if (!$this->sk || !SessionUtil::checkSessionKey($this->sk) || !$this->actionId) {
$this->invalidAction();
}
}
protected function invalidAction()
{
$this->jsonResponse->setDescription(_('Acción Inválida'));
Json::returnJson($this->jsonResponse);
}
/**
* Comprobar si la sesión está activa
*
* @throws \SP\Core\Exceptions\SPException
*/
protected function checkSession()
{
if (!Init::isLoggedIn()) {
$this->jsonResponse->setDescription(_('La sesión no se ha iniciado o ha caducado'));
$this->jsonResponse->setStatus(10);
Json::returnJson($this->jsonResponse);
}
}
}

View File

@@ -36,7 +36,7 @@ class UserLdapSync
$Ldap = Config::getConfig()->isLdapAds() ? new LdapMsAds() : new LdapStd();
$ldapObjects = $Ldap->findObjects();
self::$totalObjects = count($ldapObjects);
self::$totalObjects = (int)$ldapObjects['count'];
$Log->addDescription(sprintf(_('Objetos encontrados: %s'), self::$totalObjects));
@@ -58,6 +58,7 @@ class UserLdapSync
break;
case 'login':
case 'samaccountname':
case 'uid':
$User->setUserLogin(strtolower($value));
break;
case 'mail':

67
js/app-actions.min.js vendored
View File

@@ -1,33 +1,34 @@
var $jscomp={scope:{},findInternal:function(c,d,g){c instanceof String&&(c=String(c));for(var e=c.length,f=0;f<e;f++){var m=c[f];if(d.call(g,m,f,c))return{i:f,v:m}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(c,d,g){if(g.get||g.set)throw new TypeError("ES3 does not support getters and setters.");c!=Array.prototype&&c!=Object.prototype&&(c[d]=g.value)};
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,d,g,e){if(d){g=$jscomp.global;c=c.split(".");for(e=0;e<c.length-1;e++){var f=c[e];f in g||(g[f]={});g=g[f]}c=c[c.length-1];e=g[c];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(g,c,{configurable:!0,writable:!0,value:d})}};
$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,g){return $jscomp.findInternal(this,c,g).v}},"es6-impl","es3");
sysPass.Actions=function(c){var d=c.log,g,e={doAction:"/ajax/ajax_getContent.php",updateItems:"/ajax/ajax_getItems.php",user:{savePreferences:"/ajax/ajax_userPrefsSave.php",password:"/ajax/ajax_usrpass.php",passreset:"/ajax/ajax_passReset.php"},main:{login:"/ajax/ajax_doLogin.php",install:"/ajax/ajax_install.php",twofa:"/ajax/ajax_2fa.php",getUpdates:"/ajax/ajax_checkUpds.php"},checks:"/ajax/ajax_checkConnection.php",config:{save:"/ajax/ajax_configSave.php","export":"/ajax/ajax_export.php","import":"/ajax/ajax_import.php"},
file:"/ajax/ajax_filesMgmt.php",link:"/ajax/ajax_itemSave.php",account:{save:"/ajax/ajax_itemSave.php",showPass:"/ajax/ajax_accViewPass.php",saveFavorite:"/ajax/ajax_appMgmtSave.php",request:"/ajax/ajax_sendRequest.php",getFiles:"/ajax/ajax_accGetFiles.php",search:"/ajax/ajax_accSearch.php"},appMgmt:{show:"/ajax/ajax_itemShow.php",save:"/ajax/ajax_itemSave.php",search:"/ajax/ajax_itemSearch.php"},eventlog:"/ajax/ajax_eventlog.php",wiki:{show:"/ajax/ajax_wiki.php"}},f=function(a){a={actionId:a.actionId,
itemId:"undefined"!==typeof a.itemId?a.itemId:0,isAjax:1};var b=c.appRequests().getRequestOpts();b.url=e.doAction;b.type="html";b.addHistory=!0;b.data=a;c.appRequests().getActionCall(b,function(a){$("#content").empty().html(a).find("input:first").focus()})},m=function(a){d.info("updateItems");var b=$("#"+a.data("item-dst"))[0].selectize;b.clearOptions();b.load(function(b){var h=c.appRequests().getRequestOpts();h.url=e.updateItems;h.method="get";h.data={sk:c.sk.get(),itemType:a.data("item-type")};
c.appRequests().getActionCall(h,function(a){b(a.items)})})},n=function(a,b){$.fancybox(b,{padding:[0,0,0,0],afterClose:function(){a.data("item-dst")&&m(a)},beforeShow:function(){c.appTriggers().views.common("#fancyContainer")}})},p={logout:function(){var a=window.location.search;c.redirect(0<a.length?"index.php"+a+"&logout=1":"index.php?logout=1")},login:function(a){d.info("main:login");var b=c.appRequests().getRequestOpts();b.url=e.main.login;b.data=a.serialize();c.appRequests().getActionCall(b,
function(b){switch(b.status){case 0:c.redirect(b.data.url);break;case 2:c.msg.out(b);a.find("input[type='text'],input[type='password']").val("");a.find("input:first").focus();$("#mpass").prop("disabled",!1);$("#smpass").val("").show();break;default:c.msg.out(b),a.find("input[type='text'],input[type='password']").val(""),a.find("input:first").focus()}})},install:function(a){d.info("main:install");var b=c.appRequests().getRequestOpts();b.url=e.main.install;b.data=a.serialize();c.appRequests().getActionCall(b,
function(a){c.msg.out(a);0==a.status&&setTimeout(function(){c.redirect("index.php")},1E3)})},twofa:function(a){d.info("main:twofa");var b=c.appRequests().getRequestOpts();b.url=e.main.twofa;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0==a.status&&setTimeout(function(){c.redirect("index.php")},1E3)})},getUpdates:function(a){d.info("main:getUpdates");a=c.appRequests().getRequestOpts();a.url=e.main.getUpdates;a.type="html";a.method="get";a.timeout=1E4;a.useLoading=!1;
a.data={isAjax:1};c.appRequests().getActionCall(a,function(a){$("#updates").html(a);"undefined"!==typeof componentHandler&&componentHandler.upgradeDom()},function(){$("#updates").html("!")})}},k={show:function(a){d.info("account:show");f({actionId:a.data("action-id"),itemId:a.data("item-id")})},showHistory:function(a){d.info("account:showHistory");f({actionId:a.data("action-id"),itemId:a.val()})},edit:function(a){d.info("account:edit");f({actionId:a.data("action-id"),itemId:a.data("item-id")})},"delete":function(a){d.info("account:delete");
var b='<div id="alert"><p id="alert-text">'+c.config().LANG[3]+"</p></div>";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b=c.appRequests().getRequestOpts();b.url=e.account.save;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){c.msg.out(a);k.search()})},function(a){a.preventDefault();alertify.error(c.config().LANG[44])})},showpass:function(a){d.info("account:showpass");var b=c.appRequests().getRequestOpts();
b.url=e.account.showPass;b.data={itemId:a.data("item-id"),isHistory:a.data("history"),isFull:a.data("full"),isAjax:1};c.appRequests().getActionCall(b,function(a){if(10===a.status)p.logout();else{var b;$("<div></div>").dialog({modal:!0,title:c.config().LANG[47],width:"auto",open:function(){b=$(this);var h,d="";h='<button class="dialog-clip-user-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" data-clipboard-target=".dialog-user-text"><span class="ui-button-icon-primary ui-icon ui-icon-clipboard"></span><span class="ui-button-text">'+
c.config().LANG[33]+"</span></button>";var e='<button class="dialog-clip-pass-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" data-clipboard-target=".dialog-pass-text"><span class="ui-button-icon-primary ui-icon ui-icon-clipboard"></span><span class="ui-button-text">'+c.config().LANG[34]+"</span></button>",d=a.useimage,f='<p class="dialog-user-text">'+a.acclogin+"</p>";0===a.status?(0===d?d='<p class="dialog-pass-text">'+a.accpass+"</p>":(d='<img class="dialog-pass-text" src="data:image/png;base64,'+
a.accpass+'" />',e=""),h=f+d+'<div class="dialog-buttons">'+h+e+"</div>"):(h='<span class="altTxtRed">'+a.description+"</span>",b.dialog("option","buttons",[{text:"Ok",icons:{primary:"ui-icon-close"},click:function(){b.dialog("close")}}]));b.html(h);b.dialog("option","position","center");b.parent().on("mouseleave",function(){clearTimeout(g);g=setTimeout(function(){b.dialog("close")},3E4)})},close:function(){clearTimeout(g);b.dialog("destroy")}})}})},copypass:function(a){d.info("account:copypass");
var b=c.appRequests().getRequestOpts();b.url=e.account.showPass;b.async=!1;b.data={itemId:a.data("item-id"),isHistory:a.data("history"),isAjax:1};return c.appRequests().getActionCall(b)},copy:function(a){d.info("account:copy");f({actionId:a.data("action-id"),itemId:a.data("item-id")})},savefavorite:function(a,b){d.info("account:saveFavorite");var h="on"===a.data("status"),f={actionId:h?a.data("action-id-off"):a.data("action-id-on"),itemId:a.data("item-id"),sk:c.sk.get(),isAjax:1},g=c.appRequests().getRequestOpts();
g.url=e.account.saveFavorite;g.data=f;c.appRequests().getActionCall(g,function(d){c.msg.out(d);0===d.status&&(a.data("status",h?"off":"on"),"function"===typeof b&&b())})},request:function(a){d.info("account:request");var b=c.appRequests().getRequestOpts();b.url=e.account.request;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},menu:function(a){a.hide();a.parent().children(".actions-optional").show(250)},sort:function(a){d.info("account:sort");var c=$("#frmSearch");
c.find('input[name="skey"]').val(a.data("key"));c.find('input[name="sorder"]').val(a.data("dir"));c.find('input[name="start"]').val(a.data("start"));k.search()},editpass:function(a){d.info("account:editpass");f({actionId:a.data("action-id"),itemId:a.data("item-id")})},restore:function(a){d.info("account:restore");k.save(a)},getfiles:function(a){d.info("account:getfiles");var b=c.appRequests().getRequestOpts();b.method="get";b.type="html";b.url=e.account.getFiles;b.data={id:a.data("item-id"),del:a.data("delete"),
sk:c.sk.get()};c.appRequests().getActionCall(b,function(c){a.html(c)})},search:function(){d.info("account:search");var a=$("#frmSearch");a.find("input[name='sk']").val(c.sk.get());a.find("input[name='skey']").val();a.find("input[name='sorder']").val();var b=c.appRequests().getRequestOpts();b.url=e.account.search;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){10===b.status&&c.msg.out(b);c.sk.set(b.sk);$("#res-content").empty().html(b.html);a.find("input:first").focus()})},save:function(a){d.info("account:save");
var b=c.appRequests().getRequestOpts();b.url=e.account.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},l={refreshTab:!0,show:function(a){d.info("appMgmt:show");a.data("item-dst")&&(l.refreshTab=!1);var b=c.appRequests().getRequestOpts();b.url=e.appMgmt.show;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),activeTab:a.data("activetab"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){0!==b.status?c.msg.out(b):n(a,b.data.html)})},
"delete":function(a){d.info("appMgmt:delete");var b='<div id="alert"><p id="alert-text">'+c.config().LANG[12]+"</p></div>";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b.preventDefault();b=c.appRequests().getRequestOpts();b.url=e.appMgmt.save;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};c.appRequests().getActionCall(b,function(b){c.msg.out(b);a.data("nextaction-id")&&f({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},
function(a){a.preventDefault();c.msg.error(c.config().LANG[44])})},save:function(a){d.info("appMgmt:save");var b=c.appRequests().getRequestOpts();b.url=e.appMgmt.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&(!0===l.refreshTab&&f({actionId:a.data("nextaction-id"),itemId:a.data("activetab")}),l.refreshTab=!0,$.fancybox.close())})},search:function(a){d.info("appMgmt:search");var b=$(a.data("target")),h=c.appRequests().getRequestOpts();h.url=e.appMgmt.search;
h.data=a.serialize();c.appRequests().getActionCall(h,function(a){0===a.status?b.html(a.data.html):b.html(c.msg.html.error(a.description));c.sk.set(a.csrf)})},nav:function(a){d.info("appMgmt:nav");var b=$("#"+a.data("action-form"));b.find("[name='start']").val(a.data("start"));b.find("[name='count']").val(a.data("count"));b.find("[name='sk']").val(c.sk.get());l.search(b)}};return{doAction:f,appMgmt:l,account:k,file:{view:function(a){d.info("file:view");var b=c.appRequests().getRequestOpts();b.url=
e.file;b.type="html";b.data={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};c.appRequests().getActionCall(b,function(b){"undefined"!==typeof b.status&&1===b.status?c.msg.out(b):b?n(a,b):c.msg.error(c.config().LANG[14])})},download:function(a){d.info("file:download");a={fileId:a.data("item-id"),sk:c.sk.get(),actionId:a.data("action-id")};$.fileDownload(c.config().APP_ROOT+e.file,{httpMethod:"POST",data:a})},"delete":function(a){d.info("file:delete");var b='<div id="alert"><p id="alert-text">'+
c.config().LANG[15]+"</p></div>";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b=c.appRequests().getRequestOpts();b.url=e.file;b.data={fileId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get()};c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&(a=$("#list-account-files"),k.getfiles(a))})},function(a){a.preventDefault();alertify.error(c.config().LANG[44])})}},checks:{ldap:function(a){d.info("checks:ldap");a=$(a.data("src"));
a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=e.checks;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},wiki:function(a){d.info("checks:wiki");a=$(a.data("src"));a.find("[name='sk']").val(c.sk.get());var b=c.appRequests().getRequestOpts();b.url=e.checks;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(a){d.info("config:save");
var b=c.appRequests().getRequestOpts();b.url=e.config.save;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&f({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},backup:function(a){d.info("config:backup");var b=c.appRequests().getRequestOpts();b.url=e.config["export"];b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&
f({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"export":function(a){d.info("config:export");var b=c.appRequests().getRequestOpts();b.url=e.config["export"];b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&f({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},"import":function(a){d.info("config:import");var b=c.appRequests().getRequestOpts();b.url=e.config["import"];b.data=a.serialize();
c.appRequests().getActionCall(b,function(b){c.msg.out(b);0===b.status&&"undefined"!==typeof a.data("nextaction-id")&&f({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},main:p,user:{savePreferences:function(a){d.info("user:savePreferences");var b=c.appRequests().getRequestOpts();b.url=e.user.savePreferences;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a);setTimeout(function(){window.location.replace("index.php")},2E3)})},saveSecurity:function(a){d.info("user:saveSecurity");
var b=c.appRequests().getRequestOpts();b.url=e.user.savePreferences;b.data=a.serialize();c.appRequests().getActionCall(b,function(b){c.msg.out(b);f({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})},password:function(a){d.info("user:password");var b=c.appRequests().getRequestOpts();b.type="html";b.method="get";b.url=e.user.password;b.data={actionId:a.data("action-id"),itemId:a.data("item-id"),sk:a.data("sk"),isAjax:1};c.appRequests().getActionCall(b,function(b){0===b.length?p.logout():
n(a,b)})},passreset:function(a){d.info("user:passreset");var b=c.appRequests().getRequestOpts();b.url=e.user.passreset;b.data=a.serialize();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},link:{save:function(a){d.info("link:save");var b=c.appRequests().getRequestOpts();b.url=e.link;b.data={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1};alertify.okBtn(c.config().LANG[40]).cancelBtn(c.config().LANG[41]).confirm(c.config().LANG[48],function(a){a.preventDefault();
b.data.notify=1;c.appRequests().getActionCall(b,function(a){c.msg.out(a)})},function(a){a.preventDefault();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})})},refresh:function(a){d.info("link:refresh");a={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")};var b=c.appRequests().getRequestOpts();b.url=e.link;b.data=a;c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},eventlog:{nav:function(a){if("undefined"===typeof a.data("start"))return!1;
var b=c.appRequests().getRequestOpts();b.url=e.eventlog;b.type="html";b.data={start:a.data("start"),current:a.data("current")};c.appRequests().getActionCall(b,function(a){$("#content").html(a);c.scrollUp()})},clear:function(a){var b='<div id="alert"><p id="alert-text">'+c.config().LANG[20]+"</p></div>";alertify.okBtn(c.config().LANG[43]).cancelBtn(c.config().LANG[44]).confirm(b,function(b){b.preventDefault();b=c.appRequests().getRequestOpts();b.url=e.eventlog;b.data={clear:1,sk:c.sk.get(),isAjax:1};
c.appRequests().getActionCall(b,function(b){c.msg.out(b);0==b.status&&f({actionId:a.data("nextaction-id")})})},function(a){a.preventDefault();c.msg.error(c.config().LANG[44])})}},ajaxUrl:e}};
var $jscomp={scope:{},findInternal:function(b,d,g){b instanceof String&&(b=String(b));for(var e=b.length,f=0;f<e;f++){var m=b[f];if(d.call(g,m,f,b))return{i:f,v:m}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(b,d,g){if(g.get||g.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[d]=g.value)};
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,d,g,e){if(d){g=$jscomp.global;b=b.split(".");for(e=0;e<b.length-1;e++){var f=b[e];f in g||(g[f]={});g=g[f]}b=b[b.length-1];e=g[b];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(g,b,{configurable:!0,writable:!0,value:d})}};
$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,g){return $jscomp.findInternal(this,b,g).v}},"es6-impl","es3");
sysPass.Actions=function(b){var d=b.log,g,e={doAction:"/ajax/ajax_getContent.php",updateItems:"/ajax/ajax_getItems.php",user:{savePreferences:"/ajax/ajax_userPrefsSave.php",password:"/ajax/ajax_usrpass.php",passreset:"/ajax/ajax_passReset.php"},main:{login:"/ajax/ajax_doLogin.php",install:"/ajax/ajax_install.php",twofa:"/ajax/ajax_2fa.php",getUpdates:"/ajax/ajax_checkUpds.php"},checks:"/ajax/ajax_checkConnection.php",config:{save:"/ajax/ajax_configSave.php","export":"/ajax/ajax_export.php","import":"/ajax/ajax_import.php"},
file:"/ajax/ajax_filesMgmt.php",link:"/ajax/ajax_itemSave.php",account:{save:"/ajax/ajax_itemSave.php",showPass:"/ajax/ajax_accViewPass.php",saveFavorite:"/ajax/ajax_appMgmtSave.php",request:"/ajax/ajax_sendRequest.php",getFiles:"/ajax/ajax_accGetFiles.php",search:"/ajax/ajax_accSearch.php"},appMgmt:{show:"/ajax/ajax_itemShow.php",save:"/ajax/ajax_itemSave.php",search:"/ajax/ajax_itemSearch.php"},eventlog:"/ajax/ajax_eventlog.php",wiki:{show:"/ajax/ajax_wiki.php"}},f=function(c){c={actionId:c.actionId,
itemId:"undefined"!==typeof c.itemId?c.itemId:0,isAjax:1};var a=b.appRequests().getRequestOpts();a.url=e.doAction;a.type="html";a.addHistory=!0;a.data=c;b.appRequests().getActionCall(a,function(b){$("#content").empty().html(b).find("input:first").focus()})},m=function(c){d.info("updateItems");var a=$("#"+c.data("item-dst"))[0].selectize;a.clearOptions();a.load(function(a){var h=b.appRequests().getRequestOpts();h.url=e.updateItems;h.method="get";h.data={sk:b.sk.get(),itemType:c.data("item-type")};
b.appRequests().getActionCall(h,function(b){a(b.items)})})},n=function(c,a){$.fancybox(a,{padding:[0,0,0,0],afterClose:function(){c.data("item-dst")&&m(c)},beforeShow:function(){b.appTriggers().views.common("#fancyContainer")}})},p={logout:function(){var c=window.location.search;b.redirect(0<c.length?"index.php"+c+"&logout=1":"index.php?logout=1")},login:function(c){d.info("main:login");var a=b.appRequests().getRequestOpts();a.url=e.main.login;a.data=c.serialize();b.appRequests().getActionCall(a,
function(a){switch(a.status){case 0:b.redirect(a.data.url);break;case 2:b.msg.out(a);c.find("input[type='text'],input[type='password']").val("");c.find("input:first").focus();$("#mpass").prop("disabled",!1);$("#smpass").val("").show();break;default:b.msg.out(a),c.find("input[type='text'],input[type='password']").val(""),c.find("input:first").focus()}})},install:function(c){d.info("main:install");var a=b.appRequests().getRequestOpts();a.url=e.main.install;a.data=c.serialize();b.appRequests().getActionCall(a,
function(c){b.msg.out(c);0==c.status&&setTimeout(function(){b.redirect("index.php")},1E3)})},twofa:function(c){d.info("main:twofa");var a=b.appRequests().getRequestOpts();a.url=e.main.twofa;a.data=c.serialize();b.appRequests().getActionCall(a,function(c){b.msg.out(c);0==c.status&&setTimeout(function(){b.redirect("index.php")},1E3)})},getUpdates:function(c){d.info("main:getUpdates");c=b.appRequests().getRequestOpts();c.url=e.main.getUpdates;c.type="html";c.method="get";c.timeout=1E4;c.useLoading=!1;
c.data={isAjax:1};b.appRequests().getActionCall(c,function(b){$("#updates").html(b);"undefined"!==typeof componentHandler&&componentHandler.upgradeDom()},function(){$("#updates").html("!")})}},k={show:function(b){d.info("account:show");f({actionId:b.data("action-id"),itemId:b.data("item-id")})},showHistory:function(b){d.info("account:showHistory");f({actionId:b.data("action-id"),itemId:b.val()})},edit:function(b){d.info("account:edit");f({actionId:b.data("action-id"),itemId:b.data("item-id")})},"delete":function(c){d.info("account:delete");
var a='<div id="alert"><p id="alert-text">'+b.config().LANG[3]+"</p></div>";alertify.okBtn(b.config().LANG[43]).cancelBtn(b.config().LANG[44]).confirm(a,function(a){a=b.appRequests().getRequestOpts();a.url=e.account.save;a.data={itemId:c.data("item-id"),actionId:c.data("action-id"),sk:b.sk.get()};b.appRequests().getActionCall(a,function(c){b.msg.out(c);k.search()})},function(c){c.preventDefault();alertify.error(b.config().LANG[44])})},showpass:function(c){d.info("account:showpass");var a=b.appRequests().getRequestOpts();
a.url=e.account.showPass;a.data={itemId:c.data("item-id"),isHistory:c.data("history"),isFull:c.data("full"),isAjax:1};b.appRequests().getActionCall(a,function(c){if(10===c.status)p.logout();else{var a;$("<div></div>").dialog({modal:!0,title:b.config().LANG[47],width:"auto",open:function(){a=$(this);var h,d="";h='<button class="dialog-clip-user-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" data-clipboard-target=".dialog-user-text"><span class="ui-button-icon-primary ui-icon ui-icon-clipboard"></span><span class="ui-button-text">'+
b.config().LANG[33]+"</span></button>";var e='<button class="dialog-clip-pass-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" data-clipboard-target=".dialog-pass-text"><span class="ui-button-icon-primary ui-icon ui-icon-clipboard"></span><span class="ui-button-text">'+b.config().LANG[34]+"</span></button>",d=c.useimage,f='<p class="dialog-user-text">'+c.acclogin+"</p>";0===c.status?(0===d?d='<p class="dialog-pass-text">'+c.accpass+"</p>":(d='<img class="dialog-pass-text" src="data:image/png;base64,'+
c.accpass+'" />',e=""),h=f+d+'<div class="dialog-buttons">'+h+e+"</div>"):(h='<span class="altTxtRed">'+c.description+"</span>",a.dialog("option","buttons",[{text:"Ok",icons:{primary:"ui-icon-close"},click:function(){a.dialog("close")}}]));a.html(h);a.dialog("option","position","center");a.parent().on("mouseleave",function(){clearTimeout(g);g=setTimeout(function(){a.dialog("close")},3E4)})},close:function(){clearTimeout(g);a.dialog("destroy")}})}})},copypass:function(c){d.info("account:copypass");
var a=b.appRequests().getRequestOpts();a.url=e.account.showPass;a.async=!1;a.data={itemId:c.data("item-id"),isHistory:c.data("history"),isAjax:1};return b.appRequests().getActionCall(a)},copy:function(b){d.info("account:copy");f({actionId:b.data("action-id"),itemId:b.data("item-id")})},savefavorite:function(c,a){d.info("account:saveFavorite");var h="on"===c.data("status"),f={actionId:h?c.data("action-id-off"):c.data("action-id-on"),itemId:c.data("item-id"),sk:b.sk.get(),isAjax:1},g=b.appRequests().getRequestOpts();
g.url=e.account.saveFavorite;g.data=f;b.appRequests().getActionCall(g,function(d){b.msg.out(d);0===d.status&&(c.data("status",h?"off":"on"),"function"===typeof a&&a())})},request:function(c){d.info("account:request");var a=b.appRequests().getRequestOpts();a.url=e.account.request;a.data=c.serialize();b.appRequests().getActionCall(a,function(c){b.msg.out(c)})},menu:function(b){b.hide();b.parent().children(".actions-optional").show(250)},sort:function(b){d.info("account:sort");var c=$("#frmSearch");
c.find('input[name="skey"]').val(b.data("key"));c.find('input[name="sorder"]').val(b.data("dir"));c.find('input[name="start"]').val(b.data("start"));k.search()},editpass:function(b){d.info("account:editpass");f({actionId:b.data("action-id"),itemId:b.data("item-id")})},restore:function(b){d.info("account:restore");k.save(b)},getfiles:function(c){d.info("account:getfiles");var a=b.appRequests().getRequestOpts();a.method="get";a.type="html";a.url=e.account.getFiles;a.data={id:c.data("item-id"),del:c.data("delete"),
sk:b.sk.get()};b.appRequests().getActionCall(a,function(b){c.html(b)})},search:function(){d.info("account:search");var c=$("#frmSearch");c.find("input[name='sk']").val(b.sk.get());c.find("input[name='skey']").val();c.find("input[name='sorder']").val();var a=b.appRequests().getRequestOpts();a.url=e.account.search;a.data=c.serialize();b.appRequests().getActionCall(a,function(a){10===a.status&&b.msg.out(a);b.sk.set(a.sk);$("#res-content").empty().html(a.html);c.find("input:first").focus()})},save:function(c){d.info("account:save");
var a=b.appRequests().getRequestOpts();a.url=e.account.save;a.data=c.serialize();b.appRequests().getActionCall(a,function(c){b.msg.out(c)})}},l={refreshTab:!0,show:function(c){d.info("appMgmt:show");c.data("item-dst")&&(l.refreshTab=!1);var a=b.appRequests().getRequestOpts();a.url=e.appMgmt.show;a.data={itemId:c.data("item-id"),actionId:c.data("action-id"),activeTab:c.data("activetab"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(a,function(a){0!==a.status?b.msg.out(a):n(c,a.data.html)})},
"delete":function(c){d.info("appMgmt:delete");var a='<div id="alert"><p id="alert-text">'+b.config().LANG[12]+"</p></div>";alertify.okBtn(b.config().LANG[43]).cancelBtn(b.config().LANG[44]).confirm(a,function(a){a.preventDefault();a=b.appRequests().getRequestOpts();a.url=e.appMgmt.save;a.data={itemId:c.data("item-id"),actionId:c.data("action-id"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(a,function(a){b.msg.out(a);c.data("nextaction-id")&&f({actionId:c.data("nextaction-id"),itemId:c.data("activetab")})})},
function(c){c.preventDefault();b.msg.error(b.config().LANG[44])})},save:function(c){d.info("appMgmt:save");var a=b.appRequests().getRequestOpts();a.url=e.appMgmt.save;a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);0===a.status&&(!0===l.refreshTab&&f({actionId:c.data("nextaction-id"),itemId:c.data("activetab")}),l.refreshTab=!0,$.fancybox.close())})},search:function(c){d.info("appMgmt:search");var a=$(c.data("target")),h=b.appRequests().getRequestOpts();h.url=e.appMgmt.search;
h.data=c.serialize();b.appRequests().getActionCall(h,function(c){0===c.status?a.html(c.data.html):a.html(b.msg.html.error(c.description));b.sk.set(c.csrf)})},nav:function(c){d.info("appMgmt:nav");var a=$("#"+c.data("action-form"));a.find("[name='start']").val(c.data("start"));a.find("[name='count']").val(c.data("count"));a.find("[name='sk']").val(b.sk.get());l.search(a)},ldapSync:function(c){d.info("appMgmt:ldapSync");var a='<div id="alert"><p id="alert-text">'+b.config().LANG[57]+"</p></div>";alertify.okBtn(b.config().LANG[43]).cancelBtn(b.config().LANG[44]).confirm(a,
function(a){a=b.appRequests().getRequestOpts();a.url=e.appMgmt.save;a.data={actionId:c.data("action-id"),sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(a,function(c){b.msg.out(c)})},function(c){c.preventDefault();alertify.error(b.config().LANG[44])})}};return{doAction:f,appMgmt:l,account:k,file:{view:function(c){d.info("file:view");var a=b.appRequests().getRequestOpts();a.url=e.file;a.type="html";a.data={fileId:c.data("item-id"),sk:b.sk.get(),actionId:c.data("action-id")};b.appRequests().getActionCall(a,
function(a){"undefined"!==typeof a.status&&1===a.status?b.msg.out(a):a?n(c,a):b.msg.error(b.config().LANG[14])})},download:function(c){d.info("file:download");c={fileId:c.data("item-id"),sk:b.sk.get(),actionId:c.data("action-id")};$.fileDownload(b.config().APP_ROOT+e.file,{httpMethod:"POST",data:c})},"delete":function(c){d.info("file:delete");var a='<div id="alert"><p id="alert-text">'+b.config().LANG[15]+"</p></div>";alertify.okBtn(b.config().LANG[43]).cancelBtn(b.config().LANG[44]).confirm(a,function(a){a=
b.appRequests().getRequestOpts();a.url=e.file;a.data={fileId:c.data("item-id"),actionId:c.data("action-id"),sk:b.sk.get()};b.appRequests().getActionCall(a,function(a){b.msg.out(a);0===a.status&&(a=$("#list-account-files"),k.getfiles(a))})},function(a){a.preventDefault();alertify.error(b.config().LANG[44])})}},checks:{ldap:function(c){d.info("checks:ldap");c=$(c.data("src"));c.find("[name='sk']").val(b.sk.get());var a=b.appRequests().getRequestOpts();a.url=e.checks;a.data=c.serialize();b.appRequests().getActionCall(a,
function(a){b.msg.out(a)})},wiki:function(c){d.info("checks:wiki");c=$(c.data("src"));c.find("[name='sk']").val(b.sk.get());var a=b.appRequests().getRequestOpts();a.url=e.checks;a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(c){d.info("config:save");var a=b.appRequests().getRequestOpts();a.url=e.config.save;a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);0===a.status&&
"undefined"!==typeof c.data("nextaction-id")&&f({actionId:c.data("nextaction-id"),itemId:c.data("activetab")})})},backup:function(c){d.info("config:backup");var a=b.appRequests().getRequestOpts();a.url=e.config["export"];a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);0===a.status&&"undefined"!==typeof c.data("nextaction-id")&&f({actionId:c.data("nextaction-id"),itemId:c.data("activetab")})})},"export":function(c){d.info("config:export");var a=b.appRequests().getRequestOpts();
a.url=e.config["export"];a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);0===a.status&&"undefined"!==typeof c.data("nextaction-id")&&f({actionId:c.data("nextaction-id"),itemId:c.data("activetab")})})},"import":function(c){d.info("config:import");var a=b.appRequests().getRequestOpts();a.url=e.config["import"];a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);0===a.status&&"undefined"!==typeof c.data("nextaction-id")&&f({actionId:c.data("nextaction-id"),
itemId:c.data("activetab")})})}},main:p,user:{savePreferences:function(c){d.info("user:savePreferences");var a=b.appRequests().getRequestOpts();a.url=e.user.savePreferences;a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);setTimeout(function(){window.location.replace("index.php")},2E3)})},saveSecurity:function(c){d.info("user:saveSecurity");var a=b.appRequests().getRequestOpts();a.url=e.user.savePreferences;a.data=c.serialize();b.appRequests().getActionCall(a,function(a){b.msg.out(a);
f({actionId:c.data("nextaction-id"),itemId:c.data("activetab")})})},password:function(c){d.info("user:password");var a=b.appRequests().getRequestOpts();a.type="html";a.method="get";a.url=e.user.password;a.data={actionId:c.data("action-id"),itemId:c.data("item-id"),sk:c.data("sk"),isAjax:1};b.appRequests().getActionCall(a,function(a){0===a.length?p.logout():n(c,a)})},passreset:function(c){d.info("user:passreset");var a=b.appRequests().getRequestOpts();a.url=e.user.passreset;a.data=c.serialize();b.appRequests().getActionCall(a,
function(a){b.msg.out(a)})}},link:{save:function(c){d.info("link:save");var a=b.appRequests().getRequestOpts();a.url=e.link;a.data={itemId:c.data("item-id"),actionId:c.data("action-id"),sk:b.sk.get(),isAjax:1};alertify.okBtn(b.config().LANG[40]).cancelBtn(b.config().LANG[41]).confirm(b.config().LANG[48],function(c){c.preventDefault();a.data.notify=1;b.appRequests().getActionCall(a,function(a){b.msg.out(a)})},function(c){c.preventDefault();b.appRequests().getActionCall(a,function(a){b.msg.out(a)})})},
refresh:function(c){d.info("link:refresh");c={itemId:c.data("item-id"),actionId:c.data("action-id"),sk:b.sk.get(),activeTab:c.data("activetab")};var a=b.appRequests().getRequestOpts();a.url=e.link;a.data=c;b.appRequests().getActionCall(a,function(a){b.msg.out(a)})}},eventlog:{nav:function(c){if("undefined"===typeof c.data("start"))return!1;var a=b.appRequests().getRequestOpts();a.url=e.eventlog;a.type="html";a.data={start:c.data("start"),current:c.data("current")};b.appRequests().getActionCall(a,
function(a){$("#content").html(a);b.scrollUp()})},clear:function(c){var a='<div id="alert"><p id="alert-text">'+b.config().LANG[20]+"</p></div>";alertify.okBtn(b.config().LANG[43]).cancelBtn(b.config().LANG[44]).confirm(a,function(a){a.preventDefault();a=b.appRequests().getRequestOpts();a.url=e.eventlog;a.data={clear:1,sk:b.sk.get(),isAjax:1};b.appRequests().getActionCall(a,function(a){b.msg.out(a);0==a.status&&f({actionId:c.data("nextaction-id")})})},function(a){a.preventDefault();b.msg.error(b.config().LANG[44])})}},
ajaxUrl:e}};