Exemplo n.º 1
0
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")
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
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")
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
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()
Exemplo n.º 7
0
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")
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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")
Exemplo n.º 10
0
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()
Exemplo n.º 11
0
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()
Exemplo n.º 12
0
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()
Exemplo n.º 13
0
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()