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; }
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'); }
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; }
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; }