[yocto] [layerindex-web][PATCH v2 000/129] Docker setup / misc fixes (cover letter only)

Paul Eggleton paul.eggleton at linux.intel.com
Thu Jul 25 21:20:31 PDT 2019


The Clear Linux* Dissector [1] is a special-purpose fork of the OE Layer
Index codebase. During development a number of general-purpose fixes have
been made, so I am now sending a slightly reworked set of these back to be
merged into the layer index. Highlights:

* Enhanced docker/docker-compose setup with script for one-command
  installation - this is now the preferred method of installation for
  uses other than development, so the README documentation has been
  updated accordingly.
* User-selectable security questions for password resets
* Fixes for spec file importing
* Various minor security fixes

[1] https://github.com/intel/clear-linux-dissector-web

Changes since v1:

* Add a few more fixes:
  import_otherdistro: handle non-UTF8 encoded spec files
  import_otherdistro: try-specfile: handle files in current dir
  dockersetup: fix error when printing URL with https enabled



The following changes since commit dba1fbe5d1c5d8714d7ca3ca86c42972ebde128e:

  RRS: add missing migration (2019-05-28 09:57:58 +1200)

are available in the Git repository at:

  git://git.yoctoproject.org/layerindex-web paule/dissector-backports
  http://git.yoctoproject.org/cgit.cgi/layerindex-web/log/?h=paule/dissector-backports

Amber Elliot (6):
  docker: add setup script
  admin.py: Add custom SiteAdmin model.
  Upgrade django-registration to version 3.0.
  Add user security questions
  layerindex/urls.py: improve formatting
  requirements.txt: Require secure version of Django.

Paul Eggleton (122):
  Add ability to hide branches
  Split out recipe dependency handling to its own function
  docker: Add docker-compose file
  update_classic_status: recognise pythonhosted.org as python
  update_classic_status: set category for KDE packages
  update_classic_status: categorise perl packages
  import_otherdistro: add description option
  import_otherdistro: improve display of deleted items
  dockersetup: formatting fixes
  dockersetup: add some error checking to the setup script
  dockersetup: tweak portmapping option and display port
  docker/nginx*.conf: fix up indentation
  docker: use quoted values
  dockersetup: add HTTPS support and use by default
  dockersetup: Show intro message
  dockersetup: add letsencrypt support
  nginx: set some limits for DDOS protection
  docker: set mariadb wait_timeout to upstream default
  dockerignore: add docker files and tests
  docker: enable user/password for RabbitMQ server
  dockersetup: move HTTPS code to its own function
  dockersetup: support update/reinstall mode
  dockersetup: fix auto-generated passwords
  dockersetup: warn if http proxy specified without https
  dockersetup: use separate db account with lower privileges
  dockersetup: use with open in readfile/writefile
  .gitignore: add some more files/dirs
  dockersetup: support importing gzip compressed database dumps
  docker: pass through options for migrate script
  docker: restart services automatically unless stopped
  Update TableSorter to latest version of active fork
  Disable caching on auth views
  docker: enable SECURE_BROWSER_XSS_FILTER
  Use shell=False where possible with utils.runcmd()
  dockersetup: import database dump before running migrations
  dockersetup: move superuser account creation to the end
  dockersetup: set site info and email host
  Rework README documents
  import_layers: fix URL construction
  Add a script to create initial db dump
  dockersetup: add option to skip database migrations
  dockersetup: enable error report emails
  Disable autocomplete on sensitive fields
  docker: Increase nginx max upload size
  docker: increase gunicorn worker timeout to handle large images
  ClassicRecipeDetailView does not need a form
  Add ability to disposition comparison patches
  Add access controls to PatchDispositionAdmin
  import_otherdistro: refactor spec file import
  import_otherdistro.py: avoid deleting all records if no spec files found
  import_otherdistro.py: create layer/branch if they don't exist
  Add sha256sum to Source model
  Record sha256sum of other distro source files
  dockersetup: require email address
  import_otherdistro: optionally store local path
  import_otherdistro: fix handling of garbage in description values
  Determine if spec file patches are actually applied and striplevel
  docker-compose: fix missing DATABASE_USER for layerscelery service
  docker: add dependencies for derivative import
  tasks: support running non-shell commands
  tasks: fix incorrect closing tag on button
  Enable task log/progress to work within docker
  tasks: handle carriage returns in task output
  Record configure options
  Fix erroneously importing package fields from spec files
  docker: use python3 in migrate script
  docker: improve nginx https configuration security
  docker: Increase max packet size to 128M
  tasks: disable broker heartbeat to workaround connection issues
  dockersetup: 'easy' subprocess conversions to not use shell=True
  dockersetup: require python 3.4.3 or later
  More shell quoting
  dockersetup: remove redundant code to update non-HTTPS lines in nginx-ssl.conf
  dockersetup: update nginx-ssl.conf in update mode
  Reimplement simplesearch
  admin: allow searching ClassicRecipes by cover_pn
  requirements.txt: update versions
  Set permissions for all volumes
  docker: ensure application files are owned by root
  Fix incorrect URL name leading to internal server error
  Add license / note for django-registration-templates
  Add LICENSE texts for distributed components
  COPYING.MIT: update
  admin: allow editing ClassicRecipe fields
  Fix progressive task output when it contains entity-escaped characters
  Try to make running background commands more responsive
  Add a workaround for ConnectionResetErrors in task_log_view()
  docker: delete docker directory from /opt/layerindex
  Use "Packages" in tab name on main comparison pages instead of "Recipes"
  Include branch name in "Not being applied" patch tooltip
  Tone down Axes aggressiveness
  dockersetup: use docker-compose exec instead of docker exec
  dockersetup: Use -T option with docker-compose exec
  dockersetup: obtain and use the real project name instead of hardcoding
  dockersetup: add option to specify docker-compose project name
  Replace custom pagination with django-bootstrap-pagination
  dockersetup: do not set site name if a database file is specified
  dockersetup: add option to disable adding admin user
  docker: remove hardcoded container names
  README: add pointer to import layer index data
  requirements.txt: update
  check_requirements: write out output of safety check
  check_requirements.sh: improve output for cron usage
  Fix axes lockout not working
  dockersetup: handle http/https port properly
  dockersetup: show a warning if no email host specified
  dockersetup: refactor arguments handling slightly
  dockersetup: support encryption/authentication for SMTP
  check_requirements: make output file naming a bit more consistent
  .gitignore: add a few more files
  docker: disable client MIME type sniffing
  check_requirements.sh: more tweaks
  Tweak password reset security question handling
  Fix a couple of Edit Profile form message bugs
  requirements.txt: update pillow
  auth_views: minor indentation fix
  Fix admin logout login button redirection
  Set string representation for UserProfile & SecurityQuestionAnswer models
  Optionally allow accounts without security questions to reset password
  import_otherdistro: handle non-UTF8 encoded spec files
  import_otherdistro: try-specfile: handle files in current dir
  dockersetup: fix error when printing URL with https enabled

