diff --git a/docker-compose.yml b/docker-compose.yml old mode 100644 new mode 100755 index 3a2ef87..6e3c586 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,53 +1,44 @@ services: postgres: - image: bitnami/postgresql:11 + image: postgres:11.6 container_name: preinscripcion_postgres environment: - POSTGRESQL_DATABASE: preinscripcion - POSTGRESQL_USERNAME: postgres - POSTGRESQL_PASSWORD: postgres123 - POSTGRESQL_ENCODING: LATIN1 - POSTGRESQL_LC_COLLATE: C - POSTGRESQL_LC_CTYPE: C + POSTGRES_DB: preinscripcion + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres123 + # Solo se aplican si el volumen está vacío (primera vez) + POSTGRES_INITDB_ARGS: "--encoding=LATIN1 --locale=C --lc-collate=C --lc-ctype=C" volumes: - - postgres_data:/var/lib/postgresql/data + - ./postgres_data:/var/lib/postgresql/data - ./BD/creacion/creacion_preinscripcion3_postgresql.sql:/docker-entrypoint-initdb.d/01-creacion.sql - ./docker/init-db.sql:/docker-entrypoint-initdb.d/02-init.sql ports: - - "5432:5432" - networks: - - preinscripcion_network + - "7011:5432" restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} || exit 1"] + interval: 5s + timeout: 3s + retries: 20 web: build: . container_name: preinscripcion_web depends_on: - - postgres + postgres: + condition: service_healthy ports: - - "8080:80" + - "7003:80" volumes: - .:/var/www/html - ./instalacion/config.php:/var/www/html/instalacion/config.php - ./instalacion/alias.conf:/var/www/html/instalacion/alias.conf - ./instalacion/login.php:/var/www/html/instalacion/login.php - - apache_logs:/var/log/apache2 + - ./apache_logs:/var/log/apache2 environment: - DB_HOST=postgres - DB_PORT=5432 - - DB_NAME=preinscripcion + - DB_NAME=postgres - DB_USER=postgres - DB_PASSWORD=postgres123 - networks: - - preinscripcion_network restart: unless-stopped - -volumes: - postgres_data: - driver: local - apache_logs: - driver: local - -networks: - preinscripcion_network: - driver: bridge diff --git a/docker/init.sh b/docker/init.sh old mode 100644 new mode 100755 index 02aaa14..7eaadd8 --- a/docker/init.sh +++ b/docker/init.sh @@ -3,35 +3,27 @@ set -e echo "Iniciando Preinscripción..." -# Esperar a que PostgreSQL esté disponible +# Esperar a que PostgreSQL esté disponible (sin nc) echo "Esperando a que PostgreSQL esté disponible..." -while ! nc -z postgres 5432; do +until (echo > /dev/tcp/${DB_HOST:-postgres}/${DB_PORT:-5432}) >/dev/null 2>&1; do sleep 1 done echo "PostgreSQL está disponible" -# Configurar permisos +# Permisos chown -R www-data:www-data /var/www/html chmod -R 755 /var/www/html +mkdir -p /var/www/html/instalacion/{temp,log,cache} +chown -R www-data:www-data /var/www/html/instalacion/{temp,log,cache} +chmod -R 777 /var/www/html/instalacion/{temp,log,cache} -# Asegurar que los directorios de cache, log y temp existan y tengan permisos correctos -mkdir -p /var/www/html/instalacion/temp -mkdir -p /var/www/html/instalacion/log -mkdir -p /var/www/html/instalacion/cache -chown -R www-data:www-data /var/www/html/instalacion/temp -chown -R www-data:www-data /var/www/html/instalacion/log -chown -R www-data:www-data /var/www/html/instalacion/cache -chmod -R 777 /var/www/html/instalacion/temp -chmod -R 777 /var/www/html/instalacion/log -chmod -R 777 /var/www/html/instalacion/cache - -# Compilar recursos si estamos en producción +# Compilar recursos si aplica if [ "$ENVIRONMENT" = "production" ]; then - echo "Compilando recursos para producción..." - cd /var/www/html - if [ -f "bin/preinscripcion" ]; then - ./bin/preinscripcion compilar_recursos - fi + echo "Compilando recursos para producción..." + cd /var/www/html + if [ -f "bin/preinscripcion" ]; then + ./bin/preinscripcion compilar_recursos || true + fi fi echo "Iniciando Apache..." diff --git a/instalacion/alias.conf b/instalacion/alias.conf old mode 100644 new mode 100755 index a23c9c6..b73c267 --- a/instalacion/alias.conf +++ b/instalacion/alias.conf @@ -1,65 +1,36 @@ -# Configuración de alias para Docker - SIU-Preinscripción -# Este archivo define los puntos de acceso del sistema +# Alias dentro del contenedor +Alias /preinscripcion/ /var/www/html/src/siu/www/ +Alias /preinscripcion_admin/ /var/www/html/src/siu/www/ -# Alias del punto de acceso de ALUMNOS -Alias /preinscripcion/ c:\xampp74\htdocs\preinsc_colegio\src\siu\www\ - -# Alias del punto de acceso ADMINISTRADOR -Alias /preinscripcion_admin/ c:\xampp74\htdocs\preinsc_colegio\src\siu\www\ - -# Configuración del directorio navegable - - Options FollowSymLinks + + Options FollowSymLinks DirectoryIndex index.php - - Order allow,deny - Allow from all - - - Require all granted - - include c:\xampp74\htdocs\preinsc_colegio\instalacion\rewrite.conf + Require all granted + IncludeOptional /var/www/html/instalacion/rewrite.conf -#### CONFIGURACION DE ACCESO DEFAULT - - - # -------------------------------------------------------------------------- - # PUNTO DE ACCESO: alumnos de la instalación del punto de acceso default - # -------------------------------------------------------------------------- - - # Nombre o ID del Punto de Acceso. No utilizar espacios. - SetEnv ID_PTO_ACCESO colegio +# --- Inyección robusta de variables por Request_URI --- +# Alumno +SetEnvIfNoCase Request_URI "^/preinscripcion(/|$)" ID_PTO_ACCESO=colegio +SetEnvIfNoCase Request_URI "^/preinscripcion(/|$)" PERFIL=alumno +# IMPORTANTE: sin barra final para evitar bugs al parsear +SetEnvIfNoCase Request_URI "^/preinscripcion(/|$)" ACC_ALIAS=/preinscripcion - # Setea el perfil funcional de quienes acceden por este punto de acceso. - # NO MODIFICAR ESTE VALOR - SetEnv PERFIL alumno +# Admin +SetEnvIfNoCase Request_URI "^/preinscripcion_admin(/|$)" ID_PTO_ACCESO=colegio +SetEnvIfNoCase Request_URI "^/preinscripcion_admin(/|$)" PERFIL=admin +SetEnvIfNoCase Request_URI "^/preinscripcion_admin(/|$)" ACC_ALIAS=/preinscripcion_admin +# --- fin inyección robusta --- - # se setea de esta manera para que esta variable sea accesible desde mod_rewrite - # ATENCIÓN: el alias debe empezar con '/' - SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion/ +# (Podés mantener, si querés, los como documentación) + + SetEnv ID_PTO_ACCESO colegio + SetEnv PERFIL alumno + SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion - # -------------------------------------------------------------------------- - # PUNTO DE ACCESO: admin del punto de acceso default - # -------------------------------------------------------------------------- - - # Nombre o ID del Punto de Acceso. No utilizar espacios. - SetEnv ID_PTO_ACCESO colegio - - # Setea el perfil funcional de quienes acceden por este punto de acceso. - # NO MODIFICAR ESTE VALOR - SetEnv PERFIL admin - - # se setea de esta manera para que esta variable sea accesible desde mod_rewrite - # ATENCIÓN: el alias debe empezar con '/' - SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion_admin/ - - # Si se desea restringir las IP desde las cuales acceder al panel de - # administración, hacerlo aquí. - # Require ip 192.168.0.0/16 - # Require ip 10.0.0.0/8 + SetEnv ID_PTO_ACCESO colegio + SetEnv PERFIL admin + SetEnvIf always_match ^ ACC_ALIAS=/preinscripcion_admin - -#### FIN CONFIGURACION DE ACCESO DEFAULT diff --git a/instalacion/config.php b/instalacion/config.php old mode 100644 new mode 100755 index f574d77..973060f --- a/instalacion/config.php +++ b/instalacion/config.php @@ -102,14 +102,17 @@ return [ * Configuración de servidor de correo (configuración básica) */ 'smtp' => [ - 'from' => 'noreply@universidad.edu.ar', - 'from_name' => 'SIU-Preinscripción', - 'host' => 'localhost', - 'seguridad' => 'ssl', - 'auth' => false, - 'port' => 25, - 'reply_to' => 'noreply@universidad.edu.ar', + 'from' => 'fcyt_sistemas@uader.edu.ar', + 'from_name' => 'Colegio jj urquiza', + 'host' => 'smtp.gmail.com', + 'seguridad' => 'tls', + 'auth' => true, + 'port' => 587, + 'reply_to' => 'fcyt_sistemas@uader.edu.ar', 'smtp_debug' => SMTP::DEBUG_OFF, + 'auth_type' => mail::AUTH_TYPE_USER_PASS, + 'usuario' => 'fcyt_sistemas@uader.edu.ar', + 'clave' => 'ndbuflrbfurnfiij', ], /** @@ -152,7 +155,7 @@ return [ * Configuración de puntos de acceso */ 'accesos' => [ - 'default' => [ + 'colegio' => [ 'personalizacion' => NULL, /** @@ -161,7 +164,7 @@ return [ 'database' => [ 'vendor' => 'pgsql', 'dbname' => 'preinscripcion', - 'host' => 'postgres', + 'host' => 'preinscripcion_postgres', 'port' => '5432', 'pdo_user' => 'postgres', 'pdo_passwd' => 'postgres123', @@ -177,12 +180,12 @@ return [ */ 'database_guarani' => [ 'vendor' => 'pgsql', - 'dbname' => 'gestion', - 'schema' => 'public', - 'host' => 'postgres', - 'port' => '5432', + 'dbname' => 'toba_3_3', + 'schema' => 'negocio', + 'host' => '10.0.60.27', + 'port' => '7010', 'pdo_user' => 'postgres', - 'pdo_passwd' => 'postgres123', + 'pdo_passwd' => 'postgres', ], /** diff --git a/instalacion/login.php b/instalacion/login.php new file mode 100755 index 0000000..a06f950 --- /dev/null +++ b/instalacion/login.php @@ -0,0 +1,90 @@ + [ + 'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'alumno'), + 'clase' => 'modelo\\autenticacion\\auth_form', + 'parametros' => [ + 'clase_login' => "extension_kernel\\login" + ] + ], + + 'form_documento' => [ + 'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'alumno'), + 'clase' => 'modelo\\autenticacion\\auth_form_documento', + 'parametros' => [ + 'clase_login' => "extension_kernel\\login" + ] + ], + + 'admin' => [ + 'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'admin'), + 'clase' => 'modelo\\autenticacion\\auth_admin', + 'parametros' => [ + 'clase_login' => "extension_kernel\\login_admin" + ] + ], + + 'token' => [ + 'activo' => (!empty($_SERVER['PERFIL'])) && ($_SERVER['PERFIL'] == 'alumno'), + 'clase' => 'modelo\\autenticacion\\auth_token', + 'parametros' => [], + ], + + 'cuentas_ext' => [ + /** + * Si desea habilitarse alguno de los servicios de login con servicios externos, + * primero se debe establecer la siguiente directiva en true + */ + 'activo' => false, + 'clase' => 'modelo\\autenticacion\\auth_cuenta_ext', + 'parametros' => [ + 'clase_login' => "extension_kernel\\login", + 'proveedores' => [ + 'google' => [ + /** + * Para habilitar el login mediante Google: + * + establecer 'activo' => true, + * + crear un proyecto en https://console.developers.google.com/ + * + habilitar la Google+ API y obtener los valores de ID y secreto de cliente para completar aquí. + * + En la sección URIs de redireccionamiento completar http:///acceso/index?auth=cuentas_ext&f=google + */ + 'activo' => false, + 'tipo' => 'oauth2', + 'icono' => 'img/login/google.jpg', + 'app_key' => 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com', + 'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxx', + 'scope' => 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email', + + 'auth_url' => 'https://accounts.google.com/o/oauth2/auth', + 'acc_url' => 'https://accounts.google.com/o/oauth2/token', + 'id_url' => 'https://www.googleapis.com/oauth2/v1/userinfo', + + 'id_path' => 'id', //de que campo saca el id + 'email_path' => 'email', //de que campo saca el mail + ], + + 'facebook' => [ + /** + * Para habilitar el login mediante Facebook, establecer 'activo' => true + * y generar valores para app_key y app_secret como se explica en + * https://repositorio.siu.edu.ar/trac/Portal-G3/wiki/G2/Preinscripcion/2.9.0/DocTecnica/Instalacion/ConfigFacebook + */ + 'activo' => false, + 'tipo' => 'oauth2', + 'icono' => 'img/login/facebook.jpg', + 'app_key' => 'xxxxxxxxxxxxxxx', + 'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + 'scope' => 'email', + + 'auth_url' => 'https://www.facebook.com/dialog/oauth', + 'acc_url' => 'https://graph.facebook.com/oauth/access_token', + 'id_url' => 'https://graph.facebook.com/me', + + 'id_path' => 'id', + 'email_path' => 'email', + ], + ], + ], + ], +]; \ No newline at end of file diff --git a/instalacion/rewrite.conf b/instalacion/rewrite.conf old mode 100644 new mode 100755