Beispiel #1
0
    def render_resource(self, request, response, location):
        # Force mime-type to html
        response.set_mime_type("text/html")
        response.set_header("Cache-Control", "no-store")
        response.set_header("connection", "close")

        if self.enable_actions and request.method == http.Methods.POST:
            data = "\n".join(request.readlines())
            params = http.urldecode(data, request.encoding)

            if 'terminate_agent' in params:
                d = self.model.terminate_agent()
                d.addCallback(self._move_up)
                return d

            if 'kill_agent' in params:
                d = self.model.kill_agent()
                d.addCallback(self._move_up)
                return d

        doc = []
        self.render_header(doc)

        self._update_document(request, response, doc)

        if self.enable_actions:
            self._update_actions(request, response, doc)

        self.render_footer(doc)
        response.writelines(doc)
Beispiel #2
0
    def render_resource(self, request, response, location):
        # Force mime-type to html
        response.set_mime_type("text/html")
        response.set_header("Cache-Control", "no-store")
        response.set_header("connection", "close")

        if request.method == http.Methods.POST:
            if self.enable_actions:
                data = "\n".join(request.readlines())
                params = http.urldecode(data, request.encoding)

                if 'start_agent' in params:
                    agent_type = params['agent_type'][0]
                    if agent_type in self.startable_agents:
                        d = self.model.spawn_agent(agent_type)
                        d.addCallback(defer.drop_param,
                                      self.redirect, request.path)
                        return d

            self.redirect(request.path)

        return self.render_response(request, response)
Beispiel #3
0
    def render_resource(self, request, response, location):
        # Force mime-type to html
        response.set_mime_type("text/html")
        response.set_header("Cache-Control", "no-store")
        response.set_header("connection", "close")

        if self.enable_actions and request.method == http.Methods.POST:
            data = "\n".join(request.readlines())
            params = http.urldecode(data, request.encoding)

            if 'set_logging_filter' in params:
                filter = params["filter"][0]
                self.model.set_logging_filter(filter)

            if 'shutdown_agency' in params:
                time.callLater(1, self.model.shutdown_agency)
                return self._redirect_to_top(request)

            if 'terminate_agency' in params:
                time.callLater(1, self.model.terminate_agency)
                return self._redirect_to_top(request)

            if 'kill_agency' in params:
                time.callLater(1, self.model.kill_agency)
                return self._redirect_to_top(request)

        agents_url = "/agents"

        doc = []
        self.render_header(doc)
        doc.extend(["<H2>Agency</H2>"
                    "<TABLE>"
                    "<TR>"
                    "<TD><B>Identifier:</B></TD>"
                    "<TD>", self.model.agency_id, "</TD>"
                    "</TR>",
                    "<TR>"
                    "<TD><B>Role:</B></TD>"
                    "<TD>", self.model.role.name, "</TD>"
                    "</TR>"
                    "</TABLE>"
                    "<UL>"
                    "<LI><H4><A href='", agents_url, "'>Agents</A></H4></LI>"
                    "</UL>"])

        if self.enable_actions:
            dbg = self.model.get_logging_filter()
            doc.extend(["</TABLE>"
                        "<H2>Actions</H2>"
                        "<TABLE>"
                        "<TR>"
                        "<TD valign='top'><B>Global Logging Filter:</TD>"
                        "<TD colspan='2'>"
                        "<DIV>"
                        "<FORM method='post'>"
                        "<INPUT type='text' name='filter' value='", dbg, "'>"
                        "<INPUT type='submit' name='set_logging_filter'"
                        " value='Update'>"
                        "</FORM>"
                        "</DIV>"
                        "</TD>"
                        "</TR>"
                        "<TR>"
                        "<TD>"
                        "<FORM method='post'>"
                        "<INPUT type='submit' name='shutdown_agency'"
                        " value='Shutdown'>"
                        "</FORM>"
                        "</TD>"
                        "<TD>"
                        "<FORM method='post'>"
                        "<INPUT type='submit' name='terminate_agency'"
                        " value='Terminate'>"
                        "</FORM>"
                        "</TD>"
                        "<TD>"
                        "<FORM method='post'>"
                        "<INPUT type='submit' name='kill_agency'"
                        " value='Kill'>"
                        "</FORM>"
                        "</TD>"
                        "</TR>"
                        "</TABLE>"])

        self.render_footer(doc)
        response.writelines(doc)
Beispiel #4
0
    def render_resource(self, request, response, location):
        # Only the master agency knows the other ones
        self._ensure_master(request)

        # Force mime-type to html
        response.set_mime_type("text/html")
        response.set_header("Cache-Control", "no-store")
        response.set_header("connection", "close")

        if request.method == http.Methods.POST:
            if self.enable_actions and self.model.is_master():
                data = "\n".join(request.readlines())
                params = http.urldecode(data, request.encoding)

                if 'full_shutdown' in params:
                    time.callLater(0, self.model.full_shutdown)
                    doc = ["<HTML><HEAD>"
                           "<TITLE>F3AT Gateway</TITLE></HEAD><BODY>"
                           "<H2>Offline</H2>"
                           "</BODY></HTML>"]
                    response.writelines(doc)
                    return

                if 'start_agent' in params:
                    agent_type = params['agent_type'][0]
                    if agent_type in self.startable_agents:
                        d = self.model.spawn_agent(agent_type)
                        d.addCallback(defer.drop_param,
                                      self.redirect, request.path)
                        return d

            self.redirect(request.path)

        doc = []
        self.render_header(doc)

        doc.extend(["<H2>Agencies</H2>"
                    "<TABLE border='0'>"])

        for agency_id in self.model.iter_agency_ids():
            agency_url = self.create_url(request, agency_id)
            doc.extend(["<TR><TD><A href='", agency_url, "'>",
                        agency_id, "</A>"
                        "</TD></TR>"])

        doc.extend(["</TABLE>"])

        if self.enable_actions:
            if self.startable_agents and self.model.is_master():
                doc.extend(["</TABLE>"
                            "<H2>Actions</H2>"
                            "<TABLE>"
                            "<TR>"
                            "<TD valign='top'><B>Start Agent:</B></TD>"
                            "<TD>"
                            "<FORM method='post'>"
                            "<DIV>"
                            "<SELECT name='agent_type'>"
                            "<option value='' selected>"
                            "(select type)</option>"])

                startable = self.startable_agents.items()
                startable.sort(key=operator.itemgetter(0))
                for k, v in startable:
                    doc.extend(["<option value='", k, "'>", v, "</option>"])

                doc.extend(["</SELECT>"
                            "<INPUT type='submit' name='start_agent'"
                            " value='Start'>"
                            "</DIV>"
                            "</FORM>"
                            "</TD>"
                            "</TR>"
                            "<TR>"
                            "<TD>"
                            "<FORM method='post'>"
                            "<INPUT type='submit' name='full_shutdown'"
                            " value='Full Shutdown'>"
                            "</FORM>"
                            "</TD>"
                            "</TR>"
                            "</TABLE>"])

        self.render_footer(doc)
        response.writelines(doc)