Example #1
0
    def delete(self, request, obj_id):
        try:
            # 执行删除前状态检查,当状态为"unverified"或"failed"时直接删除数据库记录
            # 否则更新状态为"deleted",保证数据统计时有记录,然后调用网宿api,删除加速记录
            domain = Domain.objects.get(pk=obj_id)
            cdn = middware.DomainManage()
            if domain.status == "unverified" or domain.status == "failed" or domain.status == "addfailed" \
                    or domain.status == 'verified':
                domain.delete()

                # 插入操作日志
                Logger(request).create(resource_type='CDN',
                                       action_name='Delete Domain Name',
                                       resource_name='CDN',
                                       config=_('Domain: %s') %
                                       domain.domain_name,
                                       status='Success')
            elif domain.status == 'inProgress':
                msg = _("%s status is %s, can not do this action") % (
                    domain.domain_name, _(domain.status))
                messages.warning(request, msg)

                # 插入操作日志
                Logger(request).create(resource_type='CDN',
                                       action_name='Delete Domain Name',
                                       resource_name='CDN',
                                       config=_('Domain: %s') %
                                       domain.domain_name,
                                       status='Error')
            else:
                domain.status = 'deleted'
                domain.deleted_at = datetime.utcnow()
                domain.save()
                cdn.disable(domainId=domain.domain_id)

                # 插入操作日志
                Logger(request).create(resource_type='CDN',
                                       action_name='Delete Domain Name',
                                       resource_name='CDN',
                                       config=_('Domain: %s') %
                                       domain.domain_name,
                                       status='Success')

        except Exception:
            # 插入操作日志
            Logger(request).create(resource_type='CDN',
                                   action_name='Delete Domain Name',
                                   resource_name='CDN',
                                   config='',
                                   status='Error')
            name = self.table.get_object_display(obj_id)
            msg = _('Unable to delete domain %s') % name
            LOG.info(msg)
            messages.error(request, msg)
            exceptions.handle(request, msg)
            redirect = reverse(self.redirect_url)
            raise exceptions.Http302(redirect, message=msg)
Example #2
0
 def get_data(self, request, id):
     domain_api = middware.DomainManage()
     domain = Domain.objects.get(pk=id)
     cdn = domain_api.find(domainId=domain.domain_id)
     if not cdn.domain:
         return domain
     if domain.status != cdn.domain.status:
         domain.status = cdn.domain.status
         domain.Enable = cdn.domain.enabled
         domain.save()
     return domain
Example #3
0
    def disable(self, request, obj_id):
        try:
            # 执行删除前状态检查
            domain = Domain.objects.get(pk=obj_id)
            if domain.status == 'Deployed':
                domain.status = 'inProgress'
                domain.save()
                a = middware.DomainManage()
                a.disable(domainId=domain.domain_id)

                # 插入操作日志
                Logger(request).create(resource_type='CDN',
                                       action_name='Disable Domain Name',
                                       resource_name='CDN',
                                       config=_('Domain: %s') %
                                       domain.domain_name,
                                       status='Success')
            else:
                # 插入操作日志
                Logger(request).create(resource_type='CDN',
                                       action_name='Disable Domain Name',
                                       resource_name='CDN',
                                       config=_('Domain: %s') %
                                       domain.domain_name,
                                       status='Error')
                msg = _("%s status is %s, can not do this action") % (
                    domain.domain_name, _(domain.status))
                messages.warning(request, msg)
        except Exception:
            # 插入操作日志
            Logger(request).create(resource_type='CDN',
                                   action_name='Disable Domain Name',
                                   resource_name='CDN',
                                   config='',
                                   status='Error')
            obj = self.table.get_object_by_id(obj_id)
            name = self.table.get_object_display(obj)
            msg = _('Unable to disable domain %s') % name
            LOG.info(msg)
            messages.error(request, msg)
            exceptions.handle(request, msg)
            redirect = reverse(self.redirect_url)
            raise exceptions.Http302(redirect, message=msg)
