mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			305 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			305 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| """
 | |
| Django settings for webvirtcloud project.
 | |
| 
 | |
| """
 | |
| 
 | |
| import ldap
 | |
| import subprocess
 | |
| from django_auth_ldap.config import LDAPSearch, NestedActiveDirectoryGroupType
 | |
| from django.utils.translation import gettext_lazy as _
 | |
| from pathlib import Path
 | |
| 
 | |
| # Build paths inside the project like this: BASE_DIR / 'subdir'.
 | |
| BASE_DIR = Path(__file__).resolve().parent.parent
 | |
| 
 | |
| SECRET_KEY = ""
 | |
| 
 | |
| DEBUG = False
 | |
| 
 | |
| MAC_OUI = '52:54:10'
 | |
| 
 | |
| ALLOWED_HOSTS = ["*"]
 | |
| 
 | |
| CSRF_TRUSTED_ORIGINS = ['http://localhost',]
 | |
| 
 | |
| # Application definition
 | |
| INSTALLED_APPS = [
 | |
|     "django.contrib.auth",
 | |
|     "django.contrib.contenttypes",
 | |
|     "django.contrib.sessions",
 | |
|     "django.contrib.messages",
 | |
|     "django.contrib.staticfiles",
 | |
|     "django_bootstrap5",
 | |
|     "django_bootstrap_icons",
 | |
|     "django_otp",
 | |
|     "django_otp.plugins.otp_totp",
 | |
|     "drf_yasg",
 | |
|     "accounts",
 | |
|     "admin",
 | |
|     "appsettings",
 | |
|     "computes",
 | |
|     "console",
 | |
|     "datasource",
 | |
|     "networks",
 | |
|     "instances",
 | |
|     "interfaces",
 | |
|     "nwfilters",
 | |
|     "storages",
 | |
|     "virtsecrets",
 | |
|     "logs",
 | |
|     "qr_code",
 | |
|     "rest_framework",
 | |
| ]
 | |
| 
 | |
| MIDDLEWARE = [
 | |
|     "django.middleware.security.SecurityMiddleware",
 | |
|     "whitenoise.middleware.WhiteNoiseMiddleware",
 | |
|     "django.contrib.sessions.middleware.SessionMiddleware",
 | |
|     "django.middleware.locale.LocaleMiddleware",
 | |
|     "django.middleware.common.CommonMiddleware",
 | |
|     #"django.middleware.csrf.CsrfViewMiddleware",
 | |
|     "django.contrib.auth.middleware.AuthenticationMiddleware",
 | |
|     "django_otp.middleware.OTPMiddleware",
 | |
|     "login_required.middleware.LoginRequiredMiddleware",
 | |
|     "django.contrib.auth.middleware.RemoteUserMiddleware",
 | |
|     "django.contrib.messages.middleware.MessageMiddleware",
 | |
|     "django.middleware.clickjacking.XFrameOptionsMiddleware",
 | |
|     "appsettings.middleware.AppSettingsMiddleware",
 | |
|     "webvirtcloud.middleware.ExceptionMiddleware",
 | |
|     "webvirtcloud.middleware.DisableCSRFMiddleware",
 | |
| ]
 | |
| 
 | |
| ROOT_URLCONF = "webvirtcloud.urls"
 | |
| 
 | |
| TEMPLATES = [
 | |
|     {
 | |
|         "BACKEND": "django.template.backends.django.DjangoTemplates",
 | |
|         "DIRS": [
 | |
|             Path.joinpath(BASE_DIR, "templates"),
 | |
|         ],
 | |
|         "APP_DIRS": True,
 | |
|         "OPTIONS": {
 | |
|             "context_processors": [
 | |
|                 "django.template.context_processors.debug",
 | |
|                 "django.template.context_processors.request",
 | |
|                 "django.contrib.auth.context_processors.auth",
 | |
|                 "django.contrib.messages.context_processors.messages",
 | |
|                 "appsettings.context_processors.app_settings",
 | |
|             ],
 | |
|             "libraries": {
 | |
|                 "common_tags": "webvirtcloud.common_tags",
 | |
|             },
 | |
|         },
 | |
|     },
 | |
| ]
 | |
