Exemple #1
0
    def handle(self):
        self.server.logger.debug("Handling message from {0}".format(
            self.client_address))

        string = StringIO.StringIO(self.rfile.read())
        message = MobileOriginatedMessage.parse(string)
        time_of_session = datetime.datetime(1970, 1, 1, 0, 0, 0) + \
                datetime.timedelta(seconds=message.time_of_session)

        directory = os.path.join(self.server.directory, message.imei,
                                 str(time_of_session.year),
                                 "%02d" % time_of_session.month)
        mkdir_p(directory)
        basename = time_of_session.strftime("%y%m%d_%H%M%S")
        payload_file = os.path.join(directory, basename + ".payload")
        sbd_file = os.path.join(directory, basename + ".sbd")

        if os.path.isfile(payload_file) or os.path.isfile(sbd_file):
            self.server.logger.warn(
                "Message recieved at {0} has already been stored, skipping".
                format(time_of_session))
            return

        with open(payload_file, "wb") as f:
            f.write(message.payload)
        with open(sbd_file, "wb") as f:
            f.write(string.getvalue())

        self.server.logger.info(
            "Message recieved at {0} stored OK".format(time_of_session))