예제 #1
0
	def __init__(self):
		self.oSocket = Socket(HOST,PORT)
		self.oSocket.listen()
		self.oLN = LaserNotes()
예제 #2
0
class Server():
	"""Classe che gestice il server di laserNotes"""
	def __init__(self):
		self.oSocket = Socket(HOST,PORT)
		self.oSocket.listen()
		self.oLN = LaserNotes()
	
	def parse(self,aData,oSock):
		"""
			Cosa fa			:			Esegue il parse del comando e reindirizza il funzionamento a funzioni specifiche
			aData			:			dizionario, comando ed eventuali parametri, così formato:
											{sComando: "LOGIN"} // Comando - nome comando
											{sUser : "******"}	// nome parametro - valore
											{sPasswd : "root"}	// nome parametro - valore
											...
			oSock			:			oggetto socket, connessione socket con il client
			Ritorna			:			bRet -> logico, true se tutto ok, false in caso di errore
		"""
		bRet = False

		sComando = aData['sComando'].upper()
		del aData['sComando']

		if sComando == 'LOGIN':
			aRisultato = self.oLN.login(aData) # Effettuo il login
			bRet = True
		elif sComando == 'ADDUSER':
			aRisultato = self.oLN.addUser(aData) # Aggiungo l'utente
			bRet = True
		elif sComando == 'GETUSERNAME':
			aRisultato = self.oLN.getUsername(aData) # Estrapolo in nome utente
			bRet = True
		elif sComando == 'GETALLUSERINFO':
			aRisultato = self.oLN.getAllUserInfo(aData) # Estraggo tutte le informazioni dell'utente
			bRet = True
		elif sComando == 'ADDNOTE':
			aRisultato = self.oLN.addNote(aData) # Aggiungo una nota
			bRet = True
		elif sComando == 'GETALLNOTES':
			aRisultato = self.oLN.getAllNotes(aData) # Estraggo tutte le note di un utente
			bRet = True
		elif sComando == 'UPDATENOTE':
			aRisultato = self.oLN.updateNote(aData) # Aggiorno una nota
			bRet = True
		elif sComando == 'DELETENOTE':
			aRisultato = self.oLN.deleteNote(aData) # Aggiorno una nota
			bRet = True
			
		oSock.sendall(json.dumps(aRisultato).encode("utf-8") + "\n".encode('utf-8')) # Invio la risposta al client

		return bRet

	def elabora(self,oClient):
		"""
			oClient			:			tupla che identifica il client, così formata
											[0] => socket, oggetto socket riferito al client. Identifica la connessione con il client
											[1] => address
											[0] => "192.168.0.183", stringa -> indirizzo del client
											[1] => 50465, numerico -> porta del client		
			Ritorna			:			bRet -> logico, true = tutto ok | false = errore
		"""
		bRet = False
		print("Elaboro...")
		
		LogBuffer.write("Elaboro richiesta da: {0}:{1}".format(oClient[1][0],oClient[1][1]),4)
		
		sData = self.oSocket.recv(oClient,MSGLEN)

		LogBuffer.write("{0} dice: {1}".format(oClient[1][0],sData),4)

		if sData == "":
			return bRet

		aData = json.loads(sData)

		bOk = self.parse(aData,oClient[0])

		if not bOk:
			LogBuffer.write("Errore durante il parse del comando. Controllare log precedenti per maggiori informazioni",3)
		else:
			bRet = True	

		return bRet

	def close(self):
		"""
			Chiude la connessione socket
		"""
		self.oSocket.close()