| 
 | |
| WSGI_APPLICATION = "webvirtcloud.wsgi.application"
 | |
| 
 | |
| 
 | |
| # Database
 | |
| # https://docs.djangoproject.com/en/3.0/ref/settings/#databases
 | |
| 
 | |
| DATABASES = {
 | |
|     "default": {
 | |
|         "ENGINE": "django.db.backends.sqlite3",
 | |
|         "NAME": Path.joinpath(BASE_DIR, "db.sqlite3"),
 | |
|     }
 | |
| }
 | |
| 
 | |
| AUTHENTICATION_BACKENDS = [
 | |
|     "django.contrib.auth.backends.ModelBackend",
 | |
|     #"django_auth_ldap.backend.LDAPBackend",
 | |
| ]
 | |
| 
 | |
| LOGIN_URL = "/accounts/login/"
 | |
| 
 | |
| LOGOUT_REDIRECT_URL = "/accounts/login/"
 | |
| 
 | |
| LOGIN_REDIRECT_URL="/instances/"
 | |
| 
 | |
| LANGUAGE_CODE = "en-us"
 | |
| 
 | |
| TIME_ZONE = "UTC"
 | |
| 
 | |
| USE_I18N = True
 | |
| 
 | |
| USE_L10N = True
 | |
| 
 | |
| USE_TZ = True
 | |
| 
 | |
| STATIC_URL = "/static/"
 | |
| 
 | |
| STATIC_ROOT = Path.joinpath(BASE_DIR, "static")
 | |
| 
 | |
| 
 | |
| BS_ICONS_CACHE = Path.joinpath(BASE_DIR, 'static/icon_cache')
 | |
| 
 | |
| # Default primary key field type
 | |
| # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
 | |
| 
 | |
| DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
 | |
| 
 | |
| 
 | |
| LOCALE_PATHS = [
 | |
|     "locale/",
 | |
| ]
 | |
| 
 | |
| LOGGING = {
 | |
|     'version': 1,
 | |
|     'disable_existing_loggers': False,
 | |
|     'formatters': {
 | |
|         'standard': {
 | |
|             'format': '[%(asctime)s] %(levelname)s: %(message)s'
 | |
|         },
 | |
|     },
 | |
|     'handlers': {
 | |
|         'mail_admins': {
 | |
|             'level': 'ERROR',
 | |
|             'class': 'django.utils.log.AdminEmailHandler'
 | |
|             },
 | |
|         'default': {
 | |
|             'level':'INFO',
 | |
|             'class':'logging.handlers.RotatingFileHandler',
 | |
|             'filename': 'webvirtcloud.log',
 | |
|             'formatter':'standard',
 | |
|         },
 | |
|     },
 | |
|     'loggers': {
 | |
|         '': {
 | |
|             'handlers': ['default'],
 | |
|             'level': 'INFO',
 | |
|             'propagate': True
 | |
|         },
 | |
|         'django.request': {
 | |
|             "handlers": ["mail_admins"],
 | |
|             "level": "ERROR",
 | |
|             "propagate": True,
 | |
|         }
 | |
|     },
 | |
| }
 | |
| 
 | |
| 
 | |
| #
 | |
| # WebVirtCloud settings
 | |
| #
 | |
| 
 | |
| # Websock port
 | |
| WS_PORT = 6080
 | |
| 
 | |
| # Websock host
 | |
| WS_HOST = "0.0.0.0"
 | |
| 
 | |
| # Websock public port - 80 or 443 if reverse-proxy, else 6080
 | |
| WS_PUBLIC_PORT = 6080
 | |
| 
 | |
| # Websock public host
 | |
| WS_PUBLIC_HOST = None
 | |
| 
 | |
| # Websock public path
 | |
| WS_PUBLIC_PATH = "/novncd/"
 | |
| 
 | |
| # Websock Certificate for SSL
 | |
| WS_CERT = None
 | |
| 
 | |
| SOCKETIO_PORT = 6081
 | |
| SOCKETIO_HOST = "0.0.0.0"
 | |
| 
 | |
| # Socketio public host
 | |
