1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-11 04:36:48 +00:00
Commit graph

104 commits

Author SHA1 Message Date
catborise
85706c5df6 feat(settings): database (PostgreSQL) and SMTP are configurable from the environment 2026-10-07 16:31:56 +03:00
catborise
c2fea2aa39 feat(accounts): failed logins lock a user for the address they come from
Nothing limited failed logins: a password could be guessed at the speed
the server answers. django-axes (8.3.1, Django 5.2, Python 3.10-3.13)
now counts them.

- A user is locked for the address the failed logins come from
  (username and IP together), so an attacker cannot lock someone out
  from elsewhere and users behind one NAT address do not share a lock.
  A successful login resets the count. axes sits in front of every
  authentication: the login page with or without OTP, LDAP and the API.
- The number of failed logins (default 5) and the lock time in minutes
  (default 15) are on the Settings page (LOGIN_FAILURE_LIMIT,
  LOGIN_LOCKOUT_MINUTES, added by migration appsettings.0014) and apply
  at once; an invalid value falls back to the default. Unlock with
  "manage.py axes_reset_username <username>".
- Behind the bundled nginx every request comes from 127.0.0.1; the
  client address is read from X-Real-IP, which nginx sets, but only for
  requests from a loopback address or from LOGIN_TRUSTED_PROXIES, so a
  forged header does not escape a lock.

settings.py.template gets the app, middleware, backend and AXES_*
settings; README tells existing installations what to copy. Tests that
call client.login now pass a request, which the axes backend needs.
The new tests fail with axes disabled.
2026-10-06 11:05:03 +03:00
catborise
63b9f86436 build: drop unused dependencies
ldap3, markdown, zipp, qrcode and tzdata are not imported anywhere and
no installed package needs them on Linux with Python 3.10-3.13: LDAP
login uses python-ldap through django-auth-ldap, QR codes come from
django-qr-code (segno), qrcode is only an optional django-otp extra,
tzdata is a Windows-only Django dependency and TIME_ZONE is UTC.
python-engineio stays pinned next to python-socketio, which requires it.

The test suite passes with the five packages uninstalled.
2026-10-04 01:08:11 +03:00
catborise
e94d69a524 feat(accounts): Django's LoginRequiredMiddleware replaces the package
django-login-required-middleware is dropped; Django 5.1+ ships the same
middleware. The login page is already marked login_not_required by
Django; email_otp gets the decorator, which replaces
LOGIN_REQUIRED_IGNORE_VIEW_NAMES. The datasource still requires login.

Existing settings.py files still name the old middleware. A system
check (accounts.E002) stops migrate and the server until MIDDLEWARE
uses Django's middleware, instead of an ImportError at startup; the
README has the steps.

A new matrix test walks every URL anonymously: everything outside a
short allowlist (login pages, the OpenAPI docs) sends the visitor to
the login page, and API views deny with 401/403. It passed with the old
middleware first and passes unchanged now.
2026-10-04 01:08:11 +03:00
catborise
920f318601 build: Django 5.2.17 LTS
Django 4.2 reached end of life on 2026-04-07.

- Django==5.2.17; django-login-required-middleware 0.9.0 keeps working
  (the authorization matrix passes).
- USE_L10N removed from the settings template.
- Log out is a POST form in the navbar; Django 5 removed GET logout.
- pip-audit in CI no longer ignores the Django 4.2.30 advisories.
- README: Django 5.2, backup step and upgrade notes for existing
  settings and GET logout callers.

python -Wd manage.py test shows no Django deprecation warnings. The live
libvirt suite passes on 5.2 and on 4.2 against a RHEL qemu-kvm host.
2026-10-04 01:08:11 +03:00
catborise
964b58778d ci: test Python 3.13, check migrations, schema, deploy and audit
- Matrix 3.10-3.13; pip cache keyed on the requirements.
- New steps: makemigrations --check, spectacular --validate
  --fail-on-warn, check --deploy --fail-level ERROR, pip-audit of the
  installed environment (the Django 4.2.30 advisories are ignored until
  the Django 5.2 upgrade), and a Docker image build.
- The separate vrtManager unittest run is dropped; manage.py test
  already runs those tests.
- CodeQL also runs on pull requests to master.
- Docker installs into a plain venv instead of using the distro's
  python3-lxml and python3-libvirt; lxml>=6.1, since the distro's
  lxml 5.2.1 has CVE-2026-41066.
- dev requirements add ruff and pip-audit.
2026-10-04 01:08:11 +03:00
catborise
33550e5e3a chore(deps): update production and development requirements for Django 4.2 LTS
- Upgraded Django to 4.2.30 (latest Django 4.x LTS release)
- Upgraded production dependencies in conf/requirements.txt:
  * django_bootstrap5 to 26.2 (latest supporting Django 4.2)
  * django-otp to 1.7.3
  * django-auth-ldap to 5.3.0
  * djangorestframework to 3.17.2 (latest supporting Django 4.2)
  * drf-nested-routers to 0.95.3
  * drf-spectacular[sidecar] to 0.30.0
  * eventlet to 0.41.2
  * gunicorn to 26.2.0
  * markdown to 3.10 (supporting Python 3.10+)
  * paramiko to 5.0.0
  * python-engineio to 4.14.0
  * python-socketio to 5.17.0
  * whitenoise to 6.12.0
  * zipp to 4.1.0
- Upgraded development dependencies in dev/requirements.txt:
  * coverage to 7.16.1
  * django-debug-toolbar to 6.3.0 (latest supporting Django 4.2)
  * pycodestyle to 2.15.0
  * pyflakes to 4.0.0
  * pylint to 4.0.9
  * black to 26.5.1
