/** * Devuelve un objeto WSF con la configuracion de certificados ssl existente o null * @param string $proyecto * @param string $servicio * @throws toba_error * @return WSSecurityToken */ static function get_ws_token($proyecto, $servicio) { $security_token = null; self::get_modelo_proyecto($proyecto); $ini_conf = toba_modelo_servicio_web::get_ini_cliente(self::$modelo_proyecto, $servicio); $directorio = toba_instancia::instancia()->get_path_instalacion_proyecto($proyecto) . "/servicios_cli/{$servicio}"; //Directorio perteneciente al servicio //Busco los datos para los certificados en el archivo perteneciente al servicio if (!is_null($ini_conf) && $ini_conf->existe_entrada('certificado')) { chdir($directorio); $config = $ini_conf->get_datos_entrada('certificado'); //Cargo las claves y armo el objeto WSF if (!file_exists($config['clave_cliente'])) { throw new toba_error("El archivo " . $config['clave_cliente'] . " no existe"); } $clave_cliente = ws_get_key_from_file($config['clave_cliente']); if (!file_exists($config['cert_cliente'])) { throw new toba_error("El archivo " . $config['cert_cliente'] . " no existe"); } $cert_cliente = ws_get_cert_from_file($config['cert_cliente']); if (!file_exists($config['cert_servidor'])) { throw new toba_error("El archivo " . $config['cert_servidor'] . " no existe"); } $cert_server = ws_get_cert_from_file($config['cert_servidor']); $security_token = new WSSecurityToken(array("privateKey" => $clave_cliente, "receiverCertificate" => $cert_server, "certificate" => $cert_cliente)); } return $security_token; }
protected static function get_instancia() { if (PHP_SAPI != 'cli') { return toba::instancia(); } return toba_modelo_catalogo::instanciacion()->get_instancia(toba_instancia::get_id()); //Por si en algun momento se llega a usar desde el modelo }
function directorio_logs() { if (!isset($this->dir_logs)) { $id_instancia = toba_instancia::get_id(); $this->dir_logs = toba_nucleo::toba_instalacion_dir() . "/i__{$id_instancia}/p__{$this->proyecto_actual}/logs/web_services"; } return $this->dir_logs; }
/** * Retorna el id de la instancia actual * La configuracion puede estar cono variable de entorno del servidor o una constante del PA */ static function get_id() { if (!isset(self::$id)) { // var_dump($_SERVER); if (defined('apex_pa_instancia')) { self::$id = apex_pa_instancia; } elseif (isset($_SERVER['TOBA_INSTANCIA'])) { self::$id = $_SERVER['TOBA_INSTANCIA']; // } elseif (isset($_SERVER['toba_instancia'])) { // self::$id = $_SERVER['toba_instancia']; } else { throw new toba_error("INFO_INSTANCIA: La INSTANCIA ACTUAL no se encuentra definida (no existe la variable de entorno TOBA_INSTANCIA ni la constante 'apex_pa_instancia')"); } } return self::$id; }
/** * @ignore Metodo interno que llama la solicitud web para obtener las configuraciones del servicio */ public static function _get_opciones($id, $clase) { $seguro = false; self::cargar_ini($id); $directorio = toba_instancia::get_path_instalacion_proyecto(toba::proyecto()->get_id()) . "/servicios_serv/{$id}"; if (isset(self::$ini)) { chdir($directorio); if (self::$ini->existe_entrada('conexion')) { self::$opciones = self::$ini->get_datos_entrada('conexion'); } if (self::$ini->existe_entrada('certificado')) { $seguridad = array("sign" => true, "encrypt" => true, "algorithmSuite" => "Basic256Rsa15", "securityTokenReference" => "IssuerSerial"); $policy = new WSPolicy(array("security" => $seguridad)); //Agrego los certificados manualmente if (!file_exists(self::$ini->get("certificado", "clave_servidor"))) { throw new toba_error("El archivo " . self::$ini->get("certificado", "clave_servidor") . " no existe"); } $clave_privada = ws_get_cert_from_file(self::$ini->get("certificado", "clave_servidor")); if (!file_exists(self::$ini->get("certificado", "cert_servidor"))) { throw new toba_error("El archivo " . self::$ini->get("certificado", "cert_servidor") . " no existe"); } $certificado_servidor = ws_get_cert_from_file(self::$ini->get("certificado", "cert_servidor")); $certificados = array("privateKey" => $clave_privada, "certificate" => $certificado_servidor); $security = new WSSecurityToken($certificados); self::$opciones['policy'] = $policy; self::$opciones['securityToken'] = $security; $seguro = true; } //Averiguo los IDs de firmas definidos foreach (self::$ini->get_entradas() as $entrada => $valores) { if (strpos($entrada, '=')) { if (file_exists($valores['archivo'])) { $pares = array(); foreach (explode(",", $entrada) as $par) { list($clave, $valor) = explode('=', trim($par)); $pares[$clave] = $valor; } self::agregar_mapeo_firmas(realpath($valores['archivo']), $pares, $valores['fingerprint']); } else { throw new toba_error("El archivo {$valores['archivo']} no existe"); } } } } self::$opciones = array_merge(self::$opciones, call_user_func(array($clase, 'get_opciones'))); return self::$opciones; }
function conf__seleccion_usuario($componente) { $componente->set_datos(toba_instancia::get_lista_usuarios()); }
private function __construct() { $this->id_instancia = toba::instancia()->get_id(); $datos = toba_instancia::get_datos_instancia($this->id_instancia); $this->base = $datos['base']; }
function proyectos_accesibles() { $proyectos_acc = toba_instancia::instancia()->get_proyectos_accesibles(); foreach ($proyectos_acc as $key => $proyecto) { if ($proyecto[0] == toba_editor::get_proyecto_cargado()) { unset($proyectos_acc[$key]); break; } } return $proyectos_acc; }
/** * Retorna el objeto que contiene información de la instancia toba actual * @return toba_instancia */ static function instancia() { return toba_instancia::instancia(); }
function borrar_segmento_instancia() { unset($_SESSION[TOBA_DIR]['instancias'][$this->instancia]); toba_instancia::eliminar_instancia(); toba::logger()->debug('BORRAR segmento memoria INSTANCIA: ' . $this->instancia, 'toba'); }
/** * Retorna la base de datos de la instancia a la que pertenece este proyecto * @return toba_db */ function cargar_info_basica($proyecto = null) { $proyecto = isset($proyecto) ? $proyecto : $this->id; if (toba::nucleo()->utilizar_metadatos_compilados($proyecto)) { $rs = $this->recuperar_datos_compilados('toba_mc_gene__basicos', 'info_basica'); } else { $rs = toba_proyecto_db::cargar_info_basica($proyecto); } if (!$rs) { throw new toba_error("El proyecto '" . $proyecto . "' no se encuentra cargado en la instancia " . toba_instancia::get_id()); } return $rs; }