From c86a33fac9d950e89dd89596ecd125d3cbc38eeb Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 14:42:05 +0100 Subject: [PATCH 01/29] Create OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua new file mode 100644 index 0000000..e69de29 From 0b6f38be681af0df01dce24e763c640a4ae4f6c4 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 15:48:58 +0100 Subject: [PATCH 02/29] Update OpenFTP Server Program LITE.lua --- .../Beta 3/OpenFTP Server Program LITE.lua | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index e69de29..48da147 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -0,0 +1,67 @@ +-- OpenFTP Server - Lite (Beta 3) | B3LITE + +local fs = require("filesystem") +local GERTi = require("GERTiClient") +local event = require("event") +local SRL = require("serialization") + +local FTPCore = require("FTPCore") + + + +local customPath = "/home/OpenFTP/" +local customPort = 98 +local fileSockets = {} + +local function CompleteSocket(_,originAddress,connectionID) + if connectionID == customPort then + os.sleep() + fileSockets[originAddress] = GERTi.openSocket(originAddress,connectionID) + end + return true +end + +local function CloseSocket(_, originAddress,destAddress) + if fileSockets[originAddress] then + fileSockets[originAddress]:close() + fileSockets[originAddress] = nil + elseif fileSockets[destAddress] then + fileSockets[destAddress]:close() + fileSockets[destAddress] = nil + end + return true +end + +local function GERTDataHandler(_,originAddress,connectionID,data) + if fileSockets[originAddress] and connectionID == customPort then + local information = fileSockets[originAddress]:read("-k") + if type(information) == "table" then + if information[1] == "FTPREADYTORECEIVE" then + local FileDetails = { + file = customPath .. fs.canonical(information[2]), + address = originAddress, + port = customPort + } + local result, lastState = FTPCore.UploadFile(FileDetails,true,fileSockets[originAddress]) -- I might do something with these outputs later + end + end + end +end + + + + + +local completeSocketListener = event.listen("GERTConnectionID",CompleteSocket) +local closeSocketListener = event.listen("GERTConnectionClose",CloseSocket) +local GERTDataHandlerListener = event.listen("GERTData",GERTDataHandler) + +io.write("OpenFTP Beta 3 LITE has been successfully started.\nTo shut down the program, type EXIT.\nIf the io crashes, the program will continue running in the background.\nThe only way to stop the program after this is to either kill its processes, or reboot.") +local response = true +while response ~= "EXIT" do + response = io.read() +end +event.cancel(completeSocketListener) +event.cancel(closeSocketListener) +event.cancel(GERTDataHandlerListener) +io.write("OpenFTP has shut down.") \ No newline at end of file From c006476055be94f50171eaa68141bdc952ee5fdb Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 16:00:07 +0100 Subject: [PATCH 03/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 48da147..2a2d57e 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -3,7 +3,6 @@ local fs = require("filesystem") local GERTi = require("GERTiClient") local event = require("event") -local SRL = require("serialization") local FTPCore = require("FTPCore") @@ -56,7 +55,7 @@ local completeSocketListener = event.listen("GERTConnectionID",CompleteSocket) local closeSocketListener = event.listen("GERTConnectionClose",CloseSocket) local GERTDataHandlerListener = event.listen("GERTData",GERTDataHandler) -io.write("OpenFTP Beta 3 LITE has been successfully started.\nTo shut down the program, type EXIT.\nIf the io crashes, the program will continue running in the background.\nThe only way to stop the program after this is to either kill its processes, or reboot.") +io.write("OpenFTP Beta 3 LITE has been successfully started.\nTo shut down the program, type EXIT.\nIf the io crashes, the program will continue running in the background.\nThe only way to stop the program after this is to either kill its processes, or reboot.\n") local response = true while response ~= "EXIT" do response = io.read() From 0f57a8d2ed51f782b9dca3f6c8204462fa9770ac Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 16:00:09 +0100 Subject: [PATCH 04/29] Create OpenFTP Client Program LITE.lua --- .../OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua new file mode 100644 index 0000000..dfc2119 --- /dev/null +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -0,0 +1,7 @@ +-- OpenFTP Client - Lite (Beta 3) | B3LITE + +local fs = require("filesystem") +local GERTi = require("GERTiClient") +local event = require("event") + +local FTPCore = require("FTPCore") From a4de12f88760c8ad9deb5f923e359462dca7d266 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 16:43:14 +0100 Subject: [PATCH 05/29] Update OpenFTP Server Program LITE.lua --- .../Beta/Beta 3/OpenFTP Server Program LITE.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 2a2d57e..6e2191d 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -3,6 +3,7 @@ local fs = require("filesystem") local GERTi = require("GERTiClient") local event = require("event") +local SRL = require("serialization") local FTPCore = require("FTPCore") @@ -42,6 +43,10 @@ local function GERTDataHandler(_,originAddress,connectionID,data) port = customPort } local result, lastState = FTPCore.UploadFile(FileDetails,true,fileSockets[originAddress]) -- I might do something with these outputs later + elseif information[1] == "FTPSENDPROBE" then + local FileDetails = SRL.unserialize(information[2]) + local FileData = SRL.unserialize(information[3]) + local result, lastState = FTPCore.DownloadFile(FileDetails,FileData,fileSockets[originAddress]) end end end @@ -55,11 +60,14 @@ local completeSocketListener = event.listen("GERTConnectionID",CompleteSocket) local closeSocketListener = event.listen("GERTConnectionClose",CloseSocket) local GERTDataHandlerListener = event.listen("GERTData",GERTDataHandler) -io.write("OpenFTP Beta 3 LITE has been successfully started.\nTo shut down the program, type EXIT.\nIf the io crashes, the program will continue running in the background.\nThe only way to stop the program after this is to either kill its processes, or reboot.\n") +io.write("OpenFTP Beta 3 LITE has been successfully started.\nTo shut down the program, type EXIT, to run in background, type BACKGROUND.\nIf the io crashes, the program will continue running in the background.\nThe only way to stop the program after this is to either kill its processes, or reboot.\n") local response = true -while response ~= "EXIT" do +while response ~= "EXIT" and response ~= "BACKGROUND" do response = io.read() end +if response == "BACKGROUND" then + os.exit() +end event.cancel(completeSocketListener) event.cancel(closeSocketListener) event.cancel(GERTDataHandlerListener) From 6a85a281f55b0a38aa66cc56183dfbe350c790b6 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 16:43:16 +0100 Subject: [PATCH 06/29] Update OpenFTP Client Program LITE.lua --- .../Beta 3/OpenFTP Client Program LITE.lua | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index dfc2119..713261f 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -5,3 +5,63 @@ local GERTi = require("GERTiClient") local event = require("event") local FTPCore = require("FTPCore") + +local SocketWithTimeout = function (Details,Timeout) -- Timeout defaults to 5 seconds. Details must be a keyed array with the address under "address" and the port/CID under "port" + local socket = GERTi.openSocket(Details.address,Details.port) + local serverPresence = false + if socket then serverPresence = event.pullFiltered(Timeout or 5,function (eventName,oAdd,CID) return eventName=="GERTConnectionID" and oAdd==Details.address and CID==Details.port end) end + if not serverPresence then + socket:close() + return false, -1 + end + return true, socket +end + +local function sendFile(fileName,destination,address,port,socket) + + local result, code = FTPCore.UploadFile(FileDetails,true,socket) +end + + + + + + + + +io.write("OpenFTP LITE started. Enter the server's address or EXIT: ") +local address +while type(address) ~= "number" and address ~= "EXIT" do + address = io.read() +end +if address == "EXIT" then + os.exit() +end +local FileDetails = { + address = address, + port = 98 +} +local success, result = SocketWithTimeout(FileDetails) +if not success then + io.stderr:write("Server Unreachable.") + os.exit() +end +io.write("Successfully Established Socket.\nSelect your mode:\nSEND RECEIVE DELETE EXIT") +local loop = true +while loop do + local response = io.read() + if response == "SEND" then + + elseif response == "RECEIVE" then + io.write("Enter path of file on server: /home/OpenFTP/") + FileDetails.file = io.read() + io.write("Enter local file destination (Where it will be downloaded to): ") + FileDetails.destination = io.read() + elseif response == "DELETE" then + + elseif response == "EXIT" then + loop = false + else + io.stderr:write("INVALID COMMAND") + end +end \ No newline at end of file From ae493a1c5322c8477c50380f0c58bcbdf5a12804 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 17:00:23 +0100 Subject: [PATCH 07/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 6e2191d..81ddd1e 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -36,7 +36,7 @@ local function GERTDataHandler(_,originAddress,connectionID,data) if fileSockets[originAddress] and connectionID == customPort then local information = fileSockets[originAddress]:read("-k") if type(information) == "table" then - if information[1] == "FTPREADYTORECEIVE" then + if information[1] == "FTPREADYTORECEIVE" then -- have it update the LIST file when done local FileDetails = { file = customPath .. fs.canonical(information[2]), address = originAddress, From ee4de7f58a2b14830f00c563063c7e4945d2698a Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 17:00:24 +0100 Subject: [PATCH 08/29] Update OpenFTP Client Program LITE.lua --- .../Beta/Beta 3/OpenFTP Client Program LITE.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 713261f..800f923 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -51,12 +51,24 @@ local loop = true while loop do local response = io.read() if response == "SEND" then + io.write("Enter destination of file on server: /home/OpenFTP/") + FileDetails.destination = io.read() + io.write("Enter local file path (Where it is): ") + FileDetails.file = io.read() + local FileData = fs.size(FileDetails.file) + local success, result = FTPCore.DownloadFile(FileDetails,FileData,result) + if success then + io.write("File Successfully Sent, return code ".. tostring(result)) + else + io.stderr:write("Error in download, Error Code " .. tostring(result)) + end elseif response == "RECEIVE" then io.write("Enter path of file on server: /home/OpenFTP/") FileDetails.file = io.read() io.write("Enter local file destination (Where it will be downloaded to): ") FileDetails.destination = io.read() + elseif response == "DELETE" then elseif response == "EXIT" then From ca81f29d18e1edaf19db2c3205cdb30551cdcdef Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 17:05:43 +0100 Subject: [PATCH 09/29] Update OpenFTP Client Program LITE.lua --- .../Beta 3/OpenFTP Client Program LITE.lua | 71 ++++++++++++++++--- 1 file changed, 61 insertions(+), 10 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 800f923..3873891 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -3,23 +3,68 @@ local fs = require("filesystem") local GERTi = require("GERTiClient") local event = require("event") +local SRL = require("serialization") local FTPCore = require("FTPCore") +--Error Codes +local INVALIDARGUMENT = 0 +local NOSOCKET = -1 +local TIMEOUT = -2 +local NOSPACE = -3 +local INTERRUPTED = -4 +local NOLOCALFILE = -5 +local UNKNOWN = -6 +local SERVERRESPONSEFALSE = -7 +local NOREMOTEFILE = -8 +local CANNOTCHANGE = -9 +local UPTODATE = -10 +local NOREMOTERESPONSE = -11 +local STUCK = -12 + +--Op Codes +local ALLGOOD = 0 +local DOWNLOADED = 1 +local ALREADYINSTALLED = 10 + + + + + local SocketWithTimeout = function (Details,Timeout) -- Timeout defaults to 5 seconds. Details must be a keyed array with the address under "address" and the port/CID under "port" local socket = GERTi.openSocket(Details.address,Details.port) local serverPresence = false if socket then serverPresence = event.pullFiltered(Timeout or 5,function (eventName,oAdd,CID) return eventName=="GERTConnectionID" and oAdd==Details.address and CID==Details.port end) end if not serverPresence then socket:close() - return false, -1 + return false, NOSOCKET end return true, socket end -local function sendFile(fileName,destination,address,port,socket) - - local result, code = FTPCore.UploadFile(FileDetails,true,socket) +local ProbeForSend = function (FileDetails, StepComplete, socket) + if not StepComplete then + return false, socket + end + local fileData = {} + fileData.insert(FileDetails.file) + fileData.insert(fs.size(FileDetails.file)) + socket:write("FTPSENDPROBE",SRL.serialize(FileDetails),SRL.serialize(fileData)) + local success = event.pullFiltered(5, function (eventName, iAdd, dAdd, CID) if (iAdd == FileDetails.address or dAdd == FileDetails.address) and (dAdd == FileDetails.port or CID == FileDetails.port) then if eventName == "GERTConnectionClose" or eventName == "GERTData" then return true end end return false end) + if success == "GERTConnectionClose" then + return false, INTERRUPTED + elseif not success then + return false, TIMEOUT + end + while #socket:read("-k") == 0 do + os.sleep() -- \\\\This might need a lengthening to 0.1, if OC is weird.\\\\ + end + local returnData = socket:read() + if returnData[1] == "FTPREADYTORECEIVE" then + return true, returnData + else + return false, returnData + end end @@ -28,7 +73,6 @@ end - io.write("OpenFTP LITE started. Enter the server's address or EXIT: ") local address while type(address) ~= "number" and address ~= "EXIT" do @@ -41,7 +85,7 @@ local FileDetails = { address = address, port = 98 } -local success, result = SocketWithTimeout(FileDetails) +local success, socket = SocketWithTimeout(FileDetails) if not success then io.stderr:write("Server Unreachable.") os.exit() @@ -55,19 +99,26 @@ while loop do FileDetails.destination = io.read() io.write("Enter local file path (Where it is): ") FileDetails.file = io.read() - local FileData = fs.size(FileDetails.file) - local success, result = FTPCore.DownloadFile(FileDetails,FileData,result) + + + local success, result = FTPCore.UploadFile(FileDetails,true,socket) if success then io.write("File Successfully Sent, return code ".. tostring(result)) else - io.stderr:write("Error in download, Error Code " .. tostring(result)) + io.stderr:write("Error in upload, Error Code " .. tostring(result)) end - elseif response == "RECEIVE" then io.write("Enter path of file on server: /home/OpenFTP/") FileDetails.file = io.read() io.write("Enter local file destination (Where it will be downloaded to): ") FileDetails.destination = io.read() + local FileData = fs.size(FileDetails.file) + local success, result = FTPCore.DownloadFile(FileDetails,FileData,socket) + if success then + io.write("File Successfully Downloaded, return code ".. tostring(result)) + else + io.stderr:write("Error in download, Error Code " .. tostring(result)) + end elseif response == "DELETE" then From bc5828159f9b1ca25c27433fa6ede416378af8ce Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 17:55:49 +0100 Subject: [PATCH 10/29] Bug testing --- .../Beta 3/OpenFTP Client Program LITE.lua | 21 ++++++++++++------- .../Beta 3/OpenFTP Server Program LITE.lua | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 3873891..08a4774 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -75,12 +75,13 @@ end io.write("OpenFTP LITE started. Enter the server's address or EXIT: ") local address -while type(address) ~= "number" and address ~= "EXIT" do +while type(tonumber(address)) ~= "number" and address ~= "EXIT" do address = io.read() end if address == "EXIT" then os.exit() end +address = tonumber(address) local FileDetails = { address = address, port = 98 @@ -90,7 +91,7 @@ if not success then io.stderr:write("Server Unreachable.") os.exit() end -io.write("Successfully Established Socket.\nSelect your mode:\nSEND RECEIVE DELETE EXIT") +io.write("Successfully Established Socket.\nSelect your mode:\nSEND RECEIVE DELETE EXIT\n") local loop = true while loop do local response = io.read() @@ -99,13 +100,16 @@ while loop do FileDetails.destination = io.read() io.write("Enter local file path (Where it is): ") FileDetails.file = io.read() - - - local success, result = FTPCore.UploadFile(FileDetails,true,socket) - if success then - io.write("File Successfully Sent, return code ".. tostring(result)) + local success, result = ProbeForSend(FileDetails,true,socket) + if not success then + io.stderr:write("The server did not respond correctly, error code: " .. tostring(result)) else - io.stderr:write("Error in upload, Error Code " .. tostring(result)) + local success, result = FTPCore.UploadFile(FileDetails,true,socket) + if success then + io.write("File Successfully Sent, return code ".. tostring(result)) + else + io.stderr:write("Error in upload, Error Code " .. tostring(result)) + end end elseif response == "RECEIVE" then io.write("Enter path of file on server: /home/OpenFTP/") @@ -124,6 +128,7 @@ while loop do elseif response == "EXIT" then loop = false + socket:close() else io.stderr:write("INVALID COMMAND") end diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 81ddd1e..dcd82a1 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -15,7 +15,7 @@ local fileSockets = {} local function CompleteSocket(_,originAddress,connectionID) if connectionID == customPort then - os.sleep() + os.sleep(0.5) fileSockets[originAddress] = GERTi.openSocket(originAddress,connectionID) end return true From 095cbad4851e4d6a03165d800aa22e543e057400 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 17:58:59 +0100 Subject: [PATCH 11/29] Update OpenFTP Client Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 08a4774..00b3127 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -47,8 +47,8 @@ local ProbeForSend = function (FileDetails, StepComplete, socket) return false, socket end local fileData = {} - fileData.insert(FileDetails.file) - fileData.insert(fs.size(FileDetails.file)) + table.insert(fileData,FileDetails.file) + table.insert(fileData,fs.size(FileDetails.file)) socket:write("FTPSENDPROBE",SRL.serialize(FileDetails),SRL.serialize(fileData)) local success = event.pullFiltered(5, function (eventName, iAdd, dAdd, CID) if (iAdd == FileDetails.address or dAdd == FileDetails.address) and (dAdd == FileDetails.port or CID == FileDetails.port) then if eventName == "GERTConnectionClose" or eventName == "GERTData" then return true end end return false end) if success == "GERTConnectionClose" then From 54594ab6f3c8ddab08a081e6eaa63014321f6494 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 18:01:20 +0100 Subject: [PATCH 12/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index dcd82a1..189d2f6 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -47,6 +47,11 @@ local function GERTDataHandler(_,originAddress,connectionID,data) local FileDetails = SRL.unserialize(information[2]) local FileData = SRL.unserialize(information[3]) local result, lastState = FTPCore.DownloadFile(FileDetails,FileData,fileSockets[originAddress]) + if result then + io.write(tostring(result) .. " " .. tostring(lastState) .. "\n") + else + io.stderr:write(tostring(lastState) .. "\n") + end end end end From f44eaa58dafaa6c2e23df6729ffab6271e413a4b Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 18:02:27 +0100 Subject: [PATCH 13/29] Update OpenFTP Client Program LITE.lua --- .../Beta/Beta 3/OpenFTP Client Program LITE.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 00b3127..839683b 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -102,13 +102,13 @@ while loop do FileDetails.file = io.read() local success, result = ProbeForSend(FileDetails,true,socket) if not success then - io.stderr:write("The server did not respond correctly, error code: " .. tostring(result)) + io.stderr:write("The server did not respond correctly, error code: " .. tostring(result) .. "\n") else local success, result = FTPCore.UploadFile(FileDetails,true,socket) if success then - io.write("File Successfully Sent, return code ".. tostring(result)) + io.write("File Successfully Sent, return code ".. tostring(result) .. "\n") else - io.stderr:write("Error in upload, Error Code " .. tostring(result)) + io.stderr:write("Error in upload, Error Code " .. tostring(result) .. "\n") end end elseif response == "RECEIVE" then @@ -119,9 +119,9 @@ while loop do local FileData = fs.size(FileDetails.file) local success, result = FTPCore.DownloadFile(FileDetails,FileData,socket) if success then - io.write("File Successfully Downloaded, return code ".. tostring(result)) + io.write("File Successfully Downloaded, return code ".. tostring(result) .. "\n") else - io.stderr:write("Error in download, Error Code " .. tostring(result)) + io.stderr:write("Error in download, Error Code " .. tostring(result) .. "\n") end elseif response == "DELETE" then @@ -130,6 +130,6 @@ while loop do loop = false socket:close() else - io.stderr:write("INVALID COMMAND") + io.stderr:write("INVALID COMMAND\n") end end \ No newline at end of file From 325971287cd8f5e3a237ad179122610aba5f866c Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 18:06:46 +0100 Subject: [PATCH 14/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 189d2f6..936100d 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -15,7 +15,7 @@ local fileSockets = {} local function CompleteSocket(_,originAddress,connectionID) if connectionID == customPort then - os.sleep(0.5) + os.sleep() fileSockets[originAddress] = GERTi.openSocket(originAddress,connectionID) end return true From 545a264a4399a269a7bb0c3461a280e59e2da199 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 18:14:45 +0100 Subject: [PATCH 15/29] Update OpenFTP Client Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 839683b..6a370e8 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -116,7 +116,7 @@ while loop do FileDetails.file = io.read() io.write("Enter local file destination (Where it will be downloaded to): ") FileDetails.destination = io.read() - local FileData = fs.size(FileDetails.file) + local FileData = 1 local success, result = FTPCore.DownloadFile(FileDetails,FileData,socket) if success then io.write("File Successfully Downloaded, return code ".. tostring(result) .. "\n") From 4a6796fa59f70874c16817ceb9b7fffb23bf53f6 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 18:14:48 +0100 Subject: [PATCH 16/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 936100d..e8c469f 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -33,7 +33,11 @@ local function CloseSocket(_, originAddress,destAddress) end local function GERTDataHandler(_,originAddress,connectionID,data) + print(1) + print(not(not(fileSockets[originAddress]))) + print(connectionID == customPort) if fileSockets[originAddress] and connectionID == customPort then + print(2) local information = fileSockets[originAddress]:read("-k") if type(information) == "table" then if information[1] == "FTPREADYTORECEIVE" then -- have it update the LIST file when done From 0fb5f87a6aab6897b405e716dc2f8b51369278c2 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 18:43:12 +0100 Subject: [PATCH 17/29] Update OpenFTP Server Program LITE.lua --- .../Beta/Beta 3/OpenFTP Server Program LITE.lua | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index e8c469f..91809d9 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -33,12 +33,8 @@ local function CloseSocket(_, originAddress,destAddress) end local function GERTDataHandler(_,originAddress,connectionID,data) - print(1) - print(not(not(fileSockets[originAddress]))) - print(connectionID == customPort) - if fileSockets[originAddress] and connectionID == customPort then - print(2) - local information = fileSockets[originAddress]:read("-k") + if fileSockets[originAddress] ~= nil and connectionID == customPort then + local information = fileSockets[originAddress]:read("-k")[1] if type(information) == "table" then if information[1] == "FTPREADYTORECEIVE" then -- have it update the LIST file when done local FileDetails = { @@ -51,11 +47,6 @@ local function GERTDataHandler(_,originAddress,connectionID,data) local FileDetails = SRL.unserialize(information[2]) local FileData = SRL.unserialize(information[3]) local result, lastState = FTPCore.DownloadFile(FileDetails,FileData,fileSockets[originAddress]) - if result then - io.write(tostring(result) .. " " .. tostring(lastState) .. "\n") - else - io.stderr:write(tostring(lastState) .. "\n") - end end end end From 0867101d48c6981c35c437507037a6001f16da78 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 19:11:55 +0100 Subject: [PATCH 18/29] Update OpenFTP Client Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 6a370e8..e179575 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -60,7 +60,7 @@ local ProbeForSend = function (FileDetails, StepComplete, socket) os.sleep() -- \\\\This might need a lengthening to 0.1, if OC is weird.\\\\ end local returnData = socket:read() - if returnData[1] == "FTPREADYTORECEIVE" then + if type(returnData[1]) == "table" and returnData[1][1] == "FTPREADYTORECEIVE" then return true, returnData else return false, returnData From 97871c29978f2b2e7907d9c21476a3e85b41ff87 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 19:12:21 +0100 Subject: [PATCH 19/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 91809d9..20fb782 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -37,6 +37,7 @@ local function GERTDataHandler(_,originAddress,connectionID,data) local information = fileSockets[originAddress]:read("-k")[1] if type(information) == "table" then if information[1] == "FTPREADYTORECEIVE" then -- have it update the LIST file when done + fileSockets[originAddress]:read() local FileDetails = { file = customPath .. fs.canonical(information[2]), address = originAddress, @@ -44,6 +45,7 @@ local function GERTDataHandler(_,originAddress,connectionID,data) } local result, lastState = FTPCore.UploadFile(FileDetails,true,fileSockets[originAddress]) -- I might do something with these outputs later elseif information[1] == "FTPSENDPROBE" then + fileSockets[originAddress]:read() local FileDetails = SRL.unserialize(information[2]) local FileData = SRL.unserialize(information[3]) local result, lastState = FTPCore.DownloadFile(FileDetails,FileData,fileSockets[originAddress]) @@ -60,6 +62,7 @@ local completeSocketListener = event.listen("GERTConnectionID",CompleteSocket) local closeSocketListener = event.listen("GERTConnectionClose",CloseSocket) local GERTDataHandlerListener = event.listen("GERTData",GERTDataHandler) + io.write("OpenFTP Beta 3 LITE has been successfully started.\nTo shut down the program, type EXIT, to run in background, type BACKGROUND.\nIf the io crashes, the program will continue running in the background.\nThe only way to stop the program after this is to either kill its processes, or reboot.\n") local response = true while response ~= "EXIT" and response ~= "BACKGROUND" do From 0bc3ded6839ecad62b9ebaf1e735eba17607c120 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 20:16:53 +0100 Subject: [PATCH 20/29] Update OpenFTP Client Program LITE.lua --- .../Beta 3/OpenFTP Client Program LITE.lua | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index e179575..8fb66f4 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -28,6 +28,7 @@ local DOWNLOADED = 1 local ALREADYINSTALLED = 10 +local PERMANENTADDRESS = nil -- Set this if you want to skip the dialogue @@ -73,15 +74,20 @@ end -io.write("OpenFTP LITE started. Enter the server's address or EXIT: ") -local address -while type(tonumber(address)) ~= "number" and address ~= "EXIT" do - address = io.read() -end -if address == "EXIT" then - os.exit() +io.write("OpenFTP LITE started.") +local address = PERMANENTADDRESS +if address == nil then + io.write(" Enter the server's address or EXIT: ") + while type(tonumber(address)) ~= "number" and address ~= "EXIT" do + address = io.read() + end + if address == "EXIT" then + os.exit() + end + address = tonumber(address) +else + io.write("\n") end -address = tonumber(address) local FileDetails = { address = address, port = 98 @@ -102,7 +108,7 @@ while loop do FileDetails.file = io.read() local success, result = ProbeForSend(FileDetails,true,socket) if not success then - io.stderr:write("The server did not respond correctly, error code: " .. tostring(result) .. "\n") + io.stderr:write("The server did not respond correctly, error code: " .. SRL.serialize(result,true) .. "\n") else local success, result = FTPCore.UploadFile(FileDetails,true,socket) if success then From 98cf41038604690082b85c84ec142ac878172cb6 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 20:16:56 +0100 Subject: [PATCH 21/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 20fb782..6005a6f 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -47,6 +47,7 @@ local function GERTDataHandler(_,originAddress,connectionID,data) elseif information[1] == "FTPSENDPROBE" then fileSockets[originAddress]:read() local FileDetails = SRL.unserialize(information[2]) + FileDetails.address = originAddress local FileData = SRL.unserialize(information[3]) local result, lastState = FTPCore.DownloadFile(FileDetails,FileData,fileSockets[originAddress]) end From 923f64e14aba7f39ed294e675500ca369f4f4d04 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 21:35:28 +0100 Subject: [PATCH 22/29] Added list, mkdir and delete --- .../Beta 3/OpenFTP Client Program LITE.lua | 68 ++++++++++++++++--- .../Beta 3/OpenFTP Server Program LITE.lua | 28 +++++++- 2 files changed, 86 insertions(+), 10 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index 8fb66f4..c1a4969 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -5,7 +5,7 @@ local GERTi = require("GERTiClient") local event = require("event") local SRL = require("serialization") -local FTPCore = require("FTPCore") +local FTPCore = require("FTPCore") -- Dependency --Error Codes local INVALIDARGUMENT = 0 @@ -31,7 +31,7 @@ local ALREADYINSTALLED = 10 local PERMANENTADDRESS = nil -- Set this if you want to skip the dialogue - +-- Functions start here local SocketWithTimeout = function (Details,Timeout) -- Timeout defaults to 5 seconds. Details must be a keyed array with the address under "address" and the port/CID under "port" local socket = GERTi.openSocket(Details.address,Details.port) local serverPresence = false @@ -73,7 +73,7 @@ end - +-- IO starts here io.write("OpenFTP LITE started.") local address = PERMANENTADDRESS if address == nil then @@ -97,7 +97,7 @@ if not success then io.stderr:write("Server Unreachable.") os.exit() end -io.write("Successfully Established Socket.\nSelect your mode:\nSEND RECEIVE DELETE EXIT\n") +io.write("Successfully Established Socket.\nSelect your mode:\nSEND RECEIVE DELETE MKDIR EXIT\n") local loop = true while loop do local response = io.read() @@ -124,14 +124,64 @@ while loop do FileDetails.destination = io.read() local FileData = 1 local success, result = FTPCore.DownloadFile(FileDetails,FileData,socket) - if success then - io.write("File Successfully Downloaded, return code ".. tostring(result) .. "\n") + if success or result == 0 then + io.write("File successfully downloaded, return code ".. tostring(result) .. "\n") else - io.stderr:write("Error in download, Error Code " .. tostring(result) .. "\n") + io.stderr:write("Error in download, error code " .. tostring(result) .. "\n") end - elseif response == "DELETE" then - + io.write("Please enter the file or directory you wish to delete:\n/home/OpenFTP/") + local path = io.read() + io.write("Are you sure? This is permanent. Type CONFIRM to confirm.\n") + local answer = io.read() + if answer == "CONFIRM" then + io.write("CONFIRMED\n") + socket:write("FTPDELETE",path) + local success = event.pullFiltered(5, function (eventName, iAdd, dAdd, CID) if (iAdd == FileDetails.address or dAdd == FileDetails.address) and (dAdd == FileDetails.port or CID == FileDetails.port) then if eventName == "GERTConnectionClose" or eventName == "GERTData" then return true end end return false end) + if success == "GERTConnectionClose" then + return false, INTERRUPTED + elseif not success then + return false, TIMEOUT + end + while #socket:read("-k") == 0 do + os.sleep() -- \\\\This might need a lengthening to 0.1, if OC is weird.\\\\ + end + local information = socket:read()[1] + if type(information) == "table" then + if information[1] == nil then + io.stderr:write("Unable to delete entry at path, error code: " .. tostring(information[2]) .. "\n") + else + io.write("Successfully Deleted.\n") + end + else + if information == true then + io.write("File/Folder successfully deleted.\n") + else + io.stderr:write("Error during operation, no details provided.\n") + end + end + else + io.write("Aborted.\n") + end + elseif response == "MKDIR" then + io.write("Enter path of new directory: /home/OpenFTP/") + local path = io.read() + socket:write("FTPNEWDIR",path) + local success = event.pullFiltered(5, function (eventName, iAdd, dAdd, CID) if (iAdd == FileDetails.address or dAdd == FileDetails.address) and (dAdd == FileDetails.port or CID == FileDetails.port) then if eventName == "GERTConnectionClose" or eventName == "GERTData" then return true end end return false end) + if success == "GERTConnectionClose" then + return false, INTERRUPTED + elseif not success then + return false, TIMEOUT + end + while #socket:read("-k") == 0 do + os.sleep() -- \\\\This might need a lengthening to 0.1, if OC is weird.\\\\ + end + local information = socket:read()[1] + if information == true then + io.write("Successfully created directory\n") + else + io.stderr:write("Unable to create directory at path, error code: " .. tostring(information[2]) .. "\n") + end elseif response == "EXIT" then loop = false socket:close() diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index 6005a6f..e0cbbbb 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -32,11 +32,23 @@ local function CloseSocket(_, originAddress,destAddress) return true end +local function updateListFile(directory) + local listString = "" + for v in fs.list(directory) do + if v ~= "list" then + listString = listString .. v .. "\n" + end + end + local listFile = io.open(directory .. "list", "w") + listFile:write(listString) + listFile:close() +end + local function GERTDataHandler(_,originAddress,connectionID,data) if fileSockets[originAddress] ~= nil and connectionID == customPort then local information = fileSockets[originAddress]:read("-k")[1] if type(information) == "table" then - if information[1] == "FTPREADYTORECEIVE" then -- have it update the LIST file when done + if information[1] == "FTPREADYTORECEIVE" then fileSockets[originAddress]:read() local FileDetails = { file = customPath .. fs.canonical(information[2]), @@ -44,12 +56,26 @@ local function GERTDataHandler(_,originAddress,connectionID,data) port = customPort } local result, lastState = FTPCore.UploadFile(FileDetails,true,fileSockets[originAddress]) -- I might do something with these outputs later + local directory = fs.path(FileDetails.file) + updateListFile(directory) elseif information[1] == "FTPSENDPROBE" then fileSockets[originAddress]:read() local FileDetails = SRL.unserialize(information[2]) FileDetails.address = originAddress local FileData = SRL.unserialize(information[3]) local result, lastState = FTPCore.DownloadFile(FileDetails,FileData,fileSockets[originAddress]) + elseif information[1] == "FTPDELETE" then + local directory = customPath .. fs.canonical(information[2]) + fileSockets[originAddress]:read() + local success, result = fs.remove(directory) + fileSockets[originAddress]:write(success,result) + updateListFile(fs.path(directory)) + elseif information[1] == "FTPNEWDIR" then + fileSockets[originAddress]:read() + local directory = customPath .. fs.canonical(information[2]) + local success, result = fs.makeDirectory(directory) + fileSockets[originAddress]:write(success,result) + updateListFile(fs.path(directory)) end end end From 9ea89611650845a7fb0921760ece3ebf4492a2f0 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 21:41:33 +0100 Subject: [PATCH 23/29] Update OpenFTP Client Program LITE.lua --- .../Beta 3/OpenFTP Client Program LITE.lua | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua index c1a4969..a16c186 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua @@ -71,8 +71,6 @@ end - - -- IO starts here io.write("OpenFTP LITE started.") local address = PERMANENTADDRESS @@ -120,14 +118,25 @@ while loop do elseif response == "RECEIVE" then io.write("Enter path of file on server: /home/OpenFTP/") FileDetails.file = io.read() - io.write("Enter local file destination (Where it will be downloaded to): ") - FileDetails.destination = io.read() - local FileData = 1 - local success, result = FTPCore.DownloadFile(FileDetails,FileData,socket) - if success or result == 0 then - io.write("File successfully downloaded, return code ".. tostring(result) .. "\n") + if fs.name(FileDetails.file) == "list" then + FileDetails.destination = "/tmp/list" + local FileData = 1 + local success, result = FTPCore.DownloadFile(FileDetails,FileData,socket) + if success or result == 0 then + os.execute("edit /tmp/list") + else + io.stderr:write("Could not retrieve list file\n") + end else - io.stderr:write("Error in download, error code " .. tostring(result) .. "\n") + io.write("Enter local file destination (Where it will be downloaded to): ") + FileDetails.destination = io.read() + local FileData = 1 + local success, result = FTPCore.DownloadFile(FileDetails,FileData,socket) + if success or result == 0 then + io.write("File successfully downloaded, return code ".. tostring(result) .. "\n") + else + io.stderr:write("Error in download, error code " .. tostring(result) .. "\n") + end end elseif response == "DELETE" then io.write("Please enter the file or directory you wish to delete:\n/home/OpenFTP/") From b4231ad2d6e7d7dd53f1ecf09002952cc869f716 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 21:42:31 +0100 Subject: [PATCH 24/29] Update OpenFTP Server Program LITE.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua index e0cbbbb..367fd83 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua @@ -10,6 +10,9 @@ local FTPCore = require("FTPCore") local customPath = "/home/OpenFTP/" +if not fs.isDirectory(customPath) then + fs.makeDirectory(customPath) +end local customPort = 98 local fileSockets = {} From a82e2a4588115aa4bde8c4ccfece616e7d7b809f Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 21:50:02 +0100 Subject: [PATCH 25/29] Reordering files + readme --- .../OpenFTP Client Program LITE.lua | 0 .../OpenFTP Server Program LITE.lua | 0 Programs/OpenFTP/Beta/Beta 3/README.md | 16 ++++++++++++++++ 3 files changed, 16 insertions(+) rename Programs/OpenFTP/Beta/Beta 3/{ => OpenFTP LITE}/OpenFTP Client Program LITE.lua (100%) rename Programs/OpenFTP/Beta/Beta 3/{ => OpenFTP LITE}/OpenFTP Server Program LITE.lua (100%) create mode 100644 Programs/OpenFTP/Beta/Beta 3/README.md diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Client Program LITE.lua similarity index 100% rename from Programs/OpenFTP/Beta/Beta 3/OpenFTP Client Program LITE.lua rename to Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Client Program LITE.lua diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Server Program LITE.lua similarity index 100% rename from Programs/OpenFTP/Beta/Beta 3/OpenFTP Server Program LITE.lua rename to Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Server Program LITE.lua diff --git a/Programs/OpenFTP/Beta/Beta 3/README.md b/Programs/OpenFTP/Beta/Beta 3/README.md new file mode 100644 index 0000000..c775ba2 --- /dev/null +++ b/Programs/OpenFTP/Beta/Beta 3/README.md @@ -0,0 +1,16 @@ +# **OpenFTP Beta 3.0** + +Thank you for choosing **OpenFTP**! This file details installation options for all variants of **OpenFTP** Beta 3.0. + +## Dependencies +All variants of OpenFTP Beta 3.0 require `FTPCore.lua`, which can be found in the [GERTi modules repository](https://github.com/GlobalEmpire/GERT/tree/master/GERTi/Modules). We recommend using GUS to stay updated + +## OpenFTP LITE +You will find both files under the LITE folder next to this file. +The installation procedure is as follows: +- Ensure `GERTiClient.lua` and `FTPCore.lua` are installed on all machines involved. +- Install + + +## OpenFTP FULL +W.I.P \ No newline at end of file From f3c41e592f9c730dc06c1049ac83f71b47936db4 Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 21:51:47 +0100 Subject: [PATCH 26/29] Rename + readme --- .../{OpenFTP Client Program LITE.lua => OpenFTPLITE-Client.lua} | 0 .../{OpenFTP Server Program LITE.lua => OpenFTPLITE-Server.lua} | 0 Programs/OpenFTP/Beta/Beta 3/README.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/{OpenFTP Client Program LITE.lua => OpenFTPLITE-Client.lua} (100%) rename Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/{OpenFTP Server Program LITE.lua => OpenFTPLITE-Server.lua} (100%) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Client Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Client.lua similarity index 100% rename from Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Client Program LITE.lua rename to Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Client.lua diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Server Program LITE.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Server.lua similarity index 100% rename from Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTP Server Program LITE.lua rename to Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Server.lua diff --git a/Programs/OpenFTP/Beta/Beta 3/README.md b/Programs/OpenFTP/Beta/Beta 3/README.md index c775ba2..a40525c 100644 --- a/Programs/OpenFTP/Beta/Beta 3/README.md +++ b/Programs/OpenFTP/Beta/Beta 3/README.md @@ -9,7 +9,7 @@ All variants of OpenFTP Beta 3.0 require `FTPCore.lua`, which can be found in th You will find both files under the LITE folder next to this file. The installation procedure is as follows: - Ensure `GERTiClient.lua` and `FTPCore.lua` are installed on all machines involved. -- Install +- Install `OpenFTPLITE-SERVER.lua` onto the server device. Edit the file and modify `customPath` (line 12) if you wish to have a different path. ## OpenFTP FULL From 760fb56267bec3dea99430e87a34b5c03a5a435e Mon Sep 17 00:00:00 2001 From: leothehero Date: Mon, 7 Feb 2022 21:58:45 +0100 Subject: [PATCH 27/29] Update README.md --- Programs/OpenFTP/Beta/Beta 3/README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Programs/OpenFTP/Beta/Beta 3/README.md b/Programs/OpenFTP/Beta/Beta 3/README.md index a40525c..29a3a5a 100644 --- a/Programs/OpenFTP/Beta/Beta 3/README.md +++ b/Programs/OpenFTP/Beta/Beta 3/README.md @@ -7,10 +7,17 @@ All variants of OpenFTP Beta 3.0 require `FTPCore.lua`, which can be found in th ## OpenFTP LITE You will find both files under the LITE folder next to this file. -The installation procedure is as follows: -- Ensure `GERTiClient.lua` and `FTPCore.lua` are installed on all machines involved. -- Install `OpenFTPLITE-SERVER.lua` onto the server device. Edit the file and modify `customPath` (line 12) if you wish to have a different path. +> Ensure `GERTiClient.lua` and `FTPCore.lua` are installed on all machines involved. +The installation procedure for the server is as follows: +- Install `OpenFTPLITE-Server.lua` onto the server device. We recommend leaving it the root directory. + - Edit the file and modify `customPath` (line 12) if you wish to have a different file storage location. +- Run the program. The server application is now fully configured and operational. + +The installation procedure for all clients is as follows: +- Install `OpenFTPLITE-Client.lua` onto each client device. We recommend putting it under `/bin` with the file name `OpenFTP.lua`. It is not necessary to have both the LITE and FULL version of OpenFTP installed on one device, as the FULL version is capable of interfacing with the LITE version. + - Edit the file and modify `PERMANENTADDRESS` (line 31) to bypass the server selection dialogue at startup. +- Run the program. The client application is now fully functional. ## OpenFTP FULL W.I.P \ No newline at end of file From e0959b4d1aac15af06789f6168a5c8d048fbdd5d Mon Sep 17 00:00:00 2001 From: leothehero Date: Tue, 8 Feb 2022 16:50:54 +0100 Subject: [PATCH 28/29] Update OpenFTPLITE-Server.lua Bugfixes --- .../OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Server.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Server.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Server.lua index 367fd83..4355174 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Server.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Server.lua @@ -65,8 +65,11 @@ local function GERTDataHandler(_,originAddress,connectionID,data) fileSockets[originAddress]:read() local FileDetails = SRL.unserialize(information[2]) FileDetails.address = originAddress + FileDetails.destination = customPath .. fs.canonical(FileDetails.destination) local FileData = SRL.unserialize(information[3]) local result, lastState = FTPCore.DownloadFile(FileDetails,FileData,fileSockets[originAddress]) + local directory = fs.path(FileDetails.destination) + updateListFile(directory) elseif information[1] == "FTPDELETE" then local directory = customPath .. fs.canonical(information[2]) fileSockets[originAddress]:read() From 7693797717739146afa88e6865f1230c5b0553e4 Mon Sep 17 00:00:00 2001 From: leothehero Date: Wed, 9 Feb 2022 21:57:58 +0100 Subject: [PATCH 29/29] Update OpenFTPLITE-Client.lua --- Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Client.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Client.lua b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Client.lua index a16c186..7de386f 100644 --- a/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Client.lua +++ b/Programs/OpenFTP/Beta/Beta 3/OpenFTP LITE/OpenFTPLITE-Client.lua @@ -99,6 +99,7 @@ io.write("Successfully Established Socket.\nSelect your mode:\nSEND RECEIVE DELE local loop = true while loop do local response = io.read() + response = response:upper() if response == "SEND" then io.write("Enter destination of file on server: /home/OpenFTP/") FileDetails.destination = io.read()