示例#1
0
 def save(self, id, commit=True):
     mem = super(MailboxUserForm, self).save(commit=False)
     mem.mailbox_id = id
     if commit:
         mem.save()
     clear_redis_cache()
     return mem
示例#2
0
    def save(self):
        data_map = {
            "sw_use_review_new": (self.__instance, self.value.value),
            "review_notify_result":
            (self.__instance2, self.value_review_notify_result.value),
            "reviewer_no_mail":
            (self.__instance3, self.value_reviewer_no_mail.value),
        }

        for item_name, data in data_map.iteritems():
            obj, value = data
            if obj is None:
                obj = ReviewConfig.objects.create(
                    item=item_name,
                    co_type="system",
                    domain_id=0,
                    value=value,
                )
            else:
                obj.domain_id = self.domain_id.value
                obj.co_type = self.co_type.value
                obj.item = item_name
                obj.value = value
                obj.save()
        clear_redis_cache()
示例#3
0
 def save(self, commit=True):
     super(CoreGroupMemberForm, self).save(commit)
     #曾经添加进组权限的用户,不再在用户界面显示类似 “发信权限”这样的按钮,因为和组权限冲突了
     if self.memberBox:
         self.memberBox.use_group = 1
         self.memberBox.save()
     clear_redis_cache()
示例#4
0
def trustip_set(request):
    if request.method == "POST":
        id = request.POST.get('id', "")
        ip = request.POST.get('ip', "").strip()
        status = request.POST.get('status', "")
        if status == "delete":
            obj = CoreTrustIP.objects.filter(pk=id).first()
            obj.delete()
            messages.add_message(request, messages.SUCCESS, u'删除成功')
        if status == "active":
            obj = CoreTrustIP.objects.filter(pk=id).first()
            obj.disabled = -1
            obj.save()
            messages.add_message(request, messages.SUCCESS, u'启用成功')
        if status == "disabled":
            obj = CoreTrustIP.objects.filter(pk=id).first()
            obj.disabled = 1
            obj.save()
            messages.add_message(request, messages.SUCCESS, u'禁用成功')
        if status == "add":
            if not validators.check_ipaddr(ip):
                messages.add_message(request, messages.ERROR,
                                     u'不合法的IP或IP段: {}'.format(ip))
                return HttpResponseRedirect(reverse('trustip_set'))
            obj = CoreTrustIP.objects.filter(ip=ip).first()
            if obj:
                messages.add_message(request, messages.ERROR, u'重复添加,添加失败')
            else:
                CoreTrustIP.objects.create(ip=ip)
                messages.add_message(request, messages.SUCCESS, u'添加成功')
        return HttpResponseRedirect(reverse('trustip_set'))

    clear_redis_cache()
    return render(request, "setting/trustip_set.html", context={})
示例#5
0
 def save(self, commit=True):
     mem = super(MailboxForm, self).save(commit=False)
     password = self.cleaned_data.get('password1')
     if password:
         mem.password = md5_crypt.encrypt(password)
         mem.pwd_days_time = int(time.time())
     else:
         mem.password = self.raw_password
     if commit:
         mem.save()
         if password:
             objAttr, created = MailboxUserAttr.objects.get_or_create(
                 mailbox_id=mem.id,
                 domain_id=mem.domain_id,
                 type=u"system",
                 item=u"password")
             raw_password = u"hHFdxF43et:::" + password + u":::hHFdxF43et"
             raw_password = base64.encodestring(raw_password)
             objAttr.value = raw_password
             objAttr.save()
     if is_distribute_open():
         task_queue = TaskQueue()
         proxy_data = {
             'protocol': 'core_mailbox',
             'data': {
                 'update': mem.id
             }
         }
         task_queue.add_task_to_queue('proxy_web_command', proxy_data)
         task_queue.create_trigger('proxy')
     clear_redis_cache()
     return mem
示例#6
0
    def save(self):
        path = self.cleaned_data['path']
        data = self.cleaned_data['data']
        count = self.cleaned_data['count']
        ltype = self.cleaned_data['type']
        cycle = self.cleaned_data['cycle']

        week = self.cleaned_data['week']
        minute = self.cleaned_data['minute']
        hour = self.cleaned_data['hour']
        date = self.cleaned_data['date']
        month = self.cleaned_data['month']
        obj = CoreConfig.saveFuction(function="auto_backup",
                                     enabled=None,
                                     param=json.dumps({
                                         "path": path,
                                         "data": data,
                                         "count": count,
                                         "cycle": cycle,
                                         "type": ltype,
                                         "month": month,
                                         "date": date,
                                         "week": week,
                                         "hour": hour,
                                         "minute": minute,
                                     }),
                                     withenabled=False)
        clear_redis_cache()
        return obj
