# Disable Odoo Online Services **Version:** 18.0.1.0.0 **License:** LGPL-3 **Odoo Version:** 18.0 ## Overview This module comprehensively disables all external communications between your Odoo instance and Odoo's servers. It prevents: - License/subscription checks - User count reporting - IAP (In-App Purchase) credit checks - Publisher warranty communications - Partner autocomplete/enrichment - Expiration warnings in the UI ## Features ### 1. IAP JSON-RPC Blocking Patches the core `iap_jsonrpc` function to prevent all IAP API calls: - Returns fake successful responses - Logs all blocked calls - Provides unlimited credits for services that check ### 2. License Parameter Protection Protects critical `ir.config_parameter` values: - `database.expiration_date` → Always returns `2099-12-31 23:59:59` - `database.expiration_reason` → Always returns `renewal` - `database.enterprise_code` → Always returns `PERMANENT_LOCAL` ### 3. Session Info Patching Modifies `session_info()` to prevent frontend warnings: - Sets expiration date to 2099 - Sets `warning` to `False` - Removes "already linked" subscription prompts ### 4. User Creation Protection Logs user creation without triggering subscription checks: - Blocks any external validation - Logs permission changes ### 5. Publisher Warranty Block Disables all warranty-related server communication: - `_get_sys_logs()` → Returns empty response - `update_notification()` → Returns success without calling server ### 6. Cron Job Blocking Blocks scheduled actions that contact Odoo: - Publisher Warranty Check - Database Auto-Expiration Check - Various IAP-related crons ## Installation 1. Copy the module to your Odoo addons directory 2. Restart Odoo 3. Go to Apps → Update Apps List 4. Search for "Disable Odoo Online Services" 5. Click Install ## Verification Check that blocking is active: ```bash docker logs odoo-container 2>&1 | grep -i "BLOCKED\|DISABLED" ``` Expected output: ``` IAP JSON-RPC calls have been DISABLED globally Module update_list: Scanning local addons only (Odoo Apps store disabled) Publisher warranty update_notification BLOCKED Creating 1 user(s) - subscription check DISABLED ``` ## Configuration No configuration required. The module automatically: - Sets permanent expiration values on install (via `_post_init_hook`) - Patches all necessary functions when loaded - Protects values from being changed ## Technical Details ### Files | File | Purpose | |------|---------| | `models/disable_iap_tools.py` | Patches `iap_jsonrpc` globally | | `models/disable_online_services.py` | Blocks publisher warranty, cron jobs | | `models/disable_database_expiration.py` | Protects `ir.config_parameter` | | `models/disable_session_leaks.py` | Patches session info, user creation | | `models/disable_partner_autocomplete.py` | Blocks partner enrichment | | `models/disable_all_external.py` | Additional external call blocks | ### Blocked Endpoints All redirected to `http://localhost:65535`: - `iap.endpoint` - `publisher_warranty_url` - `partner_autocomplete.endpoint` - `iap_extract_endpoint` - `olg.endpoint` - `mail.media_library_endpoint` - `sms.endpoint` - `crm.iap_lead_mining.endpoint` - And many more... ## Dependencies - `base` - `web` - `iap` - `mail` - `base_setup` ## Compatibility - Odoo 18.0 Community Edition - Odoo 18.0 Enterprise Edition ## Disclaimer This module is intended for legitimate use cases such as: - Air-gapped environments - Development/testing instances - Self-hosted deployments with proper licensing Ensure you comply with Odoo's licensing terms for your use case. ## Changelog ### 1.0.0 (2025-12-29) - Initial release - IAP blocking - Publisher warranty blocking - Session info patching - User creation protection - Config parameter protection