/** * 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 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); } }
function verificar_existencia_private_key($proyecto) { return toba_modelo_servicio_web::existe_archivo_certificado($proyecto); }
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; }
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; }
/** * 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()); } }
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); } }
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; }