/**
  * 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;
 }
Ejemplo n.º 2
0
 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
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 /**
  * 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;
 }
Ejemplo n.º 5
0
 /**
  * @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;
 }
Ejemplo n.º 6
0
 function conf__seleccion_usuario($componente)
 {
     $componente->set_datos(toba_instancia::get_lista_usuarios());
 }
Ejemplo n.º 7
0
 private function __construct()
 {
     $this->id_instancia = toba::instancia()->get_id();
     $datos = toba_instancia::get_datos_instancia($this->id_instancia);
     $this->base = $datos['base'];
 }
Ejemplo n.º 8
0
 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;
 }
Ejemplo n.º 9
0
 /**
  * Retorna el objeto que contiene información de la instancia toba actual
  * @return toba_instancia
  */
 static function instancia()
 {
     return toba_instancia::instancia();
 }
Ejemplo n.º 10
0
 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');
 }
Ejemplo n.º 11
0
 /**
  * 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;
 }