Exemple #1
0
 def node_detail(self, addr, msg=""):
     if addr not in self._node_dict.keys():
         abort(404)
     node = self._node_dict[addr]
     href_base = "/node/" + addr + "/"
     node_info_items = [
         {"descr": "NAME", "value": node.info["name"]},
         {"descr": "IP ADDRESS", "value": node.info["addr"]},
         {"descr": "STATUS", "value": node.info["status"]},
         {"descr": "LAST CONTACT", "value": node.info["last_contact"]},
         {"descr": "CRASHES", "value": node.info["crashes"]},
     ]
     node_info_table = SingleNodeTable(node_info_items)
     if node.config is not None:
         node_config = ConfigParser(node.config, True)
         general_config, programs, op_mode_conf = node_config.dump_additional_information()
         general_config_items = []
         for item in general_config:
             general_config_items.append({"descr": item[0], "value": item[1]})
         count = 1
         program_items = []
         for prog in programs:
             program_items.append({"descr": "Program " + str(count), "value": prog})
             count += 1
         op_mode_items = []
         if node_config.node_op_mode == "fuzzing":
             general_config_items.append({"descr": "OP-Mode", "value": "Fuzzing"})
             op_mode_items.append({"descr": "Fuzzer Type", "value": op_mode_conf["fuzzer_type"]})
             for item in op_mode_conf["fuzz_conf"].items():
                 op_mode_items.append({"descr": item[0], "value": item[1]})
         elif node.op_mode == "reducing":
             pass
         else:
             op_mode_items.append({"descr": "OP-Mode", "value": "Not found"})
         general_config_table = SingleNodeTable(general_config_items)
         program_table = SingleNodeTable(program_items)
         op_mode_conf_table = SingleNodeTable(op_mode_items)
         return render_template(
             "single_node.html",
             section_title="NODE DETAIL",
             node_info_table=node_info_table,
             general_config_table=general_config_table,
             program_table=program_table,
             op_mode_conf_table=op_mode_conf_table,
             href_base=href_base,
             message_from_server=msg,
         )
     else:
         return render_template(
             "single_node.html",
             section_title="NODE DETAIL",
             body_space=node_info_table,
             href_base=href_base,
             message_from_server=msg,
         )
Exemple #2
0
 def node_detail(self, node):
     node_config = node.info
     fuzzer_conf = ""
     if node.config != "":
         from_conf_file = ConfigParser(node.config)
         add_config, fuzzer_conf = from_conf_file.dump_additional_information()
         node_config += add_config
     node_detail_html = self._html_template
     node_detail_html = node_detail_html.replace("SECTION_TITLE", node.name)
     node_conf_table = "<form action=\"/index.py?func=home&node=" + node.address + \
                       "&submit=1\" method=\"post\">\r\n" + "<table>\r\n"
     node_conf_table += "<tr><th/><th/></tr>\r\n"
     # General config settings
     for i in range(4):
         node_conf_table += "<tr>\r\n<td><b>" + node_config[i][0] + "</b></td>\r\n" + \
                            "<td>" + node_config[i][1] + "</td>\r\n</tr>\r\n"
     del node_config[0:4]
     for elem in node_config:
         single_node = "<td><b>" + elem[0] + "</b></td>\r\n" + \
                       "<td><input type=\"text\" name=\"" + elem[0].lower() + "\" value=\"" + \
                       elem[1] + "\" size=\"60\"></td>\r\n"
         node_conf_table += "<tr>\r\n" + single_node + "</tr>\r\n"
     node_conf_table += "</table>\r\n"
     if fuzzer_conf != "":
         node_conf_table += "<table id=\"fuzz_table\" >\r\n<tr><th/><th/></tr>\r\n"
         # fuzzer settings
         fuzz_types_options = ""
         for key in FUZZERS.keys():
             fuzz_types_options += "<option>"+key+"</option>\r\n"
         node_conf_table += "<tr>\r\n<td><b>Fuzzer Type</b></td>\r\n<td><select id=\"fuzzers\" " + \
                            "onLoad=\"set_select_value('" + fuzzer_conf["fuzzer_type"] + "')\" " + \
                            " name=\"fuzzer_type\" onChange=\"changeFuzzer()\">\r\n" + \
                            fuzz_types_options+"</select>\r\n</td>\r\n</tr>\r\n"
         node_conf_table += "<div id=\"fuzz_config\">\r\n"
         for key in FUZZERS[fuzzer_conf["fuzzer_type"]][0]:
             node_conf_table += "<tr>\r\n<td><b>" + key + "</b></td>\r\n" + \
                                "<td><input type=\"text\" value=\"" + fuzzer_conf["fuzz_conf"][key] + "\" name=\"" + \
                                key + "\" >"
         # table end
         node_conf_table += "\r\n</div>\r\n"
         node_conf_table += "</table>\r\n"
     else:
         node_conf_table += "<br><br><b>No additional information received by now</b>\r\n"
     node_conf_table += "<br>\r\n"
     node_conf_table += "<input type=\"submit\" value=\"Submit\">\r\n</form>\r\n"
     node_conf_table += "<form action=\"/index.py?func=home&reboot=" + node.address + "\" method=\"post\">\r\n" + \
                        "<input type=\"submit\" value=\"Reboot node\">\r\n</form>\r\n"
     node_conf_table += "<form action=\"/index.py?func=home&del=" + node.address + "\" method=\"post\">\r\n" + \
                        "<input type=\"submit\" value=\"Delete node\">\r\n</form>\r\n"
     node_detail_html = node_detail_html.replace("REPLACE_ME", node_conf_table)
     return self._statuses[200], self._header_html, node_detail_html
Exemple #3
0
 def node_set_config(self, addr):
     if "conf_file" not in request.files or addr not in self._node_dict.keys():
         abort(404)
     path = "tmp/" + addr + "-inc_conf.xml" if __name__ == "__main__" else "web/tmp/" + addr + "-inc_conf.xml"
     node = self._node_dict[addr]
     rec_file = request.files['conf_file']
     rec_file.save(path)
     #  Check if it's a valid config
     message = "Config parsed successfully"
     error = False
     try:
         ConfigParser(path)
     except ValueError as v_err:
         message = "An error occured while parsing your config: " + v_err.message
         error = True
     except:
         message = "There was a general error with your configuration"
         error = True
     #  -----------------------------
     if not error:
         node.status = False
         with open(path) as fd:
             config = fd.read()
         self._web_queue.put((WEB_QUEUE_TASKS['TO_NODE'], [(addr, node.listener_port), MESSAGE_TYPES['SET_CONFIG'], config]))
     return self.node_detail(addr, message)
Exemple #4
0
 def node_detail(self, node):
     node_config = node.info
     op_mode_conf = ""
     programs = None
     if node.config is not None:
         add_config, programs, op_mode_conf = ConfigParser(node.config, True).dump_additional_information()
         node_config += add_config
     node_detail_html = self._html_template
     node_detail_html = node_detail_html.replace("SECTION_TITLE", node.name)
     node_conf_table = "<form action=\"/index.py?func=home&node=" + node.address + \
                       "&submit=1\" method=\"post\">\r\n" + "<table>\r\n"
     node_conf_table += "<tr><th/>GENERAL CONFIG<th/></tr>\r\n"
     # ------------------------------------------------------------------------------------------------------------
     # General config settings
     for i in range(4):
         node_conf_table += html.node_detail_table_entry(node_config[i][0], node_config[i][1])
     del node_config[0:4]
     for elem in node_config:
         node_conf_table += html.node_detail_table_entry_editable(elem[0], elem[1])
     node_conf_table += "</table>\r\n<table id=\"programs_table\">\r\n"
     # ------------------------------------------------------------------------------------------------------------
     # Program settings
     if programs is not None:
         for i, prog in enumerate(programs):
             node_conf_table += "<tr><th>PROGRAM " + str(i) + "</th><th/></tr>\r\n"
             single_prog = ""
             for key, val in prog.items():
                 single_prog += html.node_detail_table_entry_editable(key, val, "prog-" + str(i) + " " + key)
             node_conf_table += single_prog
     node_conf_table += "</table>\r\n"
     # ------------------------------------------------------------------------------------------------------------
     # Fuzzer settings
     if op_mode_conf != "":
         node_conf_table += "<table id=\"fuzz_table\" >\r\n<tr><th>FUZZER SETTINGS</th><th/></tr>\r\n"
         fuzz_types_options = ""
         for key in FUZZERS.keys():
             fuzz_types_options += "<option>"+key+"</option>\r\n"
         node_conf_table += "<tr>\r\n<td><b>Fuzzer Type</b></td>\r\n<td><select id=\"fuzzers\" " + \
                            "onLoad=\"set_select_value('" + op_mode_conf["fuzzer_type"] + "')\" " + \
                            " name=\"fuzzer_type\" onChange=\"changeFuzzer()\">\r\n" + \
                            fuzz_types_options+"</select>\r\n</td>\r\n</tr>\r\n"
         for key in FUZZERS[op_mode_conf["fuzzer_type"]][0]:
             node_conf_table += html.node_detail_table_entry_editable(key, op_mode_conf['fuzz_conf'][key])
         node_conf_table += "</table>\r\n"
     else:
         node_conf_table += "<br><br><b>No additional information received by now</b>\r\n"
     node_conf_table += "<br>\r\n"
     node_conf_table += "<input type=\"submit\" value=\"Submit\" >\r\n</form>\r\n"
     node_conf_table += html.action_button("Reboot node", "/index.py?func=home&reboot=" + node.address,
                                           "post")
     node_conf_table += html.action_button("Delete node", "/index.py?func=home&del=" + node.address,
                                           "post")
     node_detail_html = node_detail_html.replace("REPLACE_ME", node_conf_table)
     return self._statuses[200], self._header_html, node_detail_html
