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 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 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 = { "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 = 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 sslSignatureView(request): if request.method == "POST": obj = DomainAttr.getAttrObj(item="ssl_signrequest") keyobj = DomainAttr.getAttrObj(item="ssl_privatekey") keyvalue = keyobj.value if obj.value: messages.add_message(request, messages.ERROR, u'证书签名请求已存在,生成证书签名请求失败!') return HttpResponseRedirect(reverse("ssl_maintain")) else: sig_domain = request.POST.get("sig_domain", "").strip() sig_organization = request.POST.get("sig_organization", "").strip() sig_depart = request.POST.get("sig_depart", "").strip() sig_province = request.POST.get("sig_province", "").strip() sig_locale = request.POST.get("sig_locale", "").strip() j = {} msg = [] if not validators.check_domain(u"@{}".format(sig_domain)): msg.append(u"域名 填写错误") j.update(sig_domain=sig_domain) if not sig_organization: msg.append(u"单位/组织 不能为空") elif not validators.check_English(sig_organization): msg.append(u"单位/组织 只能填写英文字符") j.update(sig_organization=sig_organization) if sig_depart and not validators.check_English(sig_depart): msg.append(u"部门 只能填写英文字符") j.update(sig_depart=sig_depart) if not sig_province: msg.append(u"省/市/自治区 不能为空") elif not validators.check_English(sig_province): msg.append(u"省/市/自治区 只能填写英文字符") j.update(sig_province=sig_province) if not sig_locale: msg.append(u"所在地 不能为空") elif not validators.check_English(sig_locale): msg.append(u"所在地 只能填写英文字符") j.update(sig_locale=sig_locale) DomainAttr.saveAttrObjValue(item="ssl_signrequest_cache", value=json.dumps(j)) if not keyvalue: messages.add_message(request, messages.ERROR, u'私钥不存在,请先设置私钥!') return HttpResponseRedirect(reverse("ssl_maintain")) if msg: messages.add_message(request, messages.ERROR, u",".join(msg)) return HttpResponseRedirect(reverse("ssl_maintain")) else: signature = sslopts.genSignature( privkey=bytes(keyvalue), sig_domain=sig_domain, sig_depart=sig_depart, sig_organization=sig_organization, sig_province=sig_province, sig_locale=sig_locale) obj.value = signature obj.save() messages.add_message(request, messages.SUCCESS, u'生成证书签名请求成功') return HttpResponseRedirect(reverse("ssl_maintain")) return HttpResponseRedirect(reverse("ssl_maintain")) raise Http404
def __initialize(self): self.spf_old = "" self.spf_new = "" default = constants.SPAMSET_PARAM_DEFAULT if self.instance: self.domain_id = self.instance.domain_id value = json.loads(self.instance.value) if "spf" in value: self.spf_old = value["spf"] elif "open_spf" in value: self.spf_old = value["open_spf"] else: value = copy.copy(default) data = self.post if self.post else self.get if data: for k in constants.SPAMSET_PARAM_DEFAULT.keys(): if k in data: value[k] = data[k] elif k in value: del value[k] self.domain_id = data.get("domain_id", 0) for k, v in constants.SPAMSET_PARAM_DEFAULT.items(): if not k in value: value[k] = v if not value.get("host", "").strip() and self.request: value["host"] = get_client_request(self.request) #删除一个废弃的key if "open_spf" in value: flag = value.pop("open_spf") value["spf"] = "1" if flag == "1" else "-1" if "spf" in value: self.spf_new = value["spf"] #检测等级在 app 2.2.54 后废弃 if "check_level" in value: level = value.pop("check_level") #兼容一下旧数据 if level == "senior": value["spf"] = "1" value["sender_blacklist"] = "1" value["subject_blacklist"] = "1" value["content_blacklist"] = "1" value["high_risk_attachment"] = "1" value["low_risk_attachment"] = "1" value["dspam"] = "1" value["ctasd"] = "-1" value["spamassassin"] = "1" elif level == "intermediate": value["sender_blacklist"] = "1" value["subject_blacklist"] = "1" value["content_blacklist"] = "1" value["high_risk_attachment"] = "1" value["low_risk_attachment"] = "1" value["dspam"] = "1" value["ctasd"] = "-1" value["spamassassin"] = "1" else: value["dspam"] = "1" value["spamassassin"] = "1" value["sender_blacklist"] = "1" value["subject_blacklist"] = "1" value["content_blacklist"] = "1" value["low_risk_attachment"] = "1" for k, v in value.iteritems(): self[k] = BaseFied(value=get_unicode(v), error=None) self.value = BaseFied(value=value, error=None) #sw_antispam、sw_antivirus的值保存在core_domain表中 instance = Domain.objects.filter(id=self.domain_id).first() self.instance_domain = instance if instance: self.sw_antispam = BaseFied(value=get_unicode(instance.antispam), error=None) self.sw_antivirus = BaseFied(value=get_unicode(instance.antivirus), error=None) else: self.sw_antispam = BaseFied(value='-1', error=None) self.sw_antivirus = BaseFied(value='-1', error=None) if data: self.sw_antispam = BaseFied(value=data.get("sw_antispam", '-1'), error=None) self.sw_antivirus = BaseFied(value=data.get("sw_antivirus", '-1'), error=None) SPAM_TARGET_DEFAULT = { "spam_check_local": "-1", "spam_check_outside": "1", "spam_check_local_spam": "1", "spam_check_local_virus": "1", "spam_check_outside_spam": "1", "spam_check_outside_virus": "1", } for k, default in SPAM_TARGET_DEFAULT.items(): key = item = "sw_%s" % k obj = DomainAttr.objects.filter(domain_id=self.domain_id, type="webmail", item=key).first() if not obj: DomainAttr.saveAttrObjValue(domain_id=self.domain_id, type="webmail", item=key, value=default) obj = DomainAttr.getAttrObj(domain_id=self.domain_id, type="webmail", item=key) setattr(self, k, BaseFied(value=obj.value, error=None)) if data: if k in data: setattr(self, k, BaseFied(value=data[k], error=None)) else: setattr(self, k, BaseFied(value="-1", error=None))