mirror of https://github.com/jumpserver/jumpserver
[Update] 修改common settings配置
parent
c9aab608a9
commit
dda367a956
|
@ -4,11 +4,10 @@ import json
|
|||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.db import transaction
|
||||
from django.conf import settings
|
||||
|
||||
from .models import Setting, common_settings
|
||||
from .fields import FormDictField, FormEncryptCharField, \
|
||||
FormEncryptMixin, FormEncryptDictField
|
||||
FormEncryptMixin
|
||||
|
||||
|
||||
class BaseForm(forms.Form):
|
||||
|
@ -16,17 +15,17 @@ class BaseForm(forms.Form):
|
|||
super().__init__(*args, **kwargs)
|
||||
for name, field in self.fields.items():
|
||||
db_value = getattr(common_settings, name)
|
||||
django_value = getattr(settings, name) if hasattr(settings, name) else None
|
||||
# django_value = getattr(settings, name) if hasattr(settings, name) else None
|
||||
|
||||
if db_value is None and django_value is None:
|
||||
if db_value is None: # and django_value is None:
|
||||
continue
|
||||
|
||||
if db_value is False or db_value:
|
||||
if db_value is not None:
|
||||
if isinstance(db_value, dict):
|
||||
db_value = json.dumps(db_value)
|
||||
initial_value = db_value
|
||||
elif django_value is False or django_value:
|
||||
initial_value = django_value
|
||||
# elif django_value is False or django_value:
|
||||
# initial_value = django_value
|
||||
else:
|
||||
initial_value = ''
|
||||
field.initial = initial_value
|
||||
|
|
|
@ -40,11 +40,15 @@ class Setting(models.Model):
|
|||
return self.name
|
||||
|
||||
def __getattr__(self, item):
|
||||
instances = self.__class__.objects.filter(name=item)
|
||||
default = getattr(settings, item, None)
|
||||
try:
|
||||
instances = self.__class__.objects.filter(name=item)
|
||||
except Exception:
|
||||
return default
|
||||
if len(instances) == 1:
|
||||
return instances[0].cleaned_value
|
||||
else:
|
||||
return None
|
||||
return default
|
||||
|
||||
@property
|
||||
def cleaned_value(self):
|
||||
|
|
|
@ -38,7 +38,7 @@ def reverse(view_name, urlconf=None, args=None, kwargs=None,
|
|||
|
||||
if external:
|
||||
from common.models import common_settings
|
||||
site_url = common_settings.SITE_URL or settings.SITE_URL
|
||||
site_url = common_settings.SITE_URL
|
||||
url = site_url.strip('/') + url
|
||||
return url
|
||||
|
||||
|
@ -389,53 +389,20 @@ def get_request_ip(request):
|
|||
return login_ip
|
||||
|
||||
|
||||
def get_command_storage_or_create_default_storage():
|
||||
from common.models import common_settings, Setting
|
||||
name = 'TERMINAL_COMMAND_STORAGE'
|
||||
default = {'default': {'TYPE': 'server'}}
|
||||
try:
|
||||
command_storage = common_settings.TERMINAL_COMMAND_STORAGE
|
||||
except Exception:
|
||||
return default
|
||||
if command_storage is None:
|
||||
obj = Setting()
|
||||
obj.name = name
|
||||
obj.encrypted = True
|
||||
obj.cleaned_value = default
|
||||
obj.save()
|
||||
if isinstance(command_storage, dict) and not command_storage:
|
||||
obj = Setting.objects.get(name=name)
|
||||
value = obj.cleaned_value
|
||||
value.update(default)
|
||||
obj.cleaned_value = value
|
||||
obj.save()
|
||||
command_storage = common_settings.TERMINAL_COMMAND_STORAGE
|
||||
return command_storage
|
||||
def get_command_storage_setting():
|
||||
from common.models import common_settings
|
||||
default = settings.TERMINAL_COMMAND_STORAGE
|
||||
value = common_settings.TERMINAL_COMMAND_STORAGE
|
||||
value.update(default)
|
||||
return value
|
||||
|
||||
|
||||
def get_replay_storage_or_create_default_storage():
|
||||
from common.models import common_settings, Setting
|
||||
name = 'TERMINAL_REPLAY_STORAGE'
|
||||
default = {'default': {'TYPE': 'server'}}
|
||||
try:
|
||||
replay_storage = common_settings.TERMINAL_REPLAY_STORAGE
|
||||
except Exception:
|
||||
return default
|
||||
if replay_storage is None:
|
||||
obj = Setting()
|
||||
obj.name = name
|
||||
obj.encrypted = True
|
||||
obj.cleaned_value = default
|
||||
obj.save()
|
||||
replay_storage = common_settings.TERMINAL_REPLAY_STORAGE
|
||||
if isinstance(replay_storage, dict) and not replay_storage:
|
||||
obj = Setting.objects.get(name=name)
|
||||
value = obj.cleaned_value
|
||||
value.update(default)
|
||||
obj.cleaned_value = value
|
||||
obj.save()
|
||||
replay_storage = common_settings.TERMINAL_REPLAY_STORAGE
|
||||
return replay_storage
|
||||
def get_replay_storage_setting():
|
||||
from common.models import common_settings
|
||||
default = settings.TERMINAL_REPLAY_STORAGE
|
||||
value = common_settings.TERMINAL_REPLAY_STORAGE
|
||||
value.update(default)
|
||||
return value
|
||||
|
||||
|
||||
class TeeObj:
|
||||
|
|
|
@ -2,9 +2,7 @@ from django.views.generic import TemplateView
|
|||
from django.shortcuts import render, redirect
|
||||
from django.contrib import messages
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.conf import settings
|
||||
|
||||
from common.models import common_settings
|
||||
from .forms import EmailSettingForm, LDAPSettingForm, BasicSettingForm, \
|
||||
TerminalSettingForm, SecuritySettingForm
|
||||
from common.permissions import SuperUserRequiredMixin
|
||||
|
@ -97,8 +95,8 @@ class TerminalSettingView(SuperUserRequiredMixin, TemplateView):
|
|||
template_name = "common/terminal_setting.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
command_storage = utils.get_command_storage_or_create_default_storage()
|
||||
replay_storage = utils.get_replay_storage_or_create_default_storage()
|
||||
command_storage = utils.get_command_storage_setting()
|
||||
replay_storage = utils.get_replay_storage_setting()
|
||||
|
||||
context = {
|
||||
'app': _('Settings'),
|
||||
|
|
|
@ -471,10 +471,10 @@ TERMINAL_REPLAY_STORAGE = {
|
|||
}
|
||||
|
||||
|
||||
DEFAULT_PASSWORD_MIN_LENGTH = 6
|
||||
DEFAULT_LOGIN_LIMIT_COUNT = 7
|
||||
DEFAULT_LOGIN_LIMIT_TIME = 30 # Unit: minute
|
||||
DEFAULT_SECURITY_MAX_IDLE_TIME = 30 # Unit: minute
|
||||
SECURITY_PASSWORD_MIN_LENGTH = 6
|
||||
SECURITY_LOGIN_LIMIT_COUNT = 7
|
||||
SECURITY_LOGIN_LIMIT_TIME = 30 # Unit: minute
|
||||
SECURITY_MAX_IDLE_TIME = 30 # Unit: minute
|
||||
|
||||
# Django bootstrap3 setting, more see http://django-bootstrap3.readthedocs.io/en/latest/settings.html
|
||||
BOOTSTRAP3 = {
|
||||
|
|
|
@ -18,7 +18,7 @@ def get_command_storage():
|
|||
|
||||
def get_terminal_command_storages():
|
||||
storage_list = {}
|
||||
command_storage = utils.get_command_storage_or_create_default_storage()
|
||||
command_storage = utils.get_command_storage_setting()
|
||||
|
||||
for name, params in command_storage.items():
|
||||
tp = params['TYPE']
|
||||
|
|
|
@ -9,14 +9,14 @@ from .models import Terminal
|
|||
|
||||
def get_all_command_storage():
|
||||
from common import utils
|
||||
command_storage = utils.get_command_storage_or_create_default_storage()
|
||||
command_storage = utils.get_command_storage_setting()
|
||||
for k, v in command_storage.items():
|
||||
yield (k, k)
|
||||
|
||||
|
||||
def get_all_replay_storage():
|
||||
from common import utils
|
||||
replay_storage = utils.get_replay_storage_or_create_default_storage()
|
||||
replay_storage = utils.get_replay_storage_setting()
|
||||
for k, v in replay_storage.items():
|
||||
yield (k, k)
|
||||
|
||||
|
|
|
@ -64,8 +64,7 @@ class Terminal(models.Model):
|
|||
configs.update(self.get_common_storage())
|
||||
configs.update(self.get_replay_storage())
|
||||
configs.update({
|
||||
'SECURITY_MAX_IDLE_TIME': common_settings.SECURITY_MAX_IDLE_TIME or
|
||||
settings.DEFAULT_SECURITY_MAX_IDLE_TIME,
|
||||
'SECURITY_MAX_IDLE_TIME': common_settings.SECURITY_MAX_IDLE_TIME
|
||||
})
|
||||
return configs
|
||||
|
||||
|
|
|
@ -307,8 +307,7 @@ def check_password_rules(password):
|
|||
lower_field_name = 'SECURITY_PASSWORD_LOWER_CASE'
|
||||
number_field_name = 'SECURITY_PASSWORD_NUMBER'
|
||||
special_field_name = 'SECURITY_PASSWORD_SPECIAL_CHAR'
|
||||
min_length = getattr(common_settings, min_field_name) or \
|
||||
settings.DEFAULT_PASSWORD_MIN_LENGTH
|
||||
min_length = getattr(common_settings, min_field_name)
|
||||
|
||||
password_setting = Setting.objects.filter(name__startswith='SECURITY_PASSWORD')
|
||||
if not password_setting:
|
||||
|
@ -340,8 +339,7 @@ def increase_login_failed_count(username, ip):
|
|||
count = cache.get(key_limit)
|
||||
count = count + 1 if count else 1
|
||||
|
||||
limit_time = common_settings.SECURITY_LOGIN_LIMIT_TIME or \
|
||||
settings.DEFAULT_LOGIN_LIMIT_TIME
|
||||
limit_time = common_settings.SECURITY_LOGIN_LIMIT_TIME
|
||||
cache.set(key_limit, count, int(limit_time)*60)
|
||||
|
||||
|
||||
|
@ -357,10 +355,8 @@ def is_block_login(username, ip):
|
|||
key_block = key_prefix_block.format(username)
|
||||
count = cache.get(key_limit, 0)
|
||||
|
||||
limit_count = common_settings.SECURITY_LOGIN_LIMIT_COUNT or \
|
||||
settings.DEFAULT_LOGIN_LIMIT_COUNT
|
||||
limit_time = common_settings.SECURITY_LOGIN_LIMIT_TIME or \
|
||||
settings.DEFAULT_LOGIN_LIMIT_TIME
|
||||
limit_count = common_settings.SECURITY_LOGIN_LIMIT_COUNT
|
||||
limit_time = common_settings.SECURITY_LOGIN_LIMIT_TIME
|
||||
|
||||
if count >= limit_count:
|
||||
cache.set(key_block, 1, int(limit_time)*60)
|
||||
|
|
Loading…
Reference in New Issue