diff --git a/dbfilter_from_header/README.rst b/dbfilter_from_header/README.rst new file mode 100644 index 00000000000..c664d1e00ab --- /dev/null +++ b/dbfilter_from_header/README.rst @@ -0,0 +1,128 @@ +==================== +dbfilter_from_header +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:4267001fede7fa7c4b44dee1b4642d3f1512b6b6e4d29351c08cc6d62350f3fd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/18.0/dbfilter_from_header + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-dbfilter_from_header + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon lets you pass a dbfilter as a HTTP header. + +This is interesting for setups where database names can't be mapped to +proxied host names. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +To install this module, you only need to add it to your addons, and load +it as a server-wide module. + +This can be done with the ``server_wide_modules`` parameter in +``/etc/odoo.conf`` or with the ``--load`` command-line parameter + +``server_wide_modules = base,web,dbfilter_from_header`` + +Configuration +============= + +Please keep in mind that the standard odoo dbfilter configuration is +still applied before looking at the regular expression in the header. + +- For nginx, use: + + ``proxy_set_header X-Odoo-dbfilter [your filter regex];`` + +- For caddy, use: + + ``proxy_header X-Odoo-dbfilter [your filter regex]`` + +- For Apache, use: + + ``RequestHeader set X-Odoo-dbfilter [your filter regex]`` + +And make sure that proxy mode is enabled in Odoo's configuration file: + +``proxy_mode = True`` + +Usage +===== + +To use this module, you need to complete installation and configuration +parts. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Therp BV + +Contributors +------------ + +- Stéphane Bidoul +- Yannick Vaucher +- Alexandre Fayolle +- Holger Brunn +- Laurent Mignon (aka lmi) +- Sandy Carter +- Fabio Vilchez +- Jos De Graeve +- Lai Tim Siu (Quaritle Limited) +- Tharathip Chaweewongphan +- Eric Antones + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/dbfilter_from_header/__init__.py b/dbfilter_from_header/__init__.py new file mode 100644 index 00000000000..3b8cc81fab8 --- /dev/null +++ b/dbfilter_from_header/__init__.py @@ -0,0 +1 @@ +from . import override diff --git a/dbfilter_from_header/__manifest__.py b/dbfilter_from_header/__manifest__.py new file mode 100644 index 00000000000..e5840772f6f --- /dev/null +++ b/dbfilter_from_header/__manifest__.py @@ -0,0 +1,17 @@ +# © 2013 Therp BV +# © 2014 ACSONE SA/NV +# Copyright 2018 Quartile Limited +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "dbfilter_from_header", + "summary": "Filter databases with HTTP headers", + "version": "18.0.1.0.0", + "website": "https://github.com/OCA/server-tools", + "author": "Therp BV, Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Tools", + "depends": ["web"], + "auto_install": False, + "installable": True, +} diff --git a/dbfilter_from_header/i18n/dbfilter_from_header.pot b/dbfilter_from_header/i18n/dbfilter_from_header.pot new file mode 100644 index 00000000000..716a0702d88 --- /dev/null +++ b/dbfilter_from_header/i18n/dbfilter_from_header.pot @@ -0,0 +1,13 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" diff --git a/dbfilter_from_header/i18n/es_AR.po b/dbfilter_from_header/i18n/es_AR.po new file mode 100644 index 00000000000..e69de29bb2d diff --git a/dbfilter_from_header/i18n/it.po b/dbfilter_from_header/i18n/it.po new file mode 100644 index 00000000000..8af45f7b878 --- /dev/null +++ b/dbfilter_from_header/i18n/it.po @@ -0,0 +1,14 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" diff --git a/dbfilter_from_header/i18n/zh_CN.po b/dbfilter_from_header/i18n/zh_CN.po new file mode 100644 index 00000000000..e69de29bb2d diff --git a/dbfilter_from_header/override.py b/dbfilter_from_header/override.py new file mode 100644 index 00000000000..f759575b169 --- /dev/null +++ b/dbfilter_from_header/override.py @@ -0,0 +1,29 @@ +# © 2013 Therp BV +# © 2014 ACSONE SA/NV +# Copyright 2018 Quartile Limited +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import logging +import re + +from odoo import http +from odoo.tools import config + +db_filter_org = http.db_filter + + +def db_filter(dbs, host=None): + dbs = db_filter_org(dbs, host) + httprequest = http.request.httprequest + db_filter_hdr = httprequest.environ.get("HTTP_X_ODOO_DBFILTER") + if db_filter_hdr: + dbs = [db for db in dbs if re.match(db_filter_hdr, db)] + return dbs + + +if config.get("proxy_mode") and "dbfilter_from_header" in config.get( + "server_wide_modules" +): + _logger = logging.getLogger(__name__) + _logger.info("monkey patching http.db_filter") + http.db_filter = db_filter diff --git a/dbfilter_from_header/pyproject.toml b/dbfilter_from_header/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/dbfilter_from_header/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/dbfilter_from_header/readme/CONFIGURE.md b/dbfilter_from_header/readme/CONFIGURE.md new file mode 100644 index 00000000000..73e258a1536 --- /dev/null +++ b/dbfilter_from_header/readme/CONFIGURE.md @@ -0,0 +1,18 @@ +Please keep in mind that the standard odoo dbfilter configuration is +still applied before looking at the regular expression in the header. + +- For nginx, use: + + `proxy_set_header X-Odoo-dbfilter [your filter regex];` + +- For caddy, use: + + `proxy_header X-Odoo-dbfilter [your filter regex]` + +- For Apache, use: + + `RequestHeader set X-Odoo-dbfilter [your filter regex]` + +And make sure that proxy mode is enabled in Odoo's configuration file: + +`proxy_mode = True` diff --git a/dbfilter_from_header/readme/CONTRIBUTORS.md b/dbfilter_from_header/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..a63b256682c --- /dev/null +++ b/dbfilter_from_header/readme/CONTRIBUTORS.md @@ -0,0 +1,11 @@ +- Stéphane Bidoul \<\> +- Yannick Vaucher \<\> +- Alexandre Fayolle \<\> +- Holger Brunn \<\> +- Laurent Mignon (aka lmi) \<\> +- Sandy Carter \<\> +- Fabio Vilchez \<\> +- Jos De Graeve \<\> +- Lai Tim Siu (Quaritle Limited) \<\> +- Tharathip Chaweewongphan \<\> +- Eric Antones \<\> diff --git a/dbfilter_from_header/readme/DESCRIPTION.md b/dbfilter_from_header/readme/DESCRIPTION.md new file mode 100644 index 00000000000..2027f105311 --- /dev/null +++ b/dbfilter_from_header/readme/DESCRIPTION.md @@ -0,0 +1,4 @@ +This addon lets you pass a dbfilter as a HTTP header. + +This is interesting for setups where database names can't be mapped to +proxied host names. diff --git a/dbfilter_from_header/readme/INSTALL.md b/dbfilter_from_header/readme/INSTALL.md new file mode 100644 index 00000000000..b407bc8780d --- /dev/null +++ b/dbfilter_from_header/readme/INSTALL.md @@ -0,0 +1,7 @@ +To install this module, you only need to add it to your addons, and load +it as a server-wide module. + +This can be done with the `server_wide_modules` parameter in +`/etc/odoo.conf` or with the `--load` command-line parameter + +`server_wide_modules = base,web,dbfilter_from_header` diff --git a/dbfilter_from_header/readme/USAGE.md b/dbfilter_from_header/readme/USAGE.md new file mode 100644 index 00000000000..873c9746069 --- /dev/null +++ b/dbfilter_from_header/readme/USAGE.md @@ -0,0 +1,2 @@ +To use this module, you need to complete installation and configuration +parts. diff --git a/dbfilter_from_header/static/description/icon.png b/dbfilter_from_header/static/description/icon.png new file mode 100644 index 00000000000..3a0328b516c Binary files /dev/null and b/dbfilter_from_header/static/description/icon.png differ diff --git a/dbfilter_from_header/static/description/index.html b/dbfilter_from_header/static/description/index.html new file mode 100644 index 00000000000..b6455f2c616 --- /dev/null +++ b/dbfilter_from_header/static/description/index.html @@ -0,0 +1,469 @@ + + + + + +dbfilter_from_header + + + +
+

dbfilter_from_header

+ + +

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

This addon lets you pass a dbfilter as a HTTP header.

+

This is interesting for setups where database names can’t be mapped to +proxied host names.

+

Table of contents

+ +
+

Installation

+

To install this module, you only need to add it to your addons, and load +it as a server-wide module.

+

This can be done with the server_wide_modules parameter in +/etc/odoo.conf or with the --load command-line parameter

+

server_wide_modules = base,web,dbfilter_from_header

+
+
+

Configuration

+

Please keep in mind that the standard odoo dbfilter configuration is +still applied before looking at the regular expression in the header.

+
    +
  • For nginx, use:

    +

    proxy_set_header X-Odoo-dbfilter [your filter regex];

    +
  • +
  • For caddy, use:

    +

    proxy_header X-Odoo-dbfilter [your filter regex]

    +
  • +
  • For Apache, use:

    +

    RequestHeader set X-Odoo-dbfilter [your filter regex]

    +
  • +
+

And make sure that proxy mode is enabled in Odoo’s configuration file:

+

proxy_mode = True

+
+
+

Usage

+

To use this module, you need to complete installation and configuration +parts.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Therp BV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-tools project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ +