libretime/api
renovate[bot] a2cf7697a9
fix(deps): update dependency gunicorn to v22 (security) (#2993)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [gunicorn](https://gunicorn.org)
([source](https://togithub.com/benoitc/gunicorn),
[changelog](https://docs.gunicorn.org/en/stable/news.html)) |
`>=20.1.0,<21.3` -> `>=22.0.0,<22.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/gunicorn/22.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/gunicorn/22.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/gunicorn/20.1.0/22.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/gunicorn/20.1.0/22.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

### GitHub Vulnerability Alerts

#### [CVE-2024-1135](https://nvd.nist.gov/vuln/detail/CVE-2024-1135)

Gunicorn fails to properly validate Transfer-Encoding headers, leading
to HTTP Request Smuggling (HRS) vulnerabilities. By crafting requests
with conflicting Transfer-Encoding headers, attackers can bypass
security restrictions and access restricted endpoints. This issue is due
to Gunicorn's handling of Transfer-Encoding headers, where it
incorrectly processes requests with multiple, conflicting
Transfer-Encoding headers, treating them as chunked regardless of the
final encoding specified. This vulnerability has been shown to allow
access to endpoints restricted by gunicorn. This issue has been
addressed in version 22.0.0.

To be affected users must have a network path which does not filter out
invalid requests. These users are advised to block access to restricted
endpoints via a firewall or other mechanism if they are unable to
update.

---

### Release Notes

<details>
<summary>benoitc/gunicorn (gunicorn)</summary>

###
[`v22.0.0`](https://togithub.com/benoitc/gunicorn/releases/tag/22.0.0):
Gunicorn 22.0 has been released

[Compare
Source](https://togithub.com/benoitc/gunicorn/compare/21.2.0...22.0.0)

**Gunicorn 22.0.0 has been released.** This version fix the numerous
security vulnerabilities. You're invited to upgrade asap your own
installation.

Changes:

    22.0.0 - 2024-04-17
    ===================

    - use `utime` to notify workers liveness
    - migrate setup to pyproject.toml
- fix numerous security vulnerabilities in HTTP parser (closing some
request smuggling vectors)
- parsing additional requests is no longer attempted past unsupported
request framing
- on HTTP versions < 1.1 support for chunked transfer is refused (only
used in exploits)
- requests conflicting configured or passed SCRIPT_NAME now produce a
verbose error
- Trailer fields are no longer inspected for headers indicating secure
scheme
    - support Python 3.12

    ** Breaking changes **

    - minimum version is Python 3.7
- the limitations on valid characters in the HTTP method have been
bounded to Internet Standards
- requests specifying unsupported transfer coding (order) are refused by
default (rare)
- HTTP methods are no longer casefolded by default (IANA method registry
contains none affected)
- HTTP methods containing the number sign (#) are no longer accepted by
default (rare)
- HTTP versions < 1.0 or >= 2.0 are no longer accepted by default (rare,
only HTTP/1.1 is supported)
- HTTP versions consisting of multiple digits or containing a
prefix/suffix are no longer accepted
- HTTP header field names Gunicorn cannot safely map to variables are
silently dropped, as in other software
- HTTP headers with empty field name are refused by default (no
legitimate use cases, used in exploits)
- requests with both Transfer-Encoding and Content-Length are refused by
default (such a message might indicate an attempt to perform request
smuggling)
- empty transfer codings are no longer permitted (reportedly seen with
really old & broken proxies)

    ** SECURITY **

    - fix CVE-2024-1135

1. Documentation is available there:
https://docs.gunicorn.org/en/stable/news.html
2.  Packages: https://pypi.org/project/gunicorn/

###
[`v21.2.0`](https://togithub.com/benoitc/gunicorn/releases/tag/21.2.0):
Gunicorn 21.2.0 has been released

[Compare
Source](https://togithub.com/benoitc/gunicorn/compare/21.1.0...21.2.0)

**Gunicorn 21.2.0 has been released.** This version fix the issue
introduced in the threaded worker.

Changes:

    21.2.0 - 2023-07-19
    ===================
    fix thread worker: revert change considering connection as idle .

    *** NOTE ***

    This is fixing the bad file description error.

1. Documentation is available there:
https://docs.gunicorn.org/en/stable/news.html
2.  Packages: https://pypi.org/project/gunicorn/

###
[`v21.1.0`](https://togithub.com/benoitc/gunicorn/releases/tag/21.1.0):
Gunicorn 21.1.0 has been released

[Compare
Source](https://togithub.com/benoitc/gunicorn/compare/21.0.1...21.1.0)

gunicorn 21.1.0 has been released. This version fix the issue introduced
in the threaded worker.

# 21.1.0 - 2023-07-18

-   fix thread worker: fix socket removal from the queuet checkout 21.x

###
[`v21.0.1`](https://togithub.com/benoitc/gunicorn/releases/tag/21.0.1):
Gunicorn 21 has been released

[Compare
Source](https://togithub.com/benoitc/gunicorn/compare/21.0.0...21.0.1)

Gunicorn 21 is out with miscellaneous changes.  Enjoy!

We made this release major to start our new release cycle. More info
will be provided on our discussion forum.

##### 21.0.1 - 2023-07-17

fix documentation build

##### 21.0.0 - 2023-07-17

support python 3.11
fix gevent and eventlet workers
fix threads support (gththread): improve performance and unblock
requests
SSL: noaw use SSLContext object
HTTP parser: miscellaneous fixes
remove unecessary setuid calls
fix testing
improve logging
miscellaneous fixes to core engine

**Full Changelog**:
https://github.com/benoitc/gunicorn/compare/21.0.0...21.0.1

###
[`v21.0.0`](https://togithub.com/benoitc/gunicorn/compare/20.1.0...21.0.0)

[Compare
Source](https://togithub.com/benoitc/gunicorn/compare/20.1.0...21.0.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/libretime/libretime).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMDEuNCIsInVwZGF0ZWRJblZlciI6IjM3LjMwMS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJweXRob24iXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: jo <ljonas@riseup.net>
2024-04-17 08:43:11 +02:00
..
install/systemd feat: run python in optimized mode (#2874) 2024-01-07 14:30:20 +01:00
libretime_api fix: apply replay gain preferences on scheduled files (#2945) 2024-02-08 20:29:10 +01:00
Makefile feat: add sentry sdk 2023-03-14 14:59:45 +00:00
README.md feat: use dedicated 'libretime' user 2022-07-07 10:51:07 +02:00
packages.ini feat(api): install gunicorn/uvicorn from pip 2023-05-11 09:52:58 +01:00
pyproject.toml chore(api): disable duplicate-code check (#2799) 2023-12-18 18:54:07 +01:00
requirements.txt fix(deps): update dependency gunicorn to v22 (security) (#2993) 2024-04-17 08:43:11 +02:00
schema.yml fix: apply replay gain preferences on scheduled files (#2945) 2024-02-08 20:29:10 +01:00
setup.py fix(deps): update dependency gunicorn to v22 (security) (#2993) 2024-04-17 08:43:11 +02:00

README.md

LibreTime API

This API provides access to LibreTime's database via a Django application.

Deploying

Deploying in a production environment is done in the install script which installs LibreTime. This is how the API is installed in the Vagrant development images too. This method does not automatically reflect changes to this API. After any changes, the libretime-api systemd service needs restarting:

sudo systemctl restart libretime-api

Connections to the API are proxied through the Apache web server by default. Endpoint exploration and documentation is available from http://example.com/api/v2/schema/swagger-ui/, where example.com is the URL for the LibreTime instance.

Development

For development, you can install all required dependencies and loading the environment using the following command:

make install
source .venv/bin/activate

You should be able to lint or format the code or run api commands:

make format
make lint

libretime-api help

In order to work with the database and message queue, you need to start the docker based development stack present at the project root:

pushd ..
docker-compose up -d
popd

You can now run the api tests:

make test

Inside Vagrant

You can develop the api using a live reloading version within Vagrant:

vagrant up bullseye
vagrant ssh bullseye

cd /vagrant/api
sudo pip3 install -e .

sudo systemctl stop libretime-api
sudo -u libretime LIBRETIME_DEBUG=True libretime-api runserver 0.0.0.0:8081

3rd Party Licences

libretime_api/tests/resources/song.mp3: Steps - Tears On The Dancefloor (Album Teaser) by mceyedol. Downloaded from https://soundcloud.com/mceyedol/steps-tears-on-the-dancefloor-album-teaser released under a Creative Commons Licence (cc-by-sa-nc-sa)