Пример #1
0
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     ob_start('mb_output_handler');
     MMapManager::startSession();
     MMapManager::checkSessionExpiration();
     $username = $request->issetPOST('username') ? $request->getPOST('username') : '';
     $password = $request->issetPOST('password') ? $request->getPOST('password') : '';
     $loginPage = $request->issetPOST('loginPage') ? $request->getPOST('loginPage') : '';
     $subject = new Subject();
     $loginContext = new LoginContext('eyeos-login', $subject);
     $cred = new EyeosPasswordCredential();
     $cred->setUsername($username);
     $cred->setPassword($password, true);
     $subject->getPrivateCredentials()->append($cred);
     try {
         $loginContext->login();
         $memoryManager = MemoryManager::getInstance();
         Kernel::enterSystemMode();
         $memoryManager->set('isExternLogin', 1);
         $memoryManager->set('username', $username);
         $memoryManager->set('password', $password);
         $memoryManager->set('loginPage', $loginPage);
         Kernel::exitSystemMode();
         header("Location: index.php");
     } catch (Exception $e) {
         header("Location:" . $loginPage . "?errorLogin=1");
     }
 }
 public static function close($params)
 {
     //clean the memory
     MemoryManager::getInstance()->free();
     $myProcManager = ProcManager::getInstance();
     $myProcess = $myProcManager->getCurrentProcess();
     $myProcManager->kill($myProcess);
 }
Пример #3
0
 /**
  * @throws EyeSessionExpiredException
  */
 public static function checkSessionExpiration()
 {
     Kernel::enterSystemMode();
     $regenerated = MemoryManager::getInstance()->get('regenerated', 1);
     Kernel::exitSystemMode();
     if ($regenerated == 1) {
         MemoryManager::getInstance()->reset();
         throw new EyeSessionExpiredException('Session expired.');
     }
 }
Пример #4
0
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     $oauth_verifier = null;
     $oauth_token = null;
     if ($request->issetGET('oauth_verifier')) {
         $oauth_verifier = $request->getGET('oauth_verifier');
     }
     if ($request->issetGET('oauth_token')) {
         $oauth_token = $request->getGET('oauth_token');
     }
     if ($oauth_verifier && $oauth_token) {
         $response->getHeaders()->append('Content-type: text/html');
         $body = '<html>
                         <div id="logo_eyeos" style="margin: 0 auto;width:350"> <img src="eyeos/extern/images/logo-eyeos.jpg"/></div>
                         <div style="margin: 0 auto;width:350;text-align:center"><span style="font-family:Verdana;font-size:20px;">Successful authentication.<br>Back to Eyeos.</span></div>
                  </html>';
         $response->getHeaders()->append('Content-Length: ' . strlen($body));
         $response->getHeaders()->append('Accept-Ranges: bytes');
         $response->getHeaders()->append('X-Pad: avoid browser bug');
         $response->getHeaders()->append('Cache-Control: ');
         $response->getHeaders()->append('pragma: ');
         $response->setBody($body);
         try {
             $userRoot = UMManager::getInstance()->getUserByName('root');
         } catch (EyeNoSuchUserException $e) {
             throw new EyeFailedLoginException('Unknown user root"' . '". Cannot proceed to login.', 0, $e);
         }
         $subject = new Subject();
         $loginContext = new LoginContext('eyeos-login', $subject);
         $cred = new EyeosPasswordCredential();
         $cred->setUsername('root');
         $cred->setPassword($userRoot->getPassword(), false);
         $subject->getPrivateCredentials()->append($cred);
         $loginContext->login();
         Kernel::enterSystemMode();
         $appProcess = new Process('stacksync');
         $appProcess->setPid('31338');
         $mem = MemoryManager::getInstance();
         $processTable = $mem->get('processTable', array());
         $processTable[31338] = $appProcess;
         $mem->set('processTable', $processTable);
         $appProcess->setLoginContext($loginContext);
         ProcManager::getInstance()->setCurrentProcess($appProcess);
         kernel::exitSystemMode();
         $token = new stdClass();
         $token->oauth_verifier = $oauth_verifier;
         $token->oauth_token = $oauth_token;
         $group = UMManager::getInstance()->getGroupByName('users');
         $users = UMManager::getInstance()->getAllUsersFromGroup($group);
         foreach ($users as $user) {
             $NetSyncMessage = new NetSyncMessage('cloud', 'token', $user->getId(), $token);
             NetSyncController::getInstance()->send($NetSyncMessage);
         }
     }
 }
Пример #5
0
 public static function __run(AppExecutionContext $context, MMapResponse $response)
 {
     $myMemoryManager = MemoryManager::getInstance();
     Kernel::enterSystemMode();
     $isExternLogin = $myMemoryManager->get('isExternLogin');
     $loginPage = $myMemoryManager->get('loginPage');
     Kernel::exitSystemMode();
     $context->getArgs()->append($isExternLogin);
     if ($isExternLogin) {
         $context->getArgs()->append($loginPage);
     }
 }
Пример #6
0
 public function testProcessRequest()
 {
     $memoryManager = MemoryManager::getInstance();
     $myProcManager = ProcManager::getInstance();
     //insert application 'system'
     $_GET['getApplication'] = 'system';
     $_GET['checknum'] = $myProcManager->getCurrentProcess()->getChecknum();
     $this->myMMapManager->processRequest(new Request());
     $procs = $myProcManager->getProcessesList();
     $appWorking = false;
     foreach ($procs as $value) {
         if ($value == 'system') {
             $appWorking = true;
         }
     }
     $this->assertEquals(true, $appWorking);
 }
Пример #7
0
 public function processRequest(MMapRequest $request, MMapResponse $response)
 {
     ob_start('mb_output_handler');
     $return = null;
     $dataManager = DataManager::getInstance();
     $POST = $request->getPOST();
     $params = array();
     if (isset($POST['params'])) {
         $params = $dataManager->doInput($POST['params']);
     } else {
         if ($request->issetGET('params')) {
             $params = $request->getGET('params');
         }
     }
     //login in the system and get a valid login context
     $subject = new Subject();
     $loginContext = new LoginContext('eyeos-login', $subject);
     $cred = new EyeosPasswordCredential();
     $cred->setUsername($_REQUEST['username']);
     $cred->setPassword($_REQUEST['password'], true);
     $subject->getPrivateCredentials()->append($cred);
     $loginContext->login();
     //now create fake process called api
     Kernel::enterSystemMode();
     $appProcess = new Process('api');
     $appProcess->setPid('31337');
     $mem = MemoryManager::getInstance();
     $processTable = $mem->get('processTable', array());
     $processTable[31337] = $appProcess;
     $mem->set('processTable', $processTable);
     $appProcess->setLoginContext($loginContext);
     ProcManager::getInstance()->setCurrentProcess($appProcess);
     kernel::exitSystemMode();
     $return = call_user_func_array(array('EyeosApplicationExecutable', '__callModule'), array($request->getPOST('module'), $request->getPOST('name'), $params));
     //try to force mime type. If there is a previous mime type defined at application level
     //this have no effect
     if (!headers_sent()) {
         $response->getHeaders()->append('Content-type:text/plain');
     }
     if ($response->getBodyRenderer() === null && $response->getBody() == '') {
         $response->setBodyRenderer(new DataManagerBodyRenderer($return));
     }
 }
Пример #8
0
 public static function __run(AppExecutionContext $context, MMapResponse $response)
 {
     $memoryManager = MemoryManager::getInstance();
     Kernel::enterSystemMode();
     $isExternLogin = $memoryManager->get('isExternLogin');
     Kernel::exitSystemMode();
     $list = new ArrayList();
     $list->append($isExternLogin);
     if ($isExternLogin) {
         Kernel::enterSystemMode();
         $username = $memoryManager->get('username');
         $password = $memoryManager->get('password');
         Kernel::exitSystemMode();
         $list->append($username);
         $list->append($password);
     }
     $context->setArgs($list);
     $response->appendToBody('eyeos.isRegisterActive=' . self::isRegisterActive() . ';');
 }
Пример #9
0
define('EYEOS_TESTS_TMP_PATH', EYE_ROOT_TESTS_PATH . '/' . EYEOS_TESTS_TMP_DIR);
define('EYEOS_DOC_PATH', EYE_ROOT . '/../doc');
//##### redefined constants from settings.php (see commented lines) #####
define('USERS_PATH', EYE_ROOT_TESTS_PATH . '/' . USERS_DIR);
define('WORKGROUPS_PATH', EYE_ROOT_TESTS_PATH . '/' . WORKGROUPS_DIR);
define('SYSTEM_CONF_PATH', EYE_ROOT_TESTS_PATH . '/' . SYSTEM_DIR . '/' . SYSTEM_CONF_DIR);
define('SYSTEM_SKEL_PATH', EYE_ROOT . '/' . SYSTEM_DIR . '/' . SYSTEM_CONF_DIR . '/' . SYSTEM_SKEL_DIR);
require_once 'settings.php';
//##### redefined constants from settings.php (see commented lines) #####
define('SERVICE_SECURITY_CONFIGURATION_PATH', EYE_ROOT . '/' . SYSTEM_DIR . '/' . SYSTEM_CONF_DIR . '/' . SERVICES_DIR . '/' . SERVICE_SECURITY_DIR);
define('SERVICE_SECURITY_POLICYCONFIGURATIONS_DEFAULTCONF_PATH', SERVICE_SECURITY_CONFIGURATION_PATH . '/SecurityManager.xml');
//initialize the system
require_once './' . SYSTEM_DIR . '/' . BOOT_DIR . '/Bootstrap.php';
//startup
Bootstrap::init();
MemoryManager::getInstance()->reset();
//setting error reporting to E_ALL (yes, even notices, because we should be able to avoid them too!)
error_reporting(E_ALL);
register_shutdown_function('__shutdown_test');
//register some "constants" that will be used by various tests
$GLOBALS['eyeos_UnitTests'] = array('initGroupNames' => array('root', 'admin', 'um', 'users', 'vfs', 'lfs', 'rfs', 'mnt', 'sys', 'wg', 'wg-managers', 'exec'), 'initUserNames' => array('root', 'john', '_register'));
try {
    __start_test();
} catch (Exception $e) {
    echo 'Uncaught exception while initializing unit tests! Aborting.' . "\n";
    ExceptionStackUtil::printStackTrace($e, false);
    exit;
}
function __start_test()
{
    $dbh = StorageManager::getInstance()->getHandler(SQL_DAOHANDLER);
Пример #10
0
 public function testGetInstance()
 {
     $instance = MemoryManager::getInstance();
     $this->assertEquals(DEFAULT_MEMORYMANAGER, get_class($instance));
 }
Пример #11
0
 public static function getDocument($params)
 {
     $instance = MemoryManager::getInstance();
     $plist = $instance->get('playList');
     $filepath = $plist[$params];
     $info = utf8_pathinfo($filepath);
     //TODO: maybe fsi has better things than pathinfo
     if (strtolower($info['extension']) == 'odt' || strtolower($info['extension']) == 'doc' || strtolower($info['extension']) == 'xls' || strtolower($info['extension']) == 'ods') {
         $myConverter = new Converter();
         $path = $myConverter->Convert($filepath, 'HTML (StarWriter)');
         $md5 = utf8_basename($path);
         if (!$path || !file_exists($path)) {
             return array($filepath, 'Unable to convert office file, maybe this system does not have office support installed?');
         }
         //TODO: we are having problems with FSI and hidden folders
         $data = file_get_contents($path);
         $data = str_replace('<IMG SRC="', '<IMG SRC="index.php/externMsg/' . ProcManager::getInstance()->getCurrentProcess()->getChecknum() . '/viewTempImg/', $data);
         return array($filepath, $data);
     }
     $myFile = FSI::getFile($filepath);
     $data = $myFile->getContents();
     return array($filepath, $data);
 }
Пример #12
0
 public static function fileExport(array $params)
 {
     $destinationFile = $params[0];
     $originalFile = $params[1];
     $format = $params[2];
     if ($format == 'PDF') {
         $extension = 'pdf';
         $format = 'writer_pdf_Export';
     } elseif ($format == 'Doc') {
         $extension = 'doc';
         $format = 'MS Word 97';
     } elseif ($format == 'Open Office') {
         $extension = 'odt';
         $format = 'writer8';
     } elseif ($format == 'HTML') {
         $extension = 'html';
         $format = 'HTML (StarWriter)';
     } elseif ($format == 'RTF') {
         $extension = 'rtf';
         $format = 'Rich Text Format';
     } elseif ($format == 'TXT') {
         $extension = 'txt';
         $format = 'Text (encoded)';
     }
     $destinationFile .= '.' . $extension;
     $file = FSI::getFile($originalFile);
     $memory = MemoryManager::getInstance();
     $file->checkReadPermission();
     $to = 'home:///';
     //then, check the destination file
     $myFileDest = FSI::getFile($to);
     $myFileDest->checkWritePermission();
     $myRealFile = $myFileDest->getRealFile();
     $partName = '.office/' . uniqid(time()) . '_conversion/';
     $fileNameDestination = AdvancedPathLib::getPhpLocalHackPath($myRealFile->getPath()) . '/' . $partName;
     mkdir($fileNameDestination);
     $myRealFile = $file->getRealFile();
     $originalFile = AdvancedPathLib::getPhpLocalHackPath($myRealFile->getPath());
     $cmd = 'unzip  -d ' . escapeshellarg($fileNameDestination) . ' ' . escapeshellarg($originalFile);
     shell_exec($cmd);
     $myConverter = new Converter();
     $fileName = $myConverter->Convert($to . $partName . '/document.html', $format);
     shell_exec('rm -rf ' . escapeshellarg($fileNameDestination));
     if (!file_exists($fileName)) {
         return false;
     }
     $content = file_get_contents($fileName);
     $newFile = FSI::getFile($destinationFile);
     $newFile->createNewFile(true);
     $newFile->putContents($content);
     return $destinationFile;
 }
Пример #13
0
 /**
  * Protected constructor to avoid external instanstation outside of the kernel singleton.
  * 
  */
 protected function __construct()
 {
     $this->logger = Logger::getLogger('system.services.Proc.ProcManager');
     $this->memoryManager = MemoryManager::getInstance();
     $this->listeners = new ArrayList();
 }