Streetboy_xD

[Computercraft] File Transfer Client 3.0

Jan 13th, 2016
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.84 KB | None | 0 0
  1. --**************************
  2. --* Standart Einstellungen *
  3. --* Default Settings *
  4. --**************************
  5.  
  6. language = "$GER" -- AVAIABLE LANGUAGES: $GER, $ENG
  7. id = 0 -- ServerID
  8. compatiblePCMode = true -- Verbindung mit anderen PCs möglich? / Connection to other computer?
  9.  
  10. --***********************
  11. --* Farben / Colors *
  12. --***********************
  13.  
  14. color = colors.lightGray -- Farbe der Leiste / Barcolor
  15. coloritems = colors.white -- Farbe der Felder / Fieldcolor
  16. textcolor = colors.gray -- Farbe des Textes / Textcolor
  17.  
  18. -- Items
  19.  
  20. pcColor = colors.orange -- Textfarbe der ungesicherten Computer / Textcolor unsecured pcs
  21. pcPWColor = colors.red -- Textfarbe der gesicherten Computer / Textcolor secured pcs
  22. folderColor = colors.blue -- Textfarbe der Ordner / Textcolor folder
  23. programColor = colors.gray -- Textfarbe der Programme / Textcolor programs
  24. secFilesBackground = colors.green -- Hintergrundfarbe der Gesicherten Daten / Backgroundcolor secured files
  25.  
  26. --**********************************
  27. --* Hier nichts ändern! *
  28. --* Don't change anything below! *
  29. --**********************************
  30.  
  31. secureAccess = false
  32. accessOnComputer = false
  33. computerIDAccessing = 0
  34.  
  35. startAProg = false
  36. progToStart = ""
  37.  
  38. extComputerProgs = {}
  39. extComputerDirs = {}
  40.  
  41. minnumber = 2
  42. maxnumber = 18
  43. minnum = 2
  44. maxnum = 18
  45. timeout = 0.5
  46. downloadList = {}
  47.  
  48. ItemDownloadVisible = 2
  49. ItemDownloadInvisible = 2
  50. y = 2
  51. visible = 2
  52. invisible = 2
  53. items = ";"
  54. listedPrograms = {}
  55. downloadList = {}
  56.  
  57. -- *********************
  58.  
  59. function tr(tString, lang)
  60.  
  61. local GER = {
  62. ["$DOWNLOADS"] = "Downloads",
  63. ["$SECURED_FILES"] = "Gesicherte Datein",
  64. ["$FOLDER"] = "Ordner",
  65. ["$CHANGE_FOLDER"] = "Ordner waehlen",
  66. ["$LOGOUT"] = "Ausloggen",
  67. ["$SECURITY_ACCESS"] = "Sicherheitszugriff",
  68. ["$USERNAME"] = "Username",
  69. ["$PASSWORD"] = "Passwort",
  70. ["$SERVER_PROBLEM"] = "Keine Verbindung zum Server",
  71. ["$ACCESS_DENIED"] = "Zugriff verweigert",
  72. ["$SAVE"] = " Speichern ",
  73. ["$RUN"] = " Programm starten ",
  74. ["$EDIT"] = " Editieren ",
  75. ["$CANT_CONNECT"] = "Keine Verbindung",
  76. ["$TO_SERVER"] = "zum Server",
  77. ["$DOWNLOAD"] = " Download ",
  78. ["$DOWNLOAD_TOFOLDER"] = " Download in Ordner ",
  79. ["$DELETE"] = " Loeschen ",
  80. ["$SUCCESS_DOWNLOAD"] = "Erfolgreich heruntergeladen",
  81. ["$ALREADY_EXIST"] = "Datei existiert bereits!",
  82. }
  83.  
  84. local ENG = {
  85. ["$DOWNLOADS"] = "Downloads",
  86. ["$SECURED_FILES"] = "Secured Files",
  87. ["$FOLDER"] = "Folder",
  88. ["$CHANGE_FOLDER"] = "Change Folder",
  89. ["$LOGOUT"] = "Logout",
  90. ["$SECURITY_ACCESS"] = "Security Access",
  91. ["$USERNAME"] = "Username",
  92. ["$PASSWORD"] = "Password",
  93. ["$SERVER_PROBLEM"] = "Can't reach the server",
  94. ["$ACCESS_DENIED"] = "Access denied",
  95. ["$SAVE"] = " Save ",
  96. ["$RUN"] = " Run program ",
  97. ["$EDIT"] = " Edit ",
  98. ["$CANT_CONNECT"] = "Can't reach",
  99. ["$TO_SERVER"] = "the server",
  100. ["$DOWNLOAD"] = " Download ",
  101. ["$DOWNLOAD_TOFOLDER"] = " Download to Folder ",
  102. ["$DELETE"] = " Delete ",
  103. ["$SUCCESS_DOWNLOAD"] = "Successfully downloaded",
  104. ["$ALREADY_EXIST"] = "File already exists!",
  105. }
  106.  
  107. if lang == "$GER" then
  108.  
  109. return GER[tString]
  110.  
  111. elseif lang == "$ENG" then
  112.  
  113. return ENG[tString]
  114.  
  115. end
  116.  
  117. end
  118.  
  119.  
  120. function design()
  121.  
  122. term.clear()
  123.  
  124. term.setCursorPos(1,1)
  125. term.setBackgroundColor(color)
  126. term.write(" ")
  127.  
  128. for i = 2,18 do
  129.  
  130. term.setCursorPos(1,i)
  131. term.setBackgroundColor(coloritems)
  132. term.write(" ")
  133. term.setBackgroundColor(color)
  134. term.write(" ")
  135. term.setBackgroundColor(coloritems)
  136. term.write(" ")
  137.  
  138. end
  139.  
  140. term.setCursorPos(1,19)
  141. term.setBackgroundColor(color)
  142. term.write(" ")
  143.  
  144. term.setTextColor(textcolor)
  145. term.setBackgroundColor(color)
  146. term.setCursorPos(9,1)
  147. term.write("| PC |")
  148. term.setCursorPos(36,1)
  149. term.write("| SERVER |")
  150. term.setCursorPos(1,1)
  151. term.write("v^")
  152. term.setCursorPos(29,1)
  153. term.write("v^")
  154. term.setCursorPos(51,19)
  155. term.setTextColor(colors.yellow)
  156. term.write("$")
  157. term.setCursorPos(1,19)
  158. term.setTextColor(colors.red)
  159. term.write("X")
  160. term.setTextColor(textcolor)
  161. term.write(dirText)
  162. term.setCursorPos(29,19)
  163. term.setTextColor(colors.red)
  164. term.write("X")
  165. term.setTextColor(textcolor)
  166. term.write(dirTextServer)
  167. term.setBackgroundColor(colors.red)
  168. term.setCursorPos(51,1)
  169. term.write("X")
  170. term.setBackgroundColor(coloritems)
  171. term.setCursorPos(1,1)
  172.  
  173. end
  174.  
  175.  
  176. function scrolldown()
  177.  
  178. minnumber = minnumber + 1
  179. maxnumber = maxnumber + 1
  180.  
  181. end
  182.  
  183.  
  184. function scrollup()
  185.  
  186. minnumber = minnumber - 1
  187. maxnumber = maxnumber - 1
  188.  
  189. end
  190.  
  191.  
  192. function scrolldowndownload()
  193.  
  194. minnum = minnum + 1
  195. maxnum = maxnum + 1
  196.  
  197. end
  198.  
  199.  
  200. function scrollupdownload()
  201.  
  202. minnum = minnum - 1
  203. maxnum = maxnum - 1
  204.  
  205. end
  206.  
  207.  
  208. function changeDir()
  209.  
  210. term.setTextColor(textcolor)
  211. term.setBackgroundColor(color)
  212. term.setCursorPos(15,7)
  213. term.write(" ")
  214. term.setCursorPos(15,8)
  215. term.write(" ")
  216. term.setCursorPos(15,9)
  217. term.write(" ")
  218. term.setCursorPos(15,10)
  219. term.write(" ")
  220. term.setCursorPos(15,11)
  221. term.write(" ")
  222. term.setCursorPos(16,7)
  223. term.write("Name: ")
  224. term.write(tr("$CHANGE_FOLDER", language))
  225. term.setBackgroundColor(coloritems)
  226. term.setCursorPos(16,8)
  227. term.write(" ")
  228. term.setCursorPos(16,9)
  229. term.write(" ")
  230. term.setCursorPos(16,9)
  231. term.write(" "..tr("$FOLDER", language)..": ")
  232. term.setCursorPos(16,10)
  233. term.write(" ")
  234. term.setBackgroundColor(coloritems)
  235.  
  236. term.setCursorPos(19 + tr("$FOLDER", language):len(), 9)
  237. folderName = read()
  238.  
  239. if fs.isDir(folderName) then
  240.  
  241. dir = folderName
  242.  
  243. if dir == "" then
  244.  
  245. dir = "/"
  246.  
  247. end
  248.  
  249. dirText = " | "..folderName
  250. accessOnComputer = false
  251.  
  252. if dirText == " | " then
  253.  
  254. dirText = " | "..tr("$CHANGE_FOLDER",language)
  255.  
  256. end
  257.  
  258. else
  259.  
  260. term.setCursorPos(1,19)
  261. term.write("Not a directory")
  262. sleep(2)
  263.  
  264. end
  265.  
  266. refreshScreen()
  267.  
  268. end
  269.  
  270.  
  271. function logout()
  272.  
  273. if secureAccess then
  274.  
  275. rednet.send(id, "I;")
  276. secureAccess = false;
  277. dirTextServer = " | ".. tr("$SECURED_FILES", language)
  278.  
  279. refreshScreen()
  280.  
  281. end
  282.  
  283. end
  284.  
  285.  
  286. function accessSecuredFolder()
  287.  
  288. term.setTextColor(textcolor)
  289. term.setBackgroundColor(color)
  290. term.setCursorPos(15,6)
  291. term.write(" ")
  292. term.setCursorPos(15,7)
  293. term.write(" ")
  294. term.setCursorPos(15,8)
  295. term.write(" ")
  296. term.setCursorPos(15,9)
  297. term.write(" ")
  298. term.setCursorPos(15,10)
  299. term.write(" ")
  300. term.setCursorPos(15,11)
  301. term.write(" ")
  302. term.setCursorPos(16,6)
  303. term.write(tr("$SECURITY_ACCESS", language))
  304. term.setBackgroundColor(coloritems)
  305. term.setCursorPos(16,7)
  306. term.write(" ")
  307. term.setCursorPos(16,8)
  308. term.write(" ".. tr("$USERNAME", language) ..": ")
  309. term.setCursorPos(16,9)
  310. term.write(" ".. tr("$PASSWORD", language) ..": ")
  311. term.setCursorPos(16,10)
  312. term.write(" ")
  313.  
  314. term.setCursorPos(27,8)
  315. user = read()
  316. term.setCursorPos(27,9)
  317. pass = read("*")
  318.  
  319. rednet.send(id,"P;"..pass.."$"..user)
  320. a, b, c = rednet.receive(5)
  321.  
  322. if a == nil then
  323. term.setBackgroundColor(color)
  324. term.setCursorPos(1,19)
  325. term.write(tr("$SERVER_PROBLEM", language))
  326. sleep(1)
  327. else
  328.  
  329. if b == "DENIED" then
  330.  
  331. term.setBackgroundColor(color)
  332. term.setCursorPos(1,19)
  333. term.write(tr("$ACCESS_DENIED", language))
  334. sleep(1)
  335. secureAccess = false
  336. dirTextServer = " | ".. tr("$SECURED_FILES", language)
  337.  
  338. else
  339.  
  340. secureAccess = true
  341. dirTextServer = " | ".. tr("$LOGOUT", language)
  342.  
  343. end
  344.  
  345. end
  346.  
  347. refreshScreen()
  348.  
  349. end
  350.  
  351. function accessLockedPC(id)
  352.  
  353. term.setBackgroundColor(color)
  354. term.setCursorPos(15,6)
  355. term.write(" ")
  356. term.setCursorPos(15,7)
  357. term.write(" ")
  358. term.setCursorPos(15,8)
  359. term.write(" ")
  360. term.setCursorPos(15,9)
  361. term.write(" ")
  362. term.setCursorPos(15,10)
  363. term.write(" ")
  364. term.setCursorPos(16,6)
  365. term.write(tr("$SECURITY_ACCESS", language))
  366. term.setBackgroundColor(coloritems)
  367. term.setCursorPos(16,7)
  368. term.write(" ")
  369. term.setCursorPos(16,8)
  370. term.write(" ".. tr("$PASSWORD", language) ..": ")
  371. term.setCursorPos(16,9)
  372. term.write(" ")
  373.  
  374. term.setCursorPos(27,8)
  375. pass = read("*")
  376.  
  377. rednet.send(id,"$PASS;"..pass)
  378. a, b, c = rednet.receive(3)
  379.  
  380. if a == nil then
  381. term.setBackgroundColor(color)
  382. term.setCursorPos(1,19)
  383. term.write(tr("$SERVER_PROBLEM", language))
  384. sleep(1)
  385. dir = "/"
  386. dirText = " | "..tr("$CHANGE_FOLDER", language)
  387. accessOnComputer = false
  388.  
  389. refreshScreen()
  390. else
  391.  
  392. if b == "DENIED" then
  393.  
  394. term.setBackgroundColor(color)
  395. term.setCursorPos(1,19)
  396. term.write(tr("$ACCESS_DENIED", language))
  397. sleep(1)
  398. dir = "/"
  399. dirText = " | "..tr("$CHANGE_FOLDER", language)
  400. accessOnComputer = false
  401.  
  402. refreshScreen()
  403.  
  404. else
  405.  
  406. dir = dir.."/"..string.sub(listedPrograms[y + minnumber - 2], string.find(listedPrograms[y + minnumber - 2].."", ";", 1, true) + 1, -1)
  407. dirText = " | "..string.sub(listedPrograms[y + minnumber - 2], string.find(listedPrograms[y + minnumber - 2].."", ";", 1, true) + 1, -1)
  408.  
  409. local programMessage = {}
  410. local tempString = string.sub(b, string.find(b.."", ";") + 1, -1)
  411.  
  412. table.insert(programMessage, textutils.unserialise(tempString))
  413.  
  414. extComputerDirs = programMessage[1][1]
  415. extComputerProgs = programMessage[1][2]
  416.  
  417. end
  418.  
  419. end
  420.  
  421. refreshScreen()
  422.  
  423. end
  424.  
  425.  
  426. function refreshTables()
  427.  
  428. ItemDownloadVisible = 2
  429. ItemDownloadInvisible = 2
  430. y = 2
  431. visible = 2
  432. invisible = 2
  433. items = ";"
  434. listedPrograms = {}
  435. downloadList = {}
  436.  
  437. term.setBackgroundColor(coloritems)
  438. term.setCursorPos(1,2)
  439. term.write(" ")
  440. term.setCursorPos(1,3)
  441. term.write(" ")
  442. term.setCursorPos(1,4)
  443. term.write(" ")
  444. term.setCursorPos(1,5)
  445. term.write(" ")
  446. term.setCursorPos(1,6)
  447. term.write(" ")
  448. term.setCursorPos(1,7)
  449. term.write(" ")
  450. term.setCursorPos(1,8)
  451. term.write(" ")
  452. term.setCursorPos(1,9)
  453. term.write(" ")
  454. term.setCursorPos(1,10)
  455. term.write(" ")
  456. term.setCursorPos(1,11)
  457. term.write(" ")
  458. term.setCursorPos(1,12)
  459. term.write(" ")
  460. term.setCursorPos(1,13)
  461. term.write(" ")
  462. term.setCursorPos(1,14)
  463. term.write(" ")
  464. term.setCursorPos(1,15)
  465. term.write(" ")
  466. term.setCursorPos(1,16)
  467. term.write(" ")
  468. term.setCursorPos(1,17)
  469. term.write(" ")
  470. term.setCursorPos(1,18)
  471. term.write(" ")
  472.  
  473. term.setCursorPos(30,2)
  474. term.write(" ")
  475. term.setCursorPos(30,3)
  476. term.write(" ")
  477. term.setCursorPos(30,4)
  478. term.write(" ")
  479. term.setCursorPos(30,5)
  480. term.write(" ")
  481. term.setCursorPos(30,6)
  482. term.write(" ")
  483. term.setCursorPos(30,7)
  484. term.write(" ")
  485. term.setCursorPos(30,8)
  486. term.write(" ")
  487. term.setCursorPos(30,9)
  488. term.write(" ")
  489. term.setCursorPos(30,10)
  490. term.write(" ")
  491. term.setCursorPos(30,11)
  492. term.write(" ")
  493. term.setCursorPos(30,12)
  494. term.write(" ")
  495. term.setCursorPos(30,13)
  496. term.write(" ")
  497. term.setCursorPos(30,14)
  498. term.write(" ")
  499. term.setCursorPos(30,15)
  500. term.write(" ")
  501. term.setCursorPos(30,16)
  502. term.write(" ")
  503. term.setCursorPos(30,17)
  504. term.write(" ")
  505. term.setCursorPos(30,18)
  506. term.write(" ")
  507.  
  508. progs = fs.list(dir)
  509.  
  510. for index, sItem in pairs(progs) do
  511.  
  512. if fs.isDir(dir.."/"..sItem)==true then
  513.  
  514. listedPrograms[visible] = sItem
  515.  
  516. if visible >= minnumber and visible <= maxnumber then
  517.  
  518. term.setBackgroundColor(coloritems)
  519. term.setTextColor(folderColor)
  520. term.setCursorPos(3,invisible)
  521. term.write(listedPrograms[visible])
  522. invisible = invisible + 1
  523.  
  524. end
  525.  
  526. visible = visible + 1
  527.  
  528. end
  529.  
  530. end
  531.  
  532. for index, sItem in pairs(progs) do
  533.  
  534. if fs.isDir(dir.."/"..sItem)~=true then
  535.  
  536. listedPrograms[visible] = sItem
  537.  
  538. if visible >= minnumber and visible <= maxnumber then
  539.  
  540. term.setTextColor(programColor)
  541. term.setCursorPos(3,invisible)
  542. term.write(listedPrograms[visible])
  543. invisible = invisible + 1
  544.  
  545. end
  546.  
  547. visible = visible + 1
  548.  
  549. end
  550.  
  551. end
  552.  
  553. if not secureAccess then
  554.  
  555. rednet.send(id,"L;")
  556.  
  557. else
  558.  
  559. rednet.send(id,"J;")
  560.  
  561. end
  562.  
  563. a, dL, c = rednet.receive(timeout)
  564.  
  565. if a == nil then
  566.  
  567. term.setBackgroundColor(coloritems)
  568. term.setCursorPos(32,2)
  569. term.write(tr("$CANT_CONNECT", language))
  570. term.setCursorPos(32,3)
  571. term.write(tr("$TO_SERVER", language))
  572.  
  573. else
  574.  
  575. while string.find(dL,";") do
  576.  
  577. findNew = string.find(dL.."",";")
  578. downloadList[ItemDownloadVisible] = string.sub(dL,1,findNew-1)
  579.  
  580. dL = string.sub(dL,string.find(dL.."",";")+1)
  581.  
  582. if ItemDownloadVisible >= minnum and ItemDownloadVisible <= maxnum then
  583.  
  584. if secureAccess then
  585. term.setBackgroundColor(secFilesBackground)
  586. else
  587. term.setBackgroundColor(coloritems)
  588. end
  589.  
  590. term.setCursorPos(32,ItemDownloadInvisible)
  591. term.write(downloadList[ItemDownloadVisible])
  592. ItemDownloadInvisible = ItemDownloadInvisible + 1
  593.  
  594. end
  595.  
  596. ItemDownloadVisible = ItemDownloadVisible + 1
  597.  
  598. end
  599.  
  600. end
  601.  
  602. if dir ~= "/" then
  603.  
  604. term.setBackgroundColor(coloritems)
  605. term.setTextColor(colors.red)
  606. term.setCursorPos(1,2)
  607. term.write("<<")
  608. term.setTextColor(textcolor)
  609.  
  610. end
  611.  
  612. end
  613.  
  614.  
  615. function refreshScreen()
  616.  
  617.  
  618. ItemDownloadVisible = 2
  619. ItemDownloadInvisible = 2
  620. y = 2
  621. visible = 2
  622. invisible = 2
  623. items = ";"
  624. listedPrograms = {}
  625. downloadList = {}
  626.  
  627. design()
  628.  
  629. -- Tabellen
  630.  
  631. if compatiblePCMode then
  632.  
  633. if dir == "/" then
  634.  
  635. rednet.broadcast("$CHECK_COMPATIBLE_PCS");
  636.  
  637. message = "$FIRST";
  638.  
  639. while message ~= nil do
  640.  
  641. idC, message, range = rednet.receive(0.5);
  642.  
  643. if message ~= "$FIRST" and message ~= nil and idC ~= nil then
  644.  
  645. if string.find(message.."", "$COMPATIBLE;", 1, true) then
  646.  
  647. rednet.send(idC, "$GOTYA");
  648.  
  649. listedPrograms[visible] = idC..";"..string.sub(message, string.find(message.."", ";") + 1, -1);
  650.  
  651. if visible >= minnumber and visible <= maxnumber then
  652.  
  653. term.setBackgroundColor(coloritems)
  654. term.setTextColor(pcColor)
  655. term.setCursorPos(3,invisible)
  656.  
  657. if string.len(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1)) > 21 then
  658. term.write(string.sub(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1), 1, 20) .. "..")
  659. else
  660. term.write(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1))
  661. end
  662.  
  663. invisible = invisible + 1
  664.  
  665. end
  666.  
  667. visible = visible + 1
  668.  
  669. elseif string.find(message.."", "$COMPATIBLEPASS;", 1, true) then
  670.  
  671. rednet.send(idC, "$GOTYA");
  672.  
  673. listedPrograms[visible] = idC..";"..string.sub(message, string.find(message.."", ";") + 1, -1);
  674.  
  675. if visible >= minnumber and visible <= maxnumber then
  676.  
  677. term.setBackgroundColor(coloritems)
  678. term.setTextColor(pcPWColor)
  679. term.setCursorPos(3,invisible)
  680.  
  681. if string.len(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1)) > 21 then
  682. term.write(string.sub(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1), 1, 20) .. "..")
  683. else
  684. term.write(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1))
  685. end
  686.  
  687. invisible = invisible + 1
  688.  
  689. end
  690.  
  691. visible = visible + 1
  692.  
  693. end
  694.  
  695. end
  696.  
  697. end
  698.  
  699. end
  700.  
  701. end
  702.  
  703. if not accessOnComputer then
  704.  
  705. progs = fs.list(dir)
  706.  
  707. for index, sItem in pairs(progs) do
  708.  
  709. if fs.isDir(dir.."/"..sItem)==true then
  710.  
  711. listedPrograms[visible] = sItem
  712.  
  713. if visible >= minnumber and visible <= maxnumber then
  714.  
  715. term.setBackgroundColor(coloritems)
  716. term.setTextColor(folderColor)
  717. term.setCursorPos(3,invisible)
  718.  
  719. if string.len(listedPrograms[visible]) > 21 then
  720. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  721. else
  722. term.write(listedPrograms[visible])
  723. end
  724.  
  725. invisible = invisible + 1
  726.  
  727. end
  728.  
  729. visible = visible + 1
  730.  
  731. end
  732.  
  733. end
  734.  
  735. for index, sItem in pairs(progs) do
  736.  
  737. if fs.isDir(dir.."/"..sItem)~=true then
  738.  
  739. listedPrograms[visible] = sItem
  740.  
  741. if visible >= minnumber and visible <= maxnumber then
  742.  
  743. term.setTextColor(programColor)
  744. term.setCursorPos(3,invisible)
  745.  
  746. if string.len(listedPrograms[visible]) > 21 then
  747. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  748. else
  749. term.write(listedPrograms[visible])
  750. end
  751.  
  752. invisible = invisible + 1
  753.  
  754. end
  755.  
  756. visible = visible + 1
  757.  
  758. end
  759.  
  760. end
  761.  
  762. else
  763.  
  764. for index, sItem in pairs(extComputerDirs) do
  765.  
  766. listedPrograms[visible] = sItem
  767.  
  768. if visible >= minnumber and visible <= maxnumber then
  769.  
  770. term.setBackgroundColor(coloritems)
  771. term.setTextColor(folderColor)
  772. term.setCursorPos(3,invisible)
  773.  
  774. if string.len(listedPrograms[visible]) > 21 then
  775. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  776. else
  777. term.write(listedPrograms[visible])
  778. end
  779.  
  780. invisible = invisible + 1
  781.  
  782. end
  783.  
  784. visible = visible + 1
  785.  
  786. end
  787.  
  788. for index, sItem in pairs(extComputerProgs) do
  789.  
  790. listedPrograms[visible] = sItem
  791.  
  792. if visible >= minnumber and visible <= maxnumber then
  793.  
  794. term.setTextColor(programColor)
  795. term.setCursorPos(3,invisible)
  796.  
  797. if string.len(listedPrograms[visible]) > 21 then
  798. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  799. else
  800. term.write(listedPrograms[visible])
  801. end
  802.  
  803. invisible = invisible + 1
  804.  
  805. end
  806.  
  807. visible = visible + 1
  808.  
  809. end
  810.  
  811. end
  812.  
  813. if not secureAccess then
  814.  
  815. rednet.send(id,"L;")
  816.  
  817. else
  818.  
  819. rednet.send(id,"J;")
  820.  
  821. end
  822.  
  823. a, dL, c = rednet.receive(timeout)
  824.  
  825. if a == nil then
  826.  
  827. term.setTextColor(textcolor)
  828. term.setBackgroundColor(coloritems)
  829. term.setCursorPos(32,2)
  830. term.write(tr("$CANT_CONNECT", language))
  831. term.setCursorPos(32,3)
  832. term.write(tr("$TO_SERVER", language))
  833.  
  834. else
  835.  
  836. while string.find(dL,";") do
  837.  
  838. findNew = string.find(dL.."",";")
  839. downloadList[ItemDownloadVisible] = string.sub(dL,1,findNew-1)
  840.  
  841. dL = string.sub(dL,string.find(dL.."",";")+1)
  842.  
  843. if ItemDownloadVisible >= minnum and ItemDownloadVisible <= maxnum then
  844.  
  845. if secureAccess then
  846. term.setBackgroundColor(secFilesBackground)
  847. else
  848. term.setBackgroundColor(coloritems)
  849. end
  850.  
  851. term.setTextColor(programColor)
  852. term.setCursorPos(32,ItemDownloadInvisible)
  853. term.write(downloadList[ItemDownloadVisible])
  854. ItemDownloadInvisible = ItemDownloadInvisible + 1
  855.  
  856. end
  857.  
  858. ItemDownloadVisible = ItemDownloadVisible + 1
  859.  
  860. end
  861.  
  862. end
  863.  
  864. if dir ~= "/" then
  865.  
  866. term.setBackgroundColor(coloritems)
  867. term.setTextColor(colors.red)
  868. term.setCursorPos(1,2)
  869. term.write("<<")
  870. term.setTextColor(textcolor)
  871.  
  872. end
  873.  
  874. end
  875.  
  876.  
  877. function createAuswahlUpload( ypos )
  878.  
  879. if listedPrograms[ypos + minnumber - 2] then
  880.  
  881. term.setTextColor(textcolor)
  882. term.setBackgroundColor(color)
  883. term.setCursorPos(15,5)
  884. term.write(" ")
  885. term.setCursorPos(15,6)
  886. term.write(" ")
  887. term.setCursorPos(15,7)
  888. term.write(" ")
  889. term.setCursorPos(15,8)
  890. term.write(" ")
  891. term.setCursorPos(15,9)
  892. term.write(" ")
  893. term.setCursorPos(15,10)
  894. term.write(" ")
  895. term.setCursorPos(15,11)
  896. term.write(" ")
  897. term.setCursorPos(15,12)
  898. term.write(" ")
  899. term.setCursorPos(16,5)
  900. term.write("Name: ")
  901. term.write(listedPrograms[ypos + minnumber - 2])
  902. term.setBackgroundColor(coloritems)
  903. term.setCursorPos(16,6)
  904. term.write(" ")
  905. term.setCursorPos(16,7)
  906. term.write(tr("$SAVE", language))
  907. term.setCursorPos(16,8)
  908. term.write(tr("$RUN", language))
  909. term.setCursorPos(16,9)
  910. term.write(tr("$EDIT", language))
  911. term.setCursorPos(16,10)
  912. term.write(tr("$DELETE", language))
  913. term.setCursorPos(16,11)
  914. term.write(" ")
  915. term.setBackgroundColor(coloritems)
  916.  
  917. event, side, x, y = os.pullEvent("mouse_click")
  918.  
  919. if x >= 16 and x <= 37 and y == 7 then
  920.  
  921. program = fs.open(dir.."/"..listedPrograms[ypos + minnumber - 2],"r")
  922. programdata = program.readAll()
  923. program.close()
  924.  
  925. if secureAccess then
  926. rednet.send(id,"R;"..listedPrograms[ypos + minnumber - 2].."$;"..programdata)
  927. else
  928. rednet.send(id,"U;"..listedPrograms[ypos + minnumber - 2].."$;"..programdata)
  929. end
  930.  
  931. a,b,c = rednet.receive(timeout)
  932.  
  933. if a == nil then
  934. term.setBackgroundColor(color)
  935. term.setCursorPos(1,19)
  936. term.write(tr("$SERVER_PROBLEM", language))
  937. sleep(1)
  938. else
  939. term.setBackgroundColor(color)
  940. term.setCursorPos(1,19)
  941. term.write(" ")
  942. term.setCursorPos(1,19)
  943. term.write(b)
  944. sleep(1)
  945. end
  946.  
  947. elseif x >= 16 and x <= 37 and y == 8 then
  948.  
  949. terminateProc = true;
  950.  
  951. startAProg = true
  952. progToStart = dir.."/"..listedPrograms[ypos + minnumber - 2]
  953.  
  954. elseif x >= 16 and x <= 37 and y == 9 then
  955.  
  956. shell.run("edit "..dir.."/"..listedPrograms[ypos + minnumber - 2])
  957.  
  958. elseif x >= 16 and x <= 37 and y == 10 then
  959.  
  960. fs.delete(dir.."/"..listedPrograms[ypos + minnumber - 2])
  961.  
  962. end
  963.  
  964. refreshScreen()
  965.  
  966. end
  967.  
  968. end
  969.  
  970.  
  971. function createAuswahlDownload( ypos )
  972.  
  973. if downloadList[ypos + minnum - 2] then
  974.  
  975. term.setTextColor(textcolor)
  976. term.setBackgroundColor(color)
  977. term.setCursorPos(15,5)
  978. term.write(" ")
  979. term.setCursorPos(15,6)
  980. term.write(" ")
  981. term.setCursorPos(15,7)
  982. term.write(" ")
  983. term.setCursorPos(15,8)
  984. term.write(" ")
  985. term.setCursorPos(15,9)
  986. term.write(" ")
  987. term.setCursorPos(15,10)
  988. term.write(" ")
  989. term.setCursorPos(15,11)
  990. term.write(" ")
  991. term.setCursorPos(16,5)
  992. term.write("Name: ")
  993. term.write(downloadList[ypos + minnum - 2])
  994. term.setBackgroundColor(coloritems)
  995. term.setCursorPos(16,6)
  996. term.write(" ")
  997. term.setCursorPos(16,7)
  998. term.write(tr("$DOWNLOAD", language))
  999. term.setCursorPos(16,8)
  1000. term.write(tr("$DOWNLOAD_TOFOLDER", language))
  1001. term.setCursorPos(16,9)
  1002. term.write(tr("$DELETE", language))
  1003. term.setCursorPos(16,10)
  1004. term.write(" ")
  1005. term.setBackgroundColor(color)
  1006.  
  1007. event, side, x, y = os.pullEvent("mouse_click")
  1008.  
  1009. if x >= 16 and x <= 37 and y == 7 then
  1010.  
  1011. if secureAccess then
  1012. rednet.send(id, "V;"..downloadList[ypos + minnum - 2])
  1013. else
  1014. rednet.send(id,"D;"..downloadList[ypos + minnum - 2])
  1015. end
  1016.  
  1017. a, b, c = rednet.receive(timeout)
  1018.  
  1019. if a == nil then
  1020.  
  1021. term.setBackgroundColor(color)
  1022. term.setCursorPos(1,19)
  1023. term.write(" ")
  1024. term.setCursorPos(1,19)
  1025. term.write(tr("$SERVER_PROBLEM", language))
  1026.  
  1027. else
  1028.  
  1029. if not fs.exists("Downloads/"..downloadList[ypos + minnum - 2]) then
  1030.  
  1031. File = fs.open("Downloads/"..downloadList[ypos + minnum - 2],"w")
  1032. File.write(b)
  1033. File.close()
  1034. term.setCursorPos(1,19)
  1035. term.write(" ")
  1036. term.setCursorPos(1,19)
  1037. term.write(tr("$SUCCESS_DOWNLOAD", language))
  1038. sleep(1)
  1039.  
  1040. else
  1041.  
  1042. term.setCursorPos(1,19)
  1043. term.write(" ")
  1044. term.setCursorPos(1,19)
  1045. term.write(tr("$ALREADY_EXIST", language))
  1046. sleep(1)
  1047.  
  1048. end
  1049.  
  1050. end
  1051.  
  1052. elseif x >= 16 and x <= 37 and y == 8 then
  1053.  
  1054. if secureAccess then
  1055. rednet.send(id, "V;"..downloadList[ypos + minnum - 2])
  1056. else
  1057. rednet.send(id,"D;"..downloadList[ypos + minnum - 2])
  1058. end
  1059.  
  1060. a, b, c = rednet.receive(timeout)
  1061.  
  1062. if a == nil then
  1063.  
  1064. term.setBackgroundColor(color)
  1065. term.setCursorPos(1,19)
  1066. term.write(" ")
  1067. term.setCursorPos(1,19)
  1068. term.write(tr("$SERVER_PROBLEM", language))
  1069.  
  1070. else
  1071.  
  1072. if not fs.exists(dir.."/"..downloadList[ypos + minnum - 2]) then
  1073.  
  1074. File = fs.open(dir.."/"..downloadList[ypos + minnum - 2],"w")
  1075. File.write(b)
  1076. File.close()
  1077. term.setCursorPos(1,19)
  1078. term.write(" ")
  1079. term.setCursorPos(1,19)
  1080. term.write(tr("$SUCCESS_DOWNLOAD", language))
  1081. sleep(1)
  1082.  
  1083. else
  1084.  
  1085. term.setCursorPos(1,19)
  1086. term.write(" ")
  1087. term.setCursorPos(1,19)
  1088. term.write(tr("$ALREADY_EXIST", language))
  1089. sleep(1)
  1090.  
  1091. end
  1092.  
  1093. end
  1094.  
  1095.  
  1096. elseif x >= 16 and x <= 37 and y == 9 then
  1097.  
  1098. if secureAccess then
  1099. rednet.send(id,"W;"..downloadList[ypos + minnum - 2])
  1100. else
  1101. rednet.send(id,"B;"..downloadList[ypos + minnum - 2])
  1102. end
  1103.  
  1104. a,b,c = rednet.receive(timeout)
  1105.  
  1106. if a == nil then
  1107.  
  1108. term.setBackgroundColor(color)
  1109. term.setCursorPos(1,19)
  1110. term.write(" ")
  1111. term.setCursorPos(1,19)
  1112. term.write(tr("$SERVER_PROBLEM", language))
  1113. sleep(1)
  1114.  
  1115. else
  1116.  
  1117. term.setBackgroundColor(color)
  1118. term.setCursorPos(1,19)
  1119. term.write(" ")
  1120. term.setCursorPos(1,19)
  1121. term.write(b)
  1122. sleep(1)
  1123.  
  1124. end
  1125.  
  1126. end
  1127.  
  1128. refreshScreen()
  1129.  
  1130. end
  1131.  
  1132.  
  1133. end
  1134.  
  1135. function createAuswahlUploadFromAccessing( ypos )
  1136.  
  1137. if listedPrograms[ypos + minnumber - 2] then
  1138.  
  1139. term.setTextColor(textcolor)
  1140. term.setBackgroundColor(color)
  1141. term.setCursorPos(15,5)
  1142. term.write(" ")
  1143. term.setCursorPos(15,6)
  1144. term.write(" ")
  1145. term.setCursorPos(15,7)
  1146. term.write(" ")
  1147. term.setCursorPos(15,8)
  1148. term.write(" ")
  1149. term.setCursorPos(15,9)
  1150. term.write(" ")
  1151. term.setCursorPos(15,10)
  1152. term.write(" ")
  1153. term.setCursorPos(15,11)
  1154. term.write(" ")
  1155. term.setCursorPos(15,12)
  1156. term.write(" ")
  1157. term.setCursorPos(16,5)
  1158. term.write("Name: ")
  1159. term.write(listedPrograms[ypos + minnumber - 2])
  1160. term.setBackgroundColor(coloritems)
  1161. term.setCursorPos(16,6)
  1162. term.write(" ")
  1163. term.setCursorPos(16,7)
  1164. term.write(tr("$SAVE", language))
  1165. term.setCursorPos(16,8)
  1166. term.write(tr("$RUN", language))
  1167. term.setCursorPos(16,9)
  1168. term.write(tr("$EDIT", language))
  1169. term.setCursorPos(16,10)
  1170. term.write(tr("$DELETE", language))
  1171. term.setCursorPos(16,11)
  1172. term.write(" ")
  1173. term.setBackgroundColor(coloritems)
  1174.  
  1175. event, side, x, y = os.pullEvent("mouse_click")
  1176.  
  1177. if x >= 16 and x <= 37 and y == 7 then
  1178.  
  1179. rednet.send(computerIDAccessing, "$GETPROGCODE;"..dir.."/"..listedPrograms[ypos + minnumber - 2])
  1180.  
  1181. idAC, messageAC, range = rednet.receive(2)
  1182.  
  1183. if messageAC ~= nil then
  1184. if string.find(messageAC.."", "$PROGCODE", 1, true) then
  1185.  
  1186. programdata = string.sub(messageAC, string.find(messageAC.."", ";") + 1, -1)
  1187.  
  1188. if secureAccess then
  1189. rednet.send(id,"R;"..listedPrograms[ypos + minnumber - 2].."$;"..programdata)
  1190. else
  1191. rednet.send(id,"U;"..listedPrograms[ypos + minnumber - 2].."$;"..programdata)
  1192. end
  1193.  
  1194. a,b,c = rednet.receive(timeout)
  1195.  
  1196. if a == nil then
  1197. term.setBackgroundColor(color)
  1198. term.setCursorPos(1,19)
  1199. term.write(tr("$SERVER_PROBLEM", language))
  1200. sleep(1)
  1201. else
  1202. term.setBackgroundColor(color)
  1203. term.setCursorPos(1,19)
  1204. term.write(" ")
  1205. term.setCursorPos(1,19)
  1206. term.write(b)
  1207. sleep(1)
  1208. end
  1209.  
  1210. end
  1211. end
  1212.  
  1213. elseif x >= 16 and x <= 37 and y == 8 then
  1214.  
  1215. terminateProc = true;
  1216.  
  1217. rednet.send(computerIDAccessing, "$GETPROGCODE;"..dir.."/"..listedPrograms[ypos + minnumber - 2])
  1218.  
  1219. idAC, messageAC, range = rednet.receive(2)
  1220.  
  1221. if messageAC ~= nil then
  1222. if string.find(messageAC.."", "$PROGCODE", 1, true) then
  1223.  
  1224. programdata = string.sub(messageAC, string.find(messageAC.."", ";") + 1, -1)
  1225. file = fs.open("temp8246419256192341", "w")
  1226. file.write(programdata)
  1227. file.close()
  1228.  
  1229. startAProg = true
  1230. progToStart = "temp8246419256192341"
  1231.  
  1232. end
  1233. end
  1234.  
  1235. elseif x >= 16 and x <= 37 and y == 9 then
  1236.  
  1237. rednet.send(computerIDAccessing, "$GETPROGCODE;"..dir.."/"..listedPrograms[ypos + minnumber - 2])
  1238.  
  1239. idAC, messageAC, range = rednet.receive(2)
  1240.  
  1241. if messageAC ~= nil then
  1242. if string.find(messageAC.."", "$PROGCODE", 1, true) then
  1243.  
  1244. programdata = string.sub(messageAC, string.find(messageAC.."", ";") + 1, -1)
  1245. file = fs.open("temp8246419256192341", "w")
  1246. file.write(programdata)
  1247. file.close()
  1248.  
  1249. shell.run("edit temp8246419256192341")
  1250.  
  1251. file = fs.open("temp8246419256192341", "r")
  1252. programdata = file.readAll()
  1253. file.close()
  1254.  
  1255. fs.delete("temp8246419256192341")
  1256.  
  1257. rednet.send(computerIDAccessing, "$SAVEEDITED;"..programdata)
  1258.  
  1259. end
  1260. end
  1261.  
  1262. elseif x >= 16 and x <= 37 and y == 10 then
  1263.  
  1264. rednet.send(computerIDAccessing, "$DELETE;"..dir.."/"..listedPrograms[ypos + minnumber - 2])
  1265.  
  1266. end
  1267.  
  1268. refreshScreen()
  1269.  
  1270. end
  1271.  
  1272. end
  1273.  
  1274. function searchInTable(value, table)
  1275.  
  1276. for _, v in pairs(table) do
  1277. if value == v then
  1278. return true
  1279. end
  1280. end
  1281.  
  1282. return false
  1283.  
  1284. end
  1285.  
  1286. -- Programm
  1287.  
  1288.  
  1289.  
  1290. dir = "/"
  1291. dirText = " | ".. tr("$CHANGE_FOLDER", language)
  1292. dirTextServer = " | ".. tr("$SECURED_FILES", language)
  1293.  
  1294. modemside = ""
  1295.  
  1296. while modemside == "" do
  1297.  
  1298. for i, side in pairs(peripheral.getNames()) do
  1299.  
  1300. if (peripheral.getType(side) == "modem") then
  1301.  
  1302. modemside = side
  1303.  
  1304. end
  1305.  
  1306. end
  1307.  
  1308. if modemside == "" then
  1309.  
  1310. sleep(2)
  1311.  
  1312. end
  1313.  
  1314. end
  1315.  
  1316. rednet.open(modemside)
  1317.  
  1318. fs.makeDir("Downloads")
  1319.  
  1320. design()
  1321.  
  1322. -- Tabellen
  1323.  
  1324. if compatiblePCMode then
  1325.  
  1326. rednet.broadcast("$CHECK_COMPATIBLE_PCS");
  1327.  
  1328. message = "$FIRST";
  1329.  
  1330. while message ~= nil do
  1331.  
  1332. idC, message, range = rednet.receive(0.5);
  1333.  
  1334. if message ~= "$FIRST" and message ~= nil and idC ~= nil then
  1335.  
  1336. if string.find(message.."", "$COMPATIBLE;", 1, true) then
  1337.  
  1338. rednet.send(idC, "$GOTYA");
  1339.  
  1340. listedPrograms[visible] = idC..";"..string.sub(message, string.find(message.."", ";") + 1, -1);
  1341.  
  1342. if visible >= minnumber and visible <= maxnumber then
  1343.  
  1344. term.setBackgroundColor(coloritems)
  1345. term.setTextColor(pcColor)
  1346. term.setCursorPos(3,invisible)
  1347.  
  1348. if string.len(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1)) > 21 then
  1349. term.write(string.sub(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1), 1, 20) .. "..")
  1350. else
  1351. term.write(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1))
  1352. end
  1353.  
  1354. invisible = invisible + 1
  1355.  
  1356. end
  1357.  
  1358. visible = visible + 1
  1359.  
  1360. elseif string.find(message.."", "$COMPATIBLEPASS;", 1, true) then
  1361.  
  1362. rednet.send(idC, "$GOTYA");
  1363.  
  1364. listedPrograms[visible] = idC..";"..string.sub(message, string.find(message.."", ";") + 1, -1);
  1365.  
  1366. if visible >= minnumber and visible <= maxnumber then
  1367.  
  1368. term.setBackgroundColor(coloritems)
  1369. term.setTextColor(pcPWColor)
  1370. term.setCursorPos(3,invisible)
  1371.  
  1372. if string.len(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1)) > 21 then
  1373. term.write(string.sub(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1), 1, 20) .. "..")
  1374. else
  1375. term.write(string.sub(listedPrograms[visible], string.find(listedPrograms[visible].."", ";") + 1, -1))
  1376. end
  1377.  
  1378. invisible = invisible + 1
  1379.  
  1380. end
  1381.  
  1382. visible = visible + 1
  1383.  
  1384. end
  1385.  
  1386. end
  1387.  
  1388. end
  1389.  
  1390. end
  1391.  
  1392. if not accessOnComputer then
  1393.  
  1394. progs = fs.list(dir)
  1395.  
  1396. for index, sItem in pairs(progs) do
  1397.  
  1398. if fs.isDir(dir.."/"..sItem)==true then
  1399.  
  1400. listedPrograms[visible] = sItem
  1401.  
  1402. if visible >= minnumber and visible <= maxnumber then
  1403.  
  1404. term.setBackgroundColor(coloritems)
  1405. term.setTextColor(folderColor)
  1406. term.setCursorPos(3,invisible)
  1407.  
  1408. if string.len(listedPrograms[visible]) > 21 then
  1409. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  1410. else
  1411. term.write(listedPrograms[visible])
  1412. end
  1413.  
  1414. invisible = invisible + 1
  1415.  
  1416. end
  1417.  
  1418. visible = visible + 1
  1419.  
  1420. end
  1421.  
  1422. end
  1423.  
  1424. for index, sItem in pairs(progs) do
  1425.  
  1426. if fs.isDir(dir.."/"..sItem)~=true then
  1427.  
  1428. listedPrograms[visible] = sItem
  1429.  
  1430. if visible >= minnumber and visible <= maxnumber then
  1431.  
  1432. term.setTextColor(programColor)
  1433. term.setCursorPos(3,invisible)
  1434.  
  1435. if string.len(listedPrograms[visible]) > 21 then
  1436. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  1437. else
  1438. term.write(listedPrograms[visible])
  1439. end
  1440.  
  1441. invisible = invisible + 1
  1442.  
  1443. end
  1444.  
  1445. visible = visible + 1
  1446.  
  1447. end
  1448.  
  1449. end
  1450.  
  1451. else
  1452.  
  1453. for index, sItem in pairs(extComputerDirs) do
  1454.  
  1455. listedPrograms[visible] = sItem
  1456.  
  1457. if visible >= minnumber and visible <= maxnumber then
  1458.  
  1459. term.setBackgroundColor(coloritems)
  1460. term.setTextColor(folderColor)
  1461. term.setCursorPos(3,invisible)
  1462.  
  1463. if string.len(listedPrograms[visible]) > 21 then
  1464. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  1465. else
  1466. term.write(listedPrograms[visible])
  1467. end
  1468.  
  1469. invisible = invisible + 1
  1470.  
  1471. end
  1472.  
  1473. visible = visible + 1
  1474.  
  1475. end
  1476.  
  1477. for index, sItem in pairs(extComputerProgs) do
  1478.  
  1479. listedPrograms[visible] = sItem
  1480.  
  1481. if visible >= minnumber and visible <= maxnumber then
  1482.  
  1483. term.setTextColor(programColor)
  1484. term.setCursorPos(3,invisible)
  1485.  
  1486. if string.len(listedPrograms[visible]) > 21 then
  1487. term.write(string.sub(listedPrograms[visible], 1, 20) .. "..")
  1488. else
  1489. term.write(listedPrograms[visible])
  1490. end
  1491.  
  1492. invisible = invisible + 1
  1493.  
  1494. end
  1495.  
  1496. visible = visible + 1
  1497.  
  1498. end
  1499.  
  1500. end
  1501.  
  1502. if not secureAccess then
  1503.  
  1504. rednet.send(id,"L;")
  1505.  
  1506. else
  1507.  
  1508. rednet.send(id,"J;")
  1509.  
  1510. end
  1511.  
  1512. a, dL, c = rednet.receive(timeout)
  1513.  
  1514. if a == nil then
  1515.  
  1516. term.setTextColor(textcolor)
  1517. term.setBackgroundColor(coloritems)
  1518. term.setCursorPos(32,2)
  1519. term.write(tr("$CANT_CONNECT", language))
  1520. term.setCursorPos(32,3)
  1521. term.write(tr("$TO_SERVER", language))
  1522.  
  1523. else
  1524.  
  1525. while string.find(dL,";") do
  1526.  
  1527. findNew = string.find(dL.."",";")
  1528. downloadList[ItemDownloadVisible] = string.sub(dL,1,findNew-1)
  1529.  
  1530. dL = string.sub(dL,string.find(dL.."",";")+1)
  1531.  
  1532. if ItemDownloadVisible >= minnum and ItemDownloadVisible <= maxnum then
  1533.  
  1534. if secureAccess then
  1535. term.setBackgroundColor(secFilesBackground)
  1536. else
  1537. term.setBackgroundColor(coloritems)
  1538. end
  1539.  
  1540. term.setCursorPos(32,ItemDownloadInvisible)
  1541. term.write(downloadList[ItemDownloadVisible])
  1542. ItemDownloadInvisible = ItemDownloadInvisible + 1
  1543.  
  1544. end
  1545.  
  1546. ItemDownloadVisible = ItemDownloadVisible + 1
  1547.  
  1548. end
  1549.  
  1550. end
  1551.  
  1552.  
  1553. -- Programm
  1554.  
  1555.  
  1556. while true do
  1557.  
  1558. event, side, x, y = os.pullEvent()
  1559.  
  1560. terminateProc = false
  1561.  
  1562. if event == "mouse_click" then
  1563.  
  1564. if x > 2 and x < 25 and y > 1 and y < 19 then
  1565.  
  1566. if listedPrograms[y + minnumber - 2] then
  1567.  
  1568. if not fs.isDir(dir.."/"..listedPrograms[y + minnumber - 2]) then
  1569.  
  1570. if fs.exists(dir.."/"..listedPrograms[y + minnumber - 2]) then
  1571. createAuswahlUpload(y)
  1572. else
  1573.  
  1574. if not accessOnComputer then
  1575. accessOnComputer = true
  1576. computerIDAccessing = tonumber(string.sub(listedPrograms[y + minnumber - 2], 1, string.find(listedPrograms[y + minnumber - 2].."", ";") - 1))
  1577.  
  1578. rednet.send(computerIDAccessing, "$DIR;"..dir)
  1579.  
  1580. idEXT, messageEXT, range = rednet.receive(1)
  1581.  
  1582. if string.find(messageEXT.."","$AVAIDIR", 1, true) then
  1583.  
  1584. dir = dir.."/"..string.sub(listedPrograms[y + minnumber - 2], string.find(listedPrograms[y + minnumber - 2].."", ";", 1, true) + 1, -1)
  1585. dirText = " | "..string.sub(listedPrograms[y + minnumber - 2], string.find(listedPrograms[y + minnumber - 2].."", ";", 1, true) + 1, -1)
  1586.  
  1587. local programMessage = {}
  1588. local tempString = string.sub(messageEXT, string.find(messageEXT.."", ";") + 1, -1)
  1589.  
  1590. table.insert(programMessage, textutils.unserialise(tempString))
  1591.  
  1592. extComputerDirs = programMessage[1][1]
  1593. extComputerProgs = programMessage[1][2]
  1594.  
  1595. elseif string.find(messageEXT.."","$PASS", 1, true) then
  1596.  
  1597. accessLockedPC(idEXT)
  1598.  
  1599. end
  1600.  
  1601. refreshScreen()
  1602. else
  1603.  
  1604. if searchInTable(listedPrograms[y + minnumber - 2], extComputerDirs) then
  1605.  
  1606. dir = dir.."/"..listedPrograms[y + minnumber - 2]
  1607. dirText = " | "..listedPrograms[y + minnumber - 2]
  1608.  
  1609. rednet.send(computerIDAccessing, "$DIR;"..dir)
  1610.  
  1611. idEXT, messageEXT, range = rednet.receive(1)
  1612.  
  1613. if string.find(messageEXT.."","$AVAIDIR", 1, true) then
  1614.  
  1615. local programMessage = {}
  1616. local tempString = string.sub(messageEXT, string.find(messageEXT.."", ";") + 1, -1)
  1617.  
  1618. table.insert(programMessage, textutils.unserialise(tempString))
  1619.  
  1620. extComputerDirs = programMessage[1][1]
  1621. extComputerProgs = programMessage[1][2]
  1622.  
  1623. end
  1624.  
  1625. refreshScreen()
  1626.  
  1627. else
  1628.  
  1629. createAuswahlUploadFromAccessing(y)
  1630.  
  1631. end
  1632.  
  1633. end
  1634.  
  1635. end
  1636.  
  1637. else
  1638.  
  1639. dir = dir.."/"..listedPrograms[y + minnumber - 2]
  1640. dirText = " | "..listedPrograms[y + minnumber - 2]
  1641. refreshScreen()
  1642.  
  1643. end
  1644.  
  1645. end
  1646.  
  1647. elseif x >= 1 and x <= 2 and y == 2 then
  1648.  
  1649. if dir ~= "/" then
  1650.  
  1651. dir = "/"
  1652. dirText = " | "..tr("$CHANGE_FOLDER", language)
  1653. accessOnComputer = false
  1654.  
  1655. refreshScreen()
  1656.  
  1657. end
  1658.  
  1659. elseif x > 31 and x < 46 and y > 1 and y < 19 then
  1660.  
  1661. createAuswahlDownload(y)
  1662.  
  1663. elseif x == 51 and y == 1 then
  1664.  
  1665. term.setBackgroundColor(colors.black)
  1666. term.clear()
  1667. term.setCursorPos(1,1)
  1668. terminateProc = true
  1669.  
  1670. elseif x == 51 and y == 19 then
  1671.  
  1672. refreshScreen()
  1673.  
  1674. elseif x == 1 and y == 1 and maxnumber < visible-1 and minnumber < visible then
  1675.  
  1676. scrolldown()
  1677. refreshTables()
  1678.  
  1679. elseif x == 2 and y == 1 and maxnumber > 18 and minnumber > 2 then
  1680.  
  1681. scrollup()
  1682. refreshTables()
  1683.  
  1684. elseif x == 29 and y == 1 and maxnum < ItemDownloadVisible-1 and minnum < ItemDownloadVisible then
  1685.  
  1686. scrolldowndownload()
  1687. refreshTables()
  1688.  
  1689. elseif x == 30 and y == 1 and maxnum > 18 and minnum > 2 then
  1690.  
  1691. scrollupdownload()
  1692. refreshTables()
  1693.  
  1694. elseif x == 1 and y == 19 then
  1695.  
  1696. changeDir()
  1697. refreshScreen()
  1698.  
  1699. elseif x == 29 and y == 19 then
  1700.  
  1701. if secureAccess then
  1702.  
  1703. logout()
  1704.  
  1705. else
  1706.  
  1707. accessSecuredFolder()
  1708.  
  1709. end
  1710.  
  1711. end
  1712.  
  1713. elseif event == "mouse_scroll" then
  1714.  
  1715. if side == 1 and maxnumber < visible - 1 and minnumber < visible then
  1716.  
  1717. scrolldown()
  1718. refreshTables()
  1719.  
  1720. elseif side == -1 and maxnumber > 18 and minnumber > 2 then
  1721.  
  1722. scrollup()
  1723. refreshTables()
  1724.  
  1725. elseif side == 1 and maxnum < ItemDownloadVisible-1 and minnum < ItemDownloadVisible then
  1726.  
  1727. scrolldowndownload()
  1728. refreshTables()
  1729.  
  1730. elseif side == -1 and maxnum > 18 and minnum > 2 then
  1731.  
  1732. scrollupdownload()
  1733. refreshTables()
  1734.  
  1735. end
  1736.  
  1737. end
  1738.  
  1739. if (terminateProc) then
  1740.  
  1741. break
  1742.  
  1743. end
  1744.  
  1745. end
  1746.  
  1747. if startAProg then
  1748.  
  1749. shell.run(progToStart)
  1750.  
  1751. end
  1752.  
  1753. -- Scripted by Streetboy_xD
  1754. -- Please keep this text in the program.
Add Comment
Please, Sign In to add comment