mirevall

modem_client

Jun 5th, 2017 (edited)
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.44 KB | None | 0 0
  1. -- 1.1.4
  2. version = "1.1.4"
  3.  
  4. dir = "shared"
  5.  
  6.  
  7. if peripheral.getType("back") ~= "modem" then
  8. term.setTextColour(colours.red)
  9. print("A mondem or wireless modem on the back side is required by this program.")
  10. os.sleep(3)
  11. os.reboot()
  12. end
  13.  
  14. local modem = peripheral.wrap("back")
  15. chanel = os.getComputerID()+1
  16. modem.open(chanel)
  17.  
  18. trans = "version "..version
  19. modem.transmit(1, chanel, trans)
  20.  
  21. if not fs.exists("/CB/NasLogin") then
  22. print(" ")
  23. term.setTextColour(colours.white)
  24. print("You need to create a profile or login")
  25. write("Login : ")
  26. term.setTextColour(colours.yellow)
  27. login = read()
  28. if login == nil then
  29. term.setTextColour(colours.red)
  30. print("you need to type something")
  31. os.sleep(2)
  32. error()
  33. end
  34. trans = "account "..login
  35. modem.transmit(1, chanel, trans)
  36. local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  37. term.setTextColour(colours.white)
  38. if message == "already exists" then
  39. write("enter your password : ")
  40. term.setTextColour(colours.yellow)
  41. pass = read("*")
  42. if pass == nil then
  43. term.setTextColour(colours.red)
  44. print("you need to type something")
  45. os.sleep(2)
  46. error()
  47. end
  48. trans = "login "..login.." "..pass
  49. modem.transmit(1, chanel, trans)
  50. local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  51. if message == "logged" then
  52. naccount = fs.open("/CB/NasLogin", "w")
  53. naccount.writeLine(login)
  54. naccount.close()
  55. term.setTextColour(colours.green)
  56. print(message)
  57. else
  58. term.setTextColour(colours.red)
  59. print("wrong password")
  60. os.sleep(2)
  61. error()
  62. end
  63. else
  64. term.setTextColour(colours.white)
  65. write("choose your password : ")
  66. term.setTextColour(colours.yellow)
  67. pass = read("*")
  68. if pass == nil then
  69. term.setTextColour(colours.red)
  70. print("you need to type something")
  71. os.sleep(2)
  72. error()
  73. end
  74. term.setTextColour(colours.white)
  75. write("confirm your password : ")
  76. term.setTextColour(colours.yellow)
  77. cpass = read("*")
  78. if pass == cpass then
  79. trans = "mkaccount "..login.." "..pass
  80. modem.transmit(1, chanel, trans)
  81. naccount = fs.open("/CB/NasLogin", "w")
  82. naccount.writeLine(login)
  83. naccount.close()
  84. term.setTextColour(colours.green)
  85. print("created")
  86. else
  87. term.setTextColour(colours.red)
  88. print("passwords are not corresponding")
  89. os.sleep(2)
  90. error()
  91. end
  92. end
  93. else
  94. naccount = fs.open("/CB/NasLogin", "r")
  95. login = naccount.readLine()
  96. naccount.close()
  97. write("enter your password : ")
  98. term.setTextColour(colours.yellow)
  99. pass = read("*")
  100. if pass == nil then
  101. term.setTextColour(colours.red)
  102. print("you need to type something")
  103. os.sleep(2)
  104. error()
  105. end
  106. trans = "login "..login.." "..pass
  107. modem.transmit(1, chanel, trans)
  108. local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  109. if message == "logged" then
  110. term.setTextColour(colours.green)
  111. print(message)
  112. else
  113. term.setTextColour(colours.red)
  114. print("wrong password")
  115. os.sleep(2)
  116. error()
  117. end
  118. end
  119.  
  120.  
  121. while true do
  122. local Send = {}
  123. local Files = {}
  124. local modem = peripheral.wrap("back")
  125. chanel = os.getComputerID()+1
  126. modem.open(chanel)
  127.  
  128. term.clear()
  129. term.setCursorPos(1,1)
  130. term.setTextColour(colours.blue)
  131. print("NAS_Client V. "..version)
  132. print("")
  133. term.setTextColour(colours.brown)
  134. write("DIR : /"..dir.." : ")
  135. modem.transmit(1, chanel, "lfiles "..dir)
  136. local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  137.  
  138. if message == "lfile error : directory not exists." then
  139. term.setTextColour(colours.red)
  140. print(message)
  141. os.sleep(2.5)
  142. else
  143. for i in string.gmatch(message, "%S+") do
  144. table.insert(Files, i)
  145. end
  146. for i=1,(#Files-1) do
  147. term.setTextColour(colours.green)
  148. write(Files[i])
  149. term.setTextColour(colours.white)
  150. write(", ")
  151. end
  152. term.setTextColour(colours.green)
  153. print(Files[#Files])
  154. end
  155.  
  156. print(" ")
  157. term.setTextColour(colours.yellow)
  158. write("@NAS>")
  159. input = read()
  160.  
  161.  
  162. if input == "exit" then
  163. return false
  164. end
  165.  
  166. for i in string.gmatch(input, "%S+") do
  167. table.insert(Send, i)
  168. end
  169.  
  170. if Send[1] == "delete" then
  171. if Send[2] == nil then
  172. term.setTextColour(colours.red)
  173. print("Missing one or more arguments")
  174. os.sleep(2.5)
  175. else
  176. input = input.." "..dir
  177. modem.transmit(1, chanel, input)
  178. end
  179. end
  180.  
  181. if Send[1] == "sfile" then
  182. -- sytax : sfile [file] [name on server]
  183. if Send[2] == nil or Send [3] == nil then
  184. term.setTextColour(colours.red)
  185. print("Missing one or more arguments")
  186. os.sleep(2.5)
  187. else
  188. if not fs.exists(Send[2]) then
  189. term.setTextColour(colours.red)
  190. print("File not found")
  191. os.sleep(2.5)
  192. else
  193. pfile = fs.open(Send[2], "r")
  194. sendfile = pfile.readAll()
  195. pfile.close()
  196.  
  197. input = input.." "..dir
  198. modem.transmit(1, chanel, input)
  199. os.sleep(0.5)
  200. modem.transmit(1, chanel, sendfile)
  201.  
  202. local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  203. print(message)
  204. os.sleep(0.5)
  205. end
  206. end
  207. end
  208.  
  209. if Send[1] == "rfile" then
  210. -- sytax : rfile [file on server] [name on computer]
  211. if Send[2] == nil or Send [3] == nil then
  212. term.setTextColour(colours.red)
  213. print("Missing one or more arguments")
  214. os.sleep(3)
  215. else
  216. if fs.exists(Send[3]) then
  217. term.setTextColour(colours.red)
  218. print("File already exists")
  219. os.sleep(3)
  220. else
  221. input = input.." "..dir
  222. modem.transmit(1, chanel, input)
  223. local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  224. if message == "failed : file not exists on server" then
  225. term.setTextColour(colours.red)
  226. print(message)
  227. os.sleep(2.5)
  228. else
  229. vfile = fs.open(Send[3], "w")
  230. vfile.write(message)
  231. vfile.close()
  232. end
  233. end
  234. end
  235. end
  236.  
  237. if Send[1] == "run" or Send[1] == "read" then
  238. if Send[2] == nil then
  239. term.setTextColour(colours.red)
  240. print("Missing one or more arguments")
  241. os.sleep(3)
  242. else
  243. if Send[3] ~= nil then
  244. term.setTextColour(colours.red)
  245. print("too much arguments")
  246. os.sleep(3)
  247. else
  248. run = "rfile "..Send[2].." p "..dir
  249. modem.transmit(1, chanel, run)
  250. local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  251. if message == "failed : file not exists on server" then
  252. term.setTextColour(colours.red)
  253. print(message)
  254. os.sleep(2.5)
  255. else
  256. vfile = fs.open("/CB/%TEMP%", "w")
  257. vfile.write(message)
  258. vfile.close()
  259. if Send[1] == "run" then
  260. shell.run("clear")
  261. shell.run("/CB/%TEMP%")
  262. read()
  263. else
  264. shell.run("/CB/Prog/ROEdit /CB/%TEMP%")
  265. end
  266. shell.run("delete /CB/%TEMP%")
  267. end
  268. end
  269. end
  270. end
  271.  
  272.  
  273. if Send[1] == "logout" then
  274. fs.delete("/CB/NasLogin")
  275. error()
  276. end
  277.  
  278. if Send[1] == "cd" then
  279. if Send[2] == "shared" then
  280. dir = Send[2]
  281. else
  282. if Send[2] == "@p" then
  283. dir = login
  284. end
  285. end
  286. end
  287.  
  288. if Send[1] == "help" then
  289. term.setTextColour(colours.green)
  290. write("help ")
  291. term.setTextColour(colours.white)
  292. print(" : shows this panel")
  293. term.setTextColour(colours.green)
  294. write("exit ")
  295. term.setTextColour(colours.white)
  296. print(" : get out of here")
  297. term.setTextColour(colours.green)
  298. write("logout")
  299. term.setTextColour(colours.white)
  300. print(" : self explanatory")
  301. term.setTextColour(colours.green)
  302. write("sfile ")
  303. term.setTextColour(colours.white)
  304. print(" : send a file to the server")
  305. term.setTextColour(colours.green)
  306. write("rfile ")
  307. term.setTextColour(colours.white)
  308. print(" : get a file from the server")
  309. term.setTextColour(colours.green)
  310. write("delete")
  311. term.setTextColour(colours.white)
  312. print(" : delete a file on the server")
  313. term.setTextColour(colours.green)
  314. write("run ")
  315. term.setTextColour(colours.white)
  316. print(" : run a file from the server on the client")
  317. term.setTextColour(colours.green)
  318. write("read ")
  319. term.setTextColour(colours.white)
  320. print(" : read a file from the server")
  321. print(" ")
  322. term.setTextColour(colours.white)
  323. write("Example : ")
  324. term.setTextColour(colours.green)
  325. write("rfile ")
  326. term.setTextColour(colours.red)
  327. print("test test/download")
  328. print("")
  329. term.setTextColour(colours.white)
  330. print("This will take the file 'test' from the server")
  331. print("And copy it to a file named 'download' in the")
  332. write("folder 'test' on the client")
  333. os.sleep(0.5)
  334. os.pullEvent( "key" )
  335. end
  336.  
  337. end
Add Comment
Please, Sign In to add comment