diff --git a/README.md b/README.md
index d2229ad..53341c8 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## WebVirtCloud
+# WebVirtCloud
###### Python3 & Django 2.2
## Features
@@ -25,10 +25,21 @@ wget -O - https://clck.ru/9VMRH | sudo tee -a /usr/local/bin/gstfsd
sudo service supervisor restart
```
-### Description
+## Description
WebVirtCloud is a virtualization web interface for admins and users. It can delegate Virtual Machine's to users. A noVNC viewer presents a full graphical console to the guest domain. KVM is currently the only hypervisor supported.
+## Quick Install with Installer (Beta)
+Install an OS and run specified commands. Installer supported OSes: Ubuntu 18.04, Debian 10, Centos/OEL/RHEL 8.
+It can be installed on a virtual machine, physical host or on a KVM host.
+```bash
+wget https://raw.githubusercontent.com/retspen/webvirtcloud/master/install.sh
+chmod 744 install.sh
+# run with sudo or root user
+./install.sh
+```
+
+## Manual Installation
### Generate secret key
You should generate SECRET_KEY after cloning repo. Then put it into webvirtcloud/settings.py.
@@ -95,7 +106,7 @@ sudo sed -r "s/SECRET_KEY = ''/SECRET_KEY = '"`python3 /srv/webvirtcloud/conf/ru
```
#### Start installation webvirtcloud
-```
+```bash
virtualenv-3 venv
source venv/bin/activate
pip3 install -r conf/requirements.txt
@@ -306,7 +317,7 @@ Edit WS_PUBLIC_PORT at settings.py file to expose redirect to 80 or 443. Default
WS_PUBLIC_PORT = 80
```
-### How To Update
+## How To Update
```bash
# Go to Installation Directory
cd /srv/webvirtcloud
@@ -333,7 +344,7 @@ Run tests
python manage.py test
```
-### Screenshots
+## Screenshots
Instance Detail:
Instance List:
@@ -343,6 +354,6 @@ Other:
-### License
+## License
WebVirtCloud is licensed under the [Apache Licence, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).
diff --git a/admin/forms.py b/admin/forms.py
index 6856d7b..72e6d0a 100644
--- a/admin/forms.py
+++ b/admin/forms.py
@@ -73,13 +73,14 @@ class UserForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
- password = ReadOnlyPasswordHashField(label=_("Password"),
- help_text=format_lazy(_("""Raw passwords are not stored, so there is no way to see
- this user's password, but you can change the password
- using this form."""),
- reverse_lazy('admin:user_update_password', args=[self.instance.id,]))
- )
- self.fields['Password'] = password
+ if self.instance.id:
+ password = ReadOnlyPasswordHashField(label=_("Password"),
+ help_text=format_lazy(_("""Raw passwords are not stored, so there is no way to see
+ this user's password, but you can change the password
+ using this form."""),
+ reverse_lazy('admin:user_update_password', args=[self.instance.id,]))
+ )
+ self.fields['Password'] = password
class UserCreateForm(UserForm):
diff --git a/conf/nginx/centos_nginx.conf b/conf/nginx/centos_nginx.conf
new file mode 100644
index 0000000..2327039
--- /dev/null
+++ b/conf/nginx/centos_nginx.conf
@@ -0,0 +1,37 @@
+# For more information on configuration, see:
+# * Official English Documentation: http://nginx.org/en/docs/
+# * Official Russian Documentation: http://nginx.org/ru/docs/
+
+user nginx;
+worker_processes auto;
+error_log /var/log/nginx/error.log;
+pid /run/nginx.pid;
+
+# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
+include /usr/share/nginx/modules/*.conf;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ access_log /var/log/nginx/access.log main;
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ # Load modular configuration files from the /etc/nginx/conf.d directory.
+ # See http://nginx.org/en/docs/ngx_core_module.html#include
+ # for more information.
+ include /etc/nginx/conf.d/*.conf;
+}
diff --git a/conf/nginx/debian_nginx.conf b/conf/nginx/debian_nginx.conf
new file mode 100644
index 0000000..5b107cb
--- /dev/null
+++ b/conf/nginx/debian_nginx.conf
@@ -0,0 +1,85 @@
+user www-data;
+worker_processes auto;
+pid /run/nginx.pid;
+include /etc/nginx/modules-enabled/*.conf;
+
+events {
+ worker_connections 768;
+ # multi_accept on;
+}
+
+http {
+
+ ##
+ # Basic Settings
+ ##
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ # server_tokens off;
+
+ # server_names_hash_bucket_size 64;
+ # server_name_in_redirect off;
+
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ ##
+ # SSL Settings
+ ##
+
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
+ ssl_prefer_server_ciphers on;
+
+ ##
+ # Logging Settings
+ ##
+
+ access_log /var/log/nginx/access.log;
+ error_log /var/log/nginx/error.log;
+
+ ##
+ # Gzip Settings
+ ##
+
+ gzip on;
+
+ # gzip_vary on;
+ # gzip_proxied any;
+ # gzip_comp_level 6;
+ # gzip_buffers 16 8k;
+ # gzip_http_version 1.1;
+ # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
+
+ ##
+ # Virtual Host Configs
+ ##
+
+ include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/sites-enabled/*;
+}
+
+
+#mail {
+# # See sample authentication script at:
+# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
+#
+# # auth_http localhost/auth.php;
+# # pop3_capabilities "TOP" "USER";
+# # imap_capabilities "IMAP5rev1" "UIDPLUS";
+#
+# server {
+# listen localhost:110;
+# protocol pop3;
+# proxy on;
+# }
+#
+# server {
+# listen localhost:143;
+# protocol imap;
+# proxy on;
+# }
+#}
diff --git a/conf/nginx/ubuntu_nginx.conf b/conf/nginx/ubuntu_nginx.conf
new file mode 100644
index 0000000..5b107cb
--- /dev/null
+++ b/conf/nginx/ubuntu_nginx.conf
@@ -0,0 +1,85 @@
+user www-data;
+worker_processes auto;
+pid /run/nginx.pid;
+include /etc/nginx/modules-enabled/*.conf;
+
+events {
+ worker_connections 768;
+ # multi_accept on;
+}
+
+http {
+
+ ##
+ # Basic Settings
+ ##
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ # server_tokens off;
+
+ # server_names_hash_bucket_size 64;
+ # server_name_in_redirect off;
+
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ ##
+ # SSL Settings
+ ##
+
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
+ ssl_prefer_server_ciphers on;
+
+ ##
+ # Logging Settings
+ ##
+
+ access_log /var/log/nginx/access.log;
+ error_log /var/log/nginx/error.log;
+
+ ##
+ # Gzip Settings
+ ##
+
+ gzip on;
+
+ # gzip_vary on;
+ # gzip_proxied any;
+ # gzip_comp_level 6;
+ # gzip_buffers 16 8k;
+ # gzip_http_version 1.1;
+ # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
+
+ ##
+ # Virtual Host Configs
+ ##
+
+ include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/sites-enabled/*;
+}
+
+
+#mail {
+# # See sample authentication script at:
+# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
+#
+# # auth_http localhost/auth.php;
+# # pop3_capabilities "TOP" "USER";
+# # imap_capabilities "IMAP5rev1" "UIDPLUS";
+#
+# server {
+# listen localhost:110;
+# protocol pop3;
+# proxy on;
+# }
+#
+# server {
+# listen localhost:143;
+# protocol imap;
+# proxy on;
+# }
+#}
diff --git a/console/templates/console-vnc-full.html b/console/templates/console-vnc-full.html
index 5eccba8..f7c58d1 100755
--- a/console/templates/console-vnc-full.html
+++ b/console/templates/console-vnc-full.html
@@ -17,7 +17,11 @@
-
+
+
+
+
@@ -54,12 +58,8 @@
-
-
-
+
@@ -91,7 +91,7 @@