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
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()
def save(self, commit=True): super(CoreGroupMemberForm, self).save(commit) #曾经添加进组权限的用户,不再在用户界面显示类似 “发信权限”这样的按钮,因为和组权限冲突了 if self.memberBox: self.memberBox.use_group = 1 self.memberBox.save() clear_redis_cache()
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={})
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
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
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()
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={})
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")
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})
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()
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()
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")
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()
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()
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()
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))
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
def save(self, commit=True): o = super(CoreGroupForms, self).save(commit=False) if commit: o.save() clear_redis_cache() return o
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
def clear_fail2ban_cache(): redis = get_redis_connection() for keyname in redis.keys("fail2ban_cache*"): redis.delete(keyname) clear_redis_cache()