コード例 #1
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def analysis(req):
    if req.method == 'POST':
        domain_name = req.POST.get('domain_name')
        start = req.POST.get('start')
        end = req.POST.get('end')
        project_id = req.session['project_id']
        token = req.session.get('token')
        api = DomainApi(token)
        json_str = {"domainName": domain_name, "start": start, "end": end, "project_id": project_id}
        res = api.analysis(json_str)
        result = json.loads(res.read())
        return HttpResponse(json.dumps(result), content_type="application/json")
    else:
        if not req.session.has_key("project_id"):
            return HttpResponseRedirect('/login/')
        else:
            project_id = req.session['project_id']
        username = req.COOKIES.get('username')
        if username == settings.SUPERADMIN:
            domains = Domain.objects.using('api_db').exclude(domain_status='Delete').all()
        else:
            domains = Domain.objects.using('api_db').exclude(domain_status='Delete').filter(project_id=project_id)
        all_domains = ''
        for d in domains:
            all_domains = all_domains + ',' + d.domain_name
        project_list = req.session['project_list']
        return render_to_response("analysis.html", locals())
コード例 #2
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def bandwidth(req):
    if req.method == 'POST':
        domain_name = req.POST.getlist('domain_name')
        start = req.POST.get('start')
        end = req.POST.get('end')
        project_id = req.session['project_id']
        token = req.session.get('token')
        api = DomainApi(token)
        json_str = {"domainName": ','.join(domain_name), "start": start, "end": end, "project_id": project_id}
        res = api.bandwidth(json_str)
        if res.status == 200:
            #random = uuid.uuid1()
            #path = settings.MONITOR_IMG % random
            #os.system('rm -f %s/*' % os.path.dirname(path))
            #with open(path, 'wb') as f:
            #    f.write(resp)
            return_json_str = json.loads(res.read())
            flow_list = return_json_str["bandwidth"]
            try:
                point_start = flow_list[0]['time']
                # point_start = '2015-12-04 14:35'
                point_start = [point_start[:4], point_start[5:7], point_start[8:10], point_start[11:13],
                               point_start[14:16]]
                point_start = [int(i) for i in point_start]
                data = []
                for i in flow_list:
                    data.append(float(i.get('value')))
                result = {"pointStart": point_start, "data": data}
            except Exception, e:
                traceback.print_exc(file=sys.stdout)
                LOG.error('Get Bandwidth Error, %s' % e)
                result = {"error": str(e) + ", 请联系管理员"}
        else:
            result = json.loads(res.read())
        return HttpResponse(json.dumps(result), content_type="application/json")
コード例 #3
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def bandwidth_csv(req):
    if req.method == 'GET':
        import csv

        domain_name = req.GET.get('domain_name')
        start = req.GET.get('start')
        end = req.GET.get('end')
        project_id = req.session['project_id']
        token = req.session.get('token')
        api = DomainApi(token)
        json_str = {"domainName": domain_name, "start": start, "end": end, "project_id": project_id}
        res = api.bandwidth(json_str)
        if res.status == 200:
            return_json_str = json.loads(res.read())
            flows = return_json_str["bandwidth"]
            response = HttpResponse(mimetype="text/csv")
            response['Content-Disposition'] = 'attachment; filename=%s_%s_bandwidth.csv' % (start, end)
            writer = csv.writer(response)
            writer.writerow(["Time", "BandWidth"])
            for f in flows:
                writer.writerow([f.get('time'), f.get('value')])
            return response
        else:
            result = json.loads(res.read()).get("error")
            return HttpResponse(result)
コード例 #4
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def handler_cache(req):
    if req.method == 'POST':
        url = req.POST.get('url')
        url_type = req.POST.get('type')
        username = req.COOKIES.get('username')
        project_id = req.session['project_id']
        token = req.session.get('token')
        ############ 判断是否是当前项目下的域名###########
        pattern = re.compile('http:\/\/(.*?)\/')
        re_result = pattern.findall(url)
        if username == settings.SUPERADMIN:
            domains = Domain.objects.using('api_db').all().values_list('domain_name')
        else:
            domains = Domain.objects.using('api_db').filter(project_id=project_id).values_list('domain_name')
        this_domains = []
        for d in domains:
            this_domains.append(d[0])
        for r in re_result:
            if r not in this_domains:
                result = '请不要操作该项目以外的域名'
                return HttpResponse(result)
        #################################################
        api = DomainApi(token)
        urls_list = url.split('\n')
        if url_type == "0" or url_type == "1":
            # 0 是目录, 1是文件
            if url_type == "1":
                key = "urls"
            else:
                key = "dirs"
            json_str = {key: urls_list, "project_id": project_id, "username": username}
            res = api.purge(json_str)
        else:
            json_str = {"urls": urls_list, "project_id": project_id, "username": username}
            res = api.prefetch(json_str)

        if res.status == 200:
            result = '成功!'
        else:
            result = json.loads(res.read()).get("error")
        return HttpResponse(result)
    else:
        if not req.session.has_key("project_id"):
            return HttpResponseRedirect('/login/')
        else:
            project_id = req.session['project_id']
        username = req.COOKIES.get('username')
        if username == settings.SUPERADMIN:
            tasks = TaskList.objects.using('api_db').all()
        else:
            tasks = TaskList.objects.using('api_db').filter(project_id=project_id)
        for t in tasks:
            t.task_content = t.task_content.replace(',', '<br>')
        project_list = req.session['project_list']
        return render_to_response("refresh_cache.html", locals())
コード例 #5
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def update_domain(req, domain_table_id):
    if req.method == "POST":
        s_id = req.POST.get('edit_session_id')
        if not req.session.has_key("edit_session_id"):
            req.session['current_js'] = JS_DICT["fail_update"] % 'Null edit_session_id'
            return HttpResponseRedirect('/domain_manage/')
        if req.session["edit_session_id"] != s_id:
            req.session['current_js'] = JS_DICT["fail_update"] % '请勿重复提交'
            return HttpResponseRedirect('/domain_manage/')
        else:
            del req.session["edit_session_id"]
        cache_rules = req.POST.get('cache_rules', None)
        ip_str = req.POST.get('ip_list').strip()
        token = req.session.get('token')

        d = Domain.objects.using('api_db').get(id=domain_table_id)
        domain_name = d.domain_name
        test_url = d.test_url
        domain_id = d.domain_id
        service_type = d.domain_type

        ip_list = ip_str.split('\r\n')
        ip_list.reverse()
        try:
            api = DomainApi(token)
            domain = common_struct.Domain(domain_name=domain_name,
                                          origin_ips=ip_list,
                                          test_url=test_url,
                                          domain_id=domain_id,
                                          service_type=service_type,
                                          cache_behaviors=cache_rules)
            res = api.modify(domain)
        except Exception, e:
            traceback.print_exc(file=sys.stdout)
            LOG.error('Modify Domain Failed')
            req.session['current_js'] = JS_DICT["fail_update"] % e
            return HttpResponseRedirect('/domain_manage/')
        if res.status == 200:
            req.session['current_js'] = JS_DICT["succ_update"]
        else:
            req.session['current_js'] = JS_DICT["fail_update"] % json.loads(res.read()).get("error")
        session_id = '%s' % uuid.uuid1()
        req.session['edit_session_id'] = session_id
        return HttpResponseRedirect('/domain_manage/')
コード例 #6
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def delete_domain(req):
    if req.method == 'POST':
        ids = req.POST.get('domain_ids')
        id_list = ids.split(',')
        username = req.COOKIES.get('username')
        token = req.session.get('token')
        api = DomainApi(token)
        for i in id_list:
            if i:
                id_obj = Domain.objects.using('api_db').filter(id=i)
                domain_name = id_obj[0].domain_name
                domain_id = id_obj[0].domain_id
                res = api.delete(domain_id)
                if res.status == 200:
                    LOG.info('User %s delete domain %s' % (username, domain_name))
                    print res.read()
                    result = 1
                else:
                    result = json.loads(res.read()).get("error")
        return HttpResponse(result)
コード例 #7
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def domain_manage(req):
    if req.method == "POST":
        if not req.session.has_key("session_id"):
            req.session['current_js'] = JS_DICT["fail_create"] % 'Null session_id'
            return HttpResponseRedirect('/domain_manage/')
        s_id = req.POST.get('session_id')
        if req.session["session_id"] != s_id:
            req.session['current_js'] = JS_DICT["fail_create"] % '请勿重复提交'
            return HttpResponseRedirect('/domain_manage/')
        else:
            del req.session["session_id"]
        cache_rules = req.POST.get('cache_rules', None)
        domain_name = req.POST.get('domain_name').strip()
        service_type = req.POST.get('service_type')
        ip_str = req.POST.get('ip_list').strip()
        test_url = req.POST.get('test_url').strip()
        project_id = req.session['project_id']
        username = req.COOKIES.get('username')
        token = req.session.get('token')

        ip_list = ip_str.split('\r\n')
        ip_list.reverse()
        try:
            api = DomainApi(token)
            domain = common_struct.Domain(domain_name=domain_name,
                                          origin_ips=ip_list,
                                          test_url=test_url,
                                          service_type=service_type,
                                          cache_behaviors=cache_rules)
            res = api.add(domain, project_id, username)
        except Exception, e:
            LOG.error('Create Domain Failed')
            req.session['current_js'] = JS_DICT["fail_create"] % e
            return HttpResponseRedirect('/domain_manage/')

        if res.status == 201:
            req.session['current_js'] = JS_DICT["succ_create"]
        else:
            req.session['current_js'] = JS_DICT["fail_create"] % json.loads(res.read()).get("error")
        return HttpResponseRedirect('/domain_manage/')
コード例 #8
0
ファイル: views.py プロジェクト: JerryDog/cloudcdn
def flow_value(req):
    if req.method == 'POST':
        domain_name = req.POST.getlist('domain_name')
        start = req.POST.get('start')
        end = req.POST.get('end')
        project_id = req.session['project_id']
        token = req.session.get('token')
        api = DomainApi(token)
        json_str = {"domainName": ','.join(domain_name), "start": start, "end": end, "project_id": project_id}
        res = api.flow(json_str)
        if res.status == 200:
            return_json_str = json.loads(res.read())
            flow_list = return_json_str["flowValue"]
            value_sum = return_json_str["totalCount"]
            date = []
            flow = []
            for f in flow_list:
                date.append(f.get('time'))
                flow.append(f.get('value'))
            str_res = ','.join(date) + ';' + ','.join(flow) + ';' + str(value_sum)
            result = str_res
        else:
            result = json.loads(res.read()).get("error")
        return HttpResponse(result)
    else:
        if not req.session.has_key("project_id"):
            return HttpResponseRedirect('/login/')
        else:
            project_id = req.session['project_id']
        username = req.COOKIES.get('username')
        if username == settings.SUPERADMIN:
            domains = Domain.objects.using('api_db').exclude(domain_status='Delete').all()
        else:
            domains = Domain.objects.using('api_db').exclude(domain_status='Delete').filter(project_id=project_id)
        all_domains = ''
        for d in domains:
            all_domains = all_domains + ',' + d.domain_name
        project_list = req.session['project_list']
        return render_to_response("flow_value.html", locals())