/** * Realiza la autentificacion. * @return $value Retorna TRUE o FALSE de acuerdo al estado de la autentifiacion */ static function autenticar($id_usuario, $clave, $datos_iniciales = null, $usar_log = true) { $datos_usuario = toba::instancia()->get_info_autenticacion($id_usuario); if (empty($datos_usuario)) { if ($usar_log) { toba::logger()->error("El usuario '{$id_usuario}' no existe", 'toba'); } return false; } else { //--- Autentificación $algoritmo = $datos_usuario['autentificacion']; if ($algoritmo != 'plano') { if ($algoritmo == 'md5') { $clave = hash($algoritmo, $clave); } else { $clave = encriptar_con_sal($clave, $algoritmo, $datos_usuario['clave']); } } if (!($datos_usuario['clave'] === $clave)) { if ($usar_log) { toba::logger()->error("El usuario '{$id_usuario}' ingreso una clave incorrecta", 'toba'); } return false; } } return true; }
function run(&$reporter) { $reporter->paintGroupStart($this->getLabel(), $this->getSize()); for ($i = 0, $count = count($this->_test_cases); $i < $count; $i++) { if ($this->separar_casos) { toba::logger()->debug("\n\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" . "\n%%%%%%%%%%% INICIO caso: " . $this->_test_cases[$i]->getLabel() . " %%%%%%%%%%%%%%%%%%%" . "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", 'toba'); } if (is_string($this->_test_cases[$i])) { $class = $this->_test_cases[$i]; $test = new $class(); if ($this->separar_pruebas) { $test->separar_pruebas(true); } $test->run($reporter); } else { if ($this->separar_pruebas) { $this->_test_cases[$i]->separar_pruebas(true); } $this->_test_cases[$i]->run($reporter); } if ($this->separar_casos) { toba::logger()->debug("\n\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" . "\n%%%%%%%%%%% FIN caso: " . $this->_test_cases[$i]->getLabel() . " %%%%%%%%%%%%%%%%%%%" . "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", 'toba'); } } $reporter->paintGroupEnd($this->getLabel()); return $reporter->getStatus(); }
function run() { $methods = get_class_methods(get_class($this->_test_case)); $invoker =& $this->_test_case->createInvoker(); foreach ($methods as $method) { if (!$this->_isTest($method)) { continue; } if ($this->_isConstructor($method)) { continue; } if ($this->_scorer->shouldInvoke($this->_test_case->getLabel(), $method)) { if ($this->separar_pruebas) { toba::logger()->debug("\n\n%%%%%%%%%%%--------- INICIO prueba: {$method} ---------%%%%%%%%%%%%%%%%%%%\n", 'toba'); } try { $rsp = $invoker->invoke($method); $asrt = $invoker->getTestCase()->get_assert_status(); //Recupero si el caso, usa Assert o no internamente. if (!is_null($rsp) && is_array($rsp) && !$asrt) { //En base a ello, uso o no los datos devueltos. $result = isset($rsp['resultado']) ? $rsp['resultado'] : false; $msg = $this->parsear_extra_resultado($rsp); $invoker->getTestCase()->assertTrue($result, $msg); } } catch (PHPWebDriver_WebDriverCurlException $e) { toba::logger()->debug($e->getMessage()); throw new toba_error_usuario('Inicie el servidor Selenium por favor'); } if ($this->separar_pruebas) { toba::logger()->debug("\n\n%%%%%%%%%%%--------- FIN prueba: {$method} ---------%%%%%%%%%%%%%%%%%%%", 'toba'); } } } }
function __construct($item, $usuario) { toba::cronometro()->marcar('Inicio Solicitud'); $this->item = $item; $this->usuario = $usuario; for ($a = 0; $a < count($this->info['objetos']); $a++) { $indice = $this->info['objetos'][$a]["clase"]; $this->indice_objetos[$indice][] = $a; $objetos[] = $this->info['objetos'][$a]["objeto"]; } $this->id = toba::instancia()->get_id_solicitud(); //-- Cargo los OBJETOS que se encuentran asociados $this->log = toba::logger(); //---------- LOG de SOlICITUDES -------------------- //Se debe cronometrar la pagina? if (toba::memoria()->usuario_solicita_cronometrar()) { $this->cronometrar = true; } //-- Identifico si la solicitd se deber registrar if (toba::proyecto()->get_parametro('registrar_solicitud') || $this->info['basica']['item_solic_registrar']) { $this->registrar_db = true; } //-- Hago un registro temprano del acceso por si hay algun fatal en medio de la ejecucion $this->registro_temprano(); /* //-- Observaciones automaticas? -> en espera a algun requerimiento que le de forma al esquema if( $this->info['basica']['item_solic_registrar'] && $this->info['basica']['item_solic_obs_tipo']){ $tipo = array($this->info['basica']['item_solic_obs_tipo_proyecto'],$this->info['basica']['item_solic_obs_tipo']); $this->observar($this->info['basica']['item_solic_observacion'],$tipo); }*/ }
function ejecutar(&$parametros) { $this->set_resultado(false); $this->set_mensaje('Ocurrió un error con ' . get_class($this) . ' parametros: ' . print_r($parametros, true)); toba::logger()->info('SOY ' . get_class($this) . ' !!!' . print_r($parametros, true)); return true; }
/** * Cicla por los gadgets pidiendoles que generen su HTML * @ignore */ protected function generar_html_gadgets() { toba::logger()->debug('Gadgets cargados: ' . count($this->gadgets)); foreach ($this->gadgets as $gadget) { $gadget->generar_html(); } }
/** * Agrega un mensaje a mostrar al usuario * @param string $mensaje Mensaje completo a mostrar * @param string $nivel Determina el estilo del mensaje, 'error' o 'info' */ function agregar($mensaje, $nivel = 'error', $extras = null) { if (!is_null($mensaje) && trim($mensaje) != '') { $this->mensajes[] = array($mensaje, $nivel, $extras); toba::logger()->debug("Mensaje a usuario: " . $mensaje, 'toba'); } }
private function getSalt() { switch (strtoupper($this->metodo)) { case 'BCRYPT': $str_inicial = version_compare(PHP_VERSION, '5.3.7') < 0 ? "\$2a\$" : "\$2y\$"; $salt = sprintf($str_inicial . '%02d$', $this->rounds); break; case 'SHA512': $vueltas = $this->rounds < 1000 ? $this->rounds * 1000 : $this->rounds + 5000; $salt = sprintf('$6$rounds=%d$', $this->rounds); break; case 'SHA256': $vueltas = $this->rounds < 1000 ? $this->rounds * 1000 : $this->rounds + 5000; $salt = sprintf('$5$rounds=%d$', $this->rounds); break; case 'MD5': $salt = '$1$'; default: toba::logger()->debug("Se suministro un algoritmo no esperado para el hash: {$this->metodo}"); $salt = ''; } $bytes = $this->getRandomBytes(16); $salt .= $this->encodeBytes($bytes); return $salt; }
/** * @todo Se desactiva el logger porque no corre como proyecto toba sino como el de la aplicacion * Cuando el admin sea un proyecto hay que sacar la desactivación */ function ini() { toba::logger()->desactivar(); if (!isset($this->s__opciones)) { $this->s__opciones['proyecto'] = toba_editor::get_proyecto_cargado(); $this->s__opciones['fuente'] = 'fs'; $this->s__seleccion = 'ultima'; } $this->cargar_analizador(); }
/** * Navega hacia la operación destino indicada en el vinculo * @param toba_vinculo $vinculo */ function navegar(toba_vinculo $vinculo) { $id = toba::vinculador()->registrar_vinculo($vinculo); if (isset($id)) { $accion = "vinculador.invocar('{$id}');\n"; $this->encolar($accion); } else { toba::logger()->warning("El usuario no puede acceder a la operación " . $vinculo->get_item()); } }
function set_subclase($nombre, $archivo, $pm) { $db = toba_contexto_info::get_db(); $nombre = $db->quote($nombre); $archivo = $db->quote($archivo); $pm = $db->quote($pm); $sql = "\n\t\t\tUPDATE apex_objeto_db_registros\n\t\t\tSET \n\t\t\t\tap = 0,\n\t\t\t\tap_clase = {$nombre},\n\t\t\t\tap_archivo = {$archivo},\n\t\t\t\tpunto_montaje = {$pm}\n\t\t\tWHERE\n\t\t\t\t\tobjeto_proyecto = '{$this->datos['proyecto']}'\n\t\t\t\tAND\tobjeto = '{$this->datos['objeto']}'\n\t\t"; toba::logger()->debug($sql); $db->ejecutar($sql); }
function set_subclase($nombre, $archivo, $pm) { $db = toba_contexto_info::get_db(); $proyecto = quote($this->_id['proyecto']); $nombre = quote($nombre); $archivo = quote($archivo); $pm = quote($pm); $sql = "UPDATE apex_proyecto\n\t\t\t\t\tSET contexto_ejecucion_subclase = {$nombre},\n\t\t\t\t\tcontexto_ejecucion_subclase_archivo = {$archivo},\n\t\t\t\t\tpm_contexto = {$pm}\n\t\t\t\t\tWHERE\tproyecto = {$proyecto};"; toba::logger()->debug($sql); $db->ejecutar($sql); }
function set_subclase($nombre, $archivo, $pm) { $db = toba_contexto_info::get_db(); $nombre = $db->quote($nombre); $archivo = $db->quote($archivo); $pm = $db->quote($pm); $id = $db->quote($this->_id['proyecto']); $sql = "\n\t\t\tUPDATE apex_proyecto\n\t\t\tSET\n\t\t\t\tusuario_subclase = {$nombre},\n\t\t\t\tusuario_subclase_archivo = {$archivo},\n\t\t\t\tpm_usuario = {$pm}\n\t\t\tWHERE\n\t\t\t\t\tproyecto = {$id};"; toba::logger()->debug($sql); $db->ejecutar($sql); }
function set_subclase($nombre, $archivo, $pm) { $proyecto = quote($this->_id['proyecto']); $tipo_pagina = quote($this->_id['id']); $nombre = quote($nombre); $archivo = quote($archivo); $pm = quote($pm); $sql = "UPDATE apex_pagina_tipo\n\t\t\t\t\tSET\n\t\t\t\t\t\t\tclase_nombre = {$nombre}, \n\t\t\t\t\t\t\tclase_archivo = {$archivo},\n\t\t\t\t\t\t\tpunto_montaje = {$pm}\n\t\t\t\t\tWHERE\tproyecto = {$proyecto}\n\t\t\t\t\tAND pagina_tipo = {$tipo_pagina};"; toba::logger()->debug($sql); $db->ejecutar($sql); }
function evt__formulario__alta($datos) { $t = $this->get_tabla(); $t->nueva_fila($datos); try { $t->sincronizar(); $this->resetear(); } catch (toba_error $e) { toba::notificacion()->agregar('Error insertando'); toba::logger()->error($e->getMessage()); } }
function set_subclase($nombre, $archivo, $pm) { $db = toba_contexto_info::get_db(); $nombre = $db->quote($nombre); $archivo = $db->quote($archivo); $pm = $db->quote($pm); $proyecto = $db->quote($this->_id['proyecto']); $zona = $db->quote($this->_id['id']); $sql = "\n\t\t\tUPDATE apex_item_zona\n\t\t\tSET\n\t\t\t\tarchivo = {$archivo},\n\t\t\t\tpunto_montaje = {$pm}\n\t\t\tWHERE\n\t\t\t\t\tproyecto = {$proyecto}\n\t\t\tAND zona = {$zona};"; toba::logger()->debug($sql); $db->ejecutar($sql); }
function evt__aceptar() { try { $r = $this->dep('relacion'); $r->sincronizar(); $r->resetear(); $this->controlador->set_pantalla('pant_listado'); } catch (toba_error $e) { toba::notificacion()->agregar('Error procesando'); toba::logger()->error($e->getMessage()); } }
function impr_documento($nombre = null, &$conexion) { toba::logger()->ocultar(); $this->nombre = $nombre; $this->conexion =& $conexion; $this->hoja_ancho = 210.0; $this->hoja_alto = 297.0; $this->hoja_orientacion = 'portrait'; $this->hoja_nombre = 'A4'; $this->_recuperar_configuracion(); $this->doc_pdf =& new Cezpdf($this->hoja_nombre, $this->hoja_orientacion); }
function enviar_repositorio($img) { $srv = toba::rdi()->servicio(RDITipos::FOTO); $attr = array('tipoIdentificacion' => md5($img), 'numeroIdentificacion' => rand(100, 5000), 'alto' => 500, 'ancho' => 600, 'color' => true); if (file_exists($img)) { $cont = file_get_contents($img); $ecm_resource_id = $srv->crear($attr, $cont); toba::logger()->debug("El id del ECM es" . var_export($ecm_resource_id, true)); if (!is_null($ecm_resource_id)) { $this->s__id_recurso = $ecm_resource_id; } } }
function evt__generar() { //Luego invocar los metodos que generan el certificado y la exportacion de clave publica. $proyecto = $this->get_modelo_proyecto(); if ($this->verificar_existencia_private_key($proyecto) && !$this->pisa_archivo) { throw new toba_error_usuario('El archivo ya existe, no se permitira la generación a menos que se reemplace'); } try { toba_modelo_servicio_web::generar_certificados($proyecto); } catch (toba_error_usuario $e) { toba::logger()->error($e->getMessage()); toba::notificacion()->agregar('Se ha producido un error generando el certificado, verifique los logs', 'error'); } }
function get_entidad() { //Acceso al DATOS_RELACION if ($this->cambio_objeto && !$this->falla_carga) { toba::logger()->debug($this->get_txt() . '*** se cargo la relacion: ' . $this->id_objeto['objeto']); if ($this->dependencia('datos')->cargar($this->id_objeto)) { $this->cambio_objeto = false; //Sino sigue entrando aca por cada vez que se solicita la entidad } else { toba::notificacion()->agregar('El elemento seleccionado no existe.', 'error'); $this->falla_carga = true; } } return $this->dependencia('datos'); }
function conf_evt__cuadro__crear_auditoria(toba_evento_usuario $evt, $fila) { $existe = false; try { $existe = $this->existe_auditoria($evt->get_parametros()); } catch (toba_error $e) { toba::logger()->debug($e->getMessage()); } if ($existe) { $evt->set_etiqueta('Actualizar Schema'); $evt->set_msg_ayuda('Migra el schema de auditoria tomando campos nuevos o modificados'); } else { $evt->set_etiqueta('Activar Auditoría'); $evt->set_msg_ayuda('Crea un schema paralelo con la misma estructura que el schema de datos original, conteniendo todas las modificaciones a los datos del mismo'); } }
function servicio__ejecutar() { toba::memoria()->desactivar_reciclado(); $id_nodo = toba::memoria()->get_parametro('id_nodo'); $nodo = $this->reportar_evento_interno('cargar_nodo', $id_nodo); if (isset($nodo) && $nodo !== apex_ei_evt_sin_rpta) { $html = $this->recorrer_hijos(current($nodo), 0); $html .= '[--toba--]'; $html .= toba_js::abrir(); $html .= $this->actualizar_estado_js(current($nodo)); $html .= toba_js::cerrar(); $html .= '[--toba--]'; echo $html; } else { toba::logger()->warning("toba_ei_arbol: No se pudo obtener el nodo que representa al ID {$id_nodo}"); } }
function ejecutar($id_item, $retorno_opciones_generacion = null, $con_transaccion = true) { try { abrir_transaccion(); foreach ($this->moldes as $molde) { $molde->generar(); } $this->generar_archivos_consultas(); $this->guardar_log_elementos_generados(); cerrar_transaccion(); toba::notificacion()->agregar('La generación se realizó exitosamente', 'info'); return $this->log_elementos_creados; } catch (toba_error $e) { toba::logger()->error($e); toba::notificacion()->agregar("Fallo en la generación: " . $e->getMessage(), 'error'); abortar_transaccion(); } }
function analizar_cuerpo($log) { $cuerpo = array(); $niveles = toba::logger()->get_niveles(); $texto = trim(substr($log, strpos($log, toba_logger::fin_encabezado) + strlen(toba_logger::fin_encabezado), strlen($log))); $patron = "/\\[("; $patron .= implode("|", $niveles); $patron .= ")\\]/"; $res = preg_split($patron, $texto, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); //Se mezclan el nivel y el mensaje en un arreglo for ($i = 0; $i < count($res); $i += 2) { $mensaje = $res[$i + 1]; $bracket_cierra = strpos($mensaje, ']'); $proy = substr($mensaje, 1, $bracket_cierra - 1); $mens = trim(substr($mensaje, $bracket_cierra + 1)); $cuerpo[] = array('nivel' => $res[$i], 'proyecto' => $proy, 'mensaje' => $mens); } return $cuerpo; }
function registrar_autoload() { $path_autoload = $this->get_path_autoload(); $nombre_clase = $this->get_clase_autoload(); $nombre_metodo = $this->get_metodo_autoload(); $existe_archivo = file_exists($path_autoload); if ($existe_archivo) { require_once $path_autoload; if (method_exists($nombre_clase, $nombre_metodo)) { spl_autoload_register(array($nombre_clase, $nombre_metodo)); toba::logger()->debug("PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje {$this->get_etiqueta()}"); } else { throw new toba_error("PUNTO DE MONTAJE PROYECTO: el método {$nombre_clase}::{$nombre_metodo} de autoload no existe"); } } else { throw new toba_error("PUNTO DE MONTAJE PROYECTO: no se encuentra el archivo de autoload, verifique su existencia. Path: {$path_autoload}"); // La existencia del archivo, no la de uno mismo porque es demasiado pedir al usuario (ni siquiera podemos requerir php 5.3 :p) } }
function conf__mapa(toba_ei_mapa $mapa) { $parametros = toba::db('fuente_gis')->get_parametros(); $dns_conexion = "user={$parametros['usuario']} dbname={$parametros['base']} password={$parametros['clave']} host={$parametros['profile']} port={$parametros['puerto']}"; toba::logger()->debug(" Parametros conexion: \n {$dns_conexion}"); $mapa->set_viewport('500', '500'); $mapa->set_datos('Enviado en el CONF'); //Obtengo el objeto de mapscript para setearle correctamente las direcciones de las imagenes $obj = $mapa->get_mapa(); $ruta = toba::proyecto()->get_www_temp(); $obj->web->set('imageurl', $ruta['url']); $obj->web->set('imagepath', $ruta['path']); //Obtengo los layers y ciclo para fijarle la conexion correcta de la base a modo de ejemplo $layers = $mapa->get_nombre_layers(); //Aca accedo al objeto toba_ei_mapa foreach ($layers as $nombre) { $obj->getLayerByName($nombre)->set('connection', $dns_conexion); //Aca accedo al objeto de mapscript } }
function evt__guardar() { try { $datos = $this->dep('editor')->datos('basica')->get(); // verifico que no existe el usuario en la creacion if (!$this->dep('datos')->esta_cargada() && isset($datos['usuario']) && consultas_instancia::get_existe_usuario($datos['usuario'])) { throw new toba_error('El usuario ya existe.'); } $this->dep('datos')->sincronizar(); $usuario_arai = $this->dep('editor')->get_usuario_arai(); if (isset($usuario_arai)) { gestion_arai_usuarios::sincronizar_datos($datos['usuario'], $usuario_arai); } $this->dep('datos')->resetear(); $this->set_pantalla('seleccionar'); } catch (toba_error $e) { toba::notificacion()->agregar($e->getMessage()); toba::logger()->error($e->getMessage()); } }
function actualizar_script_roles($eliminados = array()) { $usa_permisos_por_tabla = false; foreach (toba_info_editores::get_fuentes_datos($this->dep('editor_perfiles')->get_proyecto()) as $fuente) { //Miro si al menos una fuente usa permisos por tablas. $usa_permisos_por_tabla = $usa_permisos_por_tabla || $fuente['permisos_por_tabla'] == '1'; } if ($usa_permisos_por_tabla) { $modelo = toba_modelo_catalogo::instanciacion(); $modelo->set_db(toba::db()); $proyecto = $modelo->get_proyecto(toba::instancia()->get_id(), $this->s__filtro['proyecto']); $dir = $proyecto->get_dir() . '/'; try { $proyecto->crear_script_generacion_roles_db($dir, $eliminados); toba::notificacion()->agregar('Se han generado los scripts de actualización de roles de base de datos.\\n Los mismos se encuentran en el directorio raiz del proyecto, recuerde ejecutarlos', 'info'); } catch (toba_error $e) { toba::logger()->debug('Falló la generacion del script' . $e->getMessage()); toba::notificacion()->agregar('No se ha podido generar los scripts de actualización de roles de base de datos, por favor utilice el comando toba proyecto roles_script', 'error'); } } }
function run() { $methods = get_class_methods(get_class($this->_test_case)); $invoker =& $this->_test_case->createInvoker(); foreach ($methods as $method) { if (!$this->_isTest($method)) { continue; } if ($this->_isConstructor($method)) { continue; } if ($this->_scorer->shouldInvoke($this->_test_case->getLabel(), $method)) { if ($this->separar_pruebas) { toba::logger()->debug("\n\n%%%%%%%%%%%--------- INICIO prueba: {$method} ---------%%%%%%%%%%%%%%%%%%%\n", 'toba'); } $invoker->invoke($method); if ($this->separar_pruebas) { toba::logger()->debug("\n\n%%%%%%%%%%%--------- FIN prueba: {$method} ---------%%%%%%%%%%%%%%%%%%%", 'toba'); } } } }