def url_fresh(request): try: url_list = request.GET.get('url_list') if not url_list: return HttpResponseRedirect(INDEX) url_purge_list = middware.purgeApi.PurgeBatch( urls=url_list.split('\n')) purge = middware.PurgeManage() ret = purge.purge(url_purge_list) if ret.getMsg() == "success": messages.success(request, _("Success")) # 插入操作日志 Logger(request).create(resource_type='CDN', action_name='Url Fresh', resource_name='CDN', config='', status='Success') else: messages.error(request, _("Bad Request:wrong domains")) # 插入操作日志 Logger(request).create(resource_type='CDN', action_name='Url Fresh', resource_name='CDN', config='', status='Error') except Exception: # 插入操作日志 Logger(request).create(resource_type='CDN', action_name='Url Fresh', resource_name='CDN', config='', status='Error') exceptions.handle(request) return HttpResponseRedirect(INDEX)
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)
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)
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)
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
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)
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)
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)