diff --git a/pokeranalytics_backend/settings.py b/pokeranalytics_backend/settings.py index c645e41..d39dab3 100644 --- a/pokeranalytics_backend/settings.py +++ b/pokeranalytics_backend/settings.py @@ -12,6 +12,7 @@ https://docs.djangoproject.com/en/4.1/ref/settings/ from pathlib import Path import os +import logging.config # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -24,7 +25,6 @@ BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = 'django-insecure-v9l*b^t^2eqp877kdrt%5g#y=8$e%e^sa!65(1@t+rp@avwx+@' ASS_KEY_FILE = BASE_DIR / 'AppleRootCA-G3.cer' -# SECURITY WARNING: don't run with debug turned on in production! DEBUG = False ALLOWED_HOSTS = ['*'] @@ -128,4 +128,52 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' APNS_ENVIRONMENT_SANDBOX = False +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { + 'verbose': { + 'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}', + 'style': '{', + }, + 'simple': { + 'format': '{levelname} {message}', + 'style': '{', + }, + }, + 'handlers': { + 'console': { + 'level': 'INFO', + 'class': 'logging.StreamHandler', + 'formatter': 'verbose', + }, + 'file': { + 'level': 'DEBUG', + 'class': 'logging.FileHandler', + 'filename': os.path.join(BASE_DIR, 'logs/django.log'), + 'formatter': 'verbose', + }, + 'rotating_file': { + 'level': 'INFO', + 'class': 'logging.handlers.RotatingFileHandler', + 'filename': os.path.join(BASE_DIR, 'logs/django.log'), + 'maxBytes': 10 * 1024 * 1024, + 'backupCount': 10, + 'formatter': 'verbose', + }, + }, + 'loggers': { + 'django': { + 'handlers': ['console', 'file'], + 'level': 'INFO', + 'propagate': True, + }, + 'subscriptions': { # Replace with your app name + 'handlers': ['console', 'file'], + 'level': 'DEBUG', + 'propagate': False, + }, + }, +} + from .settings_local import * diff --git a/subscriptions/views.py b/subscriptions/views.py index 2d55b36..7d13b43 100644 --- a/subscriptions/views.py +++ b/subscriptions/views.py @@ -14,6 +14,7 @@ from pokeranalytics_backend.settings import APNS_ENVIRONMENT_SANDBOX import json, jwt import base64 import os +import logging import datetime @@ -43,10 +44,24 @@ def app_store_webhook(request): fulljson = json.loads(decoded) signedPayload = fulljson['signedPayload'] + save_payload_file(signedPayload) decodePayload(signedPayload) return JsonResponse({'status': 'success'}) +def save_payload_file(signedPayload): + tmp_dir = os.path.join(settings.BASE_DIR, 'tmp') + + # Create the tmp directory if it doesn't exist + if not os.path.exists(tmp_dir): + os.makedirs(tmp_dir) + + timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") + filename = os.path.join(tmp_dir, f'signedPayload_{timestamp}.txt') + + with open(filename, 'w') as f: + f.write(signedPayload) + def decodePayload(signedPayload): enable_online_checks = True @@ -65,7 +80,7 @@ def decodePayload(signedPayload): data = payload.data transaction_info = verifier.verify_and_decode_signed_transaction(data.signedTransactionInfo) - renewal_info = verifier.verify_and_decode_renewal_info(data.signedRenewalInfo) + # renewal_info = verifier.verify_and_decode_renewal_info(data.signedRenewalInfo) signedDateTime = datetime.datetime.fromtimestamp(payload.signedDate / 1000) expiresDateTime = datetime.datetime.fromtimestamp(transaction_info.expiresDate / 1000) @@ -127,8 +142,10 @@ def decodePayload(signedPayload): except APIException as e: print(e) + logger = logging.getLogger('subscriptions') + logger.exception("An error occurred during division") - return HttpResponse(renewal_info) + return HttpResponse('ok') # def load_root_certificate(): # in_file = open("AppleRootCA-G3.cer", "rb") # opening for [r]eading as [b]inary