Comparar commits

..

No hay commits en común. "809f1ebda549723dc780279a98514d22adf9ad63" y "42831d294c2b8a24d89008802b5d2789c28fcff7" tienen historias totalmente diferentes.

Se han modificado 3 ficheros con 14 adiciones y 22 borrados

Ver fichero

@ -1,5 +1,5 @@
[tool.bumpversion] [tool.bumpversion]
current_version = "1.2.16" current_version = "1.2.15"
commit = true commit = true
tag = true tag = true
tag_name = "{new_version}" tag_name = "{new_version}"

Ver fichero

@ -1 +1 @@
1.2.16 1.2.15

Ver fichero

@ -15,8 +15,6 @@ from ktvmanager.lib.checker import validate_account
from typing import Tuple from typing import Tuple
import json import json
import re import re
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import ec
from pywebpush import webpush, WebPushException from pywebpush import webpush, WebPushException
api_blueprint = Blueprint("api", __name__) api_blueprint = Blueprint("api", __name__)
@ -151,24 +149,18 @@ def login_route(username: str, password: str) -> Response:
def vapid_public_key(): def vapid_public_key():
"""Provides the VAPID public key in the correct format.""" """Provides the VAPID public key in the correct format."""
pem_key = current_app.config["VAPID_PUBLIC_KEY"] pem_key = current_app.config["VAPID_PUBLIC_KEY"]
try: # Use regex to robustly extract the base64 content from the PEM key
public_key = serialization.load_pem_public_key(pem_key.encode("utf-8")) match = re.search(r"-----BEGIN PUBLIC KEY-----(.*)-----END PUBLIC KEY-----", pem_key, re.DOTALL)
if not isinstance(public_key, ec.EllipticCurvePublicKey): if not match:
raise TypeError("VAPID public key is not an Elliptic Curve key") return jsonify({"error": "Could not parse VAPID public key from config"}), 500
# Get the raw, uncompressed public key bytes (65 bytes for P-256) # Join the split lines to remove all whitespace and newlines
raw_key = public_key.public_bytes( base64_key = "".join(match.group(1).split())
encoding=serialization.Encoding.X962,
format=serialization.PublicFormat.UncompressedPoint
)
# URL-safe base64 encode the raw key # Convert to URL-safe base64 and remove padding for the PushManager API
url_safe_key = base64.urlsafe_b64encode(raw_key).rstrip(b'=').decode('utf-8') url_safe_key = base64_key.replace('+', '-').replace('/', '_').rstrip('=')
return jsonify({"public_key": url_safe_key}) return jsonify({"public_key": url_safe_key})
except (ValueError, TypeError, AttributeError) as e:
current_app.logger.error(f"Error processing VAPID public key: {e}")
return jsonify({"error": "Could not process VAPID public key"}), 500
@api_blueprint.route("/save-subscription", methods=["POST"]) @api_blueprint.route("/save-subscription", methods=["POST"])