Example #4
0
    def delete(self, request, obj_id):
        try:
            cache = CacheRule.objects.get(pk=obj_id)
            domain = Domain.objects.get(pk=cache.domain_id)
            domain_manager = middware.DomainManage()
            ret = domain_manager.find(domain.domain_id)
            domain_class = ret.getDomain()
            cacheBehaviors = domain_class.cacheBehaviors
            if cacheBehaviors is not None:
                for i in cacheBehaviors:
                    if cache.pathPattern == i.pathPattern:
                        cacheBehaviors.remove(i)
            domain_class = middware.domainApi.Domain(
                domainId=domain.domain_id, cacheBehaviors=cacheBehaviors)
            domain_manager.modify(domain_class)
            cache.delete()

            # 插入操作日志
            Logger(request).create(resource_type='CDN',
                                   action_name='Delete Cache',
                                   resource_name='CDN',
                                   config=_('Domain: %s') % domain.domain_name,
                                   status='Success')

        except Exception:
            obj = self.table.get_object_by_id(obj_id)
            name = self.table.get_object_display(obj)
            msg = _('Unable to delete domain cache rule %s') % name
            LOG.info(msg)
            messages.error(request, msg)
            exceptions.handle(request, msg)
            redirect = reverse(self.redirect_url)

            # 插入操作日志
            Logger(request).create(
                resource_type='CDN',
                action_name='Delete Cache',
                resource_name='Domain',
                config=_('Unable to delete domain cache rule %s') % name,
                status='Error')

            raise exceptions.Http302(redirect, message=msg)
Example #5
0
    def get_context_data(self, **kwargs):
        context = super(VerifyView, self).get_context_data(**kwargs)
        domain_id = self.kwargs['domain_id']
        domain = Domain.objects.get(pk=domain_id)
        domain_name = domain.domain_name
        check_method = middware.DomainManage()
        check_info = check_method.verify_file_check(str(domain_name))
        memcached_servers = settings.CACHES.get("default").get("LOCATION")
        mc = memcache.Client(memcached_servers)
        domain_uuid = mc.get(str(domain_name))
        if domain.status == 'unverified' or domain.status == 'failed':
            if domain_uuid is not None:
                if not check_info:
                    context["message"] = _(
                        "Please create name which name is on below into your web server(%s),"
                        "and write: ") % domain_name
                    context["uuid"] = domain_uuid
                    context["file"] = domain_uuid + '.txt'
                    msg = _("Not detected verification file")
                    messages.warning(self.request, msg)
                else:
                    context["message"] = _(
                        "Verification file has been detected, please verify")
            else:
                domain.status = 'failed'
                domain.save()

        elif domain.status == 'addfailed':
            context["message"] = _("The %s status is %s") % (
                domain.domain_name, _(domain.status))

        else:
            context["disable"] = 'disabled="disable"'
            context["message"] = _("The %s status is %s") % (
                domain.domain_name, _(domain.status))
        args = (self.kwargs['domain_id'], )
        context['submit_url'] = reverse(self.submit_url, args=args)
        return context
Example #6
0
def get_cdn():
    cdn_list = middware.DomainManage()
    return cdn_list.listAll()
Example #7
0
def verify_view(request, domain_id):
    redirect_url = reverse_lazy('horizon:cdn:cdn_domain_manager:index')
    try:
        domain_id = domain_id
        domain_list = Domain.objects.get(pk=domain_id)
        domain_name = domain_list.domain_name
        origin_type = domain_list.source_type
        origin_address = domain_list.sourceaddress_set.filter(
            domain_id=domain_id)
        if origin_type == 'url':
            origin_config = middware.domainApi.OriginConfig(
                originDomainName=origin_address[0].source_address)
        else:
            originips = [i.source_address for i in origin_address]
            origin_config = middware.domainApi.OriginConfig(
                originIps=originips)
        domain_class = middware.domainApi.Domain(domainName=domain_name,
                                                 comment='syscloud',
                                                 originConfig=origin_config,
                                                 serviceType='web')
        domain = middware.DomainManage()
        if domain_list.status == 'unverified' or domain_list.status == 'failed' or domain_list.status == 'addfailed':
            if domain.verify_file_check(str(domain_name)):
                ret = domain.add(domain_class)
                msg = ret.getMsg()
                status = ret.getRet()
                if status == 202:
                    domain_ret = ret.location.split('/')
                    domainId = domain_ret[len(domain_ret) - 1]
                    domain_list.domain_id = domainId
                    domain_list.domain_cname = ret.cname
                    domain_list.xCncRequestId = ret.xCncRequestId
                    domain_list.status = 'inProgress'
                    domain_list.save()
                    messages.success(request, msg)

                    # 插入操作日志
                    Logger(request).create(resource_type='CDN',
                                           action_name='Verify Domain',
                                           resource_name='CDN',
                                           config=_('Domain: %s') %
                                           domain_name,
                                           status='Success')
                else:
                    messages.error(request, msg)
                    logging.warning('CDN:' + domain_name + ':' + msg)
                    domain_list.error_log = msg
                    domain_list.status = 'addfailed'
                    domain_list.save()

                    # 插入操作日志
                    Logger(request).create(
                        resource_type='CDN',
                        action_name='Verify Domain',
                        resource_name='CDN',
                        config=_('Audit Error Log(%s): %s') %
                        (domain_name, msg),
                        status='Error')
            else:
                domain_list.status = 'failed'
                domain_list.save()
                Logger(request).create(resource_type='CDN',
                                       action_name='Verify Domain',
                                       resource_name='CDN',
                                       config=_('Domain: %s') % domain_name,
                                       status='Error')

        else:
            msg = _("the %s status is %s") % (domain_list.domain_name,
                                              _(domain_list.status))
            messages.warning(request, msg)
        return HttpResponseRedirect(redirect_url)
    except Exception:
        Logger(request).create(resource_type='CDN',
                               action_name='Verify Domain',
                               resource_name='CDN',
                               config='',
                               status='Error')
        msg = _('Failed')
        redirect = redirect_url
        exceptions.handle(request, msg, redirect=redirect)
        return False
Example #8
0
    def form_valid(self, form):
        try:
            handled = form.handle(self.request, form.cleaned_data)
        except Exception:
            handled = None
            exceptions.handle(self.request)
        if handled:
            domain_id = self.kwargs['domain_id']
            cache_type = form.cleaned_data['type']
            ignore = form.cleaned_data["ignore"]
            time = form.cleaned_data["time"]
            domain = Domain.objects.get(pk=domain_id)
            if domain.status == 'Deployed':
                modify = middware.DomainManage()
                ret = modify.find(domain.domain_id)
                domain_result = ret.getDomain()
                cacheBehavior = middware.domainApi.CacheBehavior(
                    pathPattern=cache_type,
                    ignoreCacheControl=ignore,
                    cacheTtl=time)
                if domain_result.cacheBehaviors is not None:
                    domain_class = middware.domainApi.Domain(
                        domainId=domain.domain_id,
                        cacheBehaviors=domain_result.cacheBehaviors +
                        [cacheBehavior])
                else:
                    domain_class = middware.domainApi.Domain(
                        domainId=domain.domain_id,
                        cacheBehaviors=[cacheBehavior])
                ret = modify.modify(domain_class)
                if ret.getMsg() == 'success':
                    msg = _("modify successfully")
                    messages.success(self.request, msg)
                    cache_id = self.kwargs["cache_id"]
                    cache = CacheRule.objects.get(pk=cache_id)
                    cache.pathPattern = cache_type
                    cache.ignoreCacheControl = ignore
                    cache.cacheTtl = time
                    cache.save()

                    # 插入操作日志
                    Logger(self.request).create(resource_type='CDN',
                                                action_name='Update Cache',
                                                resource_name='CDN',
                                                config=_('Domain: %s') %
                                                domain.domain_name,
                                                status='Success')
                else:
                    messages.error(self.request, ret.getMsg())

                    # 插入操作日志
                    Logger(self.request).create(resource_type='CDN',
                                                action_name='Update Cache',
                                                resource_name='CDN',
                                                config=_('Domain: %s') %
                                                domain.domain_name,
                                                status='Error')
                redirect_url = self.get_success_url()
                return HttpResponseRedirect(redirect_url)
            else:

                # 插入操作日志
                Logger(self.request).create(resource_type='CDN',
                                            action_name='Update Cache',
                                            resource_name='CDN',
                                            config=_('Domain: %s') %
                                            domain.domain_name,
                                            status='Error')
                msg = _("%s status is %s, can not do this action") % (
                    domain.domain_name, _(domain.status))
                messages.warning(self.request, msg)
                redirect_url = self.get_success_url()
                return HttpResponseRedirect(redirect_url)
