def decryptRecord(self, record): if record[columns.ROLL] != None: roll_no = record[columns.ROLL] else: roll_no = "0" if record[columns.MARK_1] != None: mark_1 = FHC.getDecryptedText(record[columns.MARK_1]) else: mark_1 = "0" if record[columns.MARK_2] != None: mark_2 = FHC.getDecryptedText(record[columns.MARK_2]) else: mark_2 = "0" if record[columns.WEIGHT_1] != None: weight_1 = FHC.getDecryptedText(record[columns.WEIGHT_1]) else: weight_1 = "0" if record[columns.WEIGHT_2] != None: weight_2 = FHC.getDecryptedText(record[columns.WEIGHT_2]) else: weight_2 = "0" if record[columns.TOTAL] != None: total = FHC.getDecryptedText(record[columns.TOTAL]) else: total = "0" return (roll_no,mark_1,weight_1,mark_2,weight_2,total)
def _checkAndReply(self, aMsg): aMsg = aMsg.strip() if aMsg == serverproperties.CHOICE_SEND_KEY: print "[%s] Receiving key" % serverproperties._getTime() msg = self._recv(False).strip() print "[%s] Received key" % serverproperties._getTime() (pk, esk) = ast.literal_eval(msg) FHC.writeKeyToFile("None", pk, esk) self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n") elif aMsg == serverproperties.CHOICE_INSERT: print "[%s] Receiving Record" % serverproperties._getTime() msg = self._recv(False).strip() print "[%s] Received Record" % serverproperties._getTime() r = ast.literal_eval(msg) aRecord = record.recordDTO(r) controller.insertRecord(aRecord) self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n") elif aMsg == serverproperties.CHOICE_CHECK_ROLL: print "[%s] Receiving Query" % serverproperties._getTime() msg = self._recv().strip() print "[%s] Received Query" % serverproperties._getTime() rid=controller.getIdByRollNo(msg) self.m_clientSock.send(str(rid)+"\n") time.sleep(1) self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n") elif aMsg == serverproperties.CHOICE_GET_ROW_BY_ID: msg = self._recv() if msg is not None: dto = controller.getRowById(int(msg.strip())) if not self.m_die: try: self.m_clientSock.send(repr(dto)+'\n') except: print "[%s] %s %s" % (serverproperties._getTime(),serverproperties.SERVER_ERR_CANNOT_SEND,self.m_server.m_dict[self.m_clientSock]) self.m_die = True time.sleep(1) self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n") elif aMsg == serverproperties.CHOICE_INCREMENT_MARKS_BY_ID: pass elif aMsg == serverproperties.CHOICE_EVAL_TOTAL: rows = controller.getAllRows() for row in rows: mark1 = row.getMarks1() mark2 = row.getMarks2() weight1 = row.getWeight1() weight2 = row.getWeight2() total = FHC.do4BitWeightedSum(mark1, weight1, mark2, weight2) row.setTotal(total) controller.updateStudentRecord(row) self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n") elif aMsg == serverproperties.SERVER_CLIENT_QUIT_MSG: self._checkQuit(aMsg)
def encryptRecord(self, record): (roll_no,mark_1,weight_1,mark_2,weight_2) = record #c_roll_no = FHC.getEncryptedText(roll_mo) c_mark_1 = FHC.getEncryptedText(mark_1) c_weight_1 = FHC.getEncryptedText(weight_1) c_mark_2 = FHC.getEncryptedText(mark_2) c_weight_2 = FHC.getEncryptedText(weight_2) #return (c_roll_no,c_mark_1,c_weight_1,c_mark_2,c_weight_2) return {columns.ROLL: roll_no,columns.MARK_1: c_mark_1,\ columns.WEIGHT_1: c_weight_1,columns.MARK_2: c_mark_2,\ columns.WEIGHT_2: c_weight_2}
def _sendChoiceToServer(self, aMsg): if aMsg == clientproperties.CHOICE_SEND_KEY: self.m_sock.send(clientproperties.CHOICE_SEND_KEY+"\n") (sk,pk, esk) = FHC.getNewKey() keysToSend = (pk,esk) message = str(keysToSend) self.m_sock.send(message+"\n") elif aMsg == clientproperties.CHOICE_INSERT: record = self.readRecord() recordToSend = self.encryptRecord(record) message = str(recordToSend) self.m_sock.send(clientproperties.CHOICE_INSERT+"\n") time.sleep(1) self.m_sock.send(message+'\n') elif aMsg == clientproperties.CHOICE_CHECK_ROLL: self.m_sock.send(clientproperties.CHOICE_CHECK_ROLL+"\n") roll_no = raw_input("Enter roll no:") self.m_sock.send(roll_no+"\n") msg = self._recv() msg = msg.strip() print "Id is", msg elif aMsg == clientproperties.CHOICE_GET_ROW_BY_ID: self.m_sock.send(clientproperties.CHOICE_GET_ROW_BY_ID+"\n") rowId = raw_input("Enter ID:") self.m_sock.send(rowId+"\n") msg = self._recv() msg = msg.strip() record = ast.literal_eval(msg) pRecord = self.decryptRecord(record) self.displayRecord(pRecord) elif aMsg == clientproperties.CHOICE_INCREMENT_MARKS_BY_ID: pass elif aMsg == clientproperties.CHOICE_EVAL_TOTAL: self.m_sock.send(clientproperties.CHOICE_EVAL_TOTAL+"\n") print("Waiting for server response......") elif aMsg == clientproperties.CHOICE_QUIT: self.m_sock.send(clientproperties.CLIENT_SERVER_QUIT_MSG+"\n") self._checkQuit(clientproperties.CLIENT_SERVER_QUIT_MSG)
try: self.m_clientSock.send(repr(dto)+'\n') except: print "[%s] %s %s" % (serverproperties._getTime(),serverproperties.SERVER_ERR_CANNOT_SEND,self.m_server.m_dict[self.m_clientSock]) self.m_die = True time.sleep(1) self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n") elif aMsg == serverproperties.CHOICE_INCREMENT_MARKS_BY_ID: pass elif aMsg == serverproperties.CHOICE_EVAL_TOTAL: rows = controller.getAllRows() for row in rows: mark1 = row.getMarks1() mark2 = row.getMarks2() weight1 = row.getWeight1() weight2 = row.getWeight2() total = FHC.do4BitWeightedSum(mark1, weight1, mark2, weight2) row.setTotal(total) controller.updateStudentRecord(row) self.m_clientSock.send(serverproperties.SERVER_OP_SUCCESS+"\n") elif aMsg == serverproperties.SERVER_CLIENT_QUIT_MSG: self._checkQuit(aMsg) if __name__ == "__main__": FHC.initialize() FHC.refreshKeyFromFile() serverObj = myserver() serverObj.start()