Advertisement
KoopaGaming

fileserver

May 27th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. --[[ Fileserver - Senders call for a file update on the machine.
  2. -- This machine responds with the files from within the
  3. -- File server folder.
  4. --]]
  5. -- Local Vars
  6. local serverdir = "\\server\\"
  7. local clientdir = "\\client\\"
  8.  
  9. -- setup rednet
  10. local sModemSide = nil
  11. for n,sSide in ipairs(rs.getSides()) do
  12. if peripheral.getType(sSide) == "modem" then
  13. sModemSide = sSide
  14. break
  15. end
  16. end
  17. if sModemSide == nil then
  18. print("No wireless modem attached")
  19. return
  20. end
  21. rednet.open(sModemSide)
  22. -- end setup rednet
  23.  
  24. -- *************
  25. -- * Functions *
  26. -- *************
  27. -- Sending file function
  28. local function sendFile(filename, computerID, filedir)
  29. local file = filedir .. filename
  30. if not fs.exists(file) or fs.isDir(file) then
  31. print("File can't be sent!")
  32. print("It is either non existant or is a directory!")
  33. return false
  34. end
  35.  
  36. computerID = tonumber(computerID)
  37.  
  38. local sr = fs.open(file, "r")
  39. print("Connecting")
  40.  
  41. while true do
  42. rednet.send(computerID, "bt.con")
  43. os.startTimer(1)
  44. local e,p1,p2,p3 = os.pullEvent()
  45. if e == "rednet_message" then
  46. local id,msg = p1,p2
  47. if msg == "bt.acc" then
  48. print("connected!")
  49. break
  50. end
  51. end
  52. end
  53.  
  54. sleep(0.8)
  55. rednet.send(computerID, "bt.fn:" .. filename)
  56.  
  57. sleep(0.5)
  58.  
  59. print("Sending...")
  60. local data
  61. --while true do
  62. data = textutils.serialize(sr.readAll())
  63. print (data)
  64. -- if data == nil then
  65. -- break
  66. -- end
  67. rednet.send(computerID, "bt.file:" .. data)
  68. sleep(0.8)
  69. --end
  70. rednet.send(computerID, "bt.done")
  71. print("File sent!")
  72. end
  73.  
  74. -- Check if folder exists --
  75. function FolderExists(strFolderName)
  76. local fileHandle = fs.isDir(strFolderName)
  77. if fileHandle == false then
  78. return false
  79. else
  80. return true
  81. end
  82. end
  83. -- function get Dir listing
  84. function Dirlist(folder)
  85. local list = fs.list(folder)
  86. return list
  87. end
  88. -- Sending of Programs funct
  89. local args = {}
  90. function Sendprogs( list, directory, cmpId, ... )
  91. args = ( ... )
  92. if type(list) ~= "table" then
  93. return false
  94. else
  95. for i = 1,#list do
  96. err = sendFile(list[i], cmpId)
  97. end
  98. end
  99.  
  100. end
  101. -- one time grab of the directory on boot up
  102. -- Main program
  103. while true do
  104. id,msg = "",""
  105. id, msg = rednet.receive(0.8)
  106. if msg == "update_client" then
  107. list = Dirlist(clientdir)
  108. print("Client update starting")
  109. for i = 1,#list do
  110. sendFile(list[i], id, clientdir)
  111. end
  112. elseif msg == "update_server" then
  113. list = Dirlist(serverdir)
  114. print("Server update starting")
  115. for i = 1,#list do
  116. sendFile(list[i], id, serverdir)
  117. end
  118. end
  119. rednet.send(id, "bt.eol")
  120. end
  121. --[[
  122.  
  123. err = Sendprogs( list, filedir, cmpId )
  124. --]]
  125. -- EOF.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement