summaryrefslogtreecommitdiffstats
path: root/application/modules/ipxe/controllers/AuthController.php
diff options
context:
space:
mode:
authorSebastian Schmelzer2012-01-11 14:36:35 +0100
committerSebastian Schmelzer2012-01-11 14:36:35 +0100
commitfca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e (patch)
tree6e6aaf749f34db8c7c7153c23ef85c57187430bb /application/modules/ipxe/controllers/AuthController.php
parentAPI: mit addBootos kann man nun auch editieren (diff)
downloadpbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.gz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.tar.xz
pbs2-fca04a6dab252eb9e8c0a92ce3b7e14b32e68d1e.zip
format source files
Diffstat (limited to 'application/modules/ipxe/controllers/AuthController.php')
-rw-r--r--application/modules/ipxe/controllers/AuthController.php425
1 files changed, 210 insertions, 215 deletions
diff --git a/application/modules/ipxe/controllers/AuthController.php b/application/modules/ipxe/controllers/AuthController.php
index e6f1336..b59c146 100644
--- a/application/modules/ipxe/controllers/AuthController.php
+++ b/application/modules/ipxe/controllers/AuthController.php
@@ -1,218 +1,213 @@
-<?php
+<? php
/*
* Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
- * This program is free software distributed under the GPL version 2.
- * See http://gpl.openslx.org/
- *
- * If you have any feedback please consult http://feedback.openslx.org/ and
- * send your suggestions, praise, or complaints to feedback@openslx.org
- *
- * General information about OpenSLX can be found at http://openslx.org/
- */
-
-class Ipxe_AuthController extends Zend_Controller_Action
-{
- protected $session;
- protected $sessionMapper;
- protected $error;
-
- public function init()
- {
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
- $this->db = Zend_Db_Table::getDefaultAdapter();
-
- $this->session = new Application_Model_Session();
- $this->sessionMapper = new Application_Model_SessionMapper();
-
- $alphaID = $this->_request->getParam('alpha');
-
- if(isset($alphaID)){
- $alphasessionID = $alphaID;
- $result = $this->sessionMapper->findBy(array('alphasessionID' => $alphasessionID),true);
- if(isset($result)){
- $this->session = $this->session->setOptions($result[0]);
- $this->session->setID($result[0]['sessionID']);
- }else{
- $this->error = "session";
- }
- }
- }
-
- public function serialAction()
- {
- $serialnumber = $this->_request->getParam('serialnumber');
- $mac = $this->_request->getParam('mac');
-
- if(isset($serialnumber)){
- // Create a session
- $n = new Pbs_Session();
-
- $bootisomapper = new Application_Model_BootIsoMapper();
- $bootiso = new Application_Model_BootIso();
-
- $results = $bootisomapper->findBy(array('serialnumber' => $serialnumber),true);
-
- if(isset($results)){
- $bootiso->setOptions($results[0]);
- $bootiso->setID($results[0]['bootisoID']);
- $groupID = $bootiso->getGroupID();
-
- $client = new Application_Model_Client();
- $client->setGroupID($groupID);
- $client->setMacadress($mac);
- $client->setCreated(time());
- $client = $n->createClient($client);
- $clientID = $client->getID();
-
- $this->session->setBootisoID($bootiso->getID());
- $this->session->setClientID($clientID);
- $this->session->setTime(time());
- $this->session->setIp($_SERVER['REMOTE_ADDR']);
- $this->session = $n->createSession($this->session);
- }else{
- $this->error = "serial";
- }
- }
- else{
- $this->error = "serial";
- }
-
- header('Content-Type: text/plain');
-
- $result = "#!ipxe\n";
- if(isset($this->session)){
- $result .= "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
- $result .= ":start\n";
- $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 \${filename}\n";
- $result .= "goto start\n";
- }else{
- $result .= "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/serialnumber/$serialnumber/mac/$mac/error/$this->error\n";
- }
- header("Content-Length: ".(strlen($result)));
- echo $result;
-
- }
-
- public function loginAction()
- {
- $alpha = $this->_request->getParam('alpha');
- $login = $this->_request->getParam('login');
-
- if (isset($login)){
- header('Content-Type: text/plain');
- $result = "#!ipxe\n";
- $result .= "clear username\n";
- $result .= "clear password\n";
- $result .= "login\n";
- $result .= "isset \${username} || set username null\n";
- $result .= "chain http://\${username:uristring}:\${password:uristring}@".$_SERVER['HTTP_HOST']."/ipxe/auth/login/alpha/".$alpha."\n";
- header("Content-Length: ".(strlen($result)));
- echo $result;
- exit;
- }
-
- if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])){
- header('WWW-Authenticate: Basic realm=""');
- header('HTTP/1.0 401 Unauthorized');
- $result = "#!ipxe\n";
- $result .= "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/login\n";
- header("Content-Length: ".(strlen($result)));
- echo $result;
- exit;
- }
-
- $email = $_SERVER['PHP_AUTH_USER'];
- $password = $_SERVER['PHP_AUTH_PW'];
-
- $auth = Zend_Auth::getInstance();
- $adapter = new Zend_Auth_Adapter_DbTable($this->db, 'pbs_person', 'email', 'password', 'MD5(CONCAT(?, password_salt))');
- $adapter->setIdentity($email);
- $adapter->setCredential($password);
-
- $result = $auth->authenticate($adapter);
-
- if (isset($this->session)){
- if ($result->isValid()) {
-
- $personmapper = new Application_Model_PersonMapper();
- $result = $personmapper->findBy(array('email' => Zend_Auth::getInstance()->getIdentity()),true);
- $person = new Application_Model_Person($result[0]);
- $person->setID($result[0]['personID']);
- $date = new DateTime();
- $person->setLogindate($date->getTimestamp());
- $personmapper->save($person);
-
- $this->session->setPersonID($person->getID());
- $this->sessionMapper->save($this->session);
-
- } else {
- $this->error = "login";
- }
- }else{
- $this->error = "session";
- }
-
-
- header('Content-Type: text/plain');
- $result = "#!ipxe\n";
- $result .= "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
- header("Content-Length: ".(strlen($result)));
- echo $result;
- exit;
-
-
-
- }
-
- public function logoutAction(){
-
- $alpha = $this->_request->getParam('alpha');
-
- if (isset($this->session)){
- $this->session->setPersonID(null);
- $this->session->setMembershipID(null);
- $this->sessionMapper->save($this->session);
- }else{
- $this->error = "session";
- }
-
- $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
-
- }
-
- public function switchgroupAction(){
-
- $alpha = $this->_request->getParam('alpha');
-
- if (isset($this->session)){
- $this->session->setMembershipID(null);
- $this->sessionMapper->save($this->session);
- }else{
- $this->error = "session";
- }
-
- $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
- }
-
- public function setgroupAction(){
-
- $alpha = $this->_request->getParam('alpha');
- $membershipID = $this->_request->getParam('membershipid');
-
- //TODO test if member of group
- if (isset($this->session)){
- $this->session->setMembershipID($membershipID);
- $this->sessionMapper->save($this->session);
- }else{
- $this->error = "session";
- }
-
- $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
- }
-
-
-
-
-
+* This program is free software distributed under the GPL version 2.
+* See http://gpl.openslx.org/
+*
+* If you have any feedback please consult http://feedback.openslx.org/ and
+* send your suggestions, praise, or complaints to feedback@openslx.org
+*
+* General information about OpenSLX can be found at http://openslx.org/
+*/
+
+class Ipxe_AuthController extends Zend_Controller_Action {
+ protected $session;
+ protected $sessionMapper;
+ protected $error;
+
+ public function init() {
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+ $this->db = Zend_Db_Table::getDefaultAdapter();
+
+ $this->session = new Application_Model_Session();
+ $this->sessionMapper = new Application_Model_SessionMapper();
+
+ $alphaID = $this->_request->getParam('alpha');
+
+ if(isset($alphaID)) {
+ $alphasessionID = $alphaID;
+ $result = $this->sessionMapper->findBy(array('alphasessionID' => $alphasessionID), true);
+ if(isset($result)) {
+ $this->session = $this->session->setOptions($result[0]);
+ $this->session->setID($result[0]['sessionID']);
+ } else {
+ $this->error = "session";
+ }
+ }
+ }
+
+ public function serialAction() {
+ $serialnumber = $this->_request->getParam('serialnumber');
+ $mac = $this->_request->getParam('mac');
+
+ if(isset($serialnumber)) {
+ // Create a session
+ $n = new Pbs_Session();
+
+ $bootisomapper = new Application_Model_BootIsoMapper();
+ $bootiso = new Application_Model_BootIso();
+
+ $results = $bootisomapper->findBy(array('serialnumber' => $serialnumber), true);
+
+ if(isset($results)) {
+ $bootiso->setOptions($results[0]);
+ $bootiso->setID($results[0]['bootisoID']);
+ $groupID = $bootiso->getGroupID();
+
+ $client = new Application_Model_Client();
+ $client->setGroupID($groupID);
+ $client->setMacadress($mac);
+ $client->setCreated(time());
+ $client = $n->createClient($client);
+ $clientID = $client->getID();
+
+ $this->session->setBootisoID($bootiso->getID());
+ $this->session->setClientID($clientID);
+ $this->session->setTime(time());
+ $this->session->setIp($_SERVER['REMOTE_ADDR']);
+ $this->session = $n->createSession($this->session);
+ } else {
+ $this->error = "serial";
+ }
+ } else {
+ $this->error = "serial";
+ }
+
+ header('Content-Type: text/plain');
+
+ $result = "#!ipxe\n";
+ if(isset($this->session)) {
+ $result . = "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
+ $result . = ":start\n";
+ $result . = "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 \${filename}\n";
+ $result . = "goto start\n";
+ } else {
+ $result . = "chain http://".$_SERVER['HTTP_HOST']."/ipxe/vesamenu.c32 http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/serialnumber/$serialnumber/mac/$mac/error/$this->error\n";
+ }
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+
+ }
+
+ public function loginAction() {
+ $alpha = $this->_request->getParam('alpha');
+ $login = $this->_request->getParam('login');
+
+ if (isset($login)) {
+ header('Content-Type: text/plain');
+ $result = "#!ipxe\n";
+ $result . = "clear username\n";
+ $result . = "clear password\n";
+ $result . = "login\n";
+ $result . = "isset \${username} || set username null\n";
+ $result . = "chain http://\${username:uristring}:\${password:uristring}@".$_SERVER['HTTP_HOST']."/ipxe/auth/login/alpha/".$alpha."\n";
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+ exit;
+ }
+
+ if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
+ header('WWW-Authenticate: Basic realm=""');
+ header('HTTP/1.0 401 Unauthorized');
+ $result = "#!ipxe\n";
+ $result . = "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/login\n";
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+ exit;
+ }
+
+ $email = $_SERVER['PHP_AUTH_USER'];
+ $password = $_SERVER['PHP_AUTH_PW'];
+
+ $auth = Zend_Auth::getInstance();
+ $adapter = new Zend_Auth_Adapter_DbTable($this->db, 'pbs_person', 'email', 'password', 'MD5(CONCAT(?, password_salt))');
+ $adapter->setIdentity($email);
+ $adapter->setCredential($password);
+
+ $result = $auth->authenticate($adapter);
+
+ if (isset($this->session)) {
+ if ($result->isValid()) {
+
+ $personmapper = new Application_Model_PersonMapper();
+ $result = $personmapper->findBy(array('email' => Zend_Auth::getInstance()->getIdentity()), true);
+ $person = new Application_Model_Person($result[0]);
+ $person->setID($result[0]['personID']);
+ $date = new DateTime();
+ $person->setLogindate($date->getTimestamp());
+ $personmapper->save($person);
+
+ $this->session->setPersonID($person->getID());
+ $this->sessionMapper->save($this->session);
+
+ } else {
+ $this->error = "login";
+ }
+ } else {
+ $this->error = "session";
+ }
+
+
+ header('Content-Type: text/plain');
+ $result = "#!ipxe\n";
+ $result . = "set filename http://".$_SERVER['HTTP_HOST']."/ipxe/resource/getvesamenuconfig/alpha/".$this->session->getAlphasessionID()."/error/".$this->error."\n";
+ header("Content-Length: ".(strlen($result)));
+ echo $result;
+ exit;
+
+
+
+ }
+
+ public function logoutAction() {
+
+ $alpha = $this->_request->getParam('alpha');
+
+ if (isset($this->session)) {
+ $this->session->setPersonID(null);
+ $this->session->setMembershipID(null);
+ $this->sessionMapper->save($this->session);
+ } else {
+ $this->error = "session";
+ }
+
+ $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
+
+ }
+
+ public function switchgroupAction() {
+
+ $alpha = $this->_request->getParam('alpha');
+
+ if (isset($this->session)) {
+ $this->session->setMembershipID(null);
+ $this->sessionMapper->save($this->session);
+ } else {
+ $this->error = "session";
+ }
+
+ $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
+ }
+
+ public function setgroupAction() {
+
+ $alpha = $this->_request->getParam('alpha');
+ $membershipID = $this->_request->getParam('membershipid');
+
+ //TODO test if member of group
+ if (isset($this->session)) {
+ $this->session->setMembershipID($membershipID);
+ $this->sessionMapper->save($this->session);
+ } else {
+ $this->error = "session";
+ }
+
+ $this->_redirect('/ipxe/resource/getvesamenuconfig/alpha/'.$alpha.'/error/'.$this->error);
+ }
+
+
+
+
+
}