SIU-Toba / framework

Framework para desarrollo rápido de aplicaciones web
http://toba.siu.edu.ar
21 stars 24 forks source link

Error al cargar clave de motor del archivo parameters.yml #157

Closed enfoqueNativo closed 1 year ago

enfoqueNativo commented 1 year ago

Discussed in https://github.com/SIU-Toba/framework/discussions/155

Originally posted by **tomasdelvechio** May 10, 2023 Estaba armando un deploy usando la instalación silenciosa. En un momento armo el archivo `parameters.yml` con la siguiente sección ```yaml # Ruta absoluta a los archivos con las claves en texto plano toba-archivo-clave-bd: /tmp/db1_pass toba-archivo-clave-admin: /tmp/db2_pass ``` La creación de los archivos la hago con ```bash echo "postgres" > /tmp/db1_pass echo "postgres" > /tmp/db2_pass ``` Sin embargo, me daba de forma persistente error en la contraseña de la base postgres ``` Creando base 'toba_3_3'... ERROR ejecutando SQL: [CODIGO]: 7 [SQLSTATE]: db_08006 [MENSAJE]: connection to server at "pg" (172.19.0.2), port 5432 failed: FATAL: password authentication failed for user "postgres" [SQL EJECUTADA]: ``` Del lado del server: ``` 2023-05-10 14:39:50.713 UTC [571] DETAIL: Password does not match for user "postgres". ``` Mi sorpresa fue grande cuando sin la instalación silenciosa y los mismos datos, pude crear la base sin problemas. Para probar, tiro un var_dump luego de [está linea](https://github.com/SIU-Toba/framework/blob/e7ea5a8518e853185c3656838d63bad3d0a72fad/php/consola/comandos/comando_instalacion_silenciosa.php#L384): ```php var_dump($clave); ``` Y la salida es ``` array(8) { ["motor"]=> string(9) "postgres7" ["profile"]=> string(2) "pg" ["usuario"]=> string(8) "postgres" ["clave"]=> string(9) "postgres " ["base"]=> string(9) "*********" ["puerto"]=> int(5432) ["encoding"]=> string(6) "LATIN1" ["schema"]=> string(10) "desarrollo" } ``` La clave venia con un enter. Me puse a mirar, y encontre [la siguiente linea](https://github.com/SIU-Toba/framework/blob/e7ea5a8518e853185c3656838d63bad3d0a72fad/php/consola/comandos/comando_toba.php#LL37C17-L37C34). Encontré que `file_get_contents` suele [hacer esto](https://stackoverflow.com/a/63561111). Me parece raro porque hubiera pensado que esto se está usando en un montón de lados, pero resulta que agregue rtrim a [la siguiente linea](https://github.com/SIU-Toba/framework/blob/e7ea5a8518e853185c3656838d63bad3d0a72fad/php/consola/comandos/comando_instalacion_silenciosa.php#L382) y salio andando. ```php if (! $es_invalido) { $clave = rtrim($this->recuperar_contenido_archivo($param[$ind])); } ``` No lo cargué como bug porque no se si yo estoy haciendo algo mal.