Пример #1
0
 /**
  * Obtener los datos para la cabcera de la página
  */
 public function getResourcesLinks()
 {
     $cssVersionHash = 'v=' . md5(implode(Util::getVersion()) . Util::resultsCardsIsEnabled());
     $this->view->assign('cssLink', Init::$WEBROOT . '/css/css.php?' . $cssVersionHash);
     $jsVersionHash = 'v=' . md5(implode(Util::getVersion()));
     $this->view->assign('jsLink', Init::$WEBROOT . '/js/js.php?' . $jsVersionHash);
     $themeInfo = Themes::getThemeInfo();
     if (isset($themeInfo['js'])) {
         $themeJsBase = 'b=' . urlencode(Themes::$themePath . DIRECTORY_SEPARATOR . 'js');
         $themeJsFiles = 'f=' . urlencode(implode(',', $themeInfo['js']));
         $this->view->assign('jsLinkTheme', Init::$WEBROOT . '/js/js.php?' . $themeJsFiles . '&' . $themeJsBase . '&' . $jsVersionHash);
     }
     if (isset($themeInfo['css'])) {
         if (!\SP\Util::resultsCardsIsEnabled()) {
             array_push($themeInfo['css'], 'search-grid.min.css');
         }
         $themeCssBase = 'b=' . urlencode(Themes::$themePath . DIRECTORY_SEPARATOR . 'css');
         $themeCssFiles = 'f=' . urlencode(implode(',', $themeInfo['css']));
         $this->view->assign('cssLinkTheme', Init::$WEBROOT . '/css/css.php?' . $themeCssFiles . '&' . $themeCssBase . '&' . $jsVersionHash);
     }
 }
Пример #2
0
 /**
  * Obtener la pestaña de configuración
  *
  * @return bool
  */
 public function getGeneralTab()
 {
     $this->setAction(self::ACTION_CFG_GENERAL);
     if (!$this->checkAccess()) {
         return;
     }
     $this->view->addTemplate('config');
     $this->view->assign('langsAvailable', Language::getAvailableLanguages());
     $this->view->assign('currentLang', \SP\Config::getValue('sitelang'));
     $this->view->assign('themesAvailable', Themes::getThemesAvailable());
     $this->view->assign('currentTheme', \SP\Config::getValue('sitetheme'));
     $this->view->assign('chkHttps', \SP\Config::getValue('https_enabled') ? 'checked="checked"' : '');
     $this->view->assign('chkLog', \SP\Config::getValue('log_enabled') ? 'checked="checked"' : '');
     $this->view->assign('chkDebug', \SP\Config::getValue('debug') ? 'checked="checked"' : '');
     $this->view->assign('chkMaintenance', \SP\Config::getValue('maintenance') ? 'checked="checked"' : '');
     $this->view->assign('chkUpdates', \SP\Config::getValue('checkupdates') ? 'checked="checked"' : '');
     $this->view->assign('chkNotices', \SP\Config::getValue('checknotices') ? 'checked="checked"' : '');
     $this->view->assign('sessionTimeout', \SP\Config::getValue('session_timeout'));
     // Files
     $this->view->assign('chkFiles', \SP\Config::getValue('files_enabled') ? 'checked="checked"' : '');
     $this->view->assign('filesAllowedExts', \SP\Config::getValue('files_allowed_exts'));
     $this->view->assign('filesAllowedSize', \SP\Config::getValue('files_allowed_size'));
     // Accounts
     $this->view->assign('chkGlobalSearch', \SP\Config::getValue('globalsearch') ? 'checked="checked"' : '');
     $this->view->assign('chkResultsAsCards', \SP\Config::getValue('resultsascards') ? 'checked="checked"' : '');
     $this->view->assign('chkAccountPassToImage', \SP\Config::getValue('account_passtoimage') ? 'checked="checked"' : '');
     $this->view->assign('chkAccountLink', \SP\Config::getValue('account_link') ? 'checked="checked"' : '');
     $this->view->assign('accountCount', \SP\Config::getValue('account_count'));
     // Proxy
     $this->view->assign('chkProxy', \SP\Config::getValue('proxy_enabled') ? 'checked="checked"' : '');
     $this->view->assign('proxyServer', \SP\Config::getValue('proxy_server'));
     $this->view->assign('proxyPort', \SP\Config::getValue('proxy_port'));
     $this->view->assign('proxyUser', \SP\Config::getValue('proxy_user'));
     $this->view->assign('proxyPass', \SP\Config::getValue('proxy_pass'));
     $this->view->assign('actionId', $this->getAction(), 'config');
     $this->view->append('tabs', array('title' => _('General')));
     $this->view->assign('tabIndex', $this->getTabIndex(), 'config');
 }
