def restore(msg, socket): dir = USERFOLDER_PATH(currentUser,msg[1]) print(dir) files = [name for name in os.listdir(dir)] fileInfos = [] fileNames = [] for f in files: fileInfos.append([f, time.strftime("%d.%m.%Y %H:%M:%S", time.gmtime(os.path.getmtime(dir + '/' + f))), os.path.getsize(dir + '/' + f)]) fileNames.append(f) numberOfFiles = len(files) msgRBR = "RBR " + str(numberOfFiles) i = 0 repoInfo = ".~repoinfo_" + msg[1] + ".txt" for info in fileInfos: if fileNames[i] == repoInfo: #dont send the repo info continue for data in info: print("data", data) msgRBR += " " + str(data) print("msgRBR ", msgRBR) socket.TCPWriteMessage(msgRBR + " ") print("fileNames[i]", fileNames[i]) socket.TCPWriteFile(dir + "/" + fileNames[i]) i += 1 msgRBR = "" socket.TCPWriteMessage("\n")
def dirlist(socket): print(currentUser) dir = USERFOLDERS_PATH(currentUser) if checkDirExists(dir): files = [name for name in os.listdir(dir)] numberOfFiles = len(files) msgLDR = "LDR " + str(numberOfFiles) for file in files: msgLDR += " " + file socket.TCPWriteMessage(msgLDR + "\n") else: socket.TCPWriteMessage("LSD 0" + "\n")
def deluser(socket): dir = USERFOLDERS_PATH( currentUser) #dir with files named after dirs stored in BS print(dir) if checkDirExists(dir): dirs = [name for name in os.listdir(dir)] if len(dirs) > 0: #if dirs still in BS socket.TCPWriteMessage("DLR NOK\n") else: os.rmdir(dir) #remove user info stored in CS os.remove(USERPASS_FILE(currentUser)) socket.TCPWriteMessage("DLR OK\n")
def deleteDir(folder, socket): dir = USERFOLDER_PATH(currentUser, folder) dataBS = getDataFromFile(dir) #check which BS the dir is stored os.remove(dir) msgDLB = "DLB " + currentUser + " " + folder UDPConnection = UDPConnect() UDPConnection.UDPSend(msgDLB, (dataBS[0], int(dataBS[2]))) #ask BS to delete msgDBR = UDPConnection.UDPReceive()[0] if msgDBR[1] == "OK": socket.TCPWriteMessage("DDR OK\n") else: socket.TCPWriteMessage("DDR NOK\n") UDPConnection.UDPClose()
def restore(folder, socket): checkCredentials = checkUserCredentials() if checkCredentials == "OK": loginreply = loginUser(userCredentials, socket) if loginreply[0] == "ERR": print("ERR authentication") elif loginreply[1] == "OK": socket.TCPWriteMessage("RST " + folder + "\n") msgRSR = socket.TCPReadMessage() print(msgRSR) if msgRSR[1] != "EOF": BSAddrStruct = (msgRSR[1], int(msgRSR[2])) print(BSAddrStruct) socket2 = TCPConnect().startClient(BSAddrStruct) socket2.TCPWriteMessage("AUT " + userCredentials[0] + ' ' + userCredentials[1] + "\n") msgFromBS = socket2.TCPReadMessage() if msgFromBS[1] == "OK": socket2.TCPWriteMessage("RSB " + folder + "\n") msgRBR = socket2.TCPReadWord() num = socket2.TCPReadWord() print(num) numberOfFiles = int(num) receiveFileAndWrite("./" + folder, numberOfFiles, socket2) else: print("RSB NOK") socket2.TCPClose() else: print("restore error") else: print("backup + " + folder + ": " + checkCredentials) socket.TCPClose()
def backup(folder, socket): checkCredentials = checkUserCredentials() if checkCredentials == "OK": loginreply = loginUser(userCredentials, socket) print(loginreply) if loginreply[0] == "ERR": print("ERR authentication") elif loginreply[1] == "OK": dir = "./" + folder files = [name for name in os.listdir(dir)] if len(files): fileInfos = [] for f in files: fileInfos.append([ f, time.strftime( "%d.%m.%Y %H:%M:%S", time.gmtime(os.path.getmtime(dir + '/' + f))), os.path.getsize(dir + '/' + f) ]) numberOfFiles = len(files) msg = "BCK " + folder + " " + str(numberOfFiles) for info in fileInfos: for data in info: msg += " " + str(data) socket.TCPWriteMessage(msg + "\n") msgFromCS = socket.TCPReadMessage() #BKR BSAddrStruct = (msgFromCS[1], int(msgFromCS[2])) socket2 = TCPConnect().startClient(BSAddrStruct) socket2.TCPWriteMessage("AUT " + userCredentials[0] + ' ' + userCredentials[1] + "\n") msgFromBS = socket2.TCPReadMessage() if msgFromBS[1] == "OK": numberOfFiles = msgFromCS[3] msg = "UPL " + folder + " " + numberOfFiles for i in range(int(numberOfFiles)): j = 4 + i * 4 msg += " " + msgFromCS[j] + " " + msgFromCS[ j + 1] + " " + msgFromCS[j + 2] + " " + msgFromCS[ j + 3] + " " socket2.TCPWriteMessage(msg) socket2.TCPWriteFile(dir + "/" + msgFromCS[j]) msg = "" socket2.TCPWriteMessage("\n") reply = socket2.TCPReadMessage() #UPR if reply[1] == 'OK': print(">> file backup completed ", folder) else: print("UPR NOK") socket2.TCPClose() else: print("backup error: empty dir") else: print("backup " + folder + ": " + checkCredentials) socket.TCPClose()
def filelist(folder, socket): dir = USERFOLDER_PATH(currentUser, folder) dataBS = getDataFromFile(dir) #check which BS the dir is stored if checkFileExists(dir): UDPConnection = UDPConnect() UDPConnection.UDPSend("LSF " + currentUser + " " + folder, (dataBS[0], int(dataBS[2]))) listLFD = UDPConnection.UDPReceive()[0] msgLFD = "" for data in listLFD: msgLFD += data + " " if data == "LFD": msgLFD += dataBS[0] + " " + str(dataBS[2]) + " " socket.TCPWriteMessage(msgLFD + "\n") else: socket.TCPWriteMessage("LFD NOK" + "\n")
def loginUser(credentials, socket): print(credentials) message = "AUT" + " " + credentials[0] + " " + credentials[1] + "\n" print(message.split()) socket.TCPWriteMessage(message) word = socket.TCPReadMessage() print(word) return word
def restore(folder, socket): dir = USERFOLDER_PATH(currentUser, folder) print(dir) print("dir ", checkDirExists(dir)) if checkFileExists(dir): BS = getDataFromFile(dir) msgRSR = "RSR " + BS[0] + " " + str(BS[1]) else: msgRSR = "RSR EOF" socket.TCPWriteMessage(msgRSR + "\n")
def deleteDir(folder, socket): global userCredentials checkCredentials = checkUserCredentials() if checkCredentials == "OK": loginreply = loginUser(userCredentials, socket) if loginreply[0] == "ERR": print("ERR authentication") elif loginreply[1] == "OK": socket.TCPWriteMessage("DEL " + folder + '\n') msgDDR = socket.TCPReadMessage() if msgDDR[1] == "OK": print(folder + " deleted") else: print("deletedir + " + folder + ": " + checkCredentials) socket.TCPClose()
def filelist(folder, socket): global userCredentials checkCredentials = checkUserCredentials() if checkCredentials == "OK": loginreply = loginUser(userCredentials, socket) if loginreply[0] == "ERR": print("ERR authentication") elif loginreply[1] == "OK": socket.TCPWriteMessage("LSF " + folder + "\n") msgLFD = socket.TCPReadMessage() numberOfFiles = int(msgLFD[3]) filesToPrint = "" for i in range(numberOfFiles): j = 4 + 4 * i filesToPrint += msgLFD[j] print(filesToPrint) else: print("filelist + " + folder + ": " + checkCredentials) socket.TCPClose()
def deluser(socket): global userCredentials checkCredentials = checkUserCredentials() if checkCredentials == "OK": loginreply = loginUser(userCredentials, socket) if loginreply[0] == "ERR": print("ERR authentication") elif loginreply[1] == "OK": socket.TCPWriteMessage("DLU\n") msgDLR = socket.TCPReadMessage() if msgDLR[0] == "ERR": print("ERR deluser") elif msgDLR[1] == "OK": print("deleted user " + userCredentials[0]) elif msgDLR[1] == "NOK": print("error: user not deleted") print("error: erase backup dirs first") else: print("deluser: " + checkCredentials) socket.TCPClose()
def dirlist(socket): global userCredentials checkCredentials = checkUserCredentials() if checkCredentials == "OK": loginreply = loginUser(userCredentials, socket) if loginreply[0] == "ERR": print("ERR authentication") elif loginreply[1] == "OK": socket.TCPWriteMessage("LSD\n") msgFromCS = socket.TCPReadMessage() print(msgFromCS) if msgFromCS == ["LSD", "0"]: print(msgFromCS) elif msgFromCS[0] == "ERR": print("ERR") else: numberOfDirs = int(msgFromCS[1]) for i in range(numberOfDirs): print(msgFromCS[2 + i]) else: print("dirlist: " + checkCredentials) socket.TCPClose()