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())
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")
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)
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())
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/')
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)
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/')
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())