示例#7
0
 def save(self):
     DomainAttr.saveAttrObjValue(domain_id=0,
                                 type="system",
                                 item="sw_custom_kkserver_sys_token",
                                 value=self.token.value)
     DomainAttr.saveAttrObjValue(domain_id=0,
                                 type="system",
                                 item="sw_custom_kkserver_sys_open",
                                 value=self.open.value)
     clear_redis_cache()
示例#8
0
def password_weaklist(request):
    if request.method == "POST":
        id = request.POST.get('id', "")
        status = request.POST.get('status', "")
        if status == "delete":
            PasswordWeakList.objects.filter(pk=id).delete()
            clear_redis_cache()
            messages.add_message(request, messages.SUCCESS, _(u'删除成功'))
        return HttpResponseRedirect(reverse('password_weaklist'))
    return render(request, "security/password_weak_list.html", context={})
示例#9
0
 def save(self):
     for k in (u"cf_sms_conf", ):
         obj = getattr(self, k)
         DomainAttr.saveAttrObjValue(domain_id=0,
                                     type="system",
                                     item=k,
                                     value=obj.value)
     clear_redis_cache()
     redis = get_redis_connection()
     redis.rpush("task_queue:apply_setting", "postfix")
示例#10
0
def groups(request):
    if request.method == "POST":
        action = request.POST.get('action', '')
        if action == 'delete':
            group_id = request.POST.get('id', '')
            CoreGroup.objects.get(id=group_id).delete()
            messages.add_message(request, messages.SUCCESS, _(u'删除成功'))
            clear_redis_cache()
        return HttpResponseRedirect(reverse('core_group_list'))
    domain_id = get_domainid_bysession(request)
    lists = CoreGroup.objects.filter(domain_id=domain_id).order_by('-id')
    return render(request, "group/groups.html", {"lists": lists})
示例#11
0
 def save(self):
     value = {
         "server": self.server.value,
         "username": self.username.value,
         "password": self.password.value,
         "loginurl": self.loginurl.value,
         "open": self.open.value,
     }
     value = json.dumps(value)
     DomainAttr.saveAttrObjValue(domain_id=0,
                                 type="system",
                                 item="sw_custom_kkserver_setting2",
                                 value=value)
     clear_redis_cache()
示例#12
0
 def save(self):
     value = {
         "server": self.server.value,
         "corp": self.corp.value,
         "service": self.service.value,
         "loginurl": self.loginurl.value,
         "open": self.open.value,
     }
     value = json.dumps(value)
     DomainAttr.saveAttrObjValue(domain_id=0,
                                 type="system",
                                 item="sw_custom_kkserver_setting",
                                 value=value)
     clear_redis_cache()
示例#13
0
    def save(self):
        value = self.value.value
        if "open_spf" in value:
            flag = value.pop("open_spf")
            value["spf"] = "1" if flag == "1" else "-1"

        if self.instance:
            obj = self.instance
            obj.domain_id = self.domain_id
            obj.type = self.instance.type
            obj.item = self.instance.item
            obj.value = json.dumps(value)
            obj.save()
        else:
            obj = DomainAttr.objects.create(
                domain_id=self.domain_id,
                type="system",
                item="cf_antispam",
                value=json.dumps(value),
            )
        #sw_antivirus , sw_antispam 两个参数,webmail以前是修改的core_domain表的列,兼容处理
        if self.instance_domain:
            for key in ("sw_antispam", "sw_antivirus"):
                obj = getattr(self, key, None)
                if not obj:
                    continue
                if key == "sw_antispam":
                    self.instance_domain.antispam = obj.value
                else:
                    self.instance_domain.antivirus = obj.value
                self.instance_domain.save()

        for k in [
                "spam_check_local",
                "spam_check_outside",
                "spam_check_local_spam",
                "spam_check_local_virus",
                "spam_check_outside_spam",
                "spam_check_outside_virus",
        ]:
            value = getattr(self, k).value
            DomainAttr.saveAttrObjValue(domain_id=self.domain_id,
                                        type="webmail",
                                        item="sw_%s" % k,
                                        value=value)
        clear_redis_cache()
        if self.spf_old != self.spf_new:
            redis = get_redis_connection()
            redis.rpush("task_queue:apply_setting", "postfix")