Пример #3
0
 /**
  * Inicializar la aplicación.
  * Esta función inicializa las variables de la aplicación y muestra la página
  * según el estado en el que se encuentre.
  */
 public static function start()
 {
     self::setIncludes();
     if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
         // Registro del cargador de clases (PHP >= 5.1.2)
         if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
             spl_autoload_register('SP\\Init::loadClass', true);
         } else {
             spl_autoload_register(array('SP\\Init', 'loadClass'));
         }
     } else {
         /**
          * Fall back to traditional autoload for old PHP versions
          *
          * @param string $classname The name of the class to load
          */
         function __autoload($classname)
         {
             \SP\Init::loadClass($classname);
         }
     }
     error_reporting(E_ALL | E_STRICT);
     if (defined('DEBUG') && DEBUG) {
         ini_set('display_errors', 1);
     }
     date_default_timezone_set('UTC');
     // Intentar desactivar magic quotes.
     if (get_magic_quotes_gpc() == 1) {
         ini_set('magic_quotes_runtime', 0);
     }
     // Copiar la cabecera http de autentificación para apache+php-fcgid
     if (isset($_SERVER['HTTP_XAUTHORIZATION']) && !isset($_SERVER['HTTP_AUTHORIZATION'])) {
         $_SERVER['HTTP_AUTHORIZATION'] = $_SERVER['HTTP_XAUTHORIZATION'];
     }
     // Establecer las cabeceras de autentificación para apache+php-cgi
     if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) {
         list($name, $password) = explode(':', base64_decode($matches[1]), 2);
         $_SERVER['PHP_AUTH_USER'] = strip_tags($name);
         $_SERVER['PHP_AUTH_PW'] = strip_tags($password);
     }
     // Establecer las cabeceras de autentificación para que apache+php-cgi funcione si la variable es renombrada por apache
     if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION']) && preg_match('/Basic\\s+(.*)$/i', $_SERVER['REDIRECT_HTTP_AUTHORIZATION'], $matches)) {
         list($name, $password) = explode(':', base64_decode($matches[1]), 2);
         $_SERVER['PHP_AUTH_USER'] = strip_tags($name);
         $_SERVER['PHP_AUTH_PW'] = strip_tags($password);
     }
     // Establecer el modo debug si una sesión de xdebug está activa
     if (isset($_COOKIE['XDEBUG_SESSION']) && !defined('DEBUG')) {
         define('DEBUG', true);
     }
     // Establecer el nivel de logging
     if (defined('DEBUG') && DEBUG) {
         //            error_log('sysPass DEBUG');
         error_reporting(E_ALL);
         ini_set('display_errors', 'On');
     } else {
         error_reporting(E_ALL & ~(E_DEPRECATED | E_STRICT | E_NOTICE));
         ini_set('display_errors', 'Off');
     }
     // Cargar las extensiones
     self::loadExtensions();
     // Iniciar la sesión de PHP
     self::startSession();
     //  Establecer las rutas de la aplicación
     self::setPaths();
     // Cargar el lenguaje
     Language::setLanguage();
     // Establecer el tema de sysPass
     Themes::setTheme();
     // Comprobar si es necesario cambiar a HTTPS
     self::checkHttps();
     // Comprobar si es necesario inicialización
     if (self::checkInitSourceInclude()) {
         return;
     }
     // Comprobar la configuración
     self::checkConfig();
     // Comprobar si está instalado
     self::checkInstalled();
     // Comprobar si el modo mantenimiento está activado
     self::checkMaintenanceMode();
     // Comprobar si la Base de datos existe
     if (!DB::checkDatabaseExist()) {
         self::initError(_('Error en la verificación de la base de datos'));
     }
     // Comprobar si es cierre de sesión
     self::checkLogout();
     // Comprobar la versión y actualizarla
     self::checkVersion();
     // Inicializar la sesión
     self::initSession();
     // Comprobar acciones en URL
     self::checkPreLoginActions();
     // Intentar establecer el tiempo de vida de la sesión en PHP
     $sessionLifeTime = self::getSessionLifeTime();
     @ini_set('gc_maxlifetime', (string) $sessionLifeTime);
     if (!Config::getValue("installed", false)) {
         Session::setUserId('');
     }
     if (isset($_SERVER['PHP_AUTH_USER']) && Session::getUserId() && $_SERVER['PHP_AUTH_USER'] != Session::getUserId()) {
         self::logout();
     }
     // Manejar la redirección para usuarios logeados
     if (Request::analyze('redirect_url', '', true) && self::isLoggedIn()) {
         $location = 'index.php';
         // Denegar la regirección si la URL contiene una @
         // Esto previene redirecciones como ?redirect_url=:user@domain.com
         if (strpos($location, '@') === false) {
             header('Location: ' . $location);
             return;
         }
     }
     // Volver a cargar la configuración si se recarga la página
     if (Request::checkReload()) {
         Config::readConfig();
         // Restablecer el idioma y el tema visual
         Language::setLanguage();
         Themes::setTheme();
     }
     if (self::isLoggedIn() || Request::analyze('isAjax', false, true)) {
         return;
     }
     // El usuario no está logado y no es una petición, redirigir al login
     self::goLogin();
 }
