/**
  * 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;
 }
示例#2
0
 protected static function cargar_ini($id)
 {
     if (!isset(self::$ini)) {
         $modelo = toba_modelo_catalogo::instanciacion();
         $modelo->set_db(toba::db());
         $proyecto = $modelo->get_proyecto(toba::instancia()->get_id(), toba::proyecto()->get_id());
         self::$ini = toba_modelo_servicio_web::get_ini_server($proyecto, $id);
     }
 }
示例#3
0
 function verificar_existencia_private_key($proyecto)
 {
     return toba_modelo_servicio_web::existe_archivo_certificado($proyecto);
 }
示例#4
0
 function desactivar_servicios_web()
 {
     $desactivados = array();
     $servicios = $this->get_servicios_web_ofrecidos();
     foreach ($servicios as $serv) {
         if (!toba_modelo_servicio_web::esta_activo($this, $serv['servicio_web'])) {
             //Esto en realidad verifica si existe o no la configuracion
             toba_modelo_servicio_web::set_estado_activacion($this, $serv['servicio_web'], 0);
             //Explicito la desactivacion
             $desactivados[] = $serv['servicio_web'];
         }
     }
     return $desactivados;
 }
示例#5
0
 function complementar_datos($datos)
 {
     $conf_final = array();
     $proyecto = $this->get_modelo_proyecto();
     $clave_privada = 'No hay archivo para la clave privada del proyecto';
     if (toba_modelo_servicio_web::existe_archivo_certificado($proyecto)) {
         $clave_privada = toba_modelo_servicio_web::path_clave_privada($proyecto);
     }
     //Tengo que agarrar los archivos ini de configuracion.
     foreach ($datos as $dato) {
         $id_servicio = $dato['servicio_web'];
         $conf_inicial = toba_modelo_servicio_web::get_ini_cliente($proyecto, $id_servicio);
         //Intento obtener la info del archivo de configuracion
         if ($conf_inicial->existe_entrada('conexion')) {
             $to = $conf_inicial->get('conexion', 'to');
             $conf_final[$id_servicio] = array_merge($dato, array('param_to' => $to, 'link_to' => "<a href='{$to}'> {$to} </a>"));
         } else {
             $conf_final[$id_servicio] = $dato;
         }
         if ($conf_inicial->existe_entrada('certificado', 'cert_servidor')) {
             $conf_final[$id_servicio]['cert_file'] = basename($conf_inicial->get('certificado', 'cert_servidor'));
         }
         $conf_final[$id_servicio]['clave_privada'] = $clave_privada;
     }
     return $conf_final;
 }
示例#6
0
 /**
  *  Genera o configura los archivos de certificados necesario para seguridad a nivel capa de transporte
  *       Opcional: -r Reemplaza los certificados actuales
  *      
  */
 function opcion__generar_cert()
 {
     $parametros = $this->get_parametros();
     //Creo el directorio para el servicio web
     $proyecto = $this->get_proyecto();
     $dir_instalacion = $proyecto->get_dir_instalacion_proyecto();
     if (toba_modelo_servicio_web::existe_archivo_certificado($proyecto) && !isset($parametros['-r'])) {
         $this->consola->error("Ya existe la clave privada del proyecto en '{$dir_instalacion}/privada.key'. Para sobreescribirla indique el parametro -r");
         die;
     }
     try {
         toba_modelo_servicio_web::generar_certificados($proyecto, $dir_instalacion);
         $this->consola->mensaje("Ok. Certificado publico generado en:");
         $this->consola->mensaje("{$dir_instalacion}/publica.crt");
     } catch (toba_error_usuario $e) {
         $this->consola->mensaje('Se ha producido un error durante el proceso', true);
         $this->consola->error($e->getMessage());
     }
 }
示例#7
0
 function eliminar_config()
 {
     if (isset($this->s__conf_activa)) {
         //Si existe la entrada editada, entonces leo sus datos y la elimino
         $proyecto = $this->get_modelo_proyecto();
         $ini = toba_modelo_servicio_web::get_ini_server($proyecto, $this->s__seleccionado);
         $ini->existe_entrada($this->s__conf_activa);
         $ini->eliminar_entrada($this->s__conf_activa);
         $ini->guardar();
         unset($this->s__conf_activa);
         unset($this->s__conf_disponibles);
     }
 }
示例#8
0
 function get_servicio_web($proyecto, $identificador, $manejador_interface = null)
 {
     $servicio = new toba_modelo_servicio_web($proyecto, $identificador);
     if (!isset($manejador_interface)) {
         $manejador_interface = new toba_mock_proceso_gui();
     }
     $servicio->set_manejador_interface($manejador_interface);
     return $servicio;
 }