Example #9
0
    def form_valid(self, form):
        try:
            handled = form.handle(self.request, form.cleaned_data)
        except Exception:
            handled = None
            exceptions.handle(self.request)
        if handled:
            domain_id = self.kwargs["domain_id"]
            access_type = form.cleaned_data["type"]
            control_type = form.cleaned_data['access_type']
            refer = form.cleaned_data["refer"]
            white_list = form.cleaned_data["white_list"]
            black_list = form.cleaned_data["black_list"]
            forbid_ip = form.cleaned_data["forbid_ip"]
            domain = Domain.objects.get(pk=domain_id)
            if domain.status == 'Deployed':
                modify = middware.DomainManage()
                if control_type == 'white':
                    if forbid_ip == u'':
                        visitControlRule = middware.domainApi.VisitControlRule(
                            pathPattern=str(access_type),
                            allowNullReferer=refer,
                            validReferers=str(white_list).strip('\r\n').split(
                                '\r\n'))
                    else:
                        visitControlRule = middware.domainApi.VisitControlRule(
                            pathPattern=str(access_type),
                            allowNullReferer=refer,
                            validReferers=str(white_list).strip('\r\n').split(
                                '\r\n'),
                            forbiddenIps=str(forbid_ip).strip('\r\n').split(
                                '\r\n'))
                else:
                    if forbid_ip == u'':
                        visitControlRule = middware.domainApi.VisitControlRule(
                            pathPattern=str(access_type),
                            invalidReferers=str(black_list).strip(
                                '\r\n').split('\r\n'))

                    else:
                        visitControlRule = middware.domainApi.VisitControlRule(
                            pathPattern=str(access_type),
                            invalidReferers=str(black_list).strip(
                                '\r\n').split('\r\n'),
                            forbiddenIps=str(forbid_ip).strip('\r\n').split(
                                '\r\n'))
                domain_class = middware.domainApi.Domain(
                    domainId=domain.domain_id,
                    visitControlRules=[visitControlRule])
                ret = modify.modify(domain_class)
                if ret.getMsg() == 'success':
                    msg = _("modify successfully")
                    messages.success(self.request, msg)
                    access_id = self.kwargs['access_id']
                    access = AccessControl.objects.get(pk=access_id)
                    access.pathPattern = access_type
                    access.allowNullReffer = refer
                    access.validRefers = white_list
                    access.invalidRefers = black_list
                    access.forbiddenIps = forbid_ip
                    access.save()

                    # 插入操作日志
                    Logger(self.request).create(resource_type='CDN',
                                                action_name='Update Access',
                                                resource_name='CDN',
                                                config=_('Domain: %s') %
                                                domain.domain_name,
                                                status='Success')
                else:
                    messages.error(self.request, ret.getMsg())

                    # 插入操作日志
                    Logger(self.request).create(resource_type='CDN',
                                                action_name='Update Access',
                                                resource_name='CDN',
                                                config=_('Domain: %s') %
                                                domain.domain_name,
                                                status='Error')
                redirect_url = self.get_success_url()
                return HttpResponseRedirect(redirect_url)

            else:
                # 插入操作日志
                Logger(self.request).create(resource_type='CDN',
                                            action_name='Update Access',
                                            resource_name='CDN',
                                            config=_('Domain: %s') %
                                            domain.domain_name,
                                            status='Error')

                msg = _("%s status is %s, can not do this action") % (
                    domain.domain_name, _(domain.status))
                messages.warning(self.request, msg)
                redirect_url = self.get_success_url()
                return HttpResponseRedirect(redirect_url)
Example #10
0
    def form_valid(self, form):
        try:
            handled = form.handle(self.request, form.cleaned_data)
        except Exception:
            handled = None
            exceptions.handle(self.request)

        if handled:
            domain_id = self.kwargs["domain_id"]
            source_type = form.cleaned_data["source_type"]
            domain = Domain.objects.get(pk=domain_id)
            domain.source_type = source_type
            origin_address = SourceAddress.objects.filter(domain_id=domain_id)
            if source_type == 'ip':
                source_address = form.cleaned_data["origin_config_a"]
                origin_address.delete()
                clear_list = source_address.strip('\r\n').split('\r\n')
                for i in clear_list:
                    origin_address.create(domain_id=domain_id,
                                          source_address=i)
                origin_config = middware.domainApi.OriginConfig(
                    originIps=source_address.split('\r\n'))
            else:
                source_address = form.cleaned_data["origin_config_b"]
                origin_address.delete()
                origin_address.create(domain_id=domain_id,
                                      source_address=source_address)
                origin_config = middware.domainApi.OriginConfig(
                    originDomainName=source_address)
            domain.save()
            if domain.domain_id is not None:
                domain_class = middware.domainApi.Domain(
                    domainId=domain.domain_id, originConfig=origin_config)
                modify = middware.DomainManage()
                ret = modify.modify(domain_class)
                if ret.getMsg() == 'success':
                    msg = _("modify successfully")
                    messages.success(self.request, msg)

                    # 插入操作日志
                    Logger(self.request).create(
                        resource_type='CDN',
                        action_name='Update Domain Name',
                        resource_name='CDN',
                        config=_('Domain: %s') % domain.domain_name,
                        status='Success')
                else:
                    msg = _("modify failed")
                    messages.error(self.request, msg)

                    # 插入操作日志
                    Logger(self.request).create(
                        resource_type='CDN',
                        action_name='Update Domain Name',
                        resource_name='CDN',
                        config=_('Domain: %s') % domain.domain_name,
                        status='Error')

                redirect_url = self.get_success_url()
                return HttpResponseRedirect(redirect_url)
            else:
                msg = _("modify successfully")
                redirect_url = self.get_success_url()
                messages.success(self.request, msg)

                # 插入操作日志
                Logger(self.request).create(resource_type='CDN',
                                            action_name='Update Domain Name',
                                            resource_name='CDN',
                                            config=_('Domain: %s') %
                                            domain.domain_name,
                                            status='Success')
                return HttpResponseRedirect(redirect_url)
        else:
            return self.form_invalid(form)