├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── __unfinished__ ├── __init__.py ├── clouder_invoicing_master │ ├── __init__.py │ ├── __openerp__.py │ ├── clouder_invoicing_master.py │ └── clouder_invoicing_master_view.xml ├── clouder_template_bluemind │ ├── __init__.py │ ├── __openerp__.py │ ├── res │ │ ├── proxy-sslonly.config │ │ └── proxy.config │ ├── template.py │ └── template.xml ├── clouder_template_cas │ ├── __init__.py │ ├── __openerp__.py │ ├── clouder_template_cas.py │ └── clouder_template_cas_data.xml ├── clouder_template_dolibarr │ ├── __init__.py │ ├── __openerp__.py │ ├── res │ │ ├── nginx.config │ │ ├── proxy-sslonly.config │ │ └── proxy.config │ ├── template.py │ └── template.xml ├── clouder_template_ldap │ ├── __init__.py │ ├── __openerp__.py │ ├── clouder_template_ldap.py │ ├── clouder_template_ldap_data.xml │ └── res │ │ └── ldap.ldif ├── clouder_template_mattermost │ ├── __init__.py │ ├── __openerp__.py │ ├── res │ │ ├── nginx.config │ │ ├── proxy-sslonly.config │ │ └── proxy.config │ ├── template.py │ └── template.xml ├── clouder_template_odoo_community │ ├── __init__.py │ ├── __openerp__.py │ └── clouder_template_odoo_community_data.xml ├── clouder_template_owncloud │ ├── __init__.py │ ├── __openerp__.py │ ├── res │ │ ├── nginx.config │ │ ├── proxy-sslonly.config │ │ └── proxy.config │ ├── template.py │ └── template.xml ├── clouder_template_rainloop │ ├── __init__.py │ ├── __openerp__.py │ ├── res │ │ ├── nginx.config │ │ ├── proxy-sslonly.config │ │ └── proxy.config │ ├── template.py │ └── template.xml ├── clouder_template_reactioncommerce │ ├── __init__.py │ ├── __openerp__.py │ ├── res │ │ ├── nginx.config │ │ ├── proxy-sslonly.config │ │ └── proxy.config │ ├── template.py │ └── template.xml ├── clouder_template_seafile │ ├── __init__.py │ ├── __openerp__.py │ ├── clouder_template_seafile.py │ ├── clouder_template_seafile_data.xml │ └── res │ │ ├── proxy-sslonly.config │ │ └── proxy.config ├── clouder_template_taiga │ ├── __init__.py │ ├── __openerp__.py │ ├── res │ │ ├── nginx.config │ │ ├── proxy-sslonly.config │ │ └── proxy.config │ ├── template.py │ └── template.xml └── clouder_users │ ├── __init__.py │ ├── __openerp__.py │ └── deploy.py ├── clouder ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── clouder_runner_docker │ ├── __init__.py │ ├── runner.py │ ├── template.py │ └── template.xml ├── clouder_template_backup │ ├── __init__.py │ ├── template.py │ └── template.xml ├── clouder_template_registry │ ├── __init__.py │ ├── template.py │ └── template.xml ├── clouder_template_salt │ ├── __init__.py │ ├── template.py │ └── template.xml ├── clouder_template_ssh │ ├── __init__.py │ ├── template.py │ └── template.xml ├── data │ └── data.xml ├── exceptions.py ├── images │ ├── backup-bup │ │ └── Dockerfile │ ├── base-ubuntu │ │ └── Dockerfile │ ├── base │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-entrypoint.sh │ │ └── tests │ │ │ ├── test_command_running │ │ │ └── test_entrypoint │ ├── nginx │ │ └── Dockerfile │ ├── php │ │ └── Dockerfile │ └── ssh │ │ └── Dockerfile ├── models │ ├── __init__.py │ ├── application.py │ ├── application_link.py │ ├── application_metadata.py │ ├── application_option.py │ ├── application_tag.py │ ├── application_template.py │ ├── application_type.py │ ├── application_type_option.py │ ├── backup.py │ ├── base.py │ ├── base_child.py │ ├── base_link.py │ ├── base_metadata.py │ ├── base_option.py │ ├── config_backup_method.py │ ├── config_settings.py │ ├── domain.py │ ├── environment.py │ ├── image.py │ ├── image_port.py │ ├── image_template.py │ ├── image_version.py │ ├── image_volume.py │ ├── job.py │ ├── model.py │ ├── node.py │ ├── one_click.py │ ├── provider.py │ ├── service.py │ ├── service_child.py │ ├── service_link.py │ ├── service_metadata.py │ ├── service_option.py │ ├── service_port.py │ ├── service_volume.py │ ├── template_one_2_many.py │ └── volume.py ├── res │ └── sed.sh ├── security │ ├── ir.model.access.csv │ └── security.xml ├── sources │ ├── __init__.py │ ├── _modules │ │ └── clouder.py │ ├── check_backup │ ├── check_mem.pl │ ├── reactor.conf │ ├── salt-api.conf │ └── salt-master │ │ ├── _modules │ │ └── clouder.py │ │ ├── base_update.sls │ │ ├── service_deploy.sls │ │ ├── service_deploy_api.sls │ │ ├── service_purge.sls │ │ ├── service_start.sls │ │ └── service_stop.sls ├── ssh │ ├── __init__.py │ └── environment.py ├── tests │ ├── __init__.py │ ├── common.py │ ├── ssh │ │ ├── __init__.py │ │ └── test_ssh_environment.py │ └── test_docker_clouder_base.py ├── tools.py └── views │ ├── ir_actions.xml │ └── view.xml ├── clouder_asynchronous ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── clouder_asynchronous.py ├── clouder_asynchronous.xml └── security │ └── ir.model.access.csv ├── clouder_invoicing ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── clouder_invoicing.py ├── clouder_invoicing_data.xml ├── clouder_invoicing_view.xml ├── i18n │ └── fr.po └── security │ └── ir.model.access.csv ├── clouder_metric ├── README.md ├── __init__.py ├── __manifest__.py ├── models │ ├── __init__.py │ ├── clouder_metric_interface.py │ ├── clouder_metric_type.py │ └── clouder_metric_value.py ├── security │ └── ir.model.access.csv └── tests │ ├── __init__.py │ ├── common.py │ ├── test_clouder_metric_interface.py │ └── test_clouder_metric_type.py ├── clouder_runner_kubernetes ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── template.py └── template.xml ├── clouder_runner_openshift ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── res │ └── service.config ├── runner.py ├── template.py └── template.xml ├── clouder_template_dns ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── bind.py ├── bind.xml ├── cloud_dns.py ├── cloud_dns.xml ├── common.py ├── images │ └── bind │ │ ├── Dockerfile │ │ └── Dockerfile_alpine └── res │ └── bind.config ├── clouder_template_drupal ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── oneclick.py ├── res │ ├── drush.make │ ├── nginx.config │ ├── proxy-sslonly.config │ └── proxy.config ├── template.py └── template.xml ├── clouder_template_drupal_wikicompare ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── res │ ├── drush.make │ ├── patch │ │ ├── dev_zen_rebuild_registry.patch │ │ └── revisioning_postgres.patch │ └── wikicompare.script ├── template.py └── template.xml ├── clouder_template_elasticsearch ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── data │ ├── application.xml │ ├── application_link.xml │ ├── application_tag.xml │ ├── application_template.xml │ ├── application_type.xml │ ├── image.xml │ ├── image_port.xml │ ├── image_template.xml │ └── image_volume.xml ├── images │ ├── elasticsearch5-data │ │ ├── Dockerfile │ │ └── etc │ │ │ ├── elasticsearch.yml │ │ │ └── logging.yml │ └── elasticsearch5-exec │ │ ├── Dockerfile │ │ └── docker-entrypoint.sh └── models │ ├── __init__.py │ ├── backup copy.py │ └── backup.py ├── clouder_template_gitlab ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── oneclick.py ├── res │ ├── proxy-sslonly.config │ └── proxy.config ├── sources │ ├── database.yml │ ├── default │ ├── gitlab.yml │ ├── logrotate │ ├── rack_attack.rb │ ├── resque.yml │ ├── secrets.yml │ └── unicorn.rb ├── template.py ├── template_gitlab.xml └── template_gitlabci.xml ├── clouder_template_magento ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── res │ ├── proxy-sslonly.config │ └── proxy.config ├── sources │ ├── config.xml │ └── magento.conf ├── template.py └── template.xml ├── clouder_template_mail ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── images │ ├── postfix │ │ ├── Dockerfile │ │ ├── Dockerfile_alpine │ │ └── openerp_mailgate.py │ └── spamassassin │ │ └── Dockerfile ├── template.py └── template.xml ├── clouder_template_mautic ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── oneclick.py ├── res │ ├── nginx.config │ ├── proxy-sslonly.config │ └── proxy.config ├── template.py └── template.xml ├── clouder_template_mysql ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── template.py └── template.xml ├── clouder_template_odoo ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── images │ ├── odoo-ssh │ │ └── Dockerfile │ ├── odoo │ │ ├── Dockerfile │ │ └── odoo.conf │ ├── odoo10-clouder │ │ └── Dockerfile │ ├── odoo10 │ │ └── Dockerfile │ ├── odoo8-clouder │ │ └── Dockerfile │ ├── odoo8 │ │ └── Dockerfile │ ├── odoo9-clouder │ │ └── Dockerfile │ └── odoo9 │ │ └── Dockerfile ├── oneclick.py ├── res │ ├── .gitignore │ ├── .gitlab-ci.yml │ ├── Dockerfile │ ├── gitignore │ ├── gitlab-ci.yml │ ├── openerp.config │ ├── openerp.init │ ├── proxy-sslonly.config │ └── proxy.config ├── template.py └── template.xml ├── clouder_template_piwik ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── res │ ├── nginx.config │ ├── proxy-sslonly.config │ └── proxy.config ├── template.py └── template.xml ├── clouder_template_postgres ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── images │ └── postgres │ │ └── Dockerfile ├── template.py └── template.xml ├── clouder_template_proxy ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── images │ └── proxy │ │ └── Dockerfile ├── res │ ├── apache-sslonly.config │ ├── apache.config │ ├── nginx-proxy.config │ ├── nginx-ssl.config │ ├── nginx.config │ ├── proxy-root.config │ ├── proxy-sslonly.config │ └── proxy.config ├── template.py └── template.xml ├── clouder_template_redis ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py └── template.xml ├── clouder_template_shinken ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── res │ ├── base-shinken-no-backup.config │ ├── base-shinken.config │ ├── control_backup.sh │ ├── general-shinken.config │ ├── node-shinken.config │ ├── proxy-sslonly.config │ ├── proxy.config │ ├── service-shinken-no-backup.config │ └── service-shinken.config ├── template.py └── template.xml ├── clouder_template_wordpress ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── oneclick.py ├── res │ ├── nginx.config │ ├── proxy-sslonly.config │ └── proxy.config ├── template.py └── template.xml ├── clouder_website ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── client_side_plugin │ └── index.html ├── clouder_website.py ├── clouder_website_view.xml ├── controller │ ├── __init__.py │ └── form_controller.py ├── i18n │ └── fr.po ├── security │ └── ir.model.access.csv ├── static │ ├── lib │ │ └── fontawesome │ │ │ ├── css │ │ │ └── font-awesome.css │ │ │ └── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ └── src │ │ ├── css │ │ └── plugin.css │ │ └── js │ │ └── plugin.js └── templates.xml ├── clouder_website_payment ├── README.rst ├── __init__.py ├── __manifest__.py ├── __openerp__.py ├── clouder_website_payment.py ├── clouder_website_payment_data.xml ├── clouder_website_payment_view.xml ├── controller │ ├── __init__.py │ └── form_controller_extend.py ├── i18n │ └── fr.po ├── static │ └── src │ │ └── js │ │ └── clouder_website_payment.js └── templates.xml ├── doc ├── Makefile ├── applications.html ├── backups-configuration.html ├── cla │ ├── ccla-1.0.md │ ├── corporate │ │ └── microcom.md │ ├── icla-1.0.md │ ├── individual │ │ ├── ErrafayM.md │ │ ├── Yenthe666.md │ │ └── michielbdejong.md │ └── sign-cla.md ├── conf.py ├── connect-node.html ├── domains-bases.html ├── getting-started.html ├── images.html ├── images │ ├── application-backup.png │ ├── application-form.png │ ├── application-list.png │ ├── applicationtype-form.png │ ├── applicationtype-list.png │ ├── backup-form.png │ ├── backup-list.png │ ├── backup-log.png │ ├── base-backup.png │ ├── base-list.png │ ├── base-log.png │ ├── configuration-provider.png │ ├── domain-list.png │ ├── domain-log.png │ ├── gettingstarted-base.png │ ├── gettingstarted-configuration.png │ ├── gettingstarted-domain.png │ ├── gettingstarted-environment.png │ ├── gettingstarted-moduleslist.png │ ├── gettingstarted-server-log.png │ ├── gettingstarted-server.png │ ├── gettingstarted-services-with-children.png │ ├── gettingstarted-services.png │ ├── image-form.png │ ├── image-list.png │ ├── server-libcloud.png │ ├── server-log.png │ ├── service-backup.png │ ├── service-form.png │ ├── service-log.png │ └── service-reset.png ├── index.html ├── requirements.txt └── services.html ├── oca_dependencies.txt ├── requirements.txt └── sale_clouder ├── README.md ├── __init__.py ├── __manifest__.py ├── data ├── contract_line_qty_formula.xml └── sale_clouder.xml ├── models ├── __init__.py ├── clouder_contract.py ├── clouder_contract_line.py └── product_template.py ├── security └── ir.model.access.csv └── tests ├── __init__.py ├── test_clouder_contract.py └── test_product_template.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | eggs/ 15 | lib/ 16 | lib64/ 17 | parts/ 18 | sdist/ 19 | var/ 20 | *.egg-info/ 21 | .installed.cfg 22 | *.egg 23 | 24 | # Installer logs 25 | pip-log.txt 26 | pip-delete-this-directory.txt 27 | 28 | # Unit test / coverage reports 29 | htmlcov/ 30 | .tox/ 31 | .coverage 32 | .cache 33 | nosetests.xml 34 | coverage.xml 35 | 36 | # Translations 37 | *.mo 38 | 39 | # Pycharm 40 | .idea 41 | 42 | # Mr Developer 43 | .mr.developer.cfg 44 | .project 45 | .pydevproject 46 | 47 | # Rope 48 | .ropeproject 49 | 50 | # Sphinx documentation 51 | doc/_build/ 52 | 53 | # Backup files 54 | *~ 55 | *.swp 56 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | 3 | sudo: required 4 | 5 | cache: 6 | apt: true 7 | directories: 8 | - $HOME/.cache/pip 9 | 10 | python: 11 | - "2.7" 12 | 13 | services: 14 | - docker 15 | 16 | addons: 17 | apt: 18 | 19 | packages: 20 | - expect-dev # provides unbuffer utility 21 | - python-lxml 22 | - python-simplejson 23 | - python-serial 24 | - python-yaml 25 | - unixodbc-dev 26 | 27 | env: 28 | global: 29 | - VERSION="10.0" TESTS="0" LINT_CHECK="0" TRANSIFEX="0" 30 | - LINT_IGNORE="DL4001" 31 | 32 | matrix: 33 | - LINT_CHECK="1" 34 | - TESTS="1" ODOO_REPO="odoo/odoo" 35 | - TESTS="1" ODOO_REPO="OCA/OCB" 36 | 37 | virtualenv: 38 | system_site_packages: true 39 | 40 | install: 41 | - git clone --depth=1 https://github.com/OCA/maintainer-quality-tools.git ${HOME}/maintainer-quality-tools 42 | - git clone --depth=1 https://github.com/LasLabs/docker-quality-tools.git ${HOME}/docker-quality-tools 43 | - export PATH=${HOME}/maintainer-quality-tools/travis:${PATH} 44 | - travis_install_nightly 45 | 46 | script: 47 | - travis_run_tests 48 | 49 | after_success: 50 | - travis_after_tests_success 51 | -------------------------------------------------------------------------------- /__unfinished__/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /__unfinished__/clouder_invoicing_master/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import clouder_invoicing_master 24 | 25 | -------------------------------------------------------------------------------- /__unfinished__/clouder_invoicing_master/clouder_invoicing_master_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | clouder, clouder_invoicing 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_bluemind/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_bluemind/template.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from odoo import models, api, modules 24 | 25 | 26 | class ClouderContainer(models.Model): 27 | """ 28 | Add methods to manage the bluemind service specificities. 29 | """ 30 | 31 | _inherit = 'clouder.service' 32 | 33 | @api.multi 34 | def hook_deploy_special_args(self, cmd): 35 | cmd = super(ClouderContainer, self).hook_deploy_special_args(cmd) 36 | if self.application_id.type_id.name == 'bluemind': 37 | cmd.extend(['-h', self.options['domain']['value'].split('.')[0]]) 38 | return cmd 39 | 40 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_cas/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | # from . import clouder_template_cas 24 | 25 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_cas/__openerp__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template CAS', 25 | 'version': '1.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'Other OSI approved licence', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'description': """ 32 | Clouder Template CAS 33 | """, 34 | 'demo': [], 35 | 'data': ['clouder_template_cas_data.xml'], 36 | 'installable': True, 37 | 'application': True, 38 | } 39 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_cas/clouder_template_cas.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from odoo import models, fields 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_dolibarr/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | # -*- coding: utf-8 -*- 3 | ############################################################################## 4 | # 5 | # Author: Yannick Buron 6 | # Copyright 2015, TODAY Clouder SASU 7 | # 8 | # This program is free software: you can redistribute it and/or modify 9 | # it under the terms of the GNU Lesser General Public License with Attribution 10 | # clause as published by the Free Software Foundation, either version 3 of the 11 | # License, or (at your option) any later version. 12 | # 13 | # This program is distributed in the hope that it will be useful, 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | # GNU Lesser General Public License for more details. 17 | # 18 | # You should have received a copy of the GNU Lesser General Public License with 19 | # Attribution clause along with this program. If not, see 20 | # . 21 | # 22 | ############################################################################## 23 | 24 | # from . import template 25 | 26 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_dolibarr/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_ldap/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | # from . import clouder_template_ldap 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_ldap/__openerp__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template LDAP', 25 | 'version': '1.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder', 28 | 'clouder_template_shinken'], 29 | 'author': 'Yannick Buron (Clouder)', 30 | 'license': 'Other OSI approved licence', 31 | 'website': 'https://github.com/clouder-community/clouder', 32 | 'description': """ 33 | Clouder Template LDAP 34 | """, 35 | 'demo': [], 36 | 'data': ['clouder_template_ldap_data.xml'], 37 | 'installable': True, 38 | 'application': True, 39 | } 40 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_ldap/res/ldap.ldif: -------------------------------------------------------------------------------- 1 | dn: olcDatabase={1}hdb,cn=config 2 | changetype: modify 3 | replace: olcAccess 4 | olcAccess: {0}to * 5 | by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write 6 | by dn.base="cn=admin,$DOMAIN" write 7 | by * none 8 | 9 | dn: ou=people,$DOMAIN 10 | objectClass: organizationalUnit 11 | ou: people 12 | 13 | dn: ou=groups,$DOMAIN 14 | objectClass: organizationalUnit 15 | ou: groups -------------------------------------------------------------------------------- /__unfinished__/clouder_template_mattermost/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_mattermost/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_odoo_community/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_owncloud/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_owncloud/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_rainloop/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_rainloop/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_reactioncommerce/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_seafile/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import clouder_template_seafile 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_seafile/__openerp__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Seafile', 25 | 'version': '1.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'Other OSI approved licence', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'description': """ 32 | Clouder Seafile 33 | """, 34 | 'demo': [], 35 | 'data': ['clouder_template_seafile_data.xml'], 36 | 'installable': True, 37 | 'application': True, 38 | } 39 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_seafile/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name BASE.DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/BASE.DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/BASE.DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | } 33 | 34 | } 35 | 36 | 37 | ## http redirects to https ## 38 | server { 39 | listen 80; 40 | server_name BASE.DOMAIN; 41 | 42 | # Strict Transport Security 43 | add_header Strict-Transport-Security max-age=2592000; 44 | rewrite ^/.*$ https://$host$request_uri? permanent; 45 | } -------------------------------------------------------------------------------- /__unfinished__/clouder_template_taiga/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /__unfinished__/clouder_template_taiga/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /__unfinished__/clouder_users/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import deploy 24 | 25 | -------------------------------------------------------------------------------- /__unfinished__/clouder_users/__openerp__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Users', 25 | 'version': '1.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder', 28 | 'clouder_template_ldap', 29 | 'ldap_admin'], 30 | 'author': 'Yannick Buron (Clouder)', 31 | 'license': 'Other OSI approved licence', 32 | 'website': 'https://github.com/clouder-community/clouder', 33 | 'description': """ 34 | Clouder Users 35 | """, 36 | 'demo': [], 37 | 'data': [], 38 | 'installable': True, 39 | 'application': True, 40 | } 41 | -------------------------------------------------------------------------------- /clouder/README.rst: -------------------------------------------------------------------------------- 1 | ======= 2 | Clouder 3 | ======= 4 | -------------------------------------------------------------------------------- /clouder/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | from . import models 6 | from . import clouder_runner_docker 7 | from . import clouder_template_registry 8 | from . import clouder_template_backup 9 | from . import clouder_template_salt 10 | from . import clouder_template_ssh 11 | -------------------------------------------------------------------------------- /clouder/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | { 6 | 'name': 'Clouder', 7 | 'version': '10.0.10.0.0', 8 | 'category': 'Clouder', 9 | 'depends': ['base'], 10 | 'author': 'Yannick Buron (Clouder), LasLabs', 11 | 'license': 'LGPL-3', 12 | 'website': 'https://github.com/clouder-community/clouder', 13 | 'demo': [], 14 | 'data': [ 15 | 'views/view.xml', 16 | 'views/ir_actions.xml', 17 | 'data/data.xml', 18 | 'security/security.xml', 19 | 'security/ir.model.access.csv', 20 | 'clouder_template_backup/template.xml', 21 | 'clouder_template_registry/template.xml', 22 | 'clouder_template_salt/template.xml', 23 | 'clouder_template_ssh/template.xml', 24 | 'clouder_runner_docker/template.xml', 25 | ], 26 | 'external_dependencies': { 27 | 'python': [ 28 | 'libcloud', 29 | 'paramiko', 30 | ], 31 | }, 32 | 'installable': True, 33 | 'application': True, 34 | } 35 | -------------------------------------------------------------------------------- /clouder/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder/clouder_runner_docker/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | from . import runner 6 | from . import template 7 | -------------------------------------------------------------------------------- /clouder/clouder_template_backup/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | from . import template 6 | -------------------------------------------------------------------------------- /clouder/clouder_template_registry/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | from . import template 6 | -------------------------------------------------------------------------------- /clouder/clouder_template_salt/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | from . import template 6 | -------------------------------------------------------------------------------- /clouder/clouder_template_ssh/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | from . import template 6 | -------------------------------------------------------------------------------- /clouder/clouder_template_ssh/template.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | try: 6 | from odoo import models, api 7 | except ImportError: 8 | from openerp import models, api 9 | 10 | 11 | class ClouderService(models.Model): 12 | """ 13 | Add a property. 14 | """ 15 | 16 | _inherit = 'clouder.service' 17 | 18 | @api.multi 19 | def deploy_post(self): 20 | super(ClouderService, self).deploy_post() 21 | if self.application_id.type_id.name == 'ssh': 22 | self.execute(['mkdir /root/.ssh']) 23 | self.execute([ 24 | 'echo "' + self.options['ssh_publickey']['value'] + 25 | '" > /root/.ssh/authorized_keys']) 26 | -------------------------------------------------------------------------------- /clouder/exceptions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo.exceptions import ValidationError 8 | except ImportError: 9 | from openerp.exceptions import ValidationError 10 | 11 | 12 | class ClouderError(ValidationError): 13 | """ It provides an error containing Clouder specific logic 14 | 15 | Attributes: 16 | model_obj: (clouder.model.ClouderModel) Clouder model instance that 17 | trigger this error 18 | """ 19 | 20 | def __init__(self, model_obj, message): 21 | """ It throws error, stores the model_obj for use, and issues log 22 | :param model_obj: (clouder.model.ClouderModel) Clouder model object 23 | that is triggering the exception 24 | :param message: (str) Message to throw and log 25 | :raises: (ClouderError) Exception after generating appropriate log 26 | """ 27 | try: 28 | model_obj.log('Raising error: "%s"' % message) 29 | model_obj.log('Version: "%s"' % model_obj.version) 30 | except AttributeError: 31 | # Model does not _inherit `clouder.model` 32 | pass 33 | self.model_obj = model_obj 34 | super(ClouderError, self).__init__(message) 35 | -------------------------------------------------------------------------------- /clouder/images/base-ubuntu/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | MAINTAINER Yannick Buron yburon@goclouder.net 3 | 4 | # generate a locale and ensure it on system users 5 | RUN locale-gen en_US.UTF-8 && update-locale && echo 'LANG="en_US.UTF-8"' > /etc/default/locale 6 | ENV LANG en_US.UTF-8 7 | ENV LANGUAGE en_US:en 8 | ENV LC_ALL en_US.UTF-8 9 | # add some system packages 10 | RUN apt-get update && apt-get -y -q install \ 11 | sudo less \ 12 | net-tools \ 13 | --no-install-recommends 14 | RUN DEBIAN_FRONTEND=noninteractive apt-get install -y vim ssmtp mailutils wget patch rsync ca-certificates 15 | #/usr/bin/mail is used by shinken. I did all I could but I couldn't make it call ssmtp for the relay to postfix container. 16 | #Be cautious to any application which also use it. 17 | RUN rm /usr/bin/mail 18 | RUN ln -s /usr/sbin/ssmtp /usr/bin/mail 19 | #RUN echo "" > /etc/ssmtp/ssmtp.conf 20 | -------------------------------------------------------------------------------- /clouder/images/base/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.5 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN apk add --update ssmtp wget curl rsync bash 5 | 6 | # generate a locale and ensure it on system users 7 | #RUN locale-gen en_US.UTF-8 && update-locale && echo 'LANG="en_US.UTF-8"' > /etc/default/locale 8 | #ENV LANG en_US.UTF-8 9 | #ENV LANGUAGE en_US:en 10 | #ENV LC_ALL en_US.UTF-8 11 | # add some system packages 12 | #RUN apt-get update && apt-get -y -q install \ 13 | # sudo less \ 14 | # net-tools \ 15 | # --no-install-recommends 16 | #RUN DEBIAN_FRONTEND=noninteractive apt-get install -y vim ssmtp mailutils wget patch rsync ca-certificates 17 | #/usr/bin/mail is used by shinken. I did all I could but I couldn't make it call ssmtp for the relay to postfix service. 18 | #Be cautious to any application which also use it. 19 | #RUN rm /usr/bin/mail 20 | #RUN ln -s /usr/sbin/ssmtp /usr/bin/mail 21 | #RUN echo "" > /etc/ssmtp/ssmtp.conf 22 | 23 | COPY ./docker-entrypoint.sh / 24 | 25 | ENTRYPOINT ["/docker-entrypoint.sh"] 26 | CMD cat 27 | -------------------------------------------------------------------------------- /clouder/images/base/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright 2017 LasLabs Inc. 3 | # License MIT (https://opensource.org/licenses/MIT). 4 | 5 | set -e 6 | 7 | COMMAND=ash 8 | 9 | # Add $COMMAND if needed 10 | if [ "${1:0:1}" = '-' ]; then 11 | set -- $COMMAND "$@" 12 | fi 13 | 14 | # As argument is not related to $COMMAND, 15 | # then assume that user wants to run their own process, 16 | # for example a `bash` shell to explore this image 17 | exec "$@" 18 | -------------------------------------------------------------------------------- /clouder/images/base/tests/test_command_running: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # Copyright 2016 LasLabs Inc. 3 | # License MIT or later (https://opensource.org/licenses/MIT). 4 | 5 | # This script will test to see that $COMMAND is running on the Docker container. 6 | 7 | set -e 8 | 9 | # Change ``cat`` to be whatever command you are looking for in ``ps aux`` 10 | COMMAND="cat" 11 | 12 | OUTPUT=`docker exec -i -t $DOCKER_CONTAINER_ID ps aux` 13 | 14 | echo $OUTPUT | grep -q $COMMAND 15 | 16 | echo "$COMMAND is running on $DOCKER_CONTAINER_ID" 17 | -------------------------------------------------------------------------------- /clouder/images/base/tests/test_entrypoint: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # Copyright 2016 LasLabs Inc. 3 | # License MIT or later (https://opensource.org/licenses/MIT). 4 | 5 | # This script will test that the entrypoint passes through commands. 6 | 7 | set -e 8 | 9 | OUTPUT=`docker exec -i -t $DOCKER_CONTAINER_ID echo "test"` 10 | 11 | echo "Command in $DOCKER_CONTAINER_ID responded with:" 12 | echo $OUTPUT 13 | 14 | echo $OUTPUT | grep -q "test" 15 | -------------------------------------------------------------------------------- /clouder/images/nginx/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM clouder/base:3.4 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN apk add --update --no-cache nginx openssl 5 | # nginx config 6 | RUN sed -i -e"s/keepalive_timeout\s*65/keepalive_timeout 2/" /etc/nginx/nginx.conf 7 | RUN echo "daemon off;" >> /etc/nginx/nginx.conf 8 | #RUN chsh -s /bin/bash www-data 9 | RUN mkdir /run/nginx 10 | RUN mkdir /run/php 11 | #RUN mkdir /var/www 12 | #RUN chown www-data:www-data /var/www/ 13 | 14 | #RUN mkdir /run/nginx 15 | RUN mkdir /etc/nginx/sites-available 16 | RUN mkdir /etc/nginx/sites-enabled 17 | RUN sed -i '/http {/a include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf 18 | CMD nginx -------------------------------------------------------------------------------- /clouder/images/php/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:nginx 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN apk add --update supervisor \ 5 | php7-fpm php7-json php7-zlib php7-xml php7-pdo php7-phar php7-openssl \ 6 | php7-pdo_mysql php7-mysqli php7-session \ 7 | php7-gd php7-iconv php7-mcrypt \ 8 | php7-curl php7-opcache php7-ctype php7-apcu \ 9 | php7-intl php7-bcmath php7-mbstring php7-dom php7-xmlreader mysql-client openssh-client 10 | 11 | RUN echo "" >> /etc/supervisord.conf 12 | RUN echo "[supervisord]" >> /etc/supervisord.conf 13 | RUN echo "nodaemon=true" >> /etc/supervisord.conf 14 | RUN echo "" >> /etc/supervisord.conf 15 | RUN echo "[program:nginx]" >> /etc/supervisord.conf 16 | RUN echo "command=nginx" >> /etc/supervisord.conf 17 | RUN echo "[program:php]" >> /etc/supervisord.conf 18 | RUN echo "command=php-fpm7" >> /etc/supervisord.conf 19 | 20 | CMD supervisord -c /etc/supervisord.conf 21 | -------------------------------------------------------------------------------- /clouder/images/ssh/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM clouder/base:3.4 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN touch /tmp/odoo-ssh 5 | RUN apk add --update openssh 6 | RUN mkdir /var/run/sshd 7 | RUN chmod 0755 /var/run/sshd 8 | RUN /usr/bin/ssh-keygen -A 9 | USER root 10 | 11 | CMD /usr/sbin/sshd -ddd -------------------------------------------------------------------------------- /clouder/models/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 4 | 5 | # Core 6 | from . import model 7 | 8 | from . import domain 9 | from . import environment 10 | from . import job 11 | from . import one_click 12 | from . import provider 13 | from . import backup 14 | from . import node 15 | from . import template_one_2_many 16 | 17 | # Application 18 | from . import application 19 | from . import application_link 20 | from . import application_metadata 21 | from . import application_option 22 | from . import application_tag 23 | from . import application_template 24 | from . import application_type 25 | from . import application_type_option 26 | 27 | # Base 28 | from . import base 29 | from . import base_child 30 | from . import base_link 31 | from . import base_metadata 32 | from . import base_option 33 | 34 | # Config 35 | from . import config_backup_method 36 | from . import config_settings 37 | 38 | # Service 39 | from . import service 40 | from . import service_child 41 | from . import service_link 42 | from . import service_metadata 43 | from . import service_option 44 | from . import service_port 45 | from . import service_volume 46 | 47 | # Volume 48 | from . import volume 49 | 50 | # Image 51 | from . import image 52 | from . import image_port 53 | from . import image_template 54 | from . import image_version 55 | from . import image_volume 56 | -------------------------------------------------------------------------------- /clouder/models/application_option.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields 8 | except ImportError: 9 | from openerp import models, fields 10 | 11 | 12 | class ClouderApplicationOption(models.Model): 13 | """ 14 | Define the application.option object, used to define custom values specific 15 | to an application. 16 | """ 17 | 18 | _name = 'clouder.application.option' 19 | 20 | application_id = fields.Many2one('clouder.application', 'Application', 21 | ondelete="cascade", required=False) 22 | template_id = fields.Many2one( 23 | 'clouder.application.template', 'Template', ondelete="cascade") 24 | name = fields.Many2one('clouder.application.type.option', 'Option', 25 | required=True) 26 | value = fields.Text('Value') 27 | 28 | _sql_constraints = [ 29 | ('name_uniq', 'unique(application_id,template_id,name)', 30 | 'Option name must be unique per application!'), 31 | ] 32 | -------------------------------------------------------------------------------- /clouder/models/application_tag.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | try: 6 | from odoo import models, fields 7 | except ImportError: 8 | from openerp import models, fields 9 | 10 | 11 | class ClouderApplicationTag(models.Model): 12 | 13 | _name = 'clouder.application.tag' 14 | 15 | name = fields.Char('Name', required=True) 16 | code = fields.Char('Code', required=True) 17 | application_ids = fields.Many2many( 18 | 'clouder.application', 'clouder_application_tag_rel', 19 | 'tag_id', 'application_id', 'Applications') 20 | -------------------------------------------------------------------------------- /clouder/models/application_template.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | try: 6 | from odoo import models, fields 7 | except ImportError: 8 | from openerp import models, fields 9 | 10 | 11 | class ClouderApplicationTemplate(models.Model): 12 | """ 13 | """ 14 | 15 | _name = 'clouder.application.template' 16 | 17 | name = fields.Char('Name', required=True) 18 | link_ids = fields.One2many('clouder.application.link', 'template_id', 19 | 'Links') 20 | -------------------------------------------------------------------------------- /clouder/models/base_option.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields, api 8 | except ImportError: 9 | from openerp import models, fields, api 10 | 11 | 12 | class ClouderBaseOption(models.Model): 13 | """ 14 | Define the base.option object, used to define custom values specific 15 | to a base. 16 | """ 17 | _name = 'clouder.base.option' 18 | 19 | base_id = fields.Many2one('clouder.base', 'Base', ondelete="cascade", 20 | required=True) 21 | name = fields.Many2one('clouder.application.type.option', 'Option', 22 | required=True) 23 | value = fields.Text('Value') 24 | 25 | _sql_constraints = [ 26 | ('name_uniq', 'unique(base_id,name)', 27 | 'Option name must be unique per base!'), 28 | ] 29 | 30 | @api.multi 31 | @api.constrains('base_id') 32 | def _check_required(self): 33 | """ 34 | Check that we specify a value for the option 35 | if this option is required. 36 | """ 37 | if self.name.required and not self.value: 38 | self.raise_error( 39 | 'You need to specify a value for the option "%s" ' 40 | 'for the base "%s".', 41 | (self.name.name, self.base_id.name), 42 | ) 43 | -------------------------------------------------------------------------------- /clouder/models/config_backup_method.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | try: 6 | from odoo import models, fields 7 | except ImportError: 8 | from openerp import models, fields 9 | 10 | 11 | class ClouderConfigBackupMethod(models.Model): 12 | """ 13 | Define the config.backup.method object, which represent all backup method 14 | available for backup. 15 | """ 16 | 17 | _name = 'clouder.config.backup.method' 18 | _description = 'Backup Method' 19 | 20 | name = fields.Char('Name', required=True) 21 | -------------------------------------------------------------------------------- /clouder/models/image_port.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields 8 | except ImportError: 9 | from openerp import models, fields 10 | 11 | 12 | class ClouderImagePort(models.Model): 13 | """ 14 | Define the image.port object, which represent the ports which 15 | will define the ports in the generated image and which will be inherited 16 | in the services. 17 | """ 18 | 19 | _name = 'clouder.image.port' 20 | _description = 'Clouder Image Port' 21 | 22 | _inherit = ['clouder.template.one2many'] 23 | 24 | _sql_constraints = [ 25 | ('name_uniq', 'unique(image_id,template_id,name)', 26 | 'Port name must be unique per image!') 27 | ] 28 | 29 | _template_parent_model = 'clouder.image' 30 | _template_parent_many2one = 'image_id' 31 | _template_fields = ['local_port', 'expose', 'udp', 'use_hostport'] 32 | 33 | image_id = fields.Many2one('clouder.image', 'Image', ondelete="cascade", 34 | required=False) 35 | template_id = fields.Many2one( 36 | 'clouder.image.template', 'Template', ondelete="cascade") 37 | name = fields.Char('Name', required=True) 38 | local_port = fields.Char('Local port', required=True) 39 | expose = fields.Selection( 40 | [('internet', 'Internet'), ('local', 'Local'), ('none', 'None')], 41 | 'Expose?', required=True, default='local') 42 | udp = fields.Boolean('UDP?') 43 | use_hostport = fields.Boolean('Use hostport?') 44 | -------------------------------------------------------------------------------- /clouder/models/image_template.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields 8 | except ImportError: 9 | from openerp import models, fields 10 | 11 | 12 | class ClouderImageTemplate(models.Model): 13 | """ 14 | """ 15 | 16 | _name = 'clouder.image.template' 17 | _description = 'Clouder Image Template' 18 | 19 | name = fields.Char('Image name', required=True) 20 | volume_ids = fields.One2many( 21 | 'clouder.image.volume', 'template_id', 'Volumes') 22 | port_ids = fields.One2many('clouder.image.port', 'template_id', 'Ports') 23 | -------------------------------------------------------------------------------- /clouder/models/image_volume.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields 8 | except ImportError: 9 | from openerp import models, fields 10 | 11 | 12 | class ClouderImageVolume(models.Model): 13 | """ 14 | Define the image.volume object, which represent the volumes which 15 | will define the volume in the generated image and which will be 16 | inherited in the services. 17 | """ 18 | 19 | _name = 'clouder.image.volume' 20 | _description = 'Clouder Image Volume' 21 | 22 | _inherit = ['clouder.template.one2many'] 23 | 24 | _sql_constraints = [ 25 | ('name_uniq', 'unique(image_id,template_id,name)', 26 | 'Volume name must be unique per image!'), 27 | ] 28 | 29 | _template_parent_model = 'clouder.image' 30 | _template_parent_many2one = 'image_id' 31 | _template_fields = ['localpath', 'hostpath', 32 | 'user', 'readonly', 'no_backup'] 33 | 34 | image_id = fields.Many2one( 35 | 'clouder.image', 'Image', ondelete="cascade", required=False) 36 | template_id = fields.Many2one( 37 | 'clouder.image.template', 'Template', ondelete="cascade") 38 | name = fields.Char('Name', required=True) 39 | localpath = fields.Char('Local Path', required=True) 40 | hostpath = fields.Char('Host path') 41 | user = fields.Char('System User') 42 | readonly = fields.Boolean('Readonly?') 43 | no_backup = fields.Boolean('No backup?') 44 | manual_update = fields.Boolean('Reset on Manual Update?') 45 | -------------------------------------------------------------------------------- /clouder/models/job.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields 8 | except ImportError: 9 | from openerp import models, fields 10 | 11 | 12 | class ClouderJob(models.Model): 13 | """ 14 | Define the clouder.job, 15 | used to store the log and it needed link to the connector job. 16 | """ 17 | 18 | _name = 'clouder.job' 19 | _description = 'Clouder Job' 20 | 21 | log = fields.Text('Log') 22 | name = fields.Char('Description') 23 | action = fields.Char('Action') 24 | res_id = fields.Integer('Res ID') 25 | model_name = fields.Char('Model') 26 | create_date = fields.Datetime('Created at') 27 | create_uid = fields.Many2one('res.users', 'By') 28 | start_date = fields.Datetime('Started at') 29 | end_date = fields.Datetime('Ended at') 30 | state = fields.Selection([ 31 | ('started', 'Started'), ('done', 'Done'), ('failed', 'Failed')], 32 | 'State', readonly=True, required=True, select=True) 33 | 34 | _order = 'create_date desc' 35 | -------------------------------------------------------------------------------- /clouder/models/one_click.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields 8 | except ImportError: 9 | from openerp import models, fields 10 | 11 | 12 | class ClouderOneclick(models.Model): 13 | 14 | _name = 'clouder.oneclick' 15 | 16 | name = fields.Char('Nom', required=True) 17 | code = fields.Char('Code', required=True) 18 | -------------------------------------------------------------------------------- /clouder/models/service_option.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | 6 | try: 7 | from odoo import models, fields, api 8 | except ImportError: 9 | from openerp import models, fields, api 10 | 11 | 12 | import logging 13 | _logger = logging.getLogger(__name__) 14 | 15 | 16 | class ClouderServiceOption(models.Model): 17 | """ 18 | Define the service.option object, used to define custom values 19 | specific to a service. 20 | """ 21 | 22 | _name = 'clouder.service.option' 23 | 24 | service_id = fields.Many2one( 25 | 'clouder.service', 'Service', ondelete="cascade", required=True) 26 | name = fields.Many2one( 27 | 'clouder.application.type.option', 'Option', required=True) 28 | value = fields.Text('Value') 29 | 30 | _sql_constraints = [ 31 | ('name_uniq', 'unique(service_id,name)', 32 | 'Option name must be unique per service!'), 33 | ] 34 | 35 | @api.multi 36 | @api.constrains('service_id') 37 | def _check_required(self): 38 | """ 39 | Check that we specify a value for the option 40 | if this option is required. 41 | """ 42 | if self.name.required and not self.value: 43 | self.raise_error( 44 | 'You need to specify a value for the option ' 45 | '"%s" for the service "%s".', 46 | (self.name.name, self.service_id.name), 47 | ) 48 | -------------------------------------------------------------------------------- /clouder/models/service_port.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | try: 6 | from odoo import models, fields 7 | except ImportError: 8 | from openerp import models, fields 9 | 10 | 11 | import logging 12 | _logger = logging.getLogger(__name__) 13 | 14 | 15 | class ClouderServicePort(models.Model): 16 | """ 17 | Define the service.port object, used to define the ports which 18 | will be mapped in the service. 19 | """ 20 | 21 | _name = 'clouder.service.port' 22 | 23 | service_id = fields.Many2one( 24 | 'clouder.service', 'Service', ondelete="cascade", required=True) 25 | name = fields.Char('Name', required=True) 26 | local_port = fields.Char('Local port', required=True) 27 | hostport = fields.Char('Host port') 28 | expose = fields.Selection( 29 | [('internet', 'Internet'), ('local', 'Local')], 'Expose?', 30 | required=True, default='local') 31 | udp = fields.Boolean('UDP?') 32 | use_hostport = fields.Boolean('Use hostpost?') 33 | 34 | _sql_constraints = [ 35 | ('name_uniq', 'unique(service_id,name)', 36 | 'Port name must be unique per service!'), 37 | ] 38 | -------------------------------------------------------------------------------- /clouder/models/service_volume.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | try: 6 | from odoo import models, fields 7 | except ImportError: 8 | from openerp import models, fields 9 | 10 | 11 | import logging 12 | _logger = logging.getLogger(__name__) 13 | 14 | 15 | class ClouderServiceVolume(models.Model): 16 | """ 17 | Define the service.volume object, used to define the volume which 18 | will be backuped in the service or will be linked to a directory 19 | in the host node. 20 | """ 21 | 22 | _name = 'clouder.service.volume' 23 | 24 | service_id = fields.Many2one( 25 | 'clouder.service', 'Service', ondelete="cascade", required=True) 26 | name = fields.Char('Name', required=True) 27 | localpath = fields.Char('Local Path', required=True) 28 | hostpath = fields.Char('Host path') 29 | user = fields.Char('System User') 30 | readonly = fields.Boolean('Readonly?') 31 | no_backup = fields.Boolean('No backup?') 32 | manual_update = fields.Boolean('Reset on Manual Update?') 33 | volume_id = fields.Many2one('clouder.volume', 'Volume') 34 | 35 | _sql_constraints = [ 36 | ('name_uniq', 'unique(service_id,name)', 37 | 'Volume name must be unique per service!'), 38 | ] 39 | -------------------------------------------------------------------------------- /clouder/models/volume.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://gnu.org/licenses/lgpl.html). 4 | 5 | import logging 6 | 7 | try: 8 | from odoo import models, fields, api, modules 9 | except ImportError: 10 | from openerp import models, fields, api, modules 11 | 12 | _logger = logging.getLogger(__name__) 13 | 14 | 15 | class ClouderVolume(models.Model): 16 | """ 17 | Define the volume object, which represent the volumes 18 | deployed by Clouder. 19 | """ 20 | 21 | _name = 'clouder.volume' 22 | _inherit = ['clouder.model'] 23 | _sql_constraints = [ 24 | ('name_uniq', 'unique(name)', 25 | 'This name already exists.'), 26 | ] 27 | 28 | name = fields.Char('Name', required=True) 29 | path = fields.Char('Path', required=True) 30 | node_id = fields.Many2one('clouder.node', 'Node', required=True) 31 | 32 | @api.multi 33 | def hook_deploy(self): 34 | """ 35 | Hook which can be called by submodules to execute commands to 36 | deploy a volume. 37 | """ 38 | return 39 | 40 | @api.multi 41 | def deploy(self): 42 | """ 43 | """ 44 | self.hook_deploy() 45 | super(ClouderVolume, self).deploy() 46 | 47 | @api.multi 48 | def hook_purge(self): 49 | """ 50 | Hook which can be called by submodules to execute commands to 51 | purge a volume. 52 | """ 53 | return 54 | 55 | @api.multi 56 | def purge(self): 57 | """ 58 | """ 59 | self.hook_purge() 60 | super(ClouderVolume, self).purge() 61 | -------------------------------------------------------------------------------- /clouder/res/sed.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sed -i "/Host ${1}/,/END ${1}/d" ${2} 4 | -------------------------------------------------------------------------------- /clouder/sources/__init__.py: -------------------------------------------------------------------------------- 1 | __author__ = 'nyx' 2 | -------------------------------------------------------------------------------- /clouder/sources/_modules/clouder.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import erppeek 4 | 5 | 6 | def base_update(host, name, user, password): 7 | """ 8 | """ 9 | 10 | client = erppeek.Client( 11 | 'http://' + host, db=name, user=user, password=password) 12 | client.upgrade('base') 13 | -------------------------------------------------------------------------------- /clouder/sources/check_backup: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS="," 3 | 4 | repo=$3 5 | 6 | directory=/opt/backup/simple/$repo/latest 7 | if [[ $1 == 'bup' ]] 8 | then 9 | directory=/tmp/check-backup/$repo 10 | rm -rf $directory 11 | mkdir -p $directory 12 | export BUP_DIR=/opt/backup/bup 13 | bup restore -C $directory $repo/latest 14 | 15 | directory=/tmp/check-backup/$repo/latest 16 | fi 17 | 18 | 19 | if ! [ -d $directory ] 20 | then 21 | echo "$3 backup missing." 22 | exit 2 23 | fi 24 | 25 | 26 | date=`date +%Y-%m-%d` 27 | date_backup=( $(cat $directory/backup-date) ) 28 | if [[ $date != $date_backup ]] 29 | then 30 | echo "No backup for today." 31 | exit 2 32 | fi 33 | 34 | if [[ $2 == 'base' ]] 35 | then 36 | for database in $4 37 | do 38 | if ! [ -s $directory/${database}.dump ] 39 | then 40 | echo "The database file ${database}.dump is empty." 41 | exit 2 42 | fi 43 | done 44 | fi 45 | 46 | 47 | 48 | if [[ $1 == 'bup' ]] 49 | then 50 | directory=/tmp/check-backup/$repo 51 | rm -rf $directory 52 | fi 53 | 54 | echo "Backup of ${3} OK" 55 | exit 0 56 | -------------------------------------------------------------------------------- /clouder/sources/reactor.conf: -------------------------------------------------------------------------------- 1 | reactor: 2 | - 'salt/netapi/hook/service_deploy': 3 | - /srv/salt/service_deploy_api.sls -------------------------------------------------------------------------------- /clouder/sources/salt-api.conf: -------------------------------------------------------------------------------- 1 | rest_cherrypy: 2 | port: 8080 3 | host: 0.0.0.0 4 | ssl_crt: /etc/ssl/private/cert.pem 5 | ssl_key: /etc/ssl/private/key.pem 6 | webhook_disable_auth: True 7 | webhook_url: /hook -------------------------------------------------------------------------------- /clouder/sources/salt-master/_modules/clouder.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import erppeek 4 | 5 | 6 | def base_update(host, name, user, password): 7 | """ 8 | """ 9 | 10 | client = erppeek.Client( 11 | 'http://' + host, db=name, user=user, password=password) 12 | client.upgrade('base') 13 | -------------------------------------------------------------------------------- /clouder/sources/salt-master/base_update.sls: -------------------------------------------------------------------------------- 1 | {% set base = pillar[pillar['base_name']] %} 2 | 3 | update: 4 | module.run: 5 | - name: clouder.base_update 6 | - host: {{ base['host'] }} 7 | - m_name: {{ base['name'] }} 8 | - user: {{ base['user'] }} 9 | - password: {{ base['password'] }} -------------------------------------------------------------------------------- /clouder/sources/salt-master/service_deploy_api.sls: -------------------------------------------------------------------------------- 1 | {% set postdata = data.get('post', {}) %} 2 | 3 | service deploy: 4 | local.state.apply: 5 | - tgt: {{ postdata.tgt }} 6 | - arg: 7 | - service_deploy 8 | - kwarg: 9 | pillar: 10 | service_name: {{ postdata.service_name }} 11 | image: {{ postdata.image }} 12 | secretkey: {{ postdata.secretkey }} 13 | update_bases: True -------------------------------------------------------------------------------- /clouder/sources/salt-master/service_purge.sls: -------------------------------------------------------------------------------- 1 | include: 2 | - service_stop 3 | 4 | purge: 5 | module.run: 6 | - name: dockerng.rm 7 | - args: 8 | - {{ pillar['service_name'] }} 9 | - kargs: 10 | - volumes = True -------------------------------------------------------------------------------- /clouder/sources/salt-master/service_start.sls: -------------------------------------------------------------------------------- 1 | include: 2 | - service_stop 3 | 4 | start: 5 | module.run: 6 | - name: dockerng.start 7 | - args: 8 | - {{ pillar['service_name'] }} -------------------------------------------------------------------------------- /clouder/sources/salt-master/service_stop.sls: -------------------------------------------------------------------------------- 1 | stop: 2 | dockerng.stopped: 3 | - name: {{ pillar['service_name'] }} 4 | -------------------------------------------------------------------------------- /clouder/ssh/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /clouder/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from . import test_docker_clouder_base 4 | 5 | from .ssh import test_ssh_environment 6 | -------------------------------------------------------------------------------- /clouder/tests/ssh/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from . import test_ssh_environment 4 | -------------------------------------------------------------------------------- /clouder/tests/test_docker_clouder_base.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 4 | 5 | import os 6 | 7 | from .common import SetUpDockerTest 8 | 9 | 10 | class TestDockerClouderBase(SetUpDockerTest): 11 | 12 | def setUp(self): 13 | super(TestDockerClouderBase, self).setUp() 14 | self.image_path = os.path.abspath(os.path.join( 15 | os.path.dirname(__file__), '..', 'images', 'base' 16 | )) 17 | 18 | def test_lint(self): 19 | self.do_test_lint(self.image_path) 20 | 21 | def test_tests(self): 22 | self.do_test_tests(self.image_path) 23 | -------------------------------------------------------------------------------- /clouder/tools.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2015 Clouder SASU 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). 4 | 5 | import string 6 | from random import SystemRandom 7 | 8 | 9 | def generate_random_password(size, punctuation=False): 10 | """ Method which can be used to generate a random password. 11 | 12 | :param size: (int) The size of the random string to generate 13 | :param punctuation: (bool) Allow punctuation in the password 14 | :return: (str) Psuedo-random string 15 | """ 16 | choice = SystemRandom().choice 17 | chars = '%s%s%s' % ( 18 | string.letters, string.digits, 19 | punctuation and string.punctuation or '', 20 | ) 21 | return ''.join(choice(chars) for _ in xrange(size)) 22 | -------------------------------------------------------------------------------- /clouder/views/ir_actions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Open Clouder Configuration 7 | reload 8 | 11 | 12 | 13 | 14 | open 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /clouder_asynchronous/README.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | Clouder asynchronous 3 | ==================== 4 | -------------------------------------------------------------------------------- /clouder_asynchronous/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Affero General Public License 9 | # as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Affero General Public License 18 | # with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import clouder_asynchronous 24 | 25 | -------------------------------------------------------------------------------- /clouder_asynchronous/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Affero General Public License 9 | # as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Affero General Public License 18 | # with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Asynchronous', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder', 'connector'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'AGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': [ 33 | 'security/ir.model.access.csv', 34 | ], 35 | 'installable': False, 36 | 'application': True, 37 | } 38 | -------------------------------------------------------------------------------- /clouder_asynchronous/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_asynchronous/clouder_asynchronous.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | clouder.job.form.asynchronous 7 | clouder.job 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | clouder.job.tree 20 | clouder.job 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /clouder_asynchronous/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_queue_job_user,queue_job user,connector.model_queue_job,clouder.group_clouder_user,1,1,1,1 3 | -------------------------------------------------------------------------------- /clouder_invoicing/README.rst: -------------------------------------------------------------------------------- 1 | ================= 2 | Clouder invoicing 3 | ================= 4 | -------------------------------------------------------------------------------- /clouder_invoicing/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import clouder_invoicing 24 | 25 | -------------------------------------------------------------------------------- /clouder_invoicing/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Invoicing', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['base', 'clouder', 'account', 'account_accountant', 'product'], 28 | 'author': 'Yannick Buron (Clouder), Nicolas Petit', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': [ 33 | 'security/ir.model.access.csv', 34 | 'clouder_invoicing_view.xml', 35 | 'clouder_invoicing_data.xml' 36 | ], 37 | 'installable': True, 38 | 'application': True, 39 | } 40 | -------------------------------------------------------------------------------- /clouder_invoicing/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_invoicing/clouder_invoicing_data.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Run Clouder Invoicing 7 | 1 8 | days 9 | -1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Container/Base Instance 20 | 21 | 22 | 23 | Container/Base Instance Fee 24 | 25 | 0 26 | 0 27 | service 28 | The service fee to keep an instance running 29 | The managing fee for your Container/Base instance 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /clouder_invoicing/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_clouder_invoicing_pricegrid_line_administrator,clouder_invoicing_pricegrid_line deployer,model_clouder_invoicing_pricegrid_line,clouder.group_clouder_deployer,1,1,1,1 3 | -------------------------------------------------------------------------------- /clouder_metric/README.md: -------------------------------------------------------------------------------- 1 | .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg 2 | :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html 3 | :alt: License: AGPL-3 4 | 5 | ============== 6 | Clouder Metric 7 | ============== 8 | 9 | This module provides models to ingest and store usage metrics from ELK about 10 | running instances. 11 | 12 | Installation 13 | ============ 14 | 15 | * Install module as normal 16 | 17 | 18 | Bug Tracker 19 | =========== 20 | 21 | Bugs are tracked on `GitHub Issues 22 | `_. 23 | 24 | Contributors 25 | ------------ 26 | 27 | * Dave Lasley 28 | * Ted Salmon 29 | -------------------------------------------------------------------------------- /clouder_metric/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from . import models 6 | -------------------------------------------------------------------------------- /clouder_metric/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | { 5 | "name": "Clouder - Metrics", 6 | "summary": "Provides Usage Metric Interface for Clouder", 7 | "version": "10.0.1.0.0", 8 | "category": "Clouder", 9 | "website": "https://github.com/clouder-community/clouder", 10 | "author": "LasLabs", 11 | "license": "AGPL-3", 12 | "application": False, 13 | "installable": True, 14 | "depends": [ 15 | 'base_external_dbsource', 16 | "clouder", 17 | "contract_variable_quantity", 18 | "sale", 19 | ], 20 | "data": [ 21 | "security/ir.model.access.csv", 22 | ], 23 | } 24 | -------------------------------------------------------------------------------- /clouder_metric/models/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from . import clouder_metric_type 6 | from . import clouder_metric_interface 7 | from . import clouder_metric_value 8 | -------------------------------------------------------------------------------- /clouder_metric/models/clouder_metric_value.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from odoo import fields, models 6 | 7 | 8 | class ClouderMetricValue(models.Model): 9 | """ It provides a record of metric values used in billing. """ 10 | 11 | _name = 'clouder.metric.value' 12 | _description = 'Clouder Metric Values' 13 | 14 | interface_id = fields.Many2one( 15 | string='Interface', 16 | comodel_name='clouder.metric.interface', 17 | required=True, 18 | ) 19 | value = fields.Float( 20 | required=True, 21 | ) 22 | uom_id = fields.Many2one( 23 | string='Unit of Measure', 24 | comodel_name='product.uom', 25 | ) 26 | date_start = fields.Datetime( 27 | string='Metric Start', 28 | ) 29 | date_end = fields.Datetime( 30 | string='Metric End', 31 | ) 32 | date_create = fields.Datetime( 33 | string='Creation Time', 34 | default=lambda s: fields.Datetime.now(), 35 | ) 36 | -------------------------------------------------------------------------------- /clouder_metric/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_clouder_metric_type,access_clouder_metric_type,model_clouder_metric_type,clouder.group_clouder_user,1,0,0,0 3 | access_clouder_metric_interface,access_clouder_metric_interface,model_clouder_metric_interface,clouder.group_clouder_user,1,0,0,0 4 | access_clouder_metric_value,access_clouder_metric_value,model_clouder_metric_value,clouder.group_clouder_user,1,0,0,0 5 | -------------------------------------------------------------------------------- /clouder_metric/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2017 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from . import test_clouder_metric_interface 6 | from . import test_clouder_metric_type 7 | -------------------------------------------------------------------------------- /clouder_metric/tests/common.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2017 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from odoo.tests.common import TransactionCase 6 | 7 | 8 | class TestCommon(TransactionCase): 9 | 10 | def setUp(self): 11 | super(TestCommon, self).setUp() 12 | self.metric_type = self.env['clouder.metric.type'].create({ 13 | 'name': 'Test Metric', 14 | 'code': 'TEST', 15 | 'metric_model': 'clouder.base', 16 | 'uom_id': self.env.ref('product.uom_categ_wtime').id, 17 | }) 18 | self.metric_interface = self.env['clouder.metric.interface'].create({ 19 | 'type_id': self.metric_type.id, 20 | 'metric_ref': 7, 21 | 'source_id': self.env.ref( 22 | 'base_external_dbsource.demo_postgre').id, 23 | 'query_code': 'print True', 24 | }) 25 | -------------------------------------------------------------------------------- /clouder_metric/tests/test_clouder_metric_interface.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2017 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from .common import TestCommon 6 | 7 | 8 | class TestClouderMetricInterface(TestCommon): 9 | 10 | def test_metric_id(self): 11 | """ It should test to see that at least one metric_id is returned """ 12 | self.assertTrue(len(self.metric_interface.metric_id) == 1) 13 | 14 | def test_name_get(self): 15 | """ It should return the right name """ 16 | exp = [ 17 | (self.metric_interface.id, 'Test Metric - 7') 18 | ] 19 | self.assertEqual(exp, self.metric_interface.name_get()) 20 | -------------------------------------------------------------------------------- /clouder_metric/tests/test_clouder_metric_type.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2017 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from odoo.exceptions import UserError, ValidationError 6 | 7 | from .common import TestCommon 8 | 9 | 10 | class TestClouderMetricType(TestCommon): 11 | 12 | def test_get_metric_models(self): 13 | """ It should have the correct metric model types """ 14 | exp = [ 15 | ('clouder.base', 'Base'), 16 | ('clouder.service', 'Service'), 17 | ] 18 | self.assertEquals(exp, self.metric_type._get_metric_models()) 19 | 20 | def test_save_metric_value_usererror(self): 21 | """ It should raise UserError when a bad query is supplied """ 22 | with self.assertRaises(UserError): 23 | self.metric_type.save_metric_value(self.metric_interface) 24 | 25 | def test_save_metric_value_validationerror(self): 26 | """ It should raise ValidationError when no value is supplied """ 27 | self.metric_interface.query_code = 'test = 0' 28 | with self.assertRaises(ValidationError): 29 | self.metric_type.save_metric_value(self.metric_interface) 30 | 31 | def test_save_metric_value(self): 32 | """ It should verify that the right metric values are saved """ 33 | self.metric_interface.query_code = 'value = 100' 34 | self.metric_type.save_metric_value(self.metric_interface) 35 | self.assertTrue( 36 | self.metric_interface.metric_value_ids.mapped('value') == [100.0] 37 | ) 38 | -------------------------------------------------------------------------------- /clouder_runner_kubernetes/README.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Clouder runner kubernetes 3 | ========================= 4 | -------------------------------------------------------------------------------- /clouder_runner_kubernetes/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | # import runner 24 | from . import template 25 | -------------------------------------------------------------------------------- /clouder_runner_kubernetes/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Runner Kubernetes', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'data': ['template.xml'], 32 | 'installable': True, 33 | 'application': True, 34 | } 35 | -------------------------------------------------------------------------------- /clouder_runner_kubernetes/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_runner_openshift/README.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Clouder runner openshift 3 | ======================== 4 | -------------------------------------------------------------------------------- /clouder_runner_openshift/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | # import runner 24 | from . import template 25 | -------------------------------------------------------------------------------- /clouder_runner_openshift/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Runner OpenShift', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': ['template.xml'], 33 | 'installable': True, 34 | 'application': True, 35 | } 36 | -------------------------------------------------------------------------------- /clouder_runner_openshift/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_dns/README.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | Clouder template bind 3 | ===================== 4 | -------------------------------------------------------------------------------- /clouder_template_dns/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | # -*- coding: utf-8 -*- 3 | ############################################################################## 4 | # 5 | # Author: Yannick Buron 6 | # Copyright 2015, TODAY Clouder SASU 7 | # 8 | # This program is free software: you can redistribute it and/or modify 9 | # it under the terms of the GNU Lesser General Public License with Attribution 10 | # clause as published by the Free Software Foundation, either version 3 of the 11 | # License, or (at your option) any later version. 12 | # 13 | # This program is distributed in the hope that it will be useful, 14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | # GNU Lesser General Public License for more details. 17 | # 18 | # You should have received a copy of the GNU Lesser General Public License with 19 | # Attribution clause along with this program. If not, see 20 | # . 21 | # 22 | ############################################################################## 23 | """ 24 | 25 | from . import common 26 | from . import bind 27 | from . import cloud_dns 28 | -------------------------------------------------------------------------------- /clouder_template_dns/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template DNS', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': [ 33 | 'bind.xml', 34 | 'cloud_dns.xml' 35 | ], 36 | 'external_dependencies': { 37 | 'python': [ 38 | 'libcloud', 39 | ], 40 | }, 41 | 'installable': True, 42 | 'application': True, 43 | } 44 | -------------------------------------------------------------------------------- /clouder_template_dns/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_dns/cloud_dns.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | cloud-dns 8 | cloud-dns 9 | 10 | 11 | 12 | 13 | Cloud DNS 14 | cloud-dns 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /clouder_template_dns/images/bind/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM clouder/base-ubuntu:16.04 2 | MAINTAINER Yannick Buron yburon@goclouder.net 3 | 4 | RUN apt-get -qq update && DEBIAN_FRONTEND=noninteractive apt-get -y -q install bind9 5 | USER root 6 | CMD /usr/sbin/named -u bind -g -------------------------------------------------------------------------------- /clouder_template_dns/images/bind/Dockerfile_alpine: -------------------------------------------------------------------------------- 1 | FROM clouder/base:3.4 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN apk add --update bind 5 | RUN cp /etc/bind/named.conf.authoritative /etc/bind/named.conf 6 | 7 | CMD named -g -------------------------------------------------------------------------------- /clouder_template_dns/res/bind.config: -------------------------------------------------------------------------------- 1 | $TTL 3h 2 | @ IN SOA ns.DOMAIN. hostmaster.DOMAIN. ( 3 | 1234 ;serial 4 | 8H 5 | 2H 6 | 1W 7 | 1D ) 8 | @ IN NS ns.DOMAIN. 9 | ns IN A IP 10 | -------------------------------------------------------------------------------- /clouder_template_drupal/README.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | Clouder template drupal 3 | ======================= 4 | -------------------------------------------------------------------------------- /clouder_template_drupal/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | from . import oneclick 25 | -------------------------------------------------------------------------------- /clouder_template_drupal/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_drupal/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /clouder_template_drupal_wikicompare/README.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Clouder template drupal wikicompare 3 | =================================== 4 | -------------------------------------------------------------------------------- /clouder_template_drupal_wikicompare/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_drupal_wikicompare/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Drupal Wikicompare', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder_template_drupal'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': ['template.xml'], 33 | 'installable': True, 34 | 'application': True, 35 | } 36 | -------------------------------------------------------------------------------- /clouder_template_drupal_wikicompare/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_drupal_wikicompare/res/patch/dev_zen_rebuild_registry.patch: -------------------------------------------------------------------------------- 1 | --- wikicompare_theme.info 2013-12-04 15:06:17.000000000 +0100 2 | +++ wikicompare_theme.info.new 2013-12-04 15:09:04.188305241 +0100 3 | @@ -134,7 +134,7 @@ 4 | settings[zen_html5_respond_meta][] = respond 5 | settings[zen_html5_respond_meta][] = html5 6 | ;settings[zen_html5_respond_meta][] = meta 7 | -settings[zen_rebuild_registry] = 0 8 | +settings[zen_rebuild_registry] = 1 9 | settings[zen_wireframes] = 0 10 | 11 | ; To make this sub-theme an admin theme with shortcut links next to titles, 12 | -------------------------------------------------------------------------------- /clouder_template_drupal_wikicompare/res/patch/revisioning_postgres.patch: -------------------------------------------------------------------------------- 1 | --- revisioning.module 2014-06-26 01:48:01.000000000 +0200 2 | +++ revisioning.module.new 2014-08-25 11:36:31.811887307 +0200 3 | @@ -348,11 +348,11 @@ 4 | * @see http://drupal.org/node/500864 5 | */ 6 | function vid_to_arg($arg, &$map, $index) { 7 | - if (empty($arg)) { 8 | +/* if (empty($arg)) { 9 | // For e.g. node/%/revisions. 10 | // Suppresses subtabs of Revisions tab where %vid is omitted. 11 | $map = array(); 12 | - } 13 | + }*/ 14 | return $arg; 15 | } 16 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/README.rst: -------------------------------------------------------------------------------- 1 | .. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg 2 | :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html 3 | :alt: License: LGPL-3 4 | 5 | ================================ 6 | Clouder Template - Elasticsearch 7 | ================================ 8 | 9 | This module provides a template for Elasticsearch in Clouder. 10 | 11 | 12 | Configuration 13 | ============= 14 | 15 | Clouder configuration instructions are available at https://clouder.readthedocs.io/ 16 | 17 | Usage 18 | ===== 19 | 20 | To use this module, you need to: 21 | 22 | #. Create an Elasticsearch Service in the Clouder Control Panel 23 | 24 | Known issues / Roadmap 25 | ====================== 26 | 27 | * Add ElasticDump db backup & restore 28 | * ElasticDump should be a separate service 29 | * Add SSL (Requires CA - https://github.com/clouder-community/clouder/issues/167) 30 | 31 | Bug Tracker 32 | =========== 33 | 34 | Bugs are tracked on `GitHub Issues 35 | `_. In case of trouble, please 36 | check there if your issue has already been reported. If you spotted it first, 37 | help us smashing it by providing a detailed and welcomed feedback. 38 | 39 | Credits 40 | ======= 41 | 42 | Contributors 43 | ------------ 44 | 45 | * Dave Lasley 46 | 47 | Maintainer 48 | ---------- 49 | 50 | This module is maintained by Clouder Community. 51 | 52 | To contribute to this module, please visit https://github.com/clouder-community/clouder 53 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 4 | 5 | from . import models 6 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 4 | 5 | { 6 | 'name': 'Clouder Template Elasticsearch', 7 | 'version': '10.0.10.0.0', 8 | 'category': 'Clouder', 9 | 'depends': [ 10 | 'clouder', 11 | 'clouder_template_proxy', 12 | 'clouder_template_dns', 13 | ], 14 | 'author': 'LasLabs Inc.', 15 | 'license': 'LGPL-3', 16 | 'website': 'https://github.com/clouder-community/clouder', 17 | 'data': [ 18 | 'data/image_template.xml', 19 | 'data/image.xml', 20 | 'data/image_port.xml', 21 | 'data/image_volume.xml', 22 | 'data/application_tag.xml', 23 | 'data/application_type.xml', 24 | 'data/application_template.xml', 25 | 'data/application.xml', 26 | 'data/application_link.xml', 27 | ], 28 | 'installable': True, 29 | 'application': False, 30 | } 31 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_elasticsearch/data/application_link.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/data/application_tag.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | Elastics Search" 11 | elasticsearch" 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/data/application_template.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | Elasticsearch 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/data/application_type.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | elasticsearch 11 | elasticsearch 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/data/image.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | image_elasticsearch_data 9 | 12 | lasley/elasticsearch-data 13 | 14 | 15 | 16 | image_elasticsearch_exec 17 | 20 | lasley/elasticsearch-exec 21 | data 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/data/image_port.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | http 12 | 9200 13 | 14 | 15 | 18 | 19 | transport 20 | 9300 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/data/image_template.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | image_template_elasticsearch_data 11 | 12 | 13 | 16 | image_template_elasticsearch_exec 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/images/elasticsearch5-data/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM clouder/base:3.4 2 | MAINTAINER Dave Lasley 3 | 4 | COPY etc ./config 5 | 6 | CMD tail -f /dev/null 7 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/images/elasticsearch5-data/etc/elasticsearch.yml: -------------------------------------------------------------------------------- 1 | network.host: 0.0.0.0 2 | 3 | # this value is required because we set "network.host" 4 | # be sure to modify it appropriately for a production cluster deployment 5 | discovery.zen.minimum_master_nodes: 1 6 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/images/elasticsearch5-data/etc/logging.yml: -------------------------------------------------------------------------------- 1 | # you can override this using by setting a system property, for example -Des.logger.level=DEBUG 2 | es.logger.level: INFO 3 | rootLogger: ${es.logger.level}, console 4 | logger: 5 | # log action execution errors for easier debugging 6 | action: DEBUG 7 | # reduce the logging for aws, too much is logged under the default INFO 8 | com.amazonaws: WARN 9 | 10 | appender: 11 | console: 12 | type: console 13 | layout: 14 | type: consolePattern 15 | conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n" 16 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/images/elasticsearch5-exec/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # ElasticSearch Docker Entrypoint: 4 | # https://github.com/docker-library/elasticsearch 5 | # Apache Licensed: 6 | # https://github.com/docker-library/elasticsearch/blob/b6fe7dbafc4508c3a1fcf40cbe74c06188c361aa/LICENSE 7 | 8 | set -e 9 | 10 | # Add elasticsearch as command if needed 11 | if [ "${1:0:1}" = '-' ]; then 12 | set -- elasticsearch "$@" 13 | fi 14 | 15 | # Drop root privileges if we are running elasticsearch 16 | # allow the container to be started with `--user` 17 | if [ "$1" = 'elasticsearch' -a "$(id -u)" = '0' ]; then 18 | # Change the ownership of /usr/share/elasticsearch/data to elasticsearch 19 | chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data 20 | 21 | set -- gosu elasticsearch "$@" 22 | #exec gosu elasticsearch "$BASH_SOURCE" "$@" 23 | fi 24 | 25 | # As argument is not related to elasticsearch, 26 | # then assume that user wants to run his own process, 27 | # for example a `bash` shell to explore this image 28 | exec "$@" 29 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/models/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 4 | 5 | from . import backup 6 | -------------------------------------------------------------------------------- /clouder_template_elasticsearch/models/backup copy.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). 4 | 5 | from odoo import api, models 6 | 7 | 8 | class ClouderBackup(models.Model): 9 | """ It provides Elasticsearch context for Clouder Saves 10 | 11 | All methods and properties are to be prefixed with ``elastic_`` in order 12 | to prevent namespace clashes with existing operations, unless overloading 13 | and calling + returning the super. 14 | """ 15 | 16 | _inherit = 'clouder.backup' 17 | 18 | @api.multi 19 | def backup_database(self): 20 | if self.base_id.service_id.db_type == 'elasticsearch': 21 | pass 22 | return super(ClouderBackup, self).backup_database() 23 | 24 | @api.multi 25 | def restore_database(self): 26 | if self.base_id.service_id.db_type == 'elasticsearch': 27 | pass 28 | return super(ClouderBackup, self).restore_database() 29 | -------------------------------------------------------------------------------- /clouder_template_gitlab/README.rst: -------------------------------------------------------------------------------- 1 | 2 | ======================= 3 | Clouder template gitlab 4 | ======================= 5 | -------------------------------------------------------------------------------- /clouder_template_gitlab/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | from . import oneclick 25 | -------------------------------------------------------------------------------- /clouder_template_gitlab/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_gitlab/sources/database.yml: -------------------------------------------------------------------------------- 1 | # 2 | # PRODUCTION 3 | # 4 | production: 5 | adapter: postgresql 6 | encoding: unicode 7 | database: gitlabhq_production 8 | pool: 10 9 | username: DB_USER 10 | password: DB_PASSWORD 11 | host: DB_SERVER 12 | #port: 5432 13 | 14 | # 15 | # Development specific 16 | # 17 | development: 18 | adapter: postgresql 19 | encoding: unicode 20 | database : gitlabhq_development 21 | pool: 5 22 | username: postgres 23 | password: 24 | 25 | # 26 | # Staging specific 27 | # 28 | staging: 29 | adapter: postgresql 30 | encoding: unicode 31 | database : gitlabhq_staging 32 | pool: 5 33 | username: postgres 34 | password: 35 | 36 | # Warning: The database defined as "test" will be erased and 37 | # re-generated from your development database when you run "rake". 38 | # Do not set this db to the same as development or production. 39 | test: &test 40 | adapter: postgresql 41 | encoding: unicode 42 | database : gitlabhq_test 43 | pool: 5 44 | username: postgres 45 | password: 46 | -------------------------------------------------------------------------------- /clouder_template_gitlab/sources/default: -------------------------------------------------------------------------------- 1 | app_user="git" 2 | app_root="/opt/gitlab/files" 3 | pid_path="$app_root/tmp/pids" 4 | socket_path="$app_root/tmp/sockets" 5 | rails_socket="$socket_path/gitlab.socket" 6 | web_server_pid_path="$pid_path/unicorn.pid" 7 | sidekiq_pid_path="$pid_path/sidekiq.pid" 8 | mail_room_enabled=false 9 | mail_room_pid_path="$pid_path/mail_room.pid" 10 | gitlab_workhorse_dir=$(cd $app_root/../gitlab-workhorse 2> /dev/null && pwd) 11 | gitlab_workhorse_pid_path="$pid_path/gitlab-workhorse.pid" 12 | gitlab_workhorse_options="-listenUmask 0 -listenNetwork unix -listenAddr $socket_path/gitlab-workhorse.socket -authBackend http://127.0.0.1:8080 -authSocket $rails_socket -documentRoot $app_root/public" 13 | gitlab_workhorse_log="$app_root/log/gitlab-workhorse.log" 14 | shell_path="/bin/bash" 15 | -------------------------------------------------------------------------------- /clouder_template_gitlab/sources/logrotate: -------------------------------------------------------------------------------- 1 | # GitLab logrotate settings 2 | # based on: http://stackoverflow.com/a/4883967 3 | 4 | /opt/gitlab/files/log/*.log { 5 | daily 6 | missingok 7 | rotate 90 8 | compress 9 | notifempty 10 | copytruncate 11 | } 12 | 13 | /opt/gitlab/var/log/*.log { 14 | daily 15 | missingok 16 | rotate 90 17 | compress 18 | notifempty 19 | copytruncate 20 | } 21 | 22 | /opt/gitlab/gitlab-shell/gitlab-shell.log { 23 | daily 24 | missingok 25 | rotate 90 26 | compress 27 | notifempty 28 | copytruncate 29 | } 30 | 31 | -------------------------------------------------------------------------------- /clouder_template_gitlab/sources/rack_attack.rb: -------------------------------------------------------------------------------- 1 | # 1. Rename this file to rack_attack.rb 2 | # 2. Review the paths_to_be_protected and add any other path you need protecting 3 | # 4 | # If you change this file in a Merge Request, please also create a Merge Request on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests 5 | 6 | paths_to_be_protected = [ 7 | "#{Rails.application.config.relative_url_root}/users/password", 8 | "#{Rails.application.config.relative_url_root}/users/sign_in", 9 | "#{Rails.application.config.relative_url_root}/api/#{API::API.version}/session.json", 10 | "#{Rails.application.config.relative_url_root}/api/#{API::API.version}/session", 11 | "#{Rails.application.config.relative_url_root}/users", 12 | "#{Rails.application.config.relative_url_root}/users/confirmation", 13 | "#{Rails.application.config.relative_url_root}/unsubscribes/", 14 | "#{Rails.application.config.relative_url_root}/import/github/personal_access_token" 15 | 16 | ] 17 | 18 | # Create one big regular expression that matches strings starting with any of 19 | # the paths_to_be_protected. 20 | paths_regex = Regexp.union(paths_to_be_protected.map { |path| /\A#{Regexp.escape(path)}/ }) 21 | rack_attack_enabled = Gitlab.config.rack_attack.git_basic_auth['enabled'] 22 | 23 | unless Rails.env.test? || !rack_attack_enabled 24 | Rack::Attack.throttle('protected paths', limit: 10, period: 60.seconds) do |req| 25 | if req.post? && req.path =~ paths_regex 26 | req.ip 27 | end 28 | end 29 | end -------------------------------------------------------------------------------- /clouder_template_gitlab/sources/resque.yml: -------------------------------------------------------------------------------- 1 | # If you change this file in a Merge Request, please also create 2 | # a Merge Request on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests 3 | # 4 | development: redis://localhost:6379 5 | test: redis://localhost:6379 6 | production: redis://redis:6379 7 | -------------------------------------------------------------------------------- /clouder_template_gitlab/sources/secrets.yml: -------------------------------------------------------------------------------- 1 | production: 2 | # db_key_base is used to encrypt for Variables. Ensure that you don't lose it. 3 | # If you change or lose this key you will be unable to access variables stored in database. 4 | # Make sure the secret is at least 30 characters and all random, 5 | # no regular words or you'll be exposed to dictionary attacks. 6 | db_key_base: SECRET 7 | 8 | development: 9 | db_key_base: development 10 | 11 | test: 12 | db_key_base: test 13 | -------------------------------------------------------------------------------- /clouder_template_magento/README.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Clouder template magento 3 | ======================== 4 | -------------------------------------------------------------------------------- /clouder_template_magento/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_magento/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_magento/sources/magento.conf: -------------------------------------------------------------------------------- 1 | 2 | DocumentRoot /var/www/htdocs 3 | 4 | Options Indexes FollowSymLinks MultiViews 5 | AllowOverride All 6 | Require all granted 7 | 8 | -------------------------------------------------------------------------------- /clouder_template_mail/README.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | Clouder template mail 3 | ===================== 4 | -------------------------------------------------------------------------------- /clouder_template_mail/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_mail/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Mail', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder'], 28 | 'author': 'Yannick Buron (Clouder)', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': ['template.xml'], 33 | 'installable': True, 34 | 'application': True, 35 | } 36 | -------------------------------------------------------------------------------- /clouder_template_mail/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_mail/images/spamassassin/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM dinkel/spamassassin 2 | MAINTAINER Yannick Buron yburon@goclouder.net 3 | 4 | #RUN apk add --update spamassassin 5 | 6 | #CMD spamd -------------------------------------------------------------------------------- /clouder_template_mautic/README.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | Clouder template mautic 3 | ======================= 4 | -------------------------------------------------------------------------------- /clouder_template_mautic/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | from . import oneclick 25 | -------------------------------------------------------------------------------- /clouder_template_mautic/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_mautic/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /clouder_template_mysql/README.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | Clouder template mysql 3 | ====================== 4 | -------------------------------------------------------------------------------- /clouder_template_mysql/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_mysql/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template MySQL', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder', 28 | 'clouder_template_shinken'], 29 | 'author': 'Yannick Buron (Clouder)', 30 | 'license': 'LGPL-3', 31 | 'website': 'https://github.com/clouder-community/clouder', 32 | 'demo': [], 33 | 'data': ['template.xml'], 34 | 'installable': True, 35 | 'application': True, 36 | } 37 | -------------------------------------------------------------------------------- /clouder_template_mysql/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_odoo/README.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | Clouder template odoo 3 | ===================== 4 | -------------------------------------------------------------------------------- /clouder_template_odoo/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | from . import oneclick 25 | -------------------------------------------------------------------------------- /clouder_template_odoo/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_odoo/images/odoo-ssh/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM clouder/base:3.4 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN touch /tmp/odoo-ssh 5 | RUN apk add --update openssh 6 | RUN mkdir /var/run/sshd 7 | RUN chmod 0755 /var/run/sshd 8 | USER root 9 | 10 | CMD /usr/sbin/sshd -ddd -------------------------------------------------------------------------------- /clouder_template_odoo/images/odoo10-clouder/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:odoo10 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | USER root 5 | RUN apk add --update --no-cache --virtual .build-deps gcc linux-headers python-dev musl-dev libffi-dev openssl-dev \ 6 | && pip --no-cache-dir install --upgrade paramiko erppeek apache-libcloud \ 7 | && apk del .build-deps 8 | USER odoo 9 | 10 | #RUN git clone http://github.com/OCA/connector.git /opt/odoo/files/extra/connector -b 10.0 11 | RUN git clone http://github.com/clouder-community/clouder.git /opt/odoo/files/extra/clouder -b master 12 | 13 | ENV ODOO_CONNECTOR_CHANNELS root:4 14 | CMD /opt/odoo/files/odoo/odoo-bin -c /opt/odoo/etc/odoo.conf -------------------------------------------------------------------------------- /clouder_template_odoo/images/odoo10/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:odoo 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | USER root 5 | RUN apk add --update git 6 | USER odoo 7 | 8 | RUN git clone http://github.com/odoo/odoo.git /opt/odoo/files/odoo -b 10.0 && rm -rf /opt/odoo/files/odoo/.git 9 | RUN mkdir /opt/odoo/files/extra 10 | 11 | CMD /opt/odoo/files/odoo/odoo-bin -c /opt/odoo/etc/odoo.conf -------------------------------------------------------------------------------- /clouder_template_odoo/images/odoo8-clouder/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:odoo8 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | USER root 5 | RUN apk add --update --no-cache --virtual .build-deps gcc linux-headers python-dev musl-dev libffi-dev openssl-dev \ 6 | && pip --no-cache-dir install --upgrade paramiko erppeek apache-libcloud \ 7 | && apk del .build-deps 8 | USER odoo 9 | 10 | RUN git clone http://github.com/OCA/connector.git /opt/odoo/files/extra/connector -b 8.0 11 | RUN git clone http://github.com/clouder-community/clouder.git /opt/odoo/files/extra/clouder -b master 12 | 13 | ENV ODOO_CONNECTOR_CHANNELS root:4 14 | CMD /opt/odoo/files/odoo/odoo.py -c /opt/odoo/etc/odoo.conf --load=web,web_kanban,connector -------------------------------------------------------------------------------- /clouder_template_odoo/images/odoo8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:odoo 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | USER root 5 | RUN apk add --update git 6 | RUN easy_install setuptools simplejson unittest2 six 7 | USER odoo 8 | 9 | RUN git clone http://github.com/odoo/odoo.git /opt/odoo/files/odoo -b 8.0 && rm -rf /opt/odoo/files/odoo/.git 10 | RUN mkdir /opt/odoo/files/extra 11 | -------------------------------------------------------------------------------- /clouder_template_odoo/images/odoo9-clouder/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:odoo9 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | USER root 5 | RUN apk add --update --no-cache --virtual .build-deps gcc linux-headers python-dev musl-dev libffi-dev openssl-dev \ 6 | && pip --no-cache-dir install --upgrade paramiko erppeek apache-libcloud \ 7 | && apk del .build-deps 8 | USER odoo 9 | 10 | RUN git clone http://github.com/OCA/connector.git /opt/odoo/files/extra/connector -b 9.0 11 | RUN git clone http://github.com/clouder-community/clouder.git /opt/odoo/files/extra/clouder -b master 12 | 13 | ENV ODOO_CONNECTOR_CHANNELS root:4 14 | CMD /opt/odoo/files/odoo/odoo.py -c /opt/odoo/etc/odoo.conf --load=web,web_kanban,connector -------------------------------------------------------------------------------- /clouder_template_odoo/images/odoo9/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:odoo 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | USER root 5 | RUN apk add --update git 6 | USER odoo 7 | 8 | RUN git clone http://github.com/odoo/odoo.git /opt/odoo/files/odoo -b 9.0 && rm -rf /opt/odoo/files/odoo/.git 9 | RUN mkdir /opt/odoo/files/extra 10 | -------------------------------------------------------------------------------- /clouder_template_odoo/res/.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | bin/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # Installer logs 26 | pip-log.txt 27 | pip-delete-this-directory.txt 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .coverage 33 | .cache 34 | nosetests.xml 35 | coverage.xml 36 | 37 | # Translations 38 | *.mo 39 | 40 | # Pycharm 41 | .idea 42 | 43 | # Mr Developer 44 | .mr.developer.cfg 45 | .project 46 | .pydevproject 47 | 48 | # Rope 49 | .ropeproject 50 | 51 | # Sphinx documentation 52 | docs/_build/ 53 | 54 | # Backup files 55 | *~ 56 | *.swp -------------------------------------------------------------------------------- /clouder_template_odoo/res/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM clouder/clouder-odoo9-clouder-files 2 | MAINTAINER Admin admin@example.net 3 | 4 | ADD ./* /opt/odoo/files/extra/custom/ -------------------------------------------------------------------------------- /clouder_template_odoo/res/gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | bin/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # Installer logs 26 | pip-log.txt 27 | pip-delete-this-directory.txt 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .coverage 33 | .cache 34 | nosetests.xml 35 | coverage.xml 36 | 37 | # Translations 38 | *.mo 39 | 40 | # Pycharm 41 | .idea 42 | 43 | # Mr Developer 44 | .mr.developer.cfg 45 | .project 46 | .pydevproject 47 | 48 | # Rope 49 | .ropeproject 50 | 51 | # Sphinx documentation 52 | docs/_build/ 53 | 54 | # Backup files 55 | *~ 56 | *.swp -------------------------------------------------------------------------------- /clouder_template_piwik/README.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | Clouder template piwik 3 | ====================== 4 | -------------------------------------------------------------------------------- /clouder_template_piwik/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_piwik/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Piwik', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder_template_mysql', 28 | 'clouder_template_dns', 29 | 'clouder_template_proxy', 30 | 'clouder_template_shinken'], 31 | 'author': 'Yannick Buron (Clouder)', 32 | 'license': 'LGPL-3', 33 | 'website': 'https://github.com/clouder-community/clouder', 34 | 'demo': [], 35 | 'data': ['template.xml'], 36 | 'installable': True, 37 | 'application': True, 38 | } 39 | -------------------------------------------------------------------------------- /clouder_template_piwik/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_piwik/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name BASE.DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/BASE.DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/BASE.DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name BASE.DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /clouder_template_postgres/README.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Clouder template postgres 3 | ========================= 4 | -------------------------------------------------------------------------------- /clouder_template_postgres/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_postgres/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Postgres', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder', 28 | 'clouder_template_shinken'], 29 | 'author': 'Yannick Buron (Clouder)', 30 | 'license': 'LGPL-3', 31 | 'website': 'https://github.com/clouder-community/clouder', 32 | 'demo': [], 33 | 'data': ['template.xml'], 34 | 'installable': True, 35 | 'application': True, 36 | } 37 | -------------------------------------------------------------------------------- /clouder_template_postgres/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_postgres/images/postgres/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM kiasaki/alpine-postgres 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN apk add --update bash 5 | -------------------------------------------------------------------------------- /clouder_template_proxy/README.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | Clouder template proxy 3 | ====================== 4 | -------------------------------------------------------------------------------- /clouder_template_proxy/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_proxy/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Proxy', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder'], 28 | 'author': 'Yannick Buron (Clouder), LasLabs', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': ['template.xml'], 33 | 'installable': True, 34 | 'application': True, 35 | } 36 | -------------------------------------------------------------------------------- /clouder_template_proxy/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_proxy/images/proxy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yannickburon/clouder:nginx 2 | MAINTAINER Yannick Buron yannick.buron@gmail.com 3 | 4 | RUN apk add --update certbot 5 | #RUN letsencrypt-auto certonly --help --agree-tos 6 | -------------------------------------------------------------------------------- /clouder_template_proxy/res/apache-sslonly.config: -------------------------------------------------------------------------------- 1 | 2 | ServerName BASE.DOMAIN 3 | Redirect permanent / https://BASE.DOMAIN/ 4 | 5 | 6 | ServerName BASE.DOMAIN 7 | 8 | SSLEngine on 9 | SSLCertificateFile /etc/ssl/certs/BASE.DOMAIN.crt 10 | SSLCertificateKeyFile /etc/ssl/private/BASE.DOMAIN.key 11 | ProxyRequests Off 12 | 13 | Order deny,allow 14 | Allow from all 15 | 16 | ProxyVia On 17 | ProxyPass / http://SERVER:PORT/ 18 | 19 | ProxyPassReverse / 20 | 21 | RequestHeader set "X-Forwarded-Proto" "http" 22 | SetEnv proxy-nokeepalive 1 23 | -------------------------------------------------------------------------------- /clouder_template_proxy/res/apache.config: -------------------------------------------------------------------------------- 1 | 2 | ServerName BASE.DOMAIN 3 | ProxyRequests Off 4 | 5 | Order deny,allow 6 | Allow from all 7 | 8 | ProxyVia On 9 | ProxyPass / http://SERVER:PORT/ 10 | 11 | ProxyPassReverse / http://SERVER:PORT/ 12 | 13 | RequestHeader set "X-Forwarded-Proto" "http" 14 | SetEnv proxy-nokeepalive 1 15 | 16 | 17 | ServerName BASE.DOMAIN 18 | 19 | SSLEngine on 20 | SSLCertificateFile /etc/ssl/certs/BASE.DOMAIN.crt 21 | SSLCertificateKeyFile /etc/ssl/private/BASE.DOMAIN.key 22 | ProxyRequests Off 23 | 24 | Order deny,allow 25 | Allow from all 26 | 27 | ProxyVia On 28 | ProxyPass / http://SERVER:PORT/ 29 | 30 | ProxyPassReverse / http://SERVER:PORT/ 31 | 32 | RequestHeader set "X-Forwarded-Proto" "http" 33 | SetEnv proxy-nokeepalive 1 34 | -------------------------------------------------------------------------------- /clouder_template_proxy/res/nginx-proxy.config: -------------------------------------------------------------------------------- 1 | # Redirect Options 2 | port_in_redirect off; 3 | proxy_redirect off; 4 | 5 | # Headers 6 | proxy_set_header Host $host; 7 | proxy_set_header X-Forwarded-Host $host; 8 | proxy_set_header X-Forwarded-Server $host; 9 | proxy_set_header X-Forwarded-Proto $scheme; 10 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 11 | proxy_set_header X-Real-IP $remote_addr; 12 | 13 | # Buffers and Timeout 14 | proxy_buffers 16 64k; 15 | proxy_buffer_size 128k; 16 | proxy_read_timeout 3600; 17 | proxy_connect_timeout 3600; 18 | send_timeout 3600; 19 | 20 | # Force failure on backend disconnect 21 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 22 | -------------------------------------------------------------------------------- /clouder_template_proxy/res/nginx-ssl.config: -------------------------------------------------------------------------------- 1 | # Session options 2 | ssl_session_timeout 1d; 3 | ssl_session_cache shared:SSL:50m; 4 | ssl_session_tickets off; 5 | 6 | # intermediate configuration. tweak to your needs. 7 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 8 | ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; 9 | ssl_prefer_server_ciphers on; 10 | 11 | # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) 12 | add_header Strict-Transport-Security max-age=15768000; 13 | 14 | # OCSP Stapling --- 15 | # fetch OCSP records from URL in ssl_certificate and cache them 16 | ssl_stapling on; 17 | ssl_stapling_verify on; 18 | -------------------------------------------------------------------------------- /clouder_template_proxy/res/proxy-root.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | listen [::]:80; 4 | server_name BASE.DOMAIN; 5 | 6 | return 301 https://DOMAIN$request_uri; 7 | } 8 | 9 | 10 | server { 11 | listen 443 ssl http2; 12 | listen [::]:443 ssl http2; 13 | server_name BASE.DOMAIN; 14 | 15 | # SSL 16 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 17 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 18 | ssl_dhparam /etc/ssl/dh_param/DOMAIN.pem; 19 | include /etc/nginx/conf.d/nginx-ssl; 20 | 21 | return 301 https://DOMAIN$request_uri; 22 | } 23 | -------------------------------------------------------------------------------- /clouder_template_proxy/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443 ssl http2 default_server; 3 | listen [::]:443 ssl http2 default_server; 4 | server_name DOMAIN; 5 | 6 | keepalive_timeout 60; 7 | 8 | # SSL 9 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 10 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 11 | ssl_dhparam /etc/ssl/dh_param/DOMAIN.pem; 12 | include /etc/nginx/conf.d/nginx-ssl; 13 | 14 | ## default location ## 15 | location / { 16 | proxy_pass http://SERVER:PORT; 17 | include /etc/nginx/conf.d/nginx-proxy; 18 | } 19 | 20 | } 21 | 22 | 23 | ## http redirects to https ## 24 | server { 25 | listen 80 default_server; 26 | listen [::]:80 default_server; 27 | server_name DOMAIN; 28 | 29 | # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response. 30 | return 301 https://$host$request_uri; 31 | } 32 | -------------------------------------------------------------------------------- /clouder_template_proxy/res/proxy.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | listen [::]:80 default_server; 4 | server_name DOMAIN; 5 | 6 | keepalive_timeout 60; 7 | 8 | ## default location ## 9 | location / { 10 | proxy_pass http://SERVER:PORT; 11 | include /etc/nginx/conf.d/nginx-proxy; 12 | } 13 | 14 | } 15 | 16 | 17 | server { 18 | listen 443 ssl http2 default_server; 19 | listen [::]:443 ssl http2 default_server; 20 | server_name DOMAIN; 21 | 22 | keepalive_timeout 60; 23 | 24 | # SSL 25 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 26 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 27 | # ssl_dhparam /etc/ssl/dh_param/DOMAIN.pem; 28 | include /etc/nginx/conf.d/nginx-ssl; 29 | 30 | ## default location ## 31 | location / { 32 | proxy_pass http://SERVER:PORT; 33 | include /etc/nginx/conf.d/nginx-proxy; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /clouder_template_proxy/template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | proxy 8 | www-data 9 | 10 | 11 | 12 | image_proxy 13 | 14 | yannickburon/clouder:proxy 15 | 16 | 17 | 18 | 19 | 20 | Proxy 21 | proxy 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /clouder_template_redis/README.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | Clouder template redis 3 | ====================== 4 | -------------------------------------------------------------------------------- /clouder_template_redis/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | -------------------------------------------------------------------------------- /clouder_template_redis/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Redis', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': [ 28 | 'clouder_template_dns', 29 | 'clouder_template_shinken', 30 | 'clouder_template_mail', 31 | 'clouder_template_proxy' 32 | ], 33 | 'author': 'Yannick Buron (Clouder)', 34 | 'license': 'LGPL-3', 35 | 'website': 'https://github.com/clouder-community/clouder', 36 | 'demo': [], 37 | 'data': ['template.xml'], 38 | 'installable': True, 39 | 'application': True, 40 | } 41 | -------------------------------------------------------------------------------- /clouder_template_redis/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_shinken/README.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Clouder template shinken 3 | ======================== 4 | -------------------------------------------------------------------------------- /clouder_template_shinken/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | -------------------------------------------------------------------------------- /clouder_template_shinken/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Template Shinken', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder_template_mail', 'clouder_template_proxy', 28 | 'clouder_template_dns'], 29 | 'author': 'Yannick Buron (Clouder)', 30 | 'license': 'LGPL-3', 31 | 'website': 'https://github.com/clouder-community/clouder', 32 | 'demo': [], 33 | 'data': ['template.xml'], 34 | 'installable': True, 35 | 'application': True, 36 | } 37 | -------------------------------------------------------------------------------- /clouder_template_shinken/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_shinken/res/base-shinken-no-backup.config: -------------------------------------------------------------------------------- 1 | define service{ 2 | service_description HTTP UNIQUE_NAME 3 | use clouder-linux-service 4 | register 0 5 | host_name clouder-bases 6 | check_command clouder_check_http!DOMAIN 7 | } 8 | 9 | -------------------------------------------------------------------------------- /clouder_template_shinken/res/base-shinken.config: -------------------------------------------------------------------------------- 1 | define service{ 2 | service_description HTTP UNIQUE_NAME 3 | use clouder-linux-service 4 | register 0 5 | host_name clouder-bases 6 | check_command clouder_check_http!DOMAIN 7 | } 8 | 9 | define service{ 10 | service_description Backup UNIQUE_NAME 11 | use clouder-linux-service 12 | register 0 13 | host_name clouder-bases 14 | check_interval 60 15 | retry_interval 15 16 | check_period clouder_period_backup 17 | check_command clouder_check_backup!BACKUPIP!PORT!METHOD!TYPE!UNIQUE_NAME!DATABASES 18 | } 19 | 20 | -------------------------------------------------------------------------------- /clouder_template_shinken/res/control_backup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | IFS="," 3 | 4 | repo=( $(ssh -o StrictHostKeyChecking=no $3 cat /opt/backup/list/$4/repo) ) 5 | 6 | directory=/opt/backup/simple/$repo/latest 7 | if [[ $1 == 'bup' ]] 8 | then 9 | directory=/tmp/control-backup/$repo 10 | ssh $3 << EOF 11 | rm -rf $directory 12 | mkdir -p $directory 13 | export BUP_DIR=/opt/backup/bup 14 | bup restore -C $directory $repo/latest 15 | EOF 16 | directory=/tmp/control-backup/$repo/latest 17 | fi 18 | 19 | 20 | if ! ssh $3 "[ -d $directory ]" 21 | then 22 | echo "$4 backup missing." 23 | exit 2 24 | fi 25 | 26 | 27 | date=`date +%Y-%m-%d` 28 | date_backup=( $(ssh $3 cat $directory/backup-date) ) 29 | if [[ $date != $date_backup ]] 30 | then 31 | echo "No backup for today." 32 | exit 2 33 | fi 34 | 35 | if [[ $2 == 'base' ]] 36 | then 37 | for database in $5 38 | do 39 | if ! ssh $3 "[ -s $directory/${database}.dump ]" 40 | then 41 | echo "The database file ${database}.dump is empty." 42 | exit 2 43 | fi 44 | done 45 | fi 46 | 47 | 48 | 49 | if [[ $1 == 'bup' ]] 50 | then 51 | directory=/tmp/control-backup/$repo 52 | ssh $3 << EOF 53 | rm -rf $directory 54 | EOF 55 | fi 56 | 57 | echo "Backup of ${4} OK" 58 | exit 0 59 | -------------------------------------------------------------------------------- /clouder_template_shinken/res/node-shinken.config: -------------------------------------------------------------------------------- 1 | define host{ 2 | use clouder-linux-server 3 | host_name NAME 4 | address IP 5 | } 6 | 7 | define service{ 8 | service_description Load 9 | use clouder-linux-service 10 | register 0 11 | host_name clouder-linux-server 12 | check_command clouder_check_nrpe!NRPEPORT!check_load 13 | } 14 | 15 | define service{ 16 | service_description Memory 17 | use clouder-linux-service 18 | register 0 19 | host_name clouder-linux-server 20 | check_command clouder_check_nrpe!NRPEPORT!check_mem 21 | } 22 | 23 | define service{ 24 | service_description Disk 25 | use clouder-linux-service 26 | register 0 27 | host_name clouder-linux-server 28 | check_command clouder_check_nrpe!NRPEPORT!check_disk 29 | } 30 | 31 | define service{ 32 | service_description SSH 33 | use clouder-linux-service 34 | register 0 35 | host_name clouder-linux-server 36 | check_command clouder_check_ssh!SSHPORT 37 | } 38 | -------------------------------------------------------------------------------- /clouder_template_shinken/res/service-shinken-no-backup.config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/clouder_template_shinken/res/service-shinken-no-backup.config -------------------------------------------------------------------------------- /clouder_template_shinken/res/service-shinken.config: -------------------------------------------------------------------------------- 1 | define service{ 2 | service_description Backup UNIQUE_NAME 3 | use clouder-linux-service 4 | register 0 5 | host_name clouder-services 6 | check_interval 60 7 | retry_interval 15 8 | check_period clouder_period_backup 9 | check_command clouder_check_backup!BACKUPIP!PORT!METHOD!TYPE!UNIQUE_NAME 10 | 11 | -------------------------------------------------------------------------------- /clouder_template_wordpress/README.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Clouder template wordpress 3 | ========================== 4 | -------------------------------------------------------------------------------- /clouder_template_wordpress/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import template 24 | from . import oneclick 25 | -------------------------------------------------------------------------------- /clouder_template_wordpress/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_template_wordpress/res/proxy-sslonly.config: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443; 3 | server_name DOMAIN; 4 | 5 | # ssl files 6 | ssl on; 7 | ssl_certificate /etc/ssl/certs/DOMAIN.crt; 8 | ssl_certificate_key /etc/ssl/private/DOMAIN.key; 9 | keepalive_timeout 60; 10 | 11 | # limit ciphers 12 | ssl_ciphers HIGH:!ADH:!MD5; 13 | ssl_protocols SSLv3 TLSv1; 14 | ssl_prefer_server_ciphers on; 15 | 16 | # proxy buffers 17 | proxy_buffers 16 64k; 18 | proxy_buffer_size 128k; 19 | 20 | ## default location ## 21 | location / { 22 | proxy_pass http://SERVER:PORT; 23 | # force timeouts if the backend dies 24 | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 25 | proxy_redirect off; 26 | 27 | # set headers 28 | proxy_set_header Host $host; 29 | proxy_set_header X-Real-IP $remote_addr; 30 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 31 | proxy_set_header X-Forwarded-Proto https; 32 | 33 | proxy_connect_timeout 3600; 34 | proxy_send_timeout 3600; 35 | proxy_read_timeout 3600; 36 | send_timeout 3600; 37 | } 38 | 39 | } 40 | 41 | 42 | ## http redirects to https ## 43 | server { 44 | listen 80; 45 | server_name DOMAIN; 46 | 47 | # Strict Transport Security 48 | add_header Strict-Transport-Security max-age=2592000; 49 | rewrite ^/.*$ https://$host$request_uri? permanent; 50 | } 51 | -------------------------------------------------------------------------------- /clouder_website/README.rst: -------------------------------------------------------------------------------- 1 | =============== 2 | Clouder website 3 | =============== 4 | 5 | Creates an HTTP controller that serves a form to create 6 | new clouder instances from an external website 7 | 8 | Uses Font Awesome by Dave Gandy - http://fontawesome.io 9 | -------------------------------------------------------------------------------- /clouder_website/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import clouder_website 24 | from . import controller 25 | -------------------------------------------------------------------------------- /clouder_website/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron, Nicolas Petit 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Website', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['base', 'auth_signup', 'clouder'], 28 | 'author': 'Yannick Buron (Clouder), Nicolas Petit', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': [ 33 | 'security/ir.model.access.csv', 34 | 'clouder_website_view.xml', 35 | 'templates.xml' 36 | ], 37 | 'installable': True, 38 | 'application': True, 39 | } 40 | -------------------------------------------------------------------------------- /clouder_website/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_website/client_side_plugin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Insert title here 6 | 7 | 8 | 9 |

