예제 #1
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);
         }
     }
 }
예제 #2
0
    public function processRequest(MMapRequest $request, MMapResponse $response)
    {
        ob_start("ob_gzhandler");
        // header
        $expires = 60 * 60 * 24 * 90;
        $response->getHeaders()->append("Pragma: public");
        $response->getHeaders()->append("Cache-Control: max-age=" . $expires . ", must-revalidate");
        $response->getHeaders()->append('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
        if (SYSTEM_TYPE == 'release') {
            $eyeosjs = file_get_contents('extern/js/eyeos.compressed.js');
            if (!file_exists(SERVICE_MMAP_PATH . '/cache/basesystem.cache')) {
                $fileInputStreams = array();
                foreach (self::$scripts as &$scriptPath) {
                    $fileInputStreams[] = new FileInputStream($scriptPath);
                }
                $data = "";
                foreach ($fileInputStreams as $file) {
                    $reader = new BasicInputStreamReader($file);
                    $data .= $reader->readAll();
                }
                file_put_contents(SERVICE_MMAP_PATH . '/cache/basesystem.cache', JSMin::minify($data));
            }
        }
        $body = '<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<link rel="icon" type="image/png" href="index.php?extern=images/favicon.png" />
		<script type="text/javascript"';
        if (SYSTEM_TYPE == 'release') {
            $body .= '>' . $eyeosjs;
        } else {
            $body .= ' src="index.php?extern=js/eyeos.js">';
        }
        $body .= '</script>
		<script type="text/javascript">
		' . file_get_contents('extern/js/qx.js') . '
		</script>
		';
        if (SYSTEM_TYPE == 'release') {
            $body .= '<script>' . file_get_contents(SERVICE_MMAP_PATH . '/cache/basesystem.cache') . '</script>';
        } else {
            foreach (self::$scripts as $script) {
                $body .= '<script type="text/javascript" src="eyeos/';
                $body .= $script;
                $body .= '"></script>' . "\n";
            }
        }
        $body .= '<script src="eyeos/extern/js/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js"></script>

		<script type="text/javascript">
			if (document.addEventListener) {
				document.addEventListener("DOMContentLoaded", eyeos.bootstrap, false);
			} else if (document.attachEvent) {
				document.attachEvent("onreadystatechange", function () {
					if (document.readyState == "complete") {
						eyeos.bootstrap();
					}
				});
			} else {
				window.onload = eyeos.bootstrap;
			}
		</script>
		<title>Welcome to eyeOS ' . EYE_VERSION . '</title>
	</head>
	<body></body>
</html>';
        $response->setBody($body);
    }
예제 #3
0
    public function processRequest(MMapRequest $request, MMapResponse $response)
    {
        ob_start("ob_gzhandler");
        define('EYEOS_MOBILE', true);
        // header
        $expires = 60 * 60 * 24 * 90;
        $response->getHeaders()->append("Pragma: public");
        $response->getHeaders()->append("Cache-Control: max-age=" . $expires . ", must-revalidate");
        $response->getHeaders()->append('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
        $body = '
			<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
			<html>
			  <head>
				<title>eyeOS mobile version</title>
				<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
        foreach (self::$scripts as $script) {
            $body .= '<script type="text/javascript" src="eyeos/';
            $body .= $script;
            $body .= '"></script>' . "\n";
        }
        $body .= '<!-- Load jquery -->
				<script src="index.php?extern=js/jquery/jquery-1.5.1.min.js"></script>

				<!-- Load json support -->
				<script src="index.php?extern=js/jquery/lib/json/jquery.json-2.2.min.js"></script>
				
				<!-- Load eyeosmobile-->
				<script type="text/javascript" src="index.php?extern=js/eyeosmobile/eyeosmobile.js"></script>

				<!-- When jquery.mobile starts, we can call init method -->
				<script>
					$(document).bind("mobileinit", function () {
						eyeosmobile.start();
					});
					$invisibleBlockClicks = $(\'<div id="invisibleBlockClicks" style="background: rgba(0, 0, 0, 0.6);position: absolute;top: 0px;left: 0px;min-width: 100%;display: none;"></div>\');
					$invisibleBlockClicks.bind(\'touchstart touchmove\', function(e) {
						e.preventDefault();
						e.stopPropagation();
						return false;
					});
				</script>

				<!-- Load jquery mobile library, for testing not minified code-->
				<!-- <link rel="stylesheet" href="eyeos/extern/js/jquery/lib/jquerymobile/jquery.mobile-1.0a3.css" /> -->
				<!-- <script src="index.php?extern=js/jquery/lib/jquerymobile/jquery.mobile-1.0a3.js"></script> -->
				
				<link rel="stylesheet" href="eyeos/extern/js/jquery/lib/jquerymobile/jquery.mobile-1.0a3.min.css" />
				<script src="index.php?extern=js/jquery/lib/jquerymobile/jquery.mobile-1.0a3.min.js"></script>

				<link rel="icon" type="image/png" href="index.php?extern=images/favicon.png" />
				<link rel="apple-touch-icon" href="index.php?extern=images/touch-icon.png" />
			  </head>
			  <body>
				<div data-role="page" id="main">
					<div data-role="content"></div>
				</div>
			  </body>
			</html>';
        $response->setBody($body);
    }