예제 #1
0
	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)
예제 #2
0
	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)
예제 #3
0
	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}
예제 #4
0
	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)
예제 #5
0
				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()