Пример #4
0
 /**
  * Obtener la pestaña de preferencias
  */
 public function getPreferencesTab()
 {
     $this->setAction(self::ACTION_USR_PREFERENCES_GENERAL);
     $this->view->addTemplate('preferences');
     $this->view->assign('userId', $this->_userId);
     $this->view->assign('langsAvailable', Language::getAvailableLanguages());
     $this->view->assign('currentLang', $this->_userPrefs->getLang());
     $this->view->assign('themesAvailable', Themes::getThemesAvailable());
     $this->view->assign('currentTheme', $this->_userPrefs->getTheme() ? $this->_userPrefs->getTheme() : \SP\Config::getValue('sitetheme'));
     $this->view->assign('chkAccountLink', $this->_userPrefs->isAccountLink() ? 'checked="checked"' : '');
     $this->view->assign('resultsPerPage', $this->_userPrefs->getResultsPerPage() ? $this->_userPrefs->getResultsPerPage() : \SP\Config::getValue('account_count'));
     $this->view->assign('chkSortViews', $this->_userPrefs->isSortViews() ? 'checked="checked"' : '');
     $this->view->assign('chkTopNavbar', $this->_userPrefs->isTopNavbar() ? 'checked="checked"' : '');
     $this->view->assign('chkOptionalActions', $this->_userPrefs->isOptionalActions() ? 'checked="checked"' : '');
     $this->view->append('tabs', array('title' => _('Preferencias')));
     $this->view->assign('tabIndex', $this->getTabIndex(), 'preferences');
     $this->view->assign('actionId', $this->getAction(), 'preferences');
 }
Пример #5
0
 /**
  * Inicializar la aplicación.
  * Esta función inicializa las variables de la aplicación y muestra la página
  * según el estado en el que se encuentre.
  */
 public static function start()
 {
     self::setIncludes();
     if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
         // Registro del cargador de clases (PHP >= 5.1.2)
         if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
             spl_autoload_register('SP\\Init::loadClass', true);
         } else {
             spl_autoload_register(array('SP\\Init', 'loadClass'));
         }
     } else {
         /**
          * Fall back to traditional autoload for old PHP versions
          *
          * @param string $classname The name of the class to load
          */
         function __autoload($classname)
         {
             \SP\Init::loadClass($classname);
         }
     }
     date_default_timezone_set('UTC');
     // Intentar desactivar magic quotes.
     if (get_magic_quotes_gpc() == 1) {
         ini_set('magic_quotes_runtime', 0);
     }
     // Variables de autentificación
     self::setAuth();
     // Establecer el nivel de logging
     self::setLogging();
     // Cargar las extensiones
     self::loadExtensions();
     // Iniciar la sesión de PHP
     self::startSession();
     //  Establecer las rutas de la aplicación
     self::setPaths();
     // Cargar el lenguaje
     Language::setLanguage();
     // Establecer el tema de sysPass
     Themes::setTheme();
     // Comprobar si es necesario cambiar a HTTPS
     self::checkHttps();
     // Comprobar si es necesario inicialización
     if (self::checkInitSourceInclude()) {
         return;
     }
     // Comprobar la configuración
     self::checkConfig();
     // Comprobar si está instalado
     self::checkInstalled();
     // Comprobar si el modo mantenimiento está activado
     self::checkMaintenanceMode();
     // Comprobar si la Base de datos existe
     if (!DB::checkDatabaseExist()) {
         self::initError(_('Error en la verificación de la base de datos'));
     }
     // Comprobar si es cierre de sesión
     self::checkLogout();
     // Comprobar la versión y actualizarla
     self::checkVersion();
     // Inicializar la sesión
     self::initSession();
     // Comprobar acciones en URL
     self::checkPreLoginActions();
     // Intentar establecer el tiempo de vida de la sesión en PHP
     @ini_set('gc_maxlifetime', (string) self::getSessionLifeTime());
     if (!Config::getValue("installed", false)) {
         Session::setUserId('');
     }
     // Comprobar si se ha identificado mediante el servidor web y el usuario coincide
     if (self::isLoggedIn() && !Auth::checkServerAuthUser(Session::getUserLogin())) {
         self::logout();
     }
     // Manejar la redirección para usuarios logeados
     if (Request::analyze('redirect_url', '', true) && self::isLoggedIn()) {
         $location = 'index.php';
         // Denegar la redirección si la URL contiene una @
         // Esto previene redirecciones como ?redirect_url=:user@domain.com
         if (strpos($location, '@') === false) {
             header('Location: ' . $location);
             return;
         }
     }
     // Volver a cargar la configuración si se recarga la página
     if (Request::checkReload()) {
         Config::readConfig();
         // Restablecer el idioma y el tema visual
         Language::setLanguage();
         Themes::setTheme();
     }
     if (self::isLoggedIn() || Request::analyze('isAjax', false, true)) {
         return;
     }
     // El usuario no está logado y no es una petición, redirigir al login
     self::goLogin();
 }