diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index bcf66c1..4bc6f7f 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -17,7 +17,6 @@ jobs: # The type of runner that the job will run on runs-on: ubuntu-latest - # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it @@ -35,16 +34,21 @@ jobs: python3 -m pip install --upgrade pip if [ -f dev/requirements.txt ]; then pip3 install -r dev/requirements.txt; fi - name: Super-Linter - uses: docker://github/super-linter:v2.2.0 + uses: docker://github/super-linter:v3.3.2 env: VALIDATE_ANSIBLE: false VALIDATE_CLOJURE: false VALIDATE_COFFEE: false + VALIDATE_DART: false VALIDATE_GO: false - VALIDATE_POWERSHELL: false + VALIDATE_JSX: false VALIDATE_KOTLIN: false - VALIDATE_RUBY: false + VALIDATE_POWERSHELL: false VALIDATE_PERL: false VALIDATE_PHP: false + VALIDATE_RAKU: false + VALIDATE_RUBY: false + VALIDATE_TSX: false VALIDATE_TERRAFORM: false + diff --git a/.travis.yml b/.travis.yml index 8a017cb..01d56bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,14 +2,14 @@ language: python python: - "3.6" env: - - DJANGO=2.2.12 + - DJANGO=2.2.14 install: - pip install -r dev/requirements.txt script: - - pep8 --exclude=IPy.py --ignore=E501 vrtManager accounts computes \ + - pep8 --exclude=IPy.py --ignore=E501 vrtManager accounts admin appsettings computes \ console create datasource instances interfaces \ logs networks nwfilters secrets storages - - pyflakes vrtManager accounts computes console create datasource instances interfaces \ + - pyflakes vrtManager accounts admin appsettings computes console create datasource instances interfaces \ nwfilters networks secrets storages logs - python manage.py migrate - python manage.py test --settings=webvirtcloud.settings-dev diff --git a/README.md b/README.md index b7e7640..22cabd2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## WebVirtCloud -###### Python3 & Django 2.2.12 +###### Python3 & Django 2.2 ## Features * QEMU/KVM Hypervisor Management @@ -301,7 +301,7 @@ datasource: ``` ### Reverse-Proxy -Edit WS_PUBLIC_PORT at settings.py file to expose redirect to 80. Default: 6080 +Edit WS_PUBLIC_PORT at settings.py file to expose redirect to 80 or 443. Default: 6080 ``` WS_PUBLIC_PORT = 80 ``` @@ -330,7 +330,7 @@ pip install -r conf/requirements.txt ``` Run tests ```bash -python menage.py test +python manage.py test ``` ### Screenshots diff --git a/accounts/models.py b/accounts/models.py index 1369158..afc1960 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -6,6 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from instances.models import Instance + class UserInstanceManager(models.Manager): def get_queryset(self): return super().get_queryset().select_related('instance', 'user') diff --git a/appsettings/migrations/0004_auto_20200716_0637.py b/appsettings/migrations/0004_auto_20200716_0637.py new file mode 100644 index 0000000..5feffa3 --- /dev/null +++ b/appsettings/migrations/0004_auto_20200716_0637.py @@ -0,0 +1,35 @@ +# Generated by Django 2.2.13 on 2020-07-16 06:37 + +from django.db import migrations +from django.utils.translation import ugettext_lazy as _ + + +def add_default_settings(apps, schema_editor): + setting = apps.get_model("appsettings", "AppSettings") + db_alias = schema_editor.connection.alias + setting.objects.using(db_alias).bulk_create([ + setting(27, _("Console Scale"), "CONSOLE_SCALE", "False", "True,False", _("Allow console to scaling view")), + setting(28, _("Console View-Only"), "CONSOLE_VIEW_ONLY", "False", "True,False", _("Allow only view not modify")), + setting(29, _("Console Resize Session"), "CONSOLE_RESIZE_SESSION", "False", "True,False", _("Allow to resize session for console")), + setting(30, _("Console Clip Viewport"), "CONSOLE_CLIP_VIEWPORT", "False", "True,False", _("Clip console viewport")), + ]) + + +def del_default_settings(apps, schema_editor): + setting = apps.get_model("appsettings", "AppSettings") + db_alias = schema_editor.connection.alias + setting.objects.using(db_alias).filter(key="CONSOLE_SCALE").delete() + setting.objects.using(db_alias).filter(key="CONSOLE_VIEW_ONLY").delete() + setting.objects.using(db_alias).filter(key="CONSOLE_RESIZE_SESSION").delete() + setting.objects.using(db_alias).filter(key="CONSOLE_CLIP_VIEWPORT").delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ('appsettings', '0003_auto_20200615_0637'), + ] + + operations = [ + migrations.RunPython(add_default_settings, del_default_settings), + ] diff --git a/computes/templates/computes/instances.html b/computes/templates/computes/instances.html index d72ecbd..342d53d 100644 --- a/computes/templates/computes/instances.html +++ b/computes/templates/computes/instances.html @@ -112,10 +112,5 @@ {% endblock %} {% block script %} - {% endblock %} \ No newline at end of file diff --git a/conf/requirements-dev.txt b/conf/requirements-dev.txt deleted file mode 100644 index de27d31..0000000 --- a/conf/requirements-dev.txt +++ /dev/null @@ -1,19 +0,0 @@ -beautifulsoup4==4.9.1 -coverage==5.1 -Django==2.2.13 -django-bootstrap4==2.0.1 -django-debug-toolbar==2.2 -django-icons==2.0.0 -django-login-required-middleware==0.5.0 -gunicorn==20.0.4 -libsass==0.20.0 -libvirt-python==6.3.0 -lxml==4.5.0 -numpy==1.18.4 -pytz==2020.1 -rwlock==0.0.7 -six==1.15.0 -soupsieve==2.0.1 -sqlparse==0.3.1 -websockify==0.9.0 -yapf==0.30.0 diff --git a/conf/requirements.txt b/conf/requirements.txt index f55bd1f..73313b0 100644 --- a/conf/requirements.txt +++ b/conf/requirements.txt @@ -1,13 +1,13 @@ beautifulsoup4==4.9.1 -Django==2.2.13 -django-bootstrap4==2.0.1 -django-icons==2.0.0 +Django==2.2.14 +django-bootstrap4==2.2.0 +django-icons==2.1.1 django-login-required-middleware==0.5.0 gunicorn==20.0.4 libsass==0.20.0 -libvirt-python==6.3.0 -lxml==4.5.0 -numpy==1.18.4 +libvirt-python==6.4.0 +lxml==4.5.2 +numpy==1.18.5 pytz==2020.1 rwlock==0.0.7 six==1.15.0 diff --git a/console/templates/console-spice-full.html b/console/templates/console-spice-full.html index d9a7f89..29e52f9 100644 --- a/console/templates/console-spice-full.html +++ b/console/templates/console-spice-full.html @@ -199,7 +199,11 @@ - + {% if perms.instances.passwordless_console %} + + {% else %} + + {% endif %} diff --git a/console/templates/console-spice-lite.html b/console/templates/console-spice-lite.html index 6e4dc9b..8a359b7 100644 --- a/console/templates/console-spice-lite.html +++ b/console/templates/console-spice-lite.html @@ -93,7 +93,11 @@ } if (password === undefined) { - password = spice_query_var('password', ''); + {% if perms.instances.passwordless_console %} + password = '{{ console_passwd }}'; + {% else %} + password = prompt('{% trans "Password" %}'); + {% endif %} //password = '{{ console_passwd | safe }}'; } if (password === 'None') password = ''; diff --git a/console/templates/console-vnc-full.html b/console/templates/console-vnc-full.html index 35f4be1..5eccba8 100755 --- a/console/templates/console-vnc-full.html +++ b/console/templates/console-vnc-full.html @@ -297,7 +297,11 @@