Terri Oda (1):
  dockersetup: quote user input sent to subprocess

 .dockerignore                                 |    8 +
 .gitignore                                    |   15 +
 COPYING.MIT                                   |    5 +-
 Dockerfile                                    |    8 +-
 README                                        |  278 +-
 README.devel                                  |  121 +
 check_requirements.sh                         |   48 +-
 docker-compose.yml                            |   95 +
 docker/README                                 |   99 +-
 docker/certs/README                           |    7 +
 docker/migrate.sh                             |    2 +-
 docker/nginx-ssl.conf                         |   65 +-
 docker/nginx.conf                             |    6 +-
 docker/settings.py                            |   24 +-
 dockersetup.py                                |  785 ++++
 layerindex/admin.py                           |   31 +-
 layerindex/auth_forms.py                      |  133 +-
 layerindex/auth_views.py                      |   91 +-
 layerindex/context_processors.py              |    6 +-
 layerindex/forms.py                           |   75 +-
 layerindex/middleware.py                      |   15 +
 layerindex/migrations/0028_branch_hidden.py   |   20 +
 .../migrations/0030_securityquestion.py       |   46 +
 .../0031_securityquestion_populate.py         |   25 +
 .../migrations/0032_patchdisposition.py       |   31 +
 .../migrations/0034_source_sha256sum.py       |   20 +
 .../migrations/0036_layerbranch_local_path.py |   20 +
 layerindex/migrations/0037_patch_applied.py   |   20 +
 .../migrations/0038_patch_striplevel.py       |   20 +
 .../migrations/0041_recipe_configopts.py      |   20 +
 layerindex/models.py                          |   53 +
 layerindex/recipeparse.py                     |   42 +
 layerindex/securityquestions.py               |    6 +
 layerindex/simplesearch.py                    |   39 -
 layerindex/static/LICENSE.bootstrap           |   21 +
 layerindex/static/LICENSE.chartjs             |    9 +
 layerindex/static/LICENSE.diff2html           |   20 +
 layerindex/static/LICENSE.jquery              |   36 +
 layerindex/tasks.py                           |   13 +-
 layerindex/templatetags/addurlparameter.py    |   29 -
 layerindex/templatetags/pagination.py         |   52 -
 layerindex/tools/import_layer.py              |   10 +-
 layerindex/tools/import_layers.py             |    2 +-
 layerindex/tools/import_otherdistro.py        |  283 +-
 layerindex/tools/import_project.py            |    8 +-
 layerindex/tools/initial_db_dump.sh           |   67 +
 layerindex/tools/site_name.py                 |   71 +
 layerindex/tools/update_classic_status.py     |   10 +-
 layerindex/update.py                          |    4 +-
 layerindex/update_layer.py                    |   46 +-
 layerindex/urls.py                            |   79 +-
 layerindex/utils.py                           |   43 +-
 layerindex/views.py                           |  187 +-
 requirements.txt                              |   38 +-
 rrs/static/js/jquery.tablesorter.js           | 3945 ++++++++++++-----
 rrs/tools/rrs_maintainer_history.py           |    8 +-
 rrs/tools/rrs_upgrade_history.py              |   12 +-
 rrs/tools/rrs_upstream_email.py               |    2 +-
 rrs/tools/upgrade_history_internal.py         |   16 +-
 settings.py                                   |   11 +-
 templates/base.html                           |    6 +-
 .../activate.html                             |    2 +-
 .../activation_complete.html                  |    2 +-
 .../activation_email_body.txt}                |    2 +-
 .../activation_email_subject.txt              |    0
 .../activation_failed.html                    |   13 +
 .../registration_complete.html                |    0
 .../registration_form.html                    |    2 +-
 templates/layerindex/bulkchangesearch.html    |    6 +-
 templates/layerindex/classes.html             |    6 +-
 templates/layerindex/classicrecipedetail.html |   65 +
 templates/layerindex/classicrecipes.html      |   10 +-
 templates/layerindex/classicstats.html        |    2 +-
 .../layerindex/comparisonrecipebase.html      |   29 +-
 templates/layerindex/distros.html             |    6 +-
 templates/layerindex/history.html             |    6 +-
 templates/layerindex/layers.html              |    6 +-
 templates/layerindex/machines.html            |    6 +-
 templates/layerindex/profile.html             |    6 +
 templates/layerindex/recipes.html             |    6 +-
 templates/layerindex/reviewlist.html          |    6 +-
 templates/layerindex/task.html                |   21 +-
 templates/layerindex/updatelist.html          |    6 +-
 templates/pagination.html                     |   57 -
 templates/registration/LICENSE                |   21 +
 templates/registration/account_lockout.html   |    6 +
 .../{logout.html => logged_out.html}          |    0
 templates/registration/login.html             |    6 +-
 .../registration/password_change_form.html    |    2 +-
 .../registration/password_reset_complete.html |    2 +-
 .../registration/password_reset_confirm.html  |    8 +-
 .../registration/password_reset_email.txt     |    2 +-
 .../registration/password_reset_fail.html     |    6 +
 .../registration/password_reset_form.html     |    2 +-
 urls.py                                       |   26 +-
 95 files changed, 5910 insertions(+), 1743 deletions(-)
 create mode 100644 README.devel
 create mode 100644 docker-compose.yml
 create mode 100644 docker/certs/README
 create mode 100755 dockersetup.py
 create mode 100644 layerindex/middleware.py
 create mode 100644 layerindex/migrations/0028_branch_hidden.py
 create mode 100644 layerindex/migrations/0030_securityquestion.py
 create mode 100644 layerindex/migrations/0031_securityquestion_populate.py
 create mode 100644 layerindex/migrations/0032_patchdisposition.py
 create mode 100644 layerindex/migrations/0034_source_sha256sum.py
 create mode 100644 layerindex/migrations/0036_layerbranch_local_path.py
 create mode 100644 layerindex/migrations/0037_patch_applied.py
 create mode 100644 layerindex/migrations/0038_patch_striplevel.py
 create mode 100644 layerindex/migrations/0041_recipe_configopts.py
 create mode 100644 layerindex/securityquestions.py
 delete mode 100644 layerindex/simplesearch.py
 create mode 100644 layerindex/static/LICENSE.bootstrap
 create mode 100644 layerindex/static/LICENSE.chartjs
 create mode 100644 layerindex/static/LICENSE.diff2html
 create mode 100644 layerindex/static/LICENSE.jquery
 delete mode 100644 layerindex/templatetags/addurlparameter.py
 delete mode 100644 layerindex/templatetags/pagination.py
 create mode 100755 layerindex/tools/initial_db_dump.sh
 create mode 100755 layerindex/tools/site_name.py
 rename templates/{registration => django_registration}/activate.html (77%)
 rename templates/{registration => django_registration}/activation_complete.html (62%)
 rename templates/{registration/activation_email.txt => django_registration/activation_email_body.txt} (83%)
 rename templates/{registration => django_registration}/activation_email_subject.txt (100%)
 create mode 100644 templates/django_registration/activation_failed.html
 rename templates/{registration => django_registration}/registration_complete.html (100%)
 rename templates/{registration => django_registration}/registration_form.html (93%)
 delete mode 100644 templates/pagination.html
 create mode 100644 templates/registration/LICENSE
 create mode 100644 templates/registration/account_lockout.html
 rename templates/registration/{logout.html => logged_out.html} (100%)
 create mode 100644 templates/registration/password_reset_fail.html

-- 
2.20.1



More information about the yocto mailing list