public function doGet(\Innomatic\Webapp\WebAppRequest $req, \Innomatic\Webapp\WebAppResponse $res)
 {
     // Identify the requested resource path
     $path = $this->getRelativePath($req);
     // Bootstraps Innomatic
     $container = \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer');
     $home = $container->getCurrentWebApp()->getHome();
     $innomatic = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
     $innomatic->bootstrap($home, $home . 'core/conf/innomatic.ini');
     $innomatic->setMode(\Innomatic\Core\InnomaticContainer::MODE_ROOT);
     $innomatic->setInterface(\Innomatic\Core\InnomaticContainer::INTERFACE_WEBSERVICES);
     if ($innomatic->getState() == \Innomatic\Core\InnomaticContainer::STATE_SETUP) {
         $innomatic->abort('Setup phase');
     }
     $xuser = new WebServicesUser($innomatic->getDataAccess());
     if ($xuser->setByAccount($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
         $container = $innomatic;
         $container->setWebServicesUser($_SERVER['PHP_AUTH_USER']);
         $container->setWebServicesProfile($xuser->mProfileId);
         if ($xuser->mDomainId) {
             $domain_query = $innomatic->getDataAccess()->execute('SELECT domainid FROM domains WHERE id=' . $xuser->mDomainId);
             if ($domain_query->getNumberRows()) {
                 $innomatic = $innomatic;
                 $innomatic->startDomain($domain_query->getFields('domainid'));
             }
         }
         $xprofile = new WebServicesProfile($innomatic->getDataAccess(), $container->getWebServicesProfile());
         $container->setWebServicesMethods($xprofile->AvailableMethods());
     } else {
         if ($innomatic->getConfig()->Value('SecurityAlertOnWrongWebServicesLogin') == '1') {
             $innomatic_security = new \Innomatic\Security\SecurityManager();
             $innomatic_security->sendAlert('Wrong web services login for user ' . $_SERVER['PHP_AUTH_USER'] . ' from remote address ' . $_SERVER['REMOTE_ADDR']);
             unset($innomatic_security);
         }
     }
     $structure = array();
     $methods = $innomatic->getWebServicesMethods();
     while (list(, $tmpdata) = each($methods)) {
         if ($tmpdata['handler'] and $tmpdata['name'] and $tmpdata['function']) {
             // TODO Fixare gestione handler servizi remoti
             if (!defined(strtoupper($tmpdata['handler']) . '_XMLRPCMETHOD')) {
                 require_once $innomatic->getHome() . 'core/classes/shared/webservices/' . ucfirst($tmpdata['handler']) . 'WebServicesHandler.php';
             }
             $structure[$tmpdata['name']]['function'] = $tmpdata['function'];
             if (isset($tmpdata['signature'])) {
                 $structure[$tmpdata['name']]['signature'] = $tmpdata['signature'];
             }
             if (isset($tmpdata['docstring'])) {
                 $structure[$tmpdata['name']]['docstring'] = $tmpdata['docstring'];
             }
         }
     }
     $xs = new \Innomatic\Webservices\Xmlrpc\XmlRpcServer($structure);
 }
 public static function doAuth($wrong = false, $reason = '')
 {
     $container = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
     $innomatic_locale = new \Innomatic\Locale\LocaleCatalog('innomatic::authentication', $container->getLanguage());
     $innomatic = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
     $wui = \Innomatic\Wui\Wui::instance('\\Innomatic\\Wui\\Wui');
     $wui->loadWidget('button');
     $wui->loadWidget('empty');
     $wui->loadWidget('formarg');
     $wui->loadWidget('form');
     $wui->loadWidget('grid');
     $wui->loadWidget('horizbar');
     $wui->loadWidget('horizframe');
     $wui->loadWidget('horizgroup');
     $wui->loadWidget('image');
     $wui->loadWidget('label');
     $wui->loadWidget('link');
     $wui->loadWidget('page');
     $wui->loadWidget('sessionkey');
     $wui->loadWidget('statusbar');
     $wui->loadWidget('string');
     $wui->loadWidget('submit');
     $wui->loadWidget('titlebar');
     $wui->loadWidget('vertframe');
     $wui->loadWidget('vertgroup');
     $wui_page = new WuiPage('loginpage', array('title' => $innomatic_locale->getStr('rootlogin'), 'border' => 'false', 'align' => 'center', 'valign' => 'middle'));
     $wui_topgroup = new WuiVertgroup('topgroup', array('align' => 'center', 'groupalign' => 'center', 'groupvalign' => 'middle', 'height' => '100%', 'width' => '0%'));
     $wui_maingroup = new WuiVertgroup('maingroup', array('align' => 'center'));
     $wui_titlebar = new WuiTitleBar('titlebar', array('title' => $innomatic_locale->getStr('rootlogin')));
     $wui_mainbframe = new WuiVertframe('vframe', array('align' => 'center'));
     $wui_mainframe = new WuiHorizgroup('horizframe');
     $wui_mainstatus = new WuiStatusBar('mainstatusbar');
     // Main frame
     //
     $wui_grid = new WuiGrid('grid', array('rows' => '2', 'cols' => '2'));
     $wui_grid->addChild(new WuiLabel('usernamelabel', array('label' => $innomatic_locale->getStr('username'))), 0, 0);
     $wui_grid->addChild(new WuiString('username', array('disp' => 'login')), 0, 1);
     $wui_grid->addChild(new WuiLabel('passwordlabel', array('label' => $innomatic_locale->getStr('password'))), 1, 0);
     $wui_grid->addChild(new WuiString('password', array('disp' => 'login', 'password' => 'true')), 1, 1);
     $wui_vgroup = new WuiVertgroup('vertgroup', array('align' => 'center'));
     // $wui_vgroup->addChild( new WuiLabel( 'titlelabel', array( 'label' => $innomatic_locale->getStr( 'rootlogin' ) ) ) );
     $wui_vgroup->addChild($wui_grid);
     $wui_vgroup->addChild(new WuiSubmit('submit', array('caption' => $innomatic_locale->getStr('enter'))));
     $form_events_call = new \Innomatic\Wui\Dispatch\WuiEventsCall();
     $form_events_call->addEvent(new \Innomatic\Wui\Dispatch\WuiEvent('login', 'login', ''));
     $form_events_call->addEvent(new \Innomatic\Wui\Dispatch\WuiEvent('view', 'default', ''));
     $wui_form = new WuiForm('form', array('action' => $form_events_call->getEventsCallString()));
     $wui_hgroup = new WuiHorizgroup('horizgroup', array('align' => 'middle'));
     $wui_hgroup->addChild(new WuiButton('password', array('themeimage' => 'keyhole', 'themeimagetype' => 'big', 'action' => $innomatic->getBaseUrl() . '/', 'highlight' => false)));
     $wui_hgroup->addChild($wui_vgroup);
     $wui_form->addChild($wui_hgroup);
     $wui_mainframe->addChild($wui_form);
     // Wrong account check
     //
     $session = \Innomatic\Desktop\Controller\DesktopFrontController::instance('\\Innomatic\\Desktop\\Controller\\DesktopFrontController')->session;
     if ($wrong) {
         if ($innomatic->getConfig()->Value('SecurityAlertOnWrongLocalRootLogin') == '1') {
             $innomatic_security = new \Innomatic\Security\SecurityManager();
             $innomatic_security->sendAlert('Wrong root local login from remote address ' . $_SERVER['REMOTE_ADDR']);
             $innomatic_security->logFailedAccess('', true, $_SERVER['REMOTE_ADDR']);
             unset($innomatic_security);
         }
         $sleep_time = $innomatic->getConfig()->Value('WrongLoginDelay');
         if (!strlen($sleep_time)) {
             $sleep_time = 1;
         }
         $max_attempts = $innomatic->getConfig()->Value('MaxWrongLogins');
         if (!strlen($max_attempts)) {
             $max_attempts = 3;
         }
         sleep($sleep_time);
         if ($session->isValid('root_login_attempts')) {
             $session->put('root_login_attempts', $session->get('root_login_attempts') + 1);
             if ($session->get('root_login_attempts') >= $max_attempts) {
                 $innomatic->abort($innomatic_locale->getStr('wrongpwd'));
             }
         } else {
             $session->put('root_login_attempts', 1);
         }
         if ($reason) {
             $wui_mainstatus->mArgs['status'] = $innomatic_locale->getStr($reason);
         } else {
             $wui_mainstatus->mArgs['status'] = $innomatic_locale->getStr('wrongpwd');
         }
     } else {
         $session->put('domain_login_attempts', 0);
     }
     // Page render
     //
     $wui_maingroup->addChild($wui_titlebar);
     // $wui_maingroup->addChild( new WuiButton( 'innomaticlogo', array( 'image' => $innomatic->getBaseUrl(false).'/shared/styles/cleantheme/innomatic_big_asp.png', 'action' => $innomatic->getBaseUrl().'/' ) ) );
     $wui_mainbframe->addChild($wui_mainframe);
     $wui_mainbframe->addChild(new WuiHorizBar('hb'));
     $wui_mainbframe->addChild(new WuiLink('copyright', array('label' => $innomatic_locale->getStr('auth_copyright.label'), 'link' => 'http://www.innomatic.io/', 'target' => '_blank')));
     $wui_maingroup->addChild($wui_mainbframe);
     $wui_maingroup->addChild($wui_mainstatus);
     $wui_topgroup->addChild($wui_maingroup);
     $wui_page->addChild($wui_topgroup);
     $wui->addChild($wui_page);
     $wui->render();
     $innomatic->halt();
 }
 /**
  * Bootstraps the Innomatic container.
  *
  * @param string $home Complete path of the directory containing the
  * Innomatic webapp.
  * @param string $configuration Complete path of the Innomatic
  * configuration file.
  */
 public function bootstrap($home, $configuration)
 {
     if ($this->bootstrapped) {
         return;
     }
     $this->home = $home;
     // Reads the configuration
     $this->configurationFile = $configuration;
     $this->config = new InnomaticSettings($configuration);
     // *********************************************************************
     // PHP environment
     // *********************************************************************
     // PHP
     $timelimit = $this->config->value('PHPExecutionTimeLimit');
     if (!strlen($timelimit)) {
         $timelimit = 0;
     }
     set_time_limit($timelimit);
     ignore_user_abort(true);
     // Adds global override classes folder to the include path.
     set_include_path($this->home . 'core/overrides/classes/' . PATH_SEPARATOR . get_include_path());
     // *********************************************************************
     // Innomatic state, environment, mode, interface and edition
     // *********************************************************************
     // Waits until system is in upgrade phase
     if ($this->lockOverride == false) {
         while (file_exists($this->home . 'core/temp/upgrading_system_lock')) {
             $this->state = \Innomatic\Core\InnomaticContainer::STATE_UPGRADE;
             clearstatcache();
             sleep(1);
         }
     }
     // Checks if system is in setup phase and sets the state
     if (file_exists($this->home . 'core/temp/setup_lock')) {
         $this->state = \Innomatic\Core\InnomaticContainer::STATE_SETUP;
         if (extension_loaded('APD')) {
             apd_set_session_trace(35);
         }
     } else {
         switch ($this->config->value('PlatformState')) {
             case 'debug':
                 $this->state = \Innomatic\Core\InnomaticContainer::STATE_DEBUG;
                 if (extension_loaded('APD')) {
                     apd_set_session_trace(35);
                 }
                 break;
             case 'production':
                 $this->state = \Innomatic\Core\InnomaticContainer::STATE_PRODUCTION;
                 break;
             default:
                 $this->state = \Innomatic\Core\InnomaticContainer::STATE_PRODUCTION;
         }
     }
     // Environment
     switch ($this->config->value('PlatformEnvironment')) {
         case 'development':
             $this->environment = \Innomatic\Core\InnomaticContainer::ENVIRONMENT_DEVELOPMENT;
             break;
         case 'integration':
             $this->environment = \Innomatic\Core\InnomaticContainer::ENVIRONMENT_INTEGRATION;
             break;
         case 'staging':
             $this->environment = \Innomatic\Core\InnomaticContainer::ENVIRONMENT_STAGING;
             break;
         case 'production':
             $this->environment = \Innomatic\Core\InnomaticContainer::ENVIRONMENT_PRODUCTION;
             break;
         default:
             $this->environment = \Innomatic\Core\InnomaticContainer::ENVIRONMENT_PRODUCTION;
     }
     // Interface
     //$this->interface = \Innomatic\Core\InnomaticContainer::INTERFACE_UNKNOWN;
     // Mode
     //$this->mode = \Innomatic\Core\InnomaticContainer::MODE_ROOT;
     // Edition
     if ($this->config->value('PlatformEdition') == 'enterprise' or $this->config->value('PlatformEdition') == 'singletenant') {
         $this->edition = \Innomatic\Core\InnomaticContainer::EDITION_SINGLETENANT;
     }
     // *********************************************************************
     // Pid and shutdown function
     // *********************************************************************
     if ($this->state != \Innomatic\Core\InnomaticContainer::STATE_SETUP) {
         $this->pid = md5(microtime());
         if (!file_exists($this->home . 'core/temp/pids/')) {
             @mkdir($this->home . 'core/temp/pids/');
         }
         touch($this->home . 'core/temp/pids/' . $this->pid, time());
         register_shutdown_function(array($this, 'shutdown'));
     }
     // *********************************************************************
     // Innomatic platform name
     // *********************************************************************
     $this->platformName = $this->config->value('PlatformName');
     $this->platformGroup = $this->config->value('PlatformGroup');
     // *********************************************************************
     // Innomatic error handler
     // *********************************************************************
     //set_error_handler(array($this, 'errorHandler'));
     // *********************************************************************
     // Innomatic root
     // *********************************************************************
     $this->country = $this->config->value('RootCountry');
     $this->language = $this->config->value('RootLanguage');
     if ($this->state != \Innomatic\Core\InnomaticContainer::STATE_SETUP) {
         // Innomatic central database
         //
         $dasnString = $this->config->value('RootDatabaseType') . '://' . $this->config->value('RootDatabaseUser') . ':' . $this->config->value('RootDatabasePassword') . '@' . $this->config->value('RootDatabaseHost') . ':' . $this->config->value('RootDatabasePort') . '/' . $this->config->value('RootDatabaseName') . '?' . 'logfile=' . $this->getHome() . 'core/log/innomatic_root_db.log';
         $this->rootDb = \Innomatic\Dataaccess\DataAccessFactory::getDataAccess(new \Innomatic\Dataaccess\DataAccessSourceName($dasnString));
         if (!$this->rootDb->connect()) {
             $this->abort('Database not connected');
         }
     }
     // *********************************************************************
     // Run time state and interface defined data
     // *********************************************************************
     // Debugger
     if ($this->state == \Innomatic\Core\InnomaticContainer::STATE_DEBUG) {
         $this->loadTimer = new \Innomatic\Debug\LoadTime(LoadTime::LOADTIME_MODE_CONTINUOUS);
         $this->loadTimer->Mark('start');
         $this->dbLoadTimer = new \Innomatic\Debug\LoadTime(LoadTime::LOADTIME_MODE_STARTSTOP);
     }
     // Security
     $securityReportsInterval = $this->config->value('SecurityReportsInterval');
     if ($securityReportsInterval > 0) {
         $lastSecurityReport = $this->config->value('SecurityLastReportTime');
         if (!$lastSecurityReport or $lastSecurityReport < time() - $securityReportsInterval * 3600 * 24) {
             $innomaticSecurity = new \Innomatic\Security\SecurityManager();
             $innomaticSecurity->sendReport();
             unset($innomaticSecurity);
         }
     }
     unset($securityReportsInterval);
     // Maintenance
     $maintenanceHandler = new \Innomatic\Maintenance\MaintenanceHandler();
     $maintenanceInterval = $maintenanceHandler->getMaintenanceInterval();
     if ($this->state != \Innomatic\Core\InnomaticContainer::STATE_MAINTENANCE and $maintenanceInterval > 0) {
         $lastMaintenance = $maintenanceHandler->getLastMaintenanceTime();
         if (!$lastMaintenance or $lastMaintenance < time() - $maintenanceInterval * 3600 * 24) {
             $innomaticMaintenance = new \Innomatic\Maintenance\MaintenanceHandler();
             $innomaticMaintenance->doMaintenance();
             $innomaticMaintenance->sendReport();
             unset($innomaticMaintenance);
         }
     }
     unset($maintenanceInterval);
     // *********************************************************************
     // Auto exec routines
     // *********************************************************************
     // Application reupdate check
     if (file_exists($this->home . 'core/temp/appinst/reupdate')) {
         $tmpmod = new \Innomatic\Application\Application($this->rootDb, '');
         $tmpmod->install($this->home . 'core/temp/appinst/reupdate');
         clearstatcache();
         if (file_exists($this->home . 'core/temp/appinst/reupdate')) {
             unlink($this->home . 'core/temp/appinst/reupdate');
         }
     }
     // Startup hook
     if ($this->state != \Innomatic\Core\InnomaticContainer::STATE_SETUP) {
         $hook = new \Innomatic\Process\Hook($this->rootDb, 'innomatic', 'instance');
         $null = '';
         switch ($hook->callHooks('startup', $null, '')) {
             case \Innomatic\Process\Hook::RESULT_ABORT:
                 $this->abort('Bootstrap aborted');
                 break;
         }
     }
     // Bootstrap end
     $this->bootstrapped = true;
 }
Пример #4
0
function main_settings($eventData)
{
    global $gXmlDefinition, $gLocale, $gPageTitle;
    $innomaticSecurity = new \Innomatic\Security\SecurityManager();
    $sessionLifeTime = $innomaticSecurity->getSessionLifetime();
    $maxWrongLogins = $innomaticSecurity->getMaxWrongLogins();
    $wrongLoginDelay = $innomaticSecurity->getWrongLoginDelay();
    $lockUnsecureWebservices = $innomaticSecurity->getUnsecureWebServicesLock();
    $onlyHttpsRoot = $innomaticSecurity->getOnlyHttpsRootAccess();
    $onlyHttpsDomain = $innomaticSecurity->getOnlyHttpsDomainAccess();
    $alertsOn = $innomaticSecurity->getAlertEvents();
    $wrongLocalRootLogin = $alertsOn['wronglocalrootlogin'] ? 'true' : 'false';
    $wrongLocalUserLogin = $alertsOn['wronglocaluserlogin'] ? 'true' : 'false';
    $wrongWebservicesLogin = $alertsOn['wrongwebserviceslogin'] ? 'true' : 'false';
    $applicationOperation = $alertsOn['applicationoperation'] ? 'true' : 'false';
    $domainApplicationOperation = $alertsOn['applicationdomainoperation'] ? 'true' : 'false';
    $domainOperation = $alertsOn['domainoperation'] ? 'true' : 'false';
    $reportsInterval = $innomaticSecurity->getReportsInterval();
    $reportsEnabled = $reportsInterval ? 'true' : 'false';
    $reportDestinationEmail = $innomaticSecurity->getReportsEmail();
    $alertDestinationEmail = $innomaticSecurity->getAlertsEmail();
    $tabs[0]['label'] = $gLocale->getStr('security_presets.tab');
    $tabs[1]['label'] = $gLocale->getStr('access_settings.tab');
    $tabs[2]['label'] = $gLocale->getStr('alerts_settings.tab');
    $tabs[3]['label'] = $gLocale->getStr('reports_settings.tab');
    $gXmlDefinition = '<tab><name>security</name>
      <args>
        <tabs type="array">' . WuiXml::encode($tabs) . '</tabs>
        <tabactionfunction>settings_tab_builder</tabactionfunction>
        <activetab>' . (isset($eventData['tab']) ? $eventData['tab'] : '') . '</activetab>
      </args>
      <children>

        <vertgroup><name></name>
          <children>

            <table><name>presets</name>
              <args>
                <headers type="array">' . WuiXml::encode(array(0 => array('label' => $gLocale->getStr('security_presets.label')))) . '</headers>
              </args>
              <children>

              <button row="0" col="0"><name>preset</name>
                <args>
                    <themeimage>unlock</themeimage>
                    <label type="encoded">' . urlencode($gLocale->getStr('level_low.label')) . '</label>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_security_preset', array('preset' => SecurityManager::PRESET_LOW))))) . '</action>
                </args>
              </button>

              <label row="0" col="1"><name>details</name>
                <args>
                  <label type="encoded">' . urlencode($gLocale->getStr('level_low.text')) . '</label>
                  <nowrap>false</nowrap>
                </args>
              </label>

              <button row="1" col="0"><name>preset</name>
                <args>
                    <themeimage>lock</themeimage>
                    <label type="encoded">' . urlencode($gLocale->getStr('level_normal.label')) . '</label>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_security_preset', array('preset' => SecurityManager::PRESET_NORMAL))))) . '</action>
                </args>
              </button>

              <label row="1" col="1"><name>details</name>
                <args>
                  <label type="encoded">' . urlencode($gLocale->getStr('level_normal.text')) . '</label>
                  <nowrap>false</nowrap>
                </args>
              </label>

              <button row="2" col="0"><name>preset</name>
                <args>
                    <themeimage>lock</themeimage>
                    <label type="encoded">' . urlencode($gLocale->getStr('level_high.label')) . '</label>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_security_preset', array('preset' => SecurityManager::PRESET_HIGH))))) . '</action>
                </args>
              </button>

              <label row="2" col="1"><name>details</name>
                <args>
                  <label type="encoded">' . urlencode($gLocale->getStr('level_high.text')) . '</label>
                  <nowrap>false</nowrap>
                </args>
              </label>

              <button row="3" col="0"><name>preset</name>
                <args>
                    <themeimage>lock</themeimage>
                    <label type="encoded">' . urlencode($gLocale->getStr('level_paranoid.label')) . '</label>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_security_preset', array('preset' => SecurityManager::PRESET_PARANOID))))) . '</action>
                </args>
              </button>

              <label row="3" col="1"><name>details</name>
                <args>
                  <label type="encoded">' . urlencode($gLocale->getStr('level_paranoid.text')) . '</label>
                  <nowrap>false</nowrap>
                </args>
              </label>

              </children>
            </table>

          </children>
        </vertgroup>

        <vertgroup><name></name>
          <children>

            <table><name>access</name>
              <args>
                <headers type="array">' . WuiXml::encode(array(0 => array('label' => $gLocale->getStr('access_settings.label')))) . '</headers>
              </args>
              <children>

                <form row="0" col="0"><name>access</name>
                  <args>
                    <method>post</method>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_access_prefs', '')))) . '</action>
                  </args>
                  <children>
                    <grid>
                      <children>

                        <label row="0" col="0"><name>sessionlifetime</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('session_lifetime.label')) . '</label>
                          </args>
                        </label>

                        <string row="0" col="1"><name>sessionlifetime</name>
                          <args>
                            <value>' . $sessionLifeTime . '</value>
                            <disp>action</disp>
                            <size>10</size>
                          </args>
                        </string>

                        <label row="1" col="0"><name>maxwronglogins</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('max_wrong_logins.label')) . '</label>
                          </args>
                        </label>

                        <string row="1" col="1"><name>maxwronglogins</name>
                          <args>
                            <value>' . $maxWrongLogins . '</value>
                            <disp>action</disp>
                            <size>4</size>
                          </args>
                        </string>

                        <label row="2" col="0"><name>wronglogindelay</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('wrong_login_delay.label')) . '</label>
                          </args>
                        </label>

                        <string row="2" col="1"><name>wronglogindelay</name>
                          <args>
                            <value>' . $wrongLoginDelay . '</value>
                            <disp>action</disp>
                            <size>3</size>
                          </args>
                        </string>

                        <label row="3" col="0"><name>lockunsecurewebservices</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('block_unsecure_webservices.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="3" col="1"><name>lockunsecurewebservices</name>
                          <args>
                            <checked>' . ($lockUnsecureWebservices ? 'true' : 'false') . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="4" col="0"><name>onlyhttpsroot</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('only_https_root.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="4" col="1"><name>onlyhttpsroot</name>
                          <args>
                            <checked>' . ($onlyHttpsRoot ? 'true' : 'false') . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="5" col="0"><name>onlyhttpsdomain</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('only_https_domain.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="5" col="1"><name>onlyhttpsdomain</name>
                          <args>
                            <checked>' . ($onlyHttpsDomain ? 'true' : 'false') . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                      </children>
                    </grid>
                  </children>
                </form>

                <button row="1" col="0"><name>apply</name>
                  <args>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <label type="encoded">' . urlencode($gLocale->getStr('apply.submit')) . '</label>
                    <themeimage>buttonok</themeimage>
                    <formsubmit>access</formsubmit>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_access_prefs', '')))) . '</action>
                  </args>
                </button>
              </children>
            </table>

          </children>
        </vertgroup>

        <vertgroup><name></name>
          <children>

            <table><name>alerts</name>
              <args>
                <headers type="array">' . WuiXml::encode(array(0 => array('label' => $gLocale->getStr('alerts_settings.label')))) . '</headers>
              </args>
              <children>

                <form row="0" col="0"><name>alerts</name>
                  <args>
                    <method>post</method>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_alerts_prefs', '')))) . '</action>
                  </args>
                  <children>
                    <grid>
                      <children>

                        <label row="0" col="0"><name>alertonevents</name>
                          <args>
                            <bold>true</bold>
                            <label type="encoded">' . urlencode($gLocale->getStr('alert_on_events.label')) . '</label>
                          </args>
                        </label>

                        <label row="1" col="0"><name>wronglocalrootlogin</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('wrong_local_root_login.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="1" col="1"><name>wronglocalrootlogin</name>
                          <args>
                            <checked>' . $wrongLocalRootLogin . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="2" col="0"><name>wronglocaluserlogin</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('wrong_local_user_login.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="2" col="1"><name>wronglocaluserlogin</name>
                          <args>
                            <checked>' . $wrongLocalUserLogin . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="3" col="0"><name>wrongwebserviceslogin</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('wrong_webservices_login.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="3" col="1"><name>wrongwebserviceslogin</name>
                          <args>
                            <checked>' . $wrongWebservicesLogin . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="4" col="0"><name>applicationoperation</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('application_operation.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="4" col="1"><name>applicationoperation</name>
                          <args>
                            <checked>' . $applicationOperation . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="5" col="0"><name>domainapplicationoperation</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('domainapplication_operation.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="5" col="1"><name>domainapplicationoperation</name>
                          <args>
                            <checked>' . $domainApplicationOperation . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="6" col="0"><name>domainoperation</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('domain_operation.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="6" col="1"><name>domainoperation</name>
                          <args>
                            <checked>' . $domainOperation . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="7" col="0"><name>alertdestinationemail</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('alert_destination_email.label')) . '</label>
                          </args>
                        </label>

                        <string row="7" col="1"><name>alertdestinationemail</name>
                          <args>
                            <value type="encoded">' . urlencode($alertDestinationEmail) . '</value>
                            <disp>action</disp>
                            <size>25</size>
                          </args>
                        </string>

                      </children>
                    </grid>
                  </children>
                </form>

                <button row="1" col="0"><name>apply</name>
                  <args>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <label type="encoded">' . urlencode($gLocale->getStr('apply.submit')) . '</label>
                    <themeimage>buttonok</themeimage>
                    <formsubmit>alerts</formsubmit>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_alerts_prefs', '')))) . '</action>
                  </args>
                </button>
              </children>
            </table>

          </children>
        </vertgroup>

        <vertgroup><name></name>
          <children>

            <table><name>alerts</name>
              <args>
                <headers type="array">' . WuiXml::encode(array(0 => array('label' => $gLocale->getStr('reports_settings.label')))) . '</headers>
              </args>
              <children>

                <form row="0" col="0"><name>alerts</name>
                  <args>
                    <method>post</method>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_reports_prefs', '')))) . '</action>
                  </args>
                  <children>
                    <grid>
                      <children>

                        <label row="0" col="0"><name>enablereports</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('enable_reports.label')) . '</label>
                          </args>
                        </label>

                        <checkbox row="0" col="1"><name>enablereports</name>
                          <args>
                            <checked>' . $reportsEnabled . '</checked>
                            <disp>action</disp>
                          </args>
                        </checkbox>

                        <label row="1" col="0"><name>reportsinterval</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('reports_interval.label')) . '</label>
                          </args>
                        </label>

                        <string row="1" col="1"><name>reportsinterval</name>
                          <args>
                            <value>' . $reportsInterval . '</value>
                            <disp>action</disp>
                            <size>3</size>
                          </args>
                        </string>

                        <label row="2" col="0"><name>reportdestinationemail</name>
                          <args>
                            <label type="encoded">' . urlencode($gLocale->getStr('report_destination_email.label')) . '</label>
                          </args>
                        </label>

                        <string row="2" col="1"><name>reportdestinationemail</name>
                          <args>
                            <value type="encoded">' . urlencode($reportDestinationEmail) . '</value>
                            <disp>action</disp>
                            <size>25</size>
                          </args>
                        </string>

                      </children>
                    </grid>
                  </children>
                </form>

                <button row="1" col="0"><name>apply</name>
                  <args>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <label type="encoded">' . urlencode($gLocale->getStr('apply.submit')) . '</label>
                    <themeimage>buttonok</themeimage>
                    <formsubmit>alerts</formsubmit>
                    <action type="encoded">' . urlencode(\Innomatic\Wui\Dispatch\WuiEventsCall::buildEventsCallString('', array(array('view', 'settings', ''), array('action', 'set_reports_prefs', '')))) . '</action>
                  </args>
                </button>
              </children>
            </table>

          </children>
        </vertgroup>

      </children>
    </tab>';
    $gPageTitle .= ' - ' . $gLocale->getStr('settings.title');
}
Пример #5
0
 public function disable($domainid)
 {
     $result = false;
     $hook = new \Innomatic\Process\Hook($this->rootda, 'innomatic', 'application.disable');
     if ($hook->callHooks('calltime', $this, array('domainserial' => $domainid, 'modserial' => $this->serial)) == \Innomatic\Process\Hook::RESULT_OK) {
         if ($this->serial) {
             // Checks if the application exists in applications table
             //
             $modquery = $this->rootda->execute('SELECT * FROM applications WHERE id=' . (int) $this->serial);
             if ($modquery->getNumberRows() == 1) {
                 $appdata = $modquery->getFields();
                 if ($appdata['onlyextension'] != $this->rootda->fmttrue) {
                     // Checks if the structure file still exists
                     //
                     if (file_exists($this->container->getHome() . 'core/applications/' . $appdata['appid'] . '/application.xml')) {
                         $this->appname = $appdata['appid'];
                         $domainquery = $this->rootda->execute('SELECT * FROM domains WHERE id=' . $this->rootda->formatText((int) $domainid));
                         $domaindata = $domainquery->getFields();
                         if ($this->container->getEdition() == \Innomatic\Core\InnomaticContainer::EDITION_MULTITENANT) {
                             $args['dbtype'] = $domaindata['dataaccesstype'];
                             $args['dbname'] = $domaindata['domaindaname'];
                             $args['dbhost'] = $domaindata['dataaccesshost'];
                             $args['dbport'] = $domaindata['dataaccessport'];
                             $args['dbuser'] = $domaindata['dataaccessuser'];
                             $args['dbpass'] = $domaindata['dataaccesspassword'];
                             $args['dblog'] = $this->container->getHome() . 'core/domains/' . $domaindata['domainid'] . '/log/dataaccess.log';
                             $dasnString = $args['dbtype'] . '://' . $args['dbuser'] . ':' . $args['dbpass'] . '@' . $args['dbhost'] . ':' . $args['dbport'] . '/' . $args['dbname'] . '?' . 'logfile=' . $args['dblog'];
                             $this->domainda = \Innomatic\Dataaccess\DataAccessFactory::getDataAccess(new \Innomatic\Dataaccess\DataAccessSourceName($dasnString));
                             $this->domainda->Connect();
                         } else {
                             $this->domainda = $this->rootda;
                         }
                         // Dependencies check
                         //
                         $this->unmetdeps = array();
                         $this->unmetsuggs = array();
                         $appdeps = new ApplicationDependencies();
                         $pendingdeps = $appdeps->checkDomainDependingApplications($this->appname, $domaindata['domainid'], false);
                         $modenabled = $appdeps->isEnabled($this->appname, $domaindata['domainid']);
                         // If dependencies are ok, go on
                         //
                         if ($pendingdeps == false and $modenabled == true) {
                             $result = $this->HandleStructure($this->container->getHome() . 'core/applications/' . $appdata['appid'] . '/application.xml', Application::INSTALL_MODE_DISABLE, $this->container->getHome() . 'core/applications/' . $appdata['appid'] . '/', $domainid);
                             $modquery = $this->rootda->execute('SELECT id FROM applications WHERE appid=' . $this->rootda->formatText($this->appname));
                             $this->rootda->execute('DELETE FROM applications_enabled WHERE applicationid=' . (int) $this->serial . ' AND domainid=' . $this->rootda->formatText($domainid));
                             $this->rootda->execute('DELETE FROM applications_options_disabled WHERE applicationid=' . (int) $this->serial . ' AND domainid=' . (int) $domainid);
                             if ($this->container->getConfig()->Value('SecurityAlertOnApplicationDomainOperation') == '1') {
                                 $innomaticSecurity = new \Innomatic\Security\SecurityManager();
                                 $innomaticSecurity->sendAlert('Application ' . $appdata['appid'] . ' has been disabled from domain ' . $domaindata['domainid']);
                                 unset($innomaticSecurity);
                             }
                             if ($hook->callHooks('applicationdisabled', $this, array('domainserial' => $domainid, 'modserial' => $this->serial)) != \Innomatic\Process\Hook::RESULT_OK) {
                                 $result = false;
                             }
                         } elseif ($modenabled == false) {
                         } else {
                             $this->unmetdeps = $pendingdeps;
                         }
                         //if ( $result == true ) $this->mLog->logEvent(
                         //    'Innomatic',
                         //    'Uninstalled application '.$this->appname,
                         //    \Innomatic\Logging\Logger::NOTICE
                         //);
                         $domainquery->free();
                     } else {
                         $log = $this->container->getLogger();
                         $log->logEvent('innomatic.applications.applications.disable', 'Structure file ' . $this->container->getHome() . 'core/applications/' . $appdata['appid'] . '/application.xml' . ' for application ' . $appdata['appid'] . ' was not found', \Innomatic\Logging\Logger::ERROR);
                     }
                 } else {
                     $log = $this->container->getLogger();
                     $log->logEvent('innomatic.applications.applications.disable', 'Tried to disable application ' . $appdata['appid'] . ', but it is an extension only application', \Innomatic\Logging\Logger::ERROR);
                 }
             } else {
                 $log = $this->container->getLogger();
                 $log->logEvent('innomatic.applications.applications.disable', 'A application with serial ' . $this->serial . ' was not found in applications table', \Innomatic\Logging\Logger::ERROR);
             }
             $modquery->free();
         } else {
             $log = $this->container->getLogger();
             $log->logEvent('innomatic.applications.applications.disable', 'Empty application serial', \Innomatic\Logging\Logger::ERROR);
         }
     }
     return $result;
 }
Пример #6
0
 public function remove()
 {
     $result = false;
     $hook = new \Innomatic\Process\Hook($this->rootda, 'innomatic', 'domain.remove');
     if ($hook->callHooks('calltime', $this, '') == \Innomatic\Process\Hook::RESULT_OK) {
         $query = $this->rootda->execute('SELECT * FROM domains WHERE id=' . (int) $this->domainserial);
         $data = $query->getFields();
         // Set the current domain object so that any component relying on
         // the InnomaticContainer current domain does not fail
         $this->container->setCurrentDomain($this);
         // Removes domain users.
         // They must be removed before disabling applications
         // and dropping the database.
         $this->removeAllUsers();
         // Disables all applications.
         $this->disableAllApplications($this->domainserial);
         if ($this->container->getEdition() == \Innomatic\Core\InnomaticContainer::EDITION_MULTITENANT) {
             $args['dbname'] = $data['domaindaname'];
             $args['dbhost'] = $data['dataaccesshost'];
             $args['dbport'] = $data['dataaccessport'];
             $args['dbuser'] = $data['dataaccessuser'];
             $args['dbpass'] = $data['domaindapass'];
             $args['dbtype'] = $data['dataaccesstype'];
             $args['dblog'] = $this->container->getHome() . 'core/domains/' . $data['domainid'] . '/log/dataaccess.log';
             $this->dataAccess->close();
             $this->dataAccess->dropDB($args);
         }
         // Removes cached items.
         $cache_gc = new \Innomatic\Datatransfer\Cache\CacheGarbageCollector();
         $cache_gc->removeDomainItems((int) $data['id']);
         // Removes domain from root database.
         $this->rootda->execute('DELETE FROM domains WHERE id=' . (int) $data['id']);
         $this->rootda->execute('DELETE FROM applications_options_disabled WHERE domainid=' . $this->domainserial);
         $log = $this->container->getLogger();
         $log->logEvent($data['domainid'], 'Removed domain ' . $data['domainid'], \Innomatic\Logging\Logger::NOTICE);
         if (!empty($data['domainid']) and !in_array($data['domainid'], $this->reservedNames)) {
             if (!\Innomatic\Security\SecurityManager::isAboveBasePath($this->container->getHome() . 'core/domains/' . $data['domainid'], $this->container->getHome() . 'core/domains/')) {
                 // Removes domain directory inside Innomatic webapp
                 \Innomatic\Io\Filesystem\DirectoryUtils::unlinkTree($this->container->getHome() . 'core/domains/' . $data['domainid']);
             }
             // Removes domain webapp
             \Innomatic\Webapp\WebAppContainer::eraseWebApp($data['domainid']);
         }
         if ($hook->callHooks('domainremoved', $this, '') == \Innomatic\Process\Hook::RESULT_OK) {
             $result = true;
         }
         // Tells the security manager that the domain has been removed.
         if ($this->container->getConfig()->Value('SecurityAlertOnDomainOperation') == '1') {
             $innomatic_security = new \Innomatic\Security\SecurityManager();
             $innomatic_security->sendAlert('Domain ' . $data['domainid'] . ' has been removed');
             unset($innomatic_security);
         }
     }
     return $result;
 }