Streetboy_xD

File Transfer Modem - TekkitLite

May 1st, 2016
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.37 KB | None | 0 0
  1. function main()
  2.  
  3. -- *************************************
  4. -- * Hier muss das Hauptprogramm rein! *
  5. -- * Put your main program in here! *
  6. -- *************************************
  7.  
  8. while true do
  9.  
  10. sleep(1)
  11.  
  12. end
  13.  
  14. end
  15.  
  16. function transferModule()
  17.  
  18. --**************************
  19. --* Standart Einstellungen *
  20. --* Default Settings *
  21. --**************************
  22.  
  23. local pcName = "HOMEPC"
  24. local pcPass = ""
  25. local passActivated = false
  26. local allowedIDs = {}
  27. local onlyAllowedID = false
  28.  
  29. --**********************************
  30. --* Hier nichts ändern! *
  31. --* Don't change anything below! *
  32. --**********************************
  33.  
  34. local allowedPCs = {}
  35. checked = false
  36. accessAllowed = false
  37.  
  38. while true do
  39.  
  40. id, message, range = rednet.receive()
  41.  
  42. if onlyAllowedID then
  43.  
  44. for _, v in pairs(allowedIDs) do
  45.  
  46. if id == v then
  47.  
  48. accessAllowed = true
  49. break
  50.  
  51. end
  52.  
  53. end
  54.  
  55. end
  56.  
  57. if not onlyAllowedID or accessAllowed then
  58.  
  59. if message == "$CHECK_COMPATIBLE_PCS" then
  60.  
  61. check_message = "$FIRST"
  62.  
  63. writeToLog("\(\'"..id.."\'\) spottet you.\n")
  64.  
  65. while checked == false and check_message ~= nil do
  66. if passActivated then
  67. rednet.send(id, "$COMPATIBLEPASS;" .. pcName)
  68. else
  69. rednet.send(id, "$COMPATIBLE;" .. pcName)
  70. end
  71.  
  72. a, check_message, range = rednet.receive(0.5)
  73.  
  74. if check_message == "$GOTYA" then
  75. checked = true
  76. end
  77.  
  78. end
  79.  
  80. checked = false
  81.  
  82. elseif string.len(message) > 4 then
  83.  
  84. if string.sub(message, 1, 4) == "$DIR" then
  85.  
  86. if passActivated then
  87.  
  88. if not searchInTable(id, allowedPCs) then
  89.  
  90. rednet.send(id, "$PASS")
  91.  
  92. writeToLog("\(\'"..id.."\'\) tried to login.\n")
  93.  
  94. idC, password, range = rednet.receive(20)
  95.  
  96. if password ~= nil then
  97.  
  98. if string.find(password.."", "$PASS", 1, true) then
  99.  
  100. password = string.sub(password, string.find(password.."", ";") + 1, -1)
  101.  
  102. if password == pcPass then
  103.  
  104. table.insert(allowedPCs, id)
  105.  
  106. writeToLog("\(\'"..id.."\'\) logged in.\n")
  107.  
  108. else
  109.  
  110. rednet.send(idC, "DENIED")
  111.  
  112. end
  113.  
  114. end
  115.  
  116. end
  117.  
  118. end
  119.  
  120. end
  121.  
  122. if not passActivated or searchInTable(id, allowedPCs) then
  123.  
  124. programMessage = {}
  125. progs = {}
  126. dirs = {}
  127. message = string.gsub(message, pcName, "")
  128. path = string.sub(message, string.find(message.."", ";") + 1, -1)
  129.  
  130. for i,v in pairs(fs.list(path)) do
  131.  
  132. if fs.isDir(path.."/"..v) and v ~= "rom" then
  133.  
  134. table.insert(dirs, v)
  135.  
  136. elseif v ~= "rom" then
  137.  
  138. table.insert(progs, v)
  139.  
  140. end
  141.  
  142. end
  143.  
  144. table.insert(programMessage, dirs)
  145. table.insert(programMessage, progs)
  146.  
  147. rednet.send(id, "$AVAIDIR;" .. textutils.serialize(programMessage))
  148.  
  149. else
  150.  
  151. rednet.send(id, "DENIED")
  152.  
  153. end
  154.  
  155. elseif string.len(message) > 12 then
  156.  
  157. if not passActivated or searchInTable(id, allowedPCs) then
  158.  
  159. if string.sub(message, 1, 12) == "$GETPROGCODE" then
  160.  
  161. message = string.gsub(message, "/"..pcName, "")
  162.  
  163. file = fs.open(string.sub(message, string.find(message.."", ";") + 1, -1), "r")
  164. tempProgCode = file.readAll()
  165. file.close()
  166.  
  167. writeToLog("\(\'"..id.."\'\) has uploaded ".. string.sub(message, string.find(message.."", ";") + 1, -1) ..".\n")
  168.  
  169. rednet.send(id, "$PROGCODE;"..tempProgCode)
  170.  
  171. end
  172.  
  173. end
  174.  
  175. end
  176.  
  177. elseif string.len(message) > 12 then
  178.  
  179. if not passActivated or searchInTable(id, allowedPCs) then
  180.  
  181. if string.sub(message, 1, 11) == "$GETPROGCODE" then
  182.  
  183. message = string.gsub(message, "/"..pcName, "")
  184.  
  185. fs.delete(string.sub(message, string.find(message.."", ";") + 1, -1))
  186.  
  187. writeToLog("\(\'"..id.."\'\) has deleted ".. string.sub(message, string.find(message.."", ";") + 1, -1) ..".\n")
  188.  
  189. end
  190.  
  191. end
  192.  
  193. else
  194.  
  195. rednet.send(id, "DENIED")
  196.  
  197. end
  198.  
  199. end
  200.  
  201. end
  202.  
  203. end
  204.  
  205. function searchInTable(value, table)
  206.  
  207. for _, v in pairs(table) do
  208. if value == v then
  209. return true
  210. end
  211. end
  212.  
  213. return false
  214.  
  215. end
  216.  
  217. function writeToLog(logtext)
  218.  
  219. file = fs.open("log.txt", "a")
  220. file.writeLine(logtext)
  221. file.close()
  222.  
  223. end
  224.  
  225. function transferModuleCheckRednet()
  226.  
  227. local checkStatus = false;
  228. local modemPresent = false;
  229.  
  230. tekkitLite = {
  231. "top",
  232. "bottom",
  233. "left",
  234. "right",
  235. "front",
  236. "back"
  237. }
  238.  
  239. while true do
  240.  
  241. for i, side in pairs(tekkitLite) do
  242.  
  243. if (peripheral.getType(side) == "modem" and checkStatus == false) then
  244.  
  245. rednet.open(side);
  246. modemPresent = true;
  247. checkStatus = true;
  248.  
  249. end
  250.  
  251. if (peripheral.getType(side) ~= "modem" and checkStatus == false) then
  252.  
  253. modemPresent = false;
  254.  
  255. end
  256.  
  257. end
  258.  
  259. modemPresent = false;
  260. checkStatus = false;
  261.  
  262. sleep(2);
  263.  
  264. end
  265.  
  266. end
  267.  
  268. parallel.waitForAny(transferModule, transferModuleCheckRednet, main)
Advertisement
Add Comment
Please, Sign In to add comment