Exemple #5
0
 def node_detail(self, addr, msg=""):
     if addr not in self._node_dict.keys():
         abort(404)
     node = self._node_dict[addr]
     href_base = "/node/" + addr + "/"
     node_info_items = [{'descr': 'NAME', 'value': node.info['name']},
                        {'descr': 'IP ADDRESS', 'value': node.info['addr']},
                        {'descr': 'STATUS', 'value': node.info['status']},
                        {'descr': 'LAST CONTACT', 'value': node.info['last_contact']},
                        {'descr': 'CRASHES', 'value': node.info['crashes']}]
     node_info_table = SingleNodeTable(node_info_items)
     if node.config is not None:
         node_config = ConfigParser(node.config, True)
         general_config, programs, op_mode_conf = node_config.dump_additional_information()
         general_config_items = []
         for item in general_config:
             general_config_items.append({'descr': item[0], 'value': item[1]})
         count = 1
         program_items = []
         for prog in programs:
             program_items.append({'descr': 'Program ' + str(count), 'value': prog})
             count += 1
         op_mode_items = []
         if node_config.node_op_mode == "fuzzing":
             general_config_items.append({'descr': 'OP-Mode', 'value': "Fuzzing"})
             op_mode_items.append({'descr': 'Fuzzer Type', 'value': op_mode_conf['fuzzer_type']})
             for item in op_mode_conf['fuzz_conf'].items():
                 op_mode_items.append({'descr': item[0], 'value': item[1]})
         elif node.op_mode == "reducing":
             pass
         else:
             op_mode_items.append({'descr': 'OP-Mode', 'value': 'Not found'})
         general_config_table = SingleNodeTable(general_config_items)
         program_table = SingleNodeTable(program_items)
         op_mode_conf_table = SingleNodeTable(op_mode_items)
         return render_template("single_node.html", section_title="NODE DETAIL", node_info_table=node_info_table,
                                general_config_table=general_config_table, program_table=program_table,
                                op_mode_conf_table=op_mode_conf_table, href_base=href_base, message_from_server=msg)
     else:
         return render_template("single_node.html", section_title="NODE DETAIL", body_space=node_info_table,
                                href_base=href_base, message_from_server=msg)