Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[ Fileserver - Senders call for a file update on the machine.
- -- This machine responds with the files from within the
- -- File server folder.
- --]]
- -- Local Vars
- local serverdir = "\\server\\"
- local clientdir = "\\client\\"
- -- setup rednet
- local sModemSide = nil
- for n,sSide in ipairs(rs.getSides()) do
- if peripheral.getType(sSide) == "modem" then
- sModemSide = sSide
- break
- end
- end
- if sModemSide == nil then
- print("No wireless modem attached")
- return
- end
- rednet.open(sModemSide)
- -- end setup rednet
- -- *************
- -- * Functions *
- -- *************
- -- Sending file function
- local function sendFile(filename, computerID, filedir)
- local file = filedir .. filename
- if not fs.exists(file) or fs.isDir(file) then
- print("File can't be sent!")
- print("It is either non existant or is a directory!")
- return false
- end
- computerID = tonumber(computerID)
- local sr = fs.open(file, "r")
- print("Connecting")
- while true do
- rednet.send(computerID, "bt.con")
- os.startTimer(1)
- local e,p1,p2,p3 = os.pullEvent()
- if e == "rednet_message" then
- local id,msg = p1,p2
- if msg == "bt.acc" then
- print("connected!")
- break
- end
- end
- end
- sleep(0.8)
- rednet.send(computerID, "bt.fn:" .. filename)
- sleep(0.5)
- print("Sending...")
- local data
- --while true do
- data = textutils.serialize(sr.readAll())
- print (data)
- -- if data == nil then
- -- break
- -- end
- rednet.send(computerID, "bt.file:" .. data)
- sleep(0.8)
- --end
- rednet.send(computerID, "bt.done")
- print("File sent!")
- end
- -- Check if folder exists --
- function FolderExists(strFolderName)
- local fileHandle = fs.isDir(strFolderName)
- if fileHandle == false then
- return false
- else
- return true
- end
- end
- -- function get Dir listing
- function Dirlist(folder)
- local list = fs.list(folder)
- return list
- end
- -- Sending of Programs funct
- local args = {}
- function Sendprogs( list, directory, cmpId, ... )
- args = ( ... )
- if type(list) ~= "table" then
- return false
- else
- for i = 1,#list do
- err = sendFile(list[i], cmpId)
- end
- end
- end
- -- one time grab of the directory on boot up
- -- Main program
- while true do
- id,msg = "",""
- id, msg = rednet.receive(0.8)
- if msg == "update_client" then
- list = Dirlist(clientdir)
- print("Client update starting")
- for i = 1,#list do
- sendFile(list[i], id, clientdir)
- end
- elseif msg == "update_server" then
- list = Dirlist(serverdir)
- print("Server update starting")
- for i = 1,#list do
- sendFile(list[i], id, serverdir)
- end
- end
- rednet.send(id, "bt.eol")
- end
- --[[
- err = Sendprogs( list, filedir, cmpId )
- --]]
- -- EOF.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement