68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Override the core IAP tools to block ALL external API calls.
|
|
This is the master switch that blocks ALL Odoo external communications.
|
|
"""
|
|
|
|
import logging
|
|
from odoo import exceptions, _
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
# Store original function reference
|
|
_original_iap_jsonrpc = None
|
|
|
|
|
|
def _disabled_iap_jsonrpc(url, method='call', params=None, timeout=15):
|
|
"""
|
|
DISABLED: Block all IAP JSON-RPC calls.
|
|
Returns empty/success response instead of making external calls.
|
|
"""
|
|
_logger.info("IAP JSONRPC BLOCKED: %s (method=%s)", url, method)
|
|
|
|
# Return appropriate empty responses based on the endpoint
|
|
if '/authorize' in url:
|
|
return 'fake_transaction_token_disabled'
|
|
elif '/capture' in url or '/cancel' in url:
|
|
return True
|
|
elif '/credits' in url:
|
|
return 999999
|
|
elif 'partner-autocomplete' in url:
|
|
return []
|
|
elif 'enrich' in url:
|
|
return {}
|
|
elif 'sms' in url:
|
|
_logger.warning("SMS API call blocked - SMS will not be sent")
|
|
return {'state': 'success', 'credits': 999999}
|
|
elif 'extract' in url:
|
|
return {'status': 'success', 'credits': 999999}
|
|
else:
|
|
return {}
|
|
|
|
|
|
def patch_iap_tools():
|
|
"""
|
|
Monkey-patch the iap_jsonrpc function to block external calls.
|
|
This is called when the module loads.
|
|
"""
|
|
global _original_iap_jsonrpc
|
|
|
|
try:
|
|
from odoo.addons.iap.tools import iap_tools
|
|
|
|
if _original_iap_jsonrpc is None:
|
|
_original_iap_jsonrpc = iap_tools.iap_jsonrpc
|
|
|
|
iap_tools.iap_jsonrpc = _disabled_iap_jsonrpc
|
|
_logger.info("IAP JSON-RPC calls have been DISABLED globally")
|
|
|
|
except ImportError:
|
|
_logger.debug("IAP module not installed, skipping patch")
|
|
except Exception as e:
|
|
_logger.warning("Could not patch IAP tools: %s", e)
|
|
|
|
|
|
# Apply patch when module is imported
|
|
patch_iap_tools()
|
|
|