def call_check(data): join_room(data["transaction_id"]) url = data["url"] if not re.match(r"^http\://", url): data["url"] = "http://%s" % url for location in app.config["LOCATIONS"]: for testsuite in location["testsuites"]: input_data = { "transaction_id": data["transaction_id"], "location": location["location"], "country": location["country"], "ISP": location["ISP"], "url": data["url"], } location_queue = "%s_%s" % (location["location"].lower().replace(" ", "_"), location["ISP"].lower().replace(" ", "_")) logging.warn(location_queue) input_data["test_type"] = testsuite if testsuite in ("dns_google", "dns_TM", "dns_opendns"): for server in app.config["TESTSUITES"][testsuite]["servers"]: input_data["task_id"] = str(uuid.uuid4()) extra_attr = { "provider": app.config["TESTSUITES"][testsuite]["provider"], "server": server } input_data["extra_attr"] = extra_attr logging.warn("DNS Check") description = "%s server: %s " % (app.config["TESTSUITES"][testsuite]["description"], server) input_data["description"] = description result_data = ResultData.from_json(input_data, extra_attr=extra_attr) task = chain( call_dns_task.s(result_data.to_json()).set(queue=location_queue), update_entry.s().set(queue="basecamp"), post_update.s().set(queue="basecamp") ).apply_async() else: input_data["task_id"] = str(uuid.uuid4()) input_data["description"] = app.config["TESTSUITES"][testsuite]["description"] result_data = ResultData.from_json(input_data) if testsuite == "http": task = chain( call_http_task.s(result_data.to_json()).set(queue=location_queue), update_entry.s().set(queue="basecamp"), post_update.s().set(queue="basecamp") ).apply_async() elif testsuite == "http_dpi_tampering": task = chain( call_http_dpi_tampering_task.s(result_data.to_json()).set(queue=location_queue), update_entry.s().set(queue="basecamp"), post_update.s().set(queue="basecamp") ).apply_async() emit("result_received", result_data.to_json(), room=result_data.transaction_id)
def initialize_entry(data, extra_attr={}): db.connect() # This should save the data result_data = ResultData.from_json(data, extra_attr=extra_attr) return result_data.to_json()