Loading services/helper/config.yaml +3 −3 Original line number Original line Diff line number Diff line Loading @@ -38,9 +38,9 @@ capif_configuration: psk: 3 psk: 3 package_paths: package_paths: helper_api: # helper_api: path: /api # path: /api openapi_file: api/openapi/openapi.yaml # openapi_file: api/openapi/openapi.yaml configuration_api: configuration_api: path: /configuration path: /configuration openapi_file: configuration/openapi/openapi.yaml openapi_file: configuration/openapi/openapi.yaml Loading services/helper/helper_service/app.py +36 −8 Original line number Original line Diff line number Diff line Loading @@ -4,14 +4,19 @@ import os import sys import sys from pathlib import Path from pathlib import Path import connexion from connexion import FlaskApp import requests import requests from asgiref.wsgi import WsgiToAsgi # from asgiref.wsgi import WsgiToAsgi from config import Config from config import Config from db.db import get_mongo from db.db import get_mongo from flask import Flask from flask import Flask from OpenSSL.crypto import (FILETYPE_PEM, TYPE_RSA, PKey, X509Req, from OpenSSL.crypto import (FILETYPE_PEM, TYPE_RSA, PKey, X509Req, dump_certificate_request, dump_privatekey) dump_certificate_request, dump_privatekey) from connexion.middleware import ConnexionMiddleware # import traceback # from flask import request # --- Paths setup: make 'services' discoverable so "import api..." works --- # --- Paths setup: make 'services' discoverable so "import api..." works --- BASE_DIR = Path(__file__).resolve().parent BASE_DIR = Path(__file__).resolve().parent Loading @@ -25,7 +30,7 @@ if SERVICES_DIR.is_dir(): else: else: raise RuntimeError(f"Services directory not found at {SERVICES_DIR!s}") raise RuntimeError(f"Services directory not found at {SERVICES_DIR!s}") app = connexion.App(__name__, specification_dir=str(SERVICES_DIR)) config = Config().get_config() config = Config().get_config() # Connect MongoDB and get TTL for superadmin certificate # Connect MongoDB and get TTL for superadmin certificate Loading Loading @@ -88,7 +93,7 @@ except Exception: # Request superadmin certificate # Request superadmin certificate url = 'http://{}:{}/v1/pki_int/sign/my-ca'.format(config["ca_factory"]["url"], config["ca_factory"]["port"]) url = 'http://{}:{}/v1/pki_int/sign/my-ca'.format(config["ca_factory"]["url"], config["ca_factory"]["port"]) headers = {'X-Vault-Token': f"{config["ca_factory"]["token"]}"} headers = {'X-Vault-Token': f"{config['ca_factory']['token']}"} data = { data = { 'format':'pem_bundle', 'format':'pem_bundle', 'ttl': ttl_superadmin_cert, 'ttl': ttl_superadmin_cert, Loading Loading @@ -123,10 +128,29 @@ if not package_paths: logger.error("No package paths defined in configuration.") logger.error("No package paths defined in configuration.") raise Exception("No package paths defined in configuration.") raise Exception("No package paths defined in configuration.") # app = connexion.App(__name__, template_folder=str(SERVICES_DIR)) app = FlaskApp(__name__, server_args={'template_folder': str(SERVICES_DIR)}) app.app.debug = True # @app.app.before_request # def debug_context(): # try: # from connexion import request as conn_req # # Intentamos acceder al contexto problemático # _ = conn_req.path # logging.debug("Contexto de Connexion OK") # except RuntimeError: # logging.error("!!! Error de Contexto detectado en la ruta: %s", request.path) # traceback.print_stack() # Esto imprimirá EXACTAMENTE quién llamó a qué # Forzar que la aplicación use el middleware de contexto # Dynamically add all APIs defined in package_paths # Dynamically add all APIs defined in package_paths for name, pkg in package_paths.items(): for name, pkg in package_paths.items(): openapi_file = pkg.get("openapi_file") openapi_file = "services/" + pkg.get("openapi_file") base_path = pkg.get("path") base_path = "/helper/" + pkg.get("path") if not openapi_file or not base_path: if not openapi_file or not base_path: logger.warning(f"Skipping package_path '{name}' because 'openapi_file' or 'path' is missing.") logger.warning(f"Skipping package_path '{name}' because 'openapi_file' or 'path' is missing.") Loading @@ -143,10 +167,14 @@ for name, pkg in package_paths.items(): openapi_file, # relative to specification_dir (SERVICES_DIR) openapi_file, # relative to specification_dir (SERVICES_DIR) arguments={"title": title}, arguments={"title": title}, pythonic_params=True, pythonic_params=True, base_path="/helper/" + base_path base_path= base_path ) ) app.add_middleware(ConnexionMiddleware) app.app.logger.setLevel(numeric_level) app.app.logger.setLevel(numeric_level) asgi_app = WsgiToAsgi(app) flask_app = app No newline at end of file main_app = app.middleware # asgi_app = WsgiToAsgi(app) services/helper/helper_service/services/visibility_control/auth.py +1 −1 Original line number Original line Diff line number Diff line Loading @@ -2,7 +2,7 @@ from functools import wraps from cryptography import x509 from cryptography import x509 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.backends import default_backend from flask import request from flask import request import connexion # import connexion #from ..core.validate_user import ControlAccess #from ..core.validate_user import ControlAccess from visibility_control.core.validate_user import ControlAccess from visibility_control.core.validate_user import ControlAccess Loading services/helper/helper_service/wsgi.py +2 −2 Original line number Original line Diff line number Diff line from app import asgi_app from helper_service.app import app if __name__ == "__main__": if __name__ == "__main__": asgi_app.run() app.run() services/helper/prepare_helper.sh +1 −1 Original line number Original line Diff line number Diff line Loading @@ -2,4 +2,4 @@ gunicorn -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080 \ gunicorn -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080 \ --chdir /usr/src/app/helper_service wsgi:asgi_app --chdir /usr/src/app/helper_service app:main_app No newline at end of file No newline at end of file Loading
services/helper/config.yaml +3 −3 Original line number Original line Diff line number Diff line Loading @@ -38,9 +38,9 @@ capif_configuration: psk: 3 psk: 3 package_paths: package_paths: helper_api: # helper_api: path: /api # path: /api openapi_file: api/openapi/openapi.yaml # openapi_file: api/openapi/openapi.yaml configuration_api: configuration_api: path: /configuration path: /configuration openapi_file: configuration/openapi/openapi.yaml openapi_file: configuration/openapi/openapi.yaml Loading
services/helper/helper_service/app.py +36 −8 Original line number Original line Diff line number Diff line Loading @@ -4,14 +4,19 @@ import os import sys import sys from pathlib import Path from pathlib import Path import connexion from connexion import FlaskApp import requests import requests from asgiref.wsgi import WsgiToAsgi # from asgiref.wsgi import WsgiToAsgi from config import Config from config import Config from db.db import get_mongo from db.db import get_mongo from flask import Flask from flask import Flask from OpenSSL.crypto import (FILETYPE_PEM, TYPE_RSA, PKey, X509Req, from OpenSSL.crypto import (FILETYPE_PEM, TYPE_RSA, PKey, X509Req, dump_certificate_request, dump_privatekey) dump_certificate_request, dump_privatekey) from connexion.middleware import ConnexionMiddleware # import traceback # from flask import request # --- Paths setup: make 'services' discoverable so "import api..." works --- # --- Paths setup: make 'services' discoverable so "import api..." works --- BASE_DIR = Path(__file__).resolve().parent BASE_DIR = Path(__file__).resolve().parent Loading @@ -25,7 +30,7 @@ if SERVICES_DIR.is_dir(): else: else: raise RuntimeError(f"Services directory not found at {SERVICES_DIR!s}") raise RuntimeError(f"Services directory not found at {SERVICES_DIR!s}") app = connexion.App(__name__, specification_dir=str(SERVICES_DIR)) config = Config().get_config() config = Config().get_config() # Connect MongoDB and get TTL for superadmin certificate # Connect MongoDB and get TTL for superadmin certificate Loading Loading @@ -88,7 +93,7 @@ except Exception: # Request superadmin certificate # Request superadmin certificate url = 'http://{}:{}/v1/pki_int/sign/my-ca'.format(config["ca_factory"]["url"], config["ca_factory"]["port"]) url = 'http://{}:{}/v1/pki_int/sign/my-ca'.format(config["ca_factory"]["url"], config["ca_factory"]["port"]) headers = {'X-Vault-Token': f"{config["ca_factory"]["token"]}"} headers = {'X-Vault-Token': f"{config['ca_factory']['token']}"} data = { data = { 'format':'pem_bundle', 'format':'pem_bundle', 'ttl': ttl_superadmin_cert, 'ttl': ttl_superadmin_cert, Loading Loading @@ -123,10 +128,29 @@ if not package_paths: logger.error("No package paths defined in configuration.") logger.error("No package paths defined in configuration.") raise Exception("No package paths defined in configuration.") raise Exception("No package paths defined in configuration.") # app = connexion.App(__name__, template_folder=str(SERVICES_DIR)) app = FlaskApp(__name__, server_args={'template_folder': str(SERVICES_DIR)}) app.app.debug = True # @app.app.before_request # def debug_context(): # try: # from connexion import request as conn_req # # Intentamos acceder al contexto problemático # _ = conn_req.path # logging.debug("Contexto de Connexion OK") # except RuntimeError: # logging.error("!!! Error de Contexto detectado en la ruta: %s", request.path) # traceback.print_stack() # Esto imprimirá EXACTAMENTE quién llamó a qué # Forzar que la aplicación use el middleware de contexto # Dynamically add all APIs defined in package_paths # Dynamically add all APIs defined in package_paths for name, pkg in package_paths.items(): for name, pkg in package_paths.items(): openapi_file = pkg.get("openapi_file") openapi_file = "services/" + pkg.get("openapi_file") base_path = pkg.get("path") base_path = "/helper/" + pkg.get("path") if not openapi_file or not base_path: if not openapi_file or not base_path: logger.warning(f"Skipping package_path '{name}' because 'openapi_file' or 'path' is missing.") logger.warning(f"Skipping package_path '{name}' because 'openapi_file' or 'path' is missing.") Loading @@ -143,10 +167,14 @@ for name, pkg in package_paths.items(): openapi_file, # relative to specification_dir (SERVICES_DIR) openapi_file, # relative to specification_dir (SERVICES_DIR) arguments={"title": title}, arguments={"title": title}, pythonic_params=True, pythonic_params=True, base_path="/helper/" + base_path base_path= base_path ) ) app.add_middleware(ConnexionMiddleware) app.app.logger.setLevel(numeric_level) app.app.logger.setLevel(numeric_level) asgi_app = WsgiToAsgi(app) flask_app = app No newline at end of file main_app = app.middleware # asgi_app = WsgiToAsgi(app)
services/helper/helper_service/services/visibility_control/auth.py +1 −1 Original line number Original line Diff line number Diff line Loading @@ -2,7 +2,7 @@ from functools import wraps from cryptography import x509 from cryptography import x509 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.backends import default_backend from flask import request from flask import request import connexion # import connexion #from ..core.validate_user import ControlAccess #from ..core.validate_user import ControlAccess from visibility_control.core.validate_user import ControlAccess from visibility_control.core.validate_user import ControlAccess Loading
services/helper/helper_service/wsgi.py +2 −2 Original line number Original line Diff line number Diff line from app import asgi_app from helper_service.app import app if __name__ == "__main__": if __name__ == "__main__": asgi_app.run() app.run()
services/helper/prepare_helper.sh +1 −1 Original line number Original line Diff line number Diff line Loading @@ -2,4 +2,4 @@ gunicorn -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080 \ gunicorn -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080 \ --chdir /usr/src/app/helper_service wsgi:asgi_app --chdir /usr/src/app/helper_service app:main_app No newline at end of file No newline at end of file