Exemple de page hôte

10 | 11 |
12 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /clouder_website/clouder_website_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | clouder.application.form.invoicing 6 | 7 | clouder.application 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /clouder_website/controller/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron, Nicolas Petit 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import form_controller 24 | -------------------------------------------------------------------------------- /clouder_website/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_clouder_web_session_deployer,clouder_web_session deployer,model_clouder_web_session,clouder.group_clouder_deployer,1,1,1,1 3 | -------------------------------------------------------------------------------- /clouder_website/static/lib/fontawesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/clouder_website/static/lib/fontawesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /clouder_website/static/lib/fontawesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/clouder_website/static/lib/fontawesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /clouder_website/static/lib/fontawesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/clouder_website/static/lib/fontawesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /clouder_website/static/lib/fontawesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/clouder_website/static/lib/fontawesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /clouder_website_payment/README.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | Clouder website payment 3 | ======================= 4 | 5 | Add payment capabilities to the external form generated in Clouder Website 6 | -------------------------------------------------------------------------------- /clouder_website_payment/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import clouder_website_payment 24 | from . import controller 25 | -------------------------------------------------------------------------------- /clouder_website_payment/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron, Nicolas Petit 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | { 24 | 'name': 'Clouder Website Payment', 25 | 'version': '10.0.10.0.0', 26 | 'category': 'Clouder', 27 | 'depends': ['clouder_website', 'payment', 'clouder_invoicing'], 28 | 'author': 'Yannick Buron (Clouder), Nicolas Petit', 29 | 'license': 'LGPL-3', 30 | 'website': 'https://github.com/clouder-community/clouder', 31 | 'demo': [], 32 | 'data': [ 33 | 'templates.xml', 34 | 'clouder_website_payment_data.xml', 35 | 'clouder_website_payment_view.xml' 36 | ], 37 | 'installable': True, 38 | 'application': True, 39 | } 40 | -------------------------------------------------------------------------------- /clouder_website_payment/__openerp__.py: -------------------------------------------------------------------------------- 1 | __manifest__.py -------------------------------------------------------------------------------- /clouder_website_payment/clouder_website_payment_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | view_payment_acquirer_form 6 | 7 | payment.acquirer 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /clouder_website_payment/controller/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ############################################################################## 3 | # 4 | # Author: Yannick Buron, Nicolas Petit 5 | # Copyright 2015, TODAY Clouder SASU 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Lesser General Public License with Attribution 9 | # clause as published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Lesser General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Lesser General Public License with 18 | # Attribution clause along with this program. If not, see 19 | # . 20 | # 21 | ############################################################################## 22 | 23 | from . import form_controller_extend 24 | -------------------------------------------------------------------------------- /doc/cla/corporate/microcom.md: -------------------------------------------------------------------------------- 1 | Canada, 2015-06-23 2 | 3 | Microcom agrees to the terms of the Odoo Corporate Contributor License 4 | Agreement v1.0. 5 | 6 | I declare that I am authorized and able to make this agreement and sign this 7 | declaration. 8 | 9 | Signed, 10 | 11 | Martin Malorni https://github.com/microcom 12 | 13 | List of contributors: 14 | 15 | Marc-Étienne Déry https://github.com/MarcEtienneDery -------------------------------------------------------------------------------- /doc/cla/individual/ErrafayM.md: -------------------------------------------------------------------------------- 1 | Morocco, 02/07/2015 2 | 3 | I hereby agree to the terms of the Clouder Individual Contributor License Agreement v1.0. 4 | 5 | I declare that I am authorized and able to make this agreement and sign this declaration. 6 | 7 | Signed, 8 | 9 | Errafay Mehdi m.errafay123@gmail.com https://github.com/ErrafayM 10 | -------------------------------------------------------------------------------- /doc/cla/individual/Yenthe666.md: -------------------------------------------------------------------------------- 1 | Belgium, 24/06/2015 2 | 3 | I hereby agree to the terms of the Clouder Individual Contributor License Agreement v1.0. 4 | 5 | I declare that I am authorized and able to make this agreement and sign this declaration. 6 | 7 | Signed, 8 | 9 | Yenthe Van Ginneken yenthevg@gmail.com https://github.com/Yenthe66 10 | -------------------------------------------------------------------------------- /doc/cla/individual/michielbdejong.md: -------------------------------------------------------------------------------- 1 | Serbia, 2015-03-30 2 | 3 | I hereby agree to the terms of the Clouder Individual Contributor License 4 | Agreement v1.0. 5 | 6 | I declare that I am authorized and able to make this agreement and sign this 7 | declaration. 8 | 9 | Signed, 10 | 11 | Michiel de Jong https://github.com/michielbdejong 12 | -------------------------------------------------------------------------------- /doc/images/application-backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/application-backup.png -------------------------------------------------------------------------------- /doc/images/application-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/application-form.png -------------------------------------------------------------------------------- /doc/images/application-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/application-list.png -------------------------------------------------------------------------------- /doc/images/applicationtype-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/applicationtype-form.png -------------------------------------------------------------------------------- /doc/images/applicationtype-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/applicationtype-list.png -------------------------------------------------------------------------------- /doc/images/backup-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/backup-form.png -------------------------------------------------------------------------------- /doc/images/backup-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/backup-list.png -------------------------------------------------------------------------------- /doc/images/backup-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/backup-log.png -------------------------------------------------------------------------------- /doc/images/base-backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/base-backup.png -------------------------------------------------------------------------------- /doc/images/base-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/base-list.png -------------------------------------------------------------------------------- /doc/images/base-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/base-log.png -------------------------------------------------------------------------------- /doc/images/configuration-provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/configuration-provider.png -------------------------------------------------------------------------------- /doc/images/domain-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/domain-list.png -------------------------------------------------------------------------------- /doc/images/domain-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/domain-log.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-base.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-configuration.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-domain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-domain.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-environment.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-moduleslist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-moduleslist.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-server-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-server-log.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-server.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-services-with-children.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-services-with-children.png -------------------------------------------------------------------------------- /doc/images/gettingstarted-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/gettingstarted-services.png -------------------------------------------------------------------------------- /doc/images/image-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/image-form.png -------------------------------------------------------------------------------- /doc/images/image-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/image-list.png -------------------------------------------------------------------------------- /doc/images/server-libcloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/server-libcloud.png -------------------------------------------------------------------------------- /doc/images/server-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/server-log.png -------------------------------------------------------------------------------- /doc/images/service-backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/service-backup.png -------------------------------------------------------------------------------- /doc/images/service-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/service-form.png -------------------------------------------------------------------------------- /doc/images/service-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/service-log.png -------------------------------------------------------------------------------- /doc/images/service-reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YannickB/odoo-hosting/4f736cbdafecdcda45b58a13b0e361e517cf298c/doc/images/service-reset.png -------------------------------------------------------------------------------- /doc/index.html: -------------------------------------------------------------------------------- 1 | Welcome to Clouder's documentation! 2 | =================================== 3 | 4 | Contents: 5 | 6 | .. toctree:: 7 | :maxdepth: 2 8 | 9 | getting-started 10 | connect-node 11 | images 12 | applications 13 | services 14 | domains-bases 15 | backups-configuration 16 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx==1.3.1 2 | mercurial==3.2.2 3 | sphinx-patchqueue==0.4.0 -------------------------------------------------------------------------------- /oca_dependencies.txt: -------------------------------------------------------------------------------- 1 | connector 2 | contract 3 | # Pending https://github.com/OCA/server-tools/pull/660 4 | server-tools https://github.com/laslabs/server-tools feature/10.0/base_external_dbsource_elasticsearch-v10 5 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | apache-libcloud 2 | erppeek 3 | paramiko 4 | -------------------------------------------------------------------------------- /sale_clouder/README.md: -------------------------------------------------------------------------------- 1 | .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg 2 | :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html 3 | :alt: License: AGPL-3 4 | 5 | ============ 6 | Sale Clouder 7 | ============ 8 | 9 | This module extends contracts to provide Clouder-specific functionality such 10 | as allowing usage and threshold based contracts. 11 | 12 | Installation 13 | ============ 14 | 15 | * Install module as normal 16 | 17 | 18 | Bug Tracker 19 | =========== 20 | 21 | Bugs are tracked on `GitHub Issues 22 | `_. 23 | 24 | Contributors 25 | ------------ 26 | 27 | * Dave Lasley 28 | * Ted Salmon 29 | -------------------------------------------------------------------------------- /sale_clouder/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from . import models 6 | -------------------------------------------------------------------------------- /sale_clouder/__manifest__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | { 5 | "name": "Sale - Clouder", 6 | "summary": "Provides the ability to sell Clouder instances.", 7 | "version": "10.0.1.0.0", 8 | "category": "Clouder", 9 | "website": "https://github.com/clouder-community/clouder", 10 | "author": "LasLabs", 11 | "license": "LGPL-3", 12 | "application": False, 13 | "installable": True, 14 | "depends": [ 15 | "clouder", 16 | "contract", 17 | "sale", 18 | "clouder_metric", 19 | ], 20 | "data": [ 21 | "data/sale_clouder.xml", # Must be created before formula 22 | "data/contract_line_qty_formula.xml", 23 | "security/ir.model.access.csv", 24 | ], 25 | } 26 | -------------------------------------------------------------------------------- /sale_clouder/data/contract_line_qty_formula.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | Clouder Billing 11 | result = env['clouder.contract'].get_invoice_line_quantity(contract, line, invoice) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sale_clouder/data/sale_clouder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | Clouder Contract 9 | clouder.contract 10 | CLOUD 11 | 8 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sale_clouder/models/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from . import clouder_contract 6 | from . import clouder_contract_line 7 | from . import product_template 8 | -------------------------------------------------------------------------------- /sale_clouder/models/clouder_contract_line.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from odoo import fields, models 6 | 7 | 8 | class ClouderContractLine(models.Model): 9 | """ It provides the link between billing and Clouder Services. """ 10 | 11 | _name = 'clouder.contract.line' 12 | _description = 'Clouder Contract Lines' 13 | _inherits = {'account.analytic.invoice.line': 'contract_line_id'} 14 | 15 | contract_line_id = fields.Many2one( 16 | string='Recurring Line', 17 | comodel_name='account.analytic.invoice.line', 18 | index=True, 19 | required=True, 20 | ondelete='restrict', 21 | ) 22 | metric_interface_id = fields.Many2one( 23 | string='Metric Interface', 24 | comodel_name='clouder.metric.interface', 25 | required=True, 26 | ) 27 | -------------------------------------------------------------------------------- /sale_clouder/models/product_template.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2016 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from odoo import fields, models 6 | 7 | 8 | class ProductTemplate(models.Model): 9 | _inherit = 'product.template' 10 | 11 | invoice_policy = fields.Selection( 12 | selection_add=[ 13 | ('threshold', 'Invoice and Enforce a Threshold'), 14 | ('usage', 'Invoice Based on Usage'), 15 | ], 16 | ) 17 | -------------------------------------------------------------------------------- /sale_clouder/security/ir.model.access.csv: -------------------------------------------------------------------------------- 1 | id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2 | access_clouder_contract,access_clouder_contract,model_clouder_contract,clouder.group_clouder_user,1,1,1,1 3 | access_clouder_contract_line,access_clouder_contract_line,model_clouder_contract_line,clouder.group_clouder_user,1,1,1,1 4 | -------------------------------------------------------------------------------- /sale_clouder/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2017 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from . import test_clouder_contract 6 | from . import test_product_template 7 | -------------------------------------------------------------------------------- /sale_clouder/tests/test_product_template.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright 2017 LasLabs Inc. 3 | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). 4 | 5 | from odoo.tests.common import TransactionCase 6 | 7 | 8 | class TestProductTemplate(TransactionCase): 9 | 10 | def test_invoice_policy(self): 11 | """ It should ensure the right options exist for invoice policy """ 12 | policy = self.env['product.template']._fields['invoice_policy'] 13 | exp = ('usage', 'threshold') 14 | res = [] 15 | for item in policy.selection: 16 | res.append(item[0]) 17 | for e in exp: 18 | self.assertTrue(e in res) 19 | --------------------------------------------------------------------------------