示例#1
0
    def getEchoe(self, request, socketTCP):
        variable = request[Define.variable]
        timestamp = request[Define.timestamp]

        if not self.shouldEcho(variable, timestamp, request[Define.client_id]):
            response = dict(server_id=self.ID,
                            plataform=Define.plataform,
                            request_code=request[Define.request_code],
                            status=Define.error,
                            msg=Define.timestamp_already_echoed)
            responseJSON = json.dumps(response)

        else:
            data_signature = Signature.signData(
                Signature.getPrivateKey(self.ID, -1, self.CERT_PATH),
                variable + str(timestamp))

            with self.LOCK:
                self.ECHOED_VALUES.append(
                    (timestamp, variable, request[Define.client_id]))

            dataDict = dict(data_signature=data_signature)
            response = dict(server_id=self.ID,
                            plataform=Define.plataform,
                            request_code=request[Define.request_code],
                            status=Define.success,
                            msg=Define.get_echoe,
                            data=dataDict)
            responseJSON = json.dumps(response)

        socketTCP.send(responseJSON.encode('utf-8'))
        if self.VERBOSE == 2:
            print('-----REQUEST SAINDO:-----' + responseJSON)
示例#2
0
文件: client.py 项目: Cayke/TCC
    def write(self, value):
        timestamp = self.readTimestamp()
        timestamp = self.incrementTimestamp(timestamp)

        data_signature = Signature.signData(
            Signature.getPrivateKey(-1, self.ID, self.CERT_PATH),
            value + str(timestamp))

        for server in self.SERVERS:
            threading.Thread(target=self.writeOnServer,
                             args=(server, value, timestamp, data_signature,
                                   self.ID, self.REQUEST_CODE)).start()

        self.REQUEST_CODE = self.REQUEST_CODE + 1
示例#3
0
    def write(self, request, socketTCP, type):
        variable = request[Define.variable]
        timestamp = request[Define.timestamp]
        client_id = request[Define.client_id]

        echoesArray = request[Define.echoes]
        echoes = []
        for dictionary in echoesArray:
            echoes.append((dictionary[Define.server_id],
                           dictionary[Define.data_signature]))

        self.LOCK.acquire()
        if timestamp > self.TIMESTAMP or (timestamp == self.TIMESTAMP
                                          and client_id > self.CLIENT_ID):
            if self.isEchoValid(echoes, variable, timestamp, type):
                self.VARIABLE = variable
                self.TIMESTAMP = timestamp
                self.DATA_SIGNATURE = Signature.signData(
                    Signature.getPrivateKey(self.ID, -1, self.CERT_PATH),
                    variable + str(timestamp))

                self.LOCK.release()

                if self.VERBOSE > 0:
                    print("Recebido variable = " + variable + " e timestamp " +
                          str(timestamp))

                response = dict(server_id=self.ID,
                                plataform=Define.plataform,
                                request_code=request[Define.request_code],
                                status=Define.success,
                                msg=Define.variable_updated)
                responseJSON = json.dumps(response)

                socketTCP.send(responseJSON.encode('utf-8'))
                if self.VERBOSE == 2:
                    print('-----REQUEST SAINDO:-----' + responseJSON)

            else:
                self.LOCK.release()

                response = dict(server_id=self.ID,
                                plataform=Define.plataform,
                                request_code=request[Define.request_code],
                                status=Define.error,
                                msg=Define.invalid_echoes)
                responseJSON = json.dumps(response)

                socketTCP.send(responseJSON.encode('utf-8'))
                if self.VERBOSE == 2:
                    print('-----REQUEST SAINDO:-----' + responseJSON)

        else:
            self.LOCK.release()

            response = dict(server_id=self.ID,
                            plataform=Define.plataform,
                            request_code=request[Define.request_code],
                            status=Define.error,
                            msg=Define.outdated_timestamp)
            responseJSON = json.dumps(response)

            socketTCP.send(responseJSON.encode('utf-8'))
            if self.VERBOSE == 2:
                print('-----REQUEST SAINDO:-----' + responseJSON)