2026-09-27 00:22:38 +03:00
catborise
f5e5ff2759 fix(install): refine openSUSE Leap dependencies and streamline installer execution
- Add Python 3.11 package detection and alternatives configuration for openSUSE/SLES
- Relax libvirt-python and lxml minimum versions in requirements to match distro-provided packages
- Gracefully handle missing hostname command in minimal/containerized SUSE environments
- Prevent redundant git clone if workspace already exists in target path
2026-09-25 20:44:52 +03:00
catborise
7a9b3c9e13 feat(dev): improve Rocky Linux and RHEL compatibility for local development
- Relax libvirt-python and lxml version pins to allow precompiled distro packages
- Add PEP 508 environment marker to crypt-r (python_version >= 3.13) to avoid unnecessary C compilation on Python 3.12
- Add stdlib crypt fallback when crypt_r is not available in instances/views.py
- Make LDAP imports and configuration optional in settings.py.template
- Add --system-site-packages and missing packages in webvirtcloud.sh for RHEL/CentOS
- Update README with working Rocky Linux / RHEL / Fedora installation and local dev setup
2026-09-25 09:45:54 +03:00
catborise
67364e2a05 feat(api): migrate API documentation from drf-yasg to drf-spectacular
- Replace abandoned drf-yasg with drf-spectacular and drf-spectacular-sidecar
- Configure OpenAPI 3.0 schema generation and offline sidecar assets in settings
- Update schema, Swagger UI, and ReDoc routes in webvirtcloud/urls.py
- Add backwards-compatible AutoSchema fallback for existing settings installations
- Remove 130 obsolete legacy drf-yasg static assets
- Update upgrade instructions in README.md and project documentation
2026-09-25 08:08:36 +03:00
catborise
dc6327c554 fix(vrtManager): modernize rwlock for Python 3.12 compatibility and add tests 2026-09-24 21:49:52 +03:00
hudeng
326579a6ea feat: Add ISO file upload progress support. 2025-07-17 17:11:30 +08:00
catborise
b909a81f51 update requirements 2025-07-01 15:06:29 +03:00
catborise
099769d305
Merge pull request #666 from liangsuilong/master
crypt-r replaces crypt stdlib, support python-3.13
2025-05-02 10:10:40 +03:00
catborise
34f08fc555 update requirements 2025-05-02 10:06:09 +03:00
Liang Suilong
8bca7db917 crypt-r replaces crypt stdlib, support python-3.13 2025-03-30 10:33:51 +08:00
catborise
1a800b4535 update requirements 2025-03-11 10:38:38 +03:00
catborise
b55552f05a update requirements 2024-10-15 16:37:21 +03:00
catborise
24f751774b update requirements 2024-08-27 10:45:51 +03:00
catborise
cb7b690a10 update requirements 2024-07-23 14:53:41 +03:00
catborise
072a922c15 update requirements 2024-06-24 09:32:41 +03:00
catborise
fc60819ff1 update requirements 2024-04-29 12:13:04 +03:00
catborise
6144760456 update requirements 2024-02-13 14:28:13 +03:00
catborise
bfe7da1ccc add tzdata package and reorder package names 2024-01-17 10:20:06 +03:00
catborise
f0cd0bc04f update requirements 2024-01-17 09:28:01 +03:00
catborise
296081d1e3
Merge branch 'master' into master 2023-11-10 16:35:51 +03:00
catborise
e324a19401 add white noise for static_root/staticfiles_dir problem for debug/non-debug running mode 2023-11-10 16:29:48 +03:00
catborise
2ff0abf8c5
Merge pull request #619 from catborise/master
update requirements
2023-10-30 15:59:51 +03:00
catborise
7171a70f75 update requirements 2023-10-30 15:56:54 +03:00
Amélie Krejčí
01a4225a84
Add django-auth-ldap dependency 2023-09-11 21:16:51 +02:00
catborise
cbd1f6f8b0 update requirement and fix install script 2023-09-06 09:41:08 +03:00
catborise
2935c9d382 update django 3.2.20 -> 4.2.4 2023-08-23 09:26:39 +03:00
catborise
fc2063eccb update requirements 2023-08-17 13:35:55 +03:00
Emre Serdengeçti
1cbdf76df6
logger updates (#31)
* Log for failed login attempts

* Logger configuration for logging to file

* interface fixes

* login log fix, added logged in too

* bootstrap icons setup

* font-awesome icons replaced with bootstrap icons

* replaced i-tags with django_bootstrap_icons

* removed icons library from project

* bug fix

---------

Co-authored-by: catborise <catborise@gmail.com>
2023-08-09 09:20:18 +03:00
catborise
07d7a6d752 update requirements 2023-07-11 11:14:56 +03:00
catborise
9671f7b3e0 update requirements 2023-05-12 10:30:50 +03:00
catborise
0754d07540 update requirements 2023-04-27 16:56:55 +03:00
catborise
9f8aaee15a update requirements 2023-02-16 09:11:49 +03:00
catborise
33002d5a49 update requirements 2023-02-06 09:03:29 +03:00
catborise
2fdcc86b4e update requirements 2023-01-24 15:10:33 +03:00
catborise
1348679997 resolve dependency problem with markdown 2023-01-23 08:25:44 +03:00
catborise
773709ce57 update requirements 2022-10-06 11:45:52 +03:00
catborise
cfce71ec2b
Rest framework (#24)
* Add rest framework for API: First Commit

* modify some shell scripts to make variable references safer; modify some python scripts to reduce the code complexity and cyclomatic complexity of functions.

* Add REST API for some webvirtcloud functions. Instance list/delete/create, compute list/delete/create, storages-network list/retrieve. Add swagger and redoc for API interface

* update requirements

Co-authored-by: herengui <herengui@uniontech.com>
2022-08-22 15:12:33 +03:00
catborise
0680f02240 remove css urls, add missing socketio requirements, fix cookie import, and rearrange socketiod connetion 2022-07-21 13:31:37 +03:00
catborise
d24d6b037d
Merge pull request #520 from catborise/master
update reqs and ace.js
2022-07-19 16:19:27 +03:00
catborise
6f7d62a860 update libvirt + Django req 2022-07-19 16:16:02 +03:00
Gaëtan Ferez
65dce10ce1 Implement Libvirt Serial Console as Console on WebVirtCloud 2022-07-17 13:25:47 +02:00
catborise
f3d1c17a23 update requirements 2022-06-27 11:17:58 +03:00
catborise
2877f7b120 update requirements 2022-04-25 08:08:55 +03:00
catborise
acca92ecb4 update requirements 2022-02-10 15:33:54 +03:00