Beispiel #1
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;
 }