示例#14
0
 def save(self):
     if self.__instance is None:
         Review.objects.create(
             name=self.name.value, next_id=self.next_id.value,
             master_review_id=self.master_review_id.value, assist_review=self.assist_review_id.value,
             wait_next_time=self.wait_next_time.value,
         )
     else:
         obj = self.__instance
         obj.name=self.name.value
         obj.next_id=self.next_id.value
         obj.master_review_id=self.master_review_id.value
         obj.assist_review=self.assist_review_id.value
         obj.wait_next_time=self.wait_next_time.value
         obj.save()
     ReviewConfig.open_review_new()
     clear_redis_cache()
示例#15
0
 def save(self):
     if self.instance:
         obj = self.instance
         obj.domain_id = self.domain_id.value
         obj.type = self.instance.type
         obj.item = self.instance.item
         obj.value = json.dumps(self.value.value)
         obj.save()
     else:
         DomainAttr.objects.create(
             domain_id=self.domain_id.value,
             type="system",
             item="cf_sendlimit",
             value=json.dumps(self.value.value),
         )
     if self.instance_domain:
         self.instance_domain.sendlimit = self.sw_sendlimit.value
         self.instance_domain.save()
     clear_redis_cache()
示例#16
0
 def paramSave(self):
     for key in self.PARAM_LIST.keys():
         obj = getattr(self, "instance_%s" % key, None)
         value = getattr(self, key).value
         if obj:
             sys_type = self.PARAM_TYPE[key]
             obj.domain_id = u"{}".format(self.domain_id.value)
             obj.type = u"{}".format(sys_type)
             obj.item = u"{}".format(key)
             obj.value = u"{}".format(value)
             obj.save()
         else:
             sys_type = self.PARAM_TYPE[key]
             DomainAttr.objects.create(domain_id=u"{}".format(
                 self.domain_id.value),
                                       type=u"{}".format(sys_type),
                                       item=u"{}".format(key),
                                       value=u"{}".format(value))
     clear_redis_cache()
示例#17
0
def black_white_post(request, model, ltype, reverse_name):
    id = request.POST.get('id', "")
    email = request.POST.get('email', "")
    status = request.POST.get('status', "")
    if status == "delete":
        obj = model.objects.filter(pk=id, type=ltype).first()
        obj.delete()
        messages.add_message(request, messages.SUCCESS, u'删除成功')
    if status == "active":
        obj = model.objects.filter(pk=id, type=ltype).first()
        obj.disabled = -1
        obj.save()
        messages.add_message(request, messages.SUCCESS, u'启用成功')
    if status == "disabled":
        obj = model.objects.filter(pk=id, type=ltype).first()
        obj.disabled = 1
        obj.save()
        messages.add_message(request, messages.SUCCESS, u'禁用成功')
    if status == "add":
        if not "*" in email:
            if not validators.check_email_ordomain(email):
                messages.add_message(request, messages.ERROR,
                                     u'不合法的邮箱或域名: {}'.format(email))
                return HttpResponseRedirect(reverse(reverse_name))

        obj = model.objects.filter(email=email, type=ltype).first()
        if obj:
            messages.add_message(request, messages.ERROR, u'重复添加,添加失败')
        else:
            model.objects.create(operator='sys',
                                 type=ltype,
                                 email=email,
                                 add_time=int(time.time()))
            messages.add_message(request, messages.SUCCESS, u'添加成功')
    clear_redis_cache()
    return HttpResponseRedirect(reverse(reverse_name))
示例#18
0
    def save(self):
        data = self.__post
        if not data:
            return

        rule_id = int(data.get("id",0))
        name = data.get("name","")
        review_id = data.get("review_id",0)
        workmode = data.get("workmode","allsend")
        pre_action = data.get("pre_action","")
        target_dept = data.get("target_dept",0)
        sequence = data.get("sequence","")
        disabled = data.get("disabled",-1)
        cond_logic = data.get("cond_logic","all")
        condition = data.get("condition",[])

        instance = self.__instance
        if not instance:
            instance = ReviewRule.objects.create(
                            review_id=review_id, name=name, workmode=workmode, cond_logic=cond_logic,
                            pre_action=pre_action,sequence=sequence, disabled=disabled
                        )
            rule_id = instance.id
        else:
            instance.review_id = review_id
            instance.name = name
            instance.workmode = workmode
            instance.cond_logic = cond_logic
            instance.pre_action = pre_action
            instance.sequence = sequence
            instance.disabled = disabled
            instance.save()
        self.__instance = instance

        logList = [_(u'审核规则: {} ID: {}').format(self.__instance.name,self.__instance.id)]
        ReviewCondition.objects.filter(rule_id=rule_id).delete()
        for data in condition:
            logic = data["logic"]
            option = data["option"]
            action = data.get("action","")
            value = data.get("value","")
            if option in self.reviewrule_condtion_no_input:
                value = "1"
                action = "=="

            if not isinstance(value, unicode):
                value = json.dumps(value)
            obj = ReviewCondition.objects.create(
                rule_id=rule_id, parent_id=0, logic=logic, option=option, action=action, value=value
                )
            logList.append(_(u'条件 : {} - {} - {}').format(option,action,value))
            for sub in data.get("sub",[]):
                sub_option = sub["option"]
                sub_action = sub.get("action","")
                sub_value = sub.get("value","")
                if sub_option in self.reviewrule_condtion_no_input:
                    sub_value = "1"
                    sub_action = "=="

                if not isinstance(sub_value, unicode):
                    sub_value = json.dumps(sub_value)
                sub_obj = ReviewCondition.objects.create(
                    rule_id=rule_id, parent_id=obj.id, logic=logic, option=sub_option, action=sub_action, value=sub_value
                    )
                logList.append(_(u'条件 : {} - {} - {}').format(sub_option,sub_action,sub_value))
        ReviewConfig.open_review_new()
        api_create_admin_log(self.__request, self.__instance, u'reviewcondition',u"{}".format(u' || '.join(logList)))
        clear_redis_cache()
        return
示例#19
0
 def save(self, commit=True):
     o = super(CoreGroupForms, self).save(commit=False)
     if commit:
         o.save()
     clear_redis_cache()
     return o
示例#20
0
    def save(self):
        def load_data(value, default_data):
            data = {}
            #新添加,就用默认值填充缺少的key
            if not self.instance:
                for k, default in default_data:
                    v = value.get(k, default)
                    #容错网页可能传进来的错误格式
                    if isinstance(default, dict) or isinstance(default, list):
                        if type(v) != type(default):
                            v = default
                    data[k] = v
            #更新,就用关闭来填充缺少的key
            else:
                for k, default in default_data:
                    #网页那边的提交不好写,更新时不会提交部门列表和白名单列表。 所以做下特殊处理
                    if k in ("oab_dept_list", "limit_whitelist"):
                        data[k] = self.value.get(k, default)
                        continue
                    v = value.get(k, 0)
                    #容错网页可能传进来的错误格式
                    if isinstance(default, dict) or isinstance(default, list):
                        if type(v) != type(default):
                            v = default
                    data[k] = v
            return data

        #end def
        data = {}
        value = self.post.get("value", None)
        setting_id = int(self.post.get("setting_id", 0))
        group_id = int(self.post.get("group_id", 0))
        value = json.loads(value) if value else {}
        if self.type == u"basic":
            data = load_data(value, SETTING_BASIC_DEFAULT)
        elif self.type == u"login":
            data = load_data(value, SETTING_LOGIN_DEFAULT)
        elif self.type == u"password":
            data = load_data(value, SETTING_PASSWORD_DEFAULT)
        elif self.type == u"spam":
            data = load_data(value, SETTING_SPAM_DEFAULT)
        elif self.type == u"frequency":
            data = load_data(value, SETTING_FREQUENCY_DEFAULT)
        elif self.type == u"oab":
            data = load_data(value, SETTING_OAB_DEFAULT)
        elif self.type == u"space":
            data = load_data(value, SETTING_SPACE_DEFAULT)
        else:
            self.error_message = _(u"保存的类型不匹配 '%s'") % self.type
            return False
        if not self.instance:
            obj = CoreGroupSetting.objects.filter(group_id=group_id,
                                                  type=self.type).first()
            if obj:
                self.error_message = _(u"已存在类型 '%s'") % self.type
                return False
        else:
            if self.type != self.instance.type:
                self.error_message = _(u"不能保存为其他类型 '%s'") % self.type
                return False

        value = json.dumps(data)
        if self.instance:
            self.instance.value = value
            self.instance.save()
        else:
            obj = CoreGroupSetting.objects.create(group_id=group_id,
                                                  type=u"{}".format(self.type),
                                                  value=u"{}".format(value))
            obj.save()

        clear_redis_cache()
        return True
示例#21
0
def clear_fail2ban_cache():
    redis = get_redis_connection()
    for keyname in redis.keys("fail2ban_cache*"):
        redis.delete(keyname)
    clear_redis_cache()