| SOCKETIO_PUBLIC_HOST = None
 | |
| 
 | |
| # Socketio public port - 80 or 443 if reverse-proxy, else 6081
 | |
| SOCKETIO_PUBLIC_PORT = 6081
 | |
| 
 | |
| # Socketio public path
 | |
| SOCKETIO_PUBLIC_PATH = "socket.io/"
 | |
| 
 | |
| # List of console listen addresses
 | |
| QEMU_CONSOLE_LISTENER_ADDRESSES = (
 | |
|     ("127.0.0.1", _("Localhost")),
 | |
|     ("0.0.0.0", _("All interfaces")),
 | |
| )
 | |
| 
 | |
| # List taken from http://qemu.weilnetz.de/qemu-doc.html#sec_005finvocation
 | |
| QEMU_KEYMAPS = [
 | |
|     "ar",
 | |
|     "da",
 | |
|     "de",
 | |
|     "de-ch",
 | |
|     "en-gb",
 | |
|     "en-us",
 | |
|     "es",
 | |
|     "et",
 | |
|     "fi",
 | |
|     "fo",
 | |
|     "fr",
 | |
|     "fr-be",
 | |
|     "fr-ca",
 | |
|     "fr-ch",
 | |
|     "hr",
 | |
|     "hu",
 | |
|     "is",
 | |
|     "it",
 | |
|     "ja",
 | |
|     "lt",
 | |
|     "lv",
 | |
|     "mk",
 | |
|     "nl",
 | |
|     "nl-be",
 | |
|     "no",
 | |
|     "pl",
 | |
|     "pt",
 | |
|     "pt-br",
 | |
|     "ru",
 | |
|     "sl",
 | |
|     "sv",
 | |
|     "th",
 | |
|     "tr",
 | |
| ]
 | |
| 
 | |
| # Keepalive interval and count for libvirt connections
 | |
| LIBVIRT_KEEPALIVE_INTERVAL = 5
 | |
| LIBVIRT_KEEPALIVE_COUNT = 5
 | |
| 
 | |
| ALLOW_EMPTY_PASSWORD = False
 | |
| NEW_USER_DEFAULT_INSTANCES = []
 | |
| SHOW_PROFILE_EDIT_PASSWORD = True
 | |
| 
 | |
| 
 | |
| # OTP Config
 | |
| OTP_ENABLED = False
 | |
| 
 | |
| LOGIN_REQUIRED_IGNORE_VIEW_NAMES = ["accounts:login", "accounts:email_otp"]
 | |
| 
 | |
| # EMAIL Config
 | |
| EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
 | |
| EMAIL_HOST = 'smtp.gmail.com'
 | |
| EMAIL_USE_TLS = True
 | |
| EMAIL_PORT = 587
 | |
| ## sender's email-id
 | |
| EMAIL_HOST_USER = ''
 | |
| ## password associated with above email-id
 | |
| EMAIL_HOST_PASSWORD = ''
 | |
| 
 | |
| # LDAP Config
 | |
| #
 | |
| 
 | |
| AUTH_LDAP_SERVER_URI = "ldap://example.com"
 | |
| AUTH_LDAP_BIND_DN = "username@example.com"
 | |
| AUTH_LDAP_BIND_PASSWORD = "password"
 | |
| AUTH_LDAP_USER_SEARCH = LDAPSearch(
 | |
|     "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"
 | |
| )
 | |
| AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
 | |
|     "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=group)"
 | |
| )
 | |
| AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType()
 | |
| AUTH_LDAP_REQUIRE_GROUP = "CN=WebVirtCloud Access,CN=Users,DC=example,DC=com"
 | |
| AUTH_LDAP_USER_FLAGS_BY_GROUP = {
 | |
|     "is_staff": "CN=WebVirtCloud Staff,CN=Users,DC=example,DC=com",
 | |
|     "is_superuser": "CN=WebVirtCloud Admins,CN=Users,DC=example,DC=com",
 | |
| }
 | |
| AUTH_LDAP_USER_ATTR_MAP = {
 | |
|     "first_name": "givenName",
 | |
|     "last_name": "sn",
 | |
|     "email": "mail",
 | |
| }
 |