summaryrefslogtreecommitdiffstats
path: root/admin/WebConsole/validacion
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2012-11-06 12:56:20 +0000
committerramon <ramongomez@us.es>2012-11-06 12:56:20 +0000
commitdf440ce7a78ba6bbe51008980d39c105147d2f56 (patch)
treeaae2557ef7fb8366a5af94cf1959f7a87abef3bd /admin/WebConsole/validacion
parente79394ebd9a818eaee87169576c821451ff81206 (diff)
Versión 1.0.5, #453: Integrar código del ticket:453, autenticación para acceso a clientes.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3397 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'admin/WebConsole/validacion')
-rw-r--r--admin/WebConsole/validacion/access_controller.php93
-rw-r--r--admin/WebConsole/validacion/functions.php175
-rw-r--r--admin/WebConsole/validacion/html/close.php5
-rw-r--r--admin/WebConsole/validacion/html/images/opengnsys.pngbin0 -> 7003 bytes
-rw-r--r--admin/WebConsole/validacion/html/login_prueba.php102
-rw-r--r--admin/WebConsole/validacion/html/validacion_ldap.php75
-rw-r--r--admin/WebConsole/validacion/html/validacion_prueba.php24
-rw-r--r--admin/WebConsole/validacion/html/validacion_template.php20
8 files changed, 494 insertions, 0 deletions
diff --git a/admin/WebConsole/validacion/access_controller.php b/admin/WebConsole/validacion/access_controller.php
new file mode 100644
index 00000000..05e31875
--- /dev/null
+++ b/admin/WebConsole/validacion/access_controller.php
@@ -0,0 +1,93 @@
+<?php
+/** Universidad de Huelva
+ Fichero para validacion de usuarios antes del menu
+ Es necesario crear la variable de sesion $validated y asignar true o false dependiendo del caso
+
+**/
+include_once("functions.php");
+
+
+$action=(isset($_POST["action"]))?$_POST["action"]:$action;
+
+
+
+if($action == "checkValidation"){
+ $idordenador;
+ $nombreordenador;
+ $ip = TomaIP();
+ $validacion;
+ $paginalogin;
+ $paginavalidacion;
+
+ // Carga la configuracion del ordenador
+ $cmd=CreaComando($cadenaconexion); // Crea objeto comando
+ if (!$cmd)
+ Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
+
+ $resul=TomaPropiedades($cmd);
+ if (!$resul)
+ Header('Location: '.$pagerror.'?herror=3'); // Error de recuperación de datos.
+ // Registramos las variables en sesion
+ $_SESSION["validacion"] = $validacion;
+ $_SESSION["paginalogin"] = $paginalogin;
+ $_SESSION["paginavalidacion"] = $paginavalidacion;
+}
+else{
+ // Cogemos las variables de sesion
+ $validacion = $_SESSION["validacion"];
+ $paginalogin = $_SESSION["paginalogin"];
+ $paginavalidacion = $_SESSION["paginavalidacion"];
+
+}
+
+
+/**/
+// Solo se usa si se requiere validacion
+if($_SESSION["validacion"] == true && isset($paginavalidacion) && $paginavalidacion != "")
+ include_once($paginavalidacion);
+
+
+switch($action){
+ case "checkValidation":
+ // Comprobamos si es necesaria la validacion
+ if($validacion == 1){
+ $action="Login";
+ // Comprobamos si es necesaria la validacion, y llamamos a synchronize
+ // La funcion synchronize se usa por si hace falta sincronizar alguna base de datos externa a opengnsys
+ // Es obligatoria en el fichero de validacion, pero puede no hacer nada
+ synchronize($validacion);
+ }
+ else{
+ $action="default";
+ }
+ include("access_controller.php");
+
+ break;
+ case "Login":
+ include($paginalogin);
+ break;
+ case "validate":
+ if(!isset($_SESSION)){
+ session_start();
+ }
+ // en la pagina "paginavalidacion" debe existir la funcion validate($_POST) forzosamente
+ $_SESSION["validated"]=validate($_POST);
+ if($_SESSION["validated"] == true){
+ include("../varios/menucliente.php");
+ }
+ else{
+ $_error="Usuario no v&aacute;lido";
+ include($paginalogin);
+ }
+ break;
+ default:
+ if(!isset($_SESSION)){
+ session_start();
+ }
+ $_SESSION["validated"]=true;
+ include("menucliente.php");
+}
+/**/
+
+?>
+
diff --git a/admin/WebConsole/validacion/functions.php b/admin/WebConsole/validacion/functions.php
new file mode 100644
index 00000000..c605c9eb
--- /dev/null
+++ b/admin/WebConsole/validacion/functions.php
@@ -0,0 +1,175 @@
+<?php
+include_once("../includes/ctrlacc.php");
+include_once("../clases/AdoPhp.php");
+include_once("../includes/TomaDato.php");
+include_once("../includes/CreaComando.php");
+include_once("../idiomas/php/".$idioma."/menucliente_".$idioma.".php");
+//___________________________________________________________________________________________________
+//
+// Redupera la ip del cliente web
+//___________________________________________________________________________________________________
+function TomaIP(){
+ // Se asegura que la pagina se solicita desde la IP que viene
+ global $HTTP_SERVER_VARS;
+ if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != "")
+ $ipcliente = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
+ else
+ $ipcliente = $HTTP_SERVER_VARS["REMOTE_ADDR"];
+ if (empty ($ipcliente))
+ $ipcliente = $_SERVER["REMOTE_ADDR"];
+ return($ipcliente);
+}
+/**/
+
+function TomaPropiedades($cmd){
+ global $idordenador;
+ global $nombreordenador;
+ global $ip;
+ global $validacion;
+ global $paginalogin;
+ global $paginavalidacion;
+
+
+ $rs=new Recordset;
+ $cmd->texto="SELECT * FROM ordenadores WHERE ip='".$ip."'";
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return(false); // Error al abrir recordset
+ $rs->Primero();
+ if (!$rs->EOF){
+ $nombreordenador=$rs->campos["nombreordenador"];
+ $ip=$rs->campos["ip"];
+ $validacion=$rs->campos["validacion"];
+ $paginalogin=$rs->campos["paginalogin"];
+ $paginavalidacion=$rs->campos["paginavalidacion"];
+ $rs->Cerrar();
+ return(true);
+ }
+ else
+ return(false);
+
+ return true;
+}
+
+//
+// Recupera Men
+//___________________________________________________________________________________________________
+function RecuperaMenu($cmd,$iph){
+ $rs=new Recordset;
+ $cmd->texto="SELECT menus.idcentro,menus.resolucion,menus.titulo,menus.idurlimg,menus.coorx,menus.coory,
+ menus.modalidad,menus.scoorx,menus.scoory,menus.smodalidad,menus.htmlmenupub,menus.htmlmenupri,
+ acciones_menus.tipoaccion,acciones_menus.idaccionmenu,acciones_menus.idtipoaccion,
+ acciones_menus.tipoitem,acciones_menus.descripitem,iconos.urlicono
+ FROM ordenadores
+ INNER JOIN menus ON menus.idmenu = ordenadores.idmenu
+ LEFT OUTER JOIN acciones_menus ON acciones_menus.idmenu = menus.idmenu
+ LEFT OUTER JOIN iconos ON iconos.idicono=acciones_menus.idurlimg
+ WHERE ordenadores.ip='".$iph."' ORDER by acciones_menus.orden";
+
+ $rs->Comando=&$cmd;
+ $resul=$rs->Abrir();
+ if (!$rs->Abrir()) return(false);
+ if ($rs->EOF) return(false);
+ return($rs);
+}
+//___________________________________________________________________________________________________
+//
+// Muestra el menu pblico
+//___________________________________________________________________________________________________
+function GeneraMenu($rs,$tipo,$iph){
+ global $ITEMS_PUBLICOS;
+ global $ITEMS_PRIVADOS;
+ global $UrlPaginaIconos;
+
+ $titulo=$rs->campos["titulo"];
+ $coorx=$rs->campos["coorx"];
+ $coory=$rs->campos["coory"];
+ $modalidad=$rs->campos["modalidad"];
+ $scoorx=$rs->campos["scoorx"];
+ $scoory=$rs->campos["scoory"];
+ $smodalidad=$rs->campos["smodalidad"];
+ $scoory=$rs->campos["scoory"];
+ $resolucion=$rs->campos["resolucion"];
+ $htmlmenupub=$rs->campos["htmlmenupub"];
+ $htmlmenupri=$rs->campos["htmlmenupri"];
+
+ if($tipo==$ITEMS_PRIVADOS)
+ $mod=$smodalidad;
+ else
+ $mod=$modalidad;
+ $codeHTML="";
+
+ // Genera HTML de la p�ina en funci� de las propiedades del Men del clioente
+ //$codeHTML.='<DIV style="POSITION:absolute;TOP:'.$coory."px;LEFT:".$coorx.'px">';
+ $codeHTML.='<P align=center>';
+ $codeHTML.='<SPAN style="COLOR: #999999;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE: 20px;"><U>'.$titulo.'</U></SPAN>';
+ $codeHTML.='</BR>';
+
+ $codeHTML.='<TABLE cellspacing=4 cellpadding=0 align="center" border=0 >';
+ $codeHTML.='<TR>';
+ $codeHTML.='<TD colspan="'.(($mod*2)+1).'" >&nbsp;</TD>';
+ $codeHTML.='</TR>';
+ $codeHTML.='<TR>';
+
+ $c=0; // Contador de columnas
+
+ while (!$rs->EOF){ // Recorre acciones del menu
+ $tipoitem=$rs->campos["tipoitem"];
+ if($tipoitem==$tipo){
+ $tipoaccion=$rs->campos["tipoaccion"];
+ $idtipoaccion=$rs->campos["idtipoaccion"];
+ $idaccionmenu=$rs->campos["idaccionmenu"];
+ $descripitem=$rs->campos["descripitem"];
+ $urlicono=$rs->campos["urlicono"];
+ if(empty($urlicono))
+ $urlicono="defaultitem.gif";
+
+ $codeHTML.='<TD align=center>
+ <A href="ejecutaritem.php?iph='.$iph.'&idt='.$idaccionmenu.'">
+ <IMG border=0 src="http://'.$UrlPaginaIconos.'/'.$urlicono.'" width=64></A></TD>';
+ $codeHTML.='<TD style="font-family:Arial;color: #a71026;FONT-SIZE:14">
+ <A style="text-decoration:none" href="ejecutaritem.php?iph='.$iph.'&idt='.$idaccionmenu.'">
+ <span style="FONT-FAMILY: Verdana,Arial, Helvetica, sans-serif;FONT-SIZE: 12px;COLOR:#999999">'.$descripitem.'</span></A></TD>';
+ if($mod>1){
+ //separación de columnas
+ $codeHTML.='<TD width=10>&nbsp;</TD>';
+ }
+ $c++;
+ if($c%$mod==0){
+ $codeHTML.='</TR>';
+ $codeHTML.='<TR>';
+ }
+ }
+ $rs->Siguiente();
+ }
+ $codeHTML.='</TR>';
+ $rs->Cerrar();
+ $codeHTML.='</TABLE>';
+ $codeHTML.='</P>';
+ $codeHTML.='<BR><BR>';
+ $codeHTML.='<P align=center>';
+
+ switch($tipo){
+ case $ITEMS_PUBLICOS:
+ $url.='acceso_operador.php';
+ $lit="Administrar";
+ break;
+ case $ITEMS_PRIVADOS:
+ $url.='menucliente.php';
+ $lit="Volver";
+ break;
+ }
+ $codeHTML.='<A style="text-decoration:none" href="'.$url.'?iph='.$iph.'">';
+ $codeHTML.='<SPAN style="
+ BORDER-BOTTOM: #999999 1px solid;
+ BORDER-LEFT: #999999 1px solid;
+ BORDER-RIGHT: #999999 1px solid;
+ BORDER-TOP: #999999 1px solid;
+ COLOR:#999999;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:9px;">&nbsp;'.$lit.'&nbsp;</SPAN></A>';
+
+ $codeHTML.='</P>';
+ //$codeHTML.='</DIV>';
+ return($codeHTML);
+}
+
+?>
+
diff --git a/admin/WebConsole/validacion/html/close.php b/admin/WebConsole/validacion/html/close.php
new file mode 100644
index 00000000..11a3c2e8
--- /dev/null
+++ b/admin/WebConsole/validacion/html/close.php
@@ -0,0 +1,5 @@
+<?
+session_start();
+$_SESSION["validated"] = false;
+?>
+
diff --git a/admin/WebConsole/validacion/html/images/opengnsys.png b/admin/WebConsole/validacion/html/images/opengnsys.png
new file mode 100644
index 00000000..72e5df72
--- /dev/null
+++ b/admin/WebConsole/validacion/html/images/opengnsys.png
Binary files differ
diff --git a/admin/WebConsole/validacion/html/login_prueba.php b/admin/WebConsole/validacion/html/login_prueba.php
new file mode 100644
index 00000000..78b3c5ae
--- /dev/null
+++ b/admin/WebConsole/validacion/html/login_prueba.php
@@ -0,0 +1,102 @@
+<?
+$path_parts = pathinfo(__FILE__);
+?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>OpenGnSys :::: Inicio de equipo - Men de opciones</title>
+<style>
+ body {
+ margin:0;
+ padding:0;
+ background-color:#FFFFFF;
+}
+#contenedor{
+ position:absolute;
+ /*width:1270px;
+ height:1014px;
+ */
+ margin:0;
+ padding:0;
+/*
+ left: 50%;
+ top: 50%;
+ margin-top: -512px;
+ margin-left: -640px;
+*/
+ overflow:hidden;
+}
+.boton{
+ margin:0 0 0 40px;
+}
+#form1{
+ margin:120px 0 0 200px;
+}
+img {
+ vertical-align:middle;
+}
+a:link, a:visited { text-decoration: none; color:#ffffff; }
+a:hover, a:active { color:#ffff00; }
+/*#menu{
+ width:800px;
+ height:600px;
+
+}*/
+h1{
+ margin:120px auto 0px auto;
+ padding:0;
+ width:624px;
+ height:0px;
+ /*background:url(../menus/imagenes/titulo.png);*/
+}
+
+.tituloElementoLista {
+ padding:0 0 0 10px;
+}
+.descripcionElementoLista {
+ color:#acd6ff;
+ position:absolute;
+ left:360px;
+ padding-top:15px;
+}
+</style>
+
+</head>
+
+<body>
+ <div id="contenedor" style="margin: 10px 300px 15px 300px">
+ <div align="center">
+ <h1>
+ <div style="float:left">
+ <img src="../validacion/html/images/opengnsys.png" />
+ </div>
+ Validaci&oacute;n de usuario</h1>
+ </div>
+ <div id="menu" style="margin: 0px auto 0px auto">
+ <h1></h1>
+ <form id="form1" name="form1" method="post" action="../validacion/access_controller.php">
+ <div>
+ usuario:
+ </div>
+ <div>
+ <input type="text" name="login" id="login">
+ </div>
+ <br />
+ <div>
+ password:
+ </div>
+ <div>
+ <input type="password" name="password" id="password">
+ </div>
+ <br />
+ <p><span class="boton"><input type="submit" name="access_button" id="access_button" value="Acceder" /></span></p>
+ <input name="action" type="hidden" value="validate" />
+ </form>
+ <span class="descripcionElementoLista"><?php if(isset($_error)) echo $_error; ?></span>
+ </div>
+ </div>
+</body>
+</html>
+
diff --git a/admin/WebConsole/validacion/html/validacion_ldap.php b/admin/WebConsole/validacion/html/validacion_ldap.php
new file mode 100644
index 00000000..992bca05
--- /dev/null
+++ b/admin/WebConsole/validacion/html/validacion_ldap.php
@@ -0,0 +1,75 @@
+<?
+
+function connect_to_ldap(){
+ $server = "IP_SERVIDOR";
+ $port = '389';
+ $user = "USUARIO";
+ $pass = "PASSWORD";
+
+ $result = null;
+ $ds=ldap_connect($server,$port);
+ if ($ds){
+ if ($r=@ldap_bind($ds,$user,$pass))
+ $result = $ds;
+ }
+ return $result;
+}
+
+function validate_user($user,$password){
+ if (($user=='') || ($password=='')){
+ $result['validation'] = -1;
+ }else{
+ if($ds = connect_to_ldap()){
+ $dc = "dc=uhu, dc=es";
+ $search = "uid=".$user;
+ $sr=@ldap_search($ds,$dc,$search);
+ $info = @ldap_get_entries($ds, $sr);
+
+ if ($info["count"]==1){
+ $thedata = $info[0]["dn"];
+ if ($r=@ldap_bind($ds,$thedata,$password)){
+ $result['validation'] = 1;
+ // A parte de la validacion, se podrían coger otros datos...
+ /*
+ $result['name'] = $info[0]["cn"][0];
+ $result['dni'] = $info[0]["uhuuserdni"][0];
+ $result['email'] = $info[0]["mail"][0];
+ */
+ }
+ else{
+ $result['validation'] = -1;
+ }
+ }
+ else{
+ $result['validation'] = -1;
+ }
+ }
+ ldap_close($ds);
+ }
+ return $result;
+}
+
+/**
+ * Sincroniza una base de datos externa con la de opengnsys.
+ * No es necesaria su implementacion, puede dejarse en blanco
+ */
+function synchronize($validation){
+
+}
+
+
+/**
+ * Funcion de validacion para el cliente opengnsys.
+ * Recibe como parametros la variable $_POST proveniente de la pagina de login
+ * debe devolver true o false
+ */
+function validate($VARS){
+ $result=false;
+ $validationInfo = validate_user($VARS["login"], $VARS["password"]);
+ if($validationInfo["validation"] == 1){
+ $result = true;
+ }
+ return $result;
+}
+
+?>
diff --git a/admin/WebConsole/validacion/html/validacion_prueba.php b/admin/WebConsole/validacion/html/validacion_prueba.php
new file mode 100644
index 00000000..35c6c033
--- /dev/null
+++ b/admin/WebConsole/validacion/html/validacion_prueba.php
@@ -0,0 +1,24 @@
+<?
+/**
+ * Sincroniza una base de datos externa con la de opengnsys.
+ * No es necesaria su implementacion, puede dejarse en blanco
+ */
+function synchronize($validation){
+
+}
+
+
+/**
+ * Funcion de validacion para el cliente opengnsys.
+ * Recibe como parametros la variable $_POST proveniente de la pagina de login
+ * debe devolver true o false
+ */
+function validate($VARS){
+ $result = false;
+ if($VARS["login"] == "usuprueba" && $VARS["password"] == "prueba"){
+ $result = true;
+ }
+ return $result;
+}
+
+?>
diff --git a/admin/WebConsole/validacion/html/validacion_template.php b/admin/WebConsole/validacion/html/validacion_template.php
new file mode 100644
index 00000000..77672a91
--- /dev/null
+++ b/admin/WebConsole/validacion/html/validacion_template.php
@@ -0,0 +1,20 @@
+<?
+/**
+ * Sincroniza una base de datos externa con la de opengnsys.
+ * No es necesaria su implementacion, puede dejarse en blanco
+ */
+function synchronize($validation){
+
+}
+
+
+/**
+ * Funcion de validacion para el cliente opengnsys.
+ * Recibe como parametros la variable $_POST proveniente de la pagina de login
+ * debe devolver true o false
+ */
+function validate($VARS){
+ return true;
+}
+
+?>