Ejemplo n.º 1
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")
Ejemplo n.º 2
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()
Ejemplo n.º 3
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()
Ejemplo n.º 4
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()
Ejemplo n.º